如何在 MikroTik RouterOS 上设置 QoS?

如何在 MikroTik RouterOS 上设置 QoS?

我知道这是一个常见的问题,但我已经花了两天时间来了解这个问题,仍然找不到明确的解释......

最近我买了一个 Miktotik hEX(RouterOS 6,Level 4),用作 100MBit 下行/30MBit 上行光纤连接的主路由器(速度测试显示实际为 110/33,因为我的提供商增加了 10% 的余量)。我想优先处理流量,主要是为了避免 VoIP 呼叫(通过 Twilio)出现问题。

我之前曾使用以下方法成功优化了流量火力QOS使用自定义的Linux机器(虽然不能处理超过20Mbit的速度),使用以下配置:

DEVICE=ppp0

INPUT_SPEED=20mbit
OUTPUT_SPEED=10mbit
LINKTYPE="local pppoe-llc"

interface $DEVICE world-in input rate $INPUT_SPEED
  class voip commit 120kbit       # https://www.twilio.com/docs/api/client/regions
    match src 54.171.127.192/26   # Twilio: ie1
    match src 52.215.127.0/24     # Twilio: ie1
    match src 35.156.191.128/25   # Twilio: de1
    match src 185.187.132.64/26   # Twilio: ie1-tnx
    match udp port 5060           # SIP
    match udp dports 10000:10100  # RTP
    match sports 3478,5349        # STUN
  class interactive commit 20%
    match udp port 53             # DNS
    match tcp port 22             # SSH
    match icmp                    # ping
    match tcp sports 5222,5228    # gtalk
  class synacks      
    match tcp syn    
    match tcp ack    
  class web commit 5%
    match tcp sports 80,443 
  class mail
    match tcp sports 25,465,587
  class default

interface $DEVICE world-out output rate $OUTPUT_SPEED
  class voip commit 120kbit
    match dst 54.171.127.192/26   # Twilio: ie1
    match dst 52.215.127.0/24     # Twilio: ie1
    match dst 35.156.191.128/25   # Twilio: de1
    match dst 185.187.132.64/26   # Twilio: ie1-tnx
    match udp port 5060           # SIP
    match udp sports 10000:10100  # RTP
    match dports 3478,5349        # STUN
  class interactive commit 20%
    match udp port 53             # DNS
    match tcp port 22             # SSH
    match icmp                    # ping
    match tcp dports 5222,5228    # gtalk
  class synacks commit 2%      
    match tcp syn    
    match tcp ack    
  class web commit 5%
    match tcp dports 80,443 
  class mail
    match tcp dports 25,465,587
  class default

同时,我尝试在 RouterOS 中相应地设置数据包标记:

在此处输入图片描述

我想我需要在 Mikrotik 上设置队列树并为可用的上行/下行速度创建一个主队列并按一些优先级划分。

目前我不知道从哪里开始,因为我看不到为传入和传出流量创建两个不同队列的方法(因为我有不对称的带宽)。

我看到每个接口都有预定义的(父)队列,但问题是我使用 VLAN 来提供 WAN 访问三个完全独立的子网。我使用的单个物理端口是ether2-master

在此处输入图片描述

我猜测为父级创建队列ether2-master是行不通的,因为数据包不会在该级别上被标记(对吗?),因为所有ether2-master数据包都带有 VLAN 标记。

我希望拥有与 FireQOS 相同的 QoS,但真正重要的是 VoIP 部分。

那么,我应该如何配置队列树?

答案1

我肯定会在路由决策之前标记数据包,因此您应该在预路由而不是前向链上设置路由标记规则。

然后在全局队列下为 voip 流量添加队列并设置保证速度。

/queue tree add name="voip_in" parent=global packet-mark=VOIP_IN queue=pcq-download-default priority=1 limit-at=120k max-limit=100M
/queue tree add name="voip_out" parent=global packet-mark=VOIP_OUT queue=pcq-upload-default priority=1 limit-at=120k max-limit=30M

您还应该分别标记传入和传出流量(interactive_in、interactive_out、synacks_in、synacks_out 等)。然后您可以创建适当的队列。您无法以百分比指定分配的带宽,您必须设置位/秒值。

 /queue tree add name="interactive_in" parent=global packet-mark=interactive_in queue=pcq-download-default priority=2 limit-at=20M max-limit=20M
 /queue tree add name="interactive_out" parent=global packet-mark=interactive_out queue=pcq-upload-default priority=2 limit-at=6M max-limit=6M
 /queue tree add name="synacks_in" parent=global packet-mark=synacks_in queue=pcq-download-default priority=3 limit-at=2M max-limit=2M
 /queue tree add name="synacks_out" parent=global packet-mark=synacks_out queue=pcq-upload-default priority=3 limit-at=600k max-limit=600k
 /queue tree add name="web_in" parent=global packet-mark=web_in queue=pcq-download-default priority=4 limit-at=5M max-limit=5M
 /queue tree add name="web_out" parent=global packet-mark=web_out queue=pcq-upload-default priority=4 limit-at=1500k max-limit=1500k
 /queue tree add name="mail_in" parent=global packet-mark=mail_in queue=pcq-download-default priority=5
 /queue tree add name="mail_out" parent=global packet-mark=mail_out queue=pcq-upload-default priority=5
 /queue tree add name="default" parent=global packet-mark=no-mark queue=default priority=6

请注意,优先级值并不意味着任何数据包优先级。它只是设置队列的顺序。

相关内容