36
GNS3 手册 Version 0.3.1 beta (相应英文手册的部分内容来自 Greg Anzelli Dynagen 教程) by Longbow 2007-12-16

GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

GNS3 手册 Version 0.3.1 beta

(相应英文手册的部分内容来自

Greg Anzelli 的 Dynagen 教程)

by Longbow

2007-12-16

Page 2: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

目 录

译序................................................................................................................................3 简介................................................................................................................................4

关于Dynamips ........................................................................................................4 关于Dynagen ..........................................................................................................4

GNS3 的安装.................................................................................................................5 IOS 映像 .......................................................................................................................5 资源利用问题................................................................................................................6 配置Dynamips Preference .............................................................................................7

终端命令示例:.....................................................................................................8 运行一个实验..............................................................................................................10

设计模式(design mode)........................................................................................10 仿真模式(emulation mode) ..................................................................................12

使用控制台..................................................................................................................13 计算Idle-PC值 .............................................................................................................15 使用Frame Relay(帧中继)设备 .............................................................................17 与真实网络通信..........................................................................................................19 使用Ethernet交换机 ....................................................................................................21 使用Hub.......................................................................................................................22 WIC模块......................................................................................................................23 Client/Server和多服务器操作 ....................................................................................23 内存使用优化..............................................................................................................25 分组捕获......................................................................................................................26 存储、加载网络拓扑..................................................................................................28 其他的命令/特性 ........................................................................................................31 GNS3 支持的网络硬件...............................................................................................31

Page 3: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

译序

Dynamips作为一款十分优秀的Cisco路由器模拟软件,远比Boson NetSim更加真

实可信。Boson NetSim是对IOS命令行的模拟,而Dynamips是通过在计算机中构

建运行IOS的虚拟机来真正运行IOS实现对Cisco路由器的模拟。

Gynagen 是一种基本文本的 Dynamips 前端系统,给初学者使用 Dynamips

时造成了一定程度的不便和困难。当前,如果对 Dynamips 非常熟悉,无须任何

前端系统就可以很好地进行相关模拟。就像一个用户可以在命令行中实现在图形

界面中完成的所有任务一样。

GNS3的推出在一定程度上解决了Dynamips不如Boson NetSim易用的问题,

受到了 Dynamips 初学者的欢迎。Dynamips 的图形化前端系统除了 GNS3 外,还

有 GynamipsGUI。但 GNS3 除了像 GynamipsGUI 能够可视化地设计实验网络拓

扑外,还可以直接利用 GNS3 完成相关的模拟实验。因此,将 GNS3 看作一种基

于 Dynamips 的 Cisco 路由器集成模拟环境并不为过。

由于译者接触Dynamips、Dynagen和GNS3 的时间不长,并且将GNS3(0.3.1)

文档翻译成中文的工作进行得十分仓促,译文中难免存在错误,敬请谅解。欢迎

大家提出宝贵意见:[email protected]

Longbow

2007-12-16

Page 4: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

简介

GNS3 是一个设计网路拓扑并运行模拟的图形化 Cisco 路由器模拟器。当前,

GNS3 支持 Cisco IOS 路由器、ATM/Frame Relay/Ethernet 交换机和集线器(hub)。利用 GNS3,通过设置可以将实际的网络连接到虚拟的网络中。

GNS3 基于 Dynamips 和 Dynagen 的一部分功能实现上述功能。

关于 Dynamips

Dynamips 是法国人 Christophe Fillot 编写的 Cisco 路由器模拟器。可以仿真

Cisco1700、2600、3600 和 7200 系列路由器的硬件平台,运行其 IOS 映像。Chris自己如下描述 Dynamips:

这种仿真器对于下述场合很有用: ※ 使用真实世界中的软件作为训练平台。它可以帮助你熟悉 Cisco 的网络设

备,因为 Cisco 是网络技术的世界领先厂商。 ※ 测试和验证 Cisco IOS 的(新)特性。 ※ 检测将要部署到真实的网络设备中的配置。 当 然 , Dynamips 没 有 办 法 替 代 真 正 的 路 由 器 。 对 于 希 望 通 过

CCNA/CCNP/CCIE 认证的人和 Cisco 网络的网络管理人员来说,Dynamips 只是一种补充工具而已。

尽管 Dynamips 提供了一种简单的虚拟交换机,但它无法仿真 Catalyst 交换

机(虽然 Dynamips 能够仿真 NM-16ESW)。

关于 Dynagen

Dynagen 是 Greg Anuzelli 开发的一种基于文本的 Dynamips 前端工具,它提

供了 GNS3 与 Dynamips 进行交互的 OOP API。GNS3 还使用了 Gynagen 的类 INI格式的配置文件,集成了 Dynagen 的控制台(基于命令行 CML 的管理界面)以允

许用户对网络设备进行列表,暂停和重新启动设备实例,确定和管理 Idle-pc 值

以控制对 CPU 资源的占用,执行分组捕获等多种功能。 如果你对本文档存在某种程度的困惑,下面一些重要的网络链接将非常有帮

助:

Page 5: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

GNS3:http://www.gns3.net/Dynamips: http://www.ipflow.utc.fr/index.php/Cisco 7200 Simulatior Dynamips Blog: http://www.ipflow.utc.fr/blogDynagen: http://dyna-gen.sourceforge.net/DNS3/Dynamips/Dynagen问题: http://www.ipflow.utc.fr/btsHacki的Dynamips/Dynagen/GNS3 论坛: http://7200enu.hacki.at/index.php

GNS3 的安装

GNS3 可以运行 Windows、Linux 和 Mac OS X 等操作系统上。但如果你想

从源文件开始安装 GNS3,则需要下述软件的支持(即在安装 GNS3 之前需要在操

作系统上预先安装下属软件): ※ Qt>=4.3,可在http://trolltech.com/developer/downloads/qt/index下载。 ※ Python >=2.4,可在http://www.python.org下载。 ※ Sip>=4.5 , 如 果 需 要 编 译 PyQt 的 话 。 可 在

http://www.riverbankcomputing.co.uk/sip下载。 ※ PyQt>=4.1,可在http://www.riverbankcomputing.co.uk/pyqt下载。 为了方便安装,GNS3 制作了包括 Winpcap、Dynamips 和 GNS3 编译版本

的一个 all-in-one 安装包,无须单独安装 Python、PyQt 和 Qt。 Window 用户需要安装 all-in-one 安装包,它提供了在本地或远程计算机中运

行 GNS3 所需的除 IOS 映像文件外的所有东西。 Linux 用户需要下载 Dynamips 并将其解压到合适的目录下。安装 GNS3 所

需的相关环境,然后才能运行 GNS3。用户也可以尝试 Linux 下的一个 GNS3 可

执行版本,不用单独安装 Python、PyQt 和 Qt。 说明:在 RedHat 或 Fedora 系统下运行 Dynamips,如果出现问题,请参考

Dynamips FAQ Item #2。 截止到现在,Mac OS X 的用户需要手工编译 GNS3 所需的环境,随后将发

布一个可执行版本。

IOS 映像

Dynamips 运行真正的 Cisco IOS 映像。关于如何获得 IOS 映像,Dynamips

Page 6: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

FAQ 中如是说:

能提供一份 Cisco 7200 路由器的 IOS 映像(image)给我吗? 不,由于存在版权问题,我不能分发 IOS 映像。你需要自己找 IOS 映像,如

