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

(1)

PENGEMBANGAN APLIKASI DiffServ dengan DISIPLIN ANTRIAN

HIERARCHY TOKEN BUCKET dan RANDOM EARLY DETECTION

SEBAGAI BANDWIDTH LIMITING

Skripsi

Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer Fakultas Sains dan Teknologi

Universitas Islam Negeri Syarif Hidayatullah Jakarta

Oleh : Deni Zakya NIM. : 105091002901

PROGRAM STUDI TEKNIK INFORMATIKA FAKUTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIEF HIDAYATULLAH JAKARTA


(2)

PENGEMBANGAN APLIKASI DiffServ dengan DISIPLIN ANTRIAN

HIERARCHY TOKEN BUCKET dan RANDOM EARLY DETECTION

SEBAGAI BANDWIDTH LIMITING

Oleh : Deni Zakya NIM. : 105091002901

PROGRAM STUDI TEKNIK INFORMATIKA FAKUTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIEF HIDAYATULLAH JAKARTA


(3)

vii

KATA PENGANTAR

Segala Puji dan Syukur penulis panjatkan kepada Allah SWT atas segala karunia-Nya karena penulis dapat menyelesaikan penulisan Skripsi ini dengan judul Pengembangan Aplikasi DiffServ dengan Disiplin Antrian Hierarchy Token Bucket dan Random Early Detection Sebagai Bandwidth Limiting

dengan baik. Shalawat serta salam penulis haturkan kepada Nabi Muhammad SAW, para sahabat dan keluarga beliau.

Setelah seluruh penulisan Skripsi ini terlaksana, penulis ingin mengucapkan banyak terimakasih kepada seluruh pihak yang telah membantu baik itu berupa motivasi, bimbingan, moril maupun materil, yang ditujukan kepada:

1. Bapak DR. Syopiansyah Jaya Putra, M.SIS, selaku Dekan Fakultas Sains dan Teknologi, UIN Syarif Hidayatullah Jakarta.

2. Bapak Yusuf Durrachman, M. Sc, MIT, selaku Ketua Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, UIN Syarif Hidayatullah Jakarta

3. Bapak Viktor Amrizal, M.Kom, selaku dosen pembimbing I yang selalu memberikan bimbingan, semangat dan meluangkan waktunya.

4. Ibu Arini, M.T, selaku dosen pembimbing II yang telah memberikan pengarahan dan membantu menyelesaikan penulisan skripsi ini.


(4)

viii

Jakarta, 19 April 2010

Deni Zakya 105091002901

Penulis sadar bahwa penyusunan skripsi ini masih jauh dari sempurna, oleh karena itu penyusun mengharapkan kritik dan saran yang bersifat membangun agar penyusunan skripsi ini menjadi lebih baik lagi.

Akhir kata, semoga skripsi ini bermanfaat khususnya kepada penulis sendiri dan bagi yang membacanya.


(5)

vi

ABSTRAK

Deni Zakya, Pengembangan Aplikasi DiffServ dengan Disiplin Antrian Hierarchy Token Bucket dan Random Early Detection Sebagai Bandwidth Limiting. Di bawah

bimbingan Victor Amrizal, M.Kom dan Arini, M.T.

Pertumbuhan internet memunculkan warnet yang menggunakan koneksi internet sebagai komponen dasar bisnis tersebut. Pengelola warnet akan menggunakan minimal satu koneksi internet dan membaginya dengan semua node yang terkoneksi dengan internet. Banyaknya node yang terkoneksi ke router akan menyebabkan kondisi jaringan mengalami kongesti/kepadatan. Sehingga terlihat ada satu atau lebih node yang mendominasi penggunaan bandwidth jaringan. Untuk itu diperlukan konsep Quality of Service (QoS), salah satu cara mengaplikasikan QoS pada jaringan IP adalah dengan Differentiated Service(DiffServ). Penulis menggunakan penjadwalan paket Hierarchy Token Bucket dan Random Early Detection pada penelitian ini. Klasifikasi akan didasarkan pada node yang terhubung, protocol tcp atau udp dan jaringan IIX(lokal) dan internasional. Klasifikasi IIX dan Internasional diambil karena adanya perbedaan kecepatan yang signifikan dari kedua jaringan tersebut. Analisis kualitas layanan pada jaringan dilakukan dengan mengukur parameter throughput, delay, jitter dan packet loss. Pada akhirnya Implementasi DiffServ menggunakan TrafficControl dengan disiplin antrian HTB dan RED dapat berperan untuk mengatur penggunaan bandwidth tiap node pada jaringan. Aplikasi dapat membedakan asal paket dari jaringan IIX(lokal) atau internasional. Dan memberikan batasan kecepatan yang sesuai untuk tiap koneksi. Penggunaan antrian HTB dan RED memberikan kualitas layanan yang baik tanpa mengorbankan parameter pengujian throughput, delay, jitter dan packet loss yang besar. Penulis menggunakan Extreme Programming sebagai Metodologi pengembangan perangkat lunak. Terlihat dari hasil pengujian yang memberikan nilai pengujian dari parameter tersebut relatif kecil dibandingkan dengan penggunaan best effort atau hanya dengan disiplin antrian FIFO.

Kata Kunci : Bandwidth Limiting, TrafficControl, Hierarchy Token Bucket, Random Early Detection.


(6)

BAB I

PENDAHULUAN

1.1

Latar Belakang

Pertumbuhan internet memunculkan warnet yang menggunakan koneksi internet sebagai komponen dasar bisnis tersebut. Pengelola warnet akan menggunakan minimal satu koneksi internet dan membaginya dengan semua node yang terkoneksi dengan internet. Penggunaan router pada jaringan komputer warnet dapat menghubungkan koneksi lokal warnet dengan internet.

Banyaknya node yang terkoneksi ke router akan menyebabkan kondisi jaringan mengalami kongesti/kepadatan. Hal tersebut akan menyebabkan beberapa paket yang diterima atau dikirim oleh router hilang sebagian. Dampaknya akan ada beberapa node yang kehilangan paket data yang seharusnya diterima. Sehingga terlihat seolah-olah ada satu atau lebih node yang mendominasi penggunaan bandwidth jaringan(Welzl, 2005).

Hal tersebut terjadi karena pada router secara default menerapkan disiplin antrian First In First Out (FIFO). Selain itu pula penggunaan jaringan IP yang menerapkan best effort service(Li, 1999), jaringan yang memberikan throughput dan waktu pengiriman bervariasi tergantung kepada beban trafik saat pengiriman terjadi, memberikan dampak turunnya performa jaringan dan menurunnya Quality of Service (QoS) pada jaringan tersebut. Layanan internet seperti streaming audio ataupun video akan mendapatkan penurunan performa, karena kurangnya throughput pada layanan ini.


(7)

Untuk itu diperlukan konsep Quality of Service (QoS) yang dapat memberikan performa yang baik untuk semua layanan. Jaringan yang mengaplikasikan QoS dengan baik, harus mampu membedakan trafik atau tipe layanan dan memperlakukan trafik tersebut secara berbeda untuk memberikan jaminan sumber daya tiap trafik.

Salah satu cara mengaplikasikan QoS pada jaringan IP adalah dengan Differentiated Service(DiffServ)(Blake, 1998). DiffServ bekerja dengan cara mengklasifikasikan trafik dan memberikan perlakuan yang sesuai untuk tiap trafik. QoS memiliki beberapa modul untuk menjalankan tugasnya, antara lain pengklasifikasi trafik, penanda trafik, traffic policing, manajemen antrian aktif, penjadwalan paket dan traffic shaping. Penulis menggunakan penjadwalan paket HTB dan RED pada penelitian ini.

Untuk menerapkan DiffServ, penulis akan menggunakan kernel linux, TrafficControl dan Iptables. Klasifikasi akan didasarkan pada node yang terhubung, protocol tcp atau udp dan jaringan IIX(lokal) dan internasional. Klasifikasi IIX dan Internasional diambil karena adanya perbedaan kecepatan yang signifikan dari kedua jaringan tersebut.

Judul yang penulis angkat adalah “Pengembangan Aplikasi DiffServ dengan disiplin antrian Hierarchy Token Bucket dan Random Early Detection sebagai bandwidth limiting”.

Linux digunakan sebagai sistem operasi yang digunakan pada penelitian ini. Penulis akan membangun aplikasi dengan GUI yang memudahkan pengguna untuk mengatur penggunaan bandwidth. Penulis menjembatani penggunaan modul kernel, TrafficControl dan Iptables yang relatif sulit, dengan aplikasi ini.

Penelitian ini akan menguji tingkat kualitas jaringan yang telah mengimplementasikan DiffServ. Beberapa parameter yang digunakan untuk mengukur kualitas jaringan, antara lain throughput, delay, jitter dan packet loss.


(8)

1.2

Rumusan Masalah

Masalah yang dapat dirumuskan dalam tugas akhir ini sebagai berikut :

1. Efisiensi penggunaan bandwidth tiap node pada jaringan dengan memberikan alokasi bandwidth sesuai kebutuhan.

