5G注册流程分级详解Step4-8_5g里的注册到上网_南山耕夫的博客-程序员秘密

技术标签: 5g  

***   欢迎转发,转发请注明出处    ***

 

4. AMF调用old AMF的Namf_Communication_UEContextTransfer服务获取UE上下文。

       如果UE的Registration Request消息携带5G-GUTI进行注册,并且AMF发生了变化,此时新的AMF(new AMF)会向UE原来注册的AMF(old AMF)请求UE上下文信息,包含SUPI、GPSI、5GMM Capability等参数(UE上下文的内容详见TS 23.502)。

new AMF采用POST方法调用old AMF的Namf_Communication_UEContextTransfer服务。具体使用的URI格式为:

{apiRoot}/namf-comm/<apiVersion>/ue-contexts/{ueContextId}/transfer

调用该服务携带的请求消息内容为:UeContextTransferReqData

注:

(1)通用的URI结构为:

{apiRoot}/<apiName>/<apiVersion>/<apiSpecificResourceUriPart>

(2)对于SBI接口采用POST方法还是PUT方法的区别

服务的生产者选择资源的标识符和URI,则采用POST方法;服务的消费者选择资源的标识符和URI,则采用PUT方法。

URI请求的命令行参数

  • {apiRoot}

该字段和我们日常上网,在IE地址栏中输入的内容一样,以http或者https开头的地址,后面是IP地址和端口号等信息;

  • namfcomm

AMF上用于信息传递的API名称。其它API名字为:"namf-mt"、"namf-loc"、"namf-evts"

  • <apiVersion>

目前在R16版本中全部为“v1”,后续如果有大的功能变更,可能会有更新的版本。

  • uecontexts

请求UE Context的固定值。

  • {ueContextId}

请求的UE Context的标识,可以为5G-GUTI、SUPI或者PEI,使用的格式如下:

(1)5G-GUTI:5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}

(2)SUPI:(imsi-[0-9]{5,15}|nai-.+|.+)

(3)(imei-[0-9]{15}|imeisv-[0-9]{16}|.+)

3GPP使用正则表达式进行描述,我们只需要知道对应的标记(5g-guti、imsi、nai、imei、imeisv)加上短横线,再加上具体的值即可。IMEI和IMEISV用于紧急注册,目前在国内不会遇到。我们能够遇到的基本都是5g-guti或者imsi。

  • transfer

传递已经存在的UE Context的方法。其它的可能方法有:transfer-update(后续流程中Namf_Communication_RegistrationStatusUpdate消息使用的就是该方法)、release、assign-ebi。

URI请求的内容(UeContextTransferReqData)

SBI接口的消息内容采用JSON编码。Namf_Communication_UEContextTransfer消息的请求内容定义如下:

  • reason

可选的取值为:"INIT_REG"、"MOBI_REG"、"MOBI_REG_UE_VALIDATED"。

当UE执行初始注册时取值为:"INIT_REG";当UE执行移动性注册时取值为:"MOBI_REG";当首次获取UE Context失败,AMF和AUSF执行UE鉴权成功后,再次获取UE Context时,使用"MOBI_REG_UE_VALIDATED"。

  • accessType

可选的取值为:"3GPP_ACCESS"或者"NON_3GPP_ACCESS"。

  • [plmnId]

即为MCC和MNC。

  • [regRequest]

注册流程的完整Registration Request消息,包含在该参数中。

  • [supportedFeatures]

特性支持相关的字符串。

AMF的处理过程

1. 对于初始注册和移动性注册,如果有5G-GUTI,第一次向old AMF请求获取UE上下文的输入参数为:5G-GUTI、Access Type、Reason和完整的Registration Request。AMF返回的信息如下:

  • 如果注册原因为"INIT_REG"并且old AMF执行完整性检查成功,则返回不包含PDU Session信息的UE上下文。如果old AMF根据new AMF的PLMN ID判断,不能将N2接口重定位到new AMF,则只返回supi;
  • 如果注册类型"MOBI_REG"并且old AMF执行完整性检查成功,返回200 OK消息,包含完整的UE Context(含有PDU Session信息)。

2. 如果第一次old AMF完整性检查失败(返回给new AMF的响应为:403 Forbidden,携带原因值:“INTEGRITY_CHECK_FAIL”),UE和AUSF鉴权成功后,再次向old AMF请求UE Context的消息和第一次请求的消息略有不同,三个不同点如下:

  • 第二次{ueContextId}的取值为SUPI。因为在UE和AUSF的鉴权流程中,new AMF已经得到了SUPI,所以第二次直接携带SUPI请求UE Context;
  • 第二次“reason”的取值为"MOBI_REG_UE_VALIDATED";
  • 第二次消息中不包含Registration Request消息,也就是不包含[regRequest]参数。

old AMF在处理该请求时会跳过完整性检查,直接回复“200 OK ",并携带完整的UE上下文(包含PDU Session相关的信息)。

5. old AMF向new AMF回复Namf_Communication_UEContextTransfer Response消息

  • 成功响应

如果old AMF处理成功,在Namf_Communication_UEContextTransfer Response

消息中返回200 OK 响应,并携带UE Context。响应的消息内容如下UeContextTransferRspData:

  • 响应失败

    (1) 403 Forbidden

              如果old AMF对请求消息中的Registration Request消息完整性检查失败,则设置原因值:“INTEGRITY_CHECK_FAIL”。

    (2)404 Not Found

             如果old AMF没有找到对应的UE Context则返回该响应,并设置原因值为“CONTEXT_NOT_FOUND”

获取UE Context流程相关注意点

  1. 如果在切换流程中,new AMF已经从old AMF中获取到了UE,则在注册流程中就不需要向old AMF重新获取了,即在注册流程中的第4,5,10步骤都不需要执行。
  2. 如果old AMF有不同于当前accessType的PDU Session,AMF判断该PDU Session无法重定位到新的AMF,则AMF只返回SUPI,并指示消息已经经过完整性验证,不包含UE Context的其他部分(SUPI包含在UeContext数据类型中)。
  3. 跨PLMN移动的时候,UE Context中的信息包含的是HPLMN S-NSSAI的信息(可以对应到Allowed NSSAI的S-NSSAI),而不是old PLMN的Allowed S-NSSAI。
  4. UE注册到新的AMF后,不需要重新订阅事件,因为UEContext中包含事件订阅的信息。如下:

6. Identity Request消息向UE获取SUCI

如果在Registration Request中UE没有提供SUCI,则AMF向UE发送Identity Request消息,请求获取UE的SUCI。

注:

在TS 23.502规范中,注册流程该步骤的解释为:If the SUCI is not provided by the UE nor retrieved from the old AMF the Identity Request procedure is initiated by AMF sending an Identity Request message to the UE requesting the SUCI.

“UE从old AMF没有获取到SUCI”,也是发送Identity Request消息的前提。但是我们在UE Context的定义中并没有发现SUCI字段,也就是UE Context并不保存UE的SUCI。另外,从Namf_Communication_UEContextTransfer Request的响应中可以知道,要么成功响应返回SUPI,要么获取失败返回403 Forbidden或者404 Not Found,此时,new AMF什么都不会得到。根据TS 33.501章节6.1.2:The SEAF shall include the SUPI in the Nausf_UEAuthentication_Authenticate Request message in case the SEAF has a valid 5G-GUTI and re-authenticates the UE. Otherwise the SUCI is included in Nausf_UEAuthentication_Authenticate Request. 可以知道,主鉴权流程使用的参数要么是SUCI,要么是SUPI。个人判断,TS 23.502此处编写有误,new AMF从old AMF得到SUCI的场景是不存在的,只能得到SUPI。SUCI是SIM或者ME计算得到的,每次计算的值都不一样,AMF没有必要保存SUCI。

NAS消息Identity Request消息的定义如下:

该消息中重点关注的字段为Identity Type,该字段指明了AMF请求的是哪一个5GS标识。可以请求的5GS标识如下图,最后一句话很重要:所有不能识别的标识都认为是SUCI。

该NAS消息承载在AMF和gNB之间的DOWNLINK NAS TRANSPORT(N2接口消息)消息中发送给gNB,之后gNB将NAS消息承载在RRC层的DLInformationTransfer消息中发送给UE。

DLInformationTransfer消息承载在SRB2(在SRB2未建立时也可以使用SRB1)中(逻辑信道DCCH)。

7. UE向AMF发送Identity Response消息

该NAS消息中的重点字段为:Mobile identity。UE可以发送SUCI、5G-GUTI、IMEI、IMEISV、5G-S-TMSI、MAC地址或者EUI-64作为5GS mobile identity。

该NAS消息在UE和gNB间承载在RRC层的ULInformationTransfer消息中。

ULInformationTransfer消息承载在SRB2(在SRB2未建立时也可以使用SRB1)中(逻辑信道DCCH)。

gNB收到Identity Response消息后,封装在Uplink NAS Transport(N2接口消息)消息中发送给AMF。

RRC层消息DLInformationTransfer和ULInformationTransfer用于在UE处于RRC-CONNECTED状态时传递NAS消息。

8. AUSF选择

在AMF从UE得到SUCI或者old AMF得到SUPI后,选择AUSF执行鉴权流程。

 

后续流程,留待下回分解  ......

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wuyou125/article/details/113870261

智能推荐

CORS解决跨域的几种实现方式_cors跨域_CV程序员。的博客-程序员秘密

目录一、什么是跨域二、同源策略非同源限制三、跨域的解决办法CORS3.1、两种请求3.1.1、简单请求3.1.2、非简单请求3.2、CORS常用解决跨域的方法3.2.1、HttpServletResponse添加头信息3.2.2、使用Spring注解@CrossOrigin3.2.3、通过配置类解决跨域一、什么是跨域当一个请求的url的协议、域名、端口任意一个与当前页面的url不同即为跨域a页面想获取b页面的资源,a与b页面的协议、域名或端口

