О производительности TCP-реализаций Linux и Windows

13

Я понимаю, что реализация стека TCP в Windows и Linux различна. Windows использует алгоритм контроля перегрузки, известный как TCP Reno, в то время как Linux использует Cubic.

Как сравниваются 2 протокола, если они сосуществуют в одной сети? Правда ли, что Cubic (Linux) более агрессивен и может в конечном итоге получить большую долю пропускной способности?

AIB
источник

Ответы:

4

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

Тем не менее, Cubic на самом деле более агрессивен, особенно для сетей с продуктом с задержкой пропускной способности. Существует даже правило, встроенное в реализацию Linux, чтобы никогда не использовать меньшую скорость отправки, чем у Reno в той же ситуации:

Кубический алгоритм Linux также включает в себя код, который гарантирует, что кубический алгоритм по крайней мере такой же агрессивный, как стандартный TCP

- Лейт, Шортен, МакКаллаг, Экспериментальная оценка Cubic-TCP

Таким образом, при загрузке обновлений Windows во время просмотра видео Youtube ваш трафик Youtube может истощить ваш трафик Microsoft, и вы ничего не можете с этим поделать.

artistoex
источник
12

Во-первых, то, что вы говорите, на самом деле не правильно

  • Linux до версии ядра 2.6.18 по умолчанию использует BIC .
  • Ядро Linux 2.6.19 и новее по умолчанию использует CUBIC .
  • Механизмы управления перегрузкой TCP в Linux являются подключаемыми , например, вы можете изменить их сразу.
  • Windows XP и более ранние версии используют TCP Reno (или New Reno )
  • В Windows Vista и более поздних версиях также имеется составной TCP , который по умолчанию включен в Server 2008 и может быть включен в Vista и Windows 7 при необходимости.

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

Таким образом, вы не можете реально сравнить одно с другим, не глядя на конкретную топологию сети, используемое оборудование и программное обеспечение и т. Д. Это не значит, что одно лучше другого или будет использовать большую долю доступной пропускной способности. Это правда, что CUBIC менее агрессивен, чем BIC, но на практике другие соображения часто более важны, чем тот, который используется в алгоритме перегрузки TCP.

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

haimg
источник
Сетевой сценарий - перегруженная локальная сеть 100 Мбит / с с 1000 нечетными компьютерами. Подключение к Интернету через прокси-сервер. Некоторые компьютеры работают под управлением Linux, в то время как большинство основано на Windows. Похоже, что просмотр через Linux быстрее. Я пытался рационализировать это наблюдение
AIB
Трудно сказать, не измеряя и не видя, что на самом деле происходит в вашей сети. Но я думаю, что вероятность разницы в алгоритмах перегрузки TCP довольно мала, особенно если ваша сеть не перегружена на 100%. Есть много других факторов, которые могут повлиять на скорость просмотра.
Haimg