<!-- title: IMS去注册机制全链拆解 -->
<!-- domain: ims -->

# IMS去注册机制全链拆解：从REGISTER(expires=0)到Cx/PPR/SBA的R18全景

## 一、为什么"去注册"值得单独成篇

在前序文章拆解过IMS注册鉴权（AKA）后，本文把目光投向注册生命周期的另一端——**去注册（De-registration）**。注册解决"用户如何接入IMS"，而去注册解决一个更隐蔽、却直接关乎运营商"carrier-grade"稳定性的问题：**当用户掉电、离开覆盖、欠费停机、合约到期、USIM丢失或S-CSCF需要重选时，分散在 P-CSCF、S-CSCF、HSS、AS 上的状态机和订阅数据如何被干净地清除，避免内存泄漏与会话悬挂（hanging state machines）。**

3GPP TS 23.228 第 5.3 节将去注册明确分为两大类，并在第 5.3.2.0 节直陈设计动机：

> "If an ungraceful session termination occurs (e.g. flat battery or mobile leaves coverage)... memory leaks and eventually server failure can occur... This mechanism should be at the SIP protocol level in order to guarantee access independence for the IM CN subsystem."

也就是说，去注册必须**在SIP层解决，与底层IP-CAN解耦**——这是IMS接入无关性的体现，也是它与5GC层5GMM去注册（NAS层）根本不同的地方。在VoNR架构下，UE掉线时往往先触发5GC的去注册与PDU会话释放，但IMS层的SIP去注册作为独立机制仍然存在，二者是叠加而非替代关系。

---

## 二、两类四场景：去注册的全景分类

TS 23.228 5.3 把去注册结构化为：

| 大类 | 子类 | 触发方 | 关键信令承载 | TS 23.228 条款 |
|------|------|--------|-------------|---------------|
| **移动台发起** | UE主动去注册 | UE | REGISTER with expires=0 | 5.3.1 |
| **网络发起** | 注册超时 | P-CSCF/S-CSCF定时器 | 定时器内部清理 + SAR(TIMEOUT) | 5.3.2.1 |
| **网络发起** | HSS行政去注册 | HSS（管理功能） | RTR + REGISTER(expires=0)下发 | 5.3.2.2.1 |
| **网络发起** | 业务平台发起 | AS / Service Platform | AS触发S-CSCF → 下发REGISTER | 5.3.2.2.2 |

网络发起又可细分为5种诱因（5.3.2.0）：网络维护、流量/漫游一致性、应用层决定、订阅管理（合约到期、停机、防欺诈）、以及**S-CSCF能力变更导致的强制重选**——后者是网络发起去注册的一个高频工程用途：当用户订购了新业务，而当前S-CSCF不具备所需能力时，HSS通过去注册强制I-CSCF重新选择S-CSCF。

---

## 三、移动台发起去注册（UE-initiated）：REGISTER(expires=0) 全链

### 3.1 设计核心："去注册 = 一次过期时间为0的注册"

TS 23.228 5.3.1 第一句点明：

> "De-registration is accomplished by a registration with an expiration time of zero seconds. De-registration follows the same path as defined in clause 5.2.2.3."

这意味着去注册**复用了注册的完整路由路径**（UE→P-CSCF→I-CSCF→HSS查询→S-CSCF），而不是走捷径。复用路径的原因是：P-CSCF在去注册时**不得使用之前缓存的入口点缓存**，必须重新解析归属域名发现I-CSCF（5.3.1 步骤2），以保证归属网络拓扑变化后仍能正确送达。

### 3.2 完整信令时序