【原创】 NUI Kinect OpenNI Nite 追踪 玩家 骨骼 流程_pswzyu的博客-程序员秘密

http://nuihq.com/wordpress/?p=47搬家中, 清关注 nuihq.com nuihq.com qt nui ni ui kinect primesense WAVI Xtion 体感用语约定:玩家:程序开发的终端用户, 在设备前玩游戏的家伙对玩家骨骼的追踪是Nite中的重要功能之一, 下面我就为大家简单分析以下Nite自带的 “Playe...

为什么写博客_°﹏Struggle丶岚的博客-程序员秘密

为什么写博客:没积分,毕竟免费的太少,所以我的资源通通一积分下载。写文章来分享下经验,共同交流进步。记录成长的脚步。如果有侵权,请联系我,毕竟我也不是从零撸的,还是借鉴了很多网友的代码。...

关于window操作系统中出现svchost.exe 持续占用80%CPU问题解决方案_mpdwsvc application进程占用内存_转身@未来的博客-程序员秘密

写在前面 解决问题之前,首先要知道什么是svchost.exe,svchost.exe是一个属于微软Windows操作系统的系统程序,微软官方对它的解释是:svchost.exe是从动态链接库(DLL)中运行的服务的通用主机进程名称。这个程序对系统的正常运行是非常重要,而且使不能被结束的。简单的说没有这个服务机器几乎就是上不了网,很多应用服务都是以来于这个接口RPC,如果发现这个进程占用...

ios百度地图逆地理编码(基于2.3.0--2.4.0SDK开发)_Ant_Huizi的博客-程序员秘密

摘要 最近又在使用百度地图,所以就将过程中遇到的坑记录下来,给大家参考,今天集成的是百度地图的逆地理编码功能不得不说,现在的百度LBS部门是不是没人了啊,时不时的搞出来一些不好用得东西要做百度的逆地理编码功能,肯定是要先启动百度服务了,这些就不再扯了。?123456789

pytorch坑点排雷_weixin_30794851的博客-程序员秘密

报GPU内存不够, 考虑改小batch_sizeGPUTensor和CPUTensor不匹配, 查load模型的时候是否忘记layer = layer.cuda()转载于:https://www.cnblogs.com/ichn/p/8341243.html

随便推点

要理解好的代码,你需要多多编写“不好”的代码_「已注销」的博客-程序员秘密

全文共2823字,预计学习时长8分钟图源:unsplash网络上有许多 “切记不要…”的文章:不要使用继承(inheritance),千万别用单例模式(singleton),scrum...

PG库查询表结构,字段名,长度,主键(支持多主键),备注等信息_pg查询字段长度_野三关彭于晏的博客-程序员秘密

网上找了一圈也没有一个支持多主键查询的,自己参考资料写了一个,可以查询字段名,类型,长度,主键(支持多主键),备注等信息

python 性能测试_Python的性能测试神器-Locust_weixin_39683368的博客-程序员秘密

Locust(俗称 蝗虫), 一个轻量级的开源压测工具,用Python编写。locustUI.png网上已有不少的人总结了Locust与其余几个性能测试翘楚之间的差异。(灯光师,麻烦往第三位佳丽这边打亮一点)对比图.png得分项:单机并发能力,Python,开源免费掉分项:不支持资源监控,报告异常简单纸上得来终觉浅,始知此事须躬行。安装(和一切python第三方包安装方式一致)$ pip inst...

电脑计算机提示msvcr100.dll丢失如何修复,msvcr100.dll丢失的解决方法_dll修复高手的博客-程序员秘密

电脑计算机提示msvcr100.dll丢失如何修复,msvcr100.dll丢失的解决方法?系统文件msvcp100.dll是存放在Windows系统文件夹中的重要文件,通常情况下是在安装操作系统过程中自动创建的,对于系统正常运行来说至关重要。

安川机器人Yaskawa_weixin_30407613的博客-程序员秘密

安川机器人自动回原点    1. 判断机器人是否在安全位置 (立方体干涉区)    2. 读取机器人当前位置 GETS PX000 $PX001  读取基座标下的机器人当前位置并放到位置型变量P000中 $PX000表示关节坐标下的机器人当前位置, $PX001表示基坐标下的机器人当前位置。。    3. SETE P000(3) D000 将D000中的值赋值到P...

大学本科 java教材,大学本科自学java之路——IO_某朵牛 Pusto的博客-程序员秘密

大学本科自学java之路——IO大学本科自学java之路——IO我现在大三,大一,大二就是玩,现在大三准备考虑就业了,特写博客便于坚持自己学习一. 字节缓冲流的构造方法:BufferedOutputStream:该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。BufferedOutputStream:为另一个输入流添加了功能,...