首页 › deep-tech › HARQ混合重传:纠错的第二重保障

HARQ混合重传:无线通信的纠错二重奏

引子:一个送快递的比喻

想象你从网上买了一箱玻璃杯,快递送到时摔碎了一个。你有两种处理方式:

HARQ是5G无线接入网中最关键的可靠性机制之一。它不是简单的"重传",而是把前向纠错(FEC)和自动重传请求(ARQ)合二为一,再加上软合并,构成一个毫秒级的快速纠错闭环。本文将从"为什么需要HARQ"出发,逐步拆解其核心原理。


一、为什么需要HARQ?无线信道的天然挑战

1.1 无线信道为什么"不靠谱"

无线信号从基站到手机,要经历三重劫难:

挑战 描述 后果
路径损耗 信号随距离指数衰减 远处用户信号弱
多径衰落 信号经反射/折射到达接收端,相位叠加可能相消 信号忽强忽弱
干扰 邻区基站、其他用户的信号叠加 信噪比恶化

在4G/5G典型的城市环境中,下行传输的初始误块率(BLER)通常设计在10%左右——也就是说,每发10个数据包,大约有1个会解码失败。这并非系统设计失败,而是一个刻意为之的折中:如果把初始BLER压到0.1%,意味着保守的调制编码方案(MCS),频谱效率会大幅下降。

所以核心思路是:允许初始传输有一定错误率,用快速重传来兜底。

1.2 纠错机制的三代演进

flowchart TD
    subgraph 第一代["ARQ - 自动重传"]
        A1["发送数据"] --> A2["接收端CRC校验"]
        A2 -->|失败| A3["请求重传"]
        A3 --> A1
        A2 -->|成功| A4["完成 ✓"]
    end

    subgraph 第二代["FEC - 前向纠错"]
        B1["编码添加冗余位"] --> B2["发送"]
        B2 --> B3["接收端解码纠错"]
        B3 --> B4["成功 ✓"]
    end

    subgraph 第三代["HARQ - 混合重传"]
        C1["FEC编码"] --> C2["发送"]
        C2 --> C3["接收解码"]
        C3 -->|失败| C4["保存软信息<br/>发送NACK"]
        C4 --> C5["重传(不同冗余版本)"]
        C5 --> C6["软合并再解码"]
        C6 -->|成功| C7["完成 ✓"]
        C6 -->|失败| C4
        C3 -->|成功| C8["发送ACK ✓"]
    end

    第一代 --> 第二代 --> 第三代
机制 原理 优点 缺点
ARQ 检错后重传,丢弃错误数据 简单可靠 延迟大,浪费已接收信息
FEC 提前加冗余,接收端自纠 不需反馈,单向传输 冗余固定,好信道时浪费带宽
HARQ FEC + ARQ + 软合并 快速纠错,频谱效率高 需要软缓冲区,实现复杂

HARQ的"混合"二字,正是来自它同时利用了FEC的纠错能力和ARQ的重传能力,并在重传时做了一件关键的事——不丢弃失败的数据,而是与重传数据合并后再解码。


二、HARQ的核心机制:软合并

2.1 什么是"软信息"

当接收端收到一个PDSCH数据块并尝试解码时,LDPC解码器处理的不是硬判决(0或1),而是对数似然比(LLR):

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

其中 $\mathbf{y}$ 是接收到的信号。LLR的物理含义是:

LLR值 含义
LLR >> 0 非常确定这个比特是0
LLR << 0 非常确定这个比特是1
LLR ≈ 0 不确定,可能是0也可能是1

关键洞察:解码失败的包并不意味着所有比特都是"垃圾"。大部分LLR其实是正确的,只有少数比特因为噪声而模糊(LLR接近0)。如果直接丢弃,这些有效信息就浪费了。

2.2 两种软合并方式

HARQ的软合并分为两种方式,它们的核心区别在于重传时发送的内容是否与初次传输相同:

Chase Combining(追回合并)

基站重传与初次传输完全相同的编码比特(相同的冗余版本RV)。接收端将两次接收的LLR逐比特相加:

$$\text{LLR}_{\text{combined}}(b_i) = \text{LLR}_1(b_i) + \text{LLR}_2(b_i)$$