```mermaid
sequenceDiagram
    autonumber
    participant UE
    participant P as P-CSCF
    participant I as I-CSCF
    participant S as S-CSCF
    participant H as HSS
    participant AS as 业务平台/AS

    UE->>P: REGISTER(expires=0)<br/>To/From=IMPU, Authorization, P-Access-Network-Info
    Note over P,I: P-CSCF 重新解析归属域名，<br/>不使用缓存的入口点
    P->>I: 转发 REGISTER（带P-CSCF地址/网络标识）
    I->>H: Cx-Query(IMPU,IMPI,P-CSCF网络标识)
    H-->>I: Cx-Query-Resp（当前S-CSCF名）
    I->>S: 转发去注册信息流
    S->>AS: 按iFC触发第三方去注册（清除订阅信息）
    S->>H: SAR(Server-Assignment-Type=USER_DEREGISTRATION 或 ..._STORE_SERVER_NAME)
    Note over S,H: 按运营商策略选择<br/>clear S-CSCF name 或 keep S-CSCF name
    H-->>S: SAA(Cx-Put Resp)
    S-->>I: 200 OK
    I-->>P: 200 OK
    P-->>UE: 200 OK（P-CSCF随后清除该IMPU注册信息）
```

### 3.3 关键信息单元（IE）逐字段解析

去注册REGISTER请求的IE构成（基于TS 24.229 SIP过程约束）：

| IE / 头域 | 作用 | 去注册时的特殊点 |
|-----------|------|-----------------|
| **Request-URI** | 路由到归属域（如 `sip:ims.mnc<MNC>.mcc<MCC>.3gppnetwork.org`） | 与注册一致 |
| **To / From** | 携带Public User Identity（IMPU） | 与注册一致 |
| **Contact** | 指定要清除的联系地址 | **核心字段**：`Contact: <...>;expires=0`，或 `Contact: *;expires=0` 通配清除全部联系 |
| **expires=0** | 过期时间为0，即"立即注销" | 区分于重注册（expires>0）的唯一标志 |
| **Authorization** | 携带IMS AKA鉴权凭证 | 保证完整性、防重放；IMPI仅在注册/重注册/去注册时鉴权（5.3节注释） |
| **P-Access-Network-Info** | 接入类型信息 | 去注册同样需要携带 |

### 3.4 Cx-Put 的"clear"与"keep"抉择

TS 23.228 5.3.1 步骤7给了一个常被忽视的工程细节：S-CSCF向HSS发送Cx-Put时，可在两种语义间选择：

- **clear S-CSCF name**：HSS清除该IMPU的S-CSCF名，彻底回到未注册态；
- **keep S-CSCF name**：HSS保留S-CSCF名，使该用户进入**未注册态但仍有归属S-CSCF**，用于支持"未注册业务"（unregistered service，如未注册状态下的呼转、5.6.5起呼/5.12终呼相关业务）。

在Diameter映射上，这就是SAR中 `USER_DEREGISTRATION(5)` 与 `USER_DEREGISTRATION_STORE_SERVER_NAME(7)` 的区别（TS 29.229 6.3.15）。选错会导致用户的未注册业务无法触发——这是现网排错的高频点。

---

## 四、网络发起去注册（Network-initiated）：HSS行政去注册全链

这是运营商强制清退用户的典型场景（停机、欠费、USIM挂失、合约终止）。TS 23.228 5.3.2.2.1 把发起权交给HSS，并使用 **Cx-Deregister**。在TS 29.229的Diameter映射中，这个"HSS→S-CSCF"的推送由 **RTR（Registration-Termination-Request，Command-Code 304）** 承载。

### 4.1 完整信令时序

```mermaid
sequenceDiagram
    autonumber
    participant H as HSS（管理功能）
    participant S as S-CSCF
    participant AS as 业务平台/AS
    participant P as P-CSCF
    participant UE

    H->>S: RTR（Deregistration-Reason：Reason-Code=PERMANENT_TERMINATION + Reason-Info）
    S->>AS: 按iFC触发第三方去注册
    S->>P: 生成 REGISTER(expires=0) 下发，携带 Reason
    Note over S,P: S-CSCF更新本地库，<br/>将该用户置为未注册
    par P-CSCF并行处理
        P->>UE: 转发 REGISTER(expires=0) + Reason
        Note right of UE: UE可能失联，收不到也无所谓
    and
        P-->>S: 响应（P-CSCF无需等UE应答即可回S-CSCF）
    end
    UE-->>P: 200 OK（当可能时；失联则由定时器兜底）
    S-->>H: RTA（Registration-Termination-Answer）
    Note over H,S: 注意：此流程HSS主导，<br/>S-CSCF无需再回SAR更新S-CSCF名
```

