2014-02-13 36 views
1

當我使用tcp_probe模塊爲TCP連接收集cwnd時,cwnd將停止增加大約1467(數據包)。任何人都可以解釋這個原因嗎?或者什麼限制了地球上的cwnd?什麼會限制cwnd(擁塞窗口)的增長?

TCP連接是從主機1(192.168.0.2)到主機2(192.168.0.25)的一個2G文件下載,這裏是我對這個連接的命令。

@主機1:python -m SimpleHTTPServer

@主機2:wget http://192.168.0.2:8000/test_2G

下面是使用tcp_probe收集CWnd的命令:

@主機1: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 

回答

0

在挖掘了內核代碼之後,我發現如果tcp受限於應用程序而不是網絡容量,CWND將不會調用增加函數。

所有的魔法都是由文件tcp_cong.c中的函數tcp_is_cwnd_limited造成的。如果tcp不受cwnd限制,每個擁塞算法將直接返回。 :)

相關問題