当拥塞发生时 TCP cwnd 正在增加

网络工程 tcp linux 拥塞 iperf
2022-02-16 01:53:08

我是新手网络工程师。

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

(1) 我的问题。

我认为尽管有拥塞控制,TCP 流仍不能正常运行。

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

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

怎么会发生?

(2) 实验环境

  • Ubuntu 14.04

  • Mininet 2.3.0d5

    : [拓扑] HOST1 -SWITCH1 - HOST2

  • 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,但它降低了它的速率。怎么会发生?没有重传。

你能给我一点提示来理解这个奇怪的东西吗?

感谢您的阅读!

1个回答

我找到了答案。

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

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

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

因此,尽管 cwnd 值在增加,但流量看起来是恒定的。

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

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