再说如何做.net文件!
我一直习惯于用dynagen,自己写个.net文件。简洁明了。可能更多的人喜欢用GUI之类的东西。正所谓萝卜白菜各有所爱。但我始终坚信,越简单的东西越可靠。dynagen 就是这么一个简单而且可靠的东西。
写.net问题有三部分:
1:固定的部分。
比如我们写在最前面的autostart = false等。
2:主机服务器部分。
就是[localhost]部分。localhost的写法也是有讲究的。MS对每个进程所能利用的内存是有限制的。如果你要起13台路由器,这个数量的确比较大,但对于做CCIE实验的兄弟来说,这个是基本需求。13台路由器肯定是起不来的。最多起个7、8台路由,肯定到后面就启动不了了。很多兄弟不知道什么原因,但用dynamips直接写参数就没有问题。其实就是因为MS对进程利用的内存做了限制。
针对这个问题,我们可以起多个dynamips 服务器,只是启动的时候用不同的端口而已。比如起3个dynamips服务器进程:
dyamips -H 7200
dynamips -H 7201
dynamips -H 7203
可能很多人会明白。H后面的参数是侦听的端口,和路由器的型号没有任何关系。在.net里面,写完整应该是:[localhost:7200]。因此在.net里面就可以写3个localhost。比如:
[localhost:7200]
udp = 10000
[[7200]]
image = c7200.bin
[[3660]]
image = c3660.bin
[[ROUTER R1]]
S1/0 = R2 S1/0
[localhost:7201]
udp = 20000
[[7200]]
image = c7200.bin
[[3660]]
image = c3660.bin
[[ROUTER R2]]
[localhost:7203]
udp = 30000
[[7200]]
image = c7200.bin
[[3660]]
image = c3660.bin
==============================================
注意:在localhost下面有个 udp = 10000的参数。熟悉dynamips的都知道,路由器接口之间是通过udp来互联的。这里的upd就是指接口互联是利用的UDP端口。不同的localhost当然要用不同的端口了。原因自己去想吧。
如果想做分布式处理的话,这里的localhost换成启动dynamips服务器的IP地址就可以了。分布式处理,很简单吧。
下面继续写一些路由器的情况,比如:
【【7200】】
image = ios.bin
ram = 160
idlepc = xxxxxxxxxxx
还可以继续写下一个路由器,比如3660:
[[3660]]
image = c3660.bin
ram = 120
idlepc = xxxxxxxxxxxxxx
还可以把所有你想要的路由器都写出来,到时候用什么就直接拉过来就是了。
[[3745]]
image = c3745.bin
ram = 120
idlepc = xxxxxxxxxxxxxxx
3:帧中继ATM的VC。
帧中继可能是用的最多的了,关于ATM VC的写法。请大家参阅dynagen的readme文件或者是我翻译的最新的dyanmips中文教材。在
www.eguodu.com里面有。
对于帧中继交换机,我们可以认为有N多个接口。每个接口连接一个路由器的串口。然后定义VC。定义VC的时候,先写帧中继的第一个接口,然后写VC号。
[[router r1]]
s1/0 = FR1 1
[[router r2]]
s1/0 = FR1 2
[[router r3]]
s1/0 = FR1 3
[[router r4]]
s1/0 = FR1 4
[[FRSW FR1]]
1:102 = 2:201
1:103 = 3:301
1:104 = 4:401
2:203 = 3:302
3:304 = 4:403
这样以来就形成一个full mesh的连接。
OK, 下面来看一个例子:
==================================================
# Simple lab
autostart = False
model = 3745
! 默认情况下,所有的路由器型号都是3745
[localhost:7200]
udp = 10000
[[7200]]
image = ios.bin
exec_area = 32
npe = npe-400
idlepc = 0x60659230
gostios = true
gostsize = 250
ram = 160
[[3745]]
image = c3745-adventerprisek9-mz.124-11.T.bin
exec_area = 32
ram = 160
[[3660]]
#image = c3660-p-mz.122-40.bin
image = 36.bin
ram = 90
[[ROUTER R0]]
model = 3660
! 这里的model = 3660指明了R0路由器是3660,这里的定义优先于前面的model = 3745。
[[ROUTER R1]]
f0/0 = R4 f0/0
s1/0 = R4 s1/0
s1/1 = R0 s1/1
[[ROUTER R2]]
f0/0 = R5 f0/0
s1/0 = R5 s1/0
s1/1 = R0 s1/2
[[ROUTER R3]]
f0/0 = R6 f0/0
s1/0 = R6 s1/0
s1/1 = R0 s1/3
[[ROUTER R4]]
[[ROUTER R5]]
[[ROUTER R6]]
============================================================
欢迎大家拍砖。欢迎大家来讨论。