FreeBSD 使用dynagen+dynamips CISCO模拟器

by: 小虫子(xiaook) xiaook@gmail.com QQ:10516321

原创作品,转载请注明出处http://goat.cublog.cn,可在网络自由传播此作品,未经许可不得用于商业目的。

----------------

前两天不是从哪个网站看到dynamips这个CISCO 7200路由器硬件模拟器,一看到这个就觉得这个很有搞头,这两天安装来用了一下,感觉很好,所以顺便写一篇BLOG记下安装过过程,也分享给有类似需求的朋友!
简介:
FreeBSD的好话就不多说了,效能高,内核占用资源小…………
dynamips 一种模拟CISCO路由器硬件环境的软件,可运行在linux,windows,freebsd系统上。当然其它的模拟软件也很多,学过CISCO的朋友肯定用过一些。但其它模拟软件都只是模拟一些针对NA/NP考试的命令,拓扑要么固定,要么运行不是很稳定,命令不全,运行命令时和真实路由器也还是有一些差别的。而dynamips 模拟的是CISCO的硬件环境,也就是说可以直接运行CISCO IOS,运行和真实路由器完全相同。而且模拟7200/3600这些作为学习CISCO认证的朋友,难以得到实际操作机会的高端机型。我了解到这些后也是相当兴奋的。
dynagen 是一种dynamips的前端管理工具,利用它可以方便的建立多个路由器的实验环境。只是一个使dynamips更易于配置和管理的工具,它并不是必须的,但我强烈推荐使用。

    优点:真接运行CISCO IOS,再现真实环境;可运行于linux,FreeBSD,Windows 等各种操作系统,可自己灵活定制各种拓朴结构。
    缺点:对硬件(在运行多台路由器时CPU和内存要够好)要求高,配置较其它路由器模拟软件麻烦一些。

软件安装:
    安装FreeBSD
    cvsup 更新ports树(FB6.1更新ports后才有dynagen)
    安装dynamips
bsd# cd /usr/ports/emulators/dynamips/
bsd# make install clean

    安装dynagen

bsd# cd /usr/ports/emulators/dynagen/
bsd# make install clean

 准备CISCO IOS文件(这步我是先前在Windows XP里做的,FreeBSD中也可以完成)
在网上搜一下,如果下载的IOS是RAR文件,先用windows里的winrar先解开为.bin文件,一般bin文件也是经过压缩的,这个文件应该还可以解压,把这个文件直接拖到winrar上或是把此文件的扩展名改成zip,再用winrar解压得到的应该就是未压缩的IOS文件了,把IOS文件完全解压的目的是 不要让路由器在启动的时候解压IOS文件,可以大大加快路由器的启动速度。

准备拓扑文件
最好在网上找一些现成的拓扑文件,基本了解了之后,再自己搞拓朴更好此,如果找不到就先用dynagen带的示例文件,位置如下:
%pwd
/usr/local/share/examples/dynagen/sample_labs
%ls
all_config_options.txt  frame_relay             simple1
ethernet_switch         multiserver             simple2
%
参考文档:
对于 dynagen的基本了解可以看一下dynagen的文档,位置如下:
%ll
total 78
-r--r--r--  1 root  wheel  76637  1  5 15:21 tutorial.htm
drwxr-xr-x  2 root  wheel   1024  1  5 15:21 tutorial_files
%pwd
/usr/local/share/doc/dynagen
%

下面来个我做的拓朴,可以做CCNP的路由实验,和BSCI实验手册上的拓朴是相同的。

500)this.width=500;" border="0">




一般来说需要修改的地方我加了简单注释

autostart = false   #启动dynagen时不自动启动路由器,如果配置文件中路由器较多时自动启动,系统会很久没有响应,还是手动一个一个来好了。

[localhost]
port = 7200
udp = 10000
workingdir =   /home/xiao/dynagen/tmp/  #在dynagen运行时会生成很多文件,指定一个目录让它们都在一块,以方便管理 

 
 [[3640]]       #这一小节是全局模块配置
 image = =/home/xiao/dynagen/IOS/c3640-telco-124-13.bin  #指定IOS文件,注意要用绝对路径,我使用~/dynagen类似的路径时,工作不正常 
 ram = 64      #一台路由器使用的内存大小,IOS的具体要求可查相关资料
 confreg = 0x2102 #如果想启动时不加载以前的配置文件,就改这个寄存器器为0x2142
 idlepc = 0x6100bf2c  #针对不同的IOS要重新计算此数,详见上面提到的dynagen文档 
 exec_area = 64
 mmap = false
 slot1 = NM-4T   #所有路由器都加了个4个串口模块,用来连接帧中继

    [[router BBR1]]
 model = 3640
 s1/0 = FR 3
 e0/0 = SW 5

    [[router BBR2]]
 model = 3640
