Как определить оптимальный размер MTU?

Важно! Данная инструкция актуальна только в том случае, если вы столкнулись с проблемами передачи данных по сети.



Например, по неизвестной причине не открываются определенные веб-страницы или присутствуют ошибки при передаче файлов.


Если же доступ в Интернет и передача данных работают корректно, не стоит экспериментировать с параметром MTU, т.к. при выполнении неверных действий вы можете только ухудшить работу домашней сети. В настоящее время, в различных сетевых устройствах (роутерах, адаптерах, модемах и пр.) обычно используются оптимальные настройки MTU предустановленные по умолчанию, а также часто значение MTU определяется автоматически c помощью функции автоподстройки размера пакетов.


Параметр MTU (Maximum Transmission Unit; максимальная единица передачи) означает максимальный размер пакета, который может быть передан по сети без фрагментации. Если пакет будет иметь больший размер, чем установленное значение MTU, он будет фрагментироваться (разбиваться) на более мелкие. При большом количестве таких пакетов это может значительно замедлить передачу данных по сети.


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


Во многих сетевых устройствах имеется возможность установить вручную значение MTU для нужного интерфейса, но нужно правильно определить его оптимальный размер.


Рассмотрим один из самых простых и точных способов определения оптимального размера MTU.
Для этого будем использовать утилиту ping. С помощью неё мы будем отправлять запросы в сеть и постепенно увеличивать размер пакета до тех пор, пока не появится сообщение о необходимости фрагментации пакета.


Выполнение команды ping будем производить в командной строке операционной системы Windows. Для подключения к командной строке Windows нажмите Пуск > Выполнить > в появившемся окне в поле Открыть впишите команду cmd и нажмите кнопку OK (или клавишу Enter на клавиатуре).


Синтаксис используемой команды ping будет следующий:

ping [url] -f -l <размер_пакета>


В качестве url используйте какой-нибудь популярный домен.


Флаг -f запрещает фрагментацию пакета.


Флаг -l <размер_пакета> устанавливает размер пакета при отправке его в сеть. Обращаем ваше внимание, что во флаге -l используется строчная буква L.


Приведем пример. Выполним пинг до сайта www.yandex.ru с размером пакета 1450 байт:

ping www.yandex.ru -f -l 1450





После выполнения команды ping вы сразу увидите результат. В нашем примере был получен ответ, а сообщение о требовании фрагментации пакета не получено. Значит, продолжаем тестирование. Тестирование размера пакета начинайте с 1450 байт, постепенно увеличивая это значение до тех пор, пока не появится сообщение Требуется фрагментация пакета.





Итак, в нашем примере был найден максимальный размер пакета 1472 байта (при этом значении пакет не нуждается во фрагментации), т.к. при значении 1473 байта появилось сообщение о том, что требуется фрагментация пакета.


Но это ещё не значение MTU. Мы получили значение MSS (Maximum Segment Size), которое определяет максимальный размер блока данных в байтах. Этот параметр не учитывает длину заголовков ICMP и IP. В нашем случае значение MTU = MSS + заголовок IP + заголовок ICMP.


Теперь к полученному в ходе тестирования числу прибавим 28 байт, которые зарезервированы под заголовок данных (20 байт для заголовка IP и 8 байт для заголовка запроса протокола ICMP). Для нашего примера MTU=1472+28=1500 байт (это оптимальное значение параметра MTU).


Для выхода из интерфейса командной строки выполните команду exit.


Важно! Для корректного выполнения указанного теста должно обеспечиваться прохождение пакетов ICMP по сети (некоторые сетевые устройства, сервера или межсетевые экраны могут блокировать прохождение ICMP-запросов).

Комментарии

Популярные сообщения из этого блога

Права на папки и файлы (unix/chmod)

Автоматическое монтирование дисков и разделов в Linux или что такое fstab? Проблема Debian

Как подключить сетевой диск Windows в Linux