• Tidak ada hasil yang ditemukan

2.3. Linux Traffic Control

2.3.2. Queuing Discipline

Antrian menentukan cara mengirimkan data. Penting untuk diingat bahwa kita hanya bisa menentukan data yang kita kirim (Hubert, 2004). Cara kerja dari internet membuat kita tidak memiliki kemampuan untuk mengendalikan apa yang orang lain kirimkan. Setiap output interface membutuhkan scheduler dan secara default adalah FIFO.

Secara sederhana qdisc adalah scheduler. Qdisc lain yang tersedia pada Linux akan mengatur kembali paket data yang memasuki antrian tergantung pada aturan scheduler tersebut. Qdisc adalah bagian penting dari Linux traffic control dan biasa disebut queueing discipline.

Terdapat banyak qeueuing discipline pada kernel linux, namun pada pembahasan kali ini hanya 2 yang kita gunakan. Random Early Detection, untuk menanggulangi congestion. Hierarchical Token Bucket, untuk membagi bandwidth sesuai dengan kebutuhan, misal berdasarkan ip ataupun port yang diinginkan.

1. Random Early Detection

Bagian ini menjelaskan algoritma RED. RED menghitung average queue size menggunakan low-pass filter dengan exponential weighted moving average. Average queue size dibandingkan dengan 2 thresholds, minimum threshold dan maximum threshold. Ketika average queue size kurang dari minimum threshold tak ada paket yang di mark. Ketika average queue size lebih besar dari maximum threshold, setiap paket yang datang di mark. Jika paket yang dimark dibuang atau jika semua node sumber bekerja sama dapat dipastikan bahwa average queue size tidak secara signifikan melampaui maximum threshold (Hubert, 2004).

Ketika average queue size berada di antara minimum dan maximum threshold, tiap paket yang datang di mark dengan probabilitas pa, di mana pa adalah fungsi dari average queue size avg. Tiap kali paket ditandai, probabilitas dari paket yang di mark dari suatu koneksi adalah berbanding lurus terhadap pembagian koneksi dari bandwidth pada gateway. Algoritma RED adalah sebagai berikut :

for each packet arrival

calculate the average queue size avg if minth <= avg < maxth

calculate probability pa with probability pa:

mark the arriving packet else if maxth <= avg

mark the arriving packet

Berbeda dengan tail-drop algorithm yang membuang paket ketika buffer penuh, RED algorithm membuang paket yang datang dengan metode probabilitas. Probabilitas terhadap pembuangan paket akan meningkat seiring dengan perkembangan dari pergitungan average queue size. Sebagai catatan RED merespon terhadap panjang queue per rata-rata waktu bukan pada saat itu. Untuk itu jika queue telah kosong pada waktu sebelumnya. RED tidak akan berusaha untuk membuang paket(kecuali melampaui queue tentunya). Di lain pihak, jika queue sebelumnya penuh, paket yang baru datang akan memiliki kemungkinan besar untuk dibuang.

RED algorithm terdiri atas 2 bagian utama, yaitu : menghitung average queue size dan memutuskan untuk membuang atau tidak paket yang datang.

A. Penghitungan Average Queue Size

RED menghitung average queue size menggunakan low-pass filter. Untuk itu ukuran queue yang berasal dari traffic yang melonjak atau dari kepadatan tetap tidak akan ditentukan oleh hal tersebut. Low-pass filter yang digunakan adalah exponential weighted moving average(EWMA) dengan formula berikut :

avg = (1−wq)avg+wq.q keterangan :

avg = ukuran rata-rata paket yang masuk. wq = bobot antrian.

q = ukuran antrian actual.

B. Keputusan pembuangan paket

Pada tahapan ini, RED menentukan untuk membuang atau tidak paket yang datang. Terdapat 2 parameter RED, minth(minimum threshold) dan maxth(maximum threshold). Ukuran paket rata-rata yang berada di bawah nilai minth tidak akan dibuang, sedangkan ketika berada di atas nilai maxth paket akan langsung dibuang. Ketika berada di antara kedua nilai tersebut, paket akan dibuang dengan probabilitas yang beragam dari 0 sampai nilai maksimum

probabilitasnya(maxp). Berikut formula penghitungan probabilitas untuk ukuran paket rata-rata yang berada di antara kedua nilai tersebut :

pb = maxp(avg - minth)/(maxth - minth) pa = pb/(1−count . pb)

keterangan :

pa = nilai kemungkinan suatu paket. maxp = nilai maksimum probabilitas. avg = nilai ukuran rata-rata paket. maxth = nilai maksimal rata-rata paket. minth = nilai minimum rata-rata paket. count = jumlah paket data yang masuk.

2. Hierarchical Token Bucket

HTB adalah salah satu queueing discipline berbasis class(classful). HTB berbasis atas class hierarkis yang terdiri atas tiga tipe, yaitu : root, inner dan leaf. Root adalah induk dari semua class dan semua lalu lintas data akan melewatinya. Inner class memiliki induk class, dapat berupa root ataupun inner class lain, dan memiliki class turunan. Leaf adalah kelas akhir atau class yang hanya memiliki class induk tanpa class turunan (Devera, 2002). Leaf adalah class yang menampung paket data yang ada di queue.

HTB memastikan bahwa jumlah layanan yang disediakan untuk tiap class kurang atau sama dengan jumlah yang telah ditetapkan. Ketika sebuah class memiliki permintaan yang kurang dari jumlah yang ditetapkan, sisa bandwidth akan didistribusikan ke class yang lain.

HTB scheduler

Terdapat pohon class pada HTB scheduler. Terdapat pula list global yang disebut self feed, yang terdapat pada sebelah kanan. Self feed terdiri atas self slot. Terdapat satu slot per priority per level. Tiap self slot memiliki beberapa class. Semua class pada slot memiliki level dan prioritas seperti slot.

Tiap inner(non-leaf) class memiliki inner feed slots. Terdapat satu inner feed slot per priority dan per inner class. Terdapat Self slot yang memiliki beberapa class dengan prioritas yang sama seperti slot dan class pasti pemilik dari slot children. Feed mengindikasikan prioritas dari class. Dapat dilihat pada bagan di bawah.

Ketika leaf class ingin mengirimkan paket, HTB akan mencek prioritasnya. Paket data akan mulai dikirim dengan urutan prioritas paling tinggi dan level paling rendah. Semua akan dikirim sampai ke prioritas paling rendah dan level paling tinggi.

Gambar 2.2 Prioritas Paket (Devera, 2002)

Jika dilihat pada bagan di atas, leaf2 akan dikirim terlebih dahulu disbanding leaf1. Karena leaf2 berada pada level yang lebih rendah, meskipun memiliki prioritas yang lebih rendah.

Contoh Kasus

Pada gambar 2.3, tidak ada paket yang datang. Maka tiap leaf tidak melakukan apa-apa.

Gambar 2.3 Diagram HTB(Devera, 2002)

Pada gambar 2, terdapat paket yang datang pada class C dan D dan berada di bawah min-rate. Sehingga leaf berwarna hijau. Tiap leaf diberikan prioritasnya masing-masing(biru = rendah, merah = tinggi). Karena D memiliki prioritas yang lebih tinggi, maka D akan mengirimkan paket data. Kemudian diikuti oleh kelas C yang memiliki prioritas lebih rendah.

Kali ini paket data pada D melebihi min-rate yang seharusnya, sehingga D menjadi warna kuning. Untuk itu D harus meminjam ke class di atasnya, yaitu B. D akan melepaskan diri dari self feed dan masuk ke inner feed B dan otomatis B akan masuk ke self feed yang sesuai. Keadaan ini akan mengakibatkan class C akan didequeue paketnya terlebih dahulu dibanding B, karena memiliki level terendah.

Gambar 2.5 Diagram HTB node D overload. (Devera, 2002) Kondisi sekarang C melampaui ceil dan tidak bisa pinjam ke A. D melampaui rate dan meminjam ke B. Di B melampaui rate dan meminjam ke A. di A tidak melampui rate dan berstatus hijau. D dapat mengirimkan paket data. Tapi C harus menunggu sampai C normal.

