華為交換機CPU佔用率高原因判斷和解決方法(三)

7、識別交換機行為

在收集交換機CPU的使用情況後,如果確認交換機出現CPU佔用率過高的情況,則需要對CPU佔用率過高時設備的行為進行分析。通常情況下,系統CPU佔用率過高與特定的業務處理或網絡環境異常有關,因此可以通過收集系統CPU佔用率過高期間CPU佔用率較高的任務來分析設備當時的行為。

根據上節中命令的提示或者收集到的日誌、告警的信息,獲取CPU佔用率較高的任務,建議重點關注佔用率最高的前3個任務。

系統通過任務承載業務功能,任務的CPU佔用率可以在一定程度上反映各業務功能的活動情況,是分析設備行為的重要手段。通常情況下,可以根據實際業務部署情況重點關注以下幾類重要任務:

1、系統空閒任務

該任務是系統中的一個特殊任務,任務名為VIDL,任務優先級最低,僅在沒有其他任何非空閒任務運行時,該任務才會佔用CPU;在其他非空閒任務需要使用CPU時,該任務會被立即搶佔。

CPU佔用率是指各非空閒任務佔用CPU運行時間的比率,因此,系統會利用VIDL任務佔用CPU的時間來統計設備的CPU佔用率。VIDL任務的CPU佔用率越高,系統的CPU佔用率越低,系統越空閒。

2、系統管理任務

這一類任務的主要功能是對系統資源進行管理,並提供操作系統基礎機制,如定時器、信息中心等功能。常見的可能導致CPU佔用率過高的系統管理任務有:

2.1、信息中心:

主要包括BOX任務(用於輸出黑盒子中存儲的信息)、INFO任務(用於接收、輸出業務模塊產生的日誌、告警)等,這些任務的主要功能是提供操作系統的基礎信息中心功能(如日誌、告警、異常、死循環的記錄,調試信息的輸出等),當設備輸出大量調試信息或者日誌信息時,可能會引起該任務CPU佔用率過高。

2.2、設備管理:

主要包括DEV任務(用於管理設備上的硬件模塊)、HOTT任務(用於管理板卡的熱插拔)、SRMI任務(用於處理設備器件相關的外部中斷)等,這些任務主要用於處理各類設備變化事件,在配置恢復、主備倒換、堆疊新成員加入、子卡插入等特殊階段可能出現短時間的CPU升高的情況,一般不會對業務造成影響;但是在部分設備器件故障時會上報大量中斷,可能會導致SRMI任務CPU佔用率升高。

2.3、設備之間通信:

主要包括IPCR任務(用於設備之間通信消息的發送、接收及分發)、IPCQ任務(用於設備之間通信消息的失敗重傳)、RPCQ任務(用於提供遠程過程調用功能)等,這些任務的主要功能是實現設備之間管理消息通信功能。在產生大量設備之間管理消息的情況下,如大規格路由震盪、大量用戶併發上線、環網震盪等,可能會導致這一類任務的CPU佔用率升高。

2.4、接口管理:

主要包括IFNT任務(負責接口狀態變化事件的處理)、IFPD任務(維護設備的接口數據庫,處理各種接口狀態變化事件)、linkscan任務(端口link狀態檢測任務)等,用於對設備當前的接口及其外圍器件(如光模塊)信息和接口狀態進行維護,並將接口事件通告給業務模塊進行處理。在接口數量較多、接口link狀態震盪、光模塊異常等情況下可能會導致這一類任務的CPU佔用率升高。

3、網絡管理任務

這一類任務的功能包括兩個方面,一是提供網絡管理界面;二是提供對網絡狀況的監控管理能力。常見的可能出現CPU佔用率過高的任務有:

3.1、網絡管理:

主要包括AGNT任務(提供IPv4 SNMP功能)、AGT6任務(提供IPv6 SNMP功能)、VTx任務(VTY用戶任務,用於提供VTY用戶的登錄、鑑權、人機交互功能,x表示用戶的登錄序列,如第一個用戶任務名為VT0)、FTPS任務(提供FTP服務功能)等,這些任務的作用是提供用戶通過網絡管理設備的能力。在用戶終端打印大量數據、多個FTP進程同時下載文件、網管軟件頻繁訪問設備遍歷MIB節點信息等情況下,可能會出現這類任務的CPU佔用率短時間過高的情況。

3.2、網絡監控:

主要包括NSA任務(提供Netstream功能,用於監控網絡中的業務流量)、NQAS和NQAC任務(提供NQA功能,用於對現網業務報文進行仿真測試)等,這些任務的主要作用是提供用戶對網絡的監控能力。這些任務一般不會導致CPU佔用率過高。

