Когда у меня возникают проблемы с интернетом, я часто первым делом перезагружаю роутер. В некоторых случаях это действительно помогает. Однако, я иногда ошибочно полагал, что медленная скорость интернета — это вина моего провайдера. Но, на самом деле, причина может быть гораздо более сложной и неожиданной.
Однажды я столкнулся с ситуацией, когда интернет работал медленно, хотя все тесты показывали хорошую скорость соединения. Я перепробовал множество способов решения проблемы, но ничего не помогало. Тогда я решил углубиться в технические детали и обнаружил, что проблема может быть связана с параметром Maximum Transmission Unit (MTU).
MTU — это максимальный размер пакета данных, который может быть передан через сеть без фрагментации. Если значение MTU слишком велико для вашего соединения, это может привести к задержкам и потере данных. В моём случае, значение MTU было установлено неправильно, что и вызывало проблемы с интернетом.
После того как я изменил значение MTU в соответствии с фактическими ограничениями моего соединения, проблема исчезла. Интернет стал работать гораздо быстрее и стабильнее. Это было неожиданное решение, но оно оказалось очень эффективным. Теперь я всегда проверяю значение MTU, если сталкиваюсь с проблемами со скоростью интернета.

MTU определяет максимальный объём полезной нагрузки IP-пакета
MTU, или максимальный размер пакета данных, определяет верхний предел количества байтов, который может передать устройство в сети без фрагментации. В большинстве сетей Ethernet это значение традиционно составляет 1500 байт. Этот стандарт не случайный: маршрутизаторы считают его оптимальным на основе ограничений, заложенных в проектирование кадров Ethernet ещё в 1980-х годах, и эти принципы до сих пор актуальны.
Однако, в 1500 байтах учитывается не только сама полезная нагрузка данных, но и дополнительные данные, связанные с накладными расходами протокола. В типичном трафике TCP эти накладные расходы включают 20 байт для заголовка IPv4 и еще 20 байт для заголовка TCP. Таким образом, фактический размер данных, который может быть передан через MTU 1500, составляет 1460 байт. Именно поэтому в стандартных сетях TCP используется значение 1460 байт для максимального размера сегмента (MSS).
Проблемы возникают, когда размер передаваемого пакета превышает MTU. В таких случаях единственный способ его доставки — это фрагментация. Маршрутизатор разбивает пакет на более мелкие части, каждая из которых получает собственный IP-заголовок. Этот процесс требует значительных вычислительных ресурсов, включая увеличенную нагрузку на процессор и буферное пространство. Кроме того, после фрагментации все части пакета должны быть собраны обратно в пункте назначения, что усложняет и замедляет доставку.
Хотя фрагментация сама по себе не уменьшает общую пропускную способность сети, она увеличивает вероятность ошибок и задержек, делая передачу данных менее надежной и эффективной.
В реальных интернет-сетях MTU часто ниже 1500
В интернете существует распространенное заблуждение, что 1500 байт — это универсальный размер пакета данных, который подходит для всех сетей. Однако, это не так. В некоторых домашних подключениях используется MTU (максимальный размер передаваемого блока данных) меньше 1500 байт. Например, протокол PPPoE (Point-to-Point Protocol over Ethernet), который часто применяется в оптоволоконных сетях и некоторых вариантах DSL, добавляет дополнительные 8 байт к каждому пакету. Это снижает эффективный MTU до 1492 байт, что может привести к фрагментации данных, если ваш маршрутизатор пытается передать пакеты размером 1500 байт через туннель, который поддерживает только 1492 байт.
Когда данные вынуждены быть упакованы в дополнительные оболочки, это фактически уменьшает их полезную нагрузку. Например, использование VLAN (виртуальных локальных сетей) добавляет 4-байтовый тег, который необходим для идентификации трафика в виртуальной сети. Этот тег уменьшает объём полезной нагрузки. Аналогичный эффект имеют технологии Carrier-grade NAT (CGNAT) и DS-Lite. В случае DS-Lite трафик IPv4 туннелируется внутри пакетов IPv6, что добавляет дополнительные накладные расходы на заголовок. VPN-сети также преобразуют исходный пакет в полезную нагрузку нового пакета, требуя нового заголовка.
Эти ситуации можно сравнить с добавлением дополнительной упаковки к коробке, которая уже имеет свою собственную упаковку, без удлинения пути, который должна пройти коробка. Коробка пройдет этот путь только если её разобрать.
В мобильных сетях ситуация ещё более сложная. Технологии LTE и 5G изначально используют более низкий базовый размер пакета, чем 1500 байт, используемый в Ethernet. В зависимости от реализации оператора, значения MTU могут варьироваться от 1420 до 1480 байт. Как правило, лимитом соединения становится наименьшее значение MTU на всём маршруте. Если маршрутизатор не может соответствовать этому лимиту, это может привести к фрагментации или незаметной потере пакетов, что, в свою очередь, может стать причиной медленного интернета.
Автоматические системы управления MTU иногда не справляются с нагрузкой
Существует механизм, который помогает избежать фрагментации данных и улучшить производительность сети. Этот механизм называется Path MTU Discovery (PMTUD), и он работает следующим образом: когда устройство отправляет пакет данных, оно может установить специальный бит «Не фрагментировать». Если принимающий маршрутизатор обнаруживает, что пакет превышает максимально допустимый размер (MTU) следующего устройства в пути, он отправляет сообщение ICMP Type 3 Code 4, требуя фрагментировать пакет.
Однако, на практике многие межсетевые экраны по умолчанию блокируют ICMP-трафик. В результате большие пакеты отбрасываются, и отправитель не получает уведомления о проблеме. Это приводит к тому, что отправитель начинает повторно передавать пакеты, увеличивая время задержки. Такая ситуация называется «чёрной дырой MTU» и может значительно ухудшить производительность сети.
Чтобы решить эту проблему, современные операционные системы используют протокол RFC 4821 Packetization Layer Path MTU Discovery (PLPMTUD). Этот протокол позволяет определить оптимальный размер пакетов без необходимости полагаться на ICMP. Однако, даже с использованием PLPMTUD некоторые маршрутизаторы, оборудование интернет-провайдеров и VPN-терминалы могут плохо справляться с фрагментацией, что приводит к накоплению задержек.
Ещё одной проблемой может быть использование ограничения MSS (Maximum Segment Size) на маршрутизаторе. Это ограничение может маскировать несоответствие MTU, но не решает саму проблему. В результате симптомы могут проявляться непостоянно, что затрудняет их диагностику и устранение.
Измерение и корректировка MTU обеспечивает бесперебойный поток пакетов
Чтобы найти оптимальное значение MTU (Maximum Transmission Unit), нужно учитывать несколько факторов. Если вы разбираетесь в математике, задача становится простой. Однако для тех, кто предпочитает более наглядные методы, тестирование с помощью команды ping может быть весьма полезным.
Когда вы отправляете ping-запрос, к нему добавляются заголовки IPv4 и ICMP. Заголовок IPv4 занимает 20 байт, а ICMP — 8 байт. В итоге, дополнительные накладные расходы составляют 28 байт. Если ваша полезная нагрузка равна 1472 байтам, то при добавлении этих 28 байт общее значение будет 1500 байт, что является стандартным значением MTU для большинства сетей.
Чтобы определить точное значение MTU, начните с полезной нагрузки в 1472 байта и постепенно уменьшайте её, пока не достигнете размера, при котором пакеты не фрагментируются. Когда вы найдете это значение, добавьте к нему 28 байт, и это будет ваше рабочее значение MTU.
Для Windows используйте следующую команду:
ping 8.8.8.8 -f -l 1472
Здесь параметр -f устанавливает бит «Не фрагментировать», а -l указывает размер полезной нагрузки. Продолжайте уменьшать размер полезной нагрузки, пока не получите стабильный успешный ответ.
В Linux команда будет выглядеть так:
ping -M do -s 1472 8.8.8.8
Параметр -M do также запрещает фрагментацию, а -s задает размер полезной нагрузки.
В macOS всё немного сложнее, так как флаги фрагментации обрабатываются по-разному в зависимости от версии системы. Для более точного определения MTU можно использовать инструмент mtr, который доступен через Homebrew.
Важно помнить, что проверка MTU должна проводиться для нескольких целевых IP-адресов, так как условия «чёрной дыры» могут возникать на определенных маршрутах, но не на других. Это поможет вам получить более полное представление о ситуации.
После того как вы определили оптимальное значение MTU, рекомендуется установить его в настройках WAN-интерфейса вашего маршрутизатора. Это позволит избежать необходимости индивидуальной настройки каждого устройства в сети.
Ниже приведена таблица с приблизительными значениями, которые можно ожидать для различных типов подключения:
Тип подключения |
Типичный MTU, который следует ожидать |
|---|---|
Стандартный Ethernet (кабель / прямое оптоволокно, без PPPoE) |
1500 |
PPPoE (DSL или некоторые оптоволоконные интернет-провайдеры) |
1492 |
Подключение к интернет-провайдеру с меткой VLAN |
1496–1500 (зависит от реализации интернет-провайдера) |
Мобильные сети LTE / 4G / 5G |
~1420–1480 (зависит от носителя языка) |
IPSec VPN (туннельный режим) |
1380–1460 (зависит от используемого шифра и инкапсуляции) |
WireGuard (родительский MTU 1500) |
~1420 |
WireGuard поверх PPPoE (1492 родительский элемент) |
~1412 |
OpenVPN (режим UDP) |
1300–1450 (в значительной степени зависит от конфигурации) |


