MTU Это максимальный размер пакета данных, который
может быть передан за один физический кадр по протоколу TCP/IP. Дело в
том, что данные от компьютера к компьютеру в Интернете идут не сплошным
потоком, а этими самыми кадрами - пакетами строго определенного
размера. Если бы все компании и фирмы, имеющие хоть какое-то отношение
к Интернету, договорились о едином стандарте на размер этих пакетов, то
мы бы использовали каждый такой кадр по максимуму, полностью заполняя
каналы передачи данных своими битами. Однако это не так. Мало того, что
при установке нового соединения два удаленных компьютера должны
согласовать между собой размер кадра, так еще и по пути к месту
назначения пакет преодолевает целый ряд промежуточных серверов и
маршрутизаторов, настройки MTU которых могут быть совершенно
различными. При этом слишком большой пакет в пути, скорее всего, будет
фрагментироваться и заполняться "воздухом", "балластом", что негативно
скажется на эффективности связи. Так, если ваш провайдер имеет
установки MTU=576, а у вас в Windows задано MTU=1500, то каждый ваш
пакет будет им разбиваться на три по 576 байт: 576+576+576=1728 - то
есть 228 байт балласта будут добавляться к каждому вашему пакету. Но
даже если провайдер тоже поставил у себя MTU=1500, то при связи с
удаленным сервером вполне может попасться маршрутизатор с меньшим
значением MTU и пакеты опять-таки будут фрагментироваться, замедляя
передачу данных.
Также нельзя забывать, что в процессе приема
пакета может произойти сбой, тогда пакет придется принимать заново.
Казалось бы, что чем меньше пакет, тем лучше, но в каждом пакете
присутствует 40 байт служебной информации (об этом ниже), т.е. вам
приходится принимать лишние байты, что не есть хорошо. Исходя из этих
соображений, можно порекомендовать выставлять максимальное значение
(1500) тем, у кого хорошее качество связи, что позволит избежать
получения лишней служебной информации. Для тех, у кого качество связи
оставляет желать лучшего, и часто происходят потери пакетов, можно
порекомендовать выставлять значение MTU по минимому. В любом случае,
лучше это значение подобрать экспериментально, выставляя его и проверяя
скорость работы.
MSS Каждый пакет данных в
действительности состоит из нескольких сегментов - нескольких
заголовков и фактических данных. Та его часть, в которой содержатся
только фактические данные, называется MSS (Maximum Segment Size) - это
еще один параметр протокола TCP, определяющий самый большой сегмент
данных TCP, которые могут быть переданы за один раз. То есть, MTU = MSS
+ заголовки TCP/IP. Для заголовка тоже имеется общепринятый размер -
это 40 байт (20 байт IP и 20 байт TCP), следовательно, обычно MSS = MTU
- 40. По этой причине в определении оптимального размера MTU есть
некоторые тонкости.
RWIN RWIN (receive
window, окно приема) - размер буфера, в котором накапливается
содержимое области данных (MSS) нескольких полученных пакетов, прежде
чем передается дальше, например, в браузер. При недостаточном размере
этого буфера иногда происходит его переполнение, и поступающие пакеты
отвергаются и теряются. Размер RWIN обязательно должен быть кратен MSS
и обычно для лучшей эффективности модемного соединения кратность
рекомендуется устанавливать равной 4-8. Однако чрезмерно большой размер
буфера также нежелателен, особенно на плохих линиях - при потере всего
одного пакета в случае сбоя на линии будет повторно затребован не один
потерянный пакет, а все пакеты из этого буфера, что займет некоторое
время.
TTL TTL (time to live, время жизни)
- количество хопов, то есть промежуточных серверов, через которые может
пройти ваш пакет в поисках своего места назначения. Каждый такой сервер
добавляет единицу к специальному счетчику в заголовке вашего пакета, и,
когда счетчик достигает максимально разрешенного значения, пакет
считается заблудившимся и прекращает свое существование. По умолчанию
TTL равен 32, что сегодня явно недостаточно для разросшегося Интернета:
нередки случаи, когда удаленный сервер находится более чем в 32
переходах, поэтому TTL следует увеличить как минимум до 64.
NDI Cache
NDI Cache (Network Device Interface Cache) - кэш, в котором хранятся
данные о маршрутах движения пакетов, по умолчанию его размер равен
нулю. Чтобы его задействовать наиболее оптимально, необходимо
установить его размер равным 16 при модемном соединении или 32 при
более скоростных подключениях.
Пожалуй, пора приступать к
настройкам. Часть данных хранится в ветви HKEY_LOCAL_MACHINE в разделе
SystemCurrentControlSetServicesClassNetTrans000. Здесь 0000 - номер
профиля (их может быть несколько, например, 0001, 0002,...). Значение
MTU выставляется с помощью строкового ключа MaxMTU (1500, 1002, 576,
552).
Для настройки следующих параметров откройте раздел
SystemCurrentControlSetServicesVxDMSTCP. Значение MSS устанавливается
строковым ключом DefaultMSS: его значение равно MaxMTU - 40.
RWIN
настраивается в строковом ключе DefaultRcvWindow. Поэкспериментируйте с
этим значением, но помните, что оно должно быть кратно MSS (MSS*4 или
MSS*8).
TTL настраивается с помощью строкового ключа DefaultTTL.
Вы можете разрешить Windows самой определять оптимальное значение MTU.
Если
опция включена, то Windows сама подбирает оптимальное значение MTU,
однако процедура вычисления MTU для каждого соединения требует немало
времени, что чуть тормозит работу при закачке небольших файлов и
веб-серфинге. Для установки этого параметра добавьте строковый ключ
PMTUDiscovery. Значение "1" включает его, "0" - выключает.
Обнаружение
черных дыр. Установка этого параметра разрешает протоколу TCP пытаться
обнаружить никуда не ведущие роутеры и те, что не возвращают
ICMP-сообщений о необходимости фрагментации при определении наилучшего
MTU. Это также, как и любая дополнительная процедура, может замедлять
работу в Интернете - попробуйте поэкспериментировать с ее отключением.
Для этого добавьте строковый ключ PMTUBlackHoleDetect со значением "1"
для включения и "0" для выключения.
Для настройки NDI Cache
откройте раздел
SystemCurrentControlSetServicesVxDNWLinkNdiparamscachesize и в значении
по умолчанию пропишите нужное число (16 или 32).
Вы можете
увеличить количество одновременных подключений к серверу, включив эту
опцию, что часто бывает весьма полезно, с помощью DWORD ключей
MaxConnectionsPer1_0Server (установите его значение в 10) и
MaxConnectionsPerServer (прировнять к 8). Эти ключи надо добавить в
раздел HKEY_CURRENT_USERSoftwareMicrosoft WindowsCurrentVersionInternet Settings. Удаление их приведет к отключению возможности.
Все
настройки вступают в силу после перезагрузки компьютера.
Поэкспериментируйте с различными значениями, и вы сможете увеличить
скорость подключения на 20-40%.