4、報文接收和發送類任務

在網絡中,可將報文按照功能分為控制報文和數據報文。在華為交換機控制面和轉發面雙平面分離的架構設計下,控制報文和部分數據報文(如ARP-Miss報文、組播RPF-Fail報文等)需要在控制面進行處理,而控制面的處理核心即為設備的CPU。由轉發面上送CPU的報文經過一系列報文接收和發送任務的逐層解析和分發處理,最終完成整個報文的處理和轉發過程,在這個過程中,涉及到BCMR、BCMT、MV0~7、FTS、VP、VPR、VPS、SOCK等任務,當大量報文發送到控制面處理時,這些任務的CPU佔用率就會出現顯著的升高。這一類原因是導致系統CPU佔用率高的重要原因。

5、業務協議類任務

業務協議任務承載了交換機的大部分協議功能。在網絡穩定的情況下,業務協議的交互與處理一般不會造成較大的CPU佔用率的波動,但是在網絡變動頻繁甚至是震盪的情況下,業務協議需要適應網絡環境的變化進行頻繁的交互和計算,此時可能會引起CPU佔用率的升高。

常見的容易引起設備CPU佔用率過高的任務包括ROUT(提供BGP、IS-IS、OSPF、RIP等路由協議功能)、FIB等路由管理任務,frag_add、frag_del、MSYN等MAC管理任務,DHCP、EAP、SAM等用戶管理任務以及ARP等交互較為頻繁的協議任務。

8、分析交換機CPU高的根本原因

系統CPU佔用率高通常是由系統外部輸入或者系統內部事件觸發的,如業務配置、網管同步、網絡環境、器件故障等。因此,要確認設備CPU佔用率高的根本原因,可以首先根據網絡運維信息瞭解設備CPU佔用率過高時有無重要的網絡事件,如網絡割接、鏈路狀態變化、業務調整、備件更換、網管同步、大量用戶上線、設備告警以及網絡震盪等。

通過了解這些信息,可以為排查工作提供一些重要的線索,縮小分析排查的範圍。

通過分析CPU佔用率過高時的設備行為,我們可以初步判斷導致CPU佔用率高的直接原因,再結合網絡部署及網絡環境信息進行分析,可以最終找出導致CPU佔用率高的根本原因。

由於系統中不同類型任務的處理過程不同,導致CPU佔用率升高的根因也不同。

1、系統管理類任務

系統管理類任務的作用是對系統中的各器件進行管理,並提供操作系統基本功能給其他業務模塊使用,因此係統管理類任務CPU佔用率高的主要原因包括系統內部原因和其他模塊觸發兩類。系統內部原因,通常是由硬件故障引起的,其他業務模塊觸發的情況下,可以根據導致系統CPU佔用率過高的業務模塊信息對問題進行分析。

2、網絡管理類任務

網絡管理類任務CPU佔用率高是由網管同步等網絡管理事件觸發的,其影響時間較短,通常對業務不會造成影響。此類情況可以結合網絡管理事件進行分析。

3、報文接收/發送類和業務協議類任務

這兩類任務CPU佔用率高往往是同時發生的,通常是由協議報文大量上送CPU產生的,可按照以下思路進行分析:

3.1、確定報文的種類

不同款型的交換機有多種方式對上送CPU的報文進行統計,主要有如下幾種方式:

3.1.1、根據CPU-Defend統計信息分析上送報文的種類(僅S5710EI、S5700EI、S5700HI和S6700支持支持)

可以通過display cpu-defend statistics all命令收集系統中所有上送CPU的報文的統計值。該統計值是持續累加的。如果連續採集幾次信息發現某類報文上送CPU的速率明顯較大(採集速率可以通過display cpu-defend rate all命令查看)甚至出現超出系統對該類報文上送CPU的速率的限制而產生報文丟棄的情況,則可將CPU佔用率高的直接原因確認為是該類報文引起的。

可以使用reset cpu-defend statistics命令清空統計信息。同時CPU-Defend功能以10分鐘為週期對報文上送CPU的情況進行監控,如果在檢測週期內發現有報文上送CPU的數量超過閾值的情況,系統會將該類報文的報文類型、丟棄數量、發生時間等重要信息記入日誌,可以通過查看該日誌獲取CPU佔用率高時系統狀態的歷史記錄。日誌格式為:

盒交換機:

