Я начинающий сетевой инженер.
Я провел небольшой эксперимент с iperf3. Но я столкнулся с небольшой проблемой.
(1) Мой вопрос.
Я думаю, что поток TCP не работает должным образом, несмотря на контроль перегрузки.
Поток снижает свою скорость из-за перегрузки (скорость потока> ссылка пропускная способность).
Однако его cwnd постоянно увеличивается.
Как это может случиться?
(2) Среда эксперимента
Ubuntu 14.04
Mininet 2.3.0d5
: [TOPOLOGY] HOST1 -SWITCH1 - HOST2
Linux TC
на версия ядра 4.4.0-148-generic
: установить всю полосу пропускания 100 Мбит / с с правильным размером MTU
(3) Содержание эксперимента
Я сгенерировал поток со скоростью 130 Мбит / с, от H2 к H1.
Из-за пропускной способности канала 100 Мбит / с,
Он должен снизить свою скорость со 130 Мбит / с до 100 Мбит / с из-за алгоритма перегрузки
. Я наблюдал это уменьшение и алгоритм перегрузки.
a. server : iperf3 -s -p 1212 -f m -A 7 -i 1
b. client : iperf3 -c 10.0.0.1 -p 1212 -t 10 -f m -b 130M -A 7 -l 63k -w 10M -i 1
Connecting to host 10.0.0.1, port 1212
[ 4] local 10.0.0.2 port 42010 connected to 10.0.0.1 port 1212
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 14.0 MBytes 118 Mbits/sec 0 570 KBytes
[ 4] 1.00-2.00 sec 15.5 MBytes 130 Mbits/sec 0 1.13 MBytes
[ 4] 2.00-3.00 sec 15.5 MBytes 130 Mbits/sec 0 1.69 MBytes
[ 4] 3.00-4.00 sec 12.7 MBytes 106 Mbits/sec 0 2.27 MBytes
[ 4] 4.00-5.00 sec 11.3 MBytes 95.0 Mbits/sec 0 2.84 MBytes
[ 4] 5.00-6.00 sec 11.4 MBytes 95.5 Mbits/sec 0 3.41 MBytes
[ 4] 6.00-7.00 sec 11.4 MBytes 95.4 Mbits/sec 0 3.98 MBytes
[ 4] 7.00-8.00 sec 11.3 MBytes 95.0 Mbits/sec 0 4.55 MBytes
[ 4] 8.00-9.00 sec 11.4 MBytes 95.3 Mbits/sec 0 5.12 MBytes
(4) Мой вопрос в деталях.
Я думаю, что из-за своей пропускной способности (100 Мбит / с) поток будет испытывать перегрузку и уменьшит свой cwnd.
Но этого не произошло. cwnd потока непрерывно увеличивается.
Кроме того, хотя он не уменьшал его cwnd, он уменьшал свою скорость. Как это могло случиться? Повторной передачи нет.
Не могли бы вы дать мне небольшую подсказку, чтобы понять эту странную вещь?
Спасибо за чтение!
Я нашел ответ.
Это не странное поведение. Я просто короток в понимании.
Перед перегрузкой происходят, переданные пакеты ставят в очередь в буфере коммутатора.
, Поскольку количество пакетов в буфере увеличивается, значение RTT также увеличивается.
Поэтому уровень потока выглядит постоянным, хотя значение cwnd увеличивается.
Однако переполнение в буфере произойдет, когда значение cwnd будет больше, и пакеты передаются достаточно для организации очередей в буфере.
Затем мы видим повторную передачу, потерю пакетов и tcp изменение состояния перегрузки.