2014-02-13 3 views
1

tcp_probe 모듈을 사용하여 TCP 연결을 위해 cwnd를 수집하면 cwnd가 약 1467 (패킷) 씩 증가하는 것을 멈 춥니 다. 아무도 이것에 대한 이유를 설명 할 수 있습니까? 아니면 지구상에서 무엇이 제한되어 있는가?무엇이 cwnd (혼잡 윈도우)의 성장을 제한합니까?

TCP 연결은 host1 (192.168.0.2)에서 host2 (192.168.0.25)로 2G 파일을 다운로드하는 것으로, 여기에이 연결에 대한 내 명령이 있습니다. 호스트 2 @python -m SimpleHTTPServer

: host1의 @

이 host1 @

: 여기 modprobe tcp_probe port=800 full=1

당신이 다른 정보를 원하시면 여기에 wget http://192.168.0.2:8000/test_2G

는 혼잡 윈도우를 수집 tcp_probe를 사용하는 명령입니다 알고 싶을 수도 있습니다 :

@ 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에 의해 제한되지 않으면 모든 혼잡 알고리즘이 직접 리턴됩니다. :)