5G SA终端注册失败排查:从Registration Request卡顿到PDU会话建立
发布时间:2026/10/12 2:32:43 锦皓数字建站

简介本资源是一份面向5G网络优化工程师、通信专业学生及无线接入网运维人员的技术解析文档系统梳理5G NR独立组网SA模式下终端附着全流程聚焦信令交互逻辑与关键故障排查点。文档以图文结合方式逐层展开10个核心阶段从SSB同步、SIB1获取、随机接入Msg1–Msg4、RRC连接建立到NAS层注册、身份鉴权、安全模式协商及最终PDU会话建立完整覆盖空口侧44步消息交互并标注HARQ反馈机制与RNTI使用场景。资源为单文件Word文档.docx大小127KB结构清晰、术语规范适合作为现场排错参考或教学辅助材料。目前已有430人学习下载读者可直接掌握SA附着各环节触发条件、典型信令时序、关键参数含义及常见失败原因分析显著提升5G接入类问题定位效率。1. 为什么5G SA终端附着失败时信令流程卡在“Registration Request”就静默了这不是设备坏了也不是基站宕机——而是你没看懂终端附着Attach在5G独立组网SA下的真实逻辑。它早已不是4G时代那个“发个Attach Request、等个Attach Accept”的线性过程而是一套由AMF、SMF、UDM、AUSF、PCF等5个核心网网元协同完成的、带状态机跳转、鉴权链路校验、切片选择、PDU会话建立的多阶段协议交互。很多现场工程师一上来就抓空口信令看到UE发了Registration Request后没收到Response第一反应是“基站没收到”结果查完gNodeB日志发现基站早把消息转发给AMF了AMF却压根没回——问题其实在UDM鉴权超时、或AUSF配置了错误的SUCI解密密钥。本文不讲3GPP TS 23.502文档里的抽象框图只聚焦一线能复现、能抓包、能改参数、能定位到具体网元日志行的实操路径。适合正在调试5G SA商用网络、实验室搭建UPFAMF测试环境、或排查终端无法注册进vRAN平台的通信工程师。文中所有命令、配置片段、信令字段含义、关键定时器取值均来自真实现网部署华为iMaster NCE-Campus 23.10 中兴ZXR10 M6000-S 高通X65芯片终端和3GPP Release 16冻结版标准。2. 从Registration Request到PDU Session Establishment5G SA附着全流程拆解5G SA终端附着本质是“注册Registration PDU会话建立PDU Session Establishment”两阶段强耦合过程。它不像NSA那样依赖LTE锚点所有控制面与用户面均由5GC原生承载。要真正跑通必须理解每个阶段触发条件、网元职责、以及失败时最该盯住哪条日志。下面按真实信令时序展开每一步都标注必查字段、典型耗时阈值和可人工干预点。2.1 终端发起Registration Request不是“我要入网”而是“我要声明我的能力与意图”终端上电后首先执行PLMN选择、小区搜索、随机接入RA成功同步后向gNodeB发送Registration Request。注意此消息已不含IMSI而是加密后的SUCISubscription Concealed Identifier。这是5G强制隐私保护机制也是第一个高频翻车点。# 在gNodeB侧抓取空口NAS消息以华为BBU为例 $ ssh gnb-admin192.168.10.10 $ cli-tool --nas-trace enable --ue-imsi 000000000000000 --output /tmp/nas_reg.pcap提示--ue-imsi参数仅用于过滤实际信令中不会出现明文IMSI。若此处抓不到SUCI字段说明终端未启用5G SA模式检查UE设置里是否关闭了“NSA Mode”或勾选了“5G Standalone Only”。关键字段解析5GS Registration Type 1 (Initial Registration)首次注册必须为15GS Mobile Identity SUCI格式应为suci:imsi-MCCMNCMSIN例如suci:imsi-460011234567890Requested NSSAI终端上报的网络切片请求列表如{sst1, sd010203}。若为空AMF将按默认切片策略分配但某些运营商要求强制携带否则拒绝注册。为什么这步容易卡住因为SUCI需由AUSF解密为SUPISubscriber Permanent Identifier再交由UDM做鉴权。若AUSF密钥配置错误如Kausf未同步、或UDM中该IMSI未开户/签约5G服务AMF会在3秒内直接丢弃请求不返回任何响应——此时gNodeB侧日志仅显示“NAS message timeout”而AMF日志里会有明确报错AUSF_SUCI_DECRYPTION_FAILED或UDM_SUBSCRIPTION_NOT_FOUND。2.2 AMF处理Registration Request状态机驱动的四步决策流AMF收到Registration Request后并非立即转发而是启动内部状态机TS 23.502 §4.2.2.2依次执行接入允许检查Access Allowance验证TAITracking Area Identity是否在AMF白名单内检查终端能力如是否支持NR FR1/FR2频段鉴权触发Authentication Trigger向AUSF发送Namf_Communication_UEAuthenticationRequest携带SUCI和RAND安全上下文建立Security Context SetupAUSF返回RESResponse后AMF生成Kamf密钥派生KgnbgNodeB密钥和Kupenc用户面加密密钥注册接受构造Registration Accept Build填入5GS-TMSI、Allowed NSSAI、T3512注册更新定时器值通常设为12h。这个过程全部异步AMF日志需开启DEBUG级才能看到完整链路# 华为AMF日志过滤关键事件需提前配置log-levelDEBUG $ grep -E Namf|AUSF|UDM|REG_ACCEPT /var/log/amf/nas_core.log | tail -n 50 # 输出示例 2024-06-12T08:23:41.221Z DEBUG [Namf] Sending UEAuthenticationRequest to AUSF for suci:imsi-460011234567890 2024-06-12T08:23:41.589Z ERROR [AUSF] SUCI decryption failed: invalid Kausf key version 0x03参数说明T3512注册更新定时器单位秒。现网常用值为4320012小时过短会导致频繁重注册过长则影响移动性管理5GS-TMSI临时标识由AMF分配长度32bit必须保证在AMF池内全局唯一Allowed NSSAIAMF根据UDM签约数据和本地策略计算出的终端可接入切片集合若为空则终端无法建立任何PDU会话。2.3 终端接收Registration Accept并完成完整性保护终端收到Registration Accept后需用Kamf派生的Kint密钥对NAS消息做完整性校验。若校验失败如Kamf派生错误、或gNodeB转发时NAS层被篡改终端将立即发起Registration Request重传带5GS Registration Type 2即Mobility Registration Update但此时AMF会识别为重复请求而直接拒绝。验证完整性是否生效可在终端侧用AT指令读取当前安全状态# 高通平台常用AT指令需root权限 ATQCFGnas_security,1 # 查询NAS安全激活状态1activated ATQCFG5gs_nas_mode,1 # 查询5GS NAS模式1SA only ATQCFGsuci_format,1 # 查询SUCI生成方式1ECIES with SUPI若nas_security返回0说明Kamf未正确注入终端协议栈——常见于AMF未下发Security Mode Command或终端固件bug导致Kamf派生函数异常。此时即使Registration Accept已送达终端也会丢弃表现为“无响应”。2.4 PDU Session Establishment注册成功≠能上网这才是真门槛Registration Accept只是控制面打通用户面仍为空。终端必须主动发起PDU Session Establishment Request请求建立一个或多个PDU会话对应4G的EPS Bearer。此步骤涉及SMF选择、UPF发现、QoS规则下发、用户面隧道建立N3/N9接口失败率远高于注册阶段。关键信令字段PDU Session Type IPv4/IPv6/IPv4v6必须与SMF/UPF配置一致若UPF仅支持IPv4而终端请求IPv6v6则SMF返回504 Gateway TimeoutSSC mode 1/2/3Session and Service Continuity模式决定会话连续性策略如切换时是否保持IP地址现网多用mode 1无连续性QoS Flow List包含5QI5G QoS Identifier如5QI9default bearer、5QI5video streamingSMF据此匹配PCF策略。SMF日志中典型失败原因UPF_SELECTION_FAILEDUPF未在NRF注册或UPF的supi_range不包含该用户QOS_FLOW_SETUP_REJECTEDPCF未下发该5QI对应的ARPAllocation and Retention Priority或GFBRGuaranteed Flow Bit RateN3_INTERFACE_DOWNUPF与gNodeB间N3接口GTP-U隧道未通需检查UPF的gtpu_ip配置是否可达gNodeB的S1-U地址。3. 三大高频避坑指南从信令卡顿、鉴权失败到PDU会话拒绝一线调试中最常遇到的不是“完全不通”而是“卡在某一步不动”“偶尔成功”“换终端就正常”。以下是我在12个5G SA商用局点踩出的血泪经验每一条都对应真实日志截图和修复命令。3.1 现象Registration Request发出后AMF无任何日志输出gNodeB显示“NAS message timeout”原因gNodeB未正确配置AMF的SCTP偶联参数或防火墙拦截了SCTP端口38412。AMF根本没收到消息自然无日志。排查在gNodeB侧执行show sctp association确认State为ESTABLISHEDPeer IP为AMF管理地址用tcpdump在AMF服务器抓SCTP包sudo tcpdump -i any port 38412 -w amf_sctp.pcap若无包流入说明网络层不通。解决# 检查AMF SCTP监听以AMF容器为例 $ docker exec -it amf-container netstat -tuln | grep 38412 # 若无输出修改AMF配置文件如amf.yaml ngap: sctp: local_port: 38412 remote_ip: 192.168.20.10 # gNodeB管理IP3.2 现象AMF日志显示AUSF_SUCI_DECRYPTION_FAILED但AUSF密钥确认已同步原因SUCI加密时使用的公钥版本Key Version与AUSF配置的私钥版本不匹配。3GPP规定SUCI中嵌入key_id字段AUSF必须用对应key_id的私钥解密。排查解析SUCI字符串suci:imsi-460011234567890中末尾000为key_id十六进制即0x0000查AUSF密钥配置cat /etc/ausf/keys.json | jq .keys[0].key_id若返回1则版本错。解决# 重新生成匹配key_id0的AUSF密钥对Open5GS示例 $ cd /open5gs/install/etc/open5gs $ openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp256r1 -out ausf.key $ openssl pkey -in ausf.key -pubout -out ausf.pub $ echo {keys:[{key_id:0,public_key:$(cat ausf.pub | base64 -w0)}]} keys.json3.3 现象Registration Accept已收到但终端不发PDU Session Request或发送后SMF返回503 Service Unavailable原因终端未配置正确的DNNData Network Name或SMF未订阅该DNN的NRF服务。5G中DNN替代了4G的APN必须与SMF配置严格一致。排查终端AT指令查DNNATQCGDEFCONT?输出应为QCGDEFCONT: 1,ip,internetSMF日志查NRF服务发现grep Nnrf_NFDiscovery /var/log/smf/nrf.log若无返回说明SMF未向NRF注册DNN。解决# 在SMF配置文件smf.yaml中显式声明DNN upf: dnn_list: - dnn: internet pdu_session_types: [IPv4, IPv6] qos: default_5qi: 9 # 重启SMF使配置生效 $ systemctl restart open5gs-smfd3.4 现象PDU Session Establishment Accept收到但ping不通UPF分配的UE IP如10.60.0.10原因UPF未正确配置N6接口路由或gNodeB未将UE的N3 GTP-U隧道指向UPF的N3 IP。用户面路径断裂。排查在UPF上查N6路由ip route show table 200应有10.60.0.0/24 via 192.168.30.1 dev n6192.168.30.1为SMF地址在gNodeB查N3隧道show gtpu tunnel确认Remote IP为UPF的N3地址如192.168.25.100。解决# UPF添加N6路由假设UE IP段为10.60.0.0/24SMF地址192.168.30.1 $ ip route add 10.60.0.0/24 via 192.168.30.1 table 200 # gNodeB配置N3下一跳华为CLI (gnb)# interface gtpu (gnb-if-gtpu)# upf-address 192.168.25.1003.5 现象同一终端在A基站成功在B基站失败B基站Registration Request后AMF返回71 Protocol error, unspecified原因B基站gNodeB的plmn-id配置错误与AMF中配置的allowed_plmn_list不匹配。AMF在接入允许检查阶段直接拒绝。排查查gNodeB PLMNshow cell | include plmn输出如plmn: 460-01查AMF配置cat /etc/amf/amf.yaml | grep -A5 allowed_plmn_list若为- 460-02则不匹配。解决# 修改AMF配置追加B基站PLMN amf: allowed_plmn_list: - mcc: 460 mnc: 01 - mcc: 460 mnc: 02 # B基站所属PLMN4. 用Wireshark精准定位从空口NAS到核心网HTTP/2的全链路染色光看日志不够——当多个网元异步交互时必须用唯一ID贯穿全程。5G SA中5GS-TMSI是控制面染色关键而PDU Session ID是用户面染色关键。Wireshark 4.0已原生支持5G NAS解码但需手动加载密钥才能解密NAS信令。4.1 提取Kamf并导入Wireshark解密NASKamf由AMF生成需从AMF日志中提取以Open5GS为例# 从AMF日志提取Kamfbase64编码 $ grep Kamf /var/log/open5gs/amfd.log | tail -n 1 | awk {print $NF} # 输出示例a2FtZjphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTA # 解码为32字节二进制 $ echo a2FtZjphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTA | base64 -d | xxd -p -c 32 # 输出6b616d663a6162636465666768696a6b6c6d6e6f707172737475767778797a31323334353637383930在Wireshark中配置NAS解密Edit → Preferences → Protocols → NGAP → Security → Kamf key粘贴上述hex字符串勾选Decrypt NAS messages重启Wireshark打开含NAS信令的pcap即可看到明文Registration Request中的SUCI、NSSAI等字段。注意Kamf仅用于NAS层解密不影响用户面GTP-U解密。GTP-U解密需Kupenc但Wireshark暂不支持自动推导需手动计算。4.2 HTTP/2流量染色用:path和x-3gpp-transaction-id关联SMF与UPFSMF与UPF间通过HTTP/2调用Nsmf_PDUSession_CreateSMContext其请求头含两个关键染色字段字段名示例值作用:path/nsmf-pdusession/v1/sm-contexts标识PDU会话创建操作x-3gpp-transaction-idsmctx-20240612-082341-123456全局唯一事务IDSMF生成UPF日志中同样出现在Wireshark中过滤http2.header.name :path http2.header.value contains sm-contexts→ 定位SMF发给UPF的创建请求http2.header.name x-3gpp-transaction-id http2.header.value contains smctx-20240612-082341-123456→ 关联UPF返回的响应。若请求发出但无响应说明UPF进程崩溃或N4接口不通若响应返回500 Internal Server Error则查UPF日志中同transaction-id的ERROR行。4.3 gNodeB侧GTP-U隧道ID映射用TEID定位N3路径断点gNodeB与UPF间N3接口使用GTP-U协议每条用户面隧道由TEIDTunnel Endpoint Identifier唯一标识。当UE ping不通时需确认gNodeB发出的TEID与UPF接收的TEID是否一致。在gNodeB抓N3口GTP-U包$ tcpdump -i eth1 port 2152 -w gnb_n3.pcap在Wireshark中过滤gtpv1.teid 0x12345678TEID值从Registration Accept的PDU Session Resource Setup Request中获取查看GTP-U Echo Request是否被UPF回应。若无Echo Response说明UPF未监听该TEID或防火墙丢弃了UDP 2152端口。5. 实战技巧三分钟快速验证5G SA附着健康度的Shell脚本写完配置不敢贸然重启上线前想批量验证10个基站的附着成功率我用一个21行的bash脚本自动完成从终端模拟注册、抓包分析、关键字段校验到生成报告的全流程。它不依赖GUI纯命令行适配华为、中兴、爱立信及Open5GS环境。5.1 脚本核心逻辑与可定制参数脚本名为sa-attach-check.sh核心能力自动构造合法SUCI基于输入IMSI生成ECIES加密SUCI通过socat向AMF SCTP端口发送Registration Request模拟终端抓取AMF返回的Registration Accept提取5GS-TMSI和Allowed NSSAI向SMF发起PDU Session Request验证HTTP/2响应码输出JSON格式结果含attach_status、pdu_status、latency_ms字段。可定制参数脚本开头# 可配置区 AMF_IP192.168.20.10 # AMF管理IP AMF_PORT38412 # AMF SCTP端口 IMSI460011234567890 # 测试用户IMSI DNNinternet # 请求的DNN TIMEOUT_MS5000 # 单步超时毫秒数 # 5.2 执行效果与结果解读$ chmod x sa-attach-check.sh $ ./sa-attach-check.sh [INFO] Starting SA attach test for IMSI 460011234567890... [STEP1] Sent Registration Request → OK (23ms) [STEP2] Received Registration Accept → OK (TMSI0x1a2b3c4d, NSSAI{1,010203}) [STEP3] Sent PDU Session Request → OK (42ms) [STEP4] Received PDU Session Accept → OK (QoS:5QI9, ARP2) [RESULT] SUCCESS! Full attach latency: 65ms { attach_status: success, pdu_status: success, 5gs_tmsi: 0x1a2b3c4d, allowed_nssai: 1,010203, latency_ms: 65, timestamp: 2024-06-12T08:23:41Z }失败场景示例{ attach_status: failed, error_step: STEP2, error_code: AMF_TIMEOUT, latency_ms: 5020, timestamp: 2024-06-12T08:23:41Z }此时直接定位到AMF未响应无需翻日志——脚本已帮你省下3分钟。5.3 脚本落地细节与安全边界SUCI生成调用openssl pkeyutl执行ECIES加密密钥固定为测试用ausf_test.key脚本内置不接触生产密钥SCTP发送使用socat而非自研socket避免TCP兼容性问题socat - UDP4-RECVFROM:192.168.20.10:38412HTTP/2请求用curl --http2发送自动处理HPACK头压缩curl -X POST -H Content-Type: application/json --data-binary pdu_req.json https://192.168.30.1:7777/nsmf-pdusession/v1/sm-contexts安全边界脚本不存储任何用户凭证所有临时文件如/tmp/sa_test_XXXXXX在退出时自动清理不修改任何网元配置纯读操作。我习惯把它放在AMF服务器的/usr/local/bin/下每天凌晨3点用cron自动运行一次结果邮件发给运维群。曾靠它提前2天发现某批次gNodeB固件升级后SCTP偶联保活时间从30秒缩至5秒导致AMF误判链路中断而反复重建连接——这种玄学问题日志里藏得深但脚本能一秒揪出。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。