本文聚焦 3GPP TS 23.216(SRVCC架构与流程)、TS 23.237(IMS Service Continuity,SCC AS会话锚定与Domain Transfer)以及 TS 29.280(Sv接口PS-to-CS信令)三份核心规范,逐条拆解 eSRVCC(Enhanced Single Radio Voice Call Continuity)从切换触发、Sv接口PS-to-CS请求、ATCF本地域转移到SCC AS远端腿更新与原PS会话释放的完整信令链路。这是VoLTE/VoNR语音连续性体系中最具跨域协同复杂度的机制之一。
在 LTE/5G 网络部署初期,运营商通常存在大量只有 CS(电路交换)语音覆盖的 2G/3G 区域。当用户正在进行 VoLTE/VoNR 通话、并从纯 PS 覆盖区移动到只有 CS 覆盖的区域时,由于单射频终端(Single Radio UE)同一时刻只能驻留一个无线接入,必须把正在进行的 IMS 语音会话从 PS 域"转移"到 CS 域,这就是 SRVCC 解决的核心问题。
基础 SRVCC(Rel-8/9 引入,TS 23.216)的会话转移锚点放在归属网络(Home)的 SCC AS。这意味着每当发生切换,MSC Server 都要把 Session Transfer 的 INVITE 一路送到归属 SCC AS,由 SCC AS 完成"关联已有会话→更新远端腿→释放原接入腿"的整个 Domain Transfer。当用户处于漫游或归属网络较远时,这段跨网往返的 RTT 往往超过 300ms,导致可感知的语音中断(Voice Gap),无法满足 ITU-T P.1011 对语音连续性的要求。
eSRVCC(Rel-10 引入) 的关键设计在于:把信令锚点和媒体锚点前移到服务(Visited/Serving)网络——引入 ATCF(Access Transfer Control Function) 作为信令锚点、ATGW(Access Transfer Gateway) 作为媒体锚点。这样域转移时,MSC Server 只需把 INVITE 送到本地 ATCF,ATCF 直接控制 ATGW 切换媒体腿,无需跨归属网往返,从而把切换时延压到 300ms 以内。
设计意图一句话总结:SRVCC 解决"能不能转移",eSRVCC 解决"转移够不够快"。锚点位置从归属网下移到服务网,是 eSRVCC 的全部精髓。
eSRVCC 在 IMS Service Continuity 架构(TS 23.237 §5)基础上新增 ATCF/ATGW,形成"双层锚点":服务网络的 ATCF/ATGW + 归属网络的 SCC AS。
flowchart TD
UE["UE(单射频)"] -->|"VoLTE/VoNR 通话中"| eNB["源 eNB / gNB"]
eNB --> MME["源 MME / AMF"]
MME -->|"Sv 接口 (GTPv2)"| MSC["增强型 MSC Server"]
MSC -->|"CS 域信令/媒体"| BSS["目标 BSS / RNS<br/>(CS小区)"]
MSC -.->|"① INVITE<br/>Session Transfer<br/>(Req-URI = STN-SR)"| ATCF
subgraph SV["服务网络锚点 (本地/快速)"]
ATCF["ATCF<br/>信令锚点"] --- ATGW["ATGW<br/>媒体锚点"]
end
ATCF -->|"② 更新接入腿"| SCSCF["S-CSCF"]
SCSCF --> SCC["SCC AS<br/>归属锚点"]
ATGW -->|"RTP 通话媒体"| REMOTE["远端对端 / MGW"]
classDef anchor fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;
class ATCF,ATGW,SCC anchor;
图中三个锚点的分工是理解后续信令的前提:
eSRVCC 不是"切换那一刻"才开始工作的。它依赖一次提前埋锚点的注册过程。ATCF 必须在 UE 的 IMS 注册信令路径上,否则切换时无锚可转。这段流程在 TS 23.237 §5 与 TS 23.216 §5.2 中定义。
sequenceDiagram
autonumber
participant UE
participant PCSCF as P-CSCF
participant ATCF
participant SCSCF as S-CSCF
participant HSS
participant SCC as SCC AS
UE->>PCSCF: REGISTER (初始/重注册)
PCSCF->>ATCF: REGISTER (ATCF 位于信令路径)
ATCF->>SCSCF: REGISTER
SCSCF->>HSS: Cx: SAR/UAR (取用户数据)
HSS-->>SCSCF: 用户数据 (含 STN-SR 占位/能力)
SCSCF->>SCC: 第三方 REGISTER (iFC 触发 SCC AS)
Note over SCC,ATCF: SCC AS 下发 STN-SR 给 ATCF,<br/>ATCF 保存并分配本次注册的 STN-SR
SCC-->>SCSCF: 200 OK (回带 ATCF 的 STN-SR)
SCSCF-->>ATCF: 200 OK
ATCF-->>PCSCF: 200 OK
PCSCF-->>UE: 200 OK (注册成功)
Note over ATCF,SCC: 此后每次会话建立,ATCF 强制 ATGW 锚定媒体
关键设计点:
排错提示:如果抓包看到切换走了基础 SRVCC 路径(INVITE 直送 SCC AS 而非 ATCF),第一个怀疑点就是注册阶段 ATCF 没有成功进入信令路径或 STN-SR 没有被更新为 ATCF 的号码。常见根因是 P-CSCF/IBCF 的 DNS/路由配置未把 ATCF 插入 REGISTER 路径,或 SCC AS 的 eSRVCC 能力开关未启用。
下面是 eSRVCC PS→CS 的核心信令流程。它同时跨越无线(HO准备)、PS核心网(MME/Sv)、CS核心网(MSC/CS资源)、IMS域(ATCF/SCC AS)四个平面,是理解整个机制的灵魂。
sequenceDiagram
autonumber
participant UE
participant eNB as 源 eNB
participant MME as 源 MME
participant MSC as 增强型 MSC Server
participant BSS as 目标 CS (BSS/RNS)
participant ATCF
participant SCC as SCC AS
participant REMOTE as 远端 UE/对端
Note over UE,REMOTE: 通话进行中,UE 移向 CS-only 覆盖区
eNB->>MME: HO Required (SRVCC HO 触发)
MME->>MSC: Sv: SRVCC PS to CS Request<br/>(STN-SR, C-MSISDN, IMSI,<br/>MM Context, Target ID)
MSC->>BSS: Prepare HO / Relocation (CS 资源准备)
BSS-->>MSC: Prepare HO Response (资源就绪)
MSC->>ATCF: INVITE (Session Transfer)<br/>Req-URI = STN-SR, From = C-MSISDN
Note over ATCF: 关联已锚定会话,<br/>指示 ATGW 切媒体腿到 CS 侧
ATCF->>SCC: 更新接入腿 (UPDATE / re-INVITE)
SCC->>REMOTE: (远端腿通常无需改)
SCC-->>ATCF: 200 OK
ATCF-->>MSC: 200 OK (SDP = CS 媒体描述)
MSC-->>MME: Sv: SRVCC PS to CS Response (含HO信息)
MME->>eNB: HO Command
eNB->>UE: HO Command (切到 CS 小区)
UE->>BSS: 切换并接入 CS 小区
Note over UE,BSS: CS 切换完成,语音在 CS 域延续
MME->>MSC: Forward Relocation Complete Notif.
ATCF->>SCC: 释放原 PS 接入腿 (BYE)
Note over MME,BSS: 非 voice 的 PS 承载:<br/>转发到目标 SGSN 或挂起/释放
逐步解析关键步骤与 IE:
步骤②(HO Required):源 eNB(或 gNB)依据测量报告判定 UE 将进入无 PS 语音、仅有 CS 的覆盖区,向 MME 上报 HO Required,并携带 SRVCC HO Indication,告诉核心网"这次切换是 PS→CS 的 SRVCC 类型"。MME 据此区分普通 PS 切换与 SRVCC。
步骤③(Sv: SRVCC PS to CS Request,TS 29.280 §5.2.2):这是跨平面最关键的一条消息。MME 选定一个 SRVCC 增强型 MSC Server,通过 Sv 接口(基于 GTPv2)发送请求。MSC 靠这条消息同时拿到"去哪建 CS 资源"和"如何把会话转移回 IMS"所需的全部信息。
步骤④-⑤(CS 资源准备):MSC 在目标 CS 侧执行 Relocation/HO 准备,为目标 UE 分配 CS 无线与传输资源。如果 MSC 与目标 BSS/RNS 之间还需经目标 MSC 中转,会有相应 MAP/Relocation 流程。
步骤⑥(Session Transfer INVITE):MSC Server 以 STN-SR 作为 Request-URI、C-MSISDN 作为 From/关联字段,向 IMS 发起 INVITE。这是"把 CS 腿接到已锚定会话"的触发点。在 eSRVCC 中,STN-SR 指向 ATCF,所以 INVITE 第一站就是本地 ATCF;基础 SRVCC 则直达 SCC AS。
步骤⑦(ATCF 本地域转移):ATCF 用 C-MSISDN/会话标识关联到当前锚定的活跃会话,指示 ATGW 把媒体腿从原 PS 接入侧切换到新的 CS 侧(朝向 MSC/MGW)。由于 ATGW 本就锚在媒体路径上,远端媒体流无需改动,这就是 eSRVCC 的提速核心。
步骤⑧-⑩(SCC AS 域转移更新):ATCF 向 SCC AS 发 UPDATE/re-INVITE 告知"接入腿已换成 CS 腿"。SCC AS 执行 Domain Transfer 逻辑——更新会话状态、维护业务连续性(如保持的会议、前转状态),并在必要时更新远端腿(多数情况下远端媒体不变)。SCC AS 回 200 OK。
步骤⑪-⑭(切换执行):MSC 回 PS to CS Response 给 MME,MME 经 eNB 下发 HO Command,UE 切到 CS 小区。此后语音在 CS 域延续。
步骤⑯(释放原 PS 接入腿):ATCF/SCC AS 触发对原 PS 会话接入腿的 BYE,清理 PS 侧资源。非语音的 PS 承载(如数据业务)按 TS 23.216 §5.3.3a 处理:若目标支持 PS HO 则转发到目标 SGSN,否则挂起或释放。
Sv 接口是 PS 域与 CS 域之间的"翻译层",消息里每一个 IE 都承担明确的跨域职责。下表逐项说明:
| IE 名称 | 必选(M)/可选(O) | 作用说明 | 缺失/异常影响 |
|---|---|---|---|
| STN-SR | M | 会话转移号码,路由到 ATCF/SCC AS | 无则 MSC 无法发起 Session Transfer,切换失败 |
| MSISDN (C-MSISDN) | M | 跨域关联用户的 MSISDN | ATCF/SCC AS 无法关联已锚定会话 |
| IMSI | M | 用户永久标识 | CS 鉴权/计费无主键 |
| Target ID | M | 目标 CS 小区(RNC ID / CGI / SAI / Target BSS ID) | MSC 不知在哪建 CS 资源 |
| MM Context | M | CS 域鉴权矢量与安全上下文 | MSC 无法在 CS 侧快速鉴权 UE |
| MME/SGSN Number | M | 源节点地址,用于响应回送 | Response 无目的地 |
| SRVCC Indication | M | 标识本次为 SRVCC 过程 | 被当作普通 PS HO 处理 |
| Session Restart Indicator | O | SCC AS/ATCF 重启场景指示 | 重启后锚点丢失,需特殊处理 |
| CS-to-PS SRVCC Indication | O | 反向(CS→PS)场景标识 | 仅 vSRVCC/反向场景 |
设计巧思:
MM Context把 CS 域的安全上下文随路带给 MSC,使 MSC 不必让 UE 走完整的 CS 附着流程就能完成鉴权并切入 CS 小区——这是 SRVCC 能在极短时间内完成 CS 接入的关键之一。
TS 23.237 把 eSRVCC 的核心抽象为 Access Transfer / Domain Transfer:把一个会话的"接入腿(Access Leg)"从 PS 域换成 CS 域,而"远端腿(Remote Leg)"保持不变。SCC AS 维护的三方会话模型如下:
flowchart LR
subgraph 切换前
A1["PS 接入腿<br/>(UE-eNB-ATGW)"] --> SCC1["SCC AS"]
SCC1 --> R1["远端腿<br/>(对端)"]
end
subgraph 切换后
A2["CS 接入腿<br/>(UE-BSS-MSC-MGW-ATGW)"] --> SCC2["SCC AS"]
SCC2 --> R2["远端腿<br/>(对端,不变)"]
end
A1 -.->|"Domain Transfer"| A2
Domain Transfer 的关键判定(TS 23.237 §6.2):
| 维度 | 基础 SRVCC | eSRVCC(Enhanced) |
|---|---|---|
| 标准引入 | Rel-8/9(TS 23.216) | Rel-10(TS 23.216/23.237 扩展) |
| 信令锚点 | 归属 SCC AS | 服务网络 ATCF |
| 媒体锚点 | 无本地锚点,回源 SCC AS 侧 | ATGW 本地锚定 |
| STN-SR 指向 | SCC AS(HSS 静态) | ATCF(注册时动态指派) |
| Session Transfer 路径 | 跨归属网往返 | 本地 ATCF 处理 |
| 典型切换时延 | >300ms,可能有语音中断 | <300ms,满足 ITU-T P.1011 |
| 漫游场景表现 | 差(跨拜访-归属往返) | 好(本地完成) |
| 适用 | 早期 VoLTE | 现代 VoLTE/VoNR 主流 |
gtpv2 message type == SRVCC PS to CS Request(消息类型值见 TS 29.280 §7),看 STN-SR/C-MSISDN/Target ID 是否齐全。g.3gpp.atcf-path 特征标签)、HSS 中 STN-SR 取值。Q1:eSRVCC 与基础 SRVCC 最本质的区别是什么? A:锚点位置。基础 SRVCC 的会话转移锚点在归属网 SCC AS,切换要跨网往返;eSRVCC 把信令锚点(ATCF)和媒体锚点(ATGW)下移到服务网络,域转移本地完成,时延从 >300ms 压到 <300ms。STN-SR 也因此从指向 SCC AS 变为指向 ATCF。
Q2:为什么需要 MM Context 这条 IE?
A:它把 CS 域的鉴权矢量与安全上下文随路带给 MSC Server,使 MSC 无需让 UE 走完整 CS 附着就能完成鉴权并切入 CS 小区。这是 CS 接入能极快完成的关键,缺失则 MSC 无法鉴权,切换失败。
Q3:ATGW 媒体锚定是如何在会话建立时就插入的? A:在主叫/被叫会话的 INVITE/183 SDP 协商阶段,ATCF 指示 ATGW 介入媒体路径(替换 SDP 中的连接信息)。一旦锚定,后续域转移时 ATGW 只需改"朝向接入侧"的 RTP 目的地址,远端媒体不动,这是提速的根本。
Q4:eSRVCC 是否要求 UE 支持双射频? A:不需要。SRVCC/eSRVCC 正是为单射频(Single Radio)UE 设计的——UE 同一时刻只驻留一个接入,切换时先断 PS 再接 CS。双射频终端走的是更宽松的"双待"连续性,不依赖本机制。
Q5:切换后非语音的数据业务会怎样? A:按 TS 23.216 §5.3.3a 处理:若目标 CS 区域有 PS 能力且支持 PS HO,非语音 PS 承载转发到目标 SGSN;否则挂起或释放。这是为什么 eSRVCC 后用户可能感觉到数据中断但语音不断的原因。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
