Apa kesalahpahaman saya dalam menghitung MTU?

14

Oke, saya baru saja menyelesaikan masalah frame jumbo antara beberapa Xserves, Netgear GSM7224, dan Drobo B800i. Ternyata Xserves (Mac OS X 10.6.8 Server) dan Drobo B800i menerima MTU dalam byte seperti yang biasanya diharapkan (1500-9000), tetapi Netgear tampaknya menginginkannya termasuk berbagai ethernet header / footer (trailer) ) dan saya akhirnya berakhir dengan Xserves & Drobo yang dikonfigurasi dengan MTU 9000 dan port Netgear diatur ke MTU 9216.

Saya telah menggunakan perintah berikut untuk menguji & memverifikasi MTU antara dua Xserves atas Netgear (Catatan: ini adalah perintah Mac OS X, yang Windows & Linux berbeda):

ping -D -s <mtu> <ip_address>

traceroute -F <ip_address> <mtu>

Penggunaan former dicatat di manhalaman sebagai, "Tentukan jumlah byte data yang akan dikirim. Standarnya adalah 56, yang diterjemahkan menjadi 64 byte data ICMP bila dikombinasikan dengan 8 byte data header ICMP." Dalam pengujian, saya menemukan bahwa untuk ping -D 1472 <ip_address>setara dengan MTU 1500 karena 8 byte data header ICMP ditambah 20 byte header IP (lihat ini dan ini ). Itu semua masuk akal.

Sekarang, mengapa perintah yang setara untuk 9000 MTU ping -D -s 8164 <ip_address>? Saya telah memverifikasi ini adalah batasnya sebelum saya membintangi kesalahan "sendto: Message too long", tetapi juga bahwa 9000 MTU berfungsi dengan benar sebagai traceroute -F <ip_address> 9000berfungsi dan traceroute -F <ip_address> 9001tidak. Jadi, mengapa 8164? Saya akan berharap 8972 (MTU - 28 byte, sama seperti untuk 1500 MTU).

Juga, mengapa 9216 MTU untuk Netgear? Saya menghitung 42 byte untuk header MAC & ethernet (inc. CRC), ditambah 20 byte untuk header IP (yang seharusnya memakan MTU).

Saya benar-benar berkarat dalam matematika ini dan tahu saya hanya kehilangan sesuatu.

bermoral
sumber
1
9216 hampir pasti dipilih karena 9 x 2 ^ 10.
Chris S

Jawaban:

11

Selamat datang di dunia bingkai jumbo yang aneh dan misterius! Adalah normal bahwa gigi ethernet frame jumbo memiliki MTU> 1518 dan <65K byte dan Anda harus menemukan pengaturan yang merupakan penyebut umum terendah di domain L2 Anda untuk memungkinkan lalu lintas jumbo yang tepat.

Dugaan saya adalah bahwa implementasi ping / ICMP Anda hanya berfungsi untuk payload 8192 byte, jadi 8164 + 28 (20 untuk header IP dan 8 untuk header ICMP) memberi Anda 8192 byte.

MTU 9216 juga merupakan MTU 9K standar pada banyak peralatan Cisco, jadi asumsi saya adalah bahwa Netgear ingin menjadi '' kompatibel '' untuk itu.

Juga perhatikan bahwa spesifikasi ukuran MTU harus dianggap serius, banyak vendor tidak menyertakan 802.1Q (vLAN) atau bahkan header bingkai L2. Periksa dengan dokumentasi vendor switch Anda apa yang sebenarnya mereka tentukan ketika mereka berbicara tentang ukuran MTU.

pfo
sumber
Hanya catatan untuk ditambahkan: MTU host dan router Anda harus cocok; MTU sakelar dapat disetel menjadi 12 miliar untuk semua yang penting asalkan di atas pengaturan host (+ header).
Hyppy