首页 › deep-tech › HARQ重传与软合并:数据纠错保险

HARQ重传与软合并:数据包的"纠错保险"如何工作

想象你给朋友念一段电话号码。朋友没听清,让你再说一遍——但聪明的是,他不是把第一次听的直接扔掉,而是把两次听到的内容"叠加"起来,互相印证,拼出完整号码。这就是 HARQ(混合自动重传请求) 的核心思想:重传不是简单的"再来一次",而是"累积信息、逐步逼近正确结果"。

一、为什么需要HARQ?——无线信道的"丢包困境"

无线通信面临一个根本矛盾:电磁波在空气中传播时,会被建筑遮挡、被其他信号干扰、被接收机的噪声淹没。结果就是——数据包到达接收端时,可能已经面目全非。

解决数据出错,经典思路有两条路:

方案 原理 优点 缺点
前向纠错(FEC) 发送时加入冗余校验位,接收端自行纠错 不需要反馈,延迟低 冗余固定,信道好时浪费带宽,信道差时可能纠不过来
自动重传(ARQ) 接收端发现错误后请求重传 按需重传,不浪费带宽 需要等待反馈,延迟高;丢弃旧包,不利用已有信息

HARQ = FEC + ARQ 的合体进化版。它既发送冗余校验位(FEC的功劳),又在出错时重传(ARQ的功劳),更关键的是——它把每次传输的"软信息"都保留下来,合并使用。这就是"Hybrid"(混合)的真正含义。

误块率(BLER) vs SNR 对比示意:

  BLER
   1.0 |        ARQ(无合并,每次独立解码)
       |         \
       |          \
   0.5 |           \
       |            \    HARQ(软合并,累积增益)
       |             \________
   0.1 |              \       \________
       |               \               \________
   0.0 |________________\_______________________ SNR
                     0    5    10   15   20 (dB)

  → HARQ通过软合并,在相同SNR下获得更低的误块率

二、HARQ工作的完整流程——一个"快递签收"的类比

把数据传输想象成快递送货:

sequenceDiagram
    participant 发送端 as 发送端(基站/UE)
    participant 接收端 as 接收端(UE/基站)

    Note over 发送端,接收端: 第1次传输(初传)
    发送端->>接收端: 发送编码后的数据包(Transport Block)
    Note right of 接收端: 1. 接收信号并存入软缓冲区<br/>2. 尝试解码<br/>3. CRC校验 → 失败❌
    接收端-->>发送端: NACK(否定确认)

    Note over 发送端,接收端: 第2次传输(重传)
    发送端->>接收端: 发送冗余版本(不同编码比特)
    Note right of 接收端: 1. 接收重传信号<br/>2. 与软缓冲区数据合并<br/>3. 合并后重新解码<br/>4. CRC校验 → 成功✅
    接收端-->>发送端: ACK(确认)

    Note over 发送端,接收端: 传输完成,释放HARQ进程

关键细节拆解:

  1. 发送端:原始数据经过信道编码(5G用LDPC码,4G用Turbo码)后,加入CRC校验,通过物理信道发送
  2. 接收端:收到信号后,不解码结果本身,而是保留"软比特"(Soft Bit,即每个比特为0或1的概率信息,也叫LLR——对数似然比),存入软缓冲区
  3. 解码失败时:不丢弃软比特,而是等待重传
  4. 重传到达后:将新的软比特与缓冲区中旧的软比特逐位合并(相加),用合并后的结果再次解码
  5. 合并后解码成功的概率,远高于单独用任何一次传输解码的概率

工程直觉:这就好比你听一段录音,第一次有噪音听不清,录下来;第二次播放时你把两段录音叠加,噪音部分随机抵消,有用信号叠加增强,信噪比提高了。

三、软合并的两种武器:Chase合并 vs 增量冗余

软合并是HARQ的灵魂。它有两种实现方式,效果差异显著。

3.1 Chase合并(Chase Combining,CC)

