Битлента
Словарь терминов3 мин чтения·

MTU: максимальный размер пакета и почему он бывает причиной сбоев

MTU задаёт предельный размер пакета в канале. Что такое фрагментация, при чём здесь 1500 и 1420 байт и как найти значение, при котором всё работает.

Ограничение размера посылки

Данные по сети идут пакетами, и у каждого канала есть предельный размер пакета, который он способен передать без разбиения. Он называется MTU, Maximum Transmission Unit. Для Ethernet стандартное значение 1500 байт, и именно оно чаще всего стоит по умолчанию на роутерах и компьютерах.

Величина включает заголовки, поэтому полезных данных в пакете меньше. Если на пути окажется участок с меньшим MTU, пакет придётся либо разбить на части, либо отправить отправителю сообщение о потребности уменьшить размер.

Значение 1500 закрепилось исторически, ещё со времён ранних версий Ethernet, и осталось стандартом по инерции. Каждое устройство на пути может иметь своё ограничение, а действует наименьшее из них на всём маршруте.

Фрагментация и её проблемы

Разбиение большого пакета на меньшие называется фрагментацией. Она работает, но неэффективна: увеличивает число пакетов, нагружает оборудование, а потеря одного фрагмента означает потерю всего исходного пакета. Поэтому современные системы часто ставят в пакете флаг «не фрагментировать» и подбирают допустимый размер механизмом обнаружения MTU пути (PMTUD).

Механизм полагается на служебные сообщения, которые отправляет узел с меньшим MTU. Если какой-то фаервол их отбрасывает, отправитель не узнаёт о проблеме, и большие пакеты просто исчезают. Возникает классический симптом «чёрной дыры».

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

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Симптомы неправильного MTU

Характерная картина: соединение устанавливается, маленькие запросы проходят, а всё, что требует больших пакетов, зависает. Сайт начинает загружаться и останавливается на середине, почта принимается, но не отправляется с вложениями, страница входа открывается, а после ввода данных пропадает, SSH подключается, а на выводе больших данных замирает.

Обычно такая проблема возникает при использовании туннелей: любое инкапсулирование добавляет служебные заголовки, и внутренний пакет перестаёт помещаться в прежние 1500 байт. Поэтому для туннелей MTU чаще выбирают меньше, например около 1400–1420 байт. Точное значение зависит от протокола.

Ещё один признак: приложение работает по Wi-Fi одного провайдера и не работает у другого. Поскольку разные сети добавляют разные заголовки, значение, идеальное в одной, может оказаться слишком большим в другой. При подозрении подключитесь через другой канал, например через мобильную сеть, и сравните поведение.

Как проверить и подобрать значение

Проверка делается пингом с запретом фрагментации. В Windows это ping с ключами -f и -l, где задаётся размер данных, в Linux используется ключ -M do и -s. Пакеты увеличивают до тех пор, пока не появится ответ о потребности фрагментации. Найденный максимальный размер данных плюс 28 байт заголовков IP и ICMP и есть MTU пути.

Затем это значение (или чуть ниже) настраивается на интерфейсе или в роутере. Меняйте параметр по шагам и проверяйте после каждого изменения: слишком маленький MTU снижает эффективность, но обычно безопасен.

Пример расчёта: если пинг с размером данных 1372 байта проходит без фрагментации, а с 1373 нет, то максимальный размер данных равен 1372, и MTU пути составляет 1372 плюс 28, то есть 1400. Для надёжности обычно берут значение на несколько байт ниже найденного.

Что нужно помнить

В большинстве домашних сетей менять MTU не нужно, и значения по умолчанию подходят. Разбираться стоит только тогда, когда есть описанные симптомы, особенно после настройки туннеля, подключения к сети через PPPoE (там обычно 1492) или использования мобильной сети.

Не путайте MTU с MSS: MSS это максимальный размер сегмента данных TCP, он вычисляется из MTU. Многие роутеры умеют «подрезать» MSS автоматически, что решает проблему без ручных настроек.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
mtuсетьфрагментация

Часто задаваемые вопросы

Читайте также