Hosted by uCoz

Оптимизация модемного соединения
с Интернетом в Windows 9x-2

Сергей Трошин
http://stnvidnoye.chat.ru

stnvidnoye@chat.ru

Определение MTU вручную

Для адекватных результатов экспериментов обязательно необходимо выставить в операционной системе максимальный размер MTU=1500. Поэтому, если вы уже пытались изменять этот параметр с помощью какой-то программы или вручную в реестре, то обязательно отмените все внесенные изменения, вернув default-настройки.

В этом вам помогут утилиты Internet Tweak 2001 (http://www.magellass.com/), NetBoost 99 (http://www.download.ru/), iSpeed (http://www.hms.com/), MTUSpeed (http://www.mjs.u-net.com/), BlazeNET (http://www.indeavour.com/html_about_blazenet.htm) - выбирайте по вкусу. В реестре же вам придется проконтролировать это в разделе
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Class\NetTrans\000х

Если найдете там параметр MaxMTU, то смело удаляйте его. Далее, открываем "Панель управления" (Control Panel) - "Сеть" (Network), выбираем "Контроллер удаленного доступа" (Dial-Up Adapter) и жмем кнопку "Свойства" (Properties). На вкладке "Дополнительно" (Advanced) появившегося меню устанавливаем большой размера IP-пакета ("IP Packet Size" - "Large"). Тем самым мы установили для нашего соединения MTU=1500. Перегружаем компьютер, чтобы изменения вступили в силу.

Теперь надо установить соединение с интернетом и посмотреть, будут ли фрагментироваться пакеты различного размера. Для этого можно использовать и стандартную программу Ping из комплекта Windows, задавая ей такие параметры: ping -f -l 1500 ххх.ххх.ххх.ххх, где "ххх.ххх.ххх.ххх" - IP-адрес тестируемого сервера, а "-I" - это буква L, а не единица.

Но гораздо удобнее применять что-нибудь типа утилит CyberKit (http://www.cyberkit.net/) или IPTools (http://www.ks-soft.net/ip-tools.eng/index.htm) - в них есть приятный графический интерфейс вместо анахронизма командной строки Ping. Определяем сначала этой же многофункциональной программой IP-адрес одного из серверов вашего провайдера, тем самым мы избежим запросов к DNS-серверу во время тестирования.

Примените для этого вкладку "TraceRoute", введя в поле адреса URL провайдера. Теперь полученный IP вводим на странице "Ping", задаем для начала размер пакета 1500 и ставим флажок "Don't fragment" - "Не фрагментировать". В поле, где задается количество тестовых пакетов ставьте штук 5-6 - для того чтобы исключить случайные ошибки. Кстати, тест лучше проводить глубокой ночью, когда на линиях сидит мало народа и помех в телефонных сетях минимум.

Если никакого ответа не получено и наш пакет потерян, так как фрагментировать мы его запретили, а его размер слишком велик для настроек оборудования провайдера, то начинаем постепенно уменьшать величину пакета до тех пор, пока не станем получать отклики от сервера со значением этого самого "пинга". Так, например, для провайдера CEA мы получим размер неделимого пакета в 1472 байта. Означает ли это, что он использует MTU=1472?

Нет, у него MTU=1500, просто Ping прибавляет к нашим данным заголовок, который по-разному учитывается удаленными серверами, например, CEA не принимает во внимание заголовок IP (20 байтов) и ICMP (8 байтов) при отчете о своем MTU. Если же вам не повезло, и ваш провайдер выбрал меньшее значение, то ищите его среди таких чаще всего попадающихся цифр (также не забывая и о заголовке пакета): 1524, 1152, 1024, 1006, 576, 568, 560, 552, 548, 536, 528, 520, 512.

Таким образом, мы выяснили, что можно выбирать любой MTU, вплоть до 1500. Попробуйте теперь осуществить загрузку одного и того же ZIP-файла размером 1 мегабайт с одного и того же быстрого сервера при разных значениях MTU - максимальном, полученном от провайдера, и рекомендуемом 576. Для чистоты эксперимента отключите автоопределение MTU - параметр PMTU Discovery (о том, как его найти в реестре, читайте в конце статьи).

Скорее всего, вы обнаружите, что наши расчеты, говорящие о предпочтительности больших пакетов, справедливы. Проведите и такой эксперимент: "пингуйте" наибольшим нефрагментируемым пакетом (в нашем случае это 1472, то бишь MTU=1500) сайты, занесенные в список закладок. Вас ждет удивительное открытие - оказывается, большинство сайтов прекрасно воспринимают MTU=1500 и все пакеты до них доходят нефрагментированными.

Где же тот самый MTU=576, который якобы преобладает в интернете? Проверьте также и свою любимую сетевую игру при разных MTU. Исходя из полученных данных, а не из того, что вам советуют всевозможные "эксперты", сами никогда не проделывавшие подобных опытов, а повторяющие только то, что принято за истину на загнивающем Западе, вы уже гораздо более объективно определите, какое же значение наилучшим образом согласуется с вашим интернет-доступом - наибольшее или меньшее.

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

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

Кстати, если вы обнаружите, что у провайдера установлено MTU=512 и менее, то есть смысл подумать о его смене - слишком много шлака будет передаваться вместе с вашими данными.

Другие параметры

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

Поэтому и тут крайне желательно для каждого параметра провести свой эксперимент, определяя, какой эффект вызывает его изменение в вашей конкретной системе. Многие из этих параметров легко выставляются с помощью все тех же незамысловатых утилит, что и MTU.
RWIN (receive window, окно приема) - размер буфера, в котором накапливается содержимое области данных (MSS) нескольких полученных пакетов, прежде чем передается дальше, например, в браузер. При недостаточном размере этого буфера иногда происходит его переполнение и поступающие пакеты отвергаются и теряются.

Размер RWIN обязательно должен быть кратен MSS и обычно для лучшей эффективности модемного соединения кратность рекомендуется устанавливать равной 4-8. Однако чрезмерно большой размер буфера также нежелателен, особенно на плохих линиях - при потере всего одного пакета в случае сбоя на линии будет повторно затребован не один потерянный пакет, а все пакеты из этого буфера, что займет некоторое время.

В реестре этот параметр находится здесь: 
KEY_LOCAL_MACHINE\System\CurrentControl
Set\Services\VxD\MSTCP
"DefaultRcvWindow"="ваше значение" 
TTL (time to live, время жизни) - количество хопов, то есть промежуточных серверов, через которые может пройти ваш пакет в поисках своего места назначения. Каждый такой сервер добавляет единицу к специальному счетчику в заголовке вашего пакета, и, когда счетчик достигает максимально разрешенного значения, пакет считается заблудившимся и прекращает свое существование. По умолчанию TTL равен 32, что сегодня явно недостаточно для разросшегося интернета: нередки случаи, когда удаленный сервер находится более чем в 32 переходах, поэтому TTL следует увеличить как минимум до 64: 
HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\VxD\MSTCP
"DefaultTTL"="64"
IPMTU - Internet Protocol MTU - в Windows 98, по сути, это то же самое, что и MTU, но применительно только к контроллеру удаленного доступа.

В реестре он упоминается несколько раз: 
HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Services\Class\Net\000х
"IPMTU"="1500" 
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Class\Net\000х\Ndi\params\IPMTU
"default"="1500"
@="1500"
PMTU (Path MTU, путевое значение MTU) - этот параметр разрешает Windows самой определять оптимальное значение MTU при организации соединения с каждым сервером. При этом серверу посылается ряд нефрагментируемых пакетов разного, постепенно уменьшающегося размера и как только очередной пакет достигнет сервера, его размер и считается оптимальным. На эту процедуру, разумеется, требуется некоторое время и по умолчанию она включена, в связи с чем часто советуют ее дезактивировать, что, пожалуй, все-таки довольно спорно - потерять на этом времени можно больше из-за того, что наилучший размер блока данных определен не будет и пакеты пойдут фрагментированными.

Выключается же этот режим так:
HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\VxD\MSTCP
"PMTUDiscovery"="0"

PMTUBlackHole
Detect (обнаружение "черных дыр") - установка этого параметра разрешает протоколу TCP пытаться обнаружить никуда не ведущие роутеры и те, что не возвращают ICMP-сообщений о необходимости фрагментации при определении наилучшего MTU. Это также, как и любая дополнительная процедура, может замедлять работу в интернете - попробуйте поэкспериментировать с ее отключением:
HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\VxD\MSTCP
"PMTUBlackHoleDetect"="0"

SessionKeepAlive (поддержание соединения) - определяет, как часто будут посылаться специальные пакеты информации, предотвращающие отключение вас сервером в случае отсутствия активности в Сети с вашей стороны. Минимум - одна минута, по умолчанию - один час в Windows Me / 9x и два часа в Windows 2000. Рекомендуемый интервал - 10 минут, параметр задается в секундах: 
HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\VxD\MSTCP "SessionKeepAlive"="600"

SlowNet - отключение этой функции может сократить задержки в передаче данных, но сей эффект уловить не так-то просто.
HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\
Class\Net\000х
"SLOWNET"=hex:00

NDI Cache (Network Device Interface Cache) - кэш, в котором хранятся данные о маршрутах движения пакетов, по умолчанию его размер равен нулю. Чтобы его задействовать наиболее оптимально, необходимо установить его размер равным 16 при модемном соединении или 32 при более скоростных подключениях:
HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Services\VxD\NWLink\Ndi\params\cachesize
@="16"

В реестре обычно рекомендуется выставить еще некоторые параметры, влияние которых на качество связи проследить вообще чрезвычайно сложно, но попробовать поэкспериментировать с их значениями можно:
HKEY_LOCAL_MACHINE\System\CurrentControl
Set\Services\VxD\NWLink\Ndi\params\maxconnect
@="64"
"max"="128"
"min"="2"
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\VxD\NWLink\Ndi\params\maxsockets
@="255"
"max"="1020"
"min"="32"
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\VxD\NETBEUI\Ndi\params\ncbs
"default"="32"
"max"="255"
"min"="8"
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\VxD\NETBEUI\Ndi\params\sessions
"default"="32"
"max"="117"
"min"="4"

А нижеследующие параметры устраняют, по заверениям Microsoft, какие-то "глюки" Windows и увеличивают скорость работы вашего браузера:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\VxD\MSTCP
"BSDUrgent"="1"
"Tcp1323Opts"=dword:00000003
"SackOpts"="1"

А вот так вы увеличите количество одновременных подключений к серверу, что часто бывает весьма полезно: 
[HKEY_USERS\.DEFAULT\Software\Microsoft\
Windows\CurrentVersion\Internet Settings]
"MaxConnectionsPer1_0Server"=dword:0000000a =10
"MaxConnectionsPerServer"=dword:00000008 =8

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

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

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

<< назад

Источник: http://www.computery.ru/upgrade/


Copyright © "Internet Zone"
Источник получения информации http://www.izcity.com/