• Tidak ada hasil yang ditemukan

DAFTAR ISI DAFTAR ISI UBUNTU... 4 Sekilas Tentang Ubuntu Perintah dasar Ubuntu... 5

N/A
N/A
Protected

Academic year: 2021

Membagikan "DAFTAR ISI DAFTAR ISI UBUNTU... 4 Sekilas Tentang Ubuntu Perintah dasar Ubuntu... 5"

Copied!
104
0
0

Teks penuh

(1)
(2)

2 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

DAFTAR ISI

DAFTAR ISI ... 2

UBUNTU ... 4

Sekilas Tentang Ubuntu ... 4

Perintah dasar Ubuntu ... 5

Kepemilikan File dan Hak Akses pada Ubuntu ... 12

Super User Do (sudo) ... 12

Kepemilikan File ... 12

Hak Akses ... 12

INSTALASI NS3 ...16

Download ns-allinone-3.25 ... 16

Ekstrak ns-allinone-3.25 ... 16

Download dan install paket depedency NS3 ... 17

Instalasi NS-3.25 ... 17 Installasi NetAnim ... 20 NETWORK SIMULATOR 3 ...21 Network Simulator 3 ... 21 Kelebihan ... 21 Contoh Simulasi NS3 ... 22 Implementasi ... 22 Konsep Dasar NS3 ... 22 C++ pada NS3 ... 26 Dasar Bahasa C++ ... 26

Pemrograman Berbasis Objek ... 27

Tipe Data ... 27

Konstanta ... 29

Operator ... 29

Fungsi Main() ... 29

Command ... 30

Memanggil Library yang tersedia ... 30

Struktur ... 31 Seleksi Kondisi ... 31 Repetisi (Loop) ... 32 For ... 32 While ... 33 Do-While ... 33 SIMULASI P2P ...34

(3)

Simulasi NS-3 – PointToPoint ... 34

PointToPoint ... 34

Script For Netanim ... 39

SIMULASI CSMA ...41

Simulasi NS-3 – CSMA ... 41

CSMA ... 41

SIMULASI WIRELESS AP-CLIENT ...48

WIRELESS AP-CLIENT ... 48

Simulasi Wireless AP-CLIENT ... 49

SIMULASI P2P * CSMA * WIFI ...55

Simulasi NS 3 – P2P * CSMA * WIFI ... 55

Simulation ... 55

traffic and data collection ...63

Traffic Generation ... 63 Implementasi ... 63 Generate Packet ... 64 8.1.2.1 UDP Packet... 64 8.1.2.2 TCP Packet ... 65 Data Colllection ... 66

Manet & vanet ...67

MANET ... 67

Karakteristik MANET ... 67

Routing Protokol... 68

Script for MANET ... 69

VANET ... 74

Karakteristik VANET ... 75

Routing Protokol... 76

Script for VANET ... 77

Mobility model ...82 Mobility Model ... 82 Position Allocator ... 82 Mobility Model ... 82 Openflow model ...83 OPENFLOW ... 83 LTE Model ...90 LTE MODEL ... 90

(4)

4 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

UBUNTU

Sekilas Tentang Ubuntu

Ubuntu merupakan sistem operasi yang berasal dari UNIX, dimana UNIX

menggunakan interface baris perintah (command line), maka interface pengguna

berbasis grafik dengan jendela, setiap icon dan menu pada sistem operasi linux

dibangun di atas dasar interface baris perintah (command line) .

Pengguna Ubuntu memang tidak diharuskan untuk memahami perintah-perintah

dasar pada sistem operasinya, namun sebagai pembelajaran mengenai proses

didalamnya perintah dasar Linux dan Ubuntu sebaiknya dipelajari.

Gambar 1.1 Tampilan Ubuntu 12.04

Setiap perintah akan di eksekusi melalui Terminal/Console. Ada beberapa cara untuk

membuka Terminal / Console, diantaranya :

· Membuka dengan shortcut CTRL + ALT + T

(5)

Gambar 1.2 Search Terminal

Perintah dasar Ubuntu

Perintah-perintah (command) dasar di GNU/Linux di jalankan di suatu terminal shell

yang biasa disebut terminal atau console. Terminal atau console ini dikenal dengan

istilah command line interface (CLI) yang bisa diaktifkan dengan cara klik menu

Applications –Accessories – Terminal. Selain itu bisa juga dengan bekerja diconsole

murni dengan menakan kombinasi tombol ctrl+alt+F1 dimana F1 bisa diganti sampai

F6. Untuk kembali ke mode Grafical User Interface (GUI) tekan ctrl+alt+F7.

Berikut ini hanya beberapa command yang umum terdapat di setiap distribusi

GNU/Linux khususnya distribusi Ubuntu.

1.

mkdir (make directories)

Perintah membuat direktori :

Contoh : Membuat direktori dengan nama “akses”

Setelah membuat direktori melalui terminal, maka akan terdapat folder aktif yang

dibuat sesuai dengan namanya.

mkdir <nama folder>

(6)

6 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6 2.

ls (list)

Jika memasukan perintah ls, maka console akan menampilkan semua data dan folder

pada direktori tersebut.

Gambar 1.3 Perintah ls

Perintah ls dapat ditambahkan dengan atribut untuk kepentingan lainnya diantaranya:

menampilkan setiap list file dengan atribut seperti user, permission, size, dan date

modify.

menampilkan setiap daftar list file dan hidden file di dalam direktori sekarang tanpa

atribut apapun.

menggabungkan opsi perintah -l dan -a untuk ls.

menampilkan list dari file /home/akses ketika kita sedang berada di direktori

sekarang.

3.

cd (change directory)

Jika memasukan perintah cd, maka console akan berpindah ke direktori yang

diinginkan.

Gambar 1.4 Perintah cd

ls -l

ls -a

ls -al

ls /home/akses

(7)

Berikut adalah perintah –perintah cd yang tersedia :

pindah direktori ke direktori yang berada di dalam direktori sekarang.

pindah ke direktori home.

pindah ke direktori home.

pindah ke direktori sebelumnya.

pindah n direktori sebelumnya.

pindah ke direktori tanpa harus mundur ke direktori sebelumnya. Akan pindah jika

direktori tersebut ada dan penulisan nama direktorinya benar.

4.

cp (copy)

Perintah cp digunakan untuk mengkopi file atau folder dan folder tersebut harus

sudah terbuat. Jika belum terbuat maka file tersebut akan dikopi dengan nama baru.

mengkopi file tertentu ke direktori tertentu.

mengkopi folder tertentu secara rekursif ke direktori tertentu.

mengkopi file – file yang berekstensi tertentu ke direktori tertentu.

mengkopi file – file yang namanya diawali dengan ‘nama’ ke direktori tertentu.

5.

mv (move)

Perintah mv mempunyai cara kerja yang hampir sama dengan cp. mv memindahkan

file atau folder, sedangkan cp mengkopi file atau folder.

cd direktori/

cd

cd ~

cd ..

cd ../../../n

cd /bin

cp <file> /path/ke/direktori/nama_file

cp -r <folder> /path/ke/direktori/sesuatu

cp *.extension /path/ke/direktori/sesuatu

cp nama* /path/ke/direktori/sesuatu

(8)

8 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6 6.

rm (remove)

Perintah rm digunakan untuk menghapus file atau folder. Mempunyai cara kerja yang

hampir sama dengan cp maupun mv.

7.

adduser

Untuk menambahkan user baru pada Ubuntu.

8.

login

Untuk masuk ke user lain. Setiap pemakai sah dari sistem UNIX mempunyai identifikasi

pemakai sendiri (ID).

9.

password

Untuk memasukkan kata sandi setelah login. Untuk pemakai yang baru didaftar oleh

Super User maka user tidak perlu memasukkan kata sandi. Untuk menjaga

kerahasiaan, pengetikan tombol password tidak ditampilkan di layar.

10.

who

Untuk mengetahui daftar pemakai yang sedang aktif (login).

11.

finger

Finger mempunyai kegunaan hampir sama dengan who, hanya saja finger

menyediakan informasi identitas user yang lebih lengkap dari ada who.

12.

logout

Untuk keluar dari sistem atau mengakhiri satu sesi login. Bila pemakai akan mengakhiri

penggunaan terminal sebaiknya menjalankan perintah ini, agar hak akses pada log

in-nya tidak disalahgunakan oleh orang lain yang tidak berhak.

13.

exit

Untuk keluar dari sistem . Sama dengan perintah log out.

14.

whoami

Untuk mengetahui user siapa yang digunakan sedang login di suatu

komputer/terminal. Digunakan bila menemukan terminal yang belum logout atau exit

dan ingin mengetahui milik siapa terminal tersebut diaktifkan.

15.

date

Menunjukkan atau mengatur tanggal.

adduser <nama user baru>

(9)

16.

cal

Mencetak kalender mulai tahun 0000 s/d 9999.

17.

chmod

Mengubah permission suatu direktori/file.

18.

clear

Untuk membersihkan layar. Bisa juga dengan kombinasi tombol ctrl+D.

19.

cmp

Membandingkan file1 dan file2 serta laporkan perbedaannya.

Perintah ini tidak akan melaporkan apa-apa jika file tersebut identik (sama persis).

20.

cat

Menampilkan isi sebuah file.

Cat berfungsi untuk mencetak ke layar monitor isi dari sebuah file text. Jika file dililihat

menggunakan perintah ini bukan file text maka akan keluar karakterkarakter aneh

pada layar. Untuk menghindari tercetaknya karakter-karakter aneh tersebut dapat

digunakan perintah cat –v.

21.

more

Menampilkan isi text file per layar.

Dengan perintah ini isi file dapat ditampilkan perlayar sehingga dapat diperiksa secara

detail. Tekan spasi untuk melihat isi file di layar berikutnya.

22.

history

Menampilkan perintah-perintah yang telah digunakan sebelumnya.

23.

wc

Menghitung jumlah kata, jumlah baris dan jumlah karakter dalam suatu file.

24.

man

Singkatan dari manual yaitu untuk menampilkan halaman manual untuk semua

perintah UNIX.

cmp <file1> <file2>

cat <nama file>

more <nama file>

wc <nama file>

(10)

10 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Perintah ini sangat bermanfaat bagi setiap pemakai UNIX karena dapat membantu

mengingat kembali perintah-perintah UNIX.

25.

grep

Mencari isi suatu file di sembarang directori.

Perintah grep akan mencari suatu variable dalam suatu baris tertentu, di dalam

sembarang direktori pada semua file. Grep sangat berguna untuk menemukan kata

tertentu dalam beberapa dokumen atau mencari adanya sebuah variable dalam

sekelompok program. Misalnya :

26.

rmdir (Menghapus Direktori)

Menghapus direktori yang kosong .

Semisal untuk menghapus lebih dari 1 direktori dapat dilakukan dengan :

Jika directori yang dihapus tidak ada maka akan ditampilkan pesan.

27.

pwd

Menunjukkan direktori aktif.

28.

ps

Digunakan untuk memonitoring informasi tentang proses yang aktif dalam sistem

UNIX.

29.

kill

Digunakan untuk menghentikan proses yang sedang berjalan.

Id proses dapat dilihat pada kolom PID pada keluaran perintah ps -aux diatas.

30.

&

Menjalankan program di belakang layar (multitasking).

rmdir <nama direktori>

rmdir <folder1> <folder2> <folder3>

grep -n <nama file dengan petik> <direktori yang akan dicari>

