QoS in 5G Transport How VoNR Gets Priority Over Netflix
End-to-end QoS mapping from 5QI to DSCP to MPLS EXP — what schedulers actually do under congestion
1. What Is QoS in 5G Transport — The Real Problem
QoS is not a feature you turn on. It is a discipline that must be enforced consistently at every node from the DU all the way to the UPF — and most operators get it wrong somewhere in that chain. When they do, the symptom is almost always the same: VoNR calls drop or degrade during busy hours, while video streaming continues unaffected. Subscribers complain. The RAN team checks radio parameters. Everything looks clean. The real problem is on the transport.
In 5G, quality of service starts at the core network with a 5QI (5G QoS Identifier) assigned to each PDU session bearer. This 5QI maps to specific QoS characteristics — packet delay budget, packet error rate, priority level. The transport network must honour these characteristics end-to-end. The mechanism for doing that is DSCP marking in the IP layer, MPLS EXP (Traffic Class) bits in the MPLS layer, and queue scheduling at each transport node. All three must be aligned. A break in any one of them collapses the QoS chain.
2. Real Network Architecture — The QoS Mapping Chain
5QI to DSCP to MPLS EXP — The Full Stack
| Layer | Mechanism | Who Sets It | Who Reads It |
| 5G Core / RAN | 5QI — bearer-level QoS class | AMF / PCF sets per PDU session | UPF, CU-UP use for GTP-U marking |
| IP Transport (outer GTP-U) | DSCP in outer IP header | DU or CU-UP sets on GTP-U packets | PE router reads at ingress for queue assignment |
| MPLS Core | EXP bits (3 bits = 8 classes) | PE router maps from DSCP at ingress | P routers use for queue scheduling in core |
| Egress PE / UPF-facing | DSCP re-marking if needed | Egress PE policy-map | UPF reads DSCP for internal scheduling |
The chain must be unbroken. If the DU marks GTP-U packets with DSCP EF (46) for VoNR, but the PE ingress policy-map is not configured to trust that marking, the PE will either reset it to CS0 (best effort) or ignore it entirely. From that point on, VoNR packets compete with Netflix traffic in the same queue.
5QI Reference — The Ones That Matter in Practice
| 5QI | Use Case | Priority Level | Packet Delay Budget | DSCP Mapping |
| 1 | VoNR (conversational voice) | 2 (highest) | 100 ms | EF (46) |
| 2 | Live video streaming (GBR) | 4 | 150 ms | AF41 (34) |
| 5 | IMS signalling | 1 | 100 ms | CS5 (40) |
| 8 | Default internet (non-GBR) | 8 | 300 ms | AF11 (10) |
| 9 | Default internet (low priority) | 9 | 300 ms | CS0 / BE (0) |
| 65 | Mission-critical push-to-talk | 0.7 | 75 ms | EF (46) |
| 80 | Low-latency MEC enterprise | 6 | 10 ms | AF31 (26) |
3. Step-by-Step Real Flow — VoNR vs Netflix Under Congestion
The Congestion Scenario: Busy Hour in Muscat CBD
It is 6pm in Muscat. A subscriber is on a VoNR call. Simultaneously, thousands of users are streaming video. The 10GE midhaul link between the aggregation hub and the Seeb PE is at 85% utilisation. What happens?
Step 1 — DU Marks Packets
The DU receives encoded voice frames from the CU-UP (already classified by the 5G core as 5QI=1). It encapsulates them in GTP-U and sets the outer IP DSCP field to EF (46). Netflix video packets arrive as 5QI=8 or 5QI=9 from separate bearers — the DU marks these as AF11 (10) or CS0 (0). At this point, the packets look different. The differentiation is set.
Step 2 — Aggregation Switch: The First Danger Point
The GTP-U packets traverse the access/aggregation Ethernet switch toward the PE. This is where operators most commonly lose QoS. If the switch is not configured to trust DSCP markings from the DU — or if it is doing its own classification based on L2/L3 fields and overwriting DSCP — the VoNR EF marking gets reset to CS0 here. Everything looks identical by the time it reaches the PE.
The correct configuration: the aggregation switch must be set to trust DSCP on the DU-facing interface and map DSCP to 802.1p CoS bits for queuing within the switch fabric. EF maps to CoS 5 or 6. CS0 maps to CoS 0. The switch then schedules packets accordingly.
Step 3 — PE Ingress Policy-Map
The packet arrives at the PE. The PE ingress policy-map reads the DSCP value and assigns the packet to the correct traffic class. A properly configured PE does this:
- DSCP EF (46) → class VoNR → set MPLS EXP 5 → queue in priority queue
- DSCP AF41 (34) → class Video → set MPLS EXP 4 → queue in BW-guaranteed queue
- DSCP CS0 (0) → class Default → set MPLS EXP 0 → queue in best-effort queue
The MPLS EXP bits are now set. These propagate through the core and are read by every P router for queue scheduling.
Step 4 — P Router Queue Scheduling Under Congestion
The P router has the 10GE link at 85% utilisation. Packets are arriving faster than they can be sent. The scheduler must decide what to drop. A properly configured P router runs something like:
- Priority Queue (EXP 5/6): VoNR, IMS signalling — always serviced first, never dropped unless link is 100% saturated by priority traffic alone
- BW Queue AF41 (EXP 4): Video streaming GBR — guaranteed minimum bandwidth, WRED applied when queue depth exceeds threshold
- Best Effort (EXP 0): Default internet — serviced with leftover bandwidth, WRED drops aggressively when congested
Under congestion, Netflix packets get dropped by WRED. VoNR packets in the priority queue are unaffected. The subscriber’s voice call continues without degradation. This is what correct QoS looks like in practice.
Step 5 — Egress PE and UPF Delivery
The egress PE pops MPLS labels, re-marks DSCP if needed for the UPF-facing segment, and forwards packets. The UPF receives GTP-U packets with DSCP intact, applies charging and policy based on bearer QoS, and forwards inner packets to the internet. For VoNR, the complete path — DU to UPF — has maintained EF marking and priority queuing throughout.
Key insight: QoS is only as strong as its weakest enforcement point. One misconfigured switch or PE ingress policy-map in the middle of the chain undoes everything configured correctly upstream. QoS must be verified end-to-end during network acceptance, not assumed.
4. Practical Example — VoNR Call Drop Investigation
An operator reports VoNR call drops during busy hours at Muscat CBD sites. RAN KPIs show increased jitter on the N3 interface. The radio team confirms coverage and interference are clean. Investigation reveals:
| Check Point | Finding | Impact |
| DU DSCP marking | EF (46) correctly set on VoNR GTP-U | Correct — not the issue |
| Aggregation switch trust | DSCP trust disabled on DU uplink port | CRITICAL — EF overwritten to CS0 at this point |
| PE ingress policy-map | Configured correctly but receiving CS0 | Policy working but classifying VoNR as best-effort (CS0 maps to default queue) |
| P router queuing | EXP 0 packets in best-effort queue | VoNR competing with Netflix — drops under congestion |
| Fix applied | Enable DSCP trust on aggregation switch DU-facing ports | VoNR drops immediately eliminated after fix |
The root cause was a single configuration missing on the aggregation switch. It took 4 hours of investigation to find because the symptom looked like a radio problem. This is why QoS end-to-end verification must be part of transport commissioning — not a post-incident exercise.
5. Key Parameters and Configurations
| Parameter | Typical Config | Common Mistake |
| DSCP trust at DU uplink | trust dscp on access switch DU port | Default is trust cos (L2 only) — DSCP ignored |
| DSCP-to-CoS mapping on switch | EF→CoS6, AF41→CoS4, CS0→CoS0 | Using default linear mapping loses priority differentiation |
| PE ingress class-map | Match dscp ef → class VoNR | Using match any instead of match dscp — everything lands in default class |
| PE ingress set MPLS EXP | set mpls experimental imposition 5 | Not setting EXP = transit P routers use EXP 0 = best effort for all |
| P router queue config | Priority queue for EXP 5/6, CBWFQ for EXP 4, WRED for EXP 0 | Flat queuing with no WRED = VoNR and Netflix compete equally |
| WRED thresholds | Min threshold 40%, max 80% for AF classes | Default WRED thresholds too high = no early drop, tail drop instead |
6. Common Issues in the Field
- DSCP marking overwritten at aggregation switch — the most common failure. Access switches default to trusting CoS (802.1p) not DSCP. DU marks DSCP correctly, switch ignores it, PE sees CS0 for everything.
- PE ingress policy-map not applied to the right interface — policy-map is configured but applied to the wrong physical interface or subinterface. Check interface-level service-policy assignment, not just the policy-map definition.
- MPLS EXP bits not preserved across third-party transit — if a segment of transport crosses a third-party network or a segment without EXP remarking, EXP bits may be reset. VoNR loses priority in the transit segment. Include EXP preservation in third-party transport SLAs.
- Priority queue starvation — if too much traffic is marked EF (e.g. network management tools sending at EF), the priority queue saturates and all EF traffic including VoNR gets delayed. Strict police EF traffic at ingress to prevent priority queue abuse.
- WRED not enabled on congested links — tail drop is the default on many platforms. Tail drop creates TCP synchronisation — all TCP flows back off simultaneously, causing throughput oscillation. WRED provides probabilistic early drop that prevents synchronisation.
7. Troubleshooting Approach
- Capture DSCP at each hop — use port mirroring or TWAMP with DSCP checking to verify marking is preserved at DU output, aggregation switch output, PE ingress, and PE egress. Identify where EF marking disappears.
- Check queue statistics during busy hour — pull interface queue counters during peak traffic period. A healthy VoNR-capable network shows near-zero drops in the priority queue and manageable drops in best-effort queues.
- Verify PE ingress policy-map statistics — on the PE, show policy-map interface <x> shows packet counts and drop counts per class. If VoNR class shows zero matches, the classification is not working — packets are landing in the default class.
- Check MPLS EXP preservation — on P router interfaces, verify EXP distribution in queue stats. If all packets show EXP 0 in transit, the PE is not setting EXP correctly or it is being overwritten.
- Correlate transport jitter with RAN KPIs — use TWAMP to measure jitter on N3 path during busy hour. Correlate with VoNR MOS scores and PDCP reordering counts. A jitter spike on transport directly maps to VoNR quality degradation.
8. Design Recommendations — Consultant Level
- Define QoS policy as a network-wide standard before deployment — document DSCP values, MPLS EXP mappings, queue configurations, and WRED thresholds for every traffic class. Make this a mandatory input to transport equipment configuration templates.
- Use a maximum of 6-8 traffic classes end-to-end — more than 8 classes creates operational complexity and most hardware supports only 8 queues per interface anyway. Consolidate into: Network Control, VoNR/Real-time, Video GBR, Signalling, Enterprise, Default, Scavenger.
- Enforce DSCP marking at the DU — never trust user devices to mark correctly. DU should remark all traffic based on 5QI regardless of what arrives from the UE.
- Police priority queue at PE ingress — set a hard rate limiter on the EF class at PE ingress (typically 10-15% of link bandwidth). This prevents any single site or misconfigured device from flooding the priority queue across the entire core.
- Test QoS under synthetic load before go-live — use traffic generators to simulate busy-hour conditions with mixed VoNR, video, and data traffic. Verify priority queue behaviour and confirm VoNR packets take zero drops when best-effort queue is congested.
9. Summary — Practical Takeaways
QoS in 5G transport is a chain — 5QI to DSCP to MPLS EXP to queue scheduling. Every link in that chain must be verified. The most common failure is at the aggregation switch, where DSCP trust is not configured and EF marking is silently overwritten. From that point, all downstream QoS config is irrelevant.
The fix is not complex. It is a consistent, documented QoS policy enforced at every node, verified end-to-end during commissioning, and re-verified after every maintenance change. Do this once, properly, and VoNR will always get priority over Netflix.
| Takeaway | Action |
| QoS chain breaks at the weakest node | Verify DSCP trust and EXP preservation at every hop during commissioning |
| Aggregation switch is the most common failure point | Enable DSCP trust on all DU-facing and CU-facing switch ports |
| PE ingress policy-map must classify by DSCP | Verify class-map hit counts during busy hour — zero hits = misconfiguration |
| Police EF traffic at PE ingress | Prevent priority queue starvation — hard rate-limit EF to 10-15% of link BW |
| Test QoS under load before go-live | Use traffic generators to verify VoNR takes zero drops under congestion |
Muhammad Tahir Riaz |
