Adoc - Pub - Bab 3 Simulasi Dengan Ns 2
Adoc - Pub - Bab 3 Simulasi Dengan Ns 2
NS simulator adalah perangkat lunak untuk kebutuhan simulasi aplikasi, protokol, tipe jaringan ,
elemen-elemen jaringan, pemodelan jaringan dan pemodelan lalu-lintas jaringan. Pada intinya
perangkat lunak ini didesain dan dikembangakan untuk kebutuhan penelitian jaringan.
Perangkat lunak ini bersifat open source dan seringkali disebut sebagai NS-2, dan dapat di
download di alamat situs http://isi.edu/nsnam/ns/.
Tcl (Tool Command Language) adalah salah satu bahasa pemrograman yang digunakan
oleh jutaan orang karena memiliki sintaks yang sangat mudah dan mudah diintegrasikan
dengan bahasa yang lain. Bahasa pemrograman Tcl ini dibuat pertama kali oleh Jhon
Ousterhout.
Beberapa dasar dari sintaks bahasa pemgrograman Tcl dan Otcl adalah sebagai berikut:
set b 0
• Mengisikan nilai dari suatu variabel ke dalam variabel yang lain dilakukan
dengan menggunakan simbol $.
set x $b
• Operasi matematika dilakukan dengan menggunakan perintah ‘expr’.
x [expr $a + $b]
• Dalam Tcl sebuah variabel dapat berisi string, integer bilangan real tergantung
pada nilai yang kita masukkan. Misalkan kita menuliskan x [expr 1/50],
maka hasilnya akan 0. Tetapi apabila kita menuliskan x [expr 1.0/50.0]
maka hasilnya akan berupa bilangan real.
• Tanda # digunakan sebagai tanda baris untuk komentar, karena baris yang
memiliki tanda # di bagian awal maka baris tersebut tidak akan dieksekusi.
• Untuk membuat sebuah file, pertama-tama kita menentukan sebuah file yang
akan digunakan misalkan ‘namafile’, dan menandai sebuah variabel misalnya
‘file1’ untuk pointer yang akan digunakan oleh Tcl menghubungkan ke file
‘namafile’.
Misalkan:
• Prosedur dapat dibuat dalam tcl dengan bentuk seperti dibawah ini:
proc kuadrat { par1 par2 ...} {
global var1 var2
<perintah>
return $sesuatu
}
Prosedur menerima parameter dapat berupa object, file atau variabel. Dalam
contoh di atas adalah par1 dan par2. Perintah ‘global’ digunakan untuk
mendeklarasikan variabel sebagai variabel ekternal, artinya variabel tersebut
dapat dieksekusi dari luar prosedur, dalam contoh di atas adalah variabel var1
dan var2.
Untuk menyimpan data keluaran hasil dari simulasi (trace files) dan juga sebuah file lagi
untuk kebutuhan visualisasi (nam files) akan dibuat dua buah file dengan perintah
“open” seperti berikut:
Skrip di atas akan membuat file out.tr yang akan digunakan untuk menyimpan data
hasil simulasi dan file out.nam untuk menyimpan data hasil visualisasi. Deklarasi ‘w’
pada bagian akhir dari perintah open adalah perintah tulis.
Pada bagian akhir dari program, prosedur ‘finish’ harus dipanggil dengan indikasi waktu
(dalam detik) terminasi dari program, misalnya
Selanjutnya untuk memulai simulasi atau menjalankan program dapat dilakukan dengan
menggunakan perintah:
$ns run
Setelah node terbuat, maka langkah selanjutnya adalah membuat link yang akan
membuat hubungan antar node. Sebuah link untuk menghubungkan node $n0 dan $n2
dengan bi-directional link berkapasitas 10 Mb dan dengan waktu tunda akibat propagasi
sebesar 10ms dapat dibuat dengan cara seperti di bawah ini:
Pada NS, antrian keluaran dari sebuah node didefiniskan sebagai bagian dari sebuah link,
karena itu kita perlu mendefinisikan karakteristik dari queue ini apabila terjadi lebihan
data yang datang pada sebuah node. Opsi “DropTail” berarti bahwa data terakhir yang
datang akan dibuang apabila kapasitas dari memori telah penuh. Alternatif lain untuk
opsi ini antara lain:
• RED (random early discard),
• FQ (fair queueing),
• DRR (deficit round robin),
• SFQ (stochastic fair queueing), dan
• CBQ (memasukkan prioritas dan round-robin).
Karena link dianggap memiliki memori (buffer) maka kita perlu mendefiniskan kapasitas
antrian dari link sebagai berikut:
Sebagai contoh mari kita membangun simulasi jaringan sederhana dengan diagram
seperti dibawah ini:
$n0
$n4
1Mbps 250kbps
100ms 600kbps
8ms
50ms
$n2 $n3
250kbps 600kbps
1Mbps
100ms 40ms
10ms $n5
$n1
Maka secara keseluruhan skrip NS untuk jaringan di atas adalah sebagai berikut:
#Skrip 1.
Untuk mendefinisikan jenis protokol yang akan digunakan NS-2 menggunakan perintah
berikut ini:
Selanjutnya untuk menggabungkan protokol ini pada sebuah node, dalam hal ini
misalnya node n0 digunakan perintah:
Tujuan akhir dari mengalirnya aplikasi TCP didefinisikan dengan pointer yang disebut
dengan sink sebagai berikut:
Salah satu tugas node akhir ini adalah membangkitkan segment acknowledgment
sebagaimana telah kita pelajari pada mekanisme pengiriman data pada TCP.
Untuk menggabungkan tujuan akhir dari aliran data ke salah satu node, misalnya kita
ambil node n4, digunakan perintah:
Secara keseluruhan penentuan protokkol dan aplikasi pada skrip adalah sebagai berikut:
Misalnya untuk menentukan kapan aplikasi FTP mulai mengirimkan data dan kapan
selesai mengirimkan data digunakan perintah berikut:
Dengan menggunakan perintah tersebut di atas, aplikasi FTP akan mulai berjalan pada
detik ke 0.2 dan berhenti pada detik ke 10.0.
#file contoh1.tcl
Setelah menyimpan file contoh1.tcl pada home direktori, selanjutnya eksekusi untuk
menjalankan skrip contoh1.tcl pada NS simulator dilakukan dengan mengetikkan
ns contoh1.tcl
3.7. UDP
Protokol TCP menghasilkan lalu lintas data yang bersifat bursty. Hal ini terutama
disebabkan karena adanya congestion control pada TCP. Apabila TCP mengenalinya
masih ada banyak bandwidth tersisa di dalam sebuah jalur, maka TCP akan
meningkatkan lebar dari congestion window sampai terdeteksi adanya kongesi. Apabila
TCP mendeteksi adanya kongesi di dalam sebuah jalur maka TCP akan menurunkan lebar
dari congestion window menjadi setengahnya atau sampai minimum menjadi 1 MSS
saja. Lihat kembali pada sub-Bab 2.1.7. Sebagaimana kita ketahui, ukuran dari
congestion window ini berasosiasi dengan kecepatan atau throughput dari jalur. Karena
itu apabila congestion window menjadi lebar kecepatan pengiriman data akan
meningkat, sebaliknya apabila ukuran congestion window mengecil maka kecepatan
data akan turun. Dengan demikian lalu-lintas data pada TCP terihat bursty.
Sebaliknya pada UDP lalu lintas data tidak bursty melainkan cenderung konstan karena
protokol UDP tidak memiliki congestion control. Karena itu pada dasarnya protokol UDP
tidak memiliki batasan kecepatan pengiriman data, kecepatan pengiriman data akan
linier dengan ketersediaan bandwidth yang ada pada jalur komunikasi.
Pada bagian ini kita akan membuat simulasi protokol UDP pada NS-2 dengan
menggunakan aplikasi Contant Bit Rate (CBR). Aplikasi CBR ini mewakili aplikasi-aplikasi
praktis semacam Voice over IP (VoIP) pada jaringan Internet.
Dengan menggunakan diagram jaringan sebagaimana halnya pada Gambar 3.1, protokol
UDP dengan aplikasi CBR akan mengalir dari node 1 ke node 5. Definisi dari node 1
sebagai sumber dilakukan dengan cara:
Sedangkan definisi node 5 sebagai tujuan akhir dari data adalah sebagai berikut:
Berikutnya kita membuat koneksi antara sumber dan tujuan, serta memberikan
identikasi untuk aliran data UDP sebagai berikut:
Sekarang mari kita definisikan aplikasi CBR dan melekatkan aplikasi ini pada protokol
UDP. Aplikasi CBR didefinisikan dengan cara:
Baris kedua dari perintah di atas berfungsi untuk melekatkan aplikasi CBR pada protokol
UDP. Mari kita asumsikan untuk aplikasi ini memiliki ukuran paket sebesar 1000 byte
dan dengan kecepatan pengiriman data sebesar 0.01 Mbps.
$cbr set packetSize_ 1000
$cbr set rate_ 0.01Mb
Karakteristik lain dari CBR adalah adanya sebuah flag random_ untuk mengindikasikan
adanya random noise pada proses transmisi atau tidak. Kita asumsikan tidak ada random
noise, maka:
Selanjutnya mari kita insert kan skrip aplikasi CBR pada protokol UDP ini pada skrip
contoh1.tcl dilengkapi dengan penentuan waktu aplikasi CBR mulai mengirimkan data.
Skrip ini juga dilengkapi dengan kemampuan untuk menulis file WinFile yang berisi
informasi tentang fluktuasi ukuran dari congestion window pada pada protokol TCP.
#file contoh1.tcl
Pada saat menggunakan tracing (lihat sub-Bab 3.2), NS-2 sebetulnya menyisipkan 4
object ke dalam link, yaitu: EnqT, DeqT, RecvT dan DrpT seperti terlihat dalam Gambar
3.4. EnqT mencatat informasi berkaitan dengan sebuah paket yang datang dan
mengalami proses antrian pada input dari link (Ingat: pada NS-2 sebuah link dianggap
memiliki memory). Apabila paket mengalami overflow dan sejumlah paket yang datang
dibuang, maka informasi terkait dengan paket yang dibuang tersebut disimpan di dalam
DrpT. Sedangkan DeqT mencatat informasi dari paket yang telah keluar dari poses
antrian dan Recvt berisi informasi tentang paket yang sampai pada keluaran dari sebuah
link.
Gambar 3.4. Tracing object pada sebuah link
Berikut ini akan ditunjukkan skrip Perl untuk perhitungan throughput dari koneksi TCP
yang telah dijalankan pada skrip sebelumnya contoh1.tcl. Skrip Perl ini dituliskan dalam
sebuah file bernama throughput.pl. Sebagai masukan bagi prosedur ini adalah nama dari
trace file (yaitu out.tr), nama node yang menunjukkan letak dari protokol TCP yang akan
kita cek, dan granularitas (periode waktu tertentu).
$infile=$ARGV[0];
$tonode=$ARGV[1];
$granularity=$ARGV[2];
#Menghitung jumlah paket dalam byte yang ditransmisikan
#melalui sebuah nodedalam interval waktu sebagaimana
#dispesifikasikan dalam granularity.
$sum=0;
$clock=0;
open (DATA,"<$infile")
|| die "Can't open $infile $!";
while (<DATA>) {
@x = split(' ');
close DATA;
exit(0);
Perintah di atas menunjukkan bahwa analisis throughput akan dilakukan pada node 4
dengan nilai granularity sebesar 1s.
gnuplot
set size 0.8,0.8
set key right bottom
set xlabel “waktu (s)”
set ylabel “throughput”
plot ‘thp’ with lines 1
Ukuran congestion window pada TCP juga dapat digambarkan dengan menggunakan
gnuplot dengan memanggil file WinFile seperti pada contoh skrip di bawah ini:
gnuplot
set size 0.8,0.8
set key right bottom
set xlabel “waktu (s)”
set ylabel “CongWin”
plot ‘WinFile’ with lines 1
Tugas:
Lakukan simulasi ulang untuk menghitung throughput TCP dan fluktuasi ukuran
CongWin pada node4 dengan konfigurasi jaringan seperti dalam Gambar 3.1, tetapi
gunakan protokol-protokol Tahoe, Reno, NewReno dan Vegas. Lakukan perbandingan
dan analisis terhadap karakteristik dari keempat protokol di atas!
Cara melakukan setting untuk protokol TCP yang berbeda adalah sebagai berikut:
Sebagai contoh mari kita tambahkan link dengan error model pada jalur yang terletak di
antara node2 dan node3 dalam Gambar 3.6. Proses penambahan error model dilakukan
dengan cara sebagai berikut:
Contoh skrip untuk mensimulasikan diagram dalam Gambar 3.6 dengan menggunakan
link yang mengandung noise dapat dilihat dalam file contoh2.tcl di bawah ini:
#file contoh2.tcl
Tugas
Buatlah skrip tcl untuk diagram jaringan seperti dalam Gambar 3.6 dengan data aplikasi
FTP yang berjalan di atas protokol TCP pada node0 dan data aplikasi CBR yang berjalan
di atas protokol UDP pada node1. Tambahkan skrip untuk mensimulasikan adanya noise
pada link antara node2 dan node3.
a. Dengan cara melakukan plotting terhadap throughput dari jaringan di atas
bandingkan throughput antara link dengan laju kehilangan data 20% dan 0%.
b. Dengan cara melakukan plotting terhadap ukuran CongWin dari jaringan di atas
bandingkan fluktuasi ukuran CongWin antara link dengan laju kehilangan data 20%
dan 0%.
Note: Semua simulasi dilakukan dengan menggunakan TCP Tahoe dan jalankan simulasi
selama 120 detik.
0 2 3 0 0 0 0 0 0 0 0
0.10000000000000001 2 3 0.0 0.0 0 0 0 0 0 0
0.20000000000000001 2 3 0.0 0.0 1 0 1 1000 0 1000
0.30000000000000004 2 3 0.0 0.0 1 0 1 1000 0 1000
0.40000000000000002 2 3 0.0 0.0 1 0 1 1000 0 1000
0.5 2 3 0.0 0.0 1 0 1 1000 0 1000
0.59999999999999998 2 3 0.0 0.0 1 0 1 1000 0 1000
0.69999999999999996 2 3 0.0 0.0 1 0 1 1000 0 1000
0.79999999999999993 2 3 0.0 0.0 1 0 1 1000 0 1000
0.89999999999999991 2 3 0.0 0.0 1 0 1 1000 0 1000
0.99999999999999989 2 3 0.0 0.0 2 0 2 2000 0 2000
1.0999999999999999 2 3 0.0 0.0 3 1 2 2040 40 2000
File output berisi informasi yang terdiri atas 11 kolom seperti berikut:
1) Waktu pengambilan sampel,
2) Node input,
3) Node output,
4) Ukuran queue dalam satuan byte (berkorespondensi dengan atribut size_
pada object monitor-queue),
5) Ukuran queue dalam satuan paket(berkorespondensi dengan atribut pkt_ pada
object monitor-queue),
6) Jumlah paket yang telah datang (berkorespondensi dengan atribut
parrivals_ pada object monitor-queue),
7) Jumlah paket yang telah keluar dari queue (berkorespondensi dengan atribut
pdepartures_ pada object monitor-queue),
8) Jumlah paket yang di drop (dibuang) oleh queue (berkorespondensi dengan
atribut pdrops_ pada object monitor-queue),
9) Jumlah data dalam byte yang telah datang (berkorespondensi dengan atribut
barrivals_ pada object monitor-queue),
10) Jumlah data dalam byte yang telah keluar dari queue (berkorespondensi dengan
atribut bdepartures_ pada object monitor-queue),
11) Jumlah data dalam byte yang di drop (dibuang) oleh queue (berkorespondensi
dengan atribut bdrops_ pada object monitor-queue).
Tugas
Untuk skrip tcl yang telah dibuat dalam sus-bab 3.9 di atas tambahkan skrip untuk
memonitor queue. Selanjutnya lakukan ploting terhadap ukuran queue masing-masing
dalam satuan byte dan paket. Juga lakukan analisis terhadap kedua grafik tersebut.