Ограничаване на скороста с PCQ в MikroTik 6x


Когато трафика малко понарасне а и бройката на потребителите също queue simple става тежък вариант за рутера отнемащ голям ресурс. Това е момента в който трябва да се остави queue simple и да се премине към PCQ като решение да се ограничава скороста на потребителите.

Screenshot from 2014-06-19 18:18:13


Тъй като във версия 6 на RouterOS в ограничението на скороста има известни промени ще покажа моето решение. Във варианта който ползвам аз имам три скорости (тарифи) с които ограничавам клиентите. Това са BASIC, STANDART и BUSINESS който в случая са:

BASIC .....10up/20down - Mbits
STANDART ..20up/40down - Mbits
BUSINESS ..40up/60down - Mbits

Като за начало нека разгледаме във firewall как маркираме трафика на първата от трите скорости (BASIC). В първия ред създаваме dst-address-list=BASIC както във въпросната адрес листа ще описваме IP адресите на клиентите които ограничаваме по следния начин (ip firewall address-list add list=BASIC address=xx.xx.xx.xx). Забележете, че това е трафик само в едната посока в случая към адреса (destination => dst-address-list) което всъщност е upload на клиента. В същия първи ред създаваме име на маркирания трафик new-connection-mark=CBASIC_in. Във втория ред правим същото само, че в обратна посока download. След като в първите два реда маркирахме конекциите в двете посоки които ще се създадат от адрес листата сега трябва да маркираме пакетите на въпросните конекции в трети и четвърти ред с име PBASIC_in и out.

BASIC - е името на адрес листата в която описваме адресите който ще ограничим
CBASIC - са маркираните конекции който ще създадат адресите от адрес листата
PBASIC - са маркираните пакети минаващи през маркираните конекции
/ip firewall mangle
add action=mark-connection chain=forward dst-address-list=BASIC new-connection-mark=CBASIC_in
add action=mark-connection chain=forward new-connection-mark=CBASIC_out src-address-list=BASIC
add action=mark-packet chain=forward connection-mark=CBASIC_in new-packet-mark=PBASIC_in passthrough=no
add action=mark-packet chain=forward connection-mark=CBASIC_out new-packet-mark=PBASIC_out passthrough=no
add action=mark-connection chain=forward dst-address-list=STANDART new-connection-mark=CSTANDART_in
add action=mark-connection chain=forward new-connection-mark=CSTANDART_out src-address-list=STANDART
add action=mark-packet chain=forward connection-mark=CSTANDART_in new-packet-mark=PSTANDART_in passthrough=no
add action=mark-packet chain=forward connection-mark=CSTANDART_out new-packet-mark=PSTANDART_out passthrough=no
add action=mark-connection chain=forward dst-address-list=BUSINESS new-connection-mark=CBUSINESS_in
add action=mark-connection chain=forward new-connection-mark=CBUSINESS_out src-address-list=BUSINESS
add action=mark-packet chain=forward connection-mark=CBUSINESS_in new-packet-mark=PBUSINESS_in passthrough=no
add action=mark-packet chain=forward connection-mark=CBUSINESS_out new-packet-mark=PBUSINESS_out passthrough=no

Тук задаваме типа и скороста на трите отделни тарифи. Скороста естествено може да се променя в реално време без въобще да се притесняваме за нищо като естествено промените влизат за всички клиенти от въпросната тарифа.

/queue type
add kind=sfq name=QoS
add kind=pcq name=BASIC_UP pcq-classifier=src-address pcq-rate=10M
add kind=pcq name=BASIC_DOWN pcq-classifier=dst-address pcq-rate=20M
add kind=pcq name=STANDART_UP pcq-classifier=src-address pcq-rate=20M
add kind=pcq name=STANDART_DOWN pcq-classifier=dst-address pcq-rate=40M
add kind=pcq name=BUSINESS_UP pcq-classifier=src-address pcq-rate=40M
add kind=pcq name=BUSINESS_DOWN pcq-classifier=dst-address pcq-rate=60M

Последната конфигурация е да закачим маркираните пакети към готовите вече правила с описаните скорости. Във версия 5 трябваше да се описва входящ и изходящ интерфейс – това тук не е нужно, с опцията global се спестяват куп главоболия ако имате повече от един интерфейс на рутера към потребителите си.

/queue tree
add name=UP parent=global priority=5
add name=DOWN parent=global priority=5
add burst-time=10s name=BASIC_UP packet-mark=PBASIC_out parent=UP queue=BASIC_UP
add burst-time=10s name=BASIC_DOWN packet-mark=PBASIC_in parent=DOWN queue=BASIC_DOWN
add burst-time=10s name=STANDART_UP packet-mark=PSTANDART_out parent=UP queue=STANDART_UP
add burst-time=10s name=STANDART_DOWN packet-mark=PSTANDART_in parent=DOWN queue=STANDART_DOWN
add burst-time=10s name=BUSINESS_UP packet-mark=PBUSINESS_out parent=UP queue=BUSINESS_UP
add burst-time=10s name=BUSINESS_DOWN packet-mark=PBUSINESS_in parent=DOWN queue=BUSINESS_DOWN

Как изглежда конфигурацията в Winbox

Screenshot from 2014-06-19 17:12:33

Screenshot from 2014-06-19 17:12:59

Screenshot from 2014-06-19 17:14:27

Screenshot from 2014-06-19 17:16:15

Screenshot from 2014-06-19 17:18:29


Ако по някаква причина нямате билинг система която да спира трафика към определен ип адрес след като изтече абонамента му може да добавите следните правила в firewall

/ip firewall filter
add chain=forward comment=BASIC src-address-list=BASIC
add chain=forward comment=STANDART src-address-list=STANDART
add chain=forward comment=BUSINESS src-address-list=BUSINESS
add action=drop chain=forward comment="DROP FORWARD NETWORK" src-address-list=DROP

Така първите три реда ще пропускат ип адреси само от адрес листата във firewall а четвъртото ще забранява всякакъв друг трафик. За да се спре достъпа до Интернет на определен ип адрес просто трябва да направите нактивен ред в адрес листата в winbox или да го конфигурирате с disable в терминала.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This Post Has 3 Comments

  1. Georgi

    Интересно решение, а как разграничаваш BG/International? До колко потребители, трафик, тарифи може да се конфигурират и да работи нормално различните модели на микротик рутерборд?

  2. Самуил Арсов

    Никога не сме делили int с bg трафици просто защото сме подсигурени но не е проблем да се направи. Шейпъра е много лек то всъщност това му е идеята.

  3. Ero

    is there an equivalent of mikrotik PCQ in linux ?