簡介
本文說明如何辨識匯流排錯誤當機,以及如何根據您在Cisco路由器中擁有的處理器型別,對這些當機進行疑難排解。
必要條件
需求
在閱讀本文之前,Cisco建議您閱讀路由器崩潰故障排除。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
注意:本文檔不適用於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系列網際網路路由器上的板卡崩潰。如果出現這個問題,則類似於下面的出錯消息將會記錄在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顯示潛在問題和解決方法。要使用思科CLI分析器,您必須是註冊客戶、已登入並已啟用JavaScript。
排除匯流排錯誤崩潰故障
第一件事是找出發生匯流排錯誤時路由器嘗試訪問的記憶體位置(也稱為「地址」或「地址運算元」)。透過這些資訊,您可以確定故障是屬於Cisco IOS軟體還是路由器硬體。在示例「System restarted by bus error at PC 0x30EE546, address 0xBB4C4」中,路由器嘗試訪問的記憶體位置是0xBB4C4。請勿將此值與上面的程式計數器(PC)值混淆。
第二件事是確定路由器中處理器的型別。路由器的記憶體地址位置因處理器型別而異。Cisco路由器中有兩種主要型別的處理器:
一旦您確定了地址和處理器型別,就可以開始進行更詳細的故障排除。
疑難排解68000處理器平台上的匯流排錯誤當機
知道匯流排錯誤時路由器所訪問的地址之後,就可以使用show region命令來確定地址所對應的儲存器位置。如果匯流排錯誤崩潰所報告的地址並不落在show region輸出中所顯示的範圍之內,則這意味著路由器試圖訪問一個無效的地址。這表示這是Cisco IOS軟體問題。使用Cisco CLI Analyzer(僅供已註冊客戶使用)將show stacks指令的輸出解碼,並辨識導致匯流排錯誤的Cisco IOS軟體bug。
從另一個角度來說,如果地址落在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,這個匯流排錯誤崩潰來自Cisco 2500路由器,產生了show region輸出。地址0xBB4C4相當於0x000BB4C4。使用show region輸出,此地址在「main」的範圍內,或者更具體地說,在「main:heap」或0x000666B4-0x007FEFFF的範圍內。如前所述,「main」對應於主儲存器或DRAM,因此需要檢查DRAM晶片。
如果是新的路由器,或者路由器已經從一個位置移到另一個位置,記憶體晶片通常會變得鬆動。最好是重新拔插記憶體晶片或將其牢固地推入插槽中。大多數情況下,這足以解決此類崩潰問題。
對於那些地址不在show region地址範圍內的故障,則使用Cisco CLI Analyzer對show stacks命令的輸出進行解碼,然後辨識導致匯流排錯誤的Cisco IOS軟體bug。如果不清楚哪個錯誤ID可能匹配,或者哪個Cisco IOS軟體版本包含問題的解決方法,則通常可以透過將Cisco IOS軟體升級到版本系列中的最新版本來解決問題,因為這通常包含對大量錯誤的解決方法。
如果從Cisco裝置中獲得show stacks或show technical-support(從啟用模式)命令的輸出,則可使用Cisco CLI Analyzer顯示潛在問題和解決方法。要使用思科CLI分析器,您必須是註冊客戶、已登入並已啟用JavaScript。
疑難排解RISC處理器平台上的匯流排錯誤當機
在繼續閱讀本節之前,建議您閱讀對68000處理器平台上的匯流排錯誤崩潰進行故障排除部分。
在RISC處理器上,Cisco IOS軟體透過使用轉換後備緩衝區(TLB)使用虛擬地址,將虛擬地址轉換為實體地址。因此,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軟體bug。
使用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輸出就會將記憶體大小考慮進去,並告訴您它是一個非法地址(軟體bug)。
總之:
-
使用show region命令來校驗匯流排錯誤崩潰所指示的地址是否在路由器所使用的地址範圍內。
-
如果地址落在虛擬地址範圍內,請更換與此範圍對應的硬體。
-
如果地址不落在虛擬地址範圍內,請使用Cisco CLI Analyzer(僅供已註冊客戶使用)將show stacks或show technical-support(從啟用模式)命令的輸出解碼,並辨識導致匯流排錯誤的Cisco IOS軟體bug。
-
認真考慮安裝當前運行的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軟體不支援已安裝的硬體
驗證Cisco IOS軟體是否支援所有網絡卡。Software Advisor(僅供註冊客戶使用)可為您提供硬體所需的最低Cisco IOS軟體版本。此外,如果具有支援引導映像的路由器(如Cisco 7200或Cisco 7500系列路由器),請驗證bootflash映像是否支援所安裝的硬體。
軟體故障
在2600和3600路由器上,路由器的I/O記憶體可配置為主記憶體的百分比。如果I/O記憶體設定不適合安裝的網路模組或WAN介面卡(WIC),則2600/3600平台可能無法啟動,並且可能因匯流排錯誤而崩潰。
如果最近更改了軟體配置,並且路由器處於啟動循環中,則可能是軟體Bug導致了此問題。
如果路由器無法啟動,您可以繞過配置來確定問題是否由它引起。請遵循以下步驟:
-
在啟動的前60秒內向路由器傳送中斷序列,以進入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小時,以確保路由器繼續運行,而不會再次遇到問題。
打開服務請求時要收集的資訊
如果執行上述故障排除步驟後仍需幫助,並且要向Cisco技術支援提交支援請求,請確保包括以下有關排除匯流排錯誤或匯流排錯誤異常的資訊: |
- 打開案例之前執行的故障排除
- show technical-support輸出(如果可能,在啟用模式下)
- show log輸出或控制檯捕獲資訊(如果可用)
- crashinfo檔案(如果存在,並且尚未包括在show technical-support輸出中)
- show region輸出(如果尚未包括在show technical-support輸出中)
將收集到的資料以非壓縮純文字檔案格式(.txt)附加到您的案例。透過使用案例查詢工具(僅限註冊客戶),您可以將資訊上傳到您的案例。如果您不能訪問案例查詢工具,您可以將相關資訊以案例的附件形式傳送到attach@cisco.com,同時將案例號填寫在郵件消息的主題行中。 注意:除非需要排除匯流排錯誤異常,否則不要在收集上述資訊之前手動重新載入路由器或對路由器重新加電,因為這可能導致確定問題根本原因所需的重要資訊丟失。 |
相關資訊