Bandwidth management is one of the most critical — and most misunderstood — aspects of running an ISP in Uganda, Kenya, or Tanzania. If you don’t control how bandwidth is allocated, a handful of heavy users will consume the entire uplink, leaving other subscribers with poor speeds and high latency. MikroTik RouterOS offers two queuing methods: Simple Queues and Queue Tree. Choosing the wrong one — or misconfiguring either — causes subscriber complaints and network instability.
This guide explains both methods, when to use each, and how to integrate them with your ISP billing system for automated bandwidth enforcement.
Simple Queues vs Queue Tree: Quick Comparison
| Feature | Simple Queues | Queue Tree |
|---|---|---|
| Setup complexity | Low | High |
| Per-subscriber limits | Yes | Yes |
| Global bandwidth pool | No | Yes |
| Per-plan shared pools | No | Yes |
| Priority queuing | Basic | Advanced |
| Best for | Small ISPs (<100 subscribers) | Growing ISPs (100+ subscribers) |
| Billing system integration | Yes — via PPPoE profiles | Yes — via PCQ + Mangle |
Recommended Hardware
- MikroTik hEX S RB760iGS — core PoP router; handles Queue Tree and PCQ at Gigabit speeds
- MikroTik hEX RB750Gr3 — zone distribution router; Simple Queues work well at this level
- MikroTik hAP RouterBOARD with PoE — subscriber CPE
- MikroTik hAP lite Wireless Router — residential CPE
- MikroTik hAP lite RB941-2nD — budget CPE for last-mile
- MikroTik RouterBOARD Wireless Router — distribution and backhaul
Cabling: Cat6 Flat Ethernet Cable (indoor) and Cat6 Indoor/Outdoor UTP Cable (outdoor). Browse the MikroTik Routers collection.
Method 1: Simple Queues
Simple Queues apply bandwidth limits per subscriber IP or PPPoE session. They integrate directly with your ISP billing system via PPPoE profile Rate Limit.
Configure via PPPoE Profile (Recommended)
-
PPP → Profiles — open a plan profile (e.g.,
Standard-10Mbps) - Set Rate Limit:
10M/10M - Click OK — RouterOS applies this limit to every subscriber on this profile automatically
Your billing system assigns subscribers to profiles on payment — no manual queue creation needed.
Manual Simple Queue
- Queues → Simple Queues → +
- Target: subscriber IP | Max Limit:
10M/10M| Click OK
Limitation: Simple Queues don’t share a global pool — 200 subscribers each with 10 Mbps limits can all try to use 10 Mbps simultaneously on a 100 Mbps uplink.
Method 2: Queue Tree with PCQ
Queue Tree with Per Connection Queuing (PCQ) creates a shared bandwidth pool per plan tier and distributes it fairly across all active subscribers, preventing uplink saturation.
Step 1: Mangle Rules to Mark Traffic
- IP → Firewall → Mangle → +
- Chain:
forward| In Interface:[WAN]| Action: mark packet | New Mark:download - Add: Chain:
forward| Out Interface:[WAN]| New Mark:upload
Step 2: PCQ Queue Types
- Queues → Queue Types → +
- Name:
PCQ-Download| Kind:pcq| Classifier:dst-address| Rate:10M - Add:
PCQ-Upload| Classifier:src-address| Rate:10M
Step 3: Queue Tree
- Queues → Queue Tree → +
- Name:
Total-Download| Parent:[WAN interface]| Max Limit:[total uplink e.g. 100M] - Add child:
Subscribers-Download| Packet Mark:download| Queue Type:PCQ-Download - Repeat for upload
Which Method Should You Use?
- Under 100 subscribers: PPPoE profile Rate Limit — simplest, works seamlessly with your billing system
- 100–500 subscribers: Queue Tree with PCQ — prevents uplink saturation, fair distribution
- 500+ subscribers: Hierarchical Queue Tree per zone + billing profile assignment
Common Mistakes to Avoid
- Mixing Simple Queues and Queue Tree — causes double-queuing; pick one per interface
- Setting limits above your uplink speed — always set Queue Tree root to your actual WAN speed
- Not testing after changes — verify speeds from a subscriber CPE after applying changes
Conclusion
For small ISPs, PPPoE profile Rate Limits with your ISP billing system is the fastest path to automated bandwidth enforcement. As you scale past 100 subscribers, migrate to Queue Tree with PCQ for fair, stable bandwidth delivery.
Automate bandwidth and billing with our ISP platform →