好的,专家讲师。我将继续为您撰写 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)**是位于这两个域边界的关键网元,它执行以下核心任务:

  1. 信令转换:将 SIP 协议消息转换为 ISUP/BICC 协议消息,反之亦然。
  2. 会话控制:通过 H.248/MEGACO 协议控制媒体网关(MGW)建立和管理媒体流。
  3. 跨域计费锚定:在跨越信任域边界时,严格处理 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 响应时,必须遵循以下要求:

  1. 发送 100 Trying:MGCF 必须向 IMS 域发送 100 Trying 消息
  2. 发送 183 响应:MGCF 在 MGW 对编解码器没有要求或者找到匹配的编解码器之后,向 IMS 域发送 183 Session Progress
  3. Require 头:MGCF 必须将 Require 头设成 100rel,确保 183 响应的可靠传输。
  4. PRACK 确认:MGCF 收到 PRACK200 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 响应时,必须执行以下计费操作:

  1. ICID 存储:MGCF 必须存储 P-Charging-Vector 头中的 icid
  2. CFA 存储:MGCF 必须存储 P-Charging-Function-Addresses 中的参数值。
  3. 始发 IOI 存储与插入:MGCF 必须存储 P-Charging-Vector 头中的 orig-ioi 参数。同时,在 183 Session ProgressP-Charging-Vector 中,MGCF 必须插入前面所存储的 orig-ioi
  4. 终结 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 网络互通的关键,其核心职责在于:

  1. 可靠性:通过支持 100rel 机制和在特定条件下发送 UPDATE,确保跨域媒体协商的可靠性。
  2. 计费锚定:在 183 Session Progress 响应中,严格存储 orig-ioi 并插入代表 MGCF 所在网络的第二类 term-ioi,以保障跨域计费结算的准确性。
  3. 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 依据用户的重注册状态来决定路由:

  1. 已重注册到 S-CSCF1:如果用户已经通过重注册消息注册到故障前的 S-CSCF1,P-CSCF/BAC 将用户始发请求发送到 S-CSCF1。
  2. 未重注册:如果用户未重新注册到 S-CSCF1,P-CSCF/BAC 将继续将用户始发请求转发到当前服务的 S-CSCF2

I-CSCF 或 AS 对用户的终结请求也遵循类似的原则,即获取用户当前服务的 S-CSCF。

Q2:IMS 呼叫中,当用户 A 将呼叫置于保持状态(Call Hold)时,AS(作为 B2BUA)如何与 MRF 协同播放保持音?

A2: 在呼叫保持流程中,AS 与 MRF(多媒体资源功能)协同工作:

  1. 用户保持:用户 A 发送 reINVITE 消息(SDP 媒体方向设置为保持)。
  2. AS 处理:AS 收到用户 B 回送的 200 OK 消息,其中携带用户 B 的媒体信息,表示用户 B 支持接收和发送媒体流消息。
  3. MRF 放音指示:AS 回 ACK 给用户 B,同时给 MRF 回 200 OK 消息,携带用户 B 的媒体信息,并下 INFO 指示放保持音。此时用户 B 听保持音。
  4. 用户 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 列表匹配校验

  1. 校验要求:当 P-CSCF 收到上述请求的任何响应时,P-CSCF 均应确认 Via 列表是否与同一对话的请求消息中保存的 Via 列表匹配
  2. 异常处理:如果发现 Via 列表不匹配时,P-CSCF 应丢弃 Via,或者替换成保存的 Via 列表