下载是如何吃掉带宽的?

2016-08-17 08:39:38 +08:00
 nifury
有这么几个问题:
1 、比如开迅雷下载满速的时候,网页打开会变得特别慢,这是为什么呢?
(1) 网页新开链接,由于 TCP 慢启动,而迅雷链接的窗口已经扩大?
(2) ADSL 下载会限制上行导致 ACK 发送缓慢?(我现在用光纤很少达到满速,不知道会不会影响网页打开速度)

2 、之前用过 cfosspeed ,打开网页的速度就正常了,为什么呢?(大概是驱动 qos 什么的?不懂,无所谓啦)

3 、对客户端来说,带宽是如何分配的呢?假如入口带宽足够的情况下
比如看网页视频只有一个链接在接收数据,而迅雷开了 4 个链接在下载,于是 100M 带宽被均分成 20M ?但是为何通常迅雷能达到满速呢?

4 、突然想到的,迅雷不是自带网速保护功能保证上网速度么?在没有加载驱动的情况下(迅雷貌似没有加驱吧)迅雷如何得知浏览器是否需要网速?( hook send, recv?)
6776 次点击
所在节点    宽带症候群
35 条回复
popok
2016-08-17 16:49:18 +08:00
@sakuyamaij 你的网络肯定适配到百兆模式了,不然你 200 兆的带宽,为何只能跑 10M 每秒?
Halry
2016-08-17 16:52:22 +08:00
软路由没压力
txydhr
2016-08-17 17:02:07 +08:00
@imn1 换路由器吧,就是路由器的锅,现在的宽带维持一个迅雷,一个游戏不卡,带宽绝对是够的。
kumiko
2016-08-17 17:13:56 +08:00
@popok 233做种的不给力我也没有办法啊
imn1
2016-08-17 17:40:41 +08:00
@txydhr
又不是我有问题,我换什么?我今天还下了 70+G
txydhr
2016-08-17 18:37:19 +08:00
@imn1 点错了至于么?
ragnaroks
2016-08-17 18:47:39 +08:00
我用的是极路由刷的梅林,里面有个小包优先,开启之前一下载游戏(csgo)基本处于卡死状态,开启后顶多上升 5ms(15ms->20ms)
ragnaroks
2016-08-17 18:48:02 +08:00
对了,这个好像对浏览网页之类的无效,网页还是卡
datocp
2016-08-17 20:22:13 +08:00
1,首先家用网络跟企业带宽的最大一个区别就是并发数有限制。像家里用的电信 8M 光纤大概在 1500 个左右的并发数。
2,控制流量有直接对流量进行控制,看不见的使用并发限制对流量进行控制,所以一旦超过 1500 个左右的并发,那么电信局端开始丢包,那么 tcp 的 3 次握手过程就无法建立,那么流量自然会被抑制。
3,其它的可能设备本身的固件优化就限制了并发的连接,甚至电信有意无意的提供有问题的固件。曾经就在 ADSL 时代使用过电信送的 ADSL modem 上海贝尔吧,这 modem 的特点就是一旦使用 p2p 程序流量就开始自动波动。。。后来刷 tplink 的固件解决。

4,迅雷跟 QQ 旋风有很大差别,迅雷随便就是 1200+并发数,而 QQ 旋风才只有 400+左右。从平时观察的经验来看,显然迅雷发起了很多无意义的并发数。甚至一个设计不合理的 QOS 规则会导致连路由管理界面都无法打开。。。

5,9 楼提供的针对 tcp udp 的连接消亡控制是有意义的,它能有效的让一些不必要的连接快速消亡,但是显然不主动控制,这些默认的消亡时间还是不够快。

