你有没有想过一个问题:手机拨出电话的那一秒到对方铃声响起的这几秒之间,网络里到底发生了什么?在2G/3G时代,这个问题很好回答——电路域交换,一条物理通路从你连到对方。但到了4G/5G时代,整个网络都是IP化的分组交换,语音变成了"数据包",那语音通话是怎么在纯数据网络上实现的?
答案就是三个字母:IMS(IP多媒体子系统)。它是一套专门为"在IP网络上打电话"设计的控制系统。今天我们就来拆解这套系统——从IMS注册到SIP呼叫,从VoLTE到VoNR,把语音通话的底层信令逻辑彻底讲透。
想象一下传统电话网络:两个人打电话时,运营商在你和对方之间拉一条"虚拟专线"(电路),直到挂机才释放。这种方式叫电路交换(CS,Circuit Switched)。优点是质量有保障,缺点是资源利用率低——你没说话时,线路也是占着的。
到了4G LTE时代,网络全面IP化,不再保留电路域。所有业务(包括语音)都必须跑在分组交换(PS)网络上。这就带来了一个根本性问题:没有电路域了,语音怎么办?
| 阶段 | 技术方案 | 语音承载方式 | 核心问题 |
|---|---|---|---|
| 2G/3G | CS语音 | 电路域专用通道 | 资源利用率低 |
| 4G早期 | CSFB | 回落到2G/3G电路域 | 呼叫时延大(5-6秒) |
| 4G成熟期 | VoLTE | IMS控制+LTE分组域 | 需要IMS基础设施 |
| 5G NSA | EPS Fallback | 回落到4G VoLTE | 仍有切换时延 |
| 5G SA | VoNR | IMS控制+5G NR分组域 | 纯5G体验 |
CSFB(Circuit Switched Fallback) 是一种过渡方案:你在4G网络上待着,一打电话就切回2G/3G。问题很明显——打电话时数据业务中断,而且回落过程导致呼叫建立时延高达5-6秒。
VoLTE(Voice over LTE) 才是4G语音的正解:语音和LTE数据一样,都是IP包,由IMS核心网负责控制呼叫的建立、维护和释放。
把IMS想象成一个"IP时代的电话交换机":
IMS不是一个单独的设备,而是一组功能实体的组合,最核心的是CSCF(呼叫会话控制功能)。
graph TB
subgraph IMS核心["IMS核心网"]
P[P-CSCF<br/>代理CSCF<br/>───<br/>UE的入口<br/>QoS控制/安全]
I[I-CSCF<br/>查询CSCF<br/>───<br/>查询HSS<br/>分配S-CSCF]
S[S-CSCF<br/>服务CSCF<br/>───<br/>注册/鉴权<br/>会话控制/触发]
H[HSS<br/>归属用户服务器<br/>───<br/>用户数据<br/>鉴权向量]
T[AS/TAS<br/>应用服务器<br/>───<br/>补充业务<br/>呼叫转移/彩铃]
end
UE["UE<br/>手机终端"] -->|"SIP信令"| P
P --> I
I --> S
S <-->|"Diameter Cx"| H
S <-->|"SIP/ISC"| T
style IMS核心 fill:#e8f5e9,stroke:#4caf50
style UE fill:#fff3e0,stroke:#ff9800
三个CSCF各司其职:
手机开机后,要完成两层注册才能打电话:
用日常类比:EPC注册相当于"你进入了一栋大楼"(获得了IP地址),IMS注册相当于"你在前台登记了你的办公室号"(别人能找到你)。
在VoLTE场景下,手机先附着到LTE网络:
sequenceDiagram
participant UE as 手机(UE)
participant eNB as 基站(eNodeB)
participant MME as MME
participant SGW as S-GW
participant PGW as P-GW
participant PCRF as PCRF
Note over UE,PCRF: 第一阶段:LTE附着 + 数据默认承载(QCI=9)
UE->>eNB: Attach Request
eNB->>MME: Attach Request
MME->>UE: Authentication/Security
MME->>SGW: Create Session Request
SGW->>PGW: Create Session Request
PGW->>PCRF: IP-CAN Session Establishment
PCRF-->>PGW: PCC Rules (QCI=9)
PGW-->>SGW: Create Session Response
SGW-->>MME: Create Session Response
MME->>eNB: Initial Context Setup Request
eNB-->>UE: RRC Reconfiguration (DRB QCI=9)
UE->>MME: Attach Complete
Note over UE,PCRF: 第二阶段:IMS信令承载建立(QCI=5)
UE->>MME: PDN Connectivity Request (APN=ims)
MME->>SGW: Create Session Request (APN=ims)
SGW->>PGW: Create Session Request (APN=ims)
PGW->>PCRF: IP-CAN Session Establishment (IMS)
PCRF-->>PGW: PCC Rules (QCI=5)
PGW-->>SGW: Create Session Response + P-CSCF地址
Note right of PGW: 通过PCO字段下发<br/>P-CSCF IP地址
SGW-->>MME: Create Session Response
MME->>eNB: E-RAB Setup (QCI=5)
eNB-->>UE: RRC Reconfiguration (DRB QCI=5)
为什么要建两条承载?
| 承载 | QCI值 | APN | 用途 | 特点 |
|---|---|---|---|---|
| 数据默认承载 | QCI=9 | cmnet/互联网 | 上网流量 | 尽力而为,不保证速率 |
| IMS信令承载 | QCI=5 | ims | 传送SIP信令 | 优先级高,低丢包率 |
| 语音专有承载 | QCI=1 | ims | 传送语音RTP包 | 呼叫时动态建立 |
关键细节:P-GW在建立IMS承载时,会通过PCO(Protocol Configuration Options)字段把P-CSCF的IP地址下发给UE。这是UE找到IMS入口的关键——就像前台给了你一个"大厅经理的分机号"。
IMS承载建立后,UE知道了P-CSCF地址,接下来就是SIP注册流程。这个过程分为两个来回(两次REGISTER请求):
sequenceDiagram
participant UE as 手机(UE)
participant PC as P-CSCF
participant IC as I-CSCF
participant SC as S-CSCF
participant HSS as HSS
rect rgb(240, 248, 255)
Note over UE,HSS: 第一次REGISTER:发起注册请求
UE->>PC: SIP REGISTER<br/>(IMPI + IMPU, 无认证信息)
PC->>PC: 记录UE的IP和端口<br/>建立信令压缩上下文
PC->>IC: SIP REGISTER (转发)
IC->>HSS: Diameter UAR<br/>(User-Authorization-Request)
HSS-->>IC: Diameter UAA<br/>(返回S-CSCF名称或能力集)
alt S-CSCF已分配
IC->>SC: SIP REGISTER (转发给已知S-CSCF)
else S-CSCF未分配
IC->>IC: 根据能力集选择S-CSCF
IC->>SC: SIP REGISTER (转发给选定的S-CSCF)
end
SC->>HSS: Diameter MAR<br/>(Multimedia-Auth-Request)<br/>请求鉴权向量
HSS-->>SC: Diameter MAA<br/>(返回RAND, AUTN, XRES, IK, CK)
SC-->>IC: SIP 401 Unauthorized<br/>(携带挑战参数: RAND+AUTN)
IC-->>PC: SIP 401 Unauthorized
PC-->>UE: SIP 401 Unauthorized
end
rect rgb(255, 248, 240)
Note over UE,HSS: UE计算认证响应
Note over UE: UE使用USIM/ISIM中的K密钥<br/>验证AUTN(网络认证)<br/>计算RES(用户认证)<br/>推导IK/CK
end
rect rgb(240, 255, 240)
Note over UE,HSS: 第二次REGISTER:携带认证响应
UE->>PC: SIP REGISTER<br/>(携带Authorization头: RES)
PC->>IC: SIP REGISTER (转发)
IC->>SC: SIP REGISTER (转发)
SC->>SC: 验证RES == XRES?<br/>✅ 认证成功
SC->>HSS: Diameter SAR<br/>(Server-Assignment-Request)<br/>注册用户 + 下载业务档案
HSS-->>SC: Diameter SAA<br/>(返回用户档案: iFC触发规则)
SC->>SC: 根据iFC触发规则<br/>执行第三方注册(TAS/AS)
SC-->>IC: SIP 200 OK
IC-->>PC: SIP 200 OK
PC-->>UE: SIP 200 OK<br/>(注册成功!注册有效期如600000秒)
end
① SIP REGISTER(第一次)
UE向P-CSCF发送注册请求,携带的关键信息:
REGISTER sip:ims.mnc460.mcc000.3gppnetwork.org SIP/2.0
From: <sip:[email protected]>
To: <sip:[email protected]>
Contact: <sip:user@[UE_IP]:5060>;+sip.instance="<urn:gsma:imei:...>"
Expires: 600000
[email protected],类似身份证号,用于鉴权,不对外公开sip:+8613800138000@ims... 或Tel URI tel:+8613800138000,类似手机号,对外公开② 401 Unauthorized(认证挑战)
S-CSCF通过HSS获取鉴权向量后,向UE发送挑战。这个过程基于IMS-AKA机制,是一种双向认证:
$$ \text{UE侧计算:} \quad RES = f_{K}(RAND) $$ $$ \text{网络侧比对:} \quad RES \stackrel{?}{=} XRES $$
其中 $K$ 是USIM/ISIM中的共享密钥,$RAND$ 是网络生成的随机数,$f$ 是安全的密码学函数。
③ Diameter交互:Cx接口的四个消息
I-CSCF和S-CSCF通过Diameter Cx接口与HSS通信,注册过程中涉及两对消息:
| 消息对 | 方向 | 用途 |
|---|---|---|
| UAR/UAA | I-CSCF ↔ HSS | 查询已分配的S-CSCF或获取S-CSCF能力集 |
| MAR/MAA | S-CSCF ↔ HSS | 请求鉴权向量(RAND, AUTN, XRES, IK, CK) |
| SAR/SAA | S-CSCF ↔ HSS | 通知注册成功,下载用户档案(iFC触发规则) |
④ 第三方注册(Third-Party Registration)
S-CSCF注册成功后,会根据从HSS下载的iFC(初始过滤准则),代表UE向AS/TAS(应用服务器)发起第三方注册。这一步是透明的(UE不感知),用于激活补充业务(如呼叫转移、彩铃、VOLTE标志等)。
注册成功意味着:
注册有有效期(通常600000秒≈7天),UE需要在到期前重新注册。这也是为什么有时候你手机信号满格但无法拨打VoLTE电话——IMS注册可能已过期但未及时刷新。
假设Alice拨打Bob的电话,完整的SIP呼叫流程如下:
sequenceDiagram
participant A as Alice(主叫UE)
participant PA as P-CSCF_A
participant SA as S-CSCF_A
participant SB as S-CSCF_B
participant PB as P-CSCF_B
participant B as Bob(被叫UE)
rect rgb(255, 245, 238)
Note over A,B: 阶段一:会话邀请
A->>PA: SIP INVITE<br/>(SDP: codec=AMR-WB, 速率=12.65kbps)
PA->>PA: 资源预留检查/授权
PA->>SA: SIP INVITE
SA->>SA: 查找Bob的注册信息<br/>路由到Bob的S-CSCF
SA->>SB: SIP INVITE
SB->>PB: SIP INVITE
PB->>B: SIP INVITE
end
rect rgb(240, 255, 240)
Note over A,B: 阶段二:媒体协商
B-->>PB: SIP 100 Trying
PB-->>SB: SIP 100 Trying
SB-->>SA: SIP 100 Trying
SA-->>PA: SIP 100 Trying
PA-->>A: SIP 100 Trying
B-->>PB: SIP 183 Session Progress<br/>(SDP应答: codec=AMR-WB确认)
Note over B,PB: 此时被叫侧建立QCI=1专有承载
PB-->>SB: SIP 183
SB-->>SA: SIP 183
SA-->>PA: SIP 183
Note over PA,A: 此时主叫侧建立QCI=1专有承载
PA-->>A: SIP 183<br/>(资源预留完成)
end
rect rgb(240, 248, 255)
Note over A,B: 阶段三:振铃与应答
B-->>PB: SIP 180 Ringing
PB-->>SB: SIP 180
SB-->>SA: SIP 180
SA-->>PA: SIP 180
PA-->>A: SIP 180 Ringing<br/>(Alice听到回铃音)
B-->>PB: SIP 200 OK (INVITE)
PB-->>SB: SIP 200 OK
SB-->>SA: SIP 200 OK
SA-->>PA: SIP 200 OK
PA-->>A: SIP 200 OK<br/>(通话建立!)
A->>PA: SIP ACK
PA->>SA: SIP ACK
SA->>SB: SIP ACK
SB->>PB: SIP ACK
PB->>B: SIP ACK
Note over A,B: 双向RTP语音流开始
end
主叫UE发出SIP INVITE消息,携带SDP(会话描述协议)内容,列出自己支持的语音编码格式(如AMR-WB的多种速率)。这就像你去餐厅点菜,先把菜单上所有你接受的菜都告诉服务员。
SDP示例(简化):
v=0
o=- 123456 1 IN IP4 10.0.1.1
s=-
c=IN IP4 10.0.1.1
m=audio 49152 RTP/AVP 96 97 98
a=rtpmap:96 AMR-WB/16000
a=fmtp:96 mode-set=0,1,2; mode-change-period=2
a=ptime:20
被叫UE回复183消息,在SDP中确认双方共同支持的编码格式。这一步同时触发专有承载的建立:
QCI=1承载是专门为语音RTP包预留的"VIP通道":
| 参数 | QCI=1(VoLTE语音) | QCI=5(IMS信令) | QCI=9(数据) |
|---|---|---|---|
| 资源类型 | GBR | Non-GBR | Non-GBR |
| 优先级 | 2 | 1 | 9 |
| 时延预算 | 100ms | 100ms | 300ms |
| 丢包率 | $10^{-2}$ | $10^{-6}$ | $10^{-6}$ |
| 保证速率 | 由AMR速率决定 | 无 | 无 |
为什么语音承载要单独建? 因为语音对时延极度敏感,不能用数据业务的尽力而为通道。专有承载保证语音包优先传输、有固定带宽保障。
SIP的三次握手(INVITE → 200 OK → ACK)是SIP协议的设计特色——因为INVITE消息可能经过多个代理服务器转发,用三次握手确保端到端的可靠性。
通话建立后,语音数据通过RTP(实时传输协议)在两端之间直接传输(实际经过UPF/PGW转发),不再经过CSCF:
UE_A ←──RTP语音包──→ UPF/PGW ←──RTP语音包──→ UE_B
(QCI=1专有承载) (QCI=1专有承载)
CSCF只在呼叫控制面参与,不触碰实际的语音媒体流——就像媒人牵完线后就退场了,两人直接通话。
VoNR(Voice over New Radio)的IMS核心网完全复用VoLTE的IMS基础设施,区别只在无线接入和核心网:
graph LR
subgraph VoLTE["VoLTE架构"]
direction TB
L_TE["LTE基站<br/>(eNodeB)"]
L_EPC["EPC核心网<br/>(MME/S-GW/P-GW)"]
L_IMS["IMS核心网<br/>(P/I/S-CSCF)"]
L_TE -->|"EPS承载<br/>QCI=5/1"| L_EPC
L_EPC -->|"SIP/RTP"| L_IMS
end
subgraph VoNR["VoNR架构"]
direction TB
N_NR["5G基站<br/>(gNodeB)"]
N_5GC["5GC核心网<br/>(AMF/SMF/UPF)"]
N_IMS["IMS核心网<br/>(P/I/S-CSCF)<br/>同一个!"]
N_NR -->|"PDU Session<br/>5QI=5/1"| N_5GC
N_5GC -->|"SIP/RTP"| N_IMS
end
style VoLTE fill:#e3f2fd,stroke:#1976d2
style VoNR fill:#fce4ec,stroke:#c62828
| 对比维度 | VoLTE | VoNR |
|---|---|---|
| 无线接入 | LTE (eNodeB) | 5G NR (gNodeB) |
| 核心网 | EPC (MME/SGW/PGW) | 5GC (AMF/SMF/UPF) |
| 信令承载 | 默认EPS承载 (QCI=5) | PDU Session (5QI=5) |
| 语音承载 | 专有EPS承载 (QCI=1) | QoS Flow (5QI=1) |
| IMS核心 | P/I/S-CSCF + HSS | 完全相同 |
| SIP注册流程 | 相同 | 完全相同 |
| SIP呼叫流程 | 相同 | 完全相同 |
| 默认语音编码 | AMR-WB | EVS |
| 呼叫建立时延 | ~1.5-2秒 | ~0.8-1.5秒 |
关键结论:VoNR并不是发明了一套新的语音系统,而是在5G无线和核心网之上复用了VoLTE的IMS控制面。如果你已经理解了VoLTE的信令流程,VoNR对你来说只是换了"管道"(LTE→5G NR),"控制系统"(IMS)完全没变。
在5G SA部署初期,很多运营商的网络还不能完全支持VoNR(覆盖不足、设备不成熟等),这时采用EPS Fallback方案:
原理:UE在5G网络发起语音呼叫时,网络通过切换(Handover)或重定向(Redirection)将UE从5G NR回退到LTE,然后在LTE上用VoLTE完成语音通话。
sequenceDiagram
participant UE as 5G终端
participant gNB as 5G基站
participant AMF as AMF(5GC)
participant eNB as 4G基站
participant MME as MME(EPC)
participant IMS as IMS核心网
Note over UE,IMS: 5G附着 + IMS注册完成
UE->>IMS: SIP INVITE (发起语音呼叫)
Note over gNB,AMF: 网络判断不支持VoNR<br/>触发EPS Fallback
gNB->>UE: RRC Release + 重定向到LTE
UE->>eNB: Attach to LTE
eNB->>MME: TAU/Handover Request
Note over UE,IMS: 回落到4G后继续VoLTE呼叫
UE->>IMS: SIP INVITE (继续,在LTE上)
IMS-->>UE: SIP 183/180/200 OK
Note over UE: VoLTE通话进行中
EPS Fallback的代价是增加了约0.5-1秒的额外时延,用户体验略差于纯VoNR。但随着5G SA网络的成熟,VoNR正在逐步替代EPS Fallback。
VoNR相比VoLTE的一个重要升级是语音编码从AMR-WB升级为EVS(Enhanced Voice Services):
| 参数 | AMR-WB | EVS |
|---|---|---|
| 采样率 | 16 kHz | 16/32/48 kHz |
| 音频带宽 | 50Hz-7kHz(宽带) | 50Hz-14.4kHz(超宽带) |
| 比特率 | 6.6-23.85 kbps | 5.9-128 kbps |
| 编码模式 | ACELP | ACELP + MDCT混合 |
| 语音质量 | HD Voice(高清) | Ultra HD Voice(超高清) |
EVS在相同比特率下音质更好(效率提升约30%),或者相同音质下更省带宽。这就是为什么VoNR通话听起来比VoLTE更"通透"——因为它能传输更宽的频率范围,保留更多声音细节。
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 开机后无法打VoLTE电话 | IMS注册未完成 | 查看QCI=5承载是否建立;检查PCO中P-CSCF地址 |
| SIP REGISTER超时 | P-CSCF不可达 | ping P-CSCF IP;检查DNS解析 |
| 收到401后注册失败 | ISIM/USIM密钥不匹配 | 检查SIM卡IMS配置;交叉验证IMPI/IMPU |
| 注册成功但无法被叫 | iFC触发规则未下载 | 在S-CSCF侧查SAR/SAA消息中的用户档案 |
| 频繁重新注册 | 注册有效期过短或网络抖动 | 检查200 OK中Expires值;排查信令承载稳定性 |
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| INVITE后无响应 | S-CSCF路由失败 | 检查被叫注册状态;查S-CSCF路由表 |
| 183后专有承载建立失败 | PCRF策略配置错误 | 检查QCI=1对应的PCC规则;查PGW/SMF日志 |
| 180 Ringing后直接BYE | 被叫侧资源不足 | 检查无线资源调度;排查eNB/gNB告警 |
| 通话中断断续续 | QCI=1承载质量差 | 检查RTP丢包率和时延;排查空口干扰 |
| 编码协商失败 | 双方codec不匹配 | 检查SDP中的rtpmap和fmtp行 |
在现网调试VoLTE/VoNR问题时,重点关注以下信令节点:
一个实用技巧:用Wireshark的SIP过滤器(sip || diameter)快速定位注册和呼叫流程,再结合RTP分析器查看语音质量。
将EPS附着、IMS注册、VoLTE呼叫三个阶段串在一起,就是一个端到端的语音通话全流程:
| 阶段 | 耗时(典型值) | 关键信令 |
|---|---|---|
| LTE/5G附着 | 100-300ms | Attach Request → Attach Complete |
| IMS信令承载建立 | 50-100ms | PDN Connection/PDU Session (QCI=5) |
| IMS SIP注册 | 500-1500ms | REGISTER → 401 → REGISTER → 200 OK |
| SIP INVITE到180振铃 | 500-1500ms | INVITE → 183 → 180 |
| 180到200 OK接听 | 用户决定 | 180 → 200 OK → ACK |
| 总呼叫建立时延 | ~1.5-3秒 |
注意IMS注册只在开机时(或注册过期时)执行一次,不是每次打电话都注册。打电话只走SIP INVITE流程,所以实际呼叫建立时延在1-3秒以内。
Q1: VoNR和VoLTE的IMS注册流程有区别吗? A: 没有。IMS注册流程完全相同——都是两次REGISTER(首次和带认证响应的),都经过P-CSCF→I-CSCF→S-CSCF→HSS的交互。区别只在底层承载:VoLTE用EPS默认承载(QCI=5),VoNR用PDU Session(5QI=5),上层SIP信令完全一致。
Q2: 为什么IMS注册需要两次REGISTER? A: 因为采用了IMS-AKA双向认证机制。第一次REGISTER不带认证信息,网络返回401挑战(携带RAND+AUTN);UE验证网络身份后,用USIM中的密钥计算响应(RES),在第二次REGISTER中携带RES。这确保了"UE验证网络"和"网络验证UE"的双向安全认证,防止伪基站和仿冒用户。
Q3: QCI=5和QCI=1有什么区别?为什么需要两个承载? A: QCI=5是IMS信令承载(Non-GBR),用于传送SIP信令消息(REGISTER/INVITE等),优先级高但不需要保证速率;QCI=1是语音专有承载(GBR),用于传送RTP语音数据包,需要保证带宽和低时延。两个承载承担不同职责——一个传"控制命令",一个传"语音数据"。
Q4: EPS Fallback和CSFB有什么本质区别? A: CSFB是4G回落到2G/3G的电路域打电话,完全离开了分组域;EPS Fallback是5G回落到4G继续用IMS/VoLTE打电话,仍走分组域。EPS Fallback的语音质量等同于VoLTE,时延也更短,因为不需要建立电路域连接。
Q5: 手机如何知道网络支持VoLTE/VoNR? A: 在LTE Attach或5G Registration过程中,网络会在相关信令中指示IMS语音支持能力。LTE中通过Attach Accept中的"MS network feature support"字段;5G中通过Registration Accept中的"IMS voice over PS session"指示。同时,UE在USIM中配置IMS APN/DNN,只有网络和终端都支持时才会触发IMS注册流程。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
