《5G核心网原理与实践》实践篇 · AMF 网元功能
《5GC原理与实践》实践篇(41) 向UDM订阅签约数据变更事件和接收通知
爱卫生
2023年02月13日 23:22
《5GC原理与实践》实践篇是按网元来规划的。包括AMF篇、SMF篇、PCF篇等。
本文是AMF篇的第41篇。
1.1.9 向UDM订阅签约数据变更事件和接收通知
1.1.9.1 功能概述
在4G中,MME从HSS获取UE的签约数据。而当UE的签约数据在HSS侧发生改变时,HSS会主动的通过Diameter消息:
Insert Subscriber Data消息将更新的签约数据发给MME。
MME事先无需向HSS订阅UE的签约数据变更事件,或者也可以看成是双方心有灵犀的隐式订阅。
但在5G中,UDM中的用户签约数据发生变化,UDM不会主动的通知AMF,除非AMF事件向UDM做了订阅,表达自己对这个UE的签约
数据感兴趣。
只有做了订阅,UDM在看到签约数据变更时,才会把更新后的签约数据通过通知消息发给AMF。
【需要注意,本节提到的事件订阅和通知与1.1.6节的事件订阅不一样,本节的事件订阅是UDM作为服务的提供者
(Nudm_SubscriberDataManagement服务),AMF作为服务的消费者发起订阅。而1.1.6节是AMF作为服务
(Namf_EventExposure_Subscribe)的提供者,为其他NF提供订阅服务。】
AMF向UDM发起签约数据的订阅在29503的5.2.2.3节定义。
AMF发起订阅请求采用HTTP Post方法,在请求消息中需要提供一个接收通知的回调地址(callback uri)。
当创建好订阅关系后,UDM返回201 Created,并分配一个订阅ID用以标识这个订阅关系。如下:
当签约数据改变时,AMF从UDM接收通知在29503的5.2.2.5节定义。UDM也采用HTTP Post方法向AMF发送通知,将变更后的签约数
据发到AMF在订阅时指定的回调地址。
AMF收到后,回复204 no content。如下:
1.1.9.2 消息举例
下面通过一个场景举例,并结合一组实际的消息来看AMF的订阅通知签约数据功能。
场景假设:AMF对UE1(IMSI=460xx1111199999)的签约数据(am-data)感兴趣,向UDM发起了订阅。接下来,UDM通过本地配置
(或者收到了BOSS侧的通知)修改了UE的签约数据。将UE的签约的切片数据进行了修改。
1)首先来看AMF向UDM发送的订阅请求和收到的201响应。
- AMF的订阅请求消息包括Headers头部和JSON数据参数两个部分。其中,Headers包括method=POST、uri=/nudm-sdm/v1/imsi460xx1111199999/sdm-subscriptions。JSON数据部分包括:
其中,nfInstanceId是AMF的网元实例ID,callbackReference是AMF提供给UDM用于接收通知的回调地址,monitoredResourceUris表
示订阅的感兴趣事件,在本例中订阅的是am-data(接入管理签约数据)。
- UDM收到订阅请求后,创建和保存订阅关系,回复201 Created。
同样也包括HTTP Header和JSON数据部分。如下图所示:
需要注意,UDM在响应消息里的JSON数据部分和AMF订阅请求消息的JSON数据部分完全相同,参考楼上的截图即可,不重复给出。
这里更重要的是HTTP Header部分,除了有201状态码外,还有一个Location参数,里边携带了UDM分配的订阅ID
(SubscriptionID),用于标识订阅关系。
规范原文是:The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created resource。
Location参数的格式是:
{apiRoot}/nudm-sdm/<apiVersion>/{supi}/sdmsubscriptions/{subscriptionId}。
在本例中subscriptionId的取值是460xx1111199999_-666777888。
2)接下来再看UDM发给AMF的通知(UDM侧修改了UE签约的切片数据。)
- UDM发给AMF的通知消息包括Headers头部和JSON数据参数两个部分。
其中,Headers包括method=POST、uri=/namf-callback/v1/imsi-460xx1111199999/ue-context-notify。
Uri部分实际上是AMF在订阅请求消息中提供的回调地址。
JSON数据部分则包括了变更后的签约数据,如下图:
其中,resourceId表示修改的资源对象是UE1的am-data、op=REPLACE表示是一个完全替换的操作、path=/nssai表示修改的参数的路
径这里表示修改的是切片数据、newValue表示替换以后的新值。最后完整的解读就是将UE的签约切片变更为sst=1、sd=000002。
AMF收到后,在本地的UE上下文中更新UE的签约数据。并返回204响应。
这个204响应消息很简单,只有一个状态码,就不给出消息截图了。