2. Pemisahan alokasi bandwidth tiap node. Klasifikasi didasarkan pada asal dari paket yang datang, IIX untuk jaringan lokal(indonesia) dan International untuk jaringan Internet. Klasifikasi lainnya berdasarkan protocol, TCP atau UDP.

3. Membangun aplikasi berbasis DiffServ dengan router linux. 4. Menguji Quality of Service tiap-tiap node pada jaringan.

1.3

Batasan Masalah

Agar pembahasan mengenai topik ini tidak terlalu meluas maka diperlukan batasan masalah. Adapun batasan masalah untuk skripsi ini antara lain:

1. Aplikasi yang penulis buat akan menjembatani pengguna untuk melakukan konfigurasi tidak langsung DiffServ pada kernel linux dengan Traffic Control, Iptables dan Python.

2. Merumuskan konfigurasi yang digunakan aplikasi untuk pemisahan bandwidth IIX & Internasional serta paket tcp dan udp untuk tiap node yang terhubung ke jaringan internet.


(9)

3. Pengujian dan analisis QoS dengan parameter nilai bandwidth, jitter dan packet loss.

1.4

Tujuan dan Manfaat Penelitian

Penelitian yang penulis lakukan bertujuan untuk: 1. Tujuan Umum

1. Mengembangkan aplikasi bandwidth management yang bersifat open source dan user friendly.

2. Tujuan Khusus

1. Memadukan iptables dan TC(traffic control) sebagai fondasi awal aplikasi. 2. Memberikan pengelolaan bandwidth yang sesuai pada jaringan.

3. Memberikan antar muka grafis yang sederhana dan mudah digunakan. Manfaat yang di dapatkan dalam penelitian ini adalah :

1. Memberikan aplikasi yang mampu mengatur penggunaan bandwidth sesuai kebutuhan.

2. Memberikan aplikasi yang murah dan mudah diterapkan.

3. Menghasilkan aplikasi open source yang bebas digunakan/dikembangkan siapa saja.

1.5

Metodologi Penelitian

Metode Penelitian yang penulis gunakan adalah sebagai berikut : 1. Studi Pustaka.


(10)

Studi pustaka yang penulis lakukan adalah dengan mempelajari literatur tentang traffic control pada linux dan queueing discipline.

2. Metode Pengembangan Perangkat Lunak(Software Development Method).

Metode pengembangan perangkat lunak yang penulis gunakan adalah Agile Software Development dengan Extreme Programming. Tahapannya adalah sebagai berikut :

1. Planning, perencanaan dari aplikasi yang akan dibuat dengan menjelaskan fitur dan kegunaan dari aplikasi.

2. Design, proses desain dari hasil perencanaan sebelumnya.

3. Coding, proses pembuatan unit test untuk kemudian digunakan sebagai penguji pada code yang akan diimplementasikan.

4. Testing, proses pengujian terhadap code yang diimplementasikan dengan unit test yang sebelumnya telah dibuat.

5. Release, tahap akhir aplikasi siap diimplementasikan/digunakan oleh pengguna, setelah sebelumnya dipastikan sudah melewati tahapan testing.

1.6

Sistematika Penelitian

Penelitian ini terdiri dari lima bab, dengan penjelasan tiap-tiap bab sebagai berikut :

BAB I : PENDAHULUAN

Pada bab ini berisi tentang Latar Belakang, Rumusan Masalah, Batasan Masalah, Tujuan dan Manfaat Penelitian, Metodologi Penelitian serta Sistematika Penulisan Penelitian.


(11)

BAB II: LANDASAN TEORI

Pada bab ini menjelaskan tentang teori perangkat keras dan perangkat lunak, definisi sistem, analisa sistem, definisi perancangan sistem dan jenis program yang digunakan.

BAB III: Metodologi Penelitian

Pada bab ini akan menguraikan dan memberikan penjelasan mengenai perancangan perangkat keras, perancangan sistem sehingga dapat diketahui rencana yang akan dikerjakan.

BAB IV: Pembahasan dan Implementasi

Pada bab ini akan menjelaskan mengenai pembuatan sistem dan pengujian sistem.

BAB V: Penutup

Bab ini berisi kesimpulan dari pembahasan masalah dan saran-saran berkenaan dengan Penelitian ini.


(12)

BAB II

LANDASAN TEORI

2.1.

Pengantar Quality of Service

Pertama kali jaringan IP diterapkan hanya membawa satu tipe informasi yaitu data non-real time, sehingga jaringan bisa didesain untuk berjalan secara best-effort yang

memperlakukan semua paket sama. Tujuan utama dari jaringan IP adalah memastikan

perangkat terminal mempunyai protokol dan kecerdasan yang sesuai untuk menjamin transmisi data yang bisa diandalkan sehingga jaringan bisa berjalan sesederhana mungkin.

Pada pertengahan tahun 90-an, tipe jaringan data dan suara mulai disatukan. Ide utama adalah konvergensi lalu lintas suara dan data, dan menciptakan sebuah jaringan yang mampu membawa suara dan data. Dengan konvergensi tersebut, terdapat tantangan baru. Dalam jaringan baru tersebut, operasi best effort yang dilakukan jaringan IP tidak

lagi mampu memenuhi kebutuhan berbagai macam lalu lintas data yang dibawa oleh jaringan. Untuk menjawab masalah tersebut, muncul konsep Quality of Service(QoS)

(Welzl, 2005).

QoS dapat didefinisikan dari dua sudut pandang: QoS dari sudut pandang

pengguna dan QoS dari sudut pandang jaringan. Dari sudut pandang pengguna, QoS


(13)

jaringan, seperti suara, video, maupun data. Dari sudut pandang jaringan, istilah QoS

mengacu kepada kemampuan jaringan menyediakan QoS yang diharapkan oleh

pengguna. Kemampuan yang dibutuhkan oleh jaringan dalam menyediakan QoS di

jaringan paket dapat dibagi menjadi dua. Pertama, untuk menyediakan QoS, sebuah

jaringan paket harus mampu membedakan kelas-kelas lalu lintas data sehingga pengguna dapat memperlakukan satu atau lebih kelas lalu lintas data berbeda dengan kelas lalu lintas data lainnya. Kedua, setelah jaringan mampu membedakan kelas-kelas lalu lintas data, jaringan harus mampu memperlakukan kelas-kelas tersebut secara terpisah dengan menyediakan jaminan sumber daya dan perbedaan layanan dalam jaringan.

Persepsi pengguna terhadap kualitas layanan dilakukan dengan melakukan tes secara subjektif, sebagai fungsi dari keterbatasan pada jaringan seperti, waktu tunda,

jitter, dan paket hilang. Jumlah keterbatasan pada jaringan akan bergantung dari

mekanisme QoS yang diimplementasikan pada jaringan.

Pada sebuah jaringan yang membawa berbagai tipe lalu lintas data, keterbatasan yang menjadi elemen penting pada suatu tipe lalu lintas data bisa saja menjadi tidak penting untuk tipe lalu lintas data lainnya, dan sebaliknya. Mekanisme QoS yang

diimplementasikan pada jaringan harus mampu mengoptimalkan hal tersebut.

2.1.1. Fungsi Dasar QoS

Tanpa mekanisme QoS, sebuah jaringan IP menyediakan layanan yang

sifatnya best effort. Pada layanan best effort, semua paket tidak dapat dibedakan dan

diberikan perlakuan forwarding yang sama. Sebuah mekanisme QoS pada jaringan IP


(14)

berbeda. Dua mekanisme QoS utama yang tersedia untuk jaringan IP adalah

Integrated Service (IntServ) dan Differentiated Service (DiffServ) (Welzl, 2005).

Istilah traffic flow menunjukkan aliran trafik dan tiap alirannya mewakili sumber

trafik yang berbeda-beda. Pada layanan best effort, semua paket digabungkan

kedalam sebuah aliran massal tanpa mempedulikan asal trafik. Pada IntServ, tiap-tiap

aliran dibedakan dari awal sampai akhir. Pada DiffServ, tiap-tiap aliran trafik tidak dibedakan per aliran, melainkan dikumpulkan terlebih dahulu menjadi kelas-kelas kecil. Kelas-kelas trafik tersebut diberikan perlakuan yang berbeda-beda tiap hopnya (Li,1999).

Pembahasan akan ditekankan pada metoda QoS DiffServ, dan akan

dijelaskan lebih lanjut pada sub bab berikutnya. Untuk menyediakan QoS dalam jaringan IP jaringan harus mampu menjalankan tugas dasar, yaitu membedakan trafik atau tipe layanan menjadi beberapa kelas dan memperlakukan kelas-kelas trafik secara berbeda dengan menyediakan jaminan resource dan pembedaan layanan pada jaringan.

2.1.2. Traffic Policing

Traffic Policing digunakan untuk mengecek apakah trafik yang masuk

pada port masukan sesuai dengan laju trafik yang telah disetujui antara pengguna dan penyedia jasa jaringan IP. Traffic policing terdiri dari pengukuran trafik berdasarkan laju trafik yang telah disetujui dan menandai atau menandai ulang paket berdasarkan keluaran hasil pengukuran tersebut. Sebuah paket kemungkinan dapat dijatuhkan


(15)

berdasarkan proses traffic policing ini. Traffic policing terdiri atas dua submodul,

