奇怪的 WAN 到 LAN TCP 吞吐问题

2015-03-07 00:09:13 +08:00
 Jermin

路由:Buffalo WZR-HP-AG300H
固件:OpenWRT CHAOS CALMER (Bleeding Edge, r44541)

我在linode达拉斯的一台主机上搭了ss,但是发现看油管360p都卡(用windows客户端)。客服让我做iperf测试。我先在路由器上(当时还在运行12.09)做了测试,结果如下:

root@OpenWrt:~# iperf -c xxx.xxx.xxx.xxx

Client connecting to xxx.xxx.xxx.xxx, TCP port 5001

TCP window size: 43.8 KByte (default)

[ 3] local yyy.yyy.yyy.yyy port 38902 connected with xxx.xxx.xxx.xxx port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.2 sec 16.1 MBytes 13.3 Mbits/sec

可以看到iperf跑满了带宽。

然后我在LAN上的一台PC(运行win 7)上也做了测试,得到如下结果:

E:\Program Files (x86)\iperf>iperf -c xxx.xxx.xxx.xxx

Client connecting to xxx.xxx.xxx.xxx, TCP port 5001

TCP window size: 63.0 KByte (default)

[ 3] local 192.168.1.2 port 1610 connected with xxx.xxx.xxx.xxx port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.7 sec 3.38 MBytes 2.65 Mbits/sec

可以看到只跑满了1/5的带宽。

然后我在LAN上的另一台电脑(运行XP)和我的手机(运行Android)上做了同样的测试,也是只跑到1/5的带宽。

然后我又在路由器,两台PC和手机上测试了到linode主机的udp连接,均能跑满带宽。可见问题出在TCP连接上。这也能解释为什么我用openvpn看1080P一点也不卡。

然后我在openwrt上建了一个iperf服务器,在局域网的机器上做了测试。两台PC都能跑到200多Mbps。

然后我升级了openwrt到最新版,问题依旧。

我本以为是openwrt的问题,但是刚才我在国内的另一台主机上也建了一个iperf服务器。分别在路由器,两台PC上做TCP连接测试,结果都能跑满带宽。

那为什么在用国外主机做服务器时会出现路由器和LAN上设备TCP传输速度不一致的问题呢?

2495 次点击
所在节点    问与答
3 条回复
ryd994
2015-03-07 00:31:24 +08:00
openwrt nat性能差这也算著名了
xierch
2015-03-07 01:31:16 +08:00
OpenWrt 没装什么 QoS 脚本吧
Jermin
2015-03-07 01:59:48 +08:00
@ryd994 我一开始也是以为是NAT速度太慢。可是我后来在国内的主机上建了个iperf服务器,在我的电脑上测试可以满速。
@xierch 没有装过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/175047

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX