Network simulator_handbook

79
Edisi pre-revisi (clear screen version) NS2 TUTORIAL handbook

Transcript of Network simulator_handbook

Page 1: Network simulator_handbook

Edisi pre-revisi

(clear screen version)

NS2 TUTORIAL

handbook

Page 2: Network simulator_handbook

1

DAFTAR ISI

1. Sekilas tentang NS2

2. Instalasi NS2 di Windows

3. Dasar – dasar pemrogaman OTCL

4. Tahap-tahap membangun simulasi

5. Konfigurasi parameter jaringan wireless

6. Format file Trace

7. Parameter QoS

8. Post Processing

Page 3: Network simulator_handbook

2

Page 4: Network simulator_handbook

3

BAB I

SEKILAS TENTANG NS2

1.1 Pendahuluan

NS2 adalah sebuah event-driven simulator yang didesain

secara spesifik untuk penelitian dalam bidang jaringan komunikasi

komputer. Sejak kemunculannya pada tahun 1989, NS2 terus-menerus

memperoleh minat yang luar biasa dari kalangan industri, akademik,

dan pemerintah.

NS2 (Network Simulator 2) dikembangkan pertama kali di UCB

(University of California Berkeley) yang didukung oleh DARPA. NS2

merupakan suatu sistem yang bekerja pada sistem Unix/Linux. NS2 juga

dapat dijalankan dalam sistem Windows namun harus menggunakan

Cygwin sebagai Linux Environmentnya.

NS bersifat open-source dibawah GPL (Gnu Public License),

sehingga dapat kita download dan gunakan secara gratis melalui

website NS. Sifat open source tersebut mengkibatkan pengembangan

NS lebih dinamis.

NS2 dibangun dari 2 bahasa pemrogaman yaitu C++, sebagai

library yang berisi event scheduler, protokol, dan network component

yang diimplementasikan pada simulasi oleh user. Kedua adalah bahasa

Tcl/Otcl yang digunakan pada script simulasi yang ditulis oleh NS user.

Otcl juga berperan sebagai interpreter.

Bahasa C++ digunakan pada library karena C++ mampu

mendukung runtime simulasi yang cepat, meskipun simulasi melibatkan

simulasi jumlah paket dan sumber data dalam jumlah besar. Sedangkan

bahasa Tcl memberikan respon runtime yang lebih lambat daripada

C++, namun jika terdapat kesalahan, respon Tcl terhadap kesalahan

syntax dan perubahan script berlangsung dengan cepat dan interaktif.

Page 5: Network simulator_handbook

4

1.2 Arsitektur Dasar

NS2 terdiri dari dari 2 bahasa utama yaitu C++ dan Object-

oriented Tool Command Language (Otcl). Apabila C++ mendefinisikan

mekanisme internal dari objek simulasi, maka Otcl menyusun simulasi

dengan mengumpulkan dan mengatur objek. C++ dan Otcl terhubung

oleh TclCl. Arsitektur dasar dari NS dapat digambarkan seperti berikut:

Gambar 1.0 Arsitektur Dasar NS

Setelah simulasi, output dari hasil simulasi NS2 berupa text-

based dan animation-based. Untuk menginterpretasi hasil output

secara grafis dan interaktif, digunakan sebuah tool seperti NAM

(Network Animator) dan Xgraph. Untuk melakukan analisa behavior

dari jaringan, user dapat mengekstrak bagian yang relevan dari hasil

yang text-based dan mengubah ke dalam bentuk yang dapat dipahami.

Gambar 1.1 Nam Console

Page 6: Network simulator_handbook

5

Gambar 1.2 NAM tool Description

Gambar 1.3 Xgraph

1.3 Komponen Pembangun NS2

Pengetahuan tentang komponen pembangun NS dan letaknya

akan sangat berguna dalam membangun simulasi. Komponen

pembangun NS dapat dilihat seperti gambar di bawah ini.

Page 7: Network simulator_handbook

6

Gambar 1.4 Komponen Pembangun NS2

Keterangan :

Tcl (Tool command language) : Scripting programming untuk

konfigurasi network simulator

Otcl (Object Tcl) : Tcl Interpreter yang melakukan inisiasi event

scheduler, membangun topologi jaringan berbasis objek serta

memberitahu sumber traffic saat memulai dan mengakhiri pengiriman

paket melalui event scheduler.

TK : Tool Kit

Tclcl : merupakan bahasa pemrograman untuk menyediakan linkage

antara C++ dan OTcl berupa class hierarchy, object instantiation,

variable binding dan command dispatching.

NS2 : Network Simulator versi 2

Nam (Network animator) : NAM menyediakan interpretasi visual dari

topologi jaringan yang dibuat.

Page 8: Network simulator_handbook

7

1.4 Hubungan Antar Komponen Pembangun NS2

Deskripsi di bawah ini menunjukkan struktur umum hubungan antar komponen pembangun NS.

Gambar 1.5 Hubungan antar-komponen Pembangun NS

Pada deskripsi ini pengguna NS berada pada pojok kiri bawah,

melakukan desain dan menjalankan simulasi dalam bahasa Tcl. Dalam simulasi, pengguna memanggil dan menggunakan objek simulator pada library Otcl. Event Scheduler dan sebagian besar network component pada NS ditulis dalam bahasa C++. Ini diakses oleh Otcl melalui Otcl linkage yang diimplementasikan dengan menggunakan Tclcl.

Page 9: Network simulator_handbook

8

Page 10: Network simulator_handbook

9

BAB II

INSTALASI NETWORK SIMULATOR (NS2) DI WINDOWS

Sebelum melakukan instalasi NS2, alangkah baiknya jika kita

terlebih dahulu mempersiapkan perangkat keras dan perangkat

lunaknya.

2.1 Perangkat Keras

Spesifikasi PC / laptop yang kita gunakan sangat berpengaruh

pada efisiensi waktu yang kita gunakan. Pada PC dengan spesifikasi

rendah proses instalasi dan validasi bisa menghabiskan waktu seharian

atau bahkan lebih.

2.2 Perangkat Lunak

2.2.1 Operating System (OS) Windows XP

Kenapa mesti Windows ? Sebenarnya NS-2 bekerja pada

environment Unix / Linux. NS-2 dapat langsung kita install di Linux yang

sebelumnya telah diinstall aplikasi pendukungnya seperti gcc, make, dll.

Sekalipun demikian, masih tingginya minat penggunaan Windows di

kalangan mahasiswa, maka penulis mencoba untuk menggunakan

Windows.

2.2.2 Cygwin

Cygwin adalah software yang dapat digunakan sebagai

pengganti environment Linux di Windows. Cara instalasi cygwin dapat

dilakukan melalui manual maupun secara online. Meski demikian,

untuk lebih mudahnya mending dilakukan secara manual seperti yang

akan dijelaskan di bagian selanjutnya. Alasannya adalah paket-paket

instalasi yang tersedia biasanya kurang lengkap dan kalaupun lengkap

Page 11: Network simulator_handbook

10

maka ukuran filenya sangat besar sehingga untuk download

membutuhkan waktu yang cukup lama.

Cygwin bisa didapatkan dengan mendownload dari website

http://www.cygwin.com. Namun paket instalasinya (Cygwin Package)

bisa diperoleh dari repositori yang menyediakan seperti

kambing.vlsm.org, planetmirror.com, bo.mirror.garr.it, dan lain

sebagainya. Dalam hal ini penulis memilih menggunakan paket instalasi

cygwin dari http://ftp.nctu.edu.tw/cygwin/.

2.2.3 Network Simulator 2 (NS2)

NS adalah software yang bersifat open-source dibawah GPL

(Gnu Public License), sehingga dapat kita download dan gunakan secara

gratis melalui website NS. Sifat open source tersebut mengkibatkan

pengembangan NS lebih dinamis. NS-2 ini memiliki banyak versi karena

software ini mengalami banyak pengembangan. Sampai tulisan ini

dibuat, versi terakhir yang dirilis adalah versi NS versi 2.34. Sekalipun

demikian, penulis masih menggunakan NS versi 2.31 karena penulis

sesuaikan dengan file ekstensi atau patch yang diperlukan penulis saat

itu.

2.3 Tahap – tahap instalasi

Tahap 1

Download source dari website NS. Untuk versi 2.30 dan

sebelumnya dapat didownload dari website

http://www.isi.edu/nsnam/dist/. Sedangkan Untuk NS versi 2.31 dan

sesudahnya dapat di download dari

http://sourceforge.net/projects/nsnam/files/. Anda juga dapat

download dari blog lainnya yang telah menyediakan link download.

Page 12: Network simulator_handbook

11

Tahap 2

Install Cygwin pada root direktori yaitu C:\cygwin. Berikut cara

instalasi cygwin:

- Klik setup.exe, kemudian muncul tampilan berikut:

Gambar 2.1 tampilan awal instalasi cygwin

- Pilih surce untuk install dari local directory. Inilah yang penulis

maksud install secara manual.

Gambar 2.2 memilih source install

Page 13: Network simulator_handbook

12

- Pilih direktori untuk instalasi yaitu pada C:\cygwin

Gambar 2.3 direktori instalasi cygwin

- Pilih local package directory

Gambar 2.4 memilih local package directori

Page 14: Network simulator_handbook

