新进化论

道生一,一生二,二生三,三生万物。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
CISCO硬件模拟器-dynamips的使用详解
[ 录入者:admin | 时间:2007-10-27 15:07:03 | 作者: | 来源: | 浏览:367次 ]
最近,论坛经常有一些刚接触到dynamips的朋友,对其强大的功能非常的感兴趣,而且又因为本身正在自学或者参加培训或有向CISCO方向发展的意图,所以都开始逐步地开始了解dynamips这款基于CISCO IOS的硬件模拟器.

在网上,关于它的一些说明的文档非常之多,很多朋友也明白它和BOSON等一些软件模拟器的区别,所以,dynamips开发后至今的一年多,人气越来越旺盛.很多知名论坛也纷纷在各自的论坛内增开了dynamips版块.但当时还未有任何一个论坛完全以其为主题开设.

www.dynamips.cn/bbs应运而生!经过很长时间的模块整合,调整方向,该论坛已经逐步走上正轨,自此文时,论坛注册会员已近六千人,而且这个数字还在惊人的增长。考虑到论坛的发展需要,论坛的管理员及版主及时的改变策略,重新组合了论坛的模块,该论坛已正式更名为:www.netemu.cn/bbs  

一、论坛的发展风格不变:其特色dynamips依然作为主打版块占据论坛首要地位。把至今为止所有的dynamips的版本及其详细的使用方法都包含了进来。而且几位版主和为论坛做出了很大贡献的会员为其他的新朋友特意制作了详细的使用视频教程。另外基于dynamips开发的各种前端处理软件或者PEMUCISCOPIX硬件模拟器)等内容单独开设了版块。

二、新增了CISCO、华为、VMware、软路由等经典的网络技术模块,并由红头发等业界知名人士驻版,为在CISCO或者其他厂商设备的学习过程中遇到问题的朋友们热心解惑。

三、重点鼓励各位会员的共享精神。Netemu.cn中文社区的资料区,各位版主及会员都共享出了自己学习网络技术多年来搜集的资料,非常的丰富、全面。

高手坐阵,海量资源,而且可以放弃让你欢喜让你忧的bosoX等“半调子”模拟器,实现和真实网络相同的实验环境,各位,你们还在等什么呢?

鉴于很多朋友对dynamips还不是很熟悉,可能从某种途径获得了该模拟器,而且也得到了英文的帮助文档,对着帮助文档自己一步步的摸索,经常出着这样或者那样的问题,很郁闷、很烦躁,但是一时之间又无法解决,看帮助文档,又觉得一知半解,我决定,用我这半调子英文水平配合我自己对dynamips的理解为大家翻译一下帮助文档。在这之前,本人尚未发现(不代表没有!)中文的帮助文档。

如果对照帮助文档,仍然有一些不明白的、生涩的地方,大家可以到
www.netemu.cn社区去寻求帮助。









CISCO 路由模拟器的帮助文档

开发者:Fabien Devaux, Christophe Fillot, MtvE

硬件模拟器
*****************

本模拟器目前支持的CISCO IOS有以下几种:
- Cisco 7200 (NPE-100 to NPE-400)

- Cisco 3600 (3620, 3640 and 3660)


- Cisco 2691


- Cisco 3725


- Cisco 3745


CISCO 的7206VXR NPE-200 (256 Mb of DRAM)目前无法模拟

使用-P命令行参数来确定模拟平台。例如: -P 3725 或者 –P 3600

对于7200,你可以通过-t参数来改变其NPE类型。可供选择的NPE类型有:"npe-100", "npe-150", "npe-175", "npe-200", "npe-225", "npe-300" and "npe-400"。

对于3600,3640 IOS默认使用128M大小的RAM。你可以通过-t参数来确定你使用的是3600系列中的哪一款设备,是3620还是3600?但是在更改设备类型的时候,请记住要依据你手中的IOS映像文件来决定。要注意的是:一个C3660的映像文件是不能运行在C3640的硬件平台上的,反之亦然!

注意:到目前为止,dynamips硬件模拟器对CISCO3600系列设备的PCMCIA卡的模拟不提供支持。

如下内容为,dynamips命令行选项的总结:
*****************************


