您好,欢迎访问飞畅科技官网!
服务热线:+086 0571-87007055/56/57 EN
飞畅科技工业通信技术中心

光通信与工业互联网方案专家

EXPERT IN OPTICAL COMMUNICATION & INDUSTRIAL INTERNET SOLUTIONS

联系我们CONTACT US

全国咨询热线

0571-87007055/56/57/75

市场部直线电话:0571-87007140

手机:15306818230(微信)

QQ :2355416925

定制设计:18072828031(微信)

或给我们留言

在线留言

工业以太网帧校验原理:CRC、FCS与坏帧定位

浏览次数:飞畅科技原创作者:飞畅科技技术团队

FIBERIOT / 故障排查

工业现场的交换机链路灯亮着,PLC却偶尔通信超时,不能直接判断交换机性能不足。电缆、端接或收发电路可能使比特发生变化,而缓存拥塞也会丢弃完整的帧。CRC是计算方法,FCS是以太网帧携带校验结果的字段。理解它们所在的接收路径,才能读懂错误计数,避免拿一个“丢包”结论解释所有故障。本文说明通用机制,不把示意数据当成飞畅实测。

原理图可点击查看原图;手机端可横向滑动查看清晰标注。

以太网帧字段、CRC移位异或电路和一位翻转的校验对比
图1:FCS保护MAC帧内容;比特变化会破坏校验关系。电路为通用原理示意,不是产品内部实拍。

01一帧数据为什么需要末尾的FCS

发送端MAC把目的地址、源地址、类型或长度以及数据和必要填充组织成帧,再在末尾放入4字节FCS。带802.1Q标签时,标签也属于参与校验的帧内容。前导码和帧起始定界符帮助接收端同步,但不属于这段CRC保护范围;帧间间隔同样不是被保护的数据。把FCS画在帧尾,是为了说明接收端必须看到校验字段,才能完成本帧的一致性判断。

铜缆上传输的是电气信号,光纤上传输的是光信号,PHY把收到的信号恢复成比特。衰减、反射、串扰或收发器异常可能让一个原本为0的比特被判成1。链路UP说明已建立物理连接,不等于每一帧都无误。接收MAC重新计算并检查校验关系,若不符合,说明该帧不能作为可信数据继续交付。

还要区分FCS与上层协议的校验:FCS围绕当前以太网帧,不能替代TCP、UDP或应用自身的完整性检查。交换节点改变VLAN标签等受保护内容时,需要使输出帧的FCS与输出内容一致。因此某个接收口校验通过,不能单独证明应用数据从最初生成到最后使用的全过程都没有问题,也不能证明发送端最初生成的数据就是正确的。

02CRC不是简单相加,而是移位与异或

CRC可理解为把比特串当作二进制多项式,用规定的生成多项式做模2运算。模2加减都是异或,不会产生普通算术的进位。硬件常用移位寄存器和反馈异或网络,一边接收比特一边更新状态,不必等软件逐字节计算。以太网采用32位CRC;发送端与接收端必须遵守一致的多项式、初值、位序和最终处理规则,不能随意挑一种“CRC32”实现就认为兼容。

直观教学可以画成发送端生成FCS、接收端对收到的帧内容重算并比较;实际电路也可能将包括FCS在内的帧送入校验器,检查规定的固定余数。两种描述都在验证同一关系。CRC能够发现多类比特错误,但它只检错,不指出哪个比特应修改,也不保证发现所有可能的错误组合。它没有密钥,不能替代加密、认证或防篡改签名。

原理图可点击查看原图;手机端可横向滑动查看清晰标注。

PHY恢复比特后MAC校验并丢弃坏帧的路径
图2:解释坏帧为何可能在进入普通抓包程序前被丢弃,并区分存储转发与直通转发。

03为什么坏帧可能在抓包软件里看不到

典型接收路径是接口、PHY、MAC校验、交换或接收缓冲、上层处理。若MAC或网卡在交给驱动之前丢弃坏帧,普通抓包程序只看到幸存的帧。因此抓包文件没有CRC错误,不代表电气链路没有坏帧;许多网卡还会去除FCS,抓到的帧长度与线上帧并不完全相同。排查时应同时保存交换机入口错误计数、终端网卡统计和抓包记录。

