首页 › deep-tech › 图解VoLTE:一通电话的信令之旅

图解VoLTE:一通电话的信令之旅

你有没有想过一个问题:手机上网和手机打电话,走的是同一张网络吗?

答案是:数据走的是“互联网管道”,而打电话,手机要在后台先完成一场相当隆重的“仪式”——向网络注册身份、协商资源、预留专属车道,然后双方才会听见“喂”。

这套仪式背后的技术叫 IMS(IP Multimedia Subsystem,IP多媒体子系统),而跑在4G上的语音就是大家熟悉的 VoLTE。这篇文章要回答三个“为什么”:

  1. 为什么LTE把语音彻底扔进IP网络后,还要单独造一套IMS?
  2. 为什么手机开机后要“两次注册”才算是能打电话?
  3. 为什么一通VoLTE电话接通前,信令要来回折腾十几个回合?

理解了这三个问题,你在现网抓包时看到的那一长串REGISTER、INVITE、183、PRACK,就不再是天书,而是一张清清楚楚的流程地图。


一、先讲历史:语音为什么会“搬家”

1.1 电路交换时代:打电话是“独占一条路”

2G/3G时代的语音走的是电路交换(Circuit Switched,CS)域。所谓电路交换,就是通话双方在通话建立时,网络里被实实在在地划出一条独占的“线路”,哪怕两人都不说话,这条线路的带宽也被占着——就像老式接线员拿跳线把两部电话物理接通。

这个模式在纯语音时代非常可靠,但有个致命问题:它和数据业务是两套完全不同的网络。运营商要同时维护“打电话的网”和“上网的网”,两套设备、两套运维、两份成本。

1.2 LTE的“断舍离”:只留一张全IP网

到了LTE设计时,标准制定者做了个激进决定:LTE网络只保留分组交换(PS)域,彻底砍掉电路域。LTE天生就只会传IP数据包。

问题来了:那电话怎么办?答案是——把电话本身也变成“数据”。语音经过编码器变成码流,打成IP包,像网页、视频一样在LTE上传送。这就是 VoLTE(Voice over LTE)。

但这里有个关键洞察:“把语音变成IP包”很容易,难的是“把打电话这门生意搬进IP世界”。

打电话不只是传声音,还包括一连串业务逻辑:

这些逻辑在CS域里由交换机实现,如今交换机没了,就需要一套新的“电话业务大脑”。这套大脑就是IMS。

一句话定义:IMS是一套基于SIP协议的会话控制系统,它让“打电话”这件事在纯IP网络上重新拥有了寻址、鉴权、路由、业务触发和计费的完整能力。VoLTE、VoNR、Wi-Fi通话(VoWiFi)、RCS消息,全都是IMS这棵树上的果实。

1.3 为什么不直接用互联网电话?

你可能会问:微信语音也是IP传声音,为什么运营商不直接用现成的互联网VoIP技术?

因为两者的设计目标完全不同。互联网VoIP是“尽力而为”(best effort):网络拥塞时丢包、延迟,大不了卡一下。而运营商电话是“承诺级”业务:拨号要通、接通要快、声音要稳,掉话率要控制在千分位。IMS存在的意义,就是把互联网“松散自由”的SIP技术,驯化成电信级“严格可控”的呼叫体系——加上鉴权、加密、资源预留、合法监听、计费锚点这些“电信级护栏”。


二、SIP:一套用“写信”方式打电话的协议

IMS的核心协议是 SIP(Session Initiation Protocol,会话发起协议)。理解SIP有个取巧的办法:把它想象成电子邮件和电话的混血儿。

SIP消息是纯文本的,长得和HTTP非常像,比如一条INVITE请求大概长这样:

INVITE sip:[email protected] SIP/2.0
From: <sip:[email protected]>
To: <sip:[email protected]>
Call-ID: 8842@a-ims-ue
CSeq: 1 INVITE
Content-Type: application/sdp

你的手机号在这里被表示成了一个SIP URI(如sip:+86139...),就像一个邮箱地址。SIP负责“找人和谈条件”,真正传声音的是另一个协议RTP(实时传输协议)——信令和媒体分离,这是VoLTE最重要的设计思想之一,后文会反复出现。

SIP定义了一组“方法”(Method),每个方法就是一个动作动词:

