Unterschied in der Netzwerkauslastung zwischen einzelnen und mehreren TCP-Verbindungen

494
xavier666

Wir wissen, dass der (grundlegende) TCP-Modus so ist, dass er mit einer langsamen Startphase beginnt, gefolgt von einer linearen Zunahme des Überlastungsfensters (CWD). Die CWD wird entsprechend dem Netzwerkstatus angepasst. Sobald wir eine Verbindung initiieren, dauert es einige Zeit, bis die Verbindung eine stabile CWD erreicht, abhängig von den Netzwerkbedingungen.

Bei dieser Logik versucht eine TCP-Verbindung, alle verfügbaren s / w eines Links zu füllen. Wenn also mehrere TCP-Verbindungen vorhanden sind, passt jede ihre CWD an, so dass eine minimale Überlastung besteht.

Angenommen, ich habe eine 100-Mbps-Verbindung (Die Topologie ist unten angegeben). Ich habe eine Anwendung, die UDP-Datenverkehr sendet. Ich habe eine andere Anwendung, iperfdie parallele TCP-Verbindungen über dieselbe Verbindung initiieren kann

[h1] ---- 100 Mbps ---- [h2]  h1 (UDP + iperf client) h2 (UDP + iperf server) 

Ich mache ein Experiment auf folgende Weise

  1. 1 UDP + 1 TCP
  2. 1 UDP + 2 TCP
  3. 1 UDP + 4 TCP
  4. 1 UDP + 8 TCP und so weiter

Mein Befund sagt, dass der Durchsatz von 1 TCP-Verbindung niedriger ist als der Durchsatz von 8 TCP-Verbindungen zusammengenommen (Exp 1 vs. Exp 4). Es ist zu beachten, dass der individuelle Durchsatz der 8 Verbindungen viel geringer ist (was offensichtlich ist).

Meine Frage ist also, warum kann die einzelne TCP-Verbindung nicht das volle s / w nutzen, das die 8 TCP zusammen ausführen können?

1
Sie haben keine Details hinzugefügt, wie Sie `iperf` verwendet haben, aber erraten Sie: 8 TCP-Verbindungen lassen mehr UDP-Pakete fallen als eine TCP-Verbindung, so dass das eine UDP weniger Bandbreite erhält, so dass die gesamte Bandbreite von 8 TCP-Verbindungen höher ist . Als erstes würde ich messen, wie viele UDP-Pakete in allen Fällen verworfen werden. dirkt vor 6 Jahren 0

1 Antwort auf die Frage

1
Spiff

Wenn Sie CUBIC oder einen anderen AIMD-Algorithmus für die Überlastungssteuerung verwenden, sinkt die Geschwindigkeit bei einer Überlastung schnell wieder ein wenig und steigt dann langsam wieder an, um das Maximum wieder zu finden. Dadurch verbleiben wenig „Jakobsmuscheln“ (in einem Tctrace-Diagramm) ungenutzter Bandbreite, die andere Flows ausfüllen können. Wenn der UDP-Fluss eine feste Rate hat, werden diese Lücken nicht gefüllt. Andere konkurrierende TCP-Flüsse werden dies jedoch sicherlich tun. Ich vermute, je mehr TCP-Flüsse Sie haben, desto mehr Bandbreite wird von den anderen Staukontrollmaßnahmen belegt.