Iperf: Reduzieren Sie die standardmäßige UDP-Paketgröße auf physische MTU – verwenden Sie WSA Registered IO unter Windows, um UDP-Pakete zu empfangen

Erstellt am 25. Jan. 2021  ·  4Kommentare  ·  Quelle: esnet/iperf

Ich habe herausgefunden, warum die UDP-RSS-Warteschlangen nicht funktionieren: Der Intel(R) Ethernet Converged Network Adapter X550-T2 sendet keine Jumbo-Pakete, selbst wenn er konfiguriert ist (andere NICs), also alle UDP-Pakete größer als die standardmäßigen 1500MTU sind in IP-Pakete aufgeteilt. IP-Pakete haben keine Ports und der UDP-RSS-Hashing-Algorithmus kann nicht funktionieren. Auch wenn es wüsste, dass das IP-Paket Teil eines UDP-Pakets ist.

Die einzige Möglichkeit besteht darin, die MTU-Größe auf der sendenden Seite von iperf auf die physische MTU zu reduzieren.
Außerdem empfängt Windows nicht mehr als ein UDP-Paket vom Kernel, wenn die Standard-WINSOCK-API verwendet wird. Was zu einer sehr hohen CPU-Last führt. Um dieses Problem zu lösen, sollte iperf die WSA Registered I/O API verwenden.

_Ursprünglich gepostet von @Febbe in https://github.com/esnet/iperf/issues/1049#issuecomment -766829448_

Hilfreichster Kommentar

PR #1119 gesendet, um eine Option zum Setzen des Flags "Nicht fragmentieren" hinzuzufügen.

Alle 4 Kommentare

Es würde mich freuen, wenn Sie herausfinden konnten, was dieses Problem verursacht! Leider unterstützt ESnet kein iperf3 unter Windows, wenn es also eine Lösung gibt, muss diese von der Community kommen (und iperf3 für unterstützte Plattformen nicht unterbrechen).

Bedeutet "ESnet unterstützt iperf3 unter Windows nicht", dass Sie als ESnet das nicht beheben werden, aber PR's von der Community akzeptieren?

Wie ich weiß, werden RSS-Queues auch auf Linux-Plattformen verwendet, daher wäre es auch dort sinnvoll, zumindest ein Flag hinzuzufügen, um die Paketfragmentierung für udp zu verbieten, anstatt das Standard-Flag -l 8K zu verwenden.

Bedeutet "ESnet unterstützt iperf3 unter Windows nicht", dass Sie als ESnet das nicht beheben werden, aber PR's von der Community akzeptieren?

Wir nehmen PRs aus der Community, wenn sie die Funktionalität nicht beeinträchtigen (wenn möglich bedingte Kompilierung verwenden, es gibt mehrere Beispiele im Baum) oder größere Änderungen am Design des iperf3-Designs bewirken. Wir haben nicht die Möglichkeit, Windows-spezifische PRs in unserer Umgebung zu testen. Daher besteht die beste Chance, dass ein PR akzeptiert wird, wenn er klein und für Nicht-Windows-Entwickler leicht verständlich ist.

PR #1119 gesendet, um eine Option zum Setzen des Flags "Nicht fragmentieren" hinzuzufügen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen