TCP拥塞窗口大小过大?

TCP拥塞窗口大小过大?,tcp,cwnd,congestion-control,Tcp,Cwnd,Congestion Control,我尝试使用Mininet模拟由2台主机和1台交换机组成的网络。 一个主机是发送方,使用iperf工具连续向另一个主机接收方发送数据包 H1-----------------开关-----------------H2 ----100Mbps | 0.125ms------100Mbps | 0.125ms--- 主机和交换机之间的链路带宽为100Mbps,延迟为0.125ms 发送的每个数据包的大小为1.5KB,交换机的缓冲区为400个数据包 每个链路的延迟为0.125ms,因此H1和H2之间的R

我尝试使用Mininet模拟由2台主机和1台交换机组成的网络。 一个主机是发送方,使用iperf工具连续向另一个主机接收方发送数据包

H1-----------------开关-----------------H2

----100Mbps | 0.125ms------100Mbps | 0.125ms---

主机和交换机之间的链路带宽为100Mbps,延迟为0.125ms

发送的每个数据包的大小为1.5KB,交换机的缓冲区为400个数据包

每个链路的延迟为0.125ms,因此H1和H2之间的RTT为4*0.125=0.5ms

CWND拥塞窗口是发送方在一个RTT中发送的数据包数,因此吞吐量计算为:吞吐量=CWND/RTT

因为最大吞吐量<带宽,所以CWND 但是,当我使用tcp_probe工具监视CWND时,它意外地显示为CWND总是大于200KB~120个数据包,比我预期的要大得多

即使缓冲区是400个数据包,但它不能有如此大的CWND

请给我解释一下,我真的被这个问题困住了。
谢谢大家!

我不认为你可以用这种方法计算CWND和RTT,因为你认为一个数据包在交换机和H1和H2的网络栈中停留的时间是零

拥塞窗口CWND是可以在不丢失数据包的情况下传输的数据量,例如,只要所有内容都得到确认,数据量就会增加,而在丢失数据包时,数据量就会减少

根据您的数据,CWND降级到大约600,因此数据包丢失从大约400个数据包开始,这是交换机的缓冲区大小。所以在这一刻,在H1和H2之间没有4个数据包在传输,但是大约400个数据包,RTT可能比0.5ms大得多