Frames über 2000 Byte werden vom Client / Empfänger nicht bestätigt

406
lukasz139

Ich arbeite daran, meiner Anwendung eine Jumbo-Frame-Funktion hinzuzufügen. Mein Problem ist, dass ich keine ACK für Frames mit mehr als 2000 Byte Nutzdaten erhalte. Mein System sieht folgendermaßen aus: Der Server sendet die angeforderte Messzeit an den Client. Die Serverseite ist ein ARM-Prozessor mit einer Lwip-Implementierung von TCP / IP-Stack und mit aktivierter Unterstützung für Jumbo-Frames. Die Client-Seite ist ein Python-Skript auf meinem PC mit Netzwerkschnittstelle, bei dem Jumbo-Frames aktiviert sind.

Bei einer Konfiguration wie oben und einer Nutzlast über dem Standard-1460-System funktioniert das System problemlos. Ich laufe mit 2000 Bytes Nutzlast ohne Probleme. Die MSS auf der Clientseite ist 9158, WIN 64320. Die Serverseite ist: MSS 2000 und WIN 8000. Sobald ich jedoch die MSS auf der Serverseite über 2000 Byte erhöht, bricht die Kommunikation zusammen. Auf Wireshark kann ich sehen, dass der erste Frame mit einer Länge von mehr als 2000 vom Client (PC-Seite) nicht bestätigt wird und die erneute Übertragung beginnt.

Für Ratschläge erfahrener Benutzer bin ich dankbar. Es scheint mir, dass Jumbo-Frame kein Problem sein sollte, da ich weit über der normalen Ethernet-Nutzlastgröße arbeite.

Cloud-Shark-Link (mit TCP-Filter): https://www.cloudshark.org/captures/5bf2180b65cf?filter=tcp

Danke im Voraus.

1
Dies ist alles verdrahtete Ethernet? Und Sie haben bestätigt, dass Ihre Ethernet-NIC-Hardware und -Treiber Jumbo-Frames unterstützen und für diese konfiguriert sind? Ist ein Schalter beteiligt? Haben Sie die Jumbo-Frame-Unterstützung überprüft? Welche Betriebssysteme auf Client und Server? Spiff vor 5 Jahren 0
Ja, es ist alles verdrahtet. Ich habe die MTU auf die Netzwerkschnittstelle überprüft, die ich auf meinem PC verwende, und sie ist für 9-KB-Frames aktiviert. Mein Server hat auch Jumbo-Frames aktiviert, und ich sehe auf Wireshark, dass 2000-Byte-Frames übertragen werden. Es gibt keinen Schalter auf dem Weg. Wie in der angefügten Erfassung, sobald paylaod 2000 Byte überschreitet, gibt es keine ACK vom Client. Wie auf dem Post-Server erwähnt, handelt es sich um einen ARM mit LwIP-Stack, der Client ist ein Python-Skript, das über TCP-Socket empfängt. lukasz139 vor 5 Jahren 0

0 Antworten auf die Frage