-l <log_file>
:
设置dynamips运行日志文件名,如无特殊指定,默认为dynamips_log.txt



-j
:
关闭JAVA编译器,会使运行非常的缓慢。建议不管它!


--exec-area <size> :
设置进程区域大小范围,默认为64M。此项不需要修改。


--idle-pc <pc>
:
设置空闲进程值。默认为关闭,此项目前为建议项,该项可以最大限度的节省内存空间


--timer-itv <val>
:
设置中断时间间隔,默认为1000。不需要改动



-i <instance>
: Set instance ID


-r <ram_size>
:
设置RAM大小。可根据你的PC内存做相应的调整。


-o <rom_size>
:
设置ROM大小。


-n <nvram_size>
:
设置NVRAM大小


-c <conf_reg>
:
设置配置寄存器的值


-m <mac_addr>
:
设置MAC地址,默认为自动分配


-C <cfg_file>
:
将ios映像配置文件导入到NVRAM中


-X
:
不加载任何的配置文件(快速启动)


-R <rom_file>
: Load an alternate ROM (default: embedded)


-k <clock_div>
:
设置时间参考值(默认为四)



-T <port>
: TCP
端口号


-U <si_desc>
:
通过串口来连接控制台


-A <port>
: AUX
的TCP端口号


-B <si_desc>
:
通过串口来连接AUX


--disk0 <size>
:
设置 PCMCIA ATA disk0: size


--disk1 <size>
:
设置 PCMCIA ATA disk1: size



-a <cfg_file>
:
虚拟ATM交换机配置文件


-f <cfg_file>
:
虚拟FR交换机配置文件


-E <cfg_file>
:
虚拟以太网交换机配置文件


-b <cfg_file>
:
虚拟桥接配置文件


-e
:
在主机上查看网络设备列表


CISCO 7200 系列设备的详细参数说明:


-t <npe_type>
:
设置 NPE 类型 (默认为 "npe-200")


-M <midplane>
:
设置 Midplane ("std" or "vxr")


-p <pa_desc>
:
定义端口适配器类型


-s <pa_nio>
:
为端口定义连接


CISCO 3600 系列设备的详细参数说明("dynamips -P 3600 --help"):


-t <chassis_type>
:
设置设备型号 (default: "3640")


--iomem-size <val> :
输入输出缓冲 (百分比, 默认: 5)


-p <nm_desc>
:
定义网络模块


-s <nm_nio>
:
为端口定义连接


CISCO 2691的详细参数说明("dynamips -P 2691 --help"):


--iomem-size <val> :
输入输出缓冲(in percents, default: 5)


-p <nm_desc>
:
定义网络模块


-s <nm_nio>
:
为端口定义连接



CISCO 3725的详细参数说明("dynamips -P 3725 --help"):


--iomem-size <val> :
输入输出缓冲(in percents, default: 5)


-p <nm_desc>
:
定义网络模块


-s <nm_nio>
:
为端口定义连接


CISCO 3745的详细参数说明("dynamips -P 3745 --help"):


--iomem-size <val> :
输入输出缓冲(in percents, default: 5)


-p <nm_desc>
:
定义网络模块


-s <nm_nio>
:
为端口定义连接




对于上述命令参数的详细解释(附例)
****************************

-k <clock_div> :设置时间
设置与PC同步的时间.相当于为cisco设备设置真实的时间参数.可在CISCO的命令行界面下输入show clock来查看该值

--idle-pc <pc> :
Idle PC的值可以使你在运行路由器实例时让CPU的负载不会达到100%,这意味着你可以运行更多的路由器实例在你真实的PC机上.
为了确定idle PC的值,正常的运行CISCO 的IOS映像文件,并且不做任何的命令配置(这样可以使你获得更准确的idle PC值).当IOS完全的解压并加载,等到出现“pess RETURN to get started!”息提示的时候,但是不要输入ENTER键.等待5秒,然后输入“Ctrl-] + i”。一些idle PC的值会在10分钟后出现.在最后,选择所有idle-pc值最后数值最大的那一个idle-pc的值,那就是你需要的!当然,在获得一个idle-pc值后,请先尝试一下,是否它能使你的CPU利用率不再到达100%。如果不然,请更换其它的值重新尝试。