grep -n ‘shutdown’ /etc/*

ps -aux

kill <id-proses>

(11)

31.

bc

Perintah bc dapat digunakan sebagai calculator. Fasilias ini tida ada pada versi UNIX

standar.

32.

pr

Mencetak isi file ke printer.

33.

write

Mengirim pesan ke pemakai yang sedang login.

Write akan membuat hubungan dari keyboard ke layar pemakai yang ditentukan. Apa

saja yang diketikkan dari keyboard akan tampak di layar penerima.

34.

mesg

Menolak pesan dari pemakai lain. Kita dapat juga menolak pesan yang dikirim dengan

memakai perintah write.

Perintah ini tidak dapat menolak ijin bagi super user untuk mengirim pesan.

35.

mail (Penerima)

Mengirimkan dan membaca pesan berupa surat.

Mail adalah sebuah program pengiriman elektronik yang mengirimkan pesan ke user

lain atau membaca pesan dari user lainnya.

36.

wall

Pengiriman pesan oleh super user. Bagi super user, sistem operasi UNIX menyediakan

pengiriman pesan keseluruhan pemakai yang sedang log in saat itu dan perintah ini

hanya dapat dilakukan oleh super user.

pr (nama file) > /dev/lp0

write <user tujuan>

mesg <y atau n>

(12)

12 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Kepemilikan File dan Hak Akses pada Ubuntu

Super User Do (sudo)

Sudo adalah sebuah perintah dalam command-line Linux. Apabila anda memiliki

akses root, maka sudo akan melakukan perintah sebagai superuser. Pengguna

sudo dan perintah-perintah yang dapat mereka pergunakan terdapat pada file

konfigurasi, /etc/sudoers. Apabila seorang pengguna yang tidak berhak mencoba

menjalankan perintah, sudo akan memberitahu administrator melalui e-mail.

Secara default, pemberitahuan peringatan ini akan disimpan di akun root.

Pengguna yang mencoba menjalankan perintah akan diminta mengisikan

password.

Kepemilikan File

Setiap file di sistem Linux readers, termasuk direktori (folder), dimiliki oleh

pengguna dan grup tertentu. Oleh karena itu, hak akses file di definisikan secara

terpisah untuk User, Grup, dan Others (pengguna lain).

User

: username orang yg memiliki file. Secara default, pengguna yg

menciptakan file tersebut akan menjadi pemilik file tersebut.

Grup

: Grup User yang memiliki File tersebut. Semua pengguna yang

masuk ke dalam kelompok mempunyai hak akses yang sama untuk

file tersebut.

Others

: Pengguna yang bukan pemilik file dan tisak masuk ke dalam

kelompok yang sama. Dengan kata lain jika readers menetapkan

izin untuk ‘others’ maka orang yg tidak memiliki file atau grup

inilah yang akan terkena pengaruhnya.

Hak Akses

Ada tiga jenis izin hak akses di Linux yaitu Read, Write, Execute.

Read

: Pada file biasa, ini berarti file dapat di buka dan di baca. Jika pada

sebuah direktori, berarti readers bisa melihat isi direktori tersebut.

Write

: Pada file biasa, ini berarti file dapat di modifikasi (menambah,

mengubah, menghapus, mengubah nama file dalam direktori).

Execute

: Pada file biasa, ini berarti readers bisa menjalankan file sebagai

program atau shell script. Pada sebuah direktori, execute (atau

biasa di sebut ‘search bit’) memungkinkan readers untuk

mengakses file dalam direktori misalnya : dengan perintah cd.

(13)

Pertama, kita bisa melihat hak akses dari file dengan mengetikkan perintah di

terminal ls –l. Hasilnya maka akan seperti ini:

Gambar 1.5 Perintah ls -l

Berikut keterangan output pada gambar diatas.

Kolom pertama

: merupakan jenis file dan perizinan yang mengikat file

tersebut (perzinan meliputi perizinan User, Grup dan

Others). Terdiri dari 10 karakter. Karakter pertama

dari kolom pertama ini menunjukkan:

d = directory

- = regular file

l = Symbolic Link

s = Unix Domain Socket

p = named pipe

c = character device file

b = block device file

Lalu sisa 9 karakter lainnya menyatakan perizinan.

Dibagi menjadi 3 grup. Tiap grup berisi 3 karakter

yang mewakili : read, write dan execute. Karakter

tersebut mudah diingat, diantaranya:

r = read permission

w = write permission

x = execute permission

- = no permission

(14)

14 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Kolom kedua

: menunjukkan jumlah Link (entri direktori yang merujuk

ke file tersebut)

Kolom ketiga

: menunjukkan pemilik file

Kolom keempat

: menunjukan Grup pemilik file

Kolom kelima

: menunjukkan ukuran file dalam byte

Kolom keenam

: menunjukan bulan terakhir di akses atau di modifikasi

Kolom ketujuh

: menunjukan tanggal terakhir di akses atau di modifikasi

Kolom kedelapan

: menunjukan jam terakhir di akses atau di modifikasi

berdasarkan waktu pada kolom keenam dan ketujuh

Kolom kesembilan : menunjukkan nama folder atau file

1.3.3.1 Cara mengatur hak akses

Kita dapat mengatur hak akses file dengan perintah chmod. Di chmod terdapat 2

mode yang bisa di gunakan untuk konfigurasi hak akses file yaitu dengan cara

simbolik dan numerik.

Cara Simbolik :

Pertama

: readers harus memutuskan apakah readers mengatur hak akses

untuk pengguna (u), kelompok (g), pengguna lainnya (o), atau

ketiganya (a).

Kedua

: readers bisa menambahkan izin (+), menghapus (-), atau

menghapus izin sebelumnya dan menambahkan izin yang baru (=)

Ketiga

: tentukan perizinannya. Apakah readers mengatur izin read (r),

write(w), execute (e), atau ketiganya.

Keempat

: readers hanya tinggal memberikan perintah untuk chmod, hak

akses mana yang akan di rubah.

Contoh:

Kita mempunyai regular file bernama contohfile dan file memiliki izin akses penuh

padazsemua kelompok (ada perintah ‘rwx’).

Tampilan awal Perizinan file :

-rwxrwxrwx

1. Kita hapus semua hak akses yang sekarang dan mengganti dengan hanya izin

read untuk semua grup.

Syntax: $ chmod a=r contohfile

Tampilan akan menjadi : -r–r–r–

2. Selanjutnya kita akan memberikan izin kepada grup (yang di tengah) untuk di

tambahkan izin execute

Syntax: $ chmod g+x contohfile

Tampilan akan menjadi : -r–r-xr–

(15)

3. Selanjutnya kita akan memberikan izin kepada semua grup untuk di

tambahkan izin write.

Syntax: $ chmod ugo+w contoh file

Tampilan akan menjadi : -rw-rwxrw-

4. Selanjutnya kita akan menghapus izin execute yang ada pada grup (yg di

tengah) untuk di hapus.

Syntax: $ chmod g-x contohfile

Tampilan akan menjadi : -rw-rw-rw-

Mode Numerik :

Mode dimana diwakili oleh 3 angka octal untuk perizinan filenya.

Standar umumnya adalah:

4 = read (r)

2 = write(w)

1 = execute (x)

0 = tidak ada izin (-)

Jika ingin mendapatkan hak akses yang kita inginkan kita hanya tinggal

menjumlahkan angka yang sesuai .

Contoh:

1. Kita ingin mendapatkan hak akses Read Write dan Execute secara bersamaan

maka numeriknya menjadi seperti ini:

Read + write + execute

4 + 2 + 1 = 7

2. Kita ingin mendapatan hak akses read dan execute secara bersamaan maka

numeriknya akan menjadi seperti ini:

Read + Execute

4 + 1 = 5

Contoh penerapan pada syntax:

$ chmod 755 contohfile

Syntax diatas menunjukan hak akses untuk User adalah 7 (rwx), untuk grup adalah

5 (rx), dan untuk others juga 5 (rx).

(16)

16 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

INSTALASI NS3

Installasi ini dilakukan dengan menggunakan Ubuntu 12.04 pada Virtual Box / VM Ware.

Langkah-langkahnya sebagai berikut :

Download ns-allinone-3.25

Installasi ini dilakukan dengan menggunakan Ubuntu-12.04. Pertama-tama,

download ns-allinone-3.25.tar.bz2 dari website resmi NS-3.

Gambar 2.1 Alamat website untuk mendownload ns-allinone-3.25.tar.bz2 ( https://www.nsnam.org/ns-3-25/ )

Ekstrak ns-allinone-3.25

Setelah berhasi mendownload ns-allinone-3.25.tar.bz2 , ekstrak dilokasi yang anda

inginkan, hasilnya akan muncul folder baru dengan nama ns-allinone-3.25.

(17)

Gambar 2.2 Hasil ekstrak ns-allinone-3.25.tar.bz2

Download dan install paket depedency NS3

Sebelum installasi ns3, ada beberapa paket yang perlu diinstall terlebih dahulu,

download dan install paket tersebut dengan perintah :

Jika tidak bisa mendownloadnya, maka perlu dilakukan update terlebih dahulu,

dengan perintah :

Instalasi NS-3.25

Setelah melakukan ekstrak file ns-allinone-3.25.tar.gz, maka akan ada direktori

dengan nama ns-allinone-3.25 berada dilokasi dimana file sebelum diekstrak berada.

Masuk ke dalam direktori tersebut dengan perintah :

Pastikan dependencys pada step sebelumnya sudah dipastikan didapatkan seluruhnya

untuk installasi NS-3 dan NetAnimnya. Selanjutnya pindah ke directori root NS-3 dan

sudo apt-get install gcc g++ python python-dev mercurial bzr gdb valgrind

gsl-bin libgsl0-dev libgsl0ldbl flex bison tcpdump sqlite sqlite3 libsqlite3-dev

libxml2 libxml2-dev libgtk2.0-0 libgtk2.0-dev uncrustify doxygen graphviz

imagemagick texlive texlive-latex-extra extra

generic-recommended texinfo dia texlive latex-extra extra-utils

texlive-sudo apt-get update

(18)

18 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

lakukan command seperti gambar 2.4.1 ini untuk melakukan configure NS-3 terhadap

sistem nantinya.

Gambar 2.4.1 Command untuk configure NS-3 sebelum tahap compile

Gambar 2.4.2 Configure NS-3 telah selesai.

Setelah berhasil melakukan configure seperti gambar 2.4.2, maka selanjutnya adalah

melakukan ‘build’ atau compiling NS-3. Untuk melakukan Build, cukup dengan

mengetikan command seperti gambar 2.4.3 maka proses build akan berjalan. Proses

ini membunuh waktu cukup lama, sehingga anda dapat browsing selagi menunggu

proses build NS-3. Proses build juga terdapat pada gambar selanjutnya.

(19)

Gambar 2.4.4 Proses build NS-3.

Setelah proses build selesai seperti gambar 2.4.5 telah selesai, maka NS-3 sudah siap

untuk digunakan. Maka coba untuk melakukan command untuk melakukan

hellosimulator pada NS-3. Ikuti petunjuk gambar 2.4.6.

Gambar 2.4.5 Proses Build telah selesai.

Gambar 2.4.6 Running hello-simulator.

Jika melakukan tes hell-simulator telah berhasil, maka NS-3 sudah bisa berjalan

dengan baik.

(20)

20 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Installasi NetAnim

Untuk mendukung simulasi pada NS-3, dibutuhkan juga suatu visualisasi dari ns3, yaitu

NetAnim atau Network Animator khusus untuk NS-3. Berpindah ke directory NetAnim

yang ada di folder ns-allinone-3.25. Lakukan perintah sesuai dengan gambar 2.5.1

dibawah. Pastikan package qt4-dev-tools telah terinstall, karena package ini

dibutuhkan untuk proses install dan build netanim.

Command :$ qmake NetAnim.pro

$ make

Gambar 2.5.1 Command untuk installasi NetAnim.

Jika proses installasi netanim telah selesai, maka sekarang panggil aplikasi netanim

dengan mengetikan perintah dibawah ini. Maka UI NetAnim akan muncul seperti

gambar 2.5.2.

Command :$ ./NetAnim

Gambar 2.5.2 UI NetAnim yang telah terinstall.

Setelah berhasil melakukan installasi NS-3 dan NetAnim sebagai aplikasi visualisasinya,

maka kita bisa menuju langkah selanjutnya untuk memulai simulasi dengan NS-3.

(21)

NETWORK SIMULATOR 3

Network Simulator 3

Network Simulator 3, atau yang lebih dikenal sebagai NS3, adalah sebuah discrete

event network Simulator yang berguna dalam mempelajari dynamic nature dari

communication networks. Simulasi dari wired maupun wireless network (routing

algorithms, TCP, UDP, dll) dapat dilakukan dengan menggunakan NS3. Target utama

NS3 adalah untuk menunjang aktifitas riset dan pembelajaran pada bidang Jaringan.

Website resmi NS3 adalah

https://www.nsnam.org/

, Project NS3 ini dimulai pada

bulan Juli 2006 dan rilis pertama dilakukan pada 30 Juni 2008. Bahasa yang digunakan

pada NS3 adalah C++ atau Phyton.

Secara struktur bahasa, C++ pada NS3 memang terlihat lebih rumit daripada bahasa

TCL yang digunakan pada NS2. Namun NS3 lebih mudah digunakan karena sudah berisi

pustaka (library) yang bisa kita panggil untuk memenuhi kebutuhan kita. Infrastruktur

NS3 sendiri mendukung pengembangan model Simulasi yang mendekati kondisi real

dan memiliki karakteristik mendekati emulator Jaringan. Selain dapat digunakan

sebagai Simulator untuk Jaringan berbasis IP, NS3 juga dapat digunakan sebagai

Simulator Jaringan berbasis non-IP.

Kelebihan

a.

Sebagai perangkat lunak simulasi pembantu analisis dalam riset atau penelitian.

b.

Memiliki tool validasi yang berfungsi untuk menguji validitas pemodelan yang ada

pada NS-3.

c.

Pembuatan simulasi lebih mudah dibandingkan dengan software developer yang

lain.

d.

Bersifat open source

e.

Pada NS-3 user tinggal membuat topologi dan skenario simulasi yang sesuai

dengan kebutuhan

(22)

22 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Contoh Simulasi NS3

a. TCP/UDP/RTP

b. Traffic behaviour (FTP, Telnet, CBR, dll)

c. Queue management (RED, FIFO, CBQ)

d. Algoritma routing Unicast (Distance Vector, Link State) dan multicast

e. PIM SM, PIM DM, DVMRP, Shared Tree dan Bi directional Shared Tree

f. Aplikasi multimedia yang berupa layered video

g. QOS audio-video dan transcoding

Implementasi

NS3 diimplementasikan antara lain :

a. MAC (IEEE 802.3, 802.11)

b. Media jaringan kabel (LAN, WAN, point to point)

c. Nirkabel (Mobile IP, Wireless LAN)

Konsep Dasar NS3

Hal pertama yang harus kitalakukan adalah mengenal beberapa konsep dan abstraksi

pada NS-3. Mungkin untuk beberapa orang penjelasan ini masih kurang dapat

dipahami, tapi pastikan untuk meluangkan waktu membaca konsep ini. Pada subbab

ini, kita akan mereview beberapa istilah yang biasa digunakan pada jaringan, dimana

memiliki arti spesifik di NS-3. Sebelum kita membahas beberapa konsep dasar NS3,

perhatikan gambar 3.1.4.

(23)

Node

Dalam jargon internet, sebuah perangkat komputasi atau komputer yang

terhubung pada suatu jaringan biasa disebut host atau end system. Karena NS-3

adalah sebuah network simulator, bukan secara spesifik internet simulator, jadi

disini tidak menggunakan istilah host yang sangat berkaitan erat dengan internet

dan protokolnya. Disini kita menggunakan istilah yang banyak digunakan

simulator lain pada umumnya, The Node.

Pada NS-3, suatu perangkat jaringan sederhana adalah sebuah node. Abstraksi ini

digambarkan oleh simulator NS-3 dengan kelas Node pada bahasa pemprogaman

C++ nya. Kelas ini menangani metode untuk memanage representasi dari sebuah

perangkat jaringan pada simulasi.

Kita harus berfikir node sebagai sebuah komputer dimana nantinya akan

ditambahkan suatu fungsionalitas oleh kita sendiri. Penambahan yang banyak

orang orang lakukan yaitu penambahan seperti aplikasi, protokol internet dan

beberapa penambahan fungsionalistas laninnya yang dapat membuat sebuah

komputer berfungsi dengan penuh.

Application

Secara khusus, suatu perangkat lunak komputer terbagi dalam dua kelas yang

luas. System Software atau sistem perangkat lunak mengorganisir berbagai

macam resource komputer seperti memori, siklus prosesor, disk, dan lain

sebagainya, berdasarkan suatu model komputasi. System software biasanya tidak

menggunakan resource yang ada untuk menyelesaikan suatu tugas yang secara

langsung berkaitan dengan user. Seorang user biasanya akan menjalankan suatu

application yang membutuhkan dan menggunakan resource yang di atur oleh

system software untuk mencapai suatu goal tertentu.

Pembeda antara system software dan application software adalah level privilege

yang berubah saat menjalankan sistem. Pada NS-3 tidak ada konsep

sesungguhnya untuk pengoperasian sistem yang khususnya pada sistem

perbedaan level privilegenya. NS-3 mempunyai ide untuk aplikasi. Yaitu sebuah

aplikasi perangkat lunak yang berjalan pada suatu komputer untuk menjalankan

tugas di “dunia nyata”. Aplikasi NS-3 berjalan pada node NS-3 untuk menjalankan

simulasi di dunia simulasi.

(24)

24 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Pada NS-3, abstraksi sederhananya adalah program seseorang yang

meng-generates beberapa aktivitas yang akan dijalankan adalah aplikasi.

Merepresentasikan kelas Application pada C++. Kelas ini menyediakan metode

untuk mengelola representasi suatu versi aplikasi user-level pada simulasi. Para

pengembang diharapkan untuk menguasai kelas Application pada pemprogaman

berbasis object-oriented untuk membuat aplikasi baru. Pada modul ini, kita akan

membahas khususnya kelas aplikasi yang disebut UdpEchoClientApplication dan

UdpEchoServerApplication. Aplikasi ini membangun suatu aplikasi client/server

yang digunakan untuk menghasilkan simulasi suatu paket jaringan.

Channel

Dalam dunia nyata, seseorang dapat menghubungkan komputer ke sebuah

jaringan. Seringkali media dimana data mengalir pada jaringan ini disebut channel

atau saluran. Ketika kita menghubungkan kabel ethernet kita ke jaringan

ethernet, kita menghubungkan komputer kita ke channel komunikasi ethernet.

Pada simulasi NS-3, seseorang menghubungkan node ke sebuah objek yang

merepresentasikan channel komunikasi. Pada source program C++, diwakili dalam

suatu kelas Channel.

Kelas channel seperti kelas-kelas pada penjelasan sebelumnya, menyediakan

metode untuk memanage komunikasi pada objek dan mengkoneksikan node

terhadapnya. Channel ini mungkin juga harus dikhususkan oleh pengemband

pada pemprogaman berbasis object-oriented.

Channel mungkin merepresentasikan suatu model yang sangat simpel seperti

komunikasi kabel. Secara khusus pun bisa merepresentasikan model yang

komplek seperti model ethernet switch yang luas, ataupun wireless network.

Pada modul ini, kita akan menggunakan beberapa channel seperti, CsmaChannel,

PointToPoint Channel, dan WifiChannel. Contohnya, pada CsmaChannel ini, kita

akan mengimplementasikan komunikasi Carrier Sense Multiple Access yang akan

memberikan kita fungsi seperti teknologi Ehternet.

Net Device

Sudah menjadi suatu kasus umum bahwa jika kita ingin menghubungkan

komputer kita ke suatu jaringan, maka kita harus memiliki sebuah kabel jaringan

dan sebuah peripheral card yang telah memiliki beberapa fungsi jaringan biasanya

disebut NIC (Network Interface Card). Pada masa kini, sebagian besar komputer

(25)

telah dilengkapi dengan perangkat keras jaringan ini, tetapi penggunanya jarang

melihat bentuk blok ini.

Sebuah NIC tidak akan bekerja tanpa adanya software driver untuk mengontrol

hardware ini. Pada Unix, hardware ini diklasifikasikan sebagai device, dan

dikontrol menggunakan sebuah driver, dan NIC dikontrol oleh NetDevice atau

network device driver. Kita mengenal NetDevice ini dengan nama yang sudah

biasa kita lihat yaitu eth0 atau wlan0 (Unix atau Linux).

Pada NS-3, NetDevice ini mewakili keduanya baik software maupun hardware.

NetDevice ini di install pada sebuah node untuk memungkinkan sebuah node

berkomunikasi dengan node lainnya pada simulasi melalui channel. Seperti pada

kehidupan nyata, sebuah node dapat terkoneksi kebeberapa channel dengan

menggunakan banyak NetDevice. NetDevice ini direpresentasikan oleh kelas

NetDevice pada source C++ nya.

Pada modul ini kita akan menggunakan beberapa NetDevice, seperti

CsmaNetDevice, PointToPointNetDevice, dan WifiNetDevice. Sama halnya seperti

NIC Ethernet yang bekerja untuk jaringan ethernet, CsmaNetDevice dibuat untuk

bekerja dengan CsmaChannel.

Topology Helper

Pada jaringan yang sesungguhnya, kita akan menemukan sebuah komputer

dilengkapi dengan NIC. Pada NS-3, kita akan menemukan sebuah node yang

dilengkapi dengan NetDevices. Pada simulasi jaringan yang lebih besar, kita perlu

mengatur banyak koneksi antar node, Netdevice dan channel yang digunakan.

Menghubungkan NetDevice ke sebuah Node, menghubungkan NetDevice ke

sebuah Channel, dan menetapkan IP dan lain sebagainya adalah hal yang biasa,

NS-3 menyediakan apa yang disebut dengan Topology Helper untuk memudahkan

simulasi. Contohnya, untuk membuat NetDevice, menambahkan alamat MAC,

menginstall NetDevice ke Node, konfigurasi protokol stack nodenya, dan

mengkoneksikan NetDevice ke suatu Channel. Bahkan operasi yang lebih akan

diperlukan untuk menghubungkan beberapa perangkat ke beberapa channel dan

untuk mengkoneksikan jaringan ke jaringan yang lebih besar. NS-3 menyediakan

objek topology helper yang mengkombinasikan beberapa operasi berbeda

menjadi lebih mudah untuk digunakan.

(26)

26 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Beberapa komponen diatas merupakan komponen dasar yang digunakan untuk

membangun simulasi pada NS-3. Luangkan waktu untuk membaca komponen

diatas untuk memudahkan anda memahami script simulasi yang akan dibahas di

modul ini.

C++ pada NS3

C++ adalah

bahasa pemrograman

komputer

yang merupakan perkembangan dari

bahasa C dikembangkan di

Bong Labs

(

Dennis Ritchie

) pada awal tahun 1970-an,

Bahasa itu diturunkan dari bahasa sebelumnya, yaitu B, Pada awalnya, bahasa

tersebut dirancang sebagai bahasa pemrograman yang dijalankan pada sistem

Unix

,

Pada perkembangannya, versi ANSI (American National Standart Institute)

Bahasa

pemrograman C

menjadi versi dominan. Basic dari Network Simulator 3 adalah

bahasa C++, artinya seluruh modul dan konstruksi NS3 dibangun dari bahasa C++

seperti ditunjukan oleh diagram dibawah :

Gambar 3.2 NS3 C++ construct used by all modules.

Dasar Bahasa C++

Bahasa C++ (baca : si ples ples) merupakan bahasa pemrograman yang dapat

dikatakan berada diantara bahasa tingkat rendah (bahasa yang berorientasi pada

mesin) dan bahasa tingkat tinggi (bahasa yang berorientasi pada manusia).

(27)

Pemrograman Berbasis Objek

Ide dasar pada bahasa berorientasi objek (PBO) adalah mengkombinasikan data

dan fungsi untuk mengakses data menjadi sebuah kesatuan unit. Unit ini dikenal

dengan nama object(obyek). Obyek sebenarnya mencerminkan pola pikir kerja

manusia dalam kehidupan sehari-hari. Dalam terminologi PBO, obyek sebenarnya

adalah anggota dari sebuah kelas (class). Dengan kata lain, kelas adalah kumpulan

dari beberapa obyek yang sama. Contohnya seperti ini :

Object = Tantri – Kotak, Kaka – Slank, Ahmad Dani

Class = Penyanyi Rock And Roll Indonesia

Tiga karakteristik utama dari dari bahasa yang berorientasi obyek adalah

Encapsulation, Inheritance, Polymorphism.

Encapsulation adalah pengemasan data dan fungsi dalam wadah bernama obyek,

data dianggap sama kedudukannya dengan fungsi.

Inheritance merupakan penurunan dari kelas lain ke kelas yang lain.

Polymorphism merupakan suatu konsep yang menyatakan sesuatu yang sama

dapat memiliki berbagai bentuk dan perilaku yang berbeda.

Tipe Data

Pada semua bahasa Pemrograman, Tipe Data merupakan komponen krusial.

Kenapa krusial? Karena Tipe Data berfungsi sebagai komponen yang memberikan

karakteristik terhadap suatu variabel.

Tipe Data

Ukuran Memori

Nilai Min & Maks

Char

1 byte

-128 s/d +127

Int

2 byte

-32768 s/d +3267

Long

4 byte

-2.147.438.648

s/d

+2.147.438.647

(28)

28 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Float

4 byte

3.4 x 10

-38

s/d 3.4 x 10

+38

Double

8 byte

1.7 x 10

-308

s/d 1.7 x 10

+308

Long double

10 byte

3.4 x 10

-4932

s/d 1.1 x

10

+4932

Tipe Data Integer (Bilangan Bulat)

Adalah Tipe Data Bilangan Bulat. Integer memiliki nilai dari -2,147,483,648

sampai 2,147,483,648. Bila kita input diluar itu, maka nilai variabel tsb akan

secara otomatis diberi nilai -2,147,483,648. Pendeklarasian secara umum :

int<spasi>nama_variabel;

Tipe Data Float (Bilangan Pecahan Presisi Tunggal)

Adalah Tipe Data yang memungkinkan kita untuk memberi input/output angka

dibelakang koma (,) namun pada pengoperasiannya, kita diwajibkan untuk

mengganti simbol koma (,) dengan simbol titik(.). Jumlah bit sebanyak 32 bit (4

byte). Pendeklasrasian secara umum :

float<spasi>nama_variabel;

Tipe Data Double (Bilangan Pecahan Presisi Ganda)

Adalah Tipe Data yang memungkinkan kita untuk memberi input/output angka

dibelakang koma (,) sama seperti float bedanya pada jumlah bit sebanyak 64 bit

(8 byte). Pendeklasrasian secara umum :

double<spasi>nama_variabel;

Tipe Data Char (Karakter)

Adalah Tipe Data yang memungkinkan kita untuk memberi input/output angka

dibelakang koma (,) namun pada pengoperasiannya, kita diwajibkan untuk

mengganti simbol koma (,) dengan simbol titik(.). Jumlah bit sebanyak 32 bit (4

byte). Pendeklasrasian secara umum :

float<spasi>nama_variabel;

Tipe Data Void (Tipe Data Tidak Bertipe)

Merupakan tipe data tidak bertipe dan memiliki jumlah bit sebanyak 0 bit.

Biasanya digunakan pada pendeklarasian fungsi.

(29)

Konstanta

C++ memungkinkan sesuatu tidak dapat berubah nilainya setelah

didefinisikan. Contohnya adalah bila kita ingin set variabel PHI bernilai

3.141592. Maka yang perlu kita deklarasikan adalah :

const float PHI = 3.14592; atau float PHI = 3.14592 const;

Operator

Operator merupakan simbol yang biasa dilibatkan dalam program untuk

melakukan sesuatu operasi atau manipulasi. Misalnya untuk menjumlahkan dua

buah nilai , memberikan nilai ke suatu variabel , membandingkan kesamaan dua

buah nilai.

Operator

Keterangan

Contoh

*

Perkalian

2 * 3

/

Pembagian

7 / 2

%

Sisa Pembagian (modulus)

7 % 2

+

Penjumlahan

5 + 2

-

Pengurangan

5 - 2

Fungsi Main()

Program C++ tidak pernah lepas dari fungsi. Sebab fungsi adalah salah satu dasar

penyusun blok pada C++. Sebuah program C++ minimal mengandung sebuah

fungsi, yaitu fungsi main(). Fungsi ini menjadi fungsi utama, yaitu awal dan akhir

eksekusi program C++. Contoh pendeklarasian :

Contoh 1

void main()

{

cout<<”Halo, selamat belajar Network Simulator 3 \n”;

}

(30)

30 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Contoh 2

int main()

{

cout<<”Halo, selamat belajar Network Simulator 3 \n”;

return 0;

}

Command

Dalam membuat program, terdapat komen-komen yang tidak akan dibaca oleh

eksekutor Program. Format pembuatan komen yang tidak akan dibaca oleh

Program tersebut terdapat 2 cara yaitu dengan menggunakan “//” yang

dikhususkan untuk komen satu baris (single-line) dan juga dengan menggunakan

“/*” sebagai awal dan “*/” sebagai akhir, kondisi ini khusus untuk kondisi komen

