Максимальный mtu. Что такое 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 и пишем такую команду:

ping www.google.com -f -l 1472

В 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.

Если необходимо сбросить настройки к исходному состоянию, выполняем команду:

netsh interface ipv4 reset

В Linux настройка MTU осуществляется с помощью команды ip. Посмотрим текущее значение MTU:

$ ip link show | grep mtu

# ip link set eth0 mtu 1450

Здесь eth0 – название интерфейса, оно может быть другим на вашем компьютере. Для того чтобы выбранное значение MTU использовалось постоянно при каждом входе в систему, необходимо прописать значение в файл /etc/network/interfaces, либо создать модуль для systemd. Рекомендуем обратиться к документации используемого дистрибутива для получения более подробной информации.

В macOS посмотреть размер MTU для подключения en0, а затем установить значение параметра можно в терминале:

networksetup -getMTU en0

networksetup -setMTU en0 1450

Вы можете указать размер MTU и в настройках маршрутизатора. Во многих моделях роутеров соответствующая настройка находится в разделе WAN. Более подробную информацию можно получить на сайтах производителей сетевого оборудования.

При ручной настройке MTU учитывайте, что слишком маленький размер блока данных устанавливать не рекомендуется, чтобы не создавать дополнительную нагрузку на процессор маршрутизатора. Также напомним еще раз: если ваше сетевое подключение работает нормально, значение MTU менять не стоит. Параметры, установленные провайдером или производителем маршрутизатора, вполне подходят для подавляющего большинства пользователей.

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

Мало кто из обычных пользователей задавался вопросом, что такое MTU и для чего он указывается в настройках

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

Чтобы справиться с проблемой, рекомендуется изменить настройки DNS. Сделать это можно через Панель управления. Откройте раздел с интернет-подключениями, выберите свою сеть и просмотрите её свойства. В них вы найдёте компоненты, среди которых следует выбрать протокол Интернета TCP/IP и вручную вписать DNS адреса - 8.8.8.8 и во второй строке 8.8.4.4.

Если вы попробовали поменять значение DNS, но это не помогло, стоит обратиться к настройкам размера пакетов данных. Когда у провайдера установлено одно число этого параметра, а в вашем роутере - другое, то скорость падает,и соединение работает плохо . На компьютере его менять не нужно, поскольку в последних версиях Windows система сама определяет оптимальное для работы сети значение.

Как узнать, какой установить MTU на роутере?

Есть стандартные значения этого параметра для роутеров. В большинстве случаев используется число 1500 - оно является базовым по умолчанию, применяется для динамического и статического IP-адреса.

Для соединения типа L2TP выбирается число 1460, а для PPPoE - 1420. Стоит попробовать комбинацию 1476 - она по умолчанию устанавливается для сетей типа 3G.

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

Сделать это можно, сверив установленное значение MTU на компьютере и роутере . Если они не совпадают, это и есть причина плохой скорости соединения. Чтобы узнать комбинацию на компьютере, выполните следующее:

  • Введите в Total Commander строку PING -f -l 1472 xxx.xxx.xxx.xxx, где вместо крестиков укажите свой IP-адрес.
  • Если в результате появится текст «Reply from…»(«Ответ от…»), то правильное число MTU - 1500, как и должно быть по умолчанию. Почему 1472? Остальные килобайты являются системными и автоматически добавляются к этому числу, чтобы в сумме получилось 1500.
  • Если в ответ на команду появился текст «Packet needs to be fragmented but DF set», нужно вручную искать правильное значение путём уменьшения числа 1472 на десятки, пока у вас не появится строка «Reply from…». Затем к конечному значению нужно добавить 28 системных килобайта, получив верное число.

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

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

Это делается следующим образом:

  • Зайдите в настройки роутера. В строке браузера введите IP-адрес оборудования, в появившемся окне впишите логин и пароль (если вы не изменяли их, используйте слово Admin в обеих строках).
  • Выберите раздел Network, откройте меню WAN.
  • Введите необходимое число в строку MTU Size, сохраните изменения и выполните перезагрузку оборудования.

В тот момент, когда хост должен передавать данные через интерфейс, он ссылается на максимальный размер полезного блока данных для одного пакета Maximum Transmission Unit, чтобы определить, сколько данных он может поместить в каждый пакет. Например, интерфейсы Ethernet имеют MTU по умолчанию 1500 байт, не включая заголовок или трейлер Ethernet. Это означает, что хост, которому необходимо отправить данные по TCP-протоколу, обычно будет использовать первые 20 из этих 1500 байтов для заголовка IP, следующие 20 для заголовка TCP, а оставшиеся 1460 байт для полезной нагрузки. Инкапсуляция данных в пакеты максимального размера, подобные этому, позволяет потреблять полосу пропускания наиболее эффективно, минимизируя использование служебного трафика протокола передачи данных. Оптимальный размер MTU - ключ к эффективному использованию сетевых каналов передачи данных и снижению нагрузки на сетевое оборудование.

