聚焦3GPP TS 38.331 Section 5.3.5(RRC重配置过程)、TS 38.321 Section 5.9(SCell激活/去激活)与Section 6.1.3.10(MAC CE格式),完整拆解从RRC配置到MAC层激活的载波聚合SCell添加全链信令流程。
5G NR载波聚合(Carrier Aggregation, CA)通过聚合多个载波分量(Component Carrier, CC)来提升用户吞吐量。与4G LTE CA相比,NR CA在协议设计上延续了"RRC配置 + MAC激活"的两阶段管理机制,但引入了更丰富的IE结构和更灵活的BWP配置。
设计动机:为什么不让RRC直接激活SCell?
| 方面 | 纯RRC方案 | RRC+MAC两阶段方案 |
|---|---|---|
| 配置开销 | 每次增删SCell都需RRC重配,信令开销大 | RRC一次配置,MAC CE动态开关 |
| 时延 | RRC过程需UE反馈Complete,耗时数十ms | MAC CE激活仅需数ms |
| 灵活性 | 低——每次调整均需RRC过程 | 高——gNB可基于负载实时决策 |
| 省电效果 | 差——SCell一旦配置即激活 | 好——可按需激活/去激活,UE省电 |
| 适用场景 | 静态配置 | 动态业务调度 |
这正是3GPP在TS 38.300 Section 7.8中定义的架构:RRC层负责SCell参数配置("安装管道"),MAC层负责SCell激活/去激活("开关阀门")。
SCell在UE侧存在三种状态:未配置(Not Configured)→ 已配置但去激活(Configured & Deactivated)→ 已配置且激活(Configured & Activated)。下图展示完整的状态转换逻辑:
stateDiagram-v2
[*] --> NotConfigured: UE初始状态
NotConfigured --> ConfiguredDeactivated: RRCReconfiguration\n(sCellToAddModList)
NotConfigured --> ConfiguredActivated: RRCReconfiguration\n(sCellState=activated)
ConfiguredDeactivated --> ConfiguredActivated: MAC CE激活\n(LCID=53/54)
ConfiguredDeactivated --> NotConfigured: RRCReconfiguration\n(sCellToReleaseList)
ConfiguredActivated --> ConfiguredDeactivated: MAC CE去激活\n或sCellDeactivationTimer超时
ConfiguredActivated --> NotConfigured: RRCReconfiguration\n(sCellToReleaseList)
note right of ConfiguredDeactivated
UE行为受限:
- 不监听PDCCH
- 不发送SRS
- 不上报CSI
- 不传UL-SCH
end note
note right of ConfiguredActivated
UE正常操作:
- 监听PDCCH
- 发送SRS/CSI
- 收发数据
- 重启deactivationTimer
end note
关键计时器:每个已配置的SCell(除配置了PUCCH的SCell外)都关联一个sCellDeactivationTimer。当SCell激活后,如果在计时器周期内没有数据调度(PDCCH指示上行/下行授权),SCell将自动去激活。这个机制确保了UE的省电性能。
sequenceDiagram
participant UE as UE
participant gNB as gNB
Note over gNB: gNB决策添加SCell<br/>(基于测量报告/负载/CA能力)
gNB->>UE: RRCReconfiguration<br/>(含masterCellGroup > sCellToAddModList)
Note right of gNB: 关键IE:<br/>- sCellIndex<br/>- sCellConfigCommon<br/>- sCellConfigDedicated<br/>- firstActiveDownlinkBWP-Id
UE->>UE: 解析ASN.1配置<br/>存储SCell参数<br/>SCell状态=Deactivated
UE->>gNB: RRCReconfigurationComplete<br/>(rrc-TransactionIdentifier匹配)
Note over UE,gNB: RRC配置完成<br/>SCell处于"已配置去激活"状态
rect rgb(230, 245, 255)
Note over gNB: gNB决定激活SCell
gNB->>UE: DCI 1_1 (PCell)<br/>(调度承载MAC CE的PDSCH)
gNB->>UE: PDSCH (PCell)<br/>(含SCell Activation MAC CE)
Note right of gNB: MAC CE格式:<br/>Ci=1 表示激活SCellIndex=i
UE->>UE: 收到MAC CE后<br/>启动SCell激活过程
UE->>gNB: PUCCH (HARQ ACK)<br/>(确认收到MAC CE)
Note over UE: 激活时序:<br/>n + N_Activate_DEACT_SCell<br/>(TS 38.213 Table 11-6)
rect rgb(255, 245, 230)
Note over UE: SCell已激活<br/>开始以下操作:<br/>1. SRS传输<br/>2. CSI上报<br/>3. PDCCH监听<br/>4. 启动sCellDeactivationTimer
end
gNB->>UE: DCI 1_1 (PCell)<br/>(调度SCell上的PDSCH)
gNB->>UE: PDSCH (SCell)<br/>(SCell首份数据)
UE->>gNB: PUCCH/PUSCH (PCell/SCell)<br/>(HARQ ACK)
end
RRCReconfiguration消息定义在TS 38.331 Section 6.2.2,是5G NR中最复杂、使用最频繁的RRC消息。对于SCell添加场景,核心IE嵌套路径为:
RRCReconfiguration (TS 38.331 Section 6.2.2)
├── rrc-TransactionIdentifier (0..3) ← 事务标识,UE在Complete中原样返回
├── criticalExtensions
│ └── rrcReconfiguration
│ ├── masterCellGroup (OCTET STRING) ← 编码后的CellGroupConfig
│ │ └── CellGroupConfig (Section 6.3.2)
│ │ ├── cellGroupId (0..3) ← MCG=0, SCG=1
│ │ ├── mac-CellGroupConfig ← MAC层参数(PHR/BSR/SR/DRX)
│ │ ├── spCellConfig ← 特殊小区(PCell)配置
│ │ └── sCellToAddModList ← ★ SCell添加列表
│ │ └── SCellToAddMod (Section 6.3.2)
│ │ ├── sCellIndex (1..31) ← SCell唯一索引
│ │ ├── sCellConfigCommon ← 公共配置
│ │ │ ├── physCellId (0..1007) ← 物理小区ID
│ │ │ ├── downlinkConfigCommon
│ │ │ │ ├── frequencyInfoDL
│ │ │ │ │ ├── absoluteFrequencySSB ← SSB绝对频点
│ │ │ │ │ ├── frequencyBandList ← 频段列表
│ │ │ │ │ ├── absoluteFrequencyPointA ← Point A
│ │ │ │ │ └── scs-SpecificCarrierList ← SCS/带宽
│ │ │ │ └── initialDownlinkBWP
│ │ │ │ └── pdcch-ConfigCommon/pdsch-ConfigCommon
│ │ │ ├── ssb-PositionsInBurst ← SSB时域位置
│ │ │ ├── ssb-periodicityServingCell
│ │ │ └── tdd-UL-DL-ConfigurationCommon ← TDD配置
│ │ └── sCellConfigDedicated ← 专用配置
│ │ ├── initialDownlinkBWP
│ │ │ ├── pdcch-Config ← SCell的PDCCH搜索空间
│ │ │ └── pdsch-Config ← SCell的PDSCH参数
│ │ ├── firstActiveDownlinkBWP-Id ← ★ 首次激活BWP
│ │ ├── pdsch-ServingCellConfig ← HARQ进程数等
│ │ ├── csi-MeasConfig ← CSI测量配置
│ │ └── tag-Id ← Timing Advance Group
│ ├── radioBearerConfig ← DRB/SRB配置(可能同时修改)
│ ├── dedicatedNAS-MessageList ← NAS消息透传
│ └── nonCriticalExtension ← Rel-15+扩展链
| IE名称 | 类型/范围 | 含义 | 抓包识别要点 |
|---|---|---|---|
sCellIndex |
INTEGER(1..31) | SCell的唯一标识,0保留给PCell | 在MAC CE和DCI中用此索引寻址SCell |
physCellId |
INTEGER(0..1007) | SCell的物理小区标识 | 应与邻区列表中PCI一致 |
absoluteFrequencySSB |
INTEGER(0..3279165) | SSB的绝对频点(NR-ARFCN) | 验证频点是否在UE能力支持的band内 |
absoluteFrequencyPointA |
INTEGER(0..3279165) | CRB#0的最低子载波频点 | BWP和PRB分配的参考基准 |
scs-SpecificCarrierList |
序列 | 每个SCS的offsetToCarrier和carrierBandwidth | 确认SCell带宽与SCS配置 |
firstActiveDownlinkBWP-Id |
INTEGER(0..4) 或 dormant | SCell激活时首先使用的DL BWP | 设为dormant则激活后仍不收发数据 |
tag-Id |
INTEGER(0..3) | Timing Advance Group标识 | 相同TAG的SCell共享TA值 |
nrofHARQ-ProcessesForPDSCH |
枚举 | SCell上HARQ进程数(2/4/6/8/10/12/16/20/24/28/32) | 高吞吐场景建议配置16以上 |
pdcch-ServingCellConfig |
可选 | 跨载波调度配置 | SCell自调度 vs PCell跨载波调度 |
masterCellGroup字段是一个OCTET STRING,内部包含经过ASN.1 UPER编码的CellGroupConfig结构。这意味着在抓包工具(如Wireshark)中,需要对该字段进行二次解码才能看到完整的SCell配置。
flowchart LR
A[RRCReconfiguration<br/>L3消息] --> B[masterCellGroup<br/>OCTET STRING]
B --> C[ASN.1 UPER解码]
C --> D[CellGroupConfig]
D --> E[sCellToAddModList]
E --> F[SCellToAddMod[0]<br/>sCellIndex=1]
E --> G[SCellToAddMod[1]<br/>sCellIndex=2]
style B fill:#fff3cd
style C fill:#d1ecf1
实战提示:在Wireshark中,如果masterCellGroup显示为原始hex而非展开的IE树,通常是因为ASN.1解码器未正确识别嵌套编码。解决方案:
1. 确保使用Wireshark 4.0+版本(内置5G NR RRC解析)
2. 在Preferences > Protocols > NR RRC中启用"Attempt to decode masterCellGroup as CellGroupConfig"
3. 或将hex数据导出后用独立ASN.1工具解码
TS 38.321 Section 5.9定义了SCell激活/去激活的完整过程。激活触发方式有四种:
| 触发方式 | 方向 | 描述 |
|---|---|---|
| SCell Activation/Deactivation MAC CE | gNB→UE | 传统1字节/4字节MAC CE(LCID=53/54) |
| Enhanced SCell Activation/Deactivation MAC CE | gNB→UE | Rel-16增强版,支持TRS指示(LCID指定在Section 6.1.3.55) |
| sCellDeactivationTimer超时 | UE内部 | 计时器到期自动去激活 |
| sCellState=activated | RRC配置 | Rel-16引入,RRC配置时直接激活(省去MAC CE步骤) |
| scg-State | 上层 | SCG去激活时连带去激活SCell |
单字节MAC CE(SCell数量 ≤ 7,TS 38.321 Figure 6.1.3.10-1):
字节结构:
比特位: | C7 | C6 | C5 | C4 | C3 | C2 | C1 | R |
| | | | | | | | |
含义: |S7 |S6 |S5 |S4 |S3 |S2 |S1 |保留|
Ci = 1: 激活SCellIndex = i
Ci = 0: 去激活SCellIndex = i
R = 保留位,设为0
四字节MAC CE(SCell数量 > 7,TS 38.321 Figure 6.1.3.10-2):
字节1: | C7 | C6 | C5 | C4 | C3 | C2 | C1 | R |
字节2: | C15| C14| C13| C12| C11| C10| C9 | C8 |
字节3: | C23| C22| C21| C20| C19| C18| C17| C16|
字节4: | R | R | R | R | R | R | R | C24|
以下是ShareTechnote记录的真实n78频段2CC CA场景(n78@20MHz + n78@20MHz):
[1] RRCReconfiguration for SCell Addition
sCellIndex = 1
physCellId = 501
absoluteFrequencySSB = 627264
frequencyBandList = { n78 }
absoluteFrequencyPointA = 626688
scs-SpecificCarrierList = { offsetToCarrier=0, kHz30, carrierBandwidth=51 }
tdd-UL-DL-ConfigurationCommon:
dl-UL-TransmissionPeriodicity = ms5
nrofDownlinkSlots = 7, nrofDownlinkSymbols = 6
nrofUplinkSlots = 2, nrofUplinkSymbols = 4
firstActiveDownlinkBWP-Id = 0
nrofHARQ-ProcessesForPDSCH = n16
[2] RRCReconfigurationComplete
rrc-TransactionIdentifier = 0 (匹配)
[3] MAC CE Activation
Scell AD:02 ← 0x02 = 二进制 00000010, 即C1=1, 激活SCellIndex=1
LCID = 53 (SCell Activation/Deactivation MAC CE, 1 octet)
解析AD:02:十六进制0x02展开为二进制00000010,从低位到高位:
- C1 = 1 → 激活 SCellIndex = 1 ✓
- 其余位 = 0 → 保持去激活
根据TS 38.213 Section 11.3(Table 11-6),SCell激活需要满足特定的时序要求:
| SCS | 激活时延(slot数) | 实际时延(近似) |
|---|---|---|
| 15 kHz | 24 slots | ~16 ms |
| 30 kHz | 48 slots | ~16 ms |
| 60 kHz | 96 slots | ~16 ms |
| 120 kHz | 192 slots | ~16 ms |
关键约束:UE在收到Activation MAC CE后,必须等待N_Activate_DEACT_SCell个slot后,才在SCell上执行激活操作(包括PDCCH监听、SRS传输等)。在此期间,UE需要完成:
1. SSB/CSI-RS同步获取(如果SCell未通过RRC配置为已同步)
2. BWP切换到firstActiveDownlinkBWP-Id指示的BWP
3. CSI测量初始化
4. TAG内的时间对齐校验
当SCell被MAC CE激活后,UE必须执行以下操作序列:
flowchart TD
A[收到Activation MAC CE] --> B{SCell之前是否Deactivated?}
B -->|是| C{firstActiveDownlinkBWP-Id<br/>是否为dormant BWP?}
B -->|"否(sCellState直接激活)"| C
C -->|否: 正常BWP| D[激活SCell<br/>时序: n + N_Activate]
C -->|是: dormant BWP| E[停止bwp-InactivityTimer<br/>激活dormant BWP]
D --> F[启动/重启<br/>sCellDeactivationTimer]
E --> F
F --> G{active DL BWP<br/>≠ dormant BWP?}
G -->|是| H[重新初始化Configured Grant Type 1]
G -->|否| I[等待后续BWP切换]
H --> J[触发PHR<br/>Power Headroom Report]
I --> K[正常SCell操作]
J --> K
K --> L[SRS传输 ✓]
K --> M[CSI上报 ✓]
K --> N[PDCCH监听 ✓]
K --> O[PUCCH传输 ✓]
K --> P[数据收发 ✓]
style D fill:#d4edda
style F fill:#fff3cd
去激活时的UE行为(触发条件:MAC CE去激活 / sCellDeactivationTimer超时 / SCG去激活):
重要细节:UE在去激活SCell上不得执行以下操作(TS 38.321 Section 5.9明确规定): - 不传输SRS - 不上报CSI(也不做CSI日志记录) - 不在UL-SCH上传输 - 不发起随机接入 - 不监听PDCCH(包括PDCCH for SCell和cross-carrier PDCCH)
| 特性 | 自调度(Self-Scheduling) | 跨载波调度(Cross-Carrier Scheduling) |
|---|---|---|
| DCI位置 | SCell自己的PDCCH | PCell(或其他调度小区)的PDCCH |
| UE行为 | 必须在SCell上监听PDCCH | SCell无需PDCCH监听,省电 |
| 配置IE | pdcch-ServingCellConfig不配置CIF |
pdcch-ServingCellConfig包含crossCarrierSchedulingConfig |
| 延迟 | 低——SCell直接调度 | 略高——需PCell转发调度信息 |
| 适用场景 | SCell信道质量好、FR1频段 | SCell覆盖弱(如FR2 mmWave)、或节能场景 |
| HARQ反馈 | PCell的PUCCH | PCell的PUCCH |
| 标准参考 | TS 38.213 Section 10.1 | TS 38.213 Section 10.1 + TS 38.331 CrossCarrierSchedulingConfig |
同一个TAG内的所有服务小区共享相同的TA值。SCell的tag-Id决定其归属:
不同频段的SCell通常分属不同TAG(因为传播时延不同)。例如: - n78 FDD SCell → TAG 0(与PCell同TA) - n258 TDD SCell(FR2)→ TAG 1(独立TA)
3GPP Release 18在5G-Advanced框架下引入了多项CA相关增强,其中SCell Dormancy(休眠)机制最为显著。
Rel-16引入了dormant BWP概念,Rel-18进一步扩展。当SCell激活但active BWP为dormant BWP时:
flowchart LR
A[SCell Deactivated] -->|MAC CE激活| B[SCell Activated<br/>dormant BWP]
B -->|DCI BWP切换| C[SCell Activated<br/>normal BWP]
C -->|DCI BWP切换| B
C -->|MAC CE去激活<br/>或Timer超时| A
B -->|MAC CE去激活| A
style B fill:#fff3cd
style C fill:#d4edda
节能效果:dormant BWP允许SCell保持"热待机"状态——保持时间同步和CSI测量,但不消耗PDCCH监听功耗。当有突发业务需求时,通过DCI即可在1-2个slot内切换到正常BWP开始数据传输,比完整的MAC CE激活流程快约10倍。
根据arxiv论文(2305.15890)分析,Rel-18网络节能工作项目引入了: - SCell without SS/PBCH Block:允许SCell不发送SSB,减少基站功耗 - 快速SCell激活:基于TRS(Tracking Reference Signal)的快速激活流程 - 增强SCell Activation/Deactivation MAC CE:支持TRS信息指示,加速UE同步
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| UE未回复RRCReconfigurationComplete | 配置参数超UE能力(如不支持的band组合) | 检查UECapabilityInformation中的ca-ParametersNR |
| UE回复RRCReconfigurationComplete但SCell未生效 | masterCellGroup解码失败(ASN.1编码错误) | 用Wireshark二次解码masterCellGroup字段 |
| RRCReconfiguration中频点错误 | absoluteFrequencySSB与实际广播频点不一致 | 对比SCell SIB1中的频点参数 |
| CSI测量配置冲突 | csi-ResourceConfigId与已有配置重复 | 检查所有serving cell的CSI配置ID唯一性 |
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| MAC CE发出后SCell无数据调度 | SCell激活时序未满足(UE尚未完成同步) | 检查DCI调度时序是否在N_Activate之后 |
| SCell激活后快速去激活 | sCellDeactivationTimer配置过短 | 检查RRC中的sCellDeactivationTimer值 |
| 跨载波调度失败 | CIF(Carrier Indicator Field)配置错误 | 确认crossCarrierSchedulingConfig中schedulingCellId正确 |
| SCell上HARQ-ACK丢失 | PUCCH资源未正确配置或TAG配置错误 | 检查SCell的PUCCH配置和tag-Id |
| ## 九、Wireshark/TShark抓包过滤命令 |
# 过滤5G NR RRC Reconfiguration消息
tshark -r capture.pcap -Y "nr-rrc.rrcReconfiguration"
# 过滤SCell添加相关的RRC消息(包含sCellToAddModList)
tshark -r capture.pcap -Y "nr-rrc.sCellToAddModList"
# 过滤MAC CE SCell Activation/Deactivation
tshark -r capture.pcap -Y "mac-nr.ce_lcid == 53 || mac-nr.ce_lcid == 54"
# 导出SCell配置详情
tshark -r capture.pcap -V -Y "nr-rrc.sCellIndex" 2>/dev/null | grep -A5 "sCellIndex\|physCellId\|absoluteFrequency"
# 统计SCell激活/去激活事件
tshark -r capture.pcap -Y "mac-nr.ce_lcid == 53" -T fields -e frame.number -e mac-nr.ce_lcid
Q1: RRC配置SCell后为什么不能直接传数据,必须经过MAC CE激活?
A: 这是3GPP为UE省电设计的核心机制。在CA场景下,UE可能配置了多个SCell(最多31个),如果全部同时激活,UE需要同时监听所有SCell的PDCCH、发送SRS、上报CSI,功耗极高。MAC CE激活机制让gNB可以按业务需求动态开关SCell——有突发流量时激活,空闲时去激活。一次RRC配置可以支持多次MAC CE激活/去激活循环,避免了每次都走重量级RRC过程的开销。
Q2: firstActiveDownlinkBWP-Id设为dormant BWP和设为正常BWP有什么区别?
A: 当firstActiveDownlinkBWP-Id指向正常BWP时,MAC CE激活后UE立即在SCell上开始PDCCH监听、SRS传输和CSI上报,时延约3ms(FR1 30kHz SCS)。当指向dormant BWP时,UE激活SCell后只执行CSI测量和SRS传输,不监听PDCCH,功耗显著降低。需要数据传输时,gNB通过DCI将BWP从dormant切换到正常BWP(1-2个slot),再开始调度。这种设计特别适合bursty业务模式(如网页浏览、视频缓冲),在业务静默期保持SCell在低功耗热待机状态。
Q3: SCell和PCell可以使用不同的Numerology(SCS/CP)吗?
A: 可以。3GPP TS 38.300明确规定,CA中不同CC可以使用不同的子载波间隔(SCS)和循环前缀(CP)。例如PCell使用15kHz SCS(FR1低频段),SCell使用120kHz SCS(FR2 mmWave)。但需要注意的是,不同Numerology的SCell通常属于不同的TAG,需要独立的TA管理。此外,HARQ-ACK反馈的时序也会因SCS不同而不同,需要在PUCCH上通过不同的K1值处理。
Q4: sCellDeactivationTimer配置过短会有什么问题?
A: 如果sCellDeactivationTimer配置过短(如sf40 = 40ms),SCell在短暂无数据传输后就会自动去激活。下次需要数据传输时又需要完整的MAC CE激活流程(约16ms),造成额外的时延和信令开销。特别是对于URLLC类业务,这种反复激活/去激活会严重影响时延性能。一般建议:eMBB场景配置sf200-sf640,URLLC场景配置sf1280或更长。但配置过长又会导致UE持续监听PDCCH浪费电量,需要在业务需求和省电之间取得平衡。
Q5: Rel-18的"SCell without SSB"机制如何工作?
A: 传统上,SCell需要广播SSB供UE进行同步和测量。Rel-18引入的"SCell without SS/PBCH Block"允许SCell在不发送SSB的情况下被配置和激活,大幅节省基站功耗。此时UE的同步依赖两种方式:(1) 通过PCell提供的定时信息推导SCell定时;(2) 使用CSI-RS或TRS进行精细同步。激活时序方面,Enhanced SCell Activation MAC CE可以携带TRS指示信息,帮助UE在无SSB的SCell上快速完成同步。这项增强主要面向FR1频段、同站址多载波场景,基站可关闭部分载波的SSB发射。
本文由「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 等场景全覆盖。