beberapa baris (multi-line). Lihat contoh :

Gambar 3.8 contoh bentuk command (komen pada script)

Memanggil Library yang tersedia

Sebelum membuat program, kita butuh untuk mendeklarasikan Library terlebih

dahulu. Library atau Pustaka merupakan kumpulan program atau fungsi yang telah

ada, misalnya pustaka apabila kita menggunakan sin, cos, tan maka kita perlu

menggunakan sintaks #include <math.h>. Contoh yang lain adalah cout, ketika kita

menggunakan obyek cout, maka kita perlu mendeklarasikan baris

(31)

#include<iostream.h>, bila tidak, akan terjadi error saat kompilasi. Ada 2 cara

deklarasi untuk memanggil library, yaitu :

#include <namafile.h>

#include “namafile.h”

Struktur

Struktur bermanfaat untuk mengelompokkan sejumlah data dengan tipe yang

berlainan. Sebuah contoh pendeklarasian struktur dapat dilihat dibawah ini :

struct data_diri

{

String nama;

int usia;

int ukuransepatu;

}

Apabila suatu struktur telah dideklarasikan, struktur ini dapat digunakan untuk

mendefinisikan suatu variabel, misalnya :

data_diri mahasiswa;

Dengan pendefinisan tsb, maka tanggal lahir memiliki 3 buah anggota yaitu : nama,

