71
i IMPLEMENTASI ENERGY AWARE STRATEGY PADA ROUTING PROTOKOL EPIDEMIC DI JARINGAN OPPORTUNISTIC SKRIPSI Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika DISUSUN OLEH : Blasius Filimon Kantu 125314034 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2016 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

IMPLEMENTASI ENERGY AWARE STRATEGY PADA ROUTING …repository.usd.ac.id/17784/2/125314034_full.pdf · 2018. 2. 8. · memerlukan insfrastruktur dalam pembentukannya. Pada penelitian

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

i

IMPLEMENTASI ENERGY AWARE STRATEGY PADA ROUTING

PROTOKOL EPIDEMIC DI JARINGAN OPPORTUNISTIC

SKRIPSI

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana

Komputer Program Studi Teknik Informatika

DISUSUN OLEH :

Blasius Filimon Kantu

125314034

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

ii

ENERGY AWARE STRATEGY IMPLEMENTATION ON EPIDEMIC

ROUTING PROTOCOL IN OPPORTUNISTIC NETWORK

A THESIS

Presented as Partial Fulfillment of Requirements to Obtain Sarjana Komputer

Degree in Informatics Engineering Department

By:

Blasius Filimon Kantu

125314034

INFORMATICS ENGINEERING STUDY PROGRAM

INFORMATICS ENGINEERING DEPARTMENT

FACULTY SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

iii

HALAMAN PENGESAHAN

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

iv

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

v

MOTTO

”Don’t Lose The Faith, Keep Praying, Keep Trying ”

-B-

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

vi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

vii

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

viii

ABSTRAK

Delay Tolerant Network (DTN) adalah sebuah jaringan wireless yang tidak

memerlukan insfrastruktur dalam pembentukannya. Pada penelitian ini penulis

menguji unjuk kerja protokol epidemic menggunakan ONE simulator.Metrik unjuk

kerja yang digunakan adalah delivery probability, overhead, delay, dan number of

dead node. Parameter yang akan digunakan pada setiap pengujian adalah

penambahan jumlah node.

Hasil pengujian menunjukkan protokol epidemic semakin baik apabila jumlah

node ditambahkan karena relay node memiliki lebih banyak peluang untuk

menyampaikan pesan ke destination. Terlihat dari hasil delivery probability dan delay

pada jaringan. Sedangkan overhead dan number of dead node meningkat karena

original message terus dibuatoleh source yang akan didistribusikan di dalam

jaringan.

Kata kunci: Delay Tolerant Network, epidemic, delivery probability, overhead, delay,

dan number of dead node.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

ix

ABSTRACT

Delay Tolerant Network (DTN) is a wireless connection which does not need

infrastructure in its formation. In this research the writer test the performance of

aepidmic routing protocol in opportunistic network using ONE SIMULATOR.

Performance matrix used are delivery probability, overhead, delay, andnumber of

dead node. Parameter used in every test are increasing the number of node.

The test result show that epidemic routing protocol is better if the number of

node is increased because the relay node has more opportunities to delivered the

messages to the destination. Visible from the delivery probability and delay in the

network. While overhead and number of dead node becomes increases because the

original message continues to be generated by source that will be distributed in the

network.

Keywords: Delay Tolerant Network, epidemic, delivery probability, overhead, delay

and number of dead node.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

x

KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa, sehingga

penulis dapat menyelesaikan tugas akhir dengan judul “Implementasi Energy Aware

Strategy Pada Routing Protokol Epidemic di Jaringan Opportunistic”.Tugas akhir ini

merupakan salah satu mata kuliah wajib dan sebagai syarat akademik untuk

memperoleh gelar sarjana komputer program studi Teknik Informatika Universitas

Sanata Dharma Yogyakarta.

Pada kesempatan ini, penulis ingin mengucap terimakasih kepada pihak-pihak

yang telah membantu penulis baik selama penelitian maupun saat mengerjakan tugas

akhir ini. Ucapan terimakasih sebesar-besarnya penulis sampaikan kepada:

1. Tuhan Yang Maha Esa, yang telah memberikan pertolongan dan kekuatan

dalam proses pembuatan tugas akhir.

2. Orang tua, Antonius Manyu dan Andida, serta keluarga yang telah memberi

dukungan spiritual dan material.

3. Bambang Soelistijanto, S.T., M.Sc., Ph.D. selaku Dosen Pembimbing tugas

akhir, atas bimbingan, waktu dan saran yang telah diberikan kepada penulis.

4. Iwan Binanto, M.Cs. selaku Dosen Pembimbing Akademik, atas bimbingan

kritik dan saran yang telah diberikan kepada penulis.

5. Dr. Anastasia Rita Widiarti, M.Kom. selaku Ketua Program Studi Teknik

Informatika, atas bimbingan, kritik dan saran yang telah diberikan kepada

penulis,

6. Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D. selaku Dekan Fakultas Sains dan

Teknologi, atas bimbingan, kritik dan saran yang telah diberikan kepada

penulis.

7. Seluruh dosen Teknik Informatika atas ilmu yang telah diberikan semasa

kuliah dan sangat membantu penulis dalam mengerjakan tugas akhir.

8. Teman seperjuangan DTN (Iing, Irma, Ricky, Parta, Aldy, dan Ryo), teman

seperjuangan Teknik Informatika (Fajar, Ahong, Pace “Kotak”, Yoppi, Rudi,

dan teman-teman lainnya) terimakasih atas dukungan semangat dan doanya.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

xi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

xii

DAFTAR ISI

SKRIPSI ......................................................................................................................... i

A THESIS ..................................................................................................................... ii

HALAMAN PENGESAHAN ...................................................................................... iii

MOTTO ........................................................................................................................ v

ABSTRAK ................................................................................................................. viii

ABSTRACT ................................................................................................................. ix

KATA PENGANTAR .................................................................................................. x

DAFTAR ISI ............................................................................................................... xii

DAFTAR TABEL ...................................................................................................... xiv

DAFTAR GAMBAR .................................................................................................. xv

BAB I PENDAHULUAN ............................................................................................. 1

1.1 Latar Belakang ............................................................................................... 1

1.2 Rumusan Masalah .......................................................................................... 1

1.3 Tujuan Penelitian ............................................................................................ 1

1.4 Batasan Masalah ............................................................................................. 2

1.5 Metodologi Penelitian .................................................................................... 2

1.6 Sistematika Penulisan ..................................................................................... 3

BAB II LANDASAN TEORI ....................................................................................... 4

2.1 Mobile Ad Hoc Network (MANETs) ............................................................ 4

2.2 JaringanOpportunistic .................................................................................... 4

2.3 Metode Store, Carry, and Forward ................................................................. 6

2.4 Karakteristik OppNet ..................................................................................... 7

2.5 Protokol Routing ............................................................................................ 8

2.6 Routing Protocol .......................................................................................... 10

2.6.1 EpidemicRouting Protocol .................................................................... 10

2.6.2 Epidemic Energy AwareRouting Protocol (Epidemic EA) .................. 11

2.7 ONE Simulator ............................................................................................. 13

BAB III PERANCANGAN SIMULASI JARINGAN ............................................... 14

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

xiii

3.1 Parameter Simulasi ....................................................................................... 14

3.2 Skenario Simulasi ......................................................................................... 15

3.3 Random Waypoint ........................................................................................ 15

3.4 Real Human Trace ........................................................................................ 16

3.5 Parameter Kinerja ......................................................................................... 17

3.6 Topologi Jaringan ......................................................................................... 18

BAB IV PENGUJIAN DAN ANALISIS ................................................................... 19

4.1 Random Waypoint ........................................................................................... 19

4.1.1 Penambahan Jumlah Node ........................................................................ 19

4.1.2 Penambahan TTL (Time to Live) .............................................................. 23

4.2 Real Human Trace............................................................................................ 26

4.2.1 Real Human Trace(Haggle4) .................................................................... 26

BAB V KESIMPULAN DAN SARAN ...................................................................... 29

5.1 Kesimpulan ...................................................................................................... 29

5.2 Saran ............................................................................................................. 29

DAFTAR PUSTAKA ................................................................................................ 30

LAMPIRAN ............................................................................................................ 31

1. Listing Program ............................................................................................... 31

a) Default settings ............................................................................................. 31

b) DTNHost ....................................................................................................... 34

c) DTNSim ........................................................................................................ 46

d) Epidemic Router ........................................................................................... 51

e) Epidemic Energy Aware Router ................................................................... 53

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

xiv

DAFTAR TABEL

Tabel 3.1 Parameter utama ONE simulator ................................................................ 14

Tabel 3.2 Parameter utama energy baterai. ................................................................. 14

Tabel 3.3 Skenario Penambahan Jumlah Node dengan TTL pesan tetap ................... 15

Tabel 3.4 Skenario Penambahan Jumlah TTL pesan jumlah Node tetap ................... 15

Tabel 3.5 Skenario Penambahan TTL pesan pada pergerakan manusia ..................... 17

Tabel 4.1 Hasil PengujianPenambahan Jumlah Node................................................. 19

Tabel 4.2 Hasil Pengujian Penambahan TTL ............................................................. 23

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

xv

DAFTAR GAMBAR

Gambar 2.1 MANET ................................................................................................................ 4

Gambar 2.2 Opportunistic Network .......................................................................................... 5

Gambar 2.3 Metode Store, Carry, and Forward di OppNet ...................................................... 6

