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
v
MOTTO
”Don’t Lose The Faith, Keep Praying, Keep Trying ”
-B-
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
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