A home router running RouterOS can shape traffic so that a VoIP call does not break when someone starts a large upload, and online gaming stays responsive while a streaming TV pulls 4K video. This guide covers practical, low-maintenance configurations for consumer-grade internet connections (10–1000 Mbps).
Set your queue limits a few percent below your actual measured throughput, not the ISP’s advertised rate. Shaping at or above the real line rate pushes packets into the ISP’s modem buffer instead of your router’s queue, defeating the QoS policy.
Disconnect all devices except the test machine.
Run a speed test several times (morning, evening) and note the lowest values.
Set your queue max-limit values to ~92–95% of the measured minimum.
A single Simple Queue rule caps the entire home subnet and distributes bandwidth using PCQ (equal sharing across all devices). This eliminates bufferbloat with minimal configuration.
Every active device gets an equal share of the available bandwidth. If only one device is active, it uses the full link.
When this is enough: You have no VoIP or gaming that requires guaranteed priority. The PCQ fairness prevents any single device from monopolizing the link.
Rule order matters in Simple Queues. Rules are evaluated top to bottom; the first match wins. Per-device rules must appear above the subnet catch-all rule.
Queue Tree gives finer control: VoIP, gaming, streaming, and bulk each become separate traffic classes under a shared WAN cap, regardless of which device generates them.
FastTrack note. FastTracked connections bypass the mangle chain. If your router has a FastTrack rule, add an exception for VoIP and gaming traffic that you want to shape:
Burst lets web traffic spike briefly above its steady-state rate for fast page loads.
/queue tree
set UP-DATA burst-limit=28M burst-threshold=15M burst-time=8s
set DOWN-DATA burst-limit=285M burst-threshold=150M burst-time=8s
Web traffic can burst to the full link rate while the 8-second average is below the threshold. Sustained streaming quickly consumes the burst allowance and drops back to max-limit.
If your primary complaint is high latency during downloads or uploads (bufferbloat), and you do not need class-based priority, FQ-CoDel is the simplest fix. It manages queue depth internally to reduce latency.
/queue type
addname=fqcodel kind=fq-codel
/queue simple
addname=Home-Internet \
target=192.168.88.0/24 \
max-limit=285M/28M \
queue=fqcodel/fqcodel \
comment="Bufferbloat fix with FQ-CoDel"
Test bufferbloat before and after with the Waveform Bufferbloat Test or by running a continuous ping during a large upload. A well-shaped link should show under 20 ms of added latency.
See CAKE and FQ-CoDel for a deeper discussion of active queue management algorithms.
The VoIP limit-at guarantee only works when VoIP packets carry the correct packet-mark. Verify the mangle rule is matching: /ip firewall mangle print stats — the VoIP rule byte count must be increasing during a call.
Check whether FastTrack is bypassing the mangle chain for the VoIP device. See the FastTrack note in Step 1.
A Simple Queue target must match the packet’s source or destination address. Confirm the subnet is correct with /ip route print and /ip address print.
A Queue Tree child with parent=global-in shapes download (traffic arriving from WAN). If you attached the parent to ether1, it only shapes upload. Switch the parent or add a mirrored tree.
Priority (1–8) only takes effect when the parent queue is congested. If your WAN cap is set above the actual line rate, the ISP modem queue is the bottleneck — lower your max-limit values until the router controls the queue.
Run a ping flood while transferring a large file (/tool flood-ping). If latency spikes only during transfers and drops immediately after, the shaping is working but the max-limit is too high.
Simple Queue rules are evaluated in list order. A subnet catch-all rule placed above a per-device rule will match first. Drag per-device rules to the top of the list.