首页 › deep-tech › 错了不白错:HARQ重传原理

错了不白错:HARQ重传原理

你网购了一件瓷器,开箱发现碎了一角。你会怎么做?把整箱扔掉,让仓库再从头发一件一模一样的——大多数人不会这么干,而是把碎片留着拍照留证,等商家补发。补发的箱子里,可能是同样的一件( chances 是碎同一个角),也可能干脆是几块补片和说明书,跟你的碎片正好拼成一个整体。

第二种的效率明显更高:你已经拿到的那部分没有浪费。无线通信里的 HARQ(Hybrid Automatic Repeat reQuest,混合自动重传请求),干的就是这件事:传错了不白传,接收失败的信息留下来,跟重传拼起来一起译码。它是空口可靠性设计中最精巧的一环,也是网优日常盯着的那几个 KPI(ACK 率、重传率)背后的原理。

这篇文章回答一个核心问题:HARQ 为什么要设计成这样?它和普通重传差在哪、软合并为什么必须留在物理层做、为什么要有 8 个“进程”在轮转、5G 又为什么把它改成了异步。


一、纠错码不是万能保险箱:为什么还需要重传

先回顾背景。信号穿过无线信道,一定会出错,第一道防线是信道编码(前向纠错,FEC):发送端按规则多塞一些校验比特,接收端译码器像走迷宫一样把错的比特“掰”回来。上一轮聊过的 LDPC/Polar 码,就是这条防线的主力。

但 FEC 有个天生的矛盾:码率越低(冗余越多)越可靠,可频谱效率就越低。如果你为了对抗最差的信道条件,把一半的空口资源都拿去发冗余,那在信道好的时候(大多数时候),这些冗余纯属浪费。

于是有了第二道防线:ARQ(自动重传请求)。接收端发现数据不对就要求重发。朴素的想法是——平时用高码率跑,错了再说,把冗余从“常备军”改成“预备役”。

但朴素 ARQ 有两个致命伤:

第一,判决器太粗糙。接收端只能给出“对/错”的二值答案,错的帧整个扔掉重传。你花真金白银发出去的一整帧软信息,只换来一个“错误”的判决就进了垃圾桶——信息论意义上,这是巨大的浪费。

第二,反馈环路的层级太慢。如果重传交给 TCP 在端到端做,一个来回要跨越整个互联网,几十上百毫秒起步,无线链路稍差一点 TCP 窗口就崩了。语音和实时业务根本等不起。

HARQ 的设计思路,一句话就能说清:把 FEC 和 ARQ 焊在一起,把重传下沉到物理层/MAC 层,而且失败的接收结果不清空、留着跟重传合并。 FEC 管“大概率对”,HARQ 管“小概率错了的补救”,两层配合,初传就能用高码率把频谱效率拉满。

flowchart TD
    A["发送端 编码器吐出低码率母码"] --> B["按RV选窗口 发出一段"]
    B --> C["无线信道 有衰落有干扰"]
    C --> D["接收端 存进软缓冲区"]
    D --> E{"CRC校验通过吗"}
    E -->|通过| F["回ACK 清空缓冲区"]
    E -->|失败| G["回NACK 保留软信息"]
    G --> H["发端换窗口 补发新比特"]
    H --> D
    F --> I["合并结果上交高层"]

二、CRC:验货员的唯一裁判

HARQ 的整个流程由一个不起眼的角色驱动:CRC(循环冗余校验)。

发送端在每个传输块(TB)后面附上按多项式运算算出的校验比特;接收端用同样的规则验一遍,除得尽就“过”,除不尽就“错”。它不能纠错,只能检错——但这恰恰是重传系统需要的:一个无条件可信的判决器。

还有一个容易忽略的细节:大块数据会被切分成多个码块(CB),每个码块各自带 CRC。为什么要切?因为译码器是流水线化的硬件,一次喂进几万个比特不现实,切成千比特级的码块才能并行译码;更重要的是,每个码块独立判决后,只有错的码块才需要参与重传合并,对的码块不必陪绑。在 5G 里这个思路更进一步,可以把相邻的码块编成组(CBG),按组重传——比整块重传省流量,比逐码块重传省信令。