### 4.2 关键工程点

1. **P-CSCF不等UE即应答**：TS 23.228 5.3.2.2.1 NOTE 1明确，步骤4（通知UE）与步骤5（P-CSCF回S-CSCF）可并行。因为UE可能已掉电/离网，P-CSCF靠**请求定时器兜底**，无论UE是否应答都执行去注册——这保证了网络侧状态一定能被清除。

2. **Reason的端到端透传**：S-CSCF把HSS给的Deregistration-Reason**不修改地**经P-CSCF透传给UE，UE据此决定是否自动重注册，并告知用户原因。

3. **OAM层不可省**：该流程**只清除SIP应用层注册**，不触及传输层。若要彻底断网，还需配合传输层管理机制（5.3.2.2.0明确："This scenario does not address the administrative mechanisms used for updating any subscriber records, EIR records, access authorization"）。

---

## 五、Cx接口Diameter深度：RTR/SAR与Reason-Code

网络发起去注册在Diameter Cx接口涉及**两个方向、两套命令**，极易混淆：

| 方向 | 命令 | Command-Code | 携带的关键AVP | 用途 |
|------|------|-------------|--------------|------|
| S-CSCF → HSS | **SAR/SAA** | 301 | Server-Assignment-Type | S-CSCF通知HSS更新注册状态/清除S-CSCF名 |
| HSS → S-CSCF | **RTR/RTA** | 304 | Deregistration-Reason | HSS强制通知S-CSCF注销用户 |
| HSS → S-CSCF | PPR/PPA | 305 | User-Data | 下发用户档案变更（非去注册） |

### 5.1 Server-Assignment-Type AVP 取值（TS 29.229 6.3.15）

| 值 | 名称 | 去注册场景 |
|----|------|-----------|
| 4 | TIMEOUT_DEREGISTRATION | SIP注册定时器超时 |
| 5 | USER_DEREGISTRATION | 收到UE发起去注册 |
| 6 | TIMEOUT_DEREGISTRATION_STORE_SERVER_NAME | 超时但保留S-CSCF名（支持未注册业务） |
| 7 | USER_DEREGISTRATION_STORE_SERVER_NAME | UE去注册但保留S-CSCF名 |
| 8 | ADMINISTRATIVE_DEREGISTRATION | 管理原因/网络问题/或P-CSCF故障恢复（多IMPI场景） |
| 9 | AUTHENTICATION_FAILURE | 鉴权失败 |
| 10 | AUTHENTICATION_TIMEOUT | 鉴权超时 |
| 11 | DEREGISTRATION_TOO_MUCH_DATA | S-CSCF收到的用户档案数据过大 |

### 5.2 Deregistration-Reason AVP 结构（TS 29.229 6.3.16–6.3.18）

```mermaid
flowchart LR
    DR["Deregistration-Reason<br/>AVP Code 615 (Grouped)"]
    DR --> RC["{ Reason-Code }<br/>枚举型，必选"]
    DR --> RI["[ Reason-Info ]<br/>UTF8String，可选"]
    DR --> EXT["*[ AVP ]<br/>扩展，可选"]

    RC --> RC0["0 PERMANENT_TERMINATION<br/>永久终止（停机/合约到期）"]
    RC --> RC1["1 NEW_SERVER_ASSIGNED<br/>已分配新S-CSCF（强制重选）"]
    RC --> RC2["2 SERVER_CHANGE<br/>服务器变更"]
    RC --> RC3["3 REMOVE_S-CSCF<br/>移除S-CSCF"]

    classDef box fill:#eef,stroke:#335,stroke-width:1px;
    class DR,RC,RI,EXT,RC0,RC1,RC2,RC3 box;
```

**Reason-Code的工程含义**：`PERMANENT_TERMINATION` 对应彻底停机，UE收到后应提示用户且不自动重注册；`NEW_SERVER_ASSIGNED`/`SERVER_CHANGE` 则意味着用户应重新注册到新的S-CSCF——这正是"通过去注册强制S-CSCF重选"机制的协议层落地。

---

