一、误码测试基础
1.1 误码率(BER)定义
误码率,英文叫 Bit Error Rate,简称 BER。说白了,就是传了那么多比特,到底错了多少。
公式很简单:
BER = 错误比特数 / 总传输比特数
举个例子。我发了一百万个比特过去,对方收到了,发现有 10 个是错的。那 BER 就是 10-5。
嗯,这里要注意。BER 是个统计值。你测 1 秒和测 1 小时,结果可能不一样。我见过不少新手,测了 10 秒就说 BER 达标了,结果一上真实链路就崩了。
核心要点:BER 反映的是链路质量,不是瞬时值。时间太短,统计没意义。
1.2 误码测试的目的与意义
为什么要测误码?你想想看,你花了几十万建了条链路,结果传数据老出错,那还玩什么?
我个人习惯,把误码测试的目的归纳为三点:
- 评估链路质量 —— 这条链路到底能不能用?
- 定位故障点 —— 哪里出了问题?是光模块?是光纤?还是接口?
- 验证系统余量 —— 现在能跑,以后老化了还能不能跑?
我在项目中遇到过一件事。某次验收测试,链路 BER 测出来是 10-12,看起来很好。但我坚持加测了 24 小时,结果发现凌晨 3 点 BER 会突然跳到 10-6。后来查出来是某个设备散热有问题,温度一高就出误码。
所以,误码测试的意义不只是「测一下好不好」,而是「确保它一直好」。
我的建议:验收测试至少跑 24 小时。别嫌慢,出一次问题你就知道值了。
1.3 误码测试的基本原理
误码测试的原理,其实特别简单。就三步:
- 发已知序列 —— 发送端发出一串已知的比特流,比如 PRBS(伪随机二进制序列)。
- 收并对比 —— 接收端收到后,跟本地生成的同样序列做对比。
- 数错误 —— 不一样的地方,就是误码。数一数,算一算,BER 就出来了。
为什么会用 PRBS?因为它是伪随机的,看起来像真实数据,但又可预测。你想想看,如果发全 0 或全 1,那测出来肯定没误码,但实际跑业务时数据是随机的,那就不准了。
我曾经吃过这个亏。早期做项目时,为了省事,用固定码型测误码,结果 BER 漂亮得很。一上真实业务,丢包丢到怀疑人生。后来才明白,固定码型测不出码间干扰。
注意:不要用固定码型(如全 0、全 1、交替 01)做误码测试。一定要用 PRBS 或类似随机序列。
下面这张图,是我画的一个误码测试系统的基本结构。你看一眼就明白了。
你看,发送端发 PRBS,经过信道后,接收端收到信号。接收端自己也生成了一个同样的 PRBS 序列,然后拿收到的跟本地的一比特一比特对比。不一样,就是误码。
这里有个关键点:接收端必须跟发送端同步。如果不同步,那对比出来的全是错的,BER 直接 0.5,毫无意义。
我早期做测试时,就遇到过同步丢失的问题。信号质量差的时候,接收端会失步,然后误码率突然飙升。嗯,这时候你要先判断:是真的误码多了,还是同步丢了?
小技巧:看误码的分布。如果是随机分散的,那是真误码。如果是一段一段的连续错误,大概率是同步丢了。
最后,说一个常见的误区。很多人觉得 BER 测到 10-12 就万事大吉了。其实不是。10-12 的意思是,每传 1 万亿比特,可能错 1 个。听起来很少对吧?但如果你传的是 100Gbps 的信号,1 秒钟就传了 1000 亿比特。也就是说,10 秒钟就可能错 1 个比特。
对于语音通信,错 1 个比特无所谓。但对于文件传输,错 1 个比特,整个文件就坏了。所以,不同的业务,对 BER 的要求是不一样的。
| 业务类型 | 典型 BER 要求 | 说明 |
|---|---|---|
| 语音通信 | ≤ 10-3 | 人耳对少量误码不敏感 |
| 视频传输 | ≤ 10-6 | 误码会导致画面花屏 |
| 数据通信 | ≤ 10-9 | 文件传输要求高可靠性 |
| 光纤骨干网 | ≤ 10-12 | 高速长距离传输 |
好了,误码测试的基础就这些。记住一句话:误码测试不是走过场,它是链路质量的照妖镜。你认真测,它就能帮你发现问题。你敷衍它,它就在关键时刻给你颜色看。