Gambar 2.4 Letak Bundle Layer ............................................................................................... 7

Gambar 2.5 Summary Vector ................................................................................................. 11

Gambar 2.6 Ilustrasi Routing Protokol Epidemic ................................................................... 11

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

1

BAB I

PENDAHULUAN

1.1 Latar Belakang

Jaringan opportunistic adalah salah satu evolusi yang paling menarik dari

MANETs. Dalam Jaringan opportunistic, mobile node dapat berkomunikasi

walaupun tidak ada end-to-end path yang menghubungkan source ke

destination.

Dengan jaringan opportunistic, pengiriman informasi dapat diterapkan

padajaringan yang memiliki karakteristik ekstrem seperti delay yang tinggi,

tingkat loss yang tinggi, dan tidak memiliki end-to-end path yang selalu

tersedia.

Pada jaringan opportunistic terdapat mobile node dengan mobilitas tinggi,

dimana setiap mobile node selalu bergerak dan memiliki energi yang terbatas

serta bandwidth yang terbatas. Dalam jaringan opportunistic ada beberapa jenis

protokol routing yang digunakan salah satunya protokol routing epidemic yaitu

protokol yang menggunakan konsep flooding, konsep flooding adalah konsep

yang digunakan untuk meneruskan pesan ke destination dengan cara

membanjiri jaringan dengan duplikat pesan, sehingga pesan akan lebih cepat

sampai ke destination (delay rendah). Hal itu berdampak pada resource yang

dimiliki akan terbebani karena mobile node sering melakukan pertukaran pesan

dengan setiap relay node yang ditemui.

1.2 Rumusan Masalah

Berdasarkan latar belakang, maka rumusan masalah yang didapat adalah

bagaimana dampak dari strategi energy aware yang diimplementasikan pada

protokol routing epidemic dari sisi penggunaan energi.

1.3 Tujuan Penelitian

Tujuan dari penelitian ini adalah mengetahui serta menganalisis kelebihan

dan kekurangan unjuk kerja protokol epidemic dan protokol epidemicEA yang

memperhitungkan penggunaan energi dalam pemilihan node relay.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

2

1.4 Batasan Masalah

Dalam pelaksanaan tugas akhir ini, masalah dibatasi sebagai berikut:

1. Protokol yang diuji adalah protokol epidemic dan protokol epidemic Energy

Aware (EA).

2. Pengujian dilakukan dengan ONE simulator.

3. Parameter unjuk kerja yang digunakan adalah delivery probability,

overhead, delay, dan number of dead node.

1.5 Metodologi Penelitian

Adapun metodologi dan langkah–langkah yang digunakan dalam

pelaksanaan tugas akhir ini adalah sebagai berikut :

1. Studi Literatur

Mencari dan mengumpulkan referensi serta mempelajari teori yang

mendukung tugas akhir ini, seperti:

a. Teori jaringanopportunistic

b. Teori protokol epidemic

c. Teori delivery probability, overhead, delay, dan energy.

d. Teori ONE simulator

e. Tahap-tahap dalam membangun simulasi

2. Perancangan

Dalam tahap ini penulis merancang skenario sebagai berikut:

a. Luas jaringan tetap

b. Penambahan jumlah node (density)

c. Pergerakan node berdasarkan random waypoint

d. Pergerakan node berdasarkan real human trace

3. Pembangunan Simulasi dan Pengumpulan Data

Simulasi jaringanopportunistic pada tugas akhir ini menggunakan ONE

simulator (discret-event simulator) berbasis java.

4. Analisis Data Simulasi

Dalam tahap ini, penulis menganalisis hasil pengukuran yang diperoleh

pada proses simulasi. Analisis dihasilkan dengan melakukan pengamatan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

3

dari beberapa kali pengukuran yang menggunakan parameter simulasi yang

berbeda.

5. Penarikan Kesimpulan

Penarikan kesimpulan didasarkan pada beberapa parameter unjuk kerja

yang diperoleh pada proses analisis data.

1.6 Sistematika Penulisan

Sistematika penulisan tugas akhir ini dibagi menjadi beberapa bab dengan

susunan sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi latar belakang penulisan tugas akhir, rumusan masalah,

batasan masalah, metodologi penilitian, dan sistematika penulisan.

BAB II LANDASAN TEORI

Bagian ini menjelaskan mengenai teori yang berkaitan dengan

judul/masalah di tugas akhir.

BAB III RANCANGAN SIMULASI JARINGAN

Bab ini berisi rancangan simulasi jaringan.

BAB IV PENGUJIAN DAN ANALISIS

Bab ini berisi pelaksanaan simulasi dan hasil analisis data simulasi

jaringan.

BAB V KESIMPULAN DAN SARAN

Bab ini berisi beberapa kesimpulan yang didapat serta saran-saran

berdasarkan hasil analisis data simulasi jaringan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

4

BAB II

LANDASAN TEORI

2.1 Mobile Ad Hoc Network (MANETs)

Mobile Ad hoc Network (MANET) adalah sebuah jaringan nirkabel yang

terdiri dari beberapa node yang tidak memerlukan infrastruktur. Setiap node

atau user pada jaringan ini bersifat mobile. Setiap node dalam jaringan dapat

berperan sebagai host dan router yang berfungsi sebagai penghubung antarnode

yang satu dengan node yang lainnya.

MANET melakukan komunikasi secara peer to peer menggunakan

routing dengan cara multi-hop. Informasi yang akan dikirimkan disimpan

dahulu dan diteruskan ke node tujuan melalui node perantara. Ketika topologi

mengalami perubahan karena node bergerak, maka perubahan topologi harus

diketahui oleh setiap node.

Gambar 2.1 MANET

2.2 JaringanOpportunistic

Jaringan opportunistic atau yang biasa disingkat OppNet adalah evolusi

yang menarik dari MANETs. Protokol komunikasi ini menyediakan koneksi

dalam keadaan konektivitas end-to-end yang tidak normal. OppNet

memungkinkan komunikasi dalam lingkungan dengan waktu penundaan yang

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

5

besar dan berubah-ubah, serta tingkat error yang tinggi. Penelitian ini bertujuan

untuk menguji kinerja protokol routing OppNet sehingga didapatkan solusi

optimal untuk pengiriman data berukuran besar dengan memanfaatkan alat

transportasi sebagai router di jaringan opportunistic. Pada jaringan ini,

meskipun delay (waktu jeda) dalam jaringan cukup tinggi, maka OppNet tetap

dapat bekerja. Apabila suatu saat salah satu node yang menjadi router

mengalami suatu masalah, maka OppNet tetap dapat bekerja. Data akan ditahan

di node (router) terakhir yang berfungsi. Selanjutnya paket data tersebut akan

diteruskan ke node berikutnya apabila node berikutnya telah berfungsi.

OppNet merupakan arsitektur yang cocok pada jaringan “menantang”

(challenged). Maksud dari “menantang” adalah jaringan yang penuh dengan

masalah, seperti delay yang lama, koneksi yang sering terputus dan tingkat

error yang tinggi. Perlu diketahui terciptanya konsep OppNet adalah untuk

komunikasi luar angkasa. Komunikasi luar angkasa memiliki karakter delay

pengiriman yang lama (akibat jarak yang jauh) dan koneksi end-to-end yang

tidak selalu ada (bahkan tidak ada). Misalkan pada pengiriman data dari stasiun

bumi ke sebuah kendaraan di Mars. Pengiriman ini memerlukan beberapa

satelit dan stasiun luar angkasa sebagai router. Koneksi end-to-end hampir

mustahil dibangun sehingga pengiriman data dengan TCP/IP tidak mungkin

dilakukan.Yang memungkinkan adalah mengirim data secara bertahap dari satu

node ke node berikutnya, kemudian disimpan. Selanjutnya dapat diteruskan ke

node berikutnya setelah ada koneksi. Dengan DTN, model pengiriman data

seperti ini sangat mungkin untuk dilakukan.

Gambar 2.2 Opportunistic Network

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

6

2.3 Metode Store, Carry, and Forward

OppNet dapat bekerja pada jaringan yang penuh dengan hambatan seperti

koneksi sering putus dan tingkat delay yang tinggi sehingga menggunakan

metode store, carry, and forward. Metode store, carry, and forward berarti

sebuah paket data saat melewati node-node perantara (router) akan disimpan

terlebih dahulu sebelum diteruskan. Hal ini untuk mengantisipasi seandainya

node berikutnya tidak dapat dijangkau (mati) atau ada kendala lain [2].

1) Store :Setiap node di OppNet menyimpan setiap pesan yang masuk

2) Carry :Relay node membawa pesan untuk disampaikan ke destination

3) Forward :Mengirim pesan ke node lainnya menuju tujuan setiap kali

kontak dimulai

Gambar 2.3 menunjukkan proses pengiriman data dari source node

dengan tujuan akhir destination node. Saat melewati node R2 data akan

disimpan terlebih dahulu, kemudian node R2 akan menyimpan pesan terdahulu

dan kemudian ia akan membawa pesan tersebut menuju node R3. R3 akan

menyimpan pesan tersebut dan kemudian membawa pesan ke destination.

Metode store, carry and forward berbeda dengan proses pengiriman data pada

TCP/IP. Pada TCP/IP, router hanya menerima data dan langsung mem-

forward. Akibatnya, jika koneksi putus di suatu tempat, data yang sedang

dalam proses pengiriman tersebut akan hilang (drop).

Metode store, carry dan forward memiliki konsekuensi yaitu setiap node

harus memiliki media penyimpanan (storage). Storage digunakan untuk

Gambar 2.3 Metode Store, Carry, and Forward di OppNet Gambar 2.3 Metode Store, Carry, and Forward di OppNet

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

7

menyimpan data apabila koneksi dengan node berikutnya belum tersedia.Oleh

karena itu, router yang hanya terdiri atas router board seperti yang biasa

dipakai dalam jaringan TCP/IP tidak dapat digunakan di OppNet. Router pada

jaringan OppNet harus memiliki media penyimpan, contohnya pada router yang

berupa PC.

Dalam OppNet, proses store, carry and forward dilakukan pada sebuah

layer tambahan yang disebut bundle layer, dan data yang tersimpan sementara

disebut dengan bundle. Bundle layer adalah sebuah layer tambahan untuk

memodifikasi paket data dengan fasilitas-fasilitas yang disediakan OppNet.

Bundle layer terletak langsung di bawah layer aplikasi. Dalam bundle layer,

data dari layer aplikasi akan dipecah-pecah menjadi bundle [3]. Bundle inilah

yang akan dikirim ke transport layer untuk diproses lebih lanjut.

Gambar 2.4 Letak Bundle Layer

2.4 Karakteristik OppNet

Beberapa karakteristik dari jaringan ini adalah :

a. Pemutusan

Tidak ada koneksi antara jumlah node.

b. Intermittent Connectivity

Jika tidak ada jalur end-to-end antara source dan destination.

c. High Latency

Latency didefinisikan sebagai end-to-end delay antara node. High latency

terjadi karena jumlah pemutusan antara node.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

8

d. Low Data Rate

Data rate adalah tingkat yang menggambarkan jumlah pesan yang

disampaikan dibawah jangka waktu tertentu. Low data rate terjadi karena

penundaan yang lama antara transmisi.

e. High Error Rate

Jika kesalahan bit terjadi pada link, maka data membutuhkan koreksi

kesalahan. Untuk mentransmisikan semua paket, dibutuhkan lalu lintas

jaringan yang lebih.

f. Sumber Daya Yang Terbatas

OppNet memiliki kendala pada sumber daya. Hal ini membutuhkan

desain protokol untuk mengefesienkan sumber daya. Dengan kata lain,

penggunaan node harus mengkonsumsi sumber daya perangkat keras secara

terbatas seperti CPU, memori (RAM) dan baterai. Protokol routing yang

baik akan mempengaruhi sumber dari beberapa node. Sebagai contoh, node

dapat memilih untuk mengalihkan beberapa bundle mereka untuk disimpan

ke node lain untuk membebaskan memori atau untuk mengurangi biaya

transmisi.

g. Panjang Antrian Delay

Setiap node memiliki buffer sendiri untuk pesan store, sering dapat

menyebabkan pemutusan dan panjang antrian penundaan.

2.5 Protokol Routing

OppNet adalah jaringan nirkabel di mana pemutusan dan delay sangat

sering terjadi karena mobility node, terputusnya aliran listrik dan sebagainya.

OppNet berperan penting ketika delay dalam jaringan mulai diamati. Salah satu

penyebabnya adalah karena gerakan node perantara bergerak secara acak yang

bekerja sebagai pembawa data dari source ke destination. Untuk mencapai

pengiriman data, akan dilakukan mekanisme “store, carry, and forward”.

Mekanisme ini diambil di mana data secara bertahap disimpan terlebih dahulu

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

9

di seluruh jaringan dan diharapkan pesan yang dikirim bisa sampai ke

destination.

Routing merupakan perpindahan informasi di seluruh jaringan dari node

sumber ke node tujuan dengan minimal satu yang berperan sebagai perantara.

Strategi routing di OppNet:

a) Strategi Flooding: setiap node dibanjiri oleh pesan sehingga destination

node menerima pesan tersebut. Beberapa copy pesan dari pesan yang sama

akan dibuat dan dikirim ke node yang disebut relay node. Ia akan

menyimpan pesan sampai ia dapat menghubungi node tujuan.

Keuntungan:

1) Kemungkinan yang besar agarsource terhubung dengan destination.

2) Tingkat keberhasilan yang tinggi pada pengiriman pesan.

b) Strategi Forwarding: menggunakan pengetahuanjaringan untuk memilih

jalur terbaik (shortest one) ke destination serta membuat penggunaan

topologi jaringan dan pengetahuan lokal/global untuk menemukan rute

terbaik dalam menyampaikan pesan ke tujuan.

Keuntungan:

1) Tidak ada replikasi (lebih sedikit bandwidth).

2) Lebih cepat karena menggunakan jalur routing yang terbaik.

Tujuan dari protokol routing di OppNet adalah sebagai berikut:

1) Memaksimalkan tingkat pengiriman pesan

2) Meminimalkan message latency

3) Meminimalkan total sumber daya yang dikonsumsi dalam pengiriman

pesan seperti ukuran buffer yang terdapat di dalam mobile host yang

ditujukan untuk menyimpan pesan host lain, energy dari host

(pembawa) dikonsumsi dalam penyimpanan.

Contoh protocol routing yang ada di OppNet adalah epidemic. Konsep

epidemic yaitu menggunakan strategi flooding dengan harapan meningkatkan

tingkat keberhasilan pengiriman pesan di OppNet. Pada epidemic, setiap source

node akan memberi copy pesan kepada setiap relay node yang ditemui sehingga

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

10

pesan akan lebih cepat diterima oleh destination node, hal itu menyebabkan

overhead dan penggunaan energy yang sangat tinggi. Dengan keadaan seperti

ini, kemudian diciptakan lagi sebuah routing bernama epidemic energy aware.

Konsep epidemic energy awareadalah dengan menambahkan algoritma

exponentially weighted moving average (EWMA) pada konsep epidemic serta

tujuan untuk mengoptimalkan overhead dan penggunaan energy di epidemic.

2.6 Routing Protocol

2.6.1 EpidemicRouting Protocol

Routing Epidemic menggunakan konsep flooding (replikasi) di

jaringan mobile[1] yang konektivitasnya tidak tersedia secara terus

menerus. Hal ini merupakan salah satu strategi yang pertama kali

digunakan untuk memungkinkan pengiriman message pada jaringan

Opportunistic. Pada epidemic setiap node menyimpan daftar semua

message yang dibawa (ID node) yang pengirimannya tertunda. Setiap

kali bertemu node lain, relay node saling bertukar informasi message

(summary vector) untuk mengecek apakah node memiliki pesan dengan

ID yang sama. Jika relay node bertemu dengan node lain yang memiliki

ID pesan yang sama, maka pesan tidak akan dititipkan.

Algoritma Epidemic (Nj)

while Ni is contact with Nj do

send summary_vector(Nj)

receive summary_vector (Ni)

while∃ m ϵ buffer(Nj) do

if∃ m ϵ buffer(Nj) ≠ ∃ m ϵ buffer(Ni)

then replicate (m, Ni)

end if

end while

end while

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

11

Gambar 2.5 Summary Vector

Pada routing epidemic beberapa resources pada tiap node

diasumsikan tidak terbatas. Tetapi pada implementasinya di dunia nyata

resources pada tiap node sangat terbatas. Contoh routing protokol

Epidemic seperti pada gambar dibawah ini:

Gambar 2.6 Ilustrasi Routing Protokol Epidemic

2.6.2 Epidemic Energy AwareRouting Protocol (Epidemic EA)

Pada Protokol Epidemic EA menggunakan strategi yang sama

seperti Routing Epidemic yaitu konsep flooding (replikasi). Namun,

Protokol Epidemic EA memiliki perbedaan dengan Protokol Epidemic

yaitu Protokol Epidemic EA memperhitungkan laju penggunaan energi

baterai dari node yang ditemui.

Laju penggunaan baterai dihitung menggunakan teknik

perhitungan statistik EWMA (Exponentially Weighted Moving

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

12

Average) dengan rumus perhitungan sebagai

berikut:EWMAt=λYt+(1−λ)EWMAt−1fort=1,2,…,n. Dimana

EWMA0 merupakan rata - rata rekaman data terdahulu dan Yt waktu

observasi pada saat waktu t. Sedangkan n adalah jumlah observasi

yang dipantau termasuk EWMA0 untuk ʎ diinisialisasikan dengan nilai

rentang antara 0 sampai dengan 1 (1<ʎ≤1).

Berikut dijelaskan implementasi dari rumusperhitungan laju

penggunaan energi dengan menggunakan teknik EWMA:

power(t)= a

power(t+Δt) = b

diff_power(t+Δt) = |b–a|

diff_power(t) =

decreasing_power_rate =a diff_power(t+Δt)+(1-a) diff_power(t)

dimana 0< ≤1 dengan inisialisasi α=0,4, t=waktu observasi, dan

Algoritma Epidemic Energy Aware (Nj)

while Njis contact with Nido

send summary_vector(Nj)

send decreasing_power_rate(Nj)

receive summary_vector (Ni)

receive decreasing_power_rate(Ni)

calculate decreasing_power_rate(Nj)

while∃ m ϵ buffer(Nj) do

if∃ m ϵ buffer(Nj) ≠ ∃ m ϵ buffer(Ni)

ifdecreasing_power_rate(Nj)>decreasing_power_rate(Ni)

then replicate (m, Ni)

end if

end if

end while

end while

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

13

