1

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

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

@主机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

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

@主机1:

#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
4

1 回答 1

0

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

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

于 2014-02-14T09:40:17.963 回答