admin / 31.08.2018

Mtu size

Cамоучитель MS IE 6.0 → Выбор оптимальной конфигурации Internet Explorer 6.0 → MTU — Maximum Transmission Unit

MTU — Maximum Transmission Unit

Первым делом, конечно, необходимо разобраться в MTU, о котором наслышаны уже почти все, кто когда-либо сталкивался с Интернетом. MTU — Maximum Transmission Unit.

В реестре он задается таким образом:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Class \NetTrans\000x "MaxMTU"="1500"

Это максимальный размер пакета данных, который может быть передан за один физический кадр по протоколу TCP/IP. Дело в том, что данные от компьютера к компьютеру в Интернете идут не сплошным потоком, а этими самыми кадрами. Кадр — это пакет определенного размера. Казалось бы, все очень просто, но нет. Самым оптимальным вариантом был бы следующий. Предположим, что все компании, в той или иной мере связанные с Интернетом, договорились о едином стандарте (размере) этих пакетов, то можно было бы по максимуму использовать каналы связи, отсутствовал бы так называемый "пакетный" мусор.

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

Так, если ваш провайдер имеет установки MTU=576, а у вас в Windows задано MTU=1500, то каждый ваш пакет будет им разбиваться на три по 576 байт: 576+576+576=1728 — т. е. 228 байт балласта будут добавляться к каждому вашему пакету. Но даже если провайдер тоже поставил у себя MTU=1500, то при связи с удаленным сервером вполне может попасться маршрутизатор с меньшим значением MTU, и пакеты опять-таки будут фрагментироваться, замедляя передачу данных.

В Microsoft Windows есть функция автоматического определения MTU. Она включена по умолчанию и несколько спасает ситуацию. Но есть и минус: процедура вычисления MTU для каждого соединения требует немало времени, что чуть тормозит работу при прокачке небольших файлов и веб-серфинге. Да и в случае несогласования ваших параметров c параметрами интернет-провайдера эта функция вряд ли вам поможет. Конечно, существуют некие более или менее общепринятые стандарты для данного параметра: так, например, для Ethernet MTU равен 1500 байт, для SLIP — 1006, для РРРоЕ -1492, для РРР (т. е. модемной связи с Интернетом) — 576.

На деле ваш интернет-провайдер мог выставить любые другие значения по своему усмотрению. В результате чего отправляются либо совсем маленькие кадры, которые не позволяют в полной мере загрузить канал связи, либо слишком большие, которые интернет-провайдер разбивает на меньшие. Тем самым ухудшается качество связи, скорость работы во Всемирной паутине.

На самом деле каждый пакет состоит еще из нескольких сегментов. Это заголовки и фактические данные. Та часть, где содержатся только фактические данные, называется MSS или Maximum Segment Size, что является еше одним параметром протокола TCP/IP, определяющим самый большой сегмент, теперь уже данных, передаваемых в единицу времени. В действительности MTU состоит из MSS и заголовков TCP/IP.

В реестре MSS задается так:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\VxD\MSTCP "DefaultMSS"="Bame число"

Заголовок также имеет стандартный размер — 40 байт. 20 байт под IP и 20 байт под TCP. Следовательно, размер MSS составляет разность MTU и заголовка, т. е. 40 байт. Вот почему в определении оптимального размера MTU есть некоторые тонкости.

Для примера, стоит изучить передачу данных при разном размере MTU по широкополосной линии Т1 (пропускная способность- 1544000 бит/с), используя следующую формулу:

[(MSS + заголовок) х 8 бит/байт] / [1 544 000 бит/с] = задержка на один хоп (т. е. на каждый компьютер в Сети по пути нашего пакета).

Используя в этой формуле разные величины MTU, мы можем вычислить задержку одного пакета. Если MTU=1500, тогда задержка = (1460+40) х 8/1 544 000 = 7,772 мс.

Если же MTU=576, то задержка = (536+40) х 8/1 544 000 = 2,984 мс.

