Bayangkan satu sumur yang melayani seratus rumah. Pertama, Anda butuh pembagi air yang adil supaya rumah yang memasang pompa besar tidak menghabiskan jatah tetangganya. Kedua, ada keran yang perlu mendapat giliran pertama, misalnya keran dapur, karena orang tidak bisa menunggu lama saat memasak. Ketiga, sumur itu ternyata punya batas isi bulanan, jadi keran untuk menyiram jalan sebaiknya tertutup saja. Ketiga hal ini persis yang kami kerjakan dengan QoS PCQ MikroTik dan queue tree di jaringan RT/RW net yang memakai internet Starlink.
Tutorial ini berangkat dari router produksi sungguhan: RB5009 dengan RouterOS 7.24, sekitar 66 sesi PPPoE aktif, dan 4 dish Starlink di belakang load balancer. Selain itu, semua perintah RouterOS di artikel ini sudah kami uji di CHR 7.24.2 versi yang sama. Namun, kami menyensor identitas router, IP, dan nama pelanggan di setiap screenshot asli.

Kenapa Simple Queue Saja Tidak Cukup untuk QoS PCQ MikroTik?
Kebanyakan RT/RW net memakai RADIUS atau profil PPP yang membuat simple queue otomatis per pelanggan. Hasilnya mirip baris berikut, yang kami cetak ulang di CHR uji dengan pengaturan yang sama seperti router produksi.
/queue simple print terse where name=uji-pelanggan 0 name=uji-pelanggan target=10.20.0.5/32 parent=none priority=8/8 queue=default-small/default-small limit-at=18M/18M max-limit=18M/18M
Perhatikan dua hal. Pertama, parent=none berarti setiap queue berdiri sendiri tanpa induk bersama. Kedua, limit-at sama dengan max-limit, artinya setiap pelanggan mendapat “jaminan” penuh sesuai paketnya. Di router kami tercatat 33 queue dinamis dengan paket 3, 8, dan 18 Mbps, sehingga total jaminannya sekitar 500 Mbps. Padahal uplink riil jauh di bawah itu.
Akibatnya, tidak ada satu pun pembatas agregat. Saat beberapa pelanggan mengunduh bersamaan, antrean justru menumpuk di buffer interface WAN. Paket game ikut mengantre di belakang unduhan besar, lalu ping melonjak. Oleh karena itu, kita butuh lapisan kedua di atas simple queue, yaitu queue tree dengan PCQ.
| Aspek | Simple queue per pelanggan | Queue tree + PCQ |
|---|---|---|
| Batas total uplink | Tidak ada | Ada di queue induk |
| Prioritas game | Tidak bisa | Cabang GAME dengan priority 1 |
| Pembagian adil | Siapa cepat dia dapat | PCQ membagi rata per IP |
| Jumlah aturan | Satu per pelanggan | Enam queue untuk semua pelanggan |
Gambaran Topologi dan Rencana QoS
Empat dish Starlink masuk ke router Ruijie yang melakukan load balance. Kemudian Ruijie meneruskan ke port ether1-ISP di MikroTik. Jadi, MikroTik hanya melihat satu uplink, sedangkan pelanggan tersambung lewat PPPoE di sisi LAN.
Rencananya sederhana. Kita membuat dua queue induk di parent=global, yaitu QT-DOWN untuk download dan QT-UP untuk upload. Selanjutnya, setiap induk punya dua cabang: GAME dengan priority 1 dan NET untuk trafik lain dengan priority 5. Terakhir, setiap cabang memakai queue type PCQ, sehingga bandwidth cabang terbagi rata ke semua IP pelanggan.
| Queue | Induk | Tanda paket | limit-at | max-limit | Priority |
|---|---|---|---|---|---|
| QT-DOWN | global | – | – | 300M | 8 |
| QT-DOWN-GAME | QT-DOWN | GAME_DOWN | 20M | 300M | 1 |
| QT-DOWN-NET | QT-DOWN | NET_DOWN | 10M | 300M | 5 |
| QT-UP | global | – | – | 40M | 8 |
| QT-UP-GAME | QT-UP | GAME_UP | 5M | 40M | 1 |
| QT-UP-NET | QT-UP | NET_UP | 5M | 40M | 5 |
Sebelum mengubah apa pun di router produksi, simpan dulu cadangan dengan /system backup save dan /export file=.... Dengan begitu, Anda selalu punya jalan pulang.
Langkah 1: Buat Queue Type PCQ
PCQ (Per Connection Queue) adalah jenis antrean yang otomatis membuat sub-antrean untuk setiap nilai classifier. Untuk download, classifier-nya IP tujuan karena paket menuju pelanggan. Sebaliknya, untuk upload kita memakai IP sumber.
/queue type add name=PCQ-DOWN kind=pcq pcq-classifier=dst-address pcq-rate=0 pcq-limit=50 pcq-total-limit=8000 add name=PCQ-UP kind=pcq pcq-classifier=src-address pcq-rate=0 pcq-limit=50 pcq-total-limit=8000
Nilai pcq-rate=0 berarti tidak ada batas tetap per pelanggan. Jadi, jika queue cabang mendapat 30 Mbps dan ada tiga pelanggan aktif, masing-masing kebagian sekitar 10 Mbps. Ketika satu pelanggan berhenti, jatahnya langsung mengalir ke dua pelanggan lain. Batas paket tetap ada di simple queue masing-masing.
Selain itu, pcq-total-limit=8000 memperbesar total buffer dari bawaan 2000, karena satu cabang melayani puluhan pelanggan sekaligus. Perlu Anda ketahui, RouterOS 7 menampilkan nilai ini dalam KiB. Oleh karena itu, hasil /export di CHR uji kami menulisnya sebagai pcq-total-limit=8000KiB.
Langkah 2: Tandai Koneksi Game dengan Mangle
Queue tree tidak mengenali aplikasi. Ia hanya membaca tanda paket (packet mark). Karena itu, kita perlu dua tahap mangle: menandai koneksi game, lalu menandai paketnya sesuai arah.
Mark-Connection di Chain Prerouting
Rule berikut kami ambil dari router produksi. Port-port ini milik server game populer di Indonesia. Di router asli ada 15 rule seperti ini, sedangkan contoh di bawah hanya memuat sebagian.
/ip firewall mangle add chain=prerouting protocol=tcp dst-port=5000-5221,5224-5227,5229-5241,5243-5287,5289-5352,5354-5509,5517,5520-5529 action=mark-connection new-connection-mark=KONEKSI_GAME passthrough=yes comment="Mobile Legend (ML)" add chain=prerouting protocol=udp dst-port=2702,3702,4001-4009,5000-5221,5224-5241,5243-5287,5289-5352,5354-5509 action=mark-connection new-connection-mark=KONEKSI_GAME passthrough=yes add chain=prerouting protocol=tcp dst-port=6006,6008,6674,7000-7999,8001-8012,9006,9137,10000-10015,11000-11019 action=mark-connection new-connection-mark=KONEKSI_GAME passthrough=yes comment="Free Fire (FF)" add chain=prerouting protocol=udp dst-port=7085-7995,8700,9030,10010-10019,17000-20100 action=mark-connection new-connection-mark=KONEKSI_GAME passthrough=yes comment="Call of Duty (COD Mobile)"
Tanda koneksi cukup kita pasang sekali di awal koneksi. Setelah itu, connection tracking mengingatnya untuk semua paket berikutnya, termasuk paket balasan dari server game.
Mark-Packet di Chain Forward
Tahap kedua memberi empat tanda paket berdasarkan arah. Paket yang masuk dari ether1-ISP adalah download, sedangkan paket yang keluar ke ether1-ISP adalah upload.
/ip firewall mangle add chain=forward connection-mark=KONEKSI_GAME in-interface=ether1-ISP action=mark-packet new-packet-mark=GAME_DOWN passthrough=no comment="AUTOQOS game down" add chain=forward connection-mark=KONEKSI_GAME out-interface=ether1-ISP action=mark-packet new-packet-mark=GAME_UP passthrough=no comment="AUTOQOS game up" add chain=forward in-interface=ether1-ISP action=mark-packet new-packet-mark=NET_DOWN passthrough=no comment="AUTOQOS net down" add chain=forward out-interface=ether1-ISP action=mark-packet new-packet-mark=NET_UP passthrough=no comment="AUTOQOS net up"
Urutan di sini menentukan hasil. Rule GAME harus berada di atas rule NET, dan passthrough=no menghentikan pemrosesan begitu paket mendapat tanda. Akibatnya, paket game tidak akan tertimpa tanda NET_DOWN. Komentar berawalan AUTOQOS juga memudahkan rollback nanti.
Langkah 3: Susun Queue Tree dengan Induk Global
Sekarang kita membangun pohonnya. Induk memegang batas total, lalu cabang membagi isinya berdasarkan prioritas.
/queue tree add name=QT-DOWN parent=global max-limit=300M comment="AUTOQOS root download" add name=QT-DOWN-GAME parent=QT-DOWN packet-mark=GAME_DOWN limit-at=20M max-limit=300M priority=1 queue=PCQ-DOWN comment=AUTOQOS add name=QT-DOWN-NET parent=QT-DOWN packet-mark=NET_DOWN limit-at=10M max-limit=300M priority=5 queue=PCQ-DOWN comment=AUTOQOS add name=QT-UP parent=global max-limit=40M comment="AUTOQOS root upload" add name=QT-UP-GAME parent=QT-UP packet-mark=GAME_UP limit-at=5M max-limit=40M priority=1 queue=PCQ-UP comment=AUTOQOS add name=QT-UP-NET parent=QT-UP packet-mark=NET_UP limit-at=5M max-limit=40M priority=5 queue=PCQ-UP comment=AUTOQOS
Kami memilih parent=global karena trafik pelanggan keluar lewat banyak interface PPPoE dinamis. Dengan induk global, satu pohon menangkap semuanya tanpa peduli interface mana yang aktif. Kemudian cabang GAME mendapat jaminan 20 Mbps dan priority 1, sehingga saat induk penuh, paket game keluar lebih dulu.
limit-at dan max-limit Bekerja Berlawanan Arah
Dua parameter ini paling sering tertukar, padahal efeknya bertolak belakang.
| Parameter | Arti | Efek pada game |
|---|---|---|
limit-at=10M | Jaminan minimal | Game selalu kebagian 10 Mbps walau jalur penuh (memprioritaskan) |
max-limit=10M | Batas atas | Game tidak boleh lebih dari 10 Mbps (mengekang) |
priority=1 | Urutan berbagi sisa | Sisa bandwidth mengalir ke game lebih dulu |
Sebagai aturan HTB, jumlah limit-at semua cabang tidak boleh melebihi max-limit induknya. Di contoh ini, cabang download hanya 30 Mbps dari induk 300 Mbps, jadi aman.
Cek Hasilnya: Membaca Statistik Queue Tree
Setelah semuanya terpasang, jalankan perintah berikut dan perhatikan kolom bytes, rate, serta dropped.
/queue tree print stats /ip firewall mangle print stats where comment~"AUTOQOS"

