好的,专家讲师。我将继续为您撰写 SIP 协议深度解析系列的第二十一篇。本篇将聚焦于 IMS 网络与传统电路交换网络(CS/PSTN)的互通边界——MGCF(媒体网关控制功能)。MGCF 是实现 VoLTE 与传统语音业务互通的关键网元,它在信令转换、媒体协商以及跨域计费锚定方面承担着独特且严格的职责。
VoLTE高清语音技术精要(二十一):SIP-PSTN 互通核心:MGCF 的边界控制与计费锚定
1. 导论:MGCF——IMS 与 CS 网络的桥梁
在电信网络中,IMS 网络(基于 SIP)必须与传统 CS/PSTN 网络(基于 ISUP/BICC 协议)无缝互通。**MGCF(Media Gateway Control Function)**是位于这两个域边界的关键网元,它执行以下核心任务:
- 信令转换:将 SIP 协议消息转换为 ISUP/BICC 协议消息,反之亦然。
- 会话控制:通过 H.248/MEGACO 协议控制媒体网关(MGW)建立和管理媒体流。
- 跨域计费锚定:在跨越信任域边界时,严格处理 SIP 私有头域,特别是 P-Charging-Vector 中的 **IOI(Inter-Operator Identifier)**参数,以确保正确的跨域结算。
MGCF 的处理逻辑必须严格遵守 IMS 协议规范,特别是在 SIP 可靠性机制和计费信息的完整性方面。
2. MGCF 的信令完整性处理与可靠性要求
MGCF 在 SIP 与 CS 域的互通中,必须支持 SIP 的可靠传输机制,以确保关键媒体信息的准确传递。
2.1 100rel 机制的强制应用
当 MGCF 收到来自 IMS 域的 INVITE 请求,且该请求的 Supported 头域的值为 100rel(可靠临时响应)时,MGCF 在向 IMS 域发送 183 Session Progress 响应时,必须遵循以下要求:
- 发送 100 Trying:MGCF 必须向 IMS 域发送
100 Trying消息。 - 发送 183 响应:MGCF 在 MGW 对编解码器没有要求或者找到匹配的编解码器之后,向 IMS 域发送
183 Session Progress。 - Require 头:MGCF 必须将
Require头设成100rel,确保183响应的可靠传输。 - PRACK 确认:MGCF 收到
PRACK的200 OK响应,并且 COT 消息中连续性指示(Continuity Indicators)设为“continuity check successful”后,MGCF 将发送UPDATE请求。
3. MGCF 的跨域计费锚定职责(P-Charging-Vector)
在互通场景下,MGCF 必须处理 SIP 消息中携带的 P-Charging-Vector,特别是负责插入和存储 IOI(Inter-Operator Identifier),以清晰界定始发网络和终结网络。
3.1 P-Charging-Vector 参数的存储与插入
当 MGCF 收到 IMS 域的 INVITE 请求(若其中 Supported 头的值为 100rel)时,MGCF 在向 IMS 域发送 183 Session Progress 响应时,必须执行以下计费操作:
- ICID 存储:MGCF 必须存储 P-Charging-Vector 头中的
icid值。 - CFA 存储:MGCF 必须存储 P-Charging-Function-Addresses 中的参数值。
- 始发 IOI 存储与插入:MGCF 必须存储
P-Charging-Vector头中的orig-ioi参数。同时,在183 Session Progress的P-Charging-Vector中,MGCF 必须插入前面所存储的orig-ioi值。 - 终结 IOI 插入:MGCF 必须向
P-Charging-Vector插入第二类term-ioi参数。第二类term-ioi参数必须设置为 MGCF 所在的网络。
4. MGCF 的媒体描述与 SDP 处理要求
MGCF 在 SDP 协商中也承担着媒体能力匹配和 SDP 字段清理的职责。
4.1 SDP 编解码器与 DTMF
- 编解码器提议:MGCF 必须在 SDP 中说明 MGW 所支持的编码格式,最希望采用的编码格式排在最前。
- DTMF 支持:如果 MGCF 支持 DTMF,SDP 中的 MIME 子类型应包括 “telephone-event”。
4.2 SDP 字段的限制
为了保证信令的简洁性和互通性,MGCF 发送的所有消息的 SDP 中,不应包括以下字段:
- “i=”
- “u=”
- “e=”
- “p=”
- “r=”
- “z=“
5. MGCF 的 CDR 触发机制
MGCF 作为计费触发功能(CTF)的实体,也需要向 CDF 发送 ACR 消息,创建 MGCF CDR。
| 流程阶段 | SIP/CS 触发消息 | 计费 ACR 消息类型 | CDR 动作 | 来源 |
|---|---|---|---|---|
| 会话建立 | MGCF 收到 200 OK (Invite) 响应(来自 PSTN 域) | ACR [Start] | Open a MGCF CDR | |
| 会话释放 | MGCF 收到 BYE 请求(来自 IMS 域)或 RLC 消息(来自 CS 域) | ACR [Stop] | Close the MGCF CDR |
6. S-CSCF 对 AS 故障的缺省处理原则
虽然 MGCF 专注于互通,但其上游 S-CSCF 必须具备处理 AS 故障的容错能力。当 AS 没有响应时,S-CSCF 必须遵从与初始过滤规则相关的缺省处理过程。
- 如果初始过滤规则没有包含在联系 AS 失败后 S-CSCF 应如何操作的指示,S-CSCF 的缺省行为是让呼叫继续。
- 验证通过设置 DefaultHandling 可以使用户跳过不可达的 AS 继续完成接续。
7. 本章小结
MGCF 是 IMS 网络实现与传统 CS 网络互通的关键,其核心职责在于:
- 可靠性:通过支持
100rel机制和在特定条件下发送UPDATE,确保跨域媒体协商的可靠性。 - 计费锚定:在
183 Session Progress响应中,严格存储orig-ioi并插入代表 MGCF 所在网络的第二类term-ioi,以保障跨域计费结算的准确性。 - CDR 触发:在收到
200 OK (Invite)最终响应(来自 PSTN 域)后,MGCF 触发 ACR [Start] 消息,开启 MGCF CDR。
8. 工程师进阶思考 (FAQ)
Q1:在 S-CSCF 故障恢复后,P-CSCF/BAC 如何确定用户始发请求应该发往哪个 S-CSCF(故障前的 S-CSCF1 还是故障期间接管的 S-CSCF2)?
A1: P-CSCF/BAC 依据用户的重注册状态来决定路由:
- 已重注册到 S-CSCF1:如果用户已经通过重注册消息注册到故障前的 S-CSCF1,P-CSCF/BAC 将用户始发请求发送到 S-CSCF1。
- 未重注册:如果用户未重新注册到 S-CSCF1,P-CSCF/BAC 将继续将用户始发请求转发到当前服务的 S-CSCF2。
I-CSCF 或 AS 对用户的终结请求也遵循类似的原则,即获取用户当前服务的 S-CSCF。
Q2:IMS 呼叫中,当用户 A 将呼叫置于保持状态(Call Hold)时,AS(作为 B2BUA)如何与 MRF 协同播放保持音?
A2: 在呼叫保持流程中,AS 与 MRF(多媒体资源功能)协同工作:
- 用户保持:用户 A 发送
reINVITE消息(SDP 媒体方向设置为保持)。 - AS 处理:AS 收到用户 B 回送的
200 OK消息,其中携带用户 B 的媒体信息,表示用户 B 支持接收和发送媒体流消息。 - MRF 放音指示:AS 回
ACK给用户 B,同时给 MRF 回200 OK消息,携带用户 B 的媒体信息,并下INFO指示放保持音。此时用户 B 听保持音。 - 用户 A 恢复:AS 收到用户 A 发来的
reINVITE消息中 SDP 属性的a行携带了a=sendrecv(恢复通话)后,会BYE掉 MRF,并给用户 B 发送新的reINVITE消息(改向),让用户 A 与 B 恢复通话。
Q3:P-CSCF 收到 UE 终结 INVITE 请求的任何响应(1xx 或 2xx)时,如何确保 Via 列表的完整性和匹配性?
A3: P-CSCF 必须进行严格的 Via 列表匹配校验。
- 校验要求:当 P-CSCF 收到上述请求的任何响应时,P-CSCF 均应确认
Via列表是否与同一对话的请求消息中保存的Via列表匹配。 - 异常处理:如果发现
Via列表不匹配时,P-CSCF 应丢弃Via头,或者替换成保存的Via列表。