Linux Traffic Control Pengembangan aplikasi DiffServ dengan disiplin antrian hierarchy token bucket dan random early detection sebagai bandwidth limiting

Dropper bekerja untuk membuang sebagian atau seluruh paket pada suatu aliran trafik untuk membentuk aliran trafik yang sesuai dengan profil trafik yang telah ditentukan. Proses tersebut disebut policing. Dropper dapat diibaratkan sebagai sebuah shaper yang memiliki ukuran buffer nol atau sangat kecil.

2.3. Linux Traffic Control

Implementasi DIffServ pada linux menggunakan traffic control yang berfungsi untuk pengalokasian dari suatu bandwidth untuk mendukung kebutuhan atau keperluan aplikasi atau suatu layanan jaringan. Traffic control adalah kumpulan aturan dan mekanisme yang mengizinkan sebuah jaringan untuk memenuhi kualitas layanan secara efisien. Beberapa mekanisme yang digunakan seperti shaping, scheduling, monitoring, policing , signaling, pricing, admission control, congestion control dan flow control dan lainnya. Selain itu traffic control dapat diartikan sebagai kumpulan fungsi dari sebuah jaringan untuk mencegah kondisi padat, yang membentuk mengatur aliran data pada titik tertentu dalam system Brown, 2006. Traffic control adalah sekumpulan sistem dan mekanisme antrian terhadap paket data yang diterima maupun dikirim pada sebuah router. Termasuk untuk memutuskan untuk menerima paket data pada kecepatan tertentu pada sebuah interface dan memutuskan untuk mengirim paket data dengan urutan maupun kecepatan tertentu pada output dari interface Hubert, 2004. Pada umumnya traffic control terdiri atas antrian tunggal yang mengumpulkan paket data yang masuk dan mendequeue seketika paket data yang diterima. Metode antrian ini biasa disebut dengan FIFO.

2.3.1. Metode Traffic Control pada Kernel Linux

Terdapat beberapa metode yang digunakan oleh traffic control pada interface Hubert , 2004, yaitu : 1. Shaping Shapers menahan paket untuk mencapai kecepatan yang diinginkan. shaping adalah mekanisme untuk menahan paket data sebelum transimisi pada output queue untuk mencapai outpu kecepatan yang diinginkan. Metode ini adalah yang biasa digunakan user untuk solusi pengendalian bandiwdth. Penundaan paket sebagai bagian dari solusi traffic control membuat tiap mekanisme shaping kedalam bentuk mekanisme untuk menjaga paket tidak hilang. Shaper mencoba untuk membatasi atau membentuk traffic untuk mencapai tanpa melampaui kecepatan yang dikonfigurasi biasanya diukur dalam paket per detik atau bitsbytes per detik. Shaper dapat melancarkan bursty traffic.Salah satu keuntungan dari shaping bandwidth adalah kemampuan untuk mengendalikan latency dari paket data. Mekanisme dasar untuk shaping ke kecepatan yang diinginkan biasanya mekanisme token dan bucket. 2. Scheduling Scheduler mengatur paket untuk output. scheduling adalah mekanisme untuk pengaturan paket di antara input dan output dari sebagian besar antrian. scheduler yang biasanya digunakan adalah FIFO scheduler. Jika melihat dari sudut pandang yang lebih umum, mekanisme traffic control apapun yang berada pada output queue dapat diartikan sebagai scheduler, karena paket diurutkan untuk output. Mekanisme scheduling umum lainnya mencoba untuk beradaptasi dengan kondisi jaringan. Fair queuing algorithm mencoba untuk mencegah suatu client atau aliran data yang mendominasi penggunaan jaringan. Algoritma Round Robin memberikan tiap aliran data ataupun client gilirannya untuk dequeue paket. 3. Classifying Classifier mengurutkan atau memisahkan traffic ke dalam beberapa queue. Classifying adalah mekanisme untuk menentukan paket mana yang dipisah untuk diperlakukan berbeda, dan dimungkinkan dengan output queue yang berbeda. Selama proses penerimaan, routing dan transmisi paket data, peralatan jaringan dapat mengklasifikasikan paket data tersebut dengan berbagai cara. Klasifikasi termasuk di dalamnya marking packet yang biasanya terjadi pada ruang lingkup dari jaringan yang berada pada kendali administrasi tunggal atau dapat terjadi pada tiap-tiap hop. Linux model mengizinkan paket data untuk melewati beberapa macam classifier dan untuk diteruskan ke policer. 4. Policing Policing menghitung dan membatasi traffic dalam queue tertentu. Policing sebagai bagian dari elemen traffic control adalah mekanisme sederhana yang menentukan paket apa saja yang dibatasi. Policing biasanya digunakan pada perbatasan jaringan untuk memastikan bahwa peer tidak mengkonsumsi lebih dari bandwidth yang sebelumnya dialokasikan. Policer akan menerima traffic pada kecepatan tertentu dan melakukan sebuah aksi pada traffic yang melewati kecepatan ini. Solusi yang lebih kasar adalah dengan membuang paket, meskipun paket data dapat diklasifikasikan ulang daripada dibuang. Policer akan mencek traffic terhadap kecepatan yang akan masuk ke dalam queue. Jika paket akan masuk ke dalam queue dengan nilai kecepatan dibawah dari semestinya, lakukan satu hal izinkan enqueuing. Jika suatu paket melebihi kecepatan yang seharusnya, lakukan hal lain. Meskipun policer menggunakan mekanisme token bucket, policer tidak mampu menunda paket data seperti halnya mekanisme shaping. 5. Dropping Dropping membuang keseluruhan paket data, aliran data atau klasifikasi. Dropping sebuah paket data adalah mekanisme untuk menentukan paket apa yang dibuang. 6. Marking Marking adalah mekanisme untuk menandai paket data. Digunakan untuk memilih paket yang nantinya akan diproses oleh qdisc.

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 paketkecuali 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 averageEWMA dengan formula berikut : avg = 1−wqavg+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, minthminimum threshold dan maxthmaximum 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 probabilitasnyamaxp. Berikut formula penghitungan probabilitas untuk ukuran paket rata-rata yang berada di antara kedua nilai tersebut : pb = maxpavg - minthmaxth - minth pa = pb1−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 classclassful. 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 innernon-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. Gambar 2.1 Prioritas pengiriman paket Devera, 2002 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 HTBDevera, 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-masingbiru = 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. Gambar 2.4 Diagram HTB paket datangDevera, 2002 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 overloadDevera, 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 mengirimDevera, 2002

2.4. TC tools