5G核心网中,AMF(Access and Mobility Management Function)是UE接入的第一个控制面锚点。一个错误的AMF选择,意味着整个注册流程必须"推倒重来"——触发AMF重选(AMF Reselection),增加100ms以上的额外时延,消耗NSSF/NRF额外的查询资源。根据TS 23.501 Section 6.3.5的定义,5G系统设计了一套五重决策机制来确保"一次选对"。
与4G EPC中MME选择仅基于GUMMEI和TAI的简单路由不同,5G引入了切片感知(S-NSSAI)和AMF Set层级架构两个全新维度,使AMF选择从二维路由升级为五维决策空间。
GUAMI(Globally Unique AMF Identifier)是5G系统中标识AMF实例的核心标识符,定义于TS 23.501 Section 5.21.6和TS 29.571。其结构如下:
┌─────────────────────────────────────────────────┐
│ GUAMI (10 bytes) │
├──────────┬─────────────┬──────────┬─────────────┤
│ PLMN ID │ AMF Region │ AMF Set │ AMF Pointer │
│ (5 bytes)│ ID (8 bits)│ID(10 bits)│ (6 bits) │
├──────────┼─────────────┼──────────┼─────────────┤
│ MCC+MNC │ 标识AMF │ 同Set内 │ Set内具体 │
│ │ 区域 │ AMF组 │ AMF实例 │
└──────────┴─────────────┴──────────┴─────────────┘
| 字段 | 比特数 | 取值范围 | 功能说明 |
|---|---|---|---|
| PLMN ID (MCC+MNC) | 24 bits | — | 运营商网络标识,含在5G-GUTI前缀中 |
| AMF Region ID | 8 bits | 0-255 | 标识AMF Region,最大256个Region |
| AMF Set ID | 10 bits | 0-1023 | Region内最多1024个AMF Set |
| AMF Pointer | 6 bits | 0-63 | 每Set内最多64个AMF实例 |
graph TD
A[AMF Region 0-255] --> B[AMF Set 0 - 1023]
A --> C[AMF Set 1 - 1023]
A --> D[AMF Set N - 1023]
B --> E[AMF Ptr 0 - 63]
B --> F[AMF Ptr 1 - 63]
B --> G[AMF Ptr N - 63]
C --> H[AMF Ptr 0 - 63]
C --> I[AMF Ptr 1 - 63]
style A fill:#e74c3c,color:#fff
style B fill:#3498db,color:#fff
style C fill:#3498db,color:#fff
style D fill:#3498db,color:#fff
style E fill:#2ecc71,color:#fff
style F fill:#2ecc71,color:#fff
style G fill:#2ecc71,color:#fff
style H fill:#2ecc71,color:#fff
style I fill:#2ecc71,color:#fff
设计意图:AMF Region对应大区(如华北、华东),AMF Set对应省/市级别,AMF Pointer对应具体服务器实例。这种层级设计有两个核心目的:
5G-GUTI在TS 23.501 Section 5.21.6中定义,其完整结构为:
5G-GUTI = <GUAMI> + <5G-TMSI>
= <PLMN ID><AMF Region ID><AMF Set ID><AMF Pointer><5G-TMSI>
5G-S-TMSI = <AMF Set ID><AMF Pointer><5G-TMSI> (用于寻呼)
5G-S-TMSI是5G-GUTI的缩短形式,省略了PLMN ID和AMF Region ID,用于寻呼场景减少空口开销。gNB通过5G-S-TMSI中的AMF Set ID和AMF Pointer即可将寻呼路由到正确的AMF。
TS 23.501 Section 6.3.5定义了AMF选择功能,适用于3GPP接入和非3GPP接入。决策依据按优先级排列如下:
flowchart TD
START[UE发起Registration Request] --> Q1{UE是否携带5G-GUTI?}
Q1 -->|是| A1[RAN从5G-GUTI提取GUAMI]
Q1 -->|否| Q2{UE是否携带SUCI/SUPI?}
A1 --> Q3{GUAMI对应的AMF可用?}
Q3 -->|是| SELECT1[选择GUAMI对应的AMF]
Q3 -->|否| Q4{同AMF Set内其他AMF可用?}
Q4 -->|是| SELECT2[选择同Set内其他AMF]
Q4 -->|否| Q5{本地配置的默认AMF?}
Q2 -->|SUCI| Q6{RAN能否从SUCI推导AMF?}
Q2 -->|无标识| Q5
Q6 -->|是| SELECT3[基于SUCI路由到AMF]
Q6 -->|否| Q5
Q5 -->|是| SELECT4[选择默认AMF]
Q5 -->|否| SELECT5[通过NRF发现AMF]
SELECT1 --> CHECK{初始AMF是否支持<br>UE请求的S-NSSAI?}
SELECT2 --> CHECK
SELECT3 --> CHECK
SELECT4 --> CHECK
SELECT5 --> CHECK
CHECK -->|是| REG[继续注册流程]
CHECK -->|否| RESEL[触发AMF重选]
RESEL --> NSSF[查询NSSF获取目标AMF Set]
NSSF --> TARGET[转发注册到目标AMF]
style START fill:#e74c3c,color:#fff
style REG fill:#2ecc71,color:#fff
style RESEL fill:#f39c12,color:#fff
style NSSF fill:#9b59b6,color:#fff
当UE携带5G-GUTI发起注册时,RAN(gNB)从5G-GUTI中提取GUAMI,直接将NAS Registration Request路由到GUAMI标识的AMF。
关键NGAP参数(TS 38.413 Section 8.3.1):
- RAN UE NGAP ID:RAN侧UE标识
- UserLocationInformation:UE位置(TAI+Cell Identity)
- RAN Node Name:gNB标识
- FiveG-S-TMSI(如可用):用于关联已有UE上下文
路由失败处理:如果GUAMI指向的AMF不可用,RAN执行AMF Set内降级选择——使用AMF Set ID查找同Set内其他可用AMF。这依赖于gNB本地维护的AMF Set成员列表(通过NG Setup或AMF Configuration Update获取)。
当UE未携带有效5G-GUTI(初始注册或GUTI无效),但携带了Requested NSSAI时,RAN需要基于S-NSSAI选择支持对应切片的AMF。
TS 23.501 Section 6.3.5明确规定了RAN的选择逻辑:
在漫游或共享RAN场景下,RAN需要根据UE选择的PLMN将注册路由到对应运营商的AMF。
触发条件: - UE发送的Registration Request中包含PLMN ID - RAN广播多个PLMN(MOCN/MORAN共享) - gNB根据UE选择的PLMN查找该PLMN下的AMF池
即使确定了AMF Set,RAN仍需在Set内选择具体的AMF Pointer。这通过负载均衡机制实现:
TS 23.501 Section 6.3.5规定:当RAN需要在AMF Set内选择AMF时,应使用权重因子(Weight Factor)进行选择,该因子通过NGAP AMF Configuration Update消息中的RelativeAMFCapacity IE传递。
| NGAP IE | 位置 | 说明 |
|---|---|---|
RelativeAMFCapacity |
AMF Configuration Update / NG Setup | AMF相对容量权重(0-255) |
AMFSetID |
AMF Configuration Update | AMF所属Set标识 |
GUAMIList |
AMF Configuration Update | AMF负责的GUAMI范围 |
SliceSupportList |
NG Setup Response | AMF支持的切片列表 |
负载均衡算法(运营商可选): - 加权轮询:按RelativeAMFCapacity比例分配 - 最小连接数:选择当前注册数最少的AMF - 哈希分配:对5G-S-TMSI做哈希映射到AMF Pointer
当上述所有本地选择机制都失败时,RAN或初始AMF可通过NRF进行服务发现。
Nnrf_NFDiscovery请求(TS 29.510):
GET /nnrf-disc/v1/nf-instances?
target-nf-type=AMF&
requester-nf-type=AMF&
amf-region-id=0x0A&
amf-set-id=0x1F3&
s-nssai=SST:1,SD:010203&
tai=46000:FDD0
当初始AMF发现无法服务UE请求的S-NSSAI时,触发AMF重选。这是5G注册中最复杂的路径,定义于TS 23.502 Section 4.2.2.2.3。
sequenceDiagram
participant UE
participant RAN as gNB (RAN)
participant AMF_old as 初始AMF
participant NSSF
participant NRF
participant AMF_new as 目标AMF
participant UDM
UE->>RAN: RRC Setup + NAS Registration Request<br/>(5G-GUTI / Requested NSSAI)
RAN->>AMF_old: NGAP Initial UE Message<br/>+ NAS Registration Request
Note over AMF_old: Step 1: 检查是否支持UE请求的S-NSSAI
AMF_old->>NSSF: Nnssf_NetworkSliceSelection_Get<br/>(Requested NSSAI, TAI, SUPI)
NSSF->>NSSF: 查询切片配置<br/>确定Allowed NSSAI
NSSF-->>AMF_old: 返回 Target AMF Set +<br/>Allowed NSSAI + NSI ID
Note over AMF_old: Step 2: 初始AMF不在目标AMF Set中<br/>触发AMF重选
AMF_old->>NRF: Nnrf_NFDiscovery<br/>(target-nf-type=AMF,<br/>amf-set-id=Target Set)
NRF-->>AMF_old: 返回目标AMF实例列表
AMF_old->>AMF_new: Namf_Communication_<br/>RegistrationForwardingRequest<br/>(完整NAS消息+UE上下文)
Note over AMF_new: Step 3: 目标AMF接管注册流程
AMF_new->>UDM: Nudm_UECM_Registration<br/>(注册为服务AMF)
UDM-->>AMF_new: 确认
AMF_new->>AMF_old: Namf_Communication_<br/>RegistrationForwardingResponse
AMF_new-->>RAN: NGAP Initial Context Setup /<br/>Downlink NAS Transport
RAN-->>UE: NAS Registration Accept<br/>(新5G-GUTI + Allowed NSSAI)
Note over UE: 5G-GUTI中包含新的GUAMI<br/>后续消息路由到目标AMF
初始AMF收到Registration Request后,执行以下检查序列:
Requested NSSAITS 23.502 Section 4.2.2.2.3的条件判断:
| 场景 | 初始AMF行为 |
|---|---|
| 所有请求的S-NSSAI都支持 | 继续正常注册流程 |
| 部分支持,且AMF配置为非默认AMF | 查询NSSF获取目标AMF |
| 完全不支持 | 必须查询NSSF |
| UE未提供NSSAI | 按默认AMF处理 |
初始AMF调用Nnssf_NetworkSliceSelection服务(TS 29.531),请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
sNssaiList |
array | UE请求的S-NSSAI列表 |
homePlmnId |
PlmnId | UE归属PLMN |
tai |
Tai | UE当前跟踪区 |
roamingIndication |
enum | 漫游标识 |
supi |
Supi | UE永久标识(如已认证) |
NSSF返回的关键信息:
| 返回参数 | 说明 |
|---|---|
allowedNssai |
允许的S-NSSAI列表 |
targetAmfSet |
目标AMF Set标识 |
targetAmfServiceSet |
目标AMF Service Set(可选) |
nsiInformationList |
Network Slice Instance信息 |
rejectedNssaiInPlmn |
PLMN级拒绝的S-NSSAI |
rejectedNssaiInTa |
TA级拒绝的S-NSSAI |
初始AMF通过Namf_Communication_RegistrationForwardingRequest将整个NAS消息和部分UE上下文转发给目标AMF。
转发的内容包括(TS 29.518 Section 5.2.2.3.1):
{
"jsonPayload": {
"n1Message": "base64编码的NAS Registration Request",
"n1MessageClass": "5GMM",
"oldGuami": {"plmnId": {"mcc":"460","mnc":"00"},
"amfId":"A1B2C3"},
"anN2ApInfo": {
"globalRanNodeId": {"plmnId":{"mcc":"460","mnc":"00"},
"ranNodeId":12345},
"anType": "3GPP_ACCESS"
}
}
}
目标AMF完成注册后,在Registration Accept中分配新的5G-GUTI,其中包含新的GUAMI:
UE在后续所有NAS信令中使用新的5G-GUTI,RAN将正确路由到目标AMF。
stateDiagram-v2
[*] --> Normal: UE已注册<br/>GUAMI指向AMF_1
Normal --> AMF_Failure: AMF_1故障/重启
AMF_Failure --> Set_Reselection: RAN检测AMF_1不可达
state Set_Reselection {
[*] --> Check_Set: 提取AMF Set ID
Check_Set --> Select_Alt: 选择Set内其他AMF
Select_Alt --> Forward_NAS: 转发NAS消息
}
Set_Reselection --> Context_Recovery: 目标AMF_2收到NAS
state Context_Recovery {
[*] --> Check_UDSF: 查询UDSF
Check_UDSF --> Found: 上下文存在
Check_UDSF --> Not_Found: 上下文不存在
Found --> Restore: 恢复UE上下文
Not_Found --> Re_Register: 要求UE重新注册
}
Context_Recovery --> Normal: UE上下文恢复<br/>新GUAMI指向AMF_2
Restore --> New_GUTI: 分配新5G-GUTI
Re_Register --> Full_Auth: 触发完整注册+认证
New_GUTI --> Normal
Full_Auth --> Normal
gNB通过以下机制检测AMF不可用:
AMF Status Indication(TS 38.413 Section 8.5)AMF Overload Start指示当检测到AMF不可用时,gNB执行以下操作(TS 23.501 Section 6.3.5): 1. 从5G-GUTI中提取AMF Set ID 2. 查找本地配置的该Set内其他AMF 3. 按权重因子选择一个可用AMF 4. 将后续NAS消息路由到新AMF
| 场景 | 恢复策略 | 时延影响 |
|---|---|---|
| UDSF已部署 | 新AMF从UDSF查询UE上下文 | <50ms |
| AMF间直接同步 | 新AMF从旧AMF获取(如仍部分可用) | 50-200ms |
| 无上下文可用 | 新AMF触发Identity Request → 完整注册 | 500ms+ |
运营商成本博弈:部署UDSF意味着额外的基础设施投入,但能显著降低AMF故障时的切换时延。大型运营商(如中国移动)通常在每AMF Region部署UDSF;小型运营商可能依赖AMF间的直接同步或接受重新注册的开销。
AMF可以通过NGAP AMF Configuration Update消息(TS 38.413 Section 8.6)动态更新gNB中的GUAMI映射关系。
sequenceDiagram
participant AMF
participant gNB
AMF->>gNB: AMF Configuration Update<br/>(GUAMI List, Slice Support,<br/>Relative Capacity)
alt gNB接受更新
gNB-->>AMF: AMF Configuration Update Acknowledge
else gNB部分拒绝
gNB-->>AMF: AMF Configuration Update Failure<br/>(GUAMI List中不接受的项)
end
Note over gNB: 更新本地AMF路由表<br/>新注册的UE使用新映射
关键IE说明(TS 38.413 Section 9.2.3):
| IE名称 | 功能 | 运维意义 |
|---|---|---|
AMF TNLA Association |
AMF传输层地址列表 | 负载均衡、多活部署 |
GUAMI List |
AMF负责的GUAMI范围 | 扩容/缩容时动态调整 |
Slice Support List |
AMF支持的S-NSSAI | 新切片上线时更新 |
Relative AMF Capacity |
AMF相对容量权重 | 实时负载均衡调整 |
AMF在以下场景主动触发GUAMI重分配:
NAS层GUAMI更新信令:AMF通过Configuration Update Command(TS 24.501 Section 8.2.13)通知UE更新5G-GUTI:
| IE | 说明 |
|---|---|
Configuration Update Indication |
指示是否需要ACK |
5G-GUTI |
新的5G-GUTI(含新GUAMI) |
Allowed NSSAI |
更新后的允许切片 |
TAI List |
更新后的跟踪区列表 |
关键过滤条件:
# Wireshark NGAP过滤器 - 捕获初始UE消息
ngap.procedureCode == 15 && ngap.initiatingMessage
# 捕获AMF Configuration Update
ngap.procedureCode == 40
# 捕获NSSF交互(HTTP/2)
http2.headers.path contains "/nnssf-networkslice-selection"
关键判读点:
Initial UE Message中是否携带5G-S-TMSI: - 携带 → RAN执行GUAMI路由(正常流程) - 未携带 → RAN执行默认AMF选择或S-NSSAI路由
NAS Registration Request中的Registration Type:
- Initial Registration(值0)→ 可能触发AMF选择
- Mobility Registration Updating(值1)→ 通常携带旧5G-GUTI
是否出现Nnssf_NetworkSliceSelection请求: - 出现 → 说明发生了AMF重选 - 未出现 → 初始AMF即可服务UE
| 维度 | 4G MME选择 | 5G AMF选择 |
|---|---|---|
| 路由依据 | GUMMEI + TAI | GUAMI + S-NSSAI + TAI + PLMN |
| 层级结构 | MME Pool(扁平) | AMF Region → AMF Set → AMF Pointer(三层) |
| 切片感知 | 无 | S-NSSAI驱动的切片路由 |
| 故障恢复 | MME Pool内重选 | AMF Set内无缝切换 + UDSF上下文恢复 |
| 服务发现 | DNS(S1接口) | NRF + 本地配置(NG接口) |
| 重选机制 | S1接口HO/TAU | NSSF查询 + Namf转发 |
| 负载均衡 | DNS权重/round-robin | RelativeAMFCapacity + AMF Pointer |
5G引入AMF Set的核心理念是将"故障恢复"和"负载均衡"从网络层下沉到标识符层——GUAMI本身就包含了路由信息,无需额外的DNS查询或信令交互。这种设计哲学是将路由状态嵌入标识符(State in Identifier),是5G SBA架构中"自包含路由"思想的体现。
运营商在规划AMF Set时面临容量与成本的trade-off:
方案A:大Set(32-64 AMF/Set) - 优势:故障恢复时选择更多,负载均衡更均匀 - 劣势:UE上下文同步开销大,UDSF存储成本高
方案B:小Set(2-4 AMF/Set) - 优势:上下文同步简单,运维成本低 - 劣势:故障恢复选择有限,负载不均风险高
方案C:混合模式(核心区域大Set,边缘小Set) - 优势:按业务密度灵活配置 - 劣势:运维复杂度增加
| 策略 | 适用场景 | 成本 |
|---|---|---|
| 全国集中部署1个NSSF | 小型运营商/虚拟运营商 | 低 |
| 每AMF Region部署NSSF | 中型运营商 | 中 |
| NSSF集群+负载均衡 | 大型运营商(如CMCC) | 高 |
Q1: AMF Set内所有AMF都不可用时,UE会怎样?
A: RAN回退到默认AMF选择机制。如果连默认AMF都无法找到,gNB会向UE返回RRC Release,UE进入空闲态后重试。若反复失败,UE触发PLMN重选。在TS 23.501中,这种情况归类为"AMF Set不可用",需要运维介入修复。
Q2: GUAMI中的AMF Pointer值改变是否意味着AMF重选?
A: 不一定。AMF Pointer在AMF Set内的变化可以通过Configuration Update Command完成,无需完整注册流程。但如果AMF Region ID或AMF Set ID变化,则必须通过完整注册(含AMF重选)流程完成。
Q3: 非3GPP接入(如Wi-Fi)的AMF选择有何不同?
A: N3IWF/TNGF代替gNB执行AMF选择。由于非3GPP接入不通过NGAP,AMF选择通过N2接口上的NWu/IKEv2信令中的IKE SA建立过程完成。N3IWF根据UE的5G-GUTI或S-NSSAI选择AMF,选择逻辑与gNB一致但传输机制不同。
Q4: AMF过载时如何影响AMF选择?
A: 过载AMF通过AMF Overload Start(NGAP)通知gNB。gNB收到后停止向该AMF路由新注册请求,转而选择Set内其他AMF。过载AMF同时可通过Namf_Communication_AMFStatusChangeNotify通知其他NF不再向其转发请求。这与TS 23.501 Section 5.19中定义的"AMF过载控制"机制联动。
Q5: 一个AMF可以属于多个AMF Set吗?
A: TS 23.501规定每个AMF实例在同一时刻只能属于一个AMF Set。但AMF可以通过AMF Configuration Update动态调整其所属Set(运维操作),这意味着AMF Set的成员关系是可变的,但不能重叠。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
