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