套用网上非常流行的一段话:Dynamips,这绝对不是一般的cisco路由器模拟器。dynamips和boson netsim的区别在于:boson是模拟出IOS的命令行,而dynamips是模拟出cisco7200路由器的硬件环境,然后在这个环境中直接运行Cisco的IOS。换句话讲,dynamips模拟出的是真实的路由器,就象你在PC上用街机模拟器玩街机游戏一样。
最近上BCN所做的实验都在Dynamips上完成的,Dynamips的确是非常强的工具,当然Dynamips还是不能替代真实的路由器的,还是有些命令是不同的。
想要使用Dynamips首先就要安装winpcap,winpcap有什么用呢?其实我也不知道,google上查到它为win32应用程序提供访问网络底层的能力,也许是让真实环境和虚拟路由器通信的东东吧!!!
然后再安装Dynamips这个软件(有win版和linux版,这里我装的是win版),默认就在c盘了。
再然后就把cisco的ios文件拷到c:\...\Dynamips\images下(目前我就只有3660和7200)
一切准备都做好了,就等需要的实验拓扑图了(也就是sample_labs中的.net文件的内容),这里拿一个全面的说明图来演示。(注意红色部分为.net文件中的内容)
# 项目实践拓扑结构
autostart = False # 是否所有的设备均自动启动?有true和false两个选项,默认是true。能够被每设备的配置所替代。
# model = 7200 # 设置实验室中的所有路由器的默认型号。目前可以选择的有3620,3640,3660和7200。
[localhost:7200] # 服务器的主机名或者ip地址,以及所使用的控制端口。如果你不指明的话,默认使用7200。
# port = 7200 # 老式的设置控制端口的方法,可选,默认为7200。
console = 2001 # 基本控制端口。新开启的实例如果没有指明控制端口,默认会使用这个值+实例号。默认值为2000。
workingdir = C:\Program Files\Dynamips\sample_labs\test # 设置Dynamips所保存所有设备文件的目录。它和运行dynamips的系统的绝对路径有关。
udp = 10000 # 设置NIO使用的基本UDP端口。
[[7200]]
image = C:\Program Files\Dynamips\images\c7200-is-mz.123-10d.bin # 7200路由器的ios文件的绝对路径。
ram = 128 # 每个路由器实例的虚拟内存数。
nvram = 128 # NVRAM的大小
# disk0 = 64 # Set size of PCMCIA ATA disk0
# disk1 = 64 # Set size of PCMCIA ATA disk1
# cnfg = None # Configuration file to import. This is the fully qualified path relative to the system running dynamips.
confreg = 0x2102
npe = npe-400 # NPE类型。("npe-100", "npe-150", "npe-175", "npe-200", "npe-225", "npe-300" or "npe-400")
midplane = vxr # 可选"std" or "vxr"
mmap = True # 设置为false将在为每个路由器产生虚拟内存时使用真实的内存替代磁盘文件。节省内存时是以牺牲性能为代价的。默认选项为True。
# idlepc = 0x607f1630 # 设置cpu空闲的值
# exec_area = 64 # Set the exec area size
# configuration = ... # 基本的64位加密的IOS配置。当前只能在7200下使用。
[[3620]]
image = C:\Program Files\Dynamips\images\c3620-is-mz.122-16.bin # 3620的ios的完全路径。
ram = 64 # 每个路由器的实例的虚拟内存数。
rom = 4 # ROM的大小
nvram = 128 # NVRAM的大小
# disk0 = 64 # Set size of PCMCIA ATA disk0
# disk1 = 64 # Set size of PCMCIA ATA disk1
# iomem = 5 # 路由器内存中分配给iomem的百分比。仅仅应用于3600系列的路由器。
# cnfg = None # Configuration file to import. This is the fully qualified path relative to the system running dynamips.
confreg = 0x2102 # Set the configuration register
mmap = True # 设置为false将在为每个路由器产生虚拟内存时使用真实的内存替代磁盘文件。节省内存时是以牺牲性能为代价的。默认选项为True。
# idlepc = 0x60719b98 # Set the Idle PC value
# exec_area = 64 # Set the exec area size
[[3640]]
image = C:\Program Files\Dynamips\images\c3640-jk9o3s-mz.123-10.bin # 3640的ios的完全路径。
ram = 96 # 每个路由器的实例的虚拟内存数。
rom = 4 # ROM的大小
nvram = 128 # NVRAM的大小
# disk0 = 64 # Set size of PCMCIA ATA disk0
# disk1 = 64 # Set size of PCMCIA ATA disk1
# iomem = 5 # 路由器内存中分配给iomem的百分比。仅仅应用于3600系列的路由器。
# cnfg = None # Configuration file to import. This is the fully qualified path relative to the system running dynamips.
confreg = 0x2102 # Set the configuration register
mmap = True # 设置为false将在为每个路由器产生虚拟内存时使用真实的内存替代磁盘文件。节省内存时是以牺牲性能为代价的。默认选项为True。
# idlepc = 0x60719b98 # Set the Idle PC value
# exec_area = 64 # Set the exec area size
[[3660]]
image = C:\Program Files\Dynamips\images\c3660-is-mz.124-10a.bin # 3660的ios的完全路径。
ram = 96 # 每个路由器的实例的虚拟内存数。
rom = 4 # ROM的大小
nvram = 128 # NVRAM的大小
# disk0 = 64 # Set size of PCMCIA ATA disk0
# disk1 = 64 # Set size of PCMCIA ATA disk1
# iomem = 5 # 路由器内存中分配给iomem的百分比。仅仅应用于3600系列的路由器。
# cnfg = None # Configuration file to import. This is the fully qualified path relative to the system running dynamips.
confreg = 0x2102 # Set the configuration register
mmap = True # 设置为false将在为每个路由器产生虚拟内存时使用真实的内存替代磁盘文件。节省内存时是以牺牲性能为代价的。默认选项为True。
# idlepc = 0x60640290 # Set the Idle PC value
# exec_area = 64 # Set the exec area size
[[Router B1-F2-S1]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router B1-D-S1]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router B1-D-S2]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router B1-D-S1-R]]
model = 3620
idlepc = 0x60424f48
[[Router B1-D-S2-R]]
model = 3620
idlepc = 0x60424f48
[[Router C-S1]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router C-S2]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router B2-F2-S1]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router B2-D-S1]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router B2-D-S2]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
[[Router B2-D-S1-R]]
model = 3620
idlepc = 0x60424f48
[[Router B2-D-S2-R]]
model = 3620
idlepc = 0x60424f48
#[[Router r1]]
#model = 3660
#slot1 = NM-16ESW
#idlepc = 0x60640eb8
#[[Router r2]]
#model = 7200
#idlepc = 0x607f1630
#[[Router r3]]
#model = 3640
#idlepc = 0x604593cc
#[[Router r4]]
#model = 3620
#idlepc = 0x60424f48
#后面的为说明文字,不影响该文件
下面我们来新建个拓扑图,在sample_labs文件夹中新建一个txt文本然后把扩展名改为.net
用写字板打开.net文件,写入:
# switching
autostart = no # 是否所有的设备均自动启动?有true和false两个选项,默认是true。能够被每设备的配置所替代。
# model = 7200 # 设置实验室中的所有路由器的默认型号。目前可以选择的有3620,3640,3660和7200。
[localhost] # 服务器的主机名或者ip地址,以及所使用的控制端口。如果你不指明的话,默认使用7200。
[[3660]]
image = C:\Program Files\Dynamips\images\c3660-is-mz.124-10a.bin # 3660的ios的完全路径(3660有交换模块,此s1和s2为交换机)。
ram = 96 # 每个路由器的实例的虚拟内存数。
[[router s1]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
f1/1 = s2 f1/1
[[router s2]]
model = 3660
slot1 = NM-16ESW
idlepc = 0x60640eb8
这里有2台交换机,交换机s1的f1/1端口接在s2的f1/1上面,如果还需要更多交换机,可以直接在后面加。
配置完成后,保存关闭,运行桌面上的dynamips Server,然后再运行你所配置的.net文件。ok了,这时你就可以用list命令查看,telnet登录了。
由于dynamips非常占用内存资源,一台512M内存的电脑最多可以开4台模拟的路有器,因此我们就需要在几台PC上同时运行模拟路由器,并且让他们相互连接,今天小吴老师刚把这个方法交给我们。
拓扑图文件是这样的:(这几台电脑必须在一个局域网内)
# Working with multiple dynamips servers
[192.168.6.50] #自己的IP地址
[[3660]]
image = E:\***.bin #自己的IOS文件位置
ram = 96 #模拟路由器的内存大小
[[ROUTER R1]]
model = 3660
s2/0 = R2 s2/0
idlepc = 0x60640eb8
[192.168.6.58] #其它PC的IP地址
workingdir = \***\test #在192.168.6.58这台PC上新建一个test文件夹,用于存放产生的临时文件
[[3660]]
image = E:\***.bin #192.168.6.58这台PC的IOS文件位置
ram = 96
[[ROUTER R2]]
model = 3660
idlepc = 0x60640eb8
注意:192.168.6.58这台PC要运行桌面上的dynamips Server,然后再在6.50这台上进行实验。
好了~~~让我们开始做实验吧!!!!