设为首页 收藏本站
查看: 1788|回复: 0

[经验分享] 使用Dynamips + Dynagen构建你自己的Cisco网络实验室

[复制链接]

尚未签到

发表于 2018-7-21 14:34:22 | 显示全部楼层 |阅读模式
    0. 前言
  这篇文章介绍了如何使用Dynamips + Dynagen构建你自己的虚拟Cisco网络实验室。这篇文章将帮助你了解Dynamips和Dynagen的作用,介绍设置Dynagen的配置文件,指定虚拟设备之间的拓扑连接方式以及正确计算Idlepc值的方法。
  1. Dynamips简介
  Dynamips是由法国贡比涅科技大学的克里斯托弗·菲尔洛特(Christophe Fillot)编写的Cisco设备模拟器。Dynamips不同于传统的纯软件式模拟器,它模拟了多种型号的Cisco路由器的硬件平台,用户可以在模拟器中直接加载并运行真正的IOS镜像,这使得Dynamips可以成功模拟出99%以上的IOS功能,并且确保在绝大多数情况下得到的结果与真实设备的结果相同。
  Dynamips是一款最初在Linux平台上开发的开源软件。后来被成功迁移到了Windows和Mac OS X平台。Dynamips最开始仅能够模拟Cisco 7200路由器,现在已经可以模拟Cisco 1700/2600/3600/3700多种型号路由器。Dynamips最新版本是0.2.8-RC2,你可以在http://www.ipflow.utc.fr/blog/下载到最新版本的源程序和二进制编译包。
  最新版本的Dynamips更新于2007年10月,此后作者再也没有对该模拟器进行过更新。有迹象表明该项目目前已经被中止。
  注意:Dynamips从来没有实现过模拟交换机的功能。在模拟Cisco 3600等型号时,Dynamips可以模拟NM-16ESW模块来实现交换机的一小部分功能。NM-16ESW和真正的交换机在功能上还是有非常大的差距。
  注意:Dynamips仅仅模拟了相应路由器的“功能”,而并非“性能”,所以不要期望模拟器可以替代真实的设备。
  2. Dynagen简介
  Dynamips是一个纯粹的命令行程序。当我们需要模拟一个由多台设备组成的复杂网络时,纯粹的命令行配置会显著地增加配置复杂度。许多第三方团体或个人开发了各种Dynamips的前端程序来简化Dynamips的配置过程。其中最著名的前端程序是Dynagen。
  Dynagen通过类似INI文件格式的配置文件(后缀为.net)来定义Dynamips模拟设备的型号、参数,以网络的拓扑连接方式。Dynagen同样是一款开源软件,你可以在http://dynagen.org/下载到其最新版本。该软件最后一次更新于2008年4月,最新版本号是0.11。
  3. 安装Dynagen和Dynamips
  Dynagen开发组制作了针对不同操作系统的打包安装包,你可以在http://sourceforge.net/project/showfiles.php?group_id=160317下载到这些安装包。For Windows和For Mac OS X的安装包集成了最新版的Dynamips 0.8.2-RC2,所以你不需要再额外下载Dynamips。
  Dynamips依赖WinPcap这个著名的动态链接库,你可以从http://www.winpcap.org/下载。最新的版本是4.0.2。
  将Dynagen和WinPcap下载后,运行安装。安装过程非常简单,一路点击“下一步”就可以。两个程序的安装顺序没有要求,但是在成功安装WinPcap之前你无法正常使用Dynamips。
  4. 启动Dynamips Server
  Dynamips Server是整个Dynamips模拟器的核心,在开始模拟虚拟路由器设备之前必须首先启动Dynamips Server。在整个的模拟过程中Dynamips Server不能被关闭,否则所有正在运行的虚拟路由器也会立即被关闭。
  安装Dynagen后在桌面上会产生若干个快捷方式,双击“Dynamips Server”即可启动Dynamips Server。正常的结果应该是看到类似这样的一个窗口:

DSC0000.jpg


  建议:为了防止在实验过程中意外关闭Dynamips Server,建议你将该窗口最小化。切记:在实验过程中关闭该窗口会导致模拟器终止运行!Dynamips Server总是应该首先启动,最后关闭。 5. 准备IOS镜像文件和.NET配置文件  Dynamips Server成功启动后,我们就可以开始编写Dynagen的.NET配置文件设置虚拟设备的连接拓扑结构。你需要为模拟设备准备相应版本的Cisco IOS镜像文件,并将镜像文件放置在一个路径中没有中文的目录中。
  注意:Cisco IOS镜像文件受版权保护,未经授权不得复制、使用IOS镜像文件。
  接下来我们需要准备Dynagen需要的.NET配置文件。.NET配置文件是纯文本文件,所以你可以使用如记事本等程序创建和编写。不要使用写字板或Word之类的rich-text编辑器修改。.NET文件也必须放置在路径中没有中文的目录下。
  切记:Cisco IOS镜像文件和Dynagen的.NET配置文件必须放置在路径中没有中文的目录中,否则会导致模拟器出错。
6. 编写.NET文件  .NET文件有自己的一套语法,下边是一份配置样例:
  autostart = false
  model = 3640
  ghostios = true
  sparsemem = true
  [localhost]
  `3640`
  image = D:/c3640-jk9o3s-mz.124-10a.bin
  ram = 128
  >  slot0 = NM-4E
  slot1 = NM-4T
  `Router R1`
  e0/0 = ETHSW1 1
  `Router R2`
  s1/0 = FRSW1 2
  `Router R4`
  s1/0 = FRSW1 4
  `Router R5`
  e0/0 = ETHSW1 5
  s1/0 = FRSW1 5
  `Router R6`
  s1/0 = FRSW1 6
  e0/0 = R8 e0/0
  `Router R8`
  `Router R9`
  e0/0 = ETHSW1 9
  `FRSW FRSW1`
  5:502 = 2:205
  5:506 = 6:605
  2:206 = 6:602
  2:204 = 4:402
  `ETHSW ETHSW1`
  1 = access 15
  5 = dot1q 1
  9 = access 59
  开始的四行是全局配置参数。
  Autostart:指定是否所有虚拟路由器在Dynagen控制台启动后立即自动启动,这里推荐值是false,我们可以在控制台用命令按需启动以降低对计算机资源的无谓消耗
  Model:指定虚拟路由器的默认型号。尽管Dynamips可以模拟出多种型号的Cisco路由器,在功能丰富程度与资源消耗之间最平衡的一个型号就是3640。我个人推荐你模拟这个型号的路由器,无论是准备CCNA/CCNP/CCIE R&S/CCIE Sec任意一门考试都没有问题。
  Ghostios和sparsemem:这两个选项降低了模拟器对内存的需求。如果你的计算机内存少于1G,强烈建议你将这两个选项设置成true。如果你的计算机内存大约2G,可以将ghostios设置成false。打开这两个选项会轻微地降低模拟器的运行速度,但是考虑到对内存的节省,对于没有海量内存的计算机而言是值得的。
接下来的`3640`部分是对模拟路由器具体参数的指定。  Image:指定Cisco IOS镜像文件的路径,在Windows下不区分大小写。这里要注意不要把斜杠写反。
  Ram:指定每台虚拟路由器的内存。对于3640而言,128M是一个最合适的值。不同的路由器型号与IOS的组合对这个值都有有最低限制,因此不要随意降低这个值。
  Idlepc:这是Dynamips最重要的一个参数。如果这个参数设置不正确,即使模拟一台路由器,宿主计算机的CPU使用率也总是100%,即便一台高性能的计算机也无法顺利模拟3台以上的路由器。而一旦正确设置,即使两年前生产的笔记本电脑也可以轻松模拟高达8台路由器。
  计算Idlepc值的正确方法附在本文的最后。Idlepc值是对应IOS镜像文件的。也就是说,每个IOS镜像文件有自己固定的Idlepc值,一旦计算出有效的值,无论在哪一台计算机上,只要运行相同的IOS镜像文件这个值总是有效的。另外,每个IOS镜像文件可能有多个有效的Idlepc值,如果你按照正确的方法计算出了一个和别人都不一样的值,请放心使用。
  注意:Idlepc值的计算是Dynamips设置步骤中最复杂却最重要的一步。强烈建议你在正式开始实验项目前计算出正确的Idlepc值。不使用Idlepc值或者使用无效的Idlepc值会导致CPU长期持续工作在100%负载下,会对计算机的散热产生非常严重的影响。在夏季甚至会导致某些笔记本电脑死锁或烧毁!
  Slot:指定每个路由器模块插槽里的模块型号。Cisco 3640一共有4个slots,分别是slot0到slot3。你可以根据对路由器接口的需要在模拟路由器上添加不同的模块。虽然Dynamips能够模拟多种模块,但是最常使用的是NM-4E,NM-4T和NM-16ESW(如果你确实想模拟一台简化版的交换机)。NM-4E带有4个10M以太网接口,而NM-4T带有4个串行接口。将模块插在不同的slot中会导致不同的最终接口名。在上边的配置样例中,每台路由器的4个以太网接口分别是e0/0到e0/3,而4个串行口分别是s1/0到s1/3。
  最后就是生成每一台虚拟设备和指定虚拟设备之间的连接拓扑。
  在上边的配置样例中我们使用命令`Router Rx`创建了7台虚拟路由器,每台路由器拥有和`3640`部分定义完全相同的配置。这条命令中的字母是大小写区分的,即`router R1`并不会创建一台虚拟路由器R1,而是一条不存在的命令。接下来我们定义了每台虚拟设备是怎么连在一起的。例如在上边的配置样例中,R1的e0/0连接在虚拟以太网交换机ETHSW1的接口1,R2的s1/0连接在虚拟帧中继交换机FRSW1的接口2。
  虚拟以太网交换机和虚拟帧中继交换机通过`ETHSW xxx`或`FRSW xxx`命令创建。这两种虚拟交换机用户不能登录上去,也不能在运行时更改它们的配置。它们只是用来提供特殊的连接功能。在上边的配置样例中,我们在虚拟以太网交换机ETHSW1上定义了三个接口,其中接口1是access模式,分配给VLAN 15,接口5是trunking模式。虚拟以太网交换机仅支持802.1Q封装。我们在虚拟帧中继交换机FRSW1上定义了一系列的DLCI交换规则,例如接口5上的DLCI 502交换到接口2上的DLCI 205,接口5上的DLCI 506交换到接口6上的DLCI 605。
  注意:在编写拓扑连接规则时,不需要考虑线缆的类型问题(即不需要关心直通线与交叉线的区别),在使用串行连接时不需要考虑DCE的时钟问题,DCE由Dynamips自动模拟和分配时钟,所有的路由器都是DTE端。
  7. 开始模拟虚拟路由器
.NET配置文件编写完成后,将其放置在一个路径中没有中文的目录下。在Dynamips Server保持运行时双击该文件即可开始模拟路由器设备。如果.NET文件编写正确,双击后稍等即会出现类似下边的窗口:
DSC0001.jpg

  其中的“Network Successfully Started”表示之前你在.NET文件中所输入的命令是完全正确的。如果.NET文件中有任何语法或逻辑错误,相应的错误提示会出现。你必须修改所有的错误后才能开始配置模拟路由器。  这个弹出的窗口是Dynagen Console(控制台),你可以在这里控制每一台模拟路由器的启动、停止与重启。使用list命令列出当前模拟的设备:

DSC0002.jpg

  左边第一列表示每台虚拟路由器的名字,第三列是这台虚拟路由器的状态。如果状态是running,表示其正在运行中;如果状态是stopped,表示其处于停机状态。  如果需要启动一台处于停机状态的虚拟路由器,使用命令start R1。
  如果需要使一台正在运行的虚拟路由器停机,使用命令stop R1。
  如果需要重启一台虚拟路由器,使用命令reload R1。
  注意:上边三条命令的设备名部分是大小写敏感,对于上边的例子,输入命令start r1会提示没有这台设备。
8. 登录到虚拟路由器  在控制台上确定某台虚拟路由器处于running状态后,可以使用命令例如telnet R1登录到R1的console端口。当新的窗口打开后,你就可以开始对虚拟路由器进行操作了。
(推荐SecureCRT这个终端软件,很好很强大。) 附idlepc值计算方法      在不填写Idlepc值的情况下启动任意一台虚拟路由器      回到Dynagen控制台,等待大约10秒后输入命令idlepc get R1(如果刚才你是登录到R1上的),稍等会得到类似下图中的结果:
DSC0003.jpg

正确的结果应该会看到至少一个带有*的值,这些带有*的值就是可能正确的Idlepc值,你可以依次尝试应用。在光标处直接输入要应用的值的序号。  注意:如果你没有看到任何带有*的值,意味着你的这次计算失败了。请用stop命令关闭虚拟路由器,严格按照上边的步骤重新再试一次。
  如果你选择的Idlepc值是正确的,在应用之后几秒内宿主计算机的CPU使用率会从100%降至5%一下(如果你只运行着一台虚拟路由器的话)。看到这个结果说明这是一个有效的Idlepc值,你可以将它记录下来,写到.NET配置文件中的相应位置。这个值对于这个IOS镜像文件总是有效的。如果CPU使用率没有下降,或者下降并不明显,说这个值是无效的,你可以在Dynagen控制台上用命令idlepc show R1再次显示刚才的计算结果,并输入另一个值的编号继续尝试,直到找到有效的值。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-539579-1-1.html 上篇帖子: Cisco模拟器-Boson NetSim for CCNP 7.02 下篇帖子: cisco-2811-DHCP-WAN配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表