1. 5G SA接入信令到底在讲什么
1.1 从一次“注册失败”说起
我第一次接触5G SA接入信令,是因为一个模拟项目里终端死活注册不上网络。当时抓包看到终端发了Registration Request,网络回了Registration Reject,原因值指向一个很模糊的“网络故障”。排查了大半天才发现,问题出在切片配置和AMF(接入与移动性管理功能)的匹配上。这件事让我意识到,5G SA的接入信令不是“能连上就行”那么简单,它背后是一整套服务化架构下的交互逻辑,任何一个环节的参数对不上,终端就会被拒之门外。
5G SA(Standalone,独立组网)接入信令,说白了就是终端从开机到成功驻留网络、建立业务通道这一整套“对话流程”。它涵盖了终端与基站之间的无线资源控制信令、基站与核心网之间的N2接口信令,以及核心网内部各网元之间的服务化接口调用。和4G时代相比,5G SA最大的变化是核心网全面服务化,信令不再是传统的Diameter协议那一套,而是基于HTTP/2的SBI(Service Based Interface)接口,网元之间通过“服务调用”的方式通信。这意味着接入信令的流程更长、参与网元更多、参数更复杂,但同时也更灵活。
这篇文章适合谁看?如果你是一名网络优化工程师、核心网运维人员、或者正在做5G相关模拟项目的开发者,需要搞清楚SA接入信令的完整流程、关键参数和常见故障排查思路,那这篇内容就是为你准备的。我会从整体架构讲到具体信令流程,再结合实操中踩过的坑,把每个环节的关键点拆开揉碎讲清楚。即使你之前只接触过4G信令,看完也能对SA接入有一套完整的认知。
1.2 为什么SA接入信令比NSA复杂这么多
很多人会问,NSA(非独立组网)不是也能用5G吗,为什么还要折腾SA?从信令角度看,NSA的接入信令基本沿用4G的流程,终端先接入4G锚点站,再通过双连接添加5G辅站,核心网还是4G的EPC。而SA是终端直接接入5G基站,核心网是全新的5GC,信令流程从“单线联系”变成了“多方会谈”。
具体来说,SA接入信令的复杂性体现在三个层面。第一是网元数量增多:4G接入主要涉及MME、HSS、SGW、PGW,而5G SA接入涉及gNB、AMF、SMF、UPF、AUSF、UDM、PCF、NRF等多个网元,每个网元都有自己的服务接口。第二是协议栈变化:N2接口用的是NGAP(NG Application Protocol),基于SCTP承载;N1接口是NAS信令,封装在RRC和NGAP里透传;网元之间是HTTP/2的SBI接口,用JSON格式传递消息。第三是流程嵌套:一次注册流程里可能嵌套鉴权、安全模式控制、切片选择、策略关联等多个子流程,任何一个子流程失败都会导致整体注册失败。
注意:SA接入信令的排查不能只看单一接口,必须端到端串联。终端侧、无线侧、核心网侧的信令要能对应上同一个时间轴,否则很容易误判。
1.3 核心网服务化架构对信令的影响
5GC的服务化架构是理解SA接入信令的关键。传统核心网里,网元之间的接口是点对点的,比如MME和HSS之间用S6a接口,消息格式固定。而在5GC里,每个网元都把自身能力注册到NRF(网络存储功能)上,其他网元需要某个服务时,先查NRF拿到地址,再直接调用。这种“先注册、后调用”的模式让网络更灵活,但也让信令流程多了一步服务发现。
举个例子,AMF需要向UDM请求终端的签约数据,它不会直接配置UDM的地址,而是先向NRF查询“谁提供UDM服务”,NRF返回可用的UDM实例列表,AMF再选择其中一个发起调用。这个过程在信令抓包里会看到额外的NRF查询和响应消息。如果NRF里的注册信息过期或者地址不对,AMF就找不到UDM,注册流程直接卡住。
这种架构带来的另一个影响是信令的异步性。传统接口大多是请求-响应模式,而SBI接口支持异步通知,比如SMF可以订阅UPF的状态变化,UPF状态变了主动通知SMF。在接入阶段,这种异步机制用得不多,但在后续会话建立和管理中会频繁出现。理解这一点,在看信令流程图时就不会被“为什么这里多了一条通知消息”搞晕。
2. 接入信令的完整流程拆解
2.1 从开机到RRC连接建立
终端开机后的第一件事是搜索小区。它扫描同步信号块(SSB),获取小区标识和广播信息(MIB/SIB)。MIB里包含系统帧号、子载波间隔等基础参数,SIB1里包含小区选择信息、PLMN列表、TAC(跟踪区码)等。终端根据这些信息判断这个小区是否允许接入、属于哪个运营商、属于哪个跟踪区。
选定小区后,终端发起随机接入过程,也就是常说的PRACH(物理随机接入信道)接入。这一步的目的是让终端和基站建立上行同步,并获得一个临时标识(TC-RNTI)。随机接入成功后,终端进入RRC连接建立阶段。它向gNB发送RRCSetupRequest,里面携带终端标识和建立原因(比如“mo-Signalling”表示移动始发信令)。gNB回复RRCSetup,分配无线资源参数。终端再回复RRCSetupComplete,这条消息里已经携带了NAS层的Registration Request,也就是5G注册请求。
这里有个细节值得注意:RRCSetupComplete里的NAS消息是封装在RRC消息里的,gNB不会解析NAS内容,而是直接透传给AMF。这种“透明传输”机制让无线侧和核心网侧解耦,gNB只负责转发,不关心NAS里的具体内容。但在排查问题时,如果只看RRC消息,是看不到注册请求的具体参数的,必须同时抓N2接口的NGAP消息。
实操心得:抓包时建议在终端侧、gNB侧、AMF侧同时抓,然后用时间戳对齐。终端侧看NAS和RRC,gNB侧看NGAP和RRC的映射关系,AMF侧看NAS和SBI调用。三边对照,问题定位会快很多。
2.2 注册请求与鉴权流程
Registration Request是SA接入的核心消息,里面包含的关键参数有:SUCI(用户隐藏标识)、注册类型(初始注册/移动性注册/周期注册)、切片信息(Requested NSSAI)、终端能力等。SUCI是加密后的用户标识,AMF收到后如果本地没有上下文,会向AUSF发起鉴权请求。
鉴权流程走的是5G AKA或者EAP-AKA‘。AMF把SUCI发给AUSF,AUSF向UDM请求鉴权向量。UDM生成鉴权向量后返回给AUSF,AUSF再转发给AMF。AMF通过NAS消息把鉴权挑战发给终端,终端计算鉴权响应后回给AMF,AMF验证通过后通知AUSF鉴权成功。这个过程涉及AMF、AUSF、UDM三个网元的多次交互,每次交互都是SBI接口调用。
鉴权通过后是安全模式控制。AMF和终端协商NAS层的加密和完整性保护算法,之后所有的NAS消息都会加密。这一步很关键,如果算法协商失败,后续所有信令都会异常。常见的问题是终端支持的算法和网络配置的算法不匹配,比如终端只支持NEA2,而网络只配置了NEA1,协商就会失败。
2.3 切片选择与策略关联
5G SA的一个重要特性是网络切片。终端在注册请求里会带上Requested NSSAI,也就是它希望接入的切片。AMF收到后,需要根据本地配置和UDM里的签约切片信息,判断是否允许终端接入这些切片。如果允许,AMF会为终端选择一个默认切片,并通知SMF建立会话。
切片选择的关键参数是S-NSSAI(单网络切片选择辅助信息),它由SST(切片/服务类型)和SD(切片区分符)组成。SST标识切片的类型,比如eMBB、URLLC、mMTC,SD用于区分同一类型下的不同切片实例。AMF在收到请求后,会检查Requested NSSAI里的每个S-NSSAI是否在签约范围内,如果不在,会拒绝或者只允许部分切片。
策略关联是另一个容易被忽略的环节。AMF需要向PCF请求终端的接入和移动性策略,PCF根据签约数据和当前网络状态生成策略,返回给AMF。这些策略包括允许的接入类型、允许的频段、会话管理策略等。如果PCF不可达或者策略配置有误,终端可能能注册上但无法建立业务会话。
2.4 会话建立与用户面激活
注册成功后,如果终端有业务需求,会发起PDU会话建立请求。这条NAS消息通过gNB透传给SMF,SMF根据请求的DNN(数据网络名称)和S-NSSAI选择UPF,然后通过N4接口配置UPF的转发规则。UPF配置完成后,SMF通过AMF向终端返回PDU会话建立接受消息,里面包含分配的IP地址和QoS规则。
用户面激活的标志是UPF开始转发数据。在信令层面,可以看到SMF向UPF发送Session Establishment Request,UPF回复Session Establishment Response,然后SMF通知AMF会话已建立。AMF再通过N2接口通知gNB为终端分配无线资源。整个流程涉及SMF、UPF、AMF、gNB四个网元的协同,任何一个环节超时都会导致会话建立失败。
注意:PDU会话建立失败时,先看SMF是否收到了请求,再看UPF是否配置成功,最后看gNB是否收到了N2消息。按这个顺序排查,基本能覆盖大部分问题。
3. 关键参数与信令消息详解
3.1 NAS消息里的必看字段
NAS消息是终端和核心网之间的“私密对话”,gNB只负责透传。Registration Request里的关键字段包括:
| 字段名 | 作用 | 常见取值 |
|---|---|---|
| SUCI | 用户隐藏标识 | 由IMSI加密生成 |
| Registration Type | 注册类型 | initial/mobility/periodic |
| Requested NSSAI | 请求切片 | SST+SD组合 |
| UE Capability | 终端能力 | 支持的频段、算法等 |
| Last Visited TAI | 上次访问跟踪区 | 用于移动性注册 |
Registration Accept里的关键字段包括:Allowed NSSAI(允许的切片)、TAI List(跟踪区列表)、GUTI(临时标识)、DRX参数等。如果Allowed NSSAI和Requested NSSAI不一致,说明网络对切片做了限制,终端只能用允许的切片。
鉴权相关的NAS消息有Authentication Request、Authentication Response、Security Mode Command、Security Mode Complete。Security Mode Command里会携带选定的加密算法和完整性保护算法,终端回复Security Mode Complete表示接受。如果终端不接受,会回Security Mode Reject,注册流程终止。
3.2 NGAP消息的映射关系
NGAP是gNB和AMF之间的信令协议,它承载了N1(NAS)和N2(无线)两层消息。常见的NGAP消息有:
- Initial UE Message:gNB收到终端的RRCSetupComplete后,把NAS消息封装在Initial UE Message里发给AMF。这条消息里还包含用户位置信息、小区标识、RRC建立原因等。
- Downlink NAS Transport:AMF向终端发送NAS消息时,通过这条消息把NAS透传给gNB。
- Initial Context Setup Request:AMF请求gNB为终端建立上下文,里面包含安全密钥、切换限制、QoS参数等。
- PDU Session Resource Setup Request:AMF请求gNB为PDU会话分配无线资源。
这些消息的对应关系是:终端发一条NAS消息,gNB就发一条Initial UE Message或Uplink NAS Transport;AMF回一条NAS消息,gNB就发一条Downlink NAS Transport。抓包时如果看到NGAP消息数量对不上,说明中间有丢包或者超时。
3.3 SBI接口的调用逻辑
SBI接口是5GC内部网元之间的通信方式,基于HTTP/2,消息体是JSON。常见的SBI调用有:
- Nausf_UEAuthentication:AMF向AUSF请求鉴权。
- Nudm_UEAuthentication:AUSF向UDM请求鉴权向量。
- Nudm_SDM:AMF向UDM请求签约数据。
- Npcf_AMPolicyControl:AMF向PCF请求接入策略。
- Nsmf_PDUSession:SMF向AMF通知会话状态。
每次SBI调用都有对应的HTTP方法和URL。比如AMF向AUSF请求鉴权,用的是POST方法,URL类似/nausf-auth/v1/ue-authentications。消息体里包含SUCI和Serving Network Name。AUSF返回的响应里包含鉴权向量和鉴权上下文ID。
排查SBI问题时,重点看HTTP状态码。200表示成功,400表示请求参数错误,404表示资源不存在,500表示网元内部错误。如果看到404,通常是NRF里的注册信息不对或者网元实例已下线。如果看到500,需要看网元日志,可能是内部处理异常。
实操心得:SBI接口的抓包需要在网元之间的网络节点上做镜像,或者直接在网元上开抓包工具。由于是HTTP/2,抓包工具要支持HTTP/2解析,否则看到的是一堆二进制帧,没法分析。
4. 常见问题与排查技巧实录
4.1 注册被拒的典型原因
注册被拒是SA接入中最常见的问题,Registration Reject消息里会带原因值。常见的原因值和对比如下:
| 原因值 | 含义 | 排查方向 |
|---|---|---|
| 3 | Illegal UE | 终端标识不合法,检查SUCI生成逻辑 |
| 7 | 5GS services not allowed | 签约数据里没有5G权限 |
| 22 | Congestion | 网络拥塞,检查AMF负载 |
| 27 | N1 mode not allowed | 终端不支持N1模式 |
| 62 | No network slices available | 请求的切片不在签约范围内 |
| 72 | Non-3GPP access not allowed | 非3GPP接入被禁止 |
原因值62是我遇到最多的。终端请求了一个切片,但UDM里的签约数据没有这个切片,AMF直接拒绝。解决办法是在UDM里补充签约切片,或者让终端只请求签约范围内的切片。原因值7也很常见,通常是4G用户升级到5G时,HSS里的数据没有同步到UDM,导致UDM认为该用户没有5G权限。
4.2 鉴权失败的排查思路
鉴权失败的表现是终端收到Authentication Reject,或者AMF侧看到鉴权响应验证不通过。排查时按以下顺序:
- 检查SUCI解密是否正常。AMF收到SUCI后需要解密成SUPI,如果解密失败,后续鉴权无法进行。解密用的公钥配置在AMF上,如果公钥和终端侧加密用的私钥不匹配,解密就会失败。
- 检查鉴权向量是否一致。UDM生成的鉴权向量里包含RAND、AUTN、XRES,终端计算的RES要和XRES匹配。如果不匹配,说明终端和UDM的鉴权算法或者密钥不一致。
- 检查鉴权算法配置。5G AKA和EAP-AKA‘的流程不同,如果AMF配置的算法和终端支持的不一致,鉴权会失败。
我踩过的一个坑是:UDM里配置的鉴权算法是5G AKA,但终端只支持EAP-AKA’,结果AMF发起5G AKA鉴权时终端无法响应。后来在AMF里把鉴权算法优先级调整为EAP-AKA‘优先,问题解决。
4.3 切片配置错误的快速定位
切片配置错误的表现是注册成功但PDU会话建立失败,或者注册时Allowed NSSAI为空。排查时重点看三个地方:
- 终端侧:Requested NSSAI里的S-NSSAI是否正确。有些终端默认请求eMBB切片,但测试环境只配了URLLC切片,就会不匹配。
- AMF侧:AMF的切片配置里是否包含了终端请求的S-NSSAI。AMF需要配置允许的切片列表,如果列表里没有,直接拒绝。
- UDM侧:签约数据里的S-NSSAI是否和AMF配置一致。UDM里的签约切片是最终依据,如果UDM里没有,AMF也不会允许。
这三个地方的配置必须一致,任何一个不匹配都会导致切片选择失败。建议在测试前先列一个配置对照表,把终端、AMF、UDM三侧的S-NSSAI都列出来,逐一核对。
4.4 用户面不通的排查步骤
用户面不通的表现是PDU会话建立成功但ping不通外部网络。排查步骤:
- 检查UPF的N4会话是否建立成功。在SMF侧看Session Establishment Response,如果UPF返回失败,说明N4接口有问题。
- 检查UPF的转发规则。UPF需要配置PDR(包检测规则)和FAR(转发动作规则),如果PDR匹配不上终端的IP包,数据会被丢弃。
- 检查gNB的无线资源配置。如果gNB没有为终端分配足够的无线资源,数据无法通过空口传输。
- 检查DN(数据网络)侧的路由。UPF到DN的链路是否通,DN是否配置了回程路由。
我遇到过一次用户面不通,最后发现是UPF的FAR里配置的下一跳地址写错了,导致数据包被转发到了一个不存在的网关。这种问题在信令层面看不出来,必须结合用户面抓包和路由表检查。
提示:用户面排查建议在UPF的N3和N6接口同时抓包。N3接口看空口数据是否到达UPF,N6接口看UPF是否转发到了DN。如果N3有包N6没有,问题在UPF内部;如果N3没有包,问题在gNB或空口。
5. 实操环境搭建与信令抓取方法
5.1 模拟环境的最小化部署
如果手头没有现网环境,可以用开源项目搭建一个最小化的5G SA模拟环境。核心网侧可以用free5GC或者Open5GS,两者都支持SA架构,实现了AMF、SMF、UPF、AUSF、UDM、NRF等网元。无线侧可以用UERANSIM,它模拟gNB和终端,支持SA接入流程。
部署时需要注意几点:第一,NRF必须先启动,其他网元启动后要向NRF注册。第二,AMF和SMF的配置文件里要正确填写NRF地址和切片信息。第三,UERANSIM的配置文件里要填写gNB的NGAP地址、AMF的地址、终端的SUCI和切片信息。第四,UPF的N4地址要和SMF配置一致,N3地址要和gNB配置一致。
我建议用Docker Compose部署,把每个网元放在一个容器里,网络模式用host或者自定义bridge。这样抓包方便,直接在宿主机上抓docker0或者对应的虚拟网卡就行。
5.2 信令抓包的关键位置
抓包位置决定了你能看到什么信令。以下是几个关键抓包点:
- 终端侧:抓空口信令需要专用工具,模拟环境下UERANSIM会输出日志,可以看到NAS和RRC消息。
- gNB侧:抓N2接口的NGAP消息,以及N3接口的用户面数据。用tcpdump抓SCTP端口38412就是NGAP。
- AMF侧:抓N1(NAS)和N2(NGAP)的映射,以及SBI接口的HTTP/2消息。SBI默认用HTTP/2,端口通常是8080或者自定义。
- SMF侧:抓N4接口的PFCP消息,以及SBI接口的会话管理消息。
- UPF侧:抓N3和N6接口的用户面数据,以及N4接口的PFCP消息。
抓包时建议统一时间戳格式,最好用UTC时间,避免时区混乱。如果多个抓包点在不同机器上,要确保时间同步,可以用NTP服务对齐。
5.3 用Wireshark解析5G信令
Wireshark对5G信令的支持已经比较完善。解析NGAP需要设置SCTP端口为38412,解析PFCP需要设置UDP端口为8805,解析SBI需要设置HTTP/2端口。如果SBI用了TLS加密,需要在Wireshark里配置密钥才能解密。
解析NAS消息时,Wireshark需要知道NAS消息是封装在NGAP里的。在NGAP的Initial UE Message里,Wireshark会自动识别NAS PDU并解析。如果解析不出来,检查一下Wireshark版本,建议用3.6以上版本。
实操心得:Wireshark的5G解析有时候会把NAS消息解析错,特别是加密后的NAS。如果看到乱码,先确认安全模式是否已激活。激活后的NAS消息是加密的,没有密钥解不开。排查时可以先看安全模式之前的明文NAS,确认基本流程没问题,再看加密后的消息。
6. 从信令视角看SA与NSA的核心差异
6.1 接入流程的路径差异
NSA的接入路径是:终端先接入4G锚点站,建立RRC连接,然后通过RRC重配置添加5G辅站。核心网侧走的是EPC的Attach流程,MME负责控制。5G辅站只是提供额外的无线资源,核心网还是4G的。
SA的接入路径是:终端直接接入5G基站,建立RRC连接,然后发起5G注册流程。核心网侧走的是5GC的Registration流程,AMF负责控制。整个流程中,5G基站和5G核心网是端到端的,没有4G参与。
这个差异导致SA的信令流程更长,但更“纯粹”。NSA的接入信令里会看到大量的LTE消息和NR消息交织,排查时需要在两种制式之间切换视角。SA的信令全是5G的,虽然网元多,但逻辑更清晰。
6.2 安全机制的演进
NSA沿用4G的安全机制,鉴权走EPS-AKA,加密和完整性保护算法也是4G的。SA引入了5G AKA和EAP-AKA’,支持更长的密钥和更强的算法。SA还引入了SUCI机制,终端用公钥加密SUPI生成SUCI,网络侧解密后才能拿到真实标识。这比4G的IMSI明文传输安全得多。
在信令上,SA的鉴权流程比NSA多了一次AUSF和UDM的交互。NSA里MME直接向HSS请求鉴权向量,SA里AMF向AUSF请求,AUSF再向UDM请求。多了一层AUSF,好处是鉴权逻辑集中管理,坏处是流程更长,排查时多了一个环节。
6.3 切片与QoS的差异化支持
NSA不支持网络切片,QoS还是4G的QCI机制。SA原生支持切片,QoS用5QI(5G QoS Identifier)标识,支持更细粒度的QoS控制。在接入信令上,SA的Registration Request里会带Requested NSSAI,PDU Session Establishment Request里会带QoS规则。NSA没有这些字段。
这意味着SA的接入信令需要处理更多的参数,但也提供了更灵活的业务能力。比如同一个终端可以同时建立多个PDU会话,每个会话关联不同的切片和QoS规则。NSA做不到这一点,所有业务都走同一个承载。
注意:切片和QoS的配置需要端到端一致。终端、gNB、AMF、SMF、UPF、UDM、PCF都要配置对应的切片和QoS参数,任何一个网元缺失都会导致业务异常。
7. 个人实操体会与后续扩展方向
7.1 信令排查的“三看”原则
干了这么多年网络优化,我总结了一个“三看”原则:一看时间轴,二看消息流,三看参数值。时间轴对齐是基础,如果终端侧和核心网侧的时间对不上,后面的分析都是白搭。消息流是骨架,要清楚每个流程应该有哪些消息,消息的顺序和方向对不对。参数值是血肉,每个关键字段的取值都要核对,特别是标识类参数(SUCI、GUTI、S-NSSAI)和算法类参数(加密算法、完整性保护算法)。
这个原则听起来简单,但实际操作中很容易漏。我见过太多人一上来就盯着某个参数看,忽略了消息流本身就不完整。比如注册流程里少了Security Mode Command,那后面所有消息都是异常的,再怎么调参数也没用。
7.2 后续可以深入的方向
SA接入信令只是5G信令体系的入口。后续可以深入的方向包括:切换信令(Xn切换和N2切换)、会话管理信令(PDU会话修改和释放)、策略控制信令(PCF的动态策略下发)、网络切片的管理信令(切片实例的创建和修改)。每个方向都有独立的流程和参数体系,但基础都是接入信令这一套。
如果想做自动化排查,可以基于信令日志做规则匹配。比如定义一个规则:如果Registration Reject的原因值是62,自动检查UDM签约数据里的S-NSSAI配置。这种自动化工具能大幅提升排查效率,特别是在大规模测试场景下。
最后分享一个小技巧:抓包时给每个抓包文件加上时间戳和场景标签,比如“20250101_注册失败_终端侧.pcap”。这样后期回溯时能快速定位到对应的场景,不用在一堆文件里翻找。我吃过这个亏,后来养成了习惯,排查效率至少提升了一倍。