[Mikrotik] Auto Max Limit Queue Tree Berdasarkan Average Rate

Beberapa waktu lalu sempat terpikir bagaimana caranya mengubah secara otomatis Max Limit berdasarkan Average Rate.

Pada kondisi warnet ada yang main game online, sudah barang tentu Max Limit Queue Tree untuk browsing tidak saya kasih mentok di 3Mbps. Namun bila kondisi tidak ada gamer, alias browsing semua, saya mengubah Max Limit untuk browsing mentok di 3Mbps.

Tapi karena mengubah Max Limit masih saya lakukan secara manual, terpikir bagaimana caranya membuat otomatisasi Max Limit merujuk pada Average Rate koneksi game online. Jadi bila Average Rate game online 0, maka Max Limit untuk browsing akan otomatis menjadi 3Mbps, dan sebaliknya bila Average Rate game online >1 Kbps, maka Max Limit browsing akan diturunkan ke 1,8 Mbps.

Untungnya Mikrotik mempunyai fitur Scripting dan Scheduler untuk tujuan otomatisasi tersebut. Berikut skrip dan penjelasannya!

Kita bermain di Winbox saja, dengan asumsi Mikrotik ROS kisanak sudah berfungsi penuh dan bisa diakses melalui Winbox. Konfigurasi yang saya gunakan di ROS untuk contoh script otomatis ini adalah Queue Tree seperti pada artikel sebelumnya:

34

Skrip dasar Auto Update berasal dari blog Mas Agus Ramdhani dengan sedikit perubahan oleh saya:

LANGKAH KERJA:

  1. Buka System/Script, buat script baru dengan nama bebas. Sebagai contoh dibawah saya namai skripnya queuetree

:global SetMaxLimit;
:global BW3M 3000000;
:global BW1M 1800000;
:local avgRate [/ queue tree get “3.Game” rate]
:log info “Max Limit –> $SetMaxLimit”;
:log info “Rate Game –> $avgRate”;
:log info “Rate Game –> ($avgRate = 0 or $avgRate < 1000)”;
:if ($avgRate < 1000) do={
:if ($avgRate = 0 or $avgRate < 1000) do={
:set SetMaxLimit $BW3M;
:log info “–> Max-limit Browsing berubah ke 3Mbps”;
} else={
:set SetMaxLimit $BW1M;
:log info “–> Max-limit Browsing berubah ke 1,8Mbps”;
};
} else={
:set SetMaxLimit $BW1M;
:log info “–> Max-limit Browsing berubah ke 1,8Mbps”;
};
/ queue tree set “4.Download” max-limit=$SetMaxLimit
};

2. Buka System/Scheduler, buat schedule untuk eksekusi skrip tersebut diatas. Sebagai contoh, saya buat scheduler dengan interval 1 menit. Jangan lupa pada kolom On Event masukkan nama skrip yang telah dibuat.

33

3. Selesai!

Bagaimana hasilnya?

Seperti gambar dibawah ini, bila Average Rate untuk game online berada di posisi 0 (atau tidak ada traffic), atau berada di bawah 1 Kbps, maka Max Limit untuk browsing akan auto update ke 3Mbps:

35

Sebaliknya, bila ada traffic di game online >1 Kbps, Max Limit browsing akan auto update ke 1,8 Mbps:

36

Silakan atur Max Limit, Average Rate dan interval eksekusi scriptnya sesuai dengan selera kisanak.

Sampai jumpa pada artikel menarik lainnya di Padepokan Go….!!!!BLOG yang kita cintai bersama.

[Mikrotik] Memisahkan Bandwidth Gaming dan Browsing (Queue Tree Model Ribet)

Jika pada dua artikel lalu saya menyuguhkan metode Queue Tree yang paling gampang, kali ini saya akan berikan metode yang ribet.

Artikel mengenai Queue Tree kembali saya turunkan pada kisanak, karena berdasarkan hasil percobaan yang lalu, ada kebocoran bandwidth yang cukup besar. Bandwidth yang saya alokasikan untuk Queue Tree browsing adalah sebesar 2Mbps (dari total bandwidth 3Mbps-sisanya untuk game online). Namun kenyataan di lapangan, bandwidth untuk browsing secara rata-rata ada kebocoran sekitar 70%. Ini berarti, dalam kondisi warnet penuh, bandwidth browsing yang seharusnya 2Mbps malah naik ke 2.7 Mbps.

Memang kondisi bocor ini tidak terjadi dalam waktu lama, hanya berkisar antara 2-5 detik, tapi kondisi tersebut cukup membuat koneksi game online menjadi lag, karena lapaknya direbut oleh koneksi browsing.

Sekedar pengingat dan pembanding langkah Queue Tree yang lalu adalah:

  1. Marking connection dan marking packet port game
  2. Marking connection dan marking packet semua koneksi selain port game (untuk browsing)
  3. Queue Tree

Untuk metode ribet kali ini langkahnya menjadi cukup panjang, bahkan metode ini mirip dengan Simple Queue yang telah saya sampaikan pada artikel lalu:

  1. Marking connection dan marking packet port game
  2. Marking connection dan marking packet per IP address PC (untuk browsing)
  3. Queue Tree untuk browsing per IP address PC.

Seperti biasa saya asumsikan kisanak sudah mempunyai Mikrotik RB atau ROS yang sudah terhubung ke internet dengan baik, jadi saya hanya memberikan script Mangle dan Queue Tree saja.

Kondisi jaringan:

Interface ke internet: IP 192.168.0.3 –> nama interface: INTERNET

Interface ke LAN: IP 192.168.1.8 –> nama interface LAN

PC terhubung ke router: IP 192.168.1.2 dan seterusnya.

Sesuaikan dengan kondisi jaringan kisanak.

Di tes pada Mikrotik ROS 6.10

Script Mangle:

/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=LAN \
new-connection-mark=icmp_conn protocol=icmp
add action=change-dscp chain=prerouting connection-mark=icmp_conn new-dscp=1
add action=mark-packet chain=prerouting comment=icmp connection-mark=\
icmp_conn new-packet-mark=icmp_pkt passthrough=no
add action=mark-connection chain=prerouting dst-port=53 in-interface=LAN \
new-connection-mark=dns_conn protocol=tcp
add action=change-dscp chain=prerouting connection-mark=dns_conn new-dscp=1
add action=mark-packet chain=prerouting comment=dns connection-mark=dns_conn \
new-packet-mark=dns_pkt passthrough=no
add action=mark-connection chain=prerouting comment=PointBlank dst-port=\
39190-39200 in-interface=LAN new-connection-mark=game_online protocol=tcp
add action=mark-connection chain=prerouting comment=DOTA2 dst-port=\
10000-13999 in-interface=LAN new-connection-mark=game_online protocol=tcp
add action=mark-connection chain=prerouting comment=RFOnline dst-port=\
27780-30000 in-interface=LAN new-connection-mark=game_online protocol=tcp
add action=mark-connection chain=prerouting comment=Ayodance dst-port=\
14501-20000 in-interface=LAN new-connection-mark=game_online protocol=tcp
add action=mark-connection chain=prerouting comment=CS dst-port=\
47611,8000-8010,36567 in-interface=LAN new-connection-mark=game_online \
protocol=tcp
add action=mark-connection chain=prerouting comment=”Lost Saga” dst-port=\
14000-14500 in-interface=LAN new-connection-mark=game_online protocol=tcp
add action=mark-connection chain=prerouting comment=”PointBlank UDP” \
dst-port=40000-40010 in-interface=LAN new-connection-mark=game_online \
protocol=udp
add action=mark-connection chain=prerouting comment=”Lost Saga UDP” dst-port=\
14000-14010 in-interface=LAN new-connection-mark=game_online protocol=udp
add action=mark-packet chain=prerouting comment=game_online_pkt \
connection-mark=game_online new-packet-mark=game_online_pkt passthrough=\
no
add action=mark-connection chain=prerouting comment=PC1 new-connection-mark=\
browsing_PC1 src-address=192.168.1.2
add action=mark-connection chain=prerouting comment=PC2 new-connection-mark=\
browsing_PC2 src-address=192.168.1.3
add action=mark-connection chain=prerouting comment=PC3 new-connection-mark=\
browsing_PC3 src-address=192.168.1.4
add action=mark-connection chain=prerouting comment=PC4 new-connection-mark=\
browsing_PC4 src-address=192.168.1.5
add action=mark-connection chain=prerouting comment=PC5 new-connection-mark=\
browsing_PC5 src-address=192.168.1.6
add action=mark-connection chain=prerouting comment=PC6 new-connection-mark=\
browsing_PC6 src-address=192.168.1.7
add action=mark-packet chain=prerouting comment=browsing_pkt_PC1 \
connection-mark=browsing_PC1 new-packet-mark=browsing_pkt_PC1 \
passthrough=no
add action=mark-packet chain=prerouting comment=browsing_pkt_PC2 \
connection-mark=browsing_PC2 new-packet-mark=browsing_pkt_PC2 \
passthrough=no
add action=mark-packet chain=prerouting comment=browsing_pkt_PC3 \
connection-mark=browsing_PC3 new-packet-mark=browsing_pkt_PC3 \
passthrough=no
add action=mark-packet chain=prerouting comment=browsing_pkt_PC4 \
connection-mark=browsing_PC4 new-packet-mark=browsing_pkt_PC4 \
passthrough=no
add action=mark-packet chain=prerouting comment=browsing_pkt_PC5 \
connection-mark=browsing_PC5 new-packet-mark=browsing_pkt_PC5 \
passthrough=no
add action=mark-packet chain=prerouting comment=browsing_pkt_PC6 \
connection-mark=browsing_PC6 new-packet-mark=browsing_pkt_PC6 \
passthrough=no