2.7 ONE Simulator

Opportunistic Network Environment atau yang biasa disingkat ONE

simulator adalah simulator yang diciptakan untuk membuat simulasi DTN

(DelayTolerant Network) menjadi lebih kompleks dan lebih mudah untuk

dimengerti. Pada simulator ini, terdapat pemodelan pergerakan, routing,

visualisasi dan pelaporan dalam satu program.

Inti dari ONE adalah simulator yang berbasis kepada waktu, di mana

setiap pengambilan data terdapat waktu simulasi yang dapat di atur sehingga

membuatnya cocok dan cukup efisien untuk simulasi routing yang disertai

dengan model pergerakan. Selain itu, simulasi berisi sejumlah node yang dapat

dikelompokkan dalam satu set parameter, seperti besarnya pesan, kapasitas

buffer, dan radio range. Kelompok node juga dapat dibuat berbeda sesuai

dengan pengelompokan grup sehingga memiliki konfigurasi yang berbeda pula,

misalnya simulasi dengan pejalan kaki, mobil dan angkutan umum [5].

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

14

BAB III

RANCANGAN SIMULASI JARINGAN

3.1 Parameter Simulasi

Pada penelitian ini sudah ditentukan parameter-parameter jaringan.

Parameter-parameter bersifat konstan dan akan dipakai terus pada setiap

pengujian yang dilakukan. Untuk skenario pergerakan node, digunakan sebuah

mobility model yaitu random waypoint mobility dan real human trace.

Tabel 3.11 Parameter utama ONE simulator

Parameter Simulasi

Skenario mobility Random Waypoint Real Human Trace

Waktu simulasi 950400s 950400s

Interval generasi pesan 1200s

Messagesize 10kB

Luas area 1000m x 1000m

Transmission range 10m

Protokol routing Epidemic

Epidemic Energy Aware

Selain parameter utama simulasi, Tabel 3.2 merupakan parameter inisialisasi

energi pada tiap node.

Tabel 3.1Parameter utama energy baterai.

Parameter Energi Nilai

Initial Energy 44000

Scan Energy 0,05

Transmit Energy 5

Scan Response Energy 0,05

Energi pada setiap node akan berkurang setiap melakukan scanning, scan

response, transmit, receive sesuai dengan nilai yang sudah ditentukan. Nilai

pengurangan dihitung dengan mengalikan nilai energy terhadap lama waktu

setiap melakukan simulasi.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

15

3.2 Skenario Simulasi

Simulasi ini terdiri dari dua pergerakan yaitu random waypoint dan real

human trace yang masing-masing akan diuji dengan skenario di bawah ini:

Tabel 3.2 Skenario Penambahan Jumlah Node dengan TTL pesan tetap

No #Node TTL(Menit)

1 25

1440

2 50

3 75

4 100

5 125

Tabel 3.2Skenario Penambahan TTL pesan denganjumlah Node tetap

No TTL(Menit) #Node

1 2

100

2 10

3 60

4 180

5 360

6 1440

Setelah menjalankan skenario Random Waypoint, kemudian model

pergerakan yang akan dijalankan adalah pergerakan Real Human Trace atau

pergerakan manusia untuk kedua protokol.

Tabel 3.5 Skenario Penambahan TTL pesan pada pergerakan manusia

No TTL(Menit) #Node

1 2

36

2 10

3 60

4 180

5 360

6 1440

3.3 Random Waypoint

Dalam teori pergerakan mobile node, model pergerakan random waypoint

adalah sebuah gerakan pada node bergerak dimana kecepatan, akselerasi dan

arah gerak berubah seiring dengan berjalannya waktu. Pergerakan random

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

16

waypoint banyak digunakan untuk mensimulasikan pergerakan mobile node

pada Mobile Ad-hoc Networks (MANET) dan Jaringan opportunistic karena

dianggap memiliki kompleksitas yang rendah tetapi tetap efektif.

Dalam simulasi yang berbasis pergerakan random, setiap node bergerak

tanpa batasan. Lebih jelasnya, tujuan, kecepatan, dan arah semuanya ditentukan

secara random tanpa pengaruh dari node lainnya.

Gambar 3.1 Random Waypoint

3.4 Real Human Trace

Real Human Trace adalah sebuah pengambilan data pergerakan manusia

di dunia nyata yang kemudian dimodelkan dan disimulasikan. Pengambilan

data dilakukan dengan menggunakan sebuah alat. Pada simulasi ini, jenis Real

Human Trace yang digunakan adalah Haggle4 yang diciptakan oleh Cambridge

University. Model pergerakan manusia ini memodelkan sejumlah manusia pada

sebuah konferensi. Sebanyak 36 orang dimintai untuk menjadi model

pergerakan, manusia tersebut dibekali sebuah alat yang bernama iMotes.

Perangkat tersebut memiliki interface wireless berupa bluetooth dengan

jangkauan gelombang radio kurang lebih sejauh 10 meter. Perangkat tersebut

dapat mencatat gaya pergerakan manusia yang membawanya, tempat yang

sering dikunjungi, siapa saja yang berkontak dengannya bahkan komunitasnya.

Pengambilan data Haggle4 dilakukan selama kurang lebih 11 hari.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

17

3.5 Parameter Kinerja

Empat parameter yang dipakai dalam tugas akhir ini adalah :

a) Delivery Probability

Delivery probability adalah rasio antara pesan yang sampai ke destination

dan jumlah pesan yang dikirim. Jaringan memiliki kinerja yang baik apabila

memiliki delivery probability yang tinggi.

Rumus untuk menghitung delivery ratio :

b) Delay

Delayyang dimaksud adalah rata-rata waktu antara pesan dibuat dan pesan

diterima oleh destination. Jaringan opportunistic memiliki rata-rata delay

yang tinggi karena sifat dari jaringan itu sendiri. Jaringan memiliki kinerja

yang baik apabila memiliki rata-rata delay yang rendah.

Rumus untuk menghitung delay:

c) Overhead

Overheadadalah metrik yang digunakan untuk memperkirakan copy pesan

dari original pesan yang disebarkan di dalam jaringan. Jaringan dikatakan

memiliki kinerja yang baik apabila memiliki overhead yang rendah.

Rumus untuk menghitung overhead ratio :

d) Number of Dead Node

Dead Node adalah node yang mati karena kehabisan energi selama simulasi

berlangsung. Number of Dead Node dapat digunakan untuk mengukur

seberapa banyak energi yang dihabiskan selama simulasi berlangsung.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

18

3.6 Topologi Jaringan

Bentuk topologi jaringan OppNet tidak dapat diramalkan karena itu

topologi jaringan ini dibuat secara random (acak). Hasil dari simulasi baik itu

posisi node, pergerakan node dan juga koneksi yang terjadi tentunya tidak akan

sama dengan topologi yang sudah direncanakan. Berikut adalah salah satu

contoh jaringan snapshot jaringan dengan ONE simulator.

Gambar 3.2 Snapshoot jaringan dengan ONE simulator

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

19

BAB IV

PENGUJIAN DAN ANALISIS

Untuk mengetahui unjuk kerja protokol epidemicEA terhadap protokol

epidemic, maka akan dilakukan seperti pada tahap skenario rancangan simulasi

jaringan pada Bab.3

4.1 Random Waypoint

4.1.1 Penambahan Jumlah Node

Tabel 4.1Hasil Pengujian Penambahan Jumlah Node

Jumlah

Node

Pengujian Dengan Pergerakan Random Waypoint

Delivery Probability Overhead Delay

Epidemic Epidemic

EA Epidemic

Epidemic

EA Epidemic

Epidemic

EA

25 0.6821 0.6898 23.1243 21.2765 5986.981

3 15856.4089

50 0.6813 0.6718 47.7759 47.9517 3225.643

1 6001.7338

75 0.7002 0.6963 73.0414 73.0417 2278.329 3751.2269

100 0.6876 0.6838 98.0139 98.1114 1844.340

4 2788.4415

125 0.6889 0.6889 123.1607 123.1579 1540.429

9 2258.0482

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

20

(a) Delivery Probability (b) Overhead

(c) Delay

Grafik 4.1.1Random Waypoint: Dampak Penambahan Jumlah Node Terhadap Unjuk Kerja Jaringan

Grafik 4.1.1 (a) menampilkan bahwa penambahan jumlah node di dalam

jaringan menunjukkan tingkat delivery probability yang hampir sama pada protokol

Epidemic dan protokol EpidemicEA. Hal ini terjadi karena dalam pergerakan

Random Waypoint setiap node dari kedua protokol tersebut mempunyai probabilitas

bertemu dengan node lain sama.

Pada grafik 4.1.1 (b), memperlihatkan bahwa penambahan jumlah node

berpengaruh pada overhead yang hampir sama di kedua protokol dan sebaliknya

sangat berpengaruh pada delay di dalam jaringan. Grafik 4.1.1 (c) menunjukkan

penurunan delay di setiap protokol, hal ini terjadi karena penambahan node

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

21

menyebabkan kerapatan (density) di dalam jaringan yang memberi peluang besar

kepada relay node dalam proses penyampaian pesan ke destination. Meskipun delay

di dalam jaringan sama-sama mengalami penurunan, namun protokol EpidemicEA

memperlihatkan delay jaringan yang lebih tinggi dibandingkan protokol Epidemic,

karena protocol EpidemicEA ditambahkan algoritma perhitungan laju penggunaan

energi dalam proses pengiriman pesan. Namun, algoritma perhitungan laju

penggunaan energi yang terdapat pada protocol EpidemicEA hanya berpengaruh pada

delay jaringan dan tidak berpengaruh pada delivery probability, overhead, dan

number of dead node (Grafik 4.1.1 Dead node(a,b,c,d,e)) dipergerakan Random

Waypoint, karena pada pergerakan Random Waypoint probabilitas suatu node

bertemu dengan node lain adalah sama.

Gambar 1 Grafik dead node (a)

Gambar 2 Grafik dead node (b)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

22

Gambar 3 Grafik dead node (c)

Gambar 4 Grafik dead node (d)

Gambar 5 Grafik dead node (e) Grafik 4.1.1 dead node(a,b,c,d,e)Random Waypoint: Dampak penambahan Node terhadap jumlah Node

yang mati.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

23

4.1.2 Penambahan TTL (Time to Live)

Tabel 4.2Hasil Pengujian Penambahan TTL

TTL

(Menit)

Pengujian Dengan Pergerakan Random Waypoint

Delivery Probability Overhead Delay

Epidemic Epidemic

EA

Epidemic Epidemic

EA

Epidemic EpidemicEA

2 0.112 0.0987 38.1243 37.2765 5986.9813 10654.6850

10 0.1964 0.1718 47.7759 46.9517 3225.6431 6001.7338

60 0.2812 0.2663 61.0414 60.0417 2278.329 2751.2269

180 0.3982 0.3734 72.0139 71.1114 1944.3404 2088.4415

360 0.5459 0.5287 84.1607 83.1579 1840.4299 2018.0482

1440 0.5576 0.5438 86.0139 85.1114 1844.3404 1988.4415

Grafik 4.1.2Random Waypoint: Dampak Penambahan TTL Terhadap Unjuk Kerja Jaringan

(a)Delivery Probability (b)Overhead

(c)Delay

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

24

Sama seperti pada skenario penambahan jumlah node, skenario penambahan

TTL pada pesan di pergerakan Random Waypoint juga berpengaruh pada parameter

Delivery Probability dan Overhead, seperti yang dapat dilihat pada grafik 4.1.2 (a)

dan grafik 4.1.2 (b), dimana semakin lama TTL pada pesan maka akan semakin

banyak juga pesan yang bisa sampai kepada destination dan hal itu sangat berdampak

pada resources. Grafik 4.1.2 (c) menunjukkan bahwa penambahan TTL pada pesan

juga berpengaruh pada Delay, dimana protokol epidemicEA mempunyai Delay yang

awalnya lebih tinggi kemudian menjadi hampir sama dengan protokol epidemic, hal

itu disebabkan karena protokol epidemicEA memiliki beban kerja lebih banyak

dibandingkan protokol epidemic dan kemudian karena pada pergerakan Random

Waypoint dimana setiap node mempunyai probabilitas bertemu dengan node lain

sama dan TTL pada pesan semakin lama. Penambahan TTL pada pesan juga

berpengaruh terhadap penggunaan energi, karena semakin lama TTL pada pesan

maka akan semakin banyak juga pesan yang akan tersampaikan, dan hal itu

menyebabkan penggunaan energi pada tiap node akan semakin meningkat seperti

yang ditunjukkan pada Grafik Dead node

4.1.2(a,b,c).

Gambar 1 Grafik dead node (a)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

25

Gambar 2Grafik dead node (b)

Gambar 3Grafik dead node (c) Grafik 4.1.2 Dead node(a,b,c)Random Waypoint: Dampak penambahan TTL pada terhadap jumlah

Node yang mati.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

26

4.2 Real Human Trace

4.2.1 Real Human Trace(Haggle4)

Tabel 4.3Hasil Pengujian Pada Pergerakan Real Human Trace

TTL

(Menit)

Pengujian Dengan Pergerakan Real Human Trace

Delivery Probability Overhead Delay

Epidemic EpidemicEA Epidemic EpidemicEA Epidemic EpidemicEA

2 0,0497 0,0005 53,76 1,230025 50003,1259 55575,61

10 0,2635 0,0019 77,281235 15,658415 48568,3549 53690,9

60 0,2768 0,02 85,847272 20,338909 45254,4589 55850,9

180 0,3565 0,1355 92,766524 30,106608 42482,0571 57743,95

360 0,4468 0,1598 100,542965 38,217184 38841,4 60942,856

1440 0,5298 0,1692 104,831272 39,932509 34110,6593 66584,939

(a)Delivery Probability (b)Overhead

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

27

Grafik 4.2.Reality Mining (MIT): Dampak Penambahan TTL pesan Terhadap Unjuk Kerja Jaringan

Keberhasilan dalam pengiriman pesan juga dipengaruhi oleh TTL (Time to

Live) dari pesan tersebut. Pada grafik 4.2 (a) menunjukan bahwa penambahan TTL

pada pesan dikedua protokol meningkatkan kemungkinan pesan sampai ke tujuan.

Meskipun pada protokol EpidemicEA kemungkinan pesan sampai ke tujuan

meningkat karena penambahan TTL, tetapi nilai rasio sampainya pesan ke tujuan

lebih rendah dibandingkan dengan protokol Epidemic. Hal itu dikarenakan protokol

EpidemicEA harus menghitung laju penggunaan energi sehingga menyebabkan

lambatnya pertukaran pesan yang berpengaruh pada overhead seperti yang

ditampilkan pada grafik 4.2 (b) dan menyebabkan delay semakin meningkat seperti

yang ditampilkan pada grafik 4.2 (c), karena TTL pada pesan semakin lama

makanode akan sering berinteraksi yang menyebabkan menjadi semakin lama

bertemu dengan node yang penggunaan energinya lebih rendah dan proses pertukaran

pesan menjadi lambat.Hal ini yang membuat penggunaan energi tiap node pada

protokol EpidemicEA menjadi lebih rendah dibanding protokol Epidemic seperti

yang dapat dilihat pada grafik 4.2 (d).

(c)Delay

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

28

Grafik 4.2Haggle4: Dampak penambahan TTL pesan terhadap jumlah Node yang mati.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

29

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari hasil simulasi dan pengujian yang telah dilakukan dapat disimpulkan

bahwa :

Pada pergerakan Random Waypoint protokol Epidemic maupun protokol

EpidemicEA tidak bekerja dengan baik karena tidak dapat menjaga energi

baterai pada kedua protokol.

Pada pergerakan manusia dimana probabilitas tiap node saling bertemu

berbeda – beda, protokol EpidemicEA bekerja dengan baik karena protokol

EpidemicEA bisa menjaga energi baterai yang dimiliki, meskipun harus

mengorbankan delivery probability yang menjadi rendah dan delay yang

semakin meningkat dibandingkan protokol Epidemic.

5.2 Saran

Penelitian lebih lanjut tentang protokol EpidemicEA pada OppNet bisa

dikembangkan lagi mengingat masih banyak cara untuk mengoptimalkan energi

pada protokol ini.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

30

DAFTAR PUSTAKA

[1] Vahdat, Amin& Becker, David. “Epidemic Routing for Partially-connected

Ad Hoc Networks”. Technical Report CS-200006, Duke University, April

2000. Diakses dari http://ieeexplore.ieee.org/Xplore/, diunduh pada Oktober

2015.

[2] Dr. Mazlan Abbas. Trends and Challenges in Delay Tolerant Network (DTN)

or Mobile Opportunistic Network (OppNet), UTHM 2 April 2014.

[3] A. Keranen, J. Ott, T. Karkkainen, “The ONE Simulator for DTN Protocol

Evaluation”, SIMUTools 2009, Rome, Italy, 2009.

[4] Yoon Jengkeun, Mingyan Liu and Brian Noble, “Random Waypoint

Considered Harmful” IEEE, 2003.

[5] Keranen, Ari, “Opportunistic Network Environment simulator”, Helsinki

University of Technology, May 29, 2008.

[6] Cabacas, R. A., Nakamura, H. & Ra, I-H., “Energy Consumption Analysis of

Delay Tolerant Network Routing Protocols,” International Journal of

Software Engineering and Its Applications, vol. 8, no. 2, pp. 1-10, 2010.

[7] Scott,J.,Gass, R., Crowcroft, J., Hui, P., Diot C., Chaintreau A., CRAWDAD

dataset cambridge/haggle (v. 2009-05-29), diakses dari

http://crawdad.org/cambridge/haggle/20090529, doi: 10.15783/C70011, Mei

2009.

[8] Zhang, Z. (2014) “Energy Consumption Analysis of Delay Tolerant Network

Routing Protocols”, International Journal of Software Engineering and Its

Applicstions, 8 (2), pp. 1-10.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

31

LAMPIRAN

1. Listing Program

a) Default settings

#

# Default settings for the simulation

#

## Scenario settings

Scenario.name=

Hasil_%%Group.router%%_%%Group.nrofHosts%%_%%Group.movem

entModel%%_baru

Scenario.simulateConnections = true

# Untuk pergerakan manusia

#Scenario.simulateConnections = false

Scenario.updateInterval = 0.1

# 950400s == 11d

Scenario.endTime = 950400

# "Bluetooth" interface for all nodes

btInterface.type = SimpleBroadcastInterface

# Transmit speed of 2 Mbps = 250kBps

btInterface.transmitSpeed = 250k

btInterface.transmitRange = 10

# High speed, long range, interface for group 4

