2013-02-17 45 views
1

類似Setting TCP receive window in C and working with tcpdump in LinuxWhy changing value of SO_RCVBUF doesn't work?窗口,我是無法增加最初的TCP接收在Ubuntu Linux窗口比5888更大2.6.32-45增加TCP接收在Linux上

#!/usr/bin/python 
from socket import socket, SOL_SOCKET, SO_RCVBUF, TCP_WINDOW_CLAMP 
sock = socket() 
sock.setsockopt(SOL_SOCKET, SO_RCVBUF, 65536) 
sock.setsockopt(SOL_SOCKET, TCP_WINDOW_CLAMP, 32768) 
sock.connect(('google.com', 80)) 

tcpdump的說:

me > google: Flags [S], seq 3758517838, win 5840, options [mss 1460,sackOK,TS val 879735044 ecr 0,nop,wscale 6], length 0 
google > me: Flags [S.], seq 597037042, ack 3758517839, win 62392, options [mss 1430,sackOK,TS val 541301157 ecr 879735044,nop,wscale 6], length 0 
me > google: Flags [.], ack 1, win 92, options [nop,nop,TS val 879735051 ecr 541301157], length 0 

sysctl -a | grep net.*mem說:

net.core.wmem_max = 131071 
net.core.rmem_max = 131071 
net.core.wmem_default = 112640 
net.core.rmem_default = 112640 
net.core.optmem_max = 10240 
net.ipv4.igmp_max_memberships = 20 
net.ipv4.tcp_mem = 77376  103168 154752 
net.ipv4.tcp_wmem = 4096  16384 3301376 
net.ipv4.tcp_rmem = 4096  87380 3301376 
net.ipv4.udp_mem = 77376  103168 154752 
net.ipv4.udp_rmem_min = 4096 
net.ipv4.udp_wmem_min = 4096 

難道還有其他的東西會在我的連接上設置接收窗口限制嗎?

回答

0

看起來像TCP慢啓動的效果。從2008年該內核線程提供了(我已經聯繫到最後的響應中的線程)一個很好的解釋:

如果您繼續收看流,窗口大小應該增加,達到您設定的最大值。

+0

謝謝!可能就是這樣 – 2013-02-17 23:50:32