usia, dan ukuransepatu.

Seleksi Kondisi

Seleksi Kondisi diperlukan untuk mengambil keputusan bila terdapat dua kondisi

atau lebih. Seleksi Kondisi dapat dideklarasi menggunakan if, if sendiri memiliki dua

bentuk pernyataan yaitu :

If saja dan

Else

Pada kedua bentuk pernyataan ini, kondisi yang dapat digunakan dapat

menggunakan kondisi ungkapan, Ungkapan-ungkapan ini dapat melibatkan

operator relasi, misal == atau operator logika seperti && atau | |

(32)

32 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Kondisi digunakan untuk menentukan pengambilan keputusan

Perintah dapat berupa sebuah pernyataan tunggal maupun majemuk. Bagian ini

dijalankan hanya apabila kondisi bernilai benar.

Gambar 3.11 Gambar seleksi kondisi

Repetisi (Loop)

Pada kasus repetisi atau pengulangan dapat menggunakan format For, While,

Do-While

For

Syntax For:

Inisialisasi : keadaan awal dari variabel kontrol. Cth : int i = 0

Syarat : ekspresi relasi yang merupakan kondisi. Cth : i<4

If (kondisi) Perintah; If (kondisi){ Perintah 1; Perintah 2; }

For ( inisialisasi; syarat; penambahan){ Pernyataan;

(33)

Penambahan : pengatur perubahan nilai variabel control. Cth : i++

While

Syntax While :

Do-While

Syntax Do-While :

Inisialisasi; While (kondisi) { Pernyataan; } Int i=0; While (i<4) { i++; } Inisialisasi; Do { Pernyataan; } While (kondisi) Int i=0; Do { i++; } While (i<4)

(34)

34 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

SIMULASI P2P

Simulasi NS-3 – PointToPoint

PointToPoint merupakan sebuah protokol data link dimana ini menghubungkan dua

node secara langsung (PointToPoint). Jaringan point-to-point merupakan satu bentuk

jaringan yang paling sederhana yang hanya melibatkan dua buah node. Setiap node

terkoneksi dengan node lainnya dengan satu link koneksi.

Gambar 4.1 Point-to-point Network

PointToPoint

Pada bab sebelumnya, kita mengenal yang disebut dengan topology helper. Helper

ini akan kita gunakan untuk membentuk suatu link point-to-point, berikut

merupakan contoh script untuk membuat suatu topologi dengan menggunakan

PointToPointHelper.

PointToPointHelper pointToPoint;

//merupakan topology helper yang berfungsi untuk membuat topology //point-to-point

//setelah membuat objek helper biasanya bisa ditambahkan dengan

(35)

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

NetDeviceContainer devices; //membuat netdevice container

devices = pointToPoint.Install (nodes);

// menginstall topology point to point berdasarkan netdevice dan //channel yang sudah diatur 'default' di helper topology

PointToPoint helper akan membuat sebuah objek yang nantinya dapat digunakan

lagi untuk pembuatan topologi yang sama. Objek pointTopoint ini adalah helper

untuk sebuah topologi dan akan diinstall pada node dengan menggunakan metode

inisiasi NetDeviceContainer terlebih dahulu, seperti pada paparan diatas.

Simulasi point-to-point diatas menggunakan objek helper yang dibuat untuk

mengatur beberapa attribute lain yaitu channel dan

point-to-point-net-device. NS-3 hanya menyediakan satu attribute untuk point-to-point-channel

sedangkan beberapa attribute untuk point-to-point-net-device:

point-to-point-channel

Delay

: Delay Propagasi saluran

point-to-point-net-device

Address

: MAC address perangkat

DataRate

: data rate dari perangkat

TxQueue

: antrian pengiriman yang digunakan perangkat

InterframeGap

: waktu tunggu antar frame (opsional)

Rx

: trace untuk paket yang diterima

(36)

36 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Dibawah ini merupakan script myfirst.cc yang berada di folder scratch dan

dilakukan modifikasi untuk menambahkan beberapa parameter. Script dibawah ini

merupakan simulasi sederhana PointToPoint antara dua node.

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License version 2 as

* published by the Free Software Foundation; *

* This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

/*

*Modification had been done by AcccesNetworkLaboratory @AccessAcademyTraining April 2016,

*for support simulation training in "Point-To-Point" simulation. *date modified 30-3-2016 */ /* * ilustrasi topologi * * n0 --- n1 * * */

(37)

#include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/internet-module.h"

#include "ns3/point-to-point-module.h" #include "ns3/applications-module.h"

#include "ns3/netanim-module.h" // entered for animation configuration and output file

using namespace ns3;

NS_LOG_COMPONENT_DEFINE ("MyFirstScript");

int

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

Time::SetResolution (Time::NS);

LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);

