这是一个典型的签约数据驱动的接入控制场景,在实际网络运维中可能出现在以下情况:
-
运营商配置错误,误将用户的接入RAT设为限制;
-
用户套餐变更后,旧的限制策略未及时更新;
-
物联网用户被错误地配置为NR限制。
RAT限制导致注册拒绝的完整信令流程
sequenceDiagram
participant UE
participant RAN as gNB_NR
participant AMF
participant UDM
Note over UE, UDM: UE通过NR发起注册请求
UE->>RAN: Registration Request (5GS Registration)
RAN->>AMF: N2 Message (Registration Request)
rect rgb(230, 245, 255)
Note over AMF, UDM: AMF与UDM交互
AMF->>UDM: Nudm_UECM_Registration (PUT)<br/>注册AMF信息
UDM-->>AMF: 204 No Content
AMF->>UDM: Nudm_SDM_Get (GET)<br/>获取AM签约数据
UDM-->>AMF: 200 OK + AmData<br/>含ratRestrictions: ["NR"]
end
Note over AMF: AMF检测到ratRestrictions包含NR<br/>当前UE通过NR接入<br/>RAT被限制!
AMF-->>RAN: Registration Reject<br/>5GMM Cause: 39 - PLMN not allowed
RAN-->>UE: Registration Reject
RAT限制判断逻辑
flowchart TD
A["AMF收到UE Registration Request"] --> B["AMF获取UE当前接入RAT类型"]
B --> C["AMF向UDM获取AM-Data"]
C --> D["检查ratRestrictions字段"]
D --> E["比对当前RAT与ratRestrictions列表"]
E -->|"是: 当前RAT被限制"| F["AMF发送Registration Reject: Cause #39或#36"]
E -->|"否: 当前RAT未被限制"| G["继续正常注册流程"]
style F fill:#ffcdd2,stroke:#c62828,stroke-width:3px
style G fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
测试目的
验证当UDM中用户的ratRestrictions包含UE当前使用的RAT类型时,AMF能够正确检测到该限制,并向UE返回Registration Reject消息,拒绝用户的注册请求。
测试前置条件
-
SA网络中各网元系统及操作维护台运行正常。
-
终端和网络连接正常。
-
UE在UDM开户,签约5G业务。
-
UDM中该用户的AmData配置ratRestrictions为["NR"](即禁止通过NR接入)。
-
服务化接口的信令监控、分析的工具准备就绪。
-
测试终端通过NR小区发起注册。
测试步骤
-
在UDM中为测试用户配置ratRestrictions为["NR"]。
-
UE通过NR小区发起5G注册请求。
-
Frame: 58340 ~ 58360
-
检查AMF与UDM之间的信令交互,以及AMF返回给UE的注册结果。
测试结果验证(预期)
-
AMF向UDM发起Nudm_UECM_Registration注册成功,返回204 No Content。
-
AMF向UDM发起Nudm_SDM_Get获取AM-Data,UDM返回的签约数据中包含ratRestrictions: ["NR"]。
-
AMF检测到当前UE通过NR接入,而NR在ratRestrictions列表中,判定为RAT受限。
-
AMF向UE返回Registration Reject,携带适当的5GMM拒绝原因值。
2 信令深度解析
在本测试中,整个注册流程因ratRestrictions字段的存在而被中断。AMF在获取到签约数据后,执行接入控制检查时发现当前RAT被限制,于是不再继续后续的切片选择、RFSP下发等流程,直接返回注册拒绝。
(注:为保护网络安全,以下log中的SUPI/IMSI标识、网元IP等敏感信息已做严格脱敏处理)
2.1 AMF向UDM注册(Nudm_UECM_Registration)
AMF收到UE通过NR小区发来的Registration Request后,首先向UDM发起AMF注册。这一步与正常注册流程完全一致——AMF将自己的实例信息注册到UDM,告知UDM"这个用户现在由我来管理"。
sequenceDiagram
participant AMF
participant UDM
Note over AMF, UDM: Nudm_UECM_Registration
AMF->>UDM: PUT /nudm-uecm/v1/imsi-460XX00000XXXX<br/>/registrations/amf-3gpp-access
Note right of AMF: 请求体携带:<br/>amfInstanceId<br/>guami<br/>ratType: NR
UDM-->>AMF: 204 No Content
Note left of UDM: UDM记录AMF注册信息<br/>AMF注册成功
信令抓包解析:
# 1. AMF -> UDM(AMF注册 PUT请求)
Frame: 58340
HEADERS[11]: PUT /nudm-uecm/v1/imsi-460XX00000XXXX/registrations/amf-3gpp-access
JavaScript Object Notation: application/json
Object
Member Key: amfInstanceId
String value: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# AMF的NF Instance ID,唯一标识该AMF实例
Member Key: guami
Object
Member Key: plmnId
Object
Member Key: mcc
String value: "460"
Member Key: mnc
String value: "XX"
Member Key: amfId
String value: "XXXXXX"
# AMF标识,包含AMF Region/SET/Pointer
Member Key: ratType
String value: "NR"
# 关键:当前接入类型为NR(5G新空口)
Member Key: accessType
String value: "3GPP_ACCESS"
# 2. UDM -> AMF(注册成功响应)
HEADERS[3]: 204 No Content
# UDM已成功记录AMF注册信息
注意:AMF在注册请求中携带了ratType: "NR",明确告知UDM当前UE是通过NR接入的。这一信息虽然UDM会记录,但RAT限制的判断主体是AMF——AMF将在下一步获取签约数据后,自行比对当前RAT与ratRestrictions列表。
2.2 AMF获取签约数据(Nudm_SDM_Get)
AMF注册成功后,立即向UDM获取该用户的接入和移动性管理签约数据。正是这一步返回的ratRestrictions字段,触发了后续的注册拒绝。
sequenceDiagram
participant AMF
participant UDM
Note over AMF, UDM: Nudm_SDM_Get - 获取AM-Data
AMF->>UDM: GET /nudm-sdm/v1/imsi-460XX00000XXXX<br/>/am-data
Note right of AMF: HTTP GET请求<br/>资源路径: /am-data
UDM-->>AMF: 200 OK
Note left of UDM: 响应体含AmData:<br/>ratRestrictions: ["NR"]<br/>subscribedUeAmbr<br/>nssai等
信令抓包解析:
# 3. AMF -> UDM(获取AM签约数据 GET请求)
Frame: 58348
HEADERS[5]: GET /nudm-sdm/v1/imsi-460XX00000XXXX/am-data
# 请求方法: GET
# 资源类型: am-data(Access and Mobility Management Data)
# 无请求体
# 4. UDM -> AMF(返回AM签约数据)
Frame: 58352
HEADERS[3]: 200 OK
JavaScript Object Notation: application/json
Object
# ===== 必选参数 =====
# --- 签约UE聚合最大比特速率 ---
Member Key: subscribedUeAmbr
Object
Member Key: uplink
String value: "1000000000"
# 上行速率: 1 Gbps
Member Key: downlink
String value: "2000000000"
# 下行速率: 2 Gbps
# --- 签约网络切片标识 ---
Member Key: nssai
Object
Member Key: singleNssais
Array
Object
Member Key: sst
Number value: 1
# SST=1 eMBB切片
Member Key: sd
String value: "000001"
Member Key: defaultSingleNssais
Array
Object
Member Key: sst
Number value: 1
Member Key: sd
String value: "000001"
# --- RFSP索引 ---
Member Key: rfspIndex
Number value: 10
# --- 签约注册周期定时器 ---
Member Key: subsRegTimer
Number value: 36000
# ===== 关键参数:RAT限制 =====
# RAT接入限制
Member Key: ratRestrictions
Array
String value: "NR"
# 关键:禁止通过NR接入!
# 这意味着该用户不允许使用5G NR无线接入技术
# --- 核心网类型限制 ---
Member Key: coreNetworkTypeRestrictions
Array
String value: "EPC"
# 禁止接入EPC
# --- GPSI列表 ---
Member Key: gpsis
Array
String value: "msisdn-86XXXXXXXXXXX"
关键发现:ratRestrictions包含"NR"
在这个响应中,ratRestrictions数组包含一个元素"NR"。这意味着该用户在签约数据中被配置为禁止通过5G NR接入。而当前UE恰恰是通过NR小区发起的注册请求,因此AMF在检查接入控制时将判定该注册请求不被允许。
2.3 AMF执行RAT限制检查
AMF获取到AM-Data后,按照3GPP协议规范,需要执行一系列接入控制检查。其中RAT限制检查的优先级较高——如果当前RAT被限制,AMF无需进行后续的切片选择、区域限制等检查,直接拒绝注册即可。
AMF的RAT限制判断逻辑:
1. 从Registration Request中获取UE当前的接入RAT类型 → NR
2. 从AM-Data中读取ratRestrictions → ["NR"]
3. 比对: 当前RAT "NR" 是否在ratRestrictions列表 ["NR"] 中?
4. 结果: "NR" 在列表中 → 当前RAT被限制
5. 动作: AMF决定拒绝注册
根据3GPP TS 29.503 第5.3.2.2.2节的规定,AMF在获取到ratRestrictions后,必须检查UE当前使用的RAT类型是否在该限制列表中。如果匹配,AMF应向UE返回Registration Reject。
ratRestrictions字段的协议定义:
| 属性 |
说明 |
| 字段名 |
ratRestrictions |
| 数据类型 |
array of string |
| 所属数据结构 |
AccessAndMobilitySubscriptionData (AmData) |
| 取值范围 |
"NR", "EUTRA", "UTRA", "GERAN", "NBIOT", "NR_U", "EUTRA_U" |
| 语义 |
列表中包含的RAT类型均为该用户不允许使用的无线接入技术 |
| 来源 |
3GPP TS 29.503 第5.3.2.2.2节 |
协议参考:根据3GPP TS 29.503 第5.3.2.2.2节,ratRestrictions字段定义在AccessAndMobilitySubscriptionData数据结构中,类型为RatType数组。当AMF发现UE当前使用的RAT在ratRestrictions列表中时,应按照3GPP TS 23.502第4.2.2.3.2节的规定,拒绝该注册请求。
2.4 AMF返回Registration Reject
AMF在确认RAT被限制后,向UE返回Registration Reject消息。
sequenceDiagram
participant AMF
participant RAN as gNB_NR
participant UE
Note over AMF, UE: RAT限制触发注册拒绝
AMF->>RAN: Registration Reject<br/>5GMM Cause: 39
Note right of AMF: 拒绝原因值: #39<br/>PLMN not allowed<br/>(或根据实现选择其他原因值)
RAN->>UE: Registration Reject
Note left of UE: UE收到拒绝后:<br/>1. 不再尝试注册该PLMN<br/>2. 可能尝试其他PLMN
信令抓包解析:
# 5. AMF -> UE(Registration Reject)
Frame: 58360
NAS-5GS Message: Registration Reject
Protocol Discriminator: 5GS Mobility Management (0x7)
Security Header Type: 0 (No Security)
Message Type: Registration Reject (0x44)
# --- 5GMM Cause ---
Member Key: 5GMM Cause
Value: 39 (PLMN not allowed)
# 注册拒绝原因: #39 PLMN not allowed
# AMF告知UE该PLMN不允许其接入
# UE收到此原因值后,将认为当前PLMN不可用
# --- T3346 Value(可选)---
Member Key: T3346Value
Value: 600 (seconds)
# 退避定时器: 600秒 = 10分钟
# UE在此期间不应尝试向同一PLMN重新注册
5GMM拒绝原因值解读:
| 原因值 |
名称 |
含义 |
| 39 |
PLMN not allowed |
当前PLMN不允许该UE接入 |
| 36 |
Backoff timer |
需要等待退避定时器超时后再尝试 |
| 7 |
5GS services not allowed |
5GS服务不被允许 |
| 22 |
Congestion |
网络拥塞 |
工程说明:在实际网络中,当RAT被限制时,AMF通常返回5GMM Cause #39(PLMN not allowed)或 #7(5GS services not allowed)。具体选择哪个原因值取决于设备厂商的实现。部分厂商会额外携带退避定时器T3346,防止UE频繁重试造成信令风暴。
2.5 【硬核附加】用curl模拟查询ratRestrictions
在实际排障中,如果怀疑用户因RAT限制导致注册失败,可以直接使用curl命令查询UDM中的签约数据来验证:
curl -i -X GET http://10.XX.XX.XX:31381/nudm-sdm/v1/imsi-460XX00000XXXX/am-data
UDM返回的JSON响应(关键字段):
{
"gpsis": [
"msisdn-86XXXXXXXXXXX"
],
"subscribedUeAmbr": {
"uplink": "1000000000",
"downlink": "2000000000"
},
"nssai": {
"singleNssais": [
{
"sst": 1,
"sd": "000001"
}
],
"defaultSingleNssais": [
{
"sst": 1,
"sd": "000001"
}
]
},
"rfspIndex": 10,
"subsRegTimer": 36000,
"ratRestrictions": [
"NR"
],
"coreNetworkTypeRestrictions": [
"EPC"
]
}
RAT限制快速排查步骤:
-
从信令中确认UE当前使用的RAT类型(NR或EUTRA);
-
使用curl查询UDM,检查ratRestrictions字段;
-
如果当前RAT在ratRestrictions列表中,则确认是RAT限制导致注册失败;
-
修正UDM中的ratRestrictions配置(例如将["NR"]改为["EUTRA"]或清空列表)。
常见ratRestrictions配置场景:
| 场景 |
ratRestrictions配置 |
效果 |
| 纯5G用户 |
["EUTRA"] |
只能通过NR接入,不允许LTE |
| 纯4G用户 |
["NR"] |
只能通过LTE接入,不允许5G NR |
| 无限制(默认) |
[](空数组或不配置) |
允许所有RAT接入 |
| 物联网设备 |
["EUTRA","NR"] |
只允许NB-IoT,不允许LTE和NR |
2.6 RAT限制与注册拒绝的完整决策链
将上述步骤串联起来,我们可以看到AMF在注册流程中处理ratRestrictions的完整决策链:
flowchart TD
A["UE通过NR发起Registration Request"] --> B["AMF向UDM注册: Nudm_UECM_Registration"]
B -->|"204 成功"| C["AMF获取AM-Data: Nudm_SDM_Get"]
B -->|"失败"| FAIL1["注册失败: UDM不可达"]
C -->|"200 OK"| D["AMF解析ratRestrictions字段"]
C -->|"失败"| FAIL2["注册失败: 无法获取签约数据"]
D --> E["检查ratRestrictions是否包含当前RAT(NR)"]
E -->|"包含NR: 被限制"| F["AMF发送Registration Reject: 5GMM Cause 39, 退避600秒"]
E -->|"不包含NR: 未限制"| G["继续正常注册流程: 检查切片和区域限制等"]
style F fill:#ffcdd2,stroke:#c62828,stroke-width:3px
style G fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style FAIL1 fill:#ffcdd2,stroke:#c62828
style FAIL2 fill:#ffcdd2,stroke:#c62828
值得关注的技术细节:
1) RAT限制的检查时机
ratRestrictions的检查发生在AMF获取AM-Data之后、切片选择之前。这意味着RAT限制是接入控制的第一道"门槛"——如果RAT被限制,后续的切片选择、区域限制等流程都不会执行。这种设计体现了5G核心网"快速失败"的原则:尽早发现不合法的请求,减少不必要的信令处理。
2) 多RAT限制的处理
ratRestrictions是一个数组,可以包含多个RAT类型。例如,如果配置为["NR", "EUTRA"],则该用户既不能通过5G NR接入,也不能通过4G LTE接入。这种情况下,UE几乎无法通过任何3GPP接入技术注册(除非还有UTRA/GERAN可用)。
3) 与核心网类型限制的区别
ratRestrictions限制的是无线接入技术(NR、EUTRA等),而coreNetworkTypeRestrictions限制的是核心网类型(5GC、EPC)。两者可以独立配置,也可以组合使用。例如:
- ratRestrictions=["NR"] + coreNetworkTypeRestrictions=["EPC"]:表示该用户不能通过NR接入,也不能接入EPC。实际效果是该用户只能通过LTE接入5GC。
3 测试结论
| 验证项 |
结果 |
说明 |
| AMF注册成功 |
OK |
Nudm_UECM_Registration返回204 No Content |
| AMF获取AM-Data成功 |
OK |
Nudm_SDM_Get返回200 OK,包含ratRestrictions |
| UDM正确返回ratRestrictions |
OK |
ratRestrictions: ["NR"],与UDM配置一致 |
| AMF正确检测RAT限制 |
OK |
当前RAT为NR,在ratRestrictions列表中 |
| AMF返回Registration Reject |
OK |
5GMM Cause #39,携带T3346退避定时器 |
| UE收到拒绝后行为正确 |
OK |
UE不再尝试向该PLMN注册 |
本测试用例验证了RAT限制导致注册拒绝的完整流程。当UDM中用户的ratRestrictions包含UE当前使用的RAT类型(本例中为NR)时,AMF能够在获取签约数据后正确检测到该限制,并按照3GPP TS 23.502和TS 29.503规范的要求,向UE返回Registration Reject消息。
排障建议:在实际网络运维中,如果用户投诉"无法注册5G网络",排障步骤应包括:
-
通过信令抓包确认AMF是否返回了Registration Reject;
-
查询UDM中的ratRestrictions配置;
-
比对用户当前使用的RAT与限制列表;
-
如果是配置错误,修正UDM中的ratRestrictions并通知用户重新注册。
这一场景虽然在实际商用网络中出现频率不高,但在用户数据配置错误或套餐变更过程中可能发生,是5G核心网运维人员需要掌握的典型排障场景。
关于作者:爱卫生,专注通信教育18年,《5G核心网原理与实践》等4本专业书籍作者。更多5GC/IMS深度内容,欢迎关注公众号「51学通信」或加入知识星球(200+小时视频、3000+精华文章)。
本文为《5G核心网原理与实践》实践篇之UDM系列。系列持续更新中,扫码关注「51学通信」获取最新内容。