在5G NR的接入网设计中,带宽部分(Bandwidth Part, BWP) 是一项贯穿物理层(TS 38.211/38.213/38.214)、MAC层(TS 38.321)和RRC层(TS 38.331)的核心机制。它解决的并不是单一问题,而是同时承担三个目标:让UE不必始终监听整个载波带宽(省电)、让网络按需适配UE的能力与业务速率(灵活)、以及前向兼容不同带宽能力的终端(共存)。本文聚焦 TS 38.213 Section 12 所定义的 BWP激活与切换的四种触发方式,并深入拆解其中最容易被忽视、却在真实网络中主导省电效果的 bwp-InactivityTimer(BWP非激活定时器) 的运行逻辑,结合 TS 38.331 的 RRC 配置 IE 与 TS 38.133 的切换时延要求,给出从抓包识别到故障定位的完整链路。
LTE时代,UE一旦驻留一个载波,就必须在整个载波带宽(最高20 MHz)上持续监听PDCCH,即便没有任何数据调度,射频前端和中频处理也要按全带宽工作。这在5G面对单载波高达 100 MHz(sub-6GHz)甚至 400 MHz(mmWave)的带宽时是不可接受的——全带宽持续监听会让UE功耗呈数量级上升。
3GPP的解法是把载波带宽切分成最多4个(每个 Serving Cell 上行/下行各最多4个)带宽部分,每个BWP有自己的:
locationAndBandwidth)UE在任一时刻,每个 Serving Cell 上只有一个下行BWP和一个上行BWP处于激活态(active BWP)。所谓"BWP切换",就是把激活态从一个BWP迁移到另一个BWP。这一动作既涉及射频重新调谐(RF retuning),也涉及参数集(numerology)的变更,因此必须由规范严格定义触发条件和时序。
设计意图可以用一句话概括:用窄带BWP承载信令和小数据,用宽带BWP承载大流量,二者之间的切换由网络或定时器自动驱动,UE的功耗随实际业务需求而伸缩。
TS 38.213 Section 12("Bandwidth part operation")明确定义了四种触发 active DL/UL BWP 改变的方式,这是整个机制的骨架。
sequenceDiagram
participant NW as gNB (Network)
participant UE as UE
Note over UE: 当前 active BWP = BWP#1 (窄带)
rect rgb(230,245,255)
Note over UE,NW: 方式1 - DCI BWP Indicator
NW->>UE: DCI Format 1_1 (含 BWP indicator=2)
Note over UE: 解析BWP indicator, 与当前不同→触发切换
UE->>UE: 等待 BWP switching delay
Note over UE: active BWP = BWP#2 (宽带)
end
rect rgb(255,245,230)
Note over UE,NW: 方式2 - bwp-InactivityTimer 超时
Note over UE: 长时间无 PDCCH 调度本UE
UE->>UE: timer 超时, 自主切回 default BWP
Note over UE: active BWP = default BWP
end
rect rgb(240,255,240)
Note over UE,NW: 方式3 - RRC (re)configuration
NW->>UE: RRC Reconfiguration (firstActiveDownlinkBWP-Id)
Note over UE: 应用RRC后立即激活指定BWP
end
rect rgb(255,240,245)
Note over UE,NW: 方式4 - MAC CE 激活
NW->>UE: MAC CE (Single/Multi Entry BWP)
Note over UE: 按MAC CE指示激活
end
下面对四种方式逐一拆解关键信息单元。
这是最常用、时延最低的方式。当网络调度下行数据且判断当前BWP带宽不足以满足需求时,会在承载调度的 DCI(Format 1_1 用于DL,Format 0_1 用于UL)中携带一个 BWP indicator 字段。
| 参数 | 取值与说明 |
|---|---|
| 字段位置 | DCI Format 1_1(DL)/ Format 0_1(UL) |
| 字段长度 | 取决于配置的BWP数量:若 ≤4 个则为 2 bits;RRC需同时配置≥2个BWP时才可能出现指示不同BWP的情况 |
| 指示规则 | 指示目标 bwp-Id(0~3);若与当前active BWP-id相同,则不发生切换,仅按其余字段调度;若不同,则UE执行BWP切换 |
| 与调度共存 | 切换后,该DCI中指示的PDSCH/PUSCH在新的BWP上接收/发送 |
| 切换时延 | UE不期望在切换完成前收发,需满足 TS 38.133 的 BWP switching delay |
关键细节:BWP indicator 的2 bits 并非简单等于 bwp-Id 数值。当配置的BWP数量为1或2时,字段被预留/压缩(如仅2个BWP时仍可能保留部分编码空间);规范在 TS 38.212(DCI编码)中定义了具体映射表。这一点是协议开发中极易踩坑的地方——不能直接拿指示值当 bwp-Id 用。
当UE工作在非默认BWP(通常是宽带BWP,承载大流量)上时,如果长时间没有调度,继续守在宽带上是纯粹浪费功耗。bwp-InactivityTimer 就是让UE"自己识趣地"退回窄带默认BWP的机制。
其精确运行逻辑(TS 38.213 clause 12 + TS 38.321):
bwp-InactivityTimer,位于 BWP-DownlinkDedicated 或 ServingCellConfig 中。SCell 不配置(SCell的BWP由MAC CE激活/去激活配合)。defaultDownlinkBWP-Id 指示的默认下行BWP。注意:上行BWP也需相应处理——当default下行BWP不包含专用上行配置时,UE回退到初始上行BWP。defaultDownlinkBWP-Id 由RRC显式配置;若网络未配置,则默认BWP = 初始下行BWP(initialDownlinkBWP),即SIB1中广播的那个。bwp-InactivityTimer 的合法取值是一个离散集合,从 ms2 到 ms30000,典型的工程配置为 ms20~ms100。取值过大则省电效果丧失,取值过小则业务间隙会导致频繁BWP切换、增加切换时延开销。
flowchart TD
A[UE在非默认BWP上] --> B{是否收到<br/>调度本UE的PDCCH?}
B -- 是 --> C[启动/重启 bwp-InactivityTimer]
C --> B
B -- 否 --> D{timer是否超时?}
D -- 否 --> B
D -- 是 --> E[UE自主切换到 defaultDownlinkBWP-Id]
E --> F[active BWP = 默认BWP, 通常为窄带]
F --> G[等待下一次DCI<br/>指示宽带BWP]
G --> H{网络调度大流量?}
H -- 是 --> I[DCI BWP indicator<br/>切回宽带BWP]
I --> A
H -- 否 --> F
style E fill:#ffe0e0
style C fill:#e0ffe0
当gNB通过 RRC Reconfiguration 修改BWP配置(downlinkBWP-ToAddModList)或通过 firstActiveDownlinkBWP-Id 显式指定激活哪个BWP时,UE在应用RRC配置后立即激活指定BWP。这种方式时延最高(需完整RRC处理流程,通常几十毫秒),但可以一次性完成BWP集合的增删改,常用于切换(HO)后目标小区BWP的初始激活、或SCell添加时的BWP初始化。
firstActiveDownlinkBWP-Id 与 firstActiveUplinkBWP-Id 是 RRC Reconfiguration 中指示"切换/HO完成或加小区后第一个激活BWP"的关键字段。在 Xn/N2 切换流程中,目标gNB会通过 HO Command(RRC Reconfiguration)携带这两个字段,确保UE一进入目标小区就落在正确的BWP上。
通过 BWP Activation/Deactivation MAC CE(分为 Single Entry 和 Multi Entry 两种,TS 38.321 clause 6.1.3)激活/去激活BWP。MAC CE方式介于DCI(快)和RRC(慢)之间,开销小、不需要完整RRC流程,常用于 SCell的BWP管理 以及当DCI比特数受限时作为补充。MAC CE本身通过PDSCH承载,时延为几个slot。
BWP的"形状"完全由 RRC 层的 BWP-Downlink / BWP-Uplink IE 定义(TS 38.331)。其中最核心、也最容易被误解的是 locationAndBandwidth。
locationAndBandwidth 是一个 14 bits 字段,但它并不直接表示"起始RB"和"长度",而是采用与 LTE PRB 分配相同的 RIV(Resource Indication Value) 编码:
这种"一维编码二维信息"的设计是为了节省RRC信令开销,并在BWP带宽连续(BWP必须是连续的RB块)的前提下唯一确定位置与大小。协议开发中务必注意:locationAndBandwidth 的解码需要知道载波总带宽 $N_{BWP}^{size}$,这个值来自 SIB1 的 carrierBandwidth 而非BWP IE本身。 漏掉这一步会导致解码出错误的RB位置。
| 字段名 | 类型/长度 | 含义 | 备注 |
|---|---|---|---|
locationAndBandwidth |
14 bits | RIV编码的起始RB+长度 | 解码需载波总带宽 |
bwp-Id |
0~3 | BWP标识 | 0通常为初始BWP |
subcarrierSpacing |
枚举 | 该BWP的SCS(15/30/60/120/240kHz) | 同一载波不同BWP可不同SCS |
cyclicPrefix |
枚举 | normal或extended CP | mmWave可能用extended |
bwp-Common |
结构体 | 该BWP公共配置(PDCCH/参考信号) | 来自SIB1或专用信令 |
bwp-Dedicated |
结构体 | 该BWP专用配置(含bwp-InactivityTimer等) | per UE |
graph LR
subgraph 载波 Carrier["载波 (carrierBandwidth=N)"]
direction TB
BWP0["BWP#0 (initial)<br/>SCS=30kHz<br/>窄带, e.g. 20MHz"]
BWP1["BWP#1 (default)<br/>SCS=30kHz<br/>中带, e.g. 40MHz"]
BWP2["BWP#2 (宽带)<br/>SCS=30kHz<br/>100MHz, 大流量"]
BWP3["BWP#3 (预留)"]
end
UE["UE active BWP<br/>任一时刻仅1个下行+1个上行"]
BWP0 -.可切换.-> BWP1
BWP1 -.可切换.-> BWP2
BWP2 -.timer超时.-> BWP1
BWP1 -.DCI指示.-> BWP2
style BWP2 fill:#ffcccc
style BWP1 fill:#fff5cc
style BWP0 fill:#ccffcc
BWP切换不是瞬时完成的。TS 38.133 clause 8.6 定义了 BWP switching delay 的要求:从触发切换的PDCCH/时刻起,到UE能在新BWP上正常收发为止,存在一段不可用的"中断时间"。
切换时延取决于两个BWP的SCS是否相同、频率位置是否重叠:
| 场景 | 典型切换时延(按slot计) | 说明 |
|---|---|---|
| 相同SCS,频率重叠 | 约1个slot | RF可不retune,仅参数切换,最快 |
| 相同SCS,频率不重叠 | 约1~2个slot | 需RF retune |
| 不同SCS | 更长,需重新配置numerology | 时延最高 |
| RRC触发切换 | 数十毫秒 | 含完整RRC处理 |
这就解释了为什么bwp-InactivityTimer取值过短会导致严重的乒乓切换:timer一超时回退默认BWP,紧接着又有数据触发DCI切回宽带BWP,反复在中断期上浪费空口资源。工程上timer通常设为业务典型间隙的1.5~2倍。
BWP切换发生在空口(UE与gNB之间),无法在核心网侧(NGAP/PFCP)看到。在 L1/L2 空口日志(如基站侧的PDCCH trace、终端侧的RF log)中识别:
firstActiveDownlinkBWP-Id 字段,以及 BWP-Downlink 的 locationAndBandwidth。LCID,匹配 BWP Activation MAC CE 的LCID值。defaultDownlinkBWP-Id,UE回退到initial BWP;如果initial BWP的numerology与宽带BWP差异大,切换时延突增,可能影响后续DCI接收。Q: BWP和载波(Carrier)是什么关系?一个载波可以有几个BWP?
A: 一个载波(carrier)是物理频谱实体,由 SIB1 的 carrierBandwidth 定义总带宽。BWP是该载波上的一个连续子带宽,加上自己的SCS/CP配置。每个 Serving Cell 的每个方向(DL/UL)最多可配置 4个BWP(bwp-Id 0~3),但任一时刻只有1个激活。载波聚合(CA)下每个 Serving Cell 各自独立配置BWP集合。
Q: bwp-InactivityTimer为什么只在PCell/SpCell配置,不在SCell配置? A: SCell的激活/去激活本身就由独立的 MAC CE(SCell Activation/Deactivation MAC CE)控制,SCell整体可以休眠,BWP层面不再需要timer管理。PCell是UE持续驻留、必须始终监听的小区,其BWP的宽带↔窄带切换才有省电意义,因此timer机制专门为SpCell设计。
Q: DCI格式 1_0 也支持BWP切换吗? A: 不支持。Format 1_0(fallback DCI)不包含 BWP indicator 字段,只能在当前active BWP内调度,不能触发BWP切换。只有 Format 1_1(DL)/ Format 0_1(UL)才携带 BWP indicator。这也是 fallback DCI 的设计——它必须能在任意BWP下被正确解码,因此不含会改变BWP的字段。
Q: RRC配置修改了BWP集合后,当前active BWP会怎样?
A: 如果被删除的恰好是当前active BWP,RRC会通过 firstActiveDownlinkBWP-Id 明确指定新的激活BWP;若未指定,UE回退到默认/初始BWP。协议规定网络不应删除当前active BWP而不指示新的激活BWP,否则属异常配置。
Q: BWP切换和SCS切换是一回事吗? A: 不是,但可以同时发生。BWP切换是激活BWP的变更,而SCS是该BWP的属性。两个BWP可以有相同SCS(切换只改频率位置)或不同SCS(切换同时改numerology,时延更高)。网络通常为同一UE的多个BWP配置相同SCS以降低切换开销,仅在需要时(如mmWave不同业务)才混用。
本文由「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 等场景全覆盖。
