LTE 时代,UE 的射频工作带宽必须与小区的最大载波带宽对齐——一个 20 MHz 的小区里,哪怕 UE 只收一个 1.4 MHz 的窄业务,它仍要全带宽监听 PDCCH、做全带宽信道估计,功耗被"带宽天花板"锁死。5G NR 的载波带宽最高可达 400 MHz(FR1 上限 100 MHz,FR2 可达 400 MHz),如果延续 LTE 的"全带宽对齐"思路,UE 的射频功耗、ADC/DAC 采样率、基带处理负荷都将不可接受。
BWP(Bandwidth Part,带宽部分)正是为此而生。它由 TS 38.211 在物理层定义为"载波带宽内一段连续的物理资源块(PRB)集合",由子载波间隔(SCS)、循环前缀(CP)、频域起始位置与带宽四个要素唯一确定。一个 UE 在一个服务小区上最多可配置 4 个下行 BWP + 4 个上行 BWP,但同一时刻仅有一个下行 BWP 和一个上行 BWP 处于激活态(Active)。gNB 可以让 UE 在"宽带高吞吐 BWP"和"窄带低功耗 BWP"之间按业务节奏来回切换——这就是 NR 的"带宽自适应(Bandwidth Adaptation)"。
带宽自适应带来三重收益:
BWP 的全部切换行为,由 TS 38.213(控制信道物理层过程)第 12 章统一定义触发与定时规则,由 TS 38.212 第 7.3.1 节定义 DCI 中的 BWP 指示字段编码,由 TS 38.331 定义 RRC 配置 IE 与状态机。本文沿着"配置 → 触发 → 执行 → 副作用"四段链路逐层拆解。
理解切换前,必须先理清 BWP 的"身份语义",这是 TS 38.331 第 5.x 节反复强调的概念:
| BWP 类型 | 配置来源 | 用途 | 是否可被切换激活 |
|---|---|---|---|
| Initial BWP(初始 BWP,固定 bwp-Id=0) | MIB + SIB1(BWP-DownlinkCommon/BWP-UplinkCommon 在 ServingCellConfigCommon 中) |
初始接入、随机接入、SIB 接收 | 是 |
| Dedicated BWP(专用 BWP,bwp-Id=1/2/3) | RRCReconfiguration 专用信令(downlinkBWP-ToAddModList) |
接入后的业务数据传输 | 是 |
| Default BWP(默认 BWP) | defaultDownlinkBWP-Id 指向某个已配置 BWP;未配置时退化为 Initial BWP |
非激活定时器超时后的回落目标 | 是(作为回落终点) |
| Dormant BWP(休眠 BWP,R17 引入) | 专用信令配置的下行 BWP | CA 场景下 SCell 休眠,仅做测量不收 PDCCH/PDSCH | 经 MAC CE 切换 |
一个关键易错点:Default BWP 不是一个独立配置的带宽,而是一个"指针"——defaultDownlinkBWP-Id 指向 downlinkBWP-ToAddModList 中已存在的某个 BWP(通常是带宽最窄、SCS 最小的那个);若该字段缺失,则 Initial BWP(bwp-Id=0)自动充当 Default BWP。这一点在抓包排查"为什么 UE 突然掉到很窄的带宽"时是第一嫌疑。
BWP 的全部属性由 ServingCellConfig(TS 38.331 6.3.2 节)承载。其核心字段构成如下:
graph TD
A["ServingCellConfig (TS 38.331)"] --> B["downlinkBWP-ToAddModList<br/>最多4个 BWP-Downlink"]
A --> C["uplinkConfig → bwp-ToAddModList<br/>最多4个 BWP-Uplink"]
A --> D["firstActiveDownlinkBWP-Id<br/>RRC生效后的首个激活BWP"]
A --> E["firstActiveUplinkBWP-Id"]
A --> F["defaultDownlinkBWP-Id<br/>回落指针(可缺省)"]
A --> G["bwp-InactivityTimer<br/>非激活定时器(ms,可缺省)"]
A --> H["bwp-InactivityTimer field1/field2<br/>R16:区分PDCCH/非PDCCH触发"]
B --> B1["BWP-Downlink"]
B1 --> B2["bwp-Id (0..4)"]
B1 --> B3["bwp-Common: BWP-DownlinkCommon<br/>genericParameters + pdcch-ConfigCommon + pdsch-ConfigCommon"]
B1 --> B4["bwp-Dedicated: BWP-DownlinkDedicated<br/>pdcch-Config + pdsch-Config + csi-RS-Config + sps-Config"]
B3 --> B5["genericParameters<br/>locationAndBandwidth(0..37949)<br/>subcarrierSpacing / cyclicPrefix"]
其中 locationAndBandwidth 是 BWP 的频域 DNA,它用一个 0~37949 的整数编码(RIV,Resource Indication Value,TS 38.214 资源分配 Type 1 的同一编码)同时表达"起始 RB"和"连续 RB 数"。换算公式为:
下表汇总了 BWP 相关的关键 RRC IE 参数及其工程含义:
| RRC 参数 | 所在 IE | 取值/范围 | 工程含义与影响 |
|---|---|---|---|
bwp-Id |
BWP-Downlink |
0..4 | BWP 唯一标识;0 固定为 Initial BWP |
locationAndBandwidth |
BWP→genericParameters |
0..37949 | RIV 编码的频域位置+带宽 |
subcarrierSpacing |
BWP |
15/30/60/120 kHz | 决定 slot 长度、PDCCH 盲检密度 |
cyclicPrefix |
BWP |
normal/extended | 扩展 CP 用于大时延扩展场景 |
downlinkBWP-ToAddModList |
ServingCellConfig |
≤4 项 | UE 可配置的下行 BWP 池 |
firstActiveDownlinkBWP-Id |
ServingCellConfig |
0..4 | RRC 生效瞬间激活哪个 BWP |
defaultDownlinkBWP-Id |
ServingCellConfig |
0..4(可缺省) | 定时器超时回落目标;缺省=Initial BWP |
bwp-InactivityTimer |
ServingCellConfig |
ms(可缺省) | 不配则不启用 Timer 切换 |
pdcch-Config |
BWP-DownlinkDedicated |
— | 该 BWP 专属的 CORESET/SearchSpace |
csi-RS-Config |
BWP-DownlinkDedicated |
— | 该 BWP 专属的 CSI 测量资源 |
注意一个工程细节:PDCCH、PDSCH、CSI-RS、PUCCH、SRS 的配置都是"BWP 专属"的——切换 BWP 等于整体换一套物理层资源配置。这是理解后面"切换副作用"的关键。
TS 38.213 第 12 章明确定义了三条互斥又互补的 BWP 切换路径。下面逐一拆解其信令时序与 IE 级细节。
这是日常业务中最频繁的切换方式。gNB 通过在 PDCCH 上发送 DCI format 1_1(下行调度)或 DCI format 0_1(上行调度),其中的 Bandwidth part indicator(BWPI)字段直接指示目标 BWP。
sequenceDiagram
participant gNB
participant UE
Note over UE: 当前 Active DL BWP = BWP#1 (宽带,30kHz,100MHz)
gNB->>UE: PDCCH: DCI 1_1, BWPI=2<br/>(C-RNTI 加扰CRC)
Note over UE: 解码BWPI=2 ≠ 当前BWP#1<br/>判定: 需切换
Note over UE: 启动 BWP Switching Delay<br/>(约1ms中断窗, TS 38.133)
Note over UE, gNB: 中断期内: 不收PDSCH/CSI-RS<br/>不发PUSCH/PUCCH/SRS, 不检PDCCH
Note over UE: 切换完成, 激活 BWP#2 (窄带,15kHz,20MHz)
Note over UE: 应用 BWP#2 的 pdcch-Config<br/>pdsch-Config, csi-RS-Config...
UE->>gNB: 在 BWP#2 上发 HARQ-ACK<br/>反馈刚才DCI调度的PDSCH
gNB->>UE: 在 BWP#2 上调度后续数据
BWPI 字段的位宽与编码(TS 38.212 第 7.3.1 节)是这条路径的核心 IE:
bwp-ToAddModList 中第 $i$ 个 BWP(按 bwp-Id 升序排列后的序号)。关键约束:回退 DCI format 0_0 / 1_0 不携带 BWPI 字段,不能触发 BWP 切换。这意味着当 gNB 想在异 BWP 上做可靠性回退调度(如用 1_0 重传)时,无法顺便切换 BWP——这是协议层面的有意设计,保证回退调度的极简性。
此外,UE 能力字段 bwp-WithoutRestriction / bwp-SameNumerology(TS 38.306)决定 UE 是否支持"跨 numerology 的 DCI 切换"。若 UE 仅上报 bwp-SameNumerology,则 gNB 不能用 DCI 在不同 SCS 的 BWP 间切换,必须走 RRC 路径。
UE 解码 DCI 后的决策逻辑如下:
flowchart TD
S["UE 在 Active BWP 上检测到 DCI 1_1 / 0_1"] --> T{"DCI 是否含 BWPI 字段?<br/>(BWP数>1)"}
T -- 否 --> N["不切换, 按当前 BWP 处理调度"]
T -- 是 --> C{"BWPI 指向的 BWP<br/>== 当前 Active BWP?"}
C -- 是 --> N
C -- 否 --> D{"UE 是否支持 DCI 切换?<br/>(bwp-WithoutRestriction等)"}
D -- 否 --> N
D -- 是 --> E["启动 BWP Switching Delay<br/>中断收发"]
E --> F["激活目标 BWP<br/>应用其全套物理层配置"]
F --> G["重启 bwp-InactivityTimer"]
当 UE 配置了 bwp-InactivityTimer(TS 38.331,单位 ms),且在一段时间内没有收到"指向当前 BWP 的 DCI 1_1/0_1",定时器超时后 UE 自动切换回 Default BWP。这是终端省电的核心机制。
sequenceDiagram
participant gNB
participant UE
Note over UE: Active = BWP#1 (宽带), bwp-InactivityTimer = 100ms
Note over UE: 每次收到指向BWP#1的DCI 1_1/0_1<br/>→ 重启定时器(回100ms)
Note over UE: 业务结束, 无DCI下发...
Note over UE, gNB: ~100ms 静默期
Note over UE: bwp-InactivityTimer 超时
Note over UE: 查询 defaultDownlinkBWP-Id
alt 已配置 defaultDownlinkBWP-Id
Note over UE: 切换至该 Default BWP (如窄带BWP#0)
else 未配置
Note over UE: 退化为切换至 Initial BWP (bwp-Id=0)
end
Note over UE: 在窄带 BWP 上低功耗监听 PDCCH
Note over UE: 后续若有大流量, gNB再用 DCI 切回宽带 BWP
重启与不重启的精微规则(TS 38.213)是排错高频考点:定时器仅在检测到"Bandwidth part indicator 指向当前 Active BWP 的 DCI 0_1/1_1"时重启,或检测到 DCI 0_0/1_0、以及 RAR 等也会重启。而 DCI 0_2/1_2(R15 后引入的小尺寸 DCI)默认不重启——除非 R16 的 bwp-InactivityTimer field1/field2 区分配置。这导致一个真实故障现象:用户偶尔感觉到"卡顿后掉到窄带",根因往往是 field1/field2 配置不当,使 0_2 调度的下行数据未能续上定时器。
R16 进一步把 bwp-InactivityTimer 拆成 field1(DCI 0_1/1_1 等触发)与 field2(其他 DCI 触发)两个独立时长,使运营商能精细控制"主业务保活窗口"与"轻量保活窗口"。
当 gNB 下发 RRCReconfiguration 修改 downlinkBWP-ToAddModList 或显式设置 firstActiveDownlinkBWP-Id 时,BWP 切换随 RRC 重配完成而生效。该路径时延最高(数十 ms 级),但能力最强:可以新增/删除 BWP、改变 SCS、改变带宽——这些是 DCI/Timer 都做不到的。
典型应用场景:
firstActiveDownlinkBWP-Id;RRCReconfiguration 配置 SCell 的 BWP,SCell 激活时首个激活 BWP 由 firstActiveDownlinkBWP-Id 决定;把三条路径叠加,UE 侧每个 BWP 的状态流转可归纳为下图(含 R17 Dormant 状态):
stateDiagram-v2
[*] --> Initial_BWP: 初始接入 (SIB1 配置)
Initial_BWP --> Dedicated_BWP1: RRC 配置专用BWP<br/>firstActiveDownlinkBWP-Id
Dedicated_BWP1 --> Dedicated_BWP2: DCI BWPI 切换<br/>(同numerology)
Dedicated_BWP1 --> Default_BWP: bwp-InactivityTimer 超时
Dedicated_BWP2 --> Default_BWP: bwp-InactivityTimer 超时
Default_BWP --> Dedicated_BWP1: DCI BWPI 指示宽带BWP
Default_BWP --> Dedicated_BWP2: DCI BWPI 指示
Dedicated_BWP1 --> Dormant_BWP: R17 MAC CE<br/>(仅SCell休眠)
Dormant_BWP --> Dedicated_BWP1: MAC CE 激活
Dormant_BWP: 仅做RSRP/CSI测量<br/>不收PDCCH/PDSCH
Dedicated_BWP1 --> Initial_BWP: 连接重建/回落
R17 引入的 Dormant BWP 是为 CA(载波聚合)省电设计的:辅小区(SCell)无数据时切换到 Dormant BWP,UE 仅维持测量、关闭 PDCCH/PDSCH 接收,比直接去激活 SCell(Deactivation)恢复更快。Dormant BWP 经 SCell Activation/Deactivation MAC CE(TS 38.321)增强版切换,而非 DCI BWPI。
切换不是瞬时的。从 UE 收到触发指令到在新 BWP 上恢复收发,存在一个 BWP Switching Delay(切换中断窗),期间 UE 不收 PDSCH/CSI-RS、不发 PUSCH/PUCCH/SRS、不检 PDCCH。其值由 TS 38.133(射频一致性)第 8.1.2 节约束,受 UE 能力 bwp-SwitchingDelay(TS 38.306,枚举 type1/type2)控制:
| 切换场景 | 时延类型 | 典型中断(15/30 kHz) | 含义 |
|---|---|---|---|
| 同 SCS、同方向 | type1 | ~0.5 ms(1 slot 级) | 最快,PLL 仅微调,RF 重配置轻 |
| 不同 SCS | type2 | ~1 ms(2 slot 级) | 较慢,需重新锁定时序、切换基带时钟 |
| 不同带宽大幅变化 | type2 | 1 ms+ | RF 滤波器/AGC 重新收敛 |
| 三路切换对比 | DCI 切换 | Timer 切换 | RRC 切换 |
|---|---|---|---|
| 触发信令 | DCI 1_1/0_1(BWPI 字段) | 定时器超时(本地事件) | RRCReconfiguration |
| 典型时延 | ~1 ms(含中断窗) | 中断窗+回落,瞬时 | 数十 ms(RRC 完成) |
| 能否改 SCS | 受 UE 能力限制 | 不能(回落到固定 Default) | 能 |
| 能否改带宽位置 | 能(在同 numerology 内) | 不能 | 能 |
| 能否新增/删 BWP | 不能 | 不能 | 能 |
| 主要用途 | 实时带宽自适应 | 省电回落 | HO/重配/业务模式切换 |
| 抓包识别点 | PDCCH DCI 1_1 含 BWPI | 无下行信令,UE 自发 | RRC Reconfiguration |
工程上,这个中断窗就是用户感知"切档瞬间略卡"的物理来源。运营商在配置 bwp-InactivityTimer 时,要在"省电收益"与"频繁切换造成的 1 ms 抖动累积"间权衡——通常小区级定时器设 20~200 ms。
切换 BWP 不只是换个频段,它连带改变一整套物理层资源。TS 38.213/38.321 规定了若干副作用,这些是协议开发与排错的高发区:
configuredGrantConfig)。在 Wireshark/TShark 中,BWP 切换的痕迹分布在三层:
RRC Reconfiguration 消息里的 BWP-Downlink、downlinkBWP-ToAddModList、firstActiveDownlinkBWP-Id、defaultDownlinkBWP-Id、bwp-InactivityTimer 是配置识别点。用 pcap-analyzer 思路,常见排错路径如下:
| 现象 | 检查点 | 可能根因 |
|---|---|---|
| UE 频繁掉到窄带,业务卡顿 | bwp-InactivityTimer 是否过短;R16 field1/field2 是否区分 |
定时器未按 0_2 调度续期 |
| 切换后无 HARQ-ACK | 新 BWP 是否配 pucch-Config |
PUCCH 资源缺失(配置类 bug) |
| DCI 含 BWPI 但 UE 不切 | UE 能力 bwp-WithoutRestriction;是否跨 numerology |
UE 不支持该切换类型 |
| 切换后 UL 无法调度 | 新 UL BWP 是否配 SRS / CG | SRS/CG 资源未随 BWP 迁移 |
| HO 后掉话 | firstActiveDownlinkBWP-Id 是否指向已配置 BWP |
目标小区 BWP 列表未下发 |
| UE 待机功耗高 | 是否启用 bwp-InactivityTimer;Default BWP 是否够窄 |
未回落到窄带 BWP |
厂商差异主要在三处:一是 Default BWP 的默认选择策略(有的厂商默认指向最窄专用 BWP,有的指向 Initial);二是 bwp-InactivityTimer 是否启用及默认值(省电派设短,性能派设长或不启用);三是 DCI 1_2/0_2 与定时器的交互策略。跨厂商互通(尤其 NSA 场景下终端与异厂商 gNB 配合)时,这些差异是互操作问题的高发区。
Q1: DCI format 1_0 / 0_0 为什么不能切换 BWP? A: 回退 DCI 设计目标是"极简与高可靠重传",其字段集被刻意最小化,不携带 BWPI。这保证即使 UE 处于异常状态(如刚发生 BWP 切换失败),gNB 仍能用 1_0/0_0 在当前 BWP 上稳定重传,避免因 BWP 切换逻辑加重故障。需要切换 BWP 时必须用 1_1/0_1。
Q2: defaultDownlinkBWP-Id 没配置时会怎样?
A: TS 38.331 规定,未配置时 Default BWP 退化为 Initial BWP(bwp-Id=0)。bwp-InactivityTimer 超时后 UE 会切回 Initial BWP。这意味着若 Initial BWP 带宽很窄(典型 20 MHz 以下),超时回落后吞吐骤降——很多"用户长时间无操作后首包慢"现象的根因正在于此。
Q3: 一个小区能配多个不同 SCS 的 BWP 吗?切换它们有限制吗?
A: 能。NR 允许同载波上不同 BWP 配不同 SCS(如 BWP#1 用 30 kHz,BWP#2 用 15 kHz)。但能否用 DCI 在它们之间切换,取决于 UE 能力:仅上报 bwp-SameNumerology 的 UE 不能用 DCI 跨 numerology 切换,必须走 RRC;上报 bwp-WithoutRestriction 的 UE 则可任意 DCI 切换。
Q4: BWP 切换与 CA(载波聚合)的 SCell 激活/去激活是什么关系? A: 它们是两个层面。SCell 激活/去激活是"开关整个辅载波",而 BWP 切换是"在同一载波上换一段带宽"。R17 引入 Dormant BWP 后,SCell 可以处于"激活但 BWP=Dormant"的中间态——比去激活省电但比激活恢复快,是 CA 省电的精细化演进。Dormant BWP 经 MAC CE 切换,不走 DCI BWPI。
Q5: 抓包时如何快速判断一次 BWP 切换是哪种触发方式?
A: 三看:①若切换前后能看到带 BWPI 的 DCI 1_1/0_1,且 BWPI 值变化→DCI 触发;②若无任何下行信令,UE 突然回到 Default/Initial BWP,且时间间隔约等于 bwp-InactivityTimer→Timer 触发;③若切换前后有 RRC Reconfiguration 且消息体含 BWP 相关 IE→RRC 触发。三种触发在中断窗长度上也有差异:DCI/Timer 切换中断约 1 ms,RRC 切换要等 RRC 处理完成(数十 ms)。
ServingCellConfig、BWP-Downlink、bwp-InactivityTimer、defaultDownlinkBWP-Id IE 定义bwp-SwitchingDelay、bwp-WithoutRestriction UE 能力定义本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
