Я начинающий сетевой инженер.
Провел небольшой эксперимент с iperf3. Но я столкнулся с небольшой проблемой.
(1) Мой вопрос.
Я думаю, что поток TCP не работает должным образом, несмотря на контроль перегрузки.
Скорость потока уменьшается из-за перегрузки (скорость потока> пропускная способность канала).
Однако его cwnd постоянно увеличивается.
Как это могло случиться?
(2) Условия эксперимента
Ubuntu 14.04
Mininet 2.3.0d5
: [ТОПОЛОГИЯ] HOST1-SWITCH1 - HOST2
Linux TC
в kernel version 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.