这等价于提升有效信噪比。直观理解:两次传输经历的是独立的噪声,LLR相加后噪声项趋向抵消(零均值),而信号项叠加增强。理论上,一次重传可带来约3 dB的信噪比增益。

类比:就像你拍了一张模糊的照片,再拍一张同样场景但模糊位置不同的照片。把两张照片叠加,模糊会减轻,画面更清晰。

Incremental Redundancy(增量冗余,IR)

基站重传时使用不同的冗余版本(不同RV),发送的是初次传输中未包含的校验比特。接收端将新旧信息拼接,形成更低码率的码字。

$$R_{\text{eff}} = \frac{K}{N_1 + N_2 + \cdots}$$

其中 $K$ 是信息比特数,$N_i$ 是第 $i$ 次传输的编码比特数。每次重传都增加了分母(更多校验位),有效码率降低,纠错能力增强。

类比:第一次考试你只带了铅笔(基本工具),考砸了;补考时你带了铅笔+橡皮+尺子(更多辅助工具),工具更完备,通过概率大增。

flowchart TB
    subgraph 发送端处理流程
        TB["传输块 TB"] --> CRC["附加CRC"]
        CRC --> CB["码块分割"]
        CB --> LDPC["LDPC编码<br/>(信息位+校验位)"]
        LDPC --> RM["速率匹配<br/>(选择RV版本)"]
        RM --> MOD["调制映射"]
    end

    subgraph RV选择策略
        direction LR
        RV0["RV0: 系统位为主<br/>首次传输<br/>可自解码"]
        RV2["RV2: 校验位为主<br/>第1次重传"]
        RV3["RV3: 额外校验位<br/>第2次重传"]
        RV1["RV1: 补充校验位<br/>第3次重传"]
        RV0 --> RV2 --> RV3 --> RV1
    end

    RM -.->|"选择RV"| RV0

    subgraph 接收端合并策略
        direction TB
        RX["接收信号→LLR"] --> DEC{"LDPC解码"}
        DEC -->|成功| ACK["发送ACK"]
        DEC -->|失败| BUF["存入软缓冲区"]
        BUF --> WAIT["等待重传"]
        WAIT --> COMB["与新LLR软合并"]
        COMB --> DEC2{"再次解码"}
        DEC2 -->|成功| ACK2["发送ACK"]
        DEC2 -->|失败| BUF2["更新软缓冲区"]
    end

    MOD -->|"无线信道"| RX

2.3 Chase vs IR 性能对比

维度 Chase Combining Incremental Redundancy
重传内容 完全相同的编码比特 不同的校验比特
合并方式 LLR逐比特相加 新旧信息拼接(码率降低)
信噪比增益 ~3 dB/次重传 最高可达6 dB/次重传
频谱效率 较低(重复信息) 较高(每次传新信息)
软缓冲区需求 较小 较大
实现复杂度 低 较高
5G中的使用 高码率时退化为CC 默认首选方式

为什么5G偏好IR? 因为IR的每次重传都在传递"新知识"(新的校验位),而Chase只是在重复"旧知识"。在高码率场景下(如0.93),可用的校验位本来就少,不同RV之间会重叠,IR退化为Chase Combining——这也是为什么说Chase是IR的特例。


三、HARQ进程:多条流水线并行运转

3.1 停等协议的效率瓶颈

最简单的重传协议是停等式(Stop-and-Wait):发一个包,等ACK/NACK,再发下一个。问题在于:从发送到收到反馈需要一定时间(往返时延RTT),这期间无线信道是空闲的——白白浪费了宝贵的频谱资源。

$$\eta_{\text{SAW}} = \frac{T_{\text{传输}}}{T_{\text{传输}} + T_{\text{等待ACK}} + T_{\text{处理}}}$$

假设传输一个时隙(0.5ms),等待ACK反馈需要4个时隙(2ms),处理时间1个时隙,则效率只有 $\frac{0.5}{0.5+2+0.5} \approx 16.7\%$。

3.2 多进程并行HARQ

解决方案是多个停等进程并行运行。就像超市收银台——一个收银台在等你找钱包时,另一个收银台已经在为下一位顾客服务了。

