Linux-Networking
在 Iperf3,TCP 奇怪的行為
我是新手網路工程師。
我用 iperf3 做了一個小實驗。但我遇到了一個小問題。
(1) 我的問題。
我認為儘管有擁塞控制,TCP 流仍不能正常執行。
由於擁塞(流量 > 鏈路頻寬),流量會降低其速率。
然而,它的 cwnd 正在不斷增加。
怎麼會發生?
(2) 實驗環境
Ubuntu 14.04
Mininet 2.3.0d5
:
$$ TOPOLOGY $$主機 1 -SWITCH1 - 主機 2
Linux TC
在kernel version 4.4.0-148-generic
:使用適當的 MTU 大小將所有鏈路頻寬設置為 100Mbps
(3) 實驗內容
我生成了一個從 H2 到 H1 速率為 130Mbps 的流。
由於鏈路頻寬100Mbps,
由於擁塞算法,它必須將其速率從 130Mbps 降低到 100Mbps
我觀察到這種減少和擁塞算法。
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)我的問題詳細。
- 由於其頻寬( 100Mbps ),我認為流將遇到擁塞並降低其 cwnd。
- 但它沒有。流的 cwnd 不斷增加。
- 此外,雖然它沒有降低它的 cwnd,但它降低了它的速率。怎麼會發生?沒有重傳。
你能給我一點提示來理解這個奇怪的東西嗎?
感謝您的閱讀!
我找到了答案。
這不是奇怪的行為。我只是缺乏了解。
在發生擁塞之前,傳輸的數據包在交換機緩衝區中排隊。
隨著緩衝區中數據包數量的增加,RTT值也在增加。
因此,儘管 cwnd 值在增加,但流量看起來是恆定的。
但是,當 cwnd 值較大並且數據包傳輸到足以在緩衝區中排隊時,緩衝區中將發生溢出。
然後我們可以看到重傳、丟包和tcp擁塞狀態轉換。