ADSL!!!!!HTB+PCQ失败的人来看,终极解决方案~~~~
本帖最后由 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 typesrcaddressmax limit=50k,突发55k,突发稳定后40k 突发时间1s,这样设置之后,内网每台电脑的上行都会依照 这个规则执行(不知道多少版本以上ros支持pcq里面的突发设置,本人见过5.5版本的就有,可能5.1以上都会有,目前我用的官方最新版本5.14)。
好,至此tcp的解决方法已经叙述完毕
下面说udp协议,udp给你发包只有2个可能。要么你请求了 要么人家攻击你。呵呵
所以只需要限制udp的上传速度或者限制udp的连接数(传说5.8以上版本支持)
我限制udp连接数为80
本人对这两种功能已经基本实现发张效果图 ,有图有真相
过几秒后
http://v.youku.com/v_show/id_XMzY5ODMxOTky.html
完美抢夺速度
求脚本~~~看上去有点神 tonykong 发表于 2012-3-22 23:46 static/image/common/back.gif
求脚本~~~看上去有点神
出了求脚本 还会什么啊。。。 楼主对ADSL的带宽延时和丢包理解我是非常赞同的。因为ADSL在上传达到400KBPS以上时延时绝对超过100MS了。虽然ADSL是可以UDP传数据达到500KBPS,但是在限速里并不能按500来填,否则超过400KBPS后任何优先的数据都被ISP给延时了,楼主可以把总上传那改为400KBPS,效果会更佳。 本帖最后由 jichengwei001 于 2012-3-23 10:20 编辑
9939781 发表于 2012-3-23 10:03 static/image/common/back.gif
楼主对ADSL的带宽延时和丢包理解我是非常赞同的。因为ADSL在上传达到400KBPS以上时延时绝对超过100MS了。虽 ...
忘记说单位了,,kbit/s不是kbyte/s,最大上传的确,需要降低 只要预留宽带,抢宽带都比较明显。。做HTB个人觉得在路由前处理数据比经过路由在处理效果来的更明显。 额。。路过看看。。。不想发表神马 遇到一个问题困扰好长时间了:开transmission下载,经常ping电信网关就在1000ms以上,甚至到2000多ms,网页打开比较困难。
不知道用楼主的思路能不能解决我的问题。 peckpock 发表于 2012-3-23 10:55 static/image/common/back.gif
只要预留宽带,抢宽带都比较明显。。做HTB个人觉得在路由前处理数据比经过路由在处理效果来的更明显。
哪处理都一样
控制服务器发送的最大速率不超过i的最大带宽 才是最有效的 楼主的思路非常正确。学习了:) 楼主的见解好啊 思路决定出路。 3.30的可以实现么?5.14暂时用不起啊 ROS这样搞太耗资源了. 这边运营商是光纤,10M的,用PPPOE拔号,用迅雷下载,带宽跑满,延时不高,都没发现过丢包。用ROS简单限速,下载5M上传1M,用迅雷下载,带宽跑满,反而丢包,延时升高。
页:
[1]
2