5G核心网学习平台
UDM 实践篇 #02

5GC实践篇之UDM篇第18篇:PDU会话释放中的UDM交互

《5G核心网原理与实践》实践篇 · UDM 网元功能

5GC实践篇之UDM篇第18篇:PDU会话释放中的UDM交互

作者:爱卫生


1 测试背景与用例简介

在上一篇中,我们详细剖析了PDU会话建立过程中SMF与UDM的"注册→获取→订阅"三步交互。本篇我们将目光转向这一流程的"逆过程"——PDU会话释放(PDU Session Release)

PDU会话释放是5G核心网中与PDU会话建立相对应的关键流程。当用户不再需要某条数据连接时,网络必须有序地释放相关资源,其中就包括SMF向UDM"注销自己"和"取消订阅"这两个反向操作。如果说PDU会话建立是"入驻登记",那么PDU会话释放就是"退房结算"——SMF必须完成两项关键操作才能干净地释放会话

  1. 向UDM取消订阅数据的变更通知(告诉UDM:"我不再需要你通知我签约数据变化了");
  1. 向UDM注销自己的会话管理注册信息(告诉UDM:"我不再管理这个用户的这个会话了")。

这两步操作分别对应UDM的两个核心SBI服务:Nudm_SDM_UnsubscribeNudm_UECM_DeRegistration。值得注意的是,这里的操作顺序与会话建立时恰好相反——建立时先注册后订阅,释放时先取消订阅后注销。

PDU会话释放可以由多种触发源发起:

  • UE主动发起:用户手动关闭数据连接,或应用层请求释放会话;

  • UE关机:终端掉电,网络侧检测到连接中断后触发释放;

  • 网络侧发起:SMF/AMF/PCF等网元基于策略、超时或运维操作触发释放。

无论哪种触发源,SMF与UDM的交互逻辑是相同的。本篇通过实际抓包验证这两种典型场景下SMF与UDM的信令交互。

详细消息流程图


sequenceDiagram

    participant UE

    participant RAN as (R)AN

    participant AMF

    participant SMF

    participant UDM

    participant PCF

    participant UPF

    Note over UE, UPF: 场景一:UE主动发起PDU会话释放

    UE->>RAN: PDU Session Release Request

    RAN->>AMF: N2 Message (PDU Session Release Request)

    AMF->>SMF: Nsmf_PDUSession_UpdateSMContext Request

    rect rgb(255, 235, 235)

        Note over SMF, UDM: UDM交互(反向操作)

        SMF->>UDM: ① Nudm_SDM_Unsubscribe (DELETE)<br/>取消订阅数据变更通知

        UDM-->>SMF: 204 No Content (取消成功)

        SMF->>UDM: ② Nudm_UECM_DeRegistration (DELETE)<br/>注销SMF会话注册

        UDM-->>SMF: 204 No Content (注销成功)

    end

    SMF->>PCF: SM Policy Association Termination

    SMF->>UPF: N4 Session Release Request

    UPF-->>SMF: N4 Session Release Response

    SMF-->>AMF: Nsmf_PDUSession_UpdateSMContext Response

    AMF->>RAN: N2 PDU Session Resource Release Command

    RAN->>UE: PDU Session Release Command


sequenceDiagram

    participant UE

    participant RAN as (R)AN

    participant AMF

    participant SMF

    participant UDM

    participant PCF

    participant UPF

    Note over UE, UPF: 场景二:UE关机触发的PDU会话释放

    UE->>RAN: NAS Deregistration Request (Power-off)

    RAN->>AMF: N2 Message (Deregistration Request)

    AMF->>SMF: Nsmf_PDUSession_ReleaseSMContext Request

    rect rgb(255, 235, 235)

        Note over SMF, UDM: UDM交互(反向操作)

        SMF->>UDM: ① Nudm_SDM_Unsubscribe (DELETE)<br/>取消订阅数据变更通知

        UDM-->>SMF: 204 No Content

        SMF->>UDM: ② Nudm_UECM_DeRegistration (DELETE)<br/>注销SMF会话注册

        UDM-->>SMF: 204 No Content

    end

    SMF->>PCF: SM Policy Association Termination

    SMF->>UPF: N4 Session Release Request

    UPF-->>SMF: N4 Session Release Response

    SMF-->>AMF: Nsmf_PDUSession_ReleaseSMContext Response


flowchart LR

    subgraph SMF向UDM释放会话的两个服务调用

        A["① Nudm_SDM_Unsubscribe<br/>DELETE /sdm-subscriptions/{subscriptionId}<br/>→ 204 No Content"] -->

        B["② Nudm_UECM_DeRegistration<br/>DELETE /smf-registrations/{pduSessionId}<br/>→ 204 No Content"]

    end

    style A fill:#ffebee,stroke:#c62828,stroke-width:2px

    style B fill:#fce4ec,stroke:#880e4f,stroke-width:2px


测试目的

验证UDM能够正确支持SMF发起的PDU会话释放流程,包括SMF的SDM取消订阅和UECM去注册两项交互。

测试前置条件

  1. SA网络中各网元系统及操作维护台运行正常。

  2. 终端和网络连接正常。

  3. UE在UDM开户,签约5G业务。

  4. 服务化接口的信令监控、分析的工具准备就绪。

  5. UE已在5GC完成注册,且已成功建立PDU会话。

测试步骤

  1. UE发起会话释放请求,要求释放已建立的PDU会话。

  2. Frame: 1245-1258

  3. UE关机,触发网络侧PDU会话释放流程。

  4. Frame: 1402-1420

  5. 检查两次流程涉及接口的服务消息和参数信息。

测试结果验证(预期)

  1. SMF使用UDM的Nudm_SDM_Unsubscribe服务取消订阅,携带订阅ID,UDM响应取消成功。

  2. SMF使用UDM的Nudm_UECM_DeRegistration服务去注册,携带pduSessionId,UDM响应去注册成功。

  3. PDU会话释放成功,信令消息流程符合协议规范。


2 PDU会话释放中UDM信令深度解析

在本测试中,SMF与UDM的交互是PDU会话释放过程中"资源清理"阶段的核心环节。SMF必须按顺序完成"取消订阅→注销注册"两个步骤,确保UDM侧不再保留该会话的任何残留记录。

(注:为保护网络安全,以下log中的SUPI/IMSI标识、网元IP及实例ID等敏感信息已做严格脱敏处理)

2.1 SMF向UDM取消订阅(Nudm_SDM_Unsubscribe)

这是SMF在会话释放时与UDM的第一次交互。还记得在PDU会话建立时(第17篇),SMF通过Nudm_SDM_Subscribe向UDM订阅了签约数据的变更通知,UDM返回了一个subscriptionId。现在会话要释放了,SMF必须"主动退订"——用这个订阅ID向UDM发起DELETE请求,告诉UDM:"我不再需要你通知我签约数据变化了。"

SMF使用HTTP DELETE方法调用Nudm_SDM_Unsubscribe服务,将之前订阅时获得的subscriptionId作为资源路径的一部分发送给UDM。UDM收到后清除对应的订阅记录,不再向SMF推送变更通知。


sequenceDiagram

    participant SMF

    participant UDM

    Note over SMF, UDM: Nudm_SDM_Unsubscribe

    SMF->>UDM: DELETE /nudm-sdm/v1/imsi-460XX00000XXXX<br/>/sdm-subscriptions/imsi-460XX00000XXXX_SM_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

    Note right of SMF: 请求路径携带:<br/>subscriptionId<br/>即建立时UDM分配的订阅ID

    UDM-->>SMF: 204 No Content

    Note left of UDM: UDM删除订阅记录<br/>停止向SMF推送变更通知

信令抓包解析:


# 1. SMF -> UDM(取消签约数据订阅 DELETE请求)

Frame: 1250 & 1253

HEADERS[11]: DELETE /nudm-sdm/v1/imsi-460XX00000XXXX/sdm-subscriptions/imsi-460XX00000XXXX_SM_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

# DELETE请求不需要请求体,所有信息都在URI中

