1

В моей беспроводной сети я могу отследить путь к mac, используя MTU 1500 на Ubuntu linux 12.04.

(Mac MTU по какой-то причине установлен на 1470, но рамки ответа не такие большие, так что это не имеет значения)

Когда я отслеживаю путь к своему принтеру HP, он никогда не реагирует ни на один кадр длиной 1514 байт: MTU(1500) + Ethernet(14) (SRC (6) + DST (6) + type (2)) = 1514

Но если я установлю свой MTU на 1498, мой принтер ответит. MTU 1499 также дает сбой.

Примечание: установка MTU на 1500 на моем Mac также приводит к сбою печати, поэтому я сомневаюсь, что это как-то связано с компьютером или маршрутизатором.

Обновление: если я пройду путь к google.com, я увижу свой маршрутизатор (по его WAN-ссылке) с ICMP-пакетами, сообщающими, что необходима фрагментация, а MTU последующего кадра должен быть 1474.

tracepath изменяет размер кадра в соответствии с этим и продолжает. Это означает, что теперь он отправляет кадры длиной 1488 байт.

Для моего принтера он не отправляет обратно ни одного пакета ICMP, заявляющего, что он не может обработать полезную нагрузку в 1500 байт. Это как бы черные кадры размером больше 1512 байт.

Обновление: более новые Mac используют 1500, и они печатают хорошо. Когда я смотрел на происходящее, мой Mac сначала пробовал 1500, а в случае неудачи MTU сбрасывал до 1470 (из памяти) - интересный обходной путь от Apple.

1 ответ1

1

На самом деле MTU включает 28-байтовый заголовок. Судя по тому, что вы описали, ваш принтер настроен на MTU 1498, что является разумным.


Если вы установите MTU вашего компьютера равным 1500, то он будет отправлять пакеты размером до 1500 байт (не 1514, как вы описали).

Другой способ определить MTU вашего пути или конкретного хоста - использовать команду ping:

-f sets the Do Not Fragment bit 
-l configures the data size (remember to add 28 bytes for the header)

Таким образом, чтобы проверить host.example.com на MTU 1500, вы должны использовать

ping -f -l 1472 host.example.com.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .