Voice over NR (VoNR) Call Flow
End-to-end VoNR setup — IMS registration, SIP INVITE/SDP, and the dedicated 5QI=1 GBR flow for the voice media, drawn with the exact IEs.
This document traces a complete Voice over NR (VoNR) call setup for a mobile-originating (MO) leg, from the first SIP INVITE to steady-state voice packets flowing on a dedicated Guaranteed-Bit-Rate radio bearer. It assumes the UE is already 5G-registered in 5GS (it holds a NAS security context via the AMF per TS 24.501) and already IMS-registered — the SIP REGISTER / IMS-AKA exchange with the S-CSCF has completed, so the UE's public identity is bound to its contact and it can originate calls. It also assumes an IMS PDU Session (DNN "ims", PDU Session ID 5) is up, carrying a default non-GBR QoS Flow at 5QI=5 (QFI 9) on which all SIP signalling rides. VoNR is where the application layer (SIP/SDP over IMS, TS 23.228) and the 5G bearer layer (the 5G QoS model, TS 23.501/23.502) are stitched together: the SDP codec negotiation is the exact trigger that makes the network build a dedicated 5QI=1 GBR QoS Flow (QFI 1) for the voice media, mapped onto a dedicated Data Radio Bearer. The flow below moves through three phases — the SIP offer/answer on the 5QI=5 signalling flow (A), on-demand creation of the dedicated GBR flow through PCF/SMF/AMF/gNB (B), and answer plus media where RTP flows on the new GBR DRB (C). Each step lists the exact message, the interface it crosses, key Information Elements with realistic example values, and representative Wireshark-style packet captures as they would appear in a UE/gNB/core trace.
Introduction
A VoNR call flow is the end-to-end sequence that turns "the user pressed dial" into RTP voice packets riding a guaranteed-bit-rate radio bearer. It is fundamentally a two-layer procedure: a SIP/SDP dialog in the IMS application layer negotiates the codec, and that negotiation triggers the 5G core and RAN to build a dedicated 5QI=1 QoS flow underneath it. Neither layer works without the other, and the interesting failures happen precisely where they meet.
This flow sits at the top of the 5G stack, after everything else is already in place: the UE must be 5G-registered with a VoNR verdict (IMS VoPS set), IMS-registered with the S-CSCF, and holding an established IMS PDU session carrying the default 5QI=5 signalling flow. Only then can this MO call proceed. It runs every time a subscriber originates or receives a voice call on a VoNR-capable network.
It matters because voice is unforgiving. The call must not ring until a media path exists (the SIP precondition mechanism enforces this), and the media path is a real GBR reservation that the gNB must admit. Because the flow crosses SIP, NGAP, RRC, PCF/SMF policy, and SDAP mapping, a "one-way audio" or "call fails to connect" ticket almost always localises to one specific step — which is why following the sequence message by message is the fastest route to the root cause.
On this page
Why the VoNR call flow works this way
In plain words: it is like booking a private lane at a pool before you swim a race. First you and the referee agree the rules — which stroke, how fast (the SIP/SDP offer/answer, picking AMR-WB). Only once that is settled does the pool manager rope off a dedicated lane just for you (the 5QI=1 GBR bearer). And crucially, the starter will not fire the gun — the phone will not ring — until your lane is confirmed roped off on both ends. That "don't start until the lane is ready" rule is the SIP precondition framework.
Concretely, three design choices shape the whole flow. First, signalling and media are separated: all SIP rides the always-on 5QI=5 non-GBR flow (QFI 9), while voice media gets its own 5QI=1 GBR flow (QFI 1) built on demand — so signalling is never starved by media admission and vice versa. Second, the bearer is created mid-dialog, not up front: the network waits until the SDP answer fixes the codec so it reserves exactly the right guaranteed bit rate, no more. Third, alerting is gated on the bearer via SIP preconditions, so a call can never ring without a media path — eliminating the "answered but dead air" failure. The flow below is the concrete realisation of those three choices.
Call flow — SIP setup
Zooming out from the packet-level detail above, this is the end-to-end SIP message sequence for the VoNR MO call — INVITE through ACK — carried on the IMS PDU session, with the dedicated 5QI 1 QoS flow built mid-dialog once the SDP answer fixes the media QoS.
- UE sends
INVITEwith the SDP offer to the P-CSCF over the IMS PDU session (5QI 5 signalling flow). - P-CSCF forwards the
INVITEto the S-CSCF. - S-CSCF routes the
INVITEon toward the remote end. - Remote returns
100 Tryingto stop retransmissions. - Remote returns
183 Session Progresscarrying the SDP answer — the media QoS is now fixed. - Dedicated QoS flow: the P-CSCF passes the media QoS to the PCF over N5, the SMF runs a PDU Session Modification, and a 5QI 1 QoS flow is mapped to a dedicated DRB.
- UE sends
PRACKto reliably acknowledge the 183. - Remote returns
200 OK (PRACK). - With the flow ready, UE sends
UPDATEsignalling that preconditions are met. - Remote returns
200 OK (UPDATE). - Remote returns
180 Ringing; the callee is alerted and the UE plays ringback. - Remote returns
200 OK (INVITE)when the callee answers. - UE sends
ACK, confirming the dialog. RTP voice then flows on the 5QI 1 QoS flow.
If VoNR isn't available here, EPS fallback moves the call to VoLTE — with EPS↔5GS interworking (N26).
Call flow at a glance
| Step | Message | Direction | Interface | Purpose |
|---|---|---|---|---|
| 1 | SIP INVITE (SDP offer, AMR-WB) | UE → P-CSCF | Gm (SIP on 5QI=5) | Originate call, propose codecs/ports/bandwidth in SDP offer |
| 2 | 100 Trying / 183 Session Progress (SDP answer) | P-CSCF → UE | Gm (SIP on 5QI=5) | Acknowledge INVITE; deliver far-end SDP answer (agreed codec) |
| 3 | PRACK / 200 (PRACK) | UE ↔ P-CSCF | Gm (SIP on 5QI=5) | Reliably acknowledge the 183 provisional response |
| 4 | Media Authorization (AAR/AAA) | P-CSCF ↔ PCF | Rx / N5 | P-CSCF passes negotiated media QoS to PCF for authorization |
| 5 | Install PCC Rule (SM Policy Update) | PCF → SMF | N7 (SBI) | PCF installs voice PCC rule: 5QI=1, GFBR/MFBR, ARP |
| 6 | PDU Session Resource Modify Request | AMF → gNB | N2 (NGAP) | Add GBR QoS Flow (QFI 1, 5QI=1) with GFBR/MFBR and ARP |
| 7 | GBR Admission + RRCReconfiguration | gNB → UE | NR-Uu (RRC) | Admit GBR flow; add dedicated voice DRB; map QFI 1 → DRB |
| 8 | RRCReconfigurationComplete | UE → gNB | NR-Uu (RRC) | UE confirms the dedicated voice DRB is configured |
| 9 | PDU Session Resource Modify Response | gNB → AMF | N2 (NGAP) | gNB reports GBR QoS Flow added; bearer live end-to-end |
| 10 | SIP UPDATE / 200 (UPDATE) | UE ↔ P-CSCF | Gm (SIP on 5QI=5) | Signal precondition met (resources reserved) to far end |
| 11 | 180 Ringing / 200 OK (INVITE) / ACK | UE ↔ P-CSCF | Gm (SIP on 5QI=5) | Alerting, callee answers, dialog confirmed |
| 12 | Voice RTP on 5QI=1 GBR DRB | UE ↔ far end | NR-Uu (RTP/UDP/IP) | AMR-WB media flows on the dedicated GBR voice DRB |
Phase A — SIP Session on the 5QI=5 Signalling Flow (Steps 1–3)
The call begins entirely in the application layer. Every message in this phase is a SIP request or response carried on the existing default QoS Flow of the IMS PDU Session — 5QI=5 (QFI 9), the standardised non-GBR flow for IMS signalling — and reaches the IMS core through the P-CSCF, the UE's first contact point. No 5G bearer changes happen yet: the UE offers its codecs, the far end answers with the agreed codec, and reliable provisional responses are acknowledged. Critically, the SDP offer/answer completed here is exactly what tells the network what QoS the media will need, arming Phase B.
The originating UE sends a SIP INVITE toward the callee, addressed via the P-CSCF whose address it learned in the PCO during IMS PDU Session establishment. The INVITE carries an SDP offer describing the media the UE proposes: for voice this is typically AMR-WB (Adaptive Multi-Rate Wideband) at 16 kHz, an RTP port, and bandwidth hints. It also uses the precondition framework — the SDP marks current QoS as not yet met and desired QoS as mandatory — so the far end will not alert the user until both sides confirm their bearers are ready. This request rides the 5QI=5 signalling flow on the IMS PDU Session.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Request-Line | INVITE sip:+13115550777@ims...; SIP/2.0 | Mobile-originating call to the callee's public identity |
| From / P-Asserted-Identity | sip:+13115550123@ims.mnc480.mcc311... | Network-asserted originating identity |
| Call-ID / CSeq | 8f2a4b6c1d@... / 1 INVITE | Dialog and transaction identifiers |
| SDP m= line | audio 49152 RTP/AVP 97 | Media type, UE RTP port, payload type |
| SDP a=rtpmap | 97 AMR-WB/16000/1 | Proposed codec: AMR-WB wideband voice |
| SDP a=fmtp | 97 mode-change-capability=2; max-red=0 | AMR-WB mode/redundancy parameters |
| SDP precondition | a=curr:qos local none / a=des:qos mandatory | Blocks alerting until GBR bearer is reserved |
| Carried on | 5QI=5 flow (QFI 9), IMS PDU Session 5 | Signalling transport for all SIP |
Session Initiation Protocol (INVITE)
Request-Line: INVITE sip:+13115550777@ims.mnc480.mcc311.3gppnetwork.org SIP/2.0
Via: SIP/2.0/UDP [2001:db8:ca11::a1]:5060;branch=z9hG4bK7a2f
From: sip:+13115550123@ims.mnc480.mcc311.3gppnetwork.org;tag=9c1e
Call-ID: 8f2a4b6c1d@2001:db8:ca11::a1
CSeq: 1 INVITE
Content-Type: application/sdp
Session Description Protocol
Media Description: audio 49152 RTP/AVP 97
Media Attribute (a): rtpmap:97 AMR-WB/16000/1
Media Attribute (a): fmtp:97 mode-change-capability=2; max-red=0
Media Attribute (a): curr:qos local none
Media Attribute (a): des:qos mandatory local sendrecv✅ Debugging steps
- Confirm the INVITE actually egresses on the
5QI=5(QFI 9) signalling flow of the IMS PDU session, not the default internet PDU session. - Verify the SDP offer contains the expected codec (
AMR-WB) and precondition lines (a=curr:qos local none,a=des:qos mandatory). - Check the Request-URI/P-CSCF address matches what the PCO delivered at IMS PDU session setup.
⚠ Common causes of failure
- Wrong or stale P-CSCF address so the INVITE never reaches the IMS core.
- Missing precondition attributes, causing premature alerting before the GBR bearer exists (dead air on answer).
- IMS PDU session or
5QI=5flow not established, so SIP has no transport.
The P-CSCF immediately returns a 100 Trying to stop INVITE retransmissions, and forwards the INVITE onward through the S-CSCF to the terminating side. Once the far end selects a codec from the offer it returns a 183 Session Progress carrying the SDP answer — the single agreed codec (AMR-WB), the far-end RTP port, and its own precondition state. The 183 is sent reliably (it requires a PRACK) so the SDP answer cannot be lost. At the moment this SDP answer is known, the media QoS is fully determined and the IMS core can begin authorizing resources.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Status-Line (provisional) | SIP/2.0 100 Trying | Absorbs INVITE retransmissions |
| Status-Line (reliable prov.) | SIP/2.0 183 Session Progress | Carries the SDP answer reliably |
| Require / RSeq | 100rel / 1 | Marks the 183 as requiring PRACK |
| SDP answer a=rtpmap | 97 AMR-WB/16000/1 | Single codec agreed by both ends |
| SDP answer m= | audio 50004 RTP/AVP 97 | Far-end RTP port for media |
| SDP a=curr / a=des | curr:qos local none / des:qos mandatory | Precondition still unmet — no alerting yet |
| To tag | ab77 | Establishes the early dialog |
| Carried on | 5QI=5 flow (QFI 9) | Provisional responses on signalling flow |
Session Initiation Protocol (183 Session Progress)
Status-Line: SIP/2.0 183 Session Progress
Via: SIP/2.0/UDP [2001:db8:ca11::a1]:5060;branch=z9hG4bK7a2f
Call-ID: 8f2a4b6c1d@2001:db8:ca11::a1
CSeq: 1 INVITE
Require: 100rel
RSeq: 1
Content-Type: application/sdp
Session Description Protocol
Media Description: audio 50004 RTP/AVP 97
Media Attribute (a): rtpmap:97 AMR-WB/16000/1
Media Attribute (a): curr:qos local none
Media Attribute (a): des:qos mandatory local sendrecv✅ Debugging steps
- Confirm a
183 Session Progresswith an SDP answer arrives; a bare 100 Trying with no 183 means the terminating side never answered the offer. - Verify the answer converged on a single codec both ends support (codec mismatch shows as an empty/incompatible m-line or a 488).
- Check
Require: 100rel/RSeqare present so the 183 will be reliably acknowledged.
⚠ Common causes of failure
- Codec mismatch between offer and answer → 488 Not Acceptable Here instead of a usable 183.
- No reliable-provisional support, so the SDP answer can be lost and setup stalls.
- Terminating-side or S-CSCF routing failure, so no 183 ever returns.
Because the 183 was marked reliable (Require: 100rel, RSeq 1), the UE acknowledges it with a PRACK request whose RAck header echoes the RSeq and CSeq of the response being confirmed. The far end (via the P-CSCF) replies 200 OK for the PRACK. This closes the reliable-provisional handshake so both sides are certain the SDP answer has been delivered. With the codec firmly agreed, the network moves to reserve the actual media resources in Phase B before the UE will send UPDATE and the callee is alerted.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Request-Line | PRACK sip:+13115550777@... | Provisional acknowledgement request |
| RAck | 1 1 INVITE | References RSeq 1 and CSeq of the 183 |
| CSeq | 2 PRACK | New transaction within the dialog |
| Call-ID | 8f2a4b6c1d@... | Ties PRACK to the same dialog |
| Response | SIP/2.0 200 OK | Confirms the PRACK was received |
| Body | none (SDP already agreed) | No further offer/answer needed here |
| Carried on | 5QI=5 flow (QFI 9) | Still pure signalling traffic |
| Max-Forwards | 70 | Standard SIP loop protection |
Session Initiation Protocol (PRACK)
Request-Line: PRACK sip:+13115550777@ims.mnc480.mcc311.3gppnetwork.org SIP/2.0
Via: SIP/2.0/UDP [2001:db8:ca11::a1]:5060;branch=z9hG4bK9d3c
From: sip:+13115550123@ims.mnc480.mcc311.3gppnetwork.org;tag=9c1e
To: sip:+13115550777@ims.mnc480.mcc311.3gppnetwork.org;tag=ab77
Call-ID: 8f2a4b6c1d@2001:db8:ca11::a1
CSeq: 2 PRACK
RAck: 1 1 INVITE
Max-Forwards: 70
Content-Length: 0
[Reply: SIP/2.0 200 OK CSeq: 2 PRACK]✅ Debugging steps
- Confirm the PRACK's
RAckechoes the exactRSeq/CSeqof the 183 being acknowledged. - Verify a
200 OK (PRACK)returns; without it the far end keeps retransmitting the 183 and setup stalls.
⚠ Common causes of failure
- Lost or mismatched PRACK (
RAcknot matching), so the 183 is retransmitted until timeout. - Signalling-flow (
5QI=5) congestion or loss delaying the reliable handshake.
Phase B — Dedicated GBR Flow Creation (Steps 4–9)
This is the heart of VoNR: the negotiated media parameters are turned into a real, guaranteed-bit-rate bearer. The P-CSCF hands the media QoS to the PCF (Rx/N5), the PCF derives a PCC rule and installs it on the SMF (N7), and the SMF drives a PDU Session modification down through the AMF (N2) to the gNB. The gNB admits the GBR flow, builds a dedicated voice DRB, and reconfigures the UE over the air. When the gNB reports success back to the core, the 5QI=1 conversational-voice bearer is live end-to-end — all before the phone is allowed to ring.
Acting as an Application Function, the P-CSCF passes the agreed media description to the PCF so policy can authorize it. In an SBA deployment this is the Npcf_PolicyAuthorization service over N5 (HTTP/2 SBI); in a Diameter deployment it is an AA-Request over the Rx interface. Either way the P-CSCF describes the media component: type audio, the AMR-WB bandwidth requirement, and the flow description (IP 5-tuple for the RTP flow). The PCF authorizes it and prepares to translate it into a PCC rule targeting a 5QI=1 GBR flow.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Service / Command | Npcf_PolicyAuthorization_Create (N5) / AAR (Rx) | P-CSCF (AF) requests media authorization |
| Media-Component-Number | 1 | Identifies the audio media component |
| Media-Type | audio | Marks this as a voice media flow |
| Max-Requested-Bandwidth UL/DL | 41000 / 41000 bps | AMR-WB bandwidth (codec + IP overhead) |
| Flow-Description | permit out 17 from ... to [2001:db8:ca11::a1] 49152 | RTP 5-tuple to bind the PCC rule to |
| AF-Application-Identifier | IMS Voice | Service context for policy decisions |
| Reservation-Priority | PRIO_2 | Maps toward ARP / precedence |
| Response | 201 Created (N5) / AAA DIAMETER_SUCCESS (Rx) | PCF confirms authorization |
HyperText Transfer Protocol 2
Stream: HEADERS, Stream ID: 3
:method: POST
:path: /npcf-policyauthorization/v1/app-sessions
:authority: pcf.5gc.mnc480.mcc311.3gppnetwork.org
content-type: application/json
Stream: DATA, Stream ID: 3
JavaScript Object Notation (application/json)
"medComponents": { "mediaType": "AUDIO",
"marBwUl": "41 Kbps", "marBwDl": "41 Kbps",
"fDescs": "permit out 17 to 2001:db8:ca11::a1 49152" }
"resPrio": "PRIO_2"
[Response] :status: 201 Created Location: .../app-sessions/vonr-9c1e✅ Debugging steps
- Confirm the P-CSCF sends the authorization (
Npcf_PolicyAuthorization_Createon N5 orAARon Rx) after the SDP answer, and that the PCF returns201 Created/DIAMETER_SUCCESS. - Check the media bandwidth and 5-tuple (
fDescs) match the negotiated SDP so the later PCC rule binds to the right RTP flow.
⚠ Common causes of failure
- P-CSCF cannot reach the PCF (N5/Rx transport or NRF discovery failure), so no GBR flow is ever authorized.
- Policy rejects the media (subscription/quota), returning a failure instead of authorization.
- Flow description not matching the SDP, so packets later miss the PCC rule.
The PCF turns the authorized media into a PCC rule and pushes it to the SMF over N7 using the Npcf_SMPolicyControl_UpdateNotify service. The rule names the 5QI=1 standardised characteristics (GBR, conversational voice), the Guaranteed and Maximum Flow Bit Rates for uplink and downlink (GFBR/MFBR), and the Allocation and Retention Priority (ARP). On receiving it the SMF binds the rule to a new QoS Flow on the IMS PDU Session, allocates the QFI, and prepares an N1N2 message transfer to update the RAN via the AMF. The SMF also updates the UPF over N4 with the packet-detection and QoS-enforcement rules for the new flow.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Service operation | Npcf_SMPolicyControl_UpdateNotify | Pushes the PCC rule to the SMF |
| pccRuleId | voice-9c1e | Identifier for the installed voice rule |
| 5QI | 1 (GBR, Conversational Voice) | Standardised delay/reliability profile |
| gbrUl / gbrDl (GFBR) | 24400 / 24400 bps | Guaranteed flow bit rate for AMR-WB |
| mbrUl / mbrDl (MFBR) | 41000 / 41000 bps | Maximum flow bit rate ceiling |
| ARP | priorityLevel 2, preemptCap, preemptVuln false | Admission priority for the GBR flow |
| QFI (allocated by SMF) | 1 | QoS Flow Identifier for the voice flow |
| PDU Session ID | 5 (DNN "ims") | Session being modified to add the flow |
HyperText Transfer Protocol 2
Stream: HEADERS, Stream ID: 7
:method: POST
:path: /npcf-smpolicycontrol/v1/sm-policies/ims-5/update
content-type: application/json
Stream: DATA, Stream ID: 7
JavaScript Object Notation (application/json)
"pccRules": { "voice-9c1e": {
"flowInfos": "permit out 17 to 2001:db8:ca11::a1 49152",
"refQosData": "qos-voice" } }
"qosDecs": { "qos-voice": { "5qi": 1,
"gbrUl": "24400", "gbrDl": "24400",
"maxbrUl": "41000", "maxbrDl": "41000",
"arp": { "priorityLevel": 2 } } }
[Response] :status: 200 OK (SMF binds QFI 1 on PDU Session 5)✅ Debugging steps
- Confirm the PCC rule carries
5QI=1with sane GFBR/MFBR and ARP, and that the SMF accepts it (200 OK). - Verify the SMF allocates a QFI, binds it to PDU Session 5, and updates the UPF over N4.
⚠ Common causes of failure
- PCF/SMF mismatch on
5QI=1characteristics or missing GBR values, so no valid GBR flow is created. - SMF-to-UPF (N4) update failure, so the flow exists in policy but not in the user plane.
- Wrong PDU Session bound, attaching the voice rule to the wrong session.
The SMF's N1N2 message transfer reaches the AMF, which sends an NGAP PDU Session Resource Modify Request to the serving gNB over N2. The message carries, for PDU Session 5, a QoS Flow Add/Modify Request Item List containing the new voice flow: QFI 1, its 5QI=1 GBR characteristics, the GFBR/MFBR for uplink and downlink, and the ARP. This is the precise instruction that tells the RAN to build guaranteed-bit-rate resources for conversational voice. (If the cell cannot serve NR GBR voice, this same message is what triggers EPS Fallback instead.)
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Procedure | id-PDUSessionResourceModify | Modifies an existing PDU session at the RAN |
| AMF-UE-NGAP-ID / RAN-UE-NGAP-ID | 1 / 1 | N2 association for this UE |
| PDU Session ID | 5 | The IMS PDU session gaining a QoS flow |
| QoS Flow Add/Modify.QFI | 1 | Identifier of the new voice QoS flow |
| 5QI | 1 (GBR) | Conversational-voice characteristics |
| GFBR UL/DL | 24.4 / 24.4 kbps | Guaranteed flow bit rate to reserve |
| MFBR UL/DL | 41 / 41 kbps | Maximum flow bit rate the gNB may allow |
| ARP | priorityLevel 2, no pre-emption | Governs GBR admission control |
Stream Control Transmission Protocol
Payload protocol identifier: NGAP (60)
NG Application Protocol (NGAP)
NGAP-PDU: initiatingMessage (0)
procedureCode: id-PDUSessionResourceModify (26)
AMF-UE-NGAP-ID: 1
RAN-UE-NGAP-ID: 1
PDUSessionResourceModifyListModReq: 1 item
PDUSessionID: 5
qosFlowAddOrModifyRequestList: 1 item
qosFlowIdentifier: 1
fiveQI: 1
gBR-QosInformation: GFBR 24400/24400, MFBR 41000/41000
allocationAndRetentionPriority: priorityLevel 2✅ Debugging steps
- Confirm the AMF sends
PDUSessionResourceModifyRequestfor PDU Session 5 withQFI 1,5QI=1, and GFBR/MFBR/ARP intact. - Check the N2 association IDs (
AMF-UE-NGAP-ID/RAN-UE-NGAP-ID) resolve to the right UE at the serving gNB. - If EPS Fallback is expected, this is the message that would trigger it — verify which path the gNB takes.
⚠ Common causes of failure
- gNB cannot serve NR GBR voice and triggers EPS Fallback instead of admitting the flow.
- Stale/incorrect N2 UE association, so the modify targets the wrong context.
- Malformed GBR QoS information, so the gNB rejects the modification.
The gNB runs admission control for the GBR flow: it checks it can guarantee the GFBR under the ARP priority. On success it creates a dedicated Data Radio Bearer for the voice and installs a QoS-flow-to-DRB mapping so packets marked QFI 1 (5QI=1) traverse the new DRB rather than the default 5QI=5 DRB. It then sends an RRCReconfiguration on SRB1 adding the DRB with its PDCP, RLC, and logical-channel configuration and the SDAP mapping rule. Voice DRBs are typically configured with RLC-UM (unacknowledged mode, low latency) and often SPS / configured-grant scheduling to carry the small periodic AMR frames efficiently.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Message | RRCReconfiguration (DL-DCCH, SRB1) | Radio config for the new voice bearer |
| C-RNTI | 0x4602 | UE identity in the serving cell |
| drb-Identity | 2 (dedicated voice DRB) | New DRB alongside default DRB1 |
| sdap-Config.mappedQoS-FlowsToAdd | QFI 1 | Maps the 5QI=1 flow onto DRB2 |
| pdcp-Config | SN 12-bit, rlc-UM, ROHC optional | Low-latency PDCP for voice |
| rlc-Config | um-Bi-Directional | Unacknowledged mode suits real-time voice |
| logicalChannelConfig | priority 5, PBR, LCID 5 | Scheduler priority for the voice LCH |
| Mapped 5QI / GBR | 5QI=1, GFBR 24.4 kbps | DRB serves the guaranteed voice flow |
NR Radio Resource Control (RRC) protocol
DL-DCCH-Message
message: c1 (0)
c1: rrcReconfiguration (2)
rrc-TransactionIdentifier: 1
radioBearerConfig
drb-ToAddModList: 1 item
drb-Identity: 2
cnAssociation: sdap-Config
mappedQoS-FlowsToAdd: qfi 1
pdcp-Config: drb (pdcp-SN-SizeUL 12, rlc-UM)
rlc-BearerConfig: logicalChannelIdentity 5 (um-Bi)
masterCellGroup: [MAC/PHY for DRB2, SPS voice]✅ Debugging steps
- Confirm the gNB's GBR admission succeeds (enough radio resource to guarantee the GFBR at the given ARP).
- Verify the
RRCReconfigurationadds the voice DRB and the SDAPmappedQoS-FlowsToAdd: QFI 1mapping. - Check the DRB uses appropriate low-latency config (
rlc-UM, voice LCH priority, SPS/configured grant).
⚠ Common causes of failure
- GBR admission rejected under load or low ARP priority → no voice DRB, often falling back to EPS.
- Missing or wrong QFI-to-DRB SDAP mapping, so voice packets ride the default DRB with wrong QoS.
- DRB misconfiguration (e.g. RLC-AM for voice) causing latency/jitter once media starts.
The UE applies the new configuration — it instantiates the dedicated voice DRB (PDCP/RLC/MAC entities), installs the SDAP mapping so its own uplink QFI 1 packets go on DRB2, and readies the logical channel — then confirms with RRCReconfigurationComplete on SRB1. From this instant the radio side of the GBR bearer exists in both directions; the UE can send and receive AMR-WB RTP on DRB2 as soon as media starts. The gNB now reports success back to the core.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Message | RRCReconfigurationComplete (UL-DCCH) | Confirms the voice DRB is configured |
| rrc-TransactionIdentifier | 1 | Matches the RRCReconfiguration transaction |
| C-RNTI | 0x4602 | UE identity on the air interface |
| SRB used | SRB1 (LCID 1) | Signalling bearer carrying the complete msg |
| DRB2 state | established (voice) | Dedicated GBR bearer now active at UE |
| SDAP UL mapping | QFI 1 → DRB2 | UE uplink voice tagged to the GBR DRB |
| PDCP entity | created, SN 0 | Fresh PDCP for voice media |
| criticalExtensions | rrcReconfigurationComplete | Empty success body |
MAC-NR
Radio Network Temporary Identifier (RNTI): 0x4602 (C-RNTI)
LCID: 1 (SRB1)
NR Radio Resource Control (RRC) protocol
UL-DCCH-Message
message: c1 (0)
c1: rrcReconfigurationComplete (1)
rrcReconfigurationComplete
rrc-TransactionIdentifier: 1
criticalExtensions: rrcReconfigurationComplete (0)
rrcReconfigurationComplete
[DRB2 established: SDAP QFI 1 → DRB2, PDCP SN 0]✅ Debugging steps
- Confirm the UE returns
RRCReconfigurationCompletewith the matchingrrc-TransactionIdentifier. - Verify the UE actually instantiated DRB2 and its uplink SDAP mapping (QFI 1 → DRB2).
⚠ Common causes of failure
- UE unable to comply with the reconfiguration → RRC re-establishment, dropping the call setup.
- Transaction-ID mismatch, so the gNB never confirms the DRB and the modify times out.
The gNB confirms the modification to the AMF with an NGAP PDU Session Resource Modify Response. It lists the admitted QoS Flow (QFI 1) and, in the N2 SM information for PDU Session 5, the downlink NG-U tunnel endpoint (gNB IP + TEID) so the UPF/SMF can steer the voice packets to the right DRB. The AMF relays this to the SMF (Nsmf_PDUSession_UpdateSMContext), which finalises the N4 rules at the UPF. At this point the 5QI=1 GBR bearer is live end-to-end — radio, transport, and core all know about the voice flow.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Procedure | id-PDUSessionResourceModify (response) | Confirms the RAN modification result |
| AMF-UE-NGAP-ID / RAN-UE-NGAP-ID | 1 / 1 | Same N2 association |
| PDU Session ID | 5 | The modified IMS PDU session |
| qosFlowAddOrModifyResponseList.QFI | 1 | Voice flow successfully added |
| DL NG-U UP TNL Info | gNB 10.10.9.4, TEID 0x00B2D5E6 | Downlink N3 endpoint for voice packets |
| UL NG-U (unchanged) | UPF 10.10.5.8, TEID 0x00A1F3C4 | Uplink N3 endpoint at the UPF |
| Result | successfulOutcome | GBR bearer established end-to-end |
| N2 SM Information | PDU Session Resource Modify Response Transfer | Carried transparently to the SMF |
Stream Control Transmission Protocol
Payload protocol identifier: NGAP (60)
NG Application Protocol (NGAP)
NGAP-PDU: successfulOutcome (1)
procedureCode: id-PDUSessionResourceModify (26)
AMF-UE-NGAP-ID: 1
RAN-UE-NGAP-ID: 1
PDUSessionResourceModifyListModRes: 1 item
PDUSessionID: 5
qosFlowAddOrModifyResponseList: qosFlowIdentifier 1
DL-NGU-UP-TNL-Information: 10.10.9.4, TEID 0x00B2D5E6
[SMF finalises N4: UPF steers QFI 1 to DRB2]✅ Debugging steps
- Confirm the gNB returns a
successfulOutcomelistingQFI 1as admitted. - Verify the DL NG-U TNL (gNB IP + TEID) is present so the UPF can steer downlink voice to the new DRB.
- Check the SMF finalises the N4 rules so the user plane matches the admitted flow.
⚠ Common causes of failure
- Partial/unsuccessful outcome (flow not admitted), leaving the bearer half-built → one-way or no audio.
- Wrong or missing DL TEID, so downlink RTP is not delivered to the voice DRB.
- SMF/UPF N4 finalisation failing after RAN success, breaking the end-to-end path.
Phase C — Answer & Media (Steps 10–12)
With the GBR bearer live, the precondition is satisfied and the SIP dialog can complete. The UE signals that its resources are reserved with an UPDATE, the far end alerts and then answers, and the dialog is confirmed with ACK. Immediately, AMR-WB voice packets flow as RTP on the dedicated 5QI=1 GBR DRB while SIP continues to ride the 5QI=5 signalling flow for any in-call events.
Now that the dedicated voice bearer exists, the UE sends a SIP UPDATE carrying an SDP whose precondition attribute flips from unmet to met (a=curr:qos local sendrecv). This tells the far end that the originating side's media path is ready. The far end replies 200 OK for the UPDATE with its own current-status SDP. This precondition mechanism is exactly why the callee's phone has not rung yet — alerting is deliberately deferred until both sides confirm their bearers, so a call never rings without a media path.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| Request-Line | UPDATE sip:+13115550777@... | Mid-dialog SDP status update |
| CSeq | 3 UPDATE | New transaction in the dialog |
| SDP a=curr:qos | local sendrecv | Precondition now MET on originating side |
| SDP a=des:qos | mandatory local sendrecv | Desired status unchanged |
| Content-Type | application/sdp | UPDATE carries revised SDP status |
| Response | SIP/2.0 200 OK (UPDATE) | Far end acknowledges reservation |
| Carried on | 5QI=5 flow (QFI 9) | Still signalling, not media |
| To/From tags | ab77 / 9c1e | Same confirmed early dialog |
Session Initiation Protocol (UPDATE)
Request-Line: UPDATE sip:+13115550777@ims.mnc480.mcc311.3gppnetwork.org SIP/2.0
Via: SIP/2.0/UDP [2001:db8:ca11::a1]:5060;branch=z9hG4bKc4e1
Call-ID: 8f2a4b6c1d@2001:db8:ca11::a1
CSeq: 3 UPDATE
Content-Type: application/sdp
Session Description Protocol
Media Description: audio 49152 RTP/AVP 97
Media Attribute (a): curr:qos local sendrecv
Media Attribute (a): des:qos mandatory local sendrecv
[Reply: SIP/2.0 200 OK CSeq: 3 UPDATE (far-end qos met)]✅ Debugging steps
- Confirm the UPDATE only fires after the GBR DRB exists, and that
a=curr:qosflips tolocal sendrecv. - Verify a
200 OK (UPDATE)returns with the far end's precondition met, so alerting can proceed.
⚠ Common causes of failure
- UPDATE sent before the bearer is ready (or never sent), so preconditions never converge and the call never rings.
- Far-end precondition never met, stalling the dialog before 180 Ringing.
With both preconditions met, the terminating side finally alerts the user and sends 180 Ringing back to the originating UE, which plays ringback. When the callee answers, a 200 OK for the original INVITE is returned, confirming the session and the negotiated media. The originating UE completes the three-way INVITE handshake with an ACK. The SIP dialog is now fully established (confirmed dialog), and both endpoints are cleared to exchange media on the reserved GBR bearer.
| IE / Field | Example Value | Why it matters |
|---|---|---|
| 180 Ringing | SIP/2.0 180 Ringing (CSeq 1 INVITE) | Callee is being alerted; UE plays ringback |
| 200 OK (INVITE) | SIP/2.0 200 OK (CSeq 1 INVITE) | Callee answered; session confirmed |
| Contact | sip:+13115550777@[2001:db8:ca11::b2] | Far-end target URI for in-dialog requests |
| ACK | ACK sip:...@[2001:db8:ca11::b2] | Completes the INVITE transaction |
| CSeq (ACK) | 1 ACK | Matches the original INVITE CSeq |
| Dialog state | confirmed | Call is established end-to-end |
| Carried on | 5QI=5 flow (QFI 9) | Final signalling before media steady state |
| SDP in 200 OK | none (answer already exchanged) | Media fully negotiated earlier |
Session Initiation Protocol (200 OK)
Status-Line: SIP/2.0 200 OK
Via: SIP/2.0/UDP [2001:db8:ca11::a1]:5060;branch=z9hG4bK7a2f
From: sip:+13115550123@ims.mnc480.mcc311.3gppnetwork.org;tag=9c1e
To: sip:+13115550777@ims.mnc480.mcc311.3gppnetwork.org;tag=ab77
Call-ID: 8f2a4b6c1d@2001:db8:ca11::a1
CSeq: 1 INVITE
Contact: sip:+13115550777@2001:db8:ca11::b2
[Preceded by: SIP/2.0 180 Ringing at t=0.190]
[UE replies: ACK sip:...@2001:db8:ca11::b2 CSeq: 1 ACK]✅ Debugging steps
- Confirm
180 Ringingarrives only after preconditions are met, then a200 OK (INVITE)on answer. - Verify the UE sends
ACKwith a matching CSeq to move the dialog to confirmed.
⚠ Common causes of failure
- Premature 180 (no preconditions) → phone rings but there is no media path (dead air on answer).
- Lost ACK, so the far end keeps retransmitting 200 OK and may eventually tear the call down.
The call is up and media flows. AMR-WB voice frames are packetised into RTP, carried over UDP/IP, and — because the UE's SDAP maps QFI 1 to DRB2 — transmitted on the dedicated 5QI=1 GBR Data Radio Bearer in both directions. The gNB scheduler protects this bearer: the guaranteed flow bit rate and the tight packet delay budget of conversational voice are honoured even under cell load, and the small, regular 20 ms AMR frames are typically served with SPS / configured-grant allocations to cut PDCCH overhead. Meanwhile SIP keeps riding the 5QI=5 flow, ready for in-call events (re-INVITE for codec/hold changes, and finally BYE to release the call and tear down the 5QI=1 flow).
| IE / Field | Example Value | Why it matters |
|---|---|---|
| RTP payload type | 97 (dynamic, AMR-WB) | Matches the negotiated SDP rtpmap |
| RTP SSRC | 0x0A1B2C3D | Identifies this media stream |
| RTP timestamp increment | 320 per packet (20 ms @ 16 kHz) | AMR-WB frame period at 16 kHz clock |
| AMR-WB frame type / mode | FT=8 (23.85 kbps), octet-aligned | Wideband voice codec mode |
| Mapped QoS Flow | QFI 1 → DRB2 (5QI=1 GBR) | SDAP steers RTP onto the GBR DRB |
| Transport | RTP/UDP/IPv6, dst port 50004 | Media 5-tuple bound by the PCC rule |
| Scheduling | SPS / configured grant, 20 ms period | Efficient delivery of periodic voice frames |
| N3 tunnel | UL TEID 0x00A1F3C4 / DL TEID 0x00B2D5E6 | GTP-U transport of voice on N3 |
Internet Protocol Version 6
Source: 2001:db8:ca11::a1 Destination: 2001:db8:ca11::b2
Next header: UDP (17) Traffic Class: 0x2e (EF)
User Datagram Protocol
Source Port: 49152 Destination Port: 50004
Real-Time Transport Protocol
Payload type: DynamicRTP-Type-97 (AMR-WB)
Sequence number: 12841 Timestamp: 4106880
Synchronization Source (SSRC): 0x0A1B2C3D
Payload: AMR-WB octet-aligned, FT=8 (23.85 kbps), 1 frame
[Air-interface mapping: SDAP QFI 1 → DRB2, 5QI=1 GBR]✅ Debugging steps
- Confirm RTP flows in both directions with the negotiated payload type (97/AMR-WB) and matching 5-tuple.
- Verify packets ride DRB2 (QFI 1 → 5QI=1) — check DSCP/traffic class and the SDAP mapping, not the default DRB.
- For quality issues, inspect jitter/loss and whether SPS/configured-grant is active for the 20 ms frames.
⚠ Common causes of failure
- One-way audio from a missing DL TEID or an incomplete SDAP mapping on one side.
- RTP riding the default DRB (wrong QoS) → jitter/loss under load instead of guaranteed voice.
- NAT/firewall or 5-tuple mismatch dropping media even though signalling completed.
LTE ↔ NR: the VoLTE equivalent is structurally the same offer/answer + on-demand bearer, but the machinery differs. LTE has no SDAP and no QoS Flows: the P-CSCF authorizes media to the PCRF over Rx (Diameter), which installs a PCC rule on the PGW over Gx; the PGW/SGW then trigger a Dedicated Bearer (a QCI 1 GBR EPS bearer) rather than a 5QI=1 QoS flow mapped to a DRB. The radio result is analogous — a dedicated GBR bearer for AMR/AMR-WB — but 5G's split of QoS Flow (QFI) from DRB via SDAP is new, and 5G replaces LTE's per-bearer model with a per-flow model inside one PDU session. The SIP/SDP layer (INVITE, 183, PRACK, UPDATE, preconditions) is identical across both.
Summary
A VoNR call is best debugged by phase. If setup never gets past Phase A, the problem is in SIP/SDP: check the INVITE egresses on 5QI=5, the 183 carries a compatible SDP answer, and the PRACK closes reliably. If the codec is agreed but no dedicated bearer appears, the problem is in Phase B: walk P-CSCF→PCF (N5/Rx) → PCF→SMF PCC rule (N7) → AMF→gNB modify (N2) → gNB admission + RRCReconfiguration → modify response, and the first hop that fails is your cause. If the call rings but audio is bad or one-way, the problem is in Phase C or the mapping: confirm RTP rides DRB2 via SDAP QFI 1→5QI=1, and that both DL and UL N3 tunnels are set.
Two ideas tie it together. First, signalling (5QI=5) and media (5QI=1) are separate flows in the same PDU session — symptoms on one rarely touch the other, which localises faults fast. Second, the SIP precondition framework gates alerting on the bearer, so "rings then dead air" almost always means alerting fired before the GBR flow was truly up. Follow the trace INVITE→183→PCC→N2 modify→RRC→UPDATE→200/ACK→RTP and the broken step names the owner of the fix.
Q. What exactly triggers creation of the dedicated 5QI=1 GBR flow, and when?
A. The SDP answer in the 183 Session Progress fixes the media QoS. That lets the P-CSCF (as AF) authorize the media to the PCF, which installs a 5QI=1 PCC rule on the SMF; the SMF drives a PDU Session Modification down through the AMF (N2) to the gNB. It is deliberately mid-dialog — after the codec is known but before the phone rings.
Q. Why does the callee's phone not ring until after the UPDATE?
A. Because of SIP preconditions. The offer/answer mark QoS as mandatory-and-unmet, so alerting is blocked until both sides confirm their bearers. The UE sends UPDATE with a=curr:qos local sendrecv only once the GBR DRB exists; only then does 180 Ringing come back. This prevents a call ringing with no media path.
Q. How does a voice packet end up on the right radio bearer?
A. SDAP maps QFI 1 (the 5QI=1 flow) to the dedicated voice DRB (DRB2) installed by RRCReconfiguration. Uplink, the UE's SDAP tags RTP to DRB2; downlink, the UPF steers packets to the gNB DL TEID and the gNB places them on DRB2. If that mapping is missing, voice rides the default 5QI=5 DRB with the wrong QoS.
Q. What happens at Step 6 if the cell cannot serve NR voice?
A. The same NGAP PDU Session Resource Modify Request that would add the 5QI=1 flow is the trigger point for EPS Fallback: the gNB, unable to admit NR GBR voice, moves the UE to LTE (via redirection or inter-RAT handover) to carry the call as VoLTE instead.
Preparing for a 4G/5G technical interview?
Mastering end-to-end call flows message-by-message is the baseline interviewers expect for tier-1 network testing and design roles. Get live feedback on how you hold up under real questions.
Book a Mock Interview ₹199 →Related call flows & topics
Follow VoNR into the options, the signalling, and the QoS machinery it depends on.