一. AMF 基础
AMF: 接入及移动性管理功能 Access and Mobility Management Function TS 29518
相当于 4GMME 的移动性管理功能,增加了 NAS 透传功能, 包括注册管理,连接管理,可达性管理,移动性管理,接入鉴权,接入授权
合法监听
转发 UE 和 SMF 之间的 SM 消息,转发 UE 和 SMSF 之间的 SMS 消息
N1 UE <--> AMF NAS
N2 AN <--> AMF NGAP TS 38.413 [34] AN 节点和 AMF 之间的应用层协议
Service Name |
Service Operations |
Operation Semantic |
Known Consumer(s) |
Namf_Communication |
UEContextTransfer |
Request/ Response |
Peer AMF |
CreateUEContext |
Request/ Response |
Peer AMF |
|
ReleaseUEContext |
Request/ Response |
Peer AMF |
|
RegistrationStatusUpdate |
Request/ Response |
Peer AMF |
|
N1MessageNotify |
Subscribe / Notify |
SMF, SMSF, PCF, LMF, Peer AMF |
|
N1MessageSubscribe |
SMF, SMSF, PCF |
||
N1MessageUnSubscribe |
SMF, SMSF, PCF |
||
N1N2MessageTransfer |
Request/ Response |
SMF, SMSF, PCF, LMF |
|
N1N2TransferFailureNotification |
Subscribe / Notify |
SMF, SMSF, PCF, LMF |
|
N2InfoSubscribe |
Subscribe / Notify |
NOTE 1 |
|
N2InfoUnSubscribe |
NOTE 1 |
||
N2InfoNotify |
AMF, LMF |
||
EBIAssignment |
Request/Response |
SMF |
|
AMFStatusChangeSubscribe |
Subscribe / Notify |
SMF, PCF, NEF, SMSF, UDM |
|
AMFStatusChangeUnSubscribe |
Subscribe / Notify |
SMF, PCF, NEF, SMSF, UDM |
|
AMFStatusChangeNotify |
Subscribe / Notify |
SMF, PCF, NEF, SMSF, UDM |
|
NonUeN2MessageTransfer |
Request/Response |
Peer AMF, CBCF, PWS-IWF, LMF |
|
NonUeN2InfoSubscribe |
Subscribe / Notify |
CBCF, PWS-IWF |
|
NonUeN2InfoUnSubscribe |
CBCF, PWS-IWF |
||
NonUeN2InfoNotify |
CBCF, PWS-IWF, LMF |
||
Namf_EventExposure |
Subscribe |
Subscribe / Notify |
NEF, SMF, UDM, NWDAF |
Unsubscribe |
Subscribe / Notify |
NEF, SMF, UDM, NWDAF |
|
Notify |
Subscribe / Notify |
NEF, SMF, UDM, NWDAF |
|
Namf_MT |
EnableUEReachability |
Request/Response |
SMSF |
ProvideDomainSelectionInfo |
Request/Response |
UDM |
|
Namf_Location |
ProvidePositioningInfo |
Request/Response |
GMLC |
EventNotify |
Subscribe / Notify |
GMLC |
|
ProvideLocationInfo |
Request/Response |
UDM |
|
CancelLocation |
Request/Response |
GMLC |
|
NOTE 1: In this Release of the specification no known consumer is identified to use this service operation. |
Table 5.2.2.1-1: List of AMF Services TS 23502
Service Name |
Clause |
Description |
OpenAPI Specification File |
apiName |
Annex |
Namf_Communication |
6.1 |
AMF Communication Service |
TS29518_Namf_Communication.yaml |
namf-comm |
A.2 |
Namf_EventExposure |
6.2 |
AMF Event Exposure Service |
TS29518_Namf_EventExposure.yaml |
namf-evts |
A.3 |
Namf_MT |
6.3 |
AMF Mobile Terminated Service |
TS29518_Namf_MT.yaml |
namf-mt |
A.4 |
Namf_Location |
6.4 |
AMF Location Service |
TS29518_Namf_Location.yaml |
namf-loc |
A.5 |
Table 5.1-2: API Descriptions
1. Namf_communication 服务
Namf_communication 开启 NF 与 UE 通信,可以通过 N1 NAS 消息,或者通过 AN(支持 UE 和非 UE),该服务允许 NF 和 UE AN 通信定义如下:
- 提供为传输到 UE 的 N1 消息的服务操作
- 允许网元从 UE 为指定的 N1 消息的通知订阅以及取消订阅
- 允许网元从 AN 关于指定信息的通知订阅和取消订阅
- 提供用于向 AN 发起 N2 消息的服务操作
- 安全上下文管理
- UE 信息管理以及传输
1.1 UEContextTransfer
UE 发起注册或者移动注册触发 UEContextTransfer,NF(网元)服务消费者设置原因属性 “INIT_REG” / "MOBI_REG",以及包括完成性保护注册请求消息,也会触发 UEContextTransfer
当目标 AMF接收注册请求,其 UE 的 5G-GUTI 和正在服务的 AMF 不一样,也就是与上次注册的 AMF 更改了,新 AMF 向旧 AMF 发起 UEContextTransfer 获取 UE 上下文,比如 UE 的 SUPI 和 MM 上下文
二. free5gc AMF 源码分析
1. AMF 程序初始化以及启动
1.1 启动 httpcallback 服务
httpcallback.AddService(router),实现在 afm/httpcallback 中,URL 以及 handler 如下所示:
Name |
Pattern |
HandlerFunc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.2 根据配置文件中的服务列表启动服务
serviceNameList: - namf-comm - namf-evts - namf-mt - namf-loc - namf-oam
for _, serviceName := range factory.AmfConfig.Configuration.ServiceNameList {
switch models.ServiceName(serviceName) {
case models.ServiceName_NAMF_COMM:
communication.AddService(router)
case models.ServiceName_NAMF_EVTS:
eventexposure.AddService(router)
case models.ServiceName_NAMF_MT:
mt.AddService(router)
case models.ServiceName_NAMF_LOC:
location.AddService(router)
}
}
1.3 初始化 amf 上下文
通过配置文件,较简单,amf 监听端口为 29518
self := context.AMF_Self()
util.InitAmfContext(self)
addr := fmt.Sprintf("%s:%d", self.HttpIPv4Address, self.HttpIpv4Port)
1.4 根据 ngap IP 列表建立 SCTP 服务
TCP是以字节为单位传输的,SCTP是以数据块为单位传输的
TCP通常是单路径传输,SCTP可以多路径传输
for _, ngapAddr := range self.NgapIpList {
sctpListener = sctp.Server(ngapAddr)
}
1.5 核心处理流程
实现在 amf/handler/hander.go
go handler.Handle()
1.6 注册到 NRF
amf id 组成 regionId: 16bits, setId: 10bits, ptrId: 6bits <AMF Identifier> = <AMF Region ID><AMF Set ID><AMF Pointer>
调用 NRF Nnrf_NFManagement,注册
// Register to NRF
profile, err := consumer.BuildNFInstance(self)
if err != nil {
initLog.Error("Build AMF Profile Error")
}
_, self.NfId, _ = consumer.SendRegisterNFInstance(self.NrfUri, self.NfId, profile)
2. RAN 发起的 NGSetupRequest 消息
这个 NGSetupRequest 消息主要是在 AMF 中创建 RAN 信息
2.1 NGAP 结构体
type NGAPPDU struct {
Present int
InitiatingMessage *InitiatingMessage
SuccessfulOutcome *SuccessfulOutcome
UnsuccessfulOutcome *UnsuccessfulOutcome
}
Present 设置为 NGAPPDUPresentInitiatingMessage
2.2 InitiatingMessage 结构体
type InitiatingMessage struct {
ProcedureCode ProcedureCode
Criticality Criticality
Value InitiatingMessageValue `aper:"openType,referenceFieldName:ProcedureCode"`
}
ProcedureCode 设置为 ProcedureCodeNGSetup
当使用 NG-RAN 时,N2 参数包括所选的 PLMN ID、位置信息和与 Ue 所在小区相关的身份、Ue 上下文请求,该请求指明需要在 NG-RAN 中设置一个包含安全信息的 Ue 上下文 。也包括建立的原因,
如果可用的话,才提供请求的 NSSAI 映射
如果 UE 注册类型指明是定期注册更新,则省略 4 - 19 步骤
如果 UE 包含首选的网络行为
2.3 AMF 接收 NGSetupRequest 消息
根据 NGAPPDUPresentInitiatingMessage 和 ProcedureCodeNGSetup 定位到 HandleNGSetupRequest
func HandleNGSetupRequest(ran *context.AmfRan, message *ngapType.NGAPPDU) {
var globalRANNodeID *ngapType.GlobalRANNodeID
var rANNodeName *ngapType.RANNodeName
var supportedTAList *ngapType.SupportedTAList
var pagingDRX *ngapType.PagingDRX
var cause ngapType.Cause
主要是验证信息,如果验证通过则 SendNGSetupResponse,失败则调用 SendNGSetupFailure
如果成功则发送 NGAPPDUPresentSuccessfulOutcome,类型为 SuccessfulOutcomePresentNGSetupResponse,包括 IE:AMFName,ServedGUAMIList,relativeAMFCapacity,pLMNSupportList
3. RAN 发起注册请求
Message 结构体,包括安全头部,移动管理以及会话管理消息
// Message TODO:description
type Message struct {
SecurityHeader
*GmmMessage
*GsmMessage
}
注册请求设置移动管理类型为 MsgTypeRegistrationRequest,NAS 消息需包裹在 NGAP 消息中,设置的 NGAP 消息 Present 为 NGAPPDUPresentInitiatingMessage,初始消息 ProcedureCode 为 ProcedureCodeInitialUEMessage,包括一些 IE 信息 RAN UE NGAP ID,NAS-PDU,User Location Information,RRC Establishment Cause,5G-S-TSMI (optional),AMF Set ID (optional), UE Context Request (optional), Allowed NSSAI (optional)
3.1 AMF 处理注册请求
根据 NGAPPDUPresentInitiatingMessage 和 ProcedureCodeInitialUEMessage 定位到 HandleInitialUEMessage 函数
func HandleInitialUEMessage(ran *context.AmfRan, message *ngapType.NGAPPDU) {
amfSelf := context.AMF_Self()
var rANUENGAPID *ngapType.RANUENGAPID
var nASPDU *ngapType.NASPDU
var userLocationInformation *ngapType.UserLocationInformation
var rRCEstablishmentCause *ngapType.RRCEstablishmentCause
var fiveGSTMSI *ngapType.FiveGSTMSI
var aMFSetID *ngapType.AMFSetID
var uEContextRequest *ngapType.UEContextRequest
var allowedNSSAI *ngapType.AllowedNSSAI
<5G-S-TMSI> := <AMF Set ID><AMF Pointer><5G-TMSI>
GUAMI := <MCC><MNC><AMF Region ID><AMF Set ID><AMF Pointer>
5G-GUTI := <GUAMI><5G-TMSI>
进入核心函数 nas.HandleNAS 处理的类型为 ProcedureCodeInitialUEMessage
3.2 HandleRegistrationRequest 函数
根据前提为 3GPP,函数在 register_event_3gpp,根据 EVENT_GMM_MESSAGE 和 MsgTypeRegistrationRequest 定位到 HandleRegistrationRequest 函数
func HandleRegistrationRequest(ue *context.AmfUe, anType models.AccessType, procedureCode int64, registrationRequest *nasMessage.RegistrationRequest) error {
logger.GmmLog.Info("[AMF] Handle Registration Request")
util.ClearT3513(ue)
util.ClearT3565(ue)
var guamiFromUeGuti models.Guami
amfSelf := context.AMF_Self()
如果 NAS 消息为 RegistrationType5GSInitialRegistration 则传输设置为 “INIT_REG”
SearchAmfCommunicationInstance 查找 AMF 实例,
3.2.1 如果更换 AMF的情况
新的 AMF 向旧的 AMF 调用 Namf_Communication_UEContextTransfer,包括完成的注册请求 NAS 消息,来请求 UE 的 SUPI 和 UE 上下文
// TODO (TS 23.502 4.2.2.2 step 4): if UE's 5g-GUTI is included & serving AMF has changed since last registration procedure,
// new AMF may invoke Namf_Communication_UEContextTransfer to old AMF, including the complete registration request nas
// msg, to request UE's SUPI & UE Context
if ue.ServingAmfChanged {
向旧的 AMF 发起请求 /ue-contexts/{ueContextId}/transfer,旧的 AMF 处理函数为 UEContextTransfer,将时间设置为 EventUEContextTransfer,发送到待处理的 channel 中,定位到函数 HandleUEContextTransferRequest
3.2.2 HandleUEContextTransferRequest 函数
根据消息中的 imsi / imei / 5g-guti,查找是否存在该 UE,如果存在则根据传输原因 “INIT_REG” 或者 “MOBI_REG”,如果是 “INIT_REG” 则发送 UE 上下文,包括 SUPI;如果是 “MOBI_REG”,看代码也是一样的 UE 上下文
3.3 HandleInitialRegistration 函数
根据注册请求的类型 定位到 HandleInitialRegistration 函数,UE 的 SUPI 和 SUCI 不能同时为空
func HandleInitialRegistration(ue *context.AmfUe, anType models.AccessType) error {
amfSelf := context.AMF_Self()
// Common Registration procedure
if ue == nil {
return fmt.Errorf("AmfUe is nil")
}
if ue.Supi == "" && len(ue.Suci) == 0 {
gmm_message.SendIdentityRequest(ue.RanUe[anType], nasMessage.MobileIdentity5GSTypeSuci)
return nil
}
if !ue.SecurityContextIsValid() {
return startAuthenticationProcedure(ue, anType)
}
// update Kgnb/Kn3iwf
ue.UpdateSecurityContext(anType)
3.3.1 startAuthenticationProcedure 函数
向 NRF 发送服务发现 AUSF 功能,向 AUSF 发送认证 Nausf_UEAuthentication,包括 Guami,UE 的 SUCI,向 AUSF 发送 POST 请求 /ue-authentications
func startAuthenticationProcedure(ue *context.AmfUe, anType models.AccessType) error {
logger.GmmLog.Info("Start authentication procedure")
amfSelf := context.AMF_Self()
// TODO: consider ausf group id, Routing ID part of SUCI
param := Nnrf_NFDiscovery.SearchNFInstancesParamOpts{}
resp, err := consumer.SendSearchNFInstances(amfSelf.NrfUri, models.NfType_AUSF, models.NfType_AMF, ¶m)
if err != nil {
logger.GmmLog.Error("AMF can not select an AUSF by NRF")
return err
}
AUSF 处理的请求:
Location:[https://ausf:29509/nausf-auth/v1/ue-authentications/suci-0-208-93-0-0-0-00007487]] 201 {5G_AKA {391894b3403ae1a7e712067772fdd9a0 eff8a686c72075259d2ab857e788cb11 cc62613e215e8000a8125d9fbd1b18c9} map[link:{https://ausf:29509/nausf-auth/v1/ue-authentications/suci-0-208-93-0-0-0-00007487/5g-aka-confirmation}] 5G:mnc093.mcc208.3gppnetwork.org}
3.3.1.1 SendAuthenticationRequest 函数
根据 UE 的信息调用 BuildAuthenticationRequest 函数创建 NAS 消息,类型为 MsgTypeAuthenticationRequest,
3.3.1.2 SendDownlinkNasTransport 函数
发送下行 NAS 消息,BuildDownlinkNasTransport 函数创建 NGAP 消息,将 NAS 包裹,类型为 NGAPPDUPresentInitiatingMessage,ProcedureCode 为 ProcedureCodeDownlinkNASTransport,InitiatingMessage 类型为 InitiatingMessagePresentDownlinkNASTransport,包括 的 IE:AMF UE NGAP ID,RAN UE NGAP ID,NAS PDU,Old AMF (optional),RAN Paging Priority (optional),Mobility Restriction List (optional),Index to RAT/Frequency Selection Priority (optional),UE Aggregate Maximum Bit Rate (optional),Allowed NSSAI (optional)
STCP 协议连接发送到 RAN
3.3.1.3 RAN 向 AMF 发送 Authentication 响应
NAS 消息类型为 MsgTypeAuthenticationResponse,发送上行数据 NGAP 包裹 NSA 响应消息,类型为 NGAPPDUPresentInitiatingMessage,InitiatingMessage 类型为 ProcedureCodeUplinkNASTransport 和 InitiatingMessagePresentUplinkNASTransport,包括的 IE 有:AMF UE NGAP ID,RAN UE NGAP ID,NAS-PDU,User Location Information
3.3.2.1 AMF 处理 Authentication Response 消息
根据 NGAPPDUPresentInitiatingMessage 和 ProcedureCodeUplinkNASTransport 定位到 HandleUplinkNasTransport 函数
func HandleUplinkNasTransport(ran *context.AmfRan, message *ngapType.NGAPPDU) {
var aMFUENGAPID *ngapType.AMFUENGAPID
var rANUENGAPID *ngapType.RANUENGAPID
var nASPDU *ngapType.NASPDU
var userLocationInformation *ngapType.UserLocationInformation
if ran == nil {
logger.NgapLog.Error("ran is nil")
return
}
核心处理函数 HandleNAS,根据 3GPP 事件,消息设置为 EVENT_GMM_MESSAGE,AUTHENTICATION 函数中定位到 MsgTypeAuthenticationResponse 函数
func HandleAuthenticationResponse(ue *context.AmfUe, anType models.AccessType, authenticationResponse *nasMessage.AuthenticationResponse) error {
logger.GmmLog.Info("[AMF] Handle Authentication Response")
util.ClearT3560(ue)
SendAuth5gAkaConfirmRequest 由 AMF 向 AUSF 调用 Nausf_UEAuthentication,/ue-authentications/{authCtxId}/5g-aka-confirmation,由 AUSF 返回 AMF 数据
200 {AUTHENTICATION_SUCCESS imsi-2089300007487 ad15bdad357c72e4d11d9dfb67d84a5a308e594740bef031e4fdf64cecdeeb01}}
[GIN] 2020/07/14 - 07:53:29 | 200 | 46.750921ms | 10.200.200.3 | PUT /nausf-auth/v1/ue-authentications/suci-0-208-93-0-0-0-00007487/5g-aka-confirmation
根据返回的数据结果为 AUTHENTICATION_SUCCESS
switch response.AuthResult {
case models.AuthResult_SUCCESS:
ue.UnauthenticatedSupi = false
ue.Kseaf = response.Kseaf
ue.Supi = response.Supi
ue.DerivateKamf()
logger.GmmLog.Debugln("ue.DerivateKamf()", ue.Kamf)
gmm_message.SendSecurityModeCommand(ue.RanUe[anType], false, "")
return ue.Sm[anType].Transfer(state.SECURITY_MODE, nil)
SendSecurityModeCommand 函数发送安全模式命令,NAS 消息中 MM 类型为 MsgTypeSecurityModeCommand,SendDownlinkNasTransport 函数建立 NGAP 消息包裹 NAS 消息,类型为 NGAPPDUPresentInitiatingMessage,ProcedureCodeDownlinkNASTransport,InitiatingMessagePresentDownlinkNASTransport 发送到 (R)AN
3.3.3.1 (R)AN 发送安全模式完成消息
NAS 消息类型为 MsgTypeSecurityModeComplete,NGAP 消息类型为 NGAPPDUPresentInitiatingMessage,ProcedureCodeUplinkNASTransport,InitiatingMessagePresentUplinkNASTransport
3.3.3.2 AMF 处理收到的, 处理函数为 SecurityMode_3gpp
HandleSecurityModeComplete,最后到 HandleRegistrationRequest 函数
4. PDU 会话建立流程
4.1 UE 发起的 PDU 会话建立请求
NAS 消息中的 MM 消息头部类型为 MsgTypeULNASTransport,设置的内容 ULNASTransport,类型为 MsgTypeULNASTransport,PayloadContainerTypeN1SMInfo
NGAP 消息类型为 NGAPPDUPresentInitiatingMessage,ProcedureCode 设置为 ProcedureCodeUplinkNASTransport,InitiatingMessagePresentUplinkNASTransport
func HandlePDUSessionEstablishmentRequest(ue *context.AmfUe, anType models.AccessType, payload []byte, pduSessionID int32, requestType models.RequestType, sNssai *models.Snssai, dnn string) error {
// TODO Request Type Emergency requset
var pduSession models.PduSessionContext
pduSession.PduSessionId = pduSessionID
pduSession.AccessType = anType
amfSelf := context.AMF_Self()
if requestType == models.RequestType_INITIAL_REQUEST {
根据初始请求设置为:RequestType_INITIAL_REQUEST
4.1 selectSmf 函数
根据 Dnn 或者 Snssais 从 NRF 获取
4.2 如果 UE 的会话上下文存在
则调用 SendUpdateSmContextRequest 向 SMF 发送 Nsmf_PDUSession /sm-contexts/{smContextRef}/modify 请求
// Store PduSessionContext For duplicated PDU Session Id
if smContext, ok := ue.SmContextList[pduSessionID]; ok {
ue.StoredSmContext[pduSessionID] = &context.StoredSmContext{
SmfId: smfID,
SmfUri: smfUri,
PduSessionContext: &pduSession,
AnType: anType,
Payload: payload,
}
4.3 如果 UE 的会话上下文不存在
BuildCreateSmContextRequest 创建会话上下文请求,其包括:
smContextCreateData.Supi = ue.Supi
smContextCreateData.UnauthenticatedSupi = ue.UnauthenticatedSupi
smContextCreateData.Pei = ue.Pei
smContextCreateData.Gpsi = ue.Gpsi
smContextCreateData.PduSessionId = pduSessionContext.PduSessionId
smContextCreateData.SNssai = pduSessionContext.SNssai
smContextCreateData.Dnn = pduSessionContext.Dnn
smContextCreateData.ServingNfId = context.NfId
smContextCreateData.Guami = &context.ServedGuamiList[0]
smContextCreateData.ServingNetwork = context.ServedGuamiList[0].PlmnId
4.3.1 SendCreateSmContextRequest
向 SMF 发送 Nsmf_PDUSession /sm-contexts 请求
名词解释:
SCTP,Stream Control Transmission Protocol
PLMN,Public Land Mobile Network 公共陆地移动网 ,一般特指某个运营商的网络覆盖区域
MCC,Mobile Country Code
MNC,Mobile Network Code
GUAMI,Globally Unique AMF Identifier 全球唯一的 AMF 标识符 <GUAMI> = <MCC><MNC><AMF Identifier>
TAI,Tracking Area Identity 跟踪区域标识
GUTI,Globally Unique Temporary UE Identity 全局唯一的临时UE标识,目的减少在通信中显示使用UE的永久性标识,提升安全性
SUPI,Subscription Permanent Identifier 用户的唯一永久身份标志
LMF, Location Management Function
配置文件:
info: version: 1.0.0 description: AMF initial local configuration configuration: amfName: AMF ngapIpList: - 127.0.0.10 sbi: scheme: http ipv4Addr: 127.0.0.1 port: 29518 serviceNameList: - namf-comm - namf-evts - namf-mt - namf-loc - namf-oam servedGuamiList: - plmnId: mcc: 208 mnc: 93 amfId: cafe00 supportTaiList: - plmnId: mcc: 208 mnc: 93 tac: 1 plmnSupportList: - plmnId: mcc: 208 mnc: 93 snssaiList: - sst: 1 sd: 010203 - sst: 1 sd: 112233 supportDnnList: - internet nrfUri: http://localhost:29510 security: integrityOrder: - NIA2 - NIA0 cipheringOrder: - NEA2 - NEA0 networkName: full: free5GC short: free t3502: 720 t3512: 3600 non3gppDeregistrationTimer: 3240
接入和移动管理功能(AMF)包括以下功能
- -终止RAN CP接口(N2) Termination of RAN CP interface (N2)
- -终止NAS(N1),NAS加密和完整性保护 Termination of NAS (N1), NAS ciphering and integrity protection
- -注册管理 Registration management
- -连接管理 Connection management
- -可达性管理 Reachability management
- -流动性管理 Mobility Management
- -合法拦截 Lawful intercept
- -为UE和SMF之间的SM消息提供传输 Provide transport for SM messages between UE and SMF
- -用于路由SM消息的透明代理 Transparent proxy for routing SM messages
- -接入身份验证 Access Authentication
- -接入授权 Access Authorization
- -提供UE和SMSF SMS消息的传输 Provide transport for SMS messages between UE and SMSF
- -安全锚功能(SEAF) Security Anchor Functionality (SEAF) as specified in TS 33.501
- -监管服务的定位服务管理 Location Services management for regulatory services
- -为UE和LMF之间以及RAN和LMF之间的位置服务消息提供传输 Provide transport for Location Services messages between UE and LMF as well as between RAN and LMF
- -用于与EPS互通的EPS 承载 ID分配 EPS Bearer ID allocation for interworking with EPS
- -UE移动事件通知 UE mobility event notification
- -支持控制面CIoT 5GS优化 Support for Control Plane CIoT 5GS Optimisation
- -支持用户面CIoT 5GS优化 Support for User Plane CIoT 5GS Optimisation
- -提供外部参数 Provisioning of external parameters (Expected UE Behaviour parameters or Network Configuration parameters).
- -支持特定的网络切片认证和鉴权 Support for Network Slice-Specific Authentication and Authorization