Что такое MTU? Как найти оптимальный размер MTU для домашней сети?
Информация в компьютерных сетях передается в виде небольших сформированных блоков данных (иначе говоря, пакетов). Каждый пакет помимо пересылаемой информации содержит еще и служебные данные, составляющие так называемый заголовок (header) пакета. Эти служебные данные нужны для определения целостности данных, используемой версии сетевых протоколов и т.д. При этом размер полезного блока данных ограничивается определенным количеством байт. Делается это для того, чтобы снизить вероятность потерь информации и уменьшить время повторной пересылки пакета в случае появления проблем с подключением.
MTU – что это?
MTU (от англ. Maximum transmission unit) – это максимальный объем данных, передаваемый по сети без дальнейшего фрагментирования (одним пакетом). Любая информация, объем которой превышает значение MTU, автоматически разбивается на небольшие блоки данных перед отправкой по сети. Возможные значения MTU зависят от используемого типа подключения к сети. Так, при использовании PPoE (в основном с ADSL и подобными технологиями) максимальное значение параметра MTU составляет 1492 байта (стандартные 1500 байт для Ethernet минус восемь байт заголовков), а при использовании Wi-Fi MTU может достигать 2304 байт.
В современных ОС оптимальное значение MTU зачастую вычисляется самой системой или берется из настроек маршрутизатора (обычно значение MTU задается в разделе WAN сетевых настроек устройства). Если проблем с доступом к Интернету не наблюдается, значение MTU лучше не менять. Однако, если возникли проблемы со связью и вы предполагаете, что они могут быть связаны с фрагментацией сетевых пакетов, попробуйте изменить значение MTU.
Сделать это можно не только через изменение соответствующей настройки маршрутизатора, но и средствами операционной системы. Перед тем как менять MTU, необходимо рассчитать оптимальное значение этого параметра. Расскажем, как это делается.
Рассчитываем значение MTU
Найти оптимальное значение MTU можно с помощью старой-доброй команды ping. Предположим, что мы определяем значение этого параметра для проводного подключения. Открываем командную строку Windows и пишем такую команду:
В Linux команда обычно имеет вид ping -M do -s 1472 www.google.com, а в macOS ping -D -s 1472 www.google.com (в некоторых версиях систем ключи могут отличаться, рекомендуем обратиться к man ping, если команда не работает). В данном случае мы отправляем по адресу www.google.com пакеты размером 1472 байта и запрещаем фрагментировать данные. Если пакеты такого размера не могут быть отправлены, команда сообщит, что необходима фрагментация пакета. Перезапустите эту команду несколько раз, постепенно уменьшая размер пакета на 8–10 байт. В итоге после нескольких попыток вы подберете значение размера, при котором отсылка данных состоится. Помните: если используется беспроводное подключение, размер пакета может быть больше 1500 байт.
Запомните полученное значение и прибавьте к нему 28 байт (длина служебных заголовков). Получившееся значение – это оптимальное (или близкое к оптимальному) значение MTU для вашей сети.
Устанавливаем значение MTU
Теперь вы знаете, какое значение MTU можно использовать в вашей домашней сети. Укажем операционной системе, что необходимо использовать именно его (дальнейшие примеры иллюстрируют настройку сети IPv4).
В Windows открываем командную строку с правами администратора и выполняем команду:
netsh interface ipv4 show subinterfaces
На экране появится список всех сетевых подключений, их названия и текущий размер MTU. Запоминаем название нужного нам подключения и пишем следующую команду:
netsh interface ipv4 set subinterface Ethernet mtu=1450 store=persistent
Здесь Ethernet – название интерфейса (может быть другим), 1450 – выбранный размер MTU. Если название состоит из нескольких слов, его надо указывать в кавычках.
Для отключения автоматической настройки MTU можно выполнить команду:
netsh int tcp set global autotuninglevel=disabled
Включить автоматическое определение MTU можно той же командой с параметром autotuninglevel=normal.
Если необходимо сбросить настройки к исходному состоянию, выполняем команду:
В Linux настройка MTU осуществляется с помощью команды ip. Посмотрим текущее значение MTU:
А далее установим желаемое значение:
Здесь eth0 – название интерфейса, оно может быть другим на вашем компьютере. Для того чтобы выбранное значение MTU использовалось постоянно при каждом входе в систему, необходимо прописать значение в файл /etc/network/interfaces, либо создать модуль для systemd. Рекомендуем обратиться к документации используемого дистрибутива для получения более подробной информации.
В macOS посмотреть размер MTU для подключения en0, а затем установить значение параметра можно в терминале:
networksetup -setMTU en0 1450
Вы можете указать размер MTU и в настройках маршрутизатора. Во многих моделях роутеров соответствующая настройка находится в разделе WAN. Более подробную информацию можно получить на сайтах производителей сетевого оборудования.
При ручной настройке MTU учитывайте, что слишком маленький размер блока данных устанавливать не рекомендуется, чтобы не создавать дополнительную нагрузку на процессор маршрутизатора. Также напомним еще раз: если ваше сетевое подключение работает нормально, значение MTU менять не стоит. Параметры, установленные провайдером или производителем маршрутизатора, вполне подходят для подавляющего большинства пользователей.
Как определить оптимальный размер MTU?
NOTE: Важно! Данная инструкция актуальна только в том случае, если вы столкнулись с проблемами передачи данных по сети.
Например, по неизвестной причине не открываются определенные веб-страницы или присутствуют ошибки при передаче файлов.
Если же доступ в Интернет и передача данных работают корректно, не стоит экспериментировать с параметром MTU, т.к. при выполнении неверных действий вы можете только ухудшить работу домашней сети. В настоящее время, в различных сетевых устройствах (роутерах, адаптерах, модемах и пр.) обычно используются оптимальные настройки MTU предустановленные по умолчанию, а также часто значение MTU определяется автоматически c помощью функции автоподстройки размера пакетов.
Параметр MTU (Maximum Transmission Unit; максимальная единица передачи) означает максимальный размер пакета, который может быть передан по сети без фрагментации. Если пакет будет иметь больший размер, чем установленное значение MTU, он будет фрагментироваться (разбиваться) на более мелкие. При большом количестве таких пакетов это может значительно замедлить передачу данных по сети.
При использовании неправильного размера MTU возможны проблемы с открытием некоторых сайтов в браузерах, сбои в работе VoIP-телефонии, проблема с приемом или передачей файлов по сети. Для исправления такой ситуации нужно проверить установленное текущее значение MTU, а также выяснить оптимальный его размер. Использование оптимального размера MTU может значительно улучшить производительность сети. Максимальная скорость достигается, когда нагрузки всех пакетов в потоке имеют длину, равную значению MTU.
Во многих сетевых устройствах имеется возможность установить вручную значение MTU для нужного интерфейса, но нужно правильно определить его оптимальный размер.
Рассмотрим один из самых простых и точных способов определения оптимального размера MTU.
Для этого будем использовать утилиту ping. С помощью неё мы будем отправлять запросы в сеть и постепенно увеличивать размер пакета до тех пор, пока не появится сообщение о необходимости фрагментации пакета.
Выполнение команды ping будем производить в командной строке операционной системы Windows. Для подключения к командной строке Windows 10 нажмите комбинацию клавиш Win + R (в ранних версиях Windows нажмите Пуск > Выполнить) и в появившемся окне в поле Открыть впишите команду cmd. Нажмите кнопку OK (или клавишу Enter на клавиатуре).
Синтаксис используемой команды ping будет следующий:
В качестве url используйте какой-нибудь популярный домен.
Флаг -f запрещает фрагментацию пакета.
Флаг -l устанавливает размер пакета при отправке его в сеть. Обращаем ваше внимание, что во флаге -l используется строчная буква L.
Приведем пример. Выполним пинг до сайта www.yandex.ru с размером пакета 1450 байт:
После выполнения команды ping вы сразу увидите результат. В нашем примере был получен ответ, а сообщение о требовании фрагментации пакета не получено. Значит, продолжаем тестирование. Тестирование размера пакета начинайте с 1450 байт, постепенно увеличивая это значение до тех пор, пока не появится сообщение Требуется фрагментация пакета.
Итак, в нашем примере был найден максимальный размер пакета 1464 байта (при этом значении пакет не нуждается во фрагментации), т.к. при значении 1465 байта появилось сообщение о том, что требуется фрагментация пакета.
Но это ещё не значение MTU. Мы получили значение MSS (Maximum Segment Size), которое определяет максимальный размер блока данных в байтах. Этот параметр не учитывает длину заголовков ICMP и IP. В нашем случае значение MTU = MSS + заголовок IP + заголовок ICMP.
Теперь к полученному в ходе тестирования числу прибавим 28 байт, которые зарезервированы под заголовок данных (20 байт для заголовка IP и 8 байт для заголовка запроса протокола ICMP). Для нашего примера MTU=1464+28=1492 байт (это оптимальное значение параметра MTU).
Для выхода из интерфейса командной строки выполните команду exit.
NOTE: Важно! Для корректного выполнения указанного теста должно обеспечиваться прохождение пакетов ICMP по сети (некоторые сетевые устройства, сервера или межсетевые экраны могут блокировать прохождение ICMP-запросов).
Далее полученное значение MTU можно установить в настройках роутера на WAN-интерфейсе. Подробная информация по установке параметра MTU в интернет-центрах Keenetic представлена в инструкции «Настройка значения MTU».
TIP: Примечание
Иногда требуется узнать значение MTU на компьютере, при подключении к нему напрямую интернет-кабеля провайдера. Чтобы посмотреть текущее значение MTU, в командной строке Windows используйте специальную команду:
netsh interface ipv4 show subinterfaces
Вы увидите информацию по всем интерфейсам компьютера. Смотрите значение MTU для основного подключения (в нашем примере для интерфейса Ethernet оно составляет 1500).
Пользователи, считающие этот материал полезным: 85 из 89
Как изменить параметр MTU на роутерах TP-Link?
Что такое MTU: MTU (Maximum Transmission unit) – максимальный размер одного пакета в байтах, который может быть передан без фрагментации. Наибольший разрешённый размер MTU по сети Ethernet и используемый большинством провайдеров – 1500 байтов. Это означает, что максимальный размер передаваемого пакета данных может быть 1500 байтов.
Что такое фрагментация: Фрагментация – это разбиение очень больших пакетов для отправки по сети. Пакеты должны будут реконструироваться в конечной точке отправления после того, как все части будут получены. Это может вызвать задержки и проблемы со скоростью сети.
Основные проблемы с MTU: Если у вас большие задержки, лаги, проблемы со скоростью, это может быть вызвано параметром MTU. Если параметр MTU у вашего роутера выше, чем поддерживает сеть провайдера, то пакеты будут фрагментированы. Что вызовет дополнительную нагрузку на ваши устройства и сеть. Это может повлиять на скорость и стабильность соединения.
Исправление проблем с MTU: Первым делом уточните у вашего провайдера требуемый размер параметра MTU. Настройте его непосредственно на роутере, чтобы не пришлось меня эту настройку на каждом вашем устройстве.
Пример: Ваш провайдер предоставляет доступ интернета с параметром MTU 1472 байта. На роутере размер MTU – 1500 байта. Все устройства, выходящие в сеть через роутер, будут отправлять пакеты размером 1500 байта. Сеть провайдера не сможет их обработать, поэтому они будут фрагментированны. Как мы уже поняли, это может выдать существенное замедление скорости работы сети.
Настройка параметра MTU на роутерах TP—Link:
Шаг 1. Войдите в веб-интерфейс вашего роутера (tplinkwifi.net или 192.168.0.1/192.168.1.1/192.168.0.254). Логин и пароль для входа – admin.
Шаг 2. В зависимости от интерфейса:
Открываете раздел Сеть – WAN, в центральном блоке страницы отобразится размер MTU (Для некоторых типов подключения необходимо будет нажать кнопку Дополнительно).
— Синий
Открываете раздел Дополнительные настройки – Сеть – Интернет, строчка Размер MTU (Для некоторых типов подключения необходимо будет нажать кнопку Дополнительные настройки).
Примечание: Для изменения настроек роутер нужно перезагрузить.
VPN: VPN могут иметь свои настройки. Если вы подключаетесь и авторизуетесь к VPN серверу, но сеть работает не корректно, обратитесь к администратору VPN и уточните у них параметр MTU. Измените его по инструкции выше.
Что такое MTU в настройках роутера
Когда постоянно происходят сбои при подключении к интернету, многие идут на решительные меры. Они меняют роутер, меняют провайдера. Одна из причин возможных неполадок – не корректно выставленное значение MTU. Давайте разберемся, что это такое и как его правильно выставить.
MTU в роутере что это
Значение MTU (Maximum Transmission Unit) указывает, какого максимального размера пакеты отправляет устройство. Измеряется в байтах. То есть, если на роутер пришел блок данных большего размера, то он его нарежет на несколько пакетов (фрагментирует). Эти пакеты будут идти по сети, и если встретится на их пути маршрутизатор, который посчитает их слишком большими, он тоже их нарежет. Когда они достигнут последнего маршрутизатора, он, в свою очередь, перед отправкой на компьютер получателя, будет из фрагментированных пакетов собирать в исходные.
Все эти манипуляции по нарезке и сборке пакетов трудоемки. Соответственно, желательно выставлять оптимальное значение MTU на роутере.
Так как данные в каждом пакете оборачиваются служебными заголовками, то чем более длинные пакеты используются, тем меньше затрат на заголовки. В связи с этим желательно выставлять максимальный размер MTU, при котором пакеты не будут нарезаться на последующих узлах сети.
Какой MTU поставить на роутере
Самый простой способ, это обратиться в службу поддержки провайдера (написать письмо, позвонить). Скорее всего, они подскажут актуальное значение. Но через некоторое время, провайдер может все переконфигурировать. Хотя это случается достаточно редко, но если вдруг начали возникать сбои, вполне вероятно, что следует уточнить правильность выставленного MTU.
Второй вариант, это найти оптимальный размер с помощью команды ping, отправляя пакеты, в которых установлено, что их нельзя фрагментировать. Пинговать следует удаленный ресурс, например, сайт или сервер провайдера.
Можно так же проверить наиболее посещаемые ресурсы в интернете: игровые сервера, сервера с которых смотрите фильмы, используемые IP телефоном.
Пример команды «ping -f -l 1472 yandex.ru», здесь:
- 1472 – это количество отправляемых байт данных. Следует учитывать, что помимо данных, будет отправлен еще и заголовок, который составляет 28 байт (IP заголовок 20 + ICMP заголовок 8 = 28). Следовательно, в итоге размер пакета будет составлять 1472+28=1500 (байт), стандартный размер максимального стандартного Ethernet пакета. Есть правда пакеты большего размера, называемые jumbo-кадрами.
- yandex.ru – это доменное имя сервера, на который будем отправлять команды, его можно поменять на IP адрес сервера провайдера. Можно поэкспериментировать с разными IP-адресами.
В итоге, выполнив такую команду, мы определим, требуется ли фрагментация пакета для доставки его к получателю.
Запускаем командную строку (это классическое приложение Windows, найти его можно, например, в поиске набрав «Командная строка»). И выполняем команды.
Здесь значении данных 997 байт, размер пакета 997+28=1025 байт, пакет не может быть доставлен без фрагментации.
Здесь значении данных 996 байт, размер пакета 996+28=1024 байт, пакет доходит до получателя без фрагментации.
Таким образом, изменяя размер отправляемого блока данных, мы можем вычислить DMTU – максимальный размер блока данных, который доставляется без фрагментации. Например, если команда ping проходит без фрагментации со значением 996. При попытке отправить команду со значением 997 получаем ответ: «Требуется фрагментация пакета, но установлен запрещающий флаг». Тогда мы рассчитываем параметр DMTU следующим образом: 996 байт данных + 28 байт IP заголовка = 1024 байта. Максимальный размер блока данных, который не будет фрагментирован, составит 1024 байта. Это значение и следует задать на маршрутизаторе, как размер MTU.
Как поменять MTU на роутере
Подключаемся к маршрутизатору через интернет браузер. Выставляем новый размер MTU. Затем сохраняем настройки.
Например, при использовании TP-Link, заходим в пункт «Сеть», там подпункт «WAN». Не забываем нажать после этого кнопку «Сохранить».
После изменения значений, можно проверить, насколько изменилась скорость скачивания файлов большого размера из интернета.
Настройка MTU на компьютере
Для увеличения производительности, чтобы на маршрутизатор не приходили слишком большие пакеты, возможна настройка MTU на оборудовании. В частности, можно выставить размер MTU на персональном компьютере, требуется воспользоваться командной строкой, запущенной от имени администратора:
- Определим текущее значение MTU. В командной строке выполнить команду «netsh interface ipv4 show subinterfaces». В строке ответа напротив Ethernet видим, что текущий параметр MTU, составляет 1500
- Установим новое значение. В командной строке следует выполнить команду, например, если необходимо заменить на 1024, то она будет выглядеть следующим образом: «netsh interface ipv4 set subinterface “Ethernet” mtu=1024 store=persistent»
- Проверяем, что новое значение установилось
После данной установки на компьютере, с него будут отправляться пакеты, у которых максимальный размер на уровне IP будет 1024 байта, но на MAC уровне максимальный отправляемый блок данных будет размером 1038 байт (14 из них для заголовка MAC).
Большего размера пакеты не будут отправляться. То есть, если в настройках роутера рассчитан и правильно выставлен MTU 1024, то точно такой же MTU следует задать в настройках подключенного к нему компьютера.
Автоматическая настройка – PMTU discovery
Существуют режимы работы некоторых устройств, когда размер MTU уточняется во время подключения к удаленному серверу (PMTU discovery). Алгоритм такой же, как и тот, которым пользовались при настройке MTU на роутере. В начале работы устройство отправляет блоки данных разного размера, пытаясь определить максимальный размер пакета, который дойдет без фрагментации.
В этом алгоритме есть одна проблема, называемая «MTU Discovery Black Hole». Она возникает в случае, когда администраторы сетей, чтобы избежать возможных атак на их сервера, запрещая маршрутизаторам передачу ICMP, в частности которые используются при команде ping.
Так конечно не корректно действовать. Устройство, не получив ответа на запрос не может продолжить работать.