Điều gì gây ra các bản ghi ACK trùng lặp?


19

Chúng tôi đang xem xét các bản chụp Wireshark từ một số máy khách đang hiển thị nhiều bản ghi ACK trùng lặp, sau đó kích hoạt các gói truyền lại và các chuỗi ngoài chuỗi.

Chúng được hiển thị trong ảnh chụp màn hình sau đây. 0,26 là máy khách và 0,252 là máy chủ.

nhập mô tả hình ảnh ở đây

Điều gì gây ra các bản ghi ACK trùng lặp?

Thêm nền nếu nó giúp:

Chúng tôi đang điều tra mối quan tâm thông lượng mạng tại một trang web khách hàng cụ thể. Vấn đề được nhận thức từ góc độ giao diện người dùng là dữ liệu đang được truyền chậm mặc dù kết nối WAN 1gbps không được sử dụng đúng mức.

Hầu như tất cả các máy khách đều có cùng một vấn đề, được thử nghiệm tại hơn 20 máy. Chúng tôi đã tìm thấy hai máy không có vấn đề. Chúng tôi đang trong quá trình xác định những gì khác nhau trong cấu hình của họ. Chúng tôi đã nhận thấy rằng trong hai máy không có vấn đề, chúng tôi chỉ thấy nhiều nhất một bản ghi ACK trùng lặp. Các máy có vấn đề thường có ba bản ghi ACK trùng lặp. Một điểm khác biệt đáng chú ý là các máy hoạt động tốt đều thuộc về các thành viên của nhóm vận hành mạng và tất cả các máy khác đều dành cho nhân viên "thông thường". Các máy được cho là tiêu chuẩn nhưng quản trị viên mạng có thể đã thực hiện thay đổi trên hệ thống cục bộ của họ, đó là một khía cạnh khác mà chúng tôi đang nghiên cứu.

Chúng tôi đã thử thay đổi cài đặt TcpMaxDupAcks trên máy chủ nhưng giá trị chúng tôi thực sự cần là 5 và phạm vi hợp lệ chỉ là 1-3.

Máy chủ là Windows Server 2003. Khách hàng là tất cả Windows XP do doanh nghiệp quản lý. Tất cả các máy khách, bao gồm cả hai máy đang hoạt động, đã cài đặt chương trình chống vi-rút Symantec.

Đây là trang web khách hàng duy nhất trong số hàng trăm người đã thể hiện vấn đề này.

pathping hiển thị 56ms RTT và mất gói 0/100 nhất quán ngay cả từ các máy có vấn đề.

Cảm ơn,

Sam


Những loại phần cứng chuyển mạch định tuyến là giữa hai điểm cuối?
SpacemanSpiff

@SpacemanSpiff, có bộ định tuyến Cisco ASR 1006.
Sam

Là nhân viên CNTT và khách hàng trên cùng một thiết bị chuyển mạch? Bạn có thể mang một trong những máy của họ đến khu vực CNTT và thấy vấn đề biến mất không?
SpacemanSpiff

Câu trả lời:


25

Lưu ý: Tôi giả sử rằng bản chụp này được chụp trên máy khách.

Một bản tóm tắt ngắn gọn về trình tự TCP: TCP đáng tin cậy cung cấp các luồng byte giữa hai ứng dụng. "Đáng tin cậy" trong trường hợp này có nghĩa là, trong số những thứ khác, TCP đảm bảo không bao giờ cung cấp dữ liệu ngoài đơn hàng cho một ứng dụng nghe.

Theo thứ tự, giao hàng đáng tin cậy được thực hiện thông qua việc sử dụng số thứ tự. Mỗi gói trong mỗi luồng được gán một số thứ tự 32 bit (hãy nhớ rằng TCP thực sự là hai luồng dữ liệu độc lập, A-> B và B-> A). Nếu A gửi ACK đến B, giá trị trong trường ACK là số thứ tự tiếp theo A dự kiến ​​sẽ thấy từ B.

Từ những điều trên, có vẻ như ít nhất một phân đoạn TCP được gửi từ máy chủ đến máy khách đã bị mất. Ba ACK trùng lặp theo trình tự là một nỗ lực của khách hàng để kích hoạt truyền lại nhanh . Khi người gửi TCP nhận được 3 xác nhận trùng lặp cho cùng một dữ liệu (nghĩa là 4 ACK cho cùng một phân đoạn, không phải là phần dữ liệu được gửi gần đây nhất), có thể giả định rằng phân đoạn đó ngay sau khi phân đoạn bị ACKed bị mất trong mạng và dẫn đến việc truyền lại ngay lập tức.

Trong trường hợp này, việc truyền lại được thông qua và được Wireshark xác định là không theo thứ tự.

Như joeqwerty đã đề cập , mất gói thường xảy ra do tắc nghẽn. Nó cũng có thể là kết quả của CRC hoặc các lỗi khác trên một liên kết, do thẻ giao diện xấu, cáp lỏng lẻo, v.v. Tôi sẽ xem xét các số liệu thống kê của mỗi liên kết dọc theo đường dẫn để xem liệu có được sử dụng nhiều và / hoặc đang gặp một số lượng lớn lỗi.

