Riesiger Jumbo-Rahmen?

675
user338930

Ich habe einen 2960g Cisco-Switch und 2 Server mit jeweils 4 NICs, die im Lacp-Modus konfiguriert sind. Ich habe Jumbo-Frames (9000 Byte) im Netzwerk aktiviert. Ich habe eine Dateiübertragung getestet, und sie läuft mit voller Geschwindigkeit (100 MBit / s im Vergleich zu etwa 80 MBit / s ohne Jumbo-Frames. Ich weiß, dass TCP-Übertragungen von einer IP zu einer anderen nur einen Link von 4 mit lacp verfügbar machen.)

Ich habe eine Aufnahme auf einem der Nics gemacht und war ziemlich überrascht, Frames von 17966, 26914 und sogar 44810 Bytes zu sehen ... Die meisten Frames haben nur 9018 Bytes, wie sie sollten. Aber wie / warum / was sind diese Mega-Jumbo-Frames von 40kb? Ich hätte nicht gedacht, dass es überhaupt möglich ist.

Ist es eine Nebenwirkung von lacp? Beachten Sie, dass ich diese Frames sehen kann, egal ob ich sie von der Bondschnittstelle oder von der Slave-Schnittstelle, die die Daten tatsächlich überträgt, einfängt. Oder ist es ein Artefakt, das irgendwie durch tcpdump hereingekommen ist? Oder muss ich meine Brille wechseln?

Vielen Dank,

Vincent

1
Kann durch TCP-Segmentierungsverschiebung verursacht werden, die Erfassung wurde auf einem der Server durchgeführt. user338930 vor 9 Jahren 1

1 Antwort auf die Frage

2
Spiff

Es war wahrscheinlich TCP Transmit Segmentation Offload (TSO), möglicherweise in Verbindung mit Large Receive Offload (LRO).

Sie haben auf einer der Maschinen aufgezeichnet, die den Test durchgeführt haben, und nicht auf einer unabhängigen Beobachtungsmaschine. Sie haben also nicht wirklich gesehen, was sich auf dem Draht befand, Sie haben gesehen, was zwischen dem Netzwerkstack Ihres Hosts und seiner Ethernet-Netzwerkkarte lag. Wenn eine NIC Dienste wie TSO und LRO für ihren Host bereitstellt, sind die Pakete zwischen dem Host und seiner NIC viel größer als die Daten, die die NIC tatsächlich auf dem Draht sendet / empfängt.

Wenn es zu unpraktisch ist, eine separate Sniffer-Maschine und Port-Spiegelung einzurichten, können Sie TSO und LRO wahrscheinlich deaktivieren, sodass Sie mehr sehen, was eigentlich auf dem Draht wäre.

Wenn auf Ihren Servern beispielsweise OS X ausgeführt wird, können Sie diese Sysctls verwenden, um TSO und LRO zu deaktivieren:

sudo sysctl -w net.inet.tcp.tso=0 net.inet.tcp.lro=0 

Natürlich werden Sie wahrscheinlich eine höhere CPU-Auslastung und einen niedrigeren Durchsatz erzielen, wenn Sie dies tun, aber zumindest scheint Ihre Paketerfassung vernünftiger zu sein.

Danke, TSO verursachte dieses Verhalten. Bei ausgeschaltetem TSO haben alle Rahmen die richtige Länge. Es ist eigentlich im Wireshark-Wiki dokumentiert: http://wiki.wireshark.org/CaptureSetup/Offloading Auf Centos können Sie die Einstellungen eines Interfaces erhalten mit: ethtool -K eth3 und TSO deaktivieren mit: ethtool -Keth3 tso off (Obwohl es kein Grund, das Gerät auszuschalten) user338930 vor 9 Jahren 0