NodeContainer nodes; nodes.Create (2);

PointToPointHelper pointToPoint;

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

NetDeviceContainer devices;

devices = pointToPoint.Install (nodes);

InternetStackHelper stack; stack.Install (nodes);

Ipv4AddressHelper address;

address.SetBase ("10.1.1.0", "255.255.255.0");

Ipv4InterfaceContainer interfaces = address.Assign (devices);

(38)

38 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));

serverApps.Start (Seconds (1.0)); serverApps.Stop (Seconds (10.0));

UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9); echoClient.SetAttribute ("MaxPackets", UintegerValue (1));

echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));

clientApps.Start (Seconds (2.0)); clientApps.Stop (Seconds (10.0));

// Animation configuration lines

AnimationInterface anim ("myfirst.xml");

anim.SetConstantPosition (nodes.Get(0), 3.0, 3.0 ); anim.SetConstantPosition (nodes.Get(1), 5.0, 5.0 ); anim.UpdateNodeSize(0, 0.2, 0.2);

anim.UpdateNodeSize(1, 0.2, 0.2); // End of animation configuration

Simulator::Run (); Simulator::Destroy (); return 0;

}

Kita akan mengeksekusi file tersebut untuk melihat output yang dikeluarkan. Untuk

mengeksekusi file tersebut, jalankan perintah seperti dibawah, pada root ns3

