Mikrotik : Queue Tree Lanjutan (Hierarchical Queue dan Parent)

Revision as of 07:02, 12 October 2026 by Maintenance script (talk | contribs) (Protected "Mikrotik : Queue Tree Lanjutan (Hierarchical Queue dan Parent)" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(diff) ← Older revision | Latest revision (diff) | Newer revision β†’ (diff)

Mikrotik : Queue Tree Lanjutan (Hierarchical Queue dan Parent)

🎯 Tujuan

Setelah mengikuti materi ini, kamu diharapkan bisa:

  • membedakan Queue Tree dengan Simple Queue dan tahu kapan memakai masing-masing;
  • memahami struktur hierarki parent dan child pada Queue Tree;
  • membedakan `limit-at` (jatah terjamin) dan `max-limit` (batas maksimal) dalam hierarki HTB;
  • memilih parent yang tepat: `global`, `global-in`, `global-out`, `global-total`, interface, atau queue lain;
  • membangun hierarki dua tingkat untuk kebutuhan lab sekolah;
  • memakai priority 1–8 dan queue type PCQ secara benar;
  • memverifikasi bahwa hierarki benar-benar bekerja, plus mengenali masalah umumnya.

πŸ“ Konteks nyata

Bayangkan Queue Tree itu seperti jaringan irigasi di sawah. Ada satu pintu air utama dari sungai yang mengatur total debit air.

Dari pintu utama itu bercabang pintu-pintu kecil menuju tiap petak sawah. Kalau pintu utama hanya dibuka 20 liter per detik, semua petak berbagi angka itu.

  • πŸ”Ή pintu utama adalah queue induk (parent) yang mengunci total bandwidth;
  • πŸ”Ή pintu petak adalah queue anak (child) yang mengatur jatah tiap kelompok trafik.

Kalau semua petak dibuka selebar-lebarnya, air tidak bertambah. Yang terjadi hanya rebutan. Di situlah hierarki membantu: tiap kelompok punya jatah minimum yang dijaga.

Queue Tree juga tidak berurutan seperti Simple Queue. Simple Queue memeriksa paket satu per satu dari atas ke bawah, sedangkan Queue Tree memproses semua trafik sekaligus dalam satu struktur pohon.

πŸ“Š Angka penting: RouterOS menyediakan 8 tingkat queue. Tingkat pertama adalah `/queue interface`, tujuh tingkat sisanya bisa dipakai lewat Simple Queue dan/atau Queue Tree.

🧠 Konsep singkat

Queue Tree memakai dasar kerja bernama HTB (Hierarchical Token Bucket), yaitu sistem antrean yang bisa disusun berjenjang seperti pohon.

Karena HTB berjenjang, satu queue bisa menjadi anak dari queue lain. Queue yang punya anak disebut inner queue dan tugasnya hanya membagi jatah. Queue yang tidak punya anak disebut leaf queue dan di situlah trafik benar-benar dikonsumsi.

Ada tiga aturan praktis yang wajib dipegang:

  • jumlah `limit-at` semua anak sebaiknya kurang dari atau sama dengan `max-limit` parent;
  • `max-limit` setiap anak harus kurang dari atau sama dengan `max-limit` parent-nya;
  • `priority` hanya berlaku di leaf queue dan hanya bekerja kalau `max-limit` diisi, bukan 0.

Cara membaca HTB dengan sederhana:

  • `limit-at` adalah jatah minimum yang dijamin didapat walau jaringan sedang ramai;
  • `max-limit` adalah batas maksimum yang boleh dicapai kalau masih ada sisa bandwidth dari parent;
  • `priority` menentukan siapa yang dilayani lebih dulu ketika jatah tambahan dari parent diperebutkan.

Setelah semua `limit-at` terpenuhi, sisanya dibagi lagi ke anak-anak yang punya `max-limit` lebih besar. Di tahap inilah priority menentukan siapa yang menang.

πŸ’‘ Tips: susun angka dari atas ke bawah. Tulis dulu total bandwidth internetmu, potong jadi jatah kelompok, baru bagi lagi ke tiap kelompok. Jangan dibalik.

🧩 Istilah penting

  • Queue Tree - queue satu arah (upload saja atau download saja) yang dipasang di HTB. Wajib memakai packet mark dari mangle kalau ingin memilih trafik tertentu.
  • parent - queue induk tempat sebuah queue menempel. Bisa berupa `global`, `global-in`, `global-out`, `global-total`, nama interface, atau nama queue lain.
  • child - queue yang menempel pada parent. Anak menerima jatah dari induknya.
  • leaf queue - queue paling ujung, tidak punya anak, dan di sinilah trafik mengalir.
  • inner queue - queue yang punya anak. Tugasnya hanya membagi jatah.
  • CIR / Committed Information Rate - nama lain `limit-at`, jatah yang dijamin.
  • MIR / Maximal Information Rate - nama lain `max-limit`, batas tertinggi.
  • priority - angka 1 sampai 8. Angka 1 paling tinggi, 8 paling rendah.
  • bucket-size - ukuran ember token, rentang 0 sampai 10, default 0.1. Kapasitasnya = bucket-size dikali max-limit.
  • packet-mark - label paket hasil mangle yang dipakai Queue Tree untuk memilih trafik.
  • PCQ / Per Connection Queue - tipe queue yang membagi bandwidth per sub-stream, cocok untuk pemerataan banyak client.
  • borrows / lends - statistik RouterOS. `borrows` = paket yang melewati `limit-at`, `lends` = paket di bawah `limit-at`.

🚦 Memilih parent yang tepat

Salah pilih parent adalah penyebab nomor satu Queue Tree terlihat "tidak jalan". Perhatikan arah paket:

! parent !! Letak di aliran paket !! Biasanya dipakai untuk |- | `global-in` || sebelum routing (prerouting) || download dari internet |- | `global` || setelah routing (postrouting) || upload ke internet |- | `global-out` || sebelum keluar interface || kasus khusus di perangkat sendiri |- | `global-total` || gabungan keduanya || jarang dipakai, lebih boros CPU |- | nama interface || antrean di interface tersebut || membatasi satu interface |- | nama queue || menjadi anak dari queue lain || membuat hierarki bertingkat

πŸ§ͺ Uji cepat: kalau queue download tidak menangkap trafik apa pun, cek dulu parent-nya. Download harus di `global-in`, upload harus di `global`.

πŸ”§ Praktik: membangun hierarki Queue Tree

Kita pakai skenario lab sekolah: internet 20 Mbps, tiga kelompok trafik (Ujian, Streaming, Umum). Tujuannya, saat ada siswa streaming, ujian tetap lancar.

πŸ”Ή Langkah 1: tandai trafik di mangle

Queue Tree tidak bisa memilih trafik sendiri, jadi kita tandai dulu pakai mangle. Buat address list untuk daftar alamat yang ikut ujian dan aliran video.

/ip firewall address-list
add list=ujian address=192.168.88.10-192.168.88.20 comment="PC ujian"
add list=streaming address=www.youtube.com comment="aliran video"

/ip firewall mangle
add chain=prerouting action=mark-connection connection-mark=no-mark dst-address-list=ujian new-connection-mark=conn-ujian passthrough=yes comment="tandai koneksi ujian (arah download)"
add chain=prerouting action=mark-connection connection-mark=no-mark src-address-list=ujian new-connection-mark=conn-ujian passthrough=yes comment="tandai koneksi ujian (arah upload)"
add chain=prerouting action=mark-packet connection-mark=conn-ujian new-packet-mark=pmark-ujian passthrough=no comment="label paket ujian, dua arah"

add chain=prerouting action=mark-connection connection-mark=no-mark dst-address-list=streaming new-connection-mark=conn-stream passthrough=yes comment="tandai koneksi streaming"
add chain=prerouting action=mark-packet connection-mark=conn-stream new-packet-mark=pmark-stream passthrough=no comment="label paket streaming"

add chain=prerouting action=mark-packet connection-mark=no-mark new-packet-mark=pmark-umum passthrough=no comment="paket lain masuk kelompok umum"

Perhatikan urutannya. Rule ujian dulu, lalu streaming, terakhir baru rule "sisa" untuk kelompok umum.

πŸ’‘ Tips: tandai koneksi dulu (`mark-connection`), baru tandai paketnya (`mark-packet`). Cara ini jauh lebih hemat CPU daripada mencocokkan alamat di setiap paket.

⚠️ Hati-hati: kalau rule FastTrack masih aktif, paket yang sudah di-fasttrack akan melewati mangle dan queue. Kecualikan trafik yang mau diatur.

/ip firewall filter
add chain=forward action=accept place-before=1 connection-mark=conn-ujian comment="kecualikan ujian dari FastTrack"

πŸ”Ή Langkah 2: buat parent queue

Parent dibuat dua buah karena Queue Tree hanya satu arah: satu untuk download, satu untuk upload.

/queue tree
add name=Total-Download parent=global-in max-limit=20M comment="atap download"
add name=Total-Upload parent=global max-limit=5M comment="atap upload"

Parent sengaja tidak diisi `packet-mark`. Tugasnya hanya menampung semua anak dan mengunci total bandwidth.

πŸ”Ή Langkah 3: buat child queue

Sekarang bagi jatahnya. Perhatikan jumlah `limit-at` anak: 4M + 2M + 6M = 12M, masih di bawah `max-limit` parent 20M.

/queue tree
add name=Ujian-Download parent=Total-Download packet-mark=pmark-ujian limit-at=4M max-limit=8M priority=1
add name=Streaming-Download parent=Total-Download packet-mark=pmark-stream limit-at=2M max-limit=6M priority=8
add name=Umum-Download parent=Total-Download packet-mark=pmark-umum limit-at=6M max-limit=16M priority=6
add name=Ujian-Upload parent=Total-Upload packet-mark=pmark-ujian limit-at=1M max-limit=3M priority=1
add name=Umum-Upload parent=Total-Upload packet-mark=pmark-umum limit-at=2M max-limit=5M priority=6

Hasilnya, trafik ujian selalu dapat minimal 4 Mbps walau jaringan sedang padat, dan bisa naik sampai 8 Mbps kalau ada sisa.

πŸ”Ή Langkah 4: pemerataan dengan PCQ

Kalau satu kelompok isinya banyak client dan kita ingin pembagian rata antar client, ganti tipe queue-nya jadi PCQ.

/queue type
add name=pcq-down-siswa kind=pcq pcq-classifier=dst-address pcq-rate=2M pcq-limit=50KiB pcq-total-limit=2000KiB comment="pemerataan per client"

/queue tree
set [find name=Umum-Download] queue=pcq-down-siswa

πŸ“Š Angka penting: `pcq-rate=2M` artinya tiap sub-stream (tiap alamat IP) maksimal 2 Mbps. `pcq-limit` mengatur ukuran antrean per sub-stream, `pcq-total-limit` mengatur total seluruh sub-stream.

πŸ”Ή Lewat Winbox/WebFig

Untuk yang lebih suka tampilan grafis:

  1. buka menu Queues lalu tab Queue Tree;
  2. klik + untuk membuat parent, isi Name, pilih Parent (`global-in`), lalu isi Max Limit;
  3. buat queue anak dengan Parent diarahkan ke nama queue induk, lalu isi Packet Mark;
  4. isi Limit At, Max Limit, dan Priority;
  5. klik Apply.

Warna baris queue di Winbox membantu membaca kondisi: hijau berarti pemakaian di bawah 50 persen, kuning 51–75 persen, merah 76–100 persen.

🏭 Dipakai di dunia kerja

  • Sekolah:** lab 30 PC, ujian berbasis komputer tersendat karena sebagian siswa streaming video. Hierarki Queue Tree membuat trafik ujian dapat jatah terjamin dan prioritas tertinggi.
  • Kantor:** rapat online putus-putus karena ada yang mengunduh file besar. Queue meeting diberi `limit-at` dan priority 1, unduhan masuk prioritas rendah.
  • ISP / warnet:** pelanggan mengeluh lambat di jam ramai. Trafik dipisah per paket layanan, lalu dibagi lagi per pelanggan memakai PCQ agar tidak ada satu orang menghabiskan jalur.
  • Industri / pabrik:** mesin produksi mengirim data ke server monitoring tiap detik. Trafik mesin dipisah supaya tidak terganggu trafik browsing kantor di jalur yang sama.
  • Hotel / guest WiFi:** tamu bebas streaming, tapi sistem resepsionis dan mesin pembayaran tetap harus jalan. Guest dibuatkan queue anak tersendiri dengan batas jelas.

πŸ”₯ Kasus nyata: sebuah SMK menggelar ujian CBT jam 10.00 untuk 32 siswa. Router masih memakai Simple Queue per kelas, tanpa hierarki. Begitu dua siswa membuka YouTube 1080p, jawaban siswa lain gagal terkirim ke server dan nilai tertahan.

Setelah diperiksa, ternyata Simple Queue memeriksa target satu per satu dan trafik video tidak pernah dibatasi karena FastTrack masih aktif. Solusinya, FastTrack dikhususkan dengan kecualian untuk trafik ujian, lalu dibangun Queue Tree dua tingkat dengan parent `Total-Download` dan anak `Ujian-Download` priority 1. Ujian berjalan lancar tanpa menambah bandwidth.

βœ… Verifikasi

Cek statistik queue tree:

/queue tree print stats

Yang perlu dibaca:

  • `rate` - kecepatan yang sedang lewat di queue tersebut;
  • `queued-bytes` - antrean yang sedang menunggu. Kalau terus besar, berarti antrean penuh;
  • `dropped` - paket yang dibuang karena antrean penuh. Sedikit wajar, banyak berarti `max-limit` terlalu ketat;
  • `borrows` dan `lends` - kedua angka ini bergerak kalau hierarki benar-benar bekerja.

Cek paket mark dan urutan rule FastTrack:

/ip firewall mangle print stats
/ip firewall filter print where action=fasttrack-connection

Uji beban dan pantau CPU:

/interface monitor-traffic ether1 once
/tool profile

πŸ§ͺ Uji cepat: jalankan streaming di satu PC sambil mengetes ping ke server ujian. Kalau ping tetap stabil dan `rate` Ujian-Download tetap sesuai jatah, hierarkinya sudah benar.

⚠️ Kesalahan umum & troubleshooting

πŸ”Ή Queue jalan, tapi trafik tidak terbagi

Biasanya jumlah `limit-at` anak lebih besar dari `max-limit` parent. Perbaiki angkanya sampai totalnya di bawah atap parent.

πŸ”Ή Download tidak tertangkap, upload normal

Parent tertukar. Download harus memakai `global-in`, upload memakai `global`.

πŸ”Ή Priority tidak berpengaruh

Tiga penyebab tersering: priority dipasang di inner queue dan bukan di leaf, `max-limit` anak masih 0, atau semua anak sudah mentok di `limit-at` sehingga tidak ada jatah yang diperebutkan.

πŸ”Ή FastTrack melewati queue

Ini perilaku normal, bukan bug. FastTrack memang melewati mangle dan queue supaya cepat. Kecualikan trafik yang ingin diatur, atau matikan rule FastTrack-nya.

πŸ”Ή Burst jadi liar

`bucket-size` terlalu besar membuat paket bisa ditumpuk dulu lalu melesat. Untuk mencegah burst liar, pasang `bucket-size` kecil di parent dan biarkan anak yang punya ember besar.

πŸ”Ή CPU router naik

Jumlah queue dan mangle yang berlebihan membebani CPU. Gabungkan kelompok yang mirip dan pakai `mark-connection` supaya pencocokan cukup sekali per koneksi.

πŸ”Ή Statistik queue nol, paket tetap jalan

Cek `packet-mark` di queue. Kalau nilainya salah ketik atau belum ada paket yang ditandai, queue tidak akan menangkap apa pun.

πŸ” Catatan keamanan & etika

  • Queue management bukan pengganti firewall. Membatasi kecepatan berbeda dengan menutup akses.
  • Jangan memakai queue untuk memblokir trafik tertentu secara diam-diam tanpa kebijakan tertulis, terutama di jaringan sekolah atau kantor.
  • Statistik dan log trafik bisa mengungkap kebiasaan pengguna. Ambil data seperlunya untuk operasional, bukan untuk memata-matai.
  • Dokumentasikan angka `limit-at`, `max-limit`, dan priority. Tanpa catatan, jaringan sulit dirawat saat orang yang mengatur sudah berganti.
  • Hindari menaruh seluruh trafik ke satu leaf queue besar. Selain tidak adil, satu pengguna bisa menghabiskan jalur untuk semua.
  • Uji perubahan di luar jam sibuk, dan simpan backup konfigurasi sebelum mengubah struktur queue.

πŸ“Œ Kesimpulan

Queue Tree adalah lanjutan dari queue biasa. Bukan sekadar membatasi satu orang, tetapi menyusun kebijakan bandwidth berjenjang seperti jaringan irigasi. Kuncinya ada tiga: pilih parent sesuai arah paket, jaga `limit-at` anak tidak melebihi `max-limit` parent, dan pakai priority hanya di leaf queue.

Langkah berikutnya, pelajari policy routing supaya kamu bisa mengarahkan kelompok trafik tertentu ke jalur internet yang berbeda, bukan hanya mengatur kecepatannya.

πŸ”— Materi terkait

πŸ“š Referensi