Telephony & Wireless

IMS, VoLTE & VoWiFi

IMS (IP Multimedia Subsystem) is the SIP-based core that turns a phone call into an IP session, whether the phone is on LTE (VoLTE), 5G NR (VoNR) or Wi-Fi (VoWiFi). This page walks through the network nodes, registration, the SIP call ladder, QoS bearers, handovers, emergency calls and the debugging patterns interviewers love to probe.

~105 min read 0 interview questions
In 30 seconds
  • IMS separates access (LTE, NR, Wi-Fi), transport (EPC or 5GC) and service control (the SIP core), so one voice service works over every access.
  • The UE talks SIP only to the P-CSCF; the S-CSCF holds registration state and runs service triggers (iFC); the HSS/UDM holds identities and keys; the TAS runs supplementary services.
  • Registration: IMS APN up, P-CSCF from PCO, REGISTER, 401 with an IMS-AKA challenge, IPsec SA set up, protected REGISTER, 200 OK, then SUBSCRIBE to the reg event.
  • Call: INVITE (SDP offer), 100, 183 (SDP answer), PRACK, bearer reservation, UPDATE, 180, 200, ACK, RTP on a QCI 1 / 5QI 1 GBR bearer. SIP rides QCI 5.
  • SRVCC drops an active IMS call to 2G/3G circuit-switched; VoWiFi handover stays on IMS and works because the P-GW keeps the same IP address.
  • Do not invert the IMS QCIs: QCI 1 is conversational voice (GBR); QCI 5 is IMS signalling on the default bearer. Deployed roaming is usually S8HR (home-routed), not local breakout.

The big picture: why IMS exists

Before 4G, voice ran on the circuit-switched (CS) domain: the network reserved a dedicated circuit (a timeslot) end to end for the whole call. LTE has no CS domain at all; it is an all-IP packet network. So operators needed a way to carry voice as IP packets while keeping carrier-grade features: guaranteed quality, supplementary services (call forwarding, hold, conference), emergency calls, lawful intercept, charging and roaming. IMS is that system.

IMS is a standardised (3GPP) architecture built on SIP (Session Initiation Protocol) for signaling, SDP (Session Description Protocol) to negotiate media, and RTP/RTCP to carry the actual voice and video. Its key design choice is layering:

Access layer

How the phone physically connects: LTE (eNB), 5G NR (gNB), Wi-Fi (via ePDG or N3IWF), even fixed broadband.

Transport / bearer layer

The packet core (EPC or 5GC) that gives the phone an IP address on the IMS APN and provides QoS bearers (QCI 5 for SIP, QCI 1 for voice).

Service control layer

The IMS core itself: CSCFs, HSS, application servers. It does not care which access you came in on.

Because service control is independent of access, the same IMS core delivers:

  • VoLTE (Voice over LTE): IMS voice over LTE radio with a QCI 1 dedicated bearer.
  • VoNR (Voice over New Radio): the same SIP flow over 5G SA with a 5QI 1 QoS flow. See 5G NR for EPS fallback and the 5G core.
  • VoWiFi (Wi-Fi Calling, WFC): the same SIP flow tunnelled over any Wi-Fi through an IPsec tunnel to the ePDG.
  • ViLTE (video over LTE), RCS (rich messaging), SMS over IP, and IMS emergency calls.
Analogy: a hotel concierge desk

Think of IMS as a hotel's concierge service. Guests can arrive by car, taxi or on foot (the access: LTE, NR, Wi-Fi), they walk through the lobby doors (the packet core giving them an IP address), and then they always deal with the same concierge desk (the IMS core) for restaurant bookings, wake-up calls and message forwarding (voice, video, supplementary services). The front-desk clerk you speak to is the P-CSCF, the manager who knows your booking and preferences is the S-CSCF, the guest register in the back office is the HSS, and the specialist teams (restaurant, spa) are the application servers. How you arrived at the hotel does not change how the concierge serves you.

          ACCESS                TRANSPORT (bearers)              SERVICE CONTROL
   ┌──────────────────┐   ┌──────────────────────────┐   ┌──────────────────────────┐
   │ LTE eNB          │──►│ EPC: MME, S-GW, P-GW     │──►│                          │
   │ NR gNB           │──►│ 5GC: AMF, SMF, UPF       │──►│ IMS core: P/I/S-CSCF,    │
   │ Wi-Fi (untrusted)│──►│ ePDG / N3IWF ──► P-GW/UPF│──►│ HSS/UDM, TAS, MRF, BGCF, │
   └──────────────────┘   └──────────────────────────┘   │ MGCF, IBCF, E-CSCF       │
                           PCRF / PCF (QoS policy) ◄─────┤                          │
                                                          └──────────────────────────┘
   SIP signaling: UE ◄═══► P-CSCF (on QCI 5 / 5QI 5)
   RTP media:     UE ◄═══► far end (on QCI 1 / 5QI 1, guaranteed bit rate)

Circuit-switched voice (2G/3G)

  • Dedicated circuit for the whole call
  • Control in the MSC
  • Services in the MSC/IN platform
  • Voice codec over a fixed-rate channel
  • Only works on 2G/3G radio

IMS voice (VoLTE/VoNR/VoWiFi)

  • RTP packets on a QoS bearer
  • Control in SIP servers (CSCFs)
  • Services in application servers (TAS)
  • HD codecs (AMR-WB, EVS), faster call setup
  • Works over any IP access
Interview angle A strong opening line is: "IMS separates signaling from media. SIP goes through the CSCFs on a QCI 5 bearer, RTP media goes on a dedicated QCI 1 GBR bearer, the P-CSCF is the UE's only SIP peer, and the S-CSCF holds registration state and triggers services." Interviewers then usually pick one of those words and drill down, so be ready for each.

IMS core architecture and network entities

The IMS core is a set of functions, each with a narrow job. In real deployments several functions are often combined in one product (for example, P-CSCF inside an SBC, or I-CSCF and S-CSCF on the same platform), but interviewers expect you to know the logical roles.

The three CSCFs (Call Session Control Functions)

NodeRoleKey facts
P-CSCF (Proxy)First and only SIP contact point for the UE.Terminates the IPsec SAs with the UE (or TLS); asserts the user identity (P-Asserted-Identity); talks to the PCRF/PCF over Rx/N5 to request the voice bearer; detects emergency calls; in the usual S8HR roaming model it stays in the home network (it sits in the visited network only for local-breakout roaming); usually co-located with an SBC. SigComp is defined but rarely used for VoLTE.
I-CSCF (Interrogating)Entry point into the home network.Found via DNS for the home domain; queries the HSS over Cx (UAR/UAA at registration, LIR/LIA for terminating calls) to find or assign the S-CSCF; can hide topology.
S-CSCF (Serving)The brain: registrar and session controller.Authenticates the user (MAR/MAA to fetch AKA vectors), downloads the user profile (SAR/SAA), stores registration bindings, evaluates iFC (initial Filter Criteria) to route requests to application servers over ISC, does routing and number translation (ENUM).

Databases, application servers and media

NodeRole
HSS (Home Subscriber Server) / UDM+UDR in 5GMaster subscriber database: IMPI/IMPU identities, AKA authentication vectors, service profile with iFC, S-CSCF assignment, SRVCC data (STN-SR, C-MSISDN). Interfaces: Cx to CSCFs, Sh to application servers. With several HSSs, an SLF (Subscription Locator Function) tells CSCFs which HSS to use (Dx/Dh).
TAS (Telephony Application Server, also MMTel AS)Runs MMTel supplementary services: forwarding, barring, waiting, hold, conference, CLIP/CLIR, ECT. Invoked by the S-CSCF via iFC over ISC. Serves the Ut (XCAP) interface for user settings.
SCC-AS (Service Centralization and Continuity AS)Anchors sessions so the access leg can be swapped (SRVCC, PS/CS access transfer, terminating access domain selection). Often co-located with the TAS.
MRF (MRFC + MRFP)Media Resource Function: plays announcements and tones, mixes conference audio, can transcode. MRFC is the control part, MRFP handles the media.
BGCF (Breakout Gateway Control Function)Decides where to break out to the PSTN/CS network: a local MGCF or another operator's network.
MGCF + IMS-MGWInterworking with PSTN/CS. MGCF converts SIP to ISUP/BICC signaling; it controls the IMS-MGW (H.248) which converts RTP to TDM (or other codecs).
IBCF + TrGWInterconnection Border Control Function: the border towards other IMS networks (interconnect and roaming). Topology hiding, header screening, IPv4/IPv6 interworking. TrGW is its media-plane partner.
SBC (Session Border Controller)A product, not a 3GPP function: security, DoS protection, NAT traversal, topology hiding, media anchoring. Typically implements the P-CSCF at the access edge and the IBCF at the interconnect edge.
E-CSCF and LRFEmergency CSCF routes emergency sessions to the right PSAP; the Location Retrieval Function supplies location and routing information.
ATCF / ATGWAccess Transfer Control Function and Gateway (for eSRVCC): anchor signaling and media close to the UE, in the serving network, so an SRVCC transfer is quick.

Policy and non-3GPP access nodes

