Хорошо, я только что закончил решать проблему с большими кадрами между несколькими Xserve, Netgear GSM7224 и Drobo B800i. Оказалось, что Xserve (сервер Mac OS X 10.6.8) и Drobo B800i принимают MTU в байтах, как обычно ожидаемо (1500-9000), но Netgear, похоже, хотел его, включая различные верхние / нижние колонтитулы Ethernet (трейлеры) ) и я в конечном итоге закончил с Xserve & Drobo, настроенным с MTU 9000, и портами Netgear, настроенным с MTU 9216.
Я использовал следующие команды для тестирования и проверки MTU между двумя Xserve через Netgear (примечание: это команды Mac OS X, Windows и Linux отличаются):
ping -D -s <mtu> <ip_address>
traceroute -F <ip_address> <mtu>
Использование первого обозначено на man
странице как «Укажите количество байтов данных для отправки. По умолчанию используется значение 56, которое преобразуется в 64 байта данных ICMP в сочетании с 8 байтами данных заголовка ICMP». В ходе тестирования я обнаружил, что ping -D 1472 <ip_address>
он эквивалентен MTU 1500 из-за 8 байтов данных заголовка ICMP плюс 20 байтов заголовков IP (см. Это и это ). Это все имеет смысл.
Теперь, почему эквивалентная команда для 9000 MTU ping -D -s 8164 <ip_address>
? Я проверил, что это предел, прежде чем я начну получать ошибки «sendto: Message too long», но также и то, что 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).
Я очень увлечен этой математикой и знаю, что мне чего-то не хватает.
Ответы:
Добро пожаловать в странный и загадочный мир гигантских кадров! Нормально, что в jumbo frame ethernet gear есть 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.
источник