Gambar 2.6 Diagram HTB node C overload(Devera, 2002) Sekarang C berada pada status kuning yang artinya melampaui rate dari C. C harus meminjam dari A dan sekarang berada di level 2. Sama halnya dengan D dan E, harus meminjam ke B. Pada B melampaui rate, dan harus meminjam ke A. A tidak melampaui rate. Karena semua berada pada level 2 di posisi class A. Paket data yang akan dikirim adalah yang memiliki prioritas paling tinggi. Dan yang memiliki prioritas paling tinggi akan menggunakan algoritma round robin untuk dequeuenya.

Gambar 2.7 Diagram HTB paket A mengirim(Devera, 2002)

2.4.

TC tools

Pada paket iproute2, tc adalah satu-satunya yang dapat digunakan untuk traffic control. Karena tc secara langsung berinteraksi dengan kernel untuk pembuatan, penghapusan dan modifikasi terhadap struktur traffic control. TC tool menampilkan semua konfigurasi terhadap struktur kernel untuk mendukung traffic control. Utilitas ini menggunakan argument awal salah satu dari tiga komponen linux traffic control yaitu : qdisc, class dan filter (Hubert, 2004).

Syntax dasar penggunaan TC :

Penggunaan : tc [ OPTIONS ] OBJECT { COMMAND | help } where OBJECT := { qdisc | class | filter }

2.4.1. tc qdisc

Gambar 2.8 tc qdisc (Hubert, 2004) Keterangan :

1. Menambahkan queueing discipline. Dapat dirubah menjadi del untuk menghapus qdisc.

2. Device yang akan ditambahkan qdisc.

3. Berarti egress atau output pada interface. Kata root wajib digunakan, meskipun pada qdisc lain yang memiliki fungsi terbatas dapat menambahkan qdisc pada ingress di device yang sama.

4. Handle angka spesifik dari user dengan bentuk major:minor. Angka minor untuk yang memiliki qdisc akan selalu nol(0). Biasa disingkat dengan syntax “1:”, angka minor akan otomatis nol(0).

5. Queueing yang dipakai, pada contoh ini adalah HTB. Setelah ini adalah parameter khusus dari qdisc yang dipakai. Contoh ini tidak menyertakan itu.

2.4.2. tc class

Gambar 2.9 tc class (Hubert, 2004) Keterangan :

1. Menambahkan class. Bisa diubah menjadi del untuk menghapus class. 2. Device yang ingin ditambahkan class baru.

3. Spesifikasi dari handle induk(biasanya qdisc) yang ingin kita tambahkan class baru.

4. Ini adalah handle unik dengan pola major:minor untuk identifikasi class. Angka minor harus tidak boleh nol(0).

5. qdisc yang akan digunakan pada class ini.

6. nilai rate yang nantinya dapat di pinjam oleh class/qdisc turunan. 7. nilai ceil(tepi) yang dipakai sebagai batasan rate yang dapat dipinjam.

2.4.3. tc filter

Gambar 2.10 tc filter (Hubert, 2004) Keterangan :

1. Menambahkan filter, dapat juga diganti dengan del untuk membuang filter. 2. device yang ingin ditambahkan filter.

3. parent handle yang ingin kita tambahkan filter.

4. filter berdasarkan protocol tertentu. Contoh ini dalah ip. 5. parameter prio untuk filter didahulukan dibanding yang lain. 6. classifier yang digunakan TC untuk filter.

7. parameter untuk classifier. Pada kasus ini paket dengan port 22 akan dipilih. 8. sama dengan baris 7, mencocokan dengan protocol tertentu.

9. paket data yang terpilih nantinya akan dikirim ke class pada parameter ini. 10.policer dan opsional untuk tc.

11.policer akan melakukan satu aksi ketika melampaui kecepatan ini dan parameter aksi berada pada baris setelah ini.

13.minimum policed unit. Untul menghitung semua paket yang masuk gunakan mpu 0.

14.Aksi yang dilakukan oleh policer.

Dokumen terkait