NodeRole
PCRF (LTE) / PCF (5G)Policy and Charging Rules Function. Receives session information from the P-CSCF (Rx in LTE, N5 or Rx in 5G) and pushes PCC rules to the gateway (Gx to the P-GW/PCEF, N7 to the SMF) so a dedicated voice bearer or QoS flow is created.
P-GW (PCEF) / SMF + UPFGateway that owns the IMS PDN connection and the UE's IMS IP address; enforces QoS; acts as the mobility anchor between LTE and Wi-Fi.
ePDG (Evolved Packet Data Gateway)Terminates the UE's IKEv2/IPsec tunnel over untrusted Wi-Fi (SWu), authenticates the UE with EAP-AKA via the 3GPP AAA server, and connects to the P-GW over S2b.
N3IWF (Non-3GPP Interworking Function)The 5G equivalent of the ePDG: terminates IPsec from the UE over untrusted non-3GPP access and connects to the AMF (N2) and UPF (N3).
3GPP AAA serverAuthenticates non-3GPP access (EAP-AKA/AKA') against the HSS (SWx) and authorises the ePDG (SWm).

End-to-end picture

                                   HOME / SERVING IMS NETWORK
  UE ══SIP (IPsec, Gm)══► P-CSCF/SBC ──Mw──► I-CSCF ──Mw──► S-CSCF ══ISC══► TAS / SCC-AS
   │                        │                  │               │               │
   │                        │                  └─────Cx──────► HSS ◄────Sh─────┘
   │                        │                                  ▲
   │                        └──Rx / N5──► PCRF / PCF ──Gx/N7──► P-GW / SMF+UPF
   │                                                          (installs QCI 1 bearer)
   │                                        S-CSCF ──Mi──► BGCF ──Mj──► MGCF ──► PSTN
   │                                        S-CSCF ──Mx──► IBCF ──► other operator IMS
   │                                        S-CSCF ──Mr──► MRF (announcements, conference)
   └── RTP media on dedicated bearer ── eNB/gNB ── S-GW ── P-GW/UPF ── far end

Reference points you should recognise

InterfaceBetweenProtocol and purpose
GmUE and P-CSCFSIP; registration and session control
MwCSCF and CSCFSIP inside the IMS core
ISCS-CSCF and application serverSIP; service invocation via iFC
CxI/S-CSCF and HSSDiameter: UAR, MAR, SAR, LIR, PPR, RTR
ShAS and HSSDiameter: user data for services
Rx / N5P-CSCF and PCRF / PCFDiameter (Rx) or HTTP/2 SBI (N5): media description for QoS
Gx / N7PCRF and P-GW / PCF and SMFPCC rules that create dedicated bearers / QoS flows
UtUE and TAS (XCAP server)HTTP/XCAP: supplementary service settings
Mi / Mj / MgS-CSCF to BGCF / BGCF to MGCF / MGCF to CSCFSIP towards PSTN breakout
SvMME and MSC serverGTPv2: SRVCC PS-to-CS handover
SWu / S2bUE and ePDG / ePDG and P-GWIKEv2/IPsec / GTPv2 (or PMIPv6): VoWiFi access

IMS identities

  • IMPI (IP Multimedia Private Identity): one per subscription, used only for authentication, in NAI form such as imsi@ims.mnc001.mcc001.3gppnetwork.org. Never used to route calls.
  • IMPU (IP Multimedia Public Identity): one or more SIP or tel URIs others use to reach you, for example sip:+15551234567@ims.example.com and tel:+15551234567. IMPUs grouped in an implicit registration set are all registered together.
  • ISIM: the SIM application holding IMPI, IMPU and the home domain (EF_IMPI, EF_IMPU, EF_DOMAIN). Without an ISIM, the UE derives temporary identities from the IMSI on the USIM.
  • GRUU (Globally Routable User agent URI): identifies one specific device instance when several devices share an IMPU. +sip.instance (often built from the IMEI) is the stable device identifier.
  • P-Associated-URI: returned in the 200 OK to REGISTER; lists the IMPUs the network has registered for you.
Analogy: an office building's mail room

The P-CSCF is the security desk at the front door: every visitor must pass it, it checks badges and stamps them. The I-CSCF is the reception directory that looks up which floor your department is on. The S-CSCF is your department manager who knows your preferences and decides which specialist team (application server) handles each request. The HSS is the HR records office that holds everyone's ID and permissions. The BGCF and MGCF are the shipping desk that hands parcels to an outside courier (the PSTN). In the real system, SIP messages flow through the P-CSCF, the I-CSCF finds the right S-CSCF using the HSS, and the S-CSCF triggers the TAS for services.

Tip Remember the Cx commands as a story: UAR (I-CSCF: "who serves this user?"), MAR (S-CSCF: "give me auth vectors"), SAR (S-CSCF: "I am serving this user, give me the profile"), LIR (I-CSCF on a terminating call: "where is this user registered?").
Interview angle Expect "What does each CSCF do?" followed by "Why does the P-CSCF talk to the PCRF?" (to get the GBR bearer), "What is iFC?" (trigger rules in the user profile) and "What is the difference between an SBC and a P-CSCF?" (a product versus a logical function). Senior candidates mention the ATCF for eSRVCC and the IBCF for roaming/interconnect.

IMS connectivity: APN, PDN and bearers

Before any SIP can be sent, the UE needs an IP address on a network that can reach the P-CSCF. That is the IMS APN (Access Point Name), a separate packet data connection with the well-known name ims. In LTE it is an IMS PDN connection; in 5G it is an IMS PDU session towards the IMS DNN.

Why a separate APN?

  • Isolation: IMS traffic is never mixed with internet traffic, so it can be given its own QoS, security policy and firewall rules.
  • Reachability: the P-CSCF is only reachable from the IMS APN (a private operator network), which protects the core.
  • Independence from data settings: VoLTE keeps working when the user turns off mobile data or runs out of data allowance, because the IMS APN is not the internet APN.
  • Charging: voice is charged by the IMS core, not as data volume.
  • IMS APNs are usually IPv6 (or IPv4v6), which avoids NAT problems for SIP and RTP.

Bearers on the IMS APN

BearerLTE (QCI)5G (5QI)TypeCarriesWhen created
Default bearer of IMS APN55Non-GBRSIP signalingAt IMS PDN setup, stays up while registered
Dedicated voice bearer11GBRRTP/RTCP voiceDuring call setup, triggered by the P-CSCF via PCRF/PCF
Dedicated video bearer2 (some operators use 7 or 8, non-GBR)2GBRRTP video for ViLTEWhen a video call is set up or upgraded
  1. Attach / registration to the packet core The UE attaches to LTE (or registers with the 5GC). Many operators make the IMS APN the initial attach APN, or the UE opens it right after attach.
  2. IMS PDN connectivity request The UE requests a PDN connection to APN ims and includes a PCO (Protocol Configuration Options) request for the P-CSCF address (IPv6 and/or IPv4).
  3. Default bearer with QCI 5 The network activates the default bearer and returns the UE's IP address and, in the PCO, the list of P-CSCF addresses.
  4. Voice support indication In the attach or TAU accept, the network signals "IMS voice over PS session supported" (IMS VoPS). If this bit is not set, the UE must not use VoLTE in that cell and will use CSFB or other domains instead.
Analogy: a staff-only corridor with a priority lane

The IMS APN is like a staff-only corridor in a stadium: ordinary fans (internet traffic) cannot enter, and the only door at the end is the concierge desk (P-CSCF). Inside the corridor there is a normal walkway for messages (QCI 5, signaling) and, when a call starts, a roped-off express lane is opened just for the voice packets (QCI 1, guaranteed bit rate). In the real network, the default bearer is the walkway, and the dedicated GBR bearer is the express lane created per call by the PCRF.

Common pitfall Saying "the IMS signaling uses a dedicated bearer with QCI 5." In the usual deployment QCI 5 is the default bearer of the IMS APN; only voice (QCI 1) and video (QCI 2) use dedicated bearers.
Interview angle "Why can VoLTE work when mobile data is off?" and "What happens if the IMS APN goes down mid-call?" are common. For the second: the QCI 1 bearer is released with the PDN, RTP stops, the IMS stack ends the call (for example, with a media-path-lost reason) and re-establishes the PDN and registration; SRVCC is not triggered by a PDN loss.

IMS registration and authentication

Voice cannot work until the UE is registered with the IMS core. Registration binds the UE's current IP address (its Contact) to its public identities, authenticates it, and sets up the IPsec protection used for every later SIP message. It is also the procedure that fails most often in the field.

Step by step

  1. IMS PDN up The UE has an IP address on the IMS APN and a default QCI 5 bearer.
  2. P-CSCF discovery The P-CSCF address comes from the PCO in the PDN (or PDU session) response. Alternatives: DHCPv6/DHCP with DNS lookup, or static configuration. Over VoWiFi it comes in the IKEv2 configuration payload.
  3. Initial REGISTER (unprotected) Sent to the P-CSCF with the IMPI (in the Authorization header), the IMPU (in From/To), the Contact with feature tags (for example, MMTel ICSI, +g.3gpp.smsip, video), Expires, and a Security-Client header offering IPsec algorithms and SPIs/ports.
  4. Routing to the S-CSCF The P-CSCF adds Path and P-Visited-Network-ID and forwards to the I-CSCF (found by DNS for the home domain). The I-CSCF sends a Diameter UAR to the HSS and learns which S-CSCF to use (or the capabilities needed to choose one).
  5. Authentication challenge The S-CSCF sends MAR to the HSS and receives an authentication vector: RAND, AUTN, XRES, CK, IK. It answers 401 Unauthorized with WWW-Authenticate: Digest algorithm=AKAv1-MD5, nonce=base64(RAND+AUTN). It also passes CK and IK to the P-CSCF, which removes them before forwarding the 401 to the UE.
  6. ISIM runs AKA The ISIM (or USIM) checks AUTN (this authenticates the network and checks the sequence number SQN), computes RES, and derives CK and IK.
  7. IPsec SA setup The UE and P-CSCF now both hold CK and IK, so they set up a pair of IPsec ESP security associations (protected client and server ports) as agreed in Security-Client/Security-Server.
  8. Second REGISTER (protected) Sent over the new IPsec SA, with the digest response computed using RES, and a Security-Verify header echoing the server's offer (protection against downgrade attacks).
  9. 200 OK The S-CSCF compares RES with XRES, sends SAR to the HSS to download the user profile (including iFC), and returns 200 OK with Service-Route, P-Associated-URI, the granted Expires and (optionally) GRUUs.
  10. Third-party registration The S-CSCF evaluates iFC and sends a REGISTER on the user's behalf to application servers such as the TAS, so they know the user is online.
  11. Reg-event subscription The UE sends SUBSCRIBE (Event: reg) and gets a NOTIFY with its registration state. The P-CSCF also subscribes. Later NOTIFYs report network-initiated de-registration or re-authentication requests.
  12. Re-registration Before the registration expires, the UE re-registers (typically at half the expiry for short timers, or 600 seconds before expiry for long ones). A new AKA challenge may be issued, creating new SAs.
  UE (ISIM)          P-CSCF             I-CSCF          HSS            S-CSCF         TAS
     │                  │                  │              │                │             │
     │ REGISTER ───────►│ (Security-Client)│              │                │             │
     │                  │ REGISTER ───────►│ UAR ────────►│                │             │
     │                  │                  │◄──────── UAA │                │             │
     │                  │                  │ REGISTER ─────────────────────►│             │
     │                  │                  │              │◄────── MAR ────│             │
     │                  │                  │              │ MAA (RAND,AUTN,XRES,CK,IK) ─►│
     │                  │◄──────────── 401 Unauthorized (nonce, CK, IK) ───│             │
     │◄─ 401 (nonce) ───│ (P-CSCF keeps CK/IK, adds Security-Server)       │             │
     │ AKA: verify AUTN, compute RES, derive CK/IK                         │             │
     │═══ IPsec SAs established between UE and P-CSCF ═══                  │             │
     │ REGISTER (RES) ─►│ (over IPsec, Security-Verify)                    │             │
     │                  │ REGISTER ───────►│ UAR/UAA ────►│                │             │
     │                  │                  │ REGISTER ─────────────────────►│             │
     │                  │                  │              │◄────── SAR ────│             │
     │                  │                  │              │ SAA (profile, iFC) ─────────►│
     │◄──────────────── 200 OK (Service-Route, P-Associated-URI, Expires) ─│             │
     │                  │                  │              │                │ REGISTER ──►│
     │                  │                  │              │                │◄──── 200 ───│
     │ SUBSCRIBE (reg) ────────────────────────────────────────────────────►│             │
     │◄──────────────── 200 OK, then NOTIFY (reg state: active) ───────────│             │

IMS-AKA in more detail

  • Mutual authentication: AUTN proves the network knows the shared key K (the UE authenticates the network), and RES proves the UE knows K (the network authenticates the UE).
  • Sequence number protection: AUTN contains SQN. If the SIM finds SQN out of range, it returns a synchronisation failure with an auts parameter in the next REGISTER; the S-CSCF passes AUTS to the HSS, which resynchronises and issues a fresh challenge.
  • MAC failure: if AUTN does not verify, the UE sends a REGISTER with an empty response (or stops), meaning it does not trust the network. Often caused by a wrong key/profile on the SIM or HSS.
  • Keys: CK (cipher key) and IK (integrity key) are used for the IPsec SAs. Integrity protection is mandatory; encryption on Gm is optional and operator-configured.
  • Without ISIM: the UE uses the USIM and derives the IMPI/IMPU from the IMSI. Some operators use SIP Digest or GIBA (early IMS) instead of AKA, but VoLTE (GSMA IR.92) requires IMS-AKA with IPsec.

De-registration and network events

  • UE-initiated de-registration: REGISTER with Expires: 0 (for example, on airplane mode or power off).
  • Network-initiated: NOTIFY on the reg event with state terminated and an event such as deactivated (re-register now) or rejected (do not retry).
  • Registration timers: the UE requests a long expiry (VoLTE profiles often request 600000 seconds) and the network grants a shorter one, commonly 3600 seconds.
  • P-CSCF failure: if the P-CSCF stops responding, the UE tries the next P-CSCF address from the PCO list and performs a fresh initial registration.

Common registration failures

SymptomLikely causeWhat to check
No REGISTER sent at allIMS PDN not up, no P-CSCF in PCO, VoLTE disabled or not provisioned in carrier config, IMS VoPS not indicatedPDN setup and PCO in NAS logs; carrier config VoLTE flags; attach accept feature bits
REGISTER times out (no response)Wrong P-CSCF, routing/firewall issue, MTU/fragmentation of large UDP SIP messages, IPsec SA mismatchSIP trace on the device, IP routes, whether UDP-to-TCP switch happens for large messages
401 loop (challenge repeats)RES rejected: wrong key, IMPI mismatch, SQN sync issueAKA result in modem logs, auts presence, identities used
403 ForbiddenSubscriber not provisioned for IMS/VoLTE, IMPU barred, roaming not allowedOperator provisioning (HSS profile), identity values, roaming agreements
494 Security Agreement RequiredUE did not include Security-Client, or algorithms mismatchSecurity-Client/Server headers, supported IPsec algorithms
503 Service Unavailable with Retry-AfterCore overload or maintenanceRetry-After honoured; try alternate P-CSCF
VoLTE icon shown but calls go CSRegistration silently expired, or the framework thinks IMS is not in serviceActual IMS state in logs, re-REGISTER timing, reg-event NOTIFY
Analogy: checking into a secure office building

You arrive at the security desk and state your name (initial REGISTER). The guard phones HR, which sends back a secret question that only your real badge chip can answer, plus a key pair for a locker (401 with the AKA challenge; CK/IK go to the P-CSCF). Your badge chip answers the question and also produces the same locker keys (ISIM computes RES, CK, IK). You and the guard now talk only through that locked box (the IPsec SA), you give your answer through it (protected REGISTER), and the guard lets you in and adds your name to the building directory (200 OK and registration binding). Finally you subscribe to building announcements so you hear if your badge is cancelled (reg event).

Common pitfall Saying the IPsec SA is created after the 200 OK. It is created after the 401, because that is when both ends know CK and IK; the second REGISTER is already sent over the SA.
Interview angle Interviewers often ask you to draw registration, then ask "where do CK and IK go?", "what if SQN is out of sync?", "what is third-party registration?" and "why subscribe to the reg event?". For debugging, the classic is "registration fails with 403, is it the modem?". A healthy modem plus a SIP 403 points to provisioning or the operator side, not the radio.

VoLTE and VoNR call setup: the SIP ladder

"Walk me through a VoLTE call" is the single most asked IMS question. The SIP flow is the same for VoNR and VoWiFi; only the radio and the QoS mechanism change. The key idea is preconditions: the network reserves the voice bearer on both sides before the callee's phone rings.

Mobile-originated (MO) call, end to end

  UE-A          P-CSCF-A     S-CSCF-A / TAS      S-CSCF-B / TAS     P-CSCF-B        UE-B
   │               │               │                    │                 │              │
 1 │─INVITE (SDP offer: AMR-WB/EVS, precondition curr=none, des=mandatory)─►              │
   │               │──INVITE──────►│ (iFC: TAS orig)    │                 │              │
 2 │◄─100 Trying───│               │──INVITE───────────►│ (via I-CSCF/LIR)│              │
   │               │               │                    │──INVITE────────►│──INVITE─────►│
   │               │               │                    │                 │  (paging if idle)
 3 │◄───────────── 183 Session Progress (SDP answer: one codec, Require: 100rel) ────────│
   │   P-CSCF-A and P-CSCF-B send Rx AAR ──► PCRF ──► P-GW: create QCI 1 bearer each side
 4 │─PRACK────────────────────────────────────────────────────────────────────────────►│
 5 │◄──────────────────────────────────────────────────────────────── 200 OK (PRACK) ──│
   │   == QCI 1 dedicated bearer active on A side ==      == on B side ==              │
 6 │─UPDATE (SDP: local precondition met, curr=sendrecv) ─────────────────────────────►│
 7 │◄──────────────────────────────────────────────────────────────── 200 OK (UPDATE) ─│
   │                                   (both sides' resources ready: UE-B now alerts)   │
 8 │◄──────────────────────────────────────────────────────────────── 180 Ringing ─────│
 9 │◄──────────────────────────────────────────────────────────────── 200 OK (INVITE) ─│
10 │─ACK──────────────────────────────────────────────────────────────────────────────►│
   │═════════════════ RTP/RTCP voice on QCI 1 (both directions) ════════════════════════│
11 │─BYE──────────────────────────────────────────────────────────────────────────────►│
12 │◄──────────────────────────────────────────────────────────────── 200 OK (BYE) ────│
   │   P-CSCFs send Rx STR ──► PCRF ──► dedicated bearers released                      │
  1. INVITE with SDP offer UE-A lists its codecs (EVS, AMR-WB, AMR-NB, telephone-event for DTMF), its IP address and RTP port, bandwidth, and precondition attributes saying "local QoS is not yet reserved but is mandatory". It carries Supported: 100rel, precondition and the MMTel feature tag.
  2. 100 Trying Hop-by-hop: the P-CSCF tells the UE it received the INVITE, so the UE stops retransmitting. It is not end to end.
  3. Routing S-CSCF-A runs originating iFC (the TAS applies outgoing barring, CLIR and so on), then finds the terminating network. In the home network of UE-B, the I-CSCF sends LIR to the HSS to find S-CSCF-B, which runs terminating iFC (the TAS applies forwarding and call waiting) and forwards via P-CSCF-B to UE-B. If UE-B is idle, the MME pages it first.
  4. 183 Session Progress with SDP answer UE-B picks one codec and returns its own media address. The 183 must be sent reliably (Require: 100rel, with an RSeq number). When each P-CSCF sees the offer/answer, it sends the media details over Rx to the PCRF, which asks the P-GW to create a QCI 1 dedicated bearer for that UE.
  5. PRACK and 200 OK UE-A acknowledges the reliable 183 with PRACK (carrying RAck). Without PRACK the 183 would be retransmitted.
  6. UPDATE When UE-A's bearer is up, it sends UPDATE with SDP saying its local precondition is now met. UE-B replies 200 OK.
  7. 180 Ringing Once both sides have resources, UE-B alerts the user and sends 180. UE-A plays local ringback (or network early media if authorised).
  8. 200 OK and ACK The callee answers; UE-A confirms with ACK, which completes the three-way handshake of the INVITE transaction. RTP flows.
  9. BYE Either side hangs up with BYE; 200 OK confirms. The P-CSCFs end the Rx sessions and the dedicated bearers are released.

Why preconditions matter

Without preconditions, the callee's phone could ring and be answered before the network has granted the voice bearer. The user would pick up and hear silence, or the bearer request could fail after answer. The 183, PRACK and UPDATE sequence (RFC 3312 preconditions, RFC 3262 reliable provisional responses, RFC 3311 UPDATE) guarantees "no ringing until media can flow". If resources cannot be reserved, the call fails with 580 Precondition Failure instead of ringing and then going silent.

a=curr:qos local none          current status: local QoS not reserved yet
a=curr:qos remote none         remote QoS not reserved yet
a=des:qos mandatory local sendrecv    desired: local QoS is mandatory, both directions
a=des:qos mandatory remote sendrecv   desired: remote QoS is mandatory
a=conf:qos remote sendrecv     ask the peer to confirm when its QoS is ready
Note Some networks run VoLTE without preconditions (for example, some VoWiFi or IMS-to-IMS interconnects). The flow then shortens to INVITE, 100, 180, 200, ACK, and the bearer is set up in parallel. You should know both, and say which one your example uses.

Mobile-terminated (MT) call: what differs

  • The network first pages an idle UE on the default bearer path (the INVITE arrives at the P-GW and triggers downlink data notification), then delivers the INVITE.
  • The UE sends 100 Trying (optional from a UA), then 183 with the SDP answer, and handles the incoming PRACK and UPDATE.
  • Only when resources are ready does it alert the user and send 180 Ringing, then 200 OK when the user answers, and receives ACK.
  • On the terminating side the S-CSCF runs terminating iFC, so forwarding (CFU, CFB, CFNRy) and call waiting happen before or during delivery.

A sample INVITE (trimmed)

INVITE tel:+15557654321 SIP/2.0
Via: SIP/2.0/UDP [2001:db8::10]:5064;branch=z9hG4bK-123;rport
Max-Forwards: 70
Route: <sip:[2001:db8::1]:5066;lr>, <sip:scscf.ims.example.com;lr>
From: <sip:+15551234567@ims.example.com>;tag=a1b2
To: <tel:+15557654321>
Call-ID: 8f3c21d7@2001:db8::10
CSeq: 1 INVITE
Contact: <sip:[2001:db8::10]:5064>;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
P-Preferred-Identity: <sip:+15551234567@ims.example.com>
P-Access-Network-Info: 3GPP-E-UTRAN-FDD; utran-cell-id-3gpp=00101ABCD1234567
Accept-Contact: *;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
Supported: 100rel, precondition, timer
Require: sec-agree
Proxy-Require: sec-agree
Security-Verify: ipsec-3gpp; alg=hmac-sha-1-96; spi-c=1111; spi-s=2222; port-c=5064; port-s=5066
Session-Expires: 1800
Content-Type: application/sdp

v=0
o=- 1 1 IN IP6 2001:db8::10
s=-
c=IN IP6 2001:db8::10
t=0 0
m=audio 40000 RTP/AVP 116 107 97 118
b=AS:49
a=rtpmap:116 EVS/16000
a=fmtp:116 br=5.9-24.4; bw=nb-swb
a=rtpmap:107 AMR-WB/16000
a=fmtp:107 mode-change-capability=2; max-red=0
a=rtpmap:97 AMR/8000
a=rtpmap:118 telephone-event/16000
a=ptime:20
a=maxptime:240
a=sendrecv
a=curr:qos local none
a=curr:qos remote none
a=des:qos mandatory local sendrecv
a=des:qos optional remote sendrecv

Voice codecs

CodecAudio bandwidthBit ratesNotes
AMR-NB (AMR)Narrowband, 300 to 3400 Hz, 8 kHz sampling4.75 to 12.2 kbit/s (8 modes)Legacy 2G/3G quality; mandatory fallback
AMR-WB (G.722.2)Wideband, 50 to 7000 Hz, 16 kHz sampling6.6 to 23.85 kbit/s (9 modes), 12.65 typical"HD Voice"; mandatory for VoLTE (GSMA IR.92)
EVS (Enhanced Voice Services)NB, WB, super-wideband (up to 16 kHz), fullband (up to 20 kHz)5.9 to 128 kbit/s"HD Voice+"; channel-aware mode at 13.2 kbit/s adds redundancy for lossy radio; an AMR-WB interoperable mode exists
  • RTP carries 20 ms voice frames over UDP (so 50 packets per second). RTCP sends reception reports (loss, jitter, round-trip time) roughly every 5 seconds; some operators disable RTCP during active speech and rely on RTP inactivity timers.
  • AMR payload format: "octet-aligned" and "bandwidth-efficient" modes are not compatible. If the offer and answer disagree (the octet-align=1 fmtp), the call connects but audio is garbled or silent.
  • DTMF is sent as RTP telephone-event packets (RFC 4733), not as audio tones.
  • ROHC (Robust Header Compression) in PDCP compresses the 40 to 60 byte IP/UDP/RTP header to a few bytes, which is essential for voice capacity and cell-edge coverage. SPS, TTI bundling, C-DRX and RLC UM are covered under voice quality and radio optimizations.

Early media, cancelling and ending calls

  • Early media is media sent before answer, such as operator ringback tones or announcements ("the number you have dialled..."). It is signalled with SDP in a 18x response and authorised with the P-Early-Media header. If the UE plays local ringback while the network also sends early media, the user hears both, or hears nothing if the UE mutes the stream wrongly.
  • CANCEL aborts an INVITE that has not yet received a final response (caller hangs up while ringing). The callee answers the INVITE with 487 Request Terminated.
  • BYE ends an established dialog (after 200 OK and ACK). Using BYE before answer, or CANCEL after answer, is a classic bug.
  • Session timers (RFC 4028, Session-Expires) make the endpoints refresh the dialog with re-INVITE or UPDATE periodically; if refresh fails, the call is torn down, so stuck calls do not hold resources forever.
  • RTP inactivity timer: if no RTP or RTCP arrives for a configured period (often 10 to 20 seconds), the UE or network ends the call with a BYE carrying a Reason header such as "RTP timeout".
Analogy: booking a restaurant table before inviting a guest

You call a friend to invite them to dinner (INVITE with your menu preferences, the SDP offer). They reply "I would like the fish" (183 with the SDP answer) and you confirm you heard them (PRACK). Before telling them to leave home, both of you book your own table at the restaurant (each side's QCI 1 bearer), and you phone back to say "my table is booked" (UPDATE). Only then does your friend's doorbell ring (180 Ringing), they say yes (200 OK) and you confirm (ACK). This avoids the friend showing up to find no table, which in the real system is a call that is answered but has no audio path.

Tip VoNR uses exactly the same ladder. The only changes are the gNB radio, a 5QI 1 QoS flow in the IMS PDU session instead of a QCI 1 EPS bearer, and N5 (P-CSCF to PCF) instead of Rx. If you can draw VoLTE, you can draw VoNR. For EPS fallback and 5G details see 5G NR.
Interview angle Draw the ladder from memory, then expect: "Why 183 and not 180 for the SDP answer?", "What is PRACK for?", "Who sends UPDATE and when?", "When is the QCI 1 bearer created and by whom?", "What changes for MT?", and "CANCEL versus BYE?". Mentioning the Rx AAR at the 183 and the 580 Precondition Failure response shows real depth.

MMTel supplementary services and the Ut/XCAP interface

MMTel (Multimedia Telephony, 3GPP TS 24.173) is the IMS voice/video service. Its supplementary services run on the TAS, which the S-CSCF invokes through iFC. There are two control surfaces:

In-call control: SIP

  • Hold and resume: re-INVITE or UPDATE with SDP direction
  • Transfer and conference: REFER
  • Caller ID: P-Asserted-Identity and Privacy headers
  • Happens during the dialog

Settings: Ut interface (XCAP over HTTP)

  • Call forwarding rules, barring, CLIR default, call waiting (network-based)
  • Stored as XML documents on the TAS/XDMS
  • Read with HTTP GET, changed with HTTP PUT
  • Happens outside any call, from the phone's call settings menu
ServiceHow it works in IMS
Hold / Resumere-INVITE (or UPDATE) with a=sendonly (holding party still sends music/nothing) or a=inactive; the held side answers a=recvonly or inactive. Resume sends a=sendrecv. The TAS/MRF may play hold music.
Call Waiting (CW)A second INVITE arrives during an active call; the UE (terminal-based CW) or TAS (network-based CW) decides to alert. User can hold the first call and answer the second. 486 Busy Here is returned if CW is off.
Conference (CONF)The UE sends INVITE to the conference factory URI on the TAS; the MRF mixes media. The UE then sends REFER for each existing call so the conference server invites the participants. The UE can SUBSCRIBE to the conference event package to see the participant list.
Call Forwarding (CFU, CFB, CFNRy, CFNRc)Unconditional, on Busy, on No Reply (timer), on Not Reachable. Configured via XCAP; enforced by the TAS, which retargets the INVITE and adds History-Info or Diversion headers.
CLIP / CLIRCaller-ID presentation or restriction. Identity is carried in P-Asserted-Identity; CLIR adds Privacy: id (and From: anonymous) so the terminating side withholds the number.
COLP / COLRConnected line presentation/restriction: showing the answering party's identity back to the caller.
ECT (Explicit Call Transfer)Transferor sends REFER with Refer-To the target (blind), or with a Replaces parameter (consultative); the transferee INVITEs the target.
Barring (ICB, OCB, BAOC, BAIC, roaming variants)Incoming and outgoing call barring, XCAP-configured; the TAS rejects matching calls (often with 603 or 403).
USSD over IMS (USSI)USSD strings sent in SIP INVITE/INFO with an XML body; if the network does not support USSI, the device falls back to CS for USSD.

Ut / XCAP in practice

  • The UE sends HTTP(S) requests to the XCAP server (the TAS or an XDMS) at an operator FQDN such as xcap.ims.mnc001.mcc001.pub.3gppnetwork.org.
  • Authentication is usually GBA (Generic Bootstrapping Architecture: the UE bootstraps with a BSF using AKA, then gets a key for the application server, the NAF) or HTTP digest.
  • Many operators route Ut over the internet APN or a dedicated xcap APN, not the IMS APN. So if mobile data is off, call forwarding settings can fail even though VoLTE calls work; operators fix this with carrier config options that allow Ut when data is disabled.
PUT /simservs.ngn.etsi.org/users/sip:+15551234567@ims.example.com/simservs.xml/~~/simservs/communication-diversion HTTP/1.1
Host: xcap.ims.example.com
Content-Type: application/xcap-el+xml

<communication-diversion active="true">
  <cp:ruleset>
    <cp:rule id="cfb">
      <cp:conditions><busy/></cp:conditions>
      <cp:actions><forward-to><target>tel:+15550001111</target></forward-to></cp:actions>
    </cp:rule>
  </cp:ruleset>
</communication-diversion>
Analogy: a personal assistant with a standing instruction sheet

The TAS is a personal assistant. Standing instructions like "if I am busy, send callers to my deputy" are written on a sheet you update from your desk (XCAP over Ut). During a call you give live instructions like "put this caller on hold" or "bring my colleague into this call" (re-INVITE and REFER). The S-CSCF is the receptionist who knows that every call for you must first pass by your assistant, because your profile (iFC) says so.

Interview angle A crisp one-liner: "Mid-call control is SIP re-INVITE, UPDATE and REFER; persistent settings like call forwarding are XCAP documents on the Ut interface, enforced by the TAS." Follow-ups: how hold is signalled in SDP, why call forwarding settings fail with data off, and how a three-way conference is built (factory URI plus REFER).

SRVCC and its variants: keeping the call when LTE runs out

SRVCC (Single Radio Voice Call Continuity, TS 23.216) moves an active IMS voice call from LTE (packet-switched) to 2G/3G (circuit-switched) when the UE leaves LTE coverage and there is no VoLTE-capable target. "Single radio" means the UE cannot be connected to LTE and 2G/3G at the same time, so the network must coordinate the switch.

Prerequisites

  • The UE indicates SRVCC capability in its attach (MS Network Capability) and the network supports it.
  • The HSS gives the MME the STN-SR (Session Transfer Number for SRVCC, which routes to the SCC-AS or ATCF) and the C-MSISDN (correlation MSISDN).
  • The MSC server is "enhanced for SRVCC" and connected to the MME over the Sv interface.
  • The IMS session was anchored at the SCC-AS when it was set up.

Basic SRVCC flow (LTE to 2G/3G)

  1. Trigger The UE's measurement reports show LTE is weak and a 2G/3G neighbour is good. The eNB, seeing an active QCI 1 bearer, sends Handover Required with an SRVCC indication to the MME.
  2. Split voice from data The MME separates the voice bearer (QCI 1) from other bearers and sends a PS to CS Request over Sv to the MSC server, including STN-SR and C-MSISDN.
  3. Prepare CS target The MSC server prepares radio resources in the target 2G/3G cell (relocation/handover request to the target MSC/BSC/RNC).
  4. Session transfer in IMS The MSC server sends an INVITE to the STN-SR. The SCC-AS correlates it with the existing session (via C-MSISDN) and updates the remote leg with a re-INVITE so the far end now sends media to the CS media gateway. The far end sees only a media change, not a new call.
  5. Handover command The MSC server answers the MME with PS to CS Response; the MME sends the handover command via the eNB; the UE retunes its single radio to 2G/3G.
  6. Completion The call continues in CS. Non-voice bearers are handed over to 3G PS (if the target supports DTM/PS handover) or suspended. The old IMS access leg is released.
  UE        eNB         MME            MSC server         SCC-AS (IMS)        Far end
   │ meas rpt  │           │                 │                  │                  │
   │──────────►│ HO Req    │                 │                  │                  │
   │           │ (SRVCC) ─►│ PS to CS Req ──►│ (Sv)             │                  │
   │           │           │                 │ prepare 2G/3G target cell           │
   │           │           │                 │ INVITE STN-SR ──►│                  │
   │           │           │                 │                  │ re-INVITE ──────►│
   │           │           │                 │                  │ (media now to MGW)
   │           │           │◄─ PS to CS Resp │                  │◄──── 200 OK ─────│
   │◄── HO Command (to 2G/3G) ──│            │                  │                  │
   │═══ UE retunes to 2G/3G; voice continues over CS via MSC/MGW ═══════════════════│

The SRVCC family

Variant3GPP releaseWhat it adds
SRVCCRel-8Active single voice call, LTE to 2G/3G CS. Remote leg updated by the SCC-AS in the home network, so the voice gap can be long when roaming.
eSRVCC (enhanced)Rel-10Adds the ATCF/ATGW in the serving network. Media is anchored locally at the ATGW, the STN-SR points to the ATCF, and only the local leg is switched; the remote party is not re-INVITEd. Voice interruption drops to typically under 300 ms.
aSRVCC (alerting phase)Rel-10Transfers a call that is still ringing (180 sent or received, not yet answered).
bSRVCC (before-alerting phase)Rel-11Transfers a call that is still being set up, before any 180 (for example, after 183 or during precondition).
Mid-call SRVCCRel-10Transfers held calls and conference state, not just the one active call.
vSRVCCRel-10Transfers a video call to a CS video call (3G-324M).
rSRVCC (reverse)Rel-11Moves a CS call back from 3G to LTE/IMS.
5G-SRVCCRel-16NR (VoNR) directly to 3G CS.

How SRVCC compares with the other voice continuity procedures

ProcedureWhenFrom / toDomain after
SRVCCDuring an active callLTE (or NR) to 2G/3GCS
CSFBAt call setup, UE has no VoLTELTE to 2G/3G before the callCS (see Call flows)
EPS fallbackAt call setup on 5G SA without VoNRNR to LTEIMS (becomes VoLTE; see 5G NR)
VoLTE / VoWiFi handoverDuring an active callLTE to Wi-Fi or backIMS (stays PS)
PS handover (X2/S1, Xn/N2)During an active callLTE cell to LTE cell, NR to NR, NR to LTEIMS
Analogy: switching from a train to a bus mid-journey

You are travelling on a high-speed train (the VoLTE call) and the line ends before your destination. A coordinator (the MME) phones ahead to the bus depot (the MSC server) to hold a seat for you, and your travel agent (the SCC-AS) updates your friend waiting at the destination with the new arrival point. You step off the train and straight onto the bus (the UE retunes its single radio to 2G/3G). With eSRVCC, the change of vehicle happens at a local interchange (the ATCF/ATGW) so the agent at home does not need to be called at all, making the switch much faster. In the real system, the far end never sees a new call, only a media update or nothing at all.

Common pitfall Calling a VoLTE to VoWiFi handover "SRVCC". SRVCC always ends in the circuit-switched domain. Wi-Fi and LTE handovers keep the call in IMS.
Interview angle Interviewers ask "What is SRVCC and who triggers it?" (the eNB, based on measurement reports, with the MME driving it), "What are STN-SR and C-MSISDN?", "What does eSRVCC add?" (ATCF/ATGW local anchoring) and "SRVCC versus EPS fallback versus CSFB". Senior answers mention the aSRVCC/bSRVCC phases and that many operators are shutting down 2G/3G, which makes SRVCC less relevant over time.

VoWiFi (Wi-Fi Calling) and LTE to Wi-Fi handover

VoWiFi is the same IMS voice service reached over a Wi-Fi access leg instead of cellular. The IMS core, P-CSCF, SIP signaling and call ladder are identical; only the path from the UE to the IMS APN changes. Understanding that single fact makes both the architecture and the handover easy to explain.

Architecture

  UNTRUSTED Wi-Fi (home router, cafe, hotel: the common case)

  UE ──Wi-Fi AP──► Internet ──SWu──► ePDG ──S2b──► P-GW ──► P-CSCF / IMS core
        │                    (IKEv2/IPsec,         (GTPv2 or
        │                     EAP-AKA auth)         PMIPv6)
        │                         │
        │                         └──SWm──► 3GPP AAA ──SWx──► HSS
        └── all IMS SIP and RTP travel INSIDE the IPsec tunnel to the ePDG

  5G equivalent:   UE ──NWu (IPsec)──► N3IWF ──N2/N3──► AMF, UPF ──► IMS
  Trusted WLAN:    UE ──► TWAG ──S2a──► P-GW ──► IMS   (operator-controlled Wi-Fi, no ePDG)

ePDG

Terminates the IKEv2/IPsec tunnel from the UE over SWu, authenticates the UE with EAP-AKA via the 3GPP AAA server, and connects to the P-GW over S2b. Found through DNS using an operator FQDN such as epdg.epc.mnc001.mcc001.pub.3gppnetwork.org (or a configured address).

P-GW (or SMF+UPF in 5G)

The mobility anchor. It owns the IMS PDN connection and keeps the same IMS IP address whether the UE is on LTE or Wi-Fi. This anchoring is what makes seamless handover possible.

P-CSCF and IMS

Unchanged. The UE registers and places calls exactly as in VoLTE. P-Access-Network-Info changes to an IEEE 802.11 value so the network knows the access type (important for charging and emergency).

Bringing up Wi-Fi calling

  1. Wi-Fi connected and WFC enabled The user has Wi-Fi calling turned on, the operator has enabled it (carrier config and entitlement), and an emergency address may need to be registered first (in the US, E911 address provisioning via an entitlement server).
  2. ePDG selection The UE resolves the ePDG FQDN by DNS (possibly choosing a visited-country ePDG when roaming, based on policy).
  3. IKEv2 tunnel setup IKE_SA_INIT (Diffie-Hellman, nonces), then IKE_AUTH carrying the IMSI-based identity and the IMS APN. The ePDG runs EAP-AKA with the AAA/HSS, using the same SIM credentials. The IKEv2 configuration payload returns the UE's inner IP address and the P-CSCF address (instead of PCO).
  4. S2b session The ePDG creates a GTP session to the P-GW for the IMS APN, which allocates the IP address.
  5. IMS registration The same IMS-AKA REGISTER runs inside the IPsec tunnel, so there are two layers of IPsec: the outer SWu tunnel and the inner Gm SA to the P-CSCF.
  6. Keep-alives IKEv2 dead-peer-detection and NAT-keepalive packets keep the tunnel open through home routers (NAT traversal uses UDP port 4500).

VoLTE versus VoWiFi

AspectVoLTE / VoNRVoWiFi
Access legLTE or NR radio (eNB/gNB)Any Wi-Fi, then ePDG (N3IWF in 5G)
Security to the coreNAS/AS ciphering, plus IPsec to the P-CSCFIKEv2/IPsec tunnel to the ePDG, plus IPsec to the P-CSCF
Access authenticationEPS-AKA (attach) or 5G-AKAEAP-AKA in IKEv2 (EAP-5G/NAS for N3IWF)
P-CSCF discoveryPCO in PDN/PDU setupIKEv2 configuration payload
Voice QoSGBR dedicated bearer (QCI 1 / 5QI 1)No guaranteed bearer; DSCP marking (EF, 46 for voice) and Wi-Fi WMM voice queue; best effort across the internet
SIP and call ladderIdentical: same IMS core, same INVITE, 183, PRACK, UPDATE, 180, 200 (preconditions are often relaxed over Wi-Fi because there is no bearer to reserve)
IP anchorSame P-GW (or SMF/UPF), so the same IMS IP address can be kept across both accesses

Handover 1: VoLTE to VoWiFi (walking indoors, Wi-Fi preferred)

  Active VoLTE call on QCI 1 over LTE
   1 │ UE sees usable Wi-Fi (RSSI, quality above threshold) and policy prefers Wi-Fi
   2 │ UE brings up the IKEv2/IPsec tunnel to the ePDG (EAP-AKA)
   3 │ IKE_AUTH carries the IMS APN plus the current IP address (handover indication)
   4 │ ePDG sends Create Session with the Handover Indication to the SAME P-GW
   5 │ P-GW keeps the SAME IMS IP ADDRESS and switches the downlink path to S2b
   6 │ Because the IP and SIP dialog survive, the call stays up
   7 │ UE sends re-REGISTER (new P-Access-Network-Info) and, if needed, re-INVITE/UPDATE
   8 │ LTE QCI 1 dedicated bearer is released; the IMS PDN now lives on Wi-Fi
     │═══════ call continues with no drop (ideally make-before-break) ═══════

Handover 2: VoWiFi to VoLTE (Wi-Fi fades, leaving the building)

  Active VoWiFi call through the ePDG IPsec tunnel
   1 │ UE sees Wi-Fi degrading (RSSI, packet loss, jitter) and LTE is good with IMS VoPS
   2 │ UE sends PDN Connectivity Request (Request Type = HANDOVER) for the IMS APN
   │   (or a Handover Attach if it was not attached to LTE)
   3 │ MME selects the SAME P-GW; P-GW keeps the SAME IMS IP ADDRESS
   4 │ P-GW/PCRF set up the QCI 1 dedicated bearer on LTE for the ongoing call
   5 │ UE re-REGISTERs / sends re-INVITE or UPDATE as needed; media now over LTE
   6 │ ePDG tunnel is torn down
     │═══════ call continues over cellular with no drop ═══════

What decides the handover

  • WFC preference modes: Wi-Fi preferred, cellular preferred, Wi-Fi only (some operators also have "never use cellular while roaming").
  • Thresholds: Wi-Fi RSSI, packet loss, jitter and round-trip time versus LTE RSRP/RSRQ, with hysteresis to avoid ping-pong.
  • Operator policy: ANDSF in LTE, URSP in 5G, carrier config, plus roaming and emergency rules.
  • Who decides: the UE (unlike SRVCC, which the network commands). On Android, the QualifiedNetworksService (QNS) decides whether the IMS APN should be on WWAN (cellular) or WLAN (Wi-Fi), and the IWLAN data service brings up the ePDG tunnel.

Why it is seamless, and what breaks it

  • Make-before-break: the new access leg is built before the old one is released, so there is no media gap.
  • IP preservation: the handover indication tells the P-GW to reuse the existing session and IP address.
  • Breaks if: the new PDN is created as an initial request instead of a handover, so the UE gets a new IP address and the SIP dialog (bound to the old Contact) dies; the target P-GW is different; the IPsec tunnel is too slow to come up before LTE is lost; or the UE is not registered in time on the new access.
  • Other VoWiFi issues: NAT timeouts on home routers killing the tunnel, MTU problems because of double IPsec overhead (fragmented SIP), captive portals, and Wi-Fi power save causing jitter.
Analogy: forwarding your post to a new route with the same address

Imagine your house address never changes, but the postal van can reach you by the main road (LTE) or by a private tunnel through the neighbour's garden (Wi-Fi through the ePDG). The central sorting office (the P-GW) holds your address and simply switches which route it sends your letters along. Your pen pals (the far end and the IMS core) keep writing to the same address and never notice the change. If instead you were given a brand-new address (an initial PDN with a new IP), every conversation in progress would be lost, which is exactly why a VoWiFi handover without the handover indication drops the call.

Common pitfall Thinking VoWiFi gets a QCI 1 bearer. There is no GBR bearer over untrusted Wi-Fi; QoS relies on DSCP/WMM marking and the quality of the user's internet connection.
Interview angle The one-sentence answer: "VoWiFi is IMS over an IKEv2/IPsec tunnel to the ePDG; because the P-GW keeps the same IMS IP address across LTE and Wi-Fi (handover-type PDN request), the SIP dialog survives and only the media path moves." Follow-ups: SWu versus S2b versus S2a, how the P-CSCF is found over Wi-Fi, why this is not SRVCC, and how you would debug a call that drops when walking out of Wi-Fi.

ViLTE, RCS and IMS emergency calls

ViLTE (video over LTE) and video over NR

  • Same SIP flow as VoLTE, but the SDP has a second m=video line (H.264, increasingly H.265/HEVC) alongside m=audio.
  • Video uses its own dedicated bearer: QCI 2 (GBR, conversational video) in the standard model; some operators use non-GBR QCI 7 or 8 instead. Audio stays on QCI 1, so voice quality is protected even when video struggles.
  • Upgrade and downgrade between voice and video are re-INVITEs that add or remove the video m-line (or set its port to 0). The other party can accept or decline the upgrade.
  • RTCP feedback (AVPF) carries picture loss indications (PLI), full intra requests (FIR) and bit-rate adaptation (TMMBR), because video is sensitive to loss.
  • CVO (Coordination of Video Orientation) sends the camera rotation in an RTP header extension so the receiver can rotate the picture.

RCS (Rich Communication Services)

  • The GSMA standard for rich messaging over IMS, marketed as the SMS successor ("Universal Profile"): chat, group chat, file transfer, read receipts, typing indicators, business messaging (chatbots, also called MaaP).
  • Chat sessions use MSRP (Message Session Relay Protocol) set up with a SIP INVITE; short messages can use pager-mode SIP MESSAGE.
  • File transfer uses HTTP upload to a content server, with a link sent in the chat.
  • Capability discovery uses SIP OPTIONS exchanges or presence (SUBSCRIBE/NOTIFY) with feature tags, so the client knows whether the other user supports RCS.
  • Configuration comes from an HTTP auto-configuration server (ACS). The RCS client can share the IMS registration of the voice stack (single registration) or register separately.
  • On Android, RCS is exposed through RcsFeature of the ImsService and APIs such as ImsRcsManager.

IMS emergency calls (E-911, 112)

  1. Detection The UE recognises the dialled number as an emergency number (from the SIM, the network's emergency number list in NAS, carrier config, or the standard 112/911).
  2. Emergency PDN / PDU session The UE sets up a separate emergency connection (PDN Connectivity Request with request type "emergency"; APN often sos). The network gives it high priority (high ARP) and, depending on country rules, allows it even without a valid SIM or subscription (emergency attach).
  3. Emergency registration The UE performs an emergency REGISTER (Contact with the sos parameter). If the UE cannot register (for example, no SIM or roaming restriction), many networks accept an anonymous emergency call without registration.
  4. Emergency INVITE The Request-URI is urn:service:sos (or a subtype such as urn:service:sos.police). The P-CSCF recognises it and routes it to the E-CSCF, not to the home S-CSCF, so it works when roaming.
  5. Location and PSAP routing The E-CSCF asks the LRF for location and the correct PSAP (Public Safety Answering Point). Location comes from the P-Access-Network-Info cell ID, a Geolocation header with a PIDF-LO body, the GMLC (network positioning), or, over Wi-Fi, the registered civic address.
  6. Network-detected emergency If the network recognises a number as emergency but the UE did not, it can answer 380 Alternative Service, telling the UE to redial as an emergency call.
  7. Fallback If IMS emergency is not possible (no IMS emergency support in the cell, or the emergency PDN fails), the UE uses CS emergency (CSFB to 2G/3G) or tries another access. Over Wi-Fi, operators may require emergency calls to prefer cellular when available.
  8. Callback The PSAP can call back; the UE enters an emergency callback mode for a period so the callback is not blocked by barring or Wi-Fi-only preferences.
Analogy: an ambulance lane with a satnav

An emergency call is like an ambulance: it gets its own lane that normal traffic cannot block (a separate emergency PDN with top priority), it does not need to show a toll pass (emergency attach and anonymous calls without a subscription), and instead of going to your home hospital it goes to the nearest one (the E-CSCF routes to the local PSAP, not your home S-CSCF). The satnav location (cell ID, GPS, or registered Wi-Fi address) tells the dispatcher where to send help.

Interview angle Typical probes: "How is an emergency call different from a normal VoLTE call?" (emergency PDN, emergency registration, urn:service:sos, E-CSCF, location, high ARP), "Can you make an emergency call with no SIM?" (yes in many countries, via emergency attach and anonymous IMS emergency), "What is 380 Alternative Service?", and "How does location work over Wi-Fi?" (a pre-registered civic address plus Wi-Fi/AP information). For RCS, know MSRP, OPTIONS-based capability discovery and HTTP file transfer.

SIP and SDP internals

SIP (RFC 3261) is a text-based, HTTP-like request/response protocol that sets up, modifies and ends sessions. It does not carry media itself. SDP (RFC 4566) is the body inside SIP that describes the media: IP address, ports, codecs and direction. SIP runs over UDP, TCP or TLS on port 5060 (5061 for TLS); in IMS the UE uses the protected ports negotiated for the IPsec SAs. Per RFC 3261, when a request is larger than about 1300 bytes (within 200 bytes of the path MTU) the UE should use TCP instead of UDP to avoid fragmentation.

SIP methods

MethodPurpose
REGISTERBind a Contact (current IP and port) to a public identity; also used for re-registration and de-registration (Expires: 0).
INVITECreate a session (dialog). A re-INVITE inside an existing dialog modifies it (hold, codec change, video upgrade, session refresh).
ACKConfirms a final response to INVITE; completes the three-way handshake.
PRACKReliable acknowledgement of a provisional (1xx) response sent with 100rel (RFC 3262).
UPDATEModify session parameters, including before the call is answered (RFC 3311). Used for preconditions and session refresh.
BYEEnd an established dialog.
CANCELAbort a pending INVITE that has no final response yet.
REFERAsk the recipient to contact a third party (transfer, conference).
SUBSCRIBE / NOTIFYEvent packages: reg, conference, presence, dialog, message-waiting.
MESSAGEPager-mode instant message; also carries SMS over IP (3GPP SMS in the body).
OPTIONSCapability query (RCS capability discovery) and keep-alive.
INFOMid-dialog application information (for example USSI, some DTMF implementations).

SIP response codes

CodeMeaningTypical IMS cause
100 TryingRequest received, processingHop-by-hop; stops INVITE retransmission
180 RingingCallee is being alertedSent after preconditions are met
181 Call Is Being ForwardedCall divertedTAS applied call forwarding
182 QueuedCall queuedCall waiting or queue
183 Session ProgressProgress information, usually with SDPCarries the SDP answer and drives preconditions; early media
200 OKSuccessRegistration accepted, call answered, PRACK/UPDATE/BYE confirmed
202 AcceptedAccepted for processingResponse to REFER or SUBSCRIBE
301 / 302Moved permanently / temporarilyRedirect (rare inside IMS)
380 Alternative ServiceTry something elseNetwork detected an emergency number: redial as emergency
400 Bad RequestMalformed requestSyntax or header error, often after a software change
401 UnauthorizedAuthentication neededNormal AKA challenge on REGISTER
403 ForbiddenRefused, do not retry with same credentialsNot provisioned for IMS/VoLTE, barred, roaming not allowed
404 Not FoundUser does not existWrong number/URI, unknown IMPU
407 Proxy Authentication RequiredProxy wants credentialsRare in 3GPP IMS
408 Request TimeoutNo timely responseRemote unreachable, paging failure, transport loss
415 Unsupported Media TypeBody type not supportedWrong Content-Type (for example, an XML body not understood)
420 Bad ExtensionRequired option not supportedPeer does not support something in Require
421 Extension RequiredPeer requires an extensionFor example, 100rel or precondition missing
480 Temporarily UnavailableCallee not reachable nowNot registered, device off
481 Call/Transaction Does Not ExistUnknown dialogBYE or re-INVITE for a dialog the peer already dropped
486 Busy HereCallee busyUser busy, call waiting off
487 Request TerminatedINVITE cancelledCaller sent CANCEL before answer
488 Not Acceptable HereSDP not acceptableCodec, media or precondition mismatch
491 Request PendingGlareBoth sides sent re-INVITE at once; retry after a random delay
494 Security Agreement Requiredsec-agree neededSecurity-Client missing or no common algorithm
500 Server Internal ErrorServer failureCore node fault
503 Service UnavailableTemporarily overloadedCongestion or maintenance; honour Retry-After
504 Server Time-outUpstream server did not answerHSS or next hop not responding
580 Precondition FailurePreconditions could not be metDedicated bearer could not be reserved
600 Busy EverywhereBusy on all devicesGlobal busy
603 DeclineCallee rejectedUser pressed reject, or barring

Core SIP headers

HeaderWhat it does
ViaRecords the path the request took so responses return the same way; the branch parameter identifies the transaction.
Route / Record-RouteA proxy that wants to stay on the path adds Record-Route; endpoints turn these into Route headers for later in-dialog requests.
From / ToLogical caller and callee, each with a tag that identifies the dialog participant.
Call-IDUnique identifier for the call; with the two tags it identifies the dialog.
CSeqSequence number plus method; orders requests and matches responses.
ContactWhere to reach this UA directly; carries feature tags and +sip.instance.
Max-ForwardsHop limit to stop loops.
Supported / Require / Proxy-RequireExtension negotiation (100rel, precondition, timer, sec-agree, gruu).
RSeq / RAckSequence numbers for reliable provisional responses and their PRACK.
Session-Expires / Min-SESession timer values.
ReasonWhy a request (for example, BYE or CANCEL) was sent; may carry a Q.850 cause.

IMS-specific (P-) headers

HeaderWhat it does
P-Preferred-Identity / P-Asserted-IdentityThe UE suggests which IMPU to use; the P-CSCF replaces it with the network-verified identity used for caller ID.
P-Access-Network-Info (PANI)Access type and cell ID (or Wi-Fi info). Used for charging, emergency location and services.
P-Visited-Network-IDTells the home network which visited network the UE is in.
PathAdded at registration so terminating requests go back through the same P-CSCF.
Service-RouteReturned in 200 OK to REGISTER; the UE uses it as the Route for originating requests (to its S-CSCF).
P-Associated-URIThe IMPUs registered for this user.
Security-Client / Security-Server / Security-VerifyIPsec security agreement (RFC 3329): offered algorithms, SPIs and ports.
P-Charging-Vector / P-Charging-Function-AddressesCharging correlation ID (ICID) and charging server addresses.
P-Early-MediaAuthorises and gates early media.
PrivacyRequests that identity (and other headers) be withheld: CLIR.
History-Info / DiversionRecords call forwarding hops.
Accept-Contact / P-Asserted-ServiceRoute to UAs with a feature tag; identifies the service (MMTel ICSI).

Transactions versus dialogs

  • A transaction is one request plus all its responses, matched by the top Via branch and the CSeq method. INVITE transactions end with ACK (for non-2xx the ACK is part of the transaction; for 2xx the ACK is a separate end-to-end request).
  • A dialog is the long-lived peer relationship between two UAs, identified by Call-ID plus the From tag plus the To tag. It is created by a 2xx (or a reliable 18x creating an early dialog) to INVITE, spans many transactions (PRACK, UPDATE, re-INVITE) and ends with BYE.
  • One INVITE can create several early dialogs if it forks to several devices (different To tags); only one becomes confirmed when answered.

SIP timers

  • T1 is the round-trip estimate: 500 ms in RFC 3261, but 3GPP TS 24.229 recommends 2 s for the UE over radio (with T2 = 16 s, T4 = 17 s).
  • Over UDP, requests are retransmitted at T1, 2xT1, 4xT1 and so on until a response arrives.
  • Timer B (INVITE timeout) and Timer F (non-INVITE timeout) are 64 x T1: 32 s by default, 128 s with the IMS T1 of 2 s. When they fire, the UE treats the transaction as failed (like a 408).

SDP offer/answer

  • RFC 3264: the offerer lists media streams, codecs (payload types), addresses and ports; the answerer accepts a subset (in VoLTE, one audio codec) and supplies its own address. In VoLTE the offer is in the INVITE and the answer in the 183. A UA may also send an INVITE with no SDP, in which case the offer comes in the response and the answer in the ACK (or PRACK).
  • Only one offer/answer can be outstanding at a time; a new offer before the previous one is answered causes 491 or 500.
  • Key SDP lines: c= connection address, m= media line with port and payload types, a=rtpmap codec mapping, a=fmtp codec parameters, a=ptime, b=AS bandwidth, direction attributes, precondition attributes.
  • Direction attributes: sendrecv (normal), sendonly (I only send: I am holding), recvonly (I only receive: I am held), inactive (no media either way).
  • Port 0 on an m-line means that stream is rejected or removed (for example, declining a video upgrade).
Analogy: letters with tracking numbers

SIP is like registered post between two offices. Each individual letter and its receipts form a transaction (identified by a tracking number, the Via branch and CSeq). The ongoing correspondence between two people about one project is the dialog (identified by the project reference, the Call-ID, plus each person's signature, the tags). The attachment describing the meeting room, time and language is the SDP. Via headers are the stamps each post office adds so replies find their way back, and Record-Route is a post office asking "send all future letters in this project through me".

Interview angle Expect "transaction versus dialog", "Route versus Record-Route", "180 versus 183", "what does 488 mean", "CANCEL versus BYE", "how is hold signalled in SDP", and "what are P-Asserted-Identity and P-Access-Network-Info for". Knowing the IMS T1 of 2 s and the UDP-to-TCP rule for large messages impresses interviewers debugging registration timeouts.

QoS, bearers and policy control (PCC)

Voice over IP sounds good only if packets arrive on time. In LTE and 5G the network guarantees this with bearers (LTE) or QoS flows (5G), set up on demand by the policy framework. This is what makes VoLTE deterministic compared with over-the-top VoIP apps.

EPS bearer concepts

  • Default bearer: created with each PDN connection, always on while the PDN exists, always non-GBR. It catches all traffic not matched by a dedicated bearer. The IMS APN's default bearer uses QCI 5.
  • Dedicated bearer: created on demand for specific flows; may be GBR. The voice RTP stream uses a QCI 1 GBR dedicated bearer.
  • TFT (Traffic Flow Template): packet filters (source and destination IP, ports, protocol) that map flows onto a bearer, in both uplink (the UE applies them) and downlink (the P-GW applies them).
  • GBR / MBR: guaranteed and maximum bit rate for GBR bearers (for AMR-WB 23.85 with overhead, roughly 40 to 50 kbit/s each way).
  • ARP (Allocation and Retention Priority): decides who gets admitted, and who can be pre-empted, under congestion. Emergency and priority calls get high ARP. ARP does not affect packet scheduling; QCI does.
  • AMBR (Aggregate Maximum Bit Rate) limits the total of all non-GBR bearers per APN or per UE.

Standardised QCI table (LTE, TS 23.203)

QCITypePriorityPacket delay budgetPacket error loss rateExample service
1GBR2100 ms10-2Conversational voice (VoLTE)
2GBR4150 ms10-3Conversational video (ViLTE)
3GBR350 ms10-3Real-time gaming, V2X
4GBR5300 ms10-6Buffered streaming video
65GBR0.775 ms10-2Mission-critical push-to-talk voice
66GBR2100 ms10-2Non-mission-critical push-to-talk voice
5Non-GBR1100 ms10-6IMS signaling (SIP)
6Non-GBR6300 ms10-6Buffered video, TCP apps (premium)
7Non-GBR7100 ms10-3Voice, video, interactive gaming (non-GBR)
8Non-GBR8300 ms10-6TCP apps (premium subscribers)
9Non-GBR9300 ms10-6Default internet data

Do not invert the two IMS QCIs. QCI 1 is conversational voice: a GBR dedicated bearer with a 100 ms delay budget and 10-2 loss. QCI 5 is IMS signalling on the default bearer of the IMS APN. Among the everyday QCI 1–9 set, QCI 5 has scheduling priority 1 (QCI 1 is priority 2) so SIP is not starved by other default or non-GBR traffic such as QCI 9 internet; that is high priority relative to other default bearers, not a claim that signalling is "more important than voice". Voice quality is protected by the GBR reservation. Mission-critical QCIs (65, 69) have even tighter priority numbers. In 5G the 5QI values 1, 2, 5 and 9 keep the same meaning (5QI 1 is still voice, 5QI 5 is still SIP), and 5G adds delay-critical GBR 5QIs (such as 82 to 86) for URLLC.

The PCC chain that creates the voice bearer

  UE-A ──SIP 183 (SDP answer)──► P-CSCF
                                    │  Rx AAR: media components (IPs, ports, codec, bandwidth)
                                    ▼
                              PCRF (LTE) / PCF (5G, via N5)
                                    │  derives PCC rule: QCI 1, GBR/MBR, ARP, TFT filters
                                    │  Gx RAR (LTE) / N7 (5G)
                                    ▼
                         P-GW (PCEF) / SMF ──► UPF
                                    │  Create Bearer Request (LTE) / PDU Session Modification (5G)
                                    ▼
                         MME ──► eNB: E-RAB setup   |   AMF ──► gNB: QoS flow + DRB
                                    │
                                    ▼
                    UE: Activate Dedicated EPS Bearer Context (with TFT)
                    eNB/gNB enforce GBR scheduling on the air interface
  • The P-CSCF also asks the PCRF to notify it of events on the bearer (for example, bearer loss or access network change), so the IMS layer can react to a lost media path.
  • At call end, the P-CSCF sends Rx STR (session termination), and the PCRF removes the rule; the dedicated bearer is deleted.
  • Rx gating: the PCRF can open or close the media gate so RTP only flows after the call is authorised.

5G QoS model

  • EPS bearers become QoS flows inside one PDU session, each marked with a QFI (QoS Flow Identifier) on the N3 GTP-U tunnel.
  • The SDAP layer in the UE and gNB maps QoS flows onto data radio bearers (DRBs); several flows can share a DRB.
  • The PCF (policy), SMF (session control) and UPF (packet marking and enforcement) replace the PCRF, P-GW control and P-GW user plane.
  • VoNR uses 5QI 1 for voice and 5QI 5 for IMS signaling, mirroring LTE.
Analogy: a motorway with a bus lane

The default bearer is the normal motorway lane: always open, but traffic jams affect it. When a call starts, the traffic controller (PCRF/PCF), acting on a request from the event organiser (P-CSCF), opens a reserved bus lane (the QCI 1 GBR bearer) and posts signs saying which vehicles may use it (the TFT). The road police (eNB/gNB scheduler) enforce the lane's guaranteed speed. ARP is the rule for which vehicles are allowed to push others out of the lane when space runs out, such as ambulances first.

Common pitfall Swapping QCI 1 and QCI 5, or saying "QCI 5 is the highest-priority service so it is the voice bearer." QCI 1 is conversational voice. QCI 5 is IMS signalling with high priority relative to other default bearers.
Interview angle Know the QCI table rows 1, 2, 5, 9 cold, including PDB and priority. Typical questions: "Default versus dedicated bearer?", "What is a TFT?", "Trace how the QCI 1 bearer gets created", "ARP versus QCI?", "How is 5G QoS different?". A classic trap is inverting QCI 1 and QCI 5. If asked "why does SIP have priority 1 while voice is priority 2?", answer: signalling packets are tiny but a delayed SIP message delays the whole call setup; voice is protected by being GBR, not by winning the priority-number contest against SIP.

IMS on Android (brief)

On Android the SIP stack itself usually lives in the vendor's IMS implementation (in the modem or a vendor daemon); the framework talks to it through a stable API. The full class-by-class dial path, vendor splits and the IMS-to-CS fallback code are covered in Call flows.

ComponentRole
ImsServiceVendor or carrier service that exposes IMS to the framework. Bound by ImsResolver in the phone process.
MmTelFeatureThe voice, video and SMS-over-IMS feature of the ImsService: creates call sessions (ImsCallSessionImplBase), reports capabilities.
RcsFeatureThe RCS feature: capability exchange, presence, messaging hooks.
ImsRegistrationImplBaseReports registration state and access technology (LTE, NR, IWLAN) to the framework.
ImsConfigImplBase / ProvisioningManagerProvisioning items such as VoLTE, VoWiFi and video enablement.
ImsManager / ImsMmTelManagerFramework and app-facing APIs (for example, register for IMS registration callbacks, set the Wi-Fi calling mode).
ImsPhone / ImsPhoneCallTrackerFramework call objects for IMS calls; GsmCdmaPhone delegates to them when IMS can serve the call.
ImsReasonInfoFailure and disconnect reasons, often mapped from SIP codes.
CarrierConfigManagerPer-carrier flags, for example KEY_CARRIER_VOLTE_AVAILABLE_BOOL and KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL.
QualifiedNetworksService / IWLANDecides whether the IMS APN runs on cellular or Wi-Fi, and brings up the ePDG tunnel for VoWiFi.
  Dialer ─► Telecom ─► TelephonyConnectionService ─► GsmCdmaPhone.dial()
                                                        │ IMS registered and usable?
                                          yes ◄─────────┴─────────► no
                                           │                         │
                                  ImsPhone ─► ImsPhoneCallTracker     GsmCdmaCallTracker ─► RIL (CS)
                                           │
                                  ImsService / MmTelFeature (vendor) ─► SIP INVITE ... RTP
Analogy: a universal socket and plug

The ImsService API is like a standard wall socket in a building: the building (the Android framework) is wired once, and any vendor can plug in its own appliance (its IMS stack) as long as it fits the socket shape (MmTelFeature, RcsFeature, registration and config interfaces). In the real system, this lets Google update the framework and vendors update their IMS stacks independently.

Interview angle For Android roles, expect "Where does the SIP stack run?", "What is MmTelFeature?", "How does the framework decide IMS versus CS for a dial?" and "How does the VoLTE icon get lit?" (the registration callback from ImsRegistrationImplBase plus MmTel capability status reaching ImsPhone). Go to Call flows for the class-level trace.

Debugging IMS: a practical playbook

Most IMS interview scenarios are debugging stories. The winning habit is to work layer by layer and align timestamps: radio (RRC), NAS (attach, PDN, bearers), IMS (SIP), media (RTP), and framework (Android telephony logs).

Tools and logs

  • Modem logs: Qualcomm QXDM/QCAT/PCAT, MediaTek ELT; these include decoded NAS, RRC, SIP and RTP statistics.
  • Wireshark or tshark on SIP, RTP, RTCP, Diameter (Rx, Cx, Gx), GTP and IKEv2 captures, from the device or the core.
  • Android: adb logcat -b radio, dumpsys telephony.registry, dumpsys carrier_config, the IMS service's dumpsys.
  • Network side: SBC/P-CSCF call traces, HSS and PCRF logs, operator KPI dashboards.

Symptom to root cause map

SymptomMost likely layersFirst things to check
No VoLTE, never registersProvisioning, PDN, P-CSCFCarrier config and provisioning flags, IMS VoPS bit, IMS PDN setup and PCO, whether any REGISTER is sent
Registration rejected (403, 401 loop)Operator provisioning, SIM, AKAHSS profile, IMPI/IMPU values, AKA result, SQN resync, roaming permission
Call setup fails with 488 or 580SDP or QoSOffered versus accepted codecs and fmtp, precondition lines, dedicated bearer creation (Rx/Gx failures)
One-way or no audioMedia pathSDP addresses and ports, which direction has no RTP, bearer TFT correctness, firewall/NAT, codec mode mismatch, hold state, audio routing
Call drops mid-callRadio, bearer, timersRLF or handover failure, SRVCC failure, bearer or PDN release, RTP inactivity timer, session-timer refresh failure, BYE Reason header
Long call setup timePaging, preconditions, retransmissionsPaging delay on MT side, time from 183 to bearer setup, SIP retransmissions (T1), DNS or HSS latency
VoWiFi drops on leaving Wi-FiHandoverHandover indication in the PDN request, same IP kept, registration on the new access, thresholds and timing
Tip Contradiction check: a strong radio signal plus a persistent SIP error means the problem is in IMS provisioning or the operator core, not coverage; a healthy modem plus a SIP 403 is not a modem bug. Always find the first failing message on the timeline, not the loudest error.
Analogy: tracing a missing parcel

Debugging a failed call is like tracing a lost parcel: you check each depot scan in order (radio, NAS, SIP, RTP) and find the last place it was seen and the first place it was not. Asking "was it ever handed over?" (did the REGISTER or INVITE leave the device?) and "who signed for it?" (which node answered and with what code?) finds the fault faster than guessing.

Interview angle Scenario questions reward structure: state the layers you will check, the logs you will pull, what evidence would confirm or rule out each hypothesis, and what you would change. Mentioning that you correlate NAS, SIP and RTP on one timeline is the key signal of real experience.

Voice quality and radio optimizations

Interviewers who have shipped VoLTE often skip SIP and ask how the call actually sounds. Quality is a delay-loss-rate triangle: the GBR bearer buys a delay budget, the codec hides remaining loss, and a handful of radio features keep the uplink alive at the cell edge.

Mouth-to-ear delay and G.114

ITU-T G.114 recommends one-way mouth-to-ear delay under about 150 ms for users not to notice; 150 to 400 ms is acceptable with growing annoyance; above 400 ms conversation becomes difficult (talker overlap). The budget is spent on codec framing (typically 20 ms plus look-ahead), packetization, uplink and downlink air interface (including HARQ), backhaul and core, far-end jitter buffer, and playout. QCI 1 / 5QI 1's 100 ms packet delay budget is the network slice of that path, not the whole mouth-to-ear number.

Jitter buffer, PLC and MOS

  • Jitter buffer absorbs packet delay variation so frames can be played at a steady 20 ms cadence. A deeper buffer hides more jitter but adds delay (and can push the call past the G.114 target). Adaptive jitter buffers grow when RTCP or arrival statistics show variance, and shrink when the path is stable. EVS channel-aware mode needs extra depth so the redundant copy can arrive.
  • PLC (Packet Loss Concealment) is the decoder inventing a plausible frame when a packet never arrives: repetition, pitch-based interpolation, or comfort noise. It hides isolated losses; a burst still sounds robotic. Combined with HARQ on the air and (for EVS) partial redundancy, PLC is why voice can use RLC UM instead of waiting for ARQ.
  • MOS (Mean Opinion Score) is a 1-to-5 listening-quality scale. Lab tests use real listeners; operators predict MOS with the ITU-T E-model (G.107 / G.107.1 for wideband): an R-factor from delay, loss, jitter, codec impairment and echo, then mapped to MOS. A typical VoLTE KPI bar is MOS around 4.0 or better on AMR-WB or EVS in good radio.

Rate adaptation: CMR and ANBR

  • CMR (Codec Mode Request) is an in-band bit in the AMR or EVS payload telling the sender to change mode (bit rate). Either end, or a transcoder, can send it when loss or congestion appears.
  • ANBR (Access Network Bitrate Recommendation, TS 26.114 / TS 36.331 and the NR equivalents) is the RAN telling the UE a recommended uplink or downlink bit rate for the voice flow, typically after the gNB/eNB can no longer honour the GBR (notification control). The UE then issues a CMR or a bitrate recommendation toward the far end so the codec steps down before the air interface starts dropping frames.
  • Without adaptation, a cell-edge UE keeps sending 23.85 kbit/s AMR-WB into a fading uplink and the far end hears chopping. With CMR/ANBR the call stays intelligible at a lower mode.

Radio features that make VoLTE work

FeatureWhat it doesWhy voice needs it
ROHCPDCP compresses the 40 to 60 byte IP/UDP/RTP header to a few bytes.Without it, headers dominate a 20 ms AMR-WB packet and cell-edge uplink and capacity collapse.
SPS (semi-persistent scheduling)The eNB issues a periodic uplink or downlink grant (usually every 20 ms) instead of a fresh DCI every TTI.Voice is a 50 packet/s stream; SPS cuts PDCCH load and grant latency.
TTI bundlingThe UE repeats the same uplink transport block across 4 TTIs with incremental redundancy.Cell-edge uplink: more energy per packet without raising UE power beyond P-max.
C-DRXConnected-mode DRX aligned to the 20 ms voice period (on-duration around each grant).Saves battery between frames without missing SPS occasions or SIP on QCI 5.
RLC UMUnacknowledged mode: no RLC ARQ, no in-order stall waiting for a missing PDU.Late voice is useless voice. HARQ plus PLC plus CMR handle residual loss; RLC AM would add delay.

On NR the same ideas appear with different names: ROHC and RLC UM stay; SPS becomes configured grant or SPS-like periodic grants; TTI bundling becomes PUSCH repetition or slot aggregation; C-DRX is still tuned to 20 ms frames. See 5G NR for VoNR radio and EPS fallback.

VoLTE versus VoNR

AspectVoLTEVoNR
Access and coreLTE eNB, EPCNR gNB, 5GC SA (NSA still uses VoLTE on the LTE anchor)
QoSQCI 1 dedicated EPS bearer5QI 1 QoS flow inside the IMS PDU session
Policy chainP-CSCF, Rx, PCRF, Gx, P-GWP-CSCF, N5, PCF, N7, SMF, N4, UPF
SIP ladder and IMS coreSameSame (preconditions, PRACK, UPDATE)
RadioSPS, TTI bundling, C-DRX, ROHC, RLC UMConfigured grant, PUSCH repetition, C-DRX, ROHC, RLC UM; shorter slots if higher SCS
When coverage endsSRVCC to 2G/3G CS, or the call dropsEPS fallback at setup; VoNR-to-VoLTE handover in call; 5G-SRVCC is rare
MT idle behaviourMME paging, then LTE RRC setupAMF paging, or fast RRC_INACTIVE resume

Voice-centric versus data-centric usage setting

This is a UE setting (TS 24.301 for EPS, TS 24.501 for 5GS), not the same thing as the network's IMS VoPS bit.

  • Voice-centric UE: the user expects a phone. If the camped RAT cannot provide voice (IMS VoPS not indicated and CS fallback not usable), the UE disables that RAT for this PLMN and reselects to one that can (2G/3G from LTE, or EPS from 5GS). This is why a "good LTE" cell with no VoLTE and no CSFB still loses the UE to 3G.
  • Data-centric UE: the user expects data. The UE stays on LTE or NR even when voice is unavailable; a dial may fail or leave the RAT only for that call.
  • Voice domain preference (CS only, IMS PS only, CS preferred, IMS preferred) is a separate NAS parameter that chooses which voice domain to try first. Usage setting decides whether the UE is allowed to remain on a data-only RAT.
Common pitfall Treating "IMS voice over PS supported" and "voice-centric" as the same flag. IMS VoPS is a network indication in Attach/TAU/Registration Accept. Usage setting is a UE policy. Both must be read together to explain camping and fallback.
Analogy: a live interpreter on a noisy line

The jitter buffer is the interpreter waiting a beat so words arrive in order; wait too long and the conversation feels lagged (G.114). PLC is guessing a muffled syllable when one word is lost. CMR/ANBR is asking the other person to speak more slowly when the line fades, instead of shouting into static. ROHC is stripping the envelope so more of the airtime carries speech; SPS is a standing reservation every 20 ms so you do not raise your hand for every sentence; TTI bundling is repeating the same sentence four times at the cell edge; C-DRX is putting the handset down between sentences; RLC UM is refusing to stall the conversation until a missing word is re-sent. MOS is the listener's score after the call.

Interview angle Senior loops ask "Why is voice on RLC UM?", "What is SPS?", "How does the codec step down at the cell edge?" (CMR and ANBR), "What is a good mouth-to-ear number?" (G.114 ~150 ms), and "Why did this phone leave LTE for 3G when data still worked?" (voice-centric + no IMS VoPS). Tie each radio feature back to the 20 ms frame.

IMS roaming: S8HR versus local breakout

GSMA IR.65 and IR.92 describe two ways to keep IMS voice when the UE is in a visited PLMN. Do not call local breakout "the" standardised model. S8HR (S8 Home Routed) is the model most operators actually deploy, because the visited network only has to home-route the IMS APN over S8.

AspectS8HR (home-routed)LBO (local breakout)
P-GW / UPF and P-CSCFHome networkVisited network
IMS signalling and media pathUE to visited RAN/S-GW, then S8 to home P-GW and home P-CSCFLocal P-CSCF; IBCF interconnect to the home S-CSCF; media can stay local
What the VPLMN must supportS8 for APN ims, plus QoS for QCI 5 and QCI 1Visited IMS (P-CSCF/SBC), IBCF/TrGW, roaming interconnect, often a local ATCF
Service controlHome S-CSCF and TAS, as if the UE were at homeHome S-CSCF still controls services; P-CSCF adds P-Visited-Network-ID
Typical deploymentThe common live modelSpecified, far less common for VoLTE

S8HR drawbacks you should name

  • Emergency: the P-CSCF is in the home country, so routing urn:service:sos to the visited PSAP is awkward. Devices typically use CS emergency, an emergency APN with local breakout, or operator-specific S8HR emergency procedures. Interviewers treat "S8HR plus emergency" as a follow-up.
  • Lawful intercept: the visited operator sees GTP on S8, not clear SIP or easily isolated RTP. Home-country LI works; visited-country LI of the IMS session needs extra architecture or is simply incomplete.
  • No local ATCF: eSRVCC wants the ATCF/ATGW in the serving network, close to the UE. S8HR puts the P-CSCF at home, so a local ATCF is not inserted. Roaming eSRVCC is typically unavailable; a basic SRVCC transfer through the home SCC-AS has a long media path and a large voice gap, and many VPLMNs do not offer it.
  • Trombone delay: RTP hairpins through the home P-GW. Intercontinental S8 can spend a large part of the G.114 150 ms budget before the far end is even reached.

LBO avoids those four problems and is why it looks attractive on a whiteboard. It loses on operational cost: every visited partner needs an IMS interconnect, not just an S8 tunnel. That is why S8HR won in the field.

Analogy: calling home from a hotel phone versus the hotel's own switchboard

S8HR is using the hotel phone that still rings your office switchboard in your home city: simple for the hotel (one trunk), but emergency services, local police recording, and a fast transfer to a local taxi radio all stay awkward, and every word travels home and back. LBO is the hotel running its own switchboard and handing you to your office only for the features your office owns. In the real system the hotel trunk is S8, the home switchboard is the home P-CSCF and P-GW, and the local switchboard is a visited P-CSCF plus IBCF.

Interview angle Open with "S8HR is the common deployed model; LBO is specified but not what most roaming VoLTE uses." Then name the four S8HR costs (emergency, LI, no local ATCF, trombone). Bonus: 5G home-routed PDU sessions are the same idea with a V-SMF/V-UPF and N9/N16 toward the home SMF/UPF; see 5G NR.

Quick revision

  • IMS is the SIP-based service core that separates access (LTE, NR, Wi-Fi), transport (EPC/5GC) and service control.
  • P-CSCF: the UE's only SIP peer, IPsec endpoint, identity asserter, and the node that asks PCRF/PCF for the voice bearer.
  • I-CSCF: home-network entry; uses Cx UAR (registration) and LIR (terminating calls) to find the S-CSCF.
  • S-CSCF: registrar, authenticates with MAR, downloads the profile with SAR, runs iFC to invoke application servers.
  • HSS (UDM in 5G) stores IMPI/IMPU, AKA vectors, iFC, S-CSCF name, STN-SR and C-MSISDN.
  • TAS runs MMTel supplementary services; MRF handles announcements and conference mixing; BGCF/MGCF/IMS-MGW break out to the PSTN; IBCF guards interconnects.
  • IMS runs on a separate APN (ims): default bearer QCI 5 for SIP, dedicated GBR QCI 1 for voice, QCI 2 for video.
  • The P-CSCF address comes from the PCO (cellular) or the IKEv2 configuration payload (Wi-Fi).
  • Registration: REGISTER, 401 with AKA challenge, IPsec SA, protected REGISTER, 200 OK, third-party REGISTER, SUBSCRIBE reg event.
  • The IPsec SA is set up after the 401 using CK/IK; the P-CSCF strips CK/IK from the 401 before forwarding.
  • SQN out of range leads to a sync failure with AUTS and a fresh challenge; a MAC failure means the UE rejected the network.
  • MO ladder: INVITE, 100, 183 (SDP answer), PRACK, 200, bearer reserved, UPDATE, 200, 180, 200 OK, ACK, RTP, BYE, 200.
  • Preconditions stop the phone ringing before both sides have a QCI 1 bearer; failure gives 580 Precondition Failure.
  • PRACK makes a provisional response reliable (100rel, RSeq/RAck); UPDATE changes session state before answer.
  • MT differs by paging first and by the UE sending 183, then 180 after resources are ready, then 200 on answer.
  • Codecs: AMR-NB (narrowband), AMR-WB (HD Voice, mandatory for VoLTE), EVS (super-wideband/fullband, channel-aware mode).
  • CANCEL aborts an unanswered INVITE (callee returns 487); BYE ends an established dialog.
  • Hold is a re-INVITE with sendonly or inactive; resume uses sendrecv.
  • Call forwarding and barring are configured over Ut using XCAP (HTTP), often authenticated with GBA; the TAS enforces them.
  • Conference: INVITE to the conference factory URI, then REFER each party; transfer uses REFER.
  • SRVCC moves an active IMS call to 2G/3G CS via MME, Sv, MSC server and SCC-AS using STN-SR and C-MSISDN.
  • eSRVCC anchors media at the ATCF/ATGW in the serving network, cutting the voice gap to under about 300 ms.
  • aSRVCC covers the alerting phase, bSRVCC the pre-alerting phase, vSRVCC video, rSRVCC CS back to LTE.
  • VoWiFi: IKEv2/IPsec tunnel over SWu to the ePDG (EAP-AKA), S2b to the P-GW, then the same IMS; N3IWF in 5G.
  • LTE to Wi-Fi handover keeps the call because the P-GW keeps the same IMS IP when the request is handover type.
  • VoWiFi has no GBR bearer; it relies on DSCP EF and Wi-Fi WMM marking.
  • Emergency: emergency PDN, emergency registration, urn:service:sos, E-CSCF, LRF location, PSAP; 380 tells the UE to redial as emergency.
  • ViLTE adds an m=video line and a QCI 2 bearer; upgrade and downgrade are re-INVITEs.
  • RCS chat uses MSRP set up by SIP INVITE; capability discovery uses OPTIONS or presence; file transfer uses HTTP.
  • Transaction = request plus responses (Via branch + CSeq); dialog = Call-ID + From tag + To tag.
  • IMS T1 is 2 s on the UE, so Timer B and F are 128 s; large SIP requests should go over TCP.
  • PCC chain: P-CSCF Rx/N5 to PCRF/PCF, Gx/N7 to P-GW/SMF, dedicated bearer or QoS flow down to the eNB/gNB.
  • QCI 1 is conversational voice (GBR, 100 ms, 10-2 loss); QCI 5 is IMS signalling on the default bearer, with high scheduling priority relative to other default bearers such as QCI 9; ARP controls admission and pre-emption only.
  • On Android, the vendor ImsService provides MmTelFeature and RcsFeature; ImsPhone handles IMS calls in the framework.
  • G.114 mouth-to-ear target is about 150 ms; the QCI 1 PDB is only the network slice of that path.
  • Jitter buffer trades delay for smoothness; PLC hides isolated loss; MOS/E-model scores listening quality.
  • CMR (in-band) and ANBR (RAN bitrate recommendation) step the codec down at the cell edge.
  • VoLTE radio: ROHC, SPS, TTI bundling, C-DRX aligned to 20 ms, RLC UM (no ARQ stall).
  • VoNR keeps the same SIP ladder; QoS becomes a 5QI 1 flow, policy is N5/N7, coverage exit is EPS fallback or VoNR-to-VoLTE HO.
  • Voice-centric UE leaves a RAT that cannot provide voice; data-centric stays. Usage setting is not the IMS VoPS bit.
  • S8HR is the common IMS roaming model (home P-GW and P-CSCF). LBO is specified but not "the" GSMA model. S8HR costs: emergency, LI, no local ATCF, trombone delay.

Glossary

3GPP AAA server
Authenticates and authorises non-3GPP (Wi-Fi) access using EAP-AKA against the HSS.
AKA
Authentication and Key Agreement: SIM-based challenge-response that authenticates both sides and derives CK and IK.
AMR-WB
Adaptive Multi-Rate Wideband codec (50 to 7000 Hz), the baseline HD Voice codec for VoLTE.
ANBR
Access Network Bitrate Recommendation: the RAN tells the UE a recommended codec bit rate when the GBR cannot be honoured.
APN
Access Point Name: identifies a packet data network such as ims or internet.
ARP
Allocation and Retention Priority: decides bearer admission and pre-emption under congestion.
ATCF / ATGW
Access Transfer Control Function and Gateway: local anchors for signaling and media used by eSRVCC.
BGCF
Breakout Gateway Control Function: chooses where a call leaves IMS towards the PSTN.
C-MSISDN
Correlation MSISDN used by the SCC-AS to match the SRVCC transfer to the existing session.
CMR
Codec Mode Request: an in-band AMR/EVS signal asking the sender to change bit-rate mode.
CSFB
Circuit-Switched Fallback: an LTE UE without VoLTE moves to 2G/3G to make or receive a voice call.
Dedicated bearer
An on-demand EPS bearer, often GBR, with a TFT; voice uses a QCI 1 dedicated bearer.
Default bearer
The always-on non-GBR bearer created with each PDN connection; QCI 5 on the IMS APN.
Dialog
A long-lived SIP peer relationship identified by Call-ID, From tag and To tag.
DSCP
Differentiated Services Code Point: IP header marking for QoS; voice uses EF (46).
E-CSCF
Emergency CSCF: routes emergency sessions to the correct PSAP.
Early media
Media such as ringback tones or announcements sent before the call is answered.
ePDG
Evolved Packet Data Gateway: terminates the UE's IPsec tunnel over untrusted Wi-Fi and connects to the P-GW.
eSRVCC
Enhanced SRVCC with ATCF/ATGW anchoring for a shorter voice interruption.
EVS
Enhanced Voice Services codec: up to fullband audio, 5.9 to 128 kbit/s, robust channel-aware mode.
GBA
Generic Bootstrapping Architecture: reuses SIM AKA to create keys for HTTP services such as XCAP on Ut.
GBR
Guaranteed Bit Rate: a bearer or QoS flow with reserved capacity.
GRUU
Globally Routable User agent URI: addresses one specific device among several sharing an identity.
HSS
Home Subscriber Server: master subscriber database for identities, keys and service profiles.
I-CSCF
Interrogating CSCF: home-network entry point that finds the right S-CSCF using the HSS.
IBCF
Interconnection Border Control Function: border towards other IMS networks.
iFC
Initial Filter Criteria: rules in the user profile telling the S-CSCF which application servers to invoke.
IKEv2
Internet Key Exchange version 2: sets up the IPsec tunnel between the UE and ePDG.
IMPI
IP Multimedia Private Identity: the authentication identity, never used for routing.
IMPU
IP Multimedia Public Identity: SIP or tel URI used to reach the user.
IMS
IP Multimedia Subsystem: the 3GPP SIP-based core for voice, video and messaging over IP.
ISIM
IMS Subscriber Identity Module: SIM application holding IMS identities and the home domain.
Jitter buffer
Receiver buffer that absorbs packet delay variation so voice frames play at a steady cadence.
LBO
Local breakout IMS roaming: visited P-GW and P-CSCF, with IBCF interconnect to the home S-CSCF. Specified, not the usual live model.
LRF
Location Retrieval Function: provides location and PSAP routing for emergency calls.
MGCF
Media Gateway Control Function: converts SIP to ISUP/BICC and controls the IMS-MGW.
MMTel
Multimedia Telephony: the IMS voice and video service with its supplementary services.
MOS
Mean Opinion Score: 1-to-5 listening-quality rating, often predicted from the E-model (ITU-T G.107).
MRF
Media Resource Function: announcements, tones, conference mixing and transcoding.
MSRP
Message Session Relay Protocol: carries RCS chat and file content in sessions set up by SIP.
N3IWF
Non-3GPP Interworking Function: 5G equivalent of the ePDG.
P-CSCF
Proxy CSCF: the UE's first and only SIP contact point in IMS.
PCO
Protocol Configuration Options: NAS container that delivers the P-CSCF address and DNS during PDN setup.
PCRF / PCF
Policy and Charging Rules Function (LTE) / Policy Control Function (5G): turn session information into QoS rules.
PLC
Packet Loss Concealment: the decoder invents a plausible frame when an RTP packet is lost.
PRACK
Provisional Response Acknowledgement: makes a 1xx response such as 183 reliable.
Precondition
SDP mechanism that delays alerting until QoS resources are reserved on both sides.
PSAP
Public Safety Answering Point: the emergency call centre.
QCI / 5QI
QoS Class Identifier (LTE) / 5G QoS Identifier: a number standing for delay, loss and priority characteristics.
RCS
Rich Communication Services: GSMA rich messaging over IMS.
ROHC
Robust Header Compression: shrinks IP/UDP/RTP headers over the radio for voice efficiency.
RTP / RTCP
Real-time Transport Protocol carries media; its control protocol reports loss, jitter and delay.
S-CSCF
Serving CSCF: registrar and session controller that runs iFC.
S8HR
S8 Home Routed: the common IMS roaming model; P-GW and P-CSCF stay in the home network and the IMS APN is hauled over S8.
SBC
Session Border Controller: edge product providing security, NAT traversal and topology hiding, often hosting the P-CSCF.
SCC-AS
Service Centralization and Continuity Application Server: anchors sessions for access transfer and SRVCC.
SDP
Session Description Protocol: describes media addresses, ports, codecs and direction.
SIP
Session Initiation Protocol: text-based signaling that creates, modifies and ends sessions.
SPS
Semi-Persistent Scheduling: a periodic radio grant (usually every 20 ms) used for VoLTE instead of a fresh DCI every TTI.
SRVCC
Single Radio Voice Call Continuity: hands an active IMS call to the 2G/3G CS domain.
STN-SR
Session Transfer Number for SRVCC: routes the MSC server's transfer INVITE to the SCC-AS or ATCF.
TAS
Telephony Application Server: runs MMTel supplementary services.
TFT
Traffic Flow Template: packet filters mapping IP flows onto a bearer.
Transaction
One SIP request and all its responses, matched by the Via branch and CSeq.
Ut
Interface between the UE and the TAS/XCAP server for supplementary service settings.
Usage setting
UE policy, voice-centric or data-centric, that decides whether the UE may stay on a RAT that cannot provide voice. Not the same as the network IMS VoPS indication.
ViLTE
Video over LTE: IMS video calling with a dedicated video bearer.
VoLTE / VoNR / VoWiFi
IMS voice over LTE, over 5G NR, and over Wi-Fi.
XCAP
XML Configuration Access Protocol: HTTP-based reading and writing of XML settings documents.

Interview questions

Fundamentals

What is IMS and what problem does it solve?

IMS (IP Multimedia Subsystem) is a 3GPP, SIP-based control framework for real-time voice, video and messaging over IP. LTE has no circuit-switched domain, so operators needed carrier-grade voice over packets with guaranteed QoS, supplementary services, emergency calls, charging and roaming. IMS separates service control from access and transport, so one core serves VoLTE, VoNR and VoWiFi.

What are VoLTE, VoNR and VoWiFi, and how are they related?

All three are the same IMS voice service over different access: VoLTE over LTE radio with a QCI 1 bearer, VoNR over 5G SA with a 5QI 1 QoS flow, VoWiFi over Wi-Fi through an IPsec tunnel to the ePDG (or N3IWF). The SIP signaling, the IMS core and the call ladder are the same; only the access leg and QoS mechanism change.

Explain the roles of the P-CSCF, I-CSCF and S-CSCF.
  • P-CSCF: the UE's only SIP peer; IPsec endpoint, asserts identity, talks to PCRF/PCF for the voice bearer, detects emergency calls; often inside an SBC.
  • I-CSCF: entry to the home network; queries the HSS (UAR, LIR) to find or assign the S-CSCF.
  • S-CSCF: registrar and session controller; authenticates the user, downloads the profile, runs iFC to invoke application servers, routes calls.
What does the HSS store and which interfaces does it use?

IMPI and IMPU identities, AKA authentication vectors (from the shared key K), the service profile with iFC, the assigned S-CSCF name, and SRVCC data (STN-SR, C-MSISDN). It uses Cx (Diameter) to the I/S-CSCF, Sh to application servers, and S6a to the MME. An SLF picks the right HSS if there are several. In 5G the UDM/UDR take this role.

What is the TAS?

The Telephony Application Server (MMTel AS) runs supplementary services such as call forwarding, barring, call waiting, hold, conference, CLIP/CLIR and transfer. The S-CSCF sends calls to it over ISC when the user's iFC match. It also hosts the XCAP server for the Ut interface.

What is the IMS APN and why is it separate from the internet APN?

A dedicated PDN connection (APN ims) carrying only IMS signaling and media. It is isolated so it can get its own QoS and security policy, reach the private P-CSCF, be charged separately, and keep working when the user disables mobile data or runs out of allowance. It is usually IPv6.

Which QCI values does VoLTE use?

Do not invert them. QCI 1 is conversational voice: a GBR dedicated bearer (100 ms delay budget, 10-2 loss). QCI 5 is IMS SIP signalling on the default bearer of the IMS APN (non-GBR, 100 ms). QCI 5's scheduling priority (1 among QCI 1–9) is high relative to other default bearers such as QCI 9 internet; voice quality is protected by the GBR reservation, not by treating QCI 5 as "the voice bearer". Video adds QCI 2. VoNR uses the same numbers as 5QI.

How is the P-CSCF address discovered?

On cellular, from the PCO (Protocol Configuration Options) in the PDN connectivity or PDU session establishment response. Alternatives are DHCPv6/DHCP plus DNS, or static configuration. Over VoWiFi, it comes in the IKEv2 configuration payload from the ePDG. Without a P-CSCF, registration cannot start.

Give a high-level walkthrough of IMS registration.

Bring up the IMS PDN, get the P-CSCF from PCO, send REGISTER, receive 401 with an AKA challenge, the ISIM computes RES and CK/IK, IPsec SAs are set up with the P-CSCF, send the protected REGISTER, receive 200 OK, the S-CSCF does third-party registration to application servers, the UE subscribes to the reg event, and it re-registers before expiry.

What is the difference between IMPI and IMPU?

The IMPI (private identity) is used only for authentication and looks like an NAI (for example, imsi@ims.mncXXX.mccYYY.3gppnetwork.org). The IMPU (public identity) is a SIP or tel URI others use to call you. One IMPI can have several IMPUs, and IMPUs in an implicit registration set are registered together.

What is an ISIM and what happens if the SIM has none?

The ISIM is a SIM application with IMS identities (EF_IMPI, EF_IMPU, EF_DOMAIN) and AKA credentials. If absent, the UE uses the USIM and derives a temporary IMPI and IMPU from the IMSI (and the home domain from MCC/MNC), then runs AKA with the USIM.

List the main messages in a VoLTE mobile-originated call.

INVITE (SDP offer), 100 Trying, 183 Session Progress (SDP answer), PRACK, 200 OK for PRACK, dedicated bearer set up, UPDATE (precondition met), 200 OK for UPDATE, 180 Ringing, 200 OK for INVITE, ACK, then RTP. To end: BYE and 200 OK.

What is the difference between 180 Ringing and 183 Session Progress?

180 means the callee is being alerted. 183 carries session progress information, usually SDP, before alerting. In VoLTE the 183 carries the SDP answer and drives precondition handling; it can also carry early media such as announcements.

What is SDP?

Session Description Protocol, the body inside SIP that describes media: connection address (c=), media lines with ports and payload types (m=), codec mapping (a=rtpmap), codec parameters (a=fmtp), direction (sendrecv etc.), bandwidth and precondition attributes. It follows the offer/answer model.

What carries the actual voice in VoLTE?

RTP over UDP over IP on the QCI 1 bearer, typically one 20 ms codec frame per packet (50 packets per second), with RTCP for quality reports. Headers are compressed over the air with ROHC. Codecs are AMR-WB, EVS or AMR-NB.

Which codecs are used in VoLTE and VoNR?

AMR-NB (narrowband legacy), AMR-WB (wideband "HD Voice", mandatory in GSMA IR.92) and EVS (up to super-wideband/fullband, 5.9 to 128 kbit/s, with channel-aware mode for lossy radio). DTMF uses RTP telephone-event.

What protocol and ports does SIP use?

UDP, TCP, or TLS (SIPS). Default port 5060 (5061 for TLS). In IMS, the UE and P-CSCF use protected client and server ports agreed during the security negotiation, with IPsec ESP on top. Large messages should use TCP.

What is SRVCC in one sentence?

Single Radio Voice Call Continuity hands an active IMS voice call from LTE (or NR) to the 2G/3G circuit-switched domain when the UE leaves IMS voice coverage, so the call does not drop.

What is VoWiFi and how does the UE reach IMS over Wi-Fi?

VoWiFi is IMS voice over Wi-Fi. The UE builds an IKEv2/IPsec tunnel over any internet connection to the operator's ePDG (authenticated with EAP-AKA using the SIM), the ePDG connects to the P-GW over S2b, and the UE then registers and calls with the same IMS core as VoLTE.

What is the ePDG?

The Evolved Packet Data Gateway terminates IPsec tunnels from UEs on untrusted non-3GPP access (the SWu interface), authenticates them via the 3GPP AAA server with EAP-AKA, and connects them to the P-GW over S2b so they can use operator APNs like ims.

What is ViLTE?

Video over LTE: an IMS call whose SDP includes an m=video line (H.264/H.265) as well as audio. Video gets its own dedicated bearer (QCI 2 in the standard model) while voice stays on QCI 1. Adding or removing video is done with a re-INVITE.

What is RCS?

Rich Communication Services, the GSMA standard for rich messaging over IMS (Universal Profile): one-to-one and group chat, file transfer, delivery and read receipts, typing indicators and business messaging. Chat uses MSRP sessions set up with SIP; file transfer uses HTTP; capability discovery uses SIP OPTIONS or presence.

How does a UE put a call on hold?

It sends a re-INVITE (or UPDATE) inside the dialog with SDP a=sendonly (or a=inactive); the other side answers with recvonly (or inactive). To resume, it sends a=sendrecv. The network may play hold music via the TAS/MRF.

What is the difference between CANCEL and BYE?

CANCEL aborts an INVITE that has not had a final response (the call is still ringing); the callee returns 487 Request Terminated for the INVITE. BYE ends a dialog that is already established (after 200 OK and ACK).

What is an SBC and why is it placed in front of the IMS core?

A Session Border Controller is an edge product that provides security (DoS protection, message screening), topology hiding, NAT traversal, protocol normalisation, media anchoring and sometimes transcoding. It usually implements the P-CSCF towards UEs and the IBCF towards other operators, protecting the core.

What does "IMS voice over PS supported" mean?

It is an indication in the LTE attach/TAU accept (or 5G registration accept) telling the UE whether the network supports IMS voice in this area. If it is not set, the UE should not use VoLTE there and will use CSFB or another domain for voice. It is a network capability bit, not the UE's voice-centric or data-centric usage setting.

What is G.114 and what delay should you quote for VoLTE?

ITU-T G.114 recommends one-way mouth-to-ear delay under about 150 ms if users are not to notice it; 150 to 400 ms is usable with growing annoyance. That number includes codec, packetization, air interface, core, and the jitter buffer. The QCI 1 / 5QI 1 packet delay budget of 100 ms is only the network part of the path.

Going deeper

What is the iFC and how does the S-CSCF use it?

Initial Filter Criteria are trigger rules in the user's service profile, downloaded from the HSS at registration (SAR/SAA). Each rule has a priority, a trigger point (conditions on SIP method, headers, Request-URI, session case such as originating or terminating) and a target application server with default handling if it does not respond. When a request matches, the S-CSCF forwards it over ISC to that AS (for example, the TAS), which returns it for further processing.

Explain IMS-AKA in detail.

The S-CSCF gets an authentication vector (RAND, AUTN, XRES, CK, IK) from the HSS via MAR/MAA. It sends RAND and AUTN in the nonce of a 401 and gives CK/IK to the P-CSCF. The ISIM verifies AUTN (authenticating the network and checking the sequence number), computes RES and derives CK and IK. RES is used as the digest password (AKAv1-MD5) in the second REGISTER; the S-CSCF compares it with XRES. CK/IK set up the IPsec SAs between UE and P-CSCF.

What happens on an AKA sequence number synchronisation failure?

If the SQN in AUTN is outside the SIM's accepted window, the SIM generates an AUTS token. The UE sends a REGISTER with the auts parameter. The S-CSCF passes RAND and AUTS to the HSS in a new MAR; the HSS resynchronises its SQN and sends fresh vectors; the S-CSCF issues a new 401 challenge.

How are the IPsec security associations negotiated in IMS registration?

Using the security agreement mechanism (RFC 3329, sec-agree). The UE lists supported algorithms, SPIs and protected ports in Security-Client. The P-CSCF returns its choice in Security-Server with the 401. Both derive keys from CK/IK and create two pairs of ESP SAs. The UE then sends the second REGISTER over the SAs with Security-Verify echoing the server's list, which protects against downgrade attacks.

What is third-party registration?

After a successful registration, the S-CSCF evaluates iFC for REGISTER and sends a REGISTER on the user's behalf to the matching application servers (for example, the TAS, SMS-over-IP AS or RCS AS). They learn the user is online and can get registration details, sometimes including the original REGISTER body.

Why does the UE subscribe to the reg event package?

So the network can tell it about changes to its own registration: network-initiated de-registration (for example, after an HSS change or S-CSCF restart), requests to re-authenticate, or other contacts registered for the same IMPU. Without it, the UE could think it is registered while the network has dropped it. The P-CSCF also subscribes to clean up its state.

What headers come back in the 200 OK to REGISTER and why do they matter?
  • Service-Route: the UE must put these in Route for originating requests so they reach its S-CSCF.
  • P-Associated-URI: the registered IMPUs; the first is usually the default identity.
  • Expires (or Contact expires): the granted registration time, driving re-registration.
  • Optionally GRUUs (pub-gruu, temp-gruu).
Why are preconditions (183, PRACK, UPDATE) used in VoLTE?

To make sure QoS resources (the QCI 1 bearers) are reserved at both ends before the callee is alerted. This prevents a phone ringing and being answered when there is no media path, and lets the call fail cleanly with 580 Precondition Failure if resources cannot be reserved. UPDATE tells the peer that local resources are now ready.

What is PRACK and why is it needed?

Provisional responses (1xx) are normally unreliable over UDP. RFC 3262 lets a UA send a provisional response reliably (with Require: 100rel and an RSeq); it is retransmitted until the other side sends PRACK with a matching RAck. VoLTE needs this for the 183 carrying the SDP answer, since losing it would break precondition negotiation.

When and how is the QCI 1 dedicated bearer created during a call?

When the P-CSCF sees the SDP offer/answer (typically on the 183), it sends a Diameter Rx AAR with the media components to the PCRF. The PCRF builds a PCC rule (QCI 1, GBR/MBR, ARP, packet filters) and sends it via Gx RAR to the P-GW, which sends Create Bearer Request through the S-GW to the MME. The MME asks the eNB to set up the E-RAB and sends Activate Dedicated EPS Bearer Context Request with the TFT to the UE. This happens on both originating and terminating sides.

How does the mobile-terminated flow differ from mobile-originated?

If the callee is idle, the INVITE arriving at the P-GW triggers downlink data notification and paging, so the UE first returns to connected mode. The terminating S-CSCF runs terminating iFC (forwarding, call waiting). The UE sends 183 with the SDP answer, handles the incoming PRACK and UPDATE, then sends 180 once resources are ready and 200 OK when the user answers; it receives the ACK.

What is the difference between a SIP transaction and a dialog?

A transaction is one request and all its responses, matched by the top Via branch and CSeq method. A dialog is the ongoing relationship between two UAs, identified by Call-ID plus From tag plus To tag; it is created by a 2xx (or a reliable 1xx creating an early dialog) to INVITE, spans many transactions such as PRACK, UPDATE and re-INVITE, and ends with BYE.

What do Route and Record-Route do?

A proxy that wants to see all later requests in a dialog adds itself in Record-Route on the initial request. Both endpoints store the route set and put it in Route headers for later in-dialog requests (re-INVITE, BYE), so they pass through the same P-CSCF and S-CSCF. Service-Route and Path are the registration-time equivalents.

Explain the SDP offer/answer model.

RFC 3264: the offerer lists media streams, codecs, addresses and ports; the answerer picks what it accepts (one codec per stream in VoLTE) and gives its own address. Only one offer can be outstanding. If the INVITE has no SDP, the offer comes in the reliable response and the answer in PRACK or ACK. Port 0 rejects a stream. Direction attributes control hold.

What do P-Asserted-Identity and P-Preferred-Identity do?

The UE can indicate which of its IMPUs to use in P-Preferred-Identity. The P-CSCF checks it against the registered set and replaces it with P-Asserted-Identity, a network-verified identity trusted inside the IMS core and used for caller ID, charging and services. With CLIR, Privacy: id tells the terminating side not to show it.

What is P-Access-Network-Info used for?

It carries the access type (for example, 3GPP-E-UTRAN-FDD, 3GPP-NR, IEEE-802.11) and the cell ID or Wi-Fi information. The network uses it for charging, lawful intercept, service decisions (for example, Wi-Fi-specific rules) and emergency location. After an LTE and Wi-Fi handover, the UE updates it with a re-REGISTER or in-dialog request.

How do CLIP and CLIR work at the SIP level?

The caller's identity is in P-Asserted-Identity (and From). CLIP simply presents it. CLIR adds Privacy: id (and often From: "Anonymous" <sip:anonymous@anonymous.invalid>); the terminating P-CSCF or TAS removes the identity before delivering to the callee. The default CLIR setting is stored on the TAS via XCAP.

How are call transfer and conference signalled?

Transfer uses REFER: the transferor sends REFER with Refer-To set to the target (blind), or with a Replaces parameter for consultative transfer; the transferee INVITEs the target and reports progress with NOTIFY. Conference: the UE INVITEs the conference factory URI on the TAS (the MRF mixes media), then sends REFER for each existing call so the server invites those parties; the UE can subscribe to the conference event package.

What is the Ut interface and XCAP?

Ut is the interface between the UE and the TAS/XCAP server used to read and change supplementary service settings (forwarding, barring, CLIR default, network call waiting). XCAP maps XML document nodes to HTTP URIs: GET reads, PUT writes, DELETE removes. Authentication is typically GBA or HTTP digest.

What is the difference between default and dedicated bearers?

A default bearer is created with each PDN connection, is always on and non-GBR, and carries any traffic not matched elsewhere; no TFT is required. A dedicated bearer is created on demand for specific flows, can be GBR, and uses a TFT to capture its packets. In VoLTE, SIP rides the IMS default bearer (QCI 5) and voice rides a dedicated QCI 1 bearer.

What is a TFT?

A Traffic Flow Template is a set of packet filters (remote and local IP, ports, protocol, direction) attached to a bearer. The UE applies uplink filters and the P-GW applies downlink filters so that, for example, RTP to the far end's IP and port goes on the QCI 1 bearer. A wrong TFT can leave media on the wrong bearer or dropped in one direction.

What is ARP and how does it differ from QCI?

ARP (Allocation and Retention Priority) decides whether a bearer is admitted and whether it can pre-empt or be pre-empted when resources are short. QCI (or 5QI) decides how packets are treated once admitted: delay budget, loss rate, scheduling priority. An emergency call has high ARP so it gets resources; its packets still get QCI 1 treatment.

How do SRVCC and eSRVCC differ?

In basic SRVCC, the MSC server's transfer INVITE goes to the SCC-AS in the home network, which re-INVITEs the remote party with the new media address; that path can be long, especially when roaming, so the voice gap is large. eSRVCC places the ATCF (signaling) and ATGW (media) in the serving network at call setup. At SRVCC time only the local leg changes at the ATGW, the remote side is untouched, and the interruption is typically under 300 ms.

What are STN-SR and C-MSISDN?

Both are SRVCC subscription data sent from the HSS to the MME. STN-SR (Session Transfer Number for SRVCC) is the number the MSC server dials to reach the SCC-AS (or the ATCF for eSRVCC) for the transfer. C-MSISDN (Correlation MSISDN) lets the SCC-AS/ATCF match the transfer request with the user's existing IMS session.

What are SWu, S2a and S2b?

SWu is the IKEv2/IPsec interface between the UE and the ePDG over untrusted Wi-Fi. S2b connects the ePDG to the P-GW (GTPv2 or PMIPv6). S2a connects a trusted WLAN gateway (TWAG) directly to the P-GW, with no ePDG, for operator-controlled Wi-Fi.

How is the UE authenticated when setting up VoWiFi?

Twice. First, the IKEv2 tunnel to the ePDG uses EAP-AKA (via the 3GPP AAA server and HSS) with the SIM credentials. Second, inside the tunnel, the normal IMS registration runs IMS-AKA with the S-CSCF, and IPsec SAs are set up with the P-CSCF, so SIP travels inside two layers of IPsec.

What are the Wi-Fi calling preference modes?

Wi-Fi preferred (use Wi-Fi when good), cellular preferred (use VoLTE; Wi-Fi only without usable cellular) and Wi-Fi only (never cellular voice). Operators may add roaming-specific modes. The UE's policy, thresholds and operator rules (carrier config, ANDSF, URSP) decide the actual access.

How does an IMS emergency call differ from a normal VoLTE call?

It uses a separate emergency PDN (request type emergency) with high ARP, an emergency registration (Contact with sos) or none at all (anonymous emergency call), a Request-URI of urn:service:sos, routing by the P-CSCF to the E-CSCF in the serving network (not the home S-CSCF), location from PANI, Geolocation/PIDF-LO or LRF, and PSAP selection by the LRF. It can fall back to CS emergency.

What is early media and what problems can it cause?

Media sent before answer, such as operator ringback tones or announcements, signalled with SDP in a 18x and authorised with P-Early-Media. Problems: the UE plays local ringback while the network sends early media (double audio), or mutes early media and the user hears silence; charging disputes; clipping of the start of the call when switching from early to final media.

What is a jitter buffer, and how does it trade off against delay?

It is a receiver buffer that holds incoming RTP frames so they can be played at a steady 20 ms cadence despite delay variation. A deeper buffer hides more jitter and gives EVS channel-aware redundancy time to arrive, but it adds mouth-to-ear delay and can breach the G.114 ~150 ms target. Adaptive buffers grow when arrival variance is high and shrink when the path is stable.

Voice-centric versus data-centric: what is the usage setting?

A UE policy (TS 24.301 / 24.501), not the IMS VoPS bit. A voice-centric UE must have a voice domain: if the camped RAT cannot provide IMS voice and CS fallback is not usable, it disables that RAT for the PLMN and reselects (LTE to 2G/3G, or 5GS to EPS). A data-centric UE stays on the data RAT even without voice. Voice domain preference (CS only, IMS only, CS preferred, IMS preferred) is a separate parameter that chooses which domain to try first.

How does VoLTE differ from VoNR?

The SIP ladder, IMS core and codecs are the same. VoLTE uses a QCI 1 EPS bearer and Rx/Gx on LTE/EPC. VoNR uses a 5QI 1 QoS flow in the IMS PDU session and N5/N7 on NR/5GC SA. Radio names change (SPS and TTI bundling versus configured grant and PUSCH repetition). Coverage exit is SRVCC on VoLTE, versus EPS fallback at setup or VoNR-to-VoLTE handover in call. NSA does not do VoNR; voice stays VoLTE on the LTE anchor.

Advanced

Walk through the full Cx Diameter exchange across registration and a terminating call.
  • UAR/UAA (I-CSCF): is this user allowed to register, and which S-CSCF (or which capabilities) serves them?
  • MAR/MAA (S-CSCF): fetch authentication vectors; also used with AUTS for resynchronisation.
  • SAR/SAA (S-CSCF): register the S-CSCF as serving and download the user profile with iFC; also used at de-registration.
  • LIR/LIA (I-CSCF on terminating requests): which S-CSCF currently serves this IMPU?
  • PPR/PPA (HSS-initiated): push an updated profile.
  • RTR/RTA (HSS-initiated): force de-registration.
Where do CK and IK travel during registration, and why does the P-CSCF strip them?

The HSS sends CK and IK to the S-CSCF in the MAA. The S-CSCF puts them in the 401 (as ck and ik parameters in WWW-Authenticate) towards the P-CSCF over the trusted core. The P-CSCF stores them to build the IPsec SAs and removes them before forwarding the 401 to the UE, because the UE derives them itself from the ISIM and they must never cross the radio in clear text.

Describe the SDP precondition attributes and how they evolve during call setup.

a=curr gives the current QoS status (local and remote, none/send/recv/sendrecv), a=des the desired status and strength (mandatory, optional, none), and a=conf asks the peer to report when its status changes. In the INVITE, UE-A says local current none, desired mandatory. UE-B's 183 answers with its own status and may request confirmation. Once each side's bearer is up, it sends UPDATE (or the answer to it) with a=curr:qos local sendrecv. When the desired status is met on both sides, UE-B alerts and sends 180.

What are aSRVCC, bSRVCC and mid-call SRVCC, and why were they needed?

Basic SRVCC only transferred a single active, answered call. aSRVCC (Rel-10) transfers calls in the alerting phase (180 sent or received but unanswered), so a user walking out of coverage while the phone rings does not lose the call. bSRVCC (Rel-11) covers the pre-alerting phase (after INVITE but before 180). Mid-call SRVCC (Rel-10) transfers held calls and conference state, which requires the MSC to understand multiple sessions.

How does the ATCF become part of the session so eSRVCC can work?

At registration, the P-CSCF routes REGISTER through the ATCF (in the serving network), which adds itself to the Path and allocates an STN-SR that it provides to the SCC-AS; the SCC-AS updates the HSS/MME with this ATCF STN-SR. At call setup, the ATCF stays in the signaling path and decides whether to anchor media at the ATGW. During SRVCC, the MSC server sends the transfer INVITE to that STN-SR; the ATCF correlates it with the session and switches the ATGW media from the PS leg to the CS leg, without changing the remote side.

Explain in detail how a VoLTE to VoWiFi handover preserves the IMS IP address.

The IMS PDN is anchored at the P-GW, and the HSS/AAA stores which P-GW serves the IMS APN for this UE. When the UE sets up the IKEv2 tunnel, it includes the IMS APN and its current IP (a handover indication) in IKE_AUTH. The ePDG, via AAA, selects the same P-GW and sends Create Session Request with the Handover Indication. The P-GW recognises an existing session and moves it to S2b, keeping the same IP, then releases the LTE bearers. Because the Contact IP is unchanged, the SIP registration and dialog continue; the UE updates PANI with a re-REGISTER or re-INVITE.

What is the difference between trusted and untrusted non-3GPP access?

The operator decides whether a Wi-Fi network is trusted. Untrusted access (most public and home Wi-Fi) requires the UE to build an IPsec tunnel to the ePDG (N3IWF in 5G), so the operator does not rely on the Wi-Fi network's security. Trusted access (operator-controlled Wi-Fi with strong link security such as EAP-AKA over 802.1X) connects through a TWAG over S2a (TNGF in 5G) without an extra UE tunnel.

How do the Rx and Gx interfaces cooperate during a VoLTE call?

On Rx the P-CSCF (application function) sends an AAR with media components derived from SDP (flow descriptions, codec, bandwidth, media type). The PCRF authorises it, derives a PCC rule and pushes it on Gx (RAR) to the PCEF in the P-GW, which triggers dedicated bearer creation. The P-CSCF also subscribes to events such as loss of bearer or change of access network; the PCRF reports them in RAR towards the P-CSCF. At call end, the P-CSCF sends STR and the PCRF removes the rule, deleting the bearer.

How does 5G QoS differ from LTE bearers for voice?

In 5G, QoS flows identified by QFI replace dedicated EPS bearers. All flows of a PDU session share one N3 GTP-U tunnel with the QFI marked in each packet; the SDAP layer maps flows onto DRBs, possibly several flows per DRB. The P-CSCF uses N5 (or Rx) to the PCF, which uses N7 to the SMF; the SMF programs the UPF (N4) and the gNB (via AMF/N2). VoNR voice uses 5QI 1, signaling 5QI 5. Reflective QoS can also let the UE derive uplink rules from downlink packets.

Why do IMS UEs use a T1 of 2 seconds, and what are the consequences?

Radio links have longer and more variable round-trip times, including paging and connection setup, so TS 24.229 recommends T1 = 2 s (T2 = 16 s, T4 = 17 s) for the UE instead of RFC 3261's 500 ms. Retransmissions are therefore less aggressive, saving radio resources, but Timer B and F become 128 s. If a P-CSCF is dead, it takes longer to detect, so UEs often have operator-specific timers for switching to a backup P-CSCF.

When should the UE switch SIP from UDP to TCP, and why does this matter for IMS?

RFC 3261 section 18.1.1 says a request within 200 bytes of the path MTU (or over 1300 bytes if MTU is unknown) must go over a congestion-controlled transport such as TCP. IMS messages with many headers, SDP with several codecs, and IPsec overhead easily exceed this. Fragmented UDP over IPsec is often dropped by middleboxes, causing registration or INVITE timeouts, so correct TCP switching (and correct MTU from PCO) is an important interoperability item.

What is GRUU and why does IMS need it?

A Globally Routable User agent URI identifies a specific device instance among several registered under the same IMPU (for example, a phone and a watch sharing a number). It is built from the +sip.instance identifier (often IMEI-based). Public GRUUs are stable; temporary GRUUs hide identity. IMS uses them to target a specific device for transfer, conferencing and multi-device scenarios.

What happens when two INVITEs or re-INVITEs collide (glare)?

If a UA receives a re-INVITE while its own offer is outstanding in the same dialog, it replies 491 Request Pending. Each side waits a random time (the Call-ID owner waits 2.1 to 4 s, the other 0 to 2 s) before retrying, which resolves the collision. It commonly appears during simultaneous hold/resume or session refresh plus codec change.

How do session timers and RTP inactivity timers differ?

Session timers (RFC 4028, Session-Expires, Min-SE, refresher role) are signaling-level: one side must refresh the dialog with re-INVITE or UPDATE before expiry, or the call is torn down with BYE. RTP inactivity timers are media-level: if no RTP/RTCP arrives for a set time, the UE or network ends the call. The first catches dead signaling paths; the second catches dead media paths (for example, after a failed handover).

How does IMS interwork with the PSTN for a call to a landline?

The S-CSCF (after ENUM/number analysis finds no IMS user) sends the INVITE to the BGCF, which selects an MGCF in its own network or forwards to another network's BGCF. The MGCF converts SIP to ISUP or BICC towards the PSTN and controls the IMS-MGW over H.248 to convert RTP to TDM. SIP responses are mapped from ISUP messages (ACM to 180, ANM to 200, REL causes to SIP codes).

Why is EVS channel-aware mode useful, and what are its limits?

At 13.2 kbit/s, channel-aware mode sends a partial redundant copy of an earlier frame inside a later packet. If a packet is lost, the receiver can rebuild it from the redundant copy after the jitter buffer delay, improving quality at the cell edge or on lossy Wi-Fi. It costs some quality at zero loss and needs a deeper jitter buffer; both ends and the network must support EVS, or transcoding may remove the benefit.

How does SMS over IP work?

The UE sends the 3GPP SMS PDU (RP-DATA) inside a SIP MESSAGE with content type application/vnd.3gpp.sms. The S-CSCF uses iFC to route it to the IP-SM-GW, which interworks with the SMSC. Delivery reports come back in another MESSAGE. The UE shows support with the +g.3gpp.smsip feature tag at registration.

How does terminating access domain selection (T-ADS) work?

For an incoming call, the SCC-AS decides whether to deliver it over IMS (PS) or CS. It considers IMS registration state, whether the current access supports IMS voice (IMS VoPS, obtained from the HSS/MME), the UE's capabilities and operator policy. If IMS voice is not possible (for example, the UE is in an LTE area without VoPS), it routes the call to CS via the CS Routing Number so the UE receives it by CSFB or on 2G/3G.

What changes in IMS when the UE is roaming?

The common deployed model is S8HR (S8 Home Routed), described in GSMA IR.65 and IR.92: the IMS APN is home-routed, so the P-GW and P-CSCF stay in the home network and behaviour looks like a home call, but media trombones over S8. Do not call local breakout "the" GSMA-standardised model; IR.65 defines both, and S8HR is what most operators actually turn on. LBO puts the P-GW and P-CSCF in the visited network, adds P-Visited-Network-ID, keeps the home S-CSCF for service control, and uses IBCFs for interconnect. S8HR drawbacks: emergency routing to the visited PSAP is harder, visited-country lawful intercept of IMS is limited, there is no local ATCF so eSRVCC while roaming is typically unavailable, and mouth-to-ear delay grows on long S8 paths.

What does the P-CSCF do when the UE's voice bearer is lost mid-call?

It learns about it through the Rx event subscription (loss of bearer from the PCRF). Depending on operator policy, it may wait briefly for recovery (for example, during a handover), then send BYE towards both parties with a Reason header, or let the UE decide. On the UE side, the modem reports the bearer or PDN loss, and the IMS stack ends or tries to recover the call.

How does the network handle an emergency call from a UE with no SIM?

Where local regulations allow, the UE performs an emergency attach (identified by IMEI), gets an emergency PDN, and sends an unauthenticated emergency INVITE to urn:service:sos without IMS registration. The P-CSCF recognises it and routes to the E-CSCF, which obtains location via the LRF and routes to the PSAP. No callback number is available, which is why some countries forbid SIM-less emergency calls.

What is the role of the SCC-AS beyond SRVCC?

It anchors all IMS sessions of a user that may need continuity: PS-to-CS transfer (SRVCC), CS-to-PS (rSRVCC), terminating access domain selection, and support for ICS (IMS Centralized Services, where CS-attached users get IMS services). Because the remote leg stays anchored at the SCC-AS, the access leg can be replaced without the far end noticing.

Which radio optimizations does VoLTE depend on, and why is voice on RLC UM?

ROHC shrinks IP/UDP/RTP headers so a 20 ms frame is not header-dominated. SPS gives a periodic 20 ms grant without a DCI every TTI. TTI bundling repeats the uplink transport block across 4 TTIs at the cell edge. C-DRX sleeps between those 20 ms occasions. Voice uses RLC UM because a late frame is useless: RLC AM would stall for ARQ. Residual loss is handled by HARQ, PLC and CMR/ANBR, not by RLC retransmissions.

What are CMR and ANBR?

CMR is an in-band codec mode request in the AMR or EVS payload telling the sender to change bit rate. ANBR is the RAN's access-network bitrate recommendation to the UE when the eNB or gNB can no longer guarantee the GBR (often via notification control). The UE then sends CMR or a bitrate recommendation toward the far end so the codec steps down before the air interface starts dropping frames.

S8HR versus LBO: which is deployed, and what does S8HR cost?

Both are in GSMA IR.65, but S8HR is the common deployed model: the IMS APN is home-routed, so P-GW and P-CSCF stay at home and the VPLMN only needs S8 plus QCI 5/1. Do not call LBO "the" standardised model. S8HR costs: emergency routing to the visited PSAP is hard; visited-country LI of IMS is limited; there is no local ATCF so roaming eSRVCC is typically unavailable; media trombones through the home P-GW and can spend the G.114 budget. LBO fixes those four at the price of a visited IMS and IBCF interconnect.

Scenario & debugging

IMS registration fails with 403 Forbidden. How do you debug it?

A 403 is a policy decision from the IMS core, so do not blame the modem or RF first. Check, in order: the IMS PDN is up and the right APN is used; the P-CSCF came from PCO; AKA succeeded (403 after the second REGISTER suggests authorisation, not authentication); the IMPI/IMPU values (ISIM files or IMSI-derived) match what the HSS expects; the subscriber is provisioned for VoLTE and allowed while roaming; carrier config and device provisioning flags. Read the SIP trace for a Warning or Reason header, and compare with a working SIM on the same network.

The VoLTE icon is shown, but calls go over CS. How do you debug?

First confirm the real IMS state: the icon may be stale while registration has expired or was terminated by a reg-event NOTIFY. Check that re-REGISTER fires before expiry and gets 200 OK, that the MMTel voice capability is reported as available to the framework, that the IMS VoPS bit is set in the current cell, and the framework's IMS-versus-CS decision (for example, IMS not considered in service, or a carrier config forcing CS for certain numbers). Also check whether the IMS attempt started and then fell back to CS because of a specific SIP failure or a local reason; see Call flows for the fallback path.

A VoLTE call connects but has one-way audio. How do you find the cause?

Find which direction has no RTP by capturing on both legs (device RTP statistics or a core capture). Then check: the SDP addresses and ports on both sides (a private or wrong IP in SDP); whether the QCI 1 bearer's TFT matches the actual RTP flow in both directions; firewalls or SBC media anchoring dropping inbound RTP; a hold state left as sendonly after a failed re-INVITE; codec mismatches such as AMR octet-aligned versus bandwidth-efficient; SRTP key issues; and finally local audio routing (microphone muted, wrong audio device). Walk backwards from the point where packets disappear.

A call is answered but both parties hear nothing. What do you suspect?

Total silence usually means the media path never formed: the dedicated bearer failed while the call proceeded without preconditions; SDP addresses are unreachable (IPv4/IPv6 mismatch, wrong SBC media address); incompatible codec parameters so frames cannot be decoded; or the audio HAL never started the voice stream. Check Rx/Gx and bearer setup logs, RTP counters on the device and SBC, and the audio framework logs around answer time.

Calls fail on one carrier with 488 Not Acceptable Here. What do you check?

488 means the SDP was not acceptable. Compare the device's offer with what the carrier needs: codecs and their fmtp (EVS bandwidth and bit-rate ranges, AMR-WB mode-set, octet-align), bandwidth lines, precondition attributes, telephone-event, video parameters. Put a failing INVITE next to a working one from another device on the same network. Often the fix is a carrier config or IMS profile change on the device.

Calls fail with 580 Precondition Failure. What does it mean and where do you look?

One side could not reserve QoS resources, so the call could not proceed without a media path. Look at the dedicated bearer setup: Rx AAR rejected by the PCRF (policy or subscription), Gx failures, the P-GW or MME rejecting Create Bearer, the eNB refusing the E-RAB (admission control, congestion, ARP too low), or the UE rejecting the bearer (TFT errors). Correlate the time between 183 and the failure with NAS and core logs.

Calls drop exactly when the user leaves the building. How do you root-cause it?

First decide which transition is happening. If the user was on VoWiFi, it is likely a Wi-Fi to LTE handover problem (see the next question). If on VoLTE, it is likely leaving LTE coverage: check measurement reports, whether SRVCC is configured and triggered (Handover Required with SRVCC indication, PS to CS Request on Sv), whether the MSC and SCC-AS/ATCF completed the transfer, and whether the drop happened at handover command or after. If SRVCC is not deployed (or 2G/3G is switched off), the call drops on radio link failure; the fix is network-side.

A VoWiFi call drops when moving to LTE. How do you debug?

The usual root cause is a broken IP anchor: the LTE PDN request for the IMS APN was sent as an initial request instead of handover, so the UE got a new IP and the SIP dialog was lost. Check the request type in NAS, whether the same P-GW and IP were kept, whether LTE had IMS VoPS, whether the UE started the handover early enough (Wi-Fi thresholds and hysteresis), and whether re-registration or re-INVITE on LTE succeeded. Put IKEv2 teardown, NAS messages and SIP on one timeline.

IMS registration keeps cycling between registered and deregistered. What could cause it?

Possibilities: re-REGISTER failing near expiry (timeouts, IPsec SA renegotiation problems), the P-CSCF restarting or failing keep-alives, AKA resync loops, the IMS PDN flapping due to radio instability or back-off timers, network-initiated de-registration via reg-event NOTIFY, or the device toggling IMS because of carrier config or entitlement changes. Correlate SIP with PDN and radio events to see which layer drops first.

The caller hears ringing but the callee's phone never rings. Where do you look?

The ringback may be network-generated early media or a local tone, so signaling reached at least part of the path. On the terminating side check: whether the callee is IMS registered, whether paging succeeded, whether the terminating dedicated bearer and preconditions completed (the callee will not alert until they do), and whether terminating iFC diverted or barred the call. Check whether the 180 actually came from the callee's device or from a network node. Trace the terminating P-CSCF's INVITE delivery.

REGISTER requests time out with no response at all. What do you check?

Confirm the REGISTER actually leaves the device (device-side capture) and reaches the right P-CSCF IP. Check the IMS PDN routing and DNS, IPv6 versus IPv4 P-CSCF selection, MTU and fragmentation (large UDP REGISTERs, especially the protected one over IPsec), IPsec SA parameters and ports after the 401, firewalls, and whether the UE tries the next P-CSCF from the PCO list. With IMS T1 = 2 s, a dead P-CSCF takes a long time to detect.

Registration loops on 401 Unauthorized and never succeeds. What is going on?

The S-CSCF keeps rejecting the response. Check the modem's AKA result: MAC failure (UE rejects the network, wrong K or OP/OPc on SIM or HSS), SQN sync failure with AUTS (should resolve after one resync; if not, the HSS is not processing AUTS), or RES mismatch caused by using the wrong IMPI or realm in the digest. Also verify the second REGISTER is sent over the SA with the correct Security-Verify.

After enabling airplane mode and disabling it, VoLTE takes minutes to come back. Why?

Possible reasons: the UE did not de-register cleanly (no REGISTER with Expires 0), so the network has stale state; back-off timers from earlier PDN or registration rejections (T3396, T3346) delay the new attempt; the network waits for the old binding to expire; the SIM or ISIM reads are slow at boot; or the framework waits for carrier config before enabling IMS. Look at the time between attach, IMS PDN, first REGISTER and 200 OK to see which step is slow.

Call setup takes 6 to 8 seconds on VoLTE. How do you reduce it?

Break the delay down: MT paging delay (paging cycle, DRX); the time from INVITE to 183 (routing, HSS and DNS latency, TAS processing); the time from 183 to UPDATE (dedicated bearer setup through PCRF, P-GW and eNB); SIP retransmissions caused by loss (with a 2 s T1 each loss adds seconds); and local processing on the UE. Fixes include tuning paging and DRX, speeding up bearer setup, avoiding UDP fragmentation, and keeping the terminating UE in connected mode where appropriate.

Call forwarding settings fail to load in the phone's settings menu, but VoLTE calls work. Why?

Call forwarding settings use the Ut/XCAP interface, not SIP. Ut often runs over the internet APN or an xcap APN and uses GBA authentication. If mobile data is off, the APN is not configured, the BSF/GBA bootstrap fails, DNS for the XCAP server fails, or the operator blocks Ut while roaming, the settings fail while calls still work. Check carrier config options that allow Ut with data off, and capture the HTTP exchange.

Audio is choppy on VoWiFi only. How do you investigate?

VoWiFi has no GBR bearer, so look at the Wi-Fi and internet path: RSSI and retries, Wi-Fi power-save behaviour, WMM queue use and DSCP marking (EF for voice) on both inner and outer IPsec headers, jitter and loss in RTCP reports, router bufferbloat, and ePDG location (a distant ePDG adds delay). Compare with the same Wi-Fi using a different device, and check the jitter buffer and codec (EVS channel-aware mode helps with loss).

An emergency call over Wi-Fi fails or reaches the wrong PSAP. What do you check?

Check whether the operator allows emergency over Wi-Fi at all, or requires cellular when available; whether an emergency address was provisioned for Wi-Fi calling; whether PANI and the Geolocation/PIDF-LO location were included; whether the emergency PDN over the ePDG was set up; and whether the P-CSCF routed to the E-CSCF. Wrong PSAP usually means wrong or stale location. Also confirm the device falls back to cellular or CS emergency if IMS emergency fails.

An operator reports that SRVCC success rate dropped after a network upgrade. How do you approach it?

Split by failure point using counters and traces: the eNB SRVCC trigger, MME PS to CS Request and Response on Sv, MSC target preparation, the transfer INVITE to STN-SR (SCC-AS or ATCF), and UE execution. Check that STN-SR and C-MSISDN are still delivered by the HSS, the ATCF still gets included at registration, and target 2G/3G neighbour lists are still correct. Correlate the timing of the upgrade with specific cause codes and compare device types to rule out a UE issue.

Calls drop about 30 minutes into long conversations. What could cause it?

A regular time points to a timer. The most common is a session timer refresh failure: Session-Expires is 1800 s and the refresher's re-INVITE or UPDATE fails or is not sent, so the call is torn down. Other options: IPsec SA lifetime expiring without rekey, NAT or firewall binding timeouts for RTP (especially over Wi-Fi), or charging or credit control limits. Check the BYE Reason header and the SIP messages just before the drop.

Video calls work, but upgrading a voice call to video always fails. What do you check?

The upgrade is a re-INVITE adding an m=video line. Check whether the other party's response is 488 (unsupported codec or profile), 491 (glare), or a rejection with port 0 (user declined). Also check whether the network authorises the QCI 2 bearer (Rx AAR for the video component), carrier config video flags, and device capability (feature tags at registration must include video). A network rejecting the QCI 2 bearer can also make the upgrade fail.

The IMS APN goes down in the middle of a call. What happens and how should the device recover?

The QCI 1 bearer is released with the PDN, so RTP stops. The modem reports the PDN loss (for example, a data call list change through RIL), and the IMS stack ends the call with a reason such as media path lost. The device should re-establish the IMS PDN (respecting any back-off timer), re-register and restore service. SRVCC is triggered by radio conditions, not by a PDN loss, so it does not save this call.

How would you test a new VoLTE launch end to end before going live?

Cover each layer: device (IMS profile, codecs, carrier config, provisioning), radio (VoLTE features such as ROHC, TTI bundling, DRX, QCI 1 admission), core (IMS APN, PCRF rules, dedicated bearer setup), IMS (registration, iFC, TAS services, XCAP), interworking (PSTN breakout, SRVCC or CSFB, roaming, emergency), and VoWiFi handover if offered. Track KPIs such as registration success, call setup success and time, drop rate, SRVCC success and MOS. Run per-carrier interoperability tests and drive tests at cell edges.

Audio is robotic at the cell edge but SIP looks fine. What do you check?

The signalling bearer is not the media path. Check uplink coverage (PHR, MCS, BLER on the QCI 1 grant), whether TTI bundling or PUSCH repetition is on, whether ROHC is active, RTCP loss and jitter, jitter-buffer depth and PLC, and whether CMR/ANBR ever stepped the codec down. A UE stuck at AMR-WB 23.85 into a fading uplink will sound chopped while 183/200 look perfect. Compare MOS or E-model estimates with a log that includes RTP statistics.

The phone leaves LTE for 3G even though data still works. Why?

Classic voice-centric behaviour: IMS VoPS is not indicated (and CSFB is not usable), so a voice-centric UE disables E-UTRAN for that PLMN and reselects to 2G/3G. Confirm the usage setting, the VoPS bit in Attach/TAU Accept, CSFB support, and that this is not simply a reselection-priority issue. A data-centric UE would have stayed on LTE and failed the next voice attempt instead.