Що я нерозумію щодо розрахунку MTU?


14

Гаразд, я щойно закінчив вирішити питання про перемикання кадрів між декількома Xserva, Netgear GSM7224 та Drobo B800i. Виявилося, що Xserva (Mac OS X 10.6.8 Server) і Drobo B800i приймають MTU в байтах як зазвичай очікується (1500-9000), але Netgear, схоже, цього хотів, включаючи різні заголовки / колонтитули Ethernet (трейлери) ) і в кінцевому підсумку я закінчився з Xserva & Drobo, налаштованим MTU 9000 і портами Netgear, встановленими на MTU 9216.

Я використовував наступні команди для тестування та перевірки MTU між двома Xservaми через Netgear (Примітка. Це команди Mac OS X, Windows і Linux відрізняються):

ping -D -s <mtu> <ip_address>

traceroute -F <ip_address> <mtu>

Використання попереднього відзначається на manсторінці як "Вкажіть кількість байтів даних, які потрібно надіслати. За замовчуванням - 56, що перетворюється на 64 байти даних ICMP у поєднанні з 8 байтами даних заголовка ICMP". Під час тестування я виявив, що to ping -D 1472 <ip_address>було еквівалентно MTU 1500 завдяки 8 байтам даних заголовка ICMP плюс 20 байтовим IP-заголовкам (див. Це та це ). Це все має сенс.

Тепер, чому еквівалентна команда для 9000 MTU ping -D -s 8164 <ip_address>? Я перевірив, що це межа, перш ніж я отримаю помилки "sendto: Повідомлення занадто довго", але також і те, що 9000 MTU працює правильно, як traceroute -F <ip_address> 9000працює, і traceroute -F <ip_address> 9001ні. Отже, чому 8164? Я б очікував 8972 (MTU - 28 байт, як і для 1500 MTU).

Крім того, чому 9216 MTU для Netgear? Я підрахував 42 байти для заголовків MAC та Ethernet (включаючи CRC), плюс 20 для заголовків IP (які повинні входити в MTU).

Я справді іржавий на цій математиці і знаю, що мені просто щось не вистачає.


1
9216 був майже напевно обраний, тому що це 9 x 2 ^ 10.
Кріс С

Відповіді:


11

Ласкаво просимо в дивний і таємничий світ джамбо-кадрів! Це нормально, що Ethernet передача jumbo frame має MTU> 1518 і <65K байт, і ви повинні знайти налаштування, яке є найнижчим загальним знаменником у вашому домені L2, щоб забезпечити належний трафік jumbo.

Я здогадуюсь, що ваша реалізація ping / ICMP працює лише для корисного навантаження 8192 байт, тому 8164 + 28 (20 для заголовка IP та 8 для заголовка ICMP) дає вам 8192 байт.

MTU 9216 - це також стандартний 9K MTU на багатьох передачах Cisco, тому я припускаю, що Netgear хотів бути "сумісним" з цим.

Також зауважте, що до специфікації розміру MTU слід сприймати серйозно, багато постачальників не включають 802.1Q (vLAN) або навіть заголовки кадрів L2. З документацією постачальника комутаторів перевірте, що вони дійсно вказують, коли вони говорять про розмір MTU.


Лише зауваження, яке потрібно додати: MTU ваших хостів і маршрутизаторів має відповідати; MTU перемикачів може бути встановлено на 12 базільйонів, за всіма значеннями, поки це вище налаштування хостів (+ заголовок).
Хіпі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.