Frage Was verursacht doppelte ACK-Datensätze?


Wir überprüfen Wireshark-Erfassungen von einigen Client-Rechnern, auf denen mehrere doppelte ACK-Datensätze angezeigt werden, die dann erneut übertragene und nicht in der Reihenfolge liegende Pakete auslösen.

Diese werden im folgenden Screenshot gezeigt. .26 ist Client und .252 ist Server.

enter image description here

Was verursacht die doppelten ACK-Datensätze?

Mehr Hintergrund wenn es hilft:

Wir untersuchen Netzwerk-Durchsatzprobleme an einem bestimmten Client-Standort. Das aus Sicht der Benutzerschnittstelle wahrgenommene Problem ist, dass Daten trotz einer nicht ausgelasteten 1-Gbit / s-WAN-Verbindung langsam übertragen werden.

Fast alle Client-Maschinen haben das gleiche Problem, getestet an mehr als 20 Maschinen. Wir haben zwei Maschinen gefunden, die das Problem nicht haben. Wir identifizieren gerade, was in ihrer Konfiguration anders ist. Uns ist aufgefallen, dass wir bei den beiden Rechnern, auf denen das Problem nicht besteht, immer nur einen doppelten ACK-Datensatz gesehen haben. Die Computer, die das Problem haben, haben normalerweise drei doppelte ACK-Einträge. Ein bemerkenswerter Unterschied besteht darin, dass die Maschinen, die gut funktionieren, allen Mitgliedern des Netzwerkbetriebsteams gehören und alle anderen Maschinen für "normale" Mitarbeiter. Die Maschinen sollen Standard sein, aber die Netzwerkadministratoren könnten Änderungen an ihren lokalen Systemen vorgenommen haben, was ein weiterer Aspekt ist, den wir erforschen.

Wir haben versucht das zu ändern TcpMaxDupAcks Einstellung auf dem Server, aber der Wert, den wir wirklich brauchen, ist 5 und der gültige Bereich ist nur 1-3.

Server ist Windows Server 2003. Clients sind alle von Unternehmen verwalteten Windows XP. Für alle Clients, einschließlich der beiden aktiven, ist Symantec Anti-Virus installiert.

Dies ist die einzige Client-Site von Hunderten, die dieses Problem gezeigt hat.

pathping zeigt 56ms RTT und konsistenten 0/100 Paketverlust sogar von den Problemmaschinen.

Vielen Dank,

Sam


19
2018-05-05 20:27


Ursprung


Welche Art von Routing-Switching-Hardware befindet sich zwischen den beiden Endpunkten? - SpacemanSpiff
@SpacemanSpiff, es gibt einen Cisco ASR 1006 Router. - Sam
Sind die IT-Mitarbeiter und Kunden auf derselben Vermittlungsausrüstung? Können Sie eine ihrer Maschinen in den IT-Bereich bringen und sehen, dass das Problem verschwindet? - SpacemanSpiff


Antworten:


Hinweis: Ich gehe davon aus, dass diese Erfassung auf dem Clientcomputer vorgenommen wurde.

Eine kurze Zusammenfassung zur TCP-Sequenzierung: TCP liefert zuverlässig Byteströme zwischen zwei Anwendungen. "Zuverlässig" bedeutet in diesem Fall unter anderem, dass TCP garantiert, niemals Daten außerhalb der Reihenfolge an eine zuhörende Anwendung zu liefern.

Die Lieferung in der richtigen Reihenfolge erfolgt durch die Verwendung von Sequenznummern. Jedem Datenpaket in jedem Datenstrom wird eine 32-Bit-Sequenznummer zugewiesen (denken Sie daran, dass TCP im Grunde genommen zwei unabhängige Datenströme ist, A-> B und B-> A). Wenn A ein ACK an B sendet, ist der Wert in dem ACK-Feld die nächste Sequenznummer, die A von B zu sehen erwartet.

Aus dem obigen ergibt sich, dass mindestens ein TCP-Segment, das vom Server an den Client gesendet wurde, verloren gegangen ist. Die drei doppelten ACKs in Folge sind ein Versuch des Clients, a schnell erneut übertragen. Wenn ein TCP-Sender 3 doppelte Bestätigungen für dasselbe Datenstück (dh 4 ACKs für dasselbe Segment, das nicht das zuletzt gesendete Datenstück ist) empfängt, kann vernünftigerweise angenommen werden, dass das Segment unmittelbar nach dem ACKing des Segments verloren gegangen ist im Netzwerk und führt zu einer sofortigen erneuten Übertragung.

In diesem Fall kommt die Neuübertragung zustande und wird von Wireshark als out-of-order identifiziert.

Wie erwähnt von JoeqwertyPaketverlust wird meistens durch Überlastung verursacht. Es kann auch ein Ergebnis von CRC oder anderen Fehlern auf einer Verbindung sein, aufgrund einer schlechten Schnittstellenkarte, loser Kabel usw. Ich würde die Statistiken jedes Links entlang des Pfades betrachten, um zu sehen, ob sie stark genutzt werden und / oder haben eine große Anzahl von Fehlern.