yaitu traffic meter dan packet marker/re-marker.

Biasanya, traffic policing menyesuaikan laju trafik yang datang dengan acuan laju tertentu, dengan acuan yang digunakan dapat berupa satu acuan laju yaitu Committed Information Rate (CIR) atau dua acuan laju, CIR dan Peak Information Rate (PIR). Untuk mendapatkan laju yang sesuai dengan CIR dan PIR, traffic policing menggunakan tiga parameter yaitu Peak Burst Size (PBS), Committed Burst Size (CBS) dan Excess Burst Size (EBS) (Blake, 1998).

a. Peak Information Rate.

Peak Information Rate (PIR) merupakan laju maksimum pengiriman bit seorang pengguna yang disetujui bersama antara pengguna dan penyedia layanan oleh sebuah Service Level Agreement (SLA). Bagi seorang pengguna, laju pengiriman maksimum secara fisik dibatasi oleh laju jalur dari pelanggan tersebut.

PIR dari seorang pelanggan tidak akan lebih besar dari laju jalur pelanggan tersebut. Bila PIR dinyatakan sebagai λ max , maka secara teori invers dari PIR adalah laju kedatangan paket minimum yang dinyatakan sebagai 1/ λ max .

PIR dinyatakan dalam ukuran bytes per sekon. PIR menyatakan laju pengiriman paket IP dan karenanya, dalam menghitung jumlah byte pada sebuah paket IP, seluruh paket termasuk header IP diperhitungkan; header yang berada pada layer yang lebih bawah, misalnya layer 2 dan overhead dari jalur fisik tertentu, tidak diperhitungkan.


(16)

b. Committed Information Rate.

Commited Information Rate (CIR) merupakan laju trafik rata-rata jangka panjang yang disediakan oleh penyedia jasa layanan yang dijamin kepada pelanggan sesuai persetujuan. CIR dinyatakan dalam satuan byte per sekon. Dalam menghitung jumlah byte pada sebuah paket IP untuk CIR, seluruh paket termasuk header IP diperhitungkan. Akan tetapi, seperti PIR, hanya layer IP yang diperhitungkan untuk menghitung CIR dan header dari layer yang lebih bawah, misalnya layer dua dan overhead lainnya tidak ikut diperhitungkan.

Biasanya, pengiriman paket merupakan sederetan luapan tiba-tiba paket (burst) yang diselingi oleh jeda waktu tanpa pengiriman paket sama sekali. Saat paket datang dalam luapan mendadak tersebut, paket-paket dikirimkan pada laju maksimum, yaitu PIR. Karena hal ini tidak berlangsung secara kontinyu, maka laku rata-rata pada jangka panjang akan lebih kecil dari PIR. Karenanya, CIR biasanya akan lebih kecil dari PIR.

c. Burst Sizes

Ada tiga parameter pendukung ukuran burst yang digunakan dalam traffic policing : Committed Burst Size, Excess Burst Size (EBS), dan Peak Burst Size (PBS). CBS merupakan ukuran burst maksimum yang bisa dijamin oleh jaringan dan merupakan jumlah maksimum paket dalam ukuran byte yang dapat dikirimkan pada PIR dengan memperhatikan CIR yang telah disetujui. EBS merupakan batasan lain dari ukuran burst yang melebihi CBS, dan CBS < EBS. Paket yang melebihi EBS


(17)

akan ditandai merah. CBS dan EBS digunakan secara berkesinambungan dengan CIR. PBS merupakan parameter ukuran burst yang mirip dengan CBS, yang didefinisikan secara berkesinambungan dengan PIR.

2.1.3. Traffic Metering

Ada dua macam traffic metering dan mekanisme pewarnaan paket, yaitu : 1. Single Rate Three Color Marker (srTCM)

2. Two Rate Three Color Marker (trTCM)

2.1.4. Manajemen Antrian Aktif

Tanpa adanya Manajemen Antrian Aktif atau Active Queue Management

(AQM) pada router, router menggunakan mekanisme yang disebut sebagai metode

tail drop. Metode ini merupakan teknik manajemen antrian yang bersifat pasif, yaitu

paket yang melimpah dibuang secara otomatis saat antrian benar-benar penuh. Keuntungan utama dari metode ini adalah kesederhanaannya. Akan tetapi metode tail drop dapat berujung pada fenomena yang disebut sebagai sinkronisasi global TCP (Braithwaite, 2006).

Sinkronisasi global TCP terjadi dalam proses sebagai berikut. Ketika host pengirim TCP menerima sebuah acknowledgement negative (NAK) yang berarti ada paket TCP yang hilang saat melewati jaringan, host tersebut berasumsi bahwa hilangnya paket disebabkan terjadinya kongesti pada jaringan. Untuk membantu mengurangi aliran trafik yang masuk ke dalam jaringan, TCP secara otomatis mengurangi laju pengiriman paket.

Pada metode tail drop, saat buffer penuh, semua paket yang datang menuju buffer seluruhnya dijatuhkan. Bila paket ini merupakan paket TCP, semua aliran


(18)

TCP yang mengalami kehilangan paket akan memelankan laju pengiriman secara simultan dan kembali mengulangi transmisi pada waktu yang hampir bersamaan.

Karena semua aliran TCP yang terpengaruh dengan keadaan tersebut bereaksi dalam perilaku yang sinkron, maka kondisi kongesti pada jaringan akan berosilasi antara kondisi kongesti penuh (saat semua aliran TCP mengirim paket dengan laju penuh) dan tanpa kongesti (semua aliran TCP memelankan laju pengiriman paket). Fenomena ini disebut sebagai sinkronisasi global TCP dan menyebabkan utilisasi resource jaringan yang tidak efisien.

Manajemen antrian aktif adalah mekanisme pengendalian kongesti yang bertugas untuk mencegah terjadinya sinkronisasi TCP. Ide utama dari AQM adalah untuk mengantisipasi terjadinya kongesti dan mengambil tindakan untuk mencegah atau mengurangi efek dari kongesti. Metode AQM yang biasa dan penulis gunakan adalah Random Early Detection (RED).

2.1.5. Penjadwalan Paket

Penjadwalan paket (packet scheduling) digunakan untuk menjadwalkan paket

pada antrian sehingga kapasitas jaringan pada port keluaran dapat terdistribusi merata pada semua kelas trafik yang memasuki jaringan (Welzl, 2005). Penjadwalan paket dapat dikatakan sebagai inti dari mekanisme QoS.

1. First-In-First-Out

First-In-First-Out (FIFO) merupakan disiplin antrian default yang

digunakan bila tidak ada algoritma penjadwalan paket lain yang digunakan. Pada FIFO, paket diantrikan pada sebuah jalur antrian dan dilayani sesuai


(19)

urutan memasuki antrian tersebut. Karena paket yang datang pertama kali adalah juga paket yang dilayani pertama kali, maka antrian FIFO juga sering disebut sebagai antrian First-Come-First-Served (FCFS). Keuntungan utama

dari dari mekanisme FIFO ini adalah kesederhanaannya. FIFO hanya membutuhkan sebuah buffer, yang dapat menyimpan paket yang datang dan mengirimkannya sesuai urutan kedatangannya. Pada router berbasis perangkat lunak, hal ini akan meringankan beban kerja router.

FIFO memperlakukan semua paket sederajat sehingga cocok digunakan untuk jaringan best effort. Masalah utama yang dihadapi FIFO adalah FIFO tidak dapat membedakan (atau hanya memiliki kemampuan yang sangat terbatas untuk membedakan) kelas trafik. Karena ketiadaan perbedaan kelas ini, semua aliran trafik akan mengalami perlakuan yang sama. Akan tetapi pada saat terjadi kongesti, FIFO memiliki kecenderungan yang berbeda terhadap paket TCP dan UDP. FIFO cenderung mendahulukan trafik UDP karena protokol TCP akan menurunkan transmisinya saat terjadi kongesti.

2. Priority Queuing

FIFO menempatkan setiap paket pada sebuah antrian tanpa memperhatikan perbedaan antar kelas trafik. Cara yang sederhana untuk menciptakan perbedaan kelas trafik adalah dengan menggunakan Priority Queuing (PQ). Pada PQ, antrian dibagi sebanyak N antrian, dengan urutan prioritas 1 sampai dengan N. Urutan pelayanan paket bergantung dari urutan prioritas dan keberadaan paket pada antrian dengan prioritas lebih tinggi.


(20)

Misal terdapat sejumlah antrian dari antrian 1 sampai antrian j. Bila pada saat paket yang berada di antrian j mendapat giliran dilayani, datang paket pada antrian dengan prioritas lebih tinggi, misalnya antrian (j-3), maka paket yang berada pada antrian (j-3) akan dilayani terlebih dahulu.

Seperti FIFO, keuntungan utama dari PQ adalah kesederhanaan: PQ menyediakan jalan mudah untuk menciptakan perbedaan kelas trafik. Masalah utama dari PQ adalah bila tidak dikonfigurasi secara benar, PQ dapat menyebabkan berhentinya layanan pada antrian prioritas bawah. Bila pada antrian prioritas atas laju layanan lebih kecil dari laju kedatangan paket, maka paket pada antrian tidak akan berhenti dilayani. Akibatnya, paket pada antrian prioritas di bawahnya tidak akan mendapat kesempatan untuk dilayani. Karena kemungkinan terjadinya hal tersebut, maka penggunaan PQ perlu dilakukan secara hati- hati.

PQ lebih cocok digunakan saat trafik prioritas tinggi merupakan sebagian kecil dari keseluruhan trafik di jaringan. Misal terdapat sebagian kecil trafik yang sangat penting dan harus diproses secepat mungkin. Cara paling sederhana untuk menangani trafik tersebut adalah membuat prioritas tertinggi untuk trafik tersebut. Karena trafik tersebut hanya sebagian kecil dari keseluruhan trafik, efeknya terhadap trafik lainnya akan minimal.PQ merupakan antrian yang paling tepat diterapkan untuk trafik real time, seperti video dan VoIP. Trafik tersebut biasanya menggunakan trafik UDP.

Cara lain menangani keterbatasan kapasitas jaringan pada antrian prioritas rendah adalah membatasi laju layanan pada prioritas tinggi. Misal pada


(21)

prioritas pertama laju layanan dibatasi 10% dari kapasitas jaringan. Artinya prioritas antrian tertinggi hanya akan dilayani secara PQ bila konsumsi kapasitas jaringan pada antrian tersebut berada di bawah batas 10 %.

3. Fair Queuing.

Cara lain memberikan pembedaan kelas trafik adalah Fair Queuing (FQ). Pada FQ, paket datang diklasifikasikan kedalam N antrian, Setiap antrian diberikan alokasi kapasitas jaringan sebesar 1/N total kapasitas jaringan. Setiap antrian dilayani secara berurutan (round robin) dengan melewati antrian yang kosong. Pada setiap gilirannya, satu paket dikeluarkan dari antrian. FQ sangat sederhana, dan tidak membutuhkan mekanisme alokasi kapasitas jaringan secara khusus. Bila ditambahkan sebuah kelas antrian baru ke dalam N buah antrian, kapasitas jaringan tiap antrian otomatis diubah menjadi sebesar 1/(N+1) untuk tiap antrian.

FQ memiliki dua buah persoalan utama. Pertama, karena kapasitas jaringan keluaran dibagi secara merata ke dalam N antrian, bila tiap kelas memiliki kebutuhan kapasitas jaringan yang berbeda FQ tidak akan

mendistribusikan kebutuhan kapasitas jaringan sesuai kebutuhannya. Kedua, karena pada setiap giliran layanan paket yang dikeluarkan adalah satu buah, tanpa bergantung pada ukuran paket, maka distribusi kapasitas jaringan antar antrian yang sesungguhnya tidak akan sama besar. Antrian yang memiliki paket dengan ukuran lebih besar akan mendapat bagian kapasitas jaringan yang lebih besar dari 1/N total kapasitas jaringan.


(22)

4. Class-Based WFQ

Class Based (CB)-WFQ mirip dengan WRR yang telah dijelaskan sebelumnya. Pada CB-WFQ, aliran trafik dibagi ke dalam kelas-kelas, tetapi dengan pembagian kapasitas jaringan yang bergantung dari kebutuhan masing-masing kelas, dengan total kapasitas jaringan seluruh kelas adalah 100% kapasitas jaringan keluaran. Perbedaannya adalah, pada WRR, aliran trafik pada masing- masing kelasnya dibagi berdasarkan FQ, sedangkan pada CB-WFQ aliran trafik pada masing-masing kelas dibagi berdasarkan WFQ.

5. Hierarchy Token Bucket

Hierarchy Token Bucket (HTB) merupakan cara untuk mengaplikasikan CB-WFQ pada router berbasis linux menggunakan traffic controller. HTB menjamin jumlah layanan yang diterima sebuah kelas trafik paling kecil sesuai dengan jumlah yang dibutuhkan dan diberikan kepadanya. Apabila sebuah kelas menggunakan kapasitas jaringan lebih kecil dari yang diberikan kepadanya, sisa kapasitas jaringan yang tidak digunakan didistribusikan ke kelas lainnya.

Trafik VoIP diberikan bagian sebesar 100 kbps. Akan tetapi bila trafik VoIp yang masuk besarnya lebih kecil dari 100 kbps, sisa kapasitas jaringan akan diberikan kepada trafik lainnya, sehingga total trafik yang memakai link utama akan tetap 128 kbps.


(23)

2.1.6. Traffic Shaping

Traffic shaping digunakan untuk mengatur laju aliran trafik yang datang untuk membentuk laju trafik sedemikian rupa agar laju trafik keluaran bersifat lebih mulus. Bila laju trafik yang datang bersifat sangat acak (bursty) maka perlu ditempatkan dulu pada sebuah buffer sehingga laju keluaran lebih konstan(Li, 1999).

Dengan cara ini, traffic shaping membuat aliran trafik lebih sesuai dengan profil trafik yang didefinisikan sebelumnya, misalnya SLA. Analogi dari traffic shaping ini adalah, misalnya, pada pintu masuk jalan tol. Pengemudi diminta berhenti sejenak pada gerbang masuk jalan tol. Pengemudi kemudian dipersilahkan memasuki jalan tol dengan kecepatan tertentu, misalnya 60 km/jam. Dengan cara ini mobil akan memasuki jalan tol pada kecepatan yang cenderung sama yaitu 60 km/jam walaupun memasuki jalan tol pada kecepatan yang bervariasi. Akan tetapi pemberhentian trafik sementara akan menyebabkan terjadinya delay tambahan pada paket selama di buffer.

Ada dua tipe traffic shaper, yaitu traffic shaper murni dan token bucket traffic shaper. Token bucket traffic shaper sering juga disebut sebagai leaky bucket traffic shaper.

1. Traffic Shaper Murni

Pada traffic shaper murni, paket yang datang ditempatkan pada sebuah buffer, atau tempat penampungan sementara, dengan kedalaman d dan dikeluarkan dalam laju konstan r. Traffic shaper murni tidak memperkenankan terjadinya lonjakan laju pada aliran keluaran. Biasanya, laju keluaran traffic shaper, r, akan lebih kecil dari laju jalur yang sebenarnya, C.


(24)

Dengan traffic shaper murni, laju keluaran r akan menentukan batas atas dari laju trafik keluaran karena lonjakan laju trafik (burst) tidak diperbolehkan. Bila ukuran burst melebihi kedalaman d, maka paket yang meluap berlebih akan dibuang.

2. Token Bucket Traffic Shaper

Token bucket traffic shaper menggunakan sistem keranjang, yang hamper serupa dengan keranjang C yang digunakan pada srTCM dan trTCM. Token diletakkan pada keranjang token dengan laju token konstan sebesar r. Laju token r ini mirip dengan CIR. Keranjang token memiliki kedalaman d yang mirip dengan kedalaman keranjang C, yaitu CBS. Bila keranjang token telah penuh, tidak ada lagi token yang ditambahkan ke dalam keranjang.

Setiap token membolehkan buffer mengeluarkan satu byte paket. Bila tidak ada paket yang tersisa pada buffer, keranjang token akan tertutup dan tidak ada token yang dikeluarkan. Saat ada paket yang memasuki buffer, token dikeluarkan dalam laju jalur C, dan paket dikeluarkan dalam “lonjakan†laju. Akan tetapi bila keranjang berada dalam keadaan kosong, paket yang berada dalam buffer harus menunggu sampai ada token yang memasuki keranjang.

Hasil operasi ini adalah paket diperbolehkan keluar dalam lonjakan laju C. Ukuran lonjakan atau burst dibatasi hanya sampai kedalaman keranjang, yaitu d. Karena token diletakkan pada keranjang dengan laju r, maka laju rata-rata dalam dari paket yang keluar buffer dalam jangka panjang akan sama dengan


(25)

r. Karenanya, token bucket traffic shaper memiliki cara kerja yang sama dengan keranjang C pada srTCM dan trTCM kecuali keranjang token diaplikasikan pada port keluaran sementara keranjang C pada port masukan.

2.2.

Differentiated Services

Salah satu solusi untuk mengaplikasikan QoS adalah menerapkan arsitektur Differentiated Service (DiffServ) pada jaringan. DiffServ bekerja dengan prinsip pengklasifikasian trafik. Edge Router akan mengklasifikasikan paket datang berdasarkan peraturan tertentu, dan memberikan tanda yang menandai paket dengan code point yang menentukan level layanan yang akan diterima paket tersebut. Core Router akan memberikan perlakuan berbeda terhad ap paket yang datang berdasarkan code point dan isi dari tabel Per-Hop Behaviour (PHB) (Li, 1999).

2.2.1. Arsitektur DiffServ

Arsitektur DiffServ berdasarkan sebuah model sederhana dimana trafik yang memasuki sebuah jaringan diklasifikasikan dan dapat dikondisikan pada tepi jaringan dan ditempatkan pada beberapa Behavior Aggregate (BA) yang berbeda. Setiap BA diidentifikasikan oleh sebuah Differentiated Service Code Point (DSCP), sehingga BA dapat didefinisikan sebagai kumpulan paket dengan DSCP yang sama yang melewati sebuah link pada arah tertentu. Pada inti jaringan, paket diteruskan bergantung kepada PHB yang ditentukan oleh DSCP (Blake, 1998).

Sebuah domain DiffServ terdiri atas DiffServ boundary nodes dan DiffServ interior nodes. DiffServ boundary nodes menghubungkan sebuah domain


(26)

DiffServ ke domain lainnya, baik domain DiffServ maupun domain non-DiffServ, sementara DiffServ interior nodes hanya menghubungkan node-node yang berada pada sebuah domain DiffServ yang sama.

Baik DiffServ boundary nodes maupun DiffServ interior nodes harus mampu menjalankan PHB yang tepat kepada sebuah paket berdasarkan DSCP yang dimilikinya. Sebagai tambahan, DiffServ boundary nodes mungkin diperlukan untuk melakukan fungsi pengondisian trafik yang didefinisikan oleh SLA antara domain DiffServ tersebut dan domain lain yang berpasangan dengan domain tersebut. SLA mungkin mengandung parameter-parameter seperti paket hilang maksimum, waktu tunda paket maksimum, dll. SLA menjelaskan aturan-aturan dan kondisi-kondisi dari layanan yang ditawarkan.

DiffServ interior nodes mungkin dibutuhkan untuk menjalankan fungsi pengondisian trafik yang terbatas seperti penulisan ulang DSCP. Interior nodes hanya perlu mengetahui bagaimana menangani beberapa kelas-kelas trafik daripada menyimpan pengetahuan tentang ratusan dari aliran trafik individual. Di sini, informasi per aliran dibuang di dalam domain. Mereka tidak mengimplementasikan fungsi pengondisian trafik. Secara umum, interior nodes melakukan tugas yang lebih sederhana dari boundary nodes. Interior node yang mengimplementasikan klasifikasi dan fungsi pengondisian trafik yang lebih kompleks akan memiliki karakterisitik yang sama dengan DiffServ boundary nodes.

Diffserv boundary nodes bertindak sebagai DiffServ ingress node dan DiffServ egress node untuk arah trafik yang berbeda. Trafik memasuki sebuah domain DiffServ melalui DiffServ ingress node dan keluar melalui DiffServ egress


(27)

node. Sebuah DiffServ ingress node bertanggung jawab dalam memastikan trafik yang memasuki domain DiffServ memenuhi SLA antara domain tersebut dan domain lain yang terhubung dengan ingress node. Diffserv egress node dapat melakukan fungsi pengondisian trafik pada trafik yang diteruskan ke domain yang terhubung secara langsung, bergantung pada SLA antara kedua domain.

Router yang bekerja sebagai DiffServ boundary nodes umumnya disebut sebagai edge router, sedangkan router yang bekerja sebagai interior nodes biasanya disebut sebagai core router.

2.2.2. Traffic Conditioner

Sebuah traffic conditioner terdiri atas elemen-elemen berikut: meter, marker, shaper, dan dropper. Aliran trafik akan diseleksi oleh classifier, yang akan meneruskannya ke bagian traffic conditioner. Meter digunakan (apabila diperlukan) untuk membandingkan aliran trafik terhadap suatu profil trafik. Hasil keluaran sebuah meter dapat mempengaruhi proses marking, dropping, atau shaping terhadap paket tersebut (Blake, 1998).

Sebuah traffic conditioner tidak perlu selalu terdiri atas empat elemen yang disebutkan sebelumnya. Contohnya, pada kasus dimana tidak ada profil trafik yang mempengaruhi, paket cukup melewati classifier dan marker saja.

Traffic conditioner biasanya terletak di DiffServ ingress dan egress node, tetapi dapat juga diletakkan pada interior node di dalam sebuah domain DiffServ, ataupun di dalam domain non-DiffServ.


(28)

Traffic meter membandingkan properti sementara dari aliran trafik yang diseleksi oleh classifier terhadap suatu profil trafik yang diberikan TCA. Suatu meter meneruskan informasi ke fungsi pengondisian lainnya untuk menjalankan proses yang sesuai, baik untuk paket yang memenuhi profil maupun tidak memenuhi profil.

2. Marker

Packet marker mengisi field DSCP pada paket dengan nilai tertentu, untuk menggabungkan paket tersebut ke BA yang sesuai. Marker dapat diatur untuk menandai setiap paket yang memasukinya ke dalam satu codepoint tertentu, atau diatur untuk menandai paket dengan suatu set codepoint yang mewakili PHB tertentu, bergantung kepada kondisi meter. Marker juga dapat melakukan proses re-marking, yaitu mengubah nilai codepoint dari suatu paket.

3. Shaper

Shaper menahan sebagian atau seluruh trafik pada suatu aliran trafik untuk membentuk aliran trafik yang sesuai dengan profil trafik. Proses yang dilakukan oleh shaper disebut shaping. Shaper biasanya memiliki buffer yang berukuran terbatas, sehingga paket dapat dibuang bila tidak tersedia buffer yang cukup untuk menampung trafik yang akan ditahan.


(29)

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).


(30)

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 bits/bytes 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.


(31)

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.


(32)

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.


(33)

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).


(34)

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.


(35)

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


(36)

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.


(37)

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.


(38)

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.


(39)

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.


(40)

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.


(41)

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.


(42)

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 }


(43)

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.


(44)

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.


(45)

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.


(46)

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

14.Aksi yang dilakukan oleh policer.

2.4.4. TC untuk penggunaan RED

Asumsikan kondisi jaringan dengan bandwidth 128kbps dan latency 500msec. Berikut perhitungannya :

Bandwidth = 128kbps = 16000 Byte / sec Latency = 500msec = 0.5 sec

Max = Bandwidth * Latency = 16000 * 0.5

= 8000 Min = Max / 2

= 4000 Limit = 8 * max

= 8 * 8000 = 64000

Burst = (2 * min + max) / (3 * avpkt) = (2 * 4000 + 8000) / (3 * 1000) = 5.33

#tc qdisc add dev eth0 root red limit 64000 min 4000 max 8000 burst 5.33 avpkt 1000 probability 0.02 bandwidth 128


(47)

2.4.5. TC untuk penggunaan HTB

Misal kita ingin membatasi penggunaan bandwidth klien. Asumsikan kita memiliki bandwidth 2Mbit dan klien A dengan 128Kbit dan klien B dengan 512Kbit. Dan untuk klasifikasi port SSH = 64Kbit, TELNET = 4Kbit, POP3 = 32Kbit, SMTP = 32Kbit.

Gambar 2.11 contoh HTB tree (Hubert, 2004)

#tc qdisc add dev eth0 root handle 1:0 htb

#tc class add dev eth0 parent 1:0 classid 1:1 htb rate 2Mbit ceil 2Mbit #tc class add dev eth0 parent 1:1 classid 1:2 htb rate 128Kbit ceil 128Kbit #tc class add dev eth0 parent 1:1 classid 1:3 htb rate 512Kbit ceil 512Kbit #tc class add dev eth0 parent 1:2 classid 1:21 htb rate 64Kbit ceil 64Kbit #tc class add dev eth0 parent 1:2 classid 1:22 htb rate 4Kbit ceil 128Kbit #tc class add dev eth0 parent 1:3 classid 1:31 htb rate 32Kbit ceil 32Kbit #tc class add dev eth0 parent 1:3 classid 1:32 htb rate 32Kbit ceil 32Kbit


(48)

#tc qdisc add dev eth0 parent 1:21 handle 210: pfifo limit 10 #tc qdisc add dev eth0 parent 1:22 handle 220: pfifo limit 10 #tc qdisc add dev eth0 parent 1:31 handle 310: pfifo limit 10 #tc qdisc add dev eth0 parent 1:32 handle 320: pfifo limit 10

#tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dst 192.168.1/24 match ip sport 22 0xff flowid 1:21

#tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dst 192.168.1/24 match ip sport 23 0xff flowid 1:22

#tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dst 192.168.2/24 match ip sport 25 0xff flowid 1:31

#tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dst 192.168.2/24 match ip sport 110 0xff flowid 1:32

2.5.

Python

Python adalah salah satu bahasa pemrograman script. Karena script sehingga bersifat interpreted tapi python memungkinkan untuk dicompile. Memiliki pendekatan Berorientasi Objek dan yang terpenting adalah terstruktur secara sintaks kodenya. Struktur sintaks akan diatur dengan indentasi tiap baris kodenya. Prinsip dasar dari python adalah kesederhanaan (http://docs.python.org/).


(49)

2.5.1. Hello World

Setiap contoh yang ada dapat dicoba di linux, untuk mencoba di system operasi lain sesuaikan bagian shebang(#!). Buat file hello.py dan masukkan baris kode berikut :

#!/usr/bin/env python print “Hello World!”

Jalankan file tadi dengan menambahkan atribut execute dengan perintah :

$ chmod u+x hello.py

Jalankan file hello.py dengan perintah berikut :

$ ./hello.py Hello World!

Setelah dieksekusi akan tampil teks Hello World!. Karena bersifat interpreted, tidak perlu ada proses kompilasi sebelumnya.

2.5.2. Dasar Python


(50)

Literal adalah bilangan seperti 5, 5,2, 4e12, string seperti ‘ini adalah string’ atau “ini string juga.”. Literal dapat digunakan dan ditampung pada variable nantinya.

2. Bilangan

Terdapat 4 tipe bilangan pada python, diantaranya : 1) Integer, 2, 4, 10, 1000, dll.

2) Long Integer, nilainya lebih besar dari integer. 3) Floating Point, 2,3, 1,0, dll.

