2008年12月25日 星期四

關於Dynagen設定檔

~~此文也是一年前發於vlab的文章^^ ~~
- 前言 -
這裡介詔如何編修Dynagen的網路檔,如果您已是老手,也請您幫忙看是否有錯誤的地方,如果您跟我一樣剛碰不久,歡迎您提供遇到的問題,讓大家可以更容易上手地使用Dynamips/Dynagen^^
先說一下什麼是Dynagen,它就是Dynamips摸擬器的前級(有沒有組音響的感覺^^),只要我們修改它,Dynamips就會乖乖照做^^而要修改Dynagen就是要修改網路檔。那為什麼叫網路檔(.net)呢?因為當我們編修這個檔案後就建立起一個虛擬網路架構!想像我們只要寫幾個字就生出了Router,ATMSwitch,Frame-RelaySwitch,再加幾行字就將這些硬體接線接在一起了!夠神奇吧^^這就是Dynagen神奇厲害的地方!!

那這個檔都放在哪呢?當你安裝完Dynamips/Dynagen之後,就可以在這裡找到:C:\Program Files\Dynamips\sample_labs 這裡放的就是網路檔的一些範例,如果是Windows在安裝完後通常在桌面的資料夾就可以看到了。編輯它的方式就是:右鍵->開啟檔案->Notepad。不囉嗦直接來看網路檔要修改什麼。

一、修改登入連線與連線參數: (下面只要看到"#"字,後面就是說明)
首先我們要設定Dynagen要連線到哪一台Server去?通常是在自已電腦上的DynamipsServer,所以我們會用
[localhost:7200]
localhost指的就是本地的主機。(你正在上網這一台啦!)而7200指的是Dynamips所開的port number,如果要更改dynagen的port number,dynamips上面必需先更改才行。(直接編輯桌面DynamipsServer這個檔案就可修改)所以上面這個程式碼結合起來解釋的意思就是-從dynagen建立到localhost的連線,且從7200port登入。

這意味著我們也可以用這個dynagen檔登入到遠端的Dynamips server嗎?沒錯!只要將localhost改成ip位址或hostname即可^^這樣的目的是模擬一個更大型的網路環境,如果有多人合作分工的話就不用怕自已電腦跑不過來。
既然可以從一個Dynagen檔登入到不同的server,那可以在一個dynagen裡面開啟多個port number登入到localhost嗎?如:
[localhost:7200]udp = 10000
[localhost:7300]udp = 11000
[localhost:1234]udp = 12000
#udp預設port為10000,改變登入的PortNumber,也需設定不同的udp port number
答案是………可以的!!那你一定很好奇我幹麻這樣做?多打了那麼多字有什麼意思呢?其實當你要模擬一個中、大型的網路環境時,就時常需要這麼做!否則你的記憶體可能不夠用!這是作業系統的限制,它限制每個行程最多能用到 2 GB (32-bit Windows)虛擬記憶體、或3 GB(32-bit Linux)虛擬記憶體,而Dynamips把一個登入連線當成一個行程處理,所以你只要把Router分開連線,就可解開這個記憶體限制了^^

在登入連線下面我們可以設定的參數:

port = 7200 #
是滴~這就是上面主機後面的PortNumber,如果不喜歡在上面指定,可以在這裡用port來定義console = 2000 #
這是登入cosole的port,不特別指定就是2000

workingdir = /home/labs/test lab 1 #
這就在模擬網路環境時所產生的檔案要放在哪的地方

udp = 10000 # UDP的PortNumber


二、修改路由器型號與型號參數:
當我們在設定路由器型號時,其實就像是在寫一個函式,需要的時候再來呼叫就好!所以我們設定一個7200router的規格,未來再用10顆Router來呼叫它!就不用打那麼多字啦~基本的型號格式如下:
[[7200]]
這個雙括號的概念,可以想像這是上面登入連線(單括號)下的設定,類似子目錄的觀念。而上面這個7200的Router型號的數字是有限制的,除非你有設定參數,否則只要套用這個數字,就會套入該Router預設參數,目前支援的路由器型號數字如:
[[7200]][[3620]] [[3640]] [[3660]] # 套用3620預設參數[[2691]] # 預設值與3600相同[[3725]] [[3745]] # 預設值與 2961相同[[2610]] # 預設2610參數,如果IOS為: 2611, 2620, 2621, 2610XM, 2620XM, 2621XM, 2650XM, 2651XM,也用這個路由型號。[[1710]] # 預設1710參數,如果IOS為: 1720, 1721, 1750, 1751, 1760,也用這個路由型號。

接下來重點來啦~在每個Router型號下我們可以設定哪些參數呢?下面是我們可以變更的參數,預設都已經有,除非我們要變更,否則不需特別設定:

image = \Program
Files\Dynamips\images\c3640-js-mz.122-7.bin #
好吧!這個是一定要有的!要告訴Dynagen去哪裡把你的IOS給載進來!記得把檔名與路徑填寫正確!

ram = 256 # 指定Router RAM的大小(M)

nvram = 128 # NVRAM檔案大小(M)

disk0 = 64 # 指定PCMCIA ATA disk0空間大小(M)

disk1 = 64 # 指定PCMCIA ATA disk1空間大小(M)

cnfg = None # 想要直接載入Router的config檔的路徑,如果Config懶的打,或要套用,可以從這裡指定!不指定就是None

confreg = 0x2102 # Router的register值

npe = npe-200 # 可以指定的值如"npe-100", "npe-150", "npe-175", "npe-200",
"npe-225", "npe-300", "npe-400", "npe-g1', or "npe-g2",其它請參考附註
midplane = vxr # 這個是指要模擬 7200 chassis 的種類。std 是舊的機種,可以支援的 NPE 卡版較少,而新的 chassis 就是有帶 VXR 的,可以支援較多的 NPE 與 PA
卡版。一般來說,這個參數應該不需要指定,除非你有特殊的測試需求

mmap = true # memory map如不指定其值為true,就是把IOS的空間對映到你的硬碟上執行。如改為false就會使用你電腦上的RAM來當虛擬記憶體空間
idlepc = 0x60719b98 # 使用這顆router的Idlepc值,建議啟動所有router之後再來指定這個值比較穩定

exec_area = 64 # 指定exec area 空間的大小(M)

ghostios = false # 這是很好用的參數,如果不指定其值為false。如果你有一顆Router要50M的RAM,將這個值改為true之後,你的硬碟空間會大大減少!原本50*10=500M,修改後只要50M,原理是所有router使用同一個ios檔案
ghostsize = 128 # 這個值會自已抓,所以很少人用了

sparsemem = false # 這是用來節省虛擬記憶體空間用的,當這個值啟動,會同時關掉mmap功能。

idlemax = 1500 # idlepc的進階指定值,用來指定最大idle值

idlesleep = 30 # idlepc的進階指定值,用來指定進入睡眠狀態時間

要留意的是image=IOS路徑一定要設,不然沒有載入IOS如何運作呢?

三、修改模擬實機與參數:
在Dynagen裡面要模擬實體機器,相當簡單!只需要在雙括號內加入一些關鍵字即可。如:Router,FRSW,ETHSW,ATMSW。這些關鍵沒有大小寫的差異,但~字一定要對!再來是為每一部模擬出來的機器取名字,其實隨便你取,只有一個規定!不要重覆!!直接來看簡單的例子:

[[Router honey1]] #建立一顆名為honey1的Router

[[ETHSW woops]]
#建立一個EthernetSwitch,名叫woops

[[FRSW sweety2]]
#建立一個Frame-RelaySwitch,名叫sweety2

[[atmsw god3]] #建立ATMSwitch,名叫god3

