<!-- title: BWP切换机制与省电定时器全链拆解 -->
<!-- domain: ran -->

# BWP切换机制与省电定时器全链拆解

在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 的切换时延要求，给出从抓包识别到故障定位的完整链路。

## 一、BWP机制的背景与设计意图

LTE时代，UE一旦驻留一个载波，就必须在整个载波带宽（最高20 MHz）上持续监听PDCCH，即便没有任何数据调度，射频前端和中频处理也要按全带宽工作。这在5G面对单载波高达 100 MHz（sub-6GHz）甚至 400 MHz（mmWave）的带宽时是不可接受的——全带宽持续监听会让UE功耗呈数量级上升。

3GPP的解法是把载波带宽切分成最多4个（每个 Serving Cell 上行/下行各最多4个）**带宽部分**，每个BWP有自己的：

- 子载波间隔（SCS）与循环前缀（CP）
- 起始RB位置与连续RB长度（`locationAndBandwidth`）
- CORESET#0之外的控制信道配置
- 各自的参考信号图样（CSI-RS等）

UE在任一时刻，每个 Serving Cell 上**只有一个下行BWP和一个上行BWP处于激活态**（active BWP）。所谓"BWP切换"，就是把激活态从一个BWP迁移到另一个BWP。这一动作既涉及射频重新调谐（RF retuning），也涉及参数集（numerology）的变更，因此必须由规范严格定义触发条件和时序。

设计意图可以用一句话概括：**用窄带BWP承载信令和小数据，用宽带BWP承载大流量，二者之间的切换由网络或定时器自动驱动，UE的功耗随实际业务需求而伸缩。**

## 二、四种BWP切换触发方式（TS 38.213 clause 12）

TS 38.213 Section 12（"Bandwidth part operation"）明确定义了四种触发 active DL/UL BWP 改变的方式，这是整个机制的骨架。

### 2.1 触发方式总览时序图

```mermaid
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
```

下面对四种方式逐一拆解关键信息单元。

### 方式1：DCI中的Bandwidth Part Indicator

这是最常用、时延最低的方式。当网络调度下行数据且判断当前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 用。

### 方式2：bwp-InactivityTimer（本文重点）

当UE工作在非默认BWP（通常是宽带BWP，承载大流量）上时，如果长时间没有调度，继续守在宽带上是纯粹浪费功耗。bwp-InactivityTimer 就是让UE"自己识趣地"退回窄带默认BWP的机制。

其精确运行逻辑（TS 38.213 clause 12 + TS 38.321）：

1. **配置**：仅 **SpCell（PCell）** 可配置 `bwp-InactivityTimer`，位于 `BWP-DownlinkDedicated` 或 `ServingCellConfig` 中。SCell 不配置（SCell的BWP由MAC CE激活/去激活配合）。
2. **启动/重启条件**：UE每收到一个**给本UE的、在SpCell上调度了PDSCH/PUSCH/PUCCH/SRS的PDCCH**，就（重新）启动该timer。换言之，只要有真实调度活动，timer就被不断刷新。
3. **超时动作**：timer期满 → UE自主切换到 `defaultDownlinkBWP-Id` 指示的默认下行BWP。**注意：上行BWP也需相应处理**——当default下行BWP不包含专用上行配置时，UE回退到初始上行BWP。
4. **默认BWP的确定**：`defaultDownlinkBWP-Id` 由RRC显式配置；若网络未配置，则**默认BWP = 初始下行BWP（initialDownlinkBWP）**，即SIB1中广播的那个。

`bwp-InactivityTimer` 的合法取值是一个离散集合，从 `ms2` 到 `ms30000`，典型的工程配置为 `ms20`~`ms100`。取值过大则省电效果丧失，取值过小则业务间隙会导致频繁BWP切换、增加切换时延开销。

```mermaid
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
```

### 方式3：RRC（重新）配置

当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上。

### 方式4：MAC CE 激活

通过 **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。

## 三、RRC配置的BWP-Downlink IE 结构拆解

BWP的"形状"完全由 RRC 层的 `BWP-Downlink` / `BWP-Uplink` IE 定义（TS 38.331）。其中最核心、也最容易被误解的是 `locationAndBandwidth`。

### 3.1 locationAndBandwidth 与 RIV 编码

`locationAndBandwidth` 是一个 **14 bits** 字段，但它并不直接表示"起始RB"和"长度"，而是采用与 LTE PRB 分配相同的 **RIV（Resource Indication Value）** 编码：

- 设载波上RB总数为 $N_{BWP}^{size}$，目标BWP起始RB为 $RB_{start}$，长度为 $L_{RBs}$。
- 若 $(RB_{start} + 1) \le \lfloor N_{BWP}^{size}/2 \rfloor$，则 $RIV = N_{BWP}^{size}(RB_{start}-1) + (L_{RBs}-1)$；
- 否则 $RIV = N_{BWP}^{size}(N_{BWP}^{size} - L_{RBs} + 1) + (N_{BWP}^{size} - RB_{start})$。

这种"一维编码二维信息"的设计是为了节省RRC信令开销，并在BWP带宽连续（BWP必须是连续的RB块）的前提下唯一确定位置与大小。**协议开发中务必注意：locationAndBandwidth 的解码需要知道载波总带宽 $N_{BWP}^{size}$，这个值来自 SIB1 的 `carrierBandwidth` 而非BWP IE本身。** 漏掉这一步会导致解码出错误的RB位置。

### 3.2 BWP-Downlink IE 字段表

| 字段名 | 类型/长度 | 含义 | 备注 |
|--------|----------|------|------|
| `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 |

```mermaid
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）

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倍。

## 五、实战连接：抓包识别与故障排错

### 5.1 如何在抓包中识别BWP切换

BWP切换发生在空口（UE与gNB之间），无法在核心网侧（NGAP/PFCP）看到。在 **L1/L2 空口日志**（如基站侧的PDCCH trace、终端侧的RF log）中识别：

1. **DCI触发**：在PDCCH解码结果中查找 Format 1_1/0_1 的 BWP indicator 字段值，与当前active bwp-Id对比，不同即为切换触发点。
2. **Timer触发**：UE自主动作，gNB侧看不到直接信令，只能从"UE一段时间无调度后突然PUCCH/PUSCH出现在默认BWP上"反推。终端日志通常有明确的"BWP switch due to inactivity timer expiry"事件。
3. **RRC触发**：在 RRC Reconfiguration 消息中查 `firstActiveDownlinkBWP-Id` 字段，以及 `BWP-Downlink` 的 `locationAndBandwidth`。
4. **MAC CE触发**：MAC层解析 `LCID`，匹配 BWP Activation MAC CE 的LCID值。

### 5.2 常见故障点

- **故障1：BWP indicator解码错误**。误将indicator值直接当bwp-Id。需严格按 TS 38.212 的映射表解码，结合配置的BWP总数。
- **故障2：locationAndBandwidth解码位置错误**。解码用了错误的载波总带宽 $N_{BWP}^{size}$（误用专用信令带宽而非SIB1广播带宽），导致整个BWP落在错误频段，UE收不到任何信号。
- **故障3：bwp-InactivityTimer配置在SCell上无效**。SCell不支持该timer，配置了也不生效；SCell的BWP需用MAC CE管理。
- **故障4：default BWP未配置时的歧义**。若未配 `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不同业务）才混用。

## 参考来源

1. [3GPP TS 38.213 - NR; Physical layer procedures for control](https://www.3gpp.org/dynareport/38213.htm) — Section 12 "Bandwidth part operation"，定义四种BWP切换触发方式与bwp-InactivityTimer运行规则
2. [3GPP TS 38.331 - NR; Radio Resource Control (RRC)](https://www.3gpp.org/dynareport/38331.htm) — BWP-Downlink/BWP-Uplink IE、locationAndBandwidth、bwp-InactivityTimer 取值定义
3. [3GPP TS 38.133 - NR; Requirements for support of radio resource management](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3204) — clause 8.6 BWP switching delay 射频与RRM要求
4. [ShareTechnote - 5G Carrier Bandwidth Part](https://www.sharetechnote.com/html/5G/5G_CarrrierBandwidthPart.html) — BWP机制概念图解与RIV编码说明
5. [3GPP TS 38.321 - NR; Medium Access Control (MAC) protocol specification](https://www.3gpp.org/dynareport/38321.htm) — clause 6.1.3 BWP Activation/Deactivation MAC CE

---
> 本文由「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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
