http://stdioe-tr.blogspot.com/2012/07/coklu-cisco-router-simulasyonu-icin.html bağlantısında Çoklu Cisco Router Similasyonu için bir Dynagen & Dynamips örnek çalışmasını anlatmıştım. Bu yazımda ise, birden fazla dynamips servisini birden kullanan bir dynagen uygulaması anlatacağım. Ayrıca dynagen performans optimizasyonu hakkında bir detaydan bahsedeceğim
Bu örnekte 3 adet dynamips servisimiz olacak. Her dynamips servisi ise 3 adet sanal yönlendirici barındıracak ve 9 sanal yönlendirici de birbirine bağlı olacaklar. İlk dynamips servisi R1, R2 ve R3 yönlendiricilerini, ikinci dynamips servisi R4, R5 ve R6 yönlendiricilerini ve üçüncü dynamips servisimiz ise R7, R8 ve R9 yönlendiricilerini içerecekler. Bu 9 yönlendirici konfigüresyon dosyasında 3 erli guruplar halinde ayrı gibi görünselerde, mantıksal olarak her biri bir diğerine bağlı olacaklar.
Topolojimiz ve bağlantılar;
1-) dynamips servislerinin farklı port numaraları ile başlatılması,
ismail@ismail-ThinkPad-T410:~$ dynamips -H 7200 &
ismail@ismail-ThinkPad-T410:~$ dynamips -H 7301 &
ismail@ismail-ThinkPad-T410:~$ dynamips -H 7402 &
2-) dynamips konfigürasyon dosyasının topolojiye göre oluşturulması,
###############################1-Dynamips-1#############################
[localhost:7200]
udp=10000
workingdir = /tmp/workingdy1
[[3725]]
image = /tmp/c3725-adventerprisek9-mz.124-15.T13.bin
ram = 128
#idlepc = ?? # We will talk about this, later.
ghostios = true
sparsemem = true
idlemax = 100
disk0=128
[[Router R1]]
model = 3725
console = 2001
autostart = false
S0/0 = R2 S0/0
[[Router R2]]
model = 3725
console = 2002
autostart = false
S0/0 = R1 S0/0
S0/1 = R3 S0/0
[[Router R3]]
model = 3725
console = 2003
autostart = false
WIC0/0 = WIC-2T
S0/0 = R2 S0/1
S0/1 = R7 S0/1
###############################1-Dynamips-1#############################
###############################2-Dynamips-2#############################
[localhost:7201]
udp=11000
workingdir = /tmp/workingdy2
[[3725]]
image = /tmp/c3725-adventerprisek9-mz.124-15.T13.bin
ram = 128
#idlepc = ?? # We will talk about this, later.
ghostios = true
sparsemem = true
idlemax = 100
disk0=128
[[Router R4]]
model = 3725
console = 2004
autostart = false
S0/0 = R5 S0/0
S0/1 = R8 S0/1
[[Router R5]]
model = 3725
console = 2005
autostart = false
S0/0 = R4 S0/0
S0/1 = R6 S0/0
[[Router R6]]
model = 3725
console = 2006
autostart = false
S0/0 = R5 0/1
###############################2-Dynamips-2#############################
###############################3-Dynamips-3#############################
[localhost:7202]
udp=12000
workingdir = /tmp/workingdy3
[[3725]]
image = /tmp/c3725-adventerprisek9-mz.124-15.T13.bin
ram = 128
#idlepc = ?? # We will talk about this, later.
ghostios = true
sparsemem = true
idlemax = 100
disk0=128
[[Router R7]]
model = 3725
console = 2007
autostart = false
S0/0 = R9 S0/0
S0/1 = R3 S0/1
[[Router R8]]
model = 3725
console = 2008
autostart = false
WIC0/0 = WIC-2T
S0/0 = R9 S0/1
S0/1 = R4 S0/1
[[Router R9]]
model = 3725
console = 2009
autostart = false
S0/0 = R7 0/0
S0/1 = R8 0/0
###############################3-Dynamips-3#############################
Yukarıdaki konfigürasyon metnini sample2.net ismi ile /tmp dizini altına kayıt ettim. Yine bu örnekte de working dizinlerine ihtiyacım olacak, oluşturuyorum:
ismail@ismail-ThinkPad-T410:~$ mkdir /tmp/workingdy1
ismail@ismail-ThinkPad-T410:~$ mkdir /tmp/workingdy2
ismail@ismail-ThinkPad-T410:~$ mkdir /tmp/workingdy3
3-) Working dizinleri hazır. Şimdi dynagen servisi başlatılmaya hazır. Sorun çözme hakkında bir şeyler göstermek için bir hata yapıyorum,
ismail@ismail-ThinkPad-T410:~$ dynagen /tmp/sample2.net
Reading configuration file...
Shutdown in progress...
Shutdown completed.
Shutdown in progress...
Shutdown completed.
Shutdown in progress...
Shutdown completed.
*** Warning: Connecting R6 S0/0 to R5 0/1 resulted in:
malformed destination interface: R5 0/1
*** Warning: Connecting R9 S0/0 to R7 0/0 resulted in:
malformed destination interface: R7 0/0
*** Warning: Connecting R9 S0/1 to R8 0/0 resulted in:
malformed destination interface: R8 0/0
*** Error: errors during loading of the topology file, please correct them
Shutdown in progress...
Error: could not communicate with dynamips server localhost
It may have crashed. Check the dynamips server output.
Exiting...
Press ENTER to exit
[3]+ Segmentation fault (core dumped) dynamips -H 7202
ismail@ismail-ThinkPad-T410:~$
Normalde bir hattın her iki ucu için de bağlantı tanımlayabilirsiniz. Ancak görüldüğü gibi dynagen servisi bu çift tanımlamayı kabul etmiyor. R5 yönlendiricisinde, " S0/1 = R6 S0/0" bağlantısını kaldırıyorum. Aynı şekilde R7 yönlendiricisinden, " S0/0 = R9 S0/0" bağlantısını ve R8 yönlendiricisinden, " S0/0 = R9 S0/1" bağlantısını kaldırıyorum. Bu düzenlemeden sonra sample2.net dosyası aşağıdaki gibi son halini alıyor;
###############################1-Dynamips-1#############################
[localhost:7200]
udp=10000
workingdir = /tmp/workingdy1
[[3725]]
image = /tmp/c3725-adventerprisek9-mz.124-15.T13.bin
ram = 128
#idlepc = ?? # We will talk about this, later.
ghostios = true
sparsemem = true
idlemax = 100
disk0=128
[[Router R1]]
model = 3725
console = 2001
autostart = false
S0/0 = R2 S0/0
[[Router R2]]
model = 3725
console = 2002
autostart = false
#S0/0 = R1 S0/0
S0/1 = R3 S0/0
[[Router R3]]
model = 3725
console = 2003
autostart = false
#S0/0 = R2 S0/1
S0/1 = R7 S0/1
###############################1-Dynamips-1#############################
###############################2-Dynamips-2#############################
[localhost:7201]
udp=11000
workingdir = /tmp/workingdy2
[[3725]]
image = /tmp/c3725-adventerprisek9-mz.124-15.T13.bin
ram = 128
#idlepc = ?? # We will talk about this, later.
ghostios = true
sparsemem = true
idlemax = 100
disk0=128
[[Router R4]]
model = 3725
console = 2004
autostart = false
S0/0 = R5 S0/0
S0/1 = R8 S0/1
[[Router R5]]
model = 3725
console = 2005
autostart = false
#S0/0 = R4 S0/0
S0/1 = R6 S0/0
[[Router R6]]
model = 3725
console = 2006
autostart = false
# S0/0 = R5 0/1
###############################2-Dynamips-2#############################
###############################3-Dynamips-3#############################
[localhost:7202]
udp=12000
workingdir = /tmp/workingdy3
[[3725]]
image = /tmp/c3725-adventerprisek9-mz.124-15.T13.bin
ram = 128
#idlepc = ?? # We will talk about this, later.
ghostios = true
sparsemem = true
idlemax = 100
disk0=128
[[Router R7]]
model = 3725
console = 2007
autostart = false
S0/0 = R9 S0/0
#S0/1 = R3 S0/1
[[Router R8]]
model = 3725
console = 2008
autostart = false
S0/0 = R9 S0/1
#S0/1 = R4 S0/1
[[Router R9]]
model = 3725
console = 2009
autostart = false
# S0/0 = R7 0/0
# S0/1 = R8 0/0
###############################3-Dynamips-3#############################
dynamips servislerini 7200, 7201 ve 7202 portları üzerinden zaten çalıştırmışdık. Ancak dynagen servisimiz başarısı olduğu için, bazı dynamips servislerinin de çökmüş olma olasılığı sözkonusu. Bu sebeple öncelikle dynamips servislerinin tamamının çalışmaya devam ettiğinden emin olmalıyız.
ismail@ismail-ThinkPad-T410:~$ ps -ef | grep dynamips
ismail 3811 3756 1 10:15 pts/0 00:00:14 dynamips -H 7200
ismail 3829 3756 1 10:16 pts/0 00:00:14 dynamips -H 7201
ismail 4017 3756 0 10:27 pts/0 00:00:00 grep --color=auto dynamips
Aldığımız cevaba göre, bir dynamips servisi çökmüş ve diğer ikisi çalışmaya devam ediyor. Ben tüm dynamips servislerini öldürüp, hepsini baştan çalıştırmayı tercih ediyorum. Bunun için 3811 ve 3829 PID noları ile tek tek öldürmek de mümkün (kill -9 3811 gibi..) ancak pkill ile tümünü birden öldürmek daha pratik geliyor,
ismail@ismail-ThinkPad-T410:~$ pkill dynamips
[1]- Terminated dynamips -H 7200
[2]+ Terminated dynamips -H 7201
ismail@ismail-ThinkPad-T410:~$
ve şimdi çalışan dynamips servisi kalmadı,
onları tekrar baştan başlatabilirim ve dynagen topolojisini yükleyebilirim;
ismail@ismail-ThinkPad-T410:~$ dynamips -H 7201 &
ismail@ismail-ThinkPad-T410:~$ dynamips -H 7202 &
ismail@ismail-ThinkPad-T410:~$ dynamips -H 7203 &
ismail@ismail-ThinkPad-T410:~$ dynagen /tmp/sample2.net
Reading configuration file...
...
...
...
Dynagen management console for Dynamips and Pemuwrapper 0.11.0
Copyright (c) 2005-2007 Greg Anuzelli, contributions Pavel Skovajsa
=>
Nihayetinde dynagen topologiyi yükledi. Yukarıda dynagen konsoluna düştüğümüzü görüyorsunuz. Burada "start R1" gibi yönlendirici isimlerine start komutları göndererek onları tek tek başlatabiliriz. Ya da "start /all" ile hepsini birden başlatmak da mümkün.
Bilgisayarımızda 9 adet sanal yönlendirici çalışıyor.. Sanırım şimdi performans için biraz optimizasyon yapmak gerekebilir. Bunun için "idlepc" parametresinin değerini tespit edip dynagen konfigürasyon dosyasında yerine yazmamız gerekiyor. idlepc değeri her yönlendirici için farklı değerler alabilir ve onu öğrenmek için ilgili yönlendiriciyi başlatıp, "idlepc get Rx" komutu ile ilgili yönlendirici için idlepc değerlerini listeyebiliriz.
=> start R1
=> idlepc get R1
Please wait while gathering statistics...
Please wait while gathering statistics...
Done. Suggested idling PC:
0x60c08128 (count=22)
0x60c08164 (count=33)
0x60c08180 (count=35)
0x60c081c0 (count=66)
0x62b2823c (count=45)
0x60c08bf8 (count=23)
0x60c08c20 (count=20)
0x614b0e34 (count=38)
0x62b2b134 (count=20)
0x6026bca4 (count=30)
Restart the emulator with "--idle-pc=0x60c08128" (for example)
1: 0x60c08128 [22]
2: 0x60c08164 [33]
3: 0x60c08180 [35]
4: 0x60c081c0 [66]
5: 0x62b2823c [45]
6: 0x60c08bf8 [23]
7: 0x60c08c20 [20]
8: 0x614b0e34 [38]
9: 0x62b2b134 [20]
10: 0x6026bca4 [30]
Potentially better idlepc values marked with "*"
Enter the number of the idlepc value to apply [1-10] or ENTER for no change:
No changes made
=>
Eğer listelenen idlepc değerlerinden herhangi birinin önünde "*" karakteri var ise, bu önerilen değerdir, kullanabiliriz. Ağer henüz bir değer önerilmemiş ise, "idlepc get Rx" komutu ile tekrar değerler üretilmesini isteyebiliriz. "*" 'li satır tespit ettiğimizde hedefimize ulaşmışız demektir.