Angka ini menceritakan banyak hal. Pertama, cabang GAME hanya memakai 17,9 GB dari total 1.739 GB download, kira-kira 1 persen. Artinya, memprioritaskan game hampir tidak mengurangi jatah pelanggan lain, tetapi ping mereka terasa jauh lebih stabil.
Kedua, kolom dropped memberi tahu apakah shaping benar-benar bekerja. Perlu Anda ingat, angka drop selalu muncul di cabang, bukan di induk, karena hanya cabang yang punya antrean sungguhan. Cabang QT-UP-NET membuang 161.003 paket, jadi batas upload 40 Mbps memang sering tercapai dan HTB aktif mengatur antrean. Sebaliknya, QT-DOWN-NET hanya membuang 2.733 dari 1,4 miliar paket. Artinya, batas download 300 Mbps jarang tersentuh, sehingga prioritas download pun jarang bekerja.
Contoh Kasus 1: Angka 10M yang Salah Tempat
Saat menyalin konfigurasi ini ke router kedua yang hanya punya satu dish, pemilik jaringan meminta angka “10M/5M untuk game”. Kami sempat menaruh angka itu sebagai max-limit induk. Akibatnya, seluruh trafik 23 pelanggan ikut terkekang. Grafik ether1-ISP tertahan di sekitar 0,4 Mbps, lalu kembali normal begitu batas itu kami longgarkan.
Kemudian kami memindahkan angka tersebut ke max-limit cabang GAME. Hasilnya tetap salah, karena game justru terkekang. Padahal maksud pemilik adalah meniru router pertama, yaitu limit-at sebagai jaminan. Pelajaran dari kasus ini jelas: setiap kali ada angka baru, tanyakan dua hal. Apakah angka itu batas atas atau jaminan? Lalu, apakah berlaku untuk total jaringan atau hanya satu kategori?
Konfigurasi akhir router kedua akhirnya sejajar dengan router pertama, hanya angkanya mengecil: induk 60M/8M, GAME limit-at 10M/5M, dan NET limit-at 5M/2M.
Kenapa Batas Statis Selalu Meleset di Starlink
HTB hanya bisa mengatur prioritas jika antrean terjadi di dalam router, bukan di modem atau di jaringan Starlink. Oleh karena itu, max-limit induk harus sedikit di bawah kapasitas riil uplink. Jika batasnya terlalu tinggi, kolom dropped di cabang akan nyaris nol dan prioritas game tidak pernah aktif.
Masalahnya, kapasitas Starlink berubah-ubah sepanjang hari tergantung cuaca, jumlah pengguna di sel yang sama, dan posisi satelit. Jadi, tidak ada satu angka statis yang selalu benar. Sebagai jalan tengah, ukur permintaan puncak di jam sibuk, misalnya pukul 19.00 sampai 22.00. Jika puncak mendekati batas induk, berarti batas terlalu rendah. Sebaliknya, jika puncak jauh di bawah batas dan dropped di cabang tetap nyaris nol, turunkan batasnya perlahan.
Langkah lanjutan yang lebih rapi adalah shaper adaptif, yaitu script yang mengukur RTT ke internet lalu menaikkan atau menurunkan max-limit secara otomatis. Kami belum memasangnya di produksi, jadi artikel ini belum membahas script tersebut.
Blokir Trafik Boros dengan tls-host
QoS membagi bandwidth dengan adil, tetapi tidak menghemat satu byte pun. Untuk menghemat kuota, kita harus menolak trafik yang besar namun tidak mendesak, misalnya Windows Update, update OS iPhone, dan unduhan game konsol. Caranya memakai matcher tls-host yang membaca nama domain (SNI) dari paket TLS ClientHello.
Syarat: Tidak Ada FastTrack
FastTrack membuat paket melompati sisa chain forward. Jika router Anda memakai FastTrack, rule tls-host tidak akan pernah kena. Karena itu, periksa dulu dengan perintah berikut.
/ip firewall filter print count-only where action=fasttrack-connection # 0 = aman, matcher tls-host bisa bekerja
Router kami sejak awal tidak memakai FastTrack, sehingga syarat ini sudah terpenuhi. Jika hasilnya bukan nol, Anda harus memilih antara performa FastTrack dan kemampuan memblokir berdasarkan domain.
Rule Blokir Windows Update
Kami memakai loop :foreach supaya daftar domain mudah terbaca dan semua rule mendapat komentar grup yang sama.
:foreach h in={"*.windowsupdate.com";"*.update.microsoft.com";"*.delivery.mp.microsoft.com";"*.do.dsp.mp.microsoft.com";"*.emdl.ws.microsoft.com";"download.microsoft.com";"*.download.microsoft.com"} do={
/ip firewall filter add chain=forward protocol=tcp dst-port=443 tls-host=$h action=reject reject-with=icmp-network-unreachable comment=block-wu
}
Kami sengaja memilih reject dengan icmp-network-unreachable, bukan drop. Dengan begitu, Windows langsung tahu jaringan tidak tersedia, lalu menunda update tanpa terus mencoba ulang sampai timeout.
Update Game Konsol dan OS Apple
Pola yang sama berlaku untuk grup lain. Contoh berikut menutup unduhan Steam, PlayStation, Xbox, dan update iOS atau macOS.
:foreach h in={"*.steamcontent.com";"*.cs.steampowered.com";"steamcdn-a.akamaihd.net";"*.dl.playstation.net";"*.np.dl.playstation.net";"*.dlassets.xboxlive.com";"*.dlassets-ssl.xboxlive.com"} do={
/ip firewall filter add chain=forward protocol=tcp dst-port=443 tls-host=$h action=reject reject-with=icmp-network-unreachable comment=block-game
}
:foreach h in={"mesu.apple.com";"*.mesu.apple.com";"appldnld.apple.com";"updates.cdn-apple.com";"swcdn.apple.com";"swdist.apple.com";"swscan.apple.com"} do={
/ip firewall filter add chain=forward protocol=tcp dst-port=443 tls-host=$h action=reject reject-with=icmp-network-unreachable comment=block-osupd
}
Ingat satu konsekuensi penting. Steam tidak memisahkan domain update dan domain instal, jadi rule *.steamcontent.com menahan semua unduhan game Steam. Meski begitu, login dan main game online tetap berjalan normal.
Taruh Rule di Puncak Chain Forward
Rule baru selalu masuk di bawah. Padahal, rule accept yang lebih atas bisa meloloskan trafik sebelum sampai ke rule blokir. Script berikut mengambil rule forward pertama sebagai patokan, lalu menaruh rule baru di atasnya.
:local atas [:pick [/ip firewall filter find where chain=forward] 0] /ip firewall filter add chain=forward protocol=tcp dst-port=443 tls-host="*.windowsupdate.com" action=reject reject-with=icmp-network-unreachable comment=block-wu place-before=$atas
Kami sengaja tidak memakai place-before=0. Nomor urut seperti 0 hanya berlaku setelah perintah print di sesi yang sama, jadi hasilnya bisa meleset saat Anda menjalankan script lewat SSH atau scheduler.
Domain yang Sengaja Tetap Terbuka
Memblokir terlalu luas justru merusak pemakaian harian. Berikut beberapa domain yang kami biarkan terbuka beserta alasannya.
*.xboxlive.comdan*.playstation.netumum, karena login dan main online lewat domain ini.*.cdn-apple.comutuh, karena App Store juga memakainya. Kami hanya menutup subdomain update.android.googleapis.comdan*.gvt1.com, karena Play Store dan Chrome ikut memakainya. Jadi, update OTA Android memang tidak bisa kita tutup dengan bersih.