原理:重传时发送完全相同的编码比特。接收端把多次收到的同一组比特的软值相加。

$$\text{LLR}{\text{combined}}(i) = \sum_k(i)$$}^{K} \text{LLR

其中 $K$ 是传输次数,$\text{LLR}_k(i)$ 是第 $k$ 次传输中第 $i$ 个比特的对数似然比。

效果:纯粹提高信噪比(SNR),相当于 $\sqrt{K}$ 倍的功率增益。两次传输约获得 3 dB 的SNR增益。

类比:同一张模糊的照片,多拍几次然后叠加——每张照片的信号一致,噪点随机,叠加后信噪比提升。

3.2 增量冗余(Incremental Redundancy,IR)

原理:重传时发送不同的编码比特(不同的冗余版本,Redundancy Version, RV)。每次重传携带新的校验信息。

效果:不仅获得SNR增益,还获得编码增益——因为等效码率降低了。

$$R_{\text{effective}} = \frac{K \times \text{信息比特数}}{\text{总发送比特数}}$$

每次重传都往"分母"加比特,等效码率持续下降,纠错能力持续增强。

类比:第一次给你看一张低分辨率图片(信息+少量校验),第二次不是重复发同一张图,而是额外发一张不同角度的高频细节图——两次叠加后,你得到的不是简单的亮度增强,而是清晰度的质变。

3.3 两种方式对比

对比维度 Chase合并(CC) 增量冗余(IR)
重传内容 与初传完全相同 不同的冗余版本(新校验比特)
增益类型 仅SNR增益(~3dB/次) SNR增益 + 编码增益
总增益 较低(约2-3dB) 较高(比CC高约2dB)
软缓冲区需求 较小(同一段数据重复覆盖) 较大(需要累积不同版本的比特)
实现复杂度 低 高(需要管理冗余版本和循环缓冲区)
LTE/5G中的使用 辅助方式 主流方式

为什么5G主要用IR? 因为频谱效率。IR每次重传都带来"新信息",而CC只是简单重复。在宝贵的无线频谱上,每一次传输都应该物尽其用。

四、循环缓冲区与冗余版本——IR的核心引擎

增量冗余之所以能发送"不同的编码比特",背后靠的是一个精巧的设计:循环缓冲区(Circular Buffer)。

4.1 编码→打孔→传输的流水线

flowchart TD
    A["原始信息比特<br/>(Transport Block)"] --> B["添加CRC"]
    B --> C["码块分段<br/>(Code Block Segmentation)"]
    C --> D["LDPC编码<br/>(母码率 1/3 ~ 1/5)"]
    D --> E["写入循环缓冲区<br/>(Circular Buffer)"]
    E --> F["按RV选取比特<br/>(Rate Matching)"]
    F --> G["调制映射<br/>(QPSK/16QAM/64QAM)"]
    G --> H["发射信号"]

    style E fill:#ff9,stroke:#333
    style F fill:#f96,stroke:#333

关键步骤解释:

  1. LDPC编码:5G NR的数据信道使用LDPC码。编码器输出的码率很低(母码率约1/3或1/5),产生大量的校验比特。比如100个信息比特,编码后可能产生300-500个编码比特。

  2. 循环缓冲区:所有编码比特被依次写入一个环形缓冲区。结构如下:

循环缓冲区结构示意:

位置:  [0 ............ N/3 ............ 2N/3 ............ N]
       |   系统比特    |    校验1      |    校验2       |
       | (原始信息)    |  (Parity 1)   |  (Parity 2)    |
       ↑              ↑               ↑                ↑
      RV=0起始       RV=1起始        RV=2起始         RV=3起始
  1. 冗余版本(RV):5G NR定义了4个冗余版本(RV0, RV1, RV2, RV3),每个RV指向缓冲区的不同起始位置:
冗余版本 起始位置 主要内容 典型用途
RV0 缓冲区起始 系统比特为主(信息比特) 初传
RV2 ~1/3处 混合比特 重传可选
RV3 ~2/3处 混合比特 重传可选
RV1 ~末尾 校验比特为主 重传(提供新冗余)
  1. 速率匹配:根据分配的物理资源块数量,从RV指向的起始位置开始,依次选取指定数量的比特。选少了等效码率高(传得快但纠错弱),选多了等效码率低(传得慢但纠错强)。

4.2 IR的合并效果

初传 (RV0): 发送 [系统比特 + 部分校验1]
重传 (RV1): 发送 [校验2 + 部分校验1]

合并后: 相当于发送了 [系统比特 + 校验1 + 校验2] 的完整母码
等效码率: 从初传的 0.5 → 合并后的 0.25(纠错能力翻倍!)

工程调试技巧:在路测log中,如果你看到连续多次NACK后最终ACK,通常说明信道条件差,HARQ在"积攒"冗余信息。如果频繁出现4次以上重传,需要检查覆盖或干扰问题。

五、HARQ进程——如何让重传不阻塞新数据?

如果HARQ只是简单的"发→等反馈→重传",那每次重传之间都要"干等"反馈,吞吐量会暴跌。解决方案是:多个HARQ进程并行工作。

5.1 停等协议的本质

每个HARQ进程本质上是一个停等协议(Stop-and-Wait):

sequenceDiagram
    participant TX as 发送端
    participant RX as 接收端

    Note over TX,RX: HARQ进程 #0
    TX->>RX: 数据包 #0(初传)
    Note over TX: 等待反馈...<br/>这段时间不能发新数据!
    RX-->>TX: NACK
    TX->>RX: 数据包 #0(重传)
    RX-->>TX: ACK

    Note over TX,RX: 进程 #0 结束,才能开始下一个

问题:从发送到收到ACK/NACK,中间有RTT(Round Trip Time)的等待。在5G NR中,这个等待时间约为几个时隙(slot)。如果只用一个进程,信道利用率极低。

5.2 并行进程流水线

解决方案:启动多个独立的HARQ进程,当一个进程在等反馈时,其他进程继续发送新数据。就像工厂流水线:

gantt
    title HARQ多进程并行传输时序(5G NR示例)
    dateFormat X
    axisFormat %s

    section 进程0
    初传 TB#0     :p0_1, 0, 1
    等待反馈       :p0_w, 1, 4
    重传 TB#0     :p0_2, 4, 5

    section 进程1
    初传 TB#1     :p1_1, 1, 2
    等待反馈       :p1_w, 2, 5

    section 进程2
    初传 TB#2     :p2_1, 2, 3
    等待反馈       :p2_w, 3, 6

    section 进程3
    初传 TB#3     :p3_1, 3, 4
    等待反馈       :p3_w, 4, 7
系统 最大HARQ进程数 反馈时序
LTE FDD 8 固定4ms后反馈
LTE TDD 4-15(取决于上下行配比) 随配比变化
5G NR 最多16 灵活可配(DCI指示K1值)

5G NR的关键改进:反馈时序不再是固定值,而是由DCI(下行控制信息)中的 PDSCH-to-HARQ_feedback timing indicator 字段动态指示。这使得5G能根据业务需求和调度策略灵活调整HARQ时序。

六、5G NR的HARQ三大革新

相比4G LTE,5G NR在HARQ方面做了三个关键改进,每一个都直指实际工程痛点。

6.1 革新一:CBG级重传——不再"整包返工"

在4G LTE中,如果一个大传输块(TB)中只有一小部分出错,也必须重传整个TB。这就像一本100页的文档只有第37页有个错别字,你却要重印整本——浪费严重。

5G NR引入了 CBG(Code Block Group,码块组) 概念:

传输块(TB)结构:

┌─────────────────────────────────────────────────┐
│              Transport Block (TB)                │
├──────────┬──────────┬──────────┬────────────────┤
│ CBG #0   │ CBG #1   │ CBG #2   │ CBG #3         │
│┌──┬──┬──┐│┌──┬──┬──┐│┌──┬──┬──┐│┌──┬──┐         │
││CB│CB│CB│││CB│CB│CB│││CB│CB│CB│││CB│CB│         │
│└──┴──┴──┘│└──┴──┴──┘│└──┴──┴──┘│└──┴──┘         │
└──────────┴──────────┴──────────┴────────────────┘
     ✅         ❌         ✅         ✅
                         只重传这个CBG!

工作机制: - TB被分段为多个码块(CB),CB被分组为码块组(CBG) - 接收端为每个CBG独立反馈ACK/NACK - 重传时只发送失败的CBG,而非整个TB

效率提升:假设一个TB有8个CBG,只有1个出错。传统方式重传整个TB需要100%资源,CBG方式只需 12.5% 的资源。

调试场景:在5G基站日志中查看HARQ反馈时,如果开启了CBG模式,你会看到一组bitmap(如 1011 0111),每个bit对应一个CBG的ACK/NACK状态。如果某个CBG频繁NACK,可能指向该频段的局部干扰。

6.2 革新二:灵活HARQ时序

4G LTE的HARQ反馈时序是硬编码的(FDD固定4ms),5G NR改为动态可配:

$$\text{反馈时刻} = \text{PDSCH时隙} + K_1$$

其中 $K_1$ 由DCI动态指示,取值范围1-15个时隙。

为什么这样设计? - URLLC场景:$K_1$ 设小(如1-2个时隙),快速反馈,满足低延迟要求 - eMBB场景:$K_1$ 设大(如8-15个时隙),给接收端更多处理时间,提高解码成功率 - TDD灵活配比:不同上下行配比下,都能找到合适的反馈时机

6.3 革新三:异步HARQ

4G LTE的下行HARQ是同步的——重传必须发生在固定的子帧位置。5G NR改为异步HARQ——调度器可以在任意时隙发起重传。

好处: - 调度器有完全的自由度,可以结合信道状态选择最佳重传时机 - 支持优先级调度:如果有更紧急的数据,可以推迟重传 - 配合mini-slot(迷你时隙),可以实现超快速重传

七、双层重传防线:HARQ + RLC ARQ

在协议栈中,HARQ不是孤军奋战的。它和RLC层的ARQ构成了两道防线:

flowchart TB
    subgraph "第一道防线:MAC层 HARQ"
        A["数据传输"] --> B{"CRC校验"}
        B -->|通过| C["ACK → 完成"]
        B -->|失败| D["NACK → 重传<br/>(软合并解码)"]
        D --> E{"合并解码"}
        E -->|通过| C
        E -->|失败,<br/>达到最大次数| F["放弃,交给RLC层"]
    end

    subgraph "第二道防线:RLC层 ARQ"
        F --> G["RLC检测SN缺口<br/>或收到STATUS PDU"]
        G --> H["RLC ARQ重传<br/>(不合并,完全重发)"]
        H --> I{"RLC重传成功?"}
        I -->|是| J["数据完整交付"]
        I -->|否,<br/>达到最大重传| K["触发RRC重建立<br/>或无线链路失败"]
    end

    style A fill:#4CAF50,color:#fff
    style F fill:#FF9800,color:#fff
    style K fill:#F44336,color:#fff
对比维度 MAC层HARQ RLC层ARQ
工作层级 MAC子层(物理层协助) RLC子层
反馈方式 单比特ACK/NACK(PUCCH/PUSCH) STATUS PDU(携带SN号段)
重传单位 Transport Block或CBG RLC PDU
合并方式 软合并(累积信息) 不合并(丢弃旧包,完全重发)
延迟 极低(1-4个时隙) 较高(需要等STATUS报告)
最大重传次数 通常3-4次 可配置(如32次)
适用模式 所有数据传输 仅RLC AM(确认模式)

为什么需要两道防线?

类比:HARQ是急诊室的医生,快速处理大部分病例;RLC ARQ是专科医院,处理急诊室解决不了的疑难杂症。

八、从比特到空中信号:HARQ在完整链路中的位置

把视角拉远,看看HARQ在整个5G下行数据传输链路中处于什么位置:

完整的数据传输处理链路:

应用层数据
    ↓
PDCP层(头压缩、加密)
    ↓
RLC层(分段/级联、ARQ重传)← 第二道防线
    ↓
MAC层(调度、HARQ)← 第一道防线在这里
    ↓
    ├── 添加MAC头和CRC
    ├── HARQ实体管理(进程分配)
    ↓
物理层处理
    ├── 传输块添加CRC
    ├── 码块分段 + 每个CB添加CRC
    ├── LDPC信道编码(母码率1/3~1/5)
    ├── 速率匹配(循环缓冲区 + RV选择)← 软合并的关键
    ├── 调制(QPSK/16QAM/64QAM/256QAM)
    ├── 层映射 + 预编码(MIMO)
    ├── 资源元素映射(RE Mapping)
    ├── OFDM信号生成
    ↓
天线发射 → 无线信道 → 接收端
    ↓
接收端逆向处理 + 软合并解码 → CRC校验 → ACK/NACK

九、实战场景:工程师何时会用到HARQ知识?

场景1:路测分析中的重传率异常

在路测工具(如TEMS、鼎利Pilot)中,你会看到 BLER(Block Error Rate) 和 HARQ重传次数 的统计。正常的初始BLER应在10%左右(这是AMC自适应编码的目标值),经过1-2次HARQ重传后残余BLER应接近0。

异常排查: - 初始BLER > 30% → 覆盖问题或强干扰,检查RSRP/RSRQ/SINR - HARQ重传4次仍失败率高 → 深衰落区域,可能需要增加基站或调整天线 - 重传成功率低但初始BLER正常 → 可能是软缓冲区溢出或调度器配置问题

场景2:5G基站参数优化

在gNB的HARQ相关参数配置中,常见的可调项包括:

参数 含义 典型值 调优建议
maxHarqTx HARQ最大重传次数 3-4 业务对延迟敏感时设小,对可靠性敏感时设大
harq-CodebookSize HARQ码本大小(ACK/NACK位数) 1-16 CBG模式下需要更大码本
nrofHARQ-Processes HARQ进程数 8-16 大带宽、高负载时可增大
maxCBGperTB 每TB的最大CBG数 2/4/6/8 大TB时增大CBG粒度提高效率

场景3:UL HARQ问题排查

上行HARQ与下行有一个关键区别:基站控制上行重传的调度。如果UE的上行HARQ反馈NACK,基站必须在DCI中重新调度该UE的上行重传资源。

常见问题:UE上行BLER高,但基站似乎没有及时调度重传。排查方向: - 检查PHR(Power Headroom Report)——UE可能功率不足 - 检查BSR(Buffer Status Report)——UE是否有数据待发 - 检查DCI format 0_1中的NDI(New Data Indicator)——如果NDI翻转了,说明基站认为前一个数据已经成功,没有触发重传

场景4:理解NDI(New Data Indicator)的含义

NDI是HARQ协议中一个精巧的信号:

NDI状态 含义
与上次相同(Toggle=0) 这是一个重传,接收端应进行软合并
与上次不同(Toggle=1) 这是一个新数据,接收端应清空软缓冲区

调试陷阱:如果看到路测log中NDI频繁翻转但CRC一直失败,不要误以为是"新数据一直在失败"——每次NDI翻转意味着前一次HARQ进程被强制释放(可能是调度器超时),新的TB使用了该进程。需要检查为什么前一次传输未被正确反馈。

十、HARQ性能的数学直觉

软合并的增益可以用一个简化的公式理解:

Chase合并的SNR增益:

$$\text{SNR}{\text{combined}} = \sum$$}^{K} \text{SNR}_k \approx K \cdot \overline{\text{SNR}

两次传输约获得 3 dB 增益($10\log_{10}(2) \approx 3\text{dB}$),三次约 4.8 dB。

增量冗余的额外编码增益:

$$\text{FER}{\text{IR}} \approx f\left(\frac{E_b}{N_0}, R\right)$$}

