MTU - Maximum Transmission Unit. Это максимальный размер пакета данных, который может быть передан за один физический кадр по протоколу TCP/IP. Дело в том, что данные от компьютера к компьютеру в Интернете идут не сплошным потоком, а этими самыми кадрами - пакетами строго определённого размера.
При этом слишком большой пакет в пути, скорее всего, будет фрагментироваться и заполняться "воздухом", "балластом", что негативно скажется на эффективности связи. Так, если ваш провайдер имеет установки MTU=576, а у вас в Windows задано MTU=1500, то каждый ваш пакет будет им разбиваться на три по 576 байт: 576+576+576=1728 - то есть, 228 байт балласта будут добавляться к каждому вашему пакету. Но даже если провайдер тоже имеет MTU=1500, то при связи с удалённым сервером вполне может попасться маршрутизатор с меньшим значением MTU и пакеты опять-таки будут ферментироваться, замедляя передачу данных.
Для упрощения поиска и установки MTU можно воспользоваться программой Доступно только для пользователей.
Как определить и выставить оптимальное значение MTU вручную?
Открываем командную строку, и вводим в ней команду:
ping -f -l byte ip
где byte подбирается вручную (как расскажу чуть ниже), а IP - любой адрес сервера провайдера, например, DNS, или адрес с интернета - не принципиально, так как провайдер всё равно не позволит пропустить больший пакет без фрагментации.
ping -f -l 1500 213.180.204.8
Получаем:
Обмен пакетами с 213.180.204.8 по 1500 байт:
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Уменьшаем byte на 10. Опять та же история. Ещё уменьшаем и так далее. При значении 1460 начинаем пинговаться. Увеличиваем byte на единичку. При 1461 пингуемся, при 1462 пингуемся, при 1463 пингуемся, при 1464 пингуемся, при 1465 уже не можем без фрагментации пакета. Ping прибавляет к нашим данным заголовок - IP (20 Байтов) и ICMP (8 Байтов). Таким образом, идеальное значение MTU: 1464 + 8 + 20 = 1492. Это максимальное возможное значение для PPPoE. Кстати именно таким и делает по умолчанию пакеты линуксовская утилита pppoeconf.
При MTU ниже 1300 идёт сильная фрагментация пакетов и, как следствие, потеря скорости.
Рекомендуемый размер MTU для PPPoE-соединения
Вопрос:
Объясните, почему при смене подключения на PPPoE вдруг перестали открываться некоторые сайты и теперь я не могу подключиться к ftp-серверам?
Ответ:
Данная проблема может быть связана с размером передаваемых пакетов (с размером MTU). Дело в том, что максимальный размер Ethernet-пакета составляет 1500 байт, а максимальный размер пакета, передаваемого через PPPoE, составляет 1492 байта. Заголовок PPPoE занимает 6 байт, а PPP Protocol ID 2 байта. Таким образом, пакеты размером свыше 1492 байта будут отбрасываться при использовании PPPoE.
Установка параметра MTU
Windows 98 SE или Windows ME
Нажмите кнопку «Пуск», «Выполнить», введите regedit, затем нажмите OK, чтобы запустить редактор реестра.
Откройте ветку реестра
HKEY_LOCAL_MACHINE System CurrentControlSet Services Class NetTrans
В этой ветви будут содержаться подразделы 0001, 0002 и так далее. Внимательно просмотрите содержимое этих подразделов и остановитесь на том, у которого значение параметра DriverDesc аналогично названию вашей сетевой карты, через которую вы подключены к интернету.
Сделайте двойной щелчок на параметре MaxMTU и введите значение 1300 вместо старого значения, после чего нажмите OK.
Закройте редактор реестра и перезагрузите компьютер.
Примечание: Если параметра MaxMTU нет, создайте его. Для этого выберите меню «Правка» вверху, щелкните «Создать», затем «Параметр DWORD». Введите «MaxMTU» и нажмите ENTER. Сделайте двойной щелчок на параметре «MaxMTU» и введите значение «1300» (десятиричное - decimal), после чего нажмите OK.
Windows XP или Windows 2000/2003
Нажмите кнопку «Пуск», «Выполнить», введите 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 и введите значение 1300 (десятеричное - decimal)
Закройте редактор реестра и перезагрузите компьютер.
Примечание: Если параметра MTU нет, создайте его. Для этого выберите меню «Правка» вверху, щелкните «Создать», затем «DWORD». Введите «MTU» и нажмите ENTER. Сделайте двойной щелчок на параметре «MTU» и введите значение «1300» (десятиричное - decimal), после чего нажмите OK.
Windows Vista:
Чтобы изменить значение параметра MTU для подключений по протоколу PPP, добавьте в следующий раздел реестра параметры ProtocolType, PPPProtocolType и ProtocolMTU типа DWORD:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetNdiswanParametersProtocols�
Для этого необходимо выполнить следующие действия:
1. Нажмите кнопку Пуск, выберите пункт «Выполнить», введите в поле Открыть команду regedit и нажмите кнопку ОК.
2. Найдите и выделите следующий раздел реестра:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNdisWanParameters
3. Добавьте раздел Protocols (если он отсутствует). Для этого необходимо выполнить следующие действия:
a. Выберите в меню Правка команду «Создать», а затем - Раздел.
b. Введите Protocols и нажмите клавишу ВВОД.
4. Создайте раздел 0 (ноль) в разделе Protocols. Для этого необходимо выполнить следующие действия.
a. Выделите созданный на шаге 3 раздел Protocols.
b. Выберите в меню Правка команду Создать, а затем - Раздел.
c. Введите 0 и нажмите клавишу ВВОД.
5. Выделите созданный на шаге 4 раздел 0.
6. В меню Правка выберите пункт Создать, а затем - Параметр DWORD.
7. Введите ProtocolType и нажмите кнопку ОК.
8. В меню Правка выберите команду Изменить.
9. В поле Значение введите 800, убедитесь, что в разделе Система исчисления выбрано значение Шестнадцатеричная, и нажмите кнопку OК.
10. В меню Правка выберите пункт Создать, а затем - Параметр DWORD.
11. Введите PPPProtocolType и нажмите клавишу ВВОД.
12. В меню Правка выберите команду Изменить.
13. В поле Значение введите 21, убедитесь, что в разделе Система исчисления выбрано значение Шестнадцатеричная, и нажмите кнопку OК.
14. В меню Правка выберите пункт Создать, а затем - Параметр DWORD.
15. Введите ProtocolMTU и нажмите клавишу ВВОД.
16. В меню Правка выберите команду Изменить.
17. В разделе Система исчисления выберите значение Десятичная, введите в поле Значение желаемый размер MTU и нажмите кнопку OК.
18. Закройте редактор реестра.
19. Перезагрузите компьютер.