Linux-Networking

在 Iperf3,TCP 奇怪的行為

  • August 12, 2019

我是新手網路工程師。

我用 iperf3 做了一個小實驗。但我遇到了一個小問題。

(1) 我的問題。

我認為儘管有擁塞控制,TCP 流仍不能正常執行。

由於擁塞(流量 > 鏈路頻寬),流量會降低其速率。

然而,它的 cwnd 正在不斷增加。

怎麼會發生?

(2) 實驗環境

  • Ubuntu 14.04
  • Mininet 2.3.0d5

:

$$ TOPOLOGY $$主機 1 -SWITCH1 - 主機 2

  • Linux TCkernel 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擁塞狀態轉換。

引用自:https://serverfault.com/questions/978764