Предположим, что по пути пакета встречается 10 серверов, тогда при MTU=1500 получим задержку 77,72 мс, а при MTU=576 — 29,84 мс — разница весьма заметна.

Поэтому, очевидно, что пакеты меньшего размера будут передаваться быстрее из-за небольшой пропускной способности линии. Однако не все так просто. Используя ту же формулу, давайте посчитаем, за какой промежуток времени будет передан файл размером 1 Мбайт по той же широкополосной линии Т1. Один мегабайт равен 1024 Кбайт или 1 048 576 байт. Если MTU = 1500, то, как мы выяснили, задержка на один хоп составит 7,772 мс.

1 Мбайт/MSS = 1 048 576/1460 = 718,2, т. е. всего требуется 719 эффективных пакетов, чтобы передать 1 мегабайт данных. Далее, умножаем 719 пакетов на 7,772 мс, получаем 5588,083 мс, или 5,588 секунд задержки на один хоп. Если же мы передаем свой файл через 10 хопов, что встречается чаще, чем один, то получаем 55,88 сек — это время, которое мы (вернее, поставщик услуг, доступа в Интернет, имеющий линию Т1) потратим на передачу файла в 1 Мбайт при идеальной связи. Если же MTU=576, то: 1 Мбайт/MSS = = 1 048 576/536 = 1956,300, т. е. при таком MTU нужно 1957 пакетов, чтобы передать 1 Мбайт.

Далее, умножаем количество пакетов на задержку каждого из них: 1957 х 2,984 = 5840,580 мс, или 5,841 секунды на один хоп. Ну и соответственно на 10 хопов придется 58,41 сек. Как видим, из-за того, что при использовании больших пакетов передается меньше заголовков, реальная скорость передачи файла получается выше.

Для того чтобы передать 1 мегабайт при использовании MTU = 1500, нужно переслать "довесок" заголовков из 28 760 байт, тогда как при использовании MTU = 576 получаем аж 1957×40 = 78 280 байт, т. е. дополнительные 49 520 байт заголовков на каждый мегабайт полезной информации. Для нашей 10-хоповой передачи это выливается в лишних 2,52 секунды при передаче каждого мегабайта даже при сверхбыстрой связи.

Эта разница, возможно, будет еще немного выше на практике, т. к. современные реализации TCP/IP стремятся использовать еще большие заголовки (например, дополнительные 12 байтов заголовка для отметок времени). Если же провести аналогичные расчеты для связи по модему на скорости 33 600 Кбит/с, то получим, что на передачу мегабайта информации на расстояние одного хопа^, т. е. непосредственно вашему провайдеру, будет потрачено в идеале 256 секунд при MTU=1500 и 268 секунд при MTU=576.

Разница на одном переходе 12 секунд или около 4,5%! Но не следует забывать, что эти цифры получатся при условии отсутствия фрагментации пакетов, т. е. если у вашего провайдера MTU=1500. Если же это не так, то, разумеется, больший, чем нужно, пакет будет фрагментироваться — разбиваться на несколько пакетов и даже разбавляться "воздухом", и связь ухудшится на 10—50%.

Таким образом, логично считать, что большие пакеты в итоге все-таки предпочтительнее. И если ваш провайдер настроил свои серверы и маршрутизаторы на большие пакеты, то надо стремиться использовать это на всю катушку, но не забывать и о том, что в Интернете встречаются серверы с MTU=576 (об этом чуть ниже мы еще поговорим). Тем не менее, если чистая производительность не является окончательной целью, то меньшие пакеты будут более "быстрыми", поскольку они требуют меньше времени для своих путешествий по Сети.

Этот эффект может перевешивать все другие достоинства больших пакетов в некоторых интернет-приложениях и онлайновых играх за счет уменьшения времени отклика удаленного сервера при передаче небольших объемов информации.

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

