Scheduled check for loaded interfaces (auto adding queue to some IP or interface)

From MikroTik Wiki
Jump to: navigation, search

If you have MikroTik as main router on your network (business and residential clients using the same downlink) and you want to create QoS for business users.

Simple: If your downlink is about 2Mbps and you want to grant the business clients min 1Mbit. But on the same MikroTik you have connected residential users.
This script can check out-interface (for $sent-bits-per-second/$received-bits-per-second) and if sent/received bits > 1Mbps, script can add queue for some interface or IP address(es).

/system script 
add name="tl_down" source="/interface monitor-traffic [/interface find name "interface"] once do { 
:if ($received-bits-per-second > 1048576) do { 
/queue simple add name=(username . "_" . [:pick [/system clock get date] 4 6] . "-" . [:pick [/system clock get date] 0 3]  \
. "-" . [:pick [/system clock get date] 7 11] . "-" . [:pick [/system clock get time] 0 9]) limit-at=262144/262144 \
max-limit=262144/262144 target-addresses="ip address" priority=1
:log warning "Traffic limit added for ip address/network/interface"
add name="tl_remove_down" source="/interface monitor-traffic [/interface find name "interface"] once do { 
:if ($received-bits-per-second < 1048576) do { 
/queue simple remove [/queue simple find target-addresses="ip address"]
:log warning "Traffic limit removed for ip address/network/interface"

/system scheduler
add name="name-unloaded" on-event=tl_remove_down start-date=jan/01/2007 start-time=00:00:00 interval=9m comment="" disabled=no
add name="name-loaded" on-event=tl_down start-date=jan/01/2007 start-time=00:00:00 interval=10m comment="" disabled=no