#highspeedInterface.type = SimpleBroadcastInterface

#highspeedInterface.transmitSpeed = 10M

#highspeedInterface.transmitRange = 10

# Define 6 different node groups

Scenario.nrofHostGroups = 1

# Common settings for all groups

Group.movementModel = RandomWaypoint

# Untuk pergerakan manusia

#Group.movementModel = StationaryMovement

Group.nodeLocation = 0,1

Group.router = EpidemicRouter

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

32

#Group.router = EpidemicEWMA

Group.bufferSize = 50M

Group.waitTime = 0, 120

# All nodes have the bluetooth interface

Group.nrofInterfaces = 1

Group.interface1 = btInterface

# Walking speeds

Group.speed = 0.5, 1.5

# Message TTL of 300 minutes (5 hours)

# Message TTL of 1440 minutes (24 hours)

# Penambahan TTL Pesan

Group.msgTtl = [2; 10; 60; 180; 360; 1440]

# Penambahan jumlah node

Group.nrofHosts = [25; 50; 75; 100; 125]

# group1 (pedestrians) specific settings

Group1.groupID = p

#EnergyLevelReport.granularity = 200

Group1.initialEnergy = 44000

Group1.scanEnergy = 0.05

Group1.transmitEnergy = 5

Group1.scanResponseEnergy = 0.05

## Message creation parameters

# How many event generators

Events.nrof = 1

# Class of the first event generator

Events1.class = MessageEventGenerator

# Untuk pergerakan manusia

#Events2.class = StandardEventReader

#Events2.filePath = Haggle3-Infocom5.csv

# (following settings are specific for the MessageEventGenerator class)

# Creation interval in seconds (one new message every 25 to 35 seconds)

Events1.interval = 1200,1201

#Events1.interval = 25,35

# Message sizes (500kB - 1MB)

Events1.size = 500k,1M

# range of message source/destination addresses

Events1.hosts = [0,24; 0,49; 0,74; 0,99; 0,124]

# Message ID prefix

Events1.prefix = M

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

33

## Movement model settings

# seed for movement models' pseudo random number generator (default =

0)

MovementModel.rngSeed = [1; 20; 24; 35; 45]

# World's size for Movement Models without implicit size (width, height;

meters)

MovementModel.worldSize = 1000, 1000

# How long time to move hosts in the world before real simulation

MovementModel.warmup = 1000

## Map based movement -movement model specific settings

MapBasedMovement.nrofMapFiles = 4

MapBasedMovement.mapFile1 = data/roads.wkt

MapBasedMovement.mapFile2 = data/main_roads.wkt

MapBasedMovement.mapFile3 = data/pedestrian_paths.wkt

MapBasedMovement.mapFile4 = data/shops.wkt

## Reports - all report names have to be valid report classes

# how many reports to load

Report.nrofReports = 2

# length of the warm up period (simulated seconds)

Report.warmup = 0

# default directory of reports (can be overridden per Report with output

setting)

Report.reportDir=

[reports/Epidemic_Biasa/RandomWay/MessageStatsReport/1;

reports/Epidemic_Biasa/RandomWay/MessageStatsReport/2;

reports/Epidemic_Biasa/RandomWay/MessageStatsReport/3;

reports/Epidemic_Biasa/RandomWay/MessageStatsReport/4;

reports/Epidemic_Biasa/RandomWay/MessageStatsReport/5]

# Untuk pergerakan manusia

#Report.reportDir=

[reports/Epidemic_Biasa/HumanTrace/MessageStatsReport/1;

reports/Epidemic_Biasa/HumanTrace/MessageStatsReport/2;

reports/Epidemic_Biasa/HumanTrace/MessageStatsReport/3;

reports/Epidemic_Biasa/HumanTrace/MessageStatsReport/4;

reports/Epidemic_Biasa/HumanTrace/MessageStatsReport/5]

#Report.reportDir=

[reports/EpidemicEWMA/RandomWay/MessageStatsReport/1;

reports/EpidemicEWMA/RandomWay/MessageStatsReport/2;

reports/EpidemicEWMA/RandomWay/MessageStatsReport/3;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

34

reports/EpidemicEWMA/RandomWay/MessageStatsReport/4;

reports/EpidemicEWMA/RandomWay/MessageStatsReport/5]

# Untuk pergerakan manusia

#Report.reportDir=

[reports/EpidemicEWMA/HumanTrace/MessageStatsReport/1;

reports/EpidemicEWMA/HumanTrace/MessageStatsReport/2;

reports/EpidemicEWMA/HumanTrace/MessageStatsReport/3;

reports/EpidemicEWMA/HumanTrace/MessageStatsReport/4;

reports/EpidemicEWMA/HumanTrace/MessageStatsReport/5]

# Report classes to load

Report.report1 = MessageStatsReport

Report.report2 = EnergyEvolution

b) DTNHost

/*

* Copyright 2010 Aalto University, ComNet

* Released under GPLv3. See LICENSE.txt for details.

*/

package core;

import java.util.ArrayList;

import java.util.Collection;

import java.util.List;

import movement.MovementModel;

import movement.Path;

import routing.MessageRouter;

import routing.util.RoutingInfo;

/**

* A DTN capable host.

*/

