Гаразд, я щойно закінчив вирішити питання про перемикання кадрів між декількома 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).
Я справді іржавий на цій математиці і знаю, що мені просто щось не вистачає.