首页 › deep-tech › HARQ重传:软合并与增量冗余的纠错艺术

HARQ重传:软合并与增量冗余的纠错艺术

从一个日常类比说起

想象你通过快递寄一份100页的合同给客户。有两种策略保证客户收到完整内容:

策略A(ARQ):先寄100页,客户收到后逐页检查,发现第37页有污渍,打电话告诉你"第37页坏了,请重发"。你重新寄第37页。问题在于——每次往返都需要时间,而且重发的还是同样可能有污渍的纸。

策略B(FEC):你学聪明了,给每页合同额外附上3页"校验页"。即使有几页被污损,客户也能用校验页恢复原文。问题在于——不管有没有污损,校验页都要寄,白白浪费了快递费。

策略C(HARQ):把两种策略结合起来。第一次只附少量校验页(省快递费);如果客户发现确实有污损且校验页不够恢复,再针对性地补发更多校验页。而且,客户不会把第一次收到的那份扔掉——他会把"有污渍的原文"和"新补的校验页"放在一起恢复。这就是HARQ(混合自动重传请求)的核心思想:FEC + ARQ + 软信息保留合并。


一、纠错技术的三代演进

在深入HARQ之前,我们需要理解无线通信中为什么会需要这么复杂的机制。无线信道是个极其恶劣的传输环境——信号会被建筑物反射、被雨雾吸收、被其他用户干扰。误码是常态,不是意外。

flowchart TD
    A["ARQ<br/>纯重传"] --> C["HARQ<br/>FEC + ARQ + 软合并"]
    B["FEC<br/>纯前向纠错"] --> C

    A1["发现错误 → 丢弃 → 重传<br/>简单但慢"] --> A
    B1["预先加冗余 → 接收端自行纠正<br/>快但浪费带宽"] --> B
    C1["先少加冗余<br/>不够再补,且保留软信息合并"] --> C

    style C fill:#e1f5fe,stroke:#0288d1,stroke-width:3px
    style C1 fill:#e1f5fe,stroke:#0288d1

三者的核心区别:

特性 ARQ FEC HARQ
纠错方式 重传原始数据 预加冗余自行纠正 冗余 + 重传 + 合并
时延 高(多次往返) 低(一次传输) 中等(首次快,需要时补)
带宽效率 好(信道好时不浪费) 差(始终带冗余) 好(按需增加冗余)
可靠性 依赖信道质量 受限于冗余量 渐进增强,很高
适用场景 有线网络 卫星广播 蜂窝移动通信

为什么移动通信选择HARQ? 因为无线信道的质量是动态变化的——一秒钟前信号很好,下一秒可能因为用户转了个弯就变差了。FEC按最差情况预留冗余太浪费,ARQ每次只重传原始数据效率太低。HARQ则巧妙地做到了"按需增强"——好信道时几乎零开销,差信道时逐步加码。


二、HARQ的两种软合并机制

HARQ的"Hybrid"(混合)体现在它把FEC和ARQ融合在了一起,而它最精妙的地方在于软合并(Soft Combining)——接收端不会丢弃之前解码失败的数据,而是保留"软信息"与重传数据合并后再解码。

2.1 什么是"软信息"

当接收端收到一个比特的模拟信号时,它不是简单地判定为0或1(硬判决),而是保留一个对数似然比(LLR):

$$LLR(b_i) = \ln\frac{P(b_i=0|\mathbf{y})}{P(b_i=1|\mathbf{y})}$$

其中 $\mathbf{y}$ 是接收到的信号。LLR的绝对值越大,表示这个比特越确信是0或1;绝对值越小,表示越不确定。这些"不确定"的比特正是出错的地方。软合并就是要把多次传输的LLR加在一起,让不确定的比特逐渐变确定。

2.2 Chase Combining(追赶合并)

这是最简单的软合并方式,由David Chase在1985年提出。

原理:重传与初次传输发送完全相同的编码比特(即相同的冗余版本RV=0)。接收端将两次接收的LLR逐比特相加。

$$LLR_{combined}(b_i) = LLR_1(b_i) + LLR_2(b_i)$$

类比:照片在雾天拍的太模糊。你把相机固定在三脚架上,同一场景连拍两张,然后把两张照片的像素值平均——噪声被平均掉了,信号保持不变,等效信噪比(SNR)提升了约3dB。

效果:相当于将编码速率不变的前提下,将有效SNR提升了 $10\log_{10}N$ dB(N为传输次数)。

