• Tidak ada hasil yang ditemukan

LAMPIRAN. Berikut spesifikasi perangkat keras (laptop) yang digunakan di dalam. Processor : Intel (R) CPU

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN. Berikut spesifikasi perangkat keras (laptop) yang digunakan di dalam. Processor : Intel (R) CPU"

Copied!
29
0
0

Teks penuh

(1)

LAMPIRAN

1. Rancangan Simulasi

1.1 Perangkat Keras yang Digunakan

Berikut spesifikasi perangkat keras (laptop) yang digunakan di dalam lingkungan percobaan:

Manufacturer : Toshiba

System Model : Satellite M105

BIOS : Ver 100PARTTBL0

Processor : Intel (R) CPU T1300 @1.66GHz

Memory : 1526 RAM

DirectX : DirectX 9.0c

Display : Mobile Intel(R) 945GM Express Chipset Family Display Memory 128.0MB

1.2 Perangkat Lunak yang Digunakan

Perangkat lunak yang digunakan dalam melakukan penelitian antara lain: 1. Sistem operasi Linux Ubuntu 11.04 (Kernel 2.6.38);

2. Network Simulator NS-3.11;

3. Wireshark;

(2)

L2 1.3 Prasyarat Instalasi dan Instalasi NS-3

NS-3 adalah sebuah discrete-event network simulator dari sebuah jaringan, yang ditujukan untuk penggunaan percobaan, pengembangan, dan keperluan pendidikan. NS-3 berlisensi GNU GPLv2 sehingga software ini opensource dan bebas untuk didistribusikan. NS-3 ditulis dengan menggunakan bahasa C++ dan python dan souce codenya tersedia untuk sistem operasi linux, seluruh varian unix, OS X, dan windows dengan cygwin. File simulasi yang akan dieksekusi ditulis menggunakan bahasa C++.

1.3.1 Persyaratan Instalasi

Untuk dapat menjalankan aplikasi network simulator ns-3, minimal sistem operasi yang digunakan diantaranya :

1. Linux x86 gcc 4.2, 4.1, and, 3.4.6.;

2. Linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6; 3. MacOS X ppc and x86 (gcc 4.0.x and 4.2.x);

4. Cygwin gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized).

Untuk bisa menjalankan NS-3 dibutuhkan compailer gcc/g++ versi 3.4 atau lebih dan python versi 2.4 atau lebih. Dalam sistem operasi linux ubuntu/debian, minimal package berikut harus tersedia sebelum proses instalasi dimulai.

1. Paket minimal untuk C++:

(3)

2. Paket minimal untuk python:

$sudo apt-get install gcc g++ python python-dev

Namun untuk bisa menjalankan semua fungsi dari NS-3, paket berikut juga harus tersedia sebelum proses instalasi dimulai:

1. Diperlukan mercurial untuk dapat bekerja dengan repositori pengembangan NS-3:

$sudo apt-get install mercurial

2. Diperlukan paket bazzar untuk menjalankan python bindings di NS-3-dev:

$sudo apt-get install bzr

3. Debugging:

$sudo apt-get install gdb valgrind

4. Dukungan GNU Scientific Library (GSL) untuk keakuratan pada model kesalahan WiFi:

$sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl

5. The Network Simulation Cradle (NSC) membutuhkan penganalisa flex

lexical and bison parser generator:

$sudo apt-get install flex bison

6. Untuk menginstalasi gcc-3.4 untuk beberapa tumpukan (stacks) Network Simulation Cradle (NSC):

(4)

L4

7. Untuk membaca pcap packet traces: $sudo apt-get install tcpdump 8. Dukungan database untuk framework statistik:

$sudo apt-get install sqlite sqlite3 libsqlite3-dev

9. Versi XML dari penyimpanan config (membutuhkan libxml2 >= version 2.7):

$sudo apt-get install libxml2 libxml2-dev 10. Konfigurasi sistem berbasis GTK:

$sudo apt-get install 0 libgtk2.0-dev

11. Untuk bereksperimen dengan mesin virtual dan NS-3: $sudo apt-get install vtun lxc

