Назад | Перейти на главную страницу

Как настроить QoS на MikroTik RouterOS?

Я знаю, что это частый вопрос, но я потратил два дня, чтобы узнать это, и до сих пор не могу найти четкого объяснения ...

Недавно я купил Miktotik hEX (RouterOS 6, уровень 4), используемый в качестве основного маршрутизатора для оптоволоконного соединения 100 Мбит вниз / 30 Мбит вверх (тесты скорости показывают фактически 110/33, поскольку мой провайдер добавляет 10% маржу). Я хочу расставить приоритеты для трафика, чтобы избежать проблем с вызовами VoIP (через Twilio).

Раньше я успешно расставлял приоритеты трафика с помощью FireQOS используя пользовательский ящик Linux (который, однако, не может обрабатывать более 20 Мбит), используя следующую конфигурацию:

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.

Я бы хотел иметь такое же QoS, как у FireQOS, но что действительно важно, так это часть VoIP.

Итак, как мне настроить дерево очереди?

Я бы определенно пометил пакеты перед принятием решения о маршрутизации, поэтому вы должны установить свои правила маркировки маршрутизации для предварительной маршрутизации, а не для прямой цепочки.

Затем добавьте очереди для 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 и т. Д.). Затем вы можете создать соответствующие очереди. Вы не можете указать выделенную полосу пропускания в percantage, вы должны установить значения бит / с.

 /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

Обратите внимание, что значение приоритета не означает приоритет пакета. Он просто устанавливает порядок очередей.