SIP方法 作用 通俗类比
REGISTER 向网络登记“我在这里,能找到我” 到会所前台签到
INVITE 发起一次通话邀请 递上请帖
100 Trying “收到了,正在处理” 前台点头示意
183 Session Progress 携带媒体参数的早期应答 双方先对菜单
PRACK 确认收到的临时响应 对菜单后说“记下了”
UPDATE 通话建立中修改会话参数 上菜前调整口味
180 Ringing 被叫振铃 对方桌上的铃响了
200 OK 最终应答(接听/注册成功) 正式答应
ACK 对最终应答的确认 握手成交
BYE 结束会话 客散关门
MESSAGE 传输短消息(VoLTE短信) 递张纸条

注意一个细节:SIP的响应分“临时响应”(1xx)和“最终响应”(2xx起)。临时响应不可靠——可能丢,所以VoLTE专门发明了PRACK来给临时响应“签收回执”。这个看似多余的设计,恰恰是后面“资源预留”机制能成立的前提。


三、IMS的四位关键角色

一套IMS网络里,和手机直接打交道的主要是四个逻辑功能(注意是“功能”,物理上可能合并部署在同一台设备上):

网元 全称 职责 通俗类比
P-CSCF 代理呼叫会话控制功能 手机接入IMS的第一个接触点,校验信令、建立安全通道、可压缩信令 小区门卫
I-CSCF 问询呼叫会话控制功能 运营商域的“大门地址”,负责查询该用户应由哪个S-CSCF服务 前台查号台
S-CSCF 服务呼叫会话控制功能 真正的会话管理者:执行注册、绑定位置、触发增值业务、决定路由 贴身大管家
HSS 归属用户服务器 存放用户签约数据的中央数据库,提供鉴权密钥 户口本+保险柜

它们的关系与信令路径如下:

flowchart TD
    UE["手机 UE"] -->|SIP信令走Gm口| P["P-CSCF 门卫"]
    P -->|Mw口| I["I-CSCF 查号台"]
    I -->|Cx口查询| H["HSS 户口本"]
    I -->|转发注册| S["S-CSCF 大管家"]
    S -->|Cx口取数据| H
    S -->|ISC口触发| AS["应用服务器 彩铃 呼转"]

几个值得咀嚼的设计细节:

P-CSCF为什么必须存在? 它本质上是一个高度特化的会话边界控制器(SBC)。手机的所有SIP信令都必须经过它,它可以检查每一条消息是否合规、并对手机与网络之间的信令建立IPsec安全通道(防窃听、防伪造)。用日常生活中话说:想进会所,先过门卫这一关,门卫还负责确认“你递的条子没被涂改过”。

I-CSCF为什么需要DNS? 当另一个运营商的用户打给你时,对方网络怎么找到你们家的“大门”?答案是I-CSCF的地址被公布在DNS记录里,任何外部网络都能查到。它是运营商网络的公开入口,而内部结构对外隐藏。

S-CSCF为什么要从HSS下载用户档案? 用户注册成功时,S-CSCF会从HSS把这个用户的“服务清单”(业务触发规则,称为初始过滤准则iFC)拉到本地。之后这个用户的每次呼叫,S-CSCF都按清单决定“要不要先绕去彩铃服务器打个转”。这就把“业务逻辑”从交换机硬编码里解放出来,变成了可插拔的应用服务器——这正是IMS“水平分层”架构的精髓:接入方式(4G/5G/Wi-Fi/固网)与业务提供彻底解耦。

HSS和4G核心网的HSS是什么关系? HSS是“户口本”,既管EPC接入的鉴权,也管IMS域的鉴权,一个用户一套档案。到了5G时代它的演进形态叫UDM,逻辑角色不变。


四、注册:手机开机的“两次敲门”

IMS是“注册制”的。手机想打电话,必须先告诉网络“我在线,我在这个IP地址,请把打到我的呼叫路由过来”。这个动作就是 IMS注册。

而IMS注册最精妙的地方在于:它故意设计成两步。

4.1 为什么不能一步注册到位?

想象一下:如果手机第一次REGISTER就把“身份凭证”直接发给网络,会发生什么?这个凭证一旦被空中的窃听者截获,就能被拿去冒充你。所以IMS借鉴了HTTP的摘要鉴权思想,并升级为运营商版的挑战-应答机制:

手机从不直接发送密码,而是证明“我知道密码”。

流程是这样的:第一次REGISTER故意“裸发”(不带凭证),网络收到后回复 401 Unauthorized,并附上一道随机“考题”(随机数nonce);手机用SIM卡里的根密钥和考题算出答案,再发第二次REGISTER。网络用同样的算法核对答案——答案对得上,说明你手里有真SIM卡。整个过程密钥从不出SIM卡,空中也不传密钥本身。

这就是为什么你的手机每次开机、跨区移动或Wi-Fi通话切换时,信令里都会出现一对REGISTER/401——那不是失败,是设计好的安全仪式。

4.2 注册信令时序图

sequenceDiagram
    participant UE as 手机UE
    participant P as P-CSCF
    participant I as I-CSCF
    participant S as S-CSCF
    participant H as HSS
    UE->>P: REGISTER 不带凭证
    P->>I: 转发REGISTER
    I->>H: 查询该用户归谁管
    H-->>I: 返回S-CSCF地址
    I->>S: 转发REGISTER
    S->>H: 请求鉴权数据
    H-->>S: 返回随机数与密钥
    S-->>P: 401 附带挑战考题
    P-->>UE: 401 附带挑战考题
    Note over UE,P: 手机在本地算出鉴权答案
    UE->>P: REGISTER 带鉴权答案
    P->>S: 经I-CSCF转发
    S->>H: 核对并登记用户位置
    S-->>P: 200 OK 注册成功
    P-->>UE: 200 OK 注册成功

有三个工程细节值得注意:

  1. 注册的前提是先有“路”。IMS注册跑在SIP over TCP/TLS上,而手机必须先和核心网建立一条APN为ims的专属IP连接(4G里叫PDN连接,5G里叫PDU会话),P-CSCF的地址就在这条连接建立时由网络下发。所以完整顺序是:开机附着 → 建立IMS专载 → 发现P-CSCF → SIP注册。
  2. 注册有时效。注册不是永久的,有到期时间,手机会定时刷新(重发REGISTER),类似“签到续期”。网络也可能主动发起重鉴权。
  3. 注册完成后,S-CSCF手里就有一张“地图”:你的公共身份(对外号码)绑定了你当前的联系方式(IP和终端实例)。此后任何人拨打你,S-CSCF都能精确投递。

五、呼叫建立:为什么“接通前”这么折腾

注册完成后,打电话的信令是INVITE开头的。但如果你在现网抓过VoLTE的包,会发现接通前的信令多到令人怀疑人生:INVITE、100、183、PRACK、200、UPDATE、180、200、ACK……为什么不直接INVITE加200就完事?

答案是四个字:资源预留。

5.1 核心矛盾:信令说“通了”≠声音能走

VoLTE的语音包需要一条专有承载——这是与普通上网流量的本质区别。你刷网页走的默认承载是“尽力而为”的公共车道;而语音拨通时,网络会为这通电话单独激活一条标记为会话类语音(业界通行做法是QCI 1)的GBR专有承载,无线侧会实实在在地为它预留带宽和调度优先级。

问题在于:这条专载的建立需要时间(要经过基站和核心网的多轮交互)。如果被叫一振铃就接听,而此时语音专载还没建好——用户听到的就是“接通了却没声音”的尴尬,几秒后声音才姗姗来迟。

VoLTE的解法堪称经典:把“振铃”推迟到“两端资源全部就绪”之后。

5.2 呼叫信令时序图

sequenceDiagram
    participant A as 主叫UE
    participant PA as 主叫侧P-CSCF
    participant S as S-CSCF
    participant PB as 被叫侧P-CSCF
    participant B as 被叫UE
    A->>PA: INVITE 拨号并附媒体提案
    PA-->>A: 100 Trying 已受理
    PA->>S: 转发INVITE
    S->>PB: 按被叫注册路由
    PB->>B: 下发INVITE
    B-->>PB: 183 附媒体应答
    PB-->>A: 183 逐跳透传回主叫
    Note over A,PA: 双方开始各自建立语音专载
    A->>B: PRACK 确认183
    B-->>A: 200 OK 对PRACK的应答
    A->>B: UPDATE 通告本端资源就绪
    B-->>A: 200 OK 对端也确认就绪
    B-->>A: 180 Ringing 此刻才振铃
    B-->>A: 200 OK 被叫摘机接听
    A->>B: ACK 完成三次握手
    Note over A,B: 双向RTP语音包开跑