其中等效码率 $R_{\text{eff}} = R_0 / K$($R_0$为初传码率,$K$为传输次数)。码率每降低一半,编码增益约增加 1-2 dB。

综合来看:

传输次数 Chase合并增益 增量冗余增益
1次(初传) 0 dB 0 dB
2次 ~3 dB ~5 dB
3次 ~4.8 dB ~7.5 dB
4次 ~6 dB ~9 dB

IR比CC多出的2-3dB,在小区边缘区域就是"能上网"和"断线"的区别。

十一、4G vs 5G HARQ全对比

特性 LTE (4G) NR (5G)
信道编码 Turbo码 LDPC码
下行HARQ 异步(FDD异步,TDD同步) 异步
上行HARQ 同步 异步
最大进程数 8 16
反馈时序 固定(FDD 4ms) 灵活(DCI指示 $K_1$)
重传粒度 整个TB TB或CBG
HARQ-ACK码本 半静态 Type 1(半静态)/ Type 2(动态)
软缓冲区管理 较简单 支持按CBG缓冲,更高效

常见问题

Q1: HARQ和ARQ到底是什么关系?是替代还是互补?

A: 是互补关系,不是替代。HARQ工作在MAC层,提供快速的物理层重传(1-4个时隙级);ARQ工作在RLC层,是兜底机制。HARQ能解决90%以上的传输错误,剩下的交给ARQ。两者协同确保端到端数据完整性。

Q2: 为什么5G用LDPC码替代了4G的Turbo码?这对HARQ有什么影响?

A: LDPC码在长码块(大TB)场景下性能优于Turbo码,且并行度更高,更适合5G的大带宽高速率需求。对HARQ的影响是:LDPC支持更灵活的码块分段和CBG粒度,使得5G的CBG级重传更高效。LDPC的两个基图(Base Graph 1和2)分别针对大块和小块数据优化。

Q3: 软缓冲区溢出会怎样?

A: 接收端的软缓冲区大小是有限的(UE能力上报中包含)。如果TB过大或重传次数过多,软缓冲区可能装不下。此时较早的软比特会被覆盖丢弃,导致合并增益下降。5G通过限制最大CB数量和CBG粒度来管理缓冲区开销。

Q4: 实际网络中HARQ重传概率大概是多少?

A: 正常情况下,AMC(自适应调制编码)会将初始BLER控制在10%左右——也就是说大约10%的TB需要第一次HARQ重传。经过1次重传后残余错误率通常降到1%以下。如果重传率持续超过20%,通常意味着覆盖或干扰问题。在高速移动场景(高铁、车载)中,重传率会显著上升。

Q5: TDD网络中HARQ时序为什么比FDD复杂?

A: 因为TDD的上下行切换不是连续的——下行数据发送后,可能要等好几个时隙才轮到上行(用于发ACK/NACK),反之亦然。不同的上下行配比(如DDDSU、DSDDDSUU等)会导致不同的HARQ时序。5G NR通过灵活的 $K_1$ 指示解决了这个问题,但配置错误可能导致ACK/NACK无法及时发送,影响吞吐量。

参考来源

  1. 5G HARQ - ShareTechnote — 5G HARQ与LTE HARQ对比,含冗余版本和循环缓冲区详解
  2. How HARQ Soft Combining Actually Works — CafeTele — Chase合并与增量冗余的深入技术分析
  3. 5G网络不掉线的秘密:HARQ重传与软合并 - CSDN博客 — 中文HARQ原理与NR实战配置案例
  4. 5G HARQ Explained - Mohamed ElAdawi — HARQ进程、ACK/NACK时序、码本类型完整指南
  5. 5G NR中的HARQ机制基本原理 - OFweek通信网 — HARQ传输策略与性能分析

本文由「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学通信知识星球海报-扫码加入