Counter di atas menghitung paket yang router tolak, bukan gigabyte yang terselamatkan. Misalnya, mesu.apple.com menolak 59.839 paket, artinya ponsel pelanggan terus mencoba memeriksa update iOS. Sementara itu, rule dengan counter nol belum tentu gagal, bisa saja belum ada perangkat yang mencoba.
Contoh Kasus 2: Pelanggan Bisa Me-reboot Dish Starlink
Kami juga memblokir aplikasi Starlink di ponsel pelanggan lewat tls-host untuk starlink.com dan *.spacex.com. Namun, saat menguji, ternyata dish masih menjawab di 192.168.100.1 dari belakang router, dengan ping hanya 1 ms. Aplikasi Starlink bisa mengendalikan dish secara lokal, jadi pelanggan iseng mampu melihat statistik bahkan me-reboot dish. Satu kali reboot memutus internet semua pelanggan di titik itu.
Penutup yang benar adalah rule berbasis IP, karena DoH, QUIC, maupun ECH tidak bisa mengelabuinya. LAN teknisi tetap kami izinkan supaya tim lapangan masih bisa memeriksa dish.
/ip firewall filter add chain=forward action=accept src-address=192.168.88.0/24 dst-address=192.168.100.0/24 comment="izinkan LAN teknisi ke dish" add chain=forward action=reject reject-with=icmp-network-unreachable dst-address=192.168.100.0/24 comment=block-starlink-dish
Rule kedua di router produksi kami sudah menolak 4.222 paket dalam waktu kurang dari dua hari. Selain itu, router sendiri tetap bisa menjangkau dish, karena rule ini hanya berlaku di chain forward dan tidak menyentuh chain output.
Kuota 5 TB per Dish: Kenapa GB, Bukan Mbps, yang Membatasi
Penyedia layanan kami menetapkan kuota 5 TB per dish per bulan. Angka ini terdengar besar, tetapi coba ubah ke satuan kecepatan dengan hitungan sederhana berikut.
awk 'BEGIN{detik=30*24*3600
printf "5 TB/bulan = %.1f Mbps rata-rata 24/7\n", 5e12*8/detik/1e6
printf "150 Mbps penuh sebulan = %.1f TB\n", 150e6*detik/8/1e12}'
# 5 TB/bulan = 15.4 Mbps rata-rata 24/7
# 150 Mbps penuh sebulan = 48.6 TB
Hasilnya mengejutkan. Kuota 5 TB setara dengan pemakaian terus-menerus hanya 15,4 Mbps. Padahal satu dish sanggup 100 sampai 150 Mbps. Dengan kata lain, kuota habis jauh sebelum kecepatan menjadi masalah.

