VOLTE概念
VoLTE 即 Voice OVER LTE,顾名思义,就是通过 LT E 网络作为业务接入,基于 IMS(IP 多媒体子系统)网络实现业务控制的语音解决方案,可实现数据与语音业务在同一网络下的统一。
- 业务接入:LTE网络是全IP网络,没有CS域,数据业务和语音多媒体业务都承载在LTE上。
- 业务控制:EPC网络不具备语音和多媒体业务的呼叫控制功能,需要通过IMS网络提供业务控制功能
- 业务切换:在LTE全覆盖之前,需要通过SRVCC技术实现LTE与CS之间的语音业务连续性
什么叫域选择?
由于支持VoLTE的终端可以有多种模式,在不同的信号强度覆盖下可以附着在不同的网络,如有时附着在2G/3G网络,有时附着在LTE网络,因此,支持VoLTE的终端在呼叫时就要选择接入其中一个网络进行语音通话,选择接入网络的过程就称为域选 。
如何完成域选?
- 用户作为主叫时,由终端根据保存的注册网络信息完成域选
- 作为被叫时,由网络侧查询融合HLR/HSS获取注册网络信息完成域选择
什么是锚定?
锚定(Anchoring)是指将呼叫从CS网络路由到IMS网络进行业务处理的过程。
在以下两种场景中,与LTE用户相关的呼叫请求需要通过锚定功能路由到IMS网络:
- LTE用户通过CS网络接入,并且签约了IMS网络业务
- LTE用户作为被叫用户通过LTE网络接入,并且主叫用户为CS网络用户
什么是切换?
切换是指当LTE用户在通话过程中, 终端移动出LTE覆盖,并注册至2/3G网络时,终端与网络配合将话音无缝的从LTE切换至2/3G网络,通话不中断。
LTE语音方案
- CSFB(CS Fallback)
UE优先驻扎在LTE网络以享受高速数据业务,在需要语音服务时经LTE网络触发向2G/3G网络回落(PS HO/NACC/Redirection)并随后发起CS语音业务,待语音业务完成后UE适时重新返回LTE网络。
优点:实现简单,对应UE侧要求较低(Single Radio手机即可);
缺点:UE需要回落到2G/3G网络,语音业务接通时间相对较长,并且语音业务发起时数据业务会受到影响;
- SRVCC/eSRVCC(Single Radio Voice Call Continuity):
在支持IMS的LTE网络下,直接使用IMS提供VoLTE语音服务;当UE移动至网络边界时(LTE网络与2G/3G网络边界 or IMS网络与非IMS网络边界),通过SRVCC技术使当前语音通话平滑切换至2G/3G CS域,保证语音服务的连续性。eSRVCC是对应SRVCC的优化,提升了SRVCC的切换速度以及切换成功率。
优点:在IMS未能全覆盖时,能够保证语音服务在网络边界的连续性,提升用户体验;
缺点:实现复杂度较高,适合在IMS批量部署的条件下应用;
- VoLTE(Voice over LTE):
通过IMS在LTE网络上提供语音服务。
优点:不依赖2G/3G网络,直接通过PS域提供语音服务,接通时间短,语音质量高,频谱利用率高;
缺点:需要在UE和NW侧全面支持IMS,整体变动较大,全面部署实施需要较长时间;
VOLTE 网络架构
IMS HSS
用于存储IMS网络中所有与用户相关的数据,包括用户身份、鉴权数据、业务数据、接入参数、业务触发信息、漫游信息,并完成用户漫游控制。
EPS HSS/HLR
用于存储网络中用户所有与业务相关的数据,提供用户签约信息管理和用户位置管理。
DNS/ENUM
现包括DNS和ENUM(Electronic NUMbering – 电子号码)功能
EMSC
eSRVCC功能:当终端从LTE网络向2G/3G网络移动时,确保呼叫切换连续性。
CSFB :为LTE用户提供回落到CS域的语音业务。
MGCF
供IMS网络与传统PSTN、PLMN网络之间的互通功能。如果需要配合固定网络改造,或者现网属于固定业务密集型的网络。
ATCF/ATGW
位于P-CSCF与I-CSCF/S-CSCF之间,与SCC AS配合,实现eSRVCC功能。
Bearer
“EPS承载”定义为数据流量在EPS(演进分组交换系统)内流动的管道,EPS 承载可以表示为下图中的红色路径。
如上图所示,EPS承载有几个组件。这意味着 EPS 承载是多个元素承载的复合体,如下图所示
如果您看到上图,您会注意到该承载有两个主要部分。一部分是“无线电承载”,另一部分是核心网络承载。
在 LTE 中,“无线电承载”部分和“核心网络承载”均由单个消息“RRC Connection Reconfiguration”配置。实际上,在“RRC Connection Reconfiguration”消息中,一部分用于无线电配置,另一部分用于核心网络配置。
EPS 承载有两种类型。一种是“Default EPS Bearer”,另一种是“Dedicated EPS Bearer”。简单地说,我们可以描述如下。
i) 默认 EPS 承载:
- 在附加过程中建立
- 为UE分配IP地址
- 没有特定的 QoS(仅应用标称 QoS)。
- 类似于 UMTS 中的主要 PDP 上下文
ii) 专用 EPS 承载
- 通常在空闲模式后的呼叫建立期间建立。(但也可以在附加期间建立)。
- 不给UE分配任何额外的IP地址
- 链接到指定的默认 EPS 承载
- 具有特定的(通常有保证的)QoS
VoLTE对于承载的要求
VOLTE 业务需求
基本业务需求
基本业务 | 业务描述 |
---|---|
MO VOLTE to MT VOLTE | 通话双方都为VOLTE |
MO VOLTE to MT 3G | MO 为 VOLTE,MT 为 3G |
MO 3G to MT VOLTE | MO 为 3G,MT 为 VOLTE |
MO VOLTE to MT 2G | MO 为 VOLTE,MT 为 2G |
MO 2G to MT VOLTE | MO 为 2G,MT 为 VOLTE |
Call Hold and Resume | 呼叫保持和恢复 |
SRVCC | 当手机移动到非 VOLTE 覆盖区域,为了保持 呼叫的连续性,将语音切换到 CS 域。 |
Emergency Call | 紧急呼叫业务 |
补充业务需求
补充业务 | 业务描述 |
---|---|
OIP/OIR/TIP/TIR | Call id 的显示与隐藏 |
Call forwarding | 呼叫转移,包括 CFU,CFB,CFNRy,CFNRc |
Call barring | 呼叫限制 |
Call waiting | 呼叫等待 |
Conference Call | 电话会议(多方通话) |
Note: CFU (Call Forwarding Unconditional), CFB (Call Forwarding on Busy), CFNRy (Call Forward No Reply), CFNRc (Call Forward No Reachable).
VOLTE 注册流程分析
在发起 IMS 注册流程之前首先需要获取到 IMS 网络 P-CSCF 地址, 并与建立 IMS EPS 默认承载。具体流程如下:
-
若Default APN 不是 IMS APN:
-
Attach 到网络并同时建立 RRC 链接。Attach 过程中会涉及到建立默认 PDN 链接(用于数据网络)。
-
UE 发送 IMS PDN 链接请求携带 PCO(Protocol Configure Option)参数到网络 端用于 DNS 查询并获取 P-CSCF 地址。P-CSCF 是 IMS 网络的第一个接入点,所有从 UE 或者 IMS 网络端发送的 SIP 信令流都会路由到 P-CSCF。
-
建 立 IMS 默认 EPS 承载用于承载 IMS 信令消息。 IMS 默认承载的一个重要 QoS指标是 QCI=5(有些网络用的是 7)。
-
-
若Default APN 是 IMS APN。则建立 IMS PDN 链接的步骤就在 Attach 消息完成。不需要再单独发送一次 PDN 链接请求。
当获取到 P-CSCF 地址并建立了默认 EPS 承载之后,UE 可以向 IMS 网络发起 IMS 注册 请求。
VOLTE 会话流程分析
- MO 创建 SIP 和 SDP 消息发起会话,即发送 INVITE 消息到 P-CSCF。其中 SDP 消 息主要用于多媒体协商。
- P-CSCF 接收到 INVITE 消息,后回复 100 Trying 消息,表示正在将 INVITE 消息转发到对端网络
- MT 端收到 INVITE 消息后回复 183 Call in Progressing。MT 端在该消息中将自己的 IP 地址添加到 Contact Header。
- MO 收到 183 Call in Progressing 回复 PRACK 即 Provisional Response Acknowledgement,PRACK 是 SIP 消息中保证临时消息可靠传输的机制,是对 183 Call in Progressing 消息的确认。
- MT 回复 200 OK 表示收到 PRACK 消息。进一步 MO、MT 在 LT E 网络上创建了 QCI=1 的专有承载
- 当专有承载建立好,MO 向 MT 发送 U P D AT E 消息包含多媒体参数相关的 SDP offer, 描述了网络为这通会话预留的资源。
- MT 接受该通话回复 200 OK。
- MT 发送 180 Ring 消息
- MT发送200 OK(invite)。
- MO 收到 200 OK 回复 ACK 完成整个信令流程
VoLTE主叫
09-05 10:14:36.717508 985 1008 D VoLTE SIPTX: [SIPTX-IO] Send SIP [131073:262147] ==> { INVITE }
09-05 10:14:37.310489 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [131073:262147] <== { SIP/2.0 100 Trying }
09-05 10:14:38.333818 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [131073:262147] <== { SIP/2.0 183 Session Progress }
09-05 10:14:38.338981 985 1008 D VoLTE SIPTX: [SIPTX-IO] Send SIP [65536:327684] ==> { PRACK }
09-05 10:14:38.700931 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [65536:458758] <== { SIP/2.0 200 OK }
09-05 10:14:38.705479 985 1008 D VoLTE SIPTX: [SIPTX-IO] Send SIP [131073:262147] ==> { UPDATE }
09-05 10:14:39.077349 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [131073:262147] <== { SIP/2.0 200 OK }
09-05 10:14:39.117865 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [65536:458758] <== { UPDATE }
09-05 10:14:39.126443 985 1008 D VoLTE SIPTX: [SIPTX-IO] Send SIP [65536:327684] ==> { SIP/2.0 200 OK }
09-05 10:14:39.436381 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [131073:262147] <== { SIP/2.0 180 Ringing }
09-05 10:14:44.445753 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [65536:458758] <== { UPDATE }
09-05 10:14:44.457414 985 1008 D VoLTE SIPTX: [SIPTX-IO] Send SIP [65536:327684] ==> { SIP/2.0 200 OK }
09-05 10:14:44.716766 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [131073:262147] <== { SIP/2.0 200 OK }
09-05 10:14:44.720916 985 1008 D VoLTE SIPTX: [SIPTX-IO] Send SIP [131073:262147] ==> { ACK }
09-05 10:15:44.914891 985 1008 D VoLTE SIPTX: [SIPTX-IO] Recv SIP [65536:458758] <== { BYE }
09-05 10:15:44.939113 985 1008 D VoLTE SIPTX: [SIPTX-IO] Send SIP [65536:327684] ==> { SIP/2.0 200 OK }
IMS 会议电话(conference)
CONF 服务可以使得一个用户可以加入和控制一个多人同时参与的通话。一旦 conference 建立成功,用户可以邀请或者移除其他用户,而远端用户可以选择从会议电话中离开。两者都可以通过订阅 Notify 服务来收到这些通知。
-
Conference Factory URI:conference 会议电话这项服务的标识,用于在会议创建阶段获取会议 URI(conference URI)。
-
Conference Package Event:简称 CEP,用于订阅 conference 中会议状态改变的通知。比如有用户加入或者离开,都会发出通知,无论是 host 还是 participant,都可以订阅此通知
-
Focus:会议电话服务器。
-
REFER:要求接收者(Request URI) 引用到 Refer 提供的第三方资源(Refer to 指向的)。
CONF流程
- UserA 点击 Merge 按钮,此时 UserA 与 UserB 和 UserC 的两路通话首先被 HOLD 住;
- UserA 发起 SIP INVITE 到 conferece factory URI 代表的 conference server;
2021 Aug 16 18:47:39.055 [AC] 0x156E IMS SIP Message -- IMS_SIP_INVITE/INFORMAL_RESPONSE
Direction = UE_TO_NETWORK
Message ID = IMS_SIP_INVITE
Response Code = INFORMAL_RESPONSE (0)
SIP Call ID = 3209833757_2328796684@2607:fc20:ba30:7cd0:879e:8bf:6f82:af05
Sip Message = INVITE sip:8881112663@msg.pc.t-mobile.com;user=phone SIP/2.0
f: <sip:19496176463@msg.pc.t-mobile.com>;tag=3209833767
t: sip:8881112663@msg.pc.t-mobile.com;user=phone // conference factory uri
- Conference 回复 此次会议的 conference URI,然后 UserA 与 conference URI 建立连接
2021 Aug 16 18:47:39.557 [56] 0x156E IMS SIP Message -- IMS_SIP_INVITE/OK
Direction = NETWORK_TO_UE
Message ID = IMS_SIP_INVITE
Response Code = OK (200)
SIP Call ID = 3209833757_2328796684@2607:fc20:ba30:7cd0:879e:8bf:6f82:af05
Sip Message = SIP/2.0 200 OK
To: <sip:8881112663@msg.pc.t-mobile.com;user=phone>;tag=...
From: <sip:19496176463@msg.pc.t-mobile.com>;tag=3209833767
Contact: <sip:1220207041@aro201.lvn01.tas.sip.t-mobile.com:5060>;isfocus// conference uri,并标记 isfocus
如果网络支持 CEP,UserA 会发送 SIP Subscribe 到 conference URI 订阅 Notify 消息;
2021 Aug 16 18:47:39.631 [2B] 0x156E IMS SIP Message -- IMS_SIP_SUBSCRIBE/INFORMAL_RESPONSE
Direction = UE_TO_NETWORK
Message ID = IMS_SIP_SUBSCRIBE
Response Code = INFORMAL_RESPONSE (0)
CM Call ID = 255
SIP Call ID = 3209834333_2329055532@2607:fc20:ba30:7cd0:879e:8bf:6f82:af05
Sip Message = SUBSCRIBE sip:1220207041@aro201.lvn01.tas.sip.t-mobile.com:5060 SIP/2.0
f: <sip:19496176463@msg.pc.t-mobile.com>;tag=3209834342
t: <sip:1220207041@aro201.lvn01.tas.sip.t-mobile.com:5060> // conference uri
Accept: application/conference-info+xml
- UserA 发送 SIP Refer 到 conference URI 邀请 UserB 加入会议;
2021 Aug 16 18:47:39.808 [6F] 0x156E IMS SIP Message -- IMS_SIP_REFER/INFORMAL_RESPONSE
Direction = UE_TO_NETWORK
Message ID = IMS_SIP_REFER
Response Code = INFORMAL_RESPONSE (0)
Sip Message = REFER sip:1220207041@aro201.lvn01.tas.sip.t-mobile.com:5060 SIP/2.0 // conference uri
t: <sip:8881112663@msg.pc.t-mobile.com;user=phone>;tag=...// conference factory uri
f: <sip:19496176463@msg.pc.t-mobile.com>;tag=3209833767
b: sip:19496176463@msg.pc.t-mobile.com // Refer-by
r: <sip:+19493448253@vzims.com;user=phone;verstat=TN-Validation-Passed;method=INVITE?Replaces=FA163E6ECB82-2b88-27af9700-1e194f-611ab2ae-6ab12%3Bto-tag%3Dh7g4Esbg_mavodi-__s~v~xsyxvxu__0-10d-e0-a-ffffffff-7f0-0-0-0-1629139630-_000000000000-2b88-27af9700-8c98e-611ab2ae-6ac82%3Bfrom-tag%3D3209805063>//Refter-to
- Conference URI 发送 INVITE 到 UserB 后,同时 Conference Server 会响应 202 Accepted 给 UserA;
2021 Aug 16 18:47:39.961 [D3] 0x156E IMS SIP Message -- IMS_SIP_REFER/ACCEPTED
Direction = NETWORK_TO_UE
Message ID = IMS_SIP_REFER
Response Code = ACCEPTED (202)
CM Call ID = 8
SIP Call ID = 3209833757_2328796684@2607:fc20:ba30:7cd0:879e:8bf:6f82:af05
Sip Message = SIP/2.0 202 Accepted
Via: SIP/2.0/TCP [2607:fc20:ba30:7cd0:879e:8bf:6f82:af05]:40821;branch=z9hG4bK3646989430;keep
To: <sip:8881112663@msg.pc.t-mobile.com;user=phone>;tag=...
From: <sip:19496176463@msg.pc.t-mobile.com>;tag=3209833767
Call-ID: 3209833757_2328796684@2607:fc20:ba30:7cd0:879e:8bf:6f82:af05
Contact: <sip:1220207041@aro201.lvn01.tas.sip.t-mobile.com:5060>;isfocus
- 当 UserA 收到 Notify,被告知 UserB 已经加入到 conference,则 UserA 发起 SIP Bye 到 UserB,断开当前通话;
2021 Aug 16 18:47:40.560 [50] 0x156E IMS SIP Message -- IMS_SIP_BYE/INFORMAL_RESPONSE
Direction = NETWORK_TO_UE
Message ID = IMS_SIP_BYE
Response Code = INFORMAL_RESPONSE (0)
CM Call ID = 5
SIP Call ID = FA163E6ECB82-2b88-27af9700-1e194f-611ab2ae-6ab12
Sip Message = BYE sip:e215505d-2f37-47eb-a81f-3f5f76f6c696@[2607:fc20:ba30:7cd0:879e:8bf:6f82:af05]:40821 SIP/2.0
Max-Forwards: 68
Via: SIP/2.0/TCP [FD00:976A:C202:1808::1]:65529;branch=z9hG4bKg3Zqkv7ivo64ib689ebghrqnkeyi9gfox
To: <sip:+19496176463@10.166.149.37;user=phone>;tag=3209805063
From: <sip:+19493448253@10.160.165.92;user=phone;verstat=TN-Validation-Passed>
Call-ID: FA163E6ECB82-2b88-27af9700-1e194f-611ab2ae-6ab12
-
UserA 邀请 UserC 同上。
-
当 UserB 已经加入到 conference,UserA 将会收到 conference server 的 Notify 消息。
2021 Aug 16 18:47:40.621 [31] 0x156E IMS SIP Message -- IMS_SIP_NOTIFY/INFORMAL_RESPONSE
Direction = NETWORK_TO_UE
Message ID = IMS_SIP_NOTIFY
Response Code = INFORMAL_RESPONSE (0)
SIP Call ID = 3209834333_2329055532@2607:fc20:ba30:7cd0:879e:8bf:6f82:af05
Sip Message = NOTIFY sip:e215505d-2f37-47eb-a81f-3f5f76f6c696@[2607:fc20:ba30:7cd0:879e:8bf:6f82:af05]:40821 SIP/2.0
To: <sip:19496176463@msg.pc.t-mobile.com>;tag=3209834342
From: <sip:1220207041@aro201.lvn01.tas.sip.t-mobile.com:5060>;tag=...
Event: conference
Content-Type: application/conference-info+xml
CONF XML
<?xml version="1.0" encoding="UTF-8"?>
<conference-info xmlns="urn:ietf:params:xml:ns:conference-info" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
entity="sip:1220207041@aro201.lvn01.tas.sip.t-mobile.com:5060" state="full" version="1">
<conference-description>
<maximum-user-count>6</maximum-user-count>
</conference-description>
<users>
<user entity="sip:19496176463@msg.pc.t-mobile.com;user=phone" state="full">
<endpoint entity="sip:mavodi-__s~v~xsyxvxu__0-10d-40-a-ffffffff-7f0-0-0-0-1629139659@aro201.lvn01.tas.sip.t-mobile.com:5060" state="full">
<status>connected</status>
</endpoint>
</user>
<user entity="sip:+19493448253@vzims.com" state="full">
<endpoint entity="sip:mavodi-2-12c-706-b-fffffff0-1d8166-@10.160.165.92:5060" state="full">
<status>connected</status>
</endpoint>
</user>
</users>
</conference-info>
- 协议测试的时候,conference factory uri 配置不正确,导致协议测试失败;
- 网络不支持 CEP,上层 patch 处理,并在 overideconfig 中关闭 CEP 功能;
- 网络原因,导致 participant 无法加入 conference call,这个需要多方面的测试和对比分析,比如参考机当前的行为,我们公司其他手机当前的行为,尝试抓取 host 和 participant 多方 LOG 来进行分析和对比;
- 有时候部分网络是支持 participant 订阅 CEP 的,有些网络或者部分地区可能支持该功能,但是会有一定的问题,我们在遇到这样的问题时,确认清楚后可以根据当前网络的行为在 overideconfig 中配置 ConfEvtPackageEnabled 不同的值来规避该问题;
- IMS conference call 是不能在 host 方执行 separate 功能的,但三方通话是可以分离的,有时候测试会分不清这个差别,要注意和他们沟通并确认。
- 注意 conference xml 的解析问题,有时候有些网络并没有按照协议的标准做,就会导致在解析过程中出现各种各样的问题,所以熟悉并了解每个参数很重要
高通相关NV
- NV 74091 qp_ims_preconditiomconference
- conference NV:
- NV73842 conferenceUri
- endConfCallUponNoParticipant
- confEvtSubOutofDialog
- ConfEvtPackageEnabled