Co powoduje zduplikowanie rekordów ACK?


19

Sprawdzamy przechwytywania Wireshark z kilku komputerów klienckich, które wyświetlają wiele zduplikowanych rekordów ACK, które następnie wyzwalają retransmisję i pakiety spoza sekwencji.

Są one pokazane na poniższym zrzucie ekranu. .26 to klient, a .252 to serwer.

wprowadź opis zdjęcia tutaj

Co powoduje zduplikowanie rekordów ACK?

Więcej tła, jeśli to pomaga:

Badamy problemy z przepustowością sieci w konkretnej witrynie klienta. Postrzegany problem z punktu widzenia interfejsu użytkownika polega na tym, że dane są przesyłane powoli, pomimo niewykorzystanego połączenia WAN 1 Gb / s.

Prawie wszystkie komputery klienckie mają ten sam problem, przetestowany na ponad 20 komputerach. Znaleźliśmy dwie maszyny, które nie mają problemu. Jesteśmy w trakcie identyfikacji tego, co różni się w ich konfiguracji. Zauważyliśmy, że na dwóch maszynach, które nie mają problemu, widzieliśmy tylko co najwyżej jeden zduplikowany rekord ACK. Komputery, które mają problem, zwykle mają trzy zduplikowane rekordy ACK. Istotną różnicą jest to, że dobrze działające maszyny należą do członków zespołu operacyjnego sieci, a wszystkie inne maszyny są przeznaczone dla „stałych” pracowników. Maszyny powinny być standardowe, ale administratorzy sieci mogli wprowadzić zmiany w swoich systemach lokalnych, co jest kolejnym aspektem, który badamy.

Próbowaliśmy zmienić ustawienie TcpMaxDupAcks na serwerze, ale naprawdę potrzebujemy wartości 5, a prawidłowy zakres to tylko 1-3.

Serwer to Windows Server 2003. Wszyscy klienci to Windows XP zarządzany przez przedsiębiorstwo. Wszyscy klienci, w tym dwa działające, mają zainstalowany program antywirusowy Symantec.

To jedyna witryna kliencka spośród setek, która wykazała ten problem.

pathping pokazuje 56 ms RTT i stałą utratę pakietów 0/100, nawet z problematycznych maszyn.

Dzięki,

Sam


Jaki sprzęt do przełączania routingu znajduje się między dwoma punktami końcowymi?
SpacemanSpiff

@SpacemanSpiff, jest router Cisco ASR 1006.
Sam

Czy pracownicy IT i klienci korzystają z tego samego sprzętu przełączającego? Czy możesz zabrać jedną z ich maszyn do działu IT i zobaczyć, jak problem zniknął?
SpacemanSpiff

Odpowiedzi:


25

Uwaga: Zakładam, że to przechwycenie zostało zrobione na komputerze klienckim.

Krótkie podsumowanie sekwencjonowania TCP: TCP niezawodnie dostarcza strumienie bajtów między dwiema aplikacjami. „Niezawodny” w tym przypadku oznacza, że ​​między innymi TCP gwarantuje, że nigdy nie dostarczy danych poza kolejnością do aplikacji nasłuchującej.

Porządek i niezawodne dostarczanie realizowane są za pomocą numerów porządkowych. Każdy pakiet w każdym strumieniu ma przypisany 32-bitowy numer sekwencyjny (pamiętaj, że TCP to w rzeczywistości dwa niezależne strumienie danych, A-> B i B-> A). Jeśli A wysyła ACK do B, wartość w polu ACK to kolejny numer kolejny, którego oczekuje od B.

Z powyższego wynika, że ​​co najmniej jeden segment TCP wysyłany z serwera do klienta został utracony. Trzy zduplikowane ACK po kolei są próbą uruchomienia przez klienta szybkiej retransmisji . Gdy nadawca TCP otrzyma 3 zduplikowane potwierdzenia dla tego samego kawałka danych (tj. 4 ACK dla tego samego segmentu, który nie jest ostatnio wysłanym kawałkiem danych), można rozsądnie założyć, że segment natychmiast po odcinku, który został potwierdzony, został utracony w sieci i powoduje natychmiastową ponowną transmisję.

W takim przypadku ponowna transmisja przechodzi i jest identyfikowana przez Wireshark jako nieczynna.

Jak wspomniano w joeqwerty , utrata pakietów jest najczęściej spowodowana przeciążeniem. Może to być również wynikiem CRC lub innych błędów łącza, z powodu złej karty interfejsu, luźnego kabla itp. Spojrzałbym na statystyki każdego łącza na ścieżce, aby sprawdzić, czy którekolwiek są bardzo wykorzystywane i / lub występują duże liczby błędów.

Jeśli nie widzisz żadnych oczywistych kandydatów, wykonaj jednoczesne przechwytywanie pakietów w wielu punktach na ścieżce, aby spróbować ustalić, gdzie występuje utrata.

Jakiego rodzaju połączenie WAN jest tutaj używane? Czy to linia dedykowana? Łącze MPLS VPN? IPsec VPN przez publiczny internet? Coś innego?


Dziękuję za komentarze. Masz rację, przechwytywanie pakietów pochodzi od klienta. Jeśli rozumiem, co mówisz, duplikaty ACK nie robią nic złego, ale w rzeczywistości wyzwalają od klienta, że ​​nie otrzymał innego rekordu (ten po ACK). Czy to jest poprawne? Jakie rzeczy mogę sprawdzić na komputerze klienckim, które to spowodują? Jeśli nie jest to problem z komputerem klienckim, dlaczego miałby być wyświetlany na niektórych klientach, a nie na innych?
Sam

Sieć WAN to „dwa obwody punkt-punkt” między trzema lokalizacjami na wschodnim wybrzeżu i środkowo-zachodnich Stanach Zjednoczonych.
Sam

To jest poprawne; PAKIETY są objawem utraty pakietów. Aby dowiedzieć się, dlaczego problem występuje na niektórych klientach, a nie na innych, musisz ustalić, co jest wspólne dla dotkniętych klientów. Czy wszyscy są w tym samym biurze? Przechodzisz przez wspólną infrastrukturę sieciową? (Przełącznik czy link?). Jedną z rzeczy, które warto zrobić, jest używanie mtr(lub pathpingw systemie Windows) na każdym dotkniętym maszyną komputerze i sprawdzanie, czy na ścieżce do serwera występują jakieś wspólne przeskoki, które wydają się doświadczać utraty pakietów. Czy masz system monitorowania sieci, którego możesz użyć do przeglądania danych portów przełącznika?
Murali Suriar

4

Podczas gdy izolujesz, gdzie jest problem, pomyśl o zrzucie pakietu jako tylko jednym z symptomów ... Analogicznie, jeśli ktoś wejdzie do gabinetu z bólem w klatce piersiowej, lekarz nie spędzi trzech godzin na badaniu natury ból. Spędza na tym około dwóch minut, a następnie wie, że 95% przyczyn to zgaga lub dławica piersiowa ... W ten sam sposób, jeśli widzisz duplikaty ACK, nie rób dziury na chwastach śladu od razu .

Po ustanowieniu połączenia niska wydajność protokołu TCP nie zawsze jest spowodowana problemami z siecią tranzytową; czasami wynika to z ograniczeń procesora lub dysku serwera ... a czasami z powodu problemów na komputerze klienckim. Ścigałem swój ogon od tygodni, zagłębiając się w ślady wiresharkowych śladów, tylko po to, aby poddać się i stosunkowo szybko znaleźć problem z mtr , lub patrząc na inne parametry hosta, takie jak procesor i operacje we / wy dysku.

Twoim pierwszym zadaniem jest udowodnienie, czy jest to problem z siecią, czy problem na poziomie hosta. Skoncentruj się na wysyłaniu rzeczywistego ruchu przez sieć i dowiedz się, czy czekasz w kolejce / tracisz / ponownie zamawiasz. Uwaga 1 to; to zawsze stanowi podstawę potencjalnego problemu z siecią, takiego jak ten .

Próbowałem pobierać pingpróbki przez dłuższy czas (zwykle dla mnie godzinę) między klientem a serwerem, gdy występuje problem z przepustowością; możesz do tego użyć darmowego plotera mtr lub ping plotter . Jeśli konsekwentnie tracisz pakiety przy jakimś przeskoku, a wszystkie przeskoki tracą tyle samo lub więcej , to masz potencjalnego podejrzanego o sieć. Pamiętaj, że ograniczanie szybkości ICMP urządzenia może powodować pojawienie się niektórych przeskoków, które powodują utratę pakietów ... dlatego chcesz szukać trendu od tego przeskoku i kolejnych.


Uwaga 1 Jeśli ponownie zamawiasz ruch, pojawi się on dość szybko w polu informacji eksperta, które udostępnia wireshark


Zgadzam się, że obwinianie sieci domyślnie nie jest dobrym podejściem. Oprzyrządowanie na stosie jest zawsze dobrą praktyką. Jednak w tym przypadku DUPACK, segmenty nieuporządkowane i retransmitowane wydają się wskazywać na pewien rodzaj utraty sieci między dwoma punktami końcowymi.
Murali Suriar

