路由器的灵魂——IOS(Internet work Operating System互联网操作系统),作为内嵌的控制和管理路由器的软件,常常会因为一些偶然的原因(如突然掉电、误操作等)而丢失,造成路由器瘫痪,进而使网络间互联中断。我们通过对路由器软硬件和工作流程的分析,可以看出大多数这类现象都属于“软”故障,因此可以利用软件的方法解决。在笔者的日常实践中就遇到了类似的问题,我们以Cisco 2600路由器为例,总结了一些相对重要但容易被忽视的一方面,写出来以飨读者。
1.Cisco路由器的存储器类型和系统的初始化过程分析
路由器与计算机有些类似,它也有内存(包括ROM、RAM、Flash Memory、NVRAM)、操作系统、配置和用户界面。操作系统就是IOS,它的最基本的一小部分存储于ROM中,主要完成路由器的加电自测(类似于计算机的POST)、执行OS装载定位程序(System Bootstrap)等基本功能。而构成IOS主体的通信控制和管理例程以及各种协议软件、网桥软件等都存放在闪存(Flash Memory)中。高端路由器由于主内存(RAM)很大,可以通过Bootstrap程序把IOS装入RAM中运行,而对于低端的Cisco 2500、2600来说,由于主存的限制,IOS是直接在闪存中被定位和运行的,主存中除了存储缓冲区就只有路由表和IOS的数据结构。至于记录路由器工作状态和参数的各种用户配置信息文件都是保存在非易失性随机存储器(Nonvolatile RAM,NVRAM)中,不会因为掉电而丢失。
显然,上述任何一个环节出现错误都会造成路由器的工作瘫痪,这其中除了硬件损坏外IOS无法定位和用户配置文件丢失占了很大比例。众所周知,ROM一般是不容易损坏的(否则用户就只能换个ROM片子了),也不能升级(高端路由器如4000、7000系列除外);但闪存是一种可擦写、可编程类型的ROM,负责保存IOS的映像(image)和路由器的微码(microcode),可以通过下载新的映像进行IOS的升级。而这种灵活性也恰恰是造成系统故障的主要原因——当升级失败、误删映像文件或系统崩溃后,在检查配置阶段如果在Flash Memory或ROM甚至网络上都无法找到IOS时(到何处找取决于路由器中配置寄存器的设置值),也就谈不上定位和装载了。这时几乎所有的用户设置命令,如setup、config等以及日常的运行配置如startup-config都将无影无踪,表现为路由器不能进入用户模式(更不用说特权模式了),只能通过ROM监控模式,也称Rxboot预引导状态进行调测。使用b命令强制引导会提示:flash image file is not found!也就是说路由器的操作系统毁掉了。幸运的是用户可以按照如下步骤让路由器起死回生,当然这会比在个人电脑上重装一下Windows 98麻烦些。