首页 › ran › BWP带宽部分切换机制拆解

5G NR BWP 带宽部分切换机制全链拆解:DCI/Timer/RRC 三路切换的协议级深解

一、为什么 NR 必须引入 BWP:带宽自适应的设计原动力

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)"。

带宽自适应带来三重收益:

  1. 功耗优化:无数据时切回窄带 BWP,UE 的射频前端、PLL 锁定窗口、PDCCH 搜索空间都缩小,待机功耗显著降低;
  2. 多 numerology 共存:同一载波上不同 BWP 可配置不同 SCS(如 eMBB 用 30 kHz,URLLC 用 60 kHz),让低时延与高吞吐在同一载波上分时复用;
  3. 前向兼容:未来引入新业务/新参数集时,只需新增一个 BWP,UE 不感知的带宽区域可静默预留。

BWP 的全部切换行为,由 TS 38.213(控制信道物理层过程)第 12 章统一定义触发与定时规则,由 TS 38.212 第 7.3.1 节定义 DCI 中的 BWP 指示字段编码,由 TS 38.331 定义 RRC 配置 IE 与状态机。本文沿着"配置 → 触发 → 执行 → 副作用"四段链路逐层拆解。

二、BWP 的四类身份:Initial / Dedicated / Default / Dormant

理解切换前,必须先理清 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 突然掉到很窄的带宽"时是第一嫌疑。

三、RRC 配置 IE 全景:BWP 是怎么"造"出来的

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 等于整体换一套物理层资源配置。这是理解后面"切换副作用"的关键。

四、核心机制:BWP 切换的三条触发路径

TS 38.213 第 12 章明确定义了三条互斥又互补的 BWP 切换路径。下面逐一拆解其信令时序与 IE 级细节。

路径一:DCI 触发(毫秒级,最常用)

这是日常业务中最频繁的切换方式。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:

关键约束:回退 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 触发)两个独立时长,使运营商能精细控制"主业务保活窗口"与"轻量保活窗口"。

路径三:RRC 触发(切换/重配场景)

当 gNB 下发 RRCReconfiguration 修改 downlinkBWP-ToAddModList 或显式设置 firstActiveDownlinkBWP-Id 时,BWP 切换随 RRC 重配完成而生效。该路径时延最高(数十 ms 级),但能力最强:可以新增/删除 BWP、改变 SCS、改变带宽——这些是 DCI/Timer 都做不到的。

典型应用场景:

  1. 切换(HO)准备:目标小区的 BWP 配置不同,需先 RRC 下发目标 BWP 列表与 firstActiveDownlinkBWP-Id;
  2. CA 激活 SCell:RRCReconfiguration 配置 SCell 的 BWP,SCell 激活时首个激活 BWP 由 firstActiveDownlinkBWP-Id 决定;
  3. 跨 numerology 业务切换:从 30 kHz eMBB BWP 切到 60 kHz URLLC BWP,必须走 RRC(除非 UE 支持 DCI 跨 numerology)。

五、BWP 状态机:Active / Inactive / Dormant

把三条路径叠加,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。

六、切换时延与中断窗:TS 38.133 的硬约束

切换不是瞬时的。从 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 规定了若干副作用,这些是协议开发与排错的高发区:

  1. Configured Grant(CG)失效:上行配置授权 Type 1/2 是 BWP 专属的。切换到新 BWP 后,旧 BWP 的 CG 配置被释放,需新 BWP 重新配置(configuredGrantConfig)。
  2. SPS(半持续调度)失效:下行 SPS 同理,BWP 切换后 SPS 资源清零。
  3. PUCCH 资源重配:PUCCH 格式与资源块是 BWP 专属的。若新 BWP 没配 PUCCH,UE 将无法反馈 HARQ-ACK——这是配置类故障的头号根因。
  4. SRS 资源失效:SRS 在 UL BWP 上配置,跨 BWP 后需重新激活 SRS resource set。
  5. CSI-RS / CSI 上报中断:周期 CSI-RS 是 BWP 专属的,切换后短期内无 CSI 上报,gNB 可能退化为宽波束或开环调度。
  6. TA(Timing Advance)影响:若切换改变了 UL BWP 的 numerology,可能触发新的 TA 获取(尤其在 TDD 跨 SCS 时)。
  7. HARQ 进程:进程号是跨 BWP 共享的,但正在进行的传输会被中断窗打断,需 NDI/重传处理。

八、抓包识别与实战排错

在 Wireshark/TShark 中,BWP 切换的痕迹分布在三层:

用 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)。

参考来源

  1. 3GPP TS 38.213 — NR; Physical layer procedures for control — 第 12 章 BWP 操作、切换触发与定时规则
  2. 3GPP TS 38.331 — NR; Radio Resource Control (RRC) — ServingCellConfig、BWP-Downlink、bwp-InactivityTimer、defaultDownlinkBWP-Id IE 定义
  3. ShareTechnNote — 5G Carrier Bandwidth Part — BWP 切换三种触发方式与 DCI 字段解析
  4. ShareTechnNote — 5G DCI Formats — DCI 1_1/0_1 与回退 DCI 字段对比
  5. 3GPP TS 38.306 — NR; UE radio access capabilities — bwp-SwitchingDelay、bwp-WithoutRestriction UE 能力定义
  6. Techplayon — 5G NR BWP Types and BWP Operations — BWP 类型与 DCI/Timer/RRC 操作对比

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入