CRC 的另一个隐性贡献是提前终止:某个码块校验通过,它的译码器立刻停机省电;全块通过,一次传输就结束。这是仿真和实测里“HARQ 平均传输次数通常略大于 1”的物理来源。


三、软合并:失败的信息为什么不扔

这是 HARQ 灵魂所在。理解它只需要一个直觉:译码器吃的不是比特,是“信心程度”。

接收机对每个比特的判断,量化成一个叫 LLR(对数似然比) 的数。先别怕公式,它的含义极其直观:

$$LLR = \ln\frac{P(b=+1 \mid y)}{P(b=-1 \mid y)} = \frac{2y}{\sigma^2}$$

信道差,LLR 就小(都很犹豫);信道好,LLR 就大(都很笃定)。译码失败的帧,并不是“全错的帧”,而往往是一堆犹豫的比特里恰好有几个错得离谱。

传统 ARQ 的做法是把这帧全扔了。软合并(soft combining)的做法是:把这份犹豫的记录留在软缓冲区里,等重传到达后,逐位把两次的 LLR 加起来:

$$LLR_{合并} = LLR_1 + LLR_2$$

直觉上,两次独立观察同一比特,证据是可以累加的:第一次微弱地偏向 1(+0.8),第二次也偏向 1(+1.6),合并后(+2.4)你就有底气了。更妙的是,如果第一次偏向 1、第二次偏向 0,加起来接近零——等于错误被对方的证据稀释了。

用信噪比的语言说,对两次独立的等功率接收做 LLR 相加,等效于:

$$SNR_{等效} = SNR_1 + SNR_2$$

两次信噪比相同时,等效信噪比翻倍,折算成 dB 就是 +3 dB。相当于你没花一分钱发射功率,白捡了 3 个 dB 的链路预算——在衰落环境里,3 dB 可能就是“不可用”和“可用”的差别。这就是软合并被称为时间分集的原因:同一个比特在两个时刻各衰落了一次,合并后把衰落“平均”掉了。

flowchart TD
    A["同一比特 第一次接收"] --> B["LLR等于正0.8 弱判1"]
    C["同一比特 第二次接收"] --> D["LLR等于正1.6 中等判1"]
    B --> E["逐位对齐 相加"]
    D --> E
    E --> F["合并LLR等于正2.4"]
    F --> G["等效信噪比翻倍"]
    G --> H["译码走出迷宫"]

为什么这件事必须留在物理层做?因为只有物理层的解调器手里有原始的 LLR 软信息。数据一旦在 MAC 层以上变成“对的/错的”硬比特,犹豫程度这个信息就永久丢失了——上层重传只能整包重来,一分软信息都榨不出来。这就是“HARQ 下沉到物理层/MAC 层”的技术原因,不是标准制定者拍脑袋,而是软信息只在最底层存在。


四、补发的两种哲学:Chase 合并与增量冗余

软合并确定了“留着拼”的总方针,接下来的分歧是:重传到底发什么?

Chase 合并:原样补发

最直接的做法由 Chase 在上世纪提出:每次重传都与初传完全相同,接收端逐位叠 LLR 即可。上面推导的 +3 dB 就是它的典型收益。

它的优点是实现简单、接收端缓存压力小;缺点也明显——重传提供的证据和初传完全重复,你只是反复确认同一批比特,信噪比堆上去了,但码率没有变,冗余的“花样”没有增加。

增量冗余(IR):补发新证据

IR 的思路换了个角度。既然编码器本来就能生成一个低码率的母码(比如码率 1/3,一比特信息配两比特校验),那为什么每次只发其中一段?

把母码想象成一整卷电影胶片,初传只放映其中一段窗口,重传放映另一段窗口——新窗口里是初传没发过的校验比特。接收端把所有到手的片段拼起来,相当于:

$$R^{(k)} = \frac{K}{N_1 + N_2 + \cdots + N_k}$$