Nếu bạn không thể thấy bất kỳ ứng cử viên rõ ràng nào, hãy thực hiện các gói chụp đồng thời tại nhiều điểm trên đường dẫn để thử và cách ly nơi xảy ra mất mát.

Loại kết nối WAN nào đang được sử dụng ở đây? Có phải là một dòng chuyên dụng? Liên kết MPLS VPN? IPsec VPN qua internet công cộng? Thứ gì khác?


Cảm ơn ý kiến ​​của bạn. Bạn nói đúng, việc chụp gói là từ máy khách. Nếu tôi hiểu những gì bạn đang nói, các ACK trùng lặp không phải là máy khách làm gì sai mà thực sự là một trình kích hoạt từ máy khách mà nó không nhận được một bản ghi khác (sau ACK). Đúng không? Những điều tôi có thể xem xét trên PC khách sẽ gây ra điều này? Nếu đó không phải là sự cố máy khách, tại sao nó lại xuất hiện liên tục trên một số máy khách chứ không phải máy khách khác?
Sam

Mạng LAN là "mạch hai điểm" giữa ba địa điểm trên bờ biển phía đông và trung tây Hoa Kỳ.
Sam

Đúng rồi; DUPACK là một triệu chứng mất gói. Về lý do tại sao vấn đề sẽ xảy ra ở một số khách hàng chứ không phải những người khác, bạn cần tìm ra những điểm chung cho các khách hàng bị ảnh hưởng. Có phải tất cả họ đều ở trong cùng một văn phòng? Đi qua cơ sở hạ tầng mạng chung? (Một công tắc hoặc một liên kết?). Một điều đáng làm là sử dụng mtr(hoặc pathpingtrên Windows) trên mỗi máy bị ảnh hưởng và xem liệu có bất kỳ bước nhảy chung nào dọc theo đường dẫn đến máy chủ dường như đang bị mất gói. Bạn có một hệ thống giám sát mạng mà bạn có thể sử dụng để xem dữ liệu cổng chuyển đổi không?
Murali Suriar

4

Trong khi bạn đang cách ly vấn đề ở đâu, hãy nghĩ rằng một gói dữ liệu chỉ là một trong những triệu chứng ... Tương tự như vậy, nếu ai đó đi vào phòng mạch của bác sĩ với những cơn đau ngực, tài liệu sẽ không dành ba giờ để điều tra bản chất của nỗi đau. Anh ta dành khoảng hai phút cho việc đó và sau đó biết rằng 95% nguyên nhân là do ợ nóng hoặc đau thắt ngực ... Theo cách tương tự, nếu bạn thấy ACK trùng lặp, đừng bỏ chuột vào vết cỏ dại ngay lập tức .

Sau khi kết nối được thiết lập, hiệu suất TCP chậm không phải lúc nào cũng do sự cố mạng chuyển tiếp; đôi khi nó xuất phát từ kết quả của CPU máy chủ hoặc giới hạn đĩa ... và đôi khi do một số vấn đề trên PC khách. Tôi đã đuổi theo đuôi của mình trong nhiều tuần để đào sâu vào đám cỏ của dấu vết dây chỉ để từ bỏ và tìm ra vấn đề tương đối nhanh chóng với mtr , hoặc bằng cách xem xét các số liệu máy chủ khác như CPU ​​và I / O của đĩa.

Nhiệm vụ đầu tiên của bạn là chứng minh xem đây là sự cố mạng hay sự cố cấp máy chủ. Tập trung vào việc gửi lưu lượng truy cập thực qua mạng của bạn và chứng minh xem bạn có đang xếp hàng / mất / đặt hàng lại Lưu ý 1 không; đó luôn là điểm mấu chốt cho một vấn đề mạng tiềm năng như thế này .

Tôi sẽ thực hiện pinglấy mẫu trong một khoảng thời gian dài (thường là một giờ đối với tôi) giữa máy khách và máy chủ trong khi sự cố thông lượng đang xảy ra; bạn có thể sử dụng phần mềm miễn phí mtr hoặc ping cốt truyện cho việc này. Nếu bạn liên tục mất các gói tại một số bước nhảy và tất cả các bước nhảy sau đó mất nhiều hoặc nhiều , thì bạn có một nghi ngờ mạng tiềm năng. Hãy nhớ rằng việc giới hạn tốc độ ICMP của thiết bị có thể khiến một số bước nhảy xuất hiện khiến chúng mất các gói ... đó là lý do tại sao bạn muốn tìm kiếm một xu hướng bắt đầu từ bước nhảy đó và những bước tiếp theo.


Lưu ý 1 Nếu bạn đang đặt hàng lại lưu lượng truy cập, điều đó sẽ hiển thị khá nhanh trong trường thông tin chuyên gia mà wireshark cung cấp


Đồng ý rằng đổ lỗi cho mạng theo mặc định không phải là một cách tiếp cận tốt. Dụng cụ trong suốt ngăn xếp luôn luôn là thực hành tốt. Tuy nhiên, trong trường hợp này, các phân đoạn DUPACK, không theo thứ tự và truyền lại dường như là dấu hiệu của một số loại mất mạng giữa hai điểm cuối.
Murali Suriar

@Murali Suriar, hãy đi với sự khẳng định của bạn (có cơ hội đúng đắn) ... tiếp theo là gì? Bạn phải cách ly tại sao có mất gói. Chúng tôi, những người làm CNTT đã yêu một cách bí ẩn wiresharkđến mức chúng tôi thích nhìn vào kính hiển vi quá lâu. Điểm tôi đang làm là lướt qua pcap, sau đó, bạn nên bỏ qua các chu kỳ chi tiêu cho việc mất gói, chu kỳ CPU và I / O của đĩa hơn là đi sâu vào biên niên sử của TCP. Có một thời gian để làm điều đó, nhưng nó thường không ở giai đoạn phân tích này.
Mike Pennington

@Mike đồng ý, đó là lý do tại sao tôi đề nghị tìm kiếm thông tin lỗi / sử dụng cho các thiết bị dọc theo đường dẫn là bước đầu tiên. Tôi không phải là một fan hâm mộ lớn của chẩn đoán dựa trên ICMP ngoài khả năng tiếp cận. Như bạn nói, giới hạn tốc độ và ACLs / tường lửa được cấu hình không chính xác có thể làm cho nó không đáng tin cậy; mặc dù trong mạng doanh nghiệp (điều này nghe có vẻ như vậy), MTR thường có thể chỉ cho bạn đi đúng hướng. Vấn đề khác với MTR là nó thường chỉ chỉ ra một vấn đề; Hoàn toàn có thể có nhiều lỗi dọc theo đường dẫn mà bạn sẽ không thể tìm thấy cho đến khi bạn sửa lỗi đầu tiên.
Murali Suriar

Chúng tôi không đồng ý, ICMP với bước đi không phải là thuốc chữa bách bệnh và có thể có nhiều lỗi. Tuy nhiên, đối với tất cả các lỗ hổng liên quan đến tường lửa và bộ cân bằng tải, ICMP là chẩn đoán từ xa tốt nhất mà chúng tôi có trừ khi bạn có thể chạy các phiên TCP / UDP được cấp máy chủ trên các cổng ứng dụng cụ thể ... thậm chí sau đó bạn chỉ có thể nói , ổ cắm này đang truyền lại rất nhiều ... nhưng tại sao? 70% thời gian, tôi rút ra mtrhoặc đó là ilk, và tôi đã giải quyết vấn đề theo cách tương tự trong 15 năm qua. Khi tôi đã tập trung vào một thiết bị cụ thể, thì chúng ta có thể nhìn vào quầy thả
Mike Pennington

1
@Sam: Chỉ là một điểm liên quan đến khắc phục sự cố mạng: mọi mạng đều có "sự cố". Điều quan trọng là xác định xem những vấn đề đó có gây ra vấn đề về hiệu năng và / hoặc kết nối hay không. Bạn sẽ tìm thấy các bản sao truyền lại, truyền lại TCP, truyền phát, giao thức sai lầm, v.v. trên mọi mạng. Bạn nên tập trung vào khối lượng của ACK trùng lặp và các máy chủ liên quan nhiều nhất đến việc gửi ACK trùng lặp để xác định xem đó có thực sự là một triệu chứng của một vấn đề lớn hơn hay chỉ là hoạt động tự nhiên của mạng. Nếu tôi thấy 5 ACK trùng lặp trong số 1.000 gói, tôi sẽ không nghĩ đến điều đó.
joeqwerty

3

Bằng cách nhìn thấy rất nhiều [phân đoạn TCP của PDU được ghép lại] mà không có ACK - tôi muốn nói rằng các ACK đó có khả năng được hiển thị dưới dạng [TCP Dup ACK ...] do hành vi Xác nhận chọn lọc (còn gọi là SACK) .

Thí dụ:

  • khách hàng gửi các phần dữ liệu (..., 0,1,2,3,4,5,6, ...)

  • máy chủ acked (0), sau đó nhận (2,4,3), sau đó (5), sau đó (6) và không bao giờ có (1)

Trong kịch bản trên - máy chủ có thể chọn một cách hợp pháp để ack (2-4) phạm vi trước, sau đó (2-5) phạm vi, sau đó (2-6) phạm vi. Trong khi hình thành gói "(AB) phạm vi ack" - máy chủ phải chỉ định phần được đánh dấu cuối cùng (0) trong tiêu đề TCP. Wireshark đánh dấu acks phạm vi (SACK) là [TCP Dup ACK ...] bởi vì tất cả các ack phạm vi đó có cùng giá trị phần được đánh dấu cuối cùng trong tiêu đề TCP (Ack = 872619 trong trường hợp của bạn).


1

Sao chép ACK kết hợp với hiệu suất mạng chậm có vẻ như là một vấn đề tắc nghẽn mạng đối với tôi. Nhìn vào khối lượng và tốc độ lưu lượng phát trên mạng. Hãy chắc chắn để xem các lớp phát sóng vật lý và lớp mạng cũng như đa tuyến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.