更新内容:
很多网友都反映用此文方法行不通,现象为:分布在各计算机上的路由器能起来,但互联的端口是Down的,以至于ping 不通。在此特别感谢 flyxj 网友QQ联系到我才引起我的高度注视使问题得到解决,不会再给读者误导(本人能力是很有限的)。
原因经分析找到了,NET文件中有[localhost]一句,localhost 会被本地的hosts文件解析成127.0.0.1,想毕各位已经明白了吧,分布在各计算机上的路由器之间的连接是通过UDP=后边指定的端口通信的,由于127 和192不在同一子网,所以端口自然UP不起来了。
注意:笔者用最新的dynamips 0.2.7RC1和dynagen 0.90 实验不成功,有错误提示,google 了一下说是两个版本不匹配(晕)。请更新后仍不成功的朋友换本文推荐的版本试一下


dynamips 固然是个好东西,但其对内存苛刻的要求又让人头痛,虽说现在的内存比较便宜了,可对于像我这样的学生一族,又岂能承受的了。笔者01年买的电脑,一直也在升级,到现在才用上了512的内存。
那些有钱人新买来的电脑多是1G内存双核CPU,居然用来玩卡丁车,内存占用没上过500,这自然勾起我节约能源的爱国之心,用他们的电脑分担几台路由器,来完一大网络的模拟。“要学会花别人的钱”,嘿嘿,“要学会用别人的电脑”更恰当!于是笔者尝试了一下dynamips的分布式功能。

我们舍宿四台电脑,通过四口的傻瓜路由相连。不详细说了,充份发挥一下拓朴的优势!
Highslide
Copyright by Beafuture's blog


下面以 dynamips for 工大瑞普full version 为蓝本实现如下的拓朴(老版本可能会存在问题)
Highslide
Copyright by Beafuture's blog


要再每台电脑上安装上winpcap,并按如下结构复制文件。
e:\
┠─dynamips
        ┃
        ┣ ios ━ unzip-c3620-i-mz.122-37.bin
        ┃
        ┣ dynamips   ━┳cygwin1.dll
        ┃                      ┗dynamips-wxp.exe
        ┣ workingdir         //空目录
     ┗ 启动虚拟服务.cmd         //内容为:cd dynamips
                                                             dynamips-wxp.exe -H 7200

本次实验笔者是在PC1上作的,前端程序dynagen要放到PC1上,所以要加入如下目录和文件:
e:\
┠─dynamips
        ┃
        ┣ dynagen ━┳configspec
        ┃                   ┣dynagen.exe
        ┃                   ┣dynagen.ini
        ┃                   ┗library.zip
        ┣ labini ━━━ test.net   //内容见下
     ┗实验控制台.cmd           //内容为:cd dynagen
                                                           dynagen.exe ..\labini\test.net

test.net 文件内容:

autostart = false

[192.168.1.101]
port = 7200
udp = 10000
workingdir = ..\workingdir\
   
   `router R1`
   p_w_picpath = ..\ios\unzip-c3620-i-mz.122-37.bin
   model = 3620
   console = 3001
   ram = 32
   confreg = 0x2142
   exec_area = 64
   mmap = false
   slot0 = NM-1FE-TX
   slot1 = NM-4T
   s1/1 = R2 s1/0
   s1/2 = R4 s1/0

[192.168.1.102]
port = 7200
udp = 10000
workingdir = ..\workingdir\

   `router R2`
   p_w_picpath = ..\ios\unzip-c3620-i-mz.122-37.bin
   model = 3620
   console = 3002
   ram = 32
   confreg = 0x2142
   exec_area = 64
   mmap = false  
   slot0 = NM-1FE-TX
   slot1 = NM-4T
   s1/1 = R3 S1/0
   s1/2 = R4 s1/1

[192.168.1.103]
port = 7200
udp = 10000
workingdir = ..\workingdir\

   `router R3`
   p_w_picpath = ..\ios\unzip-c3620-i-mz.122-37.bin
   model = 3620
   console = 3003
   ram = 32
   confreg = 0x2142
   exec_area = 64
   mmap = false
   slot0 = NM-1FE-TX
   slot1 = NM-4T
   s1/2 = R4 s1/2

[192.168.1.104]
port = 7200
udp = 10000
workingdir = ..\workingdir\

   `router R4`
   p_w_picpath = ..\ios\unzip-c3620-i-mz.122-37.bin
   model = 3620
   console = 3004
   ram = 32
   confreg = 0x2142
   exec_area = 64
   mmap = false
   slot0 = NM-1FE-TX
   slot1 = NM-4T

此时在PC1上运行
实验控制台.cmd
启动虚拟服务.cmd
PC2 3 4 上分别运行 启动虚拟服务.cmd ,这样就可以实验了。

总结:
其实原理很简单,dynagen作为前端,所以只需要在操作此实验的pc上有就行了,net文件也应在此pc上。而路由器是运行在各个服务器端的,所以dynamips要在每个PC上都有,ios也要放在服务器端。dynagen会将NET文件中的信息发送给各各服务器端,并实现各路由器之间的连接,有了这个思想就可以用更多的pc搭建更大的拓朴了。

此文章是回忆实验写的,有出错或不明白的请留言(推荐),或至email到:[email]admin@pppei.cn[/email]

作者:Beafuture'blog
地址:[url]http://www.pppei.cn/blog/post/34/[/url]
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

0

收藏

cnhbhg

19篇文章,8W+人气,0粉丝

Ctrl+Enter 发布

发布

取消