其中 K 是信息比特数,$N_i$ 是第 i 次发送的比特数。每重传一次,等效码率就下降一档——你等于在“动态地、按需地”降低码率。信道差就多传几段,信道好就一段收工。这比一开始就按最差信道预留一半冗余的方案,频谱效率高得多。

那个“窗口起点”就是 RV(冗余版本,Redundancy Version)。工程上常用的推进顺序是 0 → 2 → 3 → 1。为什么第二跳跳过 1 直奔 2?因为在常用码率下,RV1 的窗口起点离 RV0 太近,重发的内容和初传大量重叠,新证据不多;RV2 的起点更远,能带来互补性最强的新校验比特。这个顺序是工程经验的结晶,不是随意的编号轮换。

维度 Chase 合并 增量冗余 IR
重传内容 与初传完全相同的比特 同一母码的不同窗口(新校验位)
合并方式 LLR 逐位叠加 LLR 按位置对齐拼接再叠加
等效效果 能量累积,等效 SNR 提升 能量累积 + 等效码率逐次下降
接收端缓存 小,只需保存合并结果 大,需保存多次不同的软信息
高信噪比区吞吐 天花板较低 明显更优
复杂度 低 高

现代系统(LTE 起)两者都用:重传时由调度器在 DCI 里指示 RV,站在 IR 的框架里跑,Chase 合并相当于“每次都选同一个窗口”的特例。环境越差、重传越多,IR “每次都给新证据”的优势越明显。


五、停等的尴尬与流水线:为什么是 8 个进程

HARQ 的反馈机制骨子里是停等协议(Stop-and-Wait):发一帧,停下来,等 ACK/NACK,收到反馈再决定新传还是重传。

为什么不用连续发送?因为反馈必须及时且确定——接收端缓冲区有限,发端必须精确知道“现在该操作第几帧”。停等协议把状态机做到最简,一个进程只需要记住一份数据一份软信息。

但纯停等有个致命问题:等待反馈的时间全是空窗。LTE FDD 里这个空窗有多长?推一遍时间线:

flowchart TD
    A["子帧n PDSCH到达手机"] --> B["手机译码 耗时约几毫秒"]
    B --> C["子帧n+4 回ACK或NACK"]
    C --> D["基站读反馈 决定新传或重传"]
    D --> E["子帧n+8 进程才能复用"]
    E --> F["8毫秒一轮 铺满8个进程"]

子帧 n 发数据,固定在 n+4 收反馈,处理完最早 n+8 才能轮到这个进程干下一票——一个进程一圈就是 8 毫秒。如果只有一个进程,链路每传 1 毫秒就要歇 7 毫秒,频谱效率惨不忍睹。

解法是流水线:并排摆 8 个进程轮班。进程 0 在等反馈的时候,进程 1、2、3……依次上阵。8 毫秒的空窗正好被 8 个进程填满,每个子帧都有活干,每个进程的停等逻辑又保持极简。这就是 LTE FDD 固定 8 个 HARQ 进程的由来——不是选出来的“合理值”,是 n+4 定时推导出来的必然值。TDD 因为上下行配比不同,反馈时延不固定,进程数随配置在 7 到 15 之间浮动。

维度 LTE 5G NR
进程数 FDD 固定 8,TDD 随配比 7~15 DCI 里 4 比特进程号,最多 16
同步性 下行自适应;上行同步(重传时刻固定) 上下行均可异步自适应
反馈承载 PHICH 物理信道,格式隐式 无 PHICH,PUCCH/PUSCH 上显式反馈
重传定时 固定 n+4 / n+8 骨架 K0/K1 按时隙可配,随调度灵活伸缩
重传粒度 传输块整块 传输块,或更细的 CBG 组
RV 推进惯例 0→2→3→1 沿用 0→2→3→1

多进程的时序直觉看这张图——注意任意时刻只有一个进程在“等判决”,其余进程都在干活或排队:

