在 Iperf3 中,TCP 行为怪异

在 Iperf3 中,TCP 行为怪异

我是一名新手网络工程师。

我使用 iperf3 做了一个小实验。但是遇到了一个小问题。

(1)我的问题。

我认为,尽管 TCP 有拥塞控制,但其流仍无法正常运行。

由于拥塞,流量降低其速率(流量>链路带宽)。

然而它的 cwnd 却不断增加。

怎么会这样呢?

(2)实验环境

  • Ubuntu 14.04

  • Mininet 2.3.0d5

    :[拓扑] 主机 1-交换机 1-主机 2

  • Linux TCkernel version 4.4.0-148-generic

    :设置所有链路带宽为 100Mbps,并采用适当的 MTU 大小

(3)实验内容

我生成了一个速率为 130Mbps 的流量,从 H2 到 H1。

由于链路带宽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,但它降低了速率。怎么会发生这种情况?没有重新传输。

您能给我一点提示来帮助我理解这个奇怪的事情吗?

感谢您的阅读!

答案1

我找到了答案。

这不是奇怪的行为。我只是缺乏理解。

在拥塞发生之前,传输的数据包正在交换机缓冲区中排队。

随着缓冲区中的数据包数量不断增加,RTT 值也不断增加。

因此,虽然 cwnd 值在增加,但流的速率看起来是恒定的。

然而,当 cwnd 值较大并且传输的数据包足以在缓冲区中排队时,缓冲区将发生溢出。

然后我们可以看到重传,丢包和tcp拥塞状态的转换。

相关内容