Data Riil: 104 Akun dalam Sebulan
Kami menarik pemakaian Oktober 2026 dari tabel radacct FreeRADIUS. Query intinya menjumlahkan byte masuk dan keluar per username untuk sesi yang beririsan dengan periode.
SELECT username, SUM(acctinputoctets + acctoutputoctets) AS bytes,
COUNT(*) AS sesi
FROM radacct
WHERE acctstarttime < '2026-11-01 00:00:00'
AND (acctstoptime IS NULL OR acctstoptime >= '2026-10-01 00:00:00')
GROUP BY username;
Di server kami, query ini mengembalikan 298 username dari semua jaringan yang memakai RADIUS yang sama. Kemudian skrip laporan menyaring akun milik jaringan ini saja, lalu mengubah byte menjadi GB dan menyusun sebaran pemakaian.

Totalnya 38,4 TB dengan median 377 GB per akun. Jaringan ini melayani pelanggan lewat 5 dish, jadi kuota resminya 25 TB. Akibatnya, pemakaian riil sudah sekitar 154 persen dari kuota. Sesi yang melintasi batas bulan memang terhitung di dua bulan, sehingga angka ini sedikit membengkak. Namun, gambarannya tetap jelas.
Rate Limit Tidak Menghemat Kuota
Banyak orang mengira menurunkan kecepatan paket akan menghemat kuota. Kenyataannya, film 2 GB tetap 2 GB, hanya selesai lebih lama. Hanya dua cara yang benar-benar mengurangi gigabyte: memblokir trafik yang tidak perlu dan menerapkan FUP kuota per pelanggan. Simulasi di laporan menunjukkan batas FUP 200 GB akan menekan total menjadi sekitar 19 TB, cukup untuk 4 dish.
Contoh Kasus 3: Plafon Kuota Bukan Pemicu Tunggal
Pada September 2026, ISP tetangga yang juga memakai 3 dish Starlink Residential tiba-tiba terkena penegakan Ketentuan Layanan. Starlink menganggap mereka memakai paket Residential untuk bisnis. Akibatnya, ketiga dish turun ke 25 Mbps untuk sisa siklus tagihan, tanpa peringatan, dan semuanya terjadi di malam yang sama.
Dari kejadian itu kami menarik dua pelajaran. Pertama, load balancing tidak menyebar risiko. Pola trafik di semua dish sama, sehingga semuanya bisa terkena bersamaan. Kedua, dashboard Starlink untuk satu dish kami mencatat sekitar 10 sampai 11,45 TB per siklus selama tiga siklus tanpa masalah. Jadi, angka 5 TB bukan saklar otomatis. Meski begitu, menjaga volume tetap rendah lewat blokir dan FUP tetap menjadi langkah paling aman.
Kesalahan Umum
- Menaruh batas induk di atas kapasitas riil. Kolom
droppeddi cabang akan nyaris nol, sehingga prioritas game tidak pernah bekerja. - Tertukar antara limit-at dan max-limit. Angka jaminan yang masuk ke max-limit justru mengekang trafik yang ingin Anda prioritaskan.
- Lupa passthrough=no di mangle forward. Paket game akan tertimpa tanda NET dan masuk antrean prioritas rendah.
- Memasang tls-host di router yang memakai FastTrack. Rule terlihat rapi, tetapi counter-nya tidak pernah bergerak.
- Memblokir domain terlalu luas. Menutup
*.icloud.comatau*.cdn-apple.comutuh merusak App Store, Find My, dan aktivasi akun. - Menganggap counter nol berarti gagal. Cek lagi setelah jam sibuk, karena di jam sepi memang belum ada yang mencoba update.
- Mengira rate limit menghemat kuota. Byte yang lewat tetap sama, hanya lebih lambat.
- Menyalin konfigurasi tanpa jalan pulang. Simpan perintah rollback:
/queue tree remove [find name~"QT-"],/ip firewall mangle remove [find comment~"AUTOQOS"],/queue type remove [find name~"PCQ-"], dan/ip firewall filter remove [find comment=block-wu]per grup.
Kesimpulan
QoS PCQ MikroTik dengan queue tree memberi tiga hal yang tidak mampu simple queue berikan sendirian: batas total uplink, prioritas untuk trafik sensitif seperti game, dan pembagian adil per pelanggan. Kuncinya ada pada batas induk yang sedikit di bawah kapasitas riil, serta pemahaman bahwa limit-at berarti jaminan dan max-limit berarti batas atas.
Namun, untuk internet Starlink dengan kuota per dish, QoS baru setengah cerita. Kuota GB habis jauh sebelum kecepatan menjadi masalah, sehingga penghematan nyata hanya datang dari blokir tls-host yang terarah dan FUP per pelanggan. Terakhir, selalu buktikan setiap perubahan lewat counter, statistik dropped, dan data pemakaian riil, bukan sekadar karena rule sudah terpasang.
Baca Juga
- Cara Akses Proxmox dari Internet Tanpa IP Publik (WireGuard + VPS)
- Keamanan Server Linux: Tutorial Hardening SSH, Firewall UFW, CrowdSec, dan Alarm Telegram
- Cara Membuat Dashboard Monitoring Server (NOC) dengan Uptime Kuma dan Beszel
Referensi: MikroTik Docs: Queues, MikroTik Docs: Mangle, MikroTik Docs: Firewall Filter, Starlink Legal.