## 六、R18演进：Cx到SBA（SBI）的映射——IMS服务化

Release 18给IMS带来的重要变化是**IMS的服务化架构（SBA in IMS）**，TS 23.228 Annex AA（normative）定义了Cx/Dx接口向SBI服务的映射。对去注册而言，这意味着传统的Diameter命令被替换为基于HTTP的Nhss_ImsUECM服务操作：

| Cx/Dx Diameter 命令（R16及以前） | R18 SBI 服务操作（Annex AA） |
|--------------------------------|------------------------------|
| SAR（S-CSCF→HSS更新注册态/去注册） | **Nhss_ImsUECM_Deregistration** |
| RTR（HSS→S-CSCF去注册通知） | **Nhss_ImsUECM_DeregistrationNotification** |
| UAR（I-CSCF→HSS授权） | Nhss_ImsUECM_Authorize |
| LIR（I-CSCF→HSS定位） | Nhss_ImsUECM_Authorize（同操作不同Authorization Type） |

**Nhss_ImsUECM_Deregistration** 的契约（TS 23.228 AA.2.1.2.2）：
- 输入必选：`S-CSCF name`、`Deregistration Type`；
- 输入可选：User Identity（IMPI和/或IMPU）、P-CSCF Restoration indication、Session Priority；
- 输出：Result indication。

**Nhss_ImsUECM_DeregistrationNotification**（AA.2.1.2.3）对应RTR方向：HSS向"在HSS中注册过的S-CSCF"推送Public Identity的去注册，输入必选 `Private Identity`、`Reason for Deregistration`，输出可选 `Associated Private Identities`、`Identities with Emergency Registration`——后者保留了紧急注册身份的特殊处理（紧急注册不应被普通去注册清除）。

这一映射使IMS可与5GC的UDM/HSS融合部署，Cx的Diameter栈可被SBI替代，便于云原生与跨域互通。**注意**：该服务化映射在R18为规范性Annex，但现网演进是渐进的，多数运营商仍运行Diameter Cx，SBI为新建IMS或5GC融合IMS所用。

---

## 七、注册状态转换图

去注册贯穿的是IMS注册状态机的关键跃迁：

```text
stateDiagram-v2
    [*] --> NotRegistered
    NotRegistered --> Registered : 初次注册成功<br/>（AKA通过，SAR:REGISTRATION）
    Registered --> Registered : 重注册<br/>（SAR:RE_REGISTRATION）
    Registered --> NotRegistered : UE去注册<br/>（expires=0, SAR:USER_DEREGISTRATION）
    Registered --> NotRegistered : 注册超时<br/>（SAR:TIMEOUT_DEREGISTRATION）
    Registered --> NotRegistered : HSS行政去注册<br/>（RTR:PERMANENT_TERMINATION）
    Registered --> Unregistered_WithSrv : 保留S-CSCF名的去注册<br/>（SAR:*_STORE_SERVER_NAME）<br/>支持未注册业务
    Unregistered_WithSrv --> Registered : 重新注册
    Unregistered_WithSrv --> NotRegistered : HSS清除S-CSCF名
    NotRegistered --> [*]
```

---

## 八、实战连接：抓包识别与排错

### 8.1 如何在抓包中识别去注册

- **UE发起**：Wireshark过滤 `sip.Method == "REGISTER"`，查看Contact头 `expires=0`，且Authorization头存在。注意区分重注册（expires较大，如600000ms）与去注册（expires=0）。
- **Cx层（Diameter）**：过滤 `diameter.cmd.code == 301`（SAR）观察Server-Assignment-Type AVP；`diameter.cmd.code == 304`（RTR）观察HSS推送的去注册，重点看Deregistration-Reason→Reason-Code。
- **SBI层（R18）**：过滤HTTP `PUT/POST /nhss-imsuecm/v1/.../deregister` 或 `deregistration-notification`。

### 8.2 常见故障点