Script Queue Tree untuk game online:

/queue tree
add name=3.Game packet-mark=game_online_pkt parent=LAN priority=3
add name=5.Upload parent=INTERNET
add max-limit=512k name=”Browsing Upload” packet-mark=browsing_pkt parent=\
5.Upload
add name=”Game Upload” packet-mark=game_online_pkt parent=5.Upload priority=3
add name=1.DNS packet-mark=dns_pkt parent=LAN priority=1

Script Queue Tree untuk browsing:

/queue tree
add max-limit=1800k name=4.Download parent=LAN queue=limit_dl
add name=”DNS Upload” packet-mark=dns_pkt parent=5.Upload priority=1 queue=\
default
add name=2.ICMP packet-mark=icmp_pkt parent=LAN priority=2 queue=default
add name=”ICMP Upload” packet-mark=icmp_pkt parent=5.Upload priority=2 queue=\
default
add limit-at=256k max-limit=768k name=PC1 packet-mark=browsing_pkt_PC1 \
parent=4.Download queue=limit_dl
add limit-at=256k max-limit=768k name=PC3 packet-mark=browsing_pkt_PC3 \
parent=4.Download queue=limit_dl
add limit-at=256k max-limit=768k name=PC2 packet-mark=browsing_pkt_PC2 \
parent=4.Download queue=limit_dl
add limit-at=256k max-limit=768k name=PC4 packet-mark=browsing_pkt_PC4 \
parent=4.Download queue=limit_dl
add limit-at=256k max-limit=768k name=PC5 packet-mark=browsing_pkt_PC5 \
parent=4.Download queue=limit_dl
add limit-at=256k max-limit=768k name=PC6 packet-mark=browsing_pkt_PC6 \
parent=4.Download queue=limit_dl

Script Queue Type:

/queue type
add kind=pcq name=limit_dl pcq-classifier=dst-address pcq-dst-address6-mask=\
64 pcq-limit=12 pcq-src-address6-mask=64 pcq-total-limit=100

Screenshot Queue Tree metode pertama:

27

Screenshot Queue Tree metode ribet (dengan Max Limit 1.8 Mbps):

28

Hasil akhir dan kesimpulan:

Queue Tree metode ribet menurut saya memberikan hasil yang lebih akurat. Walaupun masih ada kebocoran bandwidth (yang saya masih belum tahu biang keladinya dimana). Tapi dengan metode ini, kebocoran bandwidthnya lebih kecil, yaitu berkisar 30-50% saja. Barangkali ada kisanak yang sudi memberikan pencerahan pada saya untuk memperbaiki kebocoran bandwidth pada metode queue tree ini, akan sangat saya hargai.

Sampai berjumpa pada artikel Go….BLOG!!!! Selanjutnya.

 

[Update][Mikrotik] Memisahkan Bandwidth Gaming dan Browsing (Metode Alternatif dengan Queue Tree)

Ada kelupaan untuk artikel kemarin

Hanya sekedar update cepat saja mengenai artikel kemarin, yaitu memisahkan bandwidth gaming dan browsing menggunakan queue tree.

Skrip pada artikel kemarin tersebut sebenarnya sudah bisa untuk menjalankan pemisahan bandwidth. Hanya saja fungsi queue tree nya belum maksimal, karena saya kelupaan belum menambahkan Queue Type PCQ (maklum faktor U). Silakan tambahkan skrip berikut:

/queue type

add kind=pcq name=limit_dl pcq-burst-rate=0 pcq-burst-threshold=0 \
pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 \
pcq-dst-address6-mask=64 pcq-limit=50 pcq-rate=0 pcq-src-address-mask=32 \
pcq-src-address6-mask=64 pcq-total-limit=2000

Lalu ganti Queue Type pada Queue List Browsing menjadi limit_dl, sesuai dengan nama PCQ yang telah dibuat.

30

Silakan kisanak Torch untuk membuktikan khasiatnya setelah Queue Type diubah menjadi PCQ seperti contoh dibawah:

28

Queue Tree PCQ dengan 2 user online menghasilkan bandwidth yang seimbang.

29

Queue Tree PCQ dengan 3 user online menghasilkan bandwidth yang seimbang, dan demikian seterusnya sesuai jumlah PC yang online.

Demikian artikel telah saya koreksi dan tambahkan. Agar diindahkan dan menjadi periksa.