12. Dukungan untuk program pemeriksa gaya kode utils/check-style.py: $sudo apt-get install uncrustify

13. Doxygen dan dokumentasi yang berhubungan:

$sudo apt-get install doxygen graphviz imagemagick

$sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended

14. Manual NS-3 dan tutorial yang ditulis dalam Texinfo (doc/tutorial atau doc/manual):

(5)

$sudo apt-get install texinfo dia texlive pdf latex-extra

texlive-extra-utils texlive-generic-recommended texi2html

15. Dukungan untuk visualizer NS-3-pyviz Gustavo Carneiro:

$sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev

1.3.2 Instalasi

Untuk bisa mendapatkan source code NS-3, pengguna bisa mengunduh langsung dari web NS-3 di www.nsnam.org. Dalam halaman download, akan ada 3 pilihan yang tersedia : unduh versi terbaru yang sudah stable dari NS-3, unduh versi yang sedang dalam tahap pengembangan dan belum dalam keadaan stable, atau unduh versi terdahulu. Versi NS-3 yang akan penulis gunakan adalah versi ke 3.10 karena pada saat memulai penelitian, versi ini adalah versi yang terbaru. Semua file yang dapat diunduh dibuat dalam format tarball, sehingga nama file yang akan penulis unduh adalah “ns-allinone-3.10.tar.bz2”.

Pada bagian berikut akan dijelaskan mengenai langkah-langkah apa saja yang harus dilakukan dalam meng-instalasi network simulator NS-3.10 ke dalam sistem ubuntu setelah file berhasil diunduh. Setelah user mengunduh file source code yang dibutuhkan, selanjutnya user

(6)

L6

memindahkan file kedalam directory yang diinginkan. Lalu user masuk ke dalam terminal dan memasukan perintah sebagai berikut:

$bunzip2 ns-allinone-3.10.tar.bz2 $tar xvf ns-allinone-3.10.tar

$cd ns-allinone-3.10

$./build.py

