路由器的靈魂——IOS(Internet work Operating System互聯(lián)網(wǎng)操作系統(tǒng)),作為內(nèi)嵌的控制和管理路由器的軟件,常常會因為一些偶然的原因(如突然掉電、誤操作等)而丟失,造成路由器癱瘓,進而使網(wǎng)絡(luò)間互聯(lián)中斷。我們通過對路由器軟硬件和工作流程的分析,可以看出大多數(shù)這類現(xiàn)象都屬于“軟”故障,因此可以利用軟件的方法解決。在筆者的日常實踐中就遇到了類似的問題,我們以Cisco 2600路由器為例,總結(jié)了一些相對重要但容易被忽視的一方面,寫出來以饗讀者。
1.Cisco路由器的存儲器類型和系統(tǒng)的初始化過程分析
路由器與計算機有些類似,它也有內(nèi)存(包括ROM、RAM、Flash Memory、NVRAM)、操作系統(tǒng)、配置和用戶界面。操作系統(tǒng)就是IOS,它的最基本的一小部分存儲于ROM中,主要完成路由器的加電自測(類似于計算機的POST)、執(zhí)行OS裝載定位程序(System Bootstrap)等基本功能。而構(gòu)成IOS主體的通信控制和管理例程以及各種協(xié)議軟件、網(wǎng)橋軟件等都存放在閃存(Flash Memory)中。高端路由器由于主內(nèi)存(RAM)很大,可以通過Bootstrap程序把IOS裝入RAM中運行,而對于低端的Cisco 2500、2600來說,由于主存的限制,IOS是直接在閃存中被定位和運行的,主存中除了存儲緩沖區(qū)就只有路由表和IOS的數(shù)據(jù)結(jié)構(gòu)。至于記錄路由器工作狀態(tài)和參數(shù)的各種用戶配置信息文件都是保存在非易失性隨機存儲器(Nonvolatile RAM,NVRAM)中,不會因為掉電而丟失。
顯然,上述任何一個環(huán)節(jié)出現(xiàn)錯誤都會造成路由器的工作癱瘓,這其中除了硬件損壞外IOS無法定位和用戶配置文件丟失占了很大比例。眾所周知,ROM一般是不容易損壞的(否則用戶就只能換個ROM片子了),也不能升級(高端路由器如4000、7000系列除外);但閃存是一種可擦寫、可編程類型的ROM,負(fù)責(zé)保存IOS的映像(image)和路由器的微碼(microcode),可以通過下載新的映像進行IOS的升級。而這種靈活性也恰恰是造成系統(tǒng)故障的主要原因——當(dāng)升級失敗、誤刪映像文件或系統(tǒng)崩潰后,在檢查配置階段如果在Flash Memory或ROM甚至網(wǎng)絡(luò)上都無法找到IOS時(到何處找取決于路由器中配置寄存器的設(shè)置值),也就談不上定位和裝載了。這時幾乎所有的用戶設(shè)置命令,如setup、config等以及日常的運行配置如startup-config都將無影無蹤,表現(xiàn)為路由器不能進入用戶模式(更不用說特權(quán)模式了),只能通過ROM監(jiān)控模式,也稱Rxboot預(yù)引導(dǎo)狀態(tài)進行調(diào)測。使用b命令強制引導(dǎo)會提示:flash image file is not found!也就是說路由器的操作系統(tǒng)毀掉了。幸運的是用戶可以按照如下步驟讓路由器起死回生,當(dāng)然這會比在個人電腦上重裝一下Windows 98麻煩些。