本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文說明如何識別匯流排錯誤崩潰,以及如何根據您在Cisco路由器中擁有的處理器型別對這些崩潰進行故障排除。
思科建議您先閱讀路由器崩潰故障排除,然後再繼續本文檔。
本文中的資訊係根據以下軟體和硬體版本:
所有Cisco IOS®軟體版本
所有思科路由器
註:本檔案不適用於Cisco Catalyst交換器或MGX平台。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
當處理器嘗試訪問記憶體位置時,系統遇到匯流排錯誤,該記憶體位置要麼不存在(軟體錯誤),要麼沒有正確響應(硬體問題)。如果沒有重新啟動電源或手動重新載入,則可以從路由器提供的show version命令的輸出中識別出匯流排錯誤。
如果您的Cisco裝置具有show version或show technical-support指令(從啟用模式)的輸出,您可以使用它顯示潛在問題和修正程式。要使用該指令碼,您必須是註冊客戶,必須登入並啟用JavaScript。
Router uptime is 2 days, 21 hours, 30 minutes System restarted by bus error at PC 0x30EE546, address 0xBB4C4 System image file is "flash:igs-j-l.111-24.bin", booted via flash .........
在控制檯提示符下,匯流排錯誤期間也會出現以下錯誤消息:
*** System received a Bus Error exception *** signal= 0xa, code= 0x8, context= 0x608c3a50 PC = 0x60368518, Cause = 0x20, Status Reg = 0x34008002 .........
之後,路由器重新載入。但是,在某些情況下,路由器會進入崩潰和再載入的循環,需要手動干預才能打破該循環。
另一個相關問題是多功能介面處理器(VIP)故障。如果發生此問題,則會記錄類似以下錯誤消息:
%VIP2 R5K-1-MSG: slot0 System reloaded by a Bus Error exception %VIP2 R5K-1-MSG: slot0 caller=0x600BC974 %VIP2 R5K-1-MSG: slot0 System exception: sig=10, code=0x408, context=0x605B51E0
最後,另一種匯流排錯誤崩潰型別是Cisco 12000系列Internet路由器上的線卡崩潰。如果發生此問題,show context輸出中會記錄與以下內容類似的錯誤消息:
Router#show context ... CRASH INFO: Slot 1, Index 1, Crash at 11:27:15 utc Wed May 16 2001 VERSION: GS Software (GLC1-LC-M), Version 12.0(16.5)S, EARLY DEPLOYMENT MAINTENANCE INTERIM SOFTWARE TAC Support: http://www.cisco.com/pcgi-bin/ibld/view.pl?i=support Compiled Thu 29-Mar-01 17:12 by ninahung Card Type: 3 Port Gigabit Ethernet, S/N System exception: SIG=10, code=0x2008, context=0x40D8DF44 System restarted by a Bus Error exception STACK TRACE: -Traceback= 40165800 4038D0FC 4025C7BC 4026287C 4029581C 402EECF8 400C0144 CONTEXT: $0 : 00000000, AT : 00000000, v0 : 00000044, v1 : 0FE00020 a0 : 00000000, a1 : 0FE00000, a2 : 00000000, a3 : 39EC6AAB t0 : 00000030, t1 : 34008D01, t2 : 34008100, t3 : FFFF00FF t4 : 400C01E8, t5 : 00000001, t6 : 00000001, t7 : 00000001 s0 : 40DCDD20, s1 : 0FE00000, s2 : 00000000, s3 : 000005DC s4 : 00000000, s5 : 0FE00020, s6 : 00000004, s7 : 414CF120 t8 : 41680768, t9 : 00000000, k0 : 00000000, k1 : FFFF8DFD gp : 40CB9780, sp : 4105BFE8, s8 : 41652BA0, ra : 4038D0FC EPC : 0x40165800, SREG : 0x34008D03, Cause : 0x00002008 ErrorEPC : 0xBFC22B94 -Process Traceback= No Extra Traceback
如需詳細資訊,請參閱疑難排解Cisco 12000系列Internet路由器上的線路卡崩潰。
如果您的Cisco裝置輸出了show context命令,則可以使用Cisco CLI Analyzer顯示潛在問題和修復程式。要使用Cisco CLI Analyzer,您必須是已註冊的客戶,必須登入並啟用JavaScript。
首先要做的是找出發生匯流排錯誤時路由器嘗試訪問的記憶體位置(也稱為「地址」或「地址運算元」)。通過此資訊,您可以指示故障是屬於Cisco IOS軟體還是路由器硬體。在示例「System restarted by bus error at PC 0x30EE546, address 0xBB4C4」中,路由器嘗試訪問的記憶體位置為0xBB4C4。不要將此值與上面的程式計數器(PC)值混淆。
第二件事是確定路由器中的處理器型別。路由器的記憶體地址位置因處理器型別而異。Cisco路由器中有兩種主要型別的處理器:
68000處理器
以下是show version輸出的一部分,該輸出表示路由器具有68000處理器:
cisco 2500 (68030) processor (revision D) with 8192K/2048K bytes of memory.
配備英特爾處理68000的路由器平台包括:
Cisco 1000系列路由器
Cisco 1600系列路由器
Cisco 2500系列路由器
Cisco 4000系列路由器
Cisco 7000(RP)系列路由器上的路由處理器(RP)模組
精簡指令集計算(RISC)處理器
以下是show version輸出的一部分,表示路由器具有RISC處理器:
cisco 3640 (R4700) processor (revision 0x00) with 49152K/16384K bytes of memory.
R in(R4700)表示RISC處理器。
具有RISC處理器的路由器平台包括:
Cisco 3600系列路由器
Cisco 4500系列路由器
Cisco 4700系列路由器
Cisco 7500系列和Cisco 7000(RSP7000)系列路由器上的路由交換處理器(RSP)模組
Cisco 7200系列路由器上的網路處理器引擎(NPE)模組
Cisco 7600系列路由器或Catalyst 6000交換器上的多層交換器功能卡(MSFC)
Cisco 10000系列Internet路由器上的效能路由引擎(PRE)模組
Cisco 12000系列Internet路由器上的Gigabit路由處理器(GRP)模組
一旦您確定了地址和處理器型別,就可以開始進行更詳細的故障排除。
使用發生匯流排錯誤時路由器訪問的地址,使用show region命令確定地址對應的記憶體位置。如果匯流排錯誤報告的地址不在show region輸出中顯示的範圍內,則表示路由器嘗試訪問無效的地址。這表示這是Cisco IOS軟體問題。使用Cisco CLI Analyzer(僅供已註冊客戶使用)解碼show stacks命令的輸出,並識別導致匯流排錯誤的Cisco IOS軟體錯誤。
另一方面,如果地址在show region輸出中的某個範圍之內,則表示路由器訪問了一個有效的記憶體地址,但與該地址對應的硬體沒有正確響應。這表示存在硬體問題。
以下是show region輸出的範例:
Router#show region Region Manager: Start End Size(b) Class Media Name 0x00000000 0x007FFFFF 8388608 Local R/W main 0x00001000 0x0001922F 98864 IData R/W main:data 0x00019230 0x000666B3 316548 IBss R/W main:bss 0x000666B4 0x007FEFFF 7965004 Local R/W main:heap 0x007FF000 0x007FFFFF 4096 Local R/W main:flhlog 0x00800000 0x009FFFFF 2097152 Iomem R/W iomem 0x03000000 0x037FFFFF 8388608 Flash R/O flash 0x0304033C 0x037A7D3F 7764484 IText R/O flash:text
注意:在某些早期的Cisco IOS軟體版本中,此命令不可用。show region輸出是Cisco IOS軟體版本12.0(9)的show tech-support輸出的一部分。
地址以十六進位制格式顯示。屬於「開始」和「結束」範圍的地址是有效的記憶體地址。
Main對應於主記憶體或動態RAM(DRAM)。
iomem對應輸入/輸出(I/O)記憶體,這意味著不同的平台有不同的部件。例如,Cisco 2500的DRAM、Cisco 4000的共用RAM(SRAM)。
仍使用先前的示例,System restarted by bus error at PC 0x30EE546, address 0xBB4C4,此匯流排錯誤崩潰來自具有show region輸出的Cisco 2500路由器。地址0xBB4C4相當於0x000BB4C4。使用show region輸出,此地址在「main」的範圍內,更具體地說是「main:heap」或0x000666B4-0x007FEFFF。如前所述,「main」對應於主儲存器或DRAM,因此需要檢查DRAM晶片。
如果是新路由器,或者路由器已經從一個位置移動到另一個位置,記憶體晶片經常會變得鬆動。最好將記憶體晶片重新拔插或穩固地推入插槽中。在大多數情況下,這足以解決此類故障。
對於地址不在show region地址範圍內的匯流排錯誤崩潰,請使用Cisco CLI Analyzer解碼show stacks命令的輸出,並識別導致匯流排錯誤的Cisco IOS軟體錯誤。如果您不確定哪個錯誤ID可能匹配,或者哪個Cisco IOS軟體版本包含此問題的修補程式,則將Cisco IOS軟體升級到發行版系列中的最新版本是一個通常可以解決此問題的選項,因為此選項通常包含大量錯誤的修補程式。
如果您的Cisco裝置具有show stacks或show technical-support(從啟用模式)命令的輸出,可以使用Cisco CLI Analyzer顯示潛在問題和修正程式。要使用Cisco CLI Analyzer,您必須是已註冊的客戶,必須登入並啟用JavaScript。
建議您在繼續本節之前,先閱讀處理器平台上匯流排錯誤68000障故障排除一節。
在RISC處理器上,Cisco IOS軟體通過使用轉換後備緩衝區(TLB)使用虛擬地址,該緩衝區可將虛擬地址轉換為實體地址。因此,RISC處理器上的匯流排錯誤所報告的地址是虛擬地址,而不是RISC處理器使用的物68000地址。
show region命令的輸出必須用於檢查匯流排錯誤報告的地址。為了說明此情況,我們舉一個例子:
System was restarted by bus error at PC 0x60104864, address 0xC
使用下面的show region命令輸出,您可以驗證0xC不是有效的虛擬地址,並且您可以斷定匯流排錯誤是由軟體問題導致的。使用Cisco CLI Analyzer(僅供註冊客戶使用)解碼show stacks或show technical-support(從啟用模式)命令的輸出,並識別導致匯流排錯誤的Cisco IOS軟體錯誤。
使用show region命令的另一個優點是記憶體對映取決於路由器上安裝的記憶體量。例如,如果您有64 MB的DRAM(64 x 1024 x 1024 = 67108864 bytes = 0x4000000 bytes),則64 MB的DRAM範圍是0x60000000 - 0x63FFFFFF。這可透過show region命令確認:
Router#show version | i of memory cisco RSP2 (R4700) processor with 65536K/2072K bytes of memory. Router#show region Region Manager: Start End Size(b) Class Media Name 0x40000000 0x40001FFF 8192 Iomem REG qa 0x40002000 0x401FFFFF 2088960 Iomem R/W memd 0x48000000 0x48001FFF 8192 Iomem REG QA:writethru 0x50002000 0x501FFFFF 2088960 Iomem R/W memd:(memd_bitswap) 0x58002000 0x581FFFFF 2088960 Iomem R/W memd:(memd_uncached) 0x60000000 0x63FFFFFF 67108864 Local R/W main 0x60010908 0x60C80B11 13042186 IText R/O main:text 0x60C82000 0x60F5AF1F 2985760 IData R/W main:data 0x60F5AF20 0x610E35FF 1607392 IBss R/W main:BSS 0x610E3600 0x611035FF 131072 Local R/W main:fastheap 0x61103600 0x63FFFFFF 49269248 Local R/W main:heap 0x80000000 0x83FFFFFF 67108864 Local R/W main:(main_k0) 0x88000000 0x88001FFF 8192 Iomem REG QA_k0 0x88002000 0x881FFFFF 2088960 Iomem R/W memd:(memd_k0) 0xA0000000 0xA3FFFFFF 67108864 Local R/W main:(main_k1) 0xA8000000 0xA8001FFF 8192 Iomem REG QA_k1 0xA8002000 0xA81FFFFF 2088960 Iomem R/W memd:(memd_k1)
如果您在0x65FFFFFF處發生匯流排錯誤,show region輸出會考慮記憶體大小,並通知您這是非法地址(軟體錯誤)。
總而言之:
使用show region命令驗證匯流排錯誤所指示的地址是否在路由器使用的地址範圍內。
如果地址屬於虛擬地址範圍,請更換與此範圍對應的硬體。
如果地址不在虛擬地址範圍內,請使用Cisco CLI Analyzer(僅供註冊客戶使用)對show stacks或show technical-support(從啟用模式)命令的輸出進行解碼,然後識別導致匯流排錯誤的Cisco IOS軟體錯誤。
認真考慮安裝您當前運行的Cisco IOS軟體系列的最新維護版本。
當崩潰是由損壞的程式計數器(PC)導致時,便是一種特殊型別的匯流排錯誤崩潰。 PC值是發生匯流排錯誤時處理器執行的指令的位置。當PC損壞引起匯流排錯誤時,控制檯上將顯示以下消息:
%ALIGN-1-FATAL: Corrupted program counter pc=0x0, ra=0x601860BC, sp=0x60924540, at=0x60224854
在這種情況下,PC跳轉到地址0x0(可能是由於空指標),但這不是指令所在的位置。這是一個軟體問題,因此不需要使用show region指令進行檢查。
在其他RISC平台(Cisco 3600、4500等)上,跳到非法PC時出現SegV異常,而不是匯流排錯誤。
另一種不時發生的匯流排錯誤崩潰型別是PC值等於地址值。例如:
System returned to ROM by bus error at PC 0x606B34F0, address 0x606B34F0
在crashinfo檔案中:
Unexpected exception, CPU signal 10, PC = 0x606B34F0 $0 : 00000000, AT : A001A24A, v0 : 00000000, v1 : 00000000 a0 : 00000000, a1 : 429CC394, a2 : 00000000, a3 : 62544344 t0 : 6069F424, t1 : 3400FF00, t2 : FFFFFFFB, t3 : 00000000 t4 : 606B8E68, t5 : 80000000, t6 : AA5C1022, t7 : 62FDE9D4 s0 : 62300000, s1 : 6281A1B8, s2 : 80007E20, s3 : 00000001 s4 : 00000001, s5 : 00000000, s6 : 62310000, s7 : 62544344 t8 : 62FDEA1C, t9 : 0D0D0D0D, k0 : 623079C0, k1 : 00000014 gp : 620B9E20, sp : 61E7E300, s8 : 00000000, ra : 606B8E68 EPC : 606B34F0, ErrorEPC : 606B8E68, SREG : 3400FF02 Cause 00004018 (Code 0x6): Instruction Bus Error exception -Traceback= 606B34F0 606B8E68
請注意,k1暫存器值為0x14(十六進位制),以十進位制表示等於20。這指向快取奇偶校驗異常。在這種情況下,奇偶校驗錯誤沒有正確處理,並且被匯流排錯誤掩蓋。由於處理快取奇偶校驗異常的函式中的軟體匯流排錯誤,路由器已崩潰。
您應該將此崩潰視為常規的處理器記憶體奇偶校驗錯誤崩潰,並按照處理器記憶體奇偶校驗錯誤(PMPE)中給出的建議執行。
您還應考慮將Cisco IOS軟體版本升級為具有CSCdv68388 — 「Change cache error exception handler to resume not crash」修復程式的版本,該修復程式自Cisco IOS軟體版本12.2(10)起已修復。
本節重點介紹匯流排錯誤異常引導環路的一般故障排除技術:
載入的Cisco IOS軟體不支援已安裝的硬體
軟體故障
硬體安裝錯誤
硬體故障
確認Cisco IOS軟體支援所有網絡卡。Software Advisor(僅供註冊客戶使用)可為您提供硬體所需的最低Cisco IOS軟體版本。此外,如果具有支援引導映像的路由器(例如Cisco 7200或Cisco 7500系列路由器),請驗證bootflash映像是否支援安裝的硬體。
在2600和3600路由器上,路由器的I/O記憶體可配置為主記憶體的百分比。如果I/O記憶體設定不適合安裝的網路模組或WAN介面卡(WIC),則2600/3600平台在引導時可能會出現問題,並且可能會因匯流排錯誤而崩潰。
如果最近對軟體配置進行了更改,並且路由器處於引導環路中,則可能是軟體錯誤導致了此問題。
如果路由器無法啟動,您可以繞過配置來確定問題是否由它引起。請遵循以下步驟:
在啟動後的前60秒內向路由器傳送break序列,以進入ROMMON。
在ROM Monitor中,使用confreg命令將配置暫存器更改為某個設定(如0x2142),以忽略路由器的配置:
rommon 1 > confreg 0x2142 You must reset or power cycle for new config to take effect rommon 2 > reset
如果路由器啟動時沒有任何錯誤,則說明配置問題導致了該問題。驗證Cisco IOS軟體和硬體是否支援您的配置。如果支援,請使用Bug工具包(僅供註冊客戶使用)識別可能遇到的任何軟體錯誤。認真考慮安裝您當前運行的Cisco IOS軟體系列的最新維護版本。
如果遇到匯流排錯誤異常引導循環,則可能是硬體安裝錯誤導致的。對於3600或4000路由器等低端平台,請重新拔插網路模組/網路處理器。
對於7200或7500路由器等高端平台,請重新拔插由於匯流排錯誤異常而重新載入的處理器、VIP、埠介面卡或線卡。
匯流排錯誤中包含的資訊無助於隔離硬體。因此,卸下並重新插入卡以找到有問題的硬體非常重要。以下是隔離問題的建議步驟:
**如果路由器在按照上述故障排除步驟進行故障排除後未出現持續環路,則問題可能是網路模組安裝錯誤造成的。我們建議您24小時監控路由器,以確保路由器繼續運行,而不會再遇到問題。
如果在執行上述故障排除步驟後仍需要幫助,並且希望開啟思科技術支援案例,請確保包含以下有關排除匯流排錯誤或匯流排錯誤異常的資訊: |
---|
註:在收集上述資訊之前,請勿手動重新載入或重新啟動路由器,除非需要排除匯流排錯誤異常,否則可能會導致確定問題根本原因所需的重要資訊丟失。 |