1
计算机网络技术理论与实践
1.3.2.2 2.2.2 Dynamips安装和配置方法

2.2.2 Dynamips安装和配置方法

本书的实验中主要采用Dynagen作为Dynamips的前端软件,这样便于对路由器构成和组网过程有更深入的了解。Dynamips模拟出Cisco路由器的硬件环境,运行Cisco IOS,这个IOS通常是bin文件格式。Dynagen是Dynamips的一个基于文本的前端控制系统,通过书写net文本文件,可以创建出各种网络拓扑结构。

Dynamips解压后,其下有top、tmp、net、ios和bin等目录,其中top目录存放了拓扑图片;tmp目录存放临时文件,包括idlepc数据库;net目录存放网络拓扑配置文件,用来实现实验环境拓扑配置;ios目录存放设备操作系统(IOS)镜像文件;bin目录为程序子目录,其中又包含了winpcap、script、putty、dynagen、dynamips和php等子目录。

winpcap中存放了底层驱动,用于捕捉数据包和绕过协议栈方式来进行数据传送;script中存放辅助脚本程序;putty中存放一个较好用的Telnet客户端;dynamips存放虚拟机主程序;php存放脚本解释程序;dynagen目录中存放虚拟机扩展平台,可以方便地管理和使用Dynamips虚拟机。

1.安装方法

Dynamips可以完成虚拟路由器的接口与真实主机接口的桥接,从而实现Dynamips中虚拟出来的网络与真实网络的互通。这需要Winpcap来完成桥接,并利用Dynamips中提供的一个工具获取到Windows主机上的可用接口,所以在安装时要完成这两项工作。

首先安装Winpcap程序,该程序是Windows平台下一个免费、公共的网络访问系统,为Win32应用程序提供访问网络底层的能力。Winpcap可以捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包,在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉,能够在网络上发送原始的数据包,并收集网络通信过程中的统计信息。

然后要获取当前主机上的可用接口信息,这个可以通过Dynamips提供的Dynamipswxp.exe命令行程序来完成。在Windows的控制台中执行Dynamips-wxp.exe-e就可以显示出本机的所有可用网卡,如图2-4所示。

img24

图2-4 获取到的本机网卡信息

其中有些是虚拟网卡,比如VMware Virtual Ethernet Adapter,不能选择这些作为主机的网卡使用,其中的Intel(R)WiFi Link 5300AGN为无线网卡,Intel(R)82567LM Gigabit Network Connection为有线网卡,具体选用哪个网卡与真实网络环境桥接,可以根据实际的需要来确定。

在Dynamips仿真环境中使用真实网卡的方法如下:

F0/0=NIO_gen_eth:\Device\NPF_{B53425E3-9042-4083-B6F3-1C8F148610A6}

这就表示将某台路由器的F0/0接口与真实的有线网卡,Intel(R)82567LM Gigabit Network Connection连接在一起。其中NIO_gen_eth表示主机的网络设备,后面的\Device\NPF_{B53425E3-9042-4083-B6F3-1C8F148610A6}是特定网卡的标识。

为了方便用户获取和修改网卡参数,有的Dynamips版本利用修改网卡参数的批处理命令,来完成网卡参数的获取,并根据用户选择的网卡,将该网卡参数替换到所有拓扑结构中使用NIO_gen_eth的位置。这样就可以方便地让所有拓扑结构中需要与真实网络相连接的地方使用正确的网卡参数。

比如,进入setup目录下,双击“修改网卡参数.cmd”,会列出图2-5所示的本机的所有网卡参数,将需要连接的网卡参数粘贴到“粘贴获取到的网卡参数:”的后面,然后按回车键,批处理命令就自动搜索所有的拓扑文件将用户指定的网卡参数配置到所有使用了NIO_gen_eth的位置。在粘贴网卡参数时可以采用如下步骤:

(1)右键(标记);

(2)左键选中网卡参数;

(3)右击窗口的标题栏,选择“编辑”→“复制”;

(4)右击粘贴目的处选择粘贴。

img25

图2-5 利用批处理命令获取和修改网卡参数

2.使用方法

(1)网络拓扑文件的设计

Dynagen用来辅助用户设计网络拓扑结构,用户只需要按照规范编写net文件就可以完成各种网络拓扑结构的设计。

图2-6是一个网络拓扑结构对应的net中的部分内容,通过这个例子来介绍net文件的设计方法。

其中autostart表示在启动拓扑时,是否自动启动其中的所有设备,置成false,表示不自动启动,需要由用户手动启动每台设备。这样配置可以在做实验时用到哪台设备再启动该设备,以减小对系统的开销。

