1) Dynamips相关基本知识
Dynamips是Christophe Fillot编写的一款Cisco路由器模拟器,它模拟Cisco 1700、2600、3600、3700以及7200产品的硬件平台,用于运行标准的IOS文件,可以在PC上模拟Cisco设备的操作,是一个非常有用的工具。
Dynagen、DynamipsGUI、GNS3是便于用户使用Dynamips而开发的辅助工具,其中Dynagen通过.net文件来制作网络拓扑,而DynamipsGUI、GNS3都是图形化的软件。
2) Dynamips相关软件的下载和安装
首先安装winpcap,这个库用来提供桥接路由器接口到物理网卡,就是将物理网卡作为虚拟路由器的网卡,可以让虚拟路由器和真实环境中的设备通信,Windows用户必须安装winpcap4.0或者更新版本。
其次安装DynamipsGUI软件,这个软件一般同时就提供了Dynamips,因此不再需要单独安装Dynamips。
如果用户希望通过Telnet来访问Dynamips,可以考虑安装一个比较好用的Telnet软件SecureCRT,SecureCRT 是高度可定制的终端仿真器,适用于 Internet 和 Intranet,支持 IPv6 标准。对于连接到运行 Windows、UNIX 和 VMS 的远程系统来说,SecureCRT 是理想的选择。
下面是一些主要软件的下载地址:
http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator,下载Dynamips模拟器的地址 http://dynagen.org/,下载dynagen的地址
http://dynagui.sourceforge.net/,下载DynamipsGUI的地址 http://www.winpcap.org/,下载winpcap的地址
3) Dynamips的使用方法
本文主要描述通过DynamipsGUI来运行Dynamips的方法。打开DynamipsGUI软件之后,会出现如下界面,下面对界面的相关功能进行介绍:
①:此区域是选择交换机和路由器的个数
②:这个地方是选择设备类型,IOS路径,idle-p值NPE类型,虚拟(表示虚拟设备的RAM所占的内存大小,因为dynamips在模拟时候需要将主机的物理内存模拟成模拟设备的RAM)
③:此区域是配置分布式的dynamips的设置区域(请看分布式专题),对集中式设备这个区域暂时还用不到.
④:这里可以选择一些不需要IOS的模拟设备。如:FrameRelay交换机ATM交换机,以太网交换机(现在已经有支持交换的模块NM-16ESW).由模拟器自己提这些功能.
⑤:设备类型,选择你所需要模拟的设备,列出的设备为dynamips目前支持的类型,其他的都不支持.
⑥:这里可以设置连接到主机通信(下文详细介绍)
⑦:可以直接读取真实设备里的NVRAM里的配置文件(.ini格式) ⑧:输出目录(自己先建立).
下面我们就分步介绍如何利用DynamipsGUI工具实现如下的组网。
1) 首先选择根据上面这个拓扑图(建立在做实验的时候在草稿纸上画好拓扑图,注释好个
端口设备的IP),我们来用dynamipsGUI来配置脚本文件
2) 打开dynamipsGUI软件以后,根据上面的图我们假设R1,R2,R3都使用3640,而R4使
用7200.那么我们选择路由器个数为4,并选择桥接到PC.在⑤设备类型里钩选3640 和7200.如图:
3) 在②设备配置区域里下拉选择7200,然后浏览选择你的IOS文件(这是Cisco的发行版
本,需要提前在网上下载),接一下步是最让初学者感到困惑的地方.计算idle-pc值(idle-pc只为了解决在开启模拟设备时不至于你的CPU占有率达到100%,所以这个值对于能做好实验很重要).指定好IOS路径以后.我们点击计算idle-pc,确定IOS文件存在.之后在弹出窗口中按任意键继续.如图:
之后看到的就是设备的启动了(如同真实设备一样).然后在设备的用户模式下(Router>)下先按组合键ctrl+] 接着在单独按i键.记住不要三个键一起按.按完以后就是等待了.后续会出现如图界面:
等待一会儿,出现下图:
看到下面出现一排值.这就是我们所需要的idle-pc值.那么这么多我们怎么选择呢?好!注意看count等于后面的数字.找到一个count最大值.然后记下前面的一串16进制数.例如上面这图.count=72,这个里面有两个72的值,我们同时记下这两个值.0x605c33fc 和0x605c345c.然后在回到dynamipsGUI界面.将0x605c33fc(或者0x605c345c)填入.(说一下这地方的原则:大家不要一味的相信最大值就是必须要选择的值.这要看情况而定.如果当你选择一个最大值,然后在后面开设备的时候却出现了CPU100%的情况,那么这个时候你就应该重新去计算idle-pc值,只到CPU占有率维持在一个正常值.我上面说的选取最大的count值是应该理解为从最大的count值开始去试.这样一直到找到一个合适的idle-pc值)
4) 接下来是NPE类型,这里 dynamipsGUI已经有默认值了.我们不需要在去设置它.而在
虚拟内存这里dynamipsGUI作者也给出了各个类型模拟器的默认值.大家可以根据IOS的大小去更改.也要根据自己的物理内存而定.而后面的参数128 --disk0 4 ,128的意思是拿128MB的物理内存来作为虚拟设备的RAM, --disk0 4是dynamips的参数在说明文件中的解释为: --disk0 - Cisco 2600(2610/2611/2620/2621/2610XM/2620XM/2650XM) To emulate another platform, use the \"-P\" command line option (for example, \"-P 3725\" or \"-P 3600\"). For the 7200, you can change the NPE type with the \"-t\" option. It is possible to select \"npe-100\ \"npe-225\ For the 3600, a 3640 with 128 Mb is emulated by default. You can change this with the \"-t\" option and by specifying \"3620\" or \"3660\". Don't forget to set the chassis type depending on your IOS image, a c3660 image will not run on c3640 hardware and vice-versa. Remark: PCMCIA card emulation is not supported yet with Cisco 3600. 还有一个要说明的,大家如果在以后碰到dynamipsGUI界面的虚拟碰到后面跟一个参数-X(注意为大写)比如96 –X 意思是不使用一个模拟的RAM文件,这样可以使用速度更快.原说明文档也有介绍:-X : Do not use a file to simulate RAM (faster) 我对新手的建议:关于NPE类型,大家在使用dynamipsGUI时就使用默认的.关于虚拟大小如何设置.主要还是根据你的IOS大小来定.dynamipsGUI也给了默认值. 5) 接下来讲一下寄存器的值.很多人在做实验的时候都问,为什么copy run start以后.下次重 新启动虚拟设备时.设置没有被保存.主要就是这个地方的设置问题了.学思科的人都清楚0x2142和0x2102了. 0x2142启动时是不从NVRAM读配置.而0x2102相反.因为dynamips默认是0x2142 所以我们需要在这个地方改为0x2102就可以了.然后在到虚拟的路由设备里面在show ver看看,你会发现寄存器的值0x2142(虽然我们这之前在dynamipsGUI已经配置过)但还是要重新在改一次寄存器的值才能最后的保存你的配置命令:config-register 0x2102,然后再配置在copy run start,再reload看看.你就会发现设置保存成功! 6) 上面已经把7200都配置好了.完了以后点寄存器下面的确定.3640也是一样(其它的设备 也是如此配置)配置完后确定. OK!两个设备都配置完毕.接下来,还记得我上面的那个拓扑图吧。对,还有一个桥接到本地PC与我们自己的主机通信(我要说明一下.不一定非要桥接到PC.我这里是故意弄一个PC桥接,因为很多朋友这个地方搞不清楚).我们选择⑥区域里的下拉.选择NIC-O(dynamips可以支持多块网卡桥接),然后点击计算桥接参数.在弹出的界面里已经有很详细的说明.如图: 在这里我就不在重复了(免得说我罗嗦! ).只说一点.例如这张图中我们应该选择的是第三 个网卡信息,即本地网卡信息而不应该选择第二个(是PPPOE拨号的).OK。如本图应该为: \\Device\\NPF_{36CC519A-AAF8-4C53-A9EC-7E0B88D917D6},记下网卡信息最好填到dynamipsGUI界面相应位置.好了.现在选择一个输出目录吧.下一步!! 7) 这里就是确定设备名字和telnet端口还有各个slot模块信息.Slot就对应设备上的一块板 卡,:注意配置好之后要记得点击确定配置,例如配置完Router1就点击确定Router1配置,依次配置完所有设备。下面根据上面那个拓扑图我也配置一下.首先是R4(7200)根据图中要求如图: 然后是3640 三个都是一样的: 这里我解释一下界面下面的控制台输出(操作系统我不废话了,不会还有哪个连自己是什么系统不知道的),如果选择TCP输出则需要用telnet连接.推荐使用SecureCRT,如果是直接输出,就是不用telnet连接了,就是直接在窗口下输出CLI界面。完事!下一步。 8) 根据拓扑连设备吧.我没什么好说的了.就是将拓扑图中各个相连的端口连起来(废话),我 也连了一下.发个图.新手自己慢慢体会吧.呵呵(注:图中XPC就是主机) 最后完事点生成BAT文件.在到你的输出目录里去吧.生成的文件如图: 然后依次点R1.bat,R2,bat,R3,bat,R4.bat 意思是打开这四个模拟路由器!. 然后就用SecureCRT连接了IP地址是:127.0.0.1 端口根据配置的console的值! 例如本教程中R1路由器端口设置的是2001 下面我们使用SecureCRT来登陆.安装好SecureCRT 打开. 点在标签中建立连接,如下图: 点新会话看下图: 点新会话看下图: 下一步如图: 接着在下一步就可以了,最后在连接就看到下图了: 这样就已经连上Dynamips了,直接可以进入配置视图进行操作了,后续的操作和在Cisco设备上的操作一样。 4) 解读Dynamips bat文件 说实话,我个人并不太喜欢用BAT模式运行模拟器,总觉得它的拓扑配置很繁琐,很难看懂。由于有一个叫做DynamipsGUI的软件可以制作BAT文件,所以也有很多使用者使用BAT模式,那么我们就来看看BAT模式。不过如果不是特别有必要,建议新手不要阅读这一章节,免得带来不必要的困扰。 BAT模式是每个虚拟设备一个.bat文件。也有.net文件中的一些数值,下面几个实例是我使用DynamipsGUI软件生成的,简单的看一下配置参数。************* title R1 mkdir R1 cd R1 ***************************************************************** :reload ..\\dynamips.exe -T 2001 -f ..\\FRSWITCH -a ..\\ATMSWITCH -P 7200 -r 64 --disk0 -t npe-400 -c 0x2142 -p 0:C7200-IO-FE -p 1:PA-FE-TX -p 2:PA-A1 -p 3:PA-4T+ -p 4 : PA-POS-OC3 -s -s -s 2:0:udp:12120:127.0.0.1:62300 3:0:udp:12130:127.0.0.1:12211 3:3:udp:12133:127.0.0.1:62100 -s -s -s 4:0:udp:12140:127.0.0.1:12330 3:1:udp:12131:127.0.0.1:12310 0:0:udp:12100:127.0.0.1:31000 --idle-pc=0x60663630 ..\\c7200-jk9o3s-mz.124-10a.bin goto reload ****************************************************************************** 以上是一个BAT的内容,我不愿意打断其参数的连续性,我们在下面拆开说。 title R1 定义设备名 mkdir R1cd R1 进入该目录 建立一个与设备名相同的目录 :reload 这句类似一个程序的开始语句。 ..\\dynamips.exe dynamips.exe文件的相对路径,因为上面有一个“cd R1”命令,所以当前目录是R1。需要用..\\来回到上级目录。配置中工作目录始终是在R1目录下,这点要注意。 -T 2001 依然是登陆的端口,相当于127.0.0.1:2001,相当于.nat中的console = 2001参数 -f ..\\FRSWITCH 帧中继交换机文件的相对路径,BAT模式是使用了一个FRSWITCH文件来模拟帧中继交换机 -a ..\\ATMSWITCH ATM交换机文件的相对路径,BAT模式使用了一个ATMSWITCH文件来模拟ATM交换机。 -P 7200 定义设备行号,相当于.nat中的model = 3640参数 -r 128 运行所需内存,相当于.nat中的ram = 128参数 --disk0 7200系列会有一个disk参数,目前不太清楚其作用。 -t npe-400 设置npe类型,相当于.nat中的npe = npe-400参数-c 0x2102 寄存器值, 相当于.nat中的confreg = 0x2102参数-p 0:C7200-IO-FE 插槽0中的模块,同样是C7200-IO-FE模块,用来连接交换机-p 1:PA-FE-TX -p 2:PA-A1 插槽2中的模块,一个单端口的ATM模块 插槽1中的模块,也是一个单端口以太网模块 -p 3:PA-4T 插槽3中的模块,4端口串行链路模块 -p 4:PA-POS-OC3 插槽4中的模块,一个POS口的模块,不过我没有使用过。 以上的-P就是用来在虚拟设备上安装相应的模块。下面开始进行拓扑连接。 -s 2:0:udp:12120:127.0.0.1:62300 插槽2上的端口0,使用UDP12120端口连接到,62300端口(后面再说这个端口是谁) -s 4:0:udp:12140:127.0.0.1:12330 -s 3:0:udp:12130:127.0.0.1:12211 插槽4上的端口0,使用UDP12140端口连接到,12330端口 插槽3上的端口0,使用UDP12130端口连接到,12211端口 -s 3:1:udp:12131:127.0.0.1:12310 插槽3上的端口1,使用UDP12131端口连接到,12310端口 -s 3:3:udp:12133:127.0.0.1:62100 插槽3上的端口3,使用UDP12133端口连接到,62100端口 -s 0:0:udp:12100:127.0.0.1:31000 插槽0上的端口0,使用UDP12100端口连接到,31000端口 ..\\c7200-jk9o3s-mz.124-10a.bin 同样是IOS映像文件的保存路径,注意是相对路径,我试过绝对路径,结果不行。--idle-pc=0x6074ae38goto reload 返回到上面那个:reload地方,如果出现参数错误,它会循环执行。 ****************************************************************************** 同样是那个idlepc的值,相当于.nat中的idlepc = 0x6074ae38参数 -T 2002 -f ..\\FRSWITCH -a ..\\ATMSWITCH 以上几条同上,不再赘述。-P 3600 定义模式为3600-r 96 运行内存96M -t 3640 型号为3640寄存器值 -c 0x2102 -p 0:NM-1FE-TX 插槽0中的模块,一个单端口以太网模块-p 1:NM-4T 插槽1中的模块,一个四端口以太网模块 我们主要看下面的拓扑连接。 -s 1:1:udp:12211:127.0.0.1:12130 插槽1上的端口1,使用UDP12211端口连接到,12130端口 -s 1:0:udp:12210:127.0.0.1:12311 插槽1上的端口0,使用UDP12210端口连接到,12311端口-s 1:3:udp:12213:127.0.0.1:62102 插槽1上的端口3,使用UDP12213端口连接到,62102端口 -s 0:0:udp:12200:127.0.0.1:32000 插槽0上的端口0,使用UDP12200端口连接到,32000端口 ..\\c3640-jk9o3s-mz.124-10a.bin 同样是IOS文件的相对路径--idle-pc=0x603e0068同样是idlepc的值 goto reload 同样会到上面。 ****************************************************************************** 好了,看了以上两个,就有些眉目了。 其实BAT模式是使用了本机的回环地址(127.0.0.1)上的UDP端口,来划分每个虚拟设备的接口,每个虚拟设备的接口,都将会分配到一个UDP端口。然后使用-S参数来进行连接。 不知道是不是DynamipsGUI程序的作者在程序中设定的端口号分配方式,比较简单易懂。 举例来说 1:1:udp:12211:127.0.0.1:12130 路由器2的插槽1上的端口1,就使用12211端口,前面的12是标志了设备,后面的211正好是设备ID插槽ID端口ID。而拓扑链接到的端口,就是12类设备1插槽3端口0。 这样的一种分配方式相对来说还是比较直观的。 之前有6XXXX的端口,那是接到了ATM和帧中继交换机上。同样在BAT方式下帧中继和ATM也是不可配置的。 621代表帧中继交换机,后面的数值是帧中继交换机的端口号。 623代表ATM交换机,同样后面的数值是ATM交换机的端口号。 拓扑的连接有一点要注意的是,所有的连接在每个设备的BAT文件都要进行描述,不像是.net,只需要在一个设备中描述就行。 我们从0.2.6-RC2版本的软件开始,介绍各模拟设备所支持的模块,主要有RC2和RC42个版本。 RC2: 支持3600系列路由器和7200系列路由器 3600系列分为3620、3640、3660三种。3620支持2个插槽,3640则是4个插槽,3660可以支持6插槽。 3620和3640支持以下模块 NM-1E 单端口以太网接口卡 NM-4E 4端口以太网接口卡 NM-1FE-TX 单端口快速以太网接口卡NM-4T 4端口串口卡 NM-16ESW 16端口快速以太网接口卡,模拟交换机就靠他了,可以使用VLANDATABASE模式划分VLAN。3660支持以下模块 NM-1E 单端口以太网接口卡NM-4E 4端口以太网接口卡 NM-1FE-TX 单端口快速以太网接口卡NM-4T 4端口串口卡 Leopard-2FE 单端口快速以太网卡,用于连接那个不可管理的交换机,或者你的PC。如果使用,必须把它放在slot 0上,是3660的专用卡,无法在其他设备上使用。 并且似乎3660不支持NM-16ESW模块,至少我还没有在3660上用过这个模块。 7200系列没有更多详细的区分,支持6个插槽。7200支持以下模块 C7200-IO-FE 单端口快速以太网接口卡,用于连接那个不可管理的交换机,或者你的PC,如果使用必须把它放在slot 0上,其它插槽不支持。 PA-FE-TX 单端口快速以太网接口卡。 PA-4E 4端口以太网接口卡PA-4T+ 4端口串口卡 PA-8E 8端口以太网接口卡 PA-8T 8端口串口卡 PA-A1 单端口ATM接口卡,如果想试验ATM的连接,必须使用此卡 PA-POS-OC3 单端口POS接口卡,具体的应用我还没有用过。 RC4: 除了支持3600系列路由器和7200系列路由器,还新增支持2691、3725、3745。 3600和7200支持的模块同以上版本,主要说说新增支持的这三种路由器。 从作者的BLOG上看来,2691、3725、3745使用的接口卡相同。 NM-1FE-TX 单端口快速以太网接口卡 NM-4T 4端口串口接口卡。 NM-16ESW 16端口快速以太网接口卡,还是可以模拟简单的交换机的。 说完了模块,还得说连接,不过这里说的是连接的类型,不同类型的端口连接在一起会出问题(废话)。 先说以太口,在模拟器中,以太口有3种: 一种是以太网接口,也就是10M接口,如NM-4E、PA-4E接口卡,提供了以太网接口。第二种是快速以太网接口,也就是100M接口,如NM-1FE-TX、PA-FE-TX、NM-16ESW接口卡,提供了快速以太网接口。 第三种是专用的以太网或快速以太网接口,如3660和7200中的专用接口卡。 前两种接口,只要连接到同样的借口就可以使用,以太网接口连接以太网接口,快速以太网接口连接快速以太网接口,快速以太网接口也可以连接本机的网卡。 第三种接口是用来连接那个不可管理的交换机,没有列出专用接口卡的虚拟设备(3640、3620)使用快速以太网接口连接不可管理交换机。然后将你本机的网卡也连接到不可管理交换机就可以实现本机和虚拟设备的通信了。 再说串口,模拟器支持的串行端口只有一种。 PA-4T+和PA-8T分别为7200提供了4个和8个串行端口。 NM-4T为3600系列提供4个串行端口。 串行端口连接相对简单,可以连接到另外设备的串行端口,或者连接到不可管理的帧中继交换机。 最后说说7200支持的另外两个端口ATM和POS端口 PA-A1提供一个ATM端口,似乎只能与不可管理的ATM交换机相连,无法与另外一台7200的ATM端口直接连接。 PA-POS-OC3提供了一个POS口,似乎只能与另外一台带有POS端口的7200连接,但是由于我对POS端口没有研究,所以究竟是怎么回事,我也不清楚。 因篇幅问题不能全部显示,请点此查看更多更全内容