@Murali Suriar, przejdźmy do twojego stwierdzenia (które ma spore szanse na rację) ... to co dalej? Musisz ustalić, dlaczego występuje utrata pakietów. My, ludzie IT, zakochaliśmy się w tajemniczy sposób wiresharkdo tego stopnia, że ​​lubimy patrzeć na mikroskop o wiele za długo. Chodzi mi o to, aby rzucić okiem na pcap, po czym lepiej jest spędzać cykle na utracie pakietów instrumentalnych, cyklach procesora i I / O dysku niż zagłębiać się w annały TCP. Jest na to czas, ale zwykle nie jest to na tym etapie analizy.
Mike Pennington,

@Mike zgodził się, dlatego jako pierwszy krok zasugerowałem poszukiwanie informacji o błędach / wykorzystaniu urządzeń na tej ścieżce. Nie jestem wielkim fanem diagnostyki opartej na ICMP innej niż osiągalność. Jak mówisz, ograniczenie prędkości i niepoprawnie skonfigurowane listy ACL / zapory mogą sprawić, że będzie niewiarygodny; chociaż w sieci korporacyjnej (jak to brzmi), MTR często może skierować cię w dobrym kierunku. Innym problemem związanym z MTR jest to, że często wskazuje tylko jeden problem; jest całkiem możliwe, że na ścieżce jest wiele usterek, których nie będziesz w stanie znaleźć, dopóki nie naprawisz pierwszego.
Murali Suriar

Nie zgadzamy się, ICMP ze stopniowaniem TTL nie jest panaceum i może być wiele błędów. Jednak pomimo wszystkich niedociągnięć związanych z zaporami ogniowymi i modułami równoważenia obciążenia, ICMP jest najlepszą zdalną diagnostyką, jaką mamy, chyba że możesz uruchomić sesje instrumentalne TCP / UDP na poziomie hosta na określonych portach aplikacji, o których mowa ... nawet wtedy możesz tylko powiedzieć , to gniazdo bardzo często retransmituje ... ale dlaczego? W 70% przypadków wycofuję się mtrlub jest to podobne, i rozwiązuję problemy w ten sam sposób przez ostatnie 15 lat. Kiedy skupię się na konkretnym urządzeniu, możemy spojrzeć na liczniki spadków
Mike Pennington,

1
@Sam: Tylko kwestia dotycząca rozwiązywania problemów z siecią: każda sieć ma „problemy”. Kluczem jest ustalenie, czy problemy te powodują problemy z wydajnością i / lub łącznością. W każdej sieci znajdziesz duplikaty ACK, retransmisje TCP, transmisje, błędne protokoły itp. Powinieneś skupić się na liczbie duplikatów ACK i hostów najbardziej zaangażowanych w wysyłanie duplikatów ACK, aby ustalić, czy to rzeczywiście jest objaw większego problemu, czy po prostu naturalnego działania sieci. Jeśli zobaczę 5 zduplikowanych ACK z 1000 pakietów, nie zastanowię się nad tym.
joeqwerty

3

Widząc wiele [segmentu TCP ponownie złożonego PDU] bez ACK - powiedziałbym, że te ACK są prawdopodobnie pokazane jako [TCP Dup ACK ...] z powodu zachowania Selektywnego potwierdzenia (inaczej SACK) .

Przykład:

  • klient wysyła części danych (..., 0,1,2,3,4,5,6, ...)

  • serwer potwierdził (0), następnie otrzymał (2,4,3), następnie (5), następnie (6) i nigdy nie otrzymał (1)

W powyższym scenariuszu - serwer może zgodnie z prawem wybrać najpierw zakres (2-4), potem zakres (2-5), a następnie zakres (2-6). Podczas tworzenia pakietu „(AB) range ack” - serwer musi określić ostatnią potwierdzoną część (0) w nagłówku TCP. Wireshark zaznacza pakiety-zakresy (SACK) jako [TCP Dup ACK ...], ponieważ wszystkie te pakiety-zakresy mają tę samą ostatnią potwierdzoną wartość części w nagłówku TCP (Ack = 872619 w Twoim przypadku).


1

Duplikaty ACK w połączeniu z niską wydajnością sieci wydają mi się problemem zatoru sieciowego. Spójrz na głośność i szybkość ruchu rozgłoszeniowego w sieci. Pamiętaj, aby spojrzeć na transmisje warstwy fizycznej i warstwy sieci, a także multiemisje.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.