Тестирование настроек протокола TCP/IP для модемных соединений
Можно смело предположить, что нет таких пользователей,
которые были бы полностью довольны производительностью своих dial-up
соединений в Интернет. Приходится долго ждать загрузки web-страниц,
особенно, с картинками. А загрузка больших файлов - также занятие не
из приятных. Чтобы улучшить ситуацию, одни планируют покупку
новейшего модема, другие - изучают настройки протокола TCP/IP, с
помощью которых можно, как считается, оптимизировать скорость
загрузки данных на компьютер. В нашем исследовании мы попытаемся
ответить на вопрос, какого эффекта можно ожидать от этих мероприятий
по улучшению коннекта.
MTU (IPMTU) - Maximum Transmission Unit.
Максимальная единица транспортировки. Максимальный размер пакета,
который может проходить по данной сети или через данный узел или
шлюз. Первоначально размер пакета определяется источником, но если
по пути встретится узел, настроенный на меньший размер, то пакет
разбивается на меньшие пакеты и не собирается в первоначальный
вплоть до приемника. При этом один из пакетов получается почти
пустым или полупустым. В Интернет наиболее типичными являются
значения MTU 1500 и 576 бит, в других сетях могут быть также
значения 552 и 1002. Считается, что Windows автоматически выставляет
MTU в 576 при скорости соединения менее 128 кбит/сек и в 1500 - при
большей скорости.
MSS - Maximum Segment Size. Максимальный размер
сегмента данных. Этот размер менее MTU на величину размера сегмента
заголовков (заголовок TCP + заголовок IP, 20 + 20 байт). MSS = MTU -
40.
RWIN - Receive Window. Буфер приема данных
освобождается по мере заполнения. Размер буфера кратен размеру MSS.
Чем больше буфер, тем больше пропускная способность (но в случаях
потери пакета получается неоправданный простой в передаче). TTL - Time To Live . Время жизни пакета определяется
источником и контролируется на транзитных узлах и шлюзах, при
исчерпании TTL пакет анулируется даже если еще не достиг цели. По
истечении TTL источник, не получив подтверждения приема, повторяет
посылку, так как пакет считается утерянным. Большое значение TTL
замедляет передачу данных, так как источник неоправданно долго
ожидает подтверждения. Значение TTL записано в заголовке пакета и
списывается по единице при прохождении очередного узла по маршруту и
по истечении некоторого промежутка времени.
NDI Cache - Network Device Interface Cache. Кэш, в
котором хранятся данные о маршрутах движения пакетов. Считается, что
оптимальное значение равно 16 при модемном соединении и 32 - при
более скоростных подключениях.
MTU Auto Discover - автоопределение MTU. Если опция
включена, то Windows сама подбирает оптимальное значение
MTU.
MTU Black Hole Detect - обнаружение "черных дыр".
Установка этого параметра разрешает протоколу TCP пытаться
обнаружить никуда не ведущие роутеры и те, что не возвращают
ICMP-сообщений о необходимости фрагментации при определении
наилучшего MTU.
Sack Opts - учет подтверждений. Позволяет избежать
запросов на повторную трансляцию данных, которые были приняты
успешно. При значительном количестве ошибок может увеличить
скорость.
Из многих программ аналогичного назначения iSpeed является
наиболее отработанной и удобной. Если кратко, то работа с этой
программой выполняется в следующем порядке:
1.
Открываем вкладку Adapters...
На
этой вкладке решаются две задачи: выбор размера MTU, и выбор
адаптера, с которым мы будем работать. Если обнаружено несколько
адаптеров, то они показываются списком выбора. Нам нужен адаптер
Удаленного доступа, с которым и работает модем. Если выбора нет, то
и выбирать не нужно. Далее, выбираем размер пакета (MTU).
Предлагается 4 основных значения: 552, 576, 1002 и 1500, которые
могут быть оптимальными для разных типов сетей. Для Интернет
оптимальными могут быть 1500, либо 576. Программа позволяет
установить любое другое значение, а также экспериментально
определить список размеров, которые проходят без фрагментации по
заданному адресу (узла или ИП). Для перехода к эксперименту надо
подключиться к Интернету и нажать кнопку Discover MTU. В общем
случае следует начать с значения MTU=1500.
Примечание: Кроме общего случая, когда мы заранее не
знаем, с какими узлами мы будем работать, сегодня бывают частные
случаи, когда мы ежедневно работаем с одними и теми же узлами и
службами Интернет. Здесь тактика настройки может быть другой. Если
есть проблемы при работе с узлом - проверьте доступ к этому узлу при
разных размерах пакета. Для этой цели используйте функцию программы
iSpeed Discover MTU. Работа этой функции видна на следующей
картинке:
Здесь проделана проверка узла при разных размерах пакета,
начиная с 576 и далее - с шагом 12. До значения 1308 отклик сервера
был нормальным, а на значении 1320 - отклик прекратился. Это должно
послужить нам сигналом о том, что нужно подобрать новый размер
пакета специально для соединения с этим узлом.
В нашей практике был такой случай: на рабочей
станции стоял пакет обработки биржевых котировок в реальном времени.
Так называемый Data Feed Service. Фирма - поставщик данных
находилась в США. В процессе работы, к программе возникали
претензии, в связи с тем, что на период от нескольких секунд до
нескольких минут, поставка биржевых котировок прерывалась, зависала,
и потом с опозданием программа "выстреливала" пропущенные данные. В
результате чего Трейдеры не успевали оперативно реагировать на
изменения стоимости акций и несли убытки. При исследовании проблемы
была произведена трассировка соединения. От компьютера трейдера до
сервера поставщика данных было порядка 20 промежуточных узлов.
Причем путь лежал через Москву, С-Петербург, несколько стран Европы,
и несколько серверов в Америке. На конечных узлах потери пакетов
доходили до 30-40%, а в моменты пиковых нагрузок Интернет, сервер
поставщика данных не был "виден" вообще. Решить проблему удалось
путем уменьшения размера пакета. Оптимальный размер пакета был
подобран экспериментальным путем, и его значение составило 512.
Далее значение MTU было вручную изменено в реестре Windows на
компьютере трейдера. При этом потери уменьшились до приемлемых 3-5%,
задержка в подаче биржевых котировок прекратилась. Программа iSpeed
очень полезна для аналогичных случаев, так как позволяет определять
параметр MTU и другие настройки приема и передачи автоматически,
максимально просто и быстро. И что самое главное, вносит эти
значения в системный реестр!
Выбрав значение MTU переходим на следующую вкладку. 2.
Вкладка Global...
На
этой вкладке устанавливаются значения параметров протокола TCP/IP,
которые действительны для всех адаптеров, установленных на
компьютере и использующих этот протокол.
MSS
- устанавливается или рассчитывается (Calculate), исходя из
выбранного значения MTU (MSS = MTU - 40).
RWIN - задается множителем для MSS в пределах 1 - 16,
соответственно, величина принимает значения от MSS до MSS *
16.
Для
MTU = 1500 имеем MSS = 1460 и RWIN = 1460 - 23360.
TTL
- задается одним значением из списка (0, 32, 64, 128). Причем в
случае выбора нулевого значения устанавливается значение по
умолчанию самого протокола TCP/IP.
Кроме того, на этой вкладке имеются включатели/выключатели
следующих опций: Window Scaling - масштабируемость окна. MTU Auto
Discover - автоматическое определение MTU. MTU Black Hole Detect -
обнаружение Черных дыр. Sack Opts - учет принятых пакетов. Только
для Windows 98 и ME имеется настройка: MDI Cache Size - размер
некоего кэша в пределах списка (0, 32, 64, 128).
Ко
всем настройкам этой вкладки нужно относиться так: заранее (априори)
не известно, какие значения следует установить, в противном случае
их бы уже установили по умолчанию. Таких условий связи, как у вас -
больше нет ни у кого, поэтому чужие советы по значениям настроек вам
не подходят. Единственная возможность как-то оптимизировать связь -
определить экспериментально оптимальные значения параметров. Нужно
ли этим заниматься и что это может нам дать - мы узнаем дальше по
результатам нашего исследования.
Прежде чем вносить изменения параметров, которые мы здесь и
на первой вкладке произвели, полезно дать команду Settings\Backup
Registry Keus на сохранение текущей настройки, и только после этого
File\Save Settings. По этой команде сделанные изменения заносятся в
системный реестр в журнал History Records и после перезагрузки
компьютера вступают в силу.
На
вкладке FTP Tests выполняется тестирование по следующей схеме:
выбирается профиль (профиль 1 определяется узлом ftp.microsoft.com и
файлом на этом узле AUG96HCL.EXE). TraceRoute ресурса содержит 15
узлов, файл имеет размер 290 килобайт. По команде "Старт"
организуется загрузка файла и по окончании - запись результата в
журнал. Записывается комментарий (например, номер испытания, дата,
время все настройки и результат - скорость загрузки файла в
байт/сек). Автоматическое фиксирование результата и условий
испытания освобождает от человеческого фактора (ошибок испытателя).
Предусмотрена возможность создания собственных профилей. Для этого
нужно определить DNS выбранного узла, папки и название файла
размером 200-300 Кбайт. Задача оказалась непростой из-за трудности
отыскания безотказного и надежного сервера. Было опробовано 5-6
узлов, но все они начинают отказывать в доступе, начиная со 2-3
теста.
Испытания заключались в проведении стандартных (для
программы iSpeed) тестов для различных значений настроек. При этом
после каждого испытания соединение разрывалось и выполнялась
перезагрузка компьютера. Для однообразия по данным статистики был
выбран номер телефона провайдера, по которому соединения всегда
устанавливаются с одинаковой скоростью (26.4 kbps). Результаты
испытаний приводятся далее в таблицах.
Испытание настроек RWIN (TTL = 0)
Множитель |
RWIN |
Скорость, байт/с |
1 |
1460 |
1964 |
2 |
2920 |
2005 |
4 |
5840 |
2062 |
6 |
8760 |
1476 |
8 |
11680 |
1864 |
10 |
14600 |
1461 |
12 |
17520 |
2047 |
14 |
20440 |
1690 |
16 |
23360 |
1411
| Эти
же результаты на вкладке Analysis программы iSpeed выглядят
так:
Результаты таблицы получены при следующих значениях
настроек:
MTU - 1500 RWIN - переменно TTL - 0 Window Scaling - Window Scaling MTU Auto Discover - выкл. MTU Black Hole Detect - выкл. Sack Opts - выкл. По
данным таблицы можно сделать более или менее уверенный вывод, что
наилучшим значением настройки является значение RWIN = 5840 или М
(множитель) = 4. Можно было бы еще посмотреть значение при М=5, но
это обнаружилось позже. Для последующих испытаний устанавливаем
настройку RWIN = 5840 на постоянную прописку.
Испытание настроек TTL (RWIN = 5840)
Установка |
1-ая серия испытаний |
2-ая серия испытаний |
3-ая серия испытаний |
4-ая серия испытаний |
Среднее значение |
0 |
1309 |
1597 |
1888 |
1206 |
1500 |
32 |
1327 |
1597 |
1597 |
1109 |
1408 |
64 |
1242 |
1404 |
1700 |
1191 |
1384 |
128 |
923 |
1864 |
1633 |
975 |
1349
| Результат первой серии этих испытаний показался мне
неубедительным, и было проведено еще 3 серии. Поскольку образовалась
избыточность, появилась возможность оценить меру случайности в
полученных результатах. Такой мерой принято считать Стандартное
(или, по другому, Среднее квадратическое отклонение), которое
достаточно просто рассчитывается. По данным нашей таблицы для
отдельного результата СКО = +- 365, а для среднего из четырех СКО =
+- 182. С учетом полученной характеристики можно сказать, что
значения средних (из четырех) скоростей действительно отличаются
друг от друга за счет изменения настройки, а не по случайным
причинам, если различие составляет хотя бы два СКО или более. В
нашей таблице этому критерию не удовлетворяют ни отдельные
результаты, ни средние из четырех.
Абсолютно все значения могли быть результатом чисто
случайных причин, и никак не связаны с нашими настройками. И, тем не
менее, у нас больше оснований установить для дальнейших испытаний
настройку TTL = 0, чем брать значение наугад. При этом нужно иметь в
виду, что TTL в принципе не может быть нулевой, в данном случае в
реестр записывается значение параметра как default, а
соответствующее числовое значение, скорее всего, равно 32, судя по
нашей таблице
Включение опций (TTL = 0, RWIN = 5840)
Установка |
1-ая серия испытаний |
2-ая серия испытаний |
3-ая серия испытаний |
4-ая серия испытаний |
Среднее значение |
0 |
1530 |
1340 |
1327 |
1122 |
1329 |
1 |
1269 |
1153 |
1211 |
1292 |
1231 |
2 |
1286 |
985 |
941 |
816 |
1007 |
3 |
1211 |
1286 |
1876 |
1093 |
1366
| ...где установки:
1. MTU Auto Discover 2. MTU Auto Discover + MTU Black Hole
Detect 3. Sack Opts В
этой таблице даны результаты испытаний по включению опций.
Результаты имеют избыточность, поэтому возможна оценка меры
случайности в результатах. Для одиночного результата СКО = 167, а
для среднего из четырех СКО = 83. Как видим, здесь случайностей
меньше, чем в предыдущем испытании. Скорее всего, это связано с тем,
что данные испытания проводились в один день. Исходя и полученных
результатов, можно заключить, что опции MTU Auto Discover и MTU
Black Hole Detect лучше не включать, а опцию Sack Opts можно
включить.
Испытание настроек MTU (TTL = 0, RWIN = 4)
Установка |
1-ая серия испытаний |
2-ая серия испытаний |
3-ая серия испытаний |
4-ая серия испытаний |
Среднее значение |
1500 |
1398 |
1555 |
1580 |
1876 |
1602 |
576 |
1073 |
1453 |
1221 |
1606 |
1338 |
1002 |
2077 |
1624 |
1140 |
1221 |
1515
| В
этом испытании изменялись размеры MTU при прочих одинаковых
настройках. Наилучшее значение этой настройки в данном испытании
равно 1500, его мы и примем за оптимальное. Таким образом,
оптимальные настройки по нашим испытаниям выглядят так:
MTU = 1500 RWIN = 4 (множитель) TTL = 0 (default) или 32 Sack Opts = enabled Теперь осталось выяснить, как скорость с оптимальными
настройками отличается от скорости с настройками, которые Windows
устанавливает по умолчанию. Для этой цели можно было бы использовать
установку Windows Default setting, которая имеется в программе
iSpeed, но эта настройка изменяет только значение MTU и не влияет на
другие. Таким образом, ответ на поставленный вопрос уже имеется в
результатах проделанных испытаний. Формально, выигрыш можно оценить
повышением скорости с 1338 до 1602 байт/сек, то есть на 20%.
Фактически, с учетом оптимизации параметра RWIN, выигрыш составляет
30-40%. Исходя из этого, можно решить, стоит ли заниматься
оптимизацией параметров протокола TCP/IP или нет.
Испытание настроек на произвольных узлах
Узел |
TraceRoute |
TTL |
Скорость, байт/сек |
ftp.freeware.ru |
10 |
32 |
2106 |
ftp.icm.edu.pl |
14 |
32 |
1495 |
ftp.cyt-cr.edu.pl |
14 |
32 |
1131 |
ftp.task.gda.pl |
14 |
32 |
1197 |
ftp.tuniv.szcecin.pl |
30 |
32 |
1661 |
ftp.tuniv.szcecin.pl |
30 |
64 |
1849 |
ftp.tuniv.szcecin.pl |
30 |
128 |
1124 |
ftp.freenet.dl |
15 |
32 |
1844 |
ftp.ciril.fr |
20 |
32 |
1120 |
ftp.euro.net |
17 |
32 |
1850 |
ftp.labyrinth.net.au |
16 |
32 |
1056 |
ftp.pacific.net.hk |
17 |
32 |
1388 |
ftp.tpnet.pl |
23 |
32 |
1347 |
ftp.carrier.kiev.ua |
16 |
32 |
1260 |
ftp.elf.stuba.sk |
19 |
32 |
1913 |
ftp.singnet.com.sg |
18 |
32 |
1911 |
ftp.uni-heidelberg.dl |
20 |
32 |
1375 |
ftp.uni-koeln.de |
30 |
32 |
2233 |
|
|
|
|
Среднее |
|
|
1548
| Испытания на произвольных узлах выполнены по следующей
схеме:
1. С помощью FTP-поисковика получен список узлов для
загрузки файла EasyMTU размером 360 Кбайт.
2. Программа FlashGet настроена на загрузку одного файла
в один поток.
3. В каждом испытании с помощью программы CyberCit
(функция TraceRoute) определялось число узлов по маршруту до узла
загрузки файла.
4. Выполнялась загрузка файла программой FlashGet.
Скорость загрузки вычислялась самой программой по фактическому
размеру файла и фактическому времени загрузки. В результате этого испытания появилась возможность сравнить
результат, полученный по одному узлу при тестировании с результатом,
полученным множеству узлов (18 серверов FTP). Мы должны оценить, как
согласуются между собой показатели скорости 1602 +-100 из таблицы 4
и 1548+-89 из таблицы 5. С учетом СКО ( +-100 для первой величины и
+-89 для второй величины) следует признать, что характеристики почти
совпадают. А это означает, что результаты тестирования действительны
для большинства реальных маршрутов загрузки.
Характеристика оборудования, на котором проводились
испытания:
Процессор: Intel Celeron 1700MHz Память: 256 Мбайт (DDR SDRAM) HDD ST360015A (60 Gb, 7200PRM) Windows 2000 Pro, SP3 Модем: ZYXEL Omni56K UNO Телефон: АТС 515 Провайдер: МТУ-ИНТЕЛ Несколько замечаний по условиям проведения наших испытаний:
1. Испытания проводились на одной и той же телефонной
линии с одним и тем же Провайдером. Абсолютные значения
результатов в других условиях могут быть существенно другими, но
относительные должны в основном совпадать.
2. Полученные здесь результаты можно использовать для
сокращения объема ваших тестирований при настройке за счет отброса
проверки явно невыгодных настроек. Можно сразу установить
оптимальные настройки полученные здесь и проверить, насколько они
подходят для ваших условий.
Некоторые испытания мы провели на другом оборудовании.
Процессор: Intel Pentium MMX, 166 MHz Память: 128 Мбайт HDD Quantum Fireball (9.5 Gb, 5400 RPM) Windows 98 SE Модем: Eline ELC-576E(I) Телефон: АТС 515 Провайдер: МТУ-ИНТЕЛ Как
видим, в сравнении с предыдущим это оборудование можно считать
относительно допотопным. Два элемента остались без изменений. Это -
телефонный узел и Провайдер. Приводимая далее таблица является
аналогом первой таблицы предыдущей серии испытаний...
Испытание настроек RWIN (TTL = 0, NDI Cache =
16)
Множитель |
RWIN |
Скорость, байт/с |
1 |
1460 |
2254 |
2 |
2920 |
2271 |
4 |
5840 |
2271 |
6 |
8760 |
2345 |
8 |
11680 |
2307 |
10 |
14600 |
2345 |
12 |
17520 |
2307 |
14 |
20440 |
2091 |
16 |
23360 |
2307
| Из
сравнения таблиц следует, что здесь уровень показателей скорости
загрузки несколько выше, чем на основном оборудовании (максимум =
2345 и максимум = 2062).
Тесты оптимальных настроек. МТУ-ИНТЕЛ, АТС
493
Параметр |
Значение |
Число испытаний |
7 |
Средняя скорость, байт/сек |
2565 |
Среднее квадратическое отклонение
(СКО) |
469
| Это
испытание мы провели на другом телефонном узле. Оборудование здесь
практически полностью аналогично нашему, и точно такой же модем
(ZYXEL Omni56K UNO). Испытания проводились тестированием при помощи
программы ISpeed, как и во всех предыдущих случаях. Настройки
протокола были установлены на значения, которые мы определили выше,
как оптимальные. Настройки в серии не менялись, но соединение
перезванивалось, и скорости соединения были в разных тестах разные -
от 28.8 до 43 kbps. Это, видимо, обусловило повышенную меру
случайности в этом испытании (СКО = 469 бит/сек). В общем, есть
основания предположить, что на этом телефонном узле (АТС 493)
условия модемного соединения несколько лучше, чем на предыдущем (АТС
515), но принципиально скорость загрузки файла не
изменилась.
1.
Модемное dial-up соединение следует относить к морально устаревшей
технологии, которой мы вынуждены пока еще пользоваться. 2.
Если мы используем модемное соединение с повременной оплатой, то
имеет смысл применять любые возможности, чтобы несколько улучшить
наш трафик. Одной из таких возможностей является оптимизация
параметров (настроек) протокола TCP/IP, которая может повысить
производительность наших соединений на 20-40% и тем самым
существенно снизить расходы на оплату доступа в Интернет. 3.
Для настройки рекомендуется применять программу iSpeed, которая
отличается от множества других программ аналогичного назначения тем,
что в ней очень ясно, что именно она делает и, кроме того, позволяет
проводить тестирование для осмысленного отыскания оптимальных
значений настроек.
О программе:
Домашняя страница проекта iSpeed: http://www.hms.com/ispeed.asp
|