sequenceDiagram
    participant gNB as 基站 gNB
    participant P0 as HARQ进程0
    participant P1 as HARQ进程1
    participant P2 as HARQ进程2
    participant P3 as HARQ进程3

    Note over gNB,P3: 时隙0: 发送TB0到进程0
    gNB->>P0: TB0 (RV0)

    Note over gNB,P3: 时隙1: 发送TB1到进程1
    gNB->>P1: TB1 (RV0)

    Note over gNB,P3: 时隙2: 发送TB2到进程2
    gNB->>P2: TB2 (RV0)

    Note over gNB,P3: 时隙3: 发送TB3到进程3
    gNB->>P3: TB3 (RV0)

    Note over gNB,P3: 时隙4: 进程0收到NACK
    P0->>gNB: NACK (TB0失败)

    Note over gNB,P3: 时隙4: 同时发送TB4到进程0(新数据)
    gNB->>P0: TB4 (RV0, 新数据)

    Note over gNB,P3: 时隙4: 进程1收到ACK
    P1->>gNB: ACK (TB1成功)

    Note over gNB,P3: 时隙5: 进程0的TB0重传
    gNB->>P1: TB0重传 (RV2)

5G NR支持最多16个HARQ进程(上下行各16个)。每个进程独立维护自己的软缓冲区、冗余版本状态和新数据指示(NDI)。

参数 4G LTE 5G NR
最大HARQ进程数(下行) 8 16
最大HARQ进程数(上行) 8 16
下行HARQ类型 同步 异步
上行HARQ类型 同步 异步
反馈时序 固定(4ms) 灵活配置(K1参数)
CBG级重传 不支持 支持(R16+)

3.3 异步HARQ:5G的重要改进

4G LTE的下行HARQ是同步的——重传必须在固定的时序位置发生。这虽然简单,但缺乏调度灵活性。

5G NR上下行均采用异步HARQ:基站可以在任意时隙调度重传,通过DCI(下行控制信息)中的HARQ进程号和新数据指示(NDI)来标识。这给了调度器更大的自由度,可以根据信道状态和资源 availability 灵活安排重传。

NDI(New Data Indicator)的巧妙设计:每个HARQ进程有一个1比特的NDI翻转标志。当基站发送新数据时,NDI翻转(0→1或1→0);当发送重传时,NDI不变。UE通过检测NDI是否翻转来判断这是新数据还是重传。


四、冗余版本(RV):精心设计的校验位分配

4.1 四个冗余版本的布局

5G NR定义了4个冗余版本:RV0、RV1、RV2、RV3。它们对应LDPC编码输出中不同起始位置的比特选择。

LDPC编码器的输出可以看作一个很长的环形缓冲区,前面是系统位(原始数据),后面是校验位。速率匹配时,从缓冲区中按一定规则选取一段比特发送。

RV索引 起始位置(相对值) 典型用途
RV0 0(系统位开头) 首次传输,包含完整系统位,可自解码
RV2 ~2/3(校验位区域) 第1次重传,补充校验位
RV3 ~1/3(校验位区域) 第2次重传
RV1 ~5/6(校验位区域) 第3次重传

标准推荐的RV序列是 0→2→3→1,这个顺序经过精心设计,确保每次重传都能最大化增量冗余增益。

4.2 为什么RV0必须"可自解码"

RV0包含完整的系统位(原始数据比特),这意味着即使UE没有收到之前任何传输,仅凭RV0也能尝试独立解码。这对于以下场景至关重要:

而RV1/2/3主要包含校验位,单独无法恢复原始数据——它们的价值在于与RV0组合后降低有效码率,增强纠错能力。


五、CBG级HARQ:大包的精细修补

5.1 传统TB级重传的问题

一个传输块(TB)可能包含数千甚至数万个比特。如果整包解码失败,实际上可能只是其中一小部分(某个码块CB)出了问题。如果整包重传,浪费了大量频谱资源。

这就像一份100页的报告中只有第37页有个错别字——你不需要重新打印整份报告,只需补发第37页。

5.2 Code Block Group(CBG)机制