把这段信令翻译成人话,就是一场安排精密的婚礼:

  1. INVITE(递请帖):主叫把自己的媒体能力(支持哪些语音编解码、用哪个IP和端口收流,写在SDP里)随INVITE发出去。被叫从中挑一个双方都支持的方式回进去——这叫媒体协商,避免出现“你只说粤语我只懂英语”的局面。
  2. 183(对菜单):被叫侧给出媒体应答,从此双方都知道彼此要用什么编解码、什么地址传声。
  3. PRACK(记下了):183属于临时响应,可能丢失,所以对方必须显式确认。没有PRACK,后面的资源协商就建立在沙滩上。
  4. 专载建立(布置宴会厅):183之后,主被叫两侧的网络各自为这通电话激活语音专有承载。这是呼叫建立中最耗时的一步,也是整套流程存在的理由。
  5. UPDATE(双方确认布置完毕):每侧建好自己的专载后,用UPDATE告诉对方“我这边车道通了”。两端都就绪,才允许180 Ringing。
  6. 180 Ringing(铃响):此时被叫手机才开始响铃。你听到“嘟——”的那一声时,整条通话高速公路已经修好,一按接听,声音立刻能到——这就是VoLTE接通后“零空窗”的原理。
  7. 200 OK + ACK(正式成交):被叫摘机,SIP三次握手收尾,RTP语音包开始双向奔流。

这个设计把“接通时延”和“听感体验”做了交换:信令回合变多、振铃稍晚,但换来接听瞬间媒体立即可用。当你排查“振铃慢”的投诉时,第一时间该看的就是主被叫两侧专载建立是否缓慢——这是现网最常见的病灶。

5.3 挂断呢?

任何一方发BYE,网络拆除会话并释放语音专载(专载跟着通话走,挂机即撤,不占资源)。若是和传统固定电话互通,S-CSCF会把呼叫交给互通网关,SIP信令在那里被翻译成老式电话网的信令,RTP语音被转回传统PCM编码——IMS与百年电话世界就这样无缝握手。


六、语音质量:一套可以算出来的体验

运营商对语音质量不靠“感觉”,靠公式。业界通行的评估模型是 E-Model(源自国际电联的G.107建议),它把各种损伤折算成一个100分制的质量因子R:

$$R = 93.2 - I_d - I_{e,\text{eff}}$$

其中 $I_d$ 是时延类损伤(单向时延越大扣越多),$I_{e,\text{eff}}$ 是设备类损伤(编解码失真、丢包损伤)。R再映射到大家熟悉的MOS分(1~5分的主观平均意见分):

$$\text{MOS} = 1 + 0.035R + 7\times10^{-6} \cdot R\,(R-60)(100-R)$$

代入几个典型值感受一下:R=93(时延小、编码好、近零丢包)对应MOS约4.4,是高清语音的水准;R=70对应约3.6,普通可用;R掉到50附近就只有约2.6,用户会明确抱怨“断断续续”。

这个公式的工程价值在于各损伤项可加可拆:时延超标多少、丢包率上升多少,都能换算成MOS掉多少分。网络优化时,你据此判断该去压时延还是治丢包——而不是凭感觉乱调。

至于编码本身,VoLTE的标配是AMR-WB(宽带语音,即运营商宣传的“HD Voice”),不少网络已升级到EVS,码率覆盖约5.9~128 kbit/s。语音编码的细节我们此前文章专门讲过,此处不展开,只强调一句:编解码的选择就是呼叫建立时SDP协商的产物——信令流程与话音质量在这里交汇。


七、VoNR与EPS Fallback:5G时代语音怎么走

到了5G,语音的去向分成三种路线,一张表看清:

维度 VoLTE VoNR EPS Fallback
无线接入 4G LTE 5G NR 5G起呼,回落4G
IMS位置 IMS网络 同一套IMS网络 同一套IMS网络
语音承载 LTE的QCI 1专载 NR上的5QI 1专载 回落后走LTE专载
使用前提 4G覆盖 5G SA组网 5G未开通VoNR
典型场景 当前主流 5G SA成熟网络 5G建网过渡期