Wenn Sie keine offensichtlichen Kandidaten sehen, führen Sie gleichzeitige Paketerfassungen an mehreren Punkten entlang des Pfads durch, um zu versuchen, zu lokalisieren, wo der Verlust auftritt.

Welche Art von WAN-Verbindung wird hier verwendet? Ist es eine Standleitung? MPLS VPN-Verbindung? IPsec VPN über das öffentliche Internet? Etwas anderes?


26
2018-05-05 21:40



Danke für deine Kommentare. Du hast recht, die Paketerfassung stammt vom Client. Wenn ich verstehe, was du sagst, sind die doppelten ACKs nicht der Client, der irgendetwas falsch macht, sondern sind tatsächlich ein Auslöser vom Client, dass er keinen anderen Datensatz (den nach den ACKs) erhalten hat. Ist das korrekt? Welche Dinge kann ich auf dem Client-PC untersuchen, die das verursachen würden? Wenn es sich nicht um ein Problem mit dem Client-PC handelt, warum sollte es auf manchen Clients und nicht auf anderen Clients angezeigt werden? - Sam
Das WAN ist "zwei Punkt-zu-Punkt-Verbindungen" zwischen drei Standorten an der Ostküste und im mittleren Westen der USA. - Sam
Das ist richtig; die DUPACKs sind ein Symptom für Paketverlust. Um herauszufinden, warum das Problem bei einigen Clients und nicht bei anderen auftritt, müssen Sie herausfinden, was die betroffenen Clients gemeinsam haben. Sind sie alle im selben Büro? Durch die gemeinsame Netzwerkinfrastruktur gehen? (Ein Schalter oder eine Verbindung?). Eine Sache, die es wert ist, ist zu benutzen mtr (oder pathping unter Windows) auf allen betroffenen Rechnern und sehen, ob es auf dem Pfad zum Server gemeinsame Hops gibt, bei denen Paketverluste auftreten. Verfügen Sie über ein Netzwerküberwachungssystem, mit dem Sie Switch-Port-Daten anzeigen können? - Murali Suriar


Während Sie isolieren, wo das Problem ist, denken Sie an eine Paket-Dump als nur eines der Symptome ... Als Analogie, wenn jemand in die Arztpraxis mit Schmerzen in der Brust geht, wird der Arzt nicht verbringen drei Stunden zu untersuchen, die Art von der Schmerz. Er verbringt ungefähr zwei Minuten damit und weiß dann, dass 95% der Ursachen entweder Sodbrennen oder Angina sind ... Auf die gleiche Weise, wenn du doppelte ACKs siehst, rate nicht sofort auf die Unkräuter der Spur .

Nachdem die Verbindung hergestellt wurde, ist eine langsame TCP-Leistung nicht immer auf Probleme mit dem Übertragungsnetzwerk zurückzuführen. manchmal kommt es als Folge von Server-CPU- oder Datenträgereinschränkungen ... und gelegentlich aufgrund eines Problems auf einem Client-PC. Ich habe meinen Schwanz seit Wochen gejagt, um in das Unkraut von Drahtseilbahnen zu graben, nur um aufzugeben und das Problem relativ schnell mit zu finden mtroder indem Sie andere Host-Metriken wie CPU und Festplatten-I / O betrachten.

Ihre erste Aufgabe besteht darin, zu beweisen, ob dies ein Netzwerkproblem oder ein Problem auf Host-Ebene ist. Konzentrieren Sie sich darauf, echten Datenverkehr über Ihr Netzwerk zu senden, und prüfen Sie, ob Sie in der Warteschlange stehen, ob Sie sie löschen oder neu anordnen Anmerkung 1 es; Das ist immer das Endresultat für ein potenzielles Netzwerkproblem wie dieses.

Ich würde es tun ping Sampling für einen längeren Zeitraum (typischerweise eine Stunde für mich) zwischen dem Client und dem Server, während das Durchsatzproblem auftritt; Sie können verwenden mtr oder Ping-Plotter Freeware dafür. Wenn Sie regelmäßig Pakete bei einem Sprung verlieren, und Alle Hopfen verlieren danach so viel oder mehrDann hast du ein potentielles Netzwerkverdacht. Beachten Sie, dass die ICMP-Ratenbegrenzung des Geräts dazu führen kann, dass einige Hops angezeigt werden, die Pakete verlieren. Daher möchten Sie nach einem Trend suchen, der von diesem Hop und den folgenden beginnt.


Anmerkung 1 Wenn Sie den Traffic nachbestellen, wird das in der Regel recht schnell angezeigt Experteninfo Feld, dass wireshark bietet


4
2018-05-05 21:29



Stimmen Sie zu, dass die Voreingenommenheit des Netzwerks nicht gut ist. Die Instrumentierung im gesamten Stack ist immer eine gute Übung. In diesem Fall scheinen die DUPACKs, Out-of-Order- und Retransmitted-Segmente jedoch auf einen Netzwerkverlust zwischen den beiden Endpunkten hinzuweisen. - Murali Suriar
@ Murali Suriar, lassen Sie uns mit Ihrer Behauptung gehen (die eine gute Chance hat, richtig zu sein) ... was dann? Sie müssen isolieren Warum es gibt einen Paketverlust. Wir IT-Leute haben uns auf mysteriöse Weise verliebt wireshark bis zu dem Punkt, dass wir gerne viel zu lange auf das Mikroskop schauen. Der Punkt, den ich mache, ist ein kurzer Blick auf die pcapDanach sind Sie besser dran, Zyklen für das Instrumentieren von Paketverlusten, CPU-Zyklen und Festplatten-I / O auszugeben, als sich tief in die Annalen von TCP zu vertiefen. Es gibt eine Zeit, um das zu tun, aber es ist normalerweise nicht in dieser Phase der Analyse. - Mike Pennington
@ Mike stimmte zu, weshalb ich als ersten Schritt vorgeschlagen habe, nach Fehlern / Nutzungsinformationen für Geräte entlang des Pfades zu suchen. Ich bin kein großer Fan von ICMP-basierten Diagnosen außer der Erreichbarkeit. Wie Sie sagen, kann die Rate limiting und falsch konfigurierte ACLs / Firewalls unzuverlässig machen; Obwohl MTR in einem Unternehmensnetzwerk (was sich so anhört) oft in die richtige Richtung weist. Das andere Problem mit MTR ist, dass es oft nur auf ein Problem hinweist; Es ist durchaus möglich, dass es solche gibt mehrere Fehler auf dem Pfad, die Sie nicht finden können, bis Sie den ersten behoben haben. - Murali Suriar
Wir sind nicht uneins, ICMP mit TTL-Stepping ist kein Allheilmittel und es kann mehrere Fehler geben. Bei allen Fehlern, die mit Firewalls und Load-Balancern zu tun haben, ist ICMP jedoch die beste Ferndiagnose, es sei denn, Sie können instrumentierte TCP / UDP-Sitzungen auf Host-Ebene für die betreffenden Anwendungsports ausführen ... selbst dann können Sie nur sagen , dieser Sockel sendet eine Menge weiter ... aber warum? 70% der Zeit ziehe ich aus mtr oder so, und ich habe in den letzten 15 Jahren die gleichen Probleme gelöst. Sobald ich mich auf ein bestimmtes Gerät konzentriert habe, können wir Drop Counter betrachten - Mike Pennington
@Sam: Nur ein Punkt zur Fehlerbehebung bei Netzwerkproblemen: Jedes Netzwerk hat "Probleme". Der Schlüssel besteht darin, festzustellen, ob diese Probleme Leistungs- und / oder Verbindungsprobleme verursachen. Sie finden doppelte ACKs, TCP Retransmits, Broadcasts, fehlerhafte Protokolle usw. in jedem Netzwerk. Sie sollten sich auf das Volumen der doppelten ACKs und der Hosts konzentrieren, die am Senden der doppelten ACKs beteiligt sind, um festzustellen, ob dies wirklich ein Symptom für ein größeres Problem oder nur für den natürlichen Betrieb des Netzwerks ist. Wenn ich 5 doppelte ACKs von 1000 Paketen sehe, werde ich es nicht weiter überlegen. - joeqwerty


Indem ich viel sehe [TCP-Segment der neu zusammengesetzten PDU] ohne ACKs - ich würde sagen, dass diese ACKs wahrscheinlich als angezeigt werden [TCP Dup ACK ...] durch Selektives Bestätigungsverhalten (alias SACK).

Beispiel:

  • Client sendet Datenteile (..., 0,1,2,3,4,5,6, ...)

  • Server acked (0), dann empfangen (2,4,3), dann (5), dann (6) und nie bekommen (1)

Im obigen Szenario kann der Server berechtigterweise wählen, zuerst den Bereich (2 bis 4) auszuwählen, dann den Bereich (2 bis 5) und dann den Bereich (2 bis 6). Bei der Bildung des "(A-B) range ack" -Pakets muss der Server den zuletzt angezapften Teil (0) im TCP-Header angeben. Wireshark markiert die Range-Acks (SACKs) als [TCP Dup ACK ...] weil all diese Range-acks denselben Wert für den letzten Teil im TCP-Header haben (Ack = 872619 in Ihrem Fall).


3
2017-07-13 14:33





Doppelte ACKs in Kombination mit langsamer Netzwerkleistung klingen für mich wie ein Netzwerküberlastungsproblem. Sehen Sie sich die Lautstärke und Rate des Broadcast-Verkehrs im Netzwerk an. Stellen Sie sicher, dass Sie sowohl Broadcast- als auch Multicast-Übertragungen auf der physischen Ebene und in der Netzwerkebene betrachten.


1
2018-05-05 20:47