# subscriptionId = imsi-460XX00000XXXX_SM_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

# 此ID正是第17篇中建立会话时Nudm_SDM_Subscribe返回的订阅标识

# 2. UDM -> SMF(取消订阅成功响应)

Frame: 1255

HEADERS[3]: 204 No Content

# 204表示UDM已成功删除对应的订阅记录

# UDM将不再向SMF的callbackReference推送签约数据变更通知

关键信元解读:

信元 含义 说明
subscriptionId(URI中): 订阅标识 | 建立会话时Nudm_SDM_Subscribe返回的唯一ID |

HTTP DELETE 操作类型 RESTful语义:删除指定订阅资源
204 No Content 成功响应 表示资源已成功删除,无需返回响应体

协议参考:根据3GPP TS 29.503 第5.2.5节,Nudm_SDM_Unsubscribe操作的本质是删除一个SdmSubscription资源。SMF通过在DELETE请求的URI中携带完整的subscriptionId,精确指定要删除的订阅记录。UDM收到请求后,会通过UDR清除对应的监控注册,并释放相关资源。如果subscriptionId不存在或已被删除,UDM将返回404 Not Found。


2.2 SMF向UDM注销会话注册(Nudm_UECM_DeRegistration)

取消订阅之后,SMF还需要执行第二步——"注销身份"。在PDU会话建立时,SMF通过Nudm_UECM_Registration向UDM注册了自己的会话管理身份,UDM中保存了{SUPI, pduSessionId, smfInstanceId}的映射关系。现在会话释放,SMF必须告知UDM删除这条注册记录。

SMF同样使用HTTP DELETE方法,调用Nudm_UECM_DeRegistration服务,在URI中携带pduSessionId来精确标识要删除的会话注册记录。UDM收到后清除该SUPI下对应pduSessionId的SMF注册信息。


sequenceDiagram

    participant SMF

    participant UDM

    Note over SMF, UDM: Nudm_UECM_DeRegistration

    SMF->>UDM: DELETE /nudm-uecm/v1/imsi-460XX00000XXXX
/registrations/smf-registrations/1 Note right of SMF: 请求路径携带:
pduSessionId = 1
即要注销的PDU会话标识 UDM-->>SMF: 204 No Content Note left of UDM: UDM删除该pduSessionId
对应的SMF注册记录

信令抓包解析:


# 3. SMF -> UDM(注销SMF会话注册 DELETE请求)

Frame: 1257 & 1259

HEADERS[11]: DELETE /nudm-uecm/v1/imsi-460XX00000XXXX/registrations/smf-registrations/1

# URI中的"1"即为pduSessionId

# 表示要注销该用户pduSessionId=1对应的SMF注册记录

# 4. UDM -> SMF(注销成功响应)

Frame: 1261

HEADERS[3]: 204 No Content

# 204表示UDM已成功删除该pduSessionId对应的SMF注册信息

# 此后UDM中不再有"该会话由哪个SMF管理"的记录

关键信元解读:

信元 含义 说明

| pduSessionId(URI中) | PDU会话标识 | 取值1~15,标识要注销的具体会话 |

HTTP DELETE 操作类型 RESTful语义:删除指定注册资源
204 No Content 成功响应 表示注册记录已成功删除

协议参考:根据3GPP TS 29.503 第5.3.2节,Nudm_UECM_DeRegistration操作用于删除某个SUPI下特定的SMF注册记录。UDM收到请求后,会通过UDR删除{SUPI, pduSessionId}对应的SMF注册数据。需要注意:如果该用户还有其他PDU会话(不同的pduSessionId),它们的注册记录不受影响——注销操作是"精确打击",而非"一刀切"。


2.3 【硬核附加】两种释放场景对比:UE主动释放 vs UE关机释放

在实际网络中,PDU会话释放最常见的两种触发场景是"UE主动发起释放"和"UE关机触发释放"。虽然两者最终都会执行相同的SMF-UDM交互,但在信令路径和部分参数上存在差异。下面通过对比表格和流程图详细分析。


