我知道这是一个常见的问题,但我已经花了两天的时间来学习这个问题,仍然找不到明确的解释.
最近,我买了一个Miktotik hEX (RouterOS 6,第4级),作为100 30MBit下行/30 30MBit上行光纤连接的主要路由器(速度测试显示,实际上是110/33,因为我的提供商增加了10%的利润率)。我想优先处理流量,主要是为了避免VoIP调用的问题(通过Twilio)。
在使用自定义Linux (但不能处理超过20 20Mbit )的FireQOS之前,我使用以下配置成功地对通信量进行了优先排序:
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来提供对three完全独立的子网的广域网访问。我使用的唯一物理端口是ether2-master
:
我猜为父ether2-master
创建队列将无法工作,因为数据包不会在该级别上标记(对吗?),因为所有的ether2-master
数据包都是VLAN标记的。
我希望拥有与FireQOS相同的FireQOS,但真正重要的是VoIP部分。
那么,我应该如何配置队列树呢?
发布于 2018-07-05 20:39:09
我肯定会在路由决定之前标记数据包,所以您应该在预路由上设置路由标记规则,而不是前向链。
然后,在全局队列下为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等)。然后,您可以创建适当的队列。您不能指定已分配的带宽,您必须设置位/S值。
/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
请注意,优先级值并不意味着任何数据包优先级。它只是设置队列的顺序。
https://serverfault.com/questions/908972
复制相似问题