| 现象 | 可能根因 | 排查方向 |
|------|---------|---------|
| 用户去注册后，未注册业务（如呼转）失效 | S-CSCF选了 `USER_DEREGISTRATION(5)` 而非 `..._STORE_SERVER_NAME(7)` | 检查SAR的Server-Assignment-Type与运营商策略 |
| 停机用户仍可被呼入 | HSS发了RTR但P-CSCF未下发到UE，UE未感知 | 检查P-CSCF定时器兜底；S-CSCF是否生成REGISTER(expires=0) |
| S-CSCF内存持续增长 | 注册超时定时器（P-CSCF/S-CSCF）未对齐，悬挂状态机 | 检查5.3.2.1超时流程是否触发，SAR:TIMEOUT是否发送 |
| 用户反复重注册失败 | HSS下发 `NEW_SERVER_ASSIGNED`，但I-CSCF重选S-CSCF失败 | 检查I-CSCF的Cx-Query与S-CSCF能力集匹配 |
## 常见问题

**Q1：UE发起去注册与5GC的NAS去注册是一回事吗？**
A：不是。IMS去注册是**SIP应用层**机制（REGISTER expires=0），接入无关；5GC去注册是**NAS/5GMM层**机制（TS 24.501）。VoNR下用户掉线时，二者都会发生但相互独立：NAS去注册释放PDU会话与5G上下文，IMS去注册清除SIP注册态。IMS去注册复用了注册的信令路径但expires置0。

**Q2：RTR（304）和SAR（301）都和去注册有关，到底谁发谁？**
A：方向不同。**SAR是S-CSCF→HSS**（S-CSCF主导，如UE去注册、超时），用Server-Assignment-Type标识；**RTR是HSS→S-CSCF**（HSS主导，如行政停机），用Deregistration-Reason/Reason-Code标识。记忆口诀：S-CSCF想清→SAR；HSS强清→RTR。

**Q3：为什么去注册有时HSS保留S-CSCF名？**
A：为支持**未注册业务**（unregistered service，TS 23.228 5.6.5/5.12），如未注册态呼叫转移。若清除S-CSCF名，则用户彻底无归属S-CSCF，未注册业务无法触发。运营商通过SAR选 `*_STORE_SERVER_NAME` 实现保留。是否保留取决于用户是否订购了未注册业务。

**Q4：网络发起去注册时，UE收不到REGISTER(expires=0)怎么办？**
A：不影响网络侧清除。P-CSCF不等UE应答即回S-CSCF（5.3.2.2.1 NOTE 1），靠请求定时器兜底。S-CSCF和HSS状态照常清除。UE若长期失联，将由5GC侧的隐式去注册（注册定时器超时）或下一次附着时重新注册来同步。

**Q5：R18的Nhss_ImsUECM_Deregistration会取代Diameter Cx吗？**
A：渐进取代。Annex AA定义了规范化的SBI映射，使IMS可与5GC UDM融合、云原生化。但现网存量Diameter Cx庞大，演进是长期的；新建IMS或5GC融合IMS优先采用SBI。两套机制在协议语义上等价（Deregistration Type ↔ Server-Assignment-Type/Reason-Code）。

---

## 参考来源

1. [3GPP TS 23.228 V18.x（IP Multimedia Subsystem Stage 2）](https://www.3gpp.org/dynareport/23228.htm) — 第5.3节Application level de-registration procedures、Annex AA Support of SBA in IMS
2. [3GPP TS 29.229 V18.x（Cx/Dx接口Stage 3）](https://www.3gpp.org/dynareport/29229.htm) — 6.1命令集（SAR/SAA 301、RTR/RTA 304）、6.3.15 Server-Assignment-Type AVP、6.3.16 Deregistration-Reason AVP、6.3.63 SAR-Flags
3. [3GPP TS 29.228 V18.x（Cx接口用户数据/过程Stage 3）](https://www.3gpp.org/dynareport/29228.htm) — S-CSCF去注册行为细节
4. [ShareTechnote — IMS SIP Network Architecture & Cx interface](https://www.sharetechnote.com/html/IMS_SIP_NetworkArchitecture.html) — Cx接口与CSCF交互解读
5. [free5GC Blog — Introduction of IP Multimedia Subsystem Part 2](https://free5gc.org/blog/20231206/20231206/) — IMS注册/去注册流程实践视角

---
> 本文由「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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
