首页 > 学习园地 > Dynagen + Dynamips 使用说明

Dynagen + Dynamips 使用说明

2008年3月22日

===========  Dynagen + Dynamips 使用说明  ===========

(http://wandering997.ycool.com/post.2949257.html)

作者:Wandering   (建议使用字体: Courier New)

一、软件介绍

1、Dynamips

http://www.ipflow.utc.fr/blog/

Cisco路由器模拟软件,支持17xx、26xx、36xx、7200等Cisco路由器系列。
它是在计算机上模拟路由器硬件,并在虚拟路由器中运行真实的IOS。
因此,从逻辑上看用户面对的就是真正的Cisco路由器。

2、Dynagen

http://dynagen.org/

一款基于字符界面的、使用Python开发的Dynamips管理前端,也就是说可以通过它更好
地使用Dynamips。Dynagen通过更友好的操作简化了Dynamips的配置和网络拓朴的实现。

3、WinPcap

http://www.winpcap.org

用于实现虚拟路由器与本地网卡的桥接。

二、Dynagen使用

1、安装

安装前需要下载3个软件:WinPcap、Dynagen、Dynamips(可选,建议使用最新版本)

首先安装WinPcap,所有安装项均使用默认配置即可。
其次安装Dynagen,默认安装即可。
最后检查Dynamips官方网站下载的程序版本与Dynagen集成的Dynamips程序版本,
建议使用最新版本的Dynamips程序。

我的个人配置习惯:

   a) 更改默认telnet程序 (C:\Program Files\Dynamips\dynagen.ini)
      +—————————————————–
      |  …
      |  telnet = start C:\windows\system32\putty.exe -telnet %h %p
      |  …
      +—————————————————–
   b) 建立d:\ios目录,专门存放IOS映像。
   c) 建立d:\cfg-net目录,专门存放各种.net文件。
   d) 针对不同IOS映像文件计算主机使用的idlepc值。
   e) 获取本地网卡设备ID。
   f) 更新已有.net文件的idlepc值和本地网卡设备ID。

2、初始化idlepc参数

2.1) 运行一个路由器实例,这需要事先编辑一个bat文件,请见下面示例。

   例一:3640的镜像启动bat文件
   +—————————————————–
   | pause
   | “C:\Program Files\Dynamips\dynamips” -P 3600 -t 3640 -r 128 -X D:\ios\c3640-jk9o3s-mz.124-7a.img
   | pause
   +—————————————————–

   或

   +—————————————————–
   | pause
   | “C:\Program Files\Dynamips\dynamips” -P 3600 -t 3640 -r 128 -p 0:NM-4T -p 1:NM-4E -X D:\ios\c3640-jk9o3s-mz.124-7a.img
   | pause
   +—————————————————–

   例二:7200的镜像启动bat文件
   +—————————————————–
   | pause
   | “C:\Program Files\Dynamips\dynamips” -t npe-400 -X D:\ios\c7200-jk9o3s-mz.124-12.img
   | pause
   +—————————————————–

   例三:2600的镜像启动bat文件
   +—————————————————–
   | pause
   | “C:\Program Files\Dynamips\dynamips” -P 2600 -X -r 96 -p 1:NM-16ESW .\c2600-adventerprisek9-mz.124-10a.img
   | pause
   +—————————————————–

2.2) 登录路由器,当出现“router>”提示符后,按下“Ctrl+]”,再按“i”,稍等一会就会出现idlepc的运算结果,如

   +—————————————————–
   | Please wait while gathering statistics…
   | Done. Suggested idling PC:
   |    0×81538008 (count=64)
   |    0×805246fc (count=75)
   |    0×81adf56c (count=45)
   |    0×8051ffac (count=29)
   |    0×8051ffc0 (count=51)
   | Restart the emulator with “–idle-pc=0×81538008″ (for example)
   +—————————————————–

   选择count值最大的结果作为本机的idlepc值,以3640为例:

   +—————————————————–
   | [[3640]]
   | image = D:\ios\c3640-jk9o3s-mz.124-7a.img
   | idlepc = 0×805246fc  /*计算结果中count最大值对应idlepc*/
   | …
   +—————————————————–

   
3、使用本地网卡通信

运行 Dynagen 安装后出现的批命令 Network device list.cmd ,找到本地网卡的设备ID。
形式为 NIO_gen_eth:\Device\NPF_{50FBC283-9098-434E-99FF-FBDB1892247E}

将虚拟路由器的接口与本地网卡桥接,以3640为例:

   +—————————————————–
   | [[ROUTER r1]]
   |    model = 3640
   |    console = 3001
   |    f0/0 = NIO_gen_eth:\Device\NPF_{50FBC283-9098-434E-99FF-FBDB1892247E}
   | …
   +—————————————————–
   
运行虚拟路由器实例,可以发现f0/0自动启用,如果本地网络有可用的DHCP服务器,
f0/0会自动获得IP地址,可以通过 show int f0/0 查看IP。

如果没有DHCP,则可以为 f0/0 手工配置IP地址。

4、设计网络拓朴(.net文件)

下面,以一个.net实例进行说明

#
# Legend:   ( Router )  [ Switch ]
#
# Topology:
#
#     ( r1 )               ( r2 )               ( r3 )
#        |                    |                    |
#        |-s1/0———-s1/1-|                    |
#        |-f3/0———-f3/2-|                    |
#        |-f3/1———-f3/3-|                    |
#        |                    |-s1/0———-s1/1-|
#        |                    |-f3/0———-f3/2-|
#        |                    |-f3/1———-f3/3-|
#        |-f0/0–Local NIC    |                    |
#

autostart = False
ghostios = True

[localhost]
   
    [[3640]]
        image = D:\ios\c3640-jk9o3s-mz.124-7a.img
        idlepc = 0×6042bdb4
        ram = 96
        slot1 = NM-4T
        slot2 = NM-4E
        slot3 = NM-16ESW
   
    [[ROUTER r1]]
        model = 3640
        console = 3001
        f0/0 = NIO_gen_eth:\Device\NPF_{50FBC283-9098-434E-99FF-FBDB1892247E}
        s1/0 = r2 s1/1
        f3/0 = r2 f3/2
        f3/1 = r2 f3/3
   
    [[ROUTER r2]]
        model = 3640
        console = 3002
        s1/0 = r3 s1/1
        f3/0 = r3 f3/2
        f3/1 = r3 f3/3
   
    [[Router r3]]
        model = 3640
        console = 3003

5、运行虚拟路由器

5.1) 运行虚拟路由器的步骤是:
     A. 运行 Dynamips Server.bat (见Dynagen开始菜单或安装目录)
     B. 运行 .net 文件,正常启动后会出现一个基于命令行控制台窗口
     C. 在控制台通过各种命令实现路由器的启动、关闭、登录等操作
5.2) Dynagen安装后会自动关联 .net 文件,因此直接运行 .net 文件就可以执行拓朴。
5.3) 在 .net 文件运行产生的控制台上,输入 ? 或 help 可以获得命令帮助。
5.4) 常用命令
     A. start r1        启动路由器R1,不区分大小写
     B. start r1 r2     同时启动路由器R1和R2
     C. telnet r1 r2    登录R1和R2
     D. reload r2       重启R2 (Dynamips虚拟的路由器自身不能通过reload重启)
     E. stop r2         关闭R2
     F. stop /all       关闭所有路由器

6、其它说明

6.1) 详细阅读2个手册:Dynamips的README-x.x.x.txt、Dynagen的Tutorial(HTML)
6.2) 在我的不完全测试中得出的结论是,如果要运行BGP,那么至少需要128M内存。
6.3) 通过不断的实验和阅读 (Dynagen, Dynamips) 文档,我发现文档中已有的一个重
     要信息,即运行2600 IOS文件时一定要将bin文件解压才能正常运行。
     Dynagen Tutorial中的原谅如下:
     * Note that currently imgs for 2600 routers must be uncompressed to work with Dynamips.

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

小 漏 学习园地 ,

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.