简介:面向5G网络优化与运维工程师,这份文档聚焦5G(NR)网络中系统消息SIB2的完整解析,重点解决SIB2字段含义模糊、小区重选参数配置困难的问题。内容基于3GPP 38.304等标准,系统说明SIB2在开放系统信息(OSI)中的定位,从逻辑信道BCCH、传输信道DL-SCH到物理信道PDSCH的传送链路,并逐项拆解小区重选公共信息、服务小区频率信息、同频及异系统重选参数。文档还从gNB到UE的信令方向、SI-RNTI扰码机制入手,帮助读者厘清SIB2消息的调度与传输流程,避免与LTE周期广播机制混淆。对于UE行为控制、SIB1调度关系以及周期性与按需发送机制也有清晰描述,适合需要深入掌握NR小区重选原理、开展网络优化和参数调优的工程师阅读。资源包为单个Word文档,大小291KB,全文结构层次分明,涵盖Q-RxLevMin、Q-QualMin、SIntraSearchP/SIntraSearchQ门限、SMTC测量配置、ssb-ToMeasure及t-ReselectionNR-SF等关键字段说明,可直接作为日常优化配置的参考笔记。目前已有393人学习浏览,对5G网络优化人员有较高的实用价值,可帮助快速建立SIB2整体认知,并落地到实际网络的测量门限配置与重选策略调整中。
1. 5G(NR)网络里最容易背锅的系统消息:SIB2 到底在管什么
SIB2 在 5G(NR)网络的系统消息里是个特殊角色:它不像 SIB1 那样有固定 160ms 周期,也不像 MIB 那样只有几十个比特,但它管着 UE 接入小区最关键的“第一脚油门”——随机接入。现网里很多接入失败、时延虚高、终端“挑小区”的疑难杂症,查到最后都绕回 SIB2 的字段配置。标题里这份关于 SIB2 及主要字段的文档,核心要回答的其实就是三件事:SIB2 在什么位置被广播、字段里每个参数管什么、配置错了会有什么后果。这篇整理会把从空口抓包到参数调优再到避坑的路径完整走一遍,适合刚接触 NR 信令的测试工程师,也适合被随机接入问题折腾过的网优同事对照自查。
2. 从空口把 SIB2 捞出来:调度链路、抓包过滤与周期核算
2.1 先理清读取链路:SIB2 不是独立定时广播的
LTE 时代很多人习惯在信令里直接按周期找 SIB2,但在 5G(NR)里这招行不通。SIB2 没有自己固定的广播周期,它由 SIB1 里的 schedulingInfoList 显式调度。UE 的开机读取链路是:先解 MIB 拿到 SFN 和 SSB 子载波偏移,再读 SIB1,从 SIB1 的调度信息里找到 SIB2 的时域窗口,最后才轮到 SIB2 出场。
这条链路里最关键的一环是 SIB1。SIB1 里每个 schedulingInfo 都携带了 si-Periodicity、si-BroadcastStatus 和 si-WindowLength,它们共同决定了一个 SIB 在什么时间窗内出现。SIB2 的调度周期通常配在 160ms 到 640ms 之间,视网管策略而定。如果 SIB1 里根本没列出针对 SIB2 的调度项,UE 就永远收不到 SIB2,后果是 UE 虽然能同步、能读系统消息,但无法发起随机接入。
理解这条链路的意义在于排障顺序:一旦发现 UE “读不到 SIB2”,先别急着怀疑覆盖,而是回头检查 SIB1 的 schedulingInfoList 里有没有 SIB2、周期配没配错。这是新手最容易踩的第一个坑,也是整条读取链路的逻辑起点。
2.2 抓 SIB2 的最小流程:从 SIB1 定位到空口解码
真机上抓 SIB2 通常用路测软件或基站侧日志导出 pcap,再用 Wireshark 的命令行工具 tshark 做过滤。这里给一套不依赖特定厂商工具的最小流程:先把 pcap 里的 SIB1 全部列出来,确认调度信息存在;再直接过滤 SIB2,把关键字段一次性打出来。
# 1. 先看空口 pcap 里有没有 SIB1,列出每条 SIB1 所在帧号 tshark -r nr_attach.pcap -Y "nr-rrc.sib1" -T fields \ -e frame.number -e nr-rrc.sib1.systemInformation # 2. 确认 SIB1 存在后,过滤 SIB2 并打印核心字段 tshark -r nr_attach.pcap -Y "nr-rrc.sib2" -T fields \ -e frame.number \ -e nr-rrc.sib2.rach_ConfigCommon \ -e nr-rrc.sib2.ue_TimersAndConstants这段命令的逻辑是先用-Y做显示过滤,再用-T fields只抽取需要的字段。第一步的目的是确认 SIB1 正常,第二步才是真正读 SIB2 内容。实际使用时有个常见问题:不同版本 Wireshark 的字段名不完全一样,如果第二条命令过滤结果为空,先执行tshark -G fields | grep sib2看看当前版本支持哪些字段名,再替换-e后面的参数。
还要注意抓包质量。SIB2 的传输块比 SIB1 大,弱场下容易分段或 CRC 错,pcap 里会出现“SIB2 存在但解不出完整内容”的情况。这时候先看nack或reassembly相关字段,确认是不是空口丢段,而不是协议栈解码的锅。
2.3 SIB2 调度周期:算一笔“接入慢”的时延账
排障时很多人把接入慢归咎于 PRACH 参数,却忽略了 SIB2 本身的调度周期。SIB2 的周期由 SIB1 里的 si-Periodicity 指定,可选范围从 sf5 到 sf1280。对初始接入的 UE 来说,它在空闲态醒来后必须先读完 SIB2 才能发起随机接入,而这个“读”是等广播窗的,平均等待时间约等于半个调度周期。
把账算清楚:如果 SIB2 周期从 160ms 改成 640ms,UE 平均就要多等 240ms。这个数字放在单用户身上不明显,但批量终端同时做业务唤醒时,网络侧统计到的接入时延整体抬高 200ms 以上,而且随机接入成功率、RRC 建立成功率通通都是绿的。我一般会把这个检查放在接入类问题排查的第一步:先看调度周期,再怀疑前导序列、功率参数。
顺带一提,Si-WindowLength 也有影响。窗口开得太短,UE 可能在跨调度周期时错过一次 SIB2 广播;窗口开得太长又浪费 PDCCH 资源。现网默认值通常够用,不建议为了“稳妥”盲目拉长。
3. SIB2 主要字段逐个拆:PRACH 资源、前导序列与 UE 定时器
3.1 rach-ConfigCommon:PRACH 频域位置、根序列与功率控制
SIB2 里分量最重的就是 rach-ConfigCommon,它本身是一个 CHOICE 结构,要么是 setup,要么是 release。release 意味着网络侧不广播随机接入公共配置,UE 拿到这个值后没有合法的前导配置可用,只能停在 RRC_IDLE,接入流程直接走不下去。所以在网管上见到 rach-ConfigCommon 被配成 release,基本等于这个小区“谢绝新用户”,一般只在特殊测试场景才会这么干。
setup 分支下的字段才是日常调参的主战场,常用字段整理如下:
| 字段 | 取值范围 | 单位/含义 | 现网常见值 |
|---|---|---|---|
| prach-ConfigurationIndex | 0~255 | PRACH 配置表索引,决定前导格式和时域密度 | 27、109 等 |
| msg1-FDM | one/two/four/eight | PRACH 在频域上的复用层数 | two、four |
| msg1-FrequencyStart | 0~maxNrofPhysicalResourceBlocks-1 | 第一个 RO 的频域起点,RB 粒度 | 视 BWP 规划 |
| zeroCorrelationZoneConfig | 0~15 | 循环移位配置,间接决定根序列能生成多少前导 | 9、12、13 |
| preambleReceivedTargetPower | -202~-60 dBm | gNB 期望的 PRACH 接收功率 | -104~-92 |
| preambleTransMax | n3~n64 | 前导最大发送次数 | n10、n20 |
| powerRampingStep | dB0/dB2/dB4/dB6 | 每次发送失败后的功率爬升步长 | dB2、dB4 |
注意 preambleReceivedTargetPower 是“接收目标功率”而不是发射功率。UE 会用它配合下行路损估计来算出初始发射功率,公式大致是:发射功率 = min(UE 最大功率, preambleReceivedTargetPower + 路损估计 + 前导格式相关偏移)。如果这个值配得太低,边缘 UE 的初始发射功率会偏小,前导到达 gNB 时低于检测门限;配得过高,近点 UE 一上来就大功率发射,既浪费终端电量,还可能对邻区上行造成干扰。
prach-ConfigurationIndex 是个需要查表的索引,对应 38.211 里的 PRACH 配置表。格式决定前导长度和时隙位置:Format 0/1/2 是长前导,适合广覆盖;Format A/B/C 是短前导,适合低时延和高容量。有的项目图省事直接套用索引,结果在 30kHz 子载波间隔下配出了一个不支持的格式组合,UE 侧解码失败但网管侧看着索引合法,这种“黑匣子”问题后面章节会专门说。
3.2 ssb-perRACH-Occasion 和 CB-PreamblesPerSSB:接入容量怎么算
这两个字段在 ASN.1 里是合在一起的 CHOICE:ssb-perRACH-Occasion 决定每个 SSB 波束映射到几个 RACH Occasion(RO),CB-PreamblesPerSSB 决定每个 SSB 在 RO 上分配多少个基于竞争的前导序列。它们共同决定小区在波束扫描周期内的随机接入容量。
举例说明:SSB 波束数是 8,ssb-perRACH-Occasion 配 one,意味着每个 SSB 对应一个 RO;如果 msg1-FDM 配 two,那么同一时刻有两个频分 RO,8 个波束就需要 16 个 RO 才能完成一轮完整映射。CB-PreamblesPerSSB 配 n16 时,每个 SSB 有 16 个竞争前导可用。并发接入用户一多,前导碰撞概率会明显上升,表现为 RAR 收到了但 msg3 冲突,随后 UE 退避重试。
这里有个容易忽略的容量关系:可用竞争前导数 = CB-PreamblesPerSSB × (每个 SSB 对应的 RO 数) × (波束数)。如果规划时把波束数从 8 改成 16,但 ssb-perRACH-Occasion 还是 one,RO 总数翻了一倍,占用的时频资源也随之翻倍。下行覆盖解决了,上行 PRACH 资源却可能和 PUCCH 打架,这是很多容量优化项目的隐性坑。
从覆盖角度看,ssb-perRACH-Occasion 配得过大并不一定是好事。UE 选择 SSB 后要在对应的 RO 上发前导,如果 RO 与 SSB 的映射关系超出了 UE 的波束扫描行为预期,某些远端 UE 可能在选定波束后找不到可用的 RO,表现为“明明 SSB 信号很好,却发不出前导”。这个字段的规划要和 SSB 波束数量联动,不能单独定。
3.3 ue-TimersAndConstants:五个定时器决定 UE 主动放弃的时机
SIB2 里除了 RACH 配置,还有一组 UE-TimersAndConstants,它广播的是 UE 公共侧定时器。这些定时器看似不起眼,实际决定了 UE 在异常情况下“等多久、试几次、何时放弃”。最常用的是这五个:
| 定时器 | 取值范围 | 启动场景 | 默认值参考 |
|---|---|---|---|
| t300 | ms100~ms6000 | 发送 RRCSetupRequest 后等待 RRCSetup | 1000ms |
| t301 | ms100~ms6000 | 发送 RRCReestablishmentRequest 后等待响应 | 1000ms |
| t310 | ms50~ms6000 | 物理层上报失步后等待恢复 | 1000ms |
| t311 | ms1000~ms16000 | 触发 RRC 重建立后等待小区选择 | 10000ms |
| t319 | ms100~ms6000 | 发送 RRCResumeRequest 后等待响应 | 2000ms |
t300 是最常被调的一个。它控制的是 UE 从发 RRCSetupRequest 到收到 RRCSetup 的最大等待时间。调小了,弱场 UE 在 RAR 已经收到但 RRCSetup 还没到的情况下就自行判负,RRC 建立成功率会掉;调大了,随机接入已经失败但 UE 还在空等,用户感知时延虚高,RRC 建立成功率却依旧好看。所以这个参数不是越大越好,要看失败率和时延两个指标的平衡。
t310 和 t311 的组合决定了无线链路失败之后 UE 多久走到 RRC 重建立。现网弱覆盖区域如果 t310 配得过大,UE 会较长时间待在失步状态,业务中断感知被拉长;配得过小,又可能因为一次瞬时衰落下探就触发重建立,造成不必要的信令风暴。SIB2 里广播的是公共值,如果小区按场景区分了不同业务类型,公共定时器往往会偏向“保守安全”,这时候就要靠 RRC 专用定时器来差异化,不过那属于后话。
4. 把字段变成配置:SIB2 参数换算与一个园区的调参实例
4.1 做配置前先会换算:前导格式、循环移位与 RO 频域起点
SIB2 里的字段不少是索引值,直接看数字看不出物理意义。动手配置前先掌握三组换算关系。第一组是 prach-ConfigurationIndex → 前导格式与时域位置:查 38.211 的 PRACH 配置表,索引后面对应的是 Format、时隙号和符号位置,这条链路决定了前导是长是短、密度是高是低。
第二组是 zeroCorrelationZoneConfig → Ncs 循环移位 → 每根根序列可生成的前导数。Ncs 越大,抗时延扩展能力越强,但每根根序列能生成的前导数越少。估算时可以用小区半径倒推需要的保护间隔,再查表选 Ncs。下面这个脚本只是辅助换算的思路,最终取值仍然以协议表为准:
# SIB2 参数换算示例:按小区半径估算需要的循环移位保护 # 仅用于前期规划,实际 Ncs 需查 38.211 表 6.3.3.1-5 cell_radius = 5000 # 目标覆盖半径,单位米 l_ra = 839 # 长前导格式常见根序列长度 delay_spread = 1.5 # 典型城区时延扩展,单位 us # 往返时延 + 时延扩展,得到需要的循环移位保护时间 guard_us = cell_radius * 2 / 300 + delay_spread print(f"需要的循环移位保护约 {guard_us:.2f} us") # 根据保护时间查表得到 Ncs 后,估算每根序列可用的前导数 n_cs = 119 # 示例值,实际查表得到 preambles_per_root = l_ra // n_cs print(f"每根序列可生成约 {preambles_per_root} 个前导")这段脚本的两步逻辑是:先用覆盖半径算出往返时延加时延扩展,得到对 Ncs 的需求;再用根序列长度除以 Ncs 估算前导容量。实际查表时要注意区分长前导和短前导,前者 L_RA=839,后者 L_RA=139 或 571,高移动性场景还要换另一张表。脚本里把 n_cs 写成示例值,是为了避免读者误把估算当协议值。
第三组是 msg1-FrequencyStart 与 RO 频域位置。msg1-FrequencyStart 单位是 RB,表示第一个 RO 相对 BWP 起点的偏移。RO 实际占用的 RB 数由前导格式决定:长前导约 6 个 RB,短前导在 30kHz 子载波间隔下约 12 个 RB,具体以 38.211 配置表为准。配置时要把“BWP 起点 + FrequencyStart + RO 带宽”画在一张资源格子上看,确保 RO 不超出 BWP、不与 PUCCH/SRS 冲突。
4.2 一个园区覆盖场景的 SIB2 配置清单
用一个虚构场景把字段串起来:某工厂园区,SA 组网,100MHz 载波,上行 BWP 20MHz@30kHz,SSB 波束 8 个,目标覆盖半径约 500 米,终端以手持扫码设备和 AGV 为主,用户密度中等。按这个前提,一套可落地的 SIB2 配置如下:
| 字段 | 规划值 | 规划理由 |
|---|---|---|
| prach-ConfigurationIndex | 27 | 短前导+中等时域密度,兼顾接入时延和导频开销 |
| msg1-FDM | two | 20MHz 上行 BWP 内做 2 层频分 RO,提升容量 |
| msg1-FrequencyStart | 30 | 把 RO 推到 BWP 中段,避开 PUCCH 公共资源 |
| zeroCorrelationZoneConfig | 12 | 覆盖 500m,预留足够循环移位保护 |
| preambleReceivedTargetPower | -100 dBm | 中等目标功率,边缘 UE 初始发射功率不至于过冲 |
| preambleTransMax | n10 | 允许 10 次尝试,兼顾弱场与信令开销 |
| powerRampingStep | dB2 | 平缓爬升,避免功控过冲导致干扰 |
| ssb-perRACH-Occasion | one | 8 波束与 RO 一一映射,简化规划与排障 |
| CB-PreamblesPerSSB | n16 | 每波束 16 个竞争前导,满足中等并发 |
| t300 | ms1000 | 维持默认,平衡建立失败率与等待时延 |
| t310/t311 | ms1000/ms10000 | 弱场可接受,暂不收紧 |
这套配置的核心思路是“先保证覆盖,再谈容量”。500 米覆盖半径对短前导来说余量足够,zeroCorrelationZoneConfig 选 12 是查表后留了 20% 以上的保护余量;msg1-FDM 选 two 而不是 four,是因为园区上行 BWP 只有 20MHz,RO 占太多会被 PUCCH 挤压。如果后续并发用户量上来,优先调 CB-PreamblesPerSSB 到 n24 或 n32,而不是直接翻倍 msg1-FDM,这样资源开销更可控。
4.3 配完怎么验证:网管配置与空口解码双向核对
参数下发后不能只看网管界面显示“配置成功”,要拿空口实测结果做交叉验证。常规做法是让测试终端锁频到该小区,读取 SIB2 解码结果,然后和规划表逐字段核对。手工核对容易眼花,建议写成脚本做批量比对:
# 校验 SIB2 规划值与空口解码值是否一致 config_plan = { "prach-ConfigurationIndex": 27, "msg1-FDM": "two", "preambleReceivedTargetPower": -100, "preambleTransMax": "n10", } decoded = { "prach-ConfigurationIndex": 27, "msg1-FDM": "two", "preambleReceivedTargetPower": -100, "preambleTransMax": "n10", } for key, plan_value in config_plan.items(): actual = decoded.get(key) status = "OK" if actual == plan_value else "MISMATCH" print(f"{key}: plan={plan_value} decoded={actual} [{status}]")这段脚本做的事很朴素:把规划表和解码结果放到两个字典里逐项比对,输出 OK 或 MISMATCH。高级一点的做法是把路测软件导出的一整批小区 SIB2 解码结果灌进来,自动筛出所有和规划不一致的小区。实际使用中,MISMATCH 不一定代表网管配错,也可能是无线环境导致解码字段被网络侧自动降级,比如 CA 或载波聚合场景下部分字段只在特定小区生效,这时候就要回到网管侧查实际生效值。
还有一类问题在验证阶段经常出现:测试终端收到了 SIB2,但解出来的字段数量和网管配置的完全对不上。这通常不是配置问题,而是测试终端没搜到最新版本的系统消息,UE 还在用旧 SIB2 缓存。处理办法是把终端重启或强制做一次小区重选,让它重新走完整读取流程。
5. SIB2 配置避坑:5 个让随机接入翻车的典型问题
5.1 UE 狂发前导,基站却看不到有效 PRACH:循环移位与小区半径不匹配
现象:测试终端在小区边缘反复发送 PRACH,preamble 发送次数快速增长,功率爬升到顶依然接不上;基站侧查看 PRACH 检测统计,有效检出的前导数接近为 0。
原因:zeroCorrelationZoneConfig 配得太小,对应的 Ncs 小于小区边缘往返时延加时延扩展的要求。UE 发出的前导循环移位超出 gNB 的检测窗,gNB 只看到噪声,检测不到有效相关峰。这个问题的隐蔽之处在于上行射频指标完全正常,发射功率、频谱都对,唯独检测端一片空白。
解决:按实际覆盖半径重查 38.211 循环移位表,把 zeroCorrelationZoneConfig 调大。如果调大后前导容量不够,优先改前导格式为长前导,而不是继续压缩循环移位。
5.2 RAR 一直等不到,RF 指标却正常:RO 落到了 BWP 外面
现象:UE 侧能看到 SIB2 解码正常,SSB RSRP 也很好,随机接入已经发出,但 gNB 就是不回 RAR。射频测试结论“发射正常”,问题被一层层向上抛。
原因:msg1-FrequencyStart 加上 RO 占用的 RB 数后,越过了上行 BWP 边界,或者 RO 和 PUCCH/SRS 资源重叠,被调度器静默丢弃。射频指标正常是因为 UE 确实发射了,问题发生在资源格子的“摆放位置”上。
解决:把 BWP 起点、msg1-FrequencyStart、PRACH 带宽三者放在同一张资源图上核对。短前导在 30kHz 子载波间隔下约占 12 个 RB,长前导约 6 个 RB,具体按格式查表。确保 RO 完整落在 BWP 内且不与 PUCCH 资源重叠。
5.3 同频邻区正常,这个小区却“挑手机”:SSB 波束与 RO 映射错位
现象:同一区域两个同频小区,邻区接入正常,本小区部分位置接入失败,且失败位置集中在某个方向范围。换个终端或换个位置,现象又不一样。
原因:ssb-perRACH-Occasion 配置与 SSB 波束数量不匹配。比如 SSB 波束是 8,但 ssb-perRACH-Occasion 配成 four,一部分波束没有独立 RO,多个 SSB 共享 RO 导致前导碰撞概率大增。UE 在某个波束上信号很好,却因为找不到可用 RO 而无法发起随机接入。
解决:统一规划 SSB 波束数和 ssb-perRACH-Occasion 的映射关系。排障时在路测日志里看 MAC 层的 RAR Attempt 次数,如果特定波束方向的尝试次数异常暴增,基本可以坐实映射错位。
5.4 t300 配得太大:成功率全绿,用户时延却悄悄变高
现象:RRC 建立成功率 99% 以上,但业务建立平均时延比邻区高 100~200ms,用户反馈“转圈时间长”。网管指标看不出明显异常。
原因:弱场 UE 的随机接入已经失败但 t300 还没超时,UE 在等待 RRCSetup 的窗口里空等,直到 t300 超时才触发重建立或重新发起。t300 配得越保守,这种“空等”浪费的时间越长。
解决:把 t300 从 1000ms 收窄到 600ms 左右,观察 RRC 建立失败率是否明显抬升。如果失败率平稳,说明等待窗口过大,可以继续收窄;如果失败率抬升,说明部分 UE 确实需要更长等待,回退一档。这个参数调的是“失败率与时延的平衡”,不是越大越好。
5.5 接入慢的锅被甩给 PRACH:其实是 SIB2 周期被调成 640ms
现象:新终端首次接入整体时延偏高 200ms 以上,排查组第一时间检查 PRACH 功率、前导格式、定时器,全都没问题,最后才有人想起看 SIB2 调度周期。
原因:SIB1 里把 SIB2 的调度周期配成了 640ms。UE 从空闲态醒来后需要先读 SIB2 才能发起随机接入,平均等待时间就是半个周期,320ms 的额外时延就是这么来的。这类问题在批量终端唤醒的场景下会被放大到“整体变慢”的程度。
解决:把 SIB2 调度周期改回 160ms,或至少不高于 320ms。这条经验后来成了我的固定流程:任何“接入慢”的问题,第一步永远先查 SIB2 调度周期,而不是 PRACH 参数。
6. 两命令+一张清单:把 SIB2 排查变成固定动作
SIB2 的排查有一张固定清单可以反复用:第一行,SIB1 里 SIB2 的调度周期是否 ≤160ms;第二行,rach-ConfigCommon 是否为 setup;第三行,RO 是否完整落在 BWP 内且不重叠;第四行,zeroCorrelationZoneConfig 是否覆盖小区边缘时延;第五行,SSB 波束数与 ssb-perRACH-Occasion 是否匹配;第六行,preambleReceivedTargetPower 加路损后是否超出 UE 最大发射功率。这六项按序过一遍,能过滤掉绝大多数 SIB2 引发的接入类问题。
配套两条常用命令。一条是抓包后快速看 SIB2 核心字段,另一条是统计 SIB2 调度周期分布:
# 命令一:过滤 SIB2 并输出 RACH 配置与定时器字段 tshark -r nr_attach.pcap -Y "nr-rrc.sib2" -T fields \ -e frame.number \ -e nr-rrc.sib2.rach_ConfigCommon \ -e nr-rrc.sib2.ue_TimersAndConstants # 命令二:从 SIB1 里统计 SIB2 的调度周期出现次数 tshark -r nr_attach.pcap -Y "nr-rrc.sib1" -T fields \ -e nr-rrc.sib1.schedulingInfo | grep -i "sib2" | sort | uniq -c第一条命令直接输出 SIB2 的 RACH 配置和定时器,用于核对配置;第二条命令统计 SIB1 调度信息里 SIB2 相关条目,快速判断周期是否被改大。两条命令配合前面那张清单,基本能覆盖从“UE 读不到 SIB2”到“UE 读到了但接不上”的完整链路。
我自己的习惯是每次处理完一个 SIB2 相关故障,就把根因记到清单的对应行上。时间长了会发现,绝大多数问题不是某个参数“配错数值”,而是几个参数之间的联动关系没对齐——调度周期和接入时延联动,循环移位和覆盖半径联动,波束数和 RO 映射联动。SIB2 不像高层协议那么复杂,但它把“接入”这个动作的所有前置条件都压缩到了一张广播消息里,牵一发动全身。曾有一次我在 PRACH 功率参数上耗了一整天,最后发现只是 SIB2 周期被调大,从那时起这张清单的第一行就永远是调度周期。希望帮到你。
本文还有配套的精品资源,点击获取