В Windows 95 разработчиками по умолчанию было выбрано MTU=1500, что якобы не соответствует оптимальному для модемного соединения значению, которое всеми считается равным 576. В Windows 98 корпорация Microsoft уже исправила этот недостаток, и теперь по умолчанию при соединениях ниже 128 килобит в секунду мы имеем МТU=576, что вроде бы должно чаще оказываться наилучшим вариантом. Попробуем разобраться, так ли оно на самом деле.

Итак, есть несколько способов определить значение MTU, оптимальное для связи с вашим интернет-провайдером.

  1. Послать письмо с вопросом в службу технической поддержки провайдера. Тут в принципе все понятно — если работники провайдера сами в курсе своих собственных настроек, то они дадут вам квалифицированный ответ, который, впрочем, не помешает все-таки и проверить лично на практике.
  2. Подключиться к Интернету в терминальном режиме — иногда при осуществлении регистрации пользователя в одной из строк появляется рекомендуемое значение MTU. Для этого войдите в папку Удаленный доступ к сети, найдите там значок своего соединения и, щелкнув на нем правой кнопкой мыши, выберите команду Свойства (Properties).

    На вкладке Общие (General) открывшегося окна нажмите кнопку Настройка (Settings) возле строки с названием вашего модема. В диалоговом окне Свойства: тип модема (Properties: Modem Type) выберите вкладку Параметры (Options), где установите флажок Открыть окно терминала после набора номера (Show terminal window after connection). Теперь соединяйтесь с провайдером и при появлении окна терминала вводите вручную имя пользователя и пароль по соответствующим запросам. Если после этого вы увидите что-то типа "Entering PPP mode. Your IP address is xxx.xxx.xxx.xxx. MaxMTU is 1524", то вам повезло — вы получили MTU провайдера. Но и тут нелишним будет проверить это значение лично.

  3. И, наконец, ручное определение MTU.

Как узнать значение MTU

Обновлено: Опубликовано:

Тематические термины: MTU, Windows, Linux, FreeBSD

Windows

Нажмите комбинащию клавишь Win + R

В появившемся окне введите cmd и нажмите OK

В открывшемся черном окне введите команду:

netsh interface ipv4 show subinterfaces

В первой колонке ответа мы увидим значение MTU:

* в данном примере, значение MTU равно 1500 для сетевого адаптера Ethernet.

Linux

ip address

В более современных системах используется утилита для работы с сетевыми интерфейсами — ip address.

Значение MTU у разных производителей

Вводим команду:

В полученном результате находим нужный сетевой интерфейс и строчку на подобие:

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

* то, что мы ищем — mtu 1500.

ifconfig

В более ранних системах или с установленным ifconfig вводим:

* где eth0 — сетевой адаптер, для которого хотим узнать MTU.

В полученном результате находим что-то на вроде:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

* где mtu 1500 — наше значение.

FreeBSD

В данной системе работаем с уже описанным выше ifconfig:

Получаем:

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500

Провайдера

Чтобы определить оптимальное значение MTU для нашего сетевого адаптера, подключенного к сети Интернет, необходимо узнать значение, используемое на оборудовании поставщика.

Для этого выполняем ping с запретом фрагментации сетевых пакетов (-f) и выставлением определенного размера пакета (-l):

* 1472 будет соответствовать MTU — 1500, так как к пакету мы должны еще прибавить 28 (заголовок).

Наша задача — подобрать значение пакета, при котором будет идти пинг:

Ответ от 90.156.242.197: число байт=1472 время=13мс TTL=56
Ответ от 90.156.242.197: число байт=1472 время=12мс TTL=56

Если мы видим: 

Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.

Значит значение -l нужно уменьшить, пока сигнал не начнет проходить.

Находим значение, которое стоит на границе с ошибкой и прибавляем к нему заголовок пакета — 28. Так мы получаем наше оптимальное MTU.

На данный момент большинство Интернет провайдеров предоставляет услуги связи с фрагментом в 1500. Старые подключения от Ростелеком или подключения на основе PPPoE могут работать на меньших значениях.