13

- Klik View untuk melihat Category diubah ke full

Gambar 2.5 melihat Category

Gambar 2.6 Tampilan setelah di klik view

- Klik semua skip untuk kelangkapan instalasi ns2

Page 15: Network simulator_handbook

14

Gambar 2.7 Tampilan setelah klik skip

- Instalasi Cygwin sedang berlangsung

Gambar 2.8 Instalasi Cygwin

- Instalasi selesai lalu klik finish

Page 16: Network simulator_handbook

15

Tahap 3

Buka aplikasi cygwin dan akan muncul tampilan awal seperti berikut :

Gambar 2.9 Tampilan awal cygwin

*catatan : direktori /home akan muncul setelah Anda membuka

aplikasi cygwin ini untuk pertama kalinya.

Tahap 4

Letakkan file ns-allinone-2.31.tar.gz ke dalam folder atau direktori

/home/wahyu*.

*Catatan : direktori /wahyu silakan diganti dengan nama komputer

masing – masing.

Tahap 5

Masuk ke dalam direktori /wahyu lalu ekstrak source ns-

allinone-2.31. tar.gz dengan perintah:

$ tar –zxvf ns-allinone-2.31.tar.gz

Page 17: Network simulator_handbook

16

Gambar 2.10 Ekstraksi file ns-allinone-2.31.tar.gz

Tahap 6

Masuk ke dalam direktori /ns-allinone-2.31 dengan

menggunakan perintah:

$ cd ns-allinone-2.31

Tahap 7

Lakukan instalasi dengan mengetikkan perintah:

$ ./install

Page 18: Network simulator_handbook

17

Gambar 2.11 proses instalasi

Tahap 8

Apabila instalasi berhasil dilakukan, maka di bagian akhir

instalasi akan muncul petunjuk untuk tahapan selanjutnya

sebagaimana terlihat pada gambar berikut:

Page 19: Network simulator_handbook

18

Gambar 2.12 tampilan setelah instalasi berhasil

Tahap 9

Lakukan proses update environment dengan menambahkan

beberapa baris command berikut pada /etc/profile

export PATH=/home/wahyu/ns-allinone-2.31/bin:/home/wahyu/ns-

allinone-2.31/tcl8.4.14/unix:/home/wahyu/ns-allinone-

2.31/tk8.4.14/unix:$PATH

export LD_LIBRARY_PATH=/home/wahyu/ns-allinone-2.31/otcl-

1.13:/home/wahyu/ns-allinone-2.31/lib:$PATH

export TCL_LIBRARY=/home/wahyu/ns-allinone-

2.31/tcl8.4.14/library:$PATH

Tahap 10

Lakukan pengujian dengan mengetikkan command:

$ns

Page 20: Network simulator_handbook

19

Apabila keluar tanda % maka NS2 siap digunakan. Namun apabila

terdapat pesan error lakukan restart cygwin

Page 21: Network simulator_handbook

20

Page 22: Network simulator_handbook

21

BAB III

DASAR DASAR PEMROGAMAN OTCL

NS merupakan OTCL interpreter. Sebelum menuliskan

command-command di script OTCL sebaiknya kita mengetahui sedikit

bahasa OTCL. OTCL sama seperti bahasa pemrogaman lain yang kita

kenal sebelumnya. Berikut penjelasannya:

• Mendefinisikan variabel

set variabel1 “varibelku”

set variabel2 12

Setelah mendefinisikan nama variabel, setiap penggunaan variabel

tersebut diawali dengan tanda $

$variabel1 = 1

• Menuliskan standart output

puts “variabel1 bernilai $variabel1”

• Penulisan ekspresi numerik

set variabel3 [expr $variabel1 + $variabel2]

• Pemanggilan file

set file [open namafile w]

• Pengulangan

- Pengulangan for

for {set i 0} {$i<20} {incr i}

{puts “nilai i adalah $i”}

- Pengulangan while

Page 23: Network simulator_handbook

22

set i 1

while {$i<5}

{

<command anda >

incr i

}

• Ungkapan kondisi

if {kondisi}

{

<command anda>

}

Else

{

<command anda>

}

• Komentar yang tidak diproses dalam program didahului tanda #

# ini adalah komentar

Page 24: Network simulator_handbook

23

BAB IV

TAHAP-TAHAP MEMBANGUN SIMULASI

Untuk membangun sebuah simulasi jaringan digunakan

beberapa langkah penulisan program yang disusun dalam bahasa TCL

sebagai berikut:

- Membuat objek simulator

- [melakukan setting nam dan tracing]

- Menambahkan node

- [melakukan setting Attribut node]

- Menambahkan link antar node

- [melakukan setting Attribut link]

- Menambahkan agent pada node

- Menambahkan traffic pada agent

- [melakukan setting parameter trafik]

- Melakukan setting event scheduling

- Menjalankan simulasi

Sebelum dipaparkan lebih lanjut mengenai susunan skrip

simulasi NS2, perlu diperhatikan sedikit penjelasan berikut untuk lebih

memudahkan pemahaman.

∞ Skrip apapun yang di awali dengan tanda ‘#’ merupakan comment

dan tidak dieksekusi dalam program

∞ Tulisan yang dicetak tebal (bold) merupakan sebuah kata kunci

∞ Tulisan yang dicetak miring (italic) merupakan variabel pointer

yang dapat didefinisikan sendiri

∞ Tulisan yang dicetak miring (italic) dan berada dalam tanda “<>”

merupakan opsi yang bisa diganti dengan pilihan parameter.

Page 25: Network simulator_handbook

24

4.1 Membuat objek Simulator

#membuat objek simulator

set ns [new simulator]

==========================================================

# contoh skrip dalam simulasi

set ns [new simulator]

==========================================================

Keterangan :

ns merupakan variabel pointer yang merujuk pada objek simulator

# command yang berhubungan dengan objek simulator

$ns now ; #mendefinisikan waktu sekarang

$ns halt ;#stop / pause simulation

4.2 melakukan setting nam dan tracing

#set nam tracing

#membuat file namtrace

set nf [open latihan.nam <permission>]

$ns <namtracetype> $nf ;# setting tipe nam trace

==========================================================

# contoh skrip dalam simulasi

set filetr [open latihan.tr w]

$ns trace-all $filetr

==========================================================

Keterangan :

<permission>, diantaranya :

r : read only

w : read and write

Page 26: Network simulator_handbook

25

<namtracetype>, diantaranya:

namtrace-all : melakukan trace semua proses

yaitu enque, deque, dan drop pada semua trafik

namtrace-queue $src $dst : melakukan trace semua proses

yaitu enque, deque, dan drop hanya pada trafik diantara node src dan

node dst.

#set ns tracing

#mencetak trace file

set tf [open latihan.tr <permission> ]

$ns <tracetype> $tf ;#setting tipe trace file

==========================================================

# contoh skrip dalam simulasi

set filenam [open latihan.nam w]

$ns namtrace-all $filenam

==========================================================

Keterangan :

<permission>, diantaranya :

r : read only

w : read and write

<tracetype>, diantaranya:

trace-all : melakukan trace semua proses yaitu enque,

deque, dan drop pada semua trafik

trace-queue $src $dst : melakukan trace semua proses yaitu enque,

deque, dan drop hanya pada trafik diantara node src dan node dst.

#command yang berhubungan dengan nam trace dan ns trace

$ns flush-trace ;#mem-flush buffers untuk semua objek trace

$ns create-trace <tipeobjektrace> $pointer $src $dst <tipetrace>

Page 27: Network simulator_handbook

26

Command tersebut digunakan untuk membuat trace salah satu

tipeobjektrace antara node src dan node dst untuk salah satu tipetrace

yang mengembalikan nilai variabel pointer ke tipetrace dan

memberikannya pada pointer.

$ns drop-trace $src $dst $traceobjekpointer

Command tersebut digunakan untuk menjadikan trace yang tersedia,

yaitu tipeobjektrace menjadi sebuah sebab hilangnya paket saat

diantrikan antara src dan dst.

Keterangan :

traceobjekpointer : variabel pointer untuk melakukan tracing objek

yang telah dibuat.

pointer : variabel pointer untuk melakukan tracing objek

yang akan dibuat.

<tipeobjektrace>, antara lain :

enque : kedatangan paket

deque : keberangkatan paket

drop : Paket drop

recv : event sebuah paket diterima pada node tujuan

<tipetrace>, antara lain :

nam : tipe trace untuk animasi

trace : tipe trace untuk analisa

4.3 Menambahkan Node

set n0 [$ns node]

==========================================================

# contoh skrip dalam simulasi

set n0 [$ns node]

==========================================================

Page 28: Network simulator_handbook

27

keterangan :

n0 : merupakan variabel pointer dalam pembuatan node

4.4 Melakukan setting Attribut Node

Ada beberapa attribut node untuk merubah bentuk, warna,

maupun label. Adapun penulisannya adalah sebagai berikut:

$n0 <param> <val>

==========================================================

# contoh skrip dalam simulasi

$node0 color “red”

$node0 shape “box”

$node0 label “node 0”

==========================================================

Dimana

<param>, terdiri dari :

color : melakukan perubahan warna node

shape : melakukan perubahan bentuk node

label : memberikan label sebuah node

<val>, diantaranya :

Jika <param> yang digunakan adalah color, maka <val> adalah:

“red” : untuk warna merah

“blue” : untuk warna biru

“green” : untuk warna hijau, dan lain sebagainya

Jika <param> yang digunakan adalah shape, maka <val> adalah:

“circle” : untuk bentuk node lingkaran

“box” : untuk bentuk node kotak

“hexagon” : untuk bentuk node segi-enam, dan lain sebagainya

Page 29: Network simulator_handbook

28

Jika <param> yang digunakan adalah label, maka <val> berupa label

node tersebut. Label ini akan muncul ketika file *.nam dijalankan.

4.5 Menambahkan Link antar Node

$ns <tipelink> $src $dst <bw> <delay> <tipequeue>

==========================================================

# contoh skrip dalam simulasi

$ns duplex-link $node0 $node1 100Mb 10ms DropTail

==========================================================

Keterangan:

<tipelink>, diantaranya:

simplex-link : komunikasi searah dari satu node ke node lain

duplex-link : komunikasi dua arah antar node

<bw>, merupakan link bandwidth pada sebuah kanal jaringan.

Pada jaringan LAN, kabel yang biasa digunakan adalah Fast Ethernet [2]

atau dengan istilah lain 100BaseT Ethernet. Fast Ethernet memiliki link

bandwidth / data rate sebesar 100Mbps.

<delay>, merupakan link delay pada sebuah kanal jaringan.

Perlu diperhatikan bahwa penentuan jarak link pada NS dilakukan

dengan menggunakan parameter delay propagasi link. Delay propagasi

adalah delay yang dipengaruhi oleh kecepatan gelombang

elektromagnetik pada media transmisi [3].

<tipequeue>, Setiap link memiliki tipe antrian mulai dari enqueue

(masuk) hingga deque (keluar), diantaranya:

DropTail : FIFO atau First In First Out

FQ : Fair Queuing

SFQ : Statistical Fair Queuing

DRR : Deficit Round Robin

Page 30: Network simulator_handbook

29

CBQ : Class Based Queuing

RED : Random Early Detection

4.6 Melakukan setting attribut Link

Cara penulisan attribut link adalah sebagai berikut:

$ns <tipelink>-op $src $dst <param> <val>

==========================================================

# contoh skrip dalam simulasi

$ns duplex-link-op $node0 $node1 color “blue”

$ns duplex-link-op $node0 $node1 orient right-up

==========================================================

Keterangan :

<tipelink>, diantaranya:

simplex-link : komunikasi searah dari satu node ke node lain

duplex-link : komunikasi dua arah antar node

<param>, diantaranya :

1. color : memberikan warna link

<val> untuk color adalah sebagai berikut :

“red” : untuk warna merah

“blue” : untuk warna biru

“green” : untuk warna hijau, dan lain sebagainya

2. label : memberikan label link

<val> untuk label adalah “<text>”

3. queuePos : posisi Queue

<val> untuk label adalah <num_double> yang menunjukkan jumlah

queuePos

4. orient : memberikan posisi / arah link

Page 31: Network simulator_handbook

30

<val> untuk orient adalah sebagai berikut :

right : node2 berada di sebeah kanan node1

left : node2 berada di sebeah kiri node1

up : node2 berada di atas node1

down : node2 berada di bawah node1

right-up : node2 berada di sebeah kanan atas node1

right-down : node2 berada di sebeah kanan bawah node1

left-up : node2 berada di sebeah kiri atas node1

left-down : node2 berada di sebeah kiri bawah node1

up-right : node2 berada di sebeah atas kanan node1

down-right : node2 berada di sebeah bawah kanan node1

up-left : node2 berada di sebeah atas kiri node1

down-left : node2 berada di sebeah bawah kiri node1

<deg_double> : node2 berada di sebelah kiri node1 sebesar

deg_double derajat

Adapun untuk melakukan pengaturan antrian secara umum

adalah sebagai berikut:

$ns queue-limit $src $dst <limit>

==========================================================

# contoh skrip dalam simulasi

$ns queue-limit $node0 $node1 20

==========================================================

Dimana <limit> merupakan jumlah antrian paket.

Selain beberapa attribut di atas, juga terdapat pengaturan

parameter antrian (queue) sebuah link seperti di bawah ini:

set antri [[$ns link $src $dst] queue]

$antri set <param> <val>

Page 32: Network simulator_handbook

31

Keterangan:

1. Untuk semua tipe antrian parameter yang digunakan adalah :

<param>, antara lain:

limit_ : besar antrian paket

blocked_ : enabling/disabling antrian blok

unblock_on_resume_ : enabling/disabling antrian blok otomatis

nilai <val> dari limit_ berupa jumlah paket

2. Untuk FQ antrian parameter yang digunakan adalah :

<param>, antara lain:

secsPerByte_ : seconds per byte

nilai <val> dari secsPerByte_ berupa bilangan double

3. Untuk SFQ antrian parameter yang digunakan adalah :

<param>, antara lain:

maxqueue_ : maksimum antrian paket

nilai <val> dari maxqueue_ berupa bilangan integer

buckets_ : jumlah buckets yang digunakan untuk hashing flow

nilai <val> dari buckets_ berupa bilangan integer

4. Untuk DRR antrian parameter yang digunakan adalah :

<param>, antara lain:

buckets_ : jumlah buckets yang digunakan untuk hashing flow

nilai <val> dari buckets_ berupa bilangan integer

blimit_ : ukuran shared buffer dalam bytes

nilai <val> dari blimit_ berupa bilangan integer

quantum_ : flow rate dalam bytes

nilai <val> dari quantum_ berupa bilangan integer

Page 33: Network simulator_handbook

32

mask_ : jika bernilai true, flow terdiri atas paket dengan id

node yang sama

nilai <val> dari mask_ berupa true atau false

5. Untuk RED antrian parameter yang digunakan adalah :

<param>, antara lain:

bytes_ : jika bernilai true, byte-mode RED diaktifkan

nilai <val> dari bytes_ berupa true atau false

queue-in-bytes_ : jika bernilai benar, ukuran antrian rata-rata diukur

dalam bytes.

nilai <val> dari queue-in-bytes_ berupa true atau false

thresh_ : minimum threshold untuk ukuran antrian rata-rata

paket.

nilai <val> dari thresh_ berupa bilangan double

maxthresh_ : maximum threshold untuk ukuran antrian rata-rata

paket.

nilai <val> dari maxthresh_ berupa bilangan double

mean_pktsize_ : perkiraan ukuran paket rata-rata dalam bytes.

nilai <val> dari mean_pktsize_ berupa bilangan integer

q_weight_ : bobot antrian, digunakan dalam menghitung ukuran

antrian rata-rata.

nilai <val> dari q_weight_ berupa bilangan double

wait_ : Jika bernilai true, interval antara paket drop terjaga.

nilai <val> dari wait_ berupa bilangan true atau false

linterm_ : probabilitas paket drop antara 0 - 1

nilai <val> dari linterm_ berupa bilangan double

setbit_ : Jika bernilai true, paket akan ditandai dengan

ditambahkannya CIB dalam header paket.

Page 34: Network simulator_handbook

33

nilai <val> dari setbit_ berupa bilangan true atau false

drop-tail_ : Jika bernilai true, drop-tail digunakan pada antrian.

nilai <val> dari drop-tail_ berupa bilangan true atau false

4.7 Menambahkan Agent pada Node

Transport agent pada NS2 ini digunakan untuk

mensimulasikan transport layer pada komunikasi TCP/IP. Transport

layer merupakan layer komunikasi yang mengatur komunikasi data

yang akan digunakan oleh layer di atasnya yaitu aplikasi.

Pada simulasi pengiriman data, transport agent tidak dapat

berdiri sendiri namun membutuhkan lapisan aplikasi di atasnya sebagai

trafik generator. Untuk membuat transport agent digunakan perintah :

set agt [new Agent/<agent>]

Lalu untuk menambahkan agent tersebut pada node

digunakan perintah:

$ns attach-agent $n0 $agt

Keterangan :

1. TCP (Transport Control Protocol)

Pada TCP, <agent> terdiri dari:

TCP : node pengirim TCP “Tahoe” (cwnd = 1 on any loss)

TCP/Reno : node pengirim TCP “Reno” (with fast recovery)

TCP/Newreno : node pengirim TCP Reno yang telah dimodifikasi

TCP/FullTCP : TCP yang memiliki fungsi penuh dengan trafik 2 arah

TCPSink :node Penerima TCP Reno atau Tahoe (tidak

digunakan pada FullTcp)

TCPSink/DelAck : node penerima dengan ACK terdelay

2. UDP (User Datagram Protocol)

Page 35: Network simulator_handbook

34

Pada UDP, <agent> terdiri dari:

UDP : merupakan agent pengirim UDP

LossMonitor : node penerima paket dengan pengecekan paket loss

Null : Merupakan pasangan UDP sebagai tujuan trafik

3. RTP (Real Time Protocol)

Pada RTP, <agent> terdiri dari:

RTP : Merupakan agent pengirim RTP

Null : Merupakan pasangan RTP sebagai tujuan trafik

Setelah itu, kedua node yang telah diberi agent dihubungkan

satu sama lain dengan perintah:

$ns connect $agt0 $agt1

==========================================================

# contoh skrip dalam simulasi

# untuk UDP

set udp0 [new Agent/UDP]

$ns attach-agent $node0 $udp0

set null0 [newAgent/Null]

$ns attach-agent $node1 $null0

$ns connect $udp0 $null0

# untuk TCP

set tcp0 [new Agent/TCP]

$ns attach-agent $node0 $tcp0

set sink0 [new Agant/TCPSink]

$ns attach-agent $node1 $sink0

$ns connect $tcp0 $sink0

==========================================================

Page 36: Network simulator_handbook

35

Selain metode di atas, terdapat metode lain dalam

menambahkan agent pada node dan menghubungkan kedua agent

yaitu ditulis dalam satu baris perintah seperti berikut:

set agt [$ns create-connection <agt0> $src <agt1> $dst <pktclass>]

==========================================================

# contoh skrip dalam simulasi

set tcp0 [$ns create-connection TCP $node0 TCPSink $node1 1]

==========================================================

4.8 Menambahkan Trafik / Aplikasi

set app [new Application/<traffic>]

$app attach-agent $agt ; #menambahkan trafik pada agent

==========================================================

# contoh skrip dalam simulasi

# contoh FTP

set ftp0 [new Application/FTP]

$ftp0 attach-agent $tcp0

# contoh CBR

set cbr0 [new Application/Traffic/CBR]

$cbr0 attach-agent $udp0

==========================================================

keterangan :

<tarffic>, Diantaranya:

1. Untuk TCP berupa aplikasi, yaitu:

FTP : Aplikasi FTP untuk Agent TCP

Telnet : Aplikasi Telnet untuk Agent TCP

Page 37: Network simulator_handbook

36

2. Untuk UDP berupa trafik generator, yaitu:

Traffic/CBR : Trafik generator CBR untuk agent UDP

Traffic/Exponential : Trafik Exponential untuk Agent UDP / RTP

Traffic/Pareto : Trafik Pareto untuk Agent UDP

4.9 Melakukan setting Parameter Trafik

$app set <param> <val>

==========================================================

# contoh skrip dalam simulasi

# untuk CBR

$cbr0 set rate_ 1Mb

$cbr0 set interval_ 300ms

$cbr0 set packetSize_ 1024

$cbr0 set random 1

# untuk Pareto

$pareto set packetSize_ 210

$pareto set burst_time_ 500ms

$pareto set iddle_time_ 500ms

==========================================================

Keterangan :

1. Untuk semua jenis trafik, parameter yang dapat digunakan adalah:

<param>, diantaranya:

packetSize_ : ukuran paket dalam bytes

nilai <val> dari packetSize_ adalah bilangan integer

rate_ : kecepatan trafik dalam bps

nilai <val> dari rate_ adalah bilangan double

interval_ : Interval pengiriman paket dalam second

nilai <val> dari interval_ adalah angka dalam second

Page 38: Network simulator_handbook

37

2. Untuk trafik CBR, parameter yang digunakan adalah:

<param>, diantaranya:

random_ : Jika bernilai true, random noise akan digunakan

nilai <val> dari random_ adalah true atau false

maxpkts_ : ukuran paket maksimum

nilai <val> dari maxpkts_ adalah bilangan double

3. Untuk Trafik Exponential, parameter yang digunakan adalah:

<param>, diantaranya:

burst_time_ : lama burst-time dalam second

nilai <val> dari burst_time_ adalah double

idletime_ : lama off-time dalam second

nilai <val> dari idletime_ adalah bilangan double

4. Untuk Trafik Pareto, parameter yang digunakan adalah:

<param>, diantaranya:

burst_time_ : lama burst-time dalam second

nilai <val> dari burst_time_ adalah double

iddletime_ : lama off-time dalam second

nilai <val> dari idletime_ adalah bilangan double

shape_ : parameter shape yang digunakan distribusi pareto

nilai <val> dari shape_ adalah bilangan double

Untuk simulasi jaringan wireless LAN, ukuran paket yang

digunakan diantaranya paket voip berukuran 150 bytes sedangkan

paket FTP berukuran 150 – 1500 bytes.

4.10 Melakukan Setting Event Scheduling

$ns at <time> “<event>”

Page 39: Network simulator_handbook

38

==========================================================

# contoh skrip dalam simulasi

$ns at 5.0 “$cbr0 start”

$ns at 35.0 “$cbr0 stop”

$ns at 1.0 “$MN setdest 400.0 100.0 5”

$ns at 40.0 “stop”

==========================================================

Keterangan:

<time> : dalam second

<event> : semua TCL command

Beberapa command yang berhubungan dengan event scheduler :

$ns at <time> “$app start” ;# trafik mulai dijalankan

$ns at <time> “$app stop” ;# pengiriman trafik dihentikan

$ns cancel “<event>” ;# men-cancel sebuah event

$ns after <dly> “<event>” ;# menjadwalkan trafik setelah dly

Keterangan :

<event> : semua TCL command

<dly> : delay dalam second (s) / milisecond (ms) /

mikrosecond (us)

4.11 Menjalankan Simulasi

$ns run

Page 40: Network simulator_handbook

39

Contoh Kasus:

1. Duplex Link sederhana

#Create a simulator object

set ns [new Simulator]

#Open the nam trace file

set nf [open out.nam w]

$ns namtrace-all $nf

#Define a 'finish' procedure

proc finish {} {

global ns nf

$ns flush-trace

#Close the trace file

close $nf

#Execute nam on the trace file

exec nam out.nam &

exit 0

}

#Create two nodes

set n0 [$ns node]

set n1 [$ns node]

#Create a duplex link between the nodes

$ns duplex-link $n0 $n1 2Mb 10ms DropTail

Page 41: Network simulator_handbook

40

#Call the finish procedure after 5 seconds of simulation time

$ns at 5.0 "finish"

#Run the simulation

$ns run

2. UDP Flow Sederhana

#Create a simulator object

set ns [new Simulator]

#Open the nam trace file

set nf [open out.nam w]

$ns namtrace-all $nf

#Define a 'finish' procedure

proc finish {} {

global ns nf

$ns flush-trace

#Close the trace file

close $nf

#Execute nam on the trace file

exec nam out.nam &

exit 0

}

#Create two nodes

set n0 [$ns node]

Page 42: Network simulator_handbook

41

set n1 [$ns node]

#Create a duplex link between the nodes

$ns duplex-link $n0 $n1 2Mb 10ms DropTail

$ns duplex-link-op $n0 $n1 color “blue”

$ns duplex-link-op $n0 $n1 orient right-up

#Create a UDP agent and attach it to node n0

set udp0 [new Agent/UDP]

$ns attach-agent $n0 $udp0

# Create a CBR traffic source and attach it to udp0

set cbr0 [new Application/Traffic/CBR]

$cbr0 set packetSize_ 1Kb

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

#Create a Null agent (a traffic sink) and attach it to node n1

set null0 [new Agent/Null]

$ns attach-agent $n1 $null0

#Connect the traffic source with the traffic sink

$ns connect $udp0 $null0

#Schedule events for the CBR agent

$ns at 0.5 "$cbr0 start"

$ns at 4.5 "$cbr0 stop"

#Call the finish procedure after 5 seconds of simulation time

$ns at 5.0 "finish"

#Run the simulation

$ns run

Page 43: Network simulator_handbook

42

Page 44: Network simulator_handbook

43

BAB V

KONFIGURASI PARAMETER JARINGAN WIRELESS

Jaringan wireless banyak digunakan untuk simulasi mobile IP.

Jaringan mobile IP memiliki dua domain yaitu domain wired dan

domain wireless. Pada domain wireless terdapat mobile node (MN) dan

base station (BS) node sebagai interface antara jaringan wired dengan

jaringan wireless. Sebuah mobile node memiliki kemampuan untuk

melakukan pergerakan dari sebuah titik menuju titik lainnya serta

mengirim dan menerima data.

Untuk melakukan simulasi jaringan wireless, ada beberapa hal

yang perlu dilakukan konfigurasi terhadap parameter node pada

domain wireless. Secara umum konfigurasi domain wireless

diantaranya seperti berikut:

set opt(chan) <chan>

set opt(prop) <prop>

set opt(phy) <phy>

set opt(mac) <mac>

set opt(ifq) <ifq>

set opt(ll) <ll>

set opt(ant) <ant>

set opt(ifqlen) <ifqlen>

set opt(nn) <nn>

set opt(rtp) <rtp>

set opt(x) <x>

set opt(y) <y>

set opt(seed) <seed>

set opt(stp) <stp>

Page 45: Network simulator_handbook

44

Keterangan :

opt() merupakan opsi dari sebuah array

<chan>, yaitu :

Channel/WirelessChannel : merupakan tipe dari channel wireless

<prop>, digunakan untuk menentukan model radio propagasi.

Diantaranya yaitu :

Propagation/TwoRayGround : digunakan untuk mensimulasikan

jaringan 802.11 pada lingkungan terbuka (jarak transmisi 100 m atau

lebih)

Propagation/Shadowing : digunakan untuk mensimulasikan

jaringan 802.11 pada lingkungan tertutup (jarak transmisi sekitar 25 m)

<phy>, yaitu :

Phy/WirelessPhy : merupakan tipe dari interface jaringan

<mac>, yaitu :

Mac/802_11: merupakan mac layer untuk jaringan wireless

<ifq>, yaitu :

Queue/DropTail/PriQueue : interface antrian untuk metode

routing dsdv

CMUPriQueue : interface antrian untuk metode

routing dsr

<ll>, yaitu :

LL: mendefinisikan tipe link layer

<ant>, yaitu :

Antenna/OmniAntenna: tipe antenna yang digunakan adalah omni

directional

<ifqlen>, merupakan batas antrian maksimum paket dalam bilangan

integer

Page 46: Network simulator_handbook

45

<nn>, merupakan jumlah mobile node yang digunakan dalam simulasi

dan dinyatakan dengan bilangan integer

<rtp>, yaitu :

DSDV : Destination Sequence Distance Vector

DSR : Dynamic Source Routing

TORA : Temporarily ordered Routing Algorithm

AODV : Adhoc On-demand Distance Vector

<x>, merupakan dimensi dari topografi untuk sumbu x (horizontal)

dinyatakan dengan bilangan double

<y>, merupakan dimensi dari topografi untuk sumbu y (horizontal)

dinyatakan dengan bilangan double

<seed>, menyatakan random seed dalam bilangan double

<stp>, menyatakan waktu berakhirnya simulasi dalam bilangan double

Selanjutnya, dilakukan konfigurasi tersebut di diberikan pada

node yang akan digunakan dalam domain wireless dengan perintah

berikut:

$ns node-config <param> $<opt>

Keterangan :

<param>, meliputi :

- addressType

<opt> untuk addressType adalah flat atau hierarchical

- adhocRouting

<opt> untuk adhocRouting adalah $opt(chan) seperti yang telah

didefinisikan sebelumnya

- llType

<opt> untuk llType adalah $opt(ll) seperti yang telah didefinisikan

sebelumnya

Page 47: Network simulator_handbook

46

- macType

<opt> untuk macType adalah $opt(mac) seperti yang telah

didefinisikan sebelumnya

- propType

<opt> untuk propType adalah $opt(prop) seperti yang telah

didefinisikan sebelumnya

- ifqType

<opt> untuk ifqType adalah $opt(ifq) seperti yang telah

didefinisikan sebelumnya

- ifqLen

<opt> untuk ifqLen adalah $opt(ifqlen) seperti yang telah

didefinisikan sebelumnya

- phyType

<opt> untuk phyType adalah $opt(phy) seperti yang telah

didefinisikan sebelumnya

- antType

<opt> untuk antType adalah $opt(ant) seperti yang telah

didefinisikan sebelumnya

- channelType

<opt> untuk channelType adalah $opt(chan) seperti yang telah

didefinisikan sebelumnya

- wiredRouting

<opt> untuk wiredRouting adalah ON atau OFF, apabila node

digunakan sebagai Access point atau Access Router maka <opt>

yang digunakan adalah ON, namun apabila node digunakan

sebagai Mobile node maka <opt> yang digunakan adalah OFF

- mobileIP

<opt> untuk mobileIP adalah ON atau OFF

Page 48: Network simulator_handbook

47

- agentTrace

<opt> untuk agentTrace adalah ON atau OFF

- routerTrace

<opt> untuk routerTrace adalah ON atau OFF

- macTrace

<opt> untuk macTrace adalah ON atau OFF

- movementTrace

<opt> untuk movementTrace adalah ON atau OFF

- initialEnergy

<opt> untuk initialEnergy berupa angka dinyatakan dalam satuan

Joules

- rxPower

<opt> untuk rxPower berupa angka dinyatakan dalam satuan Watt

- txPower

<opt> untuk txPower berupa angka dinyatakan dalam satuan Watt

Dalam pemberian parameter sebuah node dapat dituliskan

secara berurutan menyamping maupun ke bawah. Contoh pemberian

parameter secara menyamping yaitu :

==========================================================

# contoh skrip dalam simulasi

$ns_ node-config -mobileIP ON -mipv6 ON -adhocRouting NOAH

==========================================================

Namun untuk pemberian parameter secara berurutan ke bawah

diberikan tanda backslash (\) untuk menghubungkan antar parameter

seperti contoh berikut:

Page 49: Network simulator_handbook

48

==========================================================

# contoh skrip dalam simulasi

$ns_ node-config -mobileIP ON \

-mipv6 ON \

-adhocRouting NOAH \

-llType LL \

-macType Mac/802_11 \

-ifqType Queue/DropTail/PriQueue \

-ifqLen $val(ifqlen) \

-antType Antenna/OmniAntenna \

-propType Propagation/TwoRayGround \

-phyType Phy/WirelessPhy \

-channel new(Channel/WirelessChannel) \

-topoInstance $topo \

-wiredRouting ON \

-agentTrace ON \

-routerTrace ON \

-macTrace ON \

-movementTrace ON

==========================================================

Secara khusus, terdapat beberapa konfigurasi tambahan untuk

mensimulasikan jaringan wireless seperti standar IEEE 802.11 b. Secara

detail akan dipaparkan berikut ini.

Beberapa parameter yang digunakan untuk melakukan simulasi

wireless IEEE802.11b dengan metode transmisi DSSS adalah sebagai

berikut:

Mac/802_11 set slotTime_ 0.000020 ;#20 us

Mac/802_11 set SIFS_ 0.000010 ;#10 us

Mac/802_11 set PreambleLength_ 144 ;#144 bit

Mac/802_11 set PLCPHeaderLength_ 48 ;#48 bit

Mac/802_11 set PLCPDataRate_ 1.0e6 ;#1 Mbps

Mac/802_11 set dataRate_ 11.0e6 ;#11 Mbps

Mac/802_11 set basicRate_ 1.0e6 ;#1 Mbps

Page 50: Network simulator_handbook

49

Selanjutnya untuk melakukan setting di sisi physical Layer dapat

digunakan parameter berikut:

Phy/WirelessPhy set Pt_ 0.031622777 ;#daya 15 dBm

Phy/WirelessPhy set bandwidth_ 11Mb ;#bandwidth 1 Mb

Phy/WirelessPhy set freq_ 2.4e9 ;#freq 2.4 GHz

Phy/WirelessPhy set CPThresh_ 10.0 ;#collision threshold

Phy/WirelessPhy set CSThresh_ 6.309573e-11 ;#-72 dBm

Phy/WirelessPhy set L_ 1.0 ;#system loss factor

Phy/WirelessPhy set RXThresh_ 3.12896e-10 ;#-65 dBm

Perbedaan antara RXThreshold, CSThreshold, dan CPThreshold adalah

sebagai berikut:

RXThreshold : Ketika sebuah paket tiba pada sebuah node dengan level

daya dibawah RXThreshld, node tersebut akan menerima paket

tersebut dalam keadaan rusak (paket tdk terbaca), namun paket

tersebut dipahami telah terkirim selama t detik

CSThreshold : Ketika sebuah paket tiba pada sebuah node dengan level

daya dibawah CSThresh_, node tersebut tidak dapat mendeteksi bahwa

paket tersebut telah dikirimkan selama t detik sehingga dianggap

jaringan sedang idle.

CPThreshold : Misalkan sebuah paket ‘A’ sedang dikirim menuju sebuah

node selama t detik. Apabila pengiriman paket lain (‘B’) dimulai di saat

t detik tersebut dan paket ‘B’ mendekati sebuah node dengan level

daya CPThreshold di bawah level daya terima paket ‘A’ (dalam satuan

dB), maka paket ‘A’ akan tetap bertahan (node dapat membaca paket

tersebut). Jika sebaliknya, maka paket ‘A’ akan bertabrakan dengan

paket ‘B’ (node tidak dapat membaca kedua paket).

Untuk mendapatkan nilai Threshold pada NS2 telah disediakan

tools untuk melakukan perhitungan yang terdapat pada direktori

/indep-utils/propagation. Pada direktori tersedia file threshold.cc yang

Page 51: Network simulator_handbook

50

harus di-compile terlebih dahulu agar dihasilkan file threshold.exe .

Cara meng-compile file dapat dilakukan dengan mengetikkan command

berikut:

$ g++ -lm –o threshold threshold.cc

Selanjutnya untuk melakukan perhitungan threshold dapat dilakukan

dengan mengetikkan command :

$ ./threshold –m <Propagation Model> [other options] distance

Dimana :

<propagation model> : FreeSpace, TwoRayGround atau Shadowing

[other options] : terdiri dari common parameter dan specific parameter

Common Parameter :

-Pt <transmit power>

-fr <frequency>

-Gt <transmit-antenna-gain>

-Gr <receive-antenna-gain>

-L <system-loss>

Untuk TwoRayGround :

-ht <transmit-antenna-height>

-hr <receive-antenna-height>

Dengan langkah tersebut maka untuk menentukan Threshold pada

coverage area sebesar 100 meter dan daya pancar antena 15 dBm

maka command yang digunakan adalah sebagai berikut :

./threshold –m TwoRayGround –Pt 0.031622777 –fr 2.4e9 –Gt 1 –Gr 1 –

L 1.0 –ht 1.5 –hr 1.5 100

Dari command tersebut akan diperoleh nilai RxThresh_ sebesar

3,12896x1010

atau setara dengan -65 dBm

Page 52: Network simulator_handbook

51

Contoh Kasus:

1. Simple wireless

# simple-wireless.tcl

# A simple example for wireless simulation

# =====================================================================

# Define options

# =====================================================================

set val(chan) Channel/WirelessChannel ;# channel type

set val(prop) Propagation/TwoRayGround ;# radio-propagation model

set val(netif) Phy/WirelessPhy ;# network interface type

set val(mac) Mac/802_11 ;# MAC type

set val(ifq) Queue/DropTail/PriQueue ;# interface queue type

set val(ll) LL ;# link layer type

set val(ant) Antenna/OmniAntenna ;# antenna model

set val(ifqlen) 50 ;# max packet in ifq

set val(nn) 2 ;# number of mobilenodes

set val(rp) DSDV ;# routing protocol

# =====================================================================

# Main Program

# =====================================================================

# Initialize Global Variables

#

set ns_ [new Simulator]

set tracefd [open simple.tr w]

$ns_ trace-all $tracefd

Page 53: Network simulator_handbook

52

# set up topography object

set topo [new Topography]

$topo load_flatgrid 500 500

#

# Create God

create-god $val(nn)

#

# Create the specified number of mobilenodes [$val(nn)] and "attach" them

# to the channel.

# Here two nodes are created : node(0) and node(1)

# configure node

$ns_ node-config -adhocRouting $val(rp) \

-llType $val(ll) \

-macType $val(mac) \

-ifqType $val(ifq) \

-ifqLen $val(ifqlen) \

-antType $val(ant) \

-propType $val(prop) \

-phyType $val(netif) \

-channelType $val(chan) \

-topoInstance $topo \

-agentTrace ON \

-routerTrace ON \

-macTrace OFF \

-movementTrace OFF

for {set i 0} {$i < $val(nn) } {incr i} {

set node_($i) [$ns_ node]

$node_($i) random-motion 0; # disable random motion

}

Page 54: Network simulator_handbook

53

#

# Provide initial (X,Y, for now Z=0) co-ordinates for mobilenodes

#

$node_(0) set X_ 5.0

$node_(0) set Y_ 2.0

$node_(0) set Z_ 0.0

$node_(1) set X_ 390.0

$node_(1) set Y_ 385.0

$node_(1) set Z_ 0.0

#

# Now produce some simple node movements

# Node_(1) starts to move towards node_(0)

#

$ns_ at 50.0 "$node_(1) setdest 25.0 20.0 15.0"

$ns_ at 10.0 "$node_(0) setdest 20.0 18.0 1.0"

# Node_(1) then starts to move away from node_(0)

$ns_ at 100.0 "$node_(1) setdest 490.0 480.0 15.0"

# Setup traffic flow between nodes

# TCP connections between node_(0) and node_(1)

set tcp [new Agent/TCP]

$tcp set class_ 2

set sink [new Agent/TCPSink]

$ns_ attach-agent $node_(0) $tcp

$ns_ attach-agent $node_(1) $sink

$ns_ connect $tcp $sink

set ftp [new Application/FTP]

$ftp attach-agent $tcp

Page 55: Network simulator_handbook

54

$ns_ at 10.0 "$ftp start"

#

# Tell nodes when the simulation ends

#

for {set i 0} {$i < $val(nn) } {incr i} {

$ns_ at 150.0 "$node_($i) reset";

}

$ns_ at 150.0 "stop"

$ns_ at 150.01 "puts \"NS EXITING...\" ; $ns_ halt"

proc stop {} {

global ns_ tracefd

$ns_ flush-trace

close $tracefd

}

puts "Starting Simulation..."

$ns_ run

2. Mobile IP dengan pengalamatan hierarchical

set ns_ [new Simulator]

$ns_ node-config -addressType hierarchical

0.1.1

0.1.0

0.0.1

0.0.0

1

4

0

2

3

0.2.0

Page 56: Network simulator_handbook

55

AddrParams set domain_num_ 1

lappend cluster_num 3

AddrParams set cluster_num_ $cluster_num

lappend eilastlevel 2 2 1

AddrParams set nodes_num_ $eilastlevel

set tracefd [open ukurcoba.tr w]

$ns_ use-newtrace

$ns_ trace-all $tracefd

set nf [open ukurcoba.nam w]

$ns_ namtrace-all $nf

set topo [new Topography]

$topo load_flatgrid 500 500

create-god 1

#node0 --domain 0 cluster 0

set CR [$ns_ node 0.0.0]

#node1 --domain 0 cluster 1

set CN [$ns_ node 0.0.1]

set chan_1_ [new Channel/WirelessChannel]

$ns_ node-config -mobileIP ON \

-adhocRouting DSR \

-llType LL \

-macType Mac/802_11 \

-ifqType Queue/DropTail/PriQueue \

-ifqLen 50 \

-antType Antenna/OmniAntenna \

-propType Propagation/TwoRayGround \

Page 57: Network simulator_handbook

56

-phyType Phy/WirelessPhy \

-channel $chan_1_ \

-topoInstance $topo \

-wiredRouting ON \

-agentTrace ON \

-routerTrace ON \

-macTrace ON \

-movementTrace ON

Mac/802_11 set slotTime_ 0.000020 ;#20 us

Mac/802_11 set SIFS_ 0.000010 ;#10 us

Mac/802_11 set PreambleLength_ 144 ;#144 bit

Mac/802_11 set PLCPHeaderLength_ 48 ;#48 bit

Mac/802_11 set PLCPDataRate_ 1.0e6 ;#1 Mbps

Mac/802_11 set dataRate_ 11.0e6 ;#11 Mbps

Mac/802_11 set basicRate_ 1.0e6 ;#1 Mbps

Mac/802_11 set RTSThreshold_ 3000 ;#disable RTS / CTS

Mac/802_11 set CWMin 31

Mac/802_11 set CWMax 1023

Phy/WirelessPhy set Pt_ 0.031622777 ;#daya 15 dBm

Phy/WirelessPhy set bandwidth_ 11Mb ;#bandwidth kanal 11 Mb

Phy/WirelessPhy set freq_ 2.4e9 ;#frequency 2.4 GHz

Phy/WirelessPhy set CPThresh_ 10.0 ;#collision threshold

Phy/WirelessPhy set CSThresh_ 6.309573e-11 ;#-72 dBm

Phy/WirelessPhy set L_ 1.0 ;#system loss factor

Phy/WirelessPhy set RXThresh_ 3.12896e-10 ;#-65 dBm

Antenna/OmniAntenna set Z_ 1.5

Antenna/OmniAntenna set Gt_ 1

Antenna/OmniAntenna set Gr_ 1

Page 58: Network simulator_handbook

57

#node4 --domain 1 node 0

set HA [$ns_ node 0.1.0]

#node5 --domain 1 node 1

$ns_ node-config -wiredRouting OFF

set MN [$ns_ node 0.1.1]

[$MN set regagent_] set home_agent_ [AddrParams addr2id [$HA node-addr]]

$ns_ node-config -wiredRouting ON

set AR1 [$ns_ node 0.2.0]

$CN set X_ 300.0

$CN set Y_ 400.0

$CN label "CN"

$CN color "blue"

$CN shape "hexagon"

$CR set X_ 300.0

$CR set Y_ 300.0

$CR label "CR"

$CR color "blue"

$CR shape "hexagon"

$HA set X_ 220.0

$HA set Y_ 200.0

$HA label "HA"

$HA color "red"

$MN set X_ 200.0

$MN set Y_ 180.0

$MN label "MN"

$MN color "red"

$AR1 set X_ 380.0

$AR1 set Y_ 200.0

$AR1 label "AR1"

Page 59: Network simulator_handbook

58

$AR1 color "red"

##############

# LINK SETUP #

##############

# droptail = (FIFO), RED = Random Early Detection

$ns_ duplex-link $CR $CN 100Mb 10ms DropTail

$ns_ queue-limit $CR $CN 20

$ns_ duplex-link $HA $CR 100Mb 10ms DropTail

$ns_ queue-limit $HA $CR 20

$ns_ duplex-link $AR1 $CR 100Mb 10ms DropTail

$ns_ queue-limit $AR1 $CR 20

$ns_ duplex-link-op $CN $CR orient down

$ns_ duplex-link-op $CN $CR color "blue"

$ns_ duplex-link-op $CR $HA orient left-down

$ns_ duplex-link-op $CR $HA color "blue"

$ns_ duplex-link-op $CR $AR1 orient right-down

$ns_ duplex-link-op $CR $AR1 color "blue"

# Setup traffic flow between nodes

#UDP

#Setup a UDP connection

set udp [new Agent/UDP]

$ns_ attach-agent $MN $udp

set null [new Agent/Null]

$ns_ attach-agent $CN $null

$ns_ connect $udp $null

$udp set fid_ 2

#Setup a CBR over UDP connection

set cbr [new Application/Traffic/CBR]

Page 60: Network simulator_handbook

59

$cbr attach-agent $udp

$cbr set type_ CBR

$cbr set packet_size_ 1024

$cbr set interval_ 0.05

$cbr set rate_ 1Mb

$cbr set random_ 1

$ns_ at 5.0 "$cbr start"

$ns_ at 35.0 "$cbr stop"

$ns_ at 1.0 "$MN setdest 400.0 180.1 5"

$ns_ at 40.02 "$MN reset";

$ns_ at 40.0 "stop"

$ns_ at 40.0 "puts \"NS EXITING...\" ; $ns_ halt"

proc stop {} {

global ns_ tracefd

$ns_ flush-trace

close $tracefd

}

puts "Starting Simulation..."

$ns_ run

Page 61: Network simulator_handbook

60

Page 62: Network simulator_handbook

61

BAB VI

FORMAT FILE TRACE

Setiap model simulasi akan memiliki format trace file yang

berbeda beda sesuai dengan pengaturan jaringan yang akan

disimulasikan. Namun secara garis besar terdapat dua jenis yaitu trace

file format lama dan trace file format baru. Berikut adalah contoh dari

format trace file yang baru pada jaringan wired dan jaringan wireless.

Format dari file trace untuk jaringan wired adalah seperti di

bawah ini:

+ 3.410714 2 0 cbr 1020 ------- 2 0.1.1.2 0.0.1.2 100 112

Keterangan:

1. Event (Kejadian)

Adalah kejadian yang dicatat oleh NS yaitu:

r : receive (peket yang diterima oleh node)

+ : enqueue (paket masuk ke dalam antrian atau keluar dari

node)

- : dequeue (paket keluar dari antrian)

d : drop (paket drop dari antrian)

2. Time

Yaitu waktu terjadinya suatu kejadian dalam detik

3. From Node

4. To Node

Form node dan to node menyatakan keberadaan paket. Saat

pencatatan kejadian, paket berada pada link diantara from node

dan to node

5. Pkt type

Adalah tipe paket yang dikirim, seperti udp, tcp, ack, atau cbr

6. Pkt size

Adalah ukuran paket dalam byte

7. Flag

Page 63: Network simulator_handbook

62

Flag digunakan sebagai penanda. Pada contoh data diatas, flag

tidak digunakan

8. Fid

Adalah penomoran unik dari tiap aliran data

9. Src_addr

Adalah alamat asal paket

10. Dst_addr

Adalah alamat tujuan paket

11. Sequence number

Adalah nomor urut tiap paket

12. Packet id

Adalah penomoran unik tiap paket

Adapun format file trace untuk jaringan wireless adalah:

s -t 3.057344000 -Hs 3 -Hd -2 -Ni 3 -Nx 210.29 -Ny 180.01 -Nz 0.00 -Ne -

1.000000 -Nl AGT -Nw --- -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 2049.2 -Id 1.2 -It

cbr -Il 24 -If 2 -Ii 27 -Iv 32 -Pn cbr -Pi 15 -Pf 0 -Po 0

Keterangan:

1. Event Type

s : send

r : receive

d : drop

f : forward

2. General Tag

-t : time

-t : *(global setting)

3. Node Property Tags

-Ni : node id

-Nx : node's x-coordinate

-Ny : node's y-coordinate

-Nz : node's z-coordinate

-Ne : node energy level

-Nl : trace level, such as AGT, RTR, MAC

-Nw : reason for the node

4. Packet Information pada level IP

Page 64: Network simulator_handbook

63

-Is : source address, source port number

-Id : dest address, dest port number

-It : Packet Type

-Il : packet size

-If : flow id

-Ii : unique id

-Iv : ttl value

5. Next Hop Info

-Hs : Id for this node

-Hd : Id for next hope towards the destination

6. Packet Info pada level MAC

-Ma : Duration

-Md : dst’s Ethernet address

-Ms : src’s Ethernet address

-Mt : Ethernet Type

7. Packet Info pada level aplikasi

-P arp

-Po : ARP request /Reply

-Pm : src mac address

-Ps : src address

-Pa : dst mac address

-Pd : dst address

-P cbr

-Pi : sequence number

-Pf : how many times this packet forwarded

-Po : Optimal number of forward

-P tcp

-Ps : sequence number

-Pa : ack number

-Pf : how many times this packet forwarded

-Po : Optimal number of forward

Page 65: Network simulator_handbook

64

Page 66: Network simulator_handbook

65

BAB VII

KINERJA JARINGAN

Kinerja jaringan (QoS) menjadi komponen yang penting dalam

berbagai sistem komunikasi. QoS dapat menunjukkan konsistensi,

tingkat keberhasilan pengiriman data, atau dengan kata lain QoS dapat

mengukur kepuasan pengguna jaringan tersebut.

Ada beberapa parameter yang dapat digunakan untuk

mengukur QoS sebuah jaringan yaitu packet loss, delay, jitter, dan

throughput.

7.1 Packet Loss

Packet Loss menunjukkan jumlah paket yang hilang diantara

node pengirim dengan node tujuan dan diukur dalam packet loss ratio.

Penggukuran Packet Loss sebagai bahan analisa jaringan pada

komunikasi data secara real time cukup penting. Trafik komunikasi real

time yang menggunakan transport protocol UDP tidak dapat menjamin

sebuah paket data dapat diterima oleh node tujuan dengan baik.

Berbeda dengan pengiriman paket data menggunakan protocol TCP

yang proses pengiriman datanya melalui proses three-way-

handshaking. Dengan demikian perlu dipastikan kualitas sebuah

jaringan untuk komunikasi data real time, yang disebut sebagai QoS

(Quality of Service).

Untuk menghitung packet loss (dalam persen) digunakan

rumus berikut:

Page 67: Network simulator_handbook

66

7.2 End-to-end Delay (seconds)

End-to-end delay didefinisikan sebagai Selisih waktu

pengiriman sebuah paket saat dikirimkan dengan saat paket tersebut

diterima pada node tujuan. End-to-end delay yang disebut juga dengan

istilah latency terdiri dari beberapa faktor penundaan yaitu

propagation delay atau transmision delay yaitu penundaan akibat

waktu tempuh paket selama dalam saluran transmisi yang bandwidth

nya berbeda-beda, queuing delay yaitu waktu antrian paket sebelum

dilewatkan pada saluran transmisi, dan lainnya.

7.3 Jitter

Jitter merupakan variasi delay yang terjadi akibat adanya

selisih waktu atau interval antar kedatangan paket di sisi penerima.

Untuk mengatasi jitter maka paket yang datang atau melewati sebuah

node akan diantrikan terlebih dahulu dalam jitter buffer selama waktu

tertentu hingga nantinya paket dapat diterima pada node tujuan

dengan urutan yang benar. Namun keberadaan jitter buffer akan

menambah nilai end-to end delay.

Dalam beberapa literatur disebutkan ada dua jenis jitter yaitu

one way jitter dan inter arrival jitter. Perbedaan keduanya dapat

terlihat dalam formula perhitungannya.

One way jitter = end to end delayn – end to end delay(n-1)

Inter arrival jitter = tterima – t(terima – 1)

7.4 Throughput

Throughput diartikan sebagai laju data aktual per satuan

waktu (bits per second). Biasanya throughput selalu dikaitkan dengan

bandwidth. Karena throughput memang bisa disebut sebagai

Page 68: Network simulator_handbook

67

bandwidth dalam kondisi yang sebenarnya. Bandwidth lebih bersifat

tetap sementara throughput sifatnya dinamis tergantung trafik yang

sedang terjadi.

Page 69: Network simulator_handbook

68

Page 70: Network simulator_handbook

69

BAB VIII

POST PROCESSING

Setelah melakukan beberapa tahapan membangun simulasi di

atas, kini kita telah sampai pada bagian pengolahan data. Dari

pembahasan sebelumnya telah dijelaskan bahwa data yang didapatkan

dari proses simulasi dapat diolah untuk digunakan sebagai bahan

analisa sebuah jaringan yang disimulasikan.

Ada beberapa cara yang dapat dipergunakan untuk proses

pengolahan data beberapa diantaranya yaitu melakukan parsing file

trace, menggunakan metode record, serta melakukan identifikasi

agent.

8.1 Melakukan parsing file trace

Parsing file trace adalah cara pengolahan data dari file

berekstensi .tr dengan melakukan filtering menggunakan beberapa

parameter yang diperlukan.

Pada bab V telah dijelaskan mengenai format file trace baik

jaringan wired maupun wireless. Pada bab ini akan dijelaskan cara

mengolah file trace tersebut dengan memfilter beberapa kolom yang

dibutuhkan sehingga didapatkan suatu nilai tertentu sebagai bahan

analisa.

Pada simulasi jaringan wired dihasilkan file trace yang tersusun

atas 12 kolom sedangkan untuk jaringan wireless didapatkan jumlah

kolom yang lebih banyak. Contoh untuk jaringan wired adalah sebagai

berikut:

+ 3.410714 2 0 cbr 1020 ------- 2 0.1.1.2 0.0.1.2 100 112

Page 71: Network simulator_handbook

70

Adapun langkah yang dilakukan untuk filtering adalah sebagai berikut:

1. Install aplikasi awk untuk windows

2. Buka text editor (disarankan menggunakan notepad++ untuk

kemudahan)

3. Tentukan variabel untuk mendefinisikan beberapa kolom yang

diperlukan dalam proses filtering. Pada trace file jaringan wireless,

kolom kedua diisi dengan (-t) sedangkan pada jaringan wired tidak.

Untuk itu kolom kedua dapat kita gunakan sebagai parameter yang

membedakan antara jaringan wired dan wireless.

if ($2 != "-t") { event = $1 time = $2 node_id_s = $3 node_id_d = $4 pkt_type = $5 pkt_size = $6 pkt_attrib = $7 pkt_id = $12 }

if ($2 == "-t") { event = $1 time = $3 node_id = $5 flow_id = $39 pkt_id = $41

tr_level = $19 pkt_type = $35 }

4. Kemudian untuk mendapatkan waktu pengiriman data di node

pengirim (tkirim) digunakan command berikut:

Page 72: Network simulator_handbook

71

# Store packets sent if (event == "s" && node_id == "3" && tr_level == "AGT" && pkt_type == "cbr") { sendTime[pkt_id] = time sendt[pkt_id] = 1 }

5. Selanjutnya data diterima pada saat event yang terjadi adalah ”r”

dengan node id tujuan adalah 1 serta jenis paket yang diterima

adalah cbr. Untuk mendapatkan waktu penerimaan data di node

penerima (tterima) digunakan command berikut:

# Store packets arrival time if ($2 != "-t" && event == "r" && node_id_d == "1" && pkt_type == "cbr") { recvTime[pkt_id] = time recvt[pkt_id] = 1 }

6. Setelah didapatkan waktu kirim dan waktu terima dapat dilakukan

perhitungan end to end delay yang diperoleh dari selisih antara

tterima – tkirim

7. Berikutnya, untuk nilai one way jitter dapat diperoleh dengan

menghitung selisih antara e2edelayn – e2edelayn-1. Sedangkan nilai

inter arrival jitter didapatkan dari selisih antara (tterima)n – (tterima) n-1.

Dari rumusan tersebut dapat dituliskan dalam program awk

sebagai berikut:

if (recvt[pkt_id] == 1 && sendt[pkt_id] == 1) { if (send[pkt_id] < recv[pkt_id]) e2edelay = recv[pkt_id] - send[pkt_id] printf("%f %f\n",time,(recv[pkt_id] - send[pkt_id])*1000) onewayjitter = abs(e2edelay - prev_e2edelay) if (prev_e2edelay != 0) { numi++ jitter += onewayjitter

Page 73: Network simulator_handbook

72

printf("%f %f\n",time,onewayjitter*1000) } prev_e2edelay = e2edelay inter_arrival = abs(recv[pkt_id] - prev_receive) if (prev_receive != 0) { numb++ inter += inter_arrival printf("%f %f\n",time,inter_arrival*1000) } prev_receive = recv[pkt_id] }

8. Selanjutnya untuk melakukan penghitungan packet loss dapat

digunakan beberapa commnand berikut:

for (i in send) { if (sendt[i] == 1) { tx ++ if (recvt[i] == 0) { drop ++ } } } if (tx != 0) { pkt_loss = drop / tx } else { pkt_loss = 0 } print("==> Packet loss = ",pkt_loss*100,"%")

Maksud dari program tersebut adalah apabila pada pengiriman

data nilai sendt bernilai 1 maka akan diperoleh jumlah paket yang

telah dikirim. Apabila pada pengiriman data nilai sendt bernilai 1

namun pada penerima recvt bernilai 0, akan diperoleh jumlah

paket yang drop. Dari kedua nilai tersebut dapat dilakukan

perhitungan besarnya packet loss yaitu dari perbandingan antara

paket drop dengan paket yang dikirim lalu dihitung prosentasenya

Page 74: Network simulator_handbook

73

9. Kemudian untuk perhitungan nilai throughput, parameter yang

digunakan dari trace files adalah pada pkt_size (kolom ke-6 dari

domain wired). Adapun command yang digunakan adalah :

if ($6 == 1020) { a+=1020 } else { b+=$6 } x = (a/time_obsrv)*(8/1000) y = (b/time_obsrv)*(8/1000) tot = x + y print("==> Throughput = ",pkt_rcvd/time_obsrv,"packets/s" ) print(" = ",tot,"kbps" )

Untuk memperoleh nilai dari besarnya ukuran setiap paket perlu

diberikan dua variabel penyimpanan yaitu variabel a dan b. Hal ini

dilakukan karena dalam trace files terdapat perbedaan ukuran bit

yang dapat dilewatkan melalui kanal saat dilakukan pengukuran

beberapa ukuran paket data. Apabila ukuran paket di bawah 1024

maka bit yang dapat dilewatkan memiliki nilai yang konstan pada

satu ukuran. Namun apabila paket yang dikirimkan berukuran 1024

maka bit yang dapat dilewatkan terdiri dari ukuran yang berbeda

yaitu 1020 dan 44. Begitu juga ketika bit berukuran lebih besar dari

1024 dikirimkan maka bit yang dilewatkan juga terdiri dari dua

ukuran yang berbeda namun salah satu dari besar bit tersebut

bernilai 1020. Selanjutnya nilai dari variabel a dan b dijumlahkan

untuk mendapatkan total paket yang diterima.

10. Simpan file tersebut dengan ekstensi .awk

11. Buka cygwin dan masuk ke dalam direktori semua file yang

dibutuhkan (file berekstensi .tr dan .awk dalam folder yang sama)

Page 75: Network simulator_handbook

74

12. Pada cygwin ketikkan awk –f namafileawk.awk namafiletrace.tr >

namafileoutput.tr

Contoh format file awk dalam pemfilteran trace file jaringan mobile ip

adalah sebagai berikut:

BEGIN { for (i in send) { send[i] = 0 sendt[i] = 0 } for (i in recv) { recv[i] = 0 recvt[i] = 0 } delay = 0 num = 0 numi = numb = 0 avg_delay = 0 sebelum = 0 tx = 0 drop = 0 a = 0 b = 0 c = 0 d = 0 pkt_loss = 0 time_obsrv = 30 num_recv=0 prev_e2edelay = prev_receive = 0 } { # Trace line format: normal if ($2 != "-t") { event = $1 time = $2 node_id_s = $3

Page 76: Network simulator_handbook

75

node_id_d = $4 pkt_type = $5 pkt_size = $6 pkt_attrib = $7 pkt_id = $12 } # Trace line format: wireless if ($2 == "-t") { event = $1 time = $3 node_id = $5 flow_id = $39 pkt_id = $41 tr_level = $19

pkt_type = $35 } # capture saat paket dikirim if (event == "s" && node_id == "3" && tr_level == "AGT" && pkt_type == "cbr") { send[pkt_id] = time sendt[pkt_id] = 1 } # capture saat paket diterima if ($2 != "-t" && event == "r" && node_id_d == "1" && pkt_type == "cbr") { recv[pkt_id] = time recvt[pkt_id] = 1 if ($6 == 1020) { a+=1020 c++ } else { b+=$6 d++ } if (recvt[pkt_id] == 1 && sendt[pkt_id] == 1) { if (send[pkt_id] < recv[pkt_id])

Page 77: Network simulator_handbook

76

e2edelay = recv[pkt_id] - send[pkt_id] printf("%f %f\n",time,(recv[pkt_id] - send[pkt_id])*1000) > "delay" onewayjitter = abs(e2edelay - prev_e2edelay) if (prev_e2edelay != 0) { numi++ jitter += onewayjitter printf("%f %f\n",time,onewayjitter*1000) > "onewayjitter" } prev_e2edelay = e2edelay inter_arrival = abs(recv[pkt_id] - prev_receive) if (prev_receive != 0) { numb++ inter += inter_arrival printf("%f %f\n",time,inter_arrival*1000) > "interjitter" } prev_receive = recv[pkt_id] } if (recvt[pkt_id] == 1 && sendt[pkt_id] == 0) { printf("%f %f\n",send[pkt_id] , pkt_id) > "packetloss" } } } END { # Menghitung delay for (i in recv) { if (sendt[i] == 1 && recvt[i] == 1) { delay += recv[i] - send[i] num ++ } } if (num != 0) { avg_delay = delay / num } else {

Page 78: Network simulator_handbook

77

avg_delay = 0 } # menghitung jitter avg_jitter = jitter / numi avg_inter = inter / numb # Menghitung paket loss for (i in send) { if (sendt[i] == 1) { tx ++ if (recvt[i] == 0) { drop ++ } } } if (tx != 0) { pkt_loss = drop / tx pkt_rcvd = tx - drop } else { pkt_loss = 0 } # Menghitung Throughput x = (a/time_obsrv)*(8/1000) y = (b/time_obsrv)*(8/1000) tot = x + y tota = c + d # Menampilkan nilai print("") print("") print("============== Hasil Pengukuran QoS Jaringan ===============") print("") print("")

Page 79: Network simulator_handbook

78

print("==> Packet sent = ",tx) print("") print("==> Packet received = ",pkt_rcvd) print("") print("==> Packet dropped = ",drop) print("") print("==> Packet loss = ",pkt_loss*100,"%") print("") print("==> Throughput = ",tota/time_obsrv,"packets/s" ) print(" = ",tot,"kbps" ) print("") print("==> Average delay = ",avg_delay,"s") print(" = ",avg_delay*1000,"ms") print("") print("==> one way jitter = ",avg_jitter*1000," ms"); print("") print("==> inter arriv jitter = ",avg_inter*1000," ms"); } function abs(value) { if (value < 0) value = 0-value return value }