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 man
pagina 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> 9000
funziona e traceroute -F <ip_address> 9001
non 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.