Simple queue的流控配置相对Queue Tree简单,能直接通target指定目标流控IP地址,有明确的上下行属性配置,也能调用PCQ策略完成简单的流控。

通过simple queue限制一个主机IP的上行50Mb,下行100Mb(bit),如下图的配置

如果要限制一段IP,192.168.10.0/24,对这段IP中的每个IP地址进行带宽限速,可以使用PCQ进行流控策略,在simple Queue中配置简单的PCQ流量控制可以参考之前的内容,RouterOS PCQ动态流量分配实例RouterOS PCQ流控原理

当我们需要细化流控策略,排除指定目标IP被流控,或者指定某些特定的端口时,就需要使用packet-marks做流控的标记,需要进入ip firewall mangle对指定流量进行标记

例如,在一个网络中用户IP地址段是172.16.0.0/16,而NAS的IP段是172.17.0.0/16,用户到NAS的IP不受流控限制,需要排除到NAS的IP段172.17.0.0/16做流控,以下配置通过CLI命令行操作:

首先,在address-list添加一个NAS的地址列表,定义IP段 172.17.0.0/16

/ip firewall address-list
add address=192.168.20.0/24 list=NAS

然后在mangle先做连接标记,源地址192.168.10.0/24,排除目标地址是NAS地址列表,定义一个new-connection-mark=User_conn

/ip firewall mangle
add chain=forward  src-address=192.168.10.0/24 dst-address-list=!NAS action=mark-connection new-connection-mark=User_conn passthrough=yes

然后从连接标记从User_conn提取数据包标记new-packet-mark=User_packet

add chain=forward connection-mark=User_conn action=mark-packet new-packet-mark=User_packet passthrough=yes

注意:不能直接进行mark-packet数据包标记,如果直接进行数据包标记(直接标记涉及区分上行和下行流量),对于simple queue将无法区分上行和下行流量

在queue type下定义PCQ规则,上行和下行

/queue type
add kind=pcq name= user_down pcq-classifier=dst-address pcq-rate=100M
add kind=pcq name= user_up pcq-classifier=src-address pcq-rate=10M

在simple下面添加规则,这里总带宽下行1G,上行100M,需要预留一部分缓冲带宽

/queue simple
add name=user_pcq target=192.168.10.0/24 max-limit=950M/80M packet-marks=User_packet queue=user-up/user-download

关于Address-list地址列表动态添加IP地址

前面使用address-list定义流控IP地址,对于address-list地址列表的调用在很多地方会被使用,这些功能会动态的将来源IP地址加入到指定的地址列表,例如在使用PPP的隧道协议时,制定profile策略,可以选择address-list,一个账号登录成功后,会自动添加到指定的address-list,如下图:

当l2tp的用户登录成功后,会加入到l2tp列表,然后在对l2tp的address-list做流量标记

/ip firewall mangle
add chain=forward  src-address-list=l2tp action=mark-connection new-connection-mark=l2tp_conn passthrough=yes

然后从连接标记从User_conn提取数据包标记new-packet-mark=User_packet

add chain=forward connection-mark=l2tp_conn action=mark-packet new-packet-mark=l2tp_packet passthrough=yes

配置Queue type

/queue type
add kind=pcq name= user_down pcq-classifier=dst-address pcq-rate=100M
add kind=pcq name= user_up pcq-classifier=src-address pcq-rate=10M

在simple下面添加规则,这里总带宽下行1G,上行100M,需要预留一部分缓冲带宽

/queue simple
add name=user_pcq target=192.168.10.0/24 max-limit=950M/80M packet-marks=l2tp_packet queue=user-up/user-download

匹配端口的流量标记

只想对到TCP 80和443端口的进行流量控制

然后在mangle先做连接标记,源地址192.168.10.0/24,排除目标地址是NAS地址列表,定义一个new-connection-mark=User_conn

/ip firewall mangle
add chain=forward  src-address=192.168.10.0/24 protocol=tcp dst-port=80,443 action=mark-connection new-connection-mark=80443_conn passthrough=yes

然后从连接标记从User_conn提取数据包标记new-packet-mark=User_packet

add chain=forward connection-mark=80443_conn action=mark-packet new-packet-mark=80443 _packet passthrough=yes

在queue type下定义PCQ规则,上行和下行

/queue type
add kind=pcq name= 80443_down pcq-classifier=dst-address pcq-rate=100M
add kind=pcq name= 80443_up pcq-classifier=src-address pcq-rate=10M

在simple下面添加规则,这里总带宽下行1G,上行100M,需要预留一部分缓冲带宽

/queue simple
add name=user_pcq target=192.168.10.0/24 max-limit=500M/50M packet-marks=alluser_packet queue=user-up/user-download

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下