younger 发表于 2009-9-9 22:04:15

自动调整限速

说明一下。这是在PPPOE拔号客户下的自动调整限速
建立PPPOE服务,我不多说了。
建立一个profile
/ppp profile
add name="pt" local-address=172.16.0.1 remote-address=pppoe-pool1 \
    only-one=yes rate-limit=90k/1000k dns-server=172.16.0.1 \
建立PPPoE客户,建立的PPPoE客户要调用pt的profile
拔号后,就会在queues simple里动态生成限速表
自动调整的脚本如下:
#客户数量
:local count1 0
#上传速率,这里是2条ADSL
:local UpRate (2*500000)
#下载速率
:local DownRate (2*3000000)
#平均上传速率
:local UpAverage 90000
#平均下载速率
:local DownAverage 1000000
#得到客户数量
:set count1 [:len ]
#得到平均上传速率
:set UpAverage ($UpRate/$count1)
#得到平均下载速率
:set DownAverage ($DownRate/$count1)
#最低上传下载速率
:if ($UpAverage < 90000) do={:set UpAverage 90000}
:if ($DownAverage < 1000000) do={:set DownAverage 1000000}
#得到限速值
:local LimitAt (($UpAverage*70/100/1000*1000) . "/" . ($DownAverage*70/100/1000*1000))
#得到最大限速
:local MaxLimit ($UpAverage . "/" . $DownAverage)
#突发极限
:local BurstLimit (($UpAverage*185/100/1000*1000) . "/" . ($DownAverage*185/100/1000*1000))
#突发的平均值
:local BurstThr (($UpAverage*60/100/1000*1000) . "/" . ($DownAverage*60/100/1000*1000))
#突发时间
:local BurstTime "3s/3s"
/que sim
set queue=default/default limit-at=$LimitAt max-limit=$MaxLimit burst-limit=$BurstLimit burst-threshold=$BurstThr burst-time=$BurstTime
在2.9.27和3.13运行正常。在3.13中算术符号一定要有空格。

billzhong 发表于 2009-9-9 22:48:42

不错。有想法。

黑少 发表于 2009-9-10 00:51:25

此人一出语,必成经典,顶!
相信N多网友都用它的PPPOE用户到期自动断网

WGHBOY 发表于 2009-9-10 02:51:19

虽然不用,但还是顶一下,这个是按用户在线人数来分配的,不准确的,不是每个人都在下载,在线电影,最好根据总带宽来分

piaoliudelang 发表于 2009-9-11 22:17:29

好贴,可以再详细细化一下就更厉害了,感谢楼主发帖!

younger 发表于 2009-9-12 22:54:38

我不懂总带宽分配原理。
例如:
有两个客户,A在看电影,B在看网页。
A会分配多一些带宽,B少些。
突然B又去看电影了,B的带宽会不会马上调高呢
A看完电影了,只是在看网页,A的带宽又会不会调低呢

有没有大虾讲解一下

WGHBOY 发表于 2009-9-13 00:49:15

按总带宽来人均分配
页: [1]
查看完整版本: 自动调整限速