Kommt die Paketreihenfolge über mehrere Pfade oder gebündelte Links durcheinander, meldet der Empfänger per doppelter ACKs „Paket fehlt“, und der Sender schickt intakte Pakete erneut.
Warum Geräte, die Pfade pro Paket aufteilen, LAG (Link-Bündelung) mit Verteilung pro Paket oder der Moment eines Routenwechsels bringen die Reihenfolge durcheinander → Folge Spätere Pakete kommen zuerst an, 3 doppelte ACKs sammeln sich → Fast Retransmit → Auf dem Bildschirm Vereinzelte Spielpakete sind kaum betroffen. Große Updates an vollen Orten und Patch-Downloads werden langsamer, gelegentlich Ruckeln
Netzwerk: Verteilung pro Paket auf Verteilung pro Verbindung umstellen (ECMP und LAG per Hash über Adresse und Port). Server/OS: RACK nutzen (zeitbasierte Verlusterkennung, robust gegen vertauschte Reihenfolge. Erkennt RACK per DSACK unnötige Retransmissions, vergrößert es automatisch die Toleranz für vertauschte Reihenfolge), den von Linux pro Verbindung automatisch geschätzten Grad der Vertauschung prüfen (Wert reordering in ss -ti, Startwert tcp_reordering=3).
Im Graphen
Von Anfang an dauerhaft hoch · Erkannte Vertauschungen der Reihenfolge, empfangene DSACKs
Wo nachsehen
TcpExtTCPSACKReorder und TcpExtTCPTSReorder (erkannte Vertauschungen der Reihenfolge) sowie TcpExtTCPDSACKRecv in nstat prüfen, pro Verbindung reordering (angezeigt, wenn ungleich 3) und reord_seen in ss -ti. Im Paketmitschnitt den Wireshark-Filter tcp.analysis.out_of_order nutzen
Spricht dafür
Reordering-Zähler und DSACKs steigen unabhängig von der Tageszeit stetig, bei Verbindungen über einen bestimmten Pfad oder ein bestimmtes Gerät ist reordering größer als 3. Im Mitschnitt auf Empfängerseite kommen spätere Pakete zuerst, und die früheren folgen kurz darauf
Spricht dagegen
Reordering-Zähler unverändert, TcpExtTCPLostRetransmit steigt: echter Verlust. DSACKs steigen nur in Momenten mit RTT-Spitzen: „Unnötige Retransmission durch Latenzsprünge“
RFC 8985: The RACK-TLP Loss Detection Algorithm for TCPIETF RACK erkennt Verluste zeitbasiert und ist daher robust gegen vertauschte Reihenfolge, bei empfangenem DSACK vergrößert es das Toleranzfenster für vertauschte Reihenfolge (reo_wnd)
IP SysctlLinux kernel tcp_reordering mit Startwert 3 (pro Verbindung automatisch bis tcp_max_reordering angepasst), RACK-Einstellung in tcp_recovery
misc/ss.ciproute2 ss -ti zeigt reordering:Wert, wenn der reordering-Wert der Verbindung vom Standardwert 3 abweicht, und reord_seen:Anzahl, wenn die Verbindung schon vertauschte Reihenfolge erlebt hat
SNMP counterLinux kernel TcpExtTCPSACKReorder und TcpExtTCPTSReorder (erkannte Vertauschungen), TcpExtTCPDSACKRecv (empfangene DSACKs), TcpExtTCPLostRetransmit (auch das erneut gesendete Paket ging verloren)
include/uapi/linux/tcp.hLinux kernel tcpi_reord_seen in tcp_info: Zahl der Vertauschungen, die die Verbindung erlebt hat