XyZone

  • 996
  • ICU
  • 251
Never Settle
Stay Hungry, Stay Foolish
  1. 首页
  2. 996
  3. 正文

MikroTik ROS 通过Queue队列树实现流量优先级、动态限速

2021年3月8日 8807点热度 2人点赞 0条评论

整体上分三步走,第一步识别筛选出要控制的连接和数据包,第二步设置好要套用的限速模板,第三步应用匹配的限速模板到对应的连接中。

要让Queue生效需提前关闭Fasttrack,在防火墙过滤列表中提前删除相关条目。

本次实例思路为设置PING,DNS流量为最优,小包及网页流量其次,其他流量最次。末尾有提供脚本下载链接,文中所述脚本片段只为便于理解。

一、使用Mangle标记各类型流量

整体如图

具体脚本命令如下:

/ip firewall mangle
add action=mark-packet chain=forward comment="Mark Ping" \
    new-packet-mark=PING passthrough=no protocol=icmp
add action=mark-packet chain=forward comment="Mark DNS Query" \
    new-packet-mark=DNS_P passthrough=no port=53 protocol=udp
add action=mark-packet chain=forward comment=\
    "Mark SpeedTest" new-packet-mark=SpeedTest \
    passthrough=no port=8080 protocol=tcp
add action=mark-connection chain=forward comment=\
    "Mark Web Traffic" new-connection-mark=WebC passthrough=yes \
    port=80,443 protocol=tcp
add action=mark-connection chain=forward new-connection-mark=WebC passthrough=yes \
    port=80,443 protocol=udp
add action=mark-packet chain=forward connection-mark=WebC new-packet-mark=\
    WebP passthrough=no
add action=mark-connection chain=forward comment=\
    "Mark MiniPackets Down" dst-address=\
    192.168.0.0/16 new-connection-mark=MiniCDown packet-size=0-512 \
    passthrough=yes
add action=mark-packet chain=forward connection-mark=MiniCDown dst-address=\
    192.168.0.0/16 new-packet-mark=MiniPDown passthrough=no
add action=mark-connection chain=forward comment=\
    "Mark MiniPackets Up" new-connection-mark=\
    MiniCUp packet-size=0-192 passthrough=yes src-address=192.168.0.0/16
add action=mark-packet chain=forward connection-mark=MiniCUp new-packet-mark=\
    MiniPUp passthrough=no src-address=192.168.0.0/16
add action=mark-connection chain=forward comment=\
    "Mark General Down" dst-address=\
    192.168.0.0/16 new-connection-mark=GenDownC passthrough=yes
add action=mark-packet chain=forward connection-mark=GenDownC dst-address=\
    192.168.0.0/16 new-packet-mark=GenDownP passthrough=no
add action=mark-connection chain=forward comment=\
    "Mark General Up" new-connection-mark=\
    GenUpC passthrough=yes src-address=192.168.0.0/16
add action=mark-packet chain=forward connection-mark=GenUpC new-packet-mark=\
    GenUpP passthrough=no src-address=192.168.0.0/16

以上脚本标记了PING流量,DNS流量,SpeedTest流量,HTTP流量,下行小于512字节的流量,上行小于192字节的流量和其他流量。脚本中应用于192.168.0.0/16内网地址,可根据实际进行调整。

例 新增配置Web流量标记如下:

在防火墙Mangle中新建筛选,筛选Web默认通过TCP协议,端口为80、443,筛选出该Web连接
为该连接打上连接标签:WebC
筛选出之前已打上标记的Web连接
将Web连接中的数据包统一打上包标记WebP

以上即完成对Web流量的标记

二、Queue中添加队列类型

前面三个为新建的队列类型
例:新建Web/HTTP流量限速模板,如图所示,限速为8M,短时间可突发至20M

具体脚本命令如下:

/queue type
add kind=pcq name=Gen_Down pcq-classifier=src-address pcq-rate=12M \
    pcq-total-limit=20000KiB
add kind=pcq name=Gen_UP pcq-burst-time=20s pcq-classifier=src-address \
    pcq-rate=20M pcq-total-limit=10000KiB
add kind=pcq name=Web pcq-burst-rate=20M pcq-burst-threshold=8M \
    pcq-classifier=src-address pcq-rate=12M pcq-total-limit=\
    10000KiB

具体限速值需根据实际情况进行调整,可导入脚本后自行在图形界面修改。

三、在队列树Queue-Tree中调用限速模板

流量优先级由高到低,分成ABC只为管理查看上更直观
Web限速如图,该配置针对包标记为WebP的数据包执行HTTP限速模板,设置优先级为4

具体脚本命令如下:

/queue tree
add name=A parent=global
add name=DNS packet-mark=DNS_P parent=A priority=1
add name=PingFirst packet-mark=PING parent=A priority=1
add name=B parent=global
add name=MiniPDownFirst packet-mark=MiniPDown parent=B priority=2
add name=MiniPUpFirst packet-mark=MiniPUp parent=B priority=2
add name=SpeedTest packet-mark=SpeedTest parent=B priority=3
add name=Web packet-mark=WebP parent=B priority=4 queue=Web
add name=C parent=global
add name=GenDown packet-mark=GenDownP parent=C queue=Gen_Down
add name=GenUp packet-mark=GenUpP parent=C queue=Gen_UP

该段脚本链接了各种之前已标记的数据包和对应的限速模板,PING包优先级1,不限速;DNS数据包优先级1,不限速;小包下行优先级2,不限速;Web包优先级4,执行Web限速;其他流量包优先级8,执行全局限速。

四、通过导入脚本快速配置

下载限速脚本

上传至路由器

终端中执行 im file=qos.rsc 即导入设置完成,可在队列树右侧查看匹配次数是否生效。

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: Mikrotik Queue RouterOS
最后更新:2022年7月31日

Silo

♥ Do have faith in what you're doing.

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Captcha Code

Silo

♥ Do have faith in what you're doing.

  • 一、使用Mangle标记各类型流量
  • 二、Queue中添加队列类型
  • 三、在队列树Queue-Tree中调用限速模板
  • 四、通过导入脚本快速配置
最近评论
adad 发布于 3 个月前(11月18日) 感谢分享!
asf 发布于 3 个月前(11月17日) 1
linda 发布于 3 个月前(11月16日) 9999
匿名 发布于 3 个月前(11月09日) test
111 发布于 5 个月前(08月24日) 111

COPYRIGHT © 2022 xyzone.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang