· CPU占用率高是設備本身的一種現象,直觀表現為display cpu-usage命令查詢結果中整機CPU占用率“CPU usage”偏高,如超過70%。在網絡運行中CPU高常常會導致其他業務異常,如BGP震蕩、VRRP頻繁切換、甚至設備無法登錄。
·通常,整機CPU占用率過高,是由于某些任務的CPU占用率居高不下導致的。具體導致某任務CPU占用率高的可能原因:上送CPU報文過多,如環路或DoS報文攻擊;STP網絡頻繁震蕩,收到大量TC報文,造成設備頻繁刪除MAC表和ARP表項;設備產生海量日志,占用大量CPU資源。
·執行命令display cpu-usage,查看各任務的CPU占用率。記錄CPU占用率超過70%的任務名稱。這個取值并非絕對數值,有可能某些任務執行時就需要占用70%的CPU而對業務不會造成影響,也有可能某些任務占用CPU 30%時就會對業務造成影響。應該根據實際情況判斷。
·執行命令display cpu-defend statistics,查看上送CPU報文的統計信息,關注丟棄計數。如果某種類型報文“Drop”計數較大,且對應上一步中占用的CPU使用率較高,可以判斷為發生了報文攻擊。
·如果沒有發現有流量過大的報文,檢查是否TC報文過多。支持STP的設備上,STP使能情況下,設備在接收到TC-BPDU報文時,會刪除MAC地址表項和ARP表項。如果有人偽造TC-BPDU報文惡意攻擊,設備短時間內會收到很多TC-BPDU報文,頻繁的刪除操作會導致CPU占用率比較高。執行命令display stp,查看接口下收到的TC報文和TCN報文計數。如果該值很大,系統視圖下執行命令stp tc-protection配置對TC類型BPDU報文的抑制。配置此命令后,默認每個Hello周期處理3個TC報文。可以根據實際情況通過stp tc-protection threshold命令指定處理的報文數量門限值,可以通過stp timer hello命令修改Hello周期的時長。
·如果沒有,執行命令loop-detect eth-loop alarm-only配置當發生MAC地址漂移時產生告警。如果網絡中有環路,當設備兩個接口學習到同一個MAC表項時,會產生告警根據告警提示信息,查看相應的接口連接以及組網需求。如果不需要環網,根據組網圖,將其中一個端口shutdown處理。如果確實需要環網,關閉Loop Detection功能,并啟動STP等破環協議。
·如果設備已經配置了loop-detect eth-loop alarm-only,但是沒有看到告警,檢查設備是否產生海量日志,某些異常情況下如受到攻擊、運行中發生了錯誤、端口頻繁Up/Down等,設備會不停打印診斷信息或日志信息。此時對存儲器要進行頻繁的讀寫操作,會造成CPU占用率升高。執行命令display logbuffer,查看是否有大量的異常日志。