Какой оптимальный размер MTU для скорости 1 Гбитс
Содержание:
- Находим правильный размер MTU для сети
- Возможности провайдера
- Расчет максимального размера MTU пакета с помощью трассировки
- MTU в роутере что это Увеличиваем скорость Интернета
- Тюнингуем uTorrent
- Меняем MTU для PPPoE
- Программное обеспечение в помощь
- Определение MTU вручную
- Предел IP настройки MTU у Ростелекома
- Отличный ping-показатель
- Устанавливаем значениеMTU
- Что такое PMTUD
Находим правильный размер MTU для сети
Зачастую у пользователей роутеров tp-link, d-link, asus и других, в настройках маршрутизатора указано неверное значение mtu. Из-за этого могут возникать:
- Проблемы с воспроизведением потокового видео;
- Ошибки во время скачивания файлов;
- Просроченные сертификаты безопасности для некоторых сайтов;
- Общая медленная работа Интернета.
Рис. 1 – проблемы с Интернетом
Если вы обнаружили, что в последнее время соединение с сетью стало слишком медленным и привычные сайты больше не открываются или происходит их «вечная» загрузка, необходимо настроить mtu.
Клиентский компьютер не может открыть сайт, если значение mtu больше максимального значения пакета данных, который передается через протокол.
Детальнее о настройке разнообразных роутеров читайте в нашем материале: Как войти в настройки роутера — TP-Link, D-Link, Asus, Zyxel Keenetic, Ростелеком
Каждый маршрутизатор может изменять число mtu автоматически. Иногда такая возможность действует не в пользу скорости сети, поэтому вы можете изменить значение вручную.
Определить «идеальное» число mtu можно с помощью проведения тестирования под названием Ping Test .
Пинг (ping — задержка)
– это время, которое необходимо одному пакету данных, отосланному с вашего ПК, для прохождения до другого ПК (или сервера) и его возврата обратно на компьютер, с которого он был отправлен.
Вам также может быть интересно:
В процессе пинг теста следует отправлять повторяющиеся запросы, периодически снижая размер пакета данных.
Это нужно делать до полного прекращения фрагментации пакета. В результате вы узнаете наиболее точное число mtu, которое необходимо для быстрой работы конкретной сети.
Процесс тестирования:
- Зайдите в командную строку;
- Введите указанную на рисунке ниже команду для соединения с доменом;
Рис. 2 – подключение к домену тестирования
Заметьте! XХXX – это значение MTU. Во время тестирования изменяйте его в пределах от 1500 до 500 с шагом 10 байт. Успешный результат – это когда процент потерь не превышает 1%.
В результате правильно выполнения команды появятся строки со статистикой пинга (количество отправленных и полученных пакетов, приблизительное время их передачи в миллисекундах, процент потерь);
Рис. 3 – результат успешной команды
- Теперь следует еще раз повторить эту же команду. Выполняйте ее, пропустив одну строку;
- Повторяйте тест каждый раз с новым значением mtu, пока не получите наилучший результат передачи пакетов с минимальным процентом утрат. Запомните цифры mtu – именно это значение нам понадобится в дальнейшей настройке mtu.
Рис. 4 – найденное в результате тестирования наилучшее значение для MTU
Возможности провайдера
В первую очередь нужно понимать, какой параметр Maximum Transmission Unit установлен у провайдера. Если услуга сети интернет предоставляется посредством подачи кабеля «витая пара», без каких-либо сетевых настроек, проблем не будет. А вот в случаях использования защищённых каналов PPPoE или нужно быть готовыми, что без настройки роутера и компьютера не обойтись
Вариантов определения правильного размера пакета, как и устранений проблемы, очень много, и внимание будет уделено нескольким, самым эффективным способам. Естественно, можно попытаться у провайдера в телефонном режиме выяснить параметр MTU и прописать его на роутере, но это слишком просто и, скорее всего, невозможно из-за низкой компетенции оператора
Расчет максимального размера 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? Чтобы передача соединения была быстрой и эффективной, данные передаются не по одному байту, а целыми пакетами. Компьютер распаковывает пакет и загружает информацию, к примеру, интернет-страницу, игру и т. п.
Мало кто из обычных пользователей задавался вопросом, что такое MTU и для чего он указывается в настройках
Почему стоит проверять и изменять такой параметр? Часто бывает, что пользователь подключает интернет, и, хотя заявленная скорость соединения должна быть высокой, браузер медленно грузит сайт или игру, или же вовсе не хочет заходить на некоторые страницы. При этом интернет не пропадает целиком, а плохая загрузка касается отдельных сайтов или приложений.
Чтобы справиться с проблемой, рекомендуется изменить настройки DNS. Сделать это можно через Панель управления. Откройте раздел с интернет-подключениями, выберите свою сеть и просмотрите её свойства. В них вы найдёте компоненты, среди которых следует выбрать протокол Интернета TCP/IP и вручную вписать DNS адреса — 8.8.8.8 и во второй строке 8.8.4.4.
Если вы попробовали поменять значение DNS, но это не помогло, стоит обратиться к настройкам размера пакетов данных. Когда у провайдера установлено одно число этого параметра, а в вашем роутере — другое, то скорость падает,и соединение работает плохо . На компьютере его менять не нужно, поскольку в последних версиях Windows система сама определяет оптимальное для работы сети значение.
MTU в роутере что это Увеличиваем скорость Интернета
При настройке модема роутером, может быть слишком жёстко настроили фильтрацию пакетов или, что маловероятно, закрытием эхо — ответов Вашим провайдером. Либо введённый нами адрес не корректен.
· Если получили ответ такого формата:
ping -f -l 1492 xxx (любой узел)
Обмен пакетами с xxx с 1492 байт данных:
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Статистика Ping для xxx:
Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь)
То пробуем уменьшать размер MTU, подбирая оптимальное число, при котором получим ответ из первого примера.
Т.е. ping -f -l 1492 www.ya.ru (как пример, адрес может быть другим)
Флаг -f указывает, что фрагментировать этот пакет нельзя, поэтому если никто по пути не блокирует icmp, вернется сообщение об ошибке.
Методом перебора значения в ключе -l, можно узнать максимальное значение mtu.
Корректировка параметра MTU под наши условия:
Первый способ.
Нажмите «Пуск», «Выполнить», введите regedit, затем нажмите OK, чтобы запустить редактор реестра.
Далееоткрываем:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325—11CE-BFC1—08002bE10318}
В этой ветви будут содержаться подразделы 0001, 0002, и т.д. Внимательно просмотрите содержимое этих подразделов и остановитесь на том, у которого значение параметра «DriverDesc» аналогично названию Вашей сетевой карты, через которую Вы подключены к интернету.
В этом подразделе, найдите и запомните номер «NetCfgInstanceId».
Теперь найдите ЭТОТ номер в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
Сделайте двойной щелчок на параметре «MTU» и введите Ваше полученное значение (например 1400 — десятичное)
Закройте редактор реестра и перезагрузите компьютер.
Если параметра «MTU» нет, создайте его. Для этого выберите меню «Правка» вверху, щелкните «Создать», затем «DWORD». Введите «MTU» и нажмите «ENTER». Сделайте двойной щелчок на параметре «MTU» и введите значение «1400» (десятичное), после чего нажмите «OK».
Второй способ.
Скачиваем программу «SGTCPOptimizer» по данной ссылке. Размер её 596 кб. Программа бесплатная.
Запускаем программу, заходим на вкладку «LargestMTU», в поле «URL» пишем интересующий нас сайт или оставляем адрес по умолчанию, нажимаем «START», на запрос отвечаем «да» и смотрим процесс, а затем и результат.
Переходим в первое меню «GeneralSettings», нажимаем на кнопочку внизу страницы- «Customsettings», тем самым, выбрав выборочные (заказные) настройки. В поле «NetworkAdapterselection» выбираем наш интерфейс, через который подключены к Интернету, в поле «MTU» вводим наш параметр MTU, полученный на предыдущей вкладке программы. Применяем сделанные настройки кнопкой «Applychanges».
Программа предложит Вам сделать резервную копию изменений, не задумывайтесь – делайте всегда!
Всё, перегружаем машину, смотрим результат.
Примечание.
Работоспособность программы тестировалось под ОС WindowsXPSP2.
По заявлению производителей, программа поддерживает Windows-9x/ME/2K/XP/XP-SP2/2k3.
По отзывам пользователей форума www.es-nso.ru/forumданное П.О. работает и под О.С. Vista.
Существуют функционально аналогичные программы, возможно ничем не хуже, может и лучше описанной выше.
Например: TweakDUN, MTU-Speed, DrTCP.
Полезные ссылки по теме:
http://support.microsoft.com/kb/314053/ru — Параметры конфигурации TCP/IP и NBT для WindowsXP;
http://www.speedguide.net/analyzer.php — страница на которой Вы можете проверить свои параметры, такие как IP адрес, MTU, MSS, RWIN и т.д., в том числе получить совет по оптимизации своего соединения;
P.S.
Отмечу, что на момент написание данной статьи, большая часть модемов не была замечена в некорректной работе с параметром MTU, да и возможность изменения этого параметра присутствует практически у всех модемов, либо через WEB интерфейс, либо через telnet. Исключение составляет модем ZTE 831 Series. Остаётся надеяться, что производитель исправит невозможность изменения параметра MTU, в следующих версиях прошивки.
Правки: hex
Остались вопросы? Задай их здесь!
Тюнингуем uTorrent
Использовать торрент-клиент совместно с роутером нельзя, если оставить настройки программы по умолчанию. Важным является следующее: надо ограничить число одновременных подключений. В меню программы выполняется переход «Настройка» –> «Конфигурация». Затем необходимо найти вкладку «Скорость»:
Скорость подключений uTorrent
«Максимальное число соединений» оставьте между двумя и тремя сотнями. Этого должно быть достаточно.
Число слотов раздачи и количество пиров на торрент, в принципе, можно не ограничивать явно (они и так будут меньше обведенного в квадрат значения). Но лучше использовать цифры, приведенные в примере. А возможно, что их придется уменьшить, и это зависит уже от модели применяемого оборудования. Удачного роутинга!
Никогда не стоит пренебрегать простым правилом: лучшее – враг хорошего. Используя возможности оборудования по максимуму, необходимо помнить о том, что роутер – устройство универсальное, и его ресурсы распределяются между несколькими задачами. Поэтому, нет ничего удивительного в том, что настроив один из сервисов (торрент), в последствие можно получить отсутствие чего-то другого (IPTV). Использовать 50% от максимума – вот что нужно для надежной работы. Для класса «домашнего» оборудования, где задач не так много, эту цифру можно скорректировать до 75.
Меняем MTU для PPPoE
У вас недогружаются странички в браузере? Некоторые из них открываются только со второго или третьего раза? Потоковое видео с просторов интернета идет с прерываниями? Скорее всего, проблема заключается в неправильно выставленном параметре MTU вашего роутера.
Решается проблема достаточно просто: нужно просто позвонить в офис провайдера и задать вопрос о величине параметра, или же самостоятельно подобрать оптимальный параметр MTU, при котором пакеты не будут фрагментироваться. Первый вариант может оказаться и самым простым, и самым же сложным. Дело в том, что девушки, сидящие на телефонах, чаще всего не имеют даже понятия о том, какие параметры установлены в их сети. «Что, МТУ? Может, МТС? Нет, мы не офис МТС, мы у них не выставляем никакие параметры» — вот что, вероятнее всего, вы рискуете услышать в ответ на вопрос. Поэтому не тратим времени на переговоры, а сразу идем подбирать параметр MTU. Производится подбор путем передачи пакетов разной величины с запретом фрагментации. При тестах используется коммутируемый доступ, то есть без роутера
.
Но каждый раз набирать в командной строке этот набор символов не очень удобно, а скопировать и вставить из буфера не получится. Чтобы облегчить задачу, я написал маленькую программу, которая будет автоматически формировать команду для пинг-теста и выполнять его, постепенно снижая MTU. Вам нужно только следить за показателем потерь и нажимать кнопку Enter. Все остальное написано в окошке программы.
Когда значение MTU найдено, к нему надо прибавить 28 (на заголовки IP и ICMP) и ввести в соответствующее поле настроек роутера
. У разных роутеров они разные, поэтому не спрашивайте меня, где ввести параметр у роутера какой-либо определенной модели. Всем добра!
Программное обеспечение в помощь
Определить необходимый размер MTU без экспериментов с роутером можно и с помощью программного обеспечения. Например, программа TCP Optimizer производит самостоятельные вычисления на канале связи и выдаёт результат пользователю с полным описанием проблемы. Вполне удобно, но ресурсоёмко. Ведь программу нужно найти, закачать, установить и разобраться в её работоспособности. А разобравшись, любой пользователь обнаружит, что приложение использует банальный ping какого-то ресурса в сети интернет. Выходит, что определить MTU можно из командной строки? Запросто, нужно лишь уменьшать размер пакета на единицу, пока ответ сервера не будет положительным — ping ya.ru -f -l 1499.
Многие программные продукты для настройки сетей предлагают произвести тонкую настройку путём правки реестра системы, прописывая специальные ключи под сетевое оборудование. Такой функционал был востребован в системах прошлого века, однако современные операционные системы умеют сами подстраиваться под созданный канал связи и порой для эффективности работы после тонкой настройки роутера требуется перезагрузить компьютер.
Определение MTU вручную
Для адекватных результатов экспериментов обязательно необходимо выставить в операционной системе максимальный размер MTU=1500. Поэтому, если вы уже пытались изменять этот параметр с помощью какой-то программы или вручную в реестре, то обязательно отмените все внесённые изменения, вернув default-настройки. В этом вам помогут утилиты
— выбирайте по вкусу. В реестре же вам придётся проконтролировать это в разделе
Если найдёте там параметр MaxMTU, то смело удаляйте его. Далее, открываем «Панель Управления» — «Сеть» («Network»), выбираем «Контроллер удаленного доступа» («Dial-Up Adapter») и жмём кнопку «Свойства». На вкладке «Дополнительно» («Advanced») появившегося меню устанавливаем большой размер пакета IP («IP Packet Size» — «Large»). Тем самым мы установили для нашего соединения MTU=1500. Перезагружаем компьютер, чтобы изменения вступили в силу.
Теперь надо установить соединение с Интернетом и посмотреть, будут ли фрагментироваться пакеты различного размера. Для этого можно использовать и стандартную программу Ping из комплекта Windows, задавая ей такие параметры:
Таким образом, мы выяснили, что имеем полностью развязанные руки и можем выбирать любой MTU, вплоть до самого большого — 1500. Попробуйте теперь осуществить загрузку одного и того же ZIP-файла размером 1 мегабайт с одного и того же быстрого сервера при разных значениях MTU — максимальном, полученном от провайдера, и рекомендуемом 576. Для чистоты эксперимента, отключите автоопределение MTU — параметр PMTUDiscovery — о том, как его найти в реестре, читайте в конце статьи. Скорее всего, вы обнаружите, что наши расчёты, говорящие о предпочтительности больших пакетов, справедливы. Проведите и такой эксперимент: «пингуйте» наибольшим нефрагментируемым пакетом (в нашем случае это 1472, то бишь MTU=1500) сайты, занесённые в список закладок. Вас ждёт удивительное открытие — оказывается, большинство сайтов прекрасно воспринимают MTU=1500 и все пакеты до них доходят нефрагментированными. Где же тот самый MTU=576, который якобы преобладает в Интернете? Проверьте также и свою любимую сетевую игру при разных MTU. Исходя из полученных данных, а не из того, что вам советуют всевозможные «эксперты», сами никогда не проделывавшие подобных опытов, а повторяющие только то, что принято за истину на загнивающем Западе, вы уже гораздо более объективно определите, какое же значение наилучшим образом согласуется с вашим интернет-доступом — наибольшее или меньшее. Действительно, на качество и скорость работы в Сети сильное влияние оказывает фрагментация пакетов, которая происходит, если большой пакет проходит через сеть, имеющую MTU меньше, чем длина вашего пакета. Можно, конечно, перестраховаться и выбрать самый минимальный размер MTU, при котором пакеты наверняка не будут фрагментироваться, но это может сказаться на быстродействии вашей системы ещё более пагубно, чем использование больших пакетов. На самом же деле, главное — чтобы ваш MTU не превосходил MTU провайдера, при включённой же функции PMTU система сама найдёт для ваших пакетов такой путь в Сети, при котором они не будут фрагментироваться. Кстати, если вы обнаружите, что у провайдера установлено MTU=512 и менее, то есть смысл подумать о его смене — слишком много шлака будет передаваться вместе с вашими данными.
Предел IP настройки MTU у Ростелекома
Все IP устройства в интернете должны получать информацию о качестве технологии, используемой для реализации канала связи текущего уровня. Таким критерием является MTU сети Ростелекома, настройка которого выполняется на сетевом оборудовании пользователя. Этот термин также иногда рассматривается как максимальный размер блока для передачи.
Когда устройство принимает сообщение, отправляемое через интернет-сети, оно смотрит на его размер, а затем вычисляет, насколько большой будет дейтаграмма после добавления 20 или более байтов, необходимых для заголовка IP. Если общая длина превышает MTU Ростелекома для PPPoE подключения в конкретной сети, Internet Protocol разделит сообщение на несколько фрагментов. Таким образом, при подключении хоста уровня TCP с помощью Ethernet LAN к своей локальной сети, он сможет использовать MTU option, указанный оборудованием Ростелекома.
Узнать, какой MTU у Ростелекома на вашем типе подключения и оборудовании можно непосредственно у провайдера, позвонив на . Значение этой опции для большинства сетей в России не превышает 1492 байт. Выяснить оптимальный вариант для собственного интернета можно лично, отталкиваясь от указанного значения.
Информация в компьютерных сетях передается в виде небольших сформированных блоков данных (иначе говоря, пакетов). Каждый пакет помимо пересылаемой информации содержит еще и служебные данные, составляющие так называемый заголовок (header) пакета. Эти служебные данные нужны для определения целостности данных, используемой версии сетевых протоколов и т.д. При этом размер полезного блока данных ограничивается определенным количеством байт. Делается это для того, чтобы снизить вероятность потерь информации и уменьшить время повторной пересылки пакета в случае появления проблем с подключением.
Отличный ping-показатель
И чтобы навсегда ушли сомнения, которые поселяет в сознании пользователя служба технической поддержки любого провайдера, нужно знать важный факт — команда ping — не показатель. Так как его первостепенной задачей является проверка доступности ресурса, но не качества канала связи. В этом можно убедиться самостоятельно, выполнив в командной строке ping ya.ru. Ответ конечного сервера сообщит о том, что пакет размером 32 байта был принят. А если отправить пакет, установленный стандартом в 1500 байт? Команда будет выглядеть так: ping ya.ru -f -l 1500. Где l — размер, пакета, а f — запрет фрагментации. Могут появиться проблемы, начиная от невозможности принятия, заканчивая потерями на канале
Беря во внимание, что вся информация, получаемая из сети интернет, передаётся большими пакетами, доверять проверку канала нецелесообразно. В данном случае размер пакета — не что иное, как значение MTU, редактирование которого может улучшить работу интернета
Устанавливаем значениеMTU
Теперь вы знаете, какое значение MTU можно использовать в вашей домашней сети. Укажем операционной системе, что необходимо использовать именно его (дальнейшие примеры иллюстрируют настройку сети IPv4).
В Windows открываем командную строку с правами администратора и выполняем команду:
На экране появится список всех сетевых подключений, их названия и текущий размер MTU. Запоминаем название нужного нам подключения и пишем следующую команду:
Здесь Ethernet – название интерфейса (может быть другим), 1450 – выбранный размер MTU. Если название состоит из нескольких слов, его надо указывать в кавычках.
Для отключения автоматической настройки MTU можно выполнить команду:
Включить автоматическое определение MTU можно той же командой с параметром autotuninglevel=normal.
Если необходимо сбросить настройки к исходному состоянию, выполняем команду:
В Linux настройка MTU осуществляется с помощью команды ip. Посмотрим текущее значение MTU:
Здесь eth0 – название интерфейса, оно может быть другим на вашем компьютере. Для того чтобы выбранное значение MTU использовалось постоянно при каждом входе в систему, необходимо прописать значение в файл /etc/network/interfaces, либо создать модуль для systemd. Рекомендуем обратиться к документации используемого дистрибутива для получения более подробной информации.
В macOS посмотреть размер MTU для подключения en0, а затем установить значение параметра можно в терминале:
Вы можете указать размер MTU и в настройках маршрутизатора. Во многих моделях роутеров соответствующая настройка находится в разделе WAN. Более подробную информацию можно получить на сайтах производителей сетевого оборудования.
При ручной настройке MTU учитывайте, что слишком маленький размер блока данных устанавливать не рекомендуется, чтобы не создавать дополнительную нагрузку на процессор маршрутизатора. Также напомним еще раз: если ваше сетевое подключение работает нормально, значение MTU менять не стоит. Параметры, установленные провайдером или производителем маршрутизатора, вполне подходят для подавляющего большинства пользователей.
MTU в роутере что это и почему от этого параметра зависит скорость вашего интернет-соединения? Детальное описание сетевого параметра mtu, его особенностей и свойств. В статье приведена инструкция для правильного определения и изменения настроек mtu в wi-fi роутере.
MTU (максимальный уровень передачи в сети —
maximum transmission unit
(MTU
))
– это протокол канального уровня, который определяет наибольшее количество «полезных» блоков битов в одном сетевом пакете. Как известно, обмен информацией между сервером и клиентом (провайдером и пользовательским ПК) возможен благодаря трансферу отдельных пакетов данных.
Эти пакеты образуют наборы полезных блоков. В результате использования защищенного протокола, информация в пакете передается без фрагментации, что в свою очередь позволяет ускорить обмен данными в глобальной сети.
Простыми словами, MTU необходим для обеспечения стабильной работы интернета на вашем компьютере. Благодаря проставлению его правильного значения можно добиться отличной скорости с минимальными сбоями в работе.
Что такое PMTUD
В предыдущем примере TCP MSS выполнил работу по избавлению от IP фрагментации. Однако такая ситуация возможна только если MTU сети на пути между двумя хостами будет не ниже MTU исходящих интерфейсов этих машин. На случай различных значений MTU между двумя узлами был создан PMTUD.
Стоит отметить, что PMTUD поддерживается только TCP протоколом, UDP и другие протоколы его не поддерживают. Если машина поддерживает PMTUD, то все TCP IP пакеты помечаются флагом DF («не фрагментировать»).
Когда машина отправляет пакет с DF флагом, работа PMTUD заключается в том, чтобы уменьшать значение MSS в исходящем TCP сегменте, если будет получена информация о том, что пакет нуждается в фрагментации. Машина запоминает значение MTU создавая строчку в таблице маршрутизации до соответствующего получателя.
Если маршрутизатор получает IP пакет, с установленным флагом DF, который он не может передать дальше из-за малого значения MTU исходящего интерфейса, он сбрасывает пакет и отправляет ICMP сообщение «Destination Unreachable» к источнику этого IP пакета указывая «fragmentation needed and DF set» как код ошибки (type 3, code 4). Когда машина, отправлявшая IP пакет, получит данное сообщение, она уменьшит значение MSS, в последующем TCP сегменте.
В соответствии с RFC 1191, маршрутизатор отправляющий ICMP сообщение «fragmentation needed and DF set», должен указать значение MTU исходящего интерфейса.
Механизм PMTUD работает постоянно, поскольку путь от одной машины к другой может измениться. Получив сообщение «Can’t Fragment» он обновляет таблицу маршрутизации машины.
PMTUD выполняется для обоих направлений TCP независимо, т.к. пути входящего и исходящего трафика могут различаться.
Проблемы PMTUD
В процессе работы PMTUD могут произойти три проблемы:
- Маршрутизатор сбрасывает пакет и не отправляет ICMP сообщение.
- Маршрутизатор отправляет ICMP сообщение, но оно блокируется где-то на пути к месту назначения.
- ICMP сообщение доходит до машины, но она не предпринимает никаких действий.
Из описанных выше проблем, вторая является наиболее частой. Все ICMP пакеты просто отфильтровываются межсетевым экраном и не доходят до отправителя отброшенного пакета.
Если возможности пропускать ICMP сообщения нет, то могут применяться другие способы.
- На пограничном к отправителю маршрутизаторе установить политику снятия DF флага для всех исходящих пакетов. Это приведет к фрагментации больших IP пакетов.
- На пограничном к отправителю маршрутизаторе установить политику указания MSS в исходящих SYN TCP сегментах. Установить MSS таким образом, чтобы один IP пакет вмещался в самый маленький MTU на всем пути следования.
С распространением различного вида туннелирования трафика проблема IP фрагментации стала более насущной. Из-за появления допольнительных заголовков размер IP пакета увеличивался и уже не влезал в MTU сети. Например, GRE добавляет 24 байта к пакету, что может привести к IP фрагментации из-за того, что MTU исходящего интерфейса не способно передать пакет целиком.