• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
143
0
0

Teks penuh

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

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.

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

(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

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

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

(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

(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

(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

(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

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

(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

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

(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

(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

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

(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

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

(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

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

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

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

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

(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

(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

(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

(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

(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

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

[image:37.612.112.542.115.667.2]

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)
[image:38.612.113.543.148.550.2]

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

(39)
[image:39.612.115.540.63.653.2]

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)
[image:40.612.115.543.185.507.2]

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)

(41)
[image:41.612.115.543.69.570.2]

Gambar 2.6 Diagram HTB node C overload(Devera, 2002)

(42)
[image:42.612.113.535.67.505.2]

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)
[image:43.612.115.544.98.522.2]

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

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

(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

(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

(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

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

(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

(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

(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):

(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,

[email protected].

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.

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

[image:57.612.112.539.203.505.2]

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

(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

(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

(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

(63)

perlu melakukan antisipasi terhadap berbagai perubahan di kemudian hari. Dengan desain yang simpel apabila terjadi perubahan maka membuat desain baru untuk mengatasi perubahan tersebut dapat dengan mudah dilakukan dan resiko kegagalan desain dapat diperkecil.

5. Refactoring

Refactoring adalah salah satu aspek paling khas dari XP. Refactoring

seperti didefinisikan oleh Martin Fowler adalah ”Melakukan perubahan pada kode program dari perangkat lunak dengan tujuan meningkatkan kualitas dari struktur program tersebut tanpa mengubah cara program tersebut bekerja”.

Refactoring sendiri sangat sesuai untuk menjadi bagian XP karena Refactoring

mengusung konsep penyederhanaan dari proses desain maupun struktur baris kode program. Dengan Refactoring tim pengembang dapat melakukan berbagai

usaha untuk meningkatkan kualitas program tanpa kembali mengulang-ulang proses desain. Fowler adalah salah satu kolega dekat dari Kent Beck karena itu tidak mengherankan bahwa cara berpikir mereka terhadap proses pengembangan perangkat lunak sangat mirip satu dengan lainnya.

6. Testing

XP menganut paradigma berbeda dalam hal tes dengan model pengembangan perangkat lunak lainnya. Jika pada pengembangan perangkat lunak lainnya tes baru dikembangkan setelah perangkat lunak selesai menjalani proses coding maka pada XP tim pengembang harus membuat terlebih dahulu

(64)

dahulu. Saat proses coding selesai dilakukan maka perangkat lunak diuji dengan

model tes yang telah dibuat tersebut. Pengetesan akan jauh lebih baik apabila dilakukan pada setiap unit perangkat lunak dalam lingkup sekecil mungkin daripada menunggu sampai seluruh perangkat lunak selesai dibuat. Dengan memahami tahap ini kita dapat melihat bahwa siklus pada XP adalah

requirement analysis test code design. Sekilas terlihat hal ini tidak

mungkin dilakukan tetapi pada kenyataannya memang gambaran inilah yang paling dapat menjelaskan tentang XP.

7. Pair Programming

Pair programming adalah melakukan proses menulis program dengan

berpasangan. Dua orang programer saling bekerjasama di komputer yang sama untuk menyelesaikan sebuah unit. Dengan melakukan ini maka keduanya selalu dapat berdiskusi dan saling melakukan koreksi apabila ada kesalahan dalam penulisan program. Aspek ini mungkin akan sulit dijalankan oleh para programer yang memiliki ego tinggi dan sering tidak nyaman untuk berbagi komputer bersama rekannnya.

8. Collective Ownership

(65)

dapat diperkecil. Pada level yang lebih tinggi bahkan dimungkinkan para programer dapat bertukar unit yang dibangunnya.

9. Coding Standards

Pair programming dan collective ownership hanya akan dapat berjalan

dengan baik apabila para programer memiliki pemahaman yang sama terhadap penulisan kode program. Dengan adanya coding standards yang telah disepakati

terlebih dahulu maka pemahaman terhadap program akan menjadi mudah untuk semua programer dalam tim. Hal ini dapat diterapkan sebagai contoh pada penamaan variabel dan penggunaan tipe data yang sama untuk tiap elemen semua record atau array pada program.

10. Continous Integration

Melakukan build setiap hari kerja menjadi sebuah model yang disukai oleh

berbagai tim pengembang perangkat lunak. Hal ini terutama didorong oleh keberhasilan penerapan sistem ini oleh Microsoft dan telah sering dipublikasikan. Dengan melakukan build sesering mungkin berbagai kesalahan

pada program dapat dideteksi dan diperbaiki secepat mungkin. Apabila banyak tim pengembang perangkat lunak meyakini bahwa build sekali sehari adalah

minimum maka pada XP hal tersebut adalah maksimum. Pada XP tim disarankan untuk melakukan build sesering mungkin misalnya setiap 4 jam atau

bahkan lebih cepat lagi.

(66)

Beck berpendapat bekerja 8 jam sehari dan 5 hari seminggu adalah maksimal untuk tiap programer. Lebih dari itu programer akan cenderung membuat berbagai error pada baris-baris kode programnya karena kelelahan.

12. On-Site Customer

Sebuah pendekatan klasik, di mana XP menganjurkan bahwa ada anggota dari klien yang terlibat pada proses pengembangan perangkat lunak. Yang lebih penting lagi ia harus ada di tempat pemrogaman dan turut serta dalam proses build dan test yang dilakukan. Apabila ada kesalahan dalam pengembangan diharapkan klien dapat segera memberikan masukan untuk koreksinya.

2.6.3. Extreme Programming Software Development Process.

Gambar 2.14 XP Software Development Process(Pressman, 2005)

XP mencakup beberapa aturan dan praktek yang terdiri atas planning, design, coding dan test(Pressman, 2005). Berikut penjelasan dari masing-masing tahapan yang akan dilakukan pada pembuatan aplikasi ini,

1. Planning.

planning

Design

coding

(67)

Pada tahap ini perencanaan terhadap software yang diinginkan mengacu pada

user stories. User stories menggambarkan fitur dan fungsi yang dibutuhkan

terhadap software tersebut. Ketika semua user stories telah ditentukan, developer akan menentukan lama pengerjaan untuk tiap-tiap user stories.

2. Desain.

Proses desain pada XP mengikuti prinsip KIS(Keep It Simple). Desain akan berisikan semua implementasi dari stories tanpa ada pengurangan maupun penambahan. Desain yang memiliki fungsi tambahan tidak disarankan.

XP menggunakan CRC(Class-Responsibility-Collaborator) cards untuk mengidentifikasi dan mengorganisasikan kelas berorientasi objek yang berkaitan dengan proses pengembangan software.

Jika terdapat kesulitan untuk melakukan desain terhadap stories, XP menyarankan untuk membuat prototype dari desain tersebut. Hal tersebut disebut sebagai spike solution, prototype nantinya akan diimplementasikan dan dievaluasi.

XP menyarankan refactoring, sebuah teknik pengembangan yang juga teknik desain. Fowler mendeskripsikan refactoring sebagai berikut:

“Refactoring adalah proses perubahan sebuah system software dengan satu

cara yang tidak merubah behaviour eksternal dari kode yang meningkatkan

struktur internal. Hal ini adalah cara untuk membersihkan

Gambar

Gambar 2.1 Prioritas pengiriman paket (Devera, 2002)
Gambar 2.2 Prioritas Paket (Devera, 2002)
Gambar 2.3 Diagram HTB(Devera, 2002)
Gambar 2.5 Diagram HTB node D overload. (Devera, 2002)
+7

Referensi

Dokumen terkait