5G R16引入了CBG级HARQ反馈:将一个TB分成多个码块组(CBG),UE可以针对每个CBG独立反馈ACK/NACK,基站只重传出错的CBG。

$$\text{CBG数量} = \min(N_{\text{CB}}, 2, 4, 6, 8)$$

其中 $N_{\text{CB}}$ 是码块数量,具体值由RRC参数配置。

场景 TB级重传 CBG级重传
TB大小 100,000比特 100,000比特
码块数 20个CB 20个CB
失败CB数 1个 1个
重传数据量 100,000比特 ~5,000比特
频谱效率损失 100% 5%

对于高速率场景(4层×256QAM×100MHz),CBG级重传可以带来5-10倍的重传效率提升。


六、HARQ-ACK反馈时序:5G的灵活调度

6.1 K1参数——从接收到反馈的时延

5G NR中,UE收到PDSCH后,并非在固定时隙反馈ACK/NACK,而是通过DCI中的PDSCH-to-HARQ_feedback定时指示(即K1值)来确定反馈时机。

$$n_{\text{PUCCH}} = n_{\text{PDSCH}} + K_1$$

K1的取值范围为1~15个时隙,由RRC配置候选集合,DCI从中选择。这种灵活设计带来的好处是:

K1值 适用场景
小值(1-2) 低延迟业务(URLLC),快速反馈
中值(3-6) 典型eMBB业务,平衡处理时间和调度效率
大值(7-15) 远端UE或复杂调度场景

6.2 HARQ-ACK码本

当UE需要在一个PUCCH上反馈多个PDSCH的ACK/NACK时,需要一种机制来告诉基站"这个反馈位对应哪个PDSCH"。这就是HARQ-ACK码本。

5G支持两种码本类型:

Type 1(半静态码本):反馈位数固定,基于RRC配置的时隙绑定窗口大小。即使某些时隙没有PDSCH调度,也保留对应的反馈位。

Type 2(动态码本):反馈位数动态变化,基于实际收到的DCI调度信息生成。每个DCI中包含一个计数器DAI(Downlink Assignment Index),帮助UE确认是否遗漏了某个调度。

特性 Type 1半静态码本 Type 2动态码本
反馈位数 固定 动态
开销 可能较大(含无效位) 紧凑高效
复杂度 低 较高(需DAI机制)
适用场景 简单配置、TDD 载波聚合、FDD

七、HARQ在协议栈中的位置与配合

7.1 MAC层的快速纠错 vs RLC层的可靠兜底

HARQ位于MAC层,提供毫秒级的快速纠错。但它并不能保证100%可靠——当达到最大重传次数(通常4次)后仍然失败,就把问题交给RLC层的ARQ机制来处理。

flowchart TB
    subgraph 协议栈纠错层级
        direction TB
        PHY["物理层<br/>FEC编解码<br/>(LDPC/Polar)"]
        MAC_HARQ["MAC层<br/>HARQ快速重传<br/>延迟: ~1-4ms<br/>最大重传: 4次"]
        RLC_ARQ["RLC层<br/>ARQ可靠重传<br/>延迟: ~10-100ms<br/>最大重传: 由RRC配置"]
        PDCP["PDCP层<br/>完整性保护/加密<br/>辅助重排序"]
    end

    PHY -->|"残余错误"| MAC_HARQ
    MAC_HARQ -->|"HARQ失败"| RLC_ARQ
    RLC_ARQ -->|"RLC失败<br/>(极端情况)"| PDCP

    subgraph 各层保障
        D1["BLER目标: ~10%"]
        D2["HARQ后残余BLER: ~0.1%"]
        D3["RLC后残余错误: ~0.00001%"]
    end

    PHY -.-> D1
    MAC_HARQ -.-> D2
    RLC_ARQ -.-> D3

这个分层设计体现了一个重要原则:快速但不完美的纠错(HARQ)在前,慢速但完美的纠错(RLC ARQ)在后。大部分错误在HARQ阶段就解决了(约99.9%),RLC只处理极少数残余错误。

7.2 为什么不能只用HARQ或只用RLC

只用HARQ的问题 只用RLC的问题
最大4次重传后放弃 反馈延迟太大(10-100ms)
不适合高可靠性业务(99.999%) 无法满足URLLC时延要求
软缓冲区溢出时丢数据 无法利用软合并增益

