你在4G/5G手机上按下拨号键的那一刻,这个电话走的路和二十年前的电话完全是两回事:它不再是一条独占的“电路”,而是变成了一堆IP数据包,混在微信消息和视频流量里一起跑。但电话又不能真的退化成“一个会响的App”——它得有号码、有振铃、有计费、能打通固话和别家运营商的用户。IMS(IP多媒体子系统)就是为了完成这件事而生的:在纯IP的网络上,重新建一座“电话局”。
本文带你把这座“电话局”从大堂走到诊室:IMS为什么这样设计、注册时那一下“401挑战”是怎么回事、打电话前的“先修路后说话”是什么机制,以及5G时代VoNR和EPS Fallback的分岔口。
把语音变成IP包很容易,任何一个网络电话软件都能做到。难的是“电话”这个业务本身自带的一堆老规矩:
传统电话局靠“电路交换”天然满足这些要求——每通电话独占一条物理电路,状态、资源、互通全是天生的。但LTE从设计之初就是全IP网络,没有给电路交换留位置。IMS的使命,就是用纯IP的方式把这四样老规矩重新实现一遍:用SIP协议管理会话状态,用号码到SIP地址的映射维持身份,用专用承载保证资源,用网关实现与旧网络的互通。
可以这么类比:CS时代的电话是“专线对讲机”,接通前先给你焊一条专线;IMS时代的电话是“特快专递”,快递网络(IP网)人人共用,但电话这个业务在快递网络里享有一套VIP流程——专用通道、签收确认、全程追踪。
IMS选的会话控制协议是SIP(会话发起协议),它由IETF制定,原本是为互联网多媒体会话设计的。选它有几个很实际的理由:
SIP的基本“礼仪”和人类打电话惊人地相似:INVITE相当于“喂,我想找某人通话”,180 Ringing是“响铃了”,200 OK是“喂?”,ACK确认后开始说话,BYE是“挂了啊”。IMS做的事情,就是给这套自由散漫的互联网礼仪,配上运营商级的身份认证、资源预留和业务触发机制。
IMS的核心节点名字都带CSCF(呼叫会话控制功能),按分工可以记住“三台一库”:
| 角色 | 通俗类比 | 干什么活 | 关键细节 |
|---|---|---|---|
| P-CSCF | 小区前台接待 | 终端接入IMS联系的第一个也是唯一的节点 | 所有SIP信令都经过它,它与终端之间建立安全保护通道 |
| I-CSCF | 医院分诊台 | 来了个陌生号码,先查档案:该归哪台S-CSCF管 | 每次注册时动态指派,对外隐藏网络内部结构 |
| S-CSCF | 主治医生 | 真正管你的人:执行鉴权判决、维护注册状态、触发业务 | 注册成功后,你这个用户的所有会话都由它经手 |
| HSS | 档案室 | 存签约数据、鉴权密钥材料、“某某用户归哪台S-CSCF管”的指派记录 | 是IMS的信任根,密钥材料永远不出档案室 |
它们的连接关系是这样的:
flowchart TD
UE["手机终端<br/>自带SIP用户代理"]
subgraph HOME["归属网络的IMS电话局"]
P["P-CSCF<br/>前台接待"]
I["I-CSCF<br/>分诊台"]
S["S-CSCF<br/>主治医生"]
HSS["HSS<br/>档案室"]
AS["应用服务器<br/>彩铃与呼叫转移"]
end
MGCF["媒体网关控制<br/>通往旧电话局的大门"]
CS["2G/3G及固网"]
UE -->|"SIP信令"| P
P -->|"首次注册转交"| I
I -->|"查询该归谁管"| HSS
I -->|"转交注册"| S
S -->|"取鉴权与签约"| HSS
S -->|"触发业务"| AS
S -->|"拨打旧网用户"| MGCF
MGCF -->|"电路交换互通"| CS
注意两个设计巧思:第一,终端永远只认识P-CSCF,归属网络内部怎么绕、S-CSCF有几台,对外全部隐藏——这让运营商可以随意扩容;第二,S-CSCF通过MGCF网关与旧网络互通,所以你用5G手机打你爸的老年机,中间就是在这里完成的“翻译”。
手机开机后其实经历了两次完全不同的注册,这是新手最容易混淆的点:
第一层注册完成后,手机通过默认承载里的配置参数拿到P-CSCF的地址(也可以通过DNS查询归属域名获得),随后开始IMS注册。整个流程最精彩的部分,是那一次刻意的"401":
sequenceDiagram
participant U as 手机
participant P as P-CSCF
participant I as I-CSCF
participant S as S-CSCF
participant H as HSS
U->>P: REGISTER 我要报到
P->>I: 转交REGISTER
I->>H: 这个号码归谁管
H-->>I: 指派给某台S-CSCF
I->>S: 转交REGISTER
S->>H: 取该用户鉴权数据
H-->>S: 返回挑战材料
S-->>I: 401 先验证身份
I-->>P: 401
P-->>U: 401 附挑战值
Note over U,P: 手机用卡内密钥算出应答
U->>P: REGISTER 带鉴权应答
P->>I: 转交
I->>S: 转交
S->>S: 校验应答是否正确
S-->>U: 200 OK 注册成功
这个“先发401、再收应答”的挑战-应答机制,就是移动通信鉴权思想的延续:密钥永远不会在网络上传输。手机卡里存着根密钥,HSS档案室里也存着同一把,双方各自用挑战值做运算,S-CSCF比对结果——对得上,你就是真身。整个运算在卡的加密模块里完成,即使有人全程抓包,也推不出密钥本身。
还有一个常被忽略的细节:401之后,手机与P-CSCF之间会建立一条安全保护通道,之后的SIP信令全部加密加完整性保护。这意味着——你抓包调试IMS,第一笔REGISTER能看到,后面的REGISTER可能全是密文。这是IMS调试的第一大坑,后面实战篇再说。
注册成功还有一步“隐藏剧情”:S-CSCF会代替你向应用服务器做第三方注册,相当于主治医生把你介绍给各专科诊室——“这位用户的彩铃归你管、呼叫转移归你管”。之后任何来电,S-CSCF按用户签约的业务清单逐个过一遍服务器,这就是IMS能灵活叠加增值服务的机关。
IMS注册只解决“我在网上”。真正拨号时,SIP的INVITE流程里藏着一个互联网电话软件通常不做、电话却必须做的机制——资源预留(预置条件)。
想象一个场景:INVITE发出去了、对方手机都开始振铃了,结果主叫的无线信道拥堵,语音专载建不起来——对方接起来却听不见你。为杜绝这种尴尬,IMS的标准呼叫流程强制要求:双方都确认“语音专用通道已就绪”之前,不许振铃。
sequenceDiagram
participant A as 主叫手机
participant X as 主叫侧IMS
participant Y as 被叫侧IMS
participant B as 被叫手机
A->>X: INVITE 请求通话
X->>Y: 转发INVITE
Y->>B: 转发INVITE
B-->>Y: 183 带媒体参数
Y-->>X: 183
X-->>A: 183
Note over A,X: 主叫侧激活语音专载
A->>X: UPDATE 资源已就绪
X->>Y: UPDATE
Y->>B: UPDATE
Note over B,Y: 被叫侧激活语音专载
B-->>Y: 180 振铃
Y-->>X: 180
X-->>A: 180
B-->>Y: 200 OK 接听
Y-->>X: 200 OK
X-->>A: 200 OK
A->>X: ACK
X->>Y: ACK
Y->>B: ACK
那个“语音专载”,在4G里叫QCI 1的GBR专用承载,在5G里对应5QI 1——它是一条由网络保证带宽和时延的语音快车道,与刷网页用的默认承载物理隔离。信令走信令承载,语音包走语音专载,互不干扰。
那么一条20毫秒的语音包到底多大?可以用一个简单的公式估算:
$$L_{负载} = R_{编码} \times T_{打包}$$
以宽带语音编码AMR-WB的12.65 kbps档位、20毫秒打包周期计算:
$$L_{负载} = 12.65\ \text{kbps} \times 0.02\ \text{s} = 253\ \text{bit} \approx 32\ \text{字节}$$
32字节的语音负载,要套上RTP/UDP/IP一共约40字节的协议头才能跑IP网——头比肉还重。所以移动网络普遍启用头压缩,把40字节压到几个字节。这也是“为什么电话要用专门承载、专门优化”的又一例证:它对时延、抖动、开销都苛刻到普通数据业务无法想象。业界通行的经验值是:语音单向时延超过150毫秒,通话体验就会明显变差——这约等于要求你说完话150毫秒内对方耳朵必须收到。
到了5G,IMS这座“电话局”原封不动地搬了过来——VoNR和VoLTE用的其实是同一套IMS,变的只是底下:接入网从LTE换成NR,核心网从EPC换成5GC,语音专载从QCI 1换成5QI 1。但现实中,很多5G手机打电话时信号图标会掉回4G,原因就是下面这个分岔口:
flowchart TD
A["手机发起语音呼叫"] --> B{"所在网络是否支持<br/>VoNR端到端打通"}
B -->|"是"| C["VoNR<br/>语音留在5G<br/>走5QI1专载"]
B -->|"否"| D["EPS Fallback<br/>先把手机切回4G"]
D --> E["回落完成后<br/>按VoLTE方式通话<br/>走QCI1专载"]
C --> F["通话结束"]
E --> F
| 维度 | CS域语音(2G/3G) | VoLTE | VoNR |
|---|---|---|---|
| 承载方式 | 独占电路 | IP包 | IP包 |
| 接入网 | GSM/WCDMA等 | LTE | NR(5G) |
| 核心网 | 传统CS核心 | EPC + IMS | 5GC + IMS |
| 信令协议 | 电话局内部信令 | SIP | SIP |
| 语音专用通道 | 物理电路 | QCI 1专载 | 5QI 1专载 |
| 打电话时能上网 | 勉强甚至不能 | 可以 | 可以 |
| 离开覆盖时 | 原生电路 | SRVCC切回2G/3G | 回落机制衔接 |
两个容易搞混的机制放在一起说清楚:
标准允许多种回落与组网实现,具体行为以各运营商和厂家的官方说明为准。
在现网和实验室里,语音问题最后八成会落到IMS注册和呼叫建立上。下面是调试时真正会用到这张知识地图的场景:
对应到现网运维指标,运营商紧盯的就是:IMS注册成功率、呼叫建立时长、EPS Fallback成功率、SRVCC切换成功率。这四个数字,每一个背后都是本文的一张时序图。
Q1: VoLTE和微信语音到底差在哪? A: 微信语音是OTT应用,走“尽力而为”的普通数据通道,网络拥堵时卡顿、丢字;VoLTE由网络专门批准一条有质量保证的语音专载,且有号码体系全球互通、支持紧急呼叫、有运营商级计费与可靠性。一句话:一个是快递 economy 舱,一个是打电话专机。
Q2: IMS注册和手机开机注册是一回事吗? A: 不是。开机注册解决“终端接入网络、拿到IP”;IMS注册解决“号码在电话局报到、可以收发呼叫”。只做了前者你能上网但不能接打电话,这是排障时最常用的分界线。
Q3: VoNR和VoLTE对用户的区别大吗? A: 对用户几乎透明——同一套IMS、同一套号码、通常同样的EVS宽带编码。区别在网络侧:接入网与核心网都换成5G体系后,空口时延更低、语音专载由5G QoS框架管理,理论上呼叫建立更快、通话抗抖动更好。
Q4: 为什么我的5G手机一打电话就跳到4G? A: 大概率是EPS Fallback:所在区域尚不具备VoNR端到端条件,网络主动把手机送回4G用VoLTE接通。等运营商逐步开通VoNR,这个现象会减少。
Q5: SRVCC和EPS Fallback的区别是什么? A: 时机不同。EPS Fallback发生在通话建立前——“5G打不了,先回4G再打”;SRVCC发生在通话进行中——“4G上正说着,快出覆盖了,把通话无缝挪到2G/3G”。一个防尴尬,一个防掉话。
本文由「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 等场景全覆盖。