4) Complex, (-5+4j) dan (2.3 - 4.6j). 3. String

String pada python dapat ditandai dengan tanda petik satu, dua maupun tiga.

‘string dengan satu petik’

“string dengan dua petik”

‘’’ string dengan tiga petik

dapat dibuat multi baris‘’’

4. Variabel

Untuk penamaan variable wajib didahului oleh huruf atau underscore ‘_’. Berikut contoh penamaan yang benar.

nama _nama Nama

Variabel akan langsung bisa digunakan ketika kita memberikan nilai ke dalamnya. Berikut contohnya :


(51)

nama = “deni” usia = 22

5. Indentasi

Indentasi sangat penting pada python, karena python membaca indentasi dari kode program untuk menentukan alur dan blok dari tiap bagian kode. Kode berikut akan error bila dijalankan :

x = 5 y = 3

z = 4

print x

di bagian lain akan dipelajari tentang control program dan fungsi. Pada bagian itu indentasi akan sering digunakan.

2.5.3. Operator dan Ekspresi

1. Operator

Berikut operator yang ada pada python :

+ - * ** / // %

<< >> & | ^ ~

< > <= >= == != <>

2. Ekspresi


(52)

length = 5

breadth = 2

area = length * breadth

3. Alur Kendali

Terdapat beberapa pernyataan pada python untuk mengatur alur kendali program, diantaranya adalah if, while dan for..in.

1) If

Pernyataaan if akan menguji kebenaran dari ekspresi, kemudian akan menjalankan blok yang diinginkan. Berikut contoh penggunaannya :

x = 0 if x < 1:

print x elif x > 0:

print “x lebih besar dari 0” else:

print “error”

2) While

Pernyataan ini akan mengulang blok yang sudah ditentukan selama ekspresi dalam while masih bernilai benar. Berikut contohnya:

ulang = True while ulang:

print “baris yang akan dijalankan selama masih bernilai true”


(53)

else:

print “baris yang dijalankan ketika bernilai false”

3) For .. in

Pada pernyataan ini, perulangan akan terjadi sebanyak N sesuai dengan jumlah sequence object yang digunakan.

for i in range(1,5) print i

2.5.4. Fungsi

Untuk membuat fungsi cukup menggunakan keyword def. Kemudian diikuti nama fungsi dan parameternya. Berikut contohnya :

def Tambah():

print x + 1

Jika mengikuti konvensi dari python, minimal sebuah fungsi akan memiliki parameter self. Sehingga didapat fungsi berikut :

def Tambah(self): print x

Jika ingin menambah parameter lain, cukup dengan memisahkan dengan tanda koma(,). Sebagai contoh :

def Tambah(self, x, y): print x + y


(54)

Sebuah fungsi dapat memiliki nilai kembalian / return value. Cukup dengan menggunakan keyword return.

def Tambah(self, x, y): return x + y

2.5.5. Pemrograman Berorientasi Objek

1) Class

Penggunaan class pada python hanya menggunakan keyword class. Berikut contohnya :

class Manusia:

def Bicara(self):

print “berbicara”

Untuk menginstansiasi objek dari class yang kita buat. Cukup dengan kode berikut :

objManusia = Manusia() objManusia.Bicara()

2) Method

Penggunaan dan pembuatan method pada class, sama dengan fungsi biasa. Perbedaan hanya terlihat pada cara memanggil method. Berikut contohnya :

class Mobil:


(55)

self.nama = nama print self.nama objMobil = Mobil()

objMobil.Nama(“Sedan”)

Contoh di atas akan menghasilkan kata sedan. Terlihat pada definisi fungsi terdapat 2 parameter yaitu: self dan nama. Tapi untuk memanggil fungsi cukup melewatkan untuk variable setelah self. Karena self tidak dianggap sebagai parameter.

3) __init__ method

Pada python terdapat constructor method pada class. Disebut dengan __init__ method. Method ini akan dipanggil terlebih dahulu ketika objek dibuat dari kelas tersebut. Berikut contoh penggunaannya: class Mobil:

def __init__(self): print “mobil dibuat” t = Mobil()

4) Inheritance

Untuk membuat turunan kelas pada python sangat mudah. Hanya menggunakan tanda (kelas induk). Berikut contohnya : class Induk:

def __init__(self):


(56)

class Turunan(Induk): def __init__(self):

print “kelas turunan”

2.5.6. PyGTK

PyGTK 2.0 adalah sekumpulan modul Python yang menyediakan antarmuka untuk GTK Python 2.x. Seluruh PyGTK dokumen mengacu pada versi 2.x PyGTK dan GTK, GTK merujuk pada versi 2.x GTK. Situs web utama untuk PyGTK adalah www.pygtk.org. Penulis utama PyGTK adalah James Henstridge, james@daa.com.au.

Python adalah sebuah bahasa pemrograman yang extensible, berorientasi obyek yang disediakan dengan kumpulan modul yang menyediakan akses ke sebagian besar operating system services, internet services (seperti HTML, XML, FTP, dll), grafis (termasuk OpenGL, TK, dll), fungsi penanganan string, layanan mail (IMAP, SMTP, POP3, dll), multimedia (audio, JPEG) dan layanan kriptografi. Selain itu ada banyak modul lain yang tersedia dari pihak ketiga yang menyediakan banyak layanan lainnya.

GTK pada dasarnya adalah sebuah application programmers interface (API) berorientasi objek. Walaupun sepenuhnya ditulis dalam C, diimplementasikan dengan menggunakan gagasan kelas dan callback functions (pointer ke fungsi). Dengan menggunakan pygtk, pengguna python dapat dengan mudah menggunakan GTK sebagai GUI untuk program mereka. Hanya dengan menggunakan python yang memanggil GTK widgets yang diperlukan untuk program mereka.


(57)

2.5.7. Matplotlib

Matplotlib adalah pustaka 2D plotting python yang menghasilkan diagram

dalam berbagai format hardcopy dan lingkungan interaktif lintas platform.

Matplotlib dapat digunakan dalam python scripts, python dan ipython shell (ala

matlab atau mathematica), web application servers, dan 6 graphical user interface toolkits.

Matplotlib mencoba untuk membuat hal yang mudah menjadi mudah dan yang sulit menjadi mungkin. Anda bisa generate plots, histograms, power spectra, bar charts, errorcharts, scatterplots, dan lain-lain, hanya dengan beberapa baris kode.

Gambar 2.12 contoh plot dengan matplotlib

Sebagai contoh, untuk generate 10.000 gaussian angka acak dan membuat histogram berisi data dalam 100 bins, cukup dengan mengetikkan:

>>> from pylab import randn, hist

>>> x = randn(10000)

>>> hist(x, 100)

Untuk power user, anda memiliki kendali penuh atas model garis, font

properties, axes properties, dan lainnya, lewat object oriented interface atau sekumpulan fungsi yang mirip bagi pengguna Matlab®. Pylab mode menyediakan


(58)

semua fungsi pyplot plotting dan juga fungsi non-plotting functions dari numpy dan

matplotlib.mlab.

2.6.

Extreme Programming

Extreme Programming (XP) adalah metode pengembangan perangkat lunak yang

ringan dan termasuk salah satu agile methods yang dipelopori oleh Kent Beck, Ron

Jeffries, dan Ward Cunningham. Sasaran XP adalah tim yang dibentuk berukuran antara

kecil sampai medium saja, tidak perlu menggunakan sebuah tim yang besar.

Menurut Pressman(2005), Extreme Programming adalah proses yang paling banyak digunakan pada agile process. Perencanaan kegiatan diatur sebagai kerangka

empat – perencanaan(planning), desain(design), pengkodean(coding) dan

pengujian(testing) - XP menunjukkan sejumlah teknik yang inovatif dan kuat yang

memungkinkan tim tangkas untuk membuat perangkat lunak rilis sering memberikan fitur dan fungsi yang telah dijelaskan dan kemudian diprioritaskan oleh pelanggan.

Menurut Schach(2005), Extreme Programming adalah salah satu dari sejumlah paradigma baru yang secara kolektif disebut sebagai proses tangkas oleh Beck. Mereka ditandai dengan penekanan lebih sedikit pada analisis dan desain dari di hampir semua model siklus-hidup yang lain dan dengan pelaksanaan dimulai jauh lebih awal dalam siklus hidup, karena perangkat lunak bekerja dianggap lebih penting daripada dokumentasi rinci. Responsif terhadap perubahan lain tujuan utama proses tangkas, begitu pula pentingnya bekerja sama dengan klien.

Extreme Programming (berikutnya akan disingkat sebagai XP) adalah sebuah


(59)

berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan fleksibel. Walaupun menggunakan kata programming, XP bukan hanya berfokus

pada coding tetapi meliputi seluruh area pengembangan perangkat lunak(Beck, 2004).