特别注意:


一个"idle PC"值只能应用于一种IOS映像文件,你不能把它用于其他不同的IOS上。





CISCO 7200端口适配器的种类描述:
------------------------------------------------


slot:pa_driver
格式:slot:pa_driver



slot:
物理槽位号



pa_driver:
端口适配器的名称如下:


- C7200-IO-FE
(FastEthernet, slot 0 only)


- PA-FE-TX
(FastEthernet, slots 1 to 6)


- PA-4E
(Ethernet, 4 ports)


- PA-8E
(Ethernet, 8 ports)


- PA-4T+
(Serial, 4 ports)


- PA-8T
(Serial, 8 ports)


- PA-A1
(ATM)



CISCO 3600网络模块的描述:
--------------------------------------------------

格式: slot:nm_driver



slot:
物理槽位号



nm_driver:
网络模块名称描述:


- NM-1E
(Ethernet, 1 port)


- NM-4E

(Ethernet, 4 ports)


- NM-1FE-TX
(FastEthernet, 1 port)


- NM-4T
(Serial, 4 ports)


- NM-16ESW
(Ethernet switch module, 16 ports)


- Leopard-2FE
(Cisco 3660 FastEthernet in slot 0,
该槽位自动的被添加。)



Cisco 2691/3725/3745 网络模块描述 "<nm_desc>":
------------------------------------------------------------

Format: slot:nm_driver



slot: the number of the physical slot (starts from 0)



nm_driver:
网络模块名称描述:


- NM-1FE-TX
(FastEthernet, 1 port)


- NM-4T
(Serial, 4 ports)


- NM-16ESW
(Ethernet switch module, 16 ports)


- GT96100-FE
(2 integrated ports,
该槽位自动的被添加。)



端口适配器和网络模块的规定:
----------------------------------------------------------------------


Format: slot:port:netio_type[:netio_parameters]



slot
:
物理槽位号 (从0开始编号)


port
:
指定槽位的端口号 (从0开始编号)



netio_type :
与主机接口的连接



unix:<local_sock>:<remote_sock>


使用UNIX的套接字来完成本地连接.


<local_sock>
本地NIC参数.


<remote_sock>
远端设备接口参数.



(ex. "/tmp/local:/tmp/remote")



vde:<control_sock>:<local_sock>


For use with UML (User-Mode-Linux) or VDE switches.


VDE stands for "Virtual Distributed Ethernet".


Please refer to : http://sourceforge.net/projects/vde/



tap:<tap_name>


使用一个虚拟的以太网设备来连接.


<tap_name> is the name of the tap device (ex. "tap0")



gen_eth:<dev_name>


使用真实的网卡来连接, 要安装 libpcap 0.9


或者 WinPcap. 它可以工作在windows或者unix操作系统之下.




<dev_name>
以太网设备的参数 (ex. "eth0")


设备参数列表你可以通过使用“-e”参数来得到。




linux_eth:<dev_name>


使用真实的网卡来完成于虚拟设备的连接 (Linux specific).


<dev_name>
以太网卡的参数 (ex. "eth0")



udp:<local_port>:<remote_host>:<remote_port>



使用UDP套接字来完成与远端设备接口的连接


<local_port>
本地需要侦听的接口.


<remote_host>
你需要连接的接口在哪台主机上


<remote_port>
你想去连接的接口.



(ex. "1000:somehost:2000" and "2000:otherhost:1000" on the other


side)



tcp_cli:<host>:<port>


TCP
连接的客户端.


<host>
服务器的IP地址.


<port>
用于连接的接口.



tcp_ser:<port>


TCP
连接的服务器端.


<port>
侦听的接口.



null


虚拟的网络接口,用于测试和debug,没有参数



虚拟桥接参数
**************

虚拟桥接参数,用于硬件模拟的实例之间模拟出一个虚拟的共享网络环境

任何一个硬件模拟实例都可以担当虚拟的网桥.

虚拟桥接的配置表示例(使用-b参数),如下:

interface_name:netio_type[:netio_parameters]


Example:

# Connection to instance "I0"
I0:udp:10000:127.0.0.1:10001

# Connection to instance "I1"
I1:udp:10002:127.0.0.1:10003

