You are on page 1of 8

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 set set set opts(bottlenecklinkrate) 1Mb opts(ECN) on n(0) [$ns node] 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 set set set set set $ns $ns $ns $ns $ns $ns n0 n1 n2 n3 n4 n5 [$ns [$ns [$ns [$ns [$ns [$ns node] node] node] node] node] node]

duplex-link $n0 $n2 2Mb 10ms DropTail duplex-link $n1 $n2 2Mb 10ms DropTail simplex-link $n2 $n3 0.3Mb 100ms DropTail simplex-link $n3 $n2 0.3Mb 100ms DropTail duplex-link $n3 $n4 0.5Mb 40ms DropTail 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 $ns $ns $ns at at at at 0.1 "$cbr start" 1.0 "$ftp start" 124.0 "$ftp stop" 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.

You might also like