sequenceDiagram
    participant T as 发送侧
    participant R as 接收侧
    Note over T,R: 进程0在等反馈 进程1顶上
    T->>R: 进程0 初传RV0
    T->>R: 进程1 初传RV0
    R-->>T: 进程0 反馈NACK
    T->>R: 进程2 初传RV0
    R-->>T: 进程1 反馈ACK
    T->>R: 进程0 重传RV2
    R-->>T: 进程0 反馈ACK

六、NR 的改造:为什么改成异步

5G 把 LTE 这套骨架拆掉了三处,每一处都有明确的动机。

第一,从同步走向异步。LTE 的重传时刻写死在帧结构里,好处是简单,坏处是僵化——5G 的空口面对从 0.125 ms 到 2 ms 的多种时隙结构、波束赋形带来的调度自由,固定时刻根本塞不进去。于是 NR 把三个定时全部参数化:K0(调度指令到数据的间隔)、K1(数据到反馈的间隔)、K2(调度指令到上行数据的间隔),按需配置,调度器获得完全的灵活性。代价是控制面变复杂——手机必须老老实实解析 DCI 才知道下一次交互在什么时候、哪个进程上。

第二,进程号扩到 16。子载波间隔大了,时隙短了,但处理时延不会同比缩短,一轮“发-收-判-重传”占用的时隙数相对变多,需要更多进程填流水线。4 比特进程号给出 16 个槽位,留足余量。

第三,取消 PHICH,反馈全部显式化。LTE 的下行 HARQ 反馈走专用的 PHICH 信道,格式是隐式的(靠加扰区分 ACK/NACK 语义),省信令但难扩展;NR 干脆取消它,所有 HARQ-ACK 都在 PUCCH/PUSCH 上显式发送,还能把多个进程的反馈复用进一个码本——时隙越长、调度越密,这种“攒一批发快递回执”的方式越省开销。同理,针对大传输块的 CBG 按组重传、针对重复传输的进程号复用,都是同一个设计哲学:把重传的粒度和时机做成调度器的旋钮,而不是帧结构的死规矩。


七、现网里怎么用:网优视角的 HARQ

原理讲完,说工程师真正会用到的部分。

HARQ 重传率是最灵敏的空口“体温计”。初传 BLER 的设计目标通常是 10% 附近——这是刻意的:信道质量指示(CQI)就是按“初传 BLER≈10%”反推选择的。初传留 10% 的失败率,意味着系统工作在“码率-可靠性”曲线最陡峭的区段,频谱效率被榨到极限,剩下的错误交给 HARQ 软合并低成本兜底。所以看到 DL HARQ 重传率在几个百分点到 10% 出头,多数时候是系统在正常工作,不是故障;真正的病灶信号是重传率突跳(常见于上行干扰抬升、弱覆盖、模三/波束干扰)和残余 BLER(重传几次都救不回来、最后被上层判死的比例)升高。

调试时最容易踩的三个坑:

  1. 把 HARQ 重传、RLC 重传、TCP 重传混为一谈。三者层级不同、病因不同:零星 HARQ NACK 正常;HARQ 反复失败触发 RLC 重传,说明信道持续恶化或反馈链路有问题;TCP 层重传堆积,往往问题已经越出空口。
  2. 忽略 DTX(终端不回应)。既不是 ACK 也不是 NACK 的静默,往往意味着终端已经失步或反馈资源没对齐——连续多次 DTX 会走向无线链路失败流程,这和“有 NACK”是完全不同的故障方向。
  3. 看 NACK 不看 RV。重传日志里 RV 一直是 0 而不是按惯例推进,多半是调度器配置或版本行为问题;IR 退化成 Chase 合并,重传增益会明显缩水。

上行方向还有一个经典现象:LTE 上行是同步 HARQ,重传时刻写死为 n+8,基站在 PHICH 上回一个 ACK 的同时其实兼任了“新数据的上行授权”,所以上行重传异常经常和调度授权问题纠缠在一起,看日志时要分清“这一笔是重传还是新传”。


八、三层重传的分工:为什么一套不够