# slot2 = PA-A1    #ATM模块,平时没用的注释起来
 s1/0 = FR 4
 e0/0 = SW 6


    [[router R1]]
 model=3640
 s1/0 = FR 1
 s1/1 = R2 s1/1
 e0/0 = R3 e0/0
 e0/1 = SW 1

    [[router R2]]
 model=3640
 s1/0 = FR 2
 e0/0 = R4 e0/0
 e0/1 = SW 2

    [[router R3]]
 model=3640
 s1/0 = R4 s1/0
 e0/1 = SW 3

    [[router R4]]
 model=3640
 e0/1 = SW 4

    [[FRSW FR]]   #软件自带的帧中继交换,不用你再自己用路由器来配置了
 1:102 = 2:201
 1:103 = 3:301
 1:104 = 4:401
 2:203 = 3:302
 2:204 = 4:402
 3:304 = 4:403

    [[ethsw SW]] #这个交换机有两个VLAN,从逻辑上隔离不同功能
 1 = dot1q 2
 2 = dot1q 2
 3 = dot1q 2
 4 = dot1q 2
 5 = dot1q 1
 6 = dot1q 1
 7 = dot1q 1 NIO_tap:/dev/tap0 #连接到本机的接口上,以方便在本机运行tftp,ACS等


准备目录,为dynagen指定一个目录管理方便些,我喜欢在xiao这个用户的$home目录下运行dynagen所以建了下面这些目录:
/home/xiao/dynagen  dynagen的主目录,相关文件都在这里,拓扑文件也直接存在这里了
/home/xiao/dynagen/IOS 把IOS 文件放在这里
/home/xiao/dynagen/tmp 存放dynagen运行时生成的文件,可以保存路由器的设置,所以要根据需要清空。



运行dynagen

运行dynagen前先要运行dynamips于服务器模式(这里我走了一个弯路,先以为直接运行dynagen会自己启动dynamips,结果浪费了不少时间)
在gnome中开一个终端
%dynamips -H 7200
Cisco 7200 Simulation Platform (version 0.2.5-x86)
Copyright (c) 2005,2006 Christophe Fillot.

Hypervisor TCP control server started.

保持第一个终端运行状态,再开一个终端运行dynagen

%dynagen     3640.net       #3640.net是上面贴的拓扑文件的文件名

Reading configuration file...

Network successfully loaded

Dynagen management console for Dynamips
Copyright (c) 2005-2007 Greg Anuzelli

=> list
Name       Type       State      Server          Console
BBR1       3640       stopped    localhost:7200  2000
BBR2       3640       stopped    localhost:7200  2001
R1         3640       stopped    localhost:7200  2002
R2         3640       stopped    localhost:7200  2003
R3         3640       stopped    localhost:7200  2004
R4         3640       stopped    localhost:7200  2005
FR         FRSW       always on  localhost:7200  n/a
SW         ETHSW      always on  localhost:7200  n/a
=> ?

Documented commands (type help ):
========================================
clear   filter  idlepc  push    resume  shell  stop     ver
exit    help    import  py      save    show   suspend
export  hist    list    reload  send    start  telnet

=>

到这步就自己看着办了,可用的命令在上面,对路由器的start,stop,telnet都是在这里操作。

export,import也很实用的,自己慢慢研究了。
不过在使用软件前最好计算好idelpc值,详细介绍请看dynagen的教程,不然运行一台路由器CPU占用也是100%,没办法运行很多台。

在我的机器上(R52: pm 1.86G,1G  + FreeBSD6.1+gnome),运行以上配置start/all 设备可以全部正常启动,不过CPU也占用100%够受的。相同的配置在windows中运行windows版本的这个软件只能启动6台路由器,当然CPU也是100%占用,内存也没有剩的。不过完全启动后,CPU会降下来不少的。看来机器足够好完全能够做自己的试验室,而且在这方面FreeBSD确实要强一些。

如果想节约CPU和内存资源,选择合适的IOS很重要,最好能够满足实验要求的情况下,使用占用内存更少的IOS,并且可以多试试不同的idlepc值


-----------2008.5.16

使用tap0和本地主机通信

修改 /boot/default/loader.conf 里面有一项if_tap_load="NO"修改为YES,以使开机可以自动加载if_tap模块。

在/etc/rc.conf里面为tap0接口配置一个IP地址

在dynagen配置文件里面使用NIO_tap:/dev/tap0来连接到本地接口,注意这里使用了设备文件的绝对路径

使用root用户来启动dynamips server,不然如果使用了tap0接口会提示没有权限。

我现在的方法是使用sudo来运行dynamips,以普通的用户来运行dynagen.

09-13 19:57