Cosa ho frainteso sul calcolo dell'MTU?


14

Ok, ho appena finito di risolvere un problema con i jumbo frame tra alcuni Xserves, un Netgear GSM7224 e un Drobo B800i. Si è scoperto che Xserves (Mac OS X 10.6.8 Server) e Drobo B800i accettano l'MTU in byte come normalmente previsto (1500-9000), ma Netgear sembra averlo desiderato includendo le varie intestazioni / piè di pagina Ethernet (trailer ) e alla fine ho finito con Xserves & Drobo configurato con un MTU di 9000 e le porte Netgear impostate su un MTU di 9216.

Ho usato i seguenti comandi per testare e verificare l'MTU tra i due Xserves su Netgear (Nota: questi sono i comandi di Mac OS X, quelli di Windows e Linux differiscono):

ping -D -s <mtu> <ip_address>

traceroute -F <ip_address> <mtu>

L'utilizzo del primo è indicato nella manpagina come "Specifica il numero di byte di dati da inviare. Il valore predefinito è 56, che si traduce in 64 byte di dati ICMP quando combinato con gli 8 byte di dati dell'intestazione ICMP". Durante i test, ho scoperto che ping -D 1472 <ip_address>era l'equivalente di MTU 1500 a causa degli 8 byte di dati di intestazione ICMP più 20 byte di intestazioni IP (vedi questo e questo ). Tutto ciò ha senso.

Ora, perché è il comando equivalente per un 9000 MTU ping -D -s 8164 <ip_address>? Ho verificato che questo è il limite prima di iniziare a ricevere errori "sendto: Message too long", ma anche che 9000 MTU funziona correttamente come traceroute -F <ip_address> 9000funziona e traceroute -F <ip_address> 9001non funziona. Quindi, perché 8164? Mi sarei aspettato 8972 (MTU - 28 byte, proprio come per 1500 MTU).

Inoltre, perché 9216 MTU per Netgear? Ho contato 42 byte per le intestazioni MAC e Ethernet (incluso CRC), più 20 per le intestazioni IP (che dovrebbero essere incluse nell'MTU).

Sono davvero arrugginito su questa matematica e so che mi manca qualcosa.


1
9216 è stato quasi sicuramente scelto perché sono 9 x 2 ^ 10.
Chris S,

Risposte:


11

Benvenuti nello strano e misterioso mondo dei jumbo frame! È normale che l'ingranaggio ethernet con frame jumbo abbia MTU> 1518 e <65K byte e devi trovare un'impostazione che sia il minimo comune denominatore nel tuo dominio L2 per abilitare il traffico jumbo corretto.

La mia ipotesi è che l'implementazione ping / ICMP funzioni solo per payload 8192 byte, quindi 8164 + 28 (20 per l'intestazione IP e 8 per l'intestazione ICMP) ti danno 8192 byte.

MTU 9216 è anche un MTU standard da 9K su molti dispositivi Cisco, quindi la mia ipotesi è che Netgear volesse essere "compatibile" con quello.

Si noti inoltre che le specifiche della dimensione MTU dovrebbero essere prese sul serio, molti fornitori non includono 802.1Q (vLAN) o persino intestazioni di frame L2. Controlla con la documentazione del tuo fornitore di switch cosa specificano realmente quando parlano delle dimensioni dell'MTU.


Basta aggiungere una nota: l'MTU dei tuoi host e router deve corrispondere; l'MTU di switch può essere impostato su 12 bazillion per tutto ciò che conta purché sia ​​al di sopra delle impostazioni degli host (+ header).
Hyppy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.