聚焦规范:TS 38.331(RRC 配置 IE)、TS 38.213 §12(BWP 操作)、TS 38.212 §7.3.1(BWP Indicator 字段)、TS 38.133 §8.1.2(切换时延)、TS 38.321(MAC 计时器)
在 4G LTE 中,UE 一旦接入,就在整个载波带宽(如 20 MHz)上全程监听 PDCCH、做信道估计、维护 HARQ 缓冲。这套机制在 5G NR 里行不通了——NR 单载波带宽可达 100 MHz(FR1)甚至 400 MHz(FR2),如果让一个廉价的 RedCap 终端、或一个只在收微信的待机 UE 始终全带宽收发,射频与基带的空转功耗将难以接受。
3GPP 的解法是 BWP(Bandwidth Part,带宽部分):把一个宽载波在频域上切成最多 4 个连续 PRB(物理资源块)组成的"子带宽",但同一时刻每方向只有一个 BWP 处于激活态(Active BWP)。gNB 可以根据业务瞬时速率,让 UE 在"窄 BWP(省电、低开销)"与"宽 BWP(高吞吐)"之间快速切换。
BWP 的设计意图归纳为四点:
理解 BWP 切换,本质上是理解"网络如何让 UE 在毫秒级把激活带宽从 A 换到 B"的三条信令路径。本文逐一拆解。
切换的前提是网络已经通过 RRC 把若干 BWP 配置给 UE。承载配置的核心 IE 是 BWP-Downlink(TS 38.331 §6.3.2),它被装进 ServingCellConfig 的 downlinkBWP-ToAddModList 列表里。其层级结构如下:
flowchart TD
A["ServingCellConfig"] --> B["downlinkBWP-ToAddModList<br/>(最多4个DL BWP)"]
A --> C["firstActiveDownlinkBWP-Id<br/>(配置后首个激活)"]
A --> D["defaultDownlinkBWP-Id<br/>(计时器超时回退目标)"]
A --> E["bwp-InactivityTimer<br/>(非激活计时器)"]
B --> F["BWP-Downlink IE"]
F --> F1["bwp-Id(0~3)<br/>0保留给初始BWP"]
F --> F2["bwp-Common<br/>BWP公共参数"]
F --> F3["bwp-Dedicated<br/>PDSCH/PDCCH专用配置"]
F2 --> G["locationAndBandwidth<br/>RIV编码:频域位置+带宽"]
F2 --> H["subcarrierSpacing<br/>15/30/60/120 kHz"]
F2 --> I["cyclicPrefix<br/>normal/extended"]
这里有几个关键设计选择需要点明:
bwp-Id = 0 永远是初始 BWP(Initial BWP),由 SIB1 广播(BWP-DownlinkCommon 在 ServingCellConfigCommon 中),UE 一接入就停在这里。专用 BWP 用 1~3。firstActiveDownlinkBWP-Id 决定 RRC 配置(或切换后)UE 落在哪个 BWP,不配则用初始 BWP。defaultDownlinkBWP-Id 是 bwp-InactivityTimer 超时后的回退目标,不配则回退到初始 BWP——这是个常被忽略的"陷阱参数"。locationAndBandwidth 不是两个字段,而是一个 RIV 整数,把"频偏 RB_start"和"带宽长度 L"压缩编码在一起(见第四节)。| IE 字段 | 规范出处 | 取值/含义 | 工程意义 |
|---|---|---|---|
bwp-Id |
38.331 §6.3.2 | INTEGER(0..3),0=初始 | 切换时的寻址索引 |
locationAndBandwidth |
38.331 §6.3.2 | INTEGER(0..37949),RIV 编码 | 唯一确定 BWP 的频域位置与宽度 |
subcarrierSpacing |
38.211 | {15,30,60,120} kHz | 决定该 BWP 的 numerology、时隙长度 |
bwp-InactivityTimer |
38.331 §6.3.2 | ENUMERATED ms2…ms10240 | 无业务超时后回退默认 BWP |
firstActiveDownlinkBWP-Id |
38.331 | BWP-Id | RRC 配置/切换后首个激活 BWP |
defaultDownlinkBWP-Id |
38.331 | BWP-Id(缺省=0) | 计时器回退目标 |
TS 38.213 §12 明确定义了三种 BWP 激活/去激活触发方式,这是整个机制的核心。
gNB 在当前激活 BWP 的 PDCCH 搜索空间上下发 DCI format 1_1(下行调度)或 0_1(上行调度),其中携带 BWP Indicator 字段(TS 38.212 §7.3.1)。该字段比特数由网络配置的 DL BWP 数 N_BWP,RRC 决定:
字段值指示目标 BWP 的位置索引。当 UE 解出的 BWP Indicator 指向一个与当前激活 BWP 不同的 BWP,且伴随的调度生效时,UE 启动 BWP 切换,进入切换时延窗口,之后在新 BWP 上继续收发。
这是"无 RRC 信令、slot 级快速切换",是 5G 动态适配业务的利器。
MAC 实体(TS 38.321)维护一个 bwp-InactivityTimer。规则是:
defaultDownlinkBWP-Id(未配则回初始 BWP),完成"宽→窄"的省电回退。这就是"下载完一个大文件、UE 没业务了,几百毫秒后自动缩回窄 BWP 省电"的实现原理。
通过 RRC Reconfiguration(携带 reconfigurationWithSync 的切换命令,或修改 firstActiveDownlinkBWP-Id)直接改变激活 BWP。这条路径慢(RRC 级),用于:小区间切换、首次 BWP 配置、BWP 参数重配。
| 对比维度 | DCI 动态切换 | bwp-InactivityTimer 回退 | RRC 切换 |
|---|---|---|---|
| 规范章节 | 38.213 §12 / 38.212 §7.3.1 | 38.321 MAC / 38.213 §12 | 38.331 §5.3 |
| 信令层级 | L1(PDCCH/DCI) | L2(MAC 计时器) | L3(RRC) |
| 延迟 | slot 级(亚毫秒~毫秒) | 计时器周期 + 切换时延 | RRC 往返(数十毫秒) |
| 主要用途 | 业务带宽瞬时适配 | 空闲省电回退 | 切换/重配置 |
| 典型方向 | 窄→宽(有突发) | 宽→窄(无业务) | 任意 |
BWP 的频域位置不是用两个独立字段(RB_start、Length)传的,而是用 RIV(Resource Indicator Value) 压成一个整数 locationAndBandwidth(TS 38.214 §5.1.2.2 资源分配 Type 1 同款编码思想)。设载波可用带宽为 N_BWP 个 PRB,偏移 RB_start,长度 L_RB:
L_RB - 1 ≤ ⌊N_BWP / 2⌋:RIV = N_BWP·(L_RB - 1) + RB_startRIV = N_BWP·(N_BWP - L_RB + 1) + (N_BWP - 1 - RB_start)UE 收到 locationAndBandwidth 后反解出 RB_start 与 L_RB,结合 SCS 即确定 BWP 的绝对频域位置。这种编码避免了非法(越界/非连续)组合,且对齐 PUSCH/PDSCH 资源分配的语义,是规范内典型的"复用编码、降低信令位宽"设计。
下图呈现一次完整的 BWP 切换生命周期:UE 初始在窄 BWP#1,gNB 下发 DCI 切到宽 BWP#2 传大文件,业务结束后计时器超时回退默认 BWP。
sequenceDiagram
autonumber
participant UE
participant gNB
Note over UE,gNB: 初始状态:UE 激活 BWP#1(窄,20MHz, SCS=15k)
UE->>gNB: 在 BWP#1 监听 PDCCH(搜索空间 SS#1)
gNB->>UE: 检测到大业务到达(如视频/下载)
rect rgb(220,240,255)
Note over UE,gNB: 路径1:DCI 动态切换 窄→宽
gNB->>UE: DCI 1_1(BWP Indicator=2,PDSCH调度)
Note over UE: 解出 BWP Indicator ≠ 当前激活BWP<br/>触发切换,启动切换时延窗口
Note over UE: 切换时延内不要求收发(TS 38.133)
UE->>UE: 应用 BWP#2 配置(100MHz, SCS=30k, 新PDCCH/PDSCH)
UE->>gNB: 在 BWP#2 监听 PDCCH(搜索空间 SS#2)
gNB->>UE: PDSCH(大块数据,高 MCS)
UE-->>gNB: HARQ-ACK / 重启 bwp-InactivityTimer
Note over UE: 每次有效调度都重启计时器
end
Note over UE,gNB: 业务结束,无新调度
Note over UE: bwp-InactivityTimer 持续不被重启…
Note over UE: 计时器超时(如 100ms)
rect rgb(255,240,230)
Note over UE,gNB: 路径2:计时器回退 宽→窄(省电)
UE->>UE: MAC 触发切换至 defaultDownlinkBWP-Id
Note over UE: 未配 default 则回退初始 BWP#1
UE->>gNB: 回到 BWP#1 省电监听
end
从 UE 视角,每个 Serving Cell 的 DL BWP 活动状态可用下图刻画:
stateDiagram-v2
[*] --> 初始BWP_0: 接入/SIB1
初始BWP_0 --> 专用BWP_1: DCI/RRC 激活
专用BWP_1 --> 专用BWP_2: DCI BWP Indicator
专用BWP_2 --> 专用BWP_1: DCI BWP Indicator
专用BWP_1 --> 初始BWP_0: 计时器超时(default=0)
专用BWP_2 --> 初始BWP_0: 计时器超时(default=0)
初始BWP_0 --> 专用BWP_2: DCI/RRC 激活
note right of 初始BWP_0
bwp-Id=0,SIB1广播
省电/接入默认驻留
end note
note right of 专用BWP_2
宽带高吞吐
计时器持续重启
end note
切换不是瞬时的。TS 38.133 §8.1.2(Table 8.1.2.2-1)定义了 BWP 切换时延(BWP switching delay)——在这段时间内,UE 不被要求接收 PDCCH/PDSCH,也不要求发 PUSCH/PUCCH。该时延以"slot 数"计,随 SCS 变化(SCS 越大、slot 越短,绝对时延越小),并随 BWP 带宽跨度和是否跨 numerology 而不同。
| 项目 | 典型表现 | 工程影响 |
|---|---|---|
| 切换时延来源 | TS 38.133 §8.1.2 | 切换瞬间存在"静默 gap" |
| 同 numerology 切换 | 时延较小 | 适合 DCI 频繁动态切换 |
| 跨 numerology 切换(SCS 变) | 时延较大 | gNB 须预留更大调度间隔 |
| HARQ 进程 | BWP 切换后部分进程状态保留/重置需 gNB 协调 | 计时器/调度须避免 HARQ 错乱 |
| CSI 上报 | 各 BWP 独立 CSI-RS 配置 | 切到新 BWP 需重测才能精确 MCS |
正因为有静默 gap,DCI 触发的 BWP 切换里,那条触发切换的 DCI 本身携带的调度(PDSCH/PUSCH)通常指向切换之后——即"切完再发",而非"在旧 BWP 上发"。
BWP 配置主要在 RRC Reconfiguration / SIB1 消息(NGAP/NRPPA 之下的 RRC)。在 Wireshark(含 MAC/RLC/PDCCH 解析)或专用 L1 抓包工具中:
rrcSetupComplete 后的 DL RRC Message Transfer / RRC Reconfiguration 里展开 BWP-Downlink → 看 downlinkBWP-ToAddModList,确认配了几个 BWP、各自 locationAndBandwidth(反解 RIV 得频域位置)与 SCS。bwp-InactivityTimer 是否过短(如 ms20),导致宽 BWP 一停就被踢回窄 BWP,形成"乒乓切换",吞吐上不去。适当调大或优化触发。defaultDownlinkBWP-Id 没配或配成了宽 BWP,回退后仍是宽带,省电失效。searchSpaceId 与各 BWP 绑定不当,UE 在某 BWP 上根本不监听含 BWP Indicator 的 DCI,导致"切不回去"。Q1:DCI 触发的 BWP 切换,那条 DCI 里的 PDSCH 调度在哪生效? A:在切换完成后的新 BWP上生效。规范设计为"先切后发"——切换时延 gap 内不收发,gap 结束 UE 已在新 BWP,再接收该 PDSCH。gNB 调度器须把该 PDSCH 的时频资源安排在切换时延之后。
Q2:bwp-InactivityTimer 超时后一定回初始 BWP 吗?
A:不一定。超时回退目标是 defaultDownlinkBWP-Id;只有当该字段未配置时,才回退到初始 BWP(bwp-Id=0)。这是工程上省电效果的关键旋钮。
Q3:一个 Serving Cell 能同时激活多个 DL BWP 吗? A:不能。规范规定每方向(DL/UL)同一时刻只有一个激活 BWP(Active BWP)。多 BWP 是"备选车道",通过切换在它们之间单选。载波聚合(CA)下每个 Serving Cell 各自有一个激活 BWP。
Q4:BWP 切换和 4G 的载波带宽有什么本质区别? A:4G LTE UE 接入后全带宽收发、不支持运行中动态收缩带宽;NR 的 BWP 允许单载波内、运行中、毫秒级在多个带宽/numerology 间切换,实现了"按需带宽",是 5G 功耗与灵活性提升的核心空口机制之一。
Q5:BWP 与 SUL(补充上行)、CA(载波聚合)是什么关系? A:BWP 是单载波内的频域切片;SUL 是另一个上行载波、有自己独立的 BWP 配置;CA 的每个分量载波各自维护自己的 BWP 列表与激活 BWP。三者正交,可叠加使用。
本文由「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 等场景全覆盖。
