RSS icon Email icon Bullet (black)
  • Укрощение Интренет@

    Не все, что хорошо для одного случая, так же хорошо подходит для другого. Взять ту же фрагментацию уже рассмотренную выше. Автоматическое определение подходящего размера пакета не всегда увеличивает скорость соединения, нередко оно ее уменьшает, под час весьма значительно – автоматическое определение занимает какое-то время, увеличивая накладные расходы и снижая КПД. Имеет смысл попробовать найти оптимальное значение вручную.

    Первым делом необходимо указать Windows, что требуется использовать не максимально возможный, а заранее оговоренный размер пакета. Для этого установите значение ключа PMTUDiscovery (EnablePMTUDiscovery) в ноль. Затем задайте желаемый размер пакета. По умолчанию он равен 576 байтам – это значение по стандарту должны поддерживать все маршрутизаторы, да только кто эти стандарты соблюдает? Вот и встречаются узлы, обрабатывающие пакеты размером не более 512, 522, 556,… байт. В принципе, можно поставить 500 и не мучаться проблемой выбора, но так неинтересно. Разве не заманчиво методичным подбором байтов оптимизировать соединение до конца?

    Размер пакетов для Windows 95\98 задается ключом MaxMTU, находящимся в той же самой ветке реестра, что и предыдущие ключи. С Windows NT\2000 посложнее, – чтобы выяснить местоположение ключа MTU необходимо определить идентификатор используемого адаптера. Перечень всех адаптеров компьютера содержится в ключе Adapters ветки HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters. Как правило, большинство персональных компьютеров обходятся лишь одним адаптером – контроллером удаленного доступа (нет, это не плата расширения, это драйвер такой) и буридановой проблемы выбора нужного идентификатора не стоит. Идентификатор же – это такое длинное малопонятное число, например, «{20692835-7194-467A-A2DC-0FAE23F0A70D}».

    Запоминаем (записываем) его и открываем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ИдентиификаторАдаптера\Parameters\Tcpip (В Windows 2000 – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parameters\Tcpip\Interfaces\ИдентификаторАдаптера)

    Среди прочего хлама здесь должен находится только что запомненный идентификатор адаптера, а в нем – ключ MTU, содержащий в себе максимальный размер пакета в байтах. Если такого ключа нет, его необходимо создать. Тип ключа MTU в обоих случаях соответствует двойному слову (DWORD).

    Второй бастион оптимизации – размер TCP-окна. Чем «шире» окно, тем выше производительность, но в то же время больше издержки на повторные пересылки: случись какой сбой – не до конца заполненное окно очиститься и придется его «набивать» с самого начала. К тому же баловство с неумеренно широкими окнами часто приводит к образованию заторов в сети – промежуточные узлы не успевают обрабатывать сыплющийся на них поток пактов и все начинает жутко тормозить. Причем не только у виновника несчастья, но и у других ни в чем не повинных пользователей.

    Ширина TCP-окна должна быть кратна размеру пакета за вычетом длины заголовка и превосходить его по крайне мере в четыре – шесть раз. В некоторых случаях наивысшая производительность достигается при ширине окна в 10х-12х (где х – размер пакета без заголовка, называемый так же «квиком»), а то и больше. Некоторые отчаянные головы пробуют даже большие значения и утверждают, что все работает «на ура!», но у автора такие значения не показывают чудес производительности, поэтому, подтвердить сказанное он не берется. Размер заголовка непостоянен и варьируется от 40 до 60 байт – не забываете об этом при поиске оптимальной ширины окна!

    Для изменения размеров окна откройте ветвь реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP для Windows 95\98 и HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters для Windows NT\2000. Найдите или при необходимости создайте двоичный параметр (двойное слово, DWORD) DefaultRcvWindow для Windows 95\98 и TcpWindowSize для Windows NT\2000. Присвойте ему желаемое значение (например, «3680″, если размер пакета, заданный ключом MTU равен 500 байт – (500 – 40) * 8 = 3/600) и перезагрузитесь.

    Оцените, как изменилась скорость соединения. Если она возросла – увеличьте ширину окна еще на один квик (не байт!), если уменьшилась – сузьте окно, а если осталась без изменений, расширьте окно на пару квиков. Так, в конце – концов, будет найдено оптимальное значение.

    Страниц: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142

    Ваш отзыв