2. 5G核心网架构:SA与NSA、核心网网元与协议栈
好,咱们进入第二章。这一章我打算聊聊5G核心网。说实话,很多做CPE开发的兄弟,一开始容易把精力全放在射频和物理层上,觉得核心网是运营商的事。嗯,这个想法其实挺危险的。你想想看,CPE要跟核心网打交道,如果不懂AMF、SMF这些网元是干什么的,出了问题你连日志都看不懂。
我个人习惯,在讲CPE开发之前,一定先把核心网架构理清楚。因为CPE的很多行为,比如注册流程、PDU会话建立、QoS流映射,背后全是核心网在指挥。今天咱们就把它掰开揉碎了讲。
2.1 5G SA与NSA架构:两种不同的“组网哲学”
5G有两种组网方式:SA(独立组网)和NSA(非独立组网)。这俩到底啥区别?我打个比方你就明白了。
SA架构,就像你盖了一栋全新的5G大楼。从基站(gNB)到核心网(5GC),全是5G自家的。CPE直接连5G核心网,不走4G的路。这种架构干净、利落,端到端时延低,支持网络切片。但缺点也很明显——运营商得重新建一套核心网,投资大。
NSA架构,说白了就是“借壳上市”。5G基站(gNB)的数据面走5G,但控制面还得靠4G核心网(EPC)来管。CPE先连上4G基站(eNB),然后通过双连接(EN-DC)再挂上5G基站。这种架构的好处是运营商可以快速铺开5G,不用等5G核心网建好。但坏处是,你享受不到5G核心网的那些新特性,比如低时延、网络切片。
我在项目中遇到过,有些运营商定制CPE,要求同时支持SA和NSA。嗯,这里有个坑:NSA模式下,CPE需要同时维护4G和5G两条链路,功耗和复杂度都会上升。我曾经见过一个产品,NSA模式下发热严重,最后发现是双连接切换时,协议栈没处理好。
核心区别总结:
- SA:独立5G核心网,控制面和用户面都在5G。CPE直接注册到5GC。
- NSA:依赖4G核心网,控制面走4G,用户面可以走5G。CPE先注册到EPC,再添加5G承载。
2.2 5G核心网网元功能:AMF、SMF、UPF都是干啥的?
5G核心网(5GC)采用了服务化架构(SBA),说白了就是把传统核心网拆成了一个个独立的“微服务”。每个网元各司其职。咱们挑几个跟CPE开发关系最密切的讲讲。
2.2.1 AMF(接入和移动性管理功能)
AMF是CPE进入5G网络的第一道门。它负责啥?注册管理、连接管理、移动性管理。你想想看,CPE开机后,第一件事就是发注册请求给AMF。AMF会验证你的身份,分配临时ID,然后告诉你“你可以上网了”。
我建议你在调试CPE时,重点关注AMF返回的注册拒绝原因。比如原因值#3(ILLEGAL_UE)或者#7(5GS_SERVICES_NOT_ALLOWED),这些往往能直接定位问题。我曾经遇到一个案例,CPE一直注册失败,最后发现是AMF配置了PLMN白名单,而CPE的IMSI不在里面。
2.2.2 SMF(会话管理功能)
SMF管的是“数据通道”。CPE要上网,得先建立PDU会话。SMF负责分配IP地址、选择UPF、制定QoS策略。说白了,SMF就是核心网里的“交通调度员”。
这里有个知识点:SMF和UPF之间的接口叫N4。SMF通过N4接口告诉UPF:“这个用户的流量,你要怎么转发,优先级是多少。” 嗯,这个接口在CPE侧看不到,但如果你做的是CPE内部的路由策略,你得理解SMF下发的QoS规则。
2.2.3 UPF(用户面功能)
UPF是核心网里唯一处理用户数据的网元。CPE发出的数据包,经过基站,最终到达UPF,然后UPF再转发到互联网。UPF的性能直接决定了你的网速和时延。
我个人习惯,在CPE的吞吐量测试中,会同时监控UPF的负载。如果CPE侧显示速率上不去,但UPF的CPU已经跑满了,那问题很可能出在核心网侧,而不是CPE。
避坑指南: 我曾经在运营商实验室测试时,发现CPE的ping时延忽高忽低。排查了半天,最后发现是UPF的N6接口(连接外部网络)配置了错误的MTU值。CPE发的大包被分片了,导致时延抖动。所以,CPE的MTU设置一定要和UPF侧对齐。
2.3 5G核心网接口与协议栈
核心网网元之间怎么通信?靠接口和协议栈。咱们重点看CPE相关的几个接口。
2.3.1 N1接口:CPE与AMF的“信令通道”
N1接口是CPE和AMF之间的NAS(非接入层)信令通道。CPE的注册、鉴权、会话建立,都通过N1接口走NAS消息。NAS协议栈在CPE侧由5G NAS层实现。
NAS消息的格式是标准的ASN.1编码。我建议你学会用Wireshark抓NAS包,因为很多注册失败的原因,看NAS消息里的5GMM原因值就能找到。
// 一个典型的NAS注册请求消息结构(简化)
5GMM Registration Request
- 5GS registration type: "Initial Registration"
- ngKSI: 0x07 (no key set available)
- 5G mobile identity: SUCI or 5G-GUTI
- UE security capability: NEA0, NEA1, NEA2...
- Requested NSSAI: S-NSSAI (SST=1, SD=0x000001)
2.3.2 N2接口:基站与AMF的“控制通道”
N2接口是gNB和AMF之间的接口,走的是NGAP协议。虽然CPE不直接参与N2接口,但CPE的移动性管理(比如切换)会通过N2消息触发。我记得有一次,CPE在移动中频繁掉线,最后发现是N2接口的切换准备消息超时了。
2.3.3 N3接口:基站与UPF的“数据通道”
N3接口是gNB和UPF之间的用户面接口,走的是GTP-U协议。CPE的数据包被封装在GTP-U隧道里传输。这个隧道的端点标识(TEID)由核心网分配。如果你在CPE日志里看到GTP-U相关的错误,比如TEID不匹配,那基本可以断定是核心网配置问题。
注意: 在NSA模式下,N3接口其实是由4G基站(eNB)和5G基站(gNB)共同管理的。CPE的数据可能先经过eNB,再通过X2接口转发到gNB,最后到UPF。这个路径比SA复杂,时延也会高一些。
2.4 一张表看懂核心网接口
| 接口 | 连接双方 | 协议 | CPE相关吗? | 主要作用 |
|---|---|---|---|---|
| N1 | CPE ↔ AMF | NAS (5GMM/5GSM) | ✅ 直接相关 | 注册、鉴权、会话管理 |
| N2 | gNB ↔ AMF | NGAP | ❌ 间接相关 | 移动性管理、上下文建立 |
| N3 | gNB ↔ UPF | GTP-U | ❌ 间接相关 | 用户面数据传输 |
| N4 | SMF ↔ UPF | PFCP | ❌ 不直接相关 | 会话策略下发 |
| N6 | UPF ↔ 数据网络 | IP | ❌ 间接相关 | 连接外部互联网 |
2.5 小结:CPE开发者需要记住什么?
好了,这一章内容不少。我帮你捋一下重点:
- SA vs NSA:SA是纯5G,NSA是借4G的壳。CPE开发时,要明确目标网络是哪种,因为注册流程和协议栈都不一样。
- 核心网网元:AMF管注册,SMF管会话,UPF管数据。CPE的NAS层直接跟AMF和SMF打交道。
- 接口协议:N1接口的NAS消息是CPE调试的“第一现场”。学会看5GMM原因值,能解决80%的注册问题。
下一章,咱们会深入CPE的协议栈实现,讲讲NAS层和AS层的交互。到时候我会拿一个真实的注册流程日志,一行一行带你分析。嗯,敬请期待。