Что я неправильно понимаю при расчете MTU?


14

Хорошо, я только что закончил решать проблему с большими кадрами между несколькими 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).

Я очень увлечен этой математикой и знаю, что мне чего-то не хватает.


1
9216 был почти наверняка выбран, потому что это 9 х 2 ^ 10.
Крис С

Ответы:


11

Добро пожаловать в странный и загадочный мир гигантских кадров! Нормально, что в 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.


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