DEFD/4/CPCAR_DROP_MPU:Rate of packets to cpu exceeded the CPCAR limit on the MPU. (Protocol=[STRING], CIR/CBS=[ULONG]/[ULONG], ExceededPacketCount=[STRING])

框式主控板:

DEFD/6/CPCAR_DROP_MPU:Rate of packets to cpu exceeded the CPCAR limit on the MPU. (Protocol=[STRING], CIR/CBS=[ULONG]/[ULONG],

ExceededPacketCount=[STRING])

框式業務板:

DEFD/6/CPCAR_DROP_LPU:Rate of packets to cpu exceeded the CPCAR limit on the LPU in slot [STRING]. (Protocol=[STRING],

CIR/CBS=[ULONG]/[ULONG], ExceededPacketCount=[STRING])

3.1.2、根據業務模塊使用情況判斷上送CPU的報文種類

大量協議報文上送CPU通常會伴隨著相關協議業務模塊任務CPU佔用率升高,可以利用協議任務CPU佔用率信息判斷是哪一類的報文大量上送CPU,常見的重要協議任務如下:

華為交換機CPU佔用率高原因判斷和解決方法(三)

3.2、(可選)確定報文的詳細特徵

如果根據報文種類和網絡管理事件仍無法分析出具體原因,則可以通過端口鏡像獲取報文信息、打印調試信息等方式分析上送CPU的報文的詳細特徵。

3.2.1、端口鏡像獲取報文信息(推薦)

端口鏡像獲取報文信息是最直接的獲取報文詳細特徵的方式,且對設備的CPU不會造成任何影響,建議在上送CPU的報文的入方向端口進行鏡像。

3.2.2、打印調試信息

如果不滿足鏡像獲取報文信息條件,可以通過打印調試信息的方式對報文詳細特徵進行獲取,打印調試信息本身會佔用CPU資源,在定位問題過程中打印大量調試信息會加劇CPU佔用率高的情況,請慎重使用。

3.2.2.1、(可選)通過ACL定義報文輸出過濾器

如果需要對IP層調試信息進行過濾,可以通過配置ACL並應用在debug命令中的方式對輸出調試信息進行過濾。

3.2.2.2、打開相應層次的調試信息開關

常用的調試信息包括IP層調試信息和鏈路層調試信息兩種:

IP層調試信息:可以使用debugging ip packet命令打開IP層調試信息,該命令支持按照ACL對輸出信息進行過濾。

鏈路層調試信息:可以使用debugging ethernet packet命令打開Ethernet層調試信息,該命令支持按照報文類型和接口對輸出信息進行過濾。

3.2.2.3、打開終端信息輸出開關

通過執行terminal monitor命令和terminal debugging命令將調試信息輸出到用戶終端。

3.3、分析根因

根據報文的種類和特徵可以得到導致設備CPU佔用率高的直接原因,根據該原因進一步分析問題的根本原因並進行相應的故障處理措施。常見的根本原因包括協議震盪、網絡環路、網絡攻擊以及業務併發等,詳細的故障處理措施請參考下節。

9、常見的引起CPU佔用率高的原因和解決措施

1、硬件故障引起交換機CPU佔用率高

當交換機出現硬件故障時,器件可能會大量上報中斷,引起系統CPU佔用率過高。由於硬件故障導致CPU佔用率過高時,通常表現為SRMI、SRMR、BCMDPC等中斷處理相關的任務佔用率較高,因此如果出現系統CPU佔用率較高且以上相關任務佔用率排名靠前的情況,則可能是系統硬件出現故障。

判斷故障根源可能為硬件故障時,請先嚐試手工復位CPU佔用率較高的設備(建議採用下電的方式進行重啟),如果重啟後問題依然存在,請聯繫技術支持工程師進行處理。

2、網絡環境引起交換機CPU佔用率高

網絡環境因素是導致交換機CPU佔用率高的一類主要外部原因,常見的原因有網絡震盪、網絡環路、網絡攻擊等,不同原因導致的問題表現不同,需要根據具體情況分別進行處理。

2.1、網絡震盪

網絡震盪是導致設備CPU佔用率過高的一類重要原因,出現網絡震盪的情況下,網絡頻繁變動,設備忙於處理網絡切換事件,導致CPU佔用率高。常見的網絡震盪情況如下:

2.1.1、STP震盪

STP震盪是二層網絡中的場景問題,在STP頻繁震盪的情況下,設備需要不斷進行STP拓撲計算,更新MAC表和ARP表等轉發表,引起CPU佔用率高。

當懷疑網絡中存在頻繁的STP震盪時,可以通過display stp topology-change命令查看STP的拓撲變化信息。

如果確認存在頻繁的網絡拓撲變化,可以通過display stp tc-bpdu statistics命令查看端口上接收到的TC-BPDU統計,以確定TC報文的來源。

根據TC報文的來源,找到發送拓撲變化的設備,根據該設備上的網絡管理事件和系統日誌分析STP拓撲變化的根因。

STP震盪引起交換機CPU佔用率高處理建議

如果是接入側端口up/down引起的STP拓撲變化,則在接口視圖下通過stp edged-port enable命令將接入側端口配置為邊緣端口,並通過stp bpdu-protection命令開啟BPDU保護功能。

如果是根橋發生了非預期的變化,即通常所說的搶根,則需要為原預期的端口通過

stp root-protection命令開啟根保護功能,保證拓撲的正確性。

如果網絡中發生了TC攻擊,則在被攻擊的端口通過stp tc-protection命令部署TC保護功能,減少TC攻擊對設備的影響。

如果無法找到拓撲變化原因或者執行以上處理措施後故障依然存在,請聯繫技術支持工程師。

2.1.2、路由協議震盪

路由協議震盪會導致路由信息的重新擴散和路由表的重新計算,對設備CPU產生影響。交換機的實際應用中,通常使用OSPF協議對動態路由信息進行管理。

可以通過日誌查看OSPF鄰居狀態Down的原因。執行display logbuffer命令,查看如下日誌信息:

OSPF/3/NBR_DOWN_REASON:Neighbor state leaves full or changed to Down. (ProcessId=[USHORT], NeighborRouterId=[IPADDR], NeighborAreaId=[ULONG], NeighborInterface=[STRING],NeighborDownImmediate reason=[STRING], NeighborDownPrimeReason=[STRING], NeighborChangeTime=[STRING])

NeighborDownImmediate reason此關鍵字記錄的是OSPF鄰居Down的原因。OSPF鄰居Down的原因一般會有以下幾種:

Neighbor Down Due to Inactivity:表示在deadtime時間內沒有收到Hello報文導致OSPF鄰居Down。

Neighbor Down Due to Kill Neighbor:表示因為接口Down、BFD Down或執行了reset ospf process操作。此時,可以通過查看NeighborDownPrimeReason字段判斷具體原因。

Neighbor Down Due to 1-Wayhello ReceivedNeighbor Down Due to SequenceNum Mismatch:表示因為對端OSPF狀態首先變成Down,從而向本端發送1-Wayhello,導致本端OSPF狀態也變成Down。這種情況請先排查對端設備的原因。

OSPF鄰居Down的常見原因包括接口鏈路震盪、大量LSA flooding等。

接口鏈路震盪

接口鏈路震盪會導致OSPF鄰居關係震盪,可以通過日誌信息查看接口up/down的記錄情況。如果出現鏈路震盪,請對接口鏈路進行檢查。

大量LSA flooding

大量LSA flooding會導致網絡中產生大量的LS UPDATE消息,此時設備忙於處理LS UPDATE,可能會導致Hello報文得不到及時處理引起鄰居狀態Down。建議處理措施如下:

如果OSPF鄰居超時時間配置小於20s,建議接口視圖下通過ospf timer dead interval命令將OSPF鄰居超時時間配置為20s以上。

建議OSPF視圖下通過sham-hello enable命令使能ospf sham-hello功能,允許設備通過LSU等非hello報文維持鄰居關係。

如果執行上述措施後仍然無法解決問題,建議聯繫技術支持工程師。

2.2、網絡環路

網絡環路是導致設備CPU佔用率高的一類重要原因,出現網絡環路的情況下,設備上MAC表頻繁漂移,同時廣播風暴會造成大量協議報文上送設備處理,導致CPU佔用率高。

網絡出現環路後會導致廣播風暴,同時可能會有如下現象產生:

設備無法遠程登錄;在設備上使用display interface命令查看接口統計信息時發現接口收到大量廣播報文;使用串口登錄設備進行操作時,操作比較慢;CPU佔用率超過70%;通過Ping命令進行網絡測試時丟包嚴重;設備上發生環路的VLAN的接口指示燈頻繁閃爍;PC機上能收到大量的廣播報文;出現頻繁的MAC漂移;設備部署環路檢測後,設備出現環路告警。

網絡環路引起交換機CPU佔用率高處理建議

可以利用接口指示燈的閃爍情況和接口流量情況確認存在廣播風暴的接口。

