擷取前先寫清楚問題
如果你要查PLC偶爾沒有回覆,先寫下要觀察的兩端、協定、時間及方向,再設定鏡像埠。Port Mirroring把指定來源流量複製到監看埠,供分析電腦擷取;它不是把監看電腦直接串進原通訊線。能看到封包也不表示擷取檔包含所有原始流量。
本篇使用虛構四埠管理交換器SW1:P1接PLC、P2接資料收集電腦、P3接上游交換器、P4預留給分析電腦。要查P1上的請求與回覆,候選設計為鏡像P1的雙方向到P4。實際產品是否支援、VLAN標籤如何複製、監看埠能否收發普通流量,要以型號及韌體手冊確認。
| 埠 | 原用途 | 此次設計 |
|---|---|---|
| P1 | PLC通訊 | 來源埠,觀察雙方向 |
| P2 | 資料收集電腦 | 維持原資料路徑 |
| P3 | 上游交換器 | 先不加入鏡像來源 |
| P4 | 原先未使用 | 監看目的埠,接分析電腦 |
先確認P4真的沒有承載控制、管理或備援通訊。有些產品把埠設為SPAN目的後會改變一般交換能力;如果把現有上游埠直接改成目的埠,可能破壞原網路。設定前留下埠用途、線號、現有鏡像session及回復方式,測試後再依紀錄恢復。
Cisco文件中的SPAN名稱可用來理解概念,但它的埠限制不能直接套到其他工業交換器;未指定型號時不提供猜測的命令,也不保證所有封包種類都可被複製。
Rx與Tx都以交換器為視角
Ingress或Rx是封包進入交換器來源埠;Egress或Tx是封包從交換器來源埠出去。不要改用PLC程式的收送視角。P1接PLC時,PLC送出的回覆從P1進入交換器,是P1 Rx;送往PLC的請求由P1出去,是P1 Tx。兩個方向選反,就可能只看到半段對話。
| 對話 | P1方向 | P2方向 |
|---|---|---|
| 電腦送請求給PLC | Tx:交換器送到PLC | Rx:電腦送入交換器 |
| PLC回覆電腦 | Rx:PLC送入交換器 | Tx:交換器送到電腦 |
| 只鏡像P1 Rx | 通常看到PLC送出 | 看不到完整請求方向 |
| 鏡像P1雙方向 | 可觀察請求與回覆 | 仍受擷取及鏡像能力限制 |
若同時鏡像P1與P2雙方向,同一請求可能在P2入口複製一次,又在P1出口複製一次。擷取檔出現相同內容兩份,不一定是TCP重傳;先查鏡像來源與方向,再比較序號、時間及封包內容。為回答單一PLC通訊問題,先選最少但足夠的來源。
Port mirror與VLAN mirror的觀察範圍不同。來源埠可能含多個VLAN,來源VLAN則可能包含多個實體埠的流量。不要把VLAN20填入就假設每個產品會鏡像所有進出VLAN20的封包;需查方向、路由前後位置及平台限制,再對照拓撲。
鏡像位置也影響看見的內容。Cisco部分平台文件說明入口鏡像與出口鏡像可能位於不同處理階段,ACL捨棄或路由改寫前後的可見性不同。因此入口看到一包,不足以證明它最後被轉送;出口沒看到,也要先排除鏡像路徑本身丟包。
先算監看埠是否裝得下
來源埠是一Gbps全雙工,不代表一Gbps監看埠一定能完整承接雙方向。假設P1入口持續600Mbps、出口持續700Mbps,雙方向複製量約1300Mbps;P4只有1000Mbps輸出容量,在這個簡化模型中每秒至少差300Mb,有限緩衝不能長期消除差額。
| 觀察設計 | 複製量假設 | 對一Gbps目的埠的判斷 |
|---|---|---|
| P1只入口 | 600Mbps | 平均容量有餘,但仍查突發 |
| P1只出口 | 700Mbps | 平均容量有餘,但少一方向 |
| P1雙方向 | 1300Mbps | 持續超過容量 |
| 再加其他來源 | 還會增加 | 須重新估算與實測 |
上述數字假設兩方向速率使用相同計量層次,先忽略額外開銷。實際交換器計數器可能不包含相同的Ethernet開銷,分析電腦也有網卡、驅動、CPU及磁碟限制。不要把平均負載低於百分之百當成零丟包證明,短暫突發仍可能超過鏡像緩衝。
改善方式先縮小觀察範圍與時間,或使用產品支援的更高速目的埠及適當擷取架構。若只保留單方向,報告必須說明因此不能完整配對請求回覆。不要透過降低原控制通訊速率來湊擷取容量,除非那是另外經審核的變更。
完成計算應留下來源埠方向、觀察期間、最大及平均速率、目的埠速率和預估複製總量。這份表是擷取限制的證據:如果檔案中少一筆回覆,但鏡像曾超載,不能直接指責PLC沒回。先從來源計數器、另一觀察點或應用日誌交叉查證。
VLAN與擷取品質怎麼驗收
先記錄P1是access還是trunk、允許VLAN、PVID及標籤處理,再查鏡像是否保留來源封裝。擷取畫面沒有802.1Q標籤,可能是來源本來未標記、交換器鏡像處理改變,或網卡驅動剝除標籤;不能單憑一張畫面判定VLAN不存在。
| 檢查項目 | 保留證據 | 完成後應看到 |
|---|---|---|
| 來源與方向 | 設定匯出、埠線號 | 和預定PLC路徑一致 |
| VLAN標籤 | 來源模式、鏡像封裝規則 | 能解釋標籤有無 |
| 擷取端 | 網卡速率、檔案時間、drop統計 | 知道資料是否可能漏失 |
| 交換器 | 來源與目的埠counter差值 | 區分正常路徑及鏡像損失 |
| 應用對照 | 請求序號、逾時日誌 | 以同一時間窗比對 |
在核准的測試時段擷取一段已知有通訊的流量,先確認請求與回覆方向,再逐步縮小顯示篩選。Capture filter會在擷取時捨棄不符合的封包,Display filter只改變已擷取資料的顯示;如果擷取時就排除了某個埠,後續清除顯示篩選也找不回。
保存擷取開始與結束時間、電腦時區及時鐘來源。Wireshark顯示的間隔是擷取觀察點的到達時間差,未必等於PLC程式執行時間;鏡像排隊與網路傳輸也可能影響。封包只提供證據的一部分,結論應與PLC、閘道及交換器日誌一起核對。
若鏡像目的埠沒有任何流量,依序查session是否啟用、來源是否真的有流量、方向是否選錯、目的埠是否連線,再查擷取網卡及filter。不要立即拔PLC線測試;先用既有計數器與設定快照定位,避免為了診斷擴大停機範圍。
結束擷取與常見問題
完成後保留設定前後差異、檔案名稱、雜湊、時間窗和限制說明,再按變更紀錄移除臨時鏡像設定並確認原通訊正常。擷取檔可能含設備位址及資料,分享前另存去識別副本;原件保留受控存取,不能改過原件後仍把它當完整證據。
FAQ1:封包檔沒回覆,就是PLC沒送嗎?不能這樣判斷。先查方向、鏡像負載、擷取丟包及filter,再交叉比對來源端紀錄。
FAQ2:雙方向一Gbps為何可能超過一Gbps?全雙工來源可同時收送,監看輸出要承接兩者加總。
FAQ3:相同封包兩份一定是重傳嗎?可能是多個鏡像位置重複複製,先核對來源設計,再看TCP序號及時序。
FAQ4:鏡像會保留VLAN與錯誤封包嗎?依硬體、韌體、來源位置及網卡能力,不應對未知產品保證。
參考:Cisco IOS XE Management Configuration Guide:SPAN方向、封裝、複製重複與目的埠超載。僅作該產品家族行為範例。