direktori, maka akan muncul output pada gambar 3.1.2.

(39)

Gambar 3.1.1 Running script myfirst.

Gambar diatas merupakan hasil tampilan running script myfirst.cc dimana terdapat

warning berkaitan dengan mobility model yang tidak diinstall pada node. Tetapi

peringatan ini dapat diabaikan karena kita tidak membutuhkan mobility model

untuk menjalankan simulasi constant atau tidak bergerak.

Script For Netanim

NetAnim merupakan sebuah aplikasi untuk menampilkan salah satu output dari

simulasi pada NS-3. NetAnim ini akan membaca file yang berekstensi .xml, yang

dimana untuk menghasilkan file ini, suatu script yang akan dijalankan harus

memiliki module untuk mendukung script netanim untuk simulasi nya. Agar lebih

jelas mari kita lihat contoh script dibawah.

#include "ns3/netanim-module.h" //module untuk animasi netanim +

+ +

AnimationInterface anim ("myfirst.xml");//membuat output file netanim

+ +

Simulator::Run (); //simulator running

Simulator::Destroy (); //simulator destroy

(40)

40 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

Penjabaran script untuk netanim diatas merupakan script minimal yang harus kita

tambahkan untuk mensupport suatu output file animasi. Dari penjabaran diatas,

kita mengetahui.

Module Netanim harus dipastikan telah terdeklarasi pada awal script

beserta module lainnya untuk memastikan library netanim telah dimengerti

ketika menjalankan script.

Netanim mengeluarkan output file dengan nama yang bisa kita rubah pada

bagian perintah

AnimationInterface anim (“myfirst.xml”);.

Perintah untuk membuat file output untuk animasi harus dideklarasikan

sebelum baris

Simulator::Run ();

Pada saat kita menjalankan script myfirst.cc kita pasti mendapatkan warning

karena kita tidak mendefinisikan mobility model dari node yang kita buat. Output

file myfirst.xml bisa kita buka menggunakan Netanim dan akan menghasilkan

gambar seperti dibawah.

(41)

SIMULASI CSMA

Simulasi NS-3 – CSMA

CSMA (Carrier Sense Multiple Access) model pada NS-3 memodelkan sebuah topologi

bus, walaupun tidak memodelkan jaringan fisik yang real seperti apa yang kita buat,

ini memfungsikan beberapa fungsi yang berguna. Gambar dibawah memperlihatkan

gambar topologi bus yang kita mungkin telah familiar.

Gambar 4.1 CSMA (BUS) Network

NS-3 tidak memodelkan collision detection pada jaringan CSMA ini, karena pada

dasarnya, sebuah collision tidak terjadi pada jaringan Ethernet.

CSMA

Setelah mengenal bagaimana suatu topology helper digunakan pada topologi

point-to-point. Sebenarnya penggunaan helper pada CSMA juga tidak begitu

berbeda. Berikut script bagaimana mengatur suatu topology helper untuk jaringan

CSMA dan beberapa attributenya.

(42)

42 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

//topology helper yang berfungsi untuk membuat topology //point-to-point

CsmaHelper csma;

//setting attribute

csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps")); csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds

(6560)));

NetDeviceContainer csmaDevices; //membuat netdevice container

csmaDevices = csma.Install (csmaNodes); // menginstall topology

CSMA berdasarkan netdevice dan

//channel yang sudah diatur ataupun 'default' di helper topology

Simulasi CSMA diatas menggunakan objek helper yang dibuat untuk mengatur

beberapa attribute lain yaitu csma-channel dan csma-net-device. NS-3

menyediakan attribute untuk csma-channel dan attribute csma-net-device:

csma-channel

Delay

: delay propagasi saluran

Data Rate

: bit rate dari transmisi paket

csma-net-device

Address

: MAC address perangkat

Send Enable

: enable packet transmission (if true)

Receive Enable

: enable packet reception (if true)

Encapsulation Mode

: tipe encapsulation yang digunakan

RxErrorModel

: error model penerima

TxQueue

: antrian pengiriman yang digunakan perangkat

InterframeGap

: waktu tunggu antar frame (opsional)

Rx

: trace untuk paket yang diterima

(43)

Dibawah ini merupakan script mysecond.cc yang berada di folder scratch dan

dilakukan modifikasi untuk menambahkan beberapa parameter. Script dibawah ini

merupakan simulasi sederhana CSMA empat node.

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License version 2 as

