什么会限制cwnd(拥堵窗口)的增长?

时间:2014-02-13 07:23:53

标签: cwnd

当我使用tcp_probe模块收集TCP连接的cwnd时,cwnd将停止增加大约1467(数据包)。任何人都可以解释这个的原因吗?或者是什么限制了地球上的cwnd?

TCP连接是从host1(192.168.0.2)下载到host2(192.168.0.25)的2G文件,这是我对此连接的命令。

@ host1:python -m SimpleHTTPServer

@ host2:wget http://192.168.0.2:8000/test_2G

以下是使用tcp_probe收集cwnd的命令:

@ host1:modprobe tcp_probe port=800 full=1

以下是您可能想知道的其他信息:

@ host1:

#ifconfig eth4
eth4      Link encap:Ethernet  HWaddr 90:E2:BA:14:BE:AC  
      inet addr:192.168.0.2  Bcast:192.255.255.255  Mask:255.0.0.0
      inet6 addr: fe80::92e2:baff:fe14:beac/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:15263651 errors:0 dropped:0 overruns:0 frame:0
      TX packets:31145880 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:5000 
      RX bytes:1008133254 (961.4 MiB)  TX bytes:47154490579 (43.9 GiB)
      Memory:fb780000-fb800000 
#cat /proc/sys/net/ipv4/tcp_mem
770373  1027165 1540746
#cat /proc/sys/net/core/rmem_default
212992
#cat /proc/sys/net/core/rmem_max
12582912
#cat /proc/sys/net/core/wmem_default
425984
#cat /proc/sys/net/core/wmem_max
12582912
#cat /proc/sys/net/ipv4/tcp_wmem
10240   87380   12582912
#cat /proc/sys/net/ipv4/tcp_rmem
10240   87380   12582912

1 个答案:

答案 0 :(得分:0)

在深入了解内核代码之后,我发现如果tcp受应用程序而不是网络容量限制,CWND将不会调用增加函数。

所有魔法都是由文件tcp_cong.c中的函数tcp_is_cwnd_limited引起的。如果tcp不受cwnd限制,则每个拥塞算法将直接返回。 :)