flowchart TD

    A["PDU会话释放触发"] --> B{"释放触发源"}

    B --> | "UE主动发起" | C["UE发送 PDU Session Release Request"]

    B --> | "UE关机" | D["UE发送 NAS Deregistration Request - Power-off"]

    B --> | "网络侧发起" | E["SMF/AMF/PCF触发释放"]

    C --> F["AMF通过 Nsmf_PDUSession_UpdateSMContext 通知SMF"]

    D --> G["AMF执行去注册流程,通过 Nsmf_PDUSession_ReleaseSMContext 通知SMF"]

    E --> H["SMF直接发起释放流程"]

    F --> I["SMF执行UDM交互"]

    G --> I

    H --> I

    I --> J["① Nudm_SDM_Unsubscribe: DELETE /sdm-subscriptions/{subscriptionId}"]

    J --> | "204 成功" | K["② Nudm_UECM_DeRegistration: DELETE /smf-registrations/{pduSessionId}"]

    K --> | "204 成功" | L["SMF释放PCF策略关联和UPF N4会话"]

    L --> M["PDU会话释放完成"]

    style M fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px

    style I fill:#fff3e0,stroke:#e65100,stroke-width:2px

两种场景的核心差异对比:

对比维度 UE主动释放 UE关机释放
触发信令 PDU Session Release Request NAS Deregistration Request (Switch-Off)

| AMF通知SMF的服务 | Nsmf_PDUSession_UpdateSMContext | Nsmf_PDUSession_ReleaseSMContext |

释放范围 仅释放指定PDU会话 释放该UE的所有PDU会话
UE状态 保持注册状态,可重新建立会话 UE去注册,需要重新注册才能使用业务
UDM交互次数 1次(单个会话) N次(N=该UE的PDU会话总数)
RAN侧资源 仅释放指定会话的DRB 释放所有DRB及信令连接

| AMF在UDM的注册 | 保留 | 也会执行Nudm_UECM_Deregistration(AMF去注册)

UE关机场景的特殊之处:

当UE执行关机操作时,终端会发送一条Deregistration Request消息,其中Access Type指示注销的接入类型,Deregistration type设为"switch-off"。AMF收到后,除了要对每个PDU会话执行上述SMF-UDM交互外,AMF自身还需要向UDM执行AMF级别的去注册(Nudm_UECM_Deregistration,我们已在第15篇中详细分析)。

这意味着在UE关机场景下,UDM实际上会处理两层去注册

  • SMF层:每个PDU会话各执行一次Nudm_UECM_DeRegistration(删除smf-registrations/{pduSessionId});

  • AMF层:执行一次Nudm_UECM_Deregistration(删除amf-3gpp-access注册)。

一个实际的UE关机信令序列:


# UE关机时,如果有2个PDU会话(pduSessionId=1和pduSessionId=3),

# UDM将依次处理以下请求:

# PDU会话1的释放:

Frame: 1405 - DELETE /nudm-sdm/v1/imsi-460XX00000XXXX/sdm-subscriptions/imsi-460XX00000XXXX_SM_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Frame: 1407 - 204 No Content

Frame: 1409 - DELETE /nudm-uecm/v1/imsi-460XX00000XXXX/registrations/smf-registrations/1

Frame: 1411 - 204 No Content

# PDU会话3的释放:

Frame: 1413 - DELETE /nudm-sdm/v1/imsi-460XX00000XXXX/sdm-subscriptions/imsi-460XX00000XXXX_SM_YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY

Frame: 1415 - 204 No Content

Frame: 1417 - DELETE /nudm-uecm/v1/imsi-460XX00000XXXX/registrations/smf-registrations/3

Frame: 1419 - 204 No Content

# AMF去注册(AMF层的UDM交互,第15篇已详细分析):

Frame: 1422 - DELETE /nudm-uecm/v1/imsi-460XX00000XXXX/registrations/amf-3gpp-access

Frame: 1425 - 204 No Content

三个值得注意的工程细节:

1) 操作顺序为何是"先取消订阅,后注销注册"

