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.
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
Odpowiedzi:
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?
źródło
mtr
(lubpathping
w 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?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ć
ping
pró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
źródło
wireshark
do tego stopnia, że lubimy patrzeć na mikroskop o wiele za długo. Chodzi mi o to, aby rzucić okiem napcap
, 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.mtr
lub 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ówWidzą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).
źródło
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.
źródło