К сожалению, не все устройства в сети Интернет имеют одинаковый максимальный размер полезного блока данных MTU. MTU может различаться в зависимости от типа физического носителя или сконфигурированной инкапсуляции (например, туннелирование GRE или шифрование IPsec). Когда маршрутизатор решает переслать IPv4 пакет через интерфейс и определяет, что размер пакета превышает MTU интерфейса, маршрутизатор должен разбить пакет так, чтобы передать его как две (или более) отдельные части, каждая из которых не превышает предельный размер MTU канала между абонентами. Фрагментация довольно дорого стоит, как в ресурсах маршрутизатора, так и в использовании полосы пропускания. Должны быть созданы новые заголовки и прикреплены к каждому фрагменту. В спецификации протокола IPv6 из маршрутизатора полностью удалена фрагментация пакетов, но эта тема для отдельного разговора.

Определение оптимального размера MTU пакета данных

Чтобы использовать канал наиболее эффективным образом, хосты должны определить оптимальный размер MTU - это минимальный MTU среди всех узлов на пути между хостами. Например, для двух хостов, путь между которыми состоит из 3-х маршрутизаторов с различными максимально возможными размерами пакетов: 1500, 800 и 1200 байтов, каждый из конечных хостов должен принять наименьший размер пакета 800 байт, чтобы избежать фрагментации.

Do not Fragment и Destination Unreachable, Fragmentation Needed

Пакеты могут перемещаться по сетям произвольным образом и невозможно заранее просчитать все маршруты и максимальный размер пакетов для каждого подключения. В RFC 1191 прописана методология определения размера MTU. Процесс, посредством которого хост для конкретного подключения может обнаруживать меньший размер MTU, чем поддерживает его собственный сетевой интерфейс. Ключевыми являются два компонента: бит “Не фрагментировать” (Do not Fragment (DF)) заголовка IP и субкод сообщения ICMP-протокола Destination Unreachable, Fragmentation Needed.

Установка бита DF в IP-пакете не позволяет маршрутизатору выполнять фрагментацию, когда он обнаруживает MTU меньше, чем размер пакета. Вместо этого пакет отбрасывается и по ICMP отправителю приходит сообщение о необходимости фрагментации пакетов. По сути, маршрутизатор указывает, что для отправки далее ему необходимо разбить пакет на части, но флаг Don’t Fragment (DF) не позволяет это сделать. RFC 1191 расширяет ICMP-сообщение, запрашивающее фрагментацию, с включением размера MTU для текущего подключения.

Теперь, когда был обнаружен максимальный размер пакета для подключения, хост может кэшировать это значение и формировать последующие соответствующего размера. Обратите внимание, что обнаружение максимального размера пакетов для конкретного подключения является непрерывным процессом. В случае использования динамической маршрутизации и перестроении маршрута между отправителем и получателем хост периодически продолжает попытки установить флаг DF для обнаружения дальнейшего уменьшения размера пакетов. RFC 1191 также позволяет периодически тестировать возможность увеличения максимального размера пакетов для каждого маршрута, иногда пытаясь передать пакет больше, чем кешированный. Если пакет передается успешно, то значение предельно допустимого размера пакета увеличивается.

Расчет максимального размера MTU пакета с помощью трассировки

Вы можете вычислить максимальный размер пакета MTU для каждого маршрута через с помощью инструмента, такого как трассировка пути. Является частью пакета Linux - IPutils. Или утилита, написанная для Windows - mturoute:

Привожу пример определения MTU для маршрута между двумя хостами через шифрованный GRE-туннель. Видим как утилита последовательно подбирает максимальный размер пакета:

C:\bin>mturoute.exe 192.168.3.1 * ICMP Fragmentation is not permitted. * * Speed optimization is enabled. * * Maximum payload is 10000 bytes. * - ICMP payload of 1472 bytes is too big. + ICMP payload of 92 bytes succeeded. + ICMP payload of 782 bytes succeeded. + ICMP payload of 1127 bytes succeeded. + ICMP payload of 1299 bytes succeeded. - ICMP payload of 1385 bytes is too big. + ICMP payload of 1342 bytes succeeded. + ICMP payload of 1363 bytes succeeded. + ICMP payload of 1374 bytes succeeded. - ICMP payload of 1379 bytes is too big. + ICMP payload of 1376 bytes succeeded. + ICMP payload of 1377 bytes succeeded. + ICMP payload of 1378 bytes succeeded. Path MTU: 1406 bytes.

У вас недогружаются странички в браузере? Некоторые из них открываются только со второго или третьего раза? Потоковое видео с просторов интернета идет с прерываниями? Скорее всего, проблема заключается в неправильно выставленном параметре MTU вашего роутера.

Теория (кому просто нужно подобрать MTU, можете не читать, а сразу начинайте пользоваться программой)

Весь трафик в сети передается так называемыми пакетами данных. При коммутируемом доступе (это когда провод от провайдера вставлен в ваш компьютер) используется минимально возможная величина пакета в 576 байт, и это как раз и есть параметр MTU. Если у вас стоит роутер, то в нем выставлено значение по умолчанию, обычно 1492. Однако провайдер более жестко регламентирует MTU и чаще всего оно меньше. В итоге получается несоответствие величин, и роутеру для передачи приходится разбивать пакет на части, что называется фрагментацией. Мало того, что вместо одного такта на передачу одного пакета уходит два, но еще и имеет место потеря пакетов. Как следствие — тормозящий интернет, подолгу зависающие странички, медленно загружающееся видео и прочие-прочие «прелести».

Решается проблема достаточно просто: нужно просто позвонить в офис провайдера и задать вопрос о величине параметра, или же самостоятельно подобрать оптимальный параметр MTU, при котором пакеты не будут фрагментироваться. Первый вариант может оказаться и самым простым, и самым же сложным. Дело в том, что девушки, сидящие на телефонах, чаще всего не имеют даже понятия о том, какие параметры установлены в их сети. «Что, МТУ? Может, МТС? Нет, мы не офис МТС, мы у них не выставляем никакие параметры» — вот что, вероятнее всего, вы рискуете услышать в ответ на вопрос. Поэтому не тратим времени на переговоры, а сразу идем подбирать параметр MTU. Производится подбор путем передачи пакетов разной величины с запретом фрагментации. При тестах используется коммутируемый доступ, то есть без роутера .

Для подбора MTU используется пинг-тест командой вида ping ya.ru — f — l xxxx , где xxxx — значение MTU, ya.ru — пингуемый сервер (может быть любым из существующих) + параметры запрета фрагментации. Взяли максимальное значение, пинганули. Если потери составляют больше нулевого значения, значит, MTU неверный. Снижаем с шагом 8. И так далее, пока потери не составят 0%. Первое же значение MTU, при котором потери исчезнут, и будет оптимальным.

Но каждый раз набирать в командной строке этот набор символов не очень удобно, а скопировать и вставить из буфера не получится. Чтобы облегчить задачу, я написал маленькую программу, которая будет автоматически формировать команду для пинг-теста и выполнять его, постепенно снижая MTU. Вам нужно только следить за показателем потерь и нажимать кнопку Enter. Все остальное написано в окошке программы.

Когда значение MTU найдено, к нему надо прибавить 28 (на заголовки IP и ICMP) и ввести в соответствующее поле настроек роутера . У разных роутеров они разные, поэтому не спрашивайте меня, где ввести параметр у роутера какой-либо определенной модели. Всем добра!

Кто-то использует VPN для получения доступа к заблокированным сайтам, кто-то просто обходит ограничения по географическому положению. Бывает, что использование VPN может быть определено с помощью анализа TCP-соединения на основе размера MTU. Можно ли избежать этой ситуации? Сразу скажем: с VPN от — можно!

Мы рекомендуем использовать , так как в нашем VPN-клиенте изменение MTU возможно с помощью одного клика. Помимо этого в нашем клиенте ВПН есть и другие плюсы, такие как одновременный доступ с нескольких устройств, надежные каналы связи и отсутствие ограничений по скорости.

Начнём с технических деталей. Как же может быть определено использование VPN?

Значение параметра MTU

Maximum Transmission Unit или сокращено MTU - это максимальный объем передаваемой информации, отправляемой одним пакетом данных. Параметр MTU присваивается сетевым интерфейсам. Стандартным значением MTU для проводного соединения является число 1500. Параметр MTU в значении 1500 обозначает, что объём данных, передаваемый через подключение, не может превышать 1500 байт.

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

Как избежать обнаружения VPN

Для этого необходимо вручную поменять размер MTU. Если вы не желаете, чтобы вас деанонимизировали методом обнаружения нестандартного MTU, можно вручную на сервере выставить «mssfix 0», а на клиенте - «mssfix 0», что установит параметр MTU в значение 1500. Однако, при использовании UDP мы рекомендуем установить «mssfix 1330» в конфигурации клиента.