5,所以问题就在如何控制并发数量在 1500 以下。
ddwrt 提供了一种非常有效的针对特定 ip 抑制并发的方法
https://www.dd-wrt.com/wiki/index.php/Preventing_Brute_Force_Attacks
最终的例子就变成
a.使用 limit 对源 ip 192.168.1.2 发往外界的并发数进行匹配发送,抑制了发送的包,自然根据 tcp 的握手过程抑制了接收的包。 limit 非常平滑不像 connlimit 一样会直接造成网络断开,更丰富的控制选项可能就是 hashlimit 了
b.规则 1 规则 2 对网页浏览端口和其它端口进行自上而下的区分,似乎简单的 iptables 规则的上下排序就能解决迅雷问题。总共有 100 包,每秒相应可以产生 60 包,这个 limit 的解释还是比较晕,自己 google 吧
c.规则 3 抑制 icmp 包的生成,似乎在一些 p2p 环境确认有用。
d.规则 4 规则 5 对剩余的过量的包用 REJECT 进行快速丢弃, 9 楼的 timeout 消亡设置就有快速的回应效果了
e.规则 6 剩余的其它包只能丢弃处理了。
a="`iptables -vnL FORWARD --line-numbers | grep "PMTU" | cut -c1-5` - 1";a=`expr $a`
规则 6 iptables -I FORWARD $a -s 192.168.1.2 -j DROP
规则 5 iptables -I FORWARD $a -s 192.168.1.2 -p udp -j REJECT --reject-with icmp-proto-unreachable
规则 4 iptables -I FORWARD $a -s 192.168.1.2 -p tcp -j REJECT --reject-with icmp-proto-unreachable
规则 3 iptables -I FORWARD $a -s 192.168.1.2 -p ICMP --icmp-type echo-request -m limit --limit 4/sec -j ACCEPT
规则 2 iptables -I FORWARD $a -s 192.168.1.2 -m limit --limit 60/s --limit-burst 100 -j ACCEPT
规则 1 iptables -I FORWARD $a -s 192.168.1.2 -p tcp -m multiport --dport 80,443 -m limit --limit 60/s --limit-burst 100 -j ACCEPT;

上面的方法针对特定 ip 对付迅雷时打开网页是有效果的。只是如果处理不好--limit --limit-burst 对其它正常应用是有一定的抑制作用的

6,openwrt 采用的是对 INPUT 方向的 syn_flood 进行抑制,那么回应的包自然也相应抑制。昨天刚迅雷过虽然网速才 300-800kb/s 之间波动,但是至少网页打开流畅。显然 openwrt 的防火墙规则还是有很大的区别于 ddwrt tomato 的性能上的优化。

-A INPUT -i pppoe-wan -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn_flood
-N syn_flood
-A syn_flood -m limit --limit 3/sec --limit-burst 25 -j RETURN
-A syn_flood -j DROP

7,一个设计良好的 qos 规则也是有一定的抑制效果的。可以参考
我的 tomato 原版 QOS 设定
http://www.right.com.cn/forum/thread-102891-1-1.html
(出处: 恩山无线论坛)
swsh007
2016-08-17 20:44:13 +08:00
迅雷从开始就是流氓, p2p 就是被玩坏的,变成各种肉鸡。曾经测过迅雷开启连接数马上过千, bt 电驴官方客户端没这么黑。
nifury
2016-08-17 21:07:02 +08:00
@datocp 谢谢谢谢~
本来只是思考如何设计一个高速低延迟的代理协议结果炸出一个大神~
txydhr
2016-08-17 22:40:57 +08:00
@datocp 是的 迅雷动不动就上千 吃掉太多路由器资源 尤其是老旧的路由器。。
我直接用 BT 同时下 3 部电影才 400 多连接数, 50M 对等,我一个人几乎跑满下行带宽。。 2 室友玩 dota2 完全不卡,不像国内开个迅雷, PPTV 之类,其他人别想正常上网。。。
下载了 2 年,话说我已经被 ISP 请去喝了两次茶了,连下载的文件名都标出来了,说再侵犯版权就降到拨号速度。。再也不敢下了。
hahahasnoopy
2016-08-18 13:03:57 +08:00
@txydhr 国内 isp 还管盗版?
HankAviator
2016-08-22 19:18:48 +08:00
@hahahasnoopy 不像 [国内] 开个迅雷……
hahahasnoopy
2016-08-31 00:35:20 +08:00
@HankAviator 你可以通过百度云或者迅雷之类的离线下载方式,然后从他们的服务器上下载到本地应该就没有这方面的问题了,直接 bt 下载可能会被钓鱼

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

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

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

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

© 2021 V2EX