modul 4
DESCRIPTION
aTRANSCRIPT
Modul 4
PENGENALAN NETWORK SIMULATOR-2
TUJUAN
Peserta praktikum :
1) Dapat memahami prinsip dasar dari NS-2
2) Dapat membangun simulasi dengan NS-2
SEJARAH NS
NS pertama kali dibangun sebagai varian dari REAL Networ Simulator pada
tahun 1989 di University of California Berkeley. Pada tahun 1995 pembangunan
Network Simulator didukung oleh DARPA (Defense Advanced Research Project
Agency) melalui proyek VINT (Virtual Internet Testbed), yaitu sebuah tim riset
gabungan yang beranggotakan tenaga ahli dari LBNL (Lawrence Berkeley of
National Laboratory), Xerox PARC, UCB dan USC/ISI (University of Southern
California School of Engineering/ Information Science Institute). Tim gabungan
ini membangun sebuah perangkat lunak simulasi jaringan Internet untuk
kepentingan riset interaksi antar protokol dalam konteks pengembangan protokol
Internet pada saat ini dan masa yang akan datang.
KONSEP DASAR
Dasar Bahasa TCL dan OTCL
TCL
Berikut adalah dasar-dasar bahasa tcl yang berguna dalam membangun
simulasi :
Syntax Dasar
Syntax dasar perintah tcl yaitu: Command arg1 arg2 arg3 …
Command tersebut bisa berupa nama dari built in command, atau sebuah
prosedur tcl.
Contoh : expr 2*3
puts “nama saya heru”
Variable dan Array
Untuk membuat variabel pada tcl, digunakan perintah set.
Contoh : set x “ini contoh variable”
set y 149
Pemanggilan variabel dilakukan dengan menggunakan tanda $ seperti contoh
dibawah ini : puts “$x , semuanya berjumlah $y”
NS juga mensupport penggunaan array. Array ditandai dengan menggunakan
tanda kurung setelah nama array tersebut.
Contoh : set opts(bottlenecklinkrate) 1Mb
set opts(ECN) “on”
set n(0) [$ns node]
set n(1) [$ns node]
Repetisi (loop)
Ada 2 perintah repetisi, yaitu:
1. While
Format perintahnya : while {condition}{command}
Command pada while dilakukan berulang selama condition bernilai benar.
Perintah untuk mengakhiri repetisi dinyatakan pada bagian command.
Contoh : set i 0
while {$i<10}{set n($i)[new Node]
incr i}
2. For
Format perintahnya : for {command1}{condition}{command2}{
command
}
Command dilakukan terus menerus selama kondisi bernilai benar.
Inisialisasi dilakukan pada command1, terminating condition berada pada
condition, dan perubahan nilai inisialisasi pada command2.
Contoh : for {set i 0}{$i<100}{incr i}{
set n($i) [$ns node]
}
Perintah Kondisional
Format perintah : if {condition}{
command
}
Command dilakukan jika condition bernilai benar. Contoh : if {$i<10}{
puts ”i is less than 10”
}
Comment
Jika tcl menemukan sebuah tanda #, maka mulai dari tanda tersebut sampai ke
akhir batas, tcl tidak akan mengeksekusinya dan menganggapnya sebagai
komentar.
Prosedur
Ada 2 metoda pembuatan prosedur, yaitu :
1) Prosedur tanpa parameter
Format perintah : proc name {}{
command
}
Contoh : proc tampil {}{
puts “ini tampilannya”
}
Prosedur digunakan dengan mengetikkan nama prosedur, contoh : tampil
2) Prosedur dengan menyatakan parameter
Format perintah : proc name {parameter}{
command
}
Contoh : proc proc2 {parameter1}{
puts “nilai parameter1 adalah $parameter1”
}
#dipanggil dengan
proc2 10
Nama prosedur, built in command, variabel dan array bersifat case
sensitive. Nama prosedur dan variable tidak akan konflik satu sama lain. Agar
variable yang dideklarasikan pada program utama dapat digunakan dalam
prosedur atau sebaliknya, kita tinggal menambahkan perintah :
global <variable1> <variable2> pada command body prosedur
OTCL
Berikutnya adalah pengenalan otcl (Object Oriented TCL). Otcl adalah ekstensi
tambahan pada tcl yang memungkinkan fungsi object oriented (OO) pada tcl. Hal
ini memungkinkan pendefinisian dan penggunaan class otcl.
Ini adalah contoh fungsi sederhana otcl. Perhatikan perbedaan antara tcl dan otcl : #fungsi panggilan
class seniro
#create object class seniro
seniro instproc panggilan{}{
#mendefinisikan object class yang sudah didefinisikan
$self instvar NIM_
#cek variabel referensi
puts “ : $NIM_seniro berkata : Kerjakan laporan dengan baik
ya..!”
}
#membuat child class dari seniro
class juniro –superclass seniro
#inheritance class dari class seniro
juniro instproc panggilan {}{
$self instvar NIM_
puts “$NIM_juniro berkata : Siap seniro..!”
}
#buat object seniro dan juniro
set a [new seniro]
$a set NIM_13205149
set b [new juniro]
$b set NIM_13206xxx
#panggil fungsi ‘panggilan’
$a panggilan
PROSEDUR PERCOBAAN
A. Simple Trace
Cygwin – ganti directory ke file tcl yang ingin disimulasi, kemudian eksekusi
langsung dengan perintah :
start x
ns <file tcl-nya>.tcl
Pada percobaan ini file tcl-nya adalah : set ns [new Simulator]
$ns color 1 Blue
$ns color 2 Red
set tracefile1 [open out.tr w]
set winfile [open WinFile w]
$ns trace-all $tracefile1
set namfile [open out.nam w]
$ns namtrace-all $namfile
proc finish {} {
global ns tracefile1 file2 namfile
$ns flush-trace
close $tracefile1
#close $namfile
#exec nam out.nam &
exit 0
}
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
$ns duplex-link $n0 $n2 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns simplex-link $n2 $n3 0.3Mb 100ms DropTail
$ns simplex-link $n3 $n2 0.3Mb 100ms DropTail
$ns duplex-link $n3 $n4 0.5Mb 40ms DropTail
$ns duplex-link $n3 $n5 0.5Mb 30ms DropTail
$ns queue-limit $n2 $n3 20
set file2 [open out.queue w]
$ns trace-queue $n2 $n3 $file2
set tcp [new Agent/TCP/Newreno]
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n4 $sink
$ns connect $tcp $sink
$tcp set fid_ 1
$tcp set window_ 80
$tcp set packetSize_ 552
set ftp [new Application/FTP]
$ftp attach-agent $tcp
set udp [new Agent/UDP]
$ns attach-agent $n1 $udp
set null [new Agent/Null]
$ns attach-agent $n5 $null
$ns connect $udp $null
$udp set fid_ 2
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set packetSize_ 1000
$cbr set rate_ 0.01Mb
$cbr set random_ false
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 124.0 "$ftp stop"
$ns at 124.5 "$cbr stop"
proc plotWindow {tcpSource file} {
global ns
set time 0.1
set now [$ns now]
set cwnd [$tcpSource set cwnd_]
puts $file "$now $cwnd"
$ns at [expr $now+$time] "plotWindow $tcpSource $file"
}
$ns at 0.1 "plotWindow $tcp $winfile"
$ns at 125.0 "finish"
$ns run
Perhatikan baris yang mengandung statemen out.tr dan out.nam . Kedua file inilah
yang akan dihasilkan oleh NS setelah kita menjalankan script di atas (Jelaskan
mengapa?). Dari file .tr, kita bisa mendapatkan gambaran tentang apa yang terjadi
dalam simulasi kita, sementara dari file out.nam, kita bisa memvisualisasikan
proses yang terjadi dengan menggunakan software yang bernama NAM.
a. Analisa Packet Drop
Perhatikanlah file out.tr . Format dan arti dari baris-baris di file tersebut
seharusnya telah anda kerjakan dalam Tugas Pendahuluan. Carilah baris-baris
yang menjelaskan tentang paket yang di-drop. Dan jelaskan mengapa ini bisa
terjadi?
Hint : Ini berhubungan dengan kapasitas maksimal queue dalam link yang
bersangkutan.
b. Analisa 3-way-handshake
Anda telah belajar tentang 3way handshake pada praktikum sebelumnya.
Pada simulasi kali ini, anda bisa melihat bagaimana proses 3-way handshake
itu terjadi. Tolong tampilkan baris-baris mana yang menunjukkan hal tersebut,
dan jelaskan mengapa.
c. Analisa throughput
Jalankan script throughput.pl dengan cara sebagai berikut :
perl throughput.pl out.tr 4 1 > hasil
Lalu plotlah file output tersebut dengan menggunakan software xgraph
dengan cara :
xgraph hasil
Analisalah hasil ini dan sesuaikan dengan teori tentang TCP. Lakukan plot
pula terhadap file WinFile yang dihasilkan dari script TCL di atas.
Bandingkan titik-titik terendah yang menandakan terjadinya packet drop pada
grafik WinFile dan hasil dengan waktu dimana terjadi paket drop yang
sebenarnya (ada hubungannya). Jelaskan hubungan ini. Grafik WinFile
merupakan grafik Window Size terhadap waktu.
Selanjutnya, lakukan perubahan parameter pada sintaks yang ditebali di atas.
Pertama, lakukan perubahan dari simplex-link menjadi duplex-link. Kemudian,
ubah juga nilai queue size untuk link 2-3. Lakukan perubahan juga pada
bandwidth link (variasi terserah praktikan). Analisalah perbedaannya dengan
percobaan default.
B. Simulasi LAN
Dasar Simulasi LAN
Pada simulasi ini, kita akan mencoba mengubah topologi pada percobaan
sebelumnya menjadi topologi LAN. Berikut adalah teori singkat tentang
implementasi LAN pada ns2.
LAN pada NS diimplementasikan dalam bentuk sebuah virtual node dengan
default routing cost link =1/2, sehingga hubungan antar-node pada LAN dianggap
sebagai satu hop.
LAN pada NS terdiri atas LAN node dan LAN link. LAN node memiliki
karakteristik yang sama dengan node pada point to point link. LAN link meliputi
3 layer terbawah pembangun LAN, yakni :
1. Link Layer
2. Medium Access Layer
3. Physical (PHY) Layer
Perintah dasar yang digunakan adalah sebagai berikut.
set lan [$ns newLan <arguments>]
Argumen itu sendiri terdiri dari 7 buah, yaitu :
a) Kumpulan dari node, contoh : $n2 $n3 $n4
b) Delay
c) Bandwidth
d) Tipe dari Link Layer
e) Tipe antrian
f) Tipe protocol MAC (Mac/Csma/Cd atau Mac/802.3)
g) Tipe Channel , e.g. Channel
Lakukan perubahan pada kedua baris ini : $ns duplex-link $n3 $n4 0.5Mb 40ms DropTail
$ns duplex-link $n3 $n5 0.5Mb 30ms DropTail
menjadi : set lan [$ns make-lan trace on "$n3 $n4 $n5" 0.5Mb 40ms LL
Queue/DropTail MAC/802_3 Channel Phy/WiredPhy]
Gambar di atas menunjukkan topologi yang digunakan pada percobaan ini.
Setelah itu, seperti pada percobaan sebelumnya, jalankan script TCL anda.
Perhatikan file out.tr dan out.nam. Untuk mereproduksi simulasi dengan NAM,
anda cukup memanggil program NAM dengan argumen file out.nam .
Lakukanlah analisis pada file out.tr .
a. Analisa menggunakan NAM
Perhatikanlah simulasi dengan software NAM (seharusnya NAM akan
langsung keluar begitu anda mengeksekusi sintaks di atas). Jelaskan
selengkapnya apa yang terjadi, dan apakah perbedaan yang muncul
dibandingkan dengan percobaan tanpa menggunakan LAN!
b. Analisa collision
Perhatikanlah file out.tr anda. Sekarang ada event baru yaitu collision.
Collision akan terjadi pada jaringan Ethernet. Jelaskan mengapa collision bisa
terjadi! Hint : Baris collision muncul secara berpasangan berurutan.
c. Pengubahan parameter
Ubahlah parameter queue dan bandwidth. Perhatikan collision yang terjadi
pada file out.tr . Apakah collision akan bertambah atau berkurang? Jelaskan
menurut sepengetahuan anda mengapa itu bisa terjadi.