Когато трафика малко понарасне а и бройката на потребителите също queue simple става тежък вариант за рутера отнемащ голям ресурс. Това е момента в който трябва да се остави queue simple и да се премине към PCQ като решение да се ограничава скороста на потребителите.
Тъй като във версия 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
Ако по някаква причина нямате билинг система която да спира трафика към определен ип адрес след като изтече абонамента му може да добавите следните правила в 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 в терминала.
Интересно решение, а как разграничаваш BG/International? До колко потребители, трафик, тарифи може да се конфигурират и да работи нормално различните модели на микротик рутерборд?
Никога не сме делили int с bg трафици просто защото сме подсигурени но не е проблем да се направи. Шейпъра е много лек то всъщност това му е идеята.
is there an equivalent of mikrotik PCQ in linux ?