根據鏈路拓撲逐跳排查產生環路的設備。

判斷產生環路的接口並破環。

2.3、網絡攻擊

網絡攻擊是由於網絡中的主機或者網絡設備通過發起大量的非正常網絡交互對網絡設備產生衝擊,影響網絡設備的安全性和正常的業務運行。發生網絡攻擊時,設備忙於處理來自於攻擊源的非正常網絡交互請求,導致設備CPU佔用率高。

常見的引起CPU佔用率高的網絡攻擊包括ARP攻擊、ARP-Miss攻擊、DHCP攻擊以及TC BPDU攻擊等,這些攻擊行為的共同特點是攻擊源產生大量的協議報文對設備進行衝擊,因此可以在設備上看到大量的報文上送統計。

2.3.1、ARP攻擊和ARP-Miss攻擊

執行display arp packet statistics命令獲取ARP報文統計信息,重點關注ARP Pkt Received和ARP-Miss Msg Received統計信息,根據其統計值的增長情況判斷網絡攻擊類型。

堆疊情況下,display arp packet statistics命令只顯示堆疊主交換機上ARP處理的報文統計數據

執行debugging arp packet命令打開ARP報文調試開關,查看大量上送的ARP或ARP-Miss攻擊源信息。

2.3.2、DHCP攻擊

執行display dhcp statistics命令獲取DHCP報文統計信息,如果報文上送速度較快,說明存在DHCP攻擊。

2.3.3、TC BPDU攻擊

參見本章節“STP震盪”的定位方法。

網絡攻擊引起交換機CPU佔用率高處理建議處理建議

如果是ARP攻擊、ARP-Miss攻擊和DHCP攻擊,可以通過開啟自動攻擊溯源功能的方式及時檢測攻擊行為。 如果是TC BPDU攻擊,參見本章節“STP震盪”的處理建議。

3、業務併發引起交換機CPU佔用率高

大量業務併發對設備CPU的影響原理和網絡攻擊類似,常見的故障場景也是類似的(即大量用戶上線產生大量的ARP和DHCP交互),兩者的主要區別是協議報文是合法的正常協議報文還是非法的惡意攻擊,問題定位方法基本一致,但處理方式有所區別。

業務併發引起交換機CPU佔用率高處理建議

對業務部署進行適當調整,將部分用戶主機遷移到其他網絡設備上線或者將部分業務調整到其他設備(如網關設備調整)。

通過策略縮小相關協議報文的CP-Car值,該調整可能會降低用戶上線速率,調整需慎重。

4、用戶操作引起交換機CPU佔用率高

用戶操作引起設備CPU佔用率高通常是由於網管同步操作或者用戶命令大量輸出信息到終端導致的,該類情況的發生一般伴隨著特定的網絡管理事件。

採集CPU佔用率高時各任務的CPU佔用率,當出現AGNT或AGT6任務CPU佔用率過高時,可以確定CPU佔用率高是網管同步等網管操作引起的;當出現VT任務CPU佔用率高時,可以確定是用戶命令大量輸出信息到終端引起的。

用戶操作引起交換機CPU佔用率高處理建議

用戶操作引起的CPU佔用率高一般不會持續很長時間,並且通常情況下不會影響業務。如果確認用戶網絡管理操作是合理的管理行為且對業務沒有造成影響,可無需關注;如果出現持續CPU佔用率高或者對業務造成影響,請聯繫技術支持工程師。

10、防止交換機CPU佔用率高配置建議

介紹部分特殊場景下的配置建議,避免引起系統CPU佔用率過高,影響業務正常運行。

1、端口組特性:

當端口組成員個數超過40,批量加入4K VLAN時,可能導致CPU佔用率短時間內超過80%,因此,建議該端口組批量加入的VLAN個數不超過500。

2、LNP特性:

當超過20個端口同時切換類型時,可能導致CPU佔用率短時間內超過80%,因此,建議逐個切換端口類型,避免批量切換。

3、MAC特性:

MAC頻繁漂移可能導致CPU佔用率高,因此,在可能產生MAC頻繁漂移場景,建議通過命令mac-address flapping action error-down配置接口發生MAC漂移後的處理動作為error-down。

4、Loopback Detection特性:

當設備所有使能環回檢測功能的接口下的VLAN個數總和超過1024時,建議通過命令loopback-detect action shutdown配置接口檢測到環路時的處理動作為shutdown。(對於每個端口,每加入到一個VLAN,VLAN個數就加1,即使是多個端口同時加入同一個VLAN。)


分享到:


相關文章: