1

Мы знаем, что способ (базовый) TCP работает, начиная с фазы медленного старта с последующим линейным увеличением окна перегрузки (CWD). CWD настраивается в соответствии с состоянием сети. Поэтому, как только мы установим соединение, потребуется некоторое время, чтобы соединение достигло стабильного CWD, в зависимости от состояния сети.

Таким образом, по этой логике TCP-соединение будет пытаться заполнить все доступные ч / б ссылки. Таким образом, если имеется несколько TCP-соединений, каждое из них настроит свой CWD таким образом, чтобы минимальная перегрузка.

Итак, предположим, у меня есть канал 100 Мбит / с (топология приведена ниже). У меня есть приложение, которое отправляет UDP-трафик. У меня есть другое приложение iperf которое может инициировать параллельные соединения TCP по той же ссылке.

[h1] ---- 100 Mbps ---- [h2]

h1 (UDP + iperf client)
h2 (UDP + iperf server)

Я делаю эксперимент следующим образом

  1. 1 UDP + 1 TCP
  2. 1 UDP + 2 TCP
  3. 1 UDP + 4 TCP
  4. 1 UDP + 8 TCP и т.д.

Мой вывод говорит, что пропускная способность 1 TCP-соединения ниже, чем пропускная способность 8 TCP-соединений вместе взятых (Exp 1 против Exp 4). Следует иметь в виду, что индивидуальная пропускная способность 8 соединений значительно ниже (что очевидно).

Итак, мой вопрос: почему одно TCP-соединение не может использовать полное ч / б, которое 8 TCP может сделать вместе?

1 ответ1

1

Если вы используете CUBIC или другой алгоритм управления перегрузкой AIMD, когда он достигает перегруженности, он быстро немного понижает скорость, а затем медленно увеличивает ее, чтобы снова найти максимум. Это оставляет небольшие «гребешки» (в графике tcptrace) неиспользованной полосы пропускания, которые могут заполнять другие потоки. Если поток UDP имеет фиксированную скорость, он не заполнит эти пробелы. Но другие конкурирующие потоки TCP, безусловно, будут. Я подозреваю, что чем больше у вас потоков TCP, тем больше они будут заполнять любую полосу пропускания, оставленную другими мерами контроля перегрузки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .