我使用3G作为主要的互联网连接,而与此相关的TCP每天都变得越来越令人困惑。例如:
从kernel.org下载太快了:
$wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.8.tar.bz2
几秒钟后增加到〜500kB / s!
某些服务器的运行速度非常慢,例如www.graphic-pc.com:
同样,用wget下载大文件的速度约为30kB / s,一瞬间,然后崩溃到5-10k,甚至更糟。Web浏览是不错的,但是有些不可靠。随机地,页面将花费很长时间才能加载甚至无法加载,但是重新加载几乎可以立即成功。
现在,偶然地,我开始在3G连接之上使用基于UDP的OpenVPN,而OMG突然之间一切都变得非常快!
相同的www.graphic-pc.com现在以100-200kB / s的速度拍摄!
- 这里发生了什么 ???
- 为什么使用VPN会比没有使用VPN更好呢?
- 当kernel.org飞行时,为什么graphic-pc.com会爬行?
与我的tcp堆栈(或服务器)有关,或介于两者之间的一些越野车?
笔记:
安装程序是运行Ubuntu Lucid的笔记本电脑和华为3G软件狗(直接pppd连接)。
我几乎可以在一天中的任何时间重现此图像,而且我也不动,所以显然不是手机环境或网络拥塞。(尽管没有VPN的kernel.org有时在晚上会变得更糟,大约60kB-但是使用VPN还是500kB!)
对于2),wireshark显示重发的数据包,重复确认包,有时甚至乱序。
我尝试使用不同的/ proc / sys / net / ipv4参数(tcp_rmem,window_scaling,tcp_congestion ...)似乎没有什么不同。
更新:
在Windows 7(无VPN)下进行了尝试,并得到了一些有趣的结果:
tcp settings : default tcp_optimizer
kernel.org : 10 kB/s 20 kB/s
graphic-pc.com: 8 kB/s 70 kB/s !
tcp_optimizer除其他功能外还打开了ctcp。必须检查正在运行的os graphic-pc.com,我敢打赌,这是linux的tcp_westwood和ms ctcp在这里混合得不好...