Всем привет! Я пытаюсь настроить QoS, чтобы голосовые пакеты имели приоритет в моей сети для одного конкретного приложения. Не уверен, что делаю всё в правильном порядке, но вот что у меня получилось. Как думаете, всё ли правильно или что-то лишнее или наоборот не хватает?
В общем, у меня есть список из 6 IP-адресов (здесь я привёл только один в качестве примера). Потом создаю правила mangle: одно для TCP-протокола (используется только для сигнализации вызовов в приложении) и одно для UDP-протокола (используется во время звонков). Затем создаю очередь.
Предположим, у меня 22 Мб/с на загрузку и выгрузку, я вычитаю 10% для запаса и выделяю 25% от полосы пропускания этим пакетам. Получается 5 Мб/с для этого приложения (из которых 4 Мб/с идут на UDP и 1 Мб/с на TCP, хотя, скорее всего, для TCP можно взять и меньше) и 15 Мб/с — для остального трафика. Подключение идёт через порт ether0.
Вот что я делаю:
/ip firewall address-list
Add address=xx.xxx.xxx.xxx/xx list=List_IP
/ip firewall mangle
add chain=forward dst-address-list=List_IP protocol=tcp port=5060,5061,5063,5080 action=mark-connection new-connection-mark=Voice-c
add chain=forward src-address-list=List_IP protocol=tcp port=5060,5061,5063,5080 action=mark-connection new-connection-mark=Voice-c
add chain=forward dst-address-list=List_IP protocol=udp port=10000-20000 action=mark-connection new-connection-mark=Voice
add chain=forward src-address-list=List_IP protocol=udp port=10000-20000 action=mark-connection new-connection-mark=Voice
add chain=forward connection-mark=Voice-SIP action=mark-packet new-packet-mark=Voice_c
add chain=forward connection-mark=Voice action=mark-packet new-packet-mark=Voice_P
/queue tree
add limit-at=20Mb max-limit=20Mb name=Up parent=ether0 queue=default
add limit-at=4Mb max-limit=4Mb name=Voice_Up packet-mark=Voice_P parent=Up priority=1 queue=default
add limit-at=1Mb max-limit=1Mb name=Voice_Up packet-mark=Voice_c parent=Up priority=1 queue=default
add name=Rest_Up parent=Up priority=8 queue=default
add limit-at=20Mb max-limit=20Mb name=Down parent=ether0 queue=default
add limit-at=4Mb max-limit=4Mb name=Aircall_Down packet-mark=Voice_P parent=Down priority=1 queue=default
add limit-at=1Mb max-limit=1Mb name=Aircall_Down packet-mark=Voice_c parent=Down priority=1 queue=default
add name=Rest_Down parent=Down priority=8 queue=default
Кажется, теперь у меня часть канала выделена на это конкретное приложение. Как думаете, так правильно? Одно из моих главных непониманий — это выбор цепочки. Я выбрал forward, но не уверен. На чём должен базироваться мой выбор?
У меня только этот один роутер, все компьютеры подключены через ethernet. Кстати, знаю, что все пакеты, приходящие и уходящие из этого приложения, автоматически помечены тегом DSCP 46. Мог ли я сделать что-то проще, опираясь на это?
Большое спасибо за помощь, ребята! Cheers!
В общем, у меня есть список из 6 IP-адресов (здесь я привёл только один в качестве примера). Потом создаю правила mangle: одно для TCP-протокола (используется только для сигнализации вызовов в приложении) и одно для UDP-протокола (используется во время звонков). Затем создаю очередь.
Предположим, у меня 22 Мб/с на загрузку и выгрузку, я вычитаю 10% для запаса и выделяю 25% от полосы пропускания этим пакетам. Получается 5 Мб/с для этого приложения (из которых 4 Мб/с идут на UDP и 1 Мб/с на TCP, хотя, скорее всего, для TCP можно взять и меньше) и 15 Мб/с — для остального трафика. Подключение идёт через порт ether0.
Вот что я делаю:
/ip firewall address-list
Add address=xx.xxx.xxx.xxx/xx list=List_IP
/ip firewall mangle
add chain=forward dst-address-list=List_IP protocol=tcp port=5060,5061,5063,5080 action=mark-connection new-connection-mark=Voice-c
add chain=forward src-address-list=List_IP protocol=tcp port=5060,5061,5063,5080 action=mark-connection new-connection-mark=Voice-c
add chain=forward dst-address-list=List_IP protocol=udp port=10000-20000 action=mark-connection new-connection-mark=Voice
add chain=forward src-address-list=List_IP protocol=udp port=10000-20000 action=mark-connection new-connection-mark=Voice
add chain=forward connection-mark=Voice-SIP action=mark-packet new-packet-mark=Voice_c
add chain=forward connection-mark=Voice action=mark-packet new-packet-mark=Voice_P
/queue tree
add limit-at=20Mb max-limit=20Mb name=Up parent=ether0 queue=default
add limit-at=4Mb max-limit=4Mb name=Voice_Up packet-mark=Voice_P parent=Up priority=1 queue=default
add limit-at=1Mb max-limit=1Mb name=Voice_Up packet-mark=Voice_c parent=Up priority=1 queue=default
add name=Rest_Up parent=Up priority=8 queue=default
add limit-at=20Mb max-limit=20Mb name=Down parent=ether0 queue=default
add limit-at=4Mb max-limit=4Mb name=Aircall_Down packet-mark=Voice_P parent=Down priority=1 queue=default
add limit-at=1Mb max-limit=1Mb name=Aircall_Down packet-mark=Voice_c parent=Down priority=1 queue=default
add name=Rest_Down parent=Down priority=8 queue=default
Кажется, теперь у меня часть канала выделена на это конкретное приложение. Как думаете, так правильно? Одно из моих главных непониманий — это выбор цепочки. Я выбрал forward, но не уверен. На чём должен базироваться мой выбор?
У меня только этот один роутер, все компьютеры подключены через ethernet. Кстати, знаю, что все пакеты, приходящие и уходящие из этого приложения, автоматически помечены тегом DSCP 46. Мог ли я сделать что-то проще, опираясь на это?
Большое спасибо за помощь, ребята! Cheers!