存储转发模式收完整帧后再校验并作转发判断,校验失败通常在入口丢弃。直通转发则可能在帧尾到达前已开始发送帧头,坏帧可能传播到后续链路,具体处理与统计因芯片和固件而异。不能仅凭“工业交换机”名称认定其模式,也不能把多台设备都有错误直接理解成多处独立损坏。飞畅具体型号的转发方式和计数含义,应以对应资料或确认结果为准。

原理图可点击查看原图;手机端可横向滑动查看清晰标注。

PLC到交换机的接收CRC计数与出口丢弃趋势对照
图3:从报错的接收入口向前检查相邻链路。趋势仅作机制示意,非飞畅实测。两幅上升曲线分别表示传输损坏和拥塞的独立示例,不代表同一故障同时产生两种计数。

04接收端报错,检查的是哪一段链路

若PLC A向交换机B发送,B的入口CRC持续增加,首先检查A发送端到B接收端这段:A的接口、跳线、配线连接和B的接收电路。B报告的是收到的帧不符合校验,并不能单凭一个计数把责任判给A。反方向B到A使用另一条接收路径,可能没有同样症状。双纤光链路同样要按本端TX到对端RX、对端TX到本端RX分别定位。

应记录同一时间窗口的增量,不能仅看多年累计值。例如先保存基线,等待固定观察时段,再比较CRC增加量、收帧增加量和业务超时。示意的“本次新增10帧错误”不是产品性能数据。各设备的input errors可能包含CRC、长度或其他原因,discards也可能包含策略与资源丢弃,统计项未必相互独立,不能随意相加求总丢包率。

清零后的观察还要保留时间和操作记录,确保不同端口的增量来自同一个观察窗口。

05把传输损坏与拥塞丢弃分开验证

完整帧进入交换机后,如果多个入口同时汇入较慢出口,队列可能没有剩余空间,帧仍会被丢弃。这个过程不需要比特错误,通常表现为出口丢弃或缓存相关计数上升,而CRC保持不变。反过来,轻负载下CRC仍增加,更应追查线缆、接头、接口或干扰。CRC为零不能证明全网无故障:错误可能发生在其他端口,或者设备没有暴露相关统计。

检修可从已知良好跳线开始,每次只换一个部件,保持流量和观察时间尽量一致。铜缆检查线对端接、插头接触和与强电的敷设距离;光链路检查洁净端面、收发方向、模块兼容性和功率是否处于对应规格范围。DDM光功率是辅助证据,不能代替帧校验,也不能仅凭一次数值判定模块坏了。必要时安排维护窗口,用受控流量作双向对照。

通信超时还可能由应用任务阻塞、设备重启或配置错误引起。先保留现场现象,再用计数定位观察层级:链路是否建立、帧是否完整、队列是否接受、应用是否及时响应。若只有业务日志而没有端口证据,应把原因标为待验证,避免用换交换机代替定位。

06形成可复现的验收记录

飞畅官网的管理型24路千兆电加4路千兆SFP光口/4路千兆电口交换机,是工业铜光连接相关产品资料的入口;本文不据此承诺某个未公开的CRC命令或芯片结构。工程选用时要确认当前固件能读取哪些入口、出口和光口指标,并核对复位、溢出以及清零行为。不能为了方便比较,未经记录就把生产端口累计计数全部清掉。

验收表至少包括拓扑、端口号、介质与模块、时间窗口、负载条件、前后计数、单次替换动作和业务恢复结果。坏帧计数停止增长是物理传输改善的线索,还要确认超时、时延和业务连续性恢复。结论应写成“在本次条件下某段错误不再新增”,而不是“永远不会丢包”。把机制、观察与结论分开,下一位工程师才能复现排查过程。

参考资料:Cisco CRC/FCS机制说明;飞畅对应工业交换机资料。原理图为原创示意,非产品内部实拍或实测。