路由器启动过程小议

导言:

最近在做CCNA的题库时,遇到一个考查Cisco router启动过程的题目。如下

A Cisco routeris booting and has just completed the POST process. It is now ready to find andload an IOS p_w_picpath. What function does the router perform next?

A.Itchecks the configuration register.

B.Itattempts to boot from a TFTP server.

C.Itload the first p_w_picpath file in flash memory.

D.Itinspects the configuration file in NVRAM for boot instructions.

Answer: A.

这个题目我选择了错误的选项,所以直接在网上查找与Cisco router启动顺序相关的资料,但是基本上都没有内容涉及到configurationregister。

虽然最终找到了关于configurationregister的资料,但是大多数文章中对这个细节的缺失也促使我重新翻出了CCNA的课本来查找Cisco官方的解释。

再次声明,网上查找到的关于路由器启动过程的资料都是没有问题的,只是没有涉及到所有步骤的细节,所以今天在本文中把尽量多的细节都融入每一个步骤中,以期能够帮助后来的盆友们。

路由器启动过程:

1.执行加电自检

加电自检,POST,Power On Self Test.

该过程发生在刚刚打开电源时。

在此过程中,CPU、RAM、闪存都是必须被检测的项目。

2.加载引导(bootstrap)程序

CPU控制着数据从永久的存储设备到内存的过程,而CPU只能执行在内存中的程序。在启动的过程中,内存是空的,也就是说,如果内存是空的,CPU将不能做任何事情,包括将操作系统加载到内存。

路由器利用引导程序克服这个困难。当路由器完成了POST之后,母板上的各元件已经连好,这样一个非常底层的程序——引导(bootstrap)程序——可以被加载到内存,CPU执行这个程序,它的主要任务就是将完整的IOS映像文件读入内存。

路由器的引导程序存储在ROM中。ROM中的内容是不能更改的,也就意味着引导程序不能被随意替换。

3.加载Cisco IOS

引导程序首先要确定的是它可以从哪儿获得IOS.

可以有3个地方获得IOS镜像文件:

A.闪存;

B.外部TFTP服务器;

C.ROM

加载IOS镜像文件是路由器启动过程中第一次要做出选择的步骤。当路由器加电时,它自动执行POST,然后它自动从ROM中加载引导程序。工程师不能改变这两部。然而,第三部,网络工程师可以告诉路由器从哪里加载哪个IOS镜像文件。

默认情况下,路由器会从闪存中加载IOS,当有新的IOS时也可能从TFTP服务器上加载。当我们发现新版的IOS可以工作的很好时,再把它拷贝到内存。最后,ROM中的IOS是一个限制功能版的boot ROM IOS,它主要用于闪存中的IOS升级。

Cisco公司提供了两种工具来告诉路由器加载哪个IOS。

第一种工具是configredister,也就是配置寄存器。配置寄存器是存储在路由器中的一个16位的数,通常用4位十六进制数来表示,如0x2102。配置寄存器的最后一位称为启动域,启动域告诉引导程序加载哪个软件,如下所示:

启动域为0——ROMMON;

启动域为1——boot ROM IOS;

启动域为2至F——从其他位置加载IOS,典型的为闪存。

如果启动域的值为0或1,路由器可以精确的知道如何去做;如果为其他值,路由器必须要用另一个工具——bootsystem命令——来决定下一步如何做。Boot system命令在路由器加电时,可以从配置文件中找到,它将告诉路由器IOS文件的位置及文件名。当启动域为除了0和1以外的任何值时,路由器使用boot system命令并执行以下逻辑:

1)加载在配置文件中的boot system命令中定义的IOS文件。

2)如果这个IOS文件加载失败,则尝试去找下一个boot system命令。

3)如果所有的boot system都执行失败,或者没有boot system命令,将会加载在闪存中找到的第一个IOS文件。

但是,大多数路由器默认的配置寄存器的值为0x2102,并且不使用boot system命令,则就意味着这些路由器将会加载闪存中的第一个IOS文件。

4.将配置文件读入内存

通常情况下,路由器将所有的配置命令放在一个一个文件中,称作启动配置文件(startup-config)。启动配置文件在路由器初始化时告诉路由器如何进行配置。这个文件被存储在一个很特殊的永久存储设备上,称作NVRAM——非易失性随机存储器,断电时内容不会丢失。

当配置文件进入到内存后它被称为running-config,因为此时它正在被IOS运行。

正像IOS可以从几个位置加载到内存中一样,路由器也可以从几个地方获得启动配置文件。

1)路由器可以选择忽略NVRAM中的配置文件,这样路由器启动时就没有配置文件。这对口令恢复是很有用处的,可以通过配置寄存器来实现。

2)如果在NVRAM的配置文件中有boot config命令,则可以从TFTP服务器上加载初始化配置文件。

3)路由器也可以发广播去寻找一个TFTP服务器及其上的配置文件。

在通常情况下有一个默认的加载顺序。假设配置寄存器没有被配置成忽略NVRAM中的配置文件,IOS首先在NVRAM中寻找,如果没有找到,它会再寻找TFTP服务器,如果依然没有找到配置文件,IOS将假设工程师会登陆到控制台增加配置,所以IOS不再加载任何配置文件。

以下是我做的路由器启动过程流程图,错漏之处在所难免,欢迎指正!

路由器启动过程小议_路由器启动