细心的读者会发现,PDU会话建立时的顺序是"先注册,后订阅",而释放时则是"先取消订阅,后注销注册"——这是一个典型的LIFO(后进先出)模式。从工程角度看,先取消订阅是更安全的选择:如果先注销注册但订阅仍在,UDM在后续签约数据变更时仍会尝试通知SMF,但此时SMF已经"无权管理"该会话,可能导致通知处理异常。先取消订阅确保了"通知通道"先关闭,再清除"身份记录",避免产生悬空回调。

2) 订阅ID的生命周期管理

subscriptionId是SMF在会话建立时从UDM获取的,SMF必须在本地安全地保存这个ID,直到会话释放时使用它来取消订阅。如果SMF因故障重启而丢失了subscriptionId,将无法正常取消订阅,导致UDM中残留"僵尸订阅"。为防止这种情况,3GPP设计了两种保护机制:

  • implicitUnsubscribe: true——当SMF的NF实例从NRF注销时,UDM自动清除该NF相关的所有订阅;

  • 订阅的超时机制——部分实现中订阅本身带有有效期,超时后自动清理。

3) pduSessionId的精确注销

与AMF注册(一个用户只有一个AMF)不同,同一个用户可以建立多个PDU会话。因此,SMF在注销时必须精确指定pduSessionId,否则可能误删其他正常会话的注册记录。在URI路径中使用pduSessionId作为资源标识符,是RESTful设计中"精确资源定位"的典型应用——DELETE操作只会删除指定路径的资源,不会产生副作用。


3 测试结论

验证项 结果 说明
PDU会话释放成功 OK UE成功释放PDU会话
SMF向UDM取消订阅 OK Nudm_SDM_Unsubscribe交互正确,DELETE /sdm-subscriptions/{subscriptionId}
SMF向UDM注销会话注册 OK Nudm_UECM_DeRegistration交互正确,DELETE /smf-registrations/{pduSessionId}
消息流程和参数正确 OK 两步交互时序与协议规范一致
UE关机场景多会话释放 OK 多个PDU会话依次执行UDM交互,流程完整

本测试用例完美通过!SMF在PDU会话释放过程中,通过Nudm_SDM_UnsubscribeNudm_UECM_DeRegistration两个SBI服务与UDM完成了"取消订阅→注销注册"的完整交互链路,信令流程与3GPP TS 29.503规范完全吻合。

将本篇与第17篇(PDU会话建立)结合起来看,我们可以清晰地看到UDM在会话管理生命周期中的完整角色:


flowchart LR

    subgraph PDU会话建立 - 第17篇

        A1["Nudm_UECM_Registration<br/>注册SMF会话信息"] --> A2["Nudm_SDM_Get<br/>获取签约数据"] --> A3["Nudm_SDM_Subscribe<br/>订阅数据变更"]

    end

    subgraph PDU会话释放 - 本篇

        B1["Nudm_SDM_Unsubscribe<br/>取消订阅"] --> B2["Nudm_UECM_DeRegistration<br/>注销会话注册"]

    end

    A3 -->|"会话运行中"| B1

    style A1 fill:#e3f2fd,stroke:#1565c0,stroke-width:2px

    style A2 fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px

    style A3 fill:#fff3e0,stroke:#e65100,stroke-width:2px

    style B1 fill:#ffebee,stroke:#c62828,stroke-width:2px

    style B2 fill:#fce4ec,stroke:#880e4f,stroke-width:2px

协议参考:根据3GPP TS 29.503,UDM的Nudm_UECM服务和Nudm_SDM服务共同支撑了5G核心网的会话管理生命周期。会话建立时通过Registration+Get+Subscribe完成"入驻",会话释放时通过Unsubscribe+DeRegistration完成"退房",两者形成完美的对称结构。



关于作者:爱卫生,专注通信教育18年,《5G核心网原理与实践》等4本专业书籍作者。更多5GC/IMS深度内容,欢迎关注公众号「51学通信」或加入知识星球(200+小时视频、3000+精华文章)。

本文为《5G核心网原理与实践》实践篇之UDM系列。系列持续更新中,扫码关注「51学通信」获取最新内容。

← 返回 UDM 实践篇