实战案例:惊!工业环网刚运行一个多月出问题,丢包严重到 “全线告急”!
本期分享的案例是工业以太网的相关问题。
问题背景近期呢,有不少朋友咨询工业环网方案如何部署?如何维护?今天来给大家分享一个典型工业场景案例。项目地是一个自来水厂,工作人员发现每隔1-2个月,控制中心的控制台PC访问和ping工业终端存在大量丢包,而ping直连的交换机则无丢包。这个项目用的是某M的工业交换机部署的ERPS环网架构,组网拓扑如下:
基础规划如下:
整个网段都是192.168.0.0/24机房交换机为RPL角色,RPL Owner端口位置如上拓扑显示其它环网交换机均为Normal角色工业以太网中ERPS环网应用是非常常见的,可能有一些小伙伴不太了解机制原理,这里我简单普及一下。
ERPS环网基本原理这是一个主环拓扑,基本工作原理如下:
正常工作状态下,RPL交换机和Normal交换机的状态机是“Idle”,RPL口是”阻塞“状态,逻辑上收敛成一个无环链路;存在链路故障,比如"滤药—脱水"这条链路挂了,所有环网交换机的状态机同步为“Protection”,此时RPL切换为“转发”,切换时间<50ms,逻辑上依旧是一个无环链路;链路恢复,比如“滤药—脱”水链路恢复,所有环网交换机的状态机同步为”Pending“并内置定时器WTR,因为没法判断这条恢复链路是否稳定,此时RPL口依旧是“转发”状态;当WTR定时器超时后恢复链路依然稳定,此时所有交换机同步切换为“Idle”状态机,RPL端口也切换为“阻塞”,切换时间<50ms。好了,基本情况就是这样,记住这一点就行,这个是典型的”单主环“工作原理。
问题确认这个项目网络异常时控制台PC ping工业终端大量丢包,进一步分析这些终端都是在ERPS环交换机上的,而ping非环交换机、直连交换机则无此问题,所以我们以交换机IP为目标测试:
可以明确确认,PC访问非直连的其它ERPS环网交换机时,链路上都会出现丢包问题!那么ERPS环网如何排查呢?主要从以下状态参数入手:
检查环网口物理链路是否有明显短路或不稳定故障;检查交换机的环网状态是否正常,这个要看“状态机”;抓取环网端口口的报文,分析ERPS检测包是否收发正常。基础排查第一步、物理链路检查
确认环网交换机环网口之间的光纤连接正常,无松动、损坏迹象。同时,检查端口状态,发现端口均已正常UP,排除了物理链路层面的问题。
第二步、检查设备状态机
物理链路检查无问题,下一步需要进入路由CLI界面,命令的方式查看RPL交换机的ERPS状态机:
第一次敲击:从命令回显可以看到一个关键信息:
环交换机的环网口始终处于Forwarding(转发)状态,理论上数据转发不会丢包。但我们发现,Ring State(环网状态)在Pending和Protection之间切换非常频繁,即便是环网口处于转发模式但因状态机震荡过于剧烈,也是可能导致设备丢包的(比如1s震荡几百次)
那么造成震荡的原因可能是BUG,也可能是链路质量,下一步我们需要抓包看看到底是那条链路的ERPS检测报文交互存在异常。
第三步、抓包分析ERPS检测报文状态
抓包点位如下:
我们找到了环网检测包CCM发包异常的交换机是“送水泵房48”,通过wireshark分析过滤,有很多时候它的CCM检测发包间隔能打到17-34ms,这是完全不符合预期的:
我们看看正常的交换机“沉淀池 50”,基本上CCM发包间隔最多只有3ms,完全符合ERPS环网检测预期:
基本定位问题原因:
“送水泵房48”环交换机CCM检测包发包异常,导致ERPS整网状态剧烈震荡在Protection和Pending之间切换从而控制台访问工业终端时存在丢包问题。
解决方案从上述分析发现时“送水泵房48”交换机发包异常,造成其原因有两种可能:
设备软件BUG设备环网口和链路质量不佳对此找到了某M官网找了固件完成异常设备的升级,发现运行一段时间后问题依旧,还是这台设备发包异常。
再对其整改了光模块和光纤链路,历时3个月运行,问题未再发生,圆满解决(前文说过基础硬件检查光链路正常link和收发闪烁,但并不代表链路质量完全无问题)。