HiCellTek HiCellTek
Back to blog
VoLTESIPIMSINVITE

VoLTE SIP INVITE Flow: Field Anatomy of a Call Setup

Field-level anatomy of a complete VoLTE SIP INVITE flow: INVITE, 100 Trying, 183 Session Progress, PRACK, 200 OK, ACK. Decoding SDP offer/answer, codec negotiation, QoS preconditions per RFC 3261, RFC 3262, RFC 3312, and 3GPP TS 24.229.

Takwa Sebai
Takwa Sebai
Founder & CEO, HiCellTek
April 27, 2026 · 7 min read

A VoLTE call setup is not a single SIP exchange: it is a multi-message negotiation that establishes the codec, reserves QoS resources, and confirms bearer readiness before the phone rings. Understanding the complete SIP INVITE flow — message by message — is the prerequisite for diagnosing VoLTE call setup failures, codec mismatches, and QoS precondition stalls.

Technical Reference

FieldValue
Call flow standardRFC 3261, RFC 3262 (PRACK), RFC 3312 (QoS preconditions), RFC 3264 (SDP offer/answer)
3GPP IMS context3GPP TS 24.229 §5.1.2, IMS session establishment
SDP codec standard3GPP TS 26.114 (VoLTE codec profiles)
AMR-WB codecRFC 4867, payload type 98
DIAG log codeIMS OTA SIP signaling

The Complete VoLTE INVITE Flow

Caller UE     P-CSCF (orig)   S-CSCF (orig)   S-CSCF (term)   P-CSCF (term)   Callee UE
    │                │               │               │               │               │
    │── INVITE ─────>│               │               │               │               │
    │                │── INVITE ────>│               │               │               │
    │                │               │── INVITE ────>│               │               │
    │                │               │               │── INVITE ────>│               │
    │                │               │               │               │── INVITE ────>│
    │                │<─ 100 Trying ─│               │               │               │
    │<─ 100 Trying ──│               │               │               │               │
    │                │               │               │               │<─ 183 (SDP) ──│
    │                │               │               │<─ 183 ────────│               │
    │                │               │<─ 183 ────────│               │               │
    │                │<─ 183 ────────│               │               │               │
    │<─ 183 (SDP) ───│               │               │               │               │
    │── PRACK ───────────────────────────────────────────────────────────────────────>│
    │<─ 200 OK (PRACK) ──────────────────────────────────────────────────────────────│
    │                │               │               │               │               │
    │     [QoS bearer established — QCI 1 EPS bearer set up]                         │
    │                │               │               │               │               │
    │── UPDATE (new SDP) ────────────────────────────────────────────────────────────>│
    │<─ 200 OK (UPDATE SDP) ──────────────────────────────────────────────────────────│
    │                │               │               │               │<─ 180 Ringing ─│
    │<─ 180 Ringing ─────────────────────────────────────────────────│               │
    │                │               │               │               │               │
    │     [User accepts call]                                                         │
    │                │               │               │               │<─ 200 OK ──────│
    │<─ 200 OK ──────────────────────────────────────────────────────│               │
    │── ACK ─────────────────────────────────────────────────────────────────────────>│
    │     [RTP voice stream established]                                              │

Message 1: SIP INVITE

The INVITE initiates the session. Its SDP body is the caller’s offer — the complete list of codecs and media parameters the caller supports.

Key headers to decode:

  • From: caller’s public user identity (SIP URI: sip:+33612345678@ims.mnc001.mcc208.3gppnetwork.org)
  • To: callee’s public user identity
  • Contact: caller’s P-CSCF address with security parameters
  • P-Preferred-Identity or P-Asserted-Identity: caller’s identity assertion
  • Require: precondition — mandatory in IMS per TS 24.229: QoS preconditions must be negotiated

Critical SDP lines in the INVITE body:

v=0
o=- 1234567890 1 IN IP4 192.168.1.1
s=-
c=IN IP4 192.168.1.1
t=0 0
m=audio 10000 RTP/AVP 98 99 100 101     <-- media line: port 10000, codec list
a=rtpmap:98 AMR-WB/16000/1              <-- AMR-WB (wideband, 16 kHz)
a=rtpmap:99 AMR/8000/1                  <-- AMR-NB (narrowband, 8 kHz)
a=rtpmap:100 telephone-event/8000       <-- DTMF
a=fmtp:98 mode-set=0,1,2,3,4,5,6,7,8; mode-change-period=2; mode-change-neighbor=1
a=curr:qos local none                   <-- QoS precondition: local not yet established
a=curr:qos remote none                  <-- QoS precondition: remote not yet established
a=des:qos mandatory local sendrecv      <-- Required: local sendrecv QoS
a=des:qos mandatory remote sendrecv     <-- Required: remote sendrecv QoS
a=sendrecv

What to check: AMR-WB (payload 98) must be present for HD Voice. The a=curr:qos lines must show none at this point (QoS not yet established). If precondition is absent from the Require header, the call will not use RFC 3312 — check if the network configuration mandates it.

Message 2: SIP 100 Trying

Sent by the P-CSCF (and forwarded by each proxy) to confirm receipt of the INVITE. Contains no SDP. Purely a transport-layer confirmation — it has no diagnostic value except to confirm the INVITE reached the P-CSCF. If no 100 Trying is received, the INVITE did not reach the P-CSCF (IMS APN bearer issue, DNS failure, or P-CSCF overload — see SIP 503).

Message 3: SIP 183 Session Progress (with SDP Answer)

Sent by the callee’s UE via the IMS chain. Contains the SDP answer — the callee’s codec selection and QoS precondition confirmation.