2.3 Incremental Redundancy(增量冗余)

这是性能更优的方式,也是5G NR默认采用的HARQ方案。

原理:重传时发送不同于初次传输的编码比特——即不同的冗余版本(RV)。接收端将不同RV的LLR拼接在一起,等效于降低了编码速率,获得了额外的编码增益。

类比:你第一次寄合同,附了1页校验摘要。客户说不够恢复,你这次不重寄原合同了,而是补寄2页更详细的校验信息。客户手头有了原始合同 + 两轮校验信息,纠正能力大大增强。

效果:不仅获得了SNR增益,还获得了编码增益。编码速率从第一次传输的 $R$ 降低到 $\frac{R}{N}$(N次传输后),纠错能力随传输次数显著增强。

2.4 两种方式对比

对比维度 Chase Combining Incremental Redundancy
重传内容 与初传完全相同 不同的冗余版本
合并方式 LLR逐比特相加 LLR拼接(补充新比特)
增益来源 仅SNR增益(信号累加) SNR增益 + 编码增益
等效码率 不变 逐次降低
实现复杂度 低(无需管理RV) 高(需管理RV和循环缓冲区)
性能 好(尤其在中等SNR) 更好(尤其在低SNR区域)
适用场景 简单系统 5G NR / LTE
flowchart LR
    subgraph CC["Chase Combining(追赶合并)"]
        direction TB
        CC1["初传: [A B C D]<br/>RV=0"]
        CC2["重传: [A B C D]<br/>RV=0(完全相同)"]
        CC3["合并: [A+A  B+B  C+C  D+D]<br/>SNR提升,码率不变"]
        CC1 --> CC3
        CC2 --> CC3
    end

    subgraph IR["Incremental Redundancy(增量冗余)"]
        direction TB
        IR1["初传: [A B C D]<br/>RV=0(系统比特+少量校验)"]
        IR2["重传: [E F G H]<br/>RV=2(新的校验比特)"]
        IR3["合并: [A B C D E F G H]<br/>码率减半,编码增益+SNR增益"]
        IR1 --> IR3
        IR2 --> IR3
    end

    style CC fill:#fff3e0
    style IR fill:#e8f5e9

三、循环缓冲区与冗余版本(RV)

增量冗余的核心问题是:重传时应该发送哪些编码比特? 5G NR用一种优雅的机制来解决这个问题——循环缓冲区(Circular Buffer)。

3.1 编码比特的产生

以5G NR数据信道使用的LDPC码为例,一个传输块(TB)经过以下处理链:

  1. TB添加CRC(24位)
  2. 码块分段(Code Block Segmentation):大TB分割成多个码块(CB),每个CB添加自己的CRC
  3. LDPC编码:每个CB被编码成更长的码字。LDPC支持两种基图(Base Graph): - BG1:适合大块、高码率(eMBB大数据量) - BG2:适合小块、低码率(URLLC/小包)
  4. 速率匹配(Rate Matching):将编码后的比特通过循环缓冲区进行挑选和打孔,适配实际分配的物理资源

3.2 循环缓冲区的工作原理

LDPC编码器输出的比特被写入一个环形缓冲区。不同的冗余版本(RV)对应缓冲区中的不同起始位置:

$$RV\text{ 起始位置} = k_0 \cdot N_{cb}$$

其中 $k_0$ 是由RV值决定的归一化偏移, $N_{cb}$ 是循环缓冲区的大小。

5G NR定义了4个冗余版本:

RV值 典型用途 在循环缓冲区中的位置 特点
RV 0 初次传输 缓冲区起始位置(0) 包含完整系统比特,自可解码
RV 2 第一次重传 约1/3处 包含新校验比特
RV 3 第二次重传 约2/3处 包含更多新校验比特
RV 1 第三次重传 约1/6处 补充遗漏的校验比特

"自可解码"是什么意思? 意味着即使没有之前的传输,仅凭RV 0本身就能独立解码(因为它包含完整的系统信息比特)。这在某些场景下非常重要——比如UE错过了之前的传输,直接收到了重传。