img26

图2-6 Dynagen中网络拓扑文件内容

Localhost为本机配置,port=7200说明Dynamips服务器的控制端口在本机上采用的端口号为7200,不需要修改;UDP=10000,说明路由器之间采用UDP来模拟出互相连接,10000为Dynamips中各个设备端口的起始UDP端口号。Workingdir=..\tmp\表示工作目录是根目录下的tmp目录,这样仿真平台运行当中的所有设备的设备文件都保存在此目录下,包括设备的idlepc值,设备上保存的配置(flash和nvram中的内容)和日志等信息。

下面是每台设备的配置,[[router R1]]是路由器的名称;image指示本路由器使用的IOS文件,通常将IOS文件存放在根目录的IOS目录下,要仿真哪种型号的路由器,就必须将该型号的路由器的IOS文件下载到IOS目录中,并通过image项指定该IOS;model=7200指示该路由器的型号为7200系列;console=3001表示要登录本路由器时使用的telnet的端口号;npe=npe-400,指出了NPE(网络处理引擎)的类型;ram=64表示分配给该路由器的虚拟内存,如果值太小会导致设备无法启动;confreg的值配置为0x2142表示设备启动时不读取保存的配置,设置为0x2102表示启动时读取保存的配置;exec_area=64是设置执行空间为64M;mmap为true时可以使用硬盘上的虚拟内存,如果内存足够大,可以将其设置为false。

接下来的部分是为路由器插上所需的扩展模块,扩展模块也可以称为线卡,不同扩展模块上拥有不同种类和数量的接口。slot0=PA-C7200-IO-FE,表示在0扩展槽上,插入了PA-C7200-IO-FE模块,这个模块只有一个100M的快速以太网接口,不同设备的不同扩展槽上需要用专门的模块。路由器上的扩展模块将在第5章互联技术及实践中做详细介绍。

最后建立起路由器之间的连接关系,如s1/1=R2s1/0,表示本路由器的s1/1接口与R2路由器的s1/0接口利用串口线建立连接。s表示串口,1/1中左边的1表示此接口位于插槽1的模块上,右边的1表示此接口为该模块上的第2个接口(从0开始计数)。

在Dynamips中只能模拟出路由器,当需要使用交换机时,可以通过在路由器上插入NM-16ESW模块来模拟;当需要使用PC时,通常采用低端的路由器来模拟,或者可以利用VPCS软件来模拟PC,这样可以大大降低PC占用的资源。

(2)启动仿真环境

首先启动Dynamips仿真平台,打开一个控制台窗口,通过执行“/bin/dynamips/dynamips-wxp.exe-H 7200”可以在Windows XP操作系统下将Dynamips仿真平台运行起来,该平台启动起来后在整个实验过程中是不能关闭的。有的版本为方便用户启动Dynamips仿真平台,将不同操作系统下的启动命令做成不同的批处理文件,如“虚拟服务XP&2003.bat”文件,双击该文件就可以启动Dynamips仿真平台。

然后需要启动网络拓扑结构,再打开一个控制台窗口,通过执行“/bin/dynagen/dynagen.exe\net\test.net”可以通过Dynagen前端软件将自行设计的test.net中的网络拓扑启动起来,也就是指定仿真平台上运行哪些设备,以及设备间的连接关系。网络拓扑启动完成后,在实验过程中也是不能关闭的。此命令也可以做成批处理文件,便于使用。在此窗口中可以对拓扑结构中的各个设备进行管理,包括启动、关闭设备,显示设备的状态,为设备获取idlepc值等。输入“?”可以查询所支持的命令,通过输入“命令?”可以查询该命令的各种参数格式。

通过“list”命令可以查看设备的状态信息,如图2-7所示,其中第一列为设备名称;第二列为设备的型号;第三列为设备的状态,stopped表示设备没有启动,没有启动的设备是无法登录进去的,由于在net文件中autostart设置为false,所有设备默认都不会自动启动;第四列为服务器的IP地址和管理端口的端口号;最后一列是每台设备登录时Telnet的端口号。

img27

图2-7 查看设备状态

要使用某台设备需要先将其启动起来,通过输入命令“start R1”可以将R1设备启动起来,这里需要注意,设备名的大小写是敏感的,所以大小写要写对才能将设备正确启动起来。如果事先没有在net文件中为设备设置idlepc值,那么在设备的初次启动时就需要利用idlepc命令为设备设置idlepc值。每个设备的idlepc值标识这个设备的CPU占用率,Dynamips不知道路由器实例什么时候处于空闲,什么时候处于忙状态,idlepc对正在运行的IOS进行分析,确定IOS的空闲周期,当路由器到了空闲周期将被强制sleep,这会显著降低CPU的利用率,而不会降低虚拟路由器的处理能力。因此,必须设置idlepc值,否则Dynamips会完全占用CPU。

