SKRIPSI
Oleh :
MUSTAFTIH IRSAL U
1111091000012
SYARIF HIDAYATULLAH
JAKARTA
2018 M/1439 H
ANALISIS PERFORMA ROUTING PROTOKOL DSR
DAN DSDV MENGGUNAKAN NS-3 PADA MOBILE
AD-HOC NETWORK (MANET)
Skripsi
Sarjana Komputer
Oleh :
MUSTAFTIH IRSAL U
1111091000012
JAKARTA
2018 M/1439 H
LEMBAR PERSETUJUAN
Skripsi
Oleh:
MUSTAFTIH IRSAL U
1111091000012
Menyetujui,
Mengetahui,
Ketua Prodi Teknik Informatika
Arini, MT
NIP. 19760131 200901 2 001
i
PERNYATAAN ORISINALITAS
Mustaftih Irsal U
1111091000012
ii
HALAMAN PENGESAHAN
Skripsi yang berjudul “Analisis Performa Routing Protocol DSR Dan DSDV
Menggunakan NS-3 Pada Mobile Ad-Hoc Network” yang ditulis oleh Mustaftih
Irsal U, NIM. 1111091000012 telah diuji dan dinyatakan lulus dalam Sidang
Munaqosah Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif
Hidayatullah Jakarta pada hari Rabu, tanggal 6 Juni 2018. Skripsi ini telah diterima
sebagai salah satu syarat memperoleh gelar sarjana strata satu (S1) pada Program
Studi Teknik Informatika.
Tim Penguji,
Penguji I Penguji II
iii
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI
SKRIPSI UNTUK KEPENTINGAN AKADEMIS
Sebagai sivitas akademik UIN Syarif Hidaytaullah Jakarta, saya yang bertanda
tangan di bawah ini:
beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti
Noneksklusif ini Universitas Islam Negeri Syarif Hidayatullah Jakarta berhak
menyimpan, mengalih media/formatkan, mengelola dalam bentuk pangkalan data
(database), merawat, dan mempublikasikan tugas akhir saya selama tetap
mencantumkan nama saya sebagai penulis/pencipta dan sebagai pemilik Hak Cipta.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di : Jakarta
Pada tanggal : 28 Juni 2018
Yang menyatakan
(Mustaftih Irsal U)
iv
KATA PENGANTAR
v
5. Bapak Mahbubul Wathoni, M.Kom yeng memberi arahan dan tempat
kepada penulis untuk melakukan penelitian di Pusat Lab Terpadu Fakultas
Sains dan Teknologi
6. Seluruh Dosen di Program Studi Teknik Informatika UIN Syarif
Hidayatullah Jakarta.
7. Seluruh LS-ADIan lintas generasi yang memberikan penulis pencerahan
dan cara pandang baru terutama (ucok, jaid, komok, ali, dimong, kong sabri,
kopok dan rifki).
8. Seluruh sahabat sahabati PMII Komisariat Fakultas Sains dan Teknologi
yang penulis cintai dan Indira Puspadewanty yang selalu memberikan
semangat dan support selama ini untuk mengerjakan skripsi. Terlebih
sahabat sahabati Distrik Power Ranger 2011.
9. Grup Damay 20k terutama (don ujo, valdi, eko, arman, ridho, galby,
chaung).
10. Seluruh teman-teman Program Studi Teknik Informatika Fakultas Sains dan
Teknologi UIN Syarif Hidayatullah. Khususnya TI A 2011.
11. Terimakasih juga untuk Chucky Crew (Achenk, Galdun) yang terus
memberikan support dan do’a.
12. Semua pihak yang secara langsung maupun tidak langsung membantu
penulis dalam menyelesaikan skripsi ini.
vi
Semoga kebaikan dan bantuan yang sudah diberikan kepada penulis kiranya
dicatat sebagai amal baik oleh Allah SWT. Penulis menyadari bahwa skripsi ini
jauh dari kata sempurna, oleh karena itu penulis sangat mengharapkan kritik dan
saran yang bersifat membangun dari pembaca ke alamat email
ical.omsus@gmail.com. Semoga skripsi ini dapat memberi manfaat bagi semua.
Amiin Amiin ya Robbal ‘alamiin.
Wassalamu’alaikum Wr. Wb.
Mustaftih Irsal U
1111091000012
vii
Nama : Mustaftih Irsal U
Nim : 1111091000012
Judul : Analisis Performa Routing Protocol DSR dan DSDV Menggunakan Ns-3
Pada Mobile Ad-Hoc Network (MANET)
ABSTRAK
Mobile Ad-Hoc Network (MANET) merupakan sebuah jaringan yang terdiri
dari gabungan perangkat-perangkat bergerak (mobile) tanpa infrastruktur, sehingga
membentuk jaringan yang bersifat sementara. Tiap perangkat memiliki antarmuka
nirkabel dan saling berkomunikasi melalui gelombang radio, kemudian tiap
perangkat tersebut dinamakan node. Dalam penerapannya, dibutuhkan sebuah
aturan berupa protokol ruting untuk menentukan rute pengiriman paket. Banyak
masalah yang muncul ketika menentukan penggunaan jalur yang efisien dalam
pengiriman paket data dari sumber ke tujuan. Penelitian ini dilakukan untuk
mengetahui dan membandingkan performa ruting protocol DSR (Dynamic Source
Routing) dan DSDV (Destination Sequenced Distance Vector) dengan mengacu
kepada tiga parameter, yaitu Throughput, Delay dan Packet loss. Hasil dari
penelitian ini menunjukkan bahwa Protokol ruting DSR lebih unggul dari protocol
ruting DSDV, protocol ruting DSR menghasilkan throughput yang lebih besar
dibandingkan protokol ruting DSDV. protokol ruting DSR menghasilkan lebih
sedikit Delay dibandingkan Delay protokol ruting DSDV. Selain itu, protokol
ruting DSR memiliki Packet loss yang stabil pada prosentase 40% dalam
penambahan node sampai 200 node. Packet loss protokol ruting DSDV bertambah
seiring dengan penambahan node, puncaknya pada jumlah 200 node, yaitu 50,34%
paket yang hilang. Berdasarkan pemaparan tersebut dapat disimpulkan bahwa
performa Protokol ruting DSR lebih baik dibandingkan protokol ruting DSDV
viii
DAFTAR ISI
ix
2.4. Protokol Ruting ...................................................................................... 16
2.4.1. Link State ........................................................................................ 16
2.4.2. Distance Vector ............................................................................... 17
2.4.3. Source Routing ................................................................................ 17
2.5. Mobile Ad-Hoc Network (MANET) ....................................................... 18
2.5.1. Karakteristik .................................................................................... 19
2.5.2. Kelebihan ........................................................................................ 20
2.5.3. Kekurangan ..................................................................................... 21
2.5.4. Aplikasi ........................................................................................... 22
2.6. Jenis Protokol Routing MANET ............................................................ 24
2.6.1. Proactive Routing ........................................................................... 25
2.6.2. Reactive Routing ............................................................................. 26
2.6.3. Hybrid Routing................................................................................ 26
2.7. DSR (Dynamic Source Routing) ............................................................ 27
2.7.1. Mekanisme Pencarian Rute (Route Discovery) .............................. 27
2.7.2. Mekanisme Pemeliharaan Rute (Route Maintenance) .................... 28
2.8. DSDV (Destination Sequence Distance Vector) .................................... 28
2.9. Faktor-faktor Performa Routing Protokol ............................................. 29
2.10. NS-3 .................................................................................................... 30
2.11. Sublime Text........................................................................................ 33
2.12. Simulasi Jaringan ................................................................................ 36
2.12.1. Faktor Simulasi Jaringan ............................................................. 36
2.12.2. Simulator Jaringan ....................................................................... 38
2.13. Metode Simulasi ................................................................................. 39
2.13.1. Problem Formulation .................................................................. 39
2.13.2. Conceptual Model ....................................................................... 40
2.13.3. Input / Output Data ..................................................................... 40
2.13.4. Modelling .................................................................................... 40
2.13.5. Simulation.................................................................................... 41
2.13.6. Verification and Validation ......................................................... 41
2.13.7. Experimentation .......................................................................... 41
2.13.8. Output Analysis ........................................................................... 42
x
2.14. Alasan Menggunakan Simulasi .......................................................... 42
2.15. Bahasa Pemrograman ......................................................................... 42
BAB III METODOLOGI PENELITIAN ............................................................ 46
3.1. Metode Pengumpulan Data .................................................................... 46
3.1.1 Studi Pustaka ................................................................................... 46
3.1.2 Studi Literatur ................................................................................. 46
3.2. Metode Simulasi ..................................................................................... 50
3.2.1 Problem Formulation...................................................................... 51
3.2.2 Conceptual Model ........................................................................... 51
3.2.3 Input / Output Data ......................................................................... 51
3.2.4 Modelling ........................................................................................ 51
3.2.5 Simulation ....................................................................................... 52
3.2.6 Verification and Validation............................................................. 52
3.2.7 Experimentation .............................................................................. 52
3.2.8 Output Analysis ............................................................................... 52
3.3. Alur Penulisan ....................................................................................... 53
BAB IV IMPLEMENTASI ................................................................................. 54
4.1. Problem Formulation ............................................................................. 54
4.2. Conceptual Model .................................................................................. 55
4.3. Input / Output Data ................................................................................ 56
4.4. Modelling ............................................................................................... 58
4.4.1 Skenario 1 ....................................................................................... 58
4.4.2 Skenario 2 ....................................................................................... 59
4.4.3 Skenario 3 ....................................................................................... 60
4.4.4 Skenario 4 ....................................................................................... 61
4.4.5 Skenario 5 ....................................................................................... 62
4.5. Simulation............................................................................................... 63
4.6. Verification and Validation .................................................................... 65
4.7. Experimentation ..................................................................................... 65
4.8. Output Analysis ...................................................................................... 65
BAB V HASIL DAN PEMBAHASAN .............................................................. 66
5.1. Verification and Validation .................................................................... 66
xi
5.2. Experimentation ..................................................................................... 66
5.2.1. Protokol ruting DSR ....................................................................... 66
5.2.2. Protokol ruting DSDV .................................................................... 67
5.3. Output Analysis Ruting Protokol DSR dan DSDV ................................ 68
5.3.1. Hasil Simulasi Skenario DSR 10 node ........................................... 68
5.3.2. Hasil Simulasi Skenario DSR 50 node ........................................... 69
5.3.3. Hasil Simulasi Skenario DSR 100 node ......................................... 69
5.3.4. Hasil Simulasi Skenario DSR 150 node ......................................... 70
5.3.5. Hasil Simulasi Skenario DSR 200 node ......................................... 71
5.3.6. Hasil Simulasi Skenario DSDV 10 node ........................................ 71
5.3.7. Hasil Simulasi Skenario DSDV 50 node ........................................ 72
5.3.8. Hasil Simulasi Skenario DSDV 100 node ...................................... 73
5.3.9. Hasil Simulasi Skenario DSDV 150 node ...................................... 73
5.3.10. Hasil Simulasi Skenario DSDV 200 node................................... 74
5.4. Output Analysis Performa Ruting .......................................................... 74
5.4.1. Performa Throughput ...................................................................... 74
5.4.2. Performa Delay ............................................................................... 76
5.4.3. Performa Packet loss ....................................................................... 77
BAB VI PENUTUP .............................................................................................. 81
6.1. Kesimpulan............................................................................................. 81
6.2. Saran ....................................................................................................... 81
DAFTAR PUSTAKA ........................................................................................... 82
LAMPIRAN .......................................................................................................... 85
xii
DAFTAR GAMBAR
Gambar 4. 1 Tahapan Protokol Routing DSR dan DSDV menggunakan NS3 .... 55
Gambar 4. 4 Topologi Jaringan MANET 100 node, Luas Area 1000m X 1000m 60
Gambar 4. 5 Topologi Jaringan MANET 150 node, Luas Area 1000m X 1000m 61
Gambar 4. 6 Topologi Jaringan MANET 200 node, Luas Area 1000m X 1000m 62
xiii
Gambar 5. 4 Data Berjalan DSDV ........................................................................ 68
xiv
DAFTAR TABEL
xv
BAB I
PENDAHULUAN
1
2
Tujuan yang ingin dicapai oleh penulis dalam penelitian ini adalah:
1. Mengetahui Performa terbaik antara routing protokol DSR dan
DSDV berdasarkan jumlah node.
a. Studi Pustaka
Studi pustaka yaitu mengumpulkan data dan informasi dari
tulisan terkait dengan topik penelitian ini. Data dan informasi
tersebut didapat dari buku, ebook, tugas akhir, karya ilmiah dan
sumber lainnya yang berkaitan dengan protokol DSR dan
DSDV.
b. Studi Literatur
Studi literatur dilakukan dengan mempelajari literatur
penelitian sejenis yang memiliki keterkaitan permasalahan yang
dibahas. Studi ini bertujuan untuk meningkatkan pemahaman
mengenai topik penelitian yang dilakukan.
1. Problem Formulation
2. Conceptual Model
3. Input/Output data
4. Modelling
5. Simulation
6. Verification and Validation
7. Experimentation
8. Output Analysis
BAB I PENDAHULUAN
BAB IV IMPLEMENTASI
BAB VI PENUTUP
7
8
Lapisan bawah dari model OSI, yang terdiri dari Network Layer,
Data Link Layer, Physical Layer, mengendalikan persoalan pengiriman
data. Lapisan bawah tersebut diimplementasikan ke dalam perangkat
keras. Lapisan terbawah, yaitu lapisan fisik adalah lapisan penutup bagi
media jaringan fisik (misalnya jaringan kabel) dan sebagai penanggung
jawab bagi penempatan informasi pada media jaringan.
Layer Keterangan
Application Berfungsi sebagai antar muka
(penghubung) aplikasi dengan
fungsionalitas jaringan, mengatur
bagaimana aplikasi dapat
mengakses jaringan, dan kemudian
membuat pesan-pesan kesalahan.
Pada layer inilah sesungguhnya
user berinteraksi dengan jaringan.
Contoh protokol yang ada pada
lapisan ini : FTPtelnet, SMTP,
HTTP, POP3 dan NFS.
Presentation Berfungsi untuk mentranslasikan
data yang hendak di transmisikan
c. Length
Mengindikasi panjang pesan UDP (pesan UDP ditambah
header UDP) dalam satu byte.
d. Checksum
Berisi informasi pengecekan integritas dari pesan UDP yang
dikirimkan (header dan pesan UDP).
2.5.1. Karakteristik
2.5.2. Kelebihan
2.5.3. Kekurangan
a) Keterbatasan Bandwith
Kapasitas wireless link selalu lebih rendah daripada dengan
kabel (wired).
b) Kemampuan Pemrosesan
Sebagian besar node merupakan perangkat tanpa CPU yang
kuat.
c) Keterbatasan Energi
Daya baterai terbatas pada semua perangkat, yang tidak
memperbolehkan waktu operasi tak terbatas untuk node.
d) Latency Tinggi
Ketika desain konservasi energi telah diterapkan, itu berarti
bahwa node diam (tidur) ketika tidak harus mengirim data
apapun. Saat pertukaran data antara dua node melewati node
yang diam (tidur). Delay mungkin lebih tinggi jika algoritma
routing memutuskan bahwa node tersebut harus bangun.
e) Kesalahan Transmisi
Atenuasi dan gangguan adalah akibat lain dari wireless link
yang menambah tingkat kesalahan/error.
f) Keamanan
Beberapa kerentanan dan serangan MANET dapat dibagi
menjadi dua, yaitu aktif dan pasif. Aktif yang terjadi ketika
2.5.4. Aplikasi
Taman.
Jaringan sensor sensor pintar aplikasi rumah dan
embedded.
elektronik konsumen.
jaringan wilayah badan (BAN).
pelacakan data dari kondisi lingkungan,
pergerakan binatang, deteksi
biologi/kimia.
Layanan layanan diikuti: penerusan panggilan,
ruang kerja.
Kelebihan Kekurangan
DSDV adalah protokol yang DSDV perlu mengirim banyak
efisien untuk pencarian rute, pesan kontrol. Pesan ini penting
ketika sebuah rute ke sebuah untuk menjaga topologi jaringan
tujuan diperlukan, rute tersebut pada setiap node.
sudah ada pada source.
Latency untuk penerimaan rute Akibat dari terlalu sering mengirim
sangat rendah. pesan ini dapat menghasilkan
volume lalu lintas yang tinggi untuk
jaringan yang padat dan sangat
mobile.
DSDV juga menjamin jalur bebas Perhatian khusus harus diambil
loop. untuk mengurangi jumlah pesan
kontrol.
Throughput
Throughput adalah nilai rata-rata pada pengiriman pesan
yang sukses melalui sebuah kanal komunikasi. Data ini dapat
dikirim melalui sebuah link physical maupun logical, atau lewat
melalui sebuah network node tertentu. Throughput biasanya diukur
dalam satuan bit per detik (bit/s atau bps), dan terkadang dalam
paket data per detik atau paket data per satuan waktu. Semakin tinggi
nilai throughput, maka jaringan memiliki performa yang lebih baik
(Sidharta dan Widjaja, 2013).
Delay
Delay dapat didefinisikan sebagai rata-rata waktu antara
pada saat sebuah paket data dikirim oleh sumber data dan pada saat
paket data diterima oleh penerima data (Marsic, 2013).
Packet Loss
Packet loss terjadi ketika satu paket data atau lebih yang
melintasi sebuah jaringan komputer gagal mencapai tujuannya.
Packet loss dibedakan sebagai salah satu dari tipe tipe error yang
dihadapi dalam komunikasi digital, dua yang lain adalah bit error
dan paket yang bersifat seperti tiruan oleh karena noise. Pecahan
dari paket yang hilang bertambah sebagaimana intensitas lalu lintas
jaringan bertambah (Marsic, 2013).
2.10. NS-3
Sublime Text adalah aplikasi editor untuk kode dan teks yang
dapat berjalan diberbagai platform operating system dengan
menggunakan teknologi Phyton API. Terciptanya aplikasi ini
terinspirasi dari aplikasi Vim, Aplikasi ini sangatlah fleksibel dan
powerfull. Fungsionalitas dari aplikasi ini dapat dikembangkan
dengan menggunakan sublime-packages. Sublime Text bukanlah
aplikasi open source dan juga aplikasi yang dapat digunakan dan
didapatkan secara gratis, akan tetapi beberapa fitur pengembangan
fungsionalitas (packages) dari aplikasi ini merupakan hasil dari
temuan dan mendapat dukungan penuh dari komunitas serta
memiliki lisensi aplikasi gratis (Skinner, 2017).
a. Goto Anything.
Fitur yang sangat membantu dalam membuka file ataupun
menjelajahi isi dari file hanya dengan beberapa keystrokes.
b. Multiple Selections.
Fitur ini memungkinkan user untuk mengubah secara
interaktif banyak baris sekaligus, mengubah nama variabel
dengan mudah, dan memanipulasi file lebih cepat dari
sebelumnya.
c. Command Pallete.
e. Split Editing.
Dapatkan hasil yang maksimal dari monitor layar lebar
dengan dukungan editing perpecahan. Mengedit sisi file dengan
sisi, atau mengedit dua lokasi di satu file. Anda dapat mengedit
dengan banyak baris dan kolom yang user inginkan.
g. Plugin API.
h. Customize Anything.
Aplikasi ini memberikan user fleksibilitas dalam hal
pengaturan fungsional dalam aplikasi ini.
i. Cross Platform.
Aplikasi ini dapat berjalan hampir disemua operating system
modern seperti Windows, OS X, dan Linux based operating
system (Skinner, 2017).
1. Entities.
Entitas adalah objek yang berinteraksi satu sama lain dalam
sebuah program simulasi untuk menyebabkan beberapa
perubahan pada keadaan system. Dalam konteks jaringan
komputer, entitas mungkin termasuk node komputer, paket,
aliran paket atau objek non fisik seperti jam simulasi. Untuk
membedakan entitas yang berbeda, atribut yang unik
ditugaskan untuk masing-masing entitas. Sebagai contoh
sebuah entitas paket mungkin memiliki atribut seperti
panjang paket, nomor urut, prioritas, dan header.
2. Resources.
Sumber daya merupakan bagian dari sistem yang kompleks.
Secara umum, persediaan sumber daya yang terbatas harus
2.13.4. Modelling
2.13.5. Simulation
2.13.7. Experimentation
Nama Penjelasan
Basic Beginners All-purpose Symbolic Instruction
Code, bahasa pemrograman yang biasa digunakan
untuk merancang program sederhana pada
programmer pemula
Fortran Formula Translator, bahasa pemrograman yang
dirancang untuk menyelesaikan algoritma
matematika yang kompleks
Pada penelitian skripsi ini, diperlukan data-data yang lengkap dan akurat
serbagai bahan pendukung materi uraian dan pembahasan. Oleh karena itu
diperlukan metode pengumpulan data dan metode simulasi dalam penyusunan
skripsi ini.
46
47
3.2.4 Modelling
3.2.5 Simulation
3.2.7 Experimentation
54
55
a. Throughput.
Throughput nilai rata-rata pada pengiriman pesan yang
sukses melalui sebuah kanal komunikasi selama 60 detik.
b. Delay.
Rata-rata waktu antara pada saat sebuah paket data dikirim
oleh sumber data dan pada saat paket data diterima oleh
penerima data selama 60 detik.
c. Packet Loss.
Paket data yang melintasi sebuah jaringan komputer gagal
mencapai tujuannya selama waktu simulasi berjalan.
4.4. Modelling
4.4.1 Skenario 1
4.4.2 Skenario 2
4.4.3 Skenario 3
4.4.4 Skenario 4
4.4.5 Skenario 5
4.5. Simulation
Pembuatan Aplikasi
Pembuatan parameter dalam simulasi ruting protokol DSR
dan DSDV dilakukan menggunakan Sublime text berikut
tahapan dalam membuat aplikasi:
1. Membuat Node.
Untuk membuat node penulis menggunakan bahasa c++ berikut
potongan kodenya.
NodeContainer networkNodes;
networkNodes.Create (numNodes);.
2. Inisiasi posisi node dan mobility model.
Untuk mengatur posisi node dan model pergerakan arah node
yang digunakan dalam NS-3 dengan Random Rectangle Position
Allocator dan Random Waypoint Mobility berikut adalah
potongan kodenya:
MobilityHelper mobility;
ObjectFactory pos;
pos.SetTypeId ("ns3::RandomRectanglePositionAllocator");
pos.Set ("X", StringValue
("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
pos.Set ("Y", StringValue
("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
std::ostringstream speedConstantRandomVariableStream;
speedConstantRandomVariableStream <<
"ns3::ConstantRandomVariable[Constant=" << speed << "]";
Simulator::Run ();
Simulator::Destroy();
4.7. Experimentation
5.2. Experimentation
Setelah NS-3 dan Sublime text diinstall pada Ubuntu, maka akan
dilakukan proses pengujian performa ruting pada DSR dan DSDV
menggunakan waf tools sesuai dengan konsep dan model simulasi yang
telah dijelaskan sebelumnya.
66
67
Kbps, Delay sebesar 0.177716 detik atau 177.716 ms dan paket yang
hilang sebesar 7412 atau 49.74497%.
Throughput
1800
1600
1400
1200
1000
800
600
400
200
0
10 Node 50 Node 100 Node 150 node 200 node
DSR DSDV
node. Performa paling tinggi DSDV berada pada jumlah node 200
yaitu 1317.59 Kbps dan performa terendah DSDV pada jumlah node
Performa maksimal pada node 200 yaitu 1592 Kbps dan Performa
Delay
300
250
200
150
100
50
0
10 Node 50 Node 100 Node 150 node 200 node
DSR DSDV
Packet loss terjadi ketika satu paket data atau lebih yang
Packet loss dihitung dengan cara jumlah total paket yang dikirim
Packet Loss
12000
10000
8000
6000
4000
2000
0
10 Node 50 Node 100 Node 150 node 200 node
DSR DSDV
Packet Loss
60
50
40
30
20
10
0
10 Node 50 Node 100 Node 150 node 200 node
DSR DSDV
6.1. Kesimpulan
6.2. Saran
81
82
DAFTAR PUSTAKA
Graziani, R., & Vanchon, B. (2014). Routing Protocols Companion Guide. Cisco
Press. Indianapolis.
Jiatmiko, N., dan Prayudi, Y. (2015). Simulasi Jaringan Manet Dengan Ns3 Untuk
Membandingkan Performa Routing Protokol AODV dan DSDV.
Global R&D.
Madani, S, A,. et all. (2010). Wireless sensor networks : modeling and simulation.
Murthy, C, S, R., & Manoj, B, S. (2004). Adhoc Wireless Networks And Protocols.
Pearson Education, Inc. USA.
Qi, H, A, S., Anggoro, R., dan Husni, M. (2017). Implementasi Routing Protokol
DSR pada scenario Mobility random waypoint dengan menggunakan
propagasi nakagami. Jurnal teknik ITS vol.6 no.2.
Rai, V., & Jain, J. (2012). Study and Comparison Performance of On-demand
AODV and DSR, along with the traditional proactive DSDV Routing Protocol
for MANET. International Journal of Scientific and Research Publication
(IJSR) vol. 2.
Saeed, N, H., Abbod, M, F., & Al-Raweshidy, H. (2012). Manet Routing protocol
taxonomy. ICFCN.
Shastri, D., & Lala, A. (2017). Comparison of AODV, DSR and DSDV on Different
Simulator for Qos Parameters. International Journal of Scientific and
Research (IJSR) vol. 6.
Sidharta, Y., & Widjaja, D. (2013). Perbandingan Unjuk Kerja Protokol Routing
Adhoc on Demand Distance Vector (AODV) dan Dynamic Source Routing
(DSR) Pada Manet.
85
(void) iaddr;
}
}
outfile.close();
}
static void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, Ptr<Node> n,
uint32_t pktCount, Time pktInterval)
{
Ptr<Packet> p = Create<Packet> (pktSize);
DelayJitterEstimation delay;
delay.PrepareTx(p);
if (pktCount > 0)
{
socket->Send (p);
Simulator::Schedule (pktInterval, &GenerateTraffic, socket, pktSize, n, pktCount
- 1, pktInterval);
}
else
{
socket->Close ();
}
}
int main (int argc, char *argv[])
{
bool verbose = false;
double startTime = 0.0;
uint32_t numPackets = 100; // jumlah paket yang dikirim
std::string phyMode ("DsssRate11Mbps");
uint32_t packetSize = 1024;
uint32_t periodicUpdateInterval = 5;
long double interval = 1;
uint32_t numNodes = 200;
uint32_t speed = 5;
ofstream outfile;
86
ofstream outfile2;
outfile.open("dsr10n_Simulation_general.txt", ios::app);
outfile << "Parameter simulasi" << endl
<< "Protokol Routing : DSR" << endl
<< "Jumlah Node: " << numNodes << endl
<< "Kecepatan: " << speed << " m/s" << endl
<< "Jumlah paket yang dikirim dari tiap node : " << numPackets << endl
<< "Data rate: " << ((packetSize/interval)*8)/1024 << " Mbps" << endl;
outfile2.open("dsr10n_Simulation_results.txt", ios::app);
outfile2 << "----Parameter simulasi----" << endl
<< "Protokol Routing : DSR" << endl
<< "Jumlah Node: " << numNodes << endl
<< "Kecepatan: " << speed << " m/s" << endl
<< "Jumlah paket yang dikirim dari tiap node: " << numPackets <<endl
<< "Data rate: " << ((packetSize/interval)*8)/1024 << " Mbps" << endl;
CommandLine cmd;
cmd.AddValue ("phyMode", "Wifi Phy mode", phyMode);
cmd.AddValue ("packetSize", "ukuran paket aplikasi yang dikirim", packetSize);
cmd.AddValue ("numPackets", "Jumlah total paket yang dikirim", numPackets);
cmd.AddValue ("periodicUpdateInterval", "Waktu pembaruan/update periodik",
periodicUpdateInterval);
cmd.AddValue ("startTime", "Waktu mulai simulasi", startTime);
cmd.AddValue ("verbose", "Menyalakan semua komponen log alat", verbose);
cmd.Parse (argc, argv);
Time interPacketInterval = Seconds (interval);
Config::SetDefault
("ns3::WifiRemoteStationManager::FragmentationThreshold",
StringValue("2200"));
Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold",
StringValue ("2200"));
Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",
StringValue (phyMode));
NodeContainer networkNodes;
87
networkNodes.Create (numNodes);
WifiHelper wifi;
if (verbose)
{
wifi.EnableLogComponents ();
}
wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
/** Wifi PHY **/
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
wifiPhy.Set ("RxGain", DoubleValue (5));
wifiPhy.Set ("TxGain", DoubleValue (5));
wifiPhy.Set ("CcaMode1Threshold", DoubleValue (0.0));
/** wifi channel **/
YansWifiChannelHelper wifiChannel;
wifiChannel.SetPropagationDelay
("ns3::ConstantSpeedPropagationDelayModel");
wifiChannel.AddPropagationLoss ("ns3::FriisPropagationLossModel");
Ptr<YansWifiChannel> wifiChannelPtr = wifiChannel.Create ();
wifiPhy.SetChannel (wifiChannelPtr);
/** MAC layer **/
NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue (phyMode), "ControlMode", StringValue (phyMode));
wifiMac.SetType ("ns3::AdhocWifiMac");
NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, networkNodes);
MobilityHelper mobility;
ObjectFactory pos;
pos.SetTypeId ("ns3::RandomRectanglePositionAllocator");
pos.Set ("X", StringValue
("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
pos.Set ("Y", StringValue
("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
std::ostringstream speedConstantRandomVariableStream;
88
speedConstantRandomVariableStream <<
"ns3::ConstantRandomVariable[Constant=" << speed << "]";
Ptr <PositionAllocator> taPositionAlloc = pos.Create ()->GetObject
<PositionAllocator> ();
mobility.SetMobilityModel ("ns3::RandomWaypointMobilityModel", "Speed",
StringValue (speedConstantRandomVariableStream.str ()), "Pause", StringValue
("ns3::ConstantRandomVariable[Constant=2.0]"), "PositionAllocator",
PointerValue (taPositionAlloc));
mobility.SetPositionAllocator (taPositionAlloc);
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
mobility.Install (networkNodes);
//** Routing Protocol (DSR) **/
DsrHelper dsr;
DsrMainHelper dsrMain;
Ipv4ListRoutingHelper list;
/** Internet stack **/
InternetStackHelper internet;
internet.SetRoutingHelper (list);
internet.Install (networkNodes);
/** Network Adresses **/
Ipv4AddressHelper ipv4;
NS_LOG_INFO ("Assign IP Addresses.");
ipv4.SetBase ("10.1.0.0", "255.255.0.0");
Ipv4InterfaceContainer i = ipv4.Assign (devices);
TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
Ptr<Socket> recvSink;
recvSink = Socket::CreateSocket (networkNodes.Get (0), tid);
InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
recvSink->Bind (local);
recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
Ptr<Socket> source;
for(uint32_t count1 = 1; count1 < numNodes; count1++)
{
source = Socket::CreateSocket (networkNodes.Get (count1), tid);
89
InetSocketAddress remote = InetSocketAddress (Ipv4Address::GetBroadcast (),
80);
source->SetAllowBroadcast (true);
source->Connect (remote);
}
for(uint32_t count2 = 1; count2 < numNodes; count2++)
{
Simulator::Schedule (Seconds(startTime), &GenerateTraffic, source, packetSize,
networkNodes.Get(count2), numPackets, interPacketInterval);
}
Simulator::Stop (Seconds (60.0));
Simulator::Run ();
Simulator::Destroy();
NS_LOG_UNCOND ("Jumlah paket dikirim: " << numPackets*(numNodes - 1)
<< " paket. \nJumlah paket diterima: " << received_packets << " paket. \nPaket
diterima: " << double(received_packets*100)/(numPackets*(numNodes - 1)) <<
"%. \nRerata Delay: " << total_delay/received_packets << " detik. \nThroughput:
" << double ((received_packets*packetSize)/30)*8/1024 << " Kbps.\nAkhir
simulasi");
outfile2 << "----Hasil Simulasi----" << endl <<
"Jumlah paket dikirim: " << numPackets*(numNodes - 1) << endl <<
"Jumlah paket diterima: " << received_packets << " paket. " << endl <<
"Jumlah paket yang hilang: " << numPackets*(numNodes - 1) - received_packets
<< " paket. " << endl <<
"Rerata Delay: " << total_delay/received_packets << "seconds." << endl <<
"Throughput: " <<double((received_packets*packetSize)/30)*8/1024 << " Kbps."
<< endl;
outfile << "Akhir simulasi" << endl << endl;
outfile2 << "Akhir simulasi" << endl << endl <<
"---------------------------------------------------------" << endl << endl;
outfile.close();
outfile2.close();
received_packets = 0;
total_delay = 0;
90
return 0;
}
B. Kode Program DSDV
NS_LOG_COMPONENT_DEFINE ("DSDV");
using namespace ns3
using namespace std;
uint32_t received_packets = 0;
long double total_delay = 0;
void ReceivePacket (Ptr<Socket> socket)
{
ofstream outfile;
outfile.open("dsdv10n_Simulation_general.txt", ios::app);
Ptr<Packet> packet;
Address from;
while (packet = socket->RecvFrom (from))
{
if (packet->GetSize () > 0)
{
received_packets++;
DelayJitterEstimation delay;
delay.RecordRx(packet);
total_delay += delay.GetLastDelay().GetSeconds();
InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (from);
NS_LOG_UNCOND ("--\nMenerima 1 paket, jumlah paket sampai saat ini: "
<< received_packets << " dari: " << iaddr.GetIpv4() << " Delay: " <<
delay.GetLastDelay().GetSeconds() << " Ukuran paket "<< packet -> GetSize()
<< " port: " << iaddr.GetPort () << " pada detik ke = " << Simulator::Now
().GetSeconds () << "\n--");
outfile << "Menerima 1 paket, socket: "<< iaddr.GetIpv4 ()<< " port: " <<
iaddr.GetPort () << " pada detik ke = " << Simulator::Now ().GetSeconds () <<
"\n";
(void) iaddr;
}
}
91
outfile.close();
}
static void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, Ptr<Node> n,
uint32_t pktCount, Time pktInterval)
{
Ptr<Packet> p = Create<Packet> (pktSize);
DelayJitterEstimation delay;
delay.PrepareTx(p);
if (pktCount > 0)
{
socket->Send (p);
Simulator::Schedule (pktInterval, &GenerateTraffic, socket, pktSize, n,
pktCount - 1, pktInterval);
}
else
{
socket->Close ();
}
}
int main (int argc, char *argv[])
{
bool verbose = false;
double startTime = 0.0;
uint32_t numPackets = 100; // jumlah paket yang dikirim
std::string phyMode ("DsssRate11Mbps");
uint32_t packetSize = 1024;
uint32_t periodicUpdateInterval = 5;
long double interval = 1;
uint32_t numNodes = 200;
uint32_t speed = 5;
ofstream outfile;
ofstream outfile2;
outfile.open("dsdv10n_Simulation_general.txt", ios::app);
92
outfile << "Parameter simulasi" << endl
<< "Protokol Routing : DSDV" << endl
<< "Jumlah Node: " << numNodes << endl
<< "Kecepatan: " << speed << " m/s" << endl
<< "Jumlah paket yang dikirim dari tiap node : " << numPackets << endl
<< "Data rate: " << ((packetSize/interval)*8)/1024 << " Mbps" << endl;
outfile2.open("dsdv10n_Simulation_results.txt", ios::app);
outfile2 << "----Parameter simulasi----" << endl
<< "Protokol Routing : DSDV" << endl
<< "Jumlah Node: " << numNodes << endl
<< "Kecepatan: " << speed << " m/s" << endl
<< "Jumlah paket yang dikirim dari tiap node: " << numPackets <<endl
<< "Data rate: " << ((packetSize/interval)*8)/1024 << " Mbps" << endl;
CommandLine cmd;
cmd.AddValue ("phyMode", "Wifi Phy mode", phyMode);
cmd.AddValue ("packetSize", "ukuran paket aplikasi yang dikirim", packetSize);
cmd.AddValue ("numPackets", "Jumlah total paket yang dikirim", numPackets);
cmd.AddValue ("periodicUpdateInterval", "Waktu pembaruan/update periodik",
periodicUpdateInterval);
cmd.AddValue ("startTime", "Waktu mulai simulasi", startTime);
cmd.AddValue ("verbose", "Menyalakan semua komponen log alat", verbose);
cmd.Parse (argc, argv);
Time interPacketInterval = Seconds (interval);
Config::SetDefault
("ns3::WifiRemoteStationManager::FragmentationThreshold",
StringValue("2200"));
Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold",
StringValue ("2200"));
Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",
StringValue (phyMode));
NodeContainer networkNodes;
networkNodes.Create (numNodes);
WifiHelper wifi;
if (verbose)
93
{
wifi.EnableLogComponents ();
}
wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
/** Wifi PHY **/
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
wifiPhy.Set ("RxGain", DoubleValue (5));
wifiPhy.Set ("TxGain", DoubleValue (5));
wifiPhy.Set ("CcaMode1Threshold", DoubleValue (0.0));
/** wifi channel **/
YansWifiChannelHelper wifiChannel;
wifiChannel.SetPropagationDelay
("ns3::ConstantSpeedPropagationDelayModel");
wifiChannel.AddPropagationLoss ("ns3::FriisPropagationLossModel");
Ptr<YansWifiChannel> wifiChannelPtr = wifiChannel.Create ();
wifiPhy.SetChannel (wifiChannelPtr);
/** MAC layer **/
NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager","DataMode",
StringValue (phyMode),"ControlMode", StringValue (phyMode));
wifiMac.SetType ("ns3::AdhocWifiMac");
NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, networkNodes);
MobilityHelper mobility;
ObjectFactory pos;
pos.SetTypeId ("ns3::RandomRectanglePositionAllocator");
pos.Set ("X", StringValue
("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
pos.Set ("Y", StringValue
("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
std::ostringstream speedConstantRandomVariableStream;
speedConstantRandomVariableStream <<
"ns3::ConstantRandomVariable[Constant=" << speed<< "]";
Ptr <PositionAllocator> taPositionAlloc = pos.Create ()->GetObject
<PositionAllocator> ();
94
mobility.SetMobilityModel ("ns3::RandomWaypointMobilityModel", "Speed",
StringValue (speedConstantRandomVariableStream.str ()),"Pause",
StringValue ("ns3::ConstantRandomVariable[Constant=2.0]"),
"PositionAllocator", PointerValue (taPositionAlloc));
mobility.SetPositionAllocator (taPositionAlloc);
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
mobility.Install (networkNodes);
//** Routing Protocol (DSDV) **/
DsdvHelper dsdv;
dsdv.Set ("PeriodicUpdateInterval", TimeValue
(Seconds(periodicUpdateInterval)));
/** Internet stack **/
InternetStackHelper internet;
internet.SetRoutingHelper(dsdv);
internet.Install (networkNodes);
/** Network Adresses **/
Ipv4AddressHelper ipv4;
NS_LOG_INFO ("Assign IP Addresses.");
ipv4.SetBase ("10.1.0.0", "255.255.0.0");
Ipv4InterfaceContainer i = ipv4.Assign (devices);
TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
Ptr<Socket> recvSink;
recvSink = Socket::CreateSocket (networkNodes.Get (0), tid);
InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
recvSink->Bind (local);
recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
Ptr<Socket> source;
for(uint32_t count1 = 1; count1 < numNodes; count1++)
{
source = Socket::CreateSocket (networkNodes.Get (count1), tid);
InetSocketAddress remote = InetSocketAddress (Ipv4Address::GetBroadcast (),
80);
source->SetAllowBroadcast (true);
source->Connect (remote);
95
}
for(uint32_t count2 = 1; count2 < numNodes; count2++)
{
Simulator::Schedule (Seconds(startTime), &GenerateTraffic, source,
packetSize, networkNodes.Get(count2), numPackets, interPacketInterval);
}
Simulator::Stop (Seconds (60.0));
Simulator::Run ();
Simulator::Destroy();
NS_LOG_UNCOND ("Jumlah paket dikirim: " << numPackets*(numNodes - 1)
<< " paket. \nJumlah paket diterima: " << received_packets << " paket. \nPaket
diterima: " << double(received_packets*100)/(numPackets*(numNodes - 1)) <<
"%. \nRerata Delay: " << total_delay/received_packets << " detik. \nThroughput:
" << double ((received_packets*packetSize)/30)*8/1024 << " Kbps.\nAkhir
simulasi");
outfile2 << "----Hasil Simulasi----" << endl <<
"Jumlah paket dikirim: " << numPackets*(numNodes - 1) << endl <<
"Jumlah paket diterima: " << received_packets << " paket. " << endl <<
"Paket diterima: " << double(received_packets*10)/(numPackets*(numNodes - 1))
<< "%." << endl <<
"Jumlah paket yang hilang: " << numPackets*(numNodes - 1) - received_packets
<< " paket. " << endl <<
"Rerata Delay: " << total_delay/received_packets << "seconds." << endl <<
"Throughput: " <<double((received_packets*packetSize)/60)*8/1024 << " Kbps."
<< endl;
outfile << "Akhir simulasi" << endl << endl;
outfile2 << "Akhir simulasi" << endl << endl <<"--------------------------------------
-------------------" << endl << endl;
outfile.close();
outfile2.close();
received_packets = 0;
total_delay = 0;
return 0;
}
96