flowchart TD
    subgraph CB["循环缓冲区(Circular Buffer)"]
        direction LR
        B0["系统比特<br/>(原始数据)"] --> P1["校验比特1<br/>(LDPC校验)"]
        P1 --> P2["校验比特2"]
        P2 --> P3["额外校验"]
        P3 --> B0

        RV0["|← RV 0 从这里开始 →|"]
        RV2["         |← RV 2 从这里开始 →|"]
        RV3["                   |← RV 3 从这里开始 →|"]
    end

    subgraph Select["速率匹配选取"]
        S1["初传 (RV=0): 选取 [系统比特 + 部分校验1]<br/>码率较高,如 0.5"]
        S2["重传1 (RV=2): 选取 [校验比特2 + 部分额外校验]<br/>新增冗余信息"]
        S3["合并后: [系统比特 + 校验1 + 校验2 + 部分额外校验]<br/>等效码率降低至 ~0.25"]
    end

    B0 -.-> S1
    P2 -.-> S2
    B0 -.-> S3
    P1 -.-> S3
    P2 -.-> S3

    style B0 fill:#bbdefb
    style P1 fill:#c8e6c9
    style P2 fill:#fff9c4
    style P3 fill:#ffccbc

3.3 为什么是RV 0→2→3→1这个顺序?

你可能好奇为什么不是简单的0→1→2→3。这是因为5G NR经过优化设计:

这种非等间隔选取确保了每次重传都能最大化新增的编码增益,而不是简单地均匀扫描缓冲区。


四、HARQ进程与流水线机制

4.1 停等协议的效率瓶颈

HARQ本质上是一个停等协议(Stop-and-Wait)——发送方发完数据后必须停下来等待接收方的ACK/NACK反馈。如果只有一个HARQ进程,数据传输的时间线是这样的:

时间 → |发送数据| 等待解码 | 等待反馈 | 再发送 | ...
         ████████   ░░░░░░   ░░░░░░  ████████

大量时间被浪费在"等待"上。在5G NR的典型配置中,从PDSCH发送到收到HARQ-ACK反馈需要约4-8个时隙(取决于K1参数配置),这意味着如果只有一个HARQ进程,信道的利用率可能不到20%。

4.2 多进程流水线——解决方案

5G NR的解决思路和CPU流水线一样——并行处理。定义多个独立的HARQ进程(5G NR最多支持16个),每个进程独立地执行"发送→等待反馈→重传/新传"的循环。

进程0: |发送| 等待 |等待|  收到ACK |新传| 等待 |...
进程1:      |发送| 等待 |等待| 收到ACK |新传| ...
进程2:           |发送| 等待 |等待|收到NACK|重传|...
...
进程15:                              |发送| 等待 |...

这样,虽然每个进程都在"停等",但多个进程交织在一起,信道始终被充分利用。

4.3 HARQ进程号(HPN)的管理

每个HARQ进程有一个唯一的编号(0~15)。基站通过DCI(下行控制信息)告诉UE当前调度的是哪个HARQ进程号,以及两个关键标志位:

DCI字段 含义 值与操作
NDI(New Data Indicator) 新数据指示 翻转=新传;不变=重传
RV(Redundancy Version) 冗余版本 0/1/2/3,指示当前传输的RV
HARQ Process Number 进程号 0~15

NDI是一个巧妙的设计:每次新传时NDI翻转(0→1或1→0),重传时NDI不变。UE通过检测NDI是否翻转来判断"这是一次新传还是重传",同时也会触发UE清空该进程的软缓冲区——因为新数据和旧数据不能混在一起合并。


五、5G NR HARQ时序详解

5.1 下行HARQ时序

5G NR的下行HARQ时序由几个关键参数控制:

sequenceDiagram
    participant gNB as 基站(gNB)
    participant UE as 手机(UE)

    Note over gNB,UE: K0=0: PDCCH与PDSCH同时隙
    gNB->>UE: PDCCH (DCI调度, RV=0, NDI翻转)
    gNB->>UE: PDSCH (数据, slot n)

    Note over gNB,UE: K1=4: PDSCH后第4个slot反馈
    Note over UE: UE解码PDSCH (slot n ~ n+3)
    UE->>UE: 解码失败 → 生成NACK
    UE->>gNB: PUCCH: NACK (slot n+K1)

    Note over gNB,UE: 基站收到NACK,调度重传
    gNB->>UE: PDCCH (DCI调度, RV=2, NDI不变)
    gNB->>UE: PDSCH (重传数据, slot m)

    Note over UE: UE软合并: LLR(RV=0) + LLR(RV=2)
    Note over UE: 合并后解码成功 → 生成ACK
    UE->>gNB: PUCCH: ACK (slot m+K1)

关键参数:

