知识卡片

QUIC用前向纠错代替重传解决丢包

普通读书笔记卡

内容

TCP应对丢包是”ACK+重传”,效率不高。QUIC借鉴Raid5/6思路:每发N个包额外生成1-2个冗余包(前面包异或得到)。若N个包里只丢1-2个,接收方可直接用剩余包和冗余包反解出丢失数据,无需等待重传往返。代价是额外带宽开销,且丢包数超过冗余包数仍要退回传统重传。发散:这是用可预测固定开销换取避免不可预测重传延迟的典型取舍,与纠删码存储同类。

参考来源

- 位置:第5章《网络》5.7节「QUIC」(源文件:_epub-src/text/part0022.html) - 结论依据:原文明确说明QUIC借鉴磁盘存储领域的Raid5/Raid6算法,每发送N个数据包生成一个冗余包(数据包异或运算得到),若N个包中只丢一个可通过其余包计算恢复,QUIC目前每10个包配一个冗余包,若丢失两个才退回TCP重传,直接支持卡片对QUIC用前向纠错代替重传解决丢包的论述。 - 原始内容:"每发送5个数据包,就发送一个冗余包。冗余包是对5个数据包做异或运算得到的。这样一来,服务器收到6个包,如果5个当中,有一个丢失了,可以通过其他几个包计算出来……对于QUIC来说,它采用了RAID5,目前是每发送10个数据包,构建一个冗余包……如果10个当中丢失了两个呢?那就要回到TCP的老办法——重传。"