关键认知是:不管无线接入是4G还是5G,跑的都是同一套IMS。5G只是给IMS换了条更粗的“接入管道”。所以5G时代用户打电话“跳回4G”的现象(EPS Fallback),本质不是语音技术退步,而是IMS尚未与5G无线打通时的过渡策略——这一点我们在此前的回落专题里详细聊过,本文不重复。

还要澄清一个常见误解:Wi-Fi通话(VoWiFi)不是绕过运营商的互联网电话。它同样注册在你运营商的IMS上,只是把“接入管道”从基站换成了Wi-Fi——手机对IMS而言根本不关心脚下是LTE、NR还是Wi-Fi,这正是IMS水平架构的红利。


八、实战连接:这些知识在现网怎么用

1. 查VoLTE是否正常,先看IMS注册态。 Android工程模式里有明确的诊断项:IMS Registration: Registered 加 Voice over LTE: Available 才算语音可用。用户投诉“打不出电话”时,第一步就是确认注册态——大量“故障”其实停在注册这一步(SIM未开通VoLTE、终端缺运营商配置文件、ims专载没建起来)。

2. 抓包排障的过滤套路。 在UE侧或探针侧用Wireshark过滤sip,看信令走到哪一步断掉,就能把故障定位到具体环节:

3. 常见调试陷阱。 一是把401当故障(它是正常流程);二是忽略PRACK丢失导致的协商卡死;三是信令路径正常就认为媒体没问题——信令面与媒体面分离,排查时必须分而治之。另外,标准允许多种实现细节存在,具体网元行为与参数默认值以各厂家官方文档为准。

4. 注册与呼叫的时延账。 开机后首次注册涉及附着、专载、两趟REGISTER,整体秒级;而呼叫建立中约半数时延消耗在专载激活上。做接通时延优化时,先量清楚每段信令的耗时分布,再决定优化哪一跳。


常见问题

Q: VoLTE和VoIP的区别是什么? A: VoIP是泛指“在IP网上传语音”的所有技术(微信语音、网络电话都算);VoLTE特指基于IMS架构、带电信级QoS专载和统一鉴权计费的运营商语音。可以粗略理解为:VoIP是“互联网语音”的大类,VoLTE是其中“运营商精装版”。

Q: IMS注册和4G/5G的入网注册(附着)是一回事吗? A: 不是。附着注册解决“你可以上网”,在手机与EPC/5GC之间完成;IMS注册解决“你可以打电话”,是手机与IMS之间基于SIP的另一场独立注册。两次注册都通过,语音功能才完整可用。这也是排障时“能上网不能打电话”的第一检查点。

Q: 注册时为什么收到401却说这是正常的? A: 因为401在这里不是“拒绝”,而是“挑战”:网络借它下发随机考题,让手机证明自己持有真SIM卡的密钥,密钥本身从不在空中传输。第二次REGISTER答对题目后即返回200 OK。它是安全机制,不是失败。

Q: 183、180、200这些数字是什么意思? A: SIP沿用了HTTP风格的三位响应码。1xx是临时响应(收到、处理中、振铃中),2xx是成功,3xx重定向,4xx客户端侧错误,5xx服务端错误。VoLTE呼叫流程里反复出现183/180/200的组合,分别对应“媒体协商中”“正在振铃”“最终应答”。

Q: 打电话时手机的数据上网会断吗? A: VoLTE时代不会。语音和数据是两条并行的承载:语音在QCI 1专有承载上,数据在默认承载上,可同时进行。这正是不用回落到2G/3G的VoLTE相对老技术的核心体验优势之一。


参考来源

  1. IP Multimedia Subsystem - Wikipedia — IMS架构、P-CSCF/I-CSCF/S-CSCF/HSS职责、Gm/Cx/Mw接口与用户身份体系(IMPI/IMPU)的权威概述
  2. Voice over LTE - Wikipedia — VoLTE基于IMS与GSMA IR.92、EPS Fallback机制、QCI承载机制及AMR-WB/EVS编解码说明
  3. SIP: Session Initiation Protocol (RFC 3261) - IETF — SIP方法、响应码与INVITE事务的标准定义
  4. GSMA IR.92《IMS Profile for Voice and SMS》 — 运营商VoLTE互操作Profile(经Wikipedia VoLTE条目引述),定义了语音专载与基础呼叫Profile

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入