Che cosa sono malinteso sul calcolo della MTU?

Okay, ho appena finito di risolvere un problema di frame jumbo tra alcuni Xserves, un Netgear GSM7224 e un Drobo B800i. È risultato che Xserves (Mac OS X 10.6.8 Server) e Drobo B800i accettano l'MTU in byte come previsto normalmente (1500-9000), ma sembra che Netgear lo abbia voluto includendo le diverse intestazioni / piè di pagina (trailer) di ethernet ) 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 verificare e verificare l'MTU tra i due Xserves sopra Netgear (Nota: questi sono i comandi di Mac OS X, quelli Windows e Linux differiscono):

ping -D -s <mtu> <ip_address> traceroute -F <ip_address> <mtu> 

L'utilizzo dell'ex è riportto nella pagina man come "Specifica il numero di byte di dati da submit. L'impostazione predefinita è 56, che si traduce in 64 byte di dati ICMP quando combinati con i 8 byte dei dati dell'intestazione ICMP". Nel test, ho scoperto che il ping -D 1472 <ip_address> era l'equivalente di MTU 1500 a causa degli 8 byte di dati di intestazione ICMP e 20 byte di intestazioni IP (vedi questo e questo ). Tutto ha senso.

Ora, perché è il command equivalente per un ping -D -s 8164 <ip_address> 9000 ping -D -s 8164 <ip_address> ? Ho verificato che questo è il limite prima che stiamo ricevendo errori "sendto: Messaggio troppo lungo", ma anche che 9000 MTU funziona correttamente come traceroute -F <ip_address> 9000 opere e traceroute -F <ip_address> 9001 non lo fa. Quindi, perché 8164? Avrei previsto 8972 (MTU – 28 byte, proprio come per 1500 MTU).

Inoltre, perché 9216 MTU per il Netgear? Ho contato 42 byte per le intestazioni MAC e ethernet (incluso CRC), più 20 per le intestazioni IP (che dovrebbero mangiare nella MTU).

Sono veramente arrugginito in questa math e so che mi manca qualcosa.

  • Come posso indurire lo stack TCP / IP in Windows Server 2008?
  • Come interpletare correttamente i risultati del tracert, in particolare il secondo all'ultimo salto prima di un timeout
  • Come posso misurare il carico di una connessione WAN con Wireshark?
  • diversi comportmenti ACK (rallentamento del throughput?)
  • Come aumentare la dimensione MTU su Linux 2.6?
  • una volta in una mentre l'applicazione windows / .net ignora la bandiera fin del tcp
  • Come funziona la subnetting IPv4?
  • Come prevenire le richieste ARP eccessive inviate da Windows Server 2003?
  • One Solution collect form web for “Che cosa sono malinteso sul calcolo della MTU?”

    Benvenuti nel mondo strano e misterioso dei frame jumbo! È normale che gli ingranaggi ethernet di frame jumbo abbiano MTU> 1518 e <65K byte e si deve trovare un'impostazione che è il denominatore comune più basso nel dominio L2 per abilitare il traffico jumbo corretto.

    La mia ipotesi è che l'implementazione ping / ICMP funziona solo per il carico utile di 8192 byte, quindi 8164 + 28 (20 per l'intestazione IP e 8 per l'intestazione ICMP) ti dà 8192 byte.

    MTU 9216 è anche un 9K MTU standard su un sacco di attrezzi di Cisco, quindi la mia ipotesi è che Netgear volesse essere '' compatibile '' a questo.

    Si noti inoltre che la specifica di dimensione MTU deve essere presa sul serio, molti fornitori non includono le intestazioni di frame 802.1Q (VLAN) o addirittura L2. Controllare con la documentazione del fornitore di switch che cosa veramente specificano quando stanno parlando di dimensione MTU.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.