找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 24419|回复: 27

[限速] ADSL!!!!!HTB+PCQ失败的人来看,终极解决方案~~~~

  [复制链接]
发表于 2012-3-22 23:37:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 jichengwei001 于 2012-3-23 00:52 编辑

1.这里先描述一个不争的事实,adsl下行或是上行只要有一条满,有的甚至到70%以上就会出现延迟和丢包
2.再说一点关于tcp/ip的基本知识,tcp可靠的传输协议,udp是无连接的。
    tcp传输需要回传确认包,但并不是每一个包都需要确认,可能5个可能2个或许是3个,这个根据窗口的大小不同而不同,详细内容请参考维基解密的tcp协议
再者确认包只有ip头 无数据,很小,但发包速率很快。另外简单说一下拥堵控制,tcp会根据返回的确认包判断对方的速率,例如,连续2个或是多个确认包正确且连续的返回正常,这时tcp会增加窗口大小以便增加传输速率,反之则减少窗口i降低传输速率。
    udp的不需要确认包的,进他的全力发送,影响udp发包的只收发送它的‘软件’和线路质量影响。

好了我们开始解释 为什么带宽满载或者达到一定程度(70%或是更高)就会丢包和延迟,很简单你的下行先在你的isp那里进行了一次队列,它丢弃了你的正常通讯包,导致丢包或是延迟
,并且你看到的速率只是一个平均速率,当你看到80%左右带宽的时候,平均速率的计算方法rosv5教程里有叙述,这期间其实已经达到最大带宽了,isp已经丢你的包了,如果你一直打开cmd ping 一个网站,你会发现,当你打开令一个网页内容里有很多图片的网站时,你的延迟将会增加甚至丢包。看到这时,我们的问题来了,怎样控制我们请求的服务器不要大量的发送数据给我?例如你的实际带宽时2m下行512k上行,我们想象你请求的某服务器给你返回的速率是3m/s的流量,那么当这部分数据和你正常通讯的数据同时达到isp的接口时,isp将会根据你申请的带宽进行限制 也就是2m/s,
砍去部分数据包导致延迟或丢包。
如何控制服务器给你返回的速率,很简单,只需要控制上行速率,因为上面第二点已经叙述过,tcp是有拥堵控制的,当你限制了上行的发包率之后使得服务器不能连续的收到确认包,服务器就会降低发送窗口,以便降低发送速率。实现的方法:降低每个ip的上传速率,这个速率降低到多少为合适。要根据你的策略,比如我是2m下行的512k上行的adsl,那么我们就要限制tcp协议不要瞬间返回超过2m/s的数据,(从哪里看到服务器返回的真实速率?当没有人的时候,看外网接口的下行速率,如果它达到满载你必然会丢包。)我们以tcp 80口为例,我对他的下行限制就是1600k/s(这里解释一下,我们htb如果限制1600,这只能说明你的htb限速起作用了,但是isp到你的路由器的速率还是3m/s),因为还得保证其他的应用,为了使下行不要超过1600k,我是这样限制上传的(暂时这样的,如果有更好的方案请回复说明),queue type  srcaddress  max limit=50k,突发55k,突发稳定后40k 突发时间1s,这样设置之后,内网每台电脑的上行都会依照 这个规则执行(不知道多少版本以上ROS支持pcq里面的突发设置,本人见过5.5版本的就有,可能5.1以上都会有,目前我用的官方最新版本5.14)。
好,至此tcp的解决方法已经叙述完毕
下面说udp协议,udp给你发包只有2个可能。要么你请求了 要么人家攻击你。呵呵
所以只需要限制udp的上传速度或者限制udp的连接数(传说5.8以上版本支持)
我限制udp连接数为80
本人对这两种功能已经基本实现  发张效果图 ,有图有真相

333.jpg

过几秒后
444.jpg
5.jpg

http://v.youku.com/v_show/id_XMzY5ODMxOTky.html
完美抢夺速度

评分

参与人数 1铜板 +20 收起 理由
47771885 + 20 很给力!

查看全部评分

routeros
发表于 2012-3-22 23:46:36 | 显示全部楼层
求脚本~~~看上去有点神
routeros
回复

使用道具 举报

 楼主| 发表于 2012-3-23 00:19:01 | 显示全部楼层
routeros
回复

使用道具 举报

发表于 2012-3-23 10:03:29 | 显示全部楼层
楼主对ADSL的带宽延时和丢包理解我是非常赞同的。因为ADSL在上传达到400KBPS以上时延时绝对超过100MS了。虽然ADSL是可以UDP传数据达到500KBPS,但是在限速里并不能按500来填,否则超过400KBPS后任何优先的数据都被ISP给延时了,楼主可以把总上传那改为400KBPS,效果会更佳。
routeros
回复

使用道具 举报

 楼主| 发表于 2012-3-23 10:19:58 | 显示全部楼层
本帖最后由 jichengwei001 于 2012-3-23 10:20 编辑
9939781 发表于 2012-3-23 10:03
楼主对ADSL的带宽延时和丢包理解我是非常赞同的。因为ADSL在上传达到400KBPS以上时延时绝对超过100MS了。虽 ...


忘记说单位了,,kbit/s  不是kbyte/s,最大上传的确,需要降低
routeros
回复

使用道具 举报

发表于 2012-3-23 10:55:45 | 显示全部楼层
只要预留宽带,抢宽带都比较明显。。做HTB个人觉得在路由前处理数据比经过路由在处理效果来的更明显。
routeros
回复

使用道具 举报

发表于 2012-3-23 10:57:25 | 显示全部楼层
额。。路过看看。。。不想发表神马
routeros
回复

使用道具 举报

发表于 2012-3-23 11:48:31 | 显示全部楼层
遇到一个问题困扰好长时间了:开transmission下载,经常ping电信网关就在1000ms以上,甚至到2000多ms,网页打开比较困难。
不知道用楼主的思路能不能解决我的问题。
routeros
回复

使用道具 举报

 楼主| 发表于 2012-3-23 16:59:03 | 显示全部楼层
peckpock 发表于 2012-3-23 10:55
只要预留宽带,抢宽带都比较明显。。做HTB个人觉得在路由前处理数据比经过路由在处理效果来的更明显。

哪处理都一样
控制服务器发送的最大速率不超过i的最大带宽 才是最有效的
routeros
回复

使用道具 举报

发表于 2012-3-25 02:12:03 | 显示全部楼层
楼主的思路非常正确。学习了
routeros
回复

使用道具 举报

发表于 2012-3-25 02:33:12 | 显示全部楼层
楼主的见解好啊
routeros
回复

使用道具 举报

发表于 2012-3-26 06:29:00 | 显示全部楼层
思路决定出路。
routeros
回复

使用道具 举报

发表于 2012-3-26 08:43:57 | 显示全部楼层
3.30的可以实现么?5.14暂时用不起啊
routeros
回复

使用道具 举报

发表于 2012-3-26 09:42:10 | 显示全部楼层
ROS这样搞太耗资源了.
routeros
回复

使用道具 举报

发表于 2012-3-26 17:04:48 | 显示全部楼层
这边运营商是光纤,10M的,用PPPOE拔号,用迅雷下载,带宽跑满,延时不高,都没发现过丢包。用ROS简单限速,下载5M上传1M,用迅雷下载,带宽跑满,反而丢包,延时升高。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-6 03:36 , Processed in 0.184170 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表