* published by the Free Software Foundation; *

* This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

/*

*Modification had been done by AcccesNetworkLaboratory @AccessAcademyTraining April 2016,

*for support simulation training in "CSMA (LAN Topology)" simulation. *date modified 30-3-2016

*/ /* * ilustrasi topologi * * n0 n1 n2 n3 n5 * | | | | | * =================== * LAN 10.1.1.0 */

(44)

44 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6 #include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/csma-module.h" #include "ns3/internet-module.h" #include "ns3/point-to-point-module.h" #include "ns3/applications-module.h" #include "ns3/ipv4-global-routing-helper.h"

#include "ns3/netanim-module.h" // entered for animation configuration and output file

using namespace ns3;

NS_LOG_COMPONENT_DEFINE ("MySecondScript");

int

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

bool verbose = true; uint32_t nCsma = 5;

CommandLine cmd;

cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);

cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose); cmd.Parse (argc,argv); if (verbose) { LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO); } NodeContainer csmaNodes; csmaNodes.Create (nCsma); CsmaHelper csma;

(45)

csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps")); csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds

(6560)));

NetDeviceContainer csmaDevices;

csmaDevices = csma.Install (csmaNodes);

InternetStackHelper stack; stack.Install (csmaNodes);

Ipv4AddressHelper address;

address.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer csmaInterfaces;

csmaInterfaces = address.Assign (csmaDevices);

UdpEchoServerHelper echoServer (9);

ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (4));

serverApps.Start (Seconds (1.0)); serverApps.Stop (Seconds (10.0));

UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (4), 9);

echoClient.SetAttribute ("MaxPackets", UintegerValue (1));

echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps = echoClient.Install (csmaNodes.Get (0));

clientApps.Start (Seconds (2.0)); clientApps.Stop (Seconds (10.0));

Ipv4GlobalRoutingHelper::PopulateRoutingTables ();

csma.EnablePcap ("second", csmaDevices.Get (0), true);

// Animation configuration lines

AnimationInterface anim ("mysecond.xml");

anim.SetConstantPosition (csmaNodes.Get(0), 0.0, 3.0 ); anim.SetConstantPosition (csmaNodes.Get(1), 2.0, 3.0 );

(46)

46 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6 anim.SetConstantPosition (csmaNodes.Get(2), 4.0, 3.0 ); anim.SetConstantPosition (csmaNodes.Get(3), 6.0, 3.0 ); anim.SetConstantPosition (csmaNodes.Get(4), 8.0, 3.0 ); anim.UpdateNodeSize(0, 0.2, 0.2); anim.UpdateNodeSize(1, 0.2, 0.2); anim.UpdateNodeSize(2, 0.2, 0.2); anim.UpdateNodeSize(3, 0.2, 0.2); anim.UpdateNodeSize(4, 0.2, 0.2); // End of animation configuration

Simulator::Run (); Simulator::Destroy (); return 0;

}

Kita akan mengeksekusi file tersebut untuk melihat output yang dikeluarkan. Untuk

mengeksekusi file tersebut, jalankan perintah seperti dibawah, pada root ns3

direktori, maka akan muncul output pada gambar 3.1.2.

./waf –run scratch/mysecond

(47)

Gambar diatas merupakan hasil tampilan running script myfirst.cc dimana terdapat

warning berkaitan dengan mobility model yang tidak diinstall pada node. Tetapi

peringatan ini dapat diabaikan karena kita tidak membutuhkan mobility model

untuk menjalankan simulasi constant atau tidak bergerak. Hasil dari netanim

merupakan mysecond.xml dibuka dengan netanim menghasilkan gambar

(48)

48 | A c c e s s A c a d e m y T r a i n i n g 2 0 1 6

SIMULASI WIRELESS AP-CLIENT

WIRELESS AP-CLIENT

Dalam simulasi Wireless Fidelity atau Wifi kita lihat dulu parameter yang digunakan

untuk standar Wifi itu sendiri. Salah satu yang paling krusial adalah penggunaan

Standar 802.11. Kemudian pada Simulasi Wifi ini terdapat dua jenis node yaitu

Station (Sta) dan Access-Point(AP).

NodeContainer wifiStaNodes; wifiStaNodes.Create (nWifi); NodeContainer wifiApNode; wifiApNode.Create(1);

YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();

YansWifiPhyHelper phy = YansWifiPhyHelper::Default (); phy.SetChannel (channel.Create ());

WifiHelper wifi;

wifi.SetRemoteStationManager ("ns3::AarfWifiManager");

WifiMacHelper mac;

Ssid ssid = Ssid ("ns-3-ssid"); mac.SetType ("ns3::StaWifiMac",

"Ssid", SsidValue (ssid),

"ActiveProbing", BooleanValue (false));

NetDeviceContainer staDevices;

staDevices = wifi.Install (phy, mac, wifiStaNodes);

mac.SetType ("ns3::ApWifiMac",

"Ssid", SsidValue (ssid));

NetDeviceContainer apDevices;

(49)

Simulasi Wifi diatas menggunakan objek helper WifiHelper dan WifiMacHelper

yang dibuat untuk mengatur beberapa attribute lain.

Simulasi Wireless AP-CLIENT

Dibawah ini merupakan script mythird.cc yang berada di folder scratch dan

dilakukan modifikasi. Script dibawah ini merupakan simulasi sederhana Wifi empat

node.

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License version 2 as

* published by the Free Software Foundation; *

* This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

/*

*Modification had been done by AcccesNetworkLaboratory @AccessAcademyTraining April 2016,

*for support simulation training in "Wireless AP-STA (wireless Topology)" simulation. *date modified 30-3-2016

Gambar

Gambar 1.1 Tampilan Ubuntu 12.04
Gambar 1.2 Search Terminal
Gambar 1.5 Perintah ls -l  Berikut keterangan output pada gambar diatas.
Gambar 2.1 Alamat website untuk mendownload ns-allinone-3.25.tar.bz2  ( https://www.nsnam.org/ns-3-25/ )
+7

Referensi

Dokumen terkait

Kota Muntilan sebagai kota kecil memiliki letak yang strategis karena terletak diantara dua Pusat Kegiatan Nasional (PKN) pada koridor Semarang-Yogyakarta Perkembangan fisik

Biologi benih 2 (proses perkecambahan dan dormansi biji); Produksi Benih Generatip (proses polinasi, fertilisasi, perkembangan benih, konsep inkompatibilitas, benih

Berdasarkan latar belakang itu, maka penulis mengangkat skripsi berjudul PERLINDUNGAN HUKUM BAGI PASIEN TERHADAP TINDAKAN MEDIS YANG DILAKUKAN OLEH CALON TENAGA KESEHATAN

Daerah di Indonesia berikut ini yang menurut anda memiliki risiko terkena genangan paling tinggi adalah:d. (IPCC,

Pada akhirnya, tubuh penderita Hemokromatosis keturunan dapat menimbun 5 (lima) sampai 20 kali lebih banyak zat besi daripada tubuh orang yang normal.

Upaya Dinas Pariwisata Kabupaten Siak dalam meningkatkan pelaksanaan promosi melalui media cetak brosur yaitu dengan mengevaluasi kembali tempat penyebaran brosur

Membina tenaga pengelola pengadaan barang/jasa pemerintah agar menjadi tenaga profesional sehingga pelaksanaan pengadaan dapat berjalan sesuai dengan prinsip

Adapun permasalahan yang datang dari siswa itu sendiri, yaitu siswa kurang mampu menguasai materi pembelajaran dikarenakan pembelajaran cenderung berupa hafalan