参数 含义 配置方式 典型值
K0 PDCCH到PDSCH的时隙偏移 RRC参数 k0 0(同时隙)
K1 PDSCH到HARQ-ACK反馈的时隙偏移 RRC参数 dl-DataToUL-ACK 1~15,常见4~8
K2 DCI到PUSCH的时隙偏移(上行) RRC参数 k2 2~32

5.2 与LTE HARQ的关键差异

对比维度 LTE 5G NR
下行HARQ 异步、自适应 异步、自适应(相同)
上行HARQ 同步(固定时序) 异步(灵活调度)
HARQ进程数 下行8个(FDD) 最多16个
ACK/NACK时序 固定(4ms for FDD) 灵活(K1由RRC配置)
重传粒度 仅TB级 TB级 + CBG级
信道编码 Turbo码 LDPC码(数据)/ Polar码(控制)

5G NR最大的改进是上行也采用异步HARQ。在LTE中,上行HARQ是同步的——如果PHICH返回NACK,UE必须在固定的时间窗口重传,基站不能灵活调度。5G NR取消了这一限制,基站可以通过DCI灵活调度上行重传的时频资源和MCS,对TDD等非对称帧结构更友好。


六、CBG级重传——5G NR的精细化创新

6.1 问题:TB级重传的浪费

在5G NR中,一个传输块(TB)可能非常大(eMBB场景下可达数十万比特)。TB被分割成多个码块(CB),每个CB独立编码并添加CRC。

问题来了:如果100个CB中只有2个解码失败了,传统的TB级重传会把100个CB全部重发——98%是浪费!

6.2 CBG方案

5G NR引入了码块组(CBG)的概念:

  1. 将TB分割出的多个CB分成若干组(CBG)
  2. 每个CBG独立进行HARQ-ACK反馈
  3. 重传时只传失败的CBG
参数 取值 说明
maxCodeBlockGroupsPerTransportBlock 1/2/4/8 每个TB最多分几个CBG
CBGTI(DCI字段) 位图 指示哪些CBG被(重)传输
CBGFI(DCI字段) 0/1 指示UE是否清空对应CBG的软缓冲区

举例:一个TB被分成8个CB,配置为4个CBG(每组2个CB)。如果只有CBG#2解码失败,DCI中的CBGTI=0100,表示只重传CBG#2的2个CB。资源开销仅为全TB重传的25%。

6.3 CBG的代价

天下没有免费的午餐。CBG级重传带来了以下代价: - DCI开销增加:需要CBGTI位图字段,DCI负载增大 - HARQ-ACK码本增大:从1bit/TB变成N bit/TB - 软缓冲区管理更复杂:需要按CBG管理软信息

因此,CBG主要适用于大TB、高MCS、eMBB场景。对于小包(URLLC),TB本身就不大,CBG带来的收益有限。


七、HARQ在现网中的实战意义

7.1 工程师在哪里会遇到HARQ

场景 与HARQ的关系
吞吐量异常排查 高重传率会严重拉低有效吞吐量。检查HARQ重传统计是排障第一步
小区边缘优化 边缘用户SNR低,HARQ重传频繁。优化功率控制或切换阈值
时延敏感业务调优 URLCC业务对重传次数有严格要求。需要优化MCS选择策略(外环链路自适应)
Massive MIMO场景 多用户配对时,MU干扰可能导致突发性解码失败,HARQ是兜底机制
TDD配比优化 上下行配比影响K1时序选择,进而影响HARQ往返时间

7.2 常见调试陷阱

  1. NDI误解导致的软缓冲区污染:如果UE误将重传判断为新传(比如NDI因DCI丢失被误判翻转),会清空软缓冲区,导致之前积累的软信息全部丢失。在log分析中,检查NDI翻转序列是否合理是基本操作。

  2. K1配置不当导致ACK/NACK错位:K1值必须与UE的处理能力匹配。如果K1设置太小(如设为1),UE可能来不及完成PDSCH解码就要求反馈,导致虚假NACK。5G NR引入了UE能力等级(UE Capability)来约束最小K1。

  3. CBG重传中的CBGFI遗漏:如果基站设置了CBGFI=0(不清空软缓冲区),但之前该CBG的软信息已经被后续新传覆盖,会导致合并了不相关的软信息,解码必然失败。

  4. 软缓冲区溢出:UE的HARQ软缓冲区大小是有限的(由UE能力决定)。如果同时有太多HARQ进程处于活跃状态,软缓冲区可能不够用,导致部分软信息被丢弃。

7.3 关键日志字段