输入命令“idlepc get R1”,可以获取路由器R1的idlepc值,获取过程可能会花费较长时间,这个时间与用户PC的性能相关。从图2-8中可以看出系统会列出一系列的idlepc值,从列表中优先选择带有“*”号的idlepc值,若有多个有“*”号的,再选择后面方括号中数值最大项的idlepc值,若所有项都没有“*”号,就选择后面方括号中数值最大的项,然后将选定项的序号填到下方即可。

img28

图2-8 idlepc值的获取

采用命令“idlepc save R1db”,可以将刚获取到的R1的idlepc值保存到tmp目录下的idlepc.ini中,在这个文件中会保存R1这种型号路由器的idlepc值,当以后再启动R1或者同型号的其他路由器时,就不需要再获取idlepc值了。

通常来说idlepc只与特定的IOS映像有关,不同IOS版本的idlepc值会显著不同,相同版本但特性不同的IOS版本的idlepc值也会不同。但是idlepc值与计算机、操作系统和仿真软件等无关,所以在一个机器上获取到的idlepc值也可以应用到其他机器上。

(3)访问网络设备

当需要登录到某台网络设备上对其进行配置时,主要有3种方法:

·通过设备的以太网接口,用Telnet方式连入网络设备进行配置,这种方法要求本地主机的以太网接口和目标设备的以太网接口能够互通,此外,目标网络设备上的以太网必须事先配置好IP地址;

·通过设备的Console串口,用本地主机的超级终端连入网络设备进行配置,这种方法对于没有任何配置的设备比较适用,直接用串口线将本地串口与网络设备的Console接口连接起来就可以进行配置,但是这种方法必须到设备现场才能够完成;

·通过设备的以太网接口,用Web浏览器的方式对网络设备进行配置,这种方式不仅需要已经配置好以太网接口的IP地址,而且要求网络设备上启动Web服务器。

所以通常对于一个没有任何配置的网络设备进行配置时,都会选择第二种方式,通过Console端口对其进行配置。在仿真平台上将所有的虚拟网络设备的Console端口映射到了本机不用的端口上,比如将R1的Console端口映射到本机的3001端口上(这个映射关系在net文件中的Console项中设置),这样当需要登录R1设备时,只需要Telnet本机的3001端口就能够连入R1的Console端口中。

登录R1的方式如下:

·打开控制台窗口(点击“开始”→“运行”,输入cmd,即可弹出控制台窗口);

·进入命令行窗口,输入:telnet 127.0.0.1 3001,可以登录到虚拟路由器R1上进行配置,其中127.0.0.1是本机的地址(环回地址);

当做实验需要配置多台网络设备时,这就需要打开多个命令行窗口,每个窗口登录到一台设备上进行配置,配置完毕也不要关闭。

(4)简单配置方式

当第一次登录进设备后,或者以前登录时没有保存过配置,这时网络设备会进入初始化过程,询问用户是否进入初始化配置引导过程,通常输入“no”即可,输入“yes”的话会有一系列的交互配置过程,非常烦琐。当系统启动完成后,会出现“Router>”提示符,这就表示已经登录到路由器中。由于仿真平台中所有设备都是通过路由器模拟出来的,因此提示符默认显示的都是Router。

Cisco IOS的命令行配置界面(CLI)中包括了3种主要的模式:用户执行模式、特权执行模式和配置模式。

刚登录完出现命令提示符:

Router>

这时处于用户模式下,只有很少的权限,要想拥有更多的权限,并能够对路由器进行配置,需要进入特权执行模式,在“Router>”下输入“enable”命令就能进入特权执行模式,这时提示符会变为:

Router#

想要对路由器进行配置时,需要在特权执行模式下输入“Configure terminal”进入到利用终端进行的配置模式中,这时提示符变为:

Router(config)#

如果我们要配置接口fastEthernet 0/0,这时就需要在全局配置模式下输入命令“interface fastEthernet 0/0”进入到接口fastEthernet 0/0的接口配置模式中,这时提示符变为:

Router(config-if)#

此时可以执行对于fastEthernet 0/0接口的各种配置,比如给该接口配置一个IP地址等。在接口配置模式中输入“exit”就可以退回到全局配置模式。

配置完成后,要想测试路由器之间是否能够互通,就需要退到特权执行模式下:

Router#

输入“Ping对方的IP地址”,即可完成测试。