当你在基站天线下看着测试终端的吞吐量从300Mbps突然跳到1.2Gbps时,背后发生的不仅仅是"多加了一个载波"。从gNB决定添加SCell到UE真正在SCell上收发数据,中间跨越了RRC配置、MAC激活、物理层就绪三个协议层,涉及TS 38.331、TS 38.321、TS 38.133、TS 38.214四份核心规范的精密协作。每一步的定时器选择和时序参数,都在用户体验时延和终端功耗之间做博弈。
本文聚焦3GPP TS 38.331 V18.6.0 Section 5.3.5.3(RRC Reconfiguration)、TS 38.321 V18.5.0 Section 5.9(SCell Activation/Deactivation)和TS 38.133 V18.5.0 Section 8.3(SCell Activation Delay),逐信令解析SCell从"不存在"到"传输数据"的完整链路。
NR载波聚合中,SCell并非简单的"有"或"无"。3GPP为SCell定义了三层状态模型,每一层对应不同的协议行为:
stateDiagram-v2
[*] --> 未配置: UE仅接入PCell
未配置 --> 已配置_去激活: RRCReconfiguration\n(SCellToAddModList)
已配置_去激活 --> 已配置_激活: MAC CE激活\n(scellState=activated)
已配置_激活 --> 已配置_去激活: MAC CE去激活\n或sCellDeactivationTimer超时
已配置_去激活 --> 已配置_休眠: Rel-16\nDCI format 1_1指示
已配置_休眠 --> 已配置_激活: MAC CE激活
已配置_休眠 --> 已配置_去激活: MAC CE去激活
已配置_激活 --> 未配置: RRCReconfiguration\n(SCellToReleaseList)
已配置_去激活 --> 未配置: RRCReconfiguration\n(SCellToReleaseList)
state 已配置_激活 {
[*] --> PDCCH监听
PDCCH监听 --> CSI上报
CSI上报 --> SRS发送
SRS发送 --> 数据收发
}
state 已配置_休眠 {
[*] --> BWP休眠态
BWP休眠态: 仅SSB/TRS测量
BWP休眠态: 无PDCCH监听
BWP休眠态: 无CSI上报
}
state 已配置_去激活 {
[*] --> 完全静默
完全静默: 无任何活动
完全静默: HARQ缓冲区清空
}
| 状态维度 | 未配置 | 已配置-去激活 | 已配置-休眠(Rel-16+) | 已配置-激活 |
|---|---|---|---|---|
| RRC配置 | 无 | 有 | 有 | 有 |
| PDCCH监听 | 无 | 无 | 无 | 有 |
| CSI上报 | 无 | 无 | 无(BWP休眠) | 有 |
| SRS发送 | 无 | 无 | 无 | 有 |
| HARQ缓冲区 | 无 | 清空 | 保留 | 正常使用 |
| BWP状态 | N/A | dormant BWP | dormant BWP | 激活BWP |
| SSB/CSI-RS测量 | 无 | 无 | 仅TRS/SSB | 全部测量 |
| 终端功耗 | 最低 | 低 | 中 | 高 |
| 激活时延 | N/A | 最长(~24ms) | 短(~3ms) | 已就绪 |
设计意图:Rel-15只有"去激活"和"激活"两态,gNB面临两难——保持激活浪费功耗,频繁激活/去激活引入时延。Rel-16引入休眠态(dormant BWP),UE保留配置但仅做最小化测量,激活时延从~24ms缩短到~3ms,完美平衡功耗和时延。
sequenceDiagram
participant UE
participant gNB as gNB(PCell)
participant SCell as gNB(SCell)
Note over UE,gNB: 阶段一:UE能力查询与测量配置
gNB->>UE: UECapabilityEnquiry
Note right of UE: 查询CA能力:支持的频段组合<br/>最大SCell数量、带宽类别
UE->>gNB: UECapabilityInformation
Note left of gNB: 解析UE-NR-Capability<br/>中的CA-BandwidthClassListNR
gNB->>UE: RRCReconfiguration(MeasConfig)
Note right of UE: 配置频间测量<br/>measObjectToAddModList
UE->>gNB: RRCReconfigurationComplete
Note over UE,gNB: 阶段二:SCell RRC配置
UE->>gNB: MeasurementReport
Note left of gNB: 上报候选SCell的RSRP/RSRQ
gNB->>UE: RRCReconfiguration(SCellToAddModList)
Note right of UE: 关键IE:sCellIndex, PhysCellId<br/>SCellConfigCommon, SCellConfigDedicated<br/>sCellState(dormant/activated)<br/>crossCarrierSchedulingConfig<br/>sCellDeactivationTimer
UE->>gNB: RRCReconfigurationComplete
Note left of gNB: UE完成L1/L2配置<br/>SCell进入去激活态
Note over UE,gNB: 阶段三:MAC CE激活
gNB->>UE: PDSCH(MAC CE: Activate SCell)
Note right of UE: 携带SCell Activation/Deactivation MAC CE<br/>bitmap中对应bit置1
Note right of UE: 启动SCell激活定时器
Note over UE: T_activation_time内完成:<br/>1. 启动sCellDeactivationTimer<br/>2. 开始PDCCH监听<br/>3. 启动CSI测量上报<br/>4. 启动SRS发送
Note over UE,SCell: 阶段四:物理层就绪与数据传输
UE->>SCell: CSI Report(CQI/PMI/RI)
SCell->>UE: PDCCH(DCI调度)
SCell->>UE: PDSCH(用户数据)
UE->>SCell: PUSCH(ACK/NACK + 上行数据)
Note over UE,gNB: 阶段五:去激活(定时器超时或MAC CE)
gNB->>UE: MAC CE(Deactivate SCell)
Note right of UE: 或sCellDeactivationTimer超时<br/>停止CSI/PDCCH/SRS<br/>清空HARQ缓冲区
graph TD
A[RRCReconfiguration] --> B[CellGroupConfig]
B --> C[SpCellConfig]
B --> D[SCellToAddModList]
B --> E[SCellToReleaseList]
D --> F[SCellToAddMod #1]
D --> G[SCellToAddMod #2]
D --> H[SCellToAddMod ...N]
F --> I[sCellIndex: 1-31]
F --> J[PhysCellId: 0-1007]
F --> K[SCellConfigCommon]
F --> L[SCellConfigDedicated]
K --> K1[downlinkConfigCommon]
K --> K2[uplinkConfigCommon]
K1 --> K1a[frequencyBandList]
K1 --> K1b[scs-SpecificCarrierList]
K1 --> K1c[dl-BWP-List]
L --> L1[BWP-DownlinkDedicated]
L --> L2[BWP-UplinkDedicated]
L --> L3[CSI-MeasConfig]
L --> L4[PDCCH-Config]
L --> L5[PDSCH-Config]
L --> L6[sCellDeactivationTimer]
L --> L7[crossCarrierSchedulingConfig]
L7 --> L7a[schedulingCellInfo]
L7 --> L7b[cif-InSchedulingDCI]
| IE字段 | 规范章节 | 取值范围 | 功能说明 | 运营商博弈点 |
|---|---|---|---|---|
| sCellIndex | 38.331 §6.3.2 | 1-31 | SCell逻辑索引,全局唯一标识 | 服务小区排序策略 |
| PhysCellId | 38.331 §6.2.2 | 0-1007 | 物理小区标识PCI | PCI冲突检测 |
| scs-SpecificCarrierList | 38.331 §6.3.2 | 按SCS配置 | 子载波间隔和载波带宽 | SCS选择影响覆盖/容量 |
| firstActiveDownlinkBWP-Id | 38.331 §6.3.2 | 0-4 | 首次激活的DL BWP | 初始BWP选择影响接入时延 |
| sCellDeactivationTimer | 38.331 §6.3.2 | ms1/2/.../640/infinity | 无流量自动去激活定时器 | 长则费电,短则频繁激活 |
| sCellState | 38.331 §6.3.2 (Rel-16) | dormant/activated | 初始配置时SCell状态 | activated省时延但费电 |
| crossCarrierSchedulingConfig | 38.331 §6.3.2 | 参考调度小区配置 | 跨载波调度配置 | PCell调度SCell减少SCell PDCCH开销 |
| pathlossReferenceLinking | 38.331 §6.3.2 | PCell/SCell | 上行功控路损参考 | 影响功率控制精度 |
| scellActivationTime | 38.321 §5.9 | 配置值(符号/slot数) | SCell激活时延 | 影响激活速度 |
SCell Activation/Deactivation MAC CE有两种格式:
单字节格式(最多7个SCell):
| C7 | C6 | C5 | C4 | C3 | C2 | C1 | R/A |
| bit7 | bit6 | ... | bit2 | bit1 | bit0 |
四字节扩展格式(最多31个SCell):
| 字节 | 字段 | 含义 |
|---|---|---|
| Byte 1 | C7-C1 + R/A | SCell 1-7的激活位 |
| Byte 2 | C15-C8 | SCell 8-15的激活位 |
| Byte 3 | C23-C16 | SCell 16-23的激活位 |
| Byte 4 | C31-C24 | SCell 24-31的激活位 |
SCell激活的精确时序是协议最精密的部分之一:
激活时延公式(TS 38.133 Section 8.3):
T_SCell_Activation = T_MAC_Processing + nSCellActivationTime × T_slot + T_HARQ
其中: - T_MAC_Processing:MAC CE处理时间,固定为3个slot(PCell SCS) - nSCellActivationTime:RRC配置的激活延迟slot数 - T_slot:SCell的slot时长(取决于SCS) - T_HARQ:HARQ反馈时序
SCS对激活时延的影响:
| SCS | Slot时长 | n=3 slots | n=8 slots | 适用频段 |
|---|---|---|---|---|
| 15 kHz | 1.0 ms | 3 ms | 8 ms | FR1低频 |
| 30 kHz | 0.5 ms | 1.5 ms | 4 ms | FR1中频 |
| 60 kHz | 0.25 ms | 0.75 ms | 2 ms | FR1高频/FR2 |
| 120 kHz | 0.125 ms | 0.375 ms | 1 ms | FR2 |
关键时序规则: 1. MAC CE在PCell的PDSCH slot n结束 2. 激活在slot n + nSCellActivationTime生效(以SCell的SCS计算) 3. FR1典型值:nSCellActivationTime = 3 slots,即~3ms(30kHz SCS) 4. FR2典型值:nSCellActivationTime = 3 slots,即~0.375ms(120kHz SCS) 5. TS 38.133 §8.3要求总激活时延不超过24ms(FR1,含AGC+时间/频率同步)
flowchart TD
A[收到SCell Activation MAC CE] --> B{MAC CE校验}
B -->|bit=1 激活| C[启动sCellDeactivationTimer]
C --> D[AGC自动增益控制]
D --> E[时间/频率同步]
E --> F{SCell有SSB?}
F -->|有SSB| G[SSB测量获取同步]
F -->|无SSB/SSB-less| H[使用CSI-RS/TRS获取同步]
G --> I[切换到firstActiveDownlinkBWP-Id]
H --> I
I --> J[开始PDCCH监听]
J --> K[启动CSI测量与上报]
K --> L[启动SRS发送]
L --> M[SCell激活完成<br/>可调度数据]
B -->|bit=0 去激活| N[停止sCellDeactivationTimer]
N --> O[停止PDCCH监听]
O --> P[停止CSI上报]
P --> Q[停止SRS发送]
Q --> R[清空DL HARQ缓冲区]
R --> S[SCell进入去激活态]
TS 38.331定义的sCellDeactivationTimer取值(单位:ms):
| 定时器值 | 适用场景 | 运营商策略 |
|---|---|---|
| ms1-ms5 | 高频次切换、URLLC | 极度省电,但频繁激活增加信令开销 |
| ms8-ms20 | 一般数据业务 | 平衡点,eMBB常见配置 |
| ms40-ms80 | 视频流、大文件下载 | 数据突发间隔长,避免频繁激活 |
| ms160-ms640 | 低频大数据业务 | 长保持,适合夜间批量传输 |
| infinity | 永不自动去激活 | 实验室测试或固定CPE |
功耗 ▲
│ ●infinity ← 固定CPE、实验室测试
│ ●ms160-ms640 ← 大流量长连接
│ ●ms40-ms80 ← 视频流媒体
│ ●ms8-ms20 ← 通用eMBB(推荐)
│ ●ms3-ms5 ← 混合业务
│ ●ms1 ← 极端省电
│
└───────────────────────────────► 时延
低时延 高时延
(激活快) (激活慢)
运营商实测数据参考: - 华为推荐:eMBB场景sCellDeactivationTimer = ms20,激活时延~8ms - 爱立信推荐:高频载波(n78)配置ms10,低频载波(n1/n8)配置ms40 - 中兴推荐:异厂商互操作场景统一ms16,避免定时器不同步导致的调度失败
当SCell的PDCCH干扰严重或SCell为TDD频段但需要FDD调度灵活性时,gNB可配置跨载波调度——PCell上的PDCCH携带CIF(Carrier Indicator Field)来调度SCell的资源。
配置要素(TS 38.331):
| IE字段 | 含义 | 取值 |
|---|---|---|
| schedulingCellInfo | 哪个小区负责调度 | schedulingCellInfo-r15 |
| cif-InSchedulingDCI | DCI中是否包含CIF | true/false |
| cif-Present | CIF值 | 对应sCellIndex |
| 维度 | 自调度 | 跨载波调度 |
|---|---|---|
| PDCCH位置 | SCell自己发 | PCell代发 |
| DCI格式 | 标准DCI | DCI + CIF字段 |
| PDCCH开销 | 每个SCell独立搜索空间 | PCell搜索空间聚合 |
| SCell激活前 | 无法工作 | PCell可提前调度 |
| 适用场景 | SCell覆盖好、干扰低 | 异构网、TDD-FDD联合调度 |
| 时延影响 | SCell独立调度快 | 多一跳CIF解析 |
| 典型配置 | n78+n78同频段CA | n1(FDD)+n78(TDD)跨频段CA |
Rel-16引入了SCell dormant BWP(休眠带宽部分),这是介于"去激活"和"激活"之间的中间态:
关键创新(TS 38.321 §5.9, TS 38.331 §6.3.2):
graph LR
subgraph "路径A: Rel-15标准流程"
A1[去激活态] -->|"MAC CE激活\n~24ms"| A2[激活态]
end
subgraph "路径B: Rel-16休眠→激活"
B1[休眠态] -->|"DCI BWP切换\n~1-3ms"| B2[激活态]
end
subgraph "路径C: Rel-16直通模式"
C1[RRC配置] -->|"sCellState=activated\n0ms额外时延"| C2[激活态]
end
style A1 fill:#ff9999
style B1 fill:#ffff99
style C1 fill:#99ff99
style A2 fill:#99ccff
style B2 fill:#99ccff
style C2 fill:#99ccff
| 路径 | 激活时延 | UE功耗 | 信令开销 | 适用场景 |
|---|---|---|---|---|
| A: MAC CE从去激活 | 20-24ms | 最低 | 1次MAC CE | Rel-15终端、不频繁CA |
| B: DCI从休眠态 | 1-3ms | 中等 | 1次DCI | Rel-16+终端、频繁突发 |
| C: RRC直通 | 0ms(含在RRC中) | 最高 | 0额外 | URLLC、固定CPE |
步骤一:捕获RRC Reconfiguration
# 过滤RRC Reconfiguration消息(NR MAC PDU中提取)
# Wireshark过滤器:
nr-rrc.rrcReconfiguration
在RRC Reconfiguration中寻找:
- cellGroupConfig → scellToAddModList
- 每个SCellToAddMod中的sCellIndex和PhysCellId
- sCellDeactivationTimer的配置值
- sCellState(Rel-16+终端)
步骤二:捕获MAC CE激活
# MAC CE的LCID
# SCell Activation: LCID = 56 (单字节) 或 57 (扩展)
# SCell Deactivation: LCID = 58 (单字节) 或 59 (扩展)
步骤三:验证SCell数据传输
# 在SCell的频点上捕获PDCCH/PDSCH
# 确认DCI中的ServCellIndex = sCellIndex
# 确认HARQ-ACK在PCell或PUCCH SCell上反馈
| 故障现象 | 可能原因 | 排错方法 |
|---|---|---|
| SCell配置后一直不激活 | gNB未发送MAC CE | 检查gNB日志中MAC CE发送记录 |
| 激活后无数据调度 | CSI未就绪/BWP未切换 | 检查CSI-MeasConfig和BWP配置 |
| 激活后频繁去激活 | sCellDeactivationTimer太短 | 增大timer值,检查业务模型匹配 |
| SCell配置失败 | PCI冲突/频段组合不支持 | 检查UE-NR-Capability中的bandCombination |
| 跨载波调度异常 | CIF配置错误 | 验证crossCarrierSchedulingConfig |
| FR2 SCell激活超时 | 波束未对准/SSB测量失败 | 检查SSB波束管理和RSRP上报 |
| Rel-16休眠态异常 | UE不支持dormant BWP | 检查UE能力中的scellDormantState |
| ## 10. SCell添加信令中的隐藏博弈 |
gNB在SCell配置时通过firstActiveDownlinkBWP-Id指定初始激活BWP。这个选择直接影响激活后UE的行为:
运营商策略:
- 如果SCell用于即时数据分流(如视频),配置firstActiveDownlinkBWP-Id = 1直接切入宽BWP
- 如果SCell用于备用容量,配置firstActiveDownlinkBWP-Id = 0先在窄BWP等待
上行功率控制需要路损参考。pathlossReferenceLinking决定UE在SCell上发送PUSCH时参考哪个小区的路损:
错误配置会导致PUSCH功率过高(干扰邻区)或过低(解调失败)。
Q1: SCell添加和SCell激活为什么要分成两步?
A: 这是为了分离"配置"和"使用"。RRC配置是重信令过程(需要UE解析完整的物理层/MAC参数),而MAC CE激活是轻量级操作(仅一个bitmap)。gNB可以在呼叫建立时一次性配置多个SCell,然后根据业务需求动态激活/去激活。这避免了每次需要额外带宽时都走完整的RRC流程(~50ms),将激活时延压缩到~3ms。
Q2: Rel-16的dormant BWP和去激活态有什么本质区别?
A: 关键区别在于"配置保留程度"。去激活态下,UE清空HARQ缓冲区,完全不监听任何信号,重新激活需要完整的AGC+同步+CSI流程(~24ms)。休眠态下,UE保持BWP配置和同步,仅做SSB/TRS测量保持频率/时间锁定,激活仅需BWP切换(~1-3ms)。本质上,休眠态用少量功耗(~5%激活态功耗)换取了~90%的激活时延降低。
Q3: 为什么FR2的SCell激活比FR1快?
A: 因为激活时延以slot为单位计算,而slot时长与SCS成反比。FR2使用120kHz SCS时一个slot仅0.125ms,3个slot = 0.375ms。FR1使用15kHz SCS时一个slot是1ms,3个slot = 3ms。但FR2的额外挑战是波束管理——如果波束未对准,SSB测量失败会显著延长实际激活时间。
Q4: SCell最多可以配置几个?3GPP规范和实际部署差异大吗?
A: 3GPP TS 38.331定义maxNrofSCells = 31(理论值),但实际受限于UE能力和频段组合。3GPP TS 38.101-1定义的UE能力等级中,大多数商用终端支持2-4个SCell(即3-5CC CA)。高通X55/X65基带支持5CC CA,联发科Dimensity 9000支持3CC CA。运营商实际部署中,FR1通常配置2CC(如n1+n78),FR2可能配置4CC(如n257的4个100MHz载波)。
Q5: sCellDeactivationTimer配成infinity会有什么问题?
A: SCell永不自动去激活意味着UE持续监听PDCCH和发送CSI/SRS,即使没有数据传输。对于电池供电的移动终端,这会显著缩短续航时间(实测增加~15-25%功耗)。仅建议用于固定CPE或实验室测试场景。更优的策略是使用Rel-16的dormant BWP配合适中的timer值(如ms20),实现"准实时"的功耗管理。
本文由「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 等场景全覆盖。
