发生拥塞时 TCP 流的速率如何变化



谢谢您单击我的问题。

我正在进行一个小型实验,以了解交通拥堵的TCP流动的行为。

在此实验中,我发现TCP流量的速率比我想的时要大得多。

我认为它的速度最多应由于其拥堵控制而最大程度地减半。

但不是在我的实验中。

你能给我一点提示吗?以下是我的实验。

谢谢您再次单击



我通过使用Mininet组成两个主机和一个开关制作了一个小网络。

H1 -S1 -H2 ,所有链接bw bw 80Mbps

然后,我通过使用iperf3如下

#H1
iperf3 -s -p 1212 -f m -i 1
#H2
iperf3 -c 10.0.0.1 -p 1212 -t 10000 -f m -b 70M

这意味着H2以70mbit/s

将TCP数据包发送到H1

(IPERF3控制其在应用层的TCP速率。(

然后,我们可以在H1(服务器siide(

上看到报告
-----------------------------------------------------------
Server listening on 1212
-----------------------------------------------------------
Accepted connection from 10.0.0.2, port 51786
[ 17] local 10.0.0.1 port 1212 connected to 10.0.0.2 port 51788
[ ID] Interval           Transfer     Bandwidth
[ 17]   0.00-1.00   sec  7.49 MBytes  62.8 Mbits/sec                  
[ 17]   1.00-2.00   sec  8.14 MBytes  68.3 Mbits/sec                  
[ 17]   2.00-3.00   sec  8.54 MBytes  71.7 Mbits/sec                  
[ 17]   3.00-4.00   sec  8.60 MBytes  72.2 Mbits/sec                  
[ 17]   4.00-5.00   sec  7.98 MBytes  66.9 Mbits/sec                  
[ 17]   5.00-6.00   sec  8.80 MBytes  73.9 Mbits/sec                  
[ 17]   6.00-7.00   sec  8.21 MBytes  68.9 Mbits/sec                  
[ 17]   7.00-8.00   sec  7.77 MBytes  65.1 Mbits/sec                  
[ 17]   8.00-9.00   sec  8.30 MBytes  69.7 Mbits/sec                  
[ 17]   9.00-10.00  sec  8.45 MBytes  70.9 Mbits/sec                  
[ 17]  10.00-11.00  sec  8.32 MBytes  69.7 Mbits/sec   

此时,我使用linux tc

ththe S1端口(S1-ETH1,从H2到H1出口(
sudo tc qdisc del dev s1-eth1 root
sudo tc qdisc add dev s1-eth1 root tbf rate 40mbit latency 10ms burst 1mbit

然后结果低于

[ 17]   0.00-1.00   sec  7.76 MBytes  65.0 Mbits/sec                  
[ 17]   1.00-2.00   sec  8.09 MBytes  67.9 Mbits/sec                  
[ 17]   2.00-3.00   sec  8.53 MBytes  71.5 Mbits/sec                  
[ 17]   3.00-4.00   sec  8.47 MBytes  71.0 Mbits/sec                  
[ 17]   4.00-5.00   sec  8.08 MBytes  67.8 Mbits/sec                  
[ 17]   5.00-6.00   sec  8.09 MBytes  67.9 Mbits/sec                  
[ 17]   6.00-7.00   sec  8.74 MBytes  73.3 Mbits/sec                  
[ 17]   7.00-8.00   sec  7.81 MBytes  65.6 Mbits/sec                  
[ 17]   8.00-9.00   sec  8.35 MBytes  70.0 Mbits/sec                  
[ 17]   9.00-10.00  sec  4.56 MBytes  38.3 Mbits/sec                  
[ 17]  10.00-11.00  sec  4.56 MBytes  38.2 Mbits/sec                  
[ 17]  11.00-12.00  sec  4.56 MBytes  38.2 Mbits/sec                  
[ 17]  12.00-13.00  sec  4.56 MBytes  38.2 Mbits/sec                  
[ 17]  13.00-14.00  sec  4.56 MBytes  38.2 Mbits/sec       

如您所见,其速率约为40Mbps。

我认为当充血时,TCP状态应成为slow start,然后其速率应变得更小。但事实并非如此。

我检查了iperf3源代码,但它只会使TCP流量从应用程序层的数量达到数量。因此,它对TCP算法的行为没有影响。

为什么会发生?我不知道...

你能给我一点提示吗?感谢您!

首先,我必须在实验之前正确设置参数。

1(设置链接带宽时,我们可以在TC设置处设置突发大小(或MTU大小(。

看起来对iperf TCP流的波动有影响。

当突发大小很小时,其速率波动或低于我预期的。

2(另外,我们可以在开关处设置MTU大小(巨型框架尺寸(。

因为我使用ovs( OpenVSwitch(,所以我将参数设置为网站。

3(,我们可以使用ethtool。您可以看到此网站。


正确设置上述参数后,希望观察到TCP速率。

尽管充血似乎小rtt value

与幻灯片一样,TCP在每个RTT上都会传输其数据包。

在我的实验中,RTT的值要小得多,因为两个主机之间只有一个边缘。

因此,在第二刻度中,它看起来主机不会降低IT速率,但实际上是这样做的。

相关内容

  • 没有找到相关文章

最新更新