Pada perintah pertama, user akan meng-extract file yang sebelumnya telah di compress untuk memperkecil file unduhan. Pada baris berikutnya, user akan membuka file tar dengan flag “xvf” yang berarti mengekstrak (x), menampilkan log selama dilakukan ekstraksi (v), dan melakukan ekstraksi dari suatu file (f). Setelah ekstraksi selesai dilakukan, pada perintah baris ketiga, user akan pindah directory dan masuk kedalam directory “ns-allinone-3.10”. Setelah memasuki directoy “ns-allinone-3.10”, user akan mengeksekusi file shell programming bernama “build.py”dengan perintah pada baris ke empat. Setelahnya user akan melihat pesan compiler yang sangat banyak hingga proses instalasi berhenti saat muncul pesan : $Build finished successfully (00:02:37) $Leaving directory `./ns-3-allinone'

Jika pesan tersebut sudah muncul, maka selanjutnya adalah user akan memasuki directory “ns-3.10” dengan memasukan perintah:

(7)

Untuk selanjutnya, aplikasi NS-3 harus dijalankan dari directory tersebut. Selanjutnya, dilakukan proses testing dengan mengeksekusi file shell programming bernama “test.py” dengan memasukan perintah:

$./test.py

Sehingga akan menghasilkan output seperti: PASS: TestSuite histogram

PASS: TestSuite ns3-wifi-interference PASS: TestSuite ns3-tcp-cwnd

PASS: TestSuite ns3-tcp-interoperability PASS: TestSuite sample

...

Proses instalasi selesai setelah proses testing berakhir dan aplikasi NS-3 sudah siap untuk digunakan.

Untuk dapat mengeksekusi file simulasi yang sudah user buat atau mengeksekusi contoh-contoh file yang disediakan oleh NS-3, user harus memasukan perintah-perintah berikut ke dalam terminal :

$cd ns-allinone-3.11

$cd ns-3.10

$./waf --run hello-simulator

Pada baris perintah pertama dan kedua, user akan memasukin directory “ns-3.10” sebelum dapat mengeksekusi file. Pada baris ketiga, user akan mulai mengeksekusi file yang ada dalam contoh, eksekusi file menggunakan waf, yang merupakan file konfigurasi untuk menjalankan

(8)

L8

program simulasi dan file yang akan dieksekusi bernama “hello-simulator.cc”.

Setelah menulis file simulasi dari jaringan, maka file tersebut harus di kompilasi untuk menjadi program yang dapat dipergunakan. Salah satu tools yang bisa digunakan untuk melakukan kompilasi antara lain adalah waf. Waf adalah salah satu kompilator terbaru yang dibangun dengan basis bahasa python. Karena itu waf menjadi salah satu pilihan terbaik untuk menjalan kan file NS-3 dimana NS-3 juga dibangun menggunakan bahasa python. Waf dapat mengkompilasi data python dari sistem NS-3 tanpa mengharuskan user menguasai bahasa pemrograman python.

2. Proses Menjalankan Program

Pada bagian ini akan dijelaskan tahap-tahap menjalankan program pada network simulator NS-3.

1. Masuk ke dalam directory ns-3.10. $cd ns-3.10

2. Eksekusi program dengan menggunakan waf . $./waf --run final

3. Jika ingin merubah parameter-parameter dari program pada saat compile-time, eksekusi program dengan flag “--PrintHelp”.

$./waf --run “final --PrintHelp”

Dengan mengeksekusi file dengan flag tersebut, akan muncul parameter-parameter yang dapat diubah dari program.

(9)

Gambar L.1 Parameter Yang Terdapat Dalam Program

Nilai awal dari tiap parameter adalah: - sizeMobile = 5;

- routeProtocol = 1; - ukur = 1;

- gerak =1.

Untuk menjalankan program dengan parameter yang akan kita ubah.

$./waf –run “final --gerak=2 --ukur=2 --routeProtocol=2 --sizeMobile=10”

Pada perintah diatas dapat dimasukan atau merubah sebagian saja dari parameter yang disediakan. Dengan tidak merubah parameter pada saat compile-time, maka parameter yang tidak diubah akan menggunakan nilai awal.

2.1 Menjalankan Simulasi Untuk PDR

1. Saat kita ingin melakukan simulasi PDR, maka mulai simulasi dengan mengeksekusi program dengan perintah pada terminal.

(10)

L10

$./waf –run “final gerak=1 ukur=1 --routeProtocol=1 –sizeMobile=5” > temp.dat 2>&1 Eksekusi program diatas dapat diartikan “jalankan program untuk menghitung PDR dengan node mobile yang bergerak sebanyak 5 buah dengan protokol routing AODV dan pindahkan hasil output dan pesan error kedalam file bernama temp.dat”. Setelah itu semua hasil output dari terminal akan dipindahkan kedalam file temp.dat.

Gambar L.2 Output Program Untuk PDR

2. Hitung rata-rata dari semua nilai PDR yang dihasilkan oleh semua node yang aktif dengan menggunakan perintah awk.

$awk '{ s += $2 } END { print NR " " s/NR }' temp.dat

Kemudian pindahkan hasil perhitungan ke dalam file yang lain. Untuk kemudahan dalam organisir file, beri nama file sesuai dengan nilai parameter pada saat eksekusi program, contoh “hasil-1-1-1.dat”. Nama file diatas dapat diartikan “hasil dari program dengan parameter gerak=1,ukur=1,dan routeProtocol=1”.

(11)

3. Ulangi langkah 1 dan 2, dengan merubah parameter sizeMobile tiap kali program dieksekusi dari 5 hingga 50 dengan penambahan 5 buah node tiap simulasi.

Gambar L.4 Hasil Eksekusi Program Untuk PDR

4. Ulangi langkah 1, 2 dan 3 dengan merubah parameter routeProtocol menjadi 2 dan 3 untuk mendapatkan hasil untuk protokol routing DSDV dan OLSR. 5. Ploting gambar dengan menggunakan program gnuplot dengan perintah berikut:

$gnuplot

gnuplot> set terminal png size 640,480 gnuplot> set xlabel "Jumlah Node"

gnuplot> set ylabel "Packet Delivery Ration (%)" gnuplot> set output "hasil-1-1.png"

gnuplot> plot "hasil-1-1-1.dat" title "AODV" with linespoint, "hasil-1-1-2.dat" title "DSDV" with linespoint, "hasil-1-1-3.dat" title "OLSR" with linespoint

(12)

L12

Perintah pertama dilakukan untuk mengatur tipe file dan ukuran dari gambar. Perintah ke 2 dan ke 3 digunakan untuk memeberikan nama / label pada sumbu kordinat yang diinginkan. Perintah ke 4 dilakukan untuk memberi nama gambar dari output file. Dan perintah terakhir digunakan untuk memperintah ploting gambar dari file yang ditentukan.

2.2 Menjalankan Simulasi Untuk Throughput

Pada perhitungan throughput, lakukan sesuai dengan langkah-langkah pada perhitungan PDR namun ubah parameter “ukur” pada langkah pertama menjadi “2” setiap kali program dieksekusi.

$./waf –run “final gerak=1 ukur=2 --routeProtocol=1 --sizeMobile=5” > temp.dat 2>&1

2.3 Menjalankan Simulasi Untuk End-to-End Delay 1. Jalankan program simulasi dengan perintah berikut:

$./waf –run “final gerak=1 ukur=3 --routeProtocol=1 -–sizeMobile=5” > temp.dat 2>&1 Eksekusi program diatas dapat diartikan “jalankan program untuk menghitung delay dengan node mobile yang bergerak sebanyak 5 buah, dengan protokol routing AODV dan pindahkan hasil output dan pesan error kedalam file bernama temp.dat”. Setelah itu semua hasil output dari terminal akan dipindahkan kedalam file temp.dat.

(13)

Gambar L.5 Output Program Untuk Delay

2. Hitung rata-rata delay yang didapat dari file tempt.dat dengan menggunakan perintah awk:

$awk '$2=="RX"{print $17;};' temp.dat | cat | cut -f1 -d'n' | awk '{ s += $1 } END { print "average: ", s/NR }'

Pindahkan hasil perhitungan ke file lain dengan format nama sesuai dengan parameter pada saat eksekusi program.

Gambar L.6 Menjalankan Perintah awk

3. Ulangi langkah 1 dan 2 dengan merubah parameter sizeMobile tiap kali program dieksekusi dari 5 hingga 50 dengan penambahan 5 buah node tiap simulasi.

(14)

L14

Gambar L.7 Hasil Eksekusi Untuk Delay

4. Ulangi langkah 1, 2 dan 3 dengan merubah parameter routeProtocol menjadi 2 dan 3, untuk mendapatkan hasil untuk protokol routing DSDV dan OLSR. 5. Ploting gambar dengan menggunakan program gnuplot dengan perintah berikut:

$gnuplot

gnuplot> set terminal png size 640,480 gnuplot> set xlabel "Jumlah Node"

gnuplot> set ylabel "Delay (ns)" gnuplot> set output "hasil-1-3.png"

gnuplot> plot "hasil-1-3-1.dat" title "AODV" with linespoint, "hasil-1-3-2.dat" title "DSDV" with linespoint, "hasil-1-3-3.dat" title "OLSR" with linespoint

Perintah pertama dilakukan untuk mengatur tipe file dan ukuran dari gambar. Perintah ke 2 dan ke 3 digunakan untuk memeberikan nama / label pada sumbu kordinat yang diinginkan. Perintah ke 4 dilakukan untuk memberi nama gambar dari

(15)

output file. Dan perintah terakhir digunakan untuk memperintah ploting gambar dari file yang ditentukan.

3. Kode Program

/*---*/ //VOISIN RILY MIKE 1100042761 //MUCHLIS ABDI 1100042862 //YUDHO RAMADHAN 1100043410 /*---*/ #include "ns3/core-module.h" #include "ns3/simulator-module.h" #include "ns3/node-module.h" #include "ns3/helper-module.h" #include "ns3/wifi-module.h" #include "ns3/mobility-module.h" #include "ns3/ipv4-global-routing-helper.h" #include "ns3/aodv-module.h" #include "ns3/dsdv-module.h" #include "ns3/olsr-module.h" #include "ns3/flow-monitor-module.h" #include <stdio.h> #include <fstream>

(16)

L16 using namespace ns3;

NS_LOG_COMPONENT_DEFINE ("final");

int main (int argc, char **argv) {

LogComponentEnable ("UdpServer", LOG_LEVEL_INFO);

uint32_t sizeStation=1; uint32_t sizeMobile=5; int routeProtocol = 1; int ukur = 1;

int gerak = 1;

CommandLine cmd; //input atribut saat compile-time cmd.AddValue("gerak", "1=gerak, 2=diam", gerak);

cmd.AddValue("ukur", "1=PDR, 2=throughput, 3=delay", ukur);

cmd.AddValue("routeProtocol", "1=AODV, 2=DSDV, 3=OLSR", routeProtocol); cmd.AddValue("sizeMobile", "Banyaknya node gerak", sizeMobile);

cmd.Parse(argc, argv);

uint32_t total = sizeStation+sizeMobile;

NodeContainer nodeMobile; //penyimpanan node dan netdevice NodeContainer nodeStation;

(17)

NetDeviceContainer DevicesMobile; NetDeviceContainer DevicesStation;

nodeMobile.Create(sizeMobile); //create node simulasi nodeStation.Create(sizeStation);

/*---wifi---*/

WifiHelper wifi; //set wifi dan atribut wifi.SetStandard (WIFI_PHY_STANDARD_80211a);

wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode",StringValue ("OfdmRate6Mbps"), "ControlMode",StringValue ("OfdmRate6Mbps"));

YansWifiChannelHelper channelWifi = YansWifiChannelHelper::Default (); YansWifiPhyHelper phyWifi = YansWifiPhyHelper::Default ();

phyWifi.SetChannel (channelWifi.Create ());

NqosWifiMacHelper macWifi = NqosWifiMacHelper::Default ();

macWifi.SetType ("ns3::AdhocWifiMac"); //set type wifi menjadi ad-hoc

DevicesMobile = wifi.Install (phyWifi, macWifi, nodeMobile); //install netdevice kedalam node

(18)

L18 MobilityHelper mobility;

mobility.SetPositionAllocator ("ns3::GridPositionAllocator", //set posisi node saat simulasi dimulai "MinX", DoubleValue (0.0), "MinY", DoubleValue (0.0), "DeltaX", DoubleValue (1.0), "DeltaY", DoubleValue (1.0), "GridWidth", UintegerValue (10),

"LayoutType", StringValue ("RowFirst")); if(gerak==1)

{

mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel", //set pergerakan node sesaat setelah simulasi dimulai

"Bounds", RectangleValue (Rectangle (-50, 50, -50, 50)), "Speed", RandomVariableValue (ConstantVariable(10))); }

else if(gerak==2) {

mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); //set node untuk diam

}

mobility.Install (nodeMobile);

(19)

mobility.Install (nodeStation); /*---Addressing---*/ InternetStackHelper stack; if(routeProtocol==1) {

AodvHelper route; //set gunakan routing protocol AODV stack.SetRoutingHelper (route);

Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> ("testing.routes", std::ios::out);

route.PrintRoutingTableAllAt (Seconds (8), routingStream); }

else if(routeProtocol==2) {

DsdvHelper route; //set gunakan routing protocol DSDV stack.SetRoutingHelper (route);

Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> ("testing.routes", std::ios::out);

route.PrintRoutingTableAllAt (Seconds (8), routingStream); }

else {

(20)

L20 stack.SetRoutingHelper (route);

Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> ("testing.routes", std::ios::out);

route.PrintRoutingTableAllAt (Seconds (8), routingStream); }

stack.Install (nodeMobile); stack.Install (nodeStation);

Ipv4AddressHelper address;

address.SetBase ("192.168.1.0", "255.255.255.0"); //set IP address Ipv4InterfaceContainer InterfacesMobile, InterfacesStation;

InterfacesStation = address.Assign (DevicesStation); InterfacesMobile = address.Assign (DevicesMobile);

phyWifi.EnablePcap ("final", DevicesMobile.Get (sizeMobile-1));

/*---Application---*/

if(ukur!=3) //jika pengukuran bukan delay {

ApplicationContainer cbrApps; //set aplikasi pengiriman data uint16_t cbrPort = 8080;

OnOffHelper onOffHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address ("192.168.1.1"), cbrPort));

(21)

onOffHelper.SetAttribute ("PacketSize", UintegerValue (512)); onOffHelper.SetAttribute ("DataRate", StringValue ("1024000bps")); for(double i = 0,j=1;(uint32_t)i<sizeMobile;i++,j=j+0.0005)

{

onOffHelper.SetAttribute ("StartTime", TimeValue (Seconds (j)));

cbrApps.Add (onOffHelper.Install (nodeMobile.Get (i))); //install aplikasi client

}

FlowMonitorHelper flowmon;

Ptr<FlowMonitor> monitor = flowmon.InstallAll();

Simulator::Stop (Seconds (10)); Simulator::Run ();

monitor->CheckForLostPackets ();

Ptr<Ipv4FlowClassifier> classifier = DynamicCast<Ipv4FlowClassifier> (flowmon.GetClassifier ());

std::map<FlowId, FlowMonitor::FlowStats> stats = monitor->GetFlowStats (); for (std::map<FlowId, FlowMonitor::FlowStats>::const_iterator i = stats.begin (); i != stats.end (); ++i)

{

if (i->first>total) {

(22)

L22 {

for(int j=0;j<1;j++)

{

Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow (i->first);

if(ukur==1)

{

std::cout << sizeMobile << "\t" << i->second.rxBytes*100 / i->second.txBytes<< "\n"; //print PDR

} else { std::cout<<sizeMobile<<"\t"<< i->second.rxBytes * 8.0 / 10.0 / 1024<<"\n"; //print throughput } } } } } Simulator::Destroy (); }

else //pengukuran delay {

(23)

UdpServerHelper server (port);

ApplicationContainer apps = server.Install (nodeStation.Get(0)); //install aplikasi server

apps.Start (Seconds (0.0)); apps.Stop (Seconds (10.0));

uint32_t MaxPacketSize = 512;

Time interPacketInterval = Seconds (0.0005); uint32_t maxPacketCount = 320;

UdpClientHelper client (InterfacesStation.GetAddress (0), port); client.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount)); client.SetAttribute ("Interval", TimeValue (interPacketInterval)); client.SetAttribute ("PacketSize", UintegerValue (MaxPacketSize)); for(uint32_t i=0;i<sizeMobile;i++)

apps = client.Install (nodeMobile.Get (i)); //install aplikasi client apps.Start (Seconds (0.0)); apps.Stop (Seconds (10.0)); Simulator::Stop (Seconds (10)); Simulator::Run (); Simulator::Destroy (); } return 0; }

(24)

L24 #include "ns3/core-module.h" #include "ns3/simulator-module.h" #include "ns3/node-module.h" #include "ns3/helper-module.h" #include "ns3/wifi-module.h" #include "ns3/mobility-module.h" #include "ns3/ipv4-global-routing-helper.h" #include "ns3/aodv-module.h" #include "ns3/dsdv-module.h" #include "ns3/olsr-module.h" #include "ns3/flow-monitor-module.h" #include <stdio.h> #include <fstream> using namespace ns3; NS_LOG_COMPONENT_DEFINE ("final"); int main (int argc, char **argv)

{

int routeProtocol = 1; int jarak = 1;

CommandLine cmd; //input atribut saat compile-time

(25)

cmd.AddValue("jarak", "Jarak antar node", jarak); cmd.Parse(argc, argv);

NodeContainer nodeStation; //penyimpanan node dan netdevice nodeStation.Create(2);

NetDeviceContainer DevicesStation;

/*---wifi---*/

WifiHelper wifi; //setting wireless

wifi.SetStandard (WIFI_PHY_STANDARD_80211a);

wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode",StringValue ("OfdmRate6Mbps"), "ControlMode",StringValue ("OfdmRate6Mbps"));

YansWifiChannelHelper channelWifi = YansWifiChannelHelper::Default (); YansWifiPhyHelper phyWifi = YansWifiPhyHelper::Default ();

phyWifi.SetChannel (channelWifi.Create ());

NqosWifiMacHelper macWifi = NqosWifiMacHelper::Default ();

macWifi.SetType ("ns3::AdhocWifiMac"); //setting wireless kedalam mode ad-hoc

DevicesStation = wifi.Install (phyWifi, macWifi, nodeStation);

(26)

L26

mobility.SetPositionAllocator ("ns3::GridPositionAllocator", //set posisi node saat simulasi dimulai

"MinX", DoubleValue (0.0), "MinY", DoubleValue (0.0), "DeltaX", DoubleValue (jarak), "DeltaY", DoubleValue (1.0), "GridWidth", UintegerValue (100),

"LayoutType", StringValue ("RowFirst"));

mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); //set node untuk diam mobility.Install (nodeStation); /*---Addressing---*/ InternetStackHelper stack; if(routeProtocol==1) {

AodvHelper route; //set routing protocol AODV stack.SetRoutingHelper (route);

Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> ("testing.routes", std::ios::out);

route.PrintRoutingTableAllAt (Seconds (8), routingStream); }

(27)

{

DsdvHelper route; //set routing protocol DSDV stack.SetRoutingHelper (route);

Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> ("testing.routes", std::ios::out);

route.PrintRoutingTableAllAt (Seconds (8), routingStream); }

else {

OlsrHelper route; //set routing protocol OLSR stack.SetRoutingHelper (route);

Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> ("testing.routes", std::ios::out);

route.PrintRoutingTableAllAt (Seconds (8), routingStream); }

stack.Install (nodeStation);

Ipv4AddressHelper address;

address.SetBase ("192.168.1.0", "255.255.255.0"); //setting IP address Ipv4InterfaceContainer InterfacesStation;

InterfacesStation = address.Assign (DevicesStation);

(28)

L28

ApplicationContainer cbrApps; //setting aplikasi pengiriman data uint16_t cbrPort = 8080;

OnOffHelper onOffHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address ("192.168.1.1"), cbrPort));

onOffHelper.SetAttribute ("PacketSize", UintegerValue (512)); onOffHelper.SetAttribute ("DataRate", StringValue ("1024000bps")); onOffHelper.SetAttribute ("StartTime", TimeValue (Seconds (1.00000))); cbrApps.Add (onOffHelper.Install (nodeStation.Get (1))); //install aplikasi ke client

FlowMonitorHelper flowmon;

Ptr<FlowMonitor> monitor = flowmon.InstallAll();

Simulator::Stop (Seconds (10)); Simulator::Run ();

monitor->CheckForLostPackets ();

Ptr<Ipv4FlowClassifier> classifier = DynamicCast<Ipv4FlowClassifier> (flowmon.GetClassifier ());

std::map<FlowId, FlowMonitor::FlowStats> stats = monitor->GetFlowStats (); for (std::map<FlowId, FlowMonitor::FlowStats>::const_iterator i = stats.begin (); i != stats.end (); ++i)

{

if (i->first==3) {

(29)

{

Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow (i->first); std::cout << "PDR = " << "\t" << >second.rxBytes*100 / i->second.txBytes << " (" << t.sourceAddress << " -> " << t.destinationAddress << ")\n";

//cetak PDR } } } Simulator::Destroy (); return 0; }

Gambar

Gambar L.1 Parameter Yang Terdapat Dalam Program
Gambar L.4 Hasil Eksekusi Program Untuk PDR
Gambar L.7 Hasil Eksekusi Untuk Delay

Referensi

Dokumen terkait