Penulis menggunakan model proses Extereme Programming dari Pressman dengan perencanaan kegiatan berupa perencanaan(planning), desain(design),

pengkodean(coding) dan pengujian(testing) serta diakhiri release dari aplikasi.

2.6.1. Nilai-nilai Dasar XP

Berikut adalah nilai-nilai mendasar yang menjadi roh dari XP pada setiap tahapan proses pengembangan perangkat lunak(Beck, 2004):

1. Communication

XP memfokuskan pada komunikasi yang baik antar anggota tim. Para anggota tim harus membangun saling pengertian, mereka juga wajib saling berbagi pengetahuan dan keterampilan dalam mengembangkan perangkat lunak. Ego dari para programer yang biasanya cukup tinggi harus ditekan dan mereka harus membuka diri untuk bekerjasama dengan programer lain dalam menuliskan kode program.

2. Courage

Para anggota tim dan penanggungjawab pengembangan perangkat lunak harus selalu memiliki keyakinan dan integritas dalam melakukan tugasnya. Integritas ini harus selalu dijaga bahkan dalam kondisi adanya tekanan dari situasi sekitar (misalnya oleh klien atau pemilik perusahaan). Untuk dapat melakukan sesuatu dengan penuh integritas terlebih dahulu para anggota tim


(60)

harus terlebih dahulu memiliki rasa saling percaya. Rasa saling percaya inilah yang coba dibangun dan ditanamkan oleh XP pada berbagai aspeknya.

3. Simplicity

Lakukan semua dengan sederhana. Hal tersebut adalah salah satu nilai dasar dari XP. Gunakan method yang pendek dan simpel, jangan terlalu rumit dalam

membuat desain, hilangkan fitur yang tidak ada gunanya, dan berbagai proses penyederhanaan lain akan selalu menjadi nilai utama dari setiap aspek XP.

4. Feedback

Berikan selalu feedback kepada sesama anggota tim maupun pihak-pihak

lain yang terlibat dalam pengembangan perangkat lunak. Utarakan selalu pikiran anda dan diskusikan kesalahan-kesalahan yang muncul selama proses pengembangan. Dengarkan selalu pendapat rekan yang lain, dengan adanya

feedback inilah seringkali kita menyadari bagian mana yang salah atau bisa

ditingkatkan lagi dari perangkat lunak yang dikembangkan.

5. Quality Work

Semua nilai di atas berujung pada sebuah kondisi di mana kita melakukan pekerjaan dengan berkualitas. Dengan proses yang berkualitas maka implikasinya akan muncul pula perangkat lunak yang berkualitas sebagai hasil akhirnya.

2.6.2. Aspek Dasar XP

Aspek dasar XP terdiri dari berbagai teknik atau metode yang diterapkan Beck dan Jeffries pada C3 Project(Beck, 2004). Teknik-teknik tersebut dapat


(61)

Gambar 2.13 XP practices(Beck, 2004)

1. The Planning Game

Pendekatan XP dalam perencanaan sangat mirip dengan metode yang diterapkan pada RAD (Rapid Application Development). Proses pendek dan

cepat, mengutamakan aspek teknik, memisahkan unsur bisnis dengan unsur teknis dan pertemuan intensif antara klien dengan developer. Pada XP proses ini

menggunakan terminologi “game” karena Beck menyarankan untuk

menggunakan teknik score card dalam menentukan requirements. Semakin sulit

aspek teknis yang dibutuhkan semakin tinggi pula skor pada kartu rencana tersebut.

2. Small Releases

Setiap release dilakukan dalam lingkup sekecil mungkin pada XP. Setiap developer menyelesaikan sebuah unit atau bagian dari perangkat lunak maka


(62)

hasil tersebut harus segera dipresentasikan dan didiskusikan dengan klien. Jika memungkinkan untuk menerapkan unit tersebut pada perusahaan, hal itu juga dapat dilakukan sekaligus sebagai tes awal dari penerapan keseluruhan sistem. Kendati demikian hal ini tidak selalu perlu dilakukan karena harus dihitung terlebih dahulu sumberdaya yang dibutuhkan. Apakah lebih menguntungkan langsung melakukan tes terhadap unit tersebut atau melakukan tes setelah unit tersebut terintegrasi secara sempurna pada sistem.

3. Metaphor

Metaphor pada dasarnya sama dengan arsitektur perangkat lunak.

Keduanya menggambarkan visi yang luas terhadap tujuan dari pengembangan perangkat lunak. Beck sendiri seperti para penandatangan Agile Manifesto lainnya bercita-cita menyederhanakan proses pengembangan perangkat lunak yang saat ini sudah dianggap terlalu rumit. Arsitektur yang saat ini banyak berisi diagram dan kode semacam UML dianggap terlalu rumit untuk dimengerti, terutama oleh klien. Metaphor, walaupun mirip dengan arsitektur lebih bersifat

naratif dan deskriptif. Dengan demikian diharapkan komunikasi antara klien dengan developer akan berlangsung lebih baik dan lancar dengan penggunaan metaphor.

4. Simple Design

Sebagai salah seorang penandatangan Agile Manifesto, Beck adalah seorang yang tidak menyukai desain yang rumit dalam sebuah pengembangan perangkat lunak. Tidak heran jika dia memasukkan Simple Design sebagai salah


(1)

turunan. Leaf adalah kelas akhir atau class yang hanya memiliki class induk tanpa class turunan (Devera, 2002).

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.