Key SDP lines to decode in the 183:

m=audio 20000 RTP/AVP 98 101             <-- callee selected codecs (must be a subset of offer)
a=rtpmap:98 AMR-WB/16000/1              <-- AMR-WB confirmed
a=rtpmap:101 telephone-event/8000
a=fmtp:98 mode-set=0,1,2,3,4,5,6,7,8; mode-change-period=2; mode-change-neighbor=1
a=curr:qos local none                   <-- callee's QoS not yet established
a=curr:qos remote none                  <-- caller's QoS (from callee's perspective) not confirmed
a=des:qos mandatory local sendrecv
a=des:qos mandatory remote sendrecv

The 183 also carries Require: 100rel — requiring the caller to send a PRACK.

What to check: The callee’s codec list must be a subset of the caller’s offer. If AMR-WB is absent from the callee’s SDP answer but present in the caller’s offer, the callee’s UE does not support AMR-WB — the call will fall back to AMR-NB. If the callee’s SDP answer is completely absent (empty m=audio line or no media section), the 183 is from the network (not the UE) and indicates the callee’s UE has not yet responded.

Message 4: PRACK

The caller sends PRACK to acknowledge the reliable 183. The PRACK is an acknowledgment of the provisional response, not an SDP message. Its role is purely to confirm the 183 was received.

The callee responds with 200 OK to PRACK — confirming the PRACK was received. After this exchange, both sides know the codec negotiation in the 183 was successfully delivered.

Message 5: UPDATE (QoS Precondition Update)

After the QCI 1 EPS bearer (the voice bearer) is established, the calling UE updates its QoS precondition status. The UPDATE carries a new SDP with updated a=curr:qos lines:

a=curr:qos local sendrecv               <-- caller's QoS bearer now established
a=curr:qos remote none                  <-- callee's QoS not yet confirmed
a=des:qos mandatory local sendrecv
a=des:qos mandatory remote sendrecv

The callee responds with 200 OK to UPDATE carrying its updated precondition status:

a=curr:qos local sendrecv               <-- callee's QoS bearer also established
a=curr:qos remote sendrecv              <-- both directions established

When both sides confirm sendrecv, the preconditions are met. Only then does the callee’s UE send 180 Ringing — the user’s device rings.

Critical diagnostic point: If 180 Ringing never arrives, check whether the UPDATE/200 OK exchange completed with both sides confirming sendrecv. A precondition stall (one side stays at none or send only) means the QCI 1 bearer is not established — check the EPS bearer setup log for a failed Activate Dedicated Bearer Context procedure.

Message 6: SIP 180 Ringing

Sent after QoS preconditions are met. Indicates the callee’s device is alerting the user. No SDP. If 180 Ringing never arrives despite 183 and UPDATE exchange, check:

  • IMS application server (for call barring or DND) — may be filtering the 180
  • Callee’s UE state (battery-saving mode, VoLTE disabled in settings)

Message 7: SIP 200 OK

Sent when the callee answers. Contains a final SDP confirming the media parameters. The caller sends ACK to confirm receipt of the 200 OK. RTP voice stream begins after ACK.

What to check in the 200 OK SDP: same codec as 183 answer. a=sendrecv (not a=recvonly or a=sendonly). RTP port numbers (for firewall and NAT traversal verification if the UE is behind NAT).

Common Failure Points by Message

At messageFailureMost common cause
INVITESIP 403IMPU barred or IMS subscription absent
INVITESIP 480Callee not IMS-registered
INVITESIP 488Codec mismatch in SDP offer
INVITESIP 503P-CSCF or S-CSCF overloaded
183Not receivedCallee’s IMS bearer (QCI 5) lost
PRACKNot acknowledgedNetwork proxies do not support 100rel
UPDATEPrecondition stallQCI 1 bearer setup failed
180 RingingNot receivedApplication server barring
200 OKNot receivedCallee did not answer

Capturing the INVITE Flow in the Field

IMS OTA SIP signaling is captured via DIAG log. The decoded log shows the full SIP transaction with each message in sequence: INVITE, 100 Trying, 183, PRACK, 200 OK to PRACK, UPDATE, 200 OK to UPDATE, 180 Ringing, 200 OK, ACK. Each message is timestamped, allowing the time between messages to be measured. Abnormal gaps (> 2 seconds between 183 and PRACK/UPDATE) indicate QoS bearer establishment delay. The complete SDP bodies are decoded and displayed, making codec and precondition status directly readable without manual parsing.

  • SIP 488 — Not Acceptable Here: SDP codec or QoS precondition rejected (see dedicated guide)
  • SIP 480 — Temporarily Unavailable: callee not registered (see dedicated guide)
  • SIP 403 — Forbidden: authorization failure on INVITE (see dedicated guide)
  • SIP 503 — Service Unavailable: IMS infrastructure failure during INVITE (see dedicated guide)
  • SIP 580 — Precondition Failure: RFC 3312 QoS preconditions cannot be met by the callee
Share: LinkedIn X
Takwa Sebai
Takwa Sebai

Founder of HiCellTek. 15+ years in telecom, operator side, vendor side, field side. Building the field tool RF engineers deserve.

Ready for the field?

Request a personalized demo of HiCellTek — 2G/3G/4G/5G network diagnostics on Android.

Try our free telecom tools

TAC Lookup, IMEI Calculator, EARFCN Calculator, used by telecom engineers worldwide.

Try Free Tools

Get telecom engineering insights. No spam, ever.

Unsubscribe in one click. Data processed in the EU.