好的,通信学院的专家讲师。我已经完成了 27 篇深度解析,系统覆盖了 IMS 协议栈的核心组成部分。
我将继续为您撰写 SIP 协议深度解析系列的第二十八篇。本篇将聚焦于 IMS/CS 互通的边界处理和 Diameter Rx/N7 接口的详细参数,整合 SIP 协议中关于媒体、路由和计费的跨域转换要求。
拆解进度更新: 我们目前已完成了 27 篇深度解析。根据现有资料和主题覆盖范围,预计还需要拆解 2 篇核心文章(包括本篇和下一篇),即可完成对整个 IMS 规范体系的系统性解读。
VoLTE高清语音技术精要(二十八):IMS-CS 互通边界与承载策略:MGCF 的角色与 Rx 接口 ASR/STR 详解
1. 导论:MGCF——跨域信令与计费的转换器
在 IMS 体系中,**MGCF(媒体网关控制功能)**是连接 SIP 域和传统 CS/PSTN 域(使用 ISUP/BICC 协议)的桥梁。MGCF 的职责不仅是协议翻译,更关键的是在跨越信任域时,确保 SIP 扩展功能(如 100rel 可靠性、P-Charging-Vector 计费锚点)能够被正确处理和转换。
同时,为了保障 VoLTE/VoNR 的 QoS 承载资源得到及时、准确的释放,P-CSCF 作为 **AF(应用功能)**必须通过 Rx/N7 接口与 PCRF/PCF 协同。本章将结合 MGCF 的跨域职责,并详细解析 Rx 接口在会话终止和网络侧故障时的关键 Diameter 消息。
2. MGCF 的 SIP-CS 互通边界处理
MGCF 必须在收到 IMS 域的请求时,执行严格的信令校验和参数处理,尤其是在处理可靠临时响应和计费信息方面。
2.1 MGCF 对可靠性机制(100rel)的强制支持
当 MGCF 收到 IMS 域的 INVITE 请求,若其中 Supported 头的值为 100rel 时,MGCF 必须向 IMS 域发送 100 Trying 消息。
随后,当 MGW 对编解码器没有要求或者找到匹配的编解码器之后,MGCF 向 IMS 域发送 183 Session Progress 响应:
- MGCF 必须将
Require头设成100rel。 - MGCF 收到
PRACK的200ok响应,并且 COT 消息中连续性指示(Continuity Indicators)设为“continuity check successful”后,MGCF 应发送UPDATE请求。
2.2 MGCF 的跨域计费信息处理(IOI)
在向 IMS 域发送 183 Session Progress 响应时,MGCF 必须处理并插入计费信息:
- MGCF 必须存储
P-Charging-Vector头中的icid值。 - MGCF 必须存储
P-Charging-Function-Addresses中的参数值。 - MGCF 必须存储
P-Charging-Vector头中的orig-ioi参数。 - MGCF 必须向
P-Charging-Vector插入从初始INVITE消息中携带的orig-ioi参数以及第二类term-ioi参数。第二类term-ioi参数必须设置为 MGCF 所在的网络。
2.3 MGCF 的 CDR 触发
在会话释放时,MGCF 会触发 CDR 闭合:
- 当 MGCF 收到来自 IMS 域的
BYE消息时,MGCF 会发送 ACR [Stop] 消息。 - 当 MGCF 收到来自 PSTN 域的
REL消息时,MGCF 会发送 ACR [Stop] 消息。 - 在呼叫成功建立后,MGCF 收到
200 OK (Invite)响应后,会发送 ACR [Start] 消息。
3. Rx 接口的会话终止与策略更新(STR/STA, ASR/ASA)
Rx 接口(Diameter Command-Code 275 和 274)是 P-CSCF 实现 QoS 承载同步释放的关键。
3.1 SIP 触发的承载释放:STR/STA 流程
SIP 层的会话终止请求(如 BYE)会驱动 P-CSCF 发起承载释放。
- P-CSCF 触发 STR:P-CSCF 收到应用会话终止消息(如
BYE)后,向 PCRF 下发 **STR(Session-Termination-Request)**命令。STR 命令的 Command-Code 为 275。AF(P-CSCF)发送该命令通知已建立的会话要被终止掉。 - 承载释放:PCRF 收到 STR 后,发送 RAR 消息(携带
REMOVE QoS Rules指示)通知 PGW 删除专有承载。 - PCRF 返回 STA:PCRF 返回 **STA(Session-Termination-Answer)**响应给 P-CSCF。STA 命令的 Command-Code 同样为 275。
3.2 网络侧主动发起终止:ASR/ASA 流程
如果底层承载网络发生故障或 PCRF 决定终止 IP-CAN 会话,PCRF 会主动通知 P-CSCF/AF。
- PCRF 触发 ASR:PCRF 向 AF(P-CSCF)发送 ASR(Abort-Session-Request)消息。ASR 命令的 Command-Code 为 274。PCRF 发送该命令给 AF 用于指示已经建立会话的所有承载资源不可用。
- P-CSCF 响应 ASA:AF(P-CSCF)向 PCRF 发送 **ASA(Abort-Session-Answer)**响应。
- P-CSCF 后续 SIP 动作:P-CSCF 收到 ASR 后,必须在 SIP 侧采取相应措施(例如,如果资源失败,P-CSCF 应向 UE 发送 CANCEL 消息以释放会话,并包含原因值为 503(Service Unavailable))。
4. SIP 消息与 Diameter ACR 计费触发的协同
P-CSCF/S-CSCF 收到 SIP 消息后,会触发 Diameter Rf 接口的 ACR 消息,确保计费的开启、更新和终止。
| CDR 记录类型 | SIP 触发事件 | ACR 消息类型 | 触发网元 | 来源 |
|---|---|---|---|---|
| I-CSCF CDR | I-CSCF 向 S-CSCF 发出 INVITE 信号后 | ACR [Event] | I-CSCF | |
| P-CSCF/S-CSCF CDR | 收到 INVITE 的 200 OK 最终响应后 | ACR [Start] | P-CSCF/S-CSCF | |
| P-CSCF/S-CSCF CDR | 收到 INVITE/UPDATE 的 200 OK 响应后 | ACR [Interim] | P-CSCF/S-CSCF | |
| P-CSCF/S-CSCF CDR | 发出/收到会话结束请求(BYE)后 | ACR [Stop] | P-CSCF/S-CSCF |
CDR 记录内容:CDF 收到 ACR [Start] 消息后打开一个会话 CDR。CDF 在收到由于会话修改(媒体的改变)而产生的 ACR [Interim] 消息后,会生成部分 CDR。
5. 本章小结
MGCF 和 P-CSCF 在跨域互通和 QoS 控制中扮演了关键角色:
- MGCF:强制执行
100rel可靠性,并在183 Session Progress响应中严格处理orig-ioi和term-ioi,以保障计费结算。 - Rx/N7 接口:P-CSCF 通过 STR (Command-Code 275) 消息驱动 QoS 承载的释放。PCRF/PCF 通过 ASR (Command-Code 274) 主动通知 P-CSCF 承载资源不可用。
- 计费同步:P-CSCF/S-CSCF 必须在会话建立、修改和释放的 SIP 关键节点,同步触发 ACR [Start/Interim/Stop] 消息。
6. 工程师进阶思考 (FAQ)
Q1:P-CSCF 收到 UE 终结的请求(MT INVITE)的响应(1xx 或 2xx)时,如何处理 P-Preferred-Identity?
A1: P-CSCF 收到发往 UE 的对话初始请求的 1xx 或 2xx 响应时,如果响应中含有 P-Preferred-Identity,P-CSCF 应删除该头域。同时,P-CSCF 应插入 P-Asserted-Identity,其值应为收到请求时保存下来的 P-Called-Party-ID。
Q2:IMS 呼叫释放过程中,P-CSCF/S-CSCF 如何处理并发的会话请求(例如在收到 BYE 时收到 UPDATE)?
A2: 在释放对话的过程中收到关于对话的请求时,P-CSCF 应该中止该请求,并回送响应 481 (对话或者事务不存在)。
同样,当 S-CSCF 发起会话释放时,如果又接收到该会话的其他请求消息,S-CSCF 应终止接受请求并返回一个 481 响应。
Q3:P-CSCF 在 P-CSCF/BAC 容灾接管的主叫流程中,如何构造 PAI 和 Route 参数以重建路由?
A3: 在 P-CSCF 容灾接管的主叫流程中,备用 P-CSCF2 没有用户注册数据,必须动态重建路由。
- 构造 PAI:P-CSCF2 在
INVITE消息中提取 PPI 或者 FROM 域的主叫号码构造 PAI。 - 构造 Route:P-CSCF2 在
INVITE消息的Route中增加标识主叫流程的orig参数。 I-CSCF 随后根据orig参数提取 PAI,向 HSS 发送普通的 LIR 请求,以获取主叫用户当前服务的 S-CSCF。