例子中可以看出:1關鍵字的部份不在乎大小寫2用空格隔開關鍵字與名稱3名稱隨便你取
Ok!再來就是各個機器上我們可以加入的參數有哪些:
model = 7200 #
這就是在呼叫上面我們指定的Router型號,進而套用裡面的參數,如果沒有指定就會套用7200IOS參數 console =
2000 #
如果想要用console連入router就要指定這個參數,後面的數值為你指定的PortNumber aux =
3000 # 如要Aux
port只要指定一下PortNumber就好了,沒有指定就是none mac =
12:34:56:78:90:AB # 可以自已指定mac,不指定就自已抓

# 再來介詔的參數就是我們要讓你的模擬實機開哪些洞~~呵~~我指的是哪些接口^^,可以設定PA(PortAdaptor)與NM(Network Module) 如果我們不特別設定這些接口的話,預設上是沒有這些特殊接口或模組的,只會使用接下來第四部所設定連線部份的基本接口,設定特殊接口的目的就是讓你的機器上開更多的洞^^

slot0 = PA-C7200-IO-FE
#指定在slot0上插入PA接口,下面的指定都一樣,只是不同的接口與模組而已

slot0 = PA-C7200-IO-2FE # 而什麼IOS支援什麼接口與模組,與這些接口與模組的功能請看最下面的"附註"

slot0 = PA-C7200-IO-GE-E

slot1 = PA-FE-TX

slot3 = PA-4T
slot6 = PA-4E
slotx = PA-POS-OC3

slotx = PA-2FE-TX

slotx = PA-GE

wic0/1 = WIC-1T


實機的參數不只這些,還有下面的連線設定,由於較繁多,也需要建立一些觀念,所以獨立出來講^^