果你是 Cisco 的客户则不成任何问题。 (译者注:南京工大瑞普ftp://ciscoftp.njut.edu.cn中的IOS非常全。用户名:edurainbow 口令:cisco)

在 Windows 中,虽然可以将 IOS 映像保存在任意目录中,但将 IOS 映像保

存在 C:\program files\dynamips\images 中对于运行 简单的实验(译者注:指

Dynamips 的 简版实验)来说更合适。 Cisco IOS 映像文件通常经过了压缩。虽然经过压缩的 IOS 映像文件在

Dynamips 中能够正常工作,但系统启动时需要进行解压缩,启动过程变得非常

慢。因此,建议提前将 IOS 映像文件解压缩。在 Linux/Unix/Cygwin 中可以利用

“unzip”工具解压缩 IOS 映像文件: Unzip –p c7200-g6ik8s-mz.124-2.T1.bin > c7200-g6ik8s-mz.124-2.T1.image

进行解压缩时可能会遇到一个警告信息,但可以不用理会。 Window 下,可以利用 WinRAR 将 IOS 文件解压缩。 注意:C2600 的 IOS 必须首先被解压缩才能在 Dynamips 中使用。 在 GNS3 中使用的 IOS 映像 好提前在 Dynamips 中提前测试。

资源利用问题

为了获得较好的仿真性能(更快的速度),Dynamips 需要使用大量的 RAM 和

CPU 处理能力等资源。在真正的 7200 路由器中运行 IOS 需要 256MB 的内存。

在 Dynamips 中如果为一个 C7200 虚拟路由器分配 256MB 内存,则操作系统将

真正分配 256MB 的物理内存给虚拟的路由器。另外,Dynamips 将为每个虚拟路

由器实例分配 64MB 的内存用作 JIT 转换缓存。因此,操作系统将为一个 IOS 映

像实例分配 256+64=320MB 的内存。一般情况下,计算机的内存容量比较小。

默认情况下,Dynamips 利用内存影射虚拟路由器内存文件。在 Dynamips 的工作

目录下,可以发现一个大小等于虚拟路由器内存的临时 ram 文件。操作系统将正

在使用的虚拟路由器内存影射文件调入内存进行缓存。 如果你的计算机内容容量很大,可以在 IOS 路由器的高级设置中取消“Use

Page 7: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

mmap”选项。在 GNS3 设计模式(design mode)中选择一个路由器,右键单击,

选择“Configure””。如下图所示:

Dynamips 会消耗大量的 CPU 处理能力,原因在于 Dynamips 一条指令一条

指令地仿真路由器的 CPU。另外,仿真开始时 Dynamips 无法知道虚拟路由器的

CPU 何时处于空闲,何时进行有效的工作。因此,Dynamips 象执行真正工作的

指令一样执行构成路由器 IOS 空闲例程的所有指令。但是,一旦运行了某个给定

IOS 映像的“idle-PC”工具,CPU 的利用率将大幅下降。后面有相关内容的详细

情况。

配置 Dynamips Preference

为了使用 GNS3 中的 Dynamips,必须配置 Dynamips 的工作路径(working directory)和起始(基础)端口(base port)。Hypervisor 将使用这些配置来装载.net 文件(译者注:.net 文件也叫网络文件,就是网络拓扑的描述文件。.net 文件中包含

Dynamips进行模拟实验的网络设备及其互连信息。如果你对Dynamips非常熟悉,

无须利用 GNS3,或者 DynamipsGUI 等图形化的 Dynamips 前端工具,而是利用

Notepad.exe 就可以构建实验网络拓扑)。在 GNS 的 Edit 菜单中选择参数配置

(Preferences),将出现如下窗口。

Page 8: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

其中:工作目录是保存 Dynamips 运行时产生的大量文件的目录。这些文件

包括路由器的 NVRAM、bootflash、logfile 和一些其他文件。 选项: ※ 从仿真模式转换到设计模式时,“Automatically delete old files generated by

Dynamips”将删除像路由器的 NVRAMs 这样的陈旧文件。 ※ “Enable IOS ghost feature”将使用或禁用 Dynamips 的 IOS ghost 特性(关

于 ghost 特性,参见后面内容)。

为了连接到虚拟路由器的控制台(consoles),必须配置终端(terminal)命令。 GNS3 提供了缺省的终端命令,当然用户也可以订制。GNS3 中使用如下的

命令替换:

※ %h=host ※ %p=port ※ %d=device name

终端命令示例:

※ Window 系统: TerraTerm SSH 用户:c:\program files\TTERMPRO\ttssh.exe %h %p /W=%d /T=1 PuTTY 用户:start c:\program files\PuTTY\putty.exe –telnet %h %p SecureCRT 用户:start c:\program files\SecureCRT\SecureCRT.exe /script c:\program

files\dynamips\securecrt.vbs /arg %d /T /telnet %h %p & sleep 1

Page 9: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

※ Linux 系统 Gnome 用户:gnome-terminal –t “+name”” –e ‘telnet” + host +” ”+str(port)+” ‘ >

/dev/null 2>&1 &

Hypervisor Managers 控制 GNS3 管理程序(hypervisors)的运行和管理,用户

无须手工启动管理程序。当在一台计算机中运行多个 IOS 实例(译者注:实验中

使用了多个不同 IOS 的设备)时,Hypervisor Manager 利用负载均衡“ load balancing”技术将多个 IOS 实例在多个管理程序中分摊,从而可以控制每个管理

程序进程可以使用的 大内存空间。 下面是一个 Hypervisor Manager 如何工作的例子: 运行 5 个 IOS 实例,每个使用 256MB 的内存,通过配置可以设置每个

hypervisor 可以使用的 大内存为 512MB。当启动实验时,Hypervisor Managers将自动创建 3 个管理程序进程。创建管理程序进程的数量按下面的公式计算:

管理程序进程的数量=Round(256*5/512)(向上取整) Hypervisor Manager 将前两个 IOS 实例赋予第一个管理程序进程,将下两个

IOS 实例赋给第二个管理程序进程,将 后一个 IOS 实例赋给第三个管理程序进

程。

Dynamips 参数选项(preferences)中还有两个设置项目。 “UDP incrementation”告诉 Hypervisor Manager 如何为所创建的管理程序进

程设置 UDP 端口号码。(如果 Dynamips 参数中 UDP incrementation 为 100,同时

Dynamips 的 Base UDP 设置为 10000,则 Hypervisor Managers 创建的三个管理程

序进程中的第一个的 UDP base 端口号为 10000,第二个进程的 UDP base 端口号

Page 10: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

为 10100,以此类推。) 注意:关于 UDP 问题的更多信息可以参考“Client/Server and Multi-Server Operation”部分

内容。

选项“Use the hypervisor manager when importing”用来控制 GNS3 如何加载

网络拓扑文件(.net)。如果选中该选项,并且网络拓扑文件(.net)中定义了在本地

计算机上运行 hypervisor,则 GNS3 认为这些管理程序进程需要由 Hypervisor Manager 负责启动。如果没有选中该选项,则管理程序进程被认作为外部的管理

程序进程,必须由用户手工启动。

运行一个实验

本节中将指导用户一步一步地运行一个包含三台路由器的实验。

设计模式(design mode)

默认情况下,GNS3 启动时工作在设计模式(design mode)。在设计模式中,

用户可以创建实验网络拓扑。实验网络拓扑的创建可以通过鼠标拖放操作完成。

即用户可以拖放操作将窗口左侧网路设备窗口(nodes types)中的节点(设备)到窗

口右上部分。

下一步:选择 Edit 菜单中的 IOS images and hypervisors 菜单项(或按下组合

键 CTRL+SHIFT+I) ,设置 IOS image 的存放路径,平台 platform、chassis(机架),并输入 IDLE PC 值。默认情况下,将使用集成的管理程序(GNS3 管理 Dynamips)

Page 11: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

运行 IOS 映像。

如果希望使用运行在其他计算机中的管理程序 (自己手工启动 ),可以

在”Hypervisor”标签页中进行设置。(译者注:Dynamips 允许多台计算机协作完成

路由器模拟实验) 关于 IOS 映像和管理程序的配置信息被保存在 gns3.ini 中。

注 意 : Windows 系 统 下 , gns3.ini 被 保 存 在 在 %APPDATA% 目 录 中 , 或 者

%COMMON_APPDATA%目录中。

一旦 IOS 映像被保存,便可以配置自己选择的节点。(右键单击一个节点,

选择”configure”)。

Page 12: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

如上图所示,可以选择 Routers,将某种配置应用到每台路由器;也可以选

择具体的路由器,进行某种具体的配置(如 R0)。 在节点配置中,可以选择路由器使用的 IOS,并配置诸如 startup-config、RAM

大小、路由器包含的模块插槽(slot)等多种信息。 接下来:在节点之间添加链路(选择菜单按钮中的”Add a Link”按钮,选择源

节点,然后选择目的节点)。当添加链路时,可以选择的链路类型包括 Ethernet、Serial 等。

通过下拉菜单,可以手工选择链路连接路由器使用的接口。如果手工选择接

口,需要配置路由器的 slot 选项。

注意:已经使用的接口被标记为绿色,未被使用的接口被标记为红色。

仿真模式(emulation mode)

按前面描述创建实验用的网络拓扑。按下“emulation mode”按钮可以进入

仿真模式。

Page 13: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

所创建的网络拓扑(及其相应的配置)将在管理程序(hypervisor)中创建。通过

右键单击某个节点(路由器)可以 Start/Stop/Suspend 某个 IOS 实例。如果启动了

某个 IOS,也就开启了相应路由器/交换机等网络设备的控制台会话。 当然,可以以此选择多个设备以便同时执行某个动作。

一旦通过控制台连接到路由器,可以为路由器的接口配置 IP 地址,并且“no

shut”它们。在仿真模式窗口右侧的 Topology Summary 中可以看到路由器之间的

连接关系。通过将鼠标悬停在链路上也可以看到链路两端连接路由器的接口。

使用控制台

注意:只能在仿真模式下才能使用 GNS3 的控制台(console)。

Page 14: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

在 Console 中,使用 help 命令可以查看 GNS3 所支持的命令。

键入 help command 或 command ?可以获得某个特定命令的帮助信息。如:

使用 stop 命令可以停掉某台虚拟路由器。Stop 命令的语法为: stop {/all | router1 [router2] …} 为了停掉某台路由器,键入 stop routername 使用 stop /all 可以停掉所有的网路设备

利用 start 命令可以启动路由器。start 命令的语法为: start {/all | router1 [router2] …}

Dynamips 中的虚拟路由器不支持 IOS 的 reload 命令。在 GNS3 中,可以使

用控制台命令 reload。GNS3 控制台命令 reload 执行的操作为:先是 stop,紧跟

着一个 start。使用 reload /all 命令可以重新启动所有的路由器。

Page 15: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

Suspend命令和 resume命令的语法类似于 stop和 start命令。只不过 suspend只是暂停某台路由器。

exit 命令停止并删除实验网络中的所有设备,并从仿真模式转换到设计模

式。如果在控制台中使用了 exit 命令,模拟也就随即停止了。

计算 Idle-PC 值

你可能已经注意到,进行前面的模拟实验时计算机的 CPU 利用率达到了

100%并且一直是这样。其原因是 Dynamips 并不知道实验虚拟路由器何时空闲,

何时正在做有益的工作。GNS3 控制台命令”idlepc”通过对正在运行的 IOS 映像

进行分析,得出 IOS 中的空闲循环 可能的代码点。一旦应用了 idlepc,Dynamips将在执行 IOS 空闲循环代码时使虚拟路由器进入睡眠状态,从而显著降低计算机

中的 CPU 处理能力消耗。但是,这样并没有降低虚拟路由器执行有益工作的能

力。 下面描述如何设置某 IOS 的 idle-pc 值。首先:在设计模式中创建一个路由

器,选择将 IOS 映像,然后转换到仿真模式。 启动路由器并 telnet 到该路由器。如果遇到 IOS 自动配置提示时,键入 no。

Page 16: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

等待网络设备的所有接口初始化完毕后,再等待一段时间以便路由器的启动

完全完成并进入空闲状态。如下图所示:

现在,切换到 GNS3 的控制台。输入 idlepc get routername。将看到正在收

集统计信息的消息,10 到 20 秒后会看到一个可能 idlepc 值的列表:

可能的 好结果值前被打上了一个星号(*)。输入 idlepc 可能值的序号,按下

Page 17: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

“OK”按钮。将看到 CPU 的利用率直线下降。如果是这样的话,就找到了该 IOS映像的一个好的 idlepc 值。

如果选择了某个 idlepc 值后 CPU 的利用率没有显著降低,需要尝试其他的

idlepc 值。输入 idlepc show routername 来显示前面确定的可能值的列表,选择

另一个值进行尝试,直到 CPU 利用率到了一个合理水平为止。 不同的 IOS 映像具有不同的 Idle-PC 值。一个 IOS 的不同版本的 Idle-PC 值

也不尽相同,甚至是相同的 IOS 版本,但具有不同特性的 IOS,其 Idle-PC 值也

不同。但是,好在 Idle-PC 的值与运行 GNS3 的计算机、操作系统或 Dynamips版本没有关系。

Dynamips 也有可能找不到某个 IOS 映像的 Idle-PC 值,或者是找到的不起什

么作用。此时, 好重复上述过程。 后还不行的话,则说明你的运气实在太坏! 找到了能够工作的 Idle-PC值后,记下代表 Idle-PC的十六进制数。选择GNS3

的 Edit 菜单的 IOS images and hypervisors 菜单项。双击 IOS 映像,输入刚记下

来的 Idle-PC 值。这种操作对某个 IOS 映像只需配置一次。每次打开 GNS3,设

置好的 Idle-PC 值将自动被应用。

使用 Frame Relay(帧中继)设备

GNS3 提供了对一种集成 Frame Relay 交换机的支持。看一个帧中继实验:

Page 18: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

在上面的网络拓扑中,将三台路由器的串口分别连接到 Frame Relay 交换机

F0 的 1、2 和 3 号端口。

在 Frame Relay 交换机 F0 的节点配置中,配置端口 1 的 DLCI 为 102,将和

端口 2 的 DLCI 201 建立对应关系。其他两个条目的配置方法类似, 后在三个

路由器之间建立全连接的 PVC。. (译者注:帧中继的 DLCI 如同以太网中的 MAC 地址,是 Frame Relay 设备

接口的链路层地址) 注意:Dynamips 是利用 ANSI 附件 D 的 LMI 类型仿真 Frame Relay 交换机,

而不是 Cisco。 启动实验。

Page 19: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

在控制台中输入 list 命令可以看到 Frame Relay 交换机 F0,但无法 stop、start、

suspend,或是 resume 它。 ATM 交换机可以按上述方法进行配置。

与真实网络通信

Dynamips 可以将真实的主机网卡与虚拟路由器进行桥接(bridge),从而使虚

拟路由器可以与真实的网络进行通信。 Linux 系统中,虚拟路由器和主机的桥接通过 NIO_Linux_eth 网络输入输出

NIO 描述符实现。 为了使用 Dynamips 的这种特性,在 GNS3 中必须创建并配置叫做”Cloud”

的设备。一个 Cloud 代表外部连接。在下面的例子中,添加 NIO_linux_eth1 NIO:

然后,可以将 Cloud 与某个路由器,或是某台 Ethernet 交换机相连。下面的

图显示了将路由器的 e0/0 接口与主机接口 eth1 进行桥接的步骤。因此,从虚拟

路由器 e0/0 离开的分组将通过 eth1 接口输出到真实的网络中,从 eth1 进入的分

组将被导入虚拟路由器。

Page 20: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

Window 系统中,Winpcap 库被用来实现桥接。Window 中的网络接口(网卡

参数)格式要比 Linux 中的复杂。GNS3 可以借助 Dynamips 罗列所有可能接口程

序的帮助下自动进行探测。如果这种探测不工作,可以利用安装 GNS3 时创建的

“Network Device List”快捷方式完成网卡参数的探测:

本例将利用网卡\Device\NPF_{B00A38dd-F10B-43B4-99F4-B4A078484487}

来桥接我本地的 Ethernet 网卡。但需要在配置 Cloud 设备时在 Generic Ethernet NIO 文本框中输入上述字符串。

Page 21: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

使用 Ethernet 交换机

Dynamips 同样提供了对一种支持 802.1Q VLANs 的集成虚拟以太交换机的

支持。看下面的实验:

交换机的端口 1(与路由器 R1 的 e0/0 相连)是 VLAN1 的 access port。端口

2 同样是个 access 端口。端口 4 是个 trunk 端口。

Page 22: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

GNS3 中,该交换机 VLAN1 中有 8 个 access port。 同样,也可以将交换机的某个端口与真实网络世界相连,这可以通过将交换

机的某个端口与 Cloud 设备相连来实现。本例中将 VLAN1 的 Trunk 端口与计算

机的 eth1 端口相连。

使用 Hub

GNS3 中可以使用 Hub。Hub 设备是一种基本上无需配置的设备,用户只需

指定 Hub 的端口数即可。下面是个使用 Hub 的例子:

在这个例子中,R0 和 R1 利用 hub 共享通信介质。

Page 23: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

WIC 模块

Dynamips 0.2.8-RC1 增加了对几种 WIC 模块的支持,即 C1700、2600 和 3700路由器平台上使用的 WIC-IT 和 WIC-2T,以及 C1700 路由器平台可以使用的

WIC-1ENET。 可以参考 GNS3 英文手册 Hardware Currently Emulated 部分的内容,了解

GNS3 对特定网络模块是否支持的信息,以及每种路由器平台上支持的 WIC 模

块数量。 备注:

1 WIC 模块就是广域网接口模块。 2 目前,GNS3 还不支持 1700 平台上的 WIC 模块。

Client/Server 和多服务器操作

GNS3 所使用的 Dynamips“Hypervisor”是个 TCP/IP 通信管道。因此,GNS3可运行在与运行 Dynamips 不同的计算机上。通过手动配置“IOS images and Hypervisor”的 hypervisor 实现上述功能。

上图中指定在某个“remote-host”运行的 Hypervisor 进程监听端口 7210。同

时,也可以指定管理程序进程存储运行 Dynamips 的主机所产生的所有文件的工

作路径。注意,目录分隔符在不同的系统中可能不同。 注意:指定 Host 时可以输入 Host 的 DNS 名字,或者是 IP 地址。 “Base UDP”是 Dynamips 用来创建网络拓扑中节点间连接所使用的 UDP

Page 24: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

起始端口号。Dynamips 为每条连接的每一端使用一个不同的 UDP 端口。例如:

三台路由器全连接的实验中,将使用起始端口号为 10000 的如下六个 UDP 端口。 在计算机中可以利用 netstat 命令显示 Dynamips 创建的节点和 UDP 端口号

情况。

现在假设我们需要运行由运行在同一台计算机上的两个管理程序进程

(hypervisor)分别创建的两个 IOS 映像。配置时为两个 hypervisor 选择了相同的起

始 UDP 端口号。则每个管理程序进程都尝试使用某个 UDP 端口号(如,10000)作为某条连路一端的连接,这显然将导致冲突。因为 Dynamips 将两个 hypervisor看作是不同的服务器,因而使用相同的 UDP 端口并不违规。当在一台计算机中

运行多个 Hypervisors 时会导致端口冲突。 “Base Console”为 hypervisor 打开某个 IOS 控制台时需要使用的 TCP 起始

端口号。这个端口号一般不会产生冲突,因为 GNS3 利用下面的公式为每个路由

器选择控制台端口,因此可以放心使用: 控制台端口=base-port + router id

hypervisor 配置完成后,可以将 hypervisor 与 IOS 映像进行绑定(binding)。选择 IOS 映像,取消掉“User the hypervisor mananger”选项,然后在 hypervisor列表中选择自己的管理程序进程。随后,使用该 IOS 映像的所有路由器均能够与

选择的管理程序进程进行通信。

Page 25: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

注意:需要检查计算机中所运行的防火墙软件是否允许 Dynamips 的流量通

过。流量包括通过服务器端口(默认为 TCP 7200)、控制台端口(TCP 2000/2001/.....)以及网络输入输入(NIO)连接所使用 UDP 端口传输的流量。

当实验中使用了 non-IOS 设备时,通过配置可以选择非 IOS 设备运行所使用

的 Hypervisor。如,通过下拉框可以选择一个 Ethernet 交换机运行所使用的管理

程序进程。

上例中,我们选择工作在端口 8000 上的名字为 saturn 的 Hypervisor 运行虚

拟交换机——以太交换机 S0。

内存使用优化

在前面的资源利用部分曾说明,模拟实验可能耗费大量的实际和虚拟内

存。 “ghostios”和 “sparsemem”选项就是用来分别用来解决实际内存消耗和

虚拟内存消耗问题的。 “ghostios”可显著降低在一台主机中运行使用相同 IOS 映像的多个路由器

实验时对实际内存的消耗量。 “ghostios”使主机在运行相同 IOS 映像的多台路

由器进行实验时,并不为每个路由器实例在自己的内存中存储和运行相同的 IOS映像,而是只存储和运行一份 IOS 映像供所有路由器使用。例如:如果有 10 台

路由器运行相同的 IOS 映像,IOS 映像的大小为 60MB,利用 “ghostios”可以

省掉(10-1)*60MB=540MB 的实际内存消耗。

Page 26: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

启用 “ghostios”的方法非常简单,在 Dynamips 的 preferences 中使

能 “ghostios”即可。其实,此特性在默认情况下是启用的,并被应用到了实验

中的所有路由器 IOS 实例上。 当使能 “ghostios”后,在路由器 NVRAM 文件所在的目录会发现名字类似

“c3660-ik9o3s-mz.124-10.image.ghost”的文件。该文件是包含共享内存区域的

nmap 映射的文件。 测量利用 “ghostios”所节省的主机内存需要一些技巧,原因是现代操作系

统复杂的内存管理机制。有兴趣的可以在 Hacki 论坛的 Uderstanding memory usage and RAM ghosting 文章中找到有用的信息。

“sparsemem”选项并不节省主机中的实际内存,而是降低路由器实例所耗

费的虚拟内存。而 32 位 Windows 等操作系统限制每个进程可以使用的虚拟内存

多为 2GB(32 位 Linux 中为 3GB)。例如:Windows 在运行 Dynamips 所需的

Cygwin 虚拟机、以及某些动态连接库空间等后,只留下了四个 256MB 虚拟路由

器运行所需的虚拟内存空间。利用 “sparsemem”特性,Dynamips 只为主机中正

在实际使用的路由器 IOS 分配虚拟内存空间,而不是为实验所分配的所有 RAM分配虚拟内存空间。通过“sparsemem”显然可以降低对虚拟内存的消耗,从而

使主机可以运行更复杂的网络拓扑进行实验。 如同“ghostios”一样,GNS3 的“sparsemem”特性默认也是启动的,并且

现在还没有办法来禁止“sparsemem”特性的应用。

分组捕获

Dynamips/GNS3 可以捕获虚拟 Ethernet、串行等接口上的分组并输出到文

件,供 tcpdump、Wireshark 等应用程序使用。 考虑串在一起的三台路由器,R1 和 R2 利用 Ethernet 连接互连,R2 和 R3

通过使用 HDLC 封装的点到点串行链路互连。 在 GNS3 的控制台可以输入 capture r1 f0/0 r1.cap,在 R1 的接口 f0/0 上捕获

分组并保存到文件 r1.cap 中。 启动 Wireshark,打开 r1.cap 可以实时观察流量的情况。

Page 27: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

分组捕获不断地将分组写入到输出文件中。如果从 R1 ping R2,在 Wireshark中点击“reload this capture file”按钮,将看到:

停止分组捕获,可在 GNS3 控制台中输入:

Page 28: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

no capture r1 f0/0 Gynamips/GNS3 同样可以捕获虚拟路由器串行接口的分组,但必须指定路

由器串行接口使用的封装标准,以便 Wireshark 了解如何对分组进行解码。例子

中,可选的封装方式有 Frame Relay、HDLC,或者是 PPP。在 R2 到 R3 的 HDLC链路上捕获分组,可以输入:

capture r2 s1/0 r2.cap HDLC 利用 Wireshark 打开 r2.cap,显示如下:

同样,输入 no capture r2 s1/0 可以停止分组捕获。 注意:在 GNS3 中可以同时捕获多个接口上的分组。

存储、加载网络拓扑

GNS3 可以存储、加载像 Dynagen 中类 INI 网络拓扑文件描述的实验网络拓

扑。这意味着 GNS3 中可以使用利用 GNS3 和 Dynagen 构造的网络拓扑。由于

GNS3 利用了 Gynagen,在 GNS3 中使用.net(网络文件)有两条限制: ※ 为了加载网络拓扑,必须在 GNS3 的 preference 中配置 Dynamips 路径; ※ 目前只能在仿真模式下保存、加载网络拓扑。(根据计划,未来的 GNS3

版本将允许在设计模式下保存网络拓扑)。 另外一个需要注意的问题是:GNS3 使用.net 文件的方式与 Gynagen 不同。

Page 29: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

例如:GNS3 中,所有的设置(RAM、ROM、NVRAM 等)被记录在.net 文件中的

device 的子节中,而不是像 Dynagen 在 default model 节中。GNS3 也是在 device子节中记录 idlepc 和 IOS 映像名字。

下面的例子中,我们创建了由三台 2610 路由器组成的网络,并在仿真模式

下进行了保存,配置了 2610 机架的一个默认 IOS 映像。

下面是在仿真模式下存储的网络文件(译者注:虽然网络文件的扩展名

为.net,其实是一个文本文件,可以利用记事本(notepad.exe)打开)。

Page 30: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

注意:通过 Dynagen 的相关教程可以了解.net 文件的格式等相关信息。

Page 31: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe

其他的命令/特性

下面罗列了一些可以在 GNS3 控制台中输入的命令。利用 command/?或

help command 可以获得关于某特定命令的帮助信息。 ※ import/export:export 可以将 NVRAM 中的配置输出到文本文件,import

可以将存贮在主机某文件中的配置信息输入到路由器的 NVRAM 中。 ※ push/save:与 import/export 很相似。只不过配置信息以 base64 格式存储

在网络拓扑文件中(在 configuration section 中)。使得可以通过一个文件保

存实验拓扑和相关路由器配置信息。 ※ filter:在某个接口上应用连接过滤条件。目前 Dynamips 所支持的过滤器

只有“freq_drop”一个。freq_drop 的作用是从每 y 个分组中丢弃其中的

x 个分组。 ※ send:向 Dynamips 发送原始的 hypervisor 命令。这些 hypervisor 命令是

关于 GNS3 如何与 Dynamips 通信的命令。这个命令一般情况下在开发

Dynamips 新特性时才会使用到。 ※ ver:输出 Dynagen 的版本号,以及 Dynagen 所连接的每个 Dynamips 实

例的版本号。 ※ hist:控制台命令历史信息。

GNS3 支持的网络硬件

本节内容来自 ggee 发表在 Hacki 论坛中的一个帖子。

Page 32: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe
Page 33: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe
Page 34: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe
Page 35: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe
Page 36: GNS3 手册jpkc.sdxiehe.com/wl/best/05zyxz/data/03xgrjxz/03mnq/GNS3/...GNS3 基于Dynamips 和Dynagen 的一部分功能实现上述功能。 关于Dynamips Dynamips 是法国人Christophe