# Сети# Windows# Linux# FreeBSD

Была ли полезна вам эта инструкция?

Да            Нет

Sorry, page not found

Для того чтобы посмотреть текущие установки mtu

netsh interface ipv4 show subinterfaces

Если нужно сбросить настройки в значения по-умолчанию

netsh interface ipv4 reset

В ОС Windows XP все немного сложней и для изменения значения mtu придется помучить реестр.
Открываем regedit и находим следующую ветку 
<HKEY_LOCAL_MACHINE \ SYSTEM\ CurrentControlSet \ Control \ Class \ {4D36E972-E325—11CE-BFC1—08002bE10318}
Внутри находятся подразделы 0000, 0001, 0002 и т.д. Среди подразделов нужно найти такой у которого значение параметра DriveDesc соответствует названию вашего сетевого адаптера. В этом же подразделе находим параметр NetCfgInstanceId и запоминаем его значение.

Затем переходим в раздел HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \Services \ Tcpip \ Parameters \ Interfaces и находим подраздел соответствующий значению параметра NetCfgInstanceId

Создаем в этом размеле параметр MTU, если его нет, и задаем ему значение DWORD в десятичном формате, например 1400.

Закрываем реестр и перезагружаемся.

.

MTU — Maximum Transmission Unit (MTU), что по русски означает, как максимальный блок данных для канала.

Помните, что «возможно», это не «обязательно»… и эта статья не претендует на панацею от всех проблем!

Что можно сделать? Как проверить и узнать что дело именно в MTU?

Проверяем необходимость изменения параметра MTU в нашем случае.

Нажмите «Пуск», «Выполнить», введите cmd. Вводим — ping -f -l 1492 адрес любого узла, например www.ya.ru

·          Если получили ответ такого формата:

ping –f –l 1492 xxx (любой узел)

Обмен пакетами с xxx с 1492 байт данных:

Ответ от xxx: число байт=1492 время=83мс TTL=250

Ответ от xxx: число байт=1492 время=66мс TTL=250

Ответ от xxx: число байт=1492 время=119мс TTL=250

Ответ от xxx: число байт=1492 время=157мс TTL=250

Статистика Ping для xxx:

Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь)

Приблизительное время приема-передачи в мс:

Минимальное = 66 мсек, Максимальное = 157 мсек, Среднее = 106 мсек

То данный материал нас совсем не интересует, т.к. это был пример ответа команды «ping», при прохождении пакетов через узлы, не требующие фрагментации.

·          Если получили такой ответ:

ping -f -l 1492 xxx (любой узел)

Обмен пакетами с xxx с 1492 байт данных:

Превышен интервал ожидания для запроса.

Превышен интервал ожидания для запроса.

Превышен интервал ожидания для запроса.

Превышен интервал ожидания для запроса.

Статистика Ping для xxx:

Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь)

То смотрим наличие активного Firewall (фаервола), как встроенного в Вашу операционную систему, так и сторонних разработчиков. Наличие прокси – сервера, шлюза.

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 под наши условия:

Первый способ.

Получив требуемое нам число (обычно порядок цифр где-то в районе 1460), идём по ссылке http://support.microsoft.com/kb/314053/ru , где читаем статью «Параметры конфигурации TCP/IP и NBT для Windows XP» и настраиваем параметр 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 и т.д., в том числе получить совет по оптимизации своего соединения;

http://www.speedguide.net/ — официальный сайт программы SGTCPOptimizer;

P.S.

Отмечу, что на момент написание данной статьи, большая часть модемов не была замечена в некорректной работе с параметром MTU, да и возможность изменения этого параметра присутствует практически у всех модемов, либо через WEB интерфейс, либо через telnet. Исключение составляет модем ZTE 831 Series. Остаётся надеяться, что производитель исправит невозможность изменения параметра MTU, в следующих версиях прошивки.

Автор: constanta

Правки: hex

Остались вопросы? Задай их здесь!

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*