public class DTNHost implements Comparable<DTNHost> {

private static int nextAddress = 0;

private int address;

private Coord location; // where is the host

private Coord destination; // where is it going

private MessageRouter router;

private MovementModel movement;

private Path path;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

35

private double speed;

private double nextTimeToMove;

private String name;

private List<MessageListener> msgListeners;

private List<MovementListener> movListeners;

private List<NetworkInterface> net;

private ModuleCommunicationBus comBus;

static {

DTNSim.registerForReset(DTNHost.class.getCanonicalName());

reset();

}

/**

* Creates a new DTNHost.

* @param msgLs Message listeners

* @param movLs Movement listeners

* @param groupId GroupID of this host

* @param interf List of NetworkInterfaces for the class

* @param comBus Module communication bus object

* @param mmProto Prototype of the movement model of this host

* @param mRouterProto Prototype of the message router of this host

*/

public DTNHost(List<MessageListener> msgLs,

List<MovementListener> movLs,

String groupId, List<NetworkInterface> interf,

ModuleCommunicationBus comBus,

MovementModel mmProto, MessageRouter mRouterProto) {

this.comBus = comBus;

this.location = new Coord(0,0);

this.address = getNextAddress();

this.name = groupId+address;

this.net = new ArrayList<NetworkInterface>();

for (NetworkInterface i : interf) {

NetworkInterface ni = i.replicate();

ni.setHost(this);

net.add(ni);

}

// TODO - think about the names of the interfaces and the nodes

//this.name = groupId + ((NetworkInterface)net.get(1)).getAddress();

this.msgListeners = msgLs;

this.movListeners = movLs;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

36

// create instances by replicating the prototypes

this.movement = mmProto.replicate();

this.movement.setComBus(comBus);

this.movement.setHost(this);

setRouter(mRouterProto.replicate());

this.location = movement.getInitialLocation();

this.nextTimeToMove = movement.nextPathAvailable();

this.path = null;

if (movLs != null) { // inform movement listeners about the location

for (MovementListener l : movLs) {

l.initialLocation(this, this.location);

}

}

}

/**

* Returns a new network interface address and increments the address for

* subsequent calls.

* @return The next address.

*/

private synchronized static int getNextAddress() {

return nextAddress++;

}

/**

* Reset the host and its interfaces

*/

public static void reset() {

nextAddress = 0;

}

/**

* Returns true if this node is actively moving (false if not)

* @return true if this node is actively moving (false if not)

*/

public boolean isMovementActive() {

return this.movement.isActive();

}

/**

* Returns true if this node's radio is active (false if not)

* @return true if this node's radio is active (false if not)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

37

*/

public boolean isRadioActive() {

/* TODO: make this work for multiple interfaces */

return this.getInterface(1).isActive();

}

/**

* Set a router for this host

* @param router The router to set

*/

private void setRouter(MessageRouter router) {

router.init(this, msgListeners);

this.router = router;

}

/**

* Returns the router of this host

* @return the router of this host

*/

public MessageRouter getRouter() {

return this.router;

}

/**

* Returns the network-layer address of this host.

*/

public int getAddress() {

return this.address;

}

/**

* Returns this hosts's ModuleCommunicationBus

* @return this hosts's ModuleCommunicationBus

*/

public ModuleCommunicationBus getComBus() {

return this.comBus;

}

/**

* Informs the router of this host about state change in a connection

* object.

* @param con The connection object whose state changed

*/

public void connectionUp(Connection con) {

this.router.changedConnection(con);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

38

}

public void connectionDown(Connection con) {

this.router.changedConnection(con);

}

/**

* Returns a copy of the list of connections this host has with other hosts

* @return a copy of the list of connections this host has with other hosts

*/

public List<Connection> getConnections() {

List<Connection> lc = new ArrayList<Connection>();

for (NetworkInterface i : net) {

lc.addAll(i.getConnections());

}

return lc;

}

/**

* Returns the current location of this host.

* @return The location

*/

public Coord getLocation() {

return this.location;

}

/**

* Returns the Path this node is currently traveling or null if no

* path is in use at the moment.

* @return The path this node is traveling

*/

public Path getPath() {

return this.path;

}

/**

* Sets the Node's location overriding any location set by movement model

* @param location The location to set

*/

public void setLocation(Coord location) {

this.location = location.clone();

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

39

/**

* Sets the Node's name overriding the default name (groupId + netAddress)

* @param name The name to set

*/

public void setName(String name) {

this.name = name;

}

/**

* Returns the messages in a collection.

* @return Messages in a collection

*/

public Collection<Message> getMessageCollection() {

return this.router.getMessageCollection();

}

/**

* Returns the number of messages this node is carrying.

* @return How many messages the node is carrying currently.

*/

public int getNrofMessages() {

return this.router.getNrofMessages();

}

/**

* Returns the buffer occupancy percentage. Occupancy is 0 for empty

* buffer but can be over 100 if a created message is bigger than buffer

* space that could be freed.

* @return Buffer occupancy percentage

*/

public double getBufferOccupancy() {

double bSize = router.getBufferSize();

double freeBuffer = router.getFreeBufferSize();

return 100*((bSize-freeBuffer)/bSize);

}

/**

* Returns routing info of this host's router.

* @return The routing info.

*/

public RoutingInfo getRoutingInfo() {

return this.router.getRoutingInfo();

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

40

/**

* Returns the interface objects of the node

*/

public List<NetworkInterface> getInterfaces() {

return net;

}

/**

* Find the network interface based on the index

*/

public NetworkInterface getInterface(int interfaceNo) {

NetworkInterface ni = null;

try {

ni = net.get(interfaceNo-1);

} catch (IndexOutOfBoundsException ex) {

throw new SimError("No such interface: "+interfaceNo +

" at " + this);

}

return ni;

}

/**

* Find the network interface based on the interfacetype

*/

protected NetworkInterface getInterface(String interfacetype) {

for (NetworkInterface ni : net) {

if (ni.getInterfaceType().equals(interfacetype)) {

return ni;

}

}

return null;

}

/**

* Force a connection event

*/

public void forceConnection(DTNHost anotherHost, String interfaceId,

boolean up) {

NetworkInterface ni;

NetworkInterface no;

if (interfaceId != null) {

ni = getInterface(interfaceId);

no = anotherHost.getInterface(interfaceId);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

41

assert (ni != null) : "Tried to use a nonexisting interfacetype "+interfaceId;

assert (no != null) : "Tried to use a nonexisting interfacetype "+interfaceId;

} else {

ni = getInterface(1);

no = anotherHost.getInterface(1);

assert (ni.getInterfaceType().equals(no.getInterfaceType())) :

"Interface types do not match. Please specify interface type explicitly";

}

if (up) {

ni.createConnection(no);

} else {

ni.destroyConnection(no);

}

}

/**

* for tests only --- do not use!!!

*/

public void connect(DTNHost h) {

Debug.p("WARNING: using deprecated DTNHost.connect(DTNHost)" +

"Use DTNHost.forceConnection(DTNHost,null,true) instead");

forceConnection(h,null,true);

}

/**

* Updates node's network layer and router.

* @param simulateConnections Should network layer be updated too

*/

public void update(boolean simulateConnections) {

if (!isRadioActive()) {

// Make sure inactive nodes don't have connections

tearDownAllConnections();

return;

}

if (simulateConnections) {

for (NetworkInterface i : net) {

i.update();

}

}

this.router.update();

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

42

/**

* Tears down all connections for this host.

*/

private void tearDownAllConnections() {

for (NetworkInterface i : net) {

// Get all connections for the interface

List<Connection> conns = i.getConnections();

if (conns.size() == 0) continue;

// Destroy all connections

List<NetworkInterface> removeList =

new ArrayList<NetworkInterface>(conns.size());

for (Connection con : conns) {

removeList.add(con.getOtherInterface(i));

}

for (NetworkInterface inf : removeList) {

i.destroyConnection(inf);

}

}

}

/**

* Moves the node towards the next waypoint or waits if it is

* not time to move yet

* @param timeIncrement How long time the node moves

*/

public void move(double timeIncrement) {

double possibleMovement;

double distance;

double dx, dy;

if (!isMovementActive() || SimClock.getTime() < this.nextTimeToMove) {

return;

}

if (this.destination == null) {

if (!setNextWaypoint()) {

return;

}

}

possibleMovement = timeIncrement * speed;

distance = this.location.distance(this.destination);

while (possibleMovement >= distance) {

// node can move past its next destination

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

43

this.location.setLocation(this.destination); // snap to destination

possibleMovement -= distance;

if (!setNextWaypoint()) { // get a new waypoint

return; // no more waypoints left

}

distance = this.location.distance(this.destination);

}

// move towards the point for possibleMovement amount

dx = (possibleMovement/distance) * (this.destination.getX() -

this.location.getX());

dy = (possibleMovement/distance) * (this.destination.getY() -

this.location.getY());

this.location.translate(dx, dy);

}

/**

* Sets the next destination and speed to correspond the next waypoint

* on the path.

* @return True if there was a next waypoint to set, false if node still

* should wait

*/

private boolean setNextWaypoint() {

if (path == null) {

path = movement.getPath();

}

if (path == null || !path.hasNext()) {

this.nextTimeToMove = movement.nextPathAvailable();

this.path = null;

return false;

}

this.destination = path.getNextWaypoint();

this.speed = path.getSpeed();

if (this.movListeners != null) {

for (MovementListener l : this.movListeners) {

l.newDestination(this, this.destination, this.speed);

}

}

return true;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

44

/**

* Sends a message from this host to another host

* @param id Identifier of the message

* @param to Host the message should be sent to

*/

public void sendMessage(String id, DTNHost to) {

this.router.sendMessage(id, to);

}

/**

* Start receiving a message from another host

* @param m The message

* @param from Who the message is from

* @return The value returned by

* {@link MessageRouter#receiveMessage(Message, DTNHost)}

*/

public int receiveMessage(Message m, DTNHost from) {

int retVal = this.router.receiveMessage(m, from);

if (retVal == MessageRouter.RCV_OK) {

m.addNodeOnPath(this); // add this node on the messages path

}

return retVal;

}

/**

* Requests for deliverable message from this host to be sent trough a

* connection.

* @param con The connection to send the messages trough

* @return True if this host started a transfer, false if not

*/

public boolean requestDeliverableMessages(Connection con) {

return this.router.requestDeliverableMessages(con);

}

/**

* Informs the host that a message was successfully transferred.

* @param id Identifier of the message

* @param from From who the message was from

*/

public void messageTransferred(String id, DTNHost from) {

this.router.messageTransferred(id, from);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

45

/**

* Informs the host that a message transfer was aborted.

* @param id Identifier of the message

* @param from From who the message was from

* @param bytesRemaining Nrof bytes that were left before the transfer

* would have been ready; or -1 if the number of bytes is not known

*/

public void messageAborted(String id, DTNHost from, int bytesRemaining) {

this.router.messageAborted(id, from, bytesRemaining);

}

/**

* Creates a new message to this host's router

* @param m The message to create

*/

public void createNewMessage(Message m) {

this.router.createNewMessage(m);

}

/**

* Deletes a message from this host

* @param id Identifier of the message

* @param drop True if the message is deleted because of "dropping"

* (e.g. buffer is full) or false if it was deleted for some other reason

* (e.g. the message got delivered to final destination). This effects the

* way the removing is reported to the message listeners.

*/

public void deleteMessage(String id, boolean drop) {

this.router.deleteMessage(id, drop);

}

/**

* Returns a string presentation of the host.

* @return Host's name

*/

public String toString() {

return name;

}

/**

* Checks if a host is the same as this host by comparing the object

* reference

* @param otherHost The other host

* @return True if the hosts objects are the same object

*/

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

46

public boolean equals(DTNHost otherHost) {

return this == otherHost;

}

/**

* Compares two DTNHosts by their addresses.

* @see Comparable#compareTo(Object)

*/

public int compareTo(DTNHost h) {

return this.getAddress() - h.getAddress();

}

}

c) DTNSim

/*

* Copyright 2010 Aalto University, ComNet

* Released under GPLv3. See LICENSE.txt for details.

*/

package core;

import gui.DTNSimGUI;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.List;

import ui.DTNSimTextUI;

/**

* Simulator's main class

*/

public class DTNSim {

/** If this option ({@value}) is given to program, batch mode and

* Text UI are used*/

public static final String BATCH_MODE_FLAG = "-b";

/** Delimiter for batch mode index range values (colon) */

public static final String RANGE_DELIMETER = ":";

/** Name of the static method that all resettable classes must have

* @see #registerForReset(String) */

public static final String RESET_METHOD_NAME = "reset";

/** List of class names that should be reset between batch runs */

private static List<Class<?>> resetList = new ArrayList<Class<?>>();

/**

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

47

* Starts the user interface with given arguments.

* If first argument is {@link #BATCH_MODE_FLAG}, the batch

mode and text UI

* is started. The batch mode option must be followed by the number

of runs,

* or a with a combination of starting run and the number of runs,

* delimited with a {@value #RANGE_DELIMETER}. Different

settings from run

* arrays are used for different runs (see

* {@link Settings#setRunIndex(int)}). Following arguments are the

settings

* files for the simulation run (if any). For GUI mode, the number

before

* settings files (if given) is the run index to use for that run.

* @param args Command line arguments

*/

public static void main(String[] args) {

boolean batchMode = false;

int nrofRuns[] = {0,1};

String confFiles[];

int firstConfIndex = 0;

int guiIndex = 0;

/* set US locale to parse decimals in consistent way */

java.util.Locale.setDefault(java.util.Locale.US);

if (args.length > 0) {

if (args[0].equals(BATCH_MODE_FLAG)) {

batchMode = true;

if (args.length == 1) {

firstConfIndex = 1;

}

else {

nrofRuns = parseNrofRuns(args[1]);

firstConfIndex = 2;

}

}

else { /* GUI mode */

try { /* is there a run index for the GUI mode ?

*/

guiIndex = Integer.parseInt(args[0]);

firstConfIndex = 1;

} catch (NumberFormatException e) {

firstConfIndex = 0;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

48

}

confFiles = args;

}

else {

confFiles = new String[] {null};

}

initSettings(confFiles, firstConfIndex);

if (batchMode) {

long startTime = System.currentTimeMillis();

for (int i=nrofRuns[0]; i<nrofRuns[1]; i++) {

print("Run " + (i+1) + "/" + nrofRuns[1]);

Settings.setRunIndex(i);

resetForNextRun();

new DTNSimTextUI().start();

}

double duration = (System.currentTimeMillis() -

startTime)/1000.0;

print("---\nAll done in " + String.format("%.2f",

duration) + "s");

}

else {

Settings.setRunIndex(guiIndex);

new DTNSimGUI().start();

}

}

/**

* Initializes Settings

* @param confFiles File name paths where to read additional settings

* @param firstIndex Index of the first config file name

*/

private static void initSettings(String[] confFiles, int firstIndex) {

int i = firstIndex;

if (i >= confFiles.length) {

return;

}

try {

Settings.init(confFiles[i]);

for (i=firstIndex+1; i<confFiles.length; i++) {

Settings.addSettings(confFiles[i]);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

49

}

catch (SettingsError er) {

try {

Integer.parseInt(confFiles[i]);

}

catch (NumberFormatException nfe) {

/* was not a numeric value */

System.err.println("Failed to load settings: " +

er);

System.err.println("Caught at " +

er.getStackTrace()[0]);

System.exit(-1);

}

System.err.println("Warning: using deprecated way of "

+

"expressing run indexes. Run index

should be the " +

"first option, or right after -b option

(optionally " +

"as a range of start and end values).");

System.exit(-1);

}

}

/**

* Registers a class for resetting. Reset is performed after every

* batch run of the simulator to reset the class' state to initial

* state. All classes that have static fields that should be resetted

* to initial values between the batch runs should register using

* this method. The given class must have a static implementation

* for the resetting method (a method called {@value

#RESET_METHOD_NAME}

* without any parameters).

* @param className Full name (i.e., containing the packet path)

* of the class to register. For example: <code>core.SimClock</code>

*/

public static void registerForReset(String className) {

Class<?> c = null;

try {

c = Class.forName(className);

c.getMethod(RESET_METHOD_NAME);

} catch (ClassNotFoundException e) {

System.err.println("Can't register class " + className +

" for resetting; class not found");

System.exit(-1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

50

}

catch (NoSuchMethodException e) {

System.err.println("Can't register class " + className +

" for resetting; class doesn't contain resetting method");

System.exit(-1);

}

resetList.add(c);

}

/**

* Resets all registered classes.

*/

private static void resetForNextRun() {

for (Class<?> c : resetList) {

try {

Method m =

c.getMethod(RESET_METHOD_NAME);

m.invoke(null);

} catch (Exception e) {

System.err.println("Failed to reset class " +

c.getName());

e.printStackTrace();

System.exit(-1);

}

}

}

/**

* Parses the number of runs, and an optional starting run index, from

a

* command line argument

* @param arg The argument to parse

* @return The first and (last_run_index - 1) in an array

*/

private static int[] parseNrofRuns(String arg) {

int val[] = {0,1};

try {

if (arg.contains(RANGE_DELIMETER)) {

val[0] = Integer.parseInt(arg.substring(0,

arg.indexOf(RANGE_DELIMETER))) - 1;

val[1] = Integer.parseInt(arg.substring(arg.

indexOf(RANGE_DELIMETER) + 1, arg.length()));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

51

}

else {

val[0] = 0;

val[1] = Integer.parseInt(arg);

}

} catch (NumberFormatException e) {

System.err.println("Invalid argument '" + arg + "' for" +

" number of runs");

System.err.println("The argument must be either a

single value, " +

"or a range of values (e.g., '2:5'). Note

that this " +

"option has changed in version 1.3.");

System.exit(-1);

}

if (val[0] < 0) {

System.err.println("Starting run value can't be smaller

than 1");

System.exit(-1);

}

if (val[0] >= val[1]) {

System.err.println("Starting run value can't be bigger

than the " +

"last run value");

System.exit(-1);

}

return val;

}

/**

* Prints text to stdout

* @param txt Text to print

*/

private static void print(String txt) {

System.out.println(txt);

}

}

d) Epidemic Router

/*

* Copyright 2010 Aalto University, ComNet

* Released under GPLv3. See LICENSE.txt for details.

*/

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

52

package routing;

import core.Settings;

/**

* Epidemic message router with drop-oldest buffer and only single

transferring

* connections at a time.

*/

public class EpidemicRouter extends ActiveRouter {

/**

* Constructor. Creates a new message router based on the settings in

* the given Settings object.

* @param s The settings object

*/

public EpidemicRouter(Settings s) {

super(s);

//TODO: read&use epidemic router specific settings (if any)

}

/**

* Copy constructor.

* @param r The router prototype where setting values are copied

from

*/

protected EpidemicRouter(EpidemicRouter r) {

super(r);

//TODO: copy epidemic settings here (if any)

}

@Override

public void update() {

super.update();

if (isTransferring() || !canStartTransfer()) {

return; // transferring, don't try other connections yet

}

// Try first the messages that can be delivered to final recipient

if (exchangeDeliverableMessages() != null) {

return; // started a transfer, don't try others (yet)

}

// then try any/all message to any/all connection

this.tryAllMessagesToAllConnections();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

53

}

@Override

public EpidemicRouter replicate() {

return new EpidemicRouter(this);

}

}

e) Epidemic Energy Aware Router

package routing;

import java.util.ArrayList;

import java.util.List;

import core.Connection;

import core.DTNHost;

import core.Message;

import core.Settings;

import core.SimClock;

/**

* Epidemic message router with drop-oldest buffer and only single

transferring

* connections at a time.

*/

public class EpidemicEWMA extends ActiveRouter {

private double interval = 300;

private double lastUpdate = 0;

List<Point> listPoint = new ArrayList<>();

List<Double> listHitungLaju = new ArrayList<>();

/**

* Constructor. Creates a new message router based on the settings in

* the given Settings object.

* @param s The settings object

*/

public EpidemicEWMA(Settings s) {

super(s);

//TODO: read&use epidemic router specific settings (if any)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

54

}

/**

* Copy constructor.

* @param r The router prototype where setting values are copied

from

*/

protected EpidemicEWMA(EpidemicEWMA r) {

super(r);

//TODO: copy epidemic settings here (if any)

}

@Override

public void update() {

super.update();

if (SimClock.getTime() - interval >= lastUpdate) {

lastUpdate = SimClock.getTime();

kumpulEnergy();

}

if (isTransferring() || !canStartTransfer()) {

return; // transferring, don't try other connections yet

}

// Try first the messages that can be delivered to final recipient

if (exchangeDeliverableMessages() != null) {

return; // started a transfer, don't try others (yet)

}

// then try any/all message to any/all connection

this.tryAllMessagesToAllConnections();

}

public double getEnergy () {

return energy.getEnergy();

}

private void kumpulEnergy() {

double simTime = SimClock.getTime();

if (simTime == 0) {

listPoint.add(new Point(0, getEnergy()));

lastUpdate = simTime;

}

// if (simTime - interval >= lastUpdate) {

lastUpdate = simTime;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

55

listPoint.add(new Point(lastUpdate, getEnergy()));

// }

cariLaju();

}

private double cariLaju () {

double hasilLaju = 0;

if(listPoint.size()>1){

int indexenergiTerakhir = listPoint.size()-1;

hasilLaju =

Math.abs(listPoint.get(indexenergiTerakhir).energi -

listPoint.get(indexenergiTerakhir - 1).energi);

listHitungLaju.add(hasilLaju);

}

return hasilLaju;

}

public double getLaju() {

double alfa = 0.4;

double beta = 1 - alfa;

double laju = 0;

if(listHitungLaju.size() > 1){

int indexTerakhir = listHitungLaju.size()-1;

double l2 = listHitungLaju.get(indexTerakhir);

double l1 = 0;

for(int i = 0; i < indexTerakhir; i++) {

l1 += listHitungLaju.get(indexTerakhir-1);

}

l1 = l1 / indexTerakhir;

laju = alfa * l2 + beta * l1;

}

return laju;

}

protected Connection tryAllMessagesToAllConnections(){

List<Connection> connections = getConnections();

if (connections.size() == 0 || this.getNrofMessages() == 0) {

return null;

}

List<Message> messages =

new

ArrayList<Message>(this.getMessageCollection());

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

56

this.sortByQueueMode(messages);

for(Connection con : connections) {

DTNHost other = con.getOtherNode(getHost());

EpidemicEWMA othRouter =

(EpidemicEWMA)other.getRouter();

if (othRouter.getLaju() < this.getLaju()) {

return tryMessagesToConnections(messages,

connections);

}

}

return null;

}

@Override

public EpidemicEWMA replicate() {

return new EpidemicEWMA(this);

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI