我尝试使用 Mininet 模拟由 2 个主机和 1 个交换机组成的网络。一台主机作为发送方,使用 iperf 工具不断地向另一台主机(接收方)发送数据包。
H1----------------------------------------开关-------- ------H2
--------100Mbps|0.125ms------------100Mbps|0.125ms------
主机和交换机之间的链路带宽为100Mbps,延迟为0.125ms。
每个发送的数据包大小为 1.5KB,Switch 有 400 个数据包的缓冲区。
每条链路的延迟为 0.125ms,因此 H1、H2 之间的 RTT 为 4*0.125=0.5ms
CWND(拥塞窗口)是发送方在一个 RTT 中发送的数据包数,因此吞吐量计算为:吞吐量 = CWND/RTT。
因为 MAX(吞吐量) < 带宽所以 CWND < RTT*bandwidth=0.5*10^(-3)*100*10^6=50000b~6KB = 4packets
但是当我使用 tcp_probe 工具监控 CWND 时,它令人惊讶地显示 CWND 总是大于 200KB(~120packets),比我预期的要大得多。
即使缓冲区是 400 个数据包,但它不能有这么大的 CWND。
请为我解释一下,我真的被这个问题困住了。谢谢!