# Connection to instance "I2"
I2:udp:10004:127.0.0.1:10005

如果你想运行虚拟桥接,那么就必须先打开I0连接的那个设备

dynamips ios.bin -p 1:PA-FE-TX -s 1:0:udp:10001:127.0.0.1:10000



虚拟以太网交换机
***********************

虚拟以太网交换机,用于硬件模拟的实例之间模拟出一个虚拟的交换网络环境
.这个交换机支持access和trunk链路(802.1Q).ISL目前并不被支持,它将会在以后发布的版本中得到支持.

任何一个硬件模拟实例都可以担当虚拟的交换机.

虚拟桥接的配置表示例(使用-E参数),如下:



IF:interface_name:netio_type[:netio_parameters]


1) Configuring an Access Port

syntax: ACCESS:interface_name:vlan_id

2) 配置一个使用DOT1Q封装的trunk端口

syntax: DOT1Q:interface_name:native_vlan

Native VLAN 不打tag标签,在CISCO的设备上,默认的native VLAN是VLAN1

下面是一个虚拟以太网交换机配置文件的例子:

IF:E0:udp:10000:127.0.0.1:10001
IF:E1:udp:10002:127.0.0.1:10003
IF:E2:gen_eth:eth0

DOT1Q:E0:1
ACCESS:E1:4
DOT1Q:E2:1


虚拟ATM交换机
******************
任何一个硬件模拟实例都可以担当虚拟的ATM交换机

ATM交换机虚拟配置文件的例子 (使用-a参数):

# Virtual Interface List
IF:A0:udp:10001:127.0.0.1:10000
IF:A1:udp:10002:127.0.0.1:10003
IF:A2:udp:10004:127.0.0.1:10005

# VP connection between I0 and I1
VP:A0:10:A1:20
VP:A1:20:A0:10

# VP connection between I0 and I2
VP:A0:11:A2:30
VP:A2:30:A0:11

# VC connection between I1 and I2
VC:A1:5:2:A2:7:3
VC:A2:7:3:A1:5:2

在本例中,我们有三个虚拟的接口:A0、A1和A2。它们的排列顺序和接口的定义方式相似。

IF:interface_name:netio_type[:netio_parameters]


你可以来做VP和VC的交换:

1) VP switching

syntax: VP:input_if:input_vpi:output_if:output_vpi

2) VC switching

syntax: VC:input_if:input_vpi:input_vci:output_if:output_vpi:output_vci


在一个dynamips实例上测试你的ATM交换机
*********************************************************

虚拟ATM交换机的配置文件 ("atm.cfg"):

IF:A0:udp:10003:127.0.0.1:10001
IF:A1:udp:10004:127.0.0.1:10002

# a0/vpi=1/vci=100 connects to a1/vpi=2/vci=200
VC:A0:1:100:A1:2:200

VC:A1:2:200:A0:1:100

调用dynamips:

./dynamips -p 1:PA-A1 -s 1:0:udp:10001:127.0.0.1:10003 \

-p 2:PA-A1 -s 2:0:udp:10002:127.0.0.1:10004 \


-a atm.cfg IOS.BIN


IOS configuration:

ip cef
ip vrf test

rd 1:1


route-target both 1:1

int a1/0

no shut

int a1/0.2 p

ip addr 1.1.1.1 255.255.255.0


pvc 1/100

interface a2/0

no shut

interface a2/0.2 p

ip vrf forwarding test


ip addr 1.1.1.2 255.255.255.0


pvc 2/200

!

# ping 1.1.1.2
!!!!!


虚拟FR交换机
**************************
# Virtual Interface List
IF:S0:udp:10001:127.0.0.1:10000
IF:S1:udp:10002:127.0.0.1:10003

# DLCI switching between S0 and S1
VC:S0:200:S1:100
VC:S1:100:S0:200

在这个例子中,我们用两个虚拟的接口,S0和S1。它们的排练顺序和接口的定义方式相似。

IF:interface_name:netio_type[:netio_parameters]


DLCI交换的语法:


VC:input_if:input_dlci:output_if:output_dlci

posted on 2008-04-27 15:46  岌岌可危  阅读(2052)  评论(0编辑  收藏  举报