Prioritas pengiriman paket (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.

2.4.1.Tc qdisc

tc qdisc (Hubert, 2004) 2.4.2. Tc class

tc class (Hubert, 2004)

2.4.3. Tc filter

tc filter (Hubert, 2004) 2.5. Python

Python adalah salah satu bahasa pemrograman script. Karena script sehingga bersifat interpreted tapi python memungkinkan untuk dicompile. Memiliki pendekatan Berorientasi Objek dan yang terpenting adalah terstruktur secara sintaks kodenya.

2.6. Extreme Programming

Extreme Programming (XP) adalah metode pengembangan perangkat lunak yang ringan dan termasuk salah satu agile methods yang dipelopori oleh Kent Beck, Ron Jeffries, dan Ward Cunningham. Sasaran XP adalah tim yang dibentuk berukuran antara kecil sampai medium saja, tidak perlu menggunakan sebuah tim yang besar.

Menurut Pressman(2005), Extreme Programming adalah proses yang paling banyak digunakan pada agile process. Perencanaan kegiatan diatur sebagai kerangka empat – perencanaan(planning), desain(design), pengkodean(coding) dan pengujian(testing) - XP menunjukkan sejumlah teknik yang inovatif dan kuat yang memungkinkan tim tangkas untuk membuat perangkat lunak rilis sering memberikan fitur dan fungsi yang telah dijelaskan dan kemudian diprioritaskan oleh pelanggan.

XP Software Development Process(Pressman, 2005)


(2)

XP mencakup beberapa aturan dan praktek yang terdiri atas planning, design, coding dan test(Pressman, 2005).

2.7. Studi Sejenis

Penelitian oleh Pramudita(2008) yang dilaksanakan di gedung Labtek VIII Institut Teknologi Bandung (ITB) dan lab di gedung Pusat Antar Universitas (PAU) ITB. Penelitian lain oleh Marieska(2008) pada Wimax. IEEE Standard 802.16 tidak mendefinisikan algoritma penjadwalan. Penulis akan menggunakan disiplin antrian dan menerapkan secara dinamis pada jaringan. Sehingga konfigurasi untuk jaringan dapat bersifat dinamis.

3. METODOLOGI PENELITIAN 3.1. Alat dan Bahan

Adapun peralatan yang digunakan dibagi dua, yaitu :

1.

Perangkat Keras

PC server(1 unit) dengan spesifikasi :

1. Operating System : Fedora Core 10. 2. 2 kartu interface .

PC client(3 unit) dengan spesifikasi :

1. Operating System : Windows XP.

2. 1 kartu

interface.

Switch

2.

Perangkat Lunak

IPTABLES.

TC.

Linux Kernel 2.6.x.

GTK.

Python.

3.2. Metode Penelitian

3.2.1.Metode Pengumpulan Data 1. Studi Pustaka

Studi pustaka dilakukan untuk mendapatkan bahan dan data yang diperlukan dalam melakukan penelitian ini. 3.2.2.Metode Pengembangan Perangkat

Lunak

1. Extreme Programming

Extreme Programming (Pressman, 2005) adalah suatu pendekatan baru terhadap model pengembangan perangkat lunak yang kontroversial berdasar pada model iterative dan incremental. XP mencakup beberapa aturan dan praktek yang terdiri atas planning, design, coding dan test.

a. Planning

Adapun beberapa fungsi dan kebutuhan dari aplikasi adalah sebagai berikut:

1. Aplikasi mampu generate parameter TC dan iptables yang dibutuhkan.

2. Aplikasi mampu generate parameter untuk TC dan iptables yang akan dibutuhkan oleh aplikasi.

3. Aplikasi membuat laporan realtime untuk mengukur pemakaian

bandwidth. b. Design

Pada desain, perancangan aplikasi akan terdiri dari beberapa bagian diantaranya sebagai berikut :

1. Perancangan desain

GUI dengan

pembuatan prototype dengan menggunakan GTK.

2. Desain input yang diperlukan.

3. Desain ouput yang diperlukan.

4. Perancangan class yang dibutuhkan dengan CRC.

5. Perancangan tampilan laporan penggunaan bandwidth.


(3)

Saat unit test selesai dibuat, pengembang lebih baik fokus terhadap apa yang akan diimplementasikan untuk melewati unit test.

d. Test

Tahap ini akan menggunakan unit test yang sebelumnya telah dibuat.

4. PEMBAHASAN 4.1. Planning

4.1.1.Analisis penggunaan bandwidth Berikut hasil pengujian menggunakan disiplin antrian FIFO,

Percob aan ke-

Node 1 Node 2

Upload Downloa d

Uploa d

Downloa d 1 85 kbps 255 kbps 34

kbps

127 kbps

2 80 kbps 244 kbps 39 kbps

185 kbps

4.1.2.Aplikasi mampu generate parameter untuk TC dan Iptables a. Network device yang akan

digunakan.

b. Kecepatan maksimum untuk tiap network device yang digunakan.

c. Beberapa parameter untuk HTB

a. classid untuk tiap node. Node qdisc root dengan handle 1:0, node parent class dengan classid 1:1. Node IIX dengan 1:2, node internasional dengan classid 1:3. child class IIX akan menggunakan classid 1:n2 dan internasional dengan classid 1:n3, untuk n adalah bilangan bulat. Untuk qdisc child class tersebut akan mengikuti classid dengan handle n2:

untuk IIX dan n3 untuk Internasional, untuk n adalah bilangan bulat b. Maksimum rate untuk

parent class.

c. Rate untuk tiap class node yang tidak melebihi parent class.

d. Bandwidth dan latency yang dimiliki oleh network device yang menggunakan RED. e. Ip yang digunakan oleh tiap

network interface yang digunakan untuk routing oleh iptables

f. Daftar ip host yang terhubung jaringan IIX untuk penanda paket data yang dikirim ataupun diterima. 4.2. Design

4.2.1.Class Design

Dari user stories pada tahap planning, penulis membuat beberapa class yaitu :

1. HTB, digunakan untuk mengenerate TC statement. 2. RED, digunakan untuk

mengenerate TC statement. 3. TC, digunakan untuk

mengeksekusi TC statement yang sebelumnya dibuat oleh class lain.

4. BWGUI, digunakan untuk menangani GUI dari aplikasi.

5. Client, digunakan untuk menangani informasi tiap klien.

6. BandwidthConsumption, digunakan untuk menangani penggunaan bandwidth tiap client.


(4)

4.3. Coding

Tahap ini tidak langsung membuat code dari tiap objek dari hasil desain sebelumnya. Pembuatan Unit Test untuk menguji tiap class didahulukan. Contoh Unit Test yang akan dibuat adalah sebagai berikut :

import unittest

from modules.RED import RED

def test_qdisc(self):

red = RED()

self.assertEqual(red.qdisc, 'root red')

def test_red(self):

red = RED()

self.assertEqual(red.setRed(128 000),'/sbin/tc qdisc add dev eth0 root red limit 64000 min 4000 max 8000 burst 5 avpkt 1000 probability 0.02 bandwidth 128')

if __name__ == '__main__':

unittest.main()

4.4. Test

Untuk menguji bug pada kode yang ditulis sebelumnya, unit test yang sebelumnya telah dibuat dieksekusi. Lakukan refactoring terus menerus sampai bug hilang.

5. KESIMPULAN 5.1. Kesimpulan

Setelah melakukan pengetesan terhadap aplikasi yang telah dibuat dan menyelesaikan penelitian ini. Dapat ditarik kesimpulan sebagai berikut:

1. Aplikasi DiffServ menggunakan TrafficControl dengan disiplin antrian HTB dan RED dapat berperan untuk mengatur penggunaan bandwidth tiap node pada jaringan. Hasil pengujian dapat dilihat di Implementation Test(subbab 4.5.1) dan QoS testing(subbab 4.5.2).

2. Aplikasi dapat membedakan asal paket dari jaringan IIX(lokal) atau internasional. Dan memberikan batasan kecepatan yang sesuai untuk tiap koneksi. Hasil pengujian dapat dilihat pada QoS testing(subbab 4.5.2).

3. Aplikasi dapat diterapkan pada router linux berbasis DiffServ. Karena bersifat open source dan dapat dimodifikasi dan ditambah fungsionalitasnya.

4. Pengujian QoS dengan parameter uji delay, jitter dan packet loss memberikan hasil yang baik. Terlihat dari hasil pengujian yang memberikan nilai pengujian dari parameter tersebut relatif kecil bila dibandingkan dengan sebelumnya yang menggunakan disiplin antrian FIFO atau default dari router. Hasil pengujian dapat dilihat pada QoS Testing(subbab 4.5.2).

5.2. Saran

Berikut ini beberapa saran yang mungkin berguna untuk digunakan sebagai bahan pertimbangan yang ingin melakukan penelitian atau aplikasi yang hampir sama,

1. Dimungkinkan untuk menerapkan semua queueing discipline yang ada. Sehingga pengguna bebas memilih yang ingin digunakan.

2. Memberikan log berupa diagram garis yang lebih luas dan dimungkinkan untuk disimpan dalam database untuk keperluan auditing di lain waktu.


(5)

3. Python sebagai scripting language dan menggunakan Extreme Programming sebagai metode yang digunakan dapat

mempercepat dan

menyederhanakan proses pembuatan aplikasi.

Daftar Pustaka

Almesberger, Werner. 2001. Differentiated Services on linux. ftp://icaftp.epfl.ch/pub/linux/diffser v/misc/dsid-01.ps.gz

Beck, Kent. 2004. Extreme

Programming Explained: Embrace Change, Second Edition.

Massachusetts: Addison Wesley Professional.

Blake, et. al. 1998. An Architecture for Differentiated Services. RFC 2475. http://www.ietf.org/rfc/rfc2475

Braden, et. al. 1998.

Recommendations on Queue

Management and Congestion

Avoidance in the Internet. RFC

2309.

http://www.ietf.org/rfc/rfc2309.t

xt

Braithwaite, Stephen. 2006.

Implementation of AQMs on Linux made Easy. The University of Southern Queensland.

http://eprints.usq.edu.au/2075/1/Bra ithwaite-6800-Queuing.pdf

Brown, Martin A. 2006. Traffic Control HOWTO. Version 1.0.2. http://linux-ip.net/articles/Traffic-Control-HOWTO/. diakses pada hari ini.

C H, Swaroop. A Byte of Python. http://www.byteofpython.info. Devera, Martin. 2002. HTB Linux

queuing discipline manual - user guide.

http://luxik.cdi.cz/~devik/qos/htb/m anual/userg.htm

Floyd, Sally dan Van Jacobson. 1993. Random Early Detection Gateways for Congestion Avoidance.

Lawrence Berkeley Laboratory University of California.

http://www.icir.org/floyd/papers/re d/red.html

Floyd, et. al. 2001. Adaptive RED: An Algorithm for Increasing the Robustness of RED’s Active Queue Management.

http://citeseerx.ist.psu.edu/viewdoc/ download?doi=10.1.1.78.7450&rep =rep1&type=pdf

Floyd, Sally. Congestion Control Principles. RFC 2914.

http://www.ietf.org/rfc/rfc2914 Hubert , Bert. 2004. Linux Advanced

Routing & Traffic Control HOWTO. http://lartc.org/lartc.pdf Li, Suqiao. 1999. Network Traffic

Control and Bandwidth Management in Internet: A

Differentiated Services Case Study. McGill University.

http://digitool.library.mcgill.ca/R/?f

unc=dbin-jump-full&object_id=30688&local_base =GEN01-MCG02

Marieska, Mastura Diana. 2008. Analisis Algoritma Penjadwalan Berbasis Quality of Service pada Wimax. http://digilib.itb.ac.id/ Nagle, John. 1984. Congestion Control

in IP/TCP Internetworks. RFC 896. http://tools.ietf.org/html/rfc896 Nichols, et. al. 1998. Definition of the

Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers. RFC 2474.


(6)

Pramudita, Damar Aji. 2008.

Differentiated Service(DiffServ) di Jaringan Testbed menggunakan Disiplin Antrian PRIORITY QUEUEING dan HIERARCHY TOKEN BUCKET.

http://digilib.itb.ac.id/ Python v2.6.1 Documentation.

http://docs.python.org/ Schach, Stephen R. 2005. Object

Oriented and Classical Software Engineering, Sixth Edition. New York: McGraw Hill.

Pressman, Roger S. 2005. Software Engineering: A Practitioner’s Approach, Sixth Edition. New York: McGraw Hill.

Valenzuela, et. al. 2004. Hierarchical Token Bucket Algorithm to Enhance QoS in IEEE 802.11: Proposal, Implementation dan Evaluation.

http://ieeexplore.ieee.org/iel5/9623/ 30413/01400539.pdf?arnumber=14 00539

Welzl, Michael. 2005. Network congestion control : managing Internet traffic. England:John Wiley & Sons Ltd.