你的手机在4G/5G网络下拨出一通电话,屏幕上出现"HD"标识,耳边传来清晰的声音——这背后,是一场精密的信令交响乐。今天我们来拆解这场交响乐的每一个乐章。
传统2G/3G网络中,语音走的是电路交换(Circuit Switched, CS)——就像一条专属的高速公路,你打电话时这条车道只属于你,别人不能占用,哪怕你沉默不语,带宽也在白白浪费。
4G LTE做了一个"激进"的决定:全网分组交换(Packet Switched, PS),不再保留电路域。语音也得变成数据包,和其他数据流量一起在IP网络上传输。
这就好比把所有货物(包括语音)都装进集装箱,用同一套物流系统运输——效率更高,但需要一套新的管理机制来确保语音这个"贵宾货物"不被其他数据挤占资源。
移动语音方案经历了几代演进,每一代都是对前一代问题的修补:
2G/3G时代 ─── CS语音(电路域原生语音)
│
▼
4G早期 ──── CSFB(电路域回落,打电话切回2G/3G)
│
▼
4G成熟 ──── VoLTE(基于IMS的LTE语音,真正的4G语音)
│ └── SRVCC(VoLTE通话中切到2G/3G的兜底方案)
▼
5G早期 ──── EPS Fallback(回落到4G VoLTE打语音)
│
▼
5G成熟 ──── VoNR(基于IMS的5G新空口语音)
└── EPS Fallback仍作为覆盖不足时的兜底
下面这张表把这些方案的关键差异一网打尽:
| 方案 | 网络制式 | 核心技术 | 呼叫建立时延 | 语音质量 | 是否需要IMS |
|---|---|---|---|---|---|
| CS语音 | 2G/3G | 电路交换 | 较长(5-8s) | 窄带(AMR-NB) | 否 |
| CSFB | 4G→2G/3G | 回落到电路域 | 长(8-12s) | 窄带 | 否 |
| VoLTE | 4G LTE | IMS + SIP/RTP | 短(2-4s) | 宽带(AMR-WB) | 是 |
| EPS FB | 5G→4G | 回落到VoLTE | 较长(5-7s) | 宽带 | 是 |
| VoNR | 5G NR | IMS + SIP/RTP | 最短(1-3s) | 超宽带(EVS) | 是 |
工程师直觉:呼叫建立时延从CSFB的10秒级降到VoNR的1-3秒,这不仅仅是数字上的优化——用户体验从"等半天"变成"几乎是秒接",背后是整个信令流程的重构。
IMS(IP Multimedia Subsystem,IP多媒体子系统) 就像一家五星级酒店的管理系统:
没有IMS,语音就像一堆没有地址的数据包在IP网络中流浪;有了IMS,每个语音呼叫都有一条清晰的信令路径和资源保障。
graph TB
UE[UE 手机终端] -->|SIP信令| PCSCF[P-CSCF 代理呼叫控制]
PCSCF -->|转发REGISTER/INVITE| ICSCF[I-CSCF 查询呼叫控制]
ICSCF -->|查询用户归属| HSS[HSS/UDM 用户数据库]
ICSCF -->|选择并转发| SCSCF[S-CSCF 服务呼叫控制]
SCSCF <-->|下载用户 profile| HSS
SCSCF -->|触发业务| TAS[TAS 电话应用服务器]
SCSCF -->|媒体控制| MRFC[MRFC 媒体资源控制]
MRFC -->|媒体处理| MRFP[MRFP 媒体资源处理]
subgraph IMS Core[IMS核心网络]
PCSCF
ICSCF
SCSCF
HSS
TAS
MRFC
MRFP
end
style UE fill:#4CAF50,color:#fff
style PCSCF fill:#2196F3,color:#fff
style ICSCF fill:#FF9800,color:#fff
style SCSCF fill:#F44336,color:#fff
style HSS fill:#9C27B0,color:#fff
style TAS fill:#607D8B,color:#fff
| 网元 | 全称 | 角色类比 | 核心职责 |
|---|---|---|---|
| P-CSCF | Proxy-CSCF | 前台接待 | UE接入IMS的第一个接触点;建立IPsec安全联盟;压缩SIP消息 |
| I-CSCF | Interrogating-CSCF | 大堂经理 | 查询HSS找到为UE服务的S-CSCF;隐藏IMS内部拓扑 |
| S-CSCF | Serving-CSCF | 专属管家 | 执行IMS-AKA鉴权;注册管理;呼叫路由;触发补充业务 |
为什么需要三个CSCF? 直接让UE和一个CSCF交互不行吗?不行——因为IMS是漫游架构。你出国旅行时,P-CSCF在拜访网络(你所在的国家),S-CSCF在归属网络(你的运营商),I-CSCF负责在两者之间"牵线搭桥"。这种分离让全球漫游成为可能。
IMS注册是整个VoLTE/VoNR流程的前置条件——没有成功注册,就没有语音服务。这个过程分为两大阶段:
在IMS注册之前,UE必须先建立IP连通性。4G和5G在这个阶段有所区别:
| 步骤 | VoLTE(4G) | VoNR(5G) |
|---|---|---|
| 网络附着 | EPS Attach(附着到EPC) | 5G Registration(注册到5GC) |
| 数据承载 | 建立默认承载(QCI=9,Internet APN) | 建立默认PDU会话(5QI=9,Internet DNN) |
| IMS信令承载 | 建立IMS专用承载(QCI=5,IMS APN) | 建立IMS专用PDU会话(5QI=5,IMS DNN) |
| P-CSCF发现 | 通过PCO(Protocol Configuration Options)在承载建立响应中获取P-CSCF地址 | 通过PDU会话建立响应中的PCO获取P-CSCF地址 |
关键设计理解:为什么IMS信令需要专用的QCI=5/5QI=5承载?因为SIP信令虽然数据量小,但对时延和可靠性要求极高。如果把SIP和普通上网流量混在一起,网络拥塞时SIP消息可能被延迟或丢失,导致无法接通电话。QCI=5是Non-GBR但高优先级的承载,确保信令"永远优先"。
底层"路"修好之后,UE开始向IMS核心发起SIP注册。完整的IMS注册流程如下:
sequenceDiagram
participant UE as UE手机
participant PCSCF as P-CSCF
participant ICSCF as I-CSCF
participant SCSCF as S-CSCF
participant HSS as HSS/UDM
Note over UE,HSS: 第一次注册 - 初始REGISTER
UE->>PCSCF: SIP REGISTER (无认证信息)
PCSCF->>ICSCF: 转发REGISTER
ICSCF->>HSS: UAR (User Authorization Request)
HSS-->>ICSCF: UAA (返回能力集,选择S-CSCF)
ICSCF->>SCSCF: 转发REGISTER
SCSCF->>HSS: MAR (Multimedia Auth Request) 获取鉴权向量
HSS-->>SCSCF: MAA (返回RAND/AUTN/IK/CK等)
SCSCF-->>ICSCF: 401 Unauthorized (携带认证挑战)
ICSCF-->>PCSCF: 转发401
PCSCF-->>UE: 401 Unauthorized (含RAND/AUTN,建立IPsec SA)
Note over UE,HSS: 第二次注册 - 携带认证响应
UE->>PCSCF: SIP REGISTER (携带RES认证响应)
PCSCF->>ICSCF: 转发REGISTER
ICSCF->>SCSCF: 转发REGISTER
SCSCF->>SCSCF: 验证RES是否匹配XRES
SCSCF->>HSS: SAR (Server Assignment Request) 下载用户Profile
HSS-->>SCSCF: SAA (返回用户Profile/IFC)
SCSCF-->>ICSCF: 200 OK (注册成功)
ICSCF-->>PCSCF: 转发200 OK
PCSCF-->>UE: 200 OK
Note over UE,HSS: 第三方注册 - S-CSCF代UE注册补充业务
SCSCF->>SCSCF: 根据IFC触发第三方注册
SCSCF->>HSS: 通知TAS等应用服务器
IMS注册中最核心的安全机制是IMS-AKA(Authentication and Key Agreement)。这个过程可以用一个日常类比来理解:
你去银行开户。银行柜员(S-CSCF)不会直接给你办业务,而是: 1. 先问你要身份证,你说"我是张三"——这是初始REGISTER 2. 柜员不认,从系统(HSS)调出你的密保问题,抛给你一个挑战——这是401响应 3. 你根据密保问题算出答案,回复柜员——这是带RES的REGISTER 4. 柜员核对答案正确,开户成功——这是200 OK
IMS-AKA的关键参数:
$$\text{RES} = f_{K}(RAND)$$
$$\text{XRES} = f_{K}(RAND)$$
$$\text{AUTN} = SQN \oplus AK | MAC$$
其中: - K:UE和HSS共享的长期密钥(存储在USIM/ISIM中) - RAND:HSS生成的随机数 - RES:UE计算的认证响应(Response) - XRES:HSS计算的期望响应(eXpected Response) - AUTN:认证令牌(Authentication Token),包含序列号和消息认证码 - IK/CK:完整性密钥/加密密钥,用于建立IPsec安全联盟
为什么需要两轮REGISTER? 第一轮是"我要注册"的声明,网络回应"请证明你是你";第二轮携带认证响应,网络验证后才放行。这种挑战-响应机制防止了伪造身份的攻击。
IMS-AKA成功后,UE和P-CSCF之间会建立IPsec ESP(Encapsulating Security Payload)安全联盟:
这就是为什么在抓包分析IMS注册时,注册成功后的SIP消息都走IPsec隧道——除非你在IPsec内部抓包,否则看不到明文SIP内容。
IMS注册成功后,UE就可以发起和接收语音呼叫了。一通完整的VoLTE/VoNR主叫流程如下:
sequenceDiagram
participant Caller as 主叫UE
participant PCSCF_M as 主叫P-CSCF
participant SCSCF_M as 主叫S-CSCF
participant SCSCF_T as 被叫S-CSCF
participant PCSCF_T as 被叫P-CSCF
participant Called as 被叫UE
Note over Caller,Called: 主叫发起呼叫
Caller->>PCSCF_M: SIP INVITE (SDP Offer: 编码列表)
PCSCF_M->>PCSCF_M: 触发专用承载建立(QCI=1/5QI=1)
PCSCF_M->>SCSCF_M: INVITE
SCSCF_M->>SCSCF_T: INVITE (路由到被叫归属域)
SCSCF_T->>PCSCF_T: INVITE
PCSCF_T->>PCSCF_T: 触发专用承载建立(QCI=1/5QI=1)
PCSCF_T->>Called: INVITE
Called-->>PCSCF_T: 100 Trying
PCSCF_T-->>SCSCF_M: 100 Trying
Called-->>PCSCF_T: 180 Ringing (被叫振铃)
PCSCF_T-->>Caller: 180 Ringing (主叫听到回铃音)
Note over Caller,Called: 被叫摘机
Called->>PCSCF_T: 200 OK (SDP Answer: 确定编码)
PCSCF_T-->>Caller: 200 OK
Caller->>PCSCF_M: ACK (确认会话建立)
PCSCF_M-->>Called: ACK
Note over Caller,Called: 通话进行中 - RTP语音数据流
Caller->>PCSCF_M: BYE (挂断)
PCSCF_M-->>Called: BYE
Called-->>Caller: 200 OK (通话结束)
SDP(Session Description Protocol) 是SIP的"搭档协议"——SIP负责信令路径,SDP负责媒体参数协商。
SDP协商遵循Offer/Answer模型:
一个典型的SDP Offer片段:
m=audio 49152 RTP/AVP 96 97 98
a=rtpmap:96 EVS/16000/1
a=rtpmap:97 AMR-WB/16000/1
a=rtpmap:98 AMR/8000/1
这告诉对方:"我支持EVS、AMR-WB和AMR三种编码,请选一种。"
被叫回复200 OK中的SDP Answer:
m=audio 49152 RTP/AVP 96
a=rtpmap:96 EVS/16000/1
意思是:"我们用EVS编码吧。"
为什么不在INVITE中就确定编码? 因为对方可能不支持你最偏好的一种。Offer/Answer机制让双方有机会"协商"出一个共同支持的编码,而不是一方强制指定。这种设计在网络异构(不同运营商、不同终端能力)时尤为重要。
IMS信令(SIP)走的是QCI=5/5QI=5的承载,但实际语音数据(RTP)需要更高优先级的专用承载:
| 参数 | VoLTE | VoNR |
|---|---|---|
| 语音承载QoS标识 | QCI=1 | 5QI=1 |
| 类型 | GBR(保证比特率) | GBR |
| 默认比特率 | ~30kbps(AMR-WB) | ~30kbps(EVS) |
| 优先级 | 最高(优先级2) | 最高 |
| 时延预算 | 100ms | 100ms |
| 丢包率 | 10⁻² | 10⁻² |
| 建立触发 | P-CSCF通过Rx接口向PCRF/PCEF发起 | PCF通过N7接口向SMF发起 |
工程师陷阱:很多新手以为IMS注册完成后语音承载就建立了。实际上,IMS注册只建立了信令承载(QCI=5),语音专用承载(QCI=1)是在每次通话INVITE时动态建立的,通话结束后释放。这就是为什么有时候通话建立时会有短暂延迟——那是在等语音承载建立完成。
将前面所有步骤串联起来,一个从手机开机到拨出电话的完整流程是:
手机开机
│
├── 1. EPS Attach / 5G Registration(网络注册)
│
├── 2. 建立Internet默认承载(QCI=9/5QI=9)
│
├── 3. 建立IMS信令承载(QCI=5/5QI=5,获取P-CSCF地址)
│
├── 4. IMS注册(SIP REGISTER + IMS-AKA鉴权)
│ ├── 初始REGISTER → 401挑战
│ ├── 带认证响应REGISTER → 200 OK
│ └── 第三方注册(TAS等应用服务器)
│
├── 5. 手机显示"HD"或"VoLTE/VoNR"标识 ✓
│
└── 6. 拨打电话
├── SIP INVITE(SDP Offer)
├── 语音专用承载建立(QCI=1/5QI=1)
├── 180 Ringing(振铃)
├── 200 OK(SDP Answer)
├── ACK(确认)
├── RTP双向语音数据传输
└── BYE → 200 OK(挂断)
在5G网络建设初期,NR覆盖往往不如4G完善。当UE在5G网络上发起语音呼叫,但5G覆盖不足以保障语音质量时,网络会执行EPS Fallback:
flowchart TD
A[UE在5G发起语音呼叫] --> B{gNB评估5G覆盖质量}
B -->|覆盖充足| C[VoNR: 直接在5G建立语音承载]
B -->|覆盖不足| D[EPS Fallback]
D --> E{回落方式}
E -->|方式1: 切换回落| F[gNB发起切换到LTE<br/>再建立VoLTE语音承载]
E -->|方式2: 重定向回落| G[gNB下发RRC Release<br/>携带LTE频点信息<br/>UE重选到LTE后建立VoLTE]
C --> H[语音通话进行中]
F --> H
G --> H
style C fill:#4CAF50,color:#fff
style D fill:#FF9800,color:#fff
style F fill:#2196F3,color:#fff
style G fill:#2196F3,color:#fff
切换回落 vs 重定向回落的对比:
| 对比维度 | 切换回落(Handover) | 重定向回落(Redirection) |
|---|---|---|
| 时延 | 较短(~100ms级) | 较长(~1-2s) |
| 信令开销 | 较大(需要gNB↔eNB协调) | 较小 |
| 数据中断 | 几乎无中断 | 有短暂中断 |
| 适用场景 | 对时延敏感的场景 | 网络侧不支持切换时 |
| 成功率 | 依赖邻区关系配置 | 成功率高 |
SRVCC(Single Radio Voice Call Continuity) 解决的是另一个问题:你在VoLTE通话中走进了LTE覆盖盲区,信号即将消失。
SRVCC的工作原理: 1. eNB检测到UE的LTE信号强度低于阈值 2. eNB触发SRVCC切换,将UE切换到2G/3G的CS域 3. IMS核心网中的SCC AS(Service Centralization and Continuity Application Server)将RTP媒体锚定并转接到CS域 4. 通话在2G/3G上继续,用户感知不到中断
$$T_{SRVCC} < 300ms$$
300ms这个数字很关键——如果切换时延超过300ms,对方会听到明显的"咔嗒"声或短暂沉默。3GPP要求SRVCC时延必须低于这个门限才能做到用户无感知。
| 方案 | 源网络 | 目标网络 | 触发条件 | 谁决定 |
|---|---|---|---|---|
| EPS Fallback | 5G NR | 4G LTE | 5G不支持VoNR或覆盖不足 | gNB |
| SRVCC | 4G LTE | 2G/3G CS | LTE覆盖不足 | eNB |
| 5G SRVCC | 5G NR | 4G LTE VoLTE | 5G覆盖下降但VoLTE可用 | gNB |
虽然VoLTE和VoNR都基于IMS,使用相同的SIP/RTP协议栈,但在实现细节上有重要差异:
| 维度 | VoLTE | VoNR |
|---|---|---|
| 数据承载 | EPS默认承载(QCI=9) | PDU会话(5QI=9) |
| 信令承载 | EPS专用承载(QCI=5) | PDU会话(5QI=5) |
| 语音承载 | EPS专用承载(QCI=1,GBR) | QoS流(5QI=1,GBR) |
| QoS策略下发 | PCRF通过Gx/Rx接口 | PCF通过N7接口 |
| P-CSCF发现 | PDN连接建立时通过PCO | PDU会话建立时通过PCO |
| IMS APN/DNN | APN=IMS | DNN=IMS |
| 编码方案 | 全称 | 带宽 | 使用场景 |
|---|---|---|---|
| AMR-NB | Adaptive Multi-Rate Narrowband | 3.1-12.2kbps | 2G/3G传统语音 |
| AMR-WB | Adaptive Multi-Rate Wideband | 6.6-23.85kbps | VoLTE主流编码 |
| EVS | Enhanced Voice Services | 5.9-128kbps | VoNR超高清语音 |
EVS编码的突破:EVS不仅向下兼容AMR-WB,还支持超宽带(50Hz-14.4kHz)甚至全带宽(20Hz-20kHz)音频。在同等音质下,EVS比AMR-WB节省约30-40%的带宽——这意味着在相同的无线资源下,网络可以承载更多语音通话。
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| REGISTER发送后无响应 | P-CSCF地址未获取或不可达 | 检查PDN连接/PDU会话中的PCO字段 |
| 收到403 Forbidden | USIM/ISIM配置异常 | 检查IMPI/IMPU格式是否正确 |
| 401挑战后注册失败 | IMS-AKA鉴权失败 | 检查USIM中的K/OP/OPC参数 |
| 注册成功但无HD标识 | VoLTE/VoNR开关未打开 | 检查终端设置和运营商配置 |
| 频繁注册/掉注册 | IPsec SA超时或NAT问题 | 检查注册定时器和NAT保活机制 |
IMS注册过程的关键抓包点:
ims.mnc.mcc.3gppnetwork.org)通话建立过程的关键抓包点:
VoLTE/VoNR中的INVITE流程通常使用预条件机制(RFC 3312):
INVITE (SDP Offer, 请求建立专用承载)
← 183 Session Progress (SDP Answer, 承载建立中)
→ PRACK (确认183)
← 200 OK (for PRACK)
[等待专用承载建立完成]
→ UPDATE (SDP更新: 承载已就绪)
← 200 OK (for UPDATE, SDP确认)
← 180 Ringing (开始振铃)
为什么需要这么复杂?因为在专用语音承载建立之前,不应该让被叫振铃——否则被叫接起电话后可能因为没有语音承载而听不到声音。Precondition机制确保"路修好了再叫人"。
Q1: IMS注册和4G/5G网络注册有什么区别?为什么需要两次注册?
A: 它们是不同层次的注册。4G/5G网络注册(EPS Attach / 5G Registration)解决的是"你有没有权利接入数据网络"的问题;IMS注册(SIP REGISTER)解决的是"你有没有权利使用语音/视频等多媒体服务"的问题。前者在无线接入层完成,后者在应用层完成。你可以理解为一个是"进大楼"(通过门禁),一个是"进办公室"(刷卡签到),两层安全保障互不替代。
Q2: VoNR比VoLTE好在哪里?仅仅是语音质量提升吗?
A: 不仅仅是语音质量。VoNR的核心优势有三点:① 更低的呼叫建立时延(5G NR更低空口时延),用户拨号到接通几乎"秒接";② 5G数据并发——VoNR通话时5G数据业务不受影响,而EPS Fallback回落后数据只能走4G;③ EVS超高清编码带来更自然的通话体验。此外,VoNR省去了回落过程,信令交互更少,也减少了异常概率。
Q3: 为什么有时候手机显示5G信号但打电话还是回退到4G?
A: 这就是EPS Fallback在工作。手机显示5G信号并不等于VoNR可用——VoNR需要gNB判断当前5G覆盖质量足够保障语音(SINR、RSRP等指标达标),如果质量不够,gNB会触发回落。常见原因:① 5G覆盖边缘(信号显示满格可能是邻区强但服务小区弱);② 运营商未在当前区域开启VoNR功能;③ gNB配置的VoNR门限参数保守。
Q4: SIP信令和RTP媒体的关系是什么?为什么需要两个协议?
A: SIP是信令协议(负责建立、修改、终止会话),RTP是媒体传输协议(负责实际的语音数据传输)。打个比方:SIP是你打电话时的拨号、振铃、挂断动作;RTP是你们通话时说的话。SIP走QCI=5信令承载,RTP走QCI=1语音承载——两者走不同的承载路径,有不同的QoS保障,互不干扰。这种"信令与媒体分离"的设计是IP通信的基本原则。
Q5: IMS-AKA和4G/5G的接入层AKA有什么关系?密钥是同一个吗?
A: 底层密钥体系有关联但不是同一套。4G/5G接入层AKA使用USIM中的K/OP/OPC参数,产生KASME→KEK_KNB等接入层密钥;IMS-AKA使用ISIM(或从USIM派生)中的IMS专用密钥,产生IK/CK用于IPsec保护。两者的根密钥可能来自同一个K,但推导路径和用途完全不同。在现网中,很多运营商不部署独立ISIM,而是通过BSF(Bootstrapping Server Function)从USIM参数派生IMS密钥,这就是GBA(Generic Bootstrapping Architecture)机制。
本文由「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 等场景全覆盖。