两者的配合使得5G能够同时满足eMBB的高速需求和URLLC的超可靠低延迟需求。


八、实战连接:工程师眼中的HARQ

8.1 日志中的HARQ诊断

当你在分析UE日志时,以下信息是HARQ分析的关键:

日志字段 含义 异常判断
HARQ Process ID 当前进程号 应在0~15之间轮转
NDI 新数据指示 新数据时翻转,重传时不变
RV 冗余版本 首传应为0,重传应变化(0→2→3→1)
ACK/NACK 反馈结果 连续NACK说明信道质量差
MCS 调制编码方案 频繁重传时MCS应自适应降级

常见日志诊断场景:

  1. RV始终为0的重传 → 可能是Chase Combining(正常)或调度器异常(异常)
  2. 连续4次NACK后仍在重传 → 可能是HARQ最大重传次数配置有误
  3. NDI未翻转但RV回到0 → 可能是调度器重新发起传输,旧数据被新数据覆盖
  4. 上行HARQ NACK率高 → 可能是UE功率不足或上行干扰严重

8.2 HARQ对吞吐量的影响

HARQ重传会直接降低用户吞吐量。在正常网络中,下行HARQ重传率应低于5%。如果重传率超过10%,需要排查:

8.3 常见调试陷阱

陷阱一:看到NACK就认为信道质量差。实际上,10%的初始BLER是设计目标,并非异常。只有重传后仍然NACK才说明问题严重。

陷阱二:忽略HARQ进程号。不同进程的NACK可能是不同TB的问题,需要按进程分别分析。

陷阱三:混淆HARQ重传和RLC重传。HARQ重传在MAC层(微秒级),RLC重传更高层(毫秒级)。日志中需要区分两者的计数器。


常见问题

Q: HARQ和ARQ到底有什么区别? A: HARQ在MAC层,利用软合并实现毫秒级快速纠错;ARQ在RLC层,只做简单重传(不合并),延迟更大但保证最终可靠性。HARQ是"又快又好但可能失败",ARQ是"慢但一定成功"的兜底机制。

Q: Chase Combining和Incremental Redundancy哪个更好? A: IR更好。IR每次重传都传递新的校验位,有效码率逐次降低,单次重传增益可达6 dB,远高于Chase的3 dB。但在高码率场景下,IR可用的额外校验位有限,会退化为Chase Combining。实际网络中,基站调度器通常默认使用IR。

Q: 5G为什么把HARQ进程数从4G的8个增加到16个? A: 5G NR支持更灵活的参数集(更大的子载波间隔意味着更短的时隙)和更长的反馈时延(尤其在TDD配置下),需要更多并行进程来保持信道利用率不下降。此外,载波聚合场景下每个载波独立维护HARQ进程,16个进程提供了更大的调度灵活性。

Q: CBG级HARQ有什么实际好处? A: 对于大包传输(如4层256QAM),一个TB可能包含几十个码块。如果只有1个码块出错,传统TB级重传需要重传整个TB(几十KB),而CBG级只重传出错的码块(几KB),频谱效率提升5-10倍。这对于高吞吐量场景(eMBB)尤其重要。

Q: 如果HARQ达到最大重传次数还是失败怎么办? A: MAC层HARQ放弃后,错误交给RLC层的ARQ机制处理。RLC会重新分段并请求重传,延迟会增大但最终能保证数据可靠送达。如果RLC也失败了(极端情况),PDCP层会触发无线链路失败(RLF)流程,UE可能需要进行RRC重建或切换。


参考来源

  1. 5G NR Hybrid ARQ — Devopedia — 5G NR HARQ技术综述,涵盖软合并、RV、CBG等主题
  2. How HARQ Soft Combining Actually Works — CafeTele — 深入解析Chase vs IR的比特级工作原理,含软缓冲区限制分析
  3. 5G HARQ Explained — Mohamed ELAdawi — 5G HARQ全流程详解,含码本类型、时序关系和4G/5G对比
  4. Chase Combining HARQ vs Incremental Redundancy HARQ — RF Wireless World — 两种软合并方式的对比表格和差异分析

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