最后把视野拉高。空口到互联网,其实有三层重传在同时工作,它们不是冗余设计,而是各管一段:

层级 HARQ(MAC 层) RLC AM(链路层) TCP(端到端)
纠错对象 译码失败的码块,毫秒级 穿透 HARQ 的残余错包,几十毫秒 端到端丢包,秒级
反馈节奏 每 slot/子帧反馈一次 状态报告 累积/选择性确认
重传方式 软信息合并,不算“重传”意义上的重来 整包重传 整段重传
设计目标 快、低时延、省功率 补 HARQ 的长尾 跨越全网兜底

分工的逻辑很清楚:越靠近物理层,信息越丰富、反馈越快,但覆盖范围越小。HARQ 用软合并把 99% 的错误消灭在几毫秒内;RLC AM 收拾极少数穿透的“漏网之鱼”;TCP 只对真正的端到端异常负责。越往下越便宜,越往上越昂贵——错误要在最便宜的那一层被解决,这是整个移动通信可靠性体系的总设计原则。


常见问题

Q: HARQ 重传率高,是不是说明网络有问题? A: 不一定。初传 BLER 目标本来就在 10% 附近,几个百分点的 HARQ 重传率是设计内的正常工况,且软合并几乎不损失吞吐。要看的是两个异常信号:重传率突跳(暗示干扰或弱场突现)和残余 BLER 升高(软合并都救不回来)。平稳的高重传率只消耗一点资源,斜率突变才是病灶。

Q: HARQ 和 RLC 都会重传,为什么建两套? A: 因为时间尺度和信息类型不同。HARQ 在毫秒级用软信息合并,快且便宜,但缓冲区小、重传次数有限;RLC 在几十毫秒级用完整数据包重传,慢但可靠,负责收拾 HARQ 次数用尽仍失败的残余错误。一套管速度,一套管兜底,缺谁都会把压力推给更贵的 TCP。

Q: 初传为什么不直接做到零差错,非要留 10% 的错误? A: 把初传 BLER 从 10% 压到 1%,付出的代价是大幅降低码率——每个好信道里的用户都要陪着最差用户一起降速。而 HARQ 的软合并恰好擅长低成本处理这 10%:重传一两次就能救回。系统按“初传求快、重传求稳”分工,总频谱效率远高于“初传求稳”。

Q: 5G 为什么放弃 LTE 那套固定时序,改成异步 HARQ? A: LTE 的固定 n+4 时序和固定帧结构绑死,在 5G 的多子载波间隔、灵活时隙、波束赋形调度下无法适配。把 K1 等 定时做成可配置参数后,调度器能按业务(大带宽求吞吐、URLLC 求极低时延)自由安排反馈时机。异步不是技术炫技,是把死规矩换成旋钮的必然选择。

Q: 软合并为什么不能放到 TCP 层去做? A: 软信息(LLR)只存在于物理层解调器里,数据一旦上到高层就只剩“对/错”的硬比特,犹豫程度这个最宝贵的信息已经丢失。TCP 重传只能整包重来,之前收到的部分毫无价值;HARQ 重传却能与历史残留叠加出 +3 dB 级的等效增益。位置决定能力,这就是重传必须下沉到最底层的原因。


参考来源

  1. Hybrid automatic repeat request - Wikipedia — HARQ 的定义、Chase 合并与增量冗余的基本概念、停等协议与多进程机制综述
  2. Automatic repeat request - Wikipedia — ARQ 家族(停等、回退 N、选择重传)的协议原理,理解 HARQ 前置知识的最佳入口
  3. Stop-and-wait ARQ - Wikipedia — 停等协议的空窗问题,多进程流水线设计的出发点
  4. Forward error correction - Wikipedia — 前向纠错与重传结合(混合 FEC/ARQ)的动机与框架
  5. A. Goldsmith, Wireless Communications(剑桥大学出版社)— 无线系统中分集合并与等效信噪比推导的经典教材表述
  6. J. G. Proakis, Digital Communications — LLR 软判决译码与码率-可靠性折衷的系统化论述

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