作为通信学院的专家讲师,我将继续为您撰写 SIP 协议深度解析系列的第十九篇。本篇将深入探讨 IMS 语音业务的终极保障——QoS 控制平面。我们将聚焦于 SIP 域与承载控制域(EPC/5GC)之间如何通过 Rx 接口进行通信,确保专用 QoS 承载的精确建立、修改和释放。
VoLTE高清语音技术精要(十九):IMS QoS 控制平面:Rx 接口、STR 与承载资源的同步释放
1. 导论:IMS与承载网的“契约”——Rx 接口
IMS 提供的 VoLTE/VoNR 业务,其电信级质量(QoS)并非仅由 SIP 信令保障,而是依赖于底层核心网(EPC/5GC)建立的专用 QoS 承载(例如 QCI=1)。SIP 协议负责决定“何时”和“用什么媒体”进行通信,而 Rx 接口则负责通知承载控制功能(PCRF/PCF)去执行“资源预留”和“资源释放”的实际操作。
在 IMS 架构中,P-CSCF 扮演着 **AF(Application Function,应用功能)**的角色。Rx 接口连接 P-CSCF(AF)和 PCRF(Policy and Charging Rules Function,策略和计费规则功能),用于传递应用层(SIP)的策略和承载需求。
本章将详细解析 P-CSCF 如何利用 Rx 接口消息(如 STR/STA 和 ASR/ASA)实现会话终止时的资源同步释放,以及在 SIP 呼叫建立和修改过程中,策略信息如何被传递和更新。
2. P-CSCF 的 QoS 策略职责与 SDP 的关联
P-CSCF 通过解析 SIP 消息中的 SDP 净荷,提取媒体流信息和资源需求(如 Precondition 状态),并将其转化为 Rx 接口消息。
2.1 SDP 与资源预留的触发
- Precondition 触发:SIP 呼叫建立过程中,
183 Session Progress响应携带 SDP Answer,其收发是触发双方底层 QoS 流建立的关键信令。- 当主叫侧 P-CSCF 收到
183且被叫侧 P-CSCF 收到INVITE后,P-CSCF 会向 PCF 发起资源建立请求,触发 QoS 流的建立。
- 当主叫侧 P-CSCF 收到
- 媒体授权:P-CSCF 和 S-CSCF 可能会对 SDP 负载进行检查,以进行媒体授权。UE 不能对 SDP 负载进行加密。
2.2 会话修改与承载信息更新
当会话参数(如编解码器、流方向)发生变更时,SIP 通过 UPDATE 或 reINVITE 通知网络,P-CSCF 必须将这些变更通知给 PCRF,以更新承载策略。
- P-Charging-Vector 更新:终端发起的
reINVITE或UPDATE请求,P-CSCF 在转发给 S-CSCF 时,应在P-Charging-Vector头中包含更新过的access-network-charging-info参数。 - 资源更新通知:当 PGW 收到
Update Bearer Response消息(资源修改完成)后,会向 PCRF 发送CCR_u消息通知资源更新成功。随后,PCRF 向 P-CSCF 发送 **RAR(Re-Auth-Request)**消息,通知 P-CSCF 承载更新情况。P-CSCF 则向 PCRF 返回 **RAA(Re-Auth-Answer)**消息。
3. 会话终止与同步释放:STR/STA 机制
会话的释放必须是同步的。IMS 要求 SIP 层的 BYE 消息必须驱动底层承载(QoS 流)的释放。Rx 接口通过 **STR(Session-Termination-Request)**和 **STA(Session-Termination-Answer)**消息实现这一同步。
3.1 BYE 消息触发 STR
当 SIP 会话终止时(通常由 BYE 请求触发),P-CSCF 立即作为 AF 向 PCRF 发起会话终止请求。
- SIP 触发:UE 发送
BYE消息。 - P-CSCF 动作:P-CSCF 收到应用会话终止消息(即
BYE)后,向 PCRF 下发 STR 消息。STR 命令的 Command-Code 为 275。- STR 消息通知 PCRF 已建立的会话要被终止掉。
- 承载释放:PCRF 收到 STR 后,发送 RAR 消息(携带
REMOVE QoS Rules指示)通知 PGW 删除专有承载。 - PCRF 响应:PCRF 返回 STA 响应给 P-CSCF。STA 命令的 Command-Code 同样为 275。
- SIP 状态清理:P-CSCF 在收到
BYE请求的2xx响应后,应删除所有对话和多媒体会话相关的信息。
3.2 S-CSCF 的释放与资源清理
S-CSCF 在会话释放时也需要释放状态信息:当收到 BYE 的 2xx 响应时,S-CSCF 应该释放所有的与对话相关的信息和与多媒体会话相关的信息。如果 S-CSCF 通过 AS 给用户提供服务,则 S-CSCF 必须通知相关 AS 结束业务。
4. PCRF/网络侧主动发起的会话终止(ASR/ASA)
除了 SIP 层的 BYE 触发释放外,如果底层承载网络发生故障或 IP-CAN 会话终止,PCRF 可以主动通知 P-CSCF/AF 终止会话。
4.1 ASR/ASA 流程
PCRF 通过 Rx 接口向 AF 发送 **ASR(Abort-Session-Request)**消息。
- PCRF 动作:如果 PCEF 发起
IP-CAN会话终止,或 PCRF 决定终止IP-CAN会话,PCRF 将向 AF(P-CSCF)发送 ASR 消息,指示 Rx 会话终止。ASR 命令的 Command-Code 为 274。 - P-CSCF 响应:AF(P-CSCF)向 PCRF 发送 **ASA(Abort-Session-Answer)**响应。
- 后续处理:收到 ASR 后,P-CSCF 必须在 SIP 侧采取动作。例如,如果 P-CSCF 检测到响应中的 SDP offer 不符合本地策略,P-CSCF 应生成 BYE 请求包含 488 (Not Acceptable Here) 原因值,发送到被指示的终端。如果申请资源失败(如 NAT 端口申请失败、QoS 授权申请失败等),P-CSCF 应向 UE 发送 CANCEL 消息以释放会话,并包含原因值为 503(Service Unavailable)。
5. IMS 计费与承载释放的协同
会话的终止必须同步触发计费的终止。P-CSCF 和 S-CSCF 在收到 BYE 请求后,会向各自的 CDF 发送 ACR [Stop] 消息,关闭会话 CDR。
计费关联:所有这些计费和承载释放的消息都通过 P-Charging-Vector 中携带的 ICID 进行关联,确保了 CDR 的完整性和准确性。
6. 本章小结
IMS QoS 控制平面通过 P-CSCF(AF)和 PCRF 之间的 Rx 接口实现 SIP 会话与底层承载资源的同步管理:
- 资源启动:SDP 消息(尤其是
183 Session Progress)触发 P-CSCF 向 PCRF 发起资源建立请求。 - 会话修改:媒体更新(
UPDATE/reINVITE)要求 P-CSCF/S-CSCF 更新P-Charging-Vector中的access-network-charging-info,并驱动 Rx 接口的策略更新。 - 同步释放:SIP 层的
BYE消息触发 P-CSCF 向 PCRF 发送 STR 消息,通知终止承载会话。PCRF 返回 STA 响应,并指示 PGW 删除 QoS 承载。 - 网络侧终止:PCRF 可通过 ASR 消息主动通知 P-CSCF 终止 Rx 会话,以应对底层网络故障。
7. 工程师进阶思考 (FAQ)
Q1:在 MO 流程中,P-CSCF 收到 UE 发来的 INVITE 请求时,必须回送 100 (Trying)。如果 P-CSCF 延迟响应或故障,UE 在 Timer B 超时后会如何处理?
A1: P-CSCF 必须回送 100 (Trying) 响应以阻止 UE 重传 INVITE。如果 P-CSCF/BAC 发生故障,终端在相应的定时器 Timer B 内没有收到响应消息,终端会结束当前呼叫,当前呼叫失败。随后,终端将重新向优先级别次低的 P-CSCF/BAC2 发起初始注册流程,注册成功后,后续的 INVITE 请求按正常流程处理。
Q2:在 S-CSCF 容灾场景下,当故障的 S-CSCF 恢复后,P-CSCF/BAC 如何决定用户始发请求应该发往哪个 S-CSCF?
A2: P-CSCF/BAC 会根据用户的重注册状态来决定路由:
- 已注册到 S-CSCF1:如果用户已经通过重注册消息注册到原来的 S-CSCF1,P-CSCF/BAC 会将用户始发请求发送到 S-CSCF1。
- 未重注册:如果用户未重新注册到 S-CSCF1(可能仍注册在 S-CSCF2 上),P-CSCF/BAC 会继续将用户始发请求转发到当前服务的 S-CSCF2。
- 在 S-CSCF 故障期间,I-CSCF 和 AS 在处理终结请求时,也会按照正常流程获取用户当前服务的 S-CSCF,并将请求发送给当前服务的 S-CSCF2。
Q3:IMS 呼叫中,当用户 A 将呼叫置于保持状态时(Call Hold),彩铃 AS 在收到用户 B 的 200 OK 响应后,会向用户 A 回送 reINVITE 200 OK 消息,其中 SDP 属性的 a 行应携带什么内容?
A3: 在呼叫保持业务中,AS 通常与 MRF 协同播放保持音。当 AS 收到用户 B 的 200 OK 消息后,它会给用户 A 回送 reINVITE 200 OK 消息,SDP 属性的 a 行应携带 a=recvonly。这指示用户 A 侧只能接收媒体流(即来自 MRF 的保持音),而不能发送媒体流。同时,AS 会向 MRF 下发 INFO 指示放保持音。用户 B 此时听保持音。