TCP-Durchsatz viel besser als UDP

825
kuma

Ich überwache die Leistung einer WAN-Verbindung mit iperf zwischen zwei Windows-Maschinen an beiden Enden.

Überraschenderweise (für mich) erreicht das Standardfenster der TCP-Einzelsitzung einen Durchsatz von 12 MBit / s, während das UDP-Limit (0% Paketverlust) etwa 4 MBit / s beträgt. Eine Bandbreite von mehr als 5 MBit / s führt zu UDP-Paketverlust (> 20%).

Wie kann es sein?

Diese Ergebnisse werden auch von etwas echtem UDP-Verkehr bestätigt, der über die Verbindung gesendet wird (bei einer Bandbreite, die niedriger als die erwartete Kapazität ist), was zu Paketverlust führt.

Vielen Dank im Voraus für jeden Vorschlag.

EDIT : Ich habe vergessen, ein wichtiges Detail zu erwähnen: Dies ist ein privates Netzwerk, es ist also keine überlastete Verbindung, und der zusätzliche Datenverkehr über die Verbindung während dieser Tests (sowohl mit iperf als auch mit echtem Datenverkehr) ist nahezu vernachlässigbar.

BEARBEITEN : Kann jemand Ratschläge dazu geben, wie (in welchem ​​Teil des Netzwerks) dieser Datenverkehr beseitigt wird?

3
Überquert der Verkehr einen Router? Was sonst noch im Pfad, zB überquert es einen Switch von einem 1-Gbit / s-Port zu einem 100-Mbit / s-Port? In einem Netzwerk gibt es viele versteckte Überlastungspunkte. Ron Maupin vor 7 Jahren 0
Ja, es wird gekreuzt: ein Switched-Netzwerk A ----- Router A ---- Router B ----- Switched-Netzwerk B. Bei der Fehlerbehebung tritt das Problem in einem Switched-Netzwerk auf. Ja, es werden Switches von 1 Gbit / s auf 100 Mbit / s Ports gekreuzt. kuma vor 7 Jahren 0
@kuma Es hört sich an, als ob ein Teil des Pfads inkonsistent ist. TCP kann sich anpassen, UDP nicht. David Schwartz vor 7 Jahren 0
Es gibt viele Orte, an denen der Verkehr unterbrochen wird. Ein 100-MBit / s-Port kann mit einem 1-Gbit / s-Verkehrsstrom nicht mithalten, und viele Frames werden verworfen (Switches haben winzige Puffer). UDP hat keine Methode, um den erneuten Versand von verlorenem Datenverkehr anzufordern, da der empfangende Host nicht erwartet, dass überhaupt etwas kommt. TCP wird feststellen, dass der Verkehr gesperrt wurde, und der Verkehr wird erneut gesendet. Router arbeiten im Allgemeinen nicht mit Drahtgeschwindigkeit, und TCP wird vorzugsweise über UDP als vorrangig eingestuft, sofern dies nicht anders konfiguriert ist. Ohne Netzwerkdesign und -konfigurationen muss ermittelt werden, wo das Problem liegt. Ron Maupin vor 7 Jahren 0
schlagen Sie vor, alle an dieser UDP-Kommunikation (Hosts und Switches) beteiligten Ports auf 100 MBit / s zu setzen? kuma vor 7 Jahren 0
Nein. UDP ist ein verbindungsloses, unzuverlässiges, unkompliziertes und bestes Protokoll. Anwendungen, die UDP verwenden, gehen davon aus, dass Datagramme im Netzwerk verloren gehen und entweder in die Anwendung eine Abschwächung integriert ist (TCP-Funktionen emulieren), oder die Anwendung kann Probleme haben, wenn verlorene Datagramme erneut gesendet werden (viele Echtzeitanwendungen wie VoIP oder Video) solche Probleme). Die Verwendung von UDP bedeutet, dass es dem Sender egal ist, ob die Datagramme zugestellt werden, oder dass der Empfänger keine Datagramme erwartet. Wenn gesendete Datagramme jedoch empfangen werden, ist dies großartig. Ron Maupin vor 7 Jahren 0
Ich verstehe TCP / UDP-Zwecke. Meine Frage ist, wie Sie beheben können, wo der Verkehr abfällt. Ich habe die Frage aus Gründen der Klarheit bearbeitet. kuma vor 7 Jahren 0

1 Antwort auf die Frage

2
David Schwartz

Iperf hat keine Logik, um die Effizienz des UDP-Datenverkehrs über eine WAN-Verbindung zu maximieren. Windows hat wie die meisten modernen Betriebssysteme erhebliche Anstrengungen unternommen, um jeden möglichen Rückgang des TCP-Durchsatzes zu erreichen.

TCP verfügt über Bestätigungen, die ein Fenster anpassen, anspruchsvolle Sendestimulation usw. Iperf sendet nur die UDP-Pakete in regelmäßigen Abständen.

Es gibt einfach keinen Vergleich.

Ich verstehe Optimierungen auf Betriebssystemebene. Ich verstehe das Sprechen auf Verbindungsebene immer noch nicht. Wenn erwartet wird, dass dies einen Durchsatz von 15 MBit / s bietet, warum führt das Senden von 5-MBit / s-UDP zu einem so hohen Paketverlust? Welcher Posten ist für solche Verluste verantwortlich? Ist das nicht ein Symptom für ein Netzwerkproblem? Dies geschieht auch bei echtem UDP-Verkehr (keine iperf) kuma vor 7 Jahren 0
@kuma Auch hier gibt es einen Grund, warum so viel Forschung und Mühe in die Entwicklung von TCP und dessen Überlastungskontrolle, Backoff, Sende-Pacing usw. investiert wurden. UDP hat nichts davon. Aus diesem Grund verwenden wir TCP für Massendaten (z. B. das Herunterladen von Dateien) und UDP für winzige, latenzempfindliche Anforderungen (z. B. DNS). UDP hat keine sinnvolle Möglichkeit, auf Überlastungen zu reagieren, wenn die Anwendung dies nicht implementiert. Iperf nicht. David Schwartz vor 7 Jahren 1
Ich habe die Frage bearbeitet und einige Details hinzugefügt. Die Frage bezieht sich hauptsächlich auf mögliche Probleme innerhalb des Netzwerks, da die Verbindung nicht überlastet sein soll (Tests weit unterhalb der Verbindungskapazität) und nicht darauf, wie TCP / UDP funktioniert. kuma vor 7 Jahren 0