四、建立連線:
ok~設定完模擬機器與接口(模組),接下來只要把這些都連上線,就建立起網路Topology啦^^要建立機器間的連線只需要設定一些參數就可以了~這算是dynagen網路檔最難的一部份,也是建立Topology的重點!!請注意聽!!(考試會考喔,呵~

(1)連線格式: 連線格式如:"本地接口等於對方接口" 這就是連線的格式!就這麼簡單!?沒錯!但~我們要把它換成代號,如:

f1/0 = R2 f1/0 # 本地接口(FastethernetPort1/0) 等於(=) 對方(Router2) 接口(FastethernetPort1/0)





知道連線格式後,再多看一些範例就更熟悉線接的格式:

#[[Router xx]]下的格式 f2/0 = LAN 1 # 從f2/0連線到LAN
1,哇咧~~怎麼不指定接口?是滴!這裡是指定這個port就是LAN 1的一部份,所以不指定port s3/0 = R2 s3/0 #
從s3/0連線到Router2的s3/0 s3/1 = F1 1 # 從s3/1連線到Frame-RelaySwitch1的port 1 s3/2 = F2 1
a4/0 = A1 1 # 從a3/1連線到ATMSwitch1的port 1,連到ATM要用a port喔 #[[FRSW xx]]下的格式 1:102 =
2:201 # 將FrameSwitch的Port1,DLCI 102連線到Port2,DLCI201 1:103 = 3:301 #
將FrameSwitch的Port1,DLCI 103連線到Port3,DLCI301 # [[ATMSW xx]]下的格式: 1:10 = 2:20 #
將ATM的Port 1, vpi 10連線到port 2, vpi 20 1:10:200 = 2:20:100 # 將ATM的Port 1, vpi 10,
vci 200 連線到port 2, vpi 20, vci 100 # [[ETHSW xx]]下的格式: 1 = access 1 #
將EthernetSwitch的Port 1指定為access mode,並分配在vlan 1 2 = access 20 #
將EthernetSwitch的Port 2指定為access mode,並分配在vlan 20 3 = dot1q 1 #
將EthernetSwitch的Port 3指定為802.1q封裝的trunk mode,並分配在vlan 1

(2)模擬接口與實體電腦的連線: 如果你希望在另一端的模擬Router上有一台主機,那你可以在自已的電腦上新增一片loopback網卡並指定虛擬ip,再來將該網卡的mac指定給那台Router的接口就OK啦^^用途很多,請發揮想像力~ 最簡單的就是在linux上,只要設定NIO(NetworkInputOutput)即可,如:

f0/0 = NIO_linux_eth:eth0 #從f0/0接線到電腦的eth0,當我們從電腦的eth0丟出packet,它會回傳到虛擬的端口上


如果在Windows上就多了一個步驟,要開啟桌面的NetworkDeviceList這個程式,並抓取產生出來的Mac值,抓出來後如下面這樣放:

F0/0 = NIO_gen_eth:\Device\NPF_{B00A38DD-F10B-43B4-99F4-B4A078484487}

這樣就可以與實體電腦溝通了。


(3)兩台機器間的連線: 這裡要說的概念只有一個!那就是當我們連接兩接虛擬機器時,只需要在本地端設立連線即可。 比如我要將R1與R2都用f0/0port相連,那只需這樣設定:

[[router R1]] f0/0 = R2 f0/0 [[router R2]] #這個區域留白最美啦!!

這樣即完成兩台機器間的連線,記住!只要設定其中一邊,兩都都設定會相衝!


五、建立架構與修改全域參數:我們將參數放在最上面來定義就是全域參數,這些參數值會定套用到下面的device身上。定義完全域參數後就是你的網路檔(.net)概略架構了!

autostart = true # 這裡可以指定true或false,看你是不是要一載入時就將所有模擬機器啟動,?#93;可以在各別的機器上指定debug =
0 # Debug的輸出level,不指定其值為0,代表none; 而1 就像在switch命令下-d參數一樣model = 7200 #
可以指定用哪種型號Router參數套入Router內,不指定為7200ghostios = false #
是否要用ghostios模組來節省空間,不指定為false。在各別的虛擬機器下指定?#93;可以ghostsize = 128 #
通常不用指定,會自已抓sparsemem = false # 要不要用sparsemem來節省虛擬記記體空間,啟動後會關掉mmap功能idlemax =
1500 # 最大的idlepc值idlesleep = 30 # 進入idle休眠狀態的時間oldidle = false # 指定啟用舊版
pre-0.2.7-RC2的idlepc值 ,與新版共用
[localhost:7200] #登入本機的連線
[[3660]]
#指定3660的參數 #這裡都放該Router型號的指定參數 [[router r1]] #指定Router r1
#這裡會呼叫上面的指定參數,並指定一些連線參數
[localhost:3988] #登入本機的第二個連線udp=12000 [[router r1]]
#指定Router r1 #上面沒有指定Router編號參數,這裡會套用7200 [192.168.1.3:1234] #登入另一台電腦的連線 [[3620]]
#指定3620的參數 #這裡都放該Router型號的指定參數 [[router r1]] #指定Router r1
#這裡會呼叫上面的指定參數,並指定一些連線參數
[[ETHSW sw1]] #指定EthernetSwitch與連線
#這裡會指定哪個port接哪個port



在小型的網路環境裡,我們只需建立一個連線,這裡只是想讓你知道它們可以並存。好吧!你已經可以看懂所有C:\Program Files\Dynamips\sample_labs下面的網路檔了^^
接下來你的使命就是建立起你的Topology,並與大家分享^^好的Togology需要花時間、心血設計與實驗,希望這篇文章幫大家打好使用上的基礎,進而促進大家建構出好的拓蹼~讓大家在實作模擬上更省力。


===========================================================================附註、
目前有的模擬硬體列表: (資料來源:http://7200emu.hacki.at/index.php Hacki’s forum由ggee所整理)請根據您的IOS版本,再從Cards下面的模組加入合適的網路模組。

===========1700s===========

1710 Slots: 0 (available)
WIC slots: 0 CISCO1710-MB-1FE-1E (1 FastEthernet port and 1 Ethernet port, automatically used) Note, interfaces do not use a slot designation (e.g. “f0”)1720 Note, interfaces do not use a slot designation (e.g. “f0”)1721 Note, interfaces do not use a slot designation (e.g. “f0”)1750 Note, interfaces do not use a slot designation (e.g. “f0”)17511760
Slots: 0 (available)
WIC slots: 2 C1700-MB-1ETH (1 FastEthernet port, automatically used)
Cards: - WIC-1T (1 Serial port) - WIC-2T (2 Serial ports) - WIC-1ENET (1 Ethernet ports)

===========2600s===========

2610 Slots: 1 (available) WIC slots: 3 CISCO2600-MB-1E (1 Ethernet port, automatically used)2611 Slots: 1 (available) WIC slots: 3 CISCO2600-MB-2E (2 Ethernet ports, automatically used)2620 Slots: 1 (available) WIC slots: 3 CISCO2600-MB-1FE (1 FastEthernet port, automatically used)2621 Slots: 1 (available) WIC slots: 3 CISCO2600-MB-2FE (2 FastEthernet ports, automatically used)2610XM Slots: 1 (available) WIC slots: 3 CISCO2600-MB-1FE (1 FastEthernet port, automatically used)2611XM Slots: 1 (available) WIC slots: 3 CISCO2600-MB-2FE (2 FastEthernet ports, automatically used)2620XM Slots: 1 (available) WIC slots: 3 CISCO2600-MB-1FE (1 FastEthernet port, automatically used)2621XM Slots: 1 (available) WIC slots: 3 CISCO2600-MB-2FE (2 FastEthernet ports, automatically used)2650XM Slots: 1 (available) WIC slots: 3 CISCO2600-MB-1FE (1 FastEthernet port, automatically used)2651XM Slots: 1 (available) WIC slots: 3 CISCO2600-MB-2FE (2 FastEthernet ports, automatically used)Cards: - NM-1E (Ethernet, 1 port) - NM-4E (Ethernet, 4 ports) - NM-1FE-TX (FastEthernet, 1 port) - NM-16ESW (Ethernet switch module, 16 ports) - NM-NAM - NM-IDS - WIC-1T (1 Serial port) - WIC-2T (2 Serial ports)

===========3600s===========

3660 Slots: 6 (available)3640 Slots: 43620 Slots: 2Cards: - NM-1E (Ethernet, 1 port) - NM-4E (Ethernet, 4 ports) - NM-1FE-TX (FastEthernet, 1 port) - NM-16ESW (Ethernet switch module, 16 ports) - NM-4T (Serial, 4 ports) - Leopard-2FE (Cisco 3660 FastEthernet in slot 0, automatically used)
===========3700s===========
2691 (The 2691 is essentially a 3700 with 1 slot) Slots: 1 (available) WIC slots: 33725 Slots: 2 (available) WIC slots: 33745 Slots: 4 (available) WIC slots: 3Cards: - NM-1FE-TX (FastEthernet, 1 port) - NM-4T (Serial, 4 ports) - NM-16ESW (Ethernet switch module, 16 ports) - GT96100-FE (2 integrated ports, automatically used) - NM-NAM - NM-IDS - WIC-1T (1 Serial port) - WIC-2T (2 Serial ports)
===========7200s===========

7206 Slots: 6 (available)Chassis types:- STD- VXRNPEs:- NPE-100- NPE-150- NPE-175- NPE-200- NPE-225- NPE-300- NPE-400- NPE-G1- NPE-G2 (Requires the use of NPE-G2 IOS images)Cards:- C7200-IO-FE (FastEthernet, slot 0 only)- C7200-IO-2FE (FastEthernet, 2 ports, slot 0 only)- C7200-IO-GE (GigabitEthernet, slot 0 only)- PA-FE-TX (FastEthernet)- PA-2FE-TX (FastEthernet, 2 ports)- PA-4E (Ethernet, 4 ports)- PA-8E (Ethernet, 8 ports)- PA-4T+ (Serial, 4 ports)- PA-8T (Serial, 8 ports)- PA-A1 (ATM)- PA-POS-OC3 (POS)- PA-GE (GigabitEthernet)


沒有留言: