Как выбрать оптимальное значение MTU

“Правильный MTU, это не магическая константа, а результат измерений в конкретной сети. Слишком большой — пакеты фрагментируются и теряются, слишком маленький — вы платите накладными расходами за заголовки и теряете в производительности. В реальных сетях стандартный Ethernet MTU в 1500 байт часто оказывается мифом, и причина — в наложенных технологиях вроде PPPoE, VPN или туннелей.”

Как определяется максимальный размер пакета (MTU)

Maximum Transmission Unit (MTU), это технический лимит, который определяет, каков самый большой блок данных может быть передан по сетевому интерфейсу или через соединение целиком, без необходимости его разбиения на фрагменты. Этот параметр включает в себя и служебные заголовки протоколов (IP, TCP/UDP), и непосредственно полезные данные (payload).

Эмпирический поиск с помощью ping

Вместо того чтобы полагаться на предположения, точное значение MTU для пути до конкретного узла можно найти экспериментально. Для этого используется утилита ping с ключами, запрещающими фрагментацию пакета.

Принцип прост: вы отправляете пакет указанного размера с флагом «не фрагментировать». Если пакет проходит — размер можно увеличивать. Если маршрутизатор на пути требует его разбить, а флаг это запрещает, вы получаете ошибку. Пороговое значение и будет указывать на максимально допустимый размер полезных данных.

ping 84.252.74.247 -f -l 1470

В этом примере отправляется 1470 байт данных. Успешный ответ означает, что этот размер допустим.

ping 84.252.74.247 -f -l 1473

При отправке 1473 байт приходит сообщение об ошибке: Packet needs to be fragmented but DF set. Это указывает на предельное значение.

Откуда берётся итоговое число 1500? К объёму полезных данных (1472 байта — найденный порог для этого примера) добавляются служебные заголовки:

  • 20 байт — заголовок IP
  • 8 байт — заголовок ICMP (протокол, который использует ping)

Итого: 1472 + 28 = 1500 байт. Это и есть MTU для данного сетевого пути.

Настройка MTU на сетевых устройствах

После определения оптимального значения его необходимо зафиксировать в конфигурации сетевого интерфейса. Команды различаются в зависимости от операционной системы или оборудования.

Windows

Используется утилита netsh. Укажите имя интерфейса, которое можно посмотреть командой netsh interface ipv4 show subinterfaces.

netsh interface ipv4 set subinterface "Ethernet" mtu=1470 store=persistent

Изменения применяются сразу, но для надёжности перезапустите сетевой адаптер.

Linux

Изменить MTU можно динамически или прописать в конфигурационном файле для сохранения после перезагрузки.

sudo ip link set dev eth0 mtu 1470

Для постоянной настройки в Debian/Ubuntu (файл /etc/network/interfaces):

iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1
    mtu 1470

Оборудование Cisco (IOS)

Настройка производится в конфигурационном режиме интерфейса.

enable
configure terminal
interface GigabitEthernet0/1
mtu 1470
exit
write memory

Алгоритм выбора оптимального значения

Выбор MTU, это не разовая процедура «установил и забыл». Значение может меняться при смене маршрута или типа подключения (например, переход с Ethernet на VPN).

Шаг 1: Измерение реального MTU пути

  1. Выберите стабильный удалённый хост, например, публичный DNS-сервер (8.8.8.8).
  2. Начните с размера полезных данных 1400 байт и отправьте ping с флагом -f (Windows) или -M do (Linux).
  3. Постепенно увеличивайте размер (скажем, на 10-20 байт), пока не получите сообщение о необходимости фрагментации.
  4. Затем точнее определите порог, уменьшая шаг до 1 байта. Максимальный прошедший размер — ваше значение X.

Шаг 2: Расчёт и применение MTU интерфейса

MTU = X + 28 байт (20 байт IP-заголовок + 8 байт ICMP-заголовок). Настройте это значение на своём основном сетевом интерфейсе, как показано выше.

Шаг 3: Верификация

После настройки снова выполните ping с размером, соответствующим найденному X. Все пакеты должны проходить без потерь и ошибок фрагментации. Дополнительно можно проверить скорость и стабильность соединения.

Учёт специфики сетевых технологий

Стандартное значение 1500 байт редко работает везде из-за инкапсуляции. Вот типичные сценарии:

Технология Рекомендуемый MTU Причина
Чистый Ethernet 1500 Стандарт IEEE 802.3.
PPPoE (часто используется провайдерами) 1492 или 1480 Добавляет 8-байтовый заголовок PPPoE поверх кадра Ethernet, «съедая» полезное пространство.
VPN (IPsec, OpenVPN) ~1400-1420 Значительные накладные расходы на криптографические заголовки, инкапсуляцию и, возможно, туннелирование.
Сети с туннелями (GRE, VXLAN) На 40-100 байт меньше 1500 Каждый уровень инкапсуляции добавляет свой заголовок.

Практические примеры расчёта

Пример 1: Подключение по Ethernet к интернету.

Если команда ping 8.8.8.8 -f -l 1472 успешна, то MTU пути = 1472 + 28 = 1500. Устанавливайте 1500.

Пример 2: Подключение через PPPoE.

Здесь успешным окажется, например, размер 1452 байта. Тогда MTU = 1452 + 28 = 1480. Именно 1480 (а не 1492) может оказаться рабочим значением у некоторых провайдеров из-за дополнительных служебных полей.

Пример 3: Работа поверх VPN.

Максимальный проходящий размер может упасть до 1372 байт. Тогда MTU = 1372 + 28 = 1400. Установка такого значения на интерфейсе предотвратит фрагментацию на стороне VPN-клиента.

Последствия неправильного выбора MTU

  • Слишком большое значение: Пакеты будут фрагментироваться на промежуточных узлах (если флаг DF не установлен). Это увеличивает нагрузку на процессоры маршрутизаторов, задержки и может приводить к потерям — если один фрагмент теряется, не доходит весь оригинальный пакет. Некоторые сервисы (например, IPsec) могут работать некорректно или отказаться устанавливать соединение.
  • Слишком маленькое значение: Вы платите «налог на заголовки». Значительная часть пропускной способности канала тратится на передачу служебной информации, а не полезных данных. Это может снизить реальную скорость закачки, особенно заметно на быстрых соединениях.

Оптимальный MTU, это компромисс, найденный для вашей конкретной сетевой конфигурации. Регулярная проверка, особенно после изменений в сети или подключения к VPN, помогает поддерживать стабильное и производительное соединение.

Оставьте комментарий