SlideShare une entreprise Scribd logo
1  sur  79
Télécharger pour lire hors ligne
Edisi pre-revisi
(clear screen version)

NS2 TUTORIAL
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
2
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.
4

1.2 Arsitektur Dasar

NS2 terdiri dari dari 2 bahasa utama yaitu C++ dan Objectoriented 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 textbased 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
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.
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.
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.
8
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
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.
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
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
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
14

Gambar 2.7 Tampilan setelah klik skip
-

Instalasi Cygwin sedang berlangsung

Gambar 2.8 Instalasi Cygwin
-

Instalasi selesai lalu klik finish
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 nsallinone-2.31. tar.gz dengan perintah:
$ tar –zxvf ns-allinone-2.31.tar.gz
16

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

Tahap 6
Masuk ke dalam
menggunakan perintah:

direktori

/ns-allinone-2.31

$ cd ns-allinone-2.31

Tahap 7
Lakukan instalasi dengan mengetikkan perintah:
$ ./install

dengan
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:
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/nsallinone-2.31/tcl8.4.14/unix:/home/wahyu/ns-allinone2.31/tk8.4.14/unix:$PATH
export LD_LIBRARY_PATH=/home/wahyu/ns-allinone-2.31/otcl1.13:/home/wahyu/ns-allinone-2.31/lib:$PATH
export TCL_LIBRARY=/home/wahyu/ns-allinone2.31/tcl8.4.14/library:$PATH

Tahap 10
Lakukan pengujian dengan mengetikkan command:
$ns
19

Apabila keluar tanda % maka NS2 siap digunakan. Namun apabila
terdapat pesan error lakukan restart cygwin
20
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
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
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.
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
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>
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]
==========================================================
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
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
FQ
SFQ
DRR

: FIFO atau First In First Out
: Fair Queuing
: Statistical Fair Queuing
: Deficit Round Robin
29

CBQ
RED

: Class Based Queuing
: 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
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>
31

Keterangan:
1.

Untuk semua tipe antrian parameter yang digunakan adalah :

<param>, antara lain:
limit_
blocked_
unblock_on_resume_

: besar antrian paket
: enabling/disabling antrian blok
: 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
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.
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
digunakan perintah:

pada node

$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)
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
==========================================================
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
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
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>”
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>
<event>

: dalam second
: 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
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
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]
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
42
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)
set opt(prop)
set opt(phy)
set opt(mac)
set opt(ifq)
set opt(ll)
set opt(ant)
set opt(ifqlen)
set opt(nn)
set opt(rtp)
set opt(x)
set opt(y)
set opt(seed)
set opt(stp)

<chan>
<prop>
<phy>
<mac>
<ifq>
<ll>
<ant>
<ifqlen>
<nn>
<rtp>
<x>
<y>
<seed>
<stp>
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
routing dsdv
CMUPriQueue
routing dsr

: interface antrian untuk metode
: interface antrian untuk metode

<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
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
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
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:
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
Mac/802_11 set SIFS_
0.000010
Mac/802_11 set PreambleLength_ 144
Mac/802_11 set PLCPHeaderLength_ 48
Mac/802_11 set PLCPDataRate_ 1.0e6
Mac/802_11 set dataRate_ 11.0e6
Mac/802_11 set basicRate_ 1.0e6

;#20 us
;#10 us
;#144 bit
;#48 bit
;#1 Mbps
;#11 Mbps
;#1 Mbps
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
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
10
3,12896x10 atau setara dengan -65 dBm
51

Contoh Kasus:
1.

Simple wireless

# simple-wireless.tcl
# A simple example for wireless simulation
# =====================================================================
# Define options
# =====================================================================
set val(chan)
set val(prop)
set val(netif)

Channel/WirelessChannel

Propagation/TwoRayGround ;# radio-propagation model
Phy/WirelessPhy

set val(mac)
set val(ifq)
set val(ll)

;# channel type

;# network interface type

Mac/802_11

;# MAC type

Queue/DropTail/PriQueue
LL

;# link layer type

set val(ant)

Antenna/OmniAntenna

set val(ifqlen)

50

set val(nn)

2

set val(rp)

DSDV

;# interface queue type

;# antenna model

;# max packet in ifq
;# number of mobilenodes
;# routing protocol