在分析5G NR HARQ问题时,关注以下字段:


八、从数学角度理解软合并的增益

8.1 Chase Combining的SNR增益

假设每次传输经历独立的瑞利衰落,第 $i$ 次传输的接收信号为:

$$y_i = h_i \cdot x + n_i$$

其中 $h_i$ 是信道增益,$n_i$ 是噪声。Chase Combining后的等效LLR为:

$$LLR_{CC} = \sum_{i=1}^{N} \frac{|h_i|^2}{\sigma^2} \cdot x$$

等效SNR为各次传输SNR之和:

$$SNR_{CC} = \sum_{i=1}^{N} SNR_i$$

如果是理想情况(各次SNR相同),N次传输后SNR提升 $10\log_{10}N$ dB。但注意——编码速率没有改变,所以纠错能力的提升完全来自于信号质量的改善。

8.2 Incremental Redundancy的编码增益

IR合并后,等效编码速率为:

$$R_{eq} = \frac{K}{N_{total}} = \frac{K}{\sum_{i=1}^{N} E_i}$$

其中 $K$ 是信息比特数, $E_i$ 是第 $i$ 次传输的编码比特数。

当等效码率降低到信道容量以下时,香农定理保证了解码成功:

$$R_{eq} < C = \log_2(1 + SNR)$$

这就是IR的核心优势——它不仅增强了信号,还增加了冗余,从两个维度逼近信道容量。在低SNR区域,编码增益远比SNR增益重要,IR的性能优势可达2-4dB。


常见问题

Q1: HARQ和RLC层ARQ有什么区别? A: HARQ工作在MAC层/物理层,处理的是物理传输错误,时延极短(毫秒级),但重传次数有限(通常3-4次)。RLC ARQ工作在RLC层(AM模式),处理的是HARQ之后仍残留的错误,时延较长,但可以无限重传直到成功。两者是串行的——HARQ先快跑几轮纠错,剩下的漏网之鱼交给RLC ARQ慢慢收拾。对于大多数场景,HARQ已经能解决95%以上的传输错误。

Q2: 为什么5G NR最多16个HARQ进程? A: 这是在时延和缓冲区之间取平衡。进程数太少,流水线填不满,信道利用率低;进程数太多,UE需要维护大量软缓冲区,硬件成本上升。16个进程在典型配置下能保证绝大多数场景的信道利用率超过90%。对于URLLC等低时延场景,进程数可能配置得更少(如4-8个),因为低时延业务不允许等太多轮HARQ。

Q3: 5G NR为什么上行也用异步HARQ? A: LTE上行用同步HARQ是为了简化UE操作——UE收到NACK后自动在固定位置重传,不需要额外的DCI调度。但同步HARQ在TDD帧结构下非常不灵活——固定时序可能与上下行配比冲突。5G NR统一采用异步HARQ,基站通过DCI灵活调度上行重传的时频位置、MCS和RV,这对TDD和各种非对称配比更友好。

Q4: 实际网络中HARQ重传率多少算正常? A: 初传BLER(Block Error Rate)目标通常设计在10%~30%之间——这不是系统不好,而是故意为之。AMC(自适应调制编码)会选择一个较高的MCS使得初传BLER在目标值附近,这样能最大化频谱效率。HARQ重传就是这个策略的"安全网"。如果重传后(通常1-2次)残余BLER仍高于1%,说明可能存在覆盖问题或干扰问题,需要排查。

Q5: CBG级重传在实际网络中部署广泛吗? A: 目前CBG主要在eMBB高吞吐场景(如毫米波频段、大规模MIMO)中有实际部署价值。在中低频段、中小TB场景下,CBG带来的DCI开销和ACK码本开销可能超过其收益。随着5G-Advanced和6G中TB尺寸的进一步增大,CBG的重要性会越来越高。


参考来源

  1. 5G HARQ机制详解:混合自动重传与软合并 - CSDN博客 — 系统性介绍5G HARQ的软合并与增量冗余机制
  2. 5G第1层:HARQ软合并原理解析 - 知乎 — 从物理层角度解析HARQ软合并的数学原理
  3. 5G HARQ Retransmission: Why CBG Matters — CBG级重传的优势和实际应用场景分析
  4. 5G NR Hybrid ARQ - Devopedia — 全面的5G NR HARQ技术百科,涵盖CBG和RV机制
  5. HARQ Principles and Applications in 5G-NR — HARQ原理与5G NR实际应用的深度分析

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