QoS Explained: How to Prioritize Gaming & VoIP Traffic on Your Router
Your internet connection is shared — by every device in your home, and by every type of traffic those devices generate. When your download competes with your game packets in your router's buffer, your game loses. Quality of Service (QoS) is the fix: it tells your router which traffic matters and ensures that traffic gets through first. Here's what QoS actually does and how to configure it correctly.
QoS prioritizes small, latency-sensitive packets (gaming, VoIP, video calls) over large, bulk transfers (downloads, backups, streaming). The best modern implementation is CAKE with Adaptive Bandwidth — it actively fights bufferbloat rather than just sorting traffic types. Set your speeds to 90–95% of your actual ISP speed, enable CAKE if available, and assign your gaming device to the highest priority class.
Why QoS Exists: The Bufferbloat Problem
To understand QoS, you need to understand bufferbloat — the root cause of most home-network jitter under load.
Your router has a transmit queue (buffer) on each network interface. When traffic arrives faster than it can be sent out, packets wait in this queue. In theory, buffers exist to smooth out temporary bursts. In practice, consumer routers have oversized buffers that fill up and stay full under any sustained load — introducing hundreds of milliseconds of queuing latency for every packet, regardless of how time-sensitive it is.
The result: you're downloading a game update in the background, your router's upload buffer is 80% full, and your CSGO packets — which are tiny (under 1KB each) but need to go out immediately — are sitting behind 200ms worth of Steam update chunks. Your ping spikes from 15ms to 220ms. Your game feels broken. Your download is still fast.
QoS fixes this in two ways: it classifies traffic by type, and it schedules high-priority packets ahead of low-priority ones. A well-configured QoS system ensures your game packets transmit within 1–2ms of arrival, regardless of what else is happening on the network.
QoS Types: Which One You Actually Want
Not all QoS implementations are equal. There are several approaches, and the difference in effectiveness is significant.
General Setup: The Critical First Step
Regardless of which QoS type your router supports, the single most important configuration step is setting your bandwidth correctly. QoS only works if your router knows how much bandwidth it has available. If you set it too high, the router thinks it can send more than the link can actually carry — the buffer fills anyway and QoS has no effect.
Run a speed test and note your actual measured upload and download speeds (not your ISP's advertised speeds). Set your QoS bandwidth values to 90–95% of those measured values. The 5–10% headroom prevents the router's buffer from filling before QoS can act. This alone — just setting accurate bandwidth — is often enough to cut jitter by 60%+ under load.
After setting bandwidth, test by simultaneously running a large download and a jitter test on jitter.is. With CAKE or fq_codel configured correctly, your jitter during a maxed-out download should be nearly identical to your jitter with no background activity. If it's still high, verify your bandwidth settings are accurate and that QoS is applied to the correct WAN interface.
ASUS Routers (Stock Firmware)
- Log in to your router at
192.168.1.1orrouter.asus.com - Go to Adaptive QoS in the left sidebar
- Enable QoS and select Adaptive QoS mode (not Traditional)
- Under Bandwidth Setting, enter your actual measured upload and download speeds (in Mbps)
- In the Priority section, drag Gaming to the top slot. Move Media Streaming second
- Move File Transfer and File Sharing to the bottom two slots
- Click Apply and wait 30 seconds for settings to take effect
- Flash ASUS-Merlin firmware (asuswrt-merlin.net) — this is a third-party but widely trusted firmware that retains all ASUS features and adds CAKE support
- After flashing, go to Adaptive QoS → QoS
- Select CAKE as the QoS type
- Set upload and download to 90% of your measured speeds
- Set overhead to match your connection type: VDSL2 (+8), Cable (DOCSIS +18), Fiber (+44)
- Apply. Run a jitter test while saturating the connection to verify improvement
TP-Link Routers
- Log in at
192.168.0.1ortplinkwifi.net - Go to Advanced → QoS
- Toggle QoS on and enter your actual bandwidth values
- Under Priority Rules, click Add and set your gaming PC or console's MAC address or IP to Highest priority
- Set streaming devices (Apple TV, smart TVs) to High priority
- Leave everything else at default (Medium/Low)
- Alternatively, use Application Priority to prioritize by app category if you prefer not to manage by device
Netgear Routers
- Log in at
routerlogin.netor192.168.1.1 - Go to Advanced → Setup → QoS Setup
- Check Enable WMM (Wi-Fi multimedia) settings — this is QoS for Wi-Fi clients
- Check Enable QoS for wired QoS
- Click Set Up QoS Rule and add your gaming device by MAC address at Highest priority
- Alternatively, use the Online Gaming preset which automatically prioritizes common gaming traffic
- Run an internet speed test and enter your measured speeds under Uplink Bandwidth
OpenWrt — CAKE (Best Results)
If you're running OpenWrt (or can flash it on your router), CAKE with SQM gives the best possible jitter reduction under load. This is the configuration approach used in the most technically rigorous home networking setups.
- Install the SQM package:
opkg update && opkg install luci-app-sqm - Go to Network → SQM QoS in the LuCI web interface
- Select your WAN interface (usually
eth0,eth1, orwan) - Set Download speed and Upload speed to 90% of your actual measured speeds
- Under Queue Discipline, select
cake - Under Queue Setup Script, select
piece_of_cake.qosfor simplicity, orlayer_cake.qosfor DSCP-aware prioritization - Enable the interface and click Save & Apply
- Verify with: run a download at full speed, simultaneously run a jitter test — jitter should remain under 5ms
# Optional: verify CAKE is active via SSH
tc -s qdisc show dev eth0
# Should show: qdisc cake ... flows 1024 ...
# Check current queue depth under load
tc -s class show dev eth0
DSCP Priority Markings for Major Apps
If your router supports DSCP-based QoS, these are the markings used by major real-time applications. Configure your router to prioritize EF (46) and CS6 (48) traffic for best results.
| Application | Traffic Type | DSCP Marking | Priority Class |
|---|---|---|---|
| Zoom (audio) | RTP audio stream | EF (46) |
Highest |
| Zoom (video) | RTP video stream | AF41 (34) |
High |
| Microsoft Teams (audio) | RTP audio stream | EF (46) |
Highest |
| Microsoft Teams (video) | RTP video stream | AF41 (34) |
High |
| Counter-Strike 2 / Valve | Game state UDP | CS1 (8) or unmarked |
Prioritize by port (27015–27030) |
| Valorant | Game state UDP | Unmarked (DSCP 0) | Prioritize by port or device MAC |
| Discord (voice) | Opus audio UDP | EF (46) |
Highest |
| Netflix / YouTube | Adaptive bitrate TCP | Unmarked | Low — has buffer |
| Game downloads (Steam) | TCP bulk transfer | Unmarked or CS1 |
Lowest |
Most PC games don't use DSCP markings — they send game packets as best-effort (DSCP 0). This means DSCP-only QoS won't help gaming traffic. For gaming, device-based prioritization (by MAC address or IP) or CAKE's per-flow fair queuing is more reliable than trying to classify by DSCP markings. CAKE in particular handles gaming well without any configuration because its fair-queuing algorithm naturally gives small, frequent flows (game packets) lower queuing delay than large, infrequent flows (downloads).
How to Verify QoS Is Actually Working
Enabling QoS doesn't guarantee it's working correctly. The test is simple and takes about 2 minutes:
- Run a baseline jitter test on jitter.is with no background activity. Note the result.
- Start a large download that saturates your connection (use a speed test's download function, or download a large file). Keep it running.
- While the download is running, run another jitter test on jitter.is.
- Compare the two results.
QoS working correctly: Jitter under load is within 2–3ms of your baseline. The download is still fast (near full speed).
QoS not working: Jitter spikes significantly (10ms+) under load. Common causes: bandwidth set too high (set to 90% of actual speed), QoS applied to wrong interface, or the router's CPU is too slow to process QoS rules at your connection speed.
Some ISP-provided routers have a "QoS" setting that does nothing meaningful — it's a marketing feature that doesn't implement real packet scheduling. If enabling QoS on your ISP's router doesn't change jitter under load at all, it's likely a non-functional implementation. In this case, either use a separate router behind the ISP modem, or flash OpenWrt on a supported device for real CAKE-based QoS.
Run a before-and-after jitter test to measure exactly how much QoS helped.
// TEST JITTER NOWSummary
QoS works by classifying traffic and ensuring latency-sensitive packets (gaming, VoIP, video calls) are transmitted before bulk traffic (downloads, backups, streaming). The most effective modern implementation is CAKE — an active queue management algorithm that keeps buffer depths small and prevents bufferbloat entirely, rather than just sorting packets after the fact.
The configuration steps that matter most: set your bandwidth to 90–95% of your actual measured speed, apply QoS to the WAN interface, and use CAKE or fq_codel if your router supports it. If your router only has basic port-based or application QoS, prioritize by device MAC address for your gaming machine rather than relying on port-based classification.
Verify it worked with the load test: jitter should remain nearly unchanged whether you have a large download running or not. If it doesn't pass that test, QoS isn't configured correctly — check your bandwidth settings first.