# =====================================================================
# Main Program
# =====================================================================
# Initialize Global Variables
#
set ns_ [new Simulator]
set tracefd [open simple.tr w]
$ns_ trace-all $tracefd
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
}
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
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
1

0

0.1.0
0.1.1

0.0.1
0.0.0

2

3

set ns_ [new Simulator]
$ns_ node-config -addressType hierarchical

4

0.2.0
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
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 Mbps

11.0e6

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

Phy/WirelessPhy set CSThresh_

6.309573e-11

;#collision threshold
;#-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
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"
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]
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
60
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.

2.
3.
4.

5.
6.
7.

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)
Time
Yaitu waktu terjadinya suatu kejadian dalam detik
From Node
To Node
Form node dan to node menyatakan keberadaan paket. Saat
pencatatan kejadian, paket berada pada link diantara from node
dan to node
Pkt type
Adalah tipe paket yang dikirim, seperti udp, tcp, ack, atau cbr
Pkt size
Adalah ukuran paket dalam byte
Flag
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.

2.

3.

4.

Event Type
s : send
r : receive
d : drop
f : forward
General Tag
-t : time
-t : *(global setting)
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
Packet Information pada level IP
63

5.

6.

7.

-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
Next Hop Info
-Hs : Id for this node
-Hd : Id for next hope towards the destination
Packet Info pada level MAC
-Ma : Duration
-Md : dst’s Ethernet address
-Ms : src’s Ethernet address
-Mt : Ethernet Type
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
64
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-wayhandshaking. 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:
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
67

bandwidth dalam kondisi yang sebenarnya. Bandwidth lebih bersifat
tetap sementara throughput sifatnya dinamis tergantung trafik yang
sedang terjadi.
68
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
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:
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 %fn",time,(recv[pkt_id] - send[pkt_id])*1000)
onewayjitter = abs(e2edelay - prev_e2edelay)
if (prev_e2edelay != 0) {
numi++
jitter += onewayjitter
72

printf("%f %fn",time,onewayjitter*1000)
}
prev_e2edelay = e2edelay
inter_arrival = abs(recv[pkt_id] - prev_receive)
if (prev_receive != 0) {
numb++
inter += inter_arrival
printf("%f %fn",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
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)
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
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])
76

e2edelay = recv[pkt_id] - send[pkt_id]
printf("%f %fn",time,(recv[pkt_id] - send[pkt_id])*1000) >
"delay"
onewayjitter = abs(e2edelay - prev_e2edelay)
if (prev_e2edelay != 0) {
numi++
jitter += onewayjitter
printf("%f
%fn",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
%fn",time,inter_arrival*1000)
"interjitter"
}
prev_receive = recv[pkt_id]
}
if (recvt[pkt_id] == 1 && sendt[pkt_id] == 0) {
printf("%f %fn",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 {

>
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("==============
===============")
print("")
print("")

Hasil

Pengukuran

QoS

Jaringan
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
}

Contenu connexe

Tendances

Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Edureka!
 
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)onozaty
 
knolx of KubeCost & Infracost
knolx of KubeCost & Infracostknolx of KubeCost & Infracost
knolx of KubeCost & InfracostKnoldus Inc.
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherSUSE
 
Redmineによる試験勉強管理の結末
Redmineによる試験勉強管理の結末Redmineによる試験勉強管理の結末
Redmineによる試験勉強管理の結末Shigenori Ueda
 
DCEU 18: State of the Docker Engine
DCEU 18: State of the Docker EngineDCEU 18: State of the Docker Engine
DCEU 18: State of the Docker EngineDocker, Inc.
 
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...Vietnam Open Infrastructure User Group
 
CI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cdCI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cdBilly Yuen
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageejlp12
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFSAtlassian
 
Red Hat Enterprise Linux 8 Workshop
Red Hat Enterprise Linux 8 WorkshopRed Hat Enterprise Linux 8 Workshop
Red Hat Enterprise Linux 8 WorkshopAhmed El-Rayess
 
An introduction to the OVHcloud Partner Program
 An introduction to the OVHcloud Partner Program An introduction to the OVHcloud Partner Program
An introduction to the OVHcloud Partner ProgramOVHcloud
 
Android open source project build system phi innovations - android summit 2015
Android open source project build system   phi innovations - android summit 2015Android open source project build system   phi innovations - android summit 2015
Android open source project build system phi innovations - android summit 2015Rafael Coutinho
 
継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine PluginMei Nakamura
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?
Infrastructure-as-Code with Pulumi- Better than all the others (like Ansible)?Infrastructure-as-Code with Pulumi- Better than all the others (like Ansible)?
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?Jonas Hecht
 
Kubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveKubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveMichal Rostecki
 

Tendances (20)

Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
 
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
 
knolx of KubeCost & Infracost
knolx of KubeCost & Infracostknolx of KubeCost & Infracost
knolx of KubeCost & Infracost
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
 
Redmineによる試験勉強管理の結末
Redmineによる試験勉強管理の結末Redmineによる試験勉強管理の結末
Redmineによる試験勉強管理の結末
 
Docker presentation
Docker presentationDocker presentation
Docker presentation
 
DCEU 18: State of the Docker Engine
DCEU 18: State of the Docker EngineDCEU 18: State of the Docker Engine
DCEU 18: State of the Docker Engine
 
AndroidとSELinux
AndroidとSELinuxAndroidとSELinux
AndroidとSELinux
 
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
Room 2 - 6 - Đinh Tuấn Phong - Migrate opensource database to Kubernetes easi...
 
CI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cdCI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cd
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFS
 
Red Hat Enterprise Linux 8 Workshop
Red Hat Enterprise Linux 8 WorkshopRed Hat Enterprise Linux 8 Workshop
Red Hat Enterprise Linux 8 Workshop
 
An introduction to the OVHcloud Partner Program
 An introduction to the OVHcloud Partner Program An introduction to the OVHcloud Partner Program
An introduction to the OVHcloud Partner Program
 
Android open source project build system phi innovations - android summit 2015
Android open source project build system   phi innovations - android summit 2015Android open source project build system   phi innovations - android summit 2015
Android open source project build system phi innovations - android summit 2015
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?
Infrastructure-as-Code with Pulumi- Better than all the others (like Ansible)?Infrastructure-as-Code with Pulumi- Better than all the others (like Ansible)?
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?
 
Kubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveKubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep Dive
 

Similaire à Network simulator_handbook

Network Monitoring Documentation
Network Monitoring DocumentationNetwork Monitoring Documentation
Network Monitoring DocumentationArif Wahyudi
 
Monitoring Jaringan Komputer dan Server di GNS3
Monitoring Jaringan Komputer dan Server di GNS3Monitoring Jaringan Komputer dan Server di GNS3
Monitoring Jaringan Komputer dan Server di GNS3Jumroh Arrasid
 
laporan INSTALASI OS LINUX
laporan INSTALASI OS LINUXlaporan INSTALASI OS LINUX
laporan INSTALASI OS LINUXMela Roviani
 
Install Netbeans dan JDK di Linux
Install Netbeans dan JDK di LinuxInstall Netbeans dan JDK di Linux
Install Netbeans dan JDK di LinuxPutu Shinoda
 
Slide Jaringan Komputer ITB pertemuan 1
Slide Jaringan Komputer ITB pertemuan 1 Slide Jaringan Komputer ITB pertemuan 1
Slide Jaringan Komputer ITB pertemuan 1 Putu Shinoda
 
Menggunakan ise webpack 1
Menggunakan ise webpack 1Menggunakan ise webpack 1
Menggunakan ise webpack 1Hilmy Akbar
 
Superkomputer dengan Native Linux(encrypted)
Superkomputer dengan Native Linux(encrypted)Superkomputer dengan Native Linux(encrypted)
Superkomputer dengan Native Linux(encrypted)Hary HarysMatta
 
NDN SIM (Named Data Networking Simulator)
NDN SIM (Named Data Networking Simulator)NDN SIM (Named Data Networking Simulator)
NDN SIM (Named Data Networking Simulator)Putu Shinoda
 
Publikasi 07.11.1856
Publikasi 07.11.1856Publikasi 07.11.1856
Publikasi 07.11.1856belabelabell
 
Instalasi ubuntu dekstop dan server
Instalasi ubuntu dekstop dan serverInstalasi ubuntu dekstop dan server
Instalasi ubuntu dekstop dan serverAhmad Nurfawaid
 
Distribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TI
Distribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TIDistribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TI
Distribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TIIwan stwn
 
Update - Superkomputer dengan Native GNU/ Linux - Final
Update - Superkomputer dengan Native GNU/ Linux - FinalUpdate - Superkomputer dengan Native GNU/ Linux - Final
Update - Superkomputer dengan Native GNU/ Linux - FinalHary HarysMatta
 
Bab 12 kompilasi kernel
Bab 12 kompilasi kernelBab 12 kompilasi kernel
Bab 12 kompilasi kernelAde Tamin
 
praktikum Cisco Packet Tracer 5.3.
praktikum Cisco Packet Tracer 5.3.praktikum Cisco Packet Tracer 5.3.
praktikum Cisco Packet Tracer 5.3.Hibaten Wafiroh
 
Modul membaca netcdf
Modul membaca netcdfModul membaca netcdf
Modul membaca netcdfDimaz Gunawan
 

Similaire à Network simulator_handbook (20)

Network Monitoring Documentation
Network Monitoring DocumentationNetwork Monitoring Documentation
Network Monitoring Documentation
 
Monitoring Jaringan Komputer dan Server di GNS3
Monitoring Jaringan Komputer dan Server di GNS3Monitoring Jaringan Komputer dan Server di GNS3
Monitoring Jaringan Komputer dan Server di GNS3
 
laporan INSTALASI OS LINUX
laporan INSTALASI OS LINUXlaporan INSTALASI OS LINUX
laporan INSTALASI OS LINUX
 
Install Netbeans dan JDK di Linux
Install Netbeans dan JDK di LinuxInstall Netbeans dan JDK di Linux
Install Netbeans dan JDK di Linux
 
Slide Jaringan Komputer ITB pertemuan 1
Slide Jaringan Komputer ITB pertemuan 1 Slide Jaringan Komputer ITB pertemuan 1
Slide Jaringan Komputer ITB pertemuan 1
 
Dasar Dasar dalam SDN
Dasar Dasar dalam SDNDasar Dasar dalam SDN
Dasar Dasar dalam SDN
 
Menggunakan ise webpack 1
Menggunakan ise webpack 1Menggunakan ise webpack 1
Menggunakan ise webpack 1
 
Superkomputer dengan Native Linux(encrypted)
Superkomputer dengan Native Linux(encrypted)Superkomputer dengan Native Linux(encrypted)
Superkomputer dengan Native Linux(encrypted)
 
NDN SIM (Named Data Networking Simulator)
NDN SIM (Named Data Networking Simulator)NDN SIM (Named Data Networking Simulator)
NDN SIM (Named Data Networking Simulator)
 
Samba Server
Samba ServerSamba Server
Samba Server
 
Simulator gns3
Simulator gns3Simulator gns3
Simulator gns3
 
Publikasi 07.11.1856
Publikasi 07.11.1856Publikasi 07.11.1856
Publikasi 07.11.1856
 
Instalasi ubuntu dekstop dan server
Instalasi ubuntu dekstop dan serverInstalasi ubuntu dekstop dan server
Instalasi ubuntu dekstop dan server
 
Distribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TI
Distribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TIDistribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TI
Distribusi GNU/Linux Berbasis Debian/KNOPPIX untuk Program Studi TI
 
Makalah linux knoppix
Makalah linux knoppixMakalah linux knoppix
Makalah linux knoppix
 
Lab komp tugas praktikum(1)
Lab komp tugas praktikum(1)Lab komp tugas praktikum(1)
Lab komp tugas praktikum(1)
 
Update - Superkomputer dengan Native GNU/ Linux - Final
Update - Superkomputer dengan Native GNU/ Linux - FinalUpdate - Superkomputer dengan Native GNU/ Linux - Final
Update - Superkomputer dengan Native GNU/ Linux - Final
 
Bab 12 kompilasi kernel
Bab 12 kompilasi kernelBab 12 kompilasi kernel
Bab 12 kompilasi kernel
 
praktikum Cisco Packet Tracer 5.3.
praktikum Cisco Packet Tracer 5.3.praktikum Cisco Packet Tracer 5.3.
praktikum Cisco Packet Tracer 5.3.
 
Modul membaca netcdf
Modul membaca netcdfModul membaca netcdf
Modul membaca netcdf
 

Dernier

Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...
Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...
Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...Shoffan shoffa
 
Dinamika atmosfer dan Dampaknya terhadap kehidupan.pptx
Dinamika atmosfer dan Dampaknya terhadap kehidupan.pptxDinamika atmosfer dan Dampaknya terhadap kehidupan.pptx
Dinamika atmosfer dan Dampaknya terhadap kehidupan.pptxFritzPieterMichaelNa
 
Kisi-kisi PTS Kelas 8 semester 2 kurikulum merdeka
Kisi-kisi PTS Kelas 8 semester 2 kurikulum merdekaKisi-kisi PTS Kelas 8 semester 2 kurikulum merdeka
Kisi-kisi PTS Kelas 8 semester 2 kurikulum merdekahellenchanel31
 
Nasab Nabi Muhammad SAW. dari Nabi Ibrahimpptx
Nasab Nabi Muhammad SAW. dari Nabi IbrahimpptxNasab Nabi Muhammad SAW. dari Nabi Ibrahimpptx
Nasab Nabi Muhammad SAW. dari Nabi IbrahimpptxSuGito15
 
Makna, hukum, hikmah dan keutamaan puasa.pdf
Makna, hukum, hikmah dan keutamaan puasa.pdfMakna, hukum, hikmah dan keutamaan puasa.pdf
Makna, hukum, hikmah dan keutamaan puasa.pdfAdindaRizkiThalia
 
LEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdf
LEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdfLEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdf
LEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdfAdelaWintarsana2
 
MATERI PESANTREN KILAT RAMADHAN AQIDAH ISLAM.pptx
MATERI PESANTREN KILAT RAMADHAN  AQIDAH ISLAM.pptxMATERI PESANTREN KILAT RAMADHAN  AQIDAH ISLAM.pptx
MATERI PESANTREN KILAT RAMADHAN AQIDAH ISLAM.pptxSuarniSuarni5
 
keutamaan dan hikmah shaalat fardhu .pdf
keutamaan dan hikmah shaalat fardhu .pdfkeutamaan dan hikmah shaalat fardhu .pdf
keutamaan dan hikmah shaalat fardhu .pdfatsira1
 
Paket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptx
Paket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptxPaket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptx
Paket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptxDarmiahDarmiah
 
Kelompok 1_Pengantar Komunikasi Pendidikan.pdf
Kelompok 1_Pengantar Komunikasi Pendidikan.pdfKelompok 1_Pengantar Komunikasi Pendidikan.pdf
Kelompok 1_Pengantar Komunikasi Pendidikan.pdf2210130220024
 
UTS CT (ppg prajabatan gelombang 1 tahun 2023).pptx
UTS CT (ppg prajabatan gelombang 1 tahun 2023).pptxUTS CT (ppg prajabatan gelombang 1 tahun 2023).pptx
UTS CT (ppg prajabatan gelombang 1 tahun 2023).pptxYusufAmirudin3
 
DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3
DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3
DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3sekolah9304
 
materi pondok romadon sekolah dasar dengan materi zakat fitrah
materi pondok romadon sekolah dasar dengan materi zakat fitrahmateri pondok romadon sekolah dasar dengan materi zakat fitrah
materi pondok romadon sekolah dasar dengan materi zakat fitrahkrisdanarahmatullah7
 
KELOMPOK 2 PUTARAN 2 Mata kuliah Agama Islam
KELOMPOK 2 PUTARAN 2 Mata kuliah Agama IslamKELOMPOK 2 PUTARAN 2 Mata kuliah Agama Islam
KELOMPOK 2 PUTARAN 2 Mata kuliah Agama IslamabdulhamidalyFKIP
 
Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1
Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1
Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1LailaTulangRusukMaha
 
Program Roots Indonesia - Aksi Nyata.pdf
Program Roots Indonesia - Aksi Nyata.pdfProgram Roots Indonesia - Aksi Nyata.pdf
Program Roots Indonesia - Aksi Nyata.pdfrizalrulloh1992
 

Dernier (20)

Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...
Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...
Implementasi Model pembelajaran STEAM Holistik-Integratif Berbasis Digital Me...
 
ELEMEN KOMPOL (PESAN BAHASA POLITIK).pptx
ELEMEN KOMPOL (PESAN BAHASA POLITIK).pptxELEMEN KOMPOL (PESAN BAHASA POLITIK).pptx
ELEMEN KOMPOL (PESAN BAHASA POLITIK).pptx
 
Dinamika atmosfer dan Dampaknya terhadap kehidupan.pptx
Dinamika atmosfer dan Dampaknya terhadap kehidupan.pptxDinamika atmosfer dan Dampaknya terhadap kehidupan.pptx
Dinamika atmosfer dan Dampaknya terhadap kehidupan.pptx
 
Kisi-kisi PTS Kelas 8 semester 2 kurikulum merdeka
Kisi-kisi PTS Kelas 8 semester 2 kurikulum merdekaKisi-kisi PTS Kelas 8 semester 2 kurikulum merdeka
Kisi-kisi PTS Kelas 8 semester 2 kurikulum merdeka
 
Nasab Nabi Muhammad SAW. dari Nabi Ibrahimpptx
Nasab Nabi Muhammad SAW. dari Nabi IbrahimpptxNasab Nabi Muhammad SAW. dari Nabi Ibrahimpptx
Nasab Nabi Muhammad SAW. dari Nabi Ibrahimpptx
 
Makna, hukum, hikmah dan keutamaan puasa.pdf
Makna, hukum, hikmah dan keutamaan puasa.pdfMakna, hukum, hikmah dan keutamaan puasa.pdf
Makna, hukum, hikmah dan keutamaan puasa.pdf
 
DEFINISI DAN KONTEKS MANAJEMEN ISU DAN KRISIS.pptx
DEFINISI DAN KONTEKS MANAJEMEN ISU DAN KRISIS.pptxDEFINISI DAN KONTEKS MANAJEMEN ISU DAN KRISIS.pptx
DEFINISI DAN KONTEKS MANAJEMEN ISU DAN KRISIS.pptx
 
LEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdf
LEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdfLEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdf
LEMBAR-LOKAKARYA ORIENTASI-Kelompok 1.pdf
 
Persiapandalam Negosiasi dan Loby .pptx
Persiapandalam  Negosiasi dan Loby .pptxPersiapandalam  Negosiasi dan Loby .pptx
Persiapandalam Negosiasi dan Loby .pptx
 
MATERI PESANTREN KILAT RAMADHAN AQIDAH ISLAM.pptx
MATERI PESANTREN KILAT RAMADHAN  AQIDAH ISLAM.pptxMATERI PESANTREN KILAT RAMADHAN  AQIDAH ISLAM.pptx
MATERI PESANTREN KILAT RAMADHAN AQIDAH ISLAM.pptx
 
keutamaan dan hikmah shaalat fardhu .pdf
keutamaan dan hikmah shaalat fardhu .pdfkeutamaan dan hikmah shaalat fardhu .pdf
keutamaan dan hikmah shaalat fardhu .pdf
 
Paket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptx
Paket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptxPaket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptx
Paket Substansi_Pengelolaan Kinerja Guru dan KS [19 Dec].pptx
 
Kelompok 1_Pengantar Komunikasi Pendidikan.pdf
Kelompok 1_Pengantar Komunikasi Pendidikan.pdfKelompok 1_Pengantar Komunikasi Pendidikan.pdf
Kelompok 1_Pengantar Komunikasi Pendidikan.pdf
 
UTS CT (ppg prajabatan gelombang 1 tahun 2023).pptx
UTS CT (ppg prajabatan gelombang 1 tahun 2023).pptxUTS CT (ppg prajabatan gelombang 1 tahun 2023).pptx
UTS CT (ppg prajabatan gelombang 1 tahun 2023).pptx
 
DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3
DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3
DSKP KSSM Kurikulum Bersepadu Dini LAM Tingkatan 3
 
KOMUNIKATOR POLITIK ( AKTOR POLITIK).pptx
KOMUNIKATOR POLITIK ( AKTOR POLITIK).pptxKOMUNIKATOR POLITIK ( AKTOR POLITIK).pptx
KOMUNIKATOR POLITIK ( AKTOR POLITIK).pptx
 
materi pondok romadon sekolah dasar dengan materi zakat fitrah
materi pondok romadon sekolah dasar dengan materi zakat fitrahmateri pondok romadon sekolah dasar dengan materi zakat fitrah
materi pondok romadon sekolah dasar dengan materi zakat fitrah
 
KELOMPOK 2 PUTARAN 2 Mata kuliah Agama Islam
KELOMPOK 2 PUTARAN 2 Mata kuliah Agama IslamKELOMPOK 2 PUTARAN 2 Mata kuliah Agama Islam
KELOMPOK 2 PUTARAN 2 Mata kuliah Agama Islam
 
Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1
Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1
Power point Materi Pembelajaran Kelas 3 TEMA 7 SUB 2 PB 1
 
Program Roots Indonesia - Aksi Nyata.pdf
Program Roots Indonesia - Aksi Nyata.pdfProgram Roots Indonesia - Aksi Nyata.pdf
Program Roots Indonesia - Aksi Nyata.pdf
 

Network simulator_handbook

  • 1. Edisi pre-revisi (clear screen version) NS2 TUTORIAL handbook
  • 2. 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
  • 3. 2
  • 4. 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.
  • 5. 4 1.2 Arsitektur Dasar NS2 terdiri dari dari 2 bahasa utama yaitu C++ dan Objectoriented 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 textbased 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
  • 6. 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.
  • 7. 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.
  • 8. 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.
  • 9. 8
  • 10. 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
  • 11. 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.
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 14 Gambar 2.7 Tampilan setelah klik skip - Instalasi Cygwin sedang berlangsung Gambar 2.8 Instalasi Cygwin - Instalasi selesai lalu klik finish
  • 16. 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 nsallinone-2.31. tar.gz dengan perintah: $ tar –zxvf ns-allinone-2.31.tar.gz
  • 17. 16 Gambar 2.10 Ekstraksi file ns-allinone-2.31.tar.gz Tahap 6 Masuk ke dalam menggunakan perintah: direktori /ns-allinone-2.31 $ cd ns-allinone-2.31 Tahap 7 Lakukan instalasi dengan mengetikkan perintah: $ ./install dengan
  • 18. 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:
  • 19. 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/nsallinone-2.31/tcl8.4.14/unix:/home/wahyu/ns-allinone2.31/tk8.4.14/unix:$PATH export LD_LIBRARY_PATH=/home/wahyu/ns-allinone-2.31/otcl1.13:/home/wahyu/ns-allinone-2.31/lib:$PATH export TCL_LIBRARY=/home/wahyu/ns-allinone2.31/tcl8.4.14/library:$PATH Tahap 10 Lakukan pengujian dengan mengetikkan command: $ns
  • 20. 19 Apabila keluar tanda % maka NS2 siap digunakan. Namun apabila terdapat pesan error lakukan restart cygwin
  • 21. 20
  • 22. 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
  • 23. 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
  • 24. 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.
  • 25. 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
  • 26. 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>
  • 27. 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] ==========================================================
  • 28. 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
  • 29. 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 FQ SFQ DRR : FIFO atau First In First Out : Fair Queuing : Statistical Fair Queuing : Deficit Round Robin
  • 30. 29 CBQ RED : Class Based Queuing : 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
  • 31. 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>
  • 32. 31 Keterangan: 1. Untuk semua tipe antrian parameter yang digunakan adalah : <param>, antara lain: limit_ blocked_ unblock_on_resume_ : besar antrian paket : enabling/disabling antrian blok : 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
  • 33. 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.
  • 34. 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 digunakan perintah: pada node $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)
  • 35. 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 ==========================================================
  • 36. 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
  • 37. 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
  • 38. 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>”
  • 39. 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> <event> : dalam second : 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
  • 40. 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
  • 41. 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]
  • 42. 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
  • 43. 42
  • 44. 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) set opt(prop) set opt(phy) set opt(mac) set opt(ifq) set opt(ll) set opt(ant) set opt(ifqlen) set opt(nn) set opt(rtp) set opt(x) set opt(y) set opt(seed) set opt(stp) <chan> <prop> <phy> <mac> <ifq> <ll> <ant> <ifqlen> <nn> <rtp> <x> <y> <seed> <stp>
  • 45. 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 routing dsdv CMUPriQueue routing dsr : interface antrian untuk metode : interface antrian untuk metode <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
  • 46. 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
  • 47. 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
  • 48. 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:
  • 49. 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 Mac/802_11 set SIFS_ 0.000010 Mac/802_11 set PreambleLength_ 144 Mac/802_11 set PLCPHeaderLength_ 48 Mac/802_11 set PLCPDataRate_ 1.0e6 Mac/802_11 set dataRate_ 11.0e6 Mac/802_11 set basicRate_ 1.0e6 ;#20 us ;#10 us ;#144 bit ;#48 bit ;#1 Mbps ;#11 Mbps ;#1 Mbps
  • 50. 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
  • 51. 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 10 3,12896x10 atau setara dengan -65 dBm
  • 52. 51 Contoh Kasus: 1. Simple wireless # simple-wireless.tcl # A simple example for wireless simulation # ===================================================================== # Define options # ===================================================================== set val(chan) set val(prop) set val(netif) Channel/WirelessChannel Propagation/TwoRayGround ;# radio-propagation model Phy/WirelessPhy set val(mac) set val(ifq) set val(ll) ;# channel type ;# network interface type Mac/802_11 ;# MAC type Queue/DropTail/PriQueue LL ;# link layer type set val(ant) Antenna/OmniAntenna set val(ifqlen) 50 set val(nn) 2 set val(rp) DSDV ;# interface queue type ;# antenna model ;# max packet in ifq ;# number of mobilenodes ;# routing protocol # ===================================================================== # Main Program # ===================================================================== # Initialize Global Variables # set ns_ [new Simulator] set tracefd [open simple.tr w] $ns_ trace-all $tracefd
  • 53. 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 }
  • 54. 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
  • 55. 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 1 0 0.1.0 0.1.1 0.0.1 0.0.0 2 3 set ns_ [new Simulator] $ns_ node-config -addressType hierarchical 4 0.2.0
  • 56. 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
  • 57. 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 Mbps 11.0e6 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 Phy/WirelessPhy set CSThresh_ 6.309573e-11 ;#collision threshold ;#-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
  • 58. 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"
  • 59. 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]
  • 60. 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
  • 61. 60
  • 62. 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. 2. 3. 4. 5. 6. 7. 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) Time Yaitu waktu terjadinya suatu kejadian dalam detik From Node To Node Form node dan to node menyatakan keberadaan paket. Saat pencatatan kejadian, paket berada pada link diantara from node dan to node Pkt type Adalah tipe paket yang dikirim, seperti udp, tcp, ack, atau cbr Pkt size Adalah ukuran paket dalam byte Flag
  • 63. 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. 2. 3. 4. Event Type s : send r : receive d : drop f : forward General Tag -t : time -t : *(global setting) 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 Packet Information pada level IP
  • 64. 63 5. 6. 7. -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 Next Hop Info -Hs : Id for this node -Hd : Id for next hope towards the destination Packet Info pada level MAC -Ma : Duration -Md : dst’s Ethernet address -Ms : src’s Ethernet address -Mt : Ethernet Type 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
  • 65. 64
  • 66. 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-wayhandshaking. 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:
  • 67. 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
  • 68. 67 bandwidth dalam kondisi yang sebenarnya. Bandwidth lebih bersifat tetap sementara throughput sifatnya dinamis tergantung trafik yang sedang terjadi.
  • 69. 68
  • 70. 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
  • 71. 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:
  • 72. 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 %fn",time,(recv[pkt_id] - send[pkt_id])*1000) onewayjitter = abs(e2edelay - prev_e2edelay) if (prev_e2edelay != 0) { numi++ jitter += onewayjitter
  • 73. 72 printf("%f %fn",time,onewayjitter*1000) } prev_e2edelay = e2edelay inter_arrival = abs(recv[pkt_id] - prev_receive) if (prev_receive != 0) { numb++ inter += inter_arrival printf("%f %fn",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
  • 74. 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)
  • 75. 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
  • 76. 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])
  • 77. 76 e2edelay = recv[pkt_id] - send[pkt_id] printf("%f %fn",time,(recv[pkt_id] - send[pkt_id])*1000) > "delay" onewayjitter = abs(e2edelay - prev_e2edelay) if (prev_e2edelay != 0) { numi++ jitter += onewayjitter printf("%f %fn",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 %fn",time,inter_arrival*1000) "interjitter" } prev_receive = recv[pkt_id] } if (recvt[pkt_id] == 1 && sendt[pkt_id] == 0) { printf("%f %fn",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 { >
  • 78. 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("============== ===============") print("") print("") Hasil Pengukuran QoS Jaringan
  • 79. 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 }