我记录

ROS菜鸟系列8--QUEUE简单应用

jianliulin 发布于 2012/11/20 8:28 浏览: 3276 回复: 0 所在分类:路由

 在ROS中,queue的功能主要是应用于以下的功能:

1)对明解的IP地址,子网,协议,端口或者其他参数限制带宽
2)限制端对端的传输
3)优先某些包流量
4)所有用户具备同等权限共享带宽
单一QUEUE使用:
假定:限制内网单台机器192.168.2.12的上网最大速率为512K
[admin@MikroTik] > queue simple                              
[admin@MikroTik] /queue simple> add name=12 target-
addresses=192.168.2.12 max-limit=512000/512000
[admin@MikroTik] /queue simple> print                        
Flags: X - disabled, I - invalid, D - dynamic
0    name="12" target-addresses=192.168.2.12/32 dst-
address=0.0.0.0/0 interface=all parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=512000/512000  burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
假定限制内网的192.168.2.2到192.168.2.14,这一连续IP段的内网
机器上网总速率
[admin@MikroTik] /queue simple> add name=queue1 target-
addresses=192.168.2.0/28 max-limit=512000/512000
[admin@MikroTik] /queue simple> print
Flags: X - disabled, I - invalid, D - dynamic
0    name="queue1" target-addresses=192.168.2.0/28 dst-
address=0.0.0.0/0
      interface=all parent=none direction=both priority=8
      queue=default-small/default-small limit-at=0/0 max-
limit=512000/512000
      burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
      total-queue=default-small
假定限制内网的192.168.2.2,192.168.23,192.168.26,这三台不连续
的地址段限制上网的总流量为512K:
[admin@MikroTik] /queue simple>
[admin@MikroTik] /queue simple> add name=queue2 target-
addresses=192.168.2.2,192.168.2.23,192.168.2.26 max-
limit=512000/512000
[admin@MikroTik] /queue simple> print
Flags: X - disabled, I - invalid, D - dynamic
0    name="queue2"
      target-
addresses=192.168.2.2/32,192.168.2.23/32,192.168.2.26/32
      dst-address=0.0.0.0/0 interface=all parent=none
direction=both priority=8 queue=default-small/default-small
limit-at=0/0 max-limit=512000/512000 burst-limit=0/0 burst-
threshold=0/0 burst-time=0s/0s total-queue=default-small
通过对参数target-addresses进行不同的调整,可以实现基于内网源
地址的单个、连续段或者不连续的IP地址段对上网流量的限制
利用包标记与simple queue一起实现特殊的带宽限制功能:
假定:内网网段的所有的P2P下载端口6881-6889进行限制速率为
256K:
先做标记,对所有的UDP和TCP协议的6881-6889端口先全部做连接标
记,在连接标记基础上再做数据包标记:
[admin@MikroTik] /ipfirewallmangle> add chain=prerouting  
protocol=tcp dst-port=6881-6889 action=mark-connection new-
connection-mark=BT  
[admin@MikroTik] /ip firewall mangle> add chain=prerouting  
protocol=udp dst-port=6881-6889 action=mark-connection new-
connection-mark=BT  
[admin@MikroTik] /ip firewall mangle> add chain=prerouting
connection-mark=BT action=mark-packet new-packet-mark=bt
passthrough=no
[admin@MikroTik] /ip firewall mangle> print
Flags: X - disabled, I - invalid, D - dynamic
0   chain=prerouting action=mark-connection new-
connection-mark=BT
     passthrough=yes protocol=tcp dst-port=6881-6889
1   chain=prerouting action=mark-connection new-
connection-mark=BT
     passthrough=yes protocol=udp dst-port=6881-6889
2   chain=prerouting action=mark-packet new-packet-mark=bt
passthrough=no
     connection-mark=BT
进入队列中,对标记添加规则限制:
[admin@MikroTik] /ip firewall mangle> /
[admin@MikroTik] > queue
[admin@MikroTik] /queue> sim
[admin@MikroTik] /queue simple> add name=bt-download
target-addresses=192.168.2.0/24 interface=lan packet-
marks=bt max-limit=256000/256000
[admin@MikroTik] /queue simple> add name=bt-upload target-
addresses=192.168.2.0/24 interface=wan packet-marks=bt max-
limit=256000/256000
[admin@MikroTik] /queue simple> print
Flags: X - disabled, I - invalid, D - dynamic
0    name="bt-download" target-addresses=192.168.2.0/24
dst-address=0.0.0.0/0
      interface=lan parent=none packet-marks=bt
direction=both priority=8
      queue=default-small/default-small limit-at=0/0 max-
limit=256000/256000
      burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
      total-queue=default-small
1    name="bt-upload" target-addresses=192.168.2.0/24 dst-
address=0.0.0.0/0
      interface=wan parent=none packet-marks=bt
direction=both priority=8
      queue=default-small/default-small limit-at=0/0 max-
limit=256000/256000
      burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
      total-queue=default-small

在队列限速中,有一个参数:bursts(突破),bursts-time:突破时
间,burst-thershold:突破阀值,burst-limit:突破速率。这几个参
数与limit-at、max-limit相互配合使用。
举个简单例子:
假定:limit-at=128000,max-limit=256000,burst-time=8,burst-
threshold=192000,burst-limit=512000,
   当客户访问网络时,因为客户在访问网络前的8秒时间内,所
有秒内的流量全部为0,因此其8秒平均流量为0,此平均值小于
burst-threshold=192000,因此路由会让客户以burst-limit=512000
的速率访问网络。客户正常访问网络一秒后,其他平均值将变成:(
0+0+0+0+0+0+0+512)/8=64k,小于burst-threshold=192000值,则路
由会让客户继续以burst-limit=512000的速率访问网络,此时客户的
平均值将变成:(0+0+0+0+0+0+512+512)/8=128k仍小于burst-
threshold=192000值,路由会让客户再以burst-limit=512000的速率
访问网络,此时客户的的平均值将变成:(0+0+0+0+0+512+512+512
)/8=192k,因为平均值等于burst-threshold=192000值,则从第四秒
后,路由会把客户的速率直接从burst-limit=512000的速率压低到
max-limit=256000的速率。在后续的上网过程中,客户会一直以最高
为max-limit=256000的速率访问网络,只有再次出现前8秒的平均速
率小于burst-threshold=192000速率后,路由才会再次以burst-
limit=512000的速率允许客户访问网络。
  这个参数的设定对于那些时不时需要访问一下网页的客户有提高
打开页面的便利。
PCQ(用户平等共享带宽)使用简单案例:
假定用户总带宽为10M,内网地址段为192.168.2.0/24
1)首先:对内网用户的数据进行标记:
[admin@MikroTik] > ip firewall mangle     
[admin@MikroTik] /ip firewall mangle> add chain=forward
src-address=192.168.2.0/
24 action=mark-connection new-connection-mark=user
[admin@MikroTik] /ip firewall mangle> add chain=forward
connection-mark=user act
ion=mark-packet new-packet-mark=userpacket
[admin@MikroTik] /ip firewall mangle> print
Flags: X - disabled, I - invalid, D - dynamic
0   chain=forward action=mark-connection new-connection-
mark=user
     passthrough=yes src-address=192.168.2.0/24
1   chain=forward action=mark-packet new-packet-
mark=userpacket
     passthrough=yes connection-mark=user
2)添加两个新的PCQ类型:一个是“pcq-down”,这个类型匹配内网
网卡,将会创建基于目标地址的动态队列,第二个类型匹配外网网卡
,创建基于源地址的动态队列
[admin@MikroTik] /ip firewall mangle> /
[admin@MikroTik] > queue
[admin@MikroTik] /queue> type
[admin@MikroTik] /queue type> add name=pcq-up kind=pcq pcq-
classifier=src-address pcq-limit=50 pcq-total-limit=3000
pcq-rate=512000  
[admin@MikroTik] /queue type> add name=pcq-down kind=pcq
pcq-classifier=dst-address pcq-limit=50 pcq-total-limit=3000
pcq-rate=512000      
[admin@MikroTik] /queue type> print
0 name="default" kind=pfifo pfifo-limit=50
1 name="ethernet-default" kind=pfifo pfifo-limit=50
2 name="wireless-default" kind=sfq sfq-perturb=5 sfq-
allot=1514
3 name="synchronous-default" kind=red red-limit=60 red-
min-threshold=10
   red-max-threshold=50 red-burst=20 red-avg-packet=1000
4 name="hotspot-default" kind=sfq sfq-perturb=5 sfq-
allot=1514
5 name="pcq-up" kind=pcq pcq-rate=512000 pcq-limit=50
   pcq-classifier=src-address pcq-total-limit=3000
6 name="pcq-down" kind=pcq pcq-rate=512000 pcq-limit=50
   pcq-classifier=dst-address pcq-total-limit=3000
7 name="default-small" kind=pfifo pfifo-limit=10
解释一下相关的部分参数:
pcq-limit:意思是单一PCQ分队列所容纳的包数量,pcq-total-
limit意思是所有PCQ队列全部同时容纳的包数量,pcq-rate意思是
PCQ分队列在带宽足够情况下所达到的最大速率,举例子:如果总的
带宽出口为1M,则如果设定PCQ-rate为512K,则在只有一个用户的情况
下,该用户可以达到的最大上网速率为512K,如果是两个时,则两个
用户都为512K,如果达到4个用户时,则每一个用户最高可以达到
1M/4=256K的速率,如果设定PCQ-rate为0,则只有一个用户时,则该
用户可以达到的最大上网速率为1M,如果是两个时,则每个为512K,如
果是三个,则一样平均
3)将类型应用到网卡接口
[admin@MikroTik] /queue type> ..
[admin@MikroTik] /queue> tree
[admin@MikroTik] /queue tree> add parent=lan queue=pcq-down
packet-mark=userpacket
[admin@MikroTik] /queue tree> add parent=wan queue=pcq-up
packet-mark=userpacket
[admin@MikroTik] /queue tree> print                          
                  
Flags: X - disabled, I - invalid
0   name="queue1" parent=lan packet-mark=userpacket limit-
at=0 queue=pcq-down priority=8 max-limit=0 burst-limit=0
burst-threshold=0 burst-time=0s
1   name="queue2" parent=wan packet-mark=userpacket limit-
at=0 queue=pcq-up priority=8 max-limit=0 burst-limit=0
burst-threshold=0 burst-time=0s
完成PCQ队列设定后,如果有特殊用户需要优先时,如内网
192.168.2.10需要访问优先,可以先在mangle中做标记,做好后直接
应用到网卡接口,同时将其他参数:priority修改成值更低的数字即



queue队列的更高级应用:比如:HTB(Hierarchical Token Bucket)
分层令牌桶,以及DSCP(DiffServ Code Point) based QoS with
HTB的应用、相同的服务在白天与晚上实现不同的流控策略等。

以上命令,可以在winbox中的new terminal中直接粘贴使用。
jianliulin2012/11/20 8:28

留下脚印

踩一脚
copyright © jianliulin 的空间 2010-2014
Powered by 我记录2.0
Processed in 0 seconds, 0 queries