第29章:通信系统的可靠性设计

通信系统这东西,说白了就是跟噪声和干扰作斗争。我做了这么多年系统设计,最深的体会就是——没有绝对可靠的链路,只有足够可靠的设计

今天咱们聊聊四种经典的可靠性手段:冗余设计、自动重传请求(ARQ)、前向纠错(FEC)和分集技术。这四兄弟各有各的脾气,用好了能让你系统稳如老狗,用不好嘛……嗯,我踩过的坑后面会讲。

29.1 冗余设计——多备几手,总没错

冗余设计,说白了就是「多准备几份」。你想想看,一条路容易堵车,那就多修几条路。通信系统也一样。

我个人习惯把冗余分成三类:

  • 硬件冗余:关键设备搞双备份,主备切换。我在做基站控制器时,就遇到过主控板突然死机的情况,还好备用板秒切,用户完全没感觉。
  • 信息冗余:发送数据时多带点校验位。比如奇偶校验、CRC,这些都属于信息冗余。
  • 时间冗余:同一份数据发两遍。虽然效率低,但在某些场景下很管用。

核心原则:冗余不是越多越好。每增加一份冗余,成本就翻一倍。我见过有人把系统搞成三模冗余,结果故障率没降多少,维护成本倒是涨了三倍。

29.2 自动重传请求(ARQ)——错了就重来

ARQ的思路很朴素:发出去的数据,如果接收方说没收到或者收到了但不对,那就重发一次。

常见的ARQ有三种:

类型 工作方式 优缺点
停等ARQ 发一帧,等确认,再发下一帧 简单,但效率低。信道利用率不到50%
回退N帧ARQ 连续发多帧,出错后重传从出错帧开始的所有帧 效率高,但浪费带宽
选择重传ARQ 只重传出错的帧 效率最高,但实现复杂

我曾经在一个卫星通信项目里用过停等ARQ。卫星链路延迟大,停等ARQ的吞吐量简直惨不忍睹。后来换成选择重传ARQ,吞吐量直接翻了三倍。所以啊,选对协议比什么都重要

避坑指南:ARQ的重传次数一定要设上限。我曾经见过一个系统,因为链路质量太差,数据包一直在重传,最后把发送缓冲区撑爆了。设个3次重传上限,超时就放弃,这才是成熟的做法。

29.3 前向纠错(FEC)——自己就能修

FEC和ARQ的思路完全不同。ARQ是「错了就重来」,FEC是「错了我自己修」。接收端收到数据后,利用冗余信息直接纠正错误,不需要重传。

常见的FEC编码有:

  • 汉明码:能纠正1位错误,检测2位错误。简单实用。
  • 卷积码:适合连续比特流,纠错能力强。
  • RS码:适合突发错误,比如光盘、二维码都在用。
  • LDPC码:接近香农极限,5G通信的标配。

我建议你在设计时这样选:

  • 如果信道误码率低,用汉明码就够了,开销小。
  • 如果信道质量差,比如深空通信,那就得上LDPC或Turbo码。
  • 如果延迟敏感,比如语音通话,FEC是首选。ARQ的重传延迟你受不了。

注意:FEC不是万能的。编码冗余度越高,纠错能力越强,但有效数据率就越低。我见过有人为了追求纠错能力,把编码率降到1/2,结果有效吞吐量直接腰斩。这其实是在用带宽换可靠性,你得算清楚这笔账。

29.4 分集技术——多条路,总有一条通

分集技术的核心思想:信号在传输过程中可能会衰落,但不同路径同时衰落的概率很小。所以,我多发几路,总有一路是好的。

常见的分集方式:

  • 空间分集:多根天线收/发。MIMO就是典型应用。
  • 频率分集:用多个频率同时发。跳频技术就是基于这个。
  • 时间分集:不同时间重复发送。比如ARQ其实也算一种时间分集。
  • 极化分集:利用不同极化方向。垂直极化和水平极化同时用。

我记得在做一个室内定位项目时,信号在走廊里衰减特别严重。后来加了空间分集,两根天线隔开半个波长,接收效果立马好了很多。说白了,分集就是用资源换可靠性

29.5 四种技术的对比与选择

这四种技术不是互斥的,实际系统中往往是组合使用。我画了张图,帮你理清思路:

通信系统可靠性设计知识体系 可靠性设计 冗余设计 硬件冗余 信息冗余 时间冗余 自动重传请求 停等ARQ 回退N帧ARQ 选择重传ARQ 前向纠错 汉明码 卷积码 LDPC码 分集技术 空间分集 频率分集 时间分集 实际系统中常组合使用:FEC + ARQ 是最常见的黄金搭档 FEC纠正大部分错误,ARQ处理剩余的重传需求

实际项目中,我最常用的组合是FEC + ARQ。FEC先上,能纠正大部分错误。如果FEC搞不定,再触发ARQ重传。这样既保证了低延迟,又保证了高可靠性。

我的经验总结

  • 延迟敏感场景(语音、视频):FEC为主,ARQ为辅
  • 高可靠场景(文件传输、金融交易):ARQ为主,FEC为辅
  • 恶劣信道场景(卫星、深空):FEC + 分集,ARQ作为最后手段

29.6 一个真实案例

最后分享一个我踩过的坑。几年前做无人机图传系统,一开始只用了ARQ。结果无人机飞远了,链路质量下降,重传次数暴增,延迟从50ms飙到500ms。画面卡得没法看。

后来我做了三件事:

  1. 加上RS码做FEC,能纠正每帧最多8个字节的错误
  2. 接收端用两根天线做空间分集
  3. ARQ重传上限设为2次

改完之后,延迟稳定在80ms以内,丢包率从5%降到了0.1%。你看,组合拳才是王道

好了,这章就聊到这儿。记住一句话:没有完美的技术,只有合适的设计。下次遇到通信可靠性问题,先想想这四种手段怎么搭配,别一上来就堆料。


交易系统化学习资料 微信Strategy888888