您的位置:首页 > 其它

用户平分带宽例子(pcq)

2010-04-01 22:59 281 查看
这个例子示范了如何将10mbps下载2mbps上传,均分给网络192.168.0.0/24中的活动的用户。

如果主机A下载2Mbps,主机B就只能获得8mbps,反之亦然。

有这样一种情况,他们都想获得最大带宽(10mbps),他们将各自获得5mbps,上传也一样。这个设置同样是用于更多用户的情形。

首先,所有来自本地网络192.168.0.0/24的流,标记 一个用户标记。

/ip firewall mangle add chain=forward src-address=192.168.0.0/24 \

action=mark-connection new-connection-mark=users-con

/ip firewall mangle add connection-mark=users-con action=mark-packet \

new-packet-mark=users chain=forward

现在我们将添加两个新的PCQ类型。第一个命名pcq-download,将依据目的地址聚合所有流。我们将给本地接口使用这个queue type。它将为那些目的地址是网络192.168.0.0/24的下载,创建一个动态队列。

第二个命名为pcq-upload,将依据源地址聚合所有流。我们将给公网接口使用,所以它将为来自本地网络192.168.0.0/24到internet的上传,创建以一个动态队列。

/queue type add name=pcq-download kind=pcq pcq-classifier=dst-address

/queue type add name=pcq-upload kind=pcq pcq-classifier=src-address

最后,给下载流创建一个queue tree。

/queue tree add name=Download parent=Local max-limit=10240000

/queue tree add parent=Download queue=pcq-download packet-mark=users

给上传流的:

/queue tree add name=Upload parent=Public max-limit=2048000

/queue tree add parent=Upload queue=pcq-upload packet-mark=users

注意:如果你的ISP不能提供一个固定的流量,你可以在上传QUEUE规则和下载QUEUE规则中,直接在接口上使用QUEUE。

/queue tree add parent=Local queue=pcq-download packet-mark=users

/queue tree add parent=Public queue=pcq-upload packet-mark=users

/ip fir fil

add chain=forward src-address=192.168.0.0/24 action=add-src-to-address-list address-list=pcq_list address-list-timeout=5s comment="pcq_list_add"

/que typ

add name="pqc_http_down" kind=pcq pcq-rate=824000 pcq-limit=50 pcq-classifier=dst-address pcq-total-limit=200000

add name="pcq_up" kind=pcq pcq-rate=284000 pcq-limit=50 pcq-classifier=src-address pcq-total-limit=20000

/que sim

#取消对网关的限制#

add name="admin" target-addresses=192.168.0.0/24 dst-address=192.168.0.0/24 interface=all parent=none direction=both priority=1 queue=default/default limit-at=0/0 max-limit=0/0 total-queue=default disabled=no

#PCQ分配#

add name="pcq" target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 interface=LAN parent=none direction=both priority=8 queue=pcq_up/pqc_http_down limit-at=0/0 max-limit=384000/1000000 burst-limit=384000/1000000 burst-threshold=64000/256000 burst-time=3s/3s total-queue=default-small disabled=no

脚本1秒1次

:global maxdown

:global maxup

:global mindown

:global minup

:global resDown

:global resUp

:global yz

:global pcqup

:global pcqdown

:global pcqdownold

:global pcqupold

:global a

:global testup

:global testdown

:global pcqitem

:global curUp

:global curDown

:set maxdown 1024000

:set maxup 384000

:set mindown 120000

:set minup 80000

:set resDown 200000

:set resUp 100000

:set yz 100

:set pcqitem [:len [/ip firewall address-list find list=pcq_list]]

:if ($pcqitem!=0) do={

:set pcqdown [/queue type get [/queue type find name=pqc_http_down] pcq-rate]

:set pcqdownold $pcqdown

:set pcqup [/queue type get [/queue type find name=pcq_up] pcq-rate]

:set pcqupold $pcqup

:set curDown 1

:set curUp 1

/int mon PPPOE once do={:set curDown $"received-bits-per-second"}

/int mon PPPOE once do={:set curUp $"sent-bits-per-second"}

:set testdown ($maxdown+-$curDown+-$resDown)

:if ($testdown>0) do={

:set pcqdown ($pcqdown+($testdown/$yz))

}

:if ($testdown<=0) do={

:set pcqdown ($pcqdown+$testdown)

}

:set a ($maxdown+-$resDown)

:if ($pcqdown>$a) do={:set pcqdown $a}

:set a ($maxdown/$pcqitem)

:if ($pcqdown<$a) do={:set pcqdown $a}

:set testup ($maxup+-$curUp+-$resUp)

:if ($testup>0) do={

:set pcqup ($pcqup+($testup/$yz))

}

:if ($testup<=0) do={

:set pcqup ($pcqup+$testup)

}

:set a ($maxup+-$resUp)

:if ($pcqup>$a) do={:set pcqup $a}

:set a ($maxup/$pcqitem)

:if ($pcqup<$a) do={:set pcqup $a}

:if ($pcqdown!=$pcqdownold) do={

:if ($pcqdown>$mindown) do={

/queue type set [/queue type find name="pqc_http_down"] pcq-rate=$pcqdown

} else={

/queue type set [/queue type find name="pqc_http_down"] pcq-rate=$mindown

}

}

:if ($pcqup!=$pcqupold) do={

:if ($pcqup>$minup) do={

/queue type set [/queue type find name="pcq_up"] pcq-rate=$pcqup

} else={

/queue type set [/queue type find name="pcq_up"] pcq-rate=$minup

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  用户 休闲 带宽