實戰(zhàn)案例:驚!工業(yè)環(huán)網(wǎng)剛運行一個多月出問題,丟包嚴重到 “全線告急”!
本期分享的案例是工業(yè)以太網(wǎng)的相關問題。
問題背景
近期呢,有不少朋友咨詢工業(yè)環(huán)網(wǎng)方案如何部署?如何維護?今天來給大家分享一個典型工業(yè)場景案例。項目地是一個自來水廠,工作人員發(fā)現(xiàn)每隔1-2個月,控制中心的控制臺PC訪問和ping工業(yè)終端存在大量丟包,而ping直連的交換機則無丟包。這個項目用的是某M的工業(yè)交換機部署的ERPS環(huán)網(wǎng)架構,組網(wǎng)拓撲如下:
基礎規(guī)劃如下:
- 整個網(wǎng)段都是192.168.0.0/24
- 機房交換機為RPL角色,RPL Owner端口位置如上拓撲顯示
- 其它環(huán)網(wǎng)交換機均為Normal角色
工業(yè)以太網(wǎng)中ERPS環(huán)網(wǎng)應用是非常常見的,可能有一些小伙伴不太了解機制原理,這里我簡單普及一下。
ERPS環(huán)網(wǎng)基本原理
這是一個主環(huán)拓撲,基本工作原理如下:
- 正常工作狀態(tài)下,RPL交換機和Normal交換機的狀態(tài)機是“Idle”,RPL口是”阻塞“狀態(tài),邏輯上收斂成一個無環(huán)鏈路;
- 存在鏈路故障,比如"濾藥—脫水"這條鏈路掛了,所有環(huán)網(wǎng)交換機的狀態(tài)機同步為“Protection”,此時RPL切換為“轉(zhuǎn)發(fā)”,切換時間<50ms,邏輯上依舊是一個無環(huán)鏈路;
- 鏈路恢復,比如“濾藥—脫”水鏈路恢復,所有環(huán)網(wǎng)交換機的狀態(tài)機同步為”Pending“并內(nèi)置定時器WTR,因為沒法判斷這條恢復鏈路是否穩(wěn)定,此時RPL口依舊是“轉(zhuǎn)發(fā)”狀態(tài);
- 當WTR定時器超時后恢復鏈路依然穩(wěn)定,此時所有交換機同步切換為“Idle”狀態(tài)機,RPL端口也切換為“阻塞”,切換時間<50ms。
好了,基本情況就是這樣,記住這一點就行,這個是典型的”單主環(huán)“工作原理。
問題確認
這個項目網(wǎng)絡異常時控制臺PC ping工業(yè)終端大量丟包,進一步分析這些終端都是在ERPS環(huán)交換機上的,而ping非環(huán)交換機、直連交換機則無此問題,所以我們以交換機IP為目標測試:
可以明確確認,PC訪問非直連的其它ERPS環(huán)網(wǎng)交換機時,鏈路上都會出現(xiàn)丟包問題!那么ERPS環(huán)網(wǎng)如何排查呢?主要從以下狀態(tài)參數(shù)入手:
- 檢查環(huán)網(wǎng)口物理鏈路是否有明顯短路或不穩(wěn)定故障;
- 檢查交換機的環(huán)網(wǎng)狀態(tài)是否正常,這個要看“狀態(tài)機”;
- 抓取環(huán)網(wǎng)端口口的報文,分析ERPS檢測包是否收發(fā)正常。
基礎排查
第一步、物理鏈路檢查
確認環(huán)網(wǎng)交換機環(huán)網(wǎng)口之間的光纖連接正常,無松動、損壞跡象。同時,檢查端口狀態(tài),發(fā)現(xiàn)端口均已正常UP,排除了物理鏈路層面的問題。
第二步、檢查設備狀態(tài)機
物理鏈路檢查無問題,下一步需要進入路由CLI界面,命令的方式查看RPL交換機的ERPS狀態(tài)機:
- 第一次敲擊:
<JIFANG-54> display erps ring 1 verbose
Ring ID : 1
Description : Ring 102
Control Vlan : 1002
Protected Instance : 4092
Service Vlan : 500 to 600
WTR Timer Setting (min) : 1 Running (s) : 0
Guard Timer Setting (csec) : 200 Running (csec) : 0
Holdoff Timer Setting (deciseconds) : 0 Running (deciseconds) : 0
WTB Timer Running (csec) : 0
Ring State : Protection
Port Port Role Port Status Signal Status
--------------------------------------------------------------------------------
10GE1/0/1 Common Forwarding Non-failed
10GE1/0/2 RPL Owner Forwarding Non-failed
- 第二次敲擊:
<JIFANG-54> display erps ring 1 verbose
Ring ID : 1
Description : Ring 102
Control Vlan : 1002
Protected Instance : 4092
Service Vlan : 500 to 600
WTR Timer Setting (min) : 1 Running (s) : 0
Guard Timer Setting (csec) : 200 Running (csec) : 0
Holdoff Timer Setting (deciseconds) : 0 Running (deciseconds) : 0
WTB Timer Running (csec) : 0
Ring State : Pending
Port Port Role Port Status Signal Status
--------------------------------------------------------------------------------
10GE1/0/1 Common Forwarding Non-failed
10GE1/0/2 RPL Owner Forwarding Non-failed
從命令回顯可以看到一個關鍵信息:
環(huán)交換機的環(huán)網(wǎng)口始終處于Forwarding(轉(zhuǎn)發(fā))狀態(tài),理論上數(shù)據(jù)轉(zhuǎn)發(fā)不會丟包。但我們發(fā)現(xiàn),Ring State(環(huán)網(wǎng)狀態(tài))在Pending和Protection之間切換非常頻繁,即便是環(huán)網(wǎng)口處于轉(zhuǎn)發(fā)模式但因狀態(tài)機震蕩過于劇烈,也是可能導致設備丟包的(比如1s震蕩幾百次)
那么造成震蕩的原因可能是BUG,也可能是鏈路質(zhì)量,下一步我們需要抓包看看到底是那條鏈路的ERPS檢測報文交互存在異常。
第三步、抓包分析ERPS檢測報文狀態(tài)
抓包點位如下:
我們找到了環(huán)網(wǎng)檢測包CCM發(fā)包異常的交換機是“送水泵房48”,通過wireshark分析過濾,有很多時候它的CCM檢測發(fā)包間隔能打到17-34ms,這是完全不符合預期的:
我們看看正常的交換機“沉淀池 50”,基本上CCM發(fā)包間隔最多只有3ms,完全符合ERPS環(huán)網(wǎng)檢測預期:
基本定位問題原因:
“送水泵房48”環(huán)交換機CCM檢測包發(fā)包異常,導致ERPS整網(wǎng)狀態(tài)劇烈震蕩在Protection和Pending之間切換從而控制臺訪問工業(yè)終端時存在丟包問題。
解決方案
從上述分析發(fā)現(xiàn)時“送水泵房48”交換機發(fā)包異常,造成其原因有兩種可能:
- 設備軟件BUG
- 設備環(huán)網(wǎng)口和鏈路質(zhì)量不佳
對此找到了某M官網(wǎng)找了固件完成異常設備的升級,發(fā)現(xiàn)運行一段時間后問題依舊,還是這臺設備發(fā)包異常。
再對其整改了光模塊和光纖鏈路,歷時3個月運行,問題未再發(fā)生,圓滿解決(前文說過基礎硬件檢查光鏈路正常link和收發(fā)閃爍,但并不代表鏈路質(zhì)量完全無問題)。