Что такое 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-адресами.
В итоге, выполнив такую команду, мы определим, требуется ли фрагментация пакета для доставки его к получателю.
Для примера, допустим, что поставщик услуг не пропускает пакеты, размер которых превышает 1024 байта. Тогда настройка выглядела бы следующим образом.
Запускаем командную строку (это классическое приложение 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.
Так конечно не корректно действовать. Устройство, не получив ответа на запрос не может продолжить работать.
Maximum transmission unit — Википедия
Распределение длин пакетов (кадров) в Ethernet сети крупного банка.Статистика собрана за 4 месяца в 2014 году. Включены как служебный, так и рабочий трафик.
В компьютерных сетях термин maximum transmission unit (MTU, англ.
L1 — media mtu (полный L2 кадр)
L2 — mtu, hw mtu, system mtu
L3 — ip mtu (ip заголовок учитывается), mtu routing
L4 — tcp mss
Внесистемные: tunnel mtu, vlan mtu, mpls mtu
Ограничение на максимальный размер кадра накладывается по нескольким причинам:
Значение MTU ограничено снизу как правило минимально допустимой длиной кадра. Минимальный размер кадра обычно связывают с коллизионным доменом (полудуплексный канал). Участники домена должны узнать о коллизии до окончания передачи кадра. Здесь также учитываются ограничения, накладываемые стандартом, на физические особенности тракта, например, длина, материалы.
Минимальный размер кадра по стандартам:
Fast Ethernet 100Base-T: 64 байта
Для высокопроизводительной сети причины, вызвавшие начальные ограничения MTU, устарели. В связи с этим для Ethernet был разработан стандарт Jumbo-кадров с увеличенным MTU.
Некоторые протоколы, например из группы протоколов ATM, оперируют ячейками фиксированной длины. Для них нет возможности изменить MTU. В некоторых случаях этот подход приводит к лучшему управлению сетевыми потоками.
Зависимость эффективной скорости от длин заголовков и MTU в Ethernet-сети. На графике предполагается, что шейпер работает с кадрами длиной до 1518 байт и не учитывает межкадровый интервал. Зависимость скорости от задержки (Bandwidth-delay product[en]) на графике не учитывается.Эффективная скорость — это средняя скорость передачи пользовательских данных (нагрузки) в потоке. Этот параметр зависит от соотношения длин служебных заголовков к нагрузке. Во многих случаях некоторый объём информации эффективнее передавать большими пакетами из-за меньших накладных расходов. Корректно сравнивать скорости потоков можно только для одного и того же объёма данных, который требуется передать единовременно.
Чем больше полезная нагрузка пакета по отношению к его заголовкам, тем выше скорость передачи полезной информации и процент использования канала (channel utilization). Поскольку MTU — это верхняя граница длины полезной нагрузки, то максимальная скорость достигается, когда нагрузки всех пакетов в потоке имеют длину, равную MTU. Для шейпинга существуют разные методы подсчёта длины Ethernet-кадра (англ. Ethernet frame) (без jumbo):
- до 1514 байт (1518 c тегом 802.1Q) на компьютерах общего назначения, где шейпер реализован программно. Заключительные байты (называются trailer[en] или footer) поля FCS обрабатываются сетевым адаптером и в операционную систему передаётся пакет без них.
- до 1518 байт (1522 c тегом 802.1Q) — Ethernet пакет, включая поле FCS, но не учитывая преамбулу.
- до 1538 байт (1542 c тегом 802.1Q) на специальных сетевых платформах.[2] Вместе с обычным Ethernet заголовком учитывается преамбула, FCS и межкадровый интервал. Этот способ подсчёта также нужно использовать, когда скорость ограничивается только протоколом передачи (в данном случае Ethernet) и не ограничивается провайдером.
Существуют несколько способов увеличения пропускной способности в контексте длин пакетов:
- Уменьшение межкадрового интервала. Для Fast Ethernet он по умолчанию равен 0,96 мкс за который могло бы быть передано 12 байт. Некоторые сетевые адаптеры в полнодуплексном режиме могут передавать и получать кадры с уменьшенным межкадровым интервалом.
- Сжатие заголовков. Пример реализации — Метод сжатия заголовков TCP/IP Якобсона.
- Сжатие нагрузки низкого уровня. Пример реализации — IP Payload Compression Protocol.
- Решение проблемы передачи небольших данных (tinygram problem) за счёт придерживания в буфере малых данных, чтобы отправить один большой пакет. Пример реализации — алгоритм Нейгла. Частный случай этой проблемы — «болтливые» протоколы, посылающие множество запросов там, где можно обойтись одним. Существуют программные и аппаратные решения, осуществляющие оптимизацию таких соединений, например у компании Riverbed Technology[en].
Хост знает значение MTU для собственного (возможно и своих соседей) интерфейса, но минимальное значение MTU для всех узлов сети обычно неизвестно. Другая потенциальная проблема заключается в том, что протоколы более высокого уровня могут создавать пакеты большего размера, не поддерживаемые другими узлами сети.

Для устранения этих проблем IP поддерживает фрагментацию, что позволяет разбивать дейтаграмму на меньшие кусочки, каждый из которых будет достаточно мал, чтобы беспрепятственно пройти через узел, из-за которого происходит фрагментация. Фрагменты пакетов маркируются таким образом, чтобы IP целевого хоста мог произвести сборку фрагментов в оригинальную дейтаграмму. Фрагментация пакетов имеет свои недостатки:
- Целевой хост должен получить все фрагменты для того, чтобы собрать пакет. Если хотя бы один фрагмент утерян — весь пакет должен быть отправлен заново.
- Как правило, фрагментацию выполняют более медленные процессоры, нежели те, что обрабатывают транзитный трафик. В некоторых случаях задержки, которые вызовет фрагментация всех пакетов, могут быть сочтены неприемлемыми.
- Увеличивается нагрузка на процессоры промежуточных маршрутизаторов и машины адресата.
- Увеличивается требование к памяти маршрутизатора, т.к. необходимо хранить в буфере все фрагменты IP-пакета.
- Некоторые межсетевые экраны могут блокировать фрагменты.
- Из-за копии IP-заголовка для каждого фрагмента неэффективно используется полоса пропускания.
- Протоколам маршрутизации, например OSPF, требуется согласованный MTU для корректной работы.
Для обозначения кадров, которые имеют ненормативный размер, в сетях Ethernet применяются следующие термины:
- RUNT — (коротышка) — кадр, размер которого менее 64 байтов (512 бит).
- LONG — (длинный) — кадр, размер которого лежит в пределах от 1518 до 6000 байтов.
- GIANT — (гигант) — кадр, размер которого превышает 6000 байтов.
Термин Path MTU означает наименьший MTU на пути следования пакета в сети.
Хотя фрагментация решает проблему несоответствия размеров пакетов и значения MTU, она ощутимо снижает производительность сетевых устройств. В связи с этим, в 1988 году была предложена альтернативная технология, названная Path MTU discovery (RFC 1191). Суть технологии заключается в том, что при соединении двух хостов устанавливается параметр DF (don’t fragment — не фрагментировать), который запрещает фрагментацию пакетов. Это приводит к тому, что узел, значение MTU которого меньше размера пакета, отклоняет передачу пакета и отправляет сообщение ICMP «необходима фрагментация, но установлен флаг её запрета (DF)». Хост-отправитель уменьшает размер пакета и отсылает его заново. Такая операция происходит до тех пор, пока пакет не будет достаточно мал, чтобы дойти до хоста-получателя без фрагментации.
Однако, и у этой технологии существуют потенциальные проблемы. Некоторые маршрутизаторы настраиваются администраторами на полное блокирование ICMP пакетов (это не очень грамотно, но может быть самым простым решением нескольких проблем безопасности). В результате, если размер пакета не соответствует значению MTU на определённом участке, пакет отбрасывается, а хост-отправитель не может получить информацию о значении MTU и не отправляет пакет заново. Поэтому соединение между хостами не устанавливается. Проблема получила название MTU Discovery Black Hole (RFC 2923), и протокол был модифицирован для детектирования таких маршрутизаторов. Одной из распространённых проблем при работе в сети, блокирующей ICMP пакеты, является работа в IRC, когда пользователь успешно проходит авторизацию, но не может получить так называемое MOTD (message of the day), в результате чего использование сети не представляется возможным.
Проблема представляет потенциальную опасность для любого PPPoE соединения, использующего MTU меньше типового (1500 байт).
Существует несколько вариантов решения этой проблемы. Самым простым, безусловно, является отмена фильтрации пакетов ICMP. Однако зачастую подобная операция находится вне компетенции пользователя. Поэтому проблему решают путём ручной настройки размера передаваемого пакета на шлюзе пользователя. Для этого меняют значение MSS (максимальный размер сегмента, то есть величина, меньшая MTU на 40 байт в случае протокола IPv4). При установке соединения хосты обмениваются информацией о максимальном размере сегмента, который каждый из них сможет принять. Поэтому, меняя значение MSS, заставляют оба хоста обмениваться пакетами, которые шлюз пользователя сможет заведомо принять без фрагментации.
Кроме того, существуют методы отмены бита DF с целью разрешения фрагментации. Однако метод корректировки MSS является предпочтительным.
В маршрутизаторах Cisco реализация PMTUD для туннеля поддерживает только TCP пакеты.[3]
- Maximum Receive Unit (MRU) — максимальный размер полезного блока данных протокола PPP.
- Maximum segment size (MSS) — максимальный размер полезного блока данных TCP сегмента.
- Protocol data unit[en] (PDU) — общий блок данных протокола (полезные данные + заголовки). Альтернативное не всегда корректное определение — весь блок данных определённого уровня сетевой модели.
- Service data unit[en] (SDU) — в терминологии OSI блок данных, который прошёл со своего уровня на нижний уровень модели и ещё не был инкапсулирован в PDU этого уровня.
Maximum Transmission Unit (MTU). Мифы и рифы / Habr
Maximum transmission unit (MTU) это максимальный объём данных, который может быть передан протоколом за одну итерацию. К примеру, Ethernet MTU равняется 1500, что означает, что максимальный объём данных, переносимый Ethernet фреймом не может превышать 1500 байт (без учёта Ethernet заголовка и FCS — Рис. 1).
Рис. 1
Давайте пробежимся с MTU по уровням OSI:
Layer 2.
Ethernet MTU является частным случаем Hardware MTU. Определение Hardware MTU вытекает из общего определения:
Hardware MTU — это максимальный размер пакета, который может быть передан интерфейсом за одну итерацию (по крайней мере значение указано в спецификациях устройства – по факту некоторые чипсеты поддерживают передачу больших размеров пакетов, чем заявлено). Поэтому если взглянуть на рисунок 1 в отрыве от Ethernet, то получим следующее:
Рис. 2
Замечание: Однако и тут не обойтись без оговорки. Как вы видите, HW MTU (Ethernet MTU в частности) не включает заголовок L2 в себя. Однако это справедливо для IOS и IOS XE, но для IOS XR и JunOS заголовок L2 включен в размер HW MTU – Рис. 3. Эта особенность может привезти к проблемам при установке OSPF neighborship между платформами под управлением IOS(XE) и IOS XR (OSPF требует совпадения MTU в Hello пакетах). Поэтому, при конфигурации MTU для Ethernet интерфейсов, на стороне IOS XR MTU должно быть на 14 байт больше (12 байт src mac+dst mac и 2 байт EtherType). К примеру, MTU в 1500 в Cisco IOS эквивалентно MTU в 1514 для IOS XR.
Рис. 3
Конфигурация и проверка.
Для того что бы изменить MTU на маршрутизаторах под управлением Cisco IOS используется команда интерфейс уровня:
R01(config)#interface gigabitEthernet 5/1
R01(config-if)#mtu 1532
R01(config-if)#exit
Проверяем:
R01#show interfaces gigabitEthernet 5/1
GigabitEthernet5/1 is up, line protocol is up (connected)
Hardware is C6k 1000Mb 802.3, address is 0008.e3ff.fde0 (bia 0008.e3ff.fde0)
Description: -- --
MTU 1532 bytes, BW 1000000 Kbit, DLY 10 usec,
reliability 255/255, txload 82/255, rxload 20/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 1000Mb/s, media type is LH
..... OUTPUT OMITTED
И
R01#show run interface gigabitEthernet 5/1
interface GigabitEthernet 5/1
description -- --
no switchport
mtu 1532
ip address 192.168.1.1 255.255.255.0
end
Layer3.
IP MTU определяет максимальный размер пакета с IP заголовком, который может быть передан на данном интерфейсе не прибегая к фрагментации. Зависимость между IP MTU и HW MTU описывается следующей формулой:
IP MTU ≤ HW MTU
Соответственно, когда на интерфейс попадает пакет, превосходящий установленное IP MTU, пакет либо подвергается фрагментации, либо, в случае установленного флага DF (DO NOT Fragment) в IP заголовке, дискардится, а устройство может сгенерировать ICMP сообщение Fragmentation Needed, используемое в механизме path MTU discovery (о нём позже), и отправить его назад отправителю исходного пакета.
Конфигурация и проверка.
Для изменения IP MTU на маршрутизаторах под управлением Cisco IOS используется команда интерфейс уровня:
R01(config)#interface gigabitEthernet 5/1
R01(config-if)#ip mtu 1532
R01(config-if)#exit
Проверяем:
show interfaces gigabitEthernet 5/1
GigabitEthernet 5/1is up, line protocol is up
Internet address is 192.168.1.1/24
Broadcast address is 255.255.255.255
Address determined by non-volatile memory
MTU is 1532 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Multicast reserved groups joined: 224.0.0.5 224.0.0.2
Outgoing access list is not set
Inbound access list is not set
..... OUTPUT OMITTED
И
R01#show run interface gigabitEthernet 5/1
interface GigabitEthernet 5/1
description -- --
no switchport
mtu 1532
ip address 192.168.1.1 255.255.255.0
no ip redirects
no ip unreachables
no ip proxy-arp
end
Вот те раз. Команда ip mtu не видна в show run. Да тут есть интересный нюанс – если ip mtu совпадает с hw mtu, то в выводе show run будет отображаться только hw mtu. Если значения разные то отображаются оба.
Layer 4.
TCP Maximum Segment Size (MSS) определяет максимальный размер TCP сегмента (без TCP заголовка!), который может быть использован (отправлен/принят) в ходе TCP сессии. Анонс (именно анонс, не хендшейк) размеров TCP MSS происходит во время установки TCP сессии – принимающая сторона анонсирует стороне отправляющей какой размер TCP сегмент она может принять. Соответственно размер TCP MSS может различаться в рамках одной TCP сессии в зависимости от направления.
Рис. 4
Сторона, производящая анонс, высчитывает значение TCP MSS для себя по следующей формуле:TCM MSS = (IP MTU – [IPHDR + TCPHDR])
Конфигурация.
Тут у нас возможны два сценария – маршрутизатор является транзитным или участником TCP сессии.
1) Транзитное устройство:
Для предотвращения дропа пакетов промежуточным устройством в случае наличия линка с малым MTU, маршрутизатор будет прослушивать TCP SYN пакеты и подменять значения MSS анонсируемые конечным устройством. Что приведет к отправке пакетов меньшей величины конечным устройством и вуаля – проблема с дропами на линке с малым MTU упреждена.
R01(config)#interface gigabitEthernet 5/1
R01(config-if)#ip tcp adjust-mss?
<500-1460> Maximum segment size in bytes
2) Терминирующее устройство:
Здесь всё просто – маршрутизатор является участником TCP сессии и мы можем установить принудительно, размер MSS который он будет анонсировать.
R01(config)#ip tcp mss?
<0-10000> MSS
Кажется всё? Нет, не всё. Вспоминаем про MPLS. Вспоминаем… Закончили вспоминать, переходим к рассмотрению.
Layer 2,5. MPLS.
Рис. 5
MPLS MTU определяет максимальный размер маркированного (кто знает как лучше переводиться Labeled прошу подсказать в комментах) IP пакета. В случае, если размер маркированного пакета превышает MPLS MTU, то пакет либо фрагментируется, либо, при наличии установленного в IP заголовка флага с DF bit, дропается (пока логика как и при превышении IP MTU), с возможной отправкой ICMP сообщения Fragmentation Needed.
Замечание: Вот тут дела обстоят немного по другому, по сравнению c IP MTU. В MPLS сети промежуточный узел может и не иметь маршрута к отправителю пакета, поэтому вместо того что бы слать ICMP сообщение отправителю напрямую, оно инкапсулируется с тем же стеком меток (label stack), что и исходный пакет, и отправляется по его же пути следования. Достигая Egress LSR (конечного MPLS маршрутизатора для данного LSP – за ним уже IP сеть без меток), который знает ip маршруты к узлу отправителя, ICMP сообщение Fragmentation Needed «разворачивается» им, инкапсулируется необходимыми заголовками и отправляется назад в MPLS сеть к отправителю оригинального пакета. Поведение аналогично с TTL Expired, да и в целом скорее относиться к теме MPLS, а не MTU. Поэтому кто не знаком с процессом — www.google.kg/?gws_rd=ssl#q=mpls+ttl+expired
Что здесь ещё интересного? MPLS MTU может быть больше HW MTU (поэтому на Рис. 3 HW MTU частично обозначено пунктиром). При этом IOS выдаст варнинг, но в большинстве случаев будет работать (зависит от чипсета интерфейса) и успешно пропускать по крайней мере baby-giant фреймы. А в иной раз можно получить дроп пакетов, повреждение данных, и сто лет без урожая.
Конфигурация и проверка.
R01(config)#interface gigabitEthernet 5/1
R01(config-if)#mpls mtu 1540
R01(config-if)#exit
Проверяем:
R01#show mpls interfaces gigabitEthernet 5/1 detail
Interface gigabitEthernet 5/1:
IP labeling enabled (ldp):
Interface config
LSP Tunnel labeling not enabled
BGP labeling not enabled
MPLS operational
MTU = 1540
Замечание: MPLS MTU отображается в running конфиге, также как и IP MTU — только в случае, если значение отличается от HW MTU. Но, в отличие от IP MTU, любое изменение HW MTU меняет значение MPLS MTU до значения HW MTU (IP MTU это действие не меняет).
MTU на коммутаторах Cisco.
Коммутаторы не поддерживают выставление MTU на каждом интерфейсе в отдельности (речь о switchport`ах и Vlan интерфейсах, для multilayer коммутаторов с routed портами применимы настройки аналогичные маршрутизаторам).Изменить текущие настройки MTU для портов коммутатора можно 3-мя спосабами, применимыми в зависимости от типа порта:
SW01(config)#system mtu 1600
— изменение L2 MTU на FastEthernet портахSW01(config)#system mtu jumbo 1600
— изменение L2 MTU на GigabitEthernet и Ten GigabitEthernet портахSW01(config)#system mtu routing 1600
— изменение L3 MTU на маршрутизируемых интерфейсах
Проверяем:
SW01#show system mtu
System MTU size is 1600 bytes
System Jumbo MTU size is 1600 bytes
Routing MTU size is 1600 bytes
На заметку администратору.
Так как основным методом проверки MTU и по сей день является команда PING, с выставленным df-bit и рамером пакета, приведу в заключение пару полезных триков:
1) Для того, что бы найти минимальный MTU (забавное сочетание) на сети можно использовать расширенную команду ping, причём как c конечных станций/серверов так и с оборудования Cisco. Пропингуем с маршрутизатора R01 маршрутизатор R02 с выставленным df-bit, c начальным размером пакета в 1000 байт, конечным 1500 байт, и шагом 100 байт. Кол-во повторений 2.R01#ping Protocol [ip]: Target IP address: 192.168.12.2 Repeat count [5]: 2 Datagram size [100]: Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 192.168.12.1 Type of service [0]: Set DF bit in IP header? [no]: y Validate reply data? [no]: Data pattern [0xABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: Sweep range of sizes [n]: y Sweep min size [36]: 1000 Sweep max size [18024]: 1500 Sweep interval [1]: 100 Type escape sequence to abort. Sending 12, [1000..1500]-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds: Packet sent with a source address of 192.168.12.1 Packet sent with the DF bit set !!!!..!!!!.. Success rate is 66 percent (8/12), round-trip min/avg/max = 4/24/56 ms
Как видите, проходит только 6 ICMP пакетов размером 1000, 1100, 1200, 1300 байт
Начиная с 1400 байт и выше пакеты не проходят. Следовательно, минимальное MTU между двумя точками — 1300 и 1400, что можно уточнить ещё за несколько циклов, ужимая диапазон и умешьшая шаг.
2) Частая проблема возникающая при взаимодействии сетевых и системных администраторов — с конечного устройства проходят пакеты одного размера, с ближнего к нему сетевого устройства большего размера. Причина лежит в том, что операционные системы (в частности Windows), когда вы задаёте размер пакета команде ping, воспринимают это значение как чистый paiload — без заголовков ICMP и IP, т.е. при указании ping 192.168.1.2 -l 100 система будет генерировать пакеты величиной 128 байт, а не 100 (8 байт ICMP заголовок и 20 байт IP). При указании же размера ICMP пакета на сетевом оборудовании Cisco указываемый вами размер включает уже оба заголовка. Поэтому на дефолтном Ethernet линке пинги с Windows OS (к примеру) покажут 1472 байт максимальный размер пакета проходящий без фрагментации, а Cisco 1500 байт. JunOS, кстати ведет себя также как и операционные системы (не включает заголовки)
На этом всё. Есть ещё в закромах старый драфт статьи по размерам фреймов и их эволюции, где описаны понятия Jumbo Frame, Baby-Giant Frame, встречающиеся в этой статье. Если посчитаете нужным, могу доработать и выложить и её.
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 менять не стоит. Параметры, установленные провайдером или производителем маршрутизатора, вполне подходят для подавляющего большинства пользователей.
Роутер для раздачи проводного интернета по Wi-Fi установлен практически в каждой современной квартире. Чаще всего пользователи настраивают маршрутизатор единожды, используя помощник по автоматической настройке, после чего не изменяя опции устройства. Подобная позиция не всегда правильная, и зачастую автоматическая настройка Wi-Fi роутера не позволяет добиться максимально качественного соединения с интернетом. Одной из опций в настройках маршрутизатора, которой пользователи не уделяют должного внимания, является MTU. В рамках данной статьи рассмотрим, что такое MTU в настройках роутера, и какое значение нужно выставить для оптимальной работы интернета.
Что такое MTU в настройках роутера
MTU (maximum transmission unit) – это максимальный уровень передачи данных в сети. Говоря другими словами, MTU является протоколом канального типа, который определяет максимальное число битов с полезной информацией, помещающихся в один сетевой пакет. Данные пакеты сведений передаются от провайдера к пользователю, то есть от серверов к клиенту. В пакете данные передаются без фрагментации, за счет чего удается увеличить скорость передачи данных по защищенным каналам связи.
Если не вдаваться в подробности, то можно сказать, что параметр MTU отвечает за качество передачи информации от провайдера к компьютеру пользователя. При этом под качеством понимается не только исключение вероятности потери данных при передаче, но и скорость.
Почему нужно ограничить размер MTU в настройках роутера
В большинстве современных роутеров размер передаваемых MTU определяется автоматически, и делается это не всегда правильно. Пользователям, которые заботятся о качестве и скорости соединения, рекомендуется самостоятельно ограничить размер MTU, определив его оптимальное значение и установив его в настройках маршрутизатора.
Благодаря правильно выставленным настройкам MTU удается:
- Расширить канал передачи, за счет чего им одновременно смогут пользоваться различные службы, программы, процессы и так далее;
- Избавить канал от лишней нагрузки, что увеличит скорость передачи данных;
- Снизить практически до нуля шанс получения «испорченных пакетов» с данными при передаче по сети.
В целом, при правильно выставленных ограничениях MTU удается рационально использовать предлагаемый провайдером канал связи, с минимальным риском потери информации.
Правильная настройка MTU необходима, если имеются проблемы с интернетом на компьютере, например: долго загружаются сайты, высокий пинг при подключении к сторонним серверам, загрузка файлов из интернета время от времени беспричинно обрывается и возникают другие проблемы.
Какое значение MTU нужно выставить
Чтобы определить оптимальное значение MTU, нужно провести тестирование сети, что можно сделать с компьютера под управлением Windows. В ходе тестирования потребуется определить, как много времени уходит для передачи и возврата пакета с данными от используемого компьютера до сервера. При этом в ходе теста нужно будет варьировать количество байт информации, содержащейся в пакете. Снижать число байт потребуется до того момента, пока не удастся полностью исключить фрагментацию пакета.
Выполните тестирование сети следующим образом:
- Запустите командную строку Windows от имени администратора;
- Далее введите тестовую команду, например, для отправки запроса на сервер нашего сайта okeygeek. Выглядеть команда будет следующим образом:
В данной команде заменит XXXX на значение MTU. Как было отмечено выше, данное значение необходимо варьировать, в поиске идеального. Рекомендуем начать с MTU в 1500, то есть первой командой будет:


Обратите внимание: Чаще всего оптимальное значение MTU находится в пределах от 1500 до 1400 байт.
Определившись с оптимальным значением MTU, нужно изменить данную опцию в настройках роутера, установив определенное количество байт, но с небольшим изменением. Дело в том, что конечная величина MTU будет отличаться от определенной в прошлом шаге, поскольку потребуются дополнительные байты для формирования пакета, которые уйдут на его заголовок и запрос.
В среднем, на заголовок и запрос требуется 28 байт. Соответственно, идеальное значение в рассматриваемом случае будет:
1472 байта + 28 байт = 1500 байт
Значение 1500 потребуется прописывать в настройках роутера.
Важно отметить, что максимально допустимые значения напрямую зависят от протокола передачи данных, который используется:
- PPPoE – 1420 байт;
- Dynamic/Static IP – 1500 байт;
- L2TP – 1460 байт.
Значение, определенное выше в ходе расчетов, не должно превышать максимально допустимое. Если оно его превышает, возникнут еще более серьезные проблемы с работой интернета.
Когда постоянно происходят сбои при подключении к интернету, многие идут на решительные меры. Они меняют роутер, меняют провайдера. Одна из причин возможных неполадок – не корректно выставленное значение 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.
Так конечно не корректно действовать. Устройство, не получив ответа на запрос не может продолжить работать.
Рекомендуем к прочтению
что это такое и каково его значение
Решение проблемы скорости интернета часто не лежит на поверхности. Ниже я расскажу о важном для работы сети показателе: MTU в роутере что это за параметр, зачем его менять и как это грамотно сделать. Зачастую даже профессионалы могут не обратить внимание на этот способ устранения неполадки, когда у вас не работают отдельные сайты или скорость подключения далека от стабильной. «Совместимость» всего вашего оборудования и установленных программ и прошивок – дело случая, как бы странно это не звучало. Особенно если вы используете девайсы и «начинку» разных лет выпуска. Ниже – всё, что вам нужно знать об MTU в роутере.
Что такое MTU в роутере
Параметр MTU расшифровывается как Maximum Transmission Unit. Проще говоря, это максимальный размер пакета данных, который передаёт роутер.
Когда данные передаются по компьютерным сетям, они не перемещаются непрерывным потоком. Информация упорядоченно делится на отдельные пакеты данных. Роутер проверяет каждый пакет, используя математические вычисления – сверяя «контрольные суммы». Если случается сбой, то роутер запрашивает конкретный пакет данных заново, и повторяет это действие, пока не соберёт целостный блок информации. Всё это происходит практически со скоростью света – поэтому мы не замечаем того, что данные фрагментированы. Но вот процессор, прошивка роутера, браузер и прочее «железо» и «софт» к этому крайне чувствительны.
Неправильный размер пакета данных, то есть параметра MTU, может «сбить с толку» ваш компьютер, и вы не сможете нормально пользоваться интернетом.
Зачем менять MTU
Надписи в настройках роутера говорят о том, что менять MTU вручную не стоит. Отчасти это правда: как я сказал выше, неверный параметр может привести к большим проблемам при передаче данных. Но если вы перепробовали другие способы решения проблемы, вроде перезагрузки роутера, изменения параметров DHCP, консультаций со службой поддержки, а ваше подключение всё так же нестабильно, то стоит проверить MTU.
Какие проблемы прямо указывают на то, что нужно изменить MTU:
- постоянные сбои при подключении к интернету, причём на всех устройствах, подключённых к одному роутеру;
- медленная или нестабильная скорость подгрузки сайтов;
- отдельные сайты вообще не открываются, или открываются очень медленно.
Как правильно изменить MTU
Для начала найдём параметр в настройках роутера, а затем посмотрим, на какие цифры его можно изменить.
- Способ входа в панель управления роутера обычно указан на наклейке на дне аппарата. Стандартный способ такой: ввести в адресной строке браузера 192.168.1.1 или 192.168.0.1. Далее ввести логин и пароль: «admin» и «admin».
- Обычно MTU можно найти в пункте Сеть – WAN.
- Вы сможете ввести значение MTU в роутере в текстовое поле, и после этого сохранить изменения и перезагрузить роутер.
Теперь о том, какие цифры можно указать в качестве значения MTU. Это стоит делать грамотно. Для разных типов подключения есть стандарты MTU – максимальные числа, которые нельзя превышать:
- Static / Dynamic IP – 1500;
- L2TP – 1460;
- PPPoE – 1420.
Самый лучший вариант для начала – пообщаться с поддержкой провайдера. Спросите оператора по телефону, какой MTU в роутере подходит для вашей ситуации. Возможно, вам нужно будет назвать модель роутера и тип протокола, который вы используете. Он отображён на этой же странице настроек WAN.
Но если ответ оператора вам не помог, то вы можете определить размер MTU сами, «опытным путём».
Как узнать параметры?
Шаг 1. Зайдите в командную строку как администратор. Проще всего ввести «cmd» в поиске «Пуска», нажать правой кнопкой на значок «cmd» в результатах поиска и выбрать в меню, которое появилось – «В режиме администратора».
Шаг 2. Теперь нужно отправлять запрос на какой-либо внешний сайт, меняя его размер. Введите команду «ping -f -l 1472 yandex.ru». Что это за команда?
- Адрес сайта можно менять, он ни на что не влияет. Хороший вариант – написать вместо адреса Яндекса «1.1.1.1» или «8.8.8.8», тем более если вы находитесь в месте, где Яндекс сейчас недоступен.
- Число перед адресом – это размер пакета данных. Это как раз цель нашего эксперимента. Вы будете уменьшать и увеличивать его.
- Первые параметры менять не нужно. Ping – это команда на проверку «пути к сайту», откликается ли сайт. Но в данном случае – вместе с указанием, что отправляемый нами пакет данных нельзя делить на части.
Именно это позволит нам опытным путём определить нужное число. Данная операция совершенно безопасна для компьютера.
Шаг 3. Вы получили ответ от сайта, на который отправляли команду: сколько пакетов отправлено, получено и потеряно. Нужно менять число в запросе и оправлять его снова и снова.
Ваша цель такая:
- Сначала проверить максимальное число для вашего протокола (Static / Dynamic IP, L2TP, PPPoE) – я указывал их выше. Но обязательно вычтите из этой цифры 28, и проверяйте именно этот результат. Служебные байты длиной 28 будут добавлены к данным в любом случае, независимо от того, что мы введём.
- Если такой размер пакета приводит к ошибке «Требуется фрагментация пакета, но установлен запрещающий флаг», или же количество потерянных пакетов слишком велико, то нужно постепенно уменьшать число и повторять запрос.
- Найдите ту грань, за которой вы получаете ошибку, а перед которой пакет данных отправляется «на ура». Именно это число – то, что мы искали.
Шаг 4. Добавьте к полученному числу 28. Например, если тест был успешен при 996, то мы получим 996 + 28 = 1024 байта. Введите полученное число в поле MTU в открытом ранее окне настроек роутера.
Шаг 5. Сохраните настройки и перезагрузите маршрутизатор.
Шаг 6. Хорошим вариантом будет дополнительно уменьшить пакет данных на самом компьютере. Этого можно и не делать, однако тогда всё равно возможны «подтормаживания» и ошибки. Для этого проделайте такие действия:
- В открытом окне командной строки введите «netsh interface ipv4 show subinterfaces». Нажмите Enter.
- В результате выполнения команды найдите строчку Ethernet и соответствующий ему MTU. Если он не совпадает с тем, который мы ввели в параметры роутера, то его нужно заменить.
- Для этого введите команду «netsh interface ipv4 set subinterface “Ethernet” mtu=1024 store=persistent», где укажите то же число, что и ранее в настройках роутера.
- Введите первую команду, чтобы проверить, что число установлено правильно.
- Перезагрузите роутер и компьютер.
Данная настройка должна очень чётко отладить работу сетевых протоколов. Мы с вами забрались достаточно глубоко в настройки сети и не только узнали, что такое MTU в роутере, а и выполнили всё на высоком уровне, грамотно подобрав для компьютера требуемый для него размер пакетов данных. Теперь можете наслаждаться работой интернета. А если проблема осталась, то вы можете быть совершенно точно уверены, что она не заключается в параметре MTU.
Оптимальный размер MTU — снижаем нагрузку на сеть
Автор Андрей Смирнов На чтение 4 мин. Просмотров 2.9k. Опубликовано
В тот момент, когда хост должен передавать данные через интерфейс, он ссылается на максимальный размер полезного блока данных для одного пакета Maximum Transmission Unit, чтобы определить, сколько данных он может поместить в каждый пакет. Например, интерфейсы Ethernet имеют MTU по умолчанию 1500 байт, не включая заголовок или трейлер Ethernet. Это означает, что хост, которому необходимо отправить данные по TCP-протоколу, обычно будет использовать первые 20 из этих 1500 байтов для заголовка IP, следующие 20 для заголовка TCP, а оставшиеся 1460 байт для полезной нагрузки. Инкапсуляция данных в пакеты максимального размера, подобные этому, позволяет потреблять полосу пропускания наиболее эффективно, минимизируя использование служебного трафика протокола передачи данных. Оптимальный размер MTU — ключ к эффективному использованию сетевых каналов передачи данных и снижению нагрузки на сетевое оборудование.
Фрагментация пакетов 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:
https://14bytes.ru/files/mturoute.exe
Привожу пример определения 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?
В компьютерных сетях термин Maximum Transmission Unit (MTU) используется для определения максимального размера блока (в байтах), который может быть передан на канальном уровне сетевой модели OSI.
Значения MTU зависят от коммуникационного интерфейса (сетевая плата, последовательный порт, и т. д.).
Значение MTU может быть определено стандартом (например для Ethernet), либо может выбираться в момент установки соединения (обычно в случае прямых подключений точка-точка). Чем выше значение MTU, тем меньше заголовков передаётся по сети — а значит, выше пропускная способность. Однако медленные интерфейсы могут передавать большой пакет значительное время, увеличивая время ожидания для других пакетов. К примеру, пакет размером в 1500 байт, максимально допустимый для Ethernet, может «подвесить» 14.4k модем примерно на одну секунду (1500*8=12000 бит, 14.4*1024=14745.6 бит/с, время передачи: 12000/14745.6 = 0.81 сек).
Таблица основных значений MTU
IP (Интернет протокол)
![]() | Проверить информацию. Необходимо проверить точность фактов и достоверность сведений, изложенных в этой статье. |
Интернет протокол был разработан для использования в различных сетевых технологиях, каждая из которых может оперировать пакетами различных размеров. Если говорить об IP с точки зрения MTU, можно обнаружить несколько проблем. Во-первых, если хост будет знать значение MTU для собственного (возможно и своих соседей) интерфейса, минимальное значение MTU для всех узлов сети будет неизвестно. Другая потенциальная проблема заключается в том, что протоколы более высокого уровня могут создавать пакеты большего размера, не поддерживаемые другими узлами сети. Очевидно, что скорость передачи будет тем больше, чем больше будет размер пакета. Однако не все узлы в сети могут передавать информацию с максимальной полезной нагрузкой.

Для устранения этих проблем IP поддерживает фрагментацию, что позволяет разбивать датаграмму на меньшие кусочки, каждый из которых будет достаточно мал, чтобы беспрепятственно пройти через узел, из-за которого происходит фрагментация. Процесс фрагментации происходит на уровне IP (третий уровень сетевой модели OSI), фрагменты пакетов маркируются таким образом, чтобы IP целевого хоста мог произвести сборку фрагментов в оригинальную датаграмму. Подобный метод предполагает некоторые недостатки:
- Целевой хост должен получить все фрагменты для того, чтобы собрать пакет. Если хотя бы один фрагмент утерян — весь пакет должен быть отправлен заново.
- Когда значение MTU определенного узла меньше размера большинства пакетов, которые должны быть переданы, почти все пакеты должны пройти фрагментацию. В некоторых случаях задержки, которые вызовет фрагментация всех пакетов, могут быть сочтены неприемлемыми.
- Увеличивается нагрузка на CPU промежуточных маршрутизаторов
- Увеличивается требование к памяти маршрутизатора, т.к необходимо хранить в буфере все фрагменты IP пакета
- Некоторые простые фаерволы блокируют все фрагменты, т.к в них не содержится информация о более высоких уровнях(TCP/UDP)
- Из-за оверхэда(копия IP-заголовка для каждого фрагмента) не эффективно используется полоса пропускания
- Не существует простого способа определения MTU для всех интерфейсов сети на пути к целевому хосту.
Технология Path MTU discovery
Хотя фрагментация решает проблему несоответствия размеров пакетов и значения MTU, она ощутимо снижает производительность сетевых устройств. В связи с этим, в 1988 году была предложена альтернативная технология, названная Path MTU discovery (RFC 1191). Суть технологии заключается в том, что при соединении двух хостов устанавливается параметр DF (don’t fragment, не фрагментировать), который запрещает фрагментацию пакетов. Это приводит к тому, что узел, значение MTU которого меньше размера пакета, отклоняет передачу пакета и отправляет сообщение ICMP (Internet Control Message Protocol) типа Destination is unreachable (Точка назначения недоступна). К сообщению об ошибке прилагается значение MTU узла. Хост-отправитель уменьшает размер пакета и отсылает его заново. Такая операция происходит до тех пор, пока пакет не будет достаточно мал, чтобы дойти до хоста-получателя без фрагментации.
Однако, и у этой технологии существуют потенциальные проблемы. Всё большее число систем настраиваются администраторами на блокирование ICMP пакетов (в том числе с целью предотвращения отказа в обслуживании). В результате, если размер пакета не соответствует значению MTU на определённом участке, пакет отбрасывается, а хост-отправитель не может получить информацию о значении MTU и не отправляет пакет заново. Поэтому соединение между хостами не устанавливается. Проблема получила название MTU Discovery Black Hole (RFC 2923). Одной из распространённых проблем при работе в сети, блокирующей ICMP пакеты, является работа в IRC, когда пользователь успешно проходит авторизацию, но не может получить так называемое MOTD (message of the day), в результате чего использование сети не представляется возможным.
Проблема представляет потенциальную опасность для любого PPPoE соединения, использующего MTU меньше типового (1500 байт).
Существует несколько вариантов решения этой проблемы. Самым простым, безусловно, является отмена фильтрации пакетов ICMP. Однако зачастую подобная операция находится вне компетенции пользователя. Поэтому проблему решают путем ручной настройки размера передаваемого пакета на шлюзе пользователя. Для этого меняют значение MSS (максимальный размер сегмента, то есть величина, меньшая MTU на 40 байт в случае протокола IPv4). При установке соединения хосты обмениваются информацией о максимальном размере сегмента, который каждый из них сможет принять. Поэтому, меняя значение MSS, заставляют оба хоста обмениваться пакетами, которые шлюз пользователя сможет заведомо принять без фрагментации.
Кроме того, существуют методы отмены бита DF с целью разрешения фрагментации. Однако метод корректировки MSS является предпочтительным.