简介:这份文档面向5G网络优化、信令分析及无线测试岗位的工程师与学习者,聚焦NSA非独立组网下终端从LTE平滑接入NR的双连接信令流程。内容围绕NSA双连接概述、辅站添加总流程、UE初始Attach流程展开,逐条拆解测量控制下发、B1事件上报、SgNB Addition Request与Acknowledge、RRC连接重配置、随机接入同步、数据转发及用户面路径更新等关键步骤,并梳理RRC建立三条核心信令与三次UE能力查询的交互细节,同时给出测量对象列表、上报配置列表与测量标识列表的对应关系。资源为1个PDF文件,压缩包约1.26MB,篇幅精炼、信令标注清晰,适合对照空口消息逐条研读。已有1222人学习下载,可作为5G测试与网优人员理解NSA接入流程、排查信令异常的参考材料。
1. 5G NSA 接入信令流程:从一条 RRC 重配消息看懂整个接入链路
NSA 组网下手机开机到能跑业务,信令面上其实只做了一件事:把 LTE 锚点小区和 NR 辅小区在 RRC 层“绑”到一起。很多人第一次抓 NSA 接入 log,看到满屏的RRCConnectionReconfiguration、MeasurementReport、SN Addition就懵了,觉得比 SA 复杂。恰恰相反,NSA 的接入信令是“寄生”在 LTE 流程里的,只要抓住 LTE 锚点这条主线,NR 的添加只是主线上的一个分支。这篇笔记面向做 5G 终端、基站测试和信令分析的工程师,把 NSA 接入从 RRC 连接建立到 NR 辅小区激活的完整信令拆开,给出可复现的抓包、解码和参数核对方法,也把几个最容易翻车的点讲透。读完你应该能独立对着一条 log 判断接入卡在哪一步、是 LTE 侧问题还是 NR 侧问题。
2. NSA 接入的信令骨架:LTE 锚点先立住,NR 再挂上去
NSA 的核心设计是双连接(EN-DC):终端同时连一个 LTE 主节点(MeNB)和一个 NR 辅节点(gNB),控制面信令走 LTE,用户面可以分流到 NR。所以接入信令的顺序天然是“先 LTE 后 NR”,任何跳过 LTE 锚点直接谈 NR 接入的说法都是错的。这一章先把骨架讲清楚,再落到具体消息。
2.1 为什么 NSA 接入必须先完成 LTE 的 RRC 连接
终端开机后第一件事是小区搜索和 PLMN 选择,这一步和纯 LTE 没区别。选定 LTE 小区后发起随机接入(RACH),拿到上行同步和临时 C-RNTI,然后发RRCConnectionRequest。这条消息里带establishmentCause,NSA 终端通常填mo-Signalling或mo-Data。基站回RRCConnectionSetup,里面配置了 SRB1 和基础无线资源。终端回RRCConnectionSetupComplete,这条消息是关键分水岭——它里面带一个UE-CapabilityRAT-Container或者后续单独走UEInformationResponse,告诉网络“我支持 EN-DC,我的 NR 能力是这些”。
只有网络确认终端有 EN-DC 能力,才会在后面的RRCConnectionReconfiguration里下发 NR 测量配置。如果终端能力上报里 NR 相关字段缺失或格式不对,网络根本不会发起 NR 添加,log 里就永远看不到SN Addition。这是第一个常见卡点,后面避坑章节会展开。
LTE 锚点立住之后,网络通过RRCConnectionReconfiguration下发测量配置,终端开始测 NR 小区,上报MeasurementReport,网络决策是否添加 NR 辅小区。整个链路是串行的,前一步不完成,后一步不会出现。
2.2 NSA 接入涉及的三类信令消息
把 NSA 接入信令按功能分三类,抓包时按这个分类去定位会快很多。
第一类是 LTE 锚点建立类:RRCConnectionRequest、RRCConnectionSetup、RRCConnectionSetupComplete、SecurityModeCommand、SecurityModeComplete、RRCConnectionReconfiguration(带measConfig)、RRCConnectionReconfigurationComplete。这一串走完,LTE 侧的安全和测量框架就就绪了。
第二类是 NR 添加类:MeasurementReport(上报 NR 小区)、RRCConnectionReconfiguration(带nr-SecondaryCellGroupConfig或SCG-Config)、RRCConnectionReconfigurationComplete。这条重配消息里携带的是 NR 辅小区的无线配置,通过 X2 接口从 gNB 传到 MeNB 再转发给终端。
第三类是 NR 激活与同步类:终端收到 SCG 配置后,要在 NR 侧做随机接入(如果配置了rach-Config),或者直接激活。之后可能还有SN Status Transfer、SN Reconfiguration Complete等 X2 面消息,这些在空口抓不到,需要在基站侧 X2 抓包看。
提示:空口抓包只能看到 Uu 接口消息,X2/Xn 接口的 SN Addition Request、SN Addition Request Acknowledge 这些消息必须去基站侧抓,否则你会误以为网络没发 NR 配置。
2.3 用 QXDM 或类似工具抓一次完整 NSA 接入
下面给一套可复现的抓包流程。工具不限 QXDM,任何能解 LTE RRC 和 NR RRC 的抓包工具都行,关键是过滤器和触发点设对。
# 以 QXDM 为例,命令行方式启动抓包(实际工程中多用 GUI,这里示意关键配置) # 1. 设置抓包端口和日志掩码 QXDM.exe -port COM3 -mask 0x1F -log ns a -o nsa_access.qmdm # 2. 关键过滤:只抓 RRC 和 NAS 相关,避免刷屏 # 在 QXDM 里配置 filter: LTE_RRC, NR_RRC, NAS_EMM, NAS_ESM # 3. 触发方式:手动触发终端发起一次去附着再附着,或飞行模式开关 # 这样能抓到从 RRCConnectionRequest 开始的完整流程抓完后在 QXDM 里按时间轴看消息序列。重点核对三件事:RRCConnectionSetupComplete里有没有ue-CapabilityRAT-Container且包含supportedBandListEN-DC;RRCConnectionReconfiguration里有没有measConfig且measObjectNR配置了正确的 SSB 频点;NR 添加那条重配里scg-ConfigPartMCG和scg-ConfigPartSCG是否完整。
参数上,measObjectNR里的ssbFrequency必须和实际 NR 小区 SSB 频点一致,ssbSubcarrierSpacing要和小区配置匹配(常见 15kHz 或 30kHz)。这两个参数错了,终端根本测不到 NR 小区,MeasurementReport里就不会有 NR 的测量结果。
3. 从 RRCConnectionReconfiguration 到 NR 辅小区激活:逐条消息拆解
这一章把 NR 添加阶段的核心消息逐条拆开,给出每条消息里必须核对的字段和常见取值。做信令分析的人,看的就是这些字段。
3.1 MeasurementReport 里 NR 测量结果的判读
终端在 LTE 连接态下,根据measConfig里的reportConfig触发测量上报。NSA 场景下,网络会配置一个reportConfigNR,通常用事件 A1/A2(服务小区质量)或 B1/B2(异系统/异频)。NR 添加常用的是 B1:NR 小区质量高于门限就上报。
一条典型的MeasurementReport里,measResults包含measId、measResultPCell(LTE 服务小区)和measResultNeighCells。如果里面有measResultListNR,说明终端测到了 NR 小区。每个 NR 测量结果带physCellId、cellGlobalId(可选)、rsrpResult、rsrqResult、sinrResult。
核对要点:physCellId要和规划的小区 PCI 对上;rsrpResult的映射关系是RSRP = rsrpResult - 140dBm,比如上报值 60 对应 -80 dBm。如果rsrpResult是 0 或缺失,说明终端没测到或测量配置有问题。
# 解析 MeasurementReport 里 NR 测量结果的简化示例 # 输入是解码后的 measResults 字典结构 def parse_nr_meas(meas_results): nr_list = meas_results.get('measResultListNR', []) for nr in nr_list: pci = nr['physCellId'] rsrp_raw = nr['measResult']['rsrpResult'] rsrp_dbm = rsrp_raw - 140 # 3GPP 映射 rsrq_raw = nr['measResult'].get('rsrqResult', None) rsrq_db = (rsrq_raw - 40) / 2 if rsrq_raw is not None else None print(f"PCI={pci}, RSRP={rsrp_dbm}dBm, RSRQ={rsrq_db}dB") return nr_list这段代码的关键是 RSRP 和 RSRQ 的映射公式,来自 3GPP TS 36.331 的RSRP-Range和RSRQ-Range定义。参数说明:rsrpResult取值范围 0-97,对应 -140 到 -43 dBm;rsrqResult取值 0-34,对应 -19.5 到 -3 dB,步长 0.5。如果你用别的工具解码,核对一下它的映射是否和协议一致,有些工具会直接显示 dBm 值,但底层原始值要按这个公式验算。
3.2 RRCConnectionReconfiguration 携带的 SCG 配置字段
网络决定添加 NR 后,MeNB 通过 X2 向 gNB 发SN Addition Request,gNB 回SN Addition Request Acknowledge,里面带CG-Config(NR 侧的无线配置)。MeNB 把这些内容封装进 LTE 的RRCConnectionReconfiguration,通过空口发给终端。
这条重配消息里,NR 相关配置主要在mobilityControlInfo之外的nr-SecondaryCellGroupConfig(R15 早期叫scg-Config)。里面包含:
scg-ConfigPartMCG:MCG 侧需要知道的 SCG 信息,比如scg-Counter、powerCoordinationInfo。scg-ConfigPartSCG:SCG 的实际无线配置,包括radioResourceConfigDedicatedSCG、sCellToAddModListSCG、pSCellToAddMod。
pSCellToAddMod里最关键的是pSCellIndex、cellIdentification(NR PCI 和 ARFCN)、radioResourceConfigCommonPSCell(含rach-ConfigCommon、pdsch-ConfigCommon、pusch-ConfigCommon)和radioResourceConfigDedicatedPSCell。
核对时重点看rach-ConfigCommon里的rach-ConfigGeneric:preambleReceivedTargetPower、powerRampingStep、preambleTransMax。这些参数决定终端在 NR 侧随机接入能否成功。如果preambleReceivedTargetPower设得过低,终端发射功率不够,gNB 收不到前导,接入就卡在 RACH 阶段。
注意:NSA 下 NR 的 RACH 可能是竞争型也可能是非竞争型。如果
rach-ConfigDedicated里带了ra-PreambleIndex和ra-PRACH-MaskIndex,就是非竞争型,终端直接用专用前导接入,成功率高很多。抓包时看到这两个字段,说明网络配置了专用前导。
3.3 NR 侧随机接入与激活的时序核对
终端收到带 SCG 配置的重配后,先回RRCConnectionReconfigurationComplete(LTE 侧),然后按配置在 NR 侧发起随机接入。NR 的 RACH 流程是:终端发PRACH Preamble,gNB 回Random Access Response(RAR),终端发Msg3(RRCReconfigurationComplete 或类似),gNB 回Msg4竞争解决。
在空口抓包工具里,NR 的 RACH 消息可能和 LTE 的混在一起,需要按频点和 PCI 过滤。核对时序:从终端发出RRCConnectionReconfigurationComplete到 NRPRACH Preamble发出,间隔通常在几十毫秒内。如果超过几百毫秒还没看到 PRACH,说明终端在解析 SCG 配置时出了问题,或者 NR 侧射频没起来。
激活完成后,用户面数据就可以走 NR 了。这时候在 log 里能看到PDCP层的数据包从 LTE 分流到 NR,具体看splitBearer的配置。如果业务建立后速率没起来,要回头查pSCellToAddMod里的pdsch-Config和pusch-Config,看 MIMO 层数和调制阶数是否配对了。
4. NSA 接入信令排查:5 个血泪踩坑记录
这一章按“现象 → 原因 → 解决”写 5 条实际排查中反复遇到的坑。每条都是真实 log 里能对上的。
4.1 终端能力上报缺失导致 NR 永远不添加
现象:LTE 接入正常,RRCConnectionSetupComplete和SecurityModeComplete都走完了,但后面只有 LTE 的测量重配,永远看不到measObjectNR,更没有SN Addition。
原因:终端在UE-CapabilityRAT-Container里没有上报supportedBandListEN-DC,或者上报的bandListEN-DC里不包含当前 LTE 锚点频段和 NR 频段的组合。网络侧收到能力后,发现没有可用的 EN-DC 组合,就不下发 NR 测量配置。
解决:核对终端能力上报的UE-EUTRA-Capability里supportedBandListEN-DC字段。每个BandCombinationParameters要包含bandList(LTE 和 NR 频段)和featureSetCombination。如果终端支持但没上报,检查终端 NV 配置或协议栈版本;如果上报了但网络不认,检查基站侧对 EN-DC 组合的许可配置。
4.2 measObjectNR 的 SSB 频点配错,终端测不到 NR
现象:RRCConnectionReconfiguration里带了measConfig,也有measObjectNR,但终端始终不上报 NR 的MeasurementReport,或者上报里measResultListNR为空。
原因:measObjectNR里的ssbFrequency配成了 NR 小区的中心频点而不是 SSB 频点,或者ssbSubcarrierSpacing配错。终端按错误的频点去搜 SSB,自然搜不到。
解决:确认 NR 小区的 SSB 频点(GSCN 对应的 ARFCN)和子载波间隔。ssbFrequency填 ARFCN 值,ssbSubcarrierSpacing填kHz15或kHz30。这两个值要和 gNB 侧配置完全一致。改完后重新抓包,看MeasurementReport里是否出现measResultListNR。
4.3 SCG 配置里 RACH 参数不匹配导致 NR 接入超时
现象:终端收到了带 SCG 配置的重配,也回了RRCConnectionReconfigurationComplete,但 NR 侧 PRACH 发了几次后没有 RAR 响应,最终触发SCG Failure或T310超时。
原因:rach-ConfigCommon里的preambleReceivedTargetPower和 gNB 侧期望值不匹配,或者powerRampingStep太小,终端功率爬升不够。也可能是rach-ConfigGeneric里的preambleTransMax设得太小,几次失败就放弃了。
解决:对比空口重配里的preambleReceivedTargetPower和 gNB 侧配置。常见值是 -104 dBm 到 -110 dBm。如果终端发射功率受限,适当提高这个值。同时检查powerRampingStep,通常设dB2或dB4。改完后看 NR PRACH 是否能在preambleTransMax次数内收到 RAR。
4.4 X2 接口 SN Addition 失败但空口无感知
现象:空口看终端行为正常,重配也收到了,但 NR 始终激活不了。基站侧 X2 抓包发现SN Addition Request发出后,gNB 回了SN Addition Request Reject。
原因:gNB 侧资源不足、PCI 冲突、或者传输层 SCTP 链路有问题。空口侧终端不知道 X2 面的失败,只会表现为 NR 接入超时。
解决:在 MeNB 和 gNB 两侧同时抓 X2 包,看SN Addition Request里的UE-X2AP-ID、E-RAB信息和 gNB 返回的 Cause 值。常见 Cause 是transport-resource-unavailable或radio-network-temporary-unavailable。如果是资源问题,检查 gNB 侧小区是否激活、基带资源是否够;如果是传输问题,检查 X2 SCTP 偶联状态。
4.5 安全模式配置不一致导致重配被拒
现象:终端收到RRCConnectionReconfiguration后没有回RRCConnectionReconfigurationComplete,而是回了RRCConnectionReconfigurationFailure或者直接触发重建。
原因:SCG 配置里携带的securityConfig和当前 LTE 侧的安全上下文不一致,或者keyToUse指示的密钥派生方式终端不支持。NSA 下 NR 的用户面加密密钥是从 LTE 的 KeNB 派生出来的,如果派生算法或参数不匹配,终端会拒绝配置。
解决:核对SecurityModeCommand里的securityConfigSMC和后续重配里的securityConfig。重点看keyToUse是keNB还是masterKey,以及nextHopChainingCount是否连续。如果终端不支持某种密钥派生,需要在能力上报里明确,网络侧也要相应调整。
5. 用一条 log 反推接入失败点:我的固定排查顺序
做 NSA 接入排查,我习惯按固定顺序过一遍 log,基本能在十分钟内定位到卡点。这套顺序不是理论推导,是踩坑踩出来的。
第一步,看RRCConnectionSetupComplete里有没有 EN-DC 能力。没有就直接查终端能力上报,别往下看。第二步,看第一条带measConfig的重配里有没有measObjectNR。没有就查网络侧为什么不下发,通常是能力或许可问题。第三步,看MeasurementReport里有没有measResultListNR。没有就查 SSB 频点和子载波间隔。第四步,看带 SCG 配置的重配里rach-ConfigCommon的参数。有异常就对比 gNB 侧配置。第五步,看 NR 侧 PRACH 和 RAR 的时序。超时就查功率和资源。第六步,如果空口都正常但业务不通,去 X2 抓包看 SN Addition 和用户面隧道建立。
这套顺序对应的检查表如下:
| 步骤 | 检查对象 | 关键字段 | 常见异常 |
|---|---|---|---|
| 1 | RRCConnectionSetupComplete | ue-CapabilityRAT-Container | 缺 supportedBandListEN-DC |
| 2 | RRCConnectionReconfiguration | measObjectNR | ssbFrequency 错 |
| 3 | MeasurementReport | measResultListNR | 为空或 RSRP 异常 |
| 4 | RRCConnectionReconfiguration | rach-ConfigCommon | 功率参数不匹配 |
| 5 | NR RACH | PRACH/RAR 时序 | 超时无响应 |
| 6 | X2 接口 | SN Addition Request | Reject 或超时 |
一个具体技巧:在 QXDM 里用Filter功能把NR_RRC和LTE_RRC分两个窗口看,时间轴对齐。这样 NR 的 PRACH 和 LTE 的重配完成消息能直接对上时间差。如果时间差超过 200ms,基本可以判定终端侧解析或射频切换有问题,而不是网络侧配置问题。
我自己的习惯是每次抓完 log 先存一份原始文件,再用脚本把关键字段提取成 CSV,方便对比不同次接入的差异。这个脚本不复杂,但能省掉大量重复翻 log 的时间。希望帮到你。
本文还有配套的精品资源,点击获取