Was missverstehe ich bei der Berechnung der MTU?

14

Okay, ich habe gerade ein Problem mit Jumbo-Frames zwischen einigen Xserves, einem Netgear GSM7224 und einem Drobo B800i behoben. Es stellte sich heraus, dass der Xserves (Mac OS X 10.6.8 Server) und der Drobo B800i die MTU in Byte erwartungsgemäß akzeptieren (1500-9000), aber der Netgear scheint dies gewollt zu haben, einschließlich der verschiedenen Ethernet-Kopf- / Fußzeilen (Trailer) ) und ich landete schließlich mit dem Xserves & Drobo, der mit einer MTU von 9000 und den auf eine MTU von 9216 eingestellten Netgear-Ports konfiguriert war.

Ich habe die folgenden Befehle zum Testen und Überprüfen der MTU zwischen den beiden Xserves über Netgear verwendet (Hinweis: Dies sind die Mac OS X-Befehle, die Windows- und Linux-Befehle unterscheiden sich):

ping -D -s <mtu> <ip_address>

traceroute -F <ip_address> <mtu>

Die Verwendung des Ersteren wird auf der manSeite als "Geben Sie die Anzahl der zu sendenden Datenbytes an. Der Standardwert ist 56, was in Kombination mit den 8 Bytes der ICMP-Headerdaten 64 ICMP-Datenbytes ergibt." Beim Testen stellte ich fest, dass to ping -D 1472 <ip_address>aufgrund der 8-Byte-ICMP-Header-Daten plus 20-Byte-IP-Header der MTU 1500 entspricht (siehe dies und das ). Das alles macht Sinn.

Warum ist der entsprechende Befehl für eine 9000 MTU ping -D -s 8164 <ip_address>? Ich habe überprüft, ob dies das Limit ist, bevor ich die Fehlermeldung "sendto: message too long" erhalte, aber auch, dass 9000 MTU ordnungsgemäß traceroute -F <ip_address> 9000funktioniert und traceroute -F <ip_address> 9001nicht. Warum also 8164? Ich hätte 8972 erwartet (MTU - 28 Bytes, genau wie bei 1500 MTU).

Warum auch die 9216 MTU für den Netgear? Ich habe 42 Bytes für die MAC- und Ethernet-Header (inkl. CRC) und 20 für die IP-Header (die in die MTU aufgenommen werden sollen) gezählt.

Ich bin in dieser Mathematik total verrostet und weiß, dass mir nur etwas fehlt.

morgant
quelle
1
9216 wurde mit ziemlicher Sicherheit ausgewählt, da es 9 x 2 ^ 10 ist.
Chris S

Antworten:

11

Willkommen in der seltsamen und mysteriösen Welt der Jumbo-Fassungen! Es ist normal, dass Jumbo-Frame-Ethernet-Geräte MTU-Werte von> 1518 und <65 KB aufweisen, und Sie müssen eine Einstellung finden, die den niedrigsten gemeinsamen Nenner in Ihrer L2-Domäne darstellt, um einen ordnungsgemäßen Jumbo-Datenverkehr zu ermöglichen.

Meine Vermutung ist, dass Ihre Ping / ICMP-Implementierung nur für 8192 Byte Nutzlast funktioniert, sodass Sie mit 8164 + 28 (20 für den IP-Header und 8 für den ICMP-Header) 8192 Byte erhalten.

Die MTU 9216 ist auch eine Standard-9K-MTU für viele Cisco-Geräte. Daher gehe ich davon aus, dass Netgear dazu "kompatibel" sein wollte.

Beachten Sie auch, dass die Angabe der MTU-Größe ernst genommen werden sollte. Viele Anbieter bieten weder 802.1Q (vLANs) noch L2-Frame-Header an. Lesen Sie in der Dokumentation Ihres Switch-Anbieters nach, welche Angaben er wirklich macht, wenn es um die MTU-Größe geht.

pfo
quelle
Nur eine Anmerkung zum Hinzufügen: Die MTU Ihrer Hosts und Router muss übereinstimmen. Die MTU der Switches kann für alles, was wichtig ist, auf 12 Bazillion eingestellt werden, solange sie über den Host-Einstellungen (+ Header) liegt.
Hyppy