Ich versuche, meinen TCP-Durchsatz über ein "Netzwerk mit hoher Verzögerung" zwischen Linux-Computern zu verbessern.
Ich habe tcp_mem, tcp_wmemund tcp_rmemauf „8192 7061504 7061504“.
Ich habe rmem_max, wmem_max, rmem_defaultund wmem_defaultauf „7061504“.
Ich setze netdev_max_backlogund txqueuelenauf 10000.
Ich setze tcp_congestion_controlauf "skalierbar".
Ich verwende "nist" (cnistnet), um eine Verzögerung von 100 ms zu simulieren, und das BW, das ich erreiche, beträgt ungefähr 200 MBit / s (ohne Verzögerung erreiche ich ungefähr 790 MBit / s).
Ich verwende iperf, um die Tests durchzuführen, und TCPTrace, um die Ergebnisse zu analysieren, und hier ist, was ich habe:
Auf der Empfängerseite:
max win adv: 5294720 Bytes
Durchschnitt win adv: 5273959 Bytes
sack pkts gesendet: 0
Auf der Absenderseite:
tatsächliche Datenbytes: 3085179704
rexmt Datenbytes: 9018144
max owin: 5294577 bytes
avg owin: 3317125 bytes
RTT min: 19,2 ms
RTT max: 218,2 ms
RTT avg: 98,0 ms
Warum erreiche ich nur 200 MBit / s? Ich vermute, dass der „Owin“ etwas damit zu tun hat, bin mir aber nicht sicher (diese Ergebnisse beziehen sich auf einen Test von 2 Minuten. Ein 1-Minuten-Test hatte einen „durchschnittlichen Owin“ von 1552900)…
Bin ich falsch zu erwarten, dass der Durchsatz fast 790 MBit / s beträgt, selbst wenn die Verzögerung 100 ms beträgt?
(Ich habe versucht, größere Zahlen in den Fensterkonfigurationen zu verwenden, aber es schien keinen Effekt zu haben.)