Implementasi CBQ Dengan Linux
Belakangan ini banyak ISP yang memberikan layanan broadband Internet dengan bandwidth yang sangat besar mulai dari 512Kbps hingga 2Mbps. Umumnya layanan ini digunakan oleh Warung Internet dan perusahaan-perusahaan yang bergerak dibidang Internet. Sekarang tinggal bagaimana mengatur bandwidth sebesar itu agar dapat dimanfaatkan bersama secara “adil”. Artikel ini akan membahas mengenai pembuatan sebuah bandwidth manager yang secara transparan dapat diletakkan pada jaringan yang telah ada.
1. Pengenalan QoS
Mungkin Anda semua sudah mengetahuinya, QoS adalah singkatan dari Quality of Service. Tetapi apa artinya? Apa yang bisa Anda lakukan untuk mengimplementasikannya?
QoS artinya network yang telah memenuhi kriteria-kriteria tertentu yang dibuat oleh manager-manager network tersebut. Kriteria tersebut termasuk:

a.Availability, yaitu persentase hidupnya sistem atau layanan yang diberikan. Idealnya, availability harus mencapai 100% atau setidaknya 99,9999% (ada 6 buah angka sembilan), yang menunjukkan tingkat kerusakan sebesar 2,6 detik per bulan.

b.Bandwidth Usages, yaitu masing-masing user akan diberikan bandwidth sesuai kebutuhan mereka. Selain berdasarkan user, pemakaian bandwidth juga dapat dibagi berdasarkan jenis traffic atau jenis protocol. Misalnya, untuk traffic HTTP dialokasikan bandwidth sebesar 40%, untuk voice 25%, sisanya untuk ftp dan lain-lain. Yang terakhir ini sering disebut dengan “traffic shaper”.

c.Throughput, yaitu kecepatan (rate) transfer data efektif, yang diukur dalam bps (bit per second). Penggunaan sebuah saluran secara bersama-sama akan mengurangi nilai ini.

d.Latency, adalah waktu yang dibutuhkan data untuk menempuh jarak dari asal ke tujuan. Tundaan (delay) ini dapat dipengaruhi oleh jarak (misalnya akibat penggunaan wireless LAN), atau kongesti (yang memperpanjang antrian), atau bisa juga akibat waktu olah yang lama (misalnya proses baca-tulis pada sebuah proxy server).

e.Packet Loss, yaitu jumlah paket yang hilang. Umumnya perangkat network memiliki buffer untuk menampung data yang diterima. Jika terjadi kongesti yang cukup lama, buffer akan penuh, dan data baru tidak dapat diterima. Paket yang hilang ini harus diretransmisi, yang akan membutuhkan waktu tambahan.

Ada banyak kriteria-kriteria lain yang dapat ditentukan oleh seorang manager network disebuah perusahaan Lebih lengkap mengenai QoS dapat dilihat di http://www.qosforum.com/tech_resources.htm
Pada kasus tertentu, sebuah perusahaan bahkan memilih ISP yang telah memiliki service-level agreements, atau SLA. Dengan adanya perjanjian ini, perusahaan tersebut dijamin akan mendapatkan layanan sesuai yang diiklankan oleh ISPnya atau akan mendapat kompensasi apabila layanan tersebut tidak sesuai yang diharapkan.
Artikel ini secara khusus akan membahas bagaimana sebuah akses Internet berkecepatan tinggi (broadband Internet access) dapat dimanfaatkan bersamaan oleh beberapa karyawan di sebuah perusahaan. Dengan menggunakan sebuah fasilitas bandwidth manager, masing-masing karyawan akan dialokasikan dengan bandwidth sesuai kebutuhan mereka.

2. Linux Ethernet Bridge
Kita akan menganggap perusahaan ini memiliki jaringan komputer yang telah berjalan baik, termasuk akses ke Internetnya. Perusahaan ini telah lama memanfaatkan Linux sebagai Gateway ke Internet menggunakan IP-Masquerade. Karena penggunaan bandwidth yang tidak teratur, maka salah seorang karyawan yang men-download sebuah file MP3 berukuran besar akan mengganggu karyawan lain yang hanya menggunakan Internet untuk email dan browsing.
Anda sebagai seorang staff Network-nya diberi tugas oleh atasan untuk mengimplementasikan bandwidth manager tanpa merubah topologi logik jaringan yang telah ada. Artinya, Anda diharapkan untuk dapat mengimplementasikannya tanpa harus mengutak-ngatik konfigurasi yang telah ada pada komputer client. Selain itu, Anda juga dianjurkan oleh atasan untuk tidak merubah konfigurasi pada server.
Solusinya adalah dengan menjalankan CBQ pada sebuah Linux Bridge. Keterangan mengenai CBQ akan dijelaskan di poin berikutnya pada artikel yang sama.
Membuat Bridge
Ada beberapa syarat yang harus dipenuhi pada sebuah bridge:
•Sebuah port hanya dapat menjadi anggota dari satu bridge
•Sebuah bridge tidak perlu mengetahui rute yang akan dilaluinya
•Sebuah bridge tidak mengetahui protocol yang lebih tinggi dari ARP. Itulah sebabnya ia dapat membawa berbagai macam protocol yang dilalui ethernet pada bridge tersebut.
•Berapa pun banyaknya port yang akan menjadi anggota sebuah bridge, ia akan dianggap satu interface logik.
Bila Anda pernah mencoba untuk nge-ping sebuah unmanaged switch, tentunya Anda tahu bahwa itu tidak akan berhasil karena switch tersebut tidak memiliki IP address.
Tetapi bila Anda ingin melakukan perubahan konfigurasi pada bridge, Anda dapat menggunakan SNMP, telnet, rlogin, atau ssh. Dianjurkan untuk menggunakan SSH. Source code bridge yang baru memungkinkan Anda untuk mengalokasikan IP terhadap interface virtualnya.
Catatan: Bridge berfungsi sama seperti sebuah switch.
Sekarang mari kita mulai membuat bridge di Linux. Pada artikel ini, penulis menggunakan Linux RedHat 7.1 dengan kernel 2.4.2-2 yang tidak dimodifikasi. Dengan kata lain, kernel ini sudah mendukung program bridge control yang nantinya akan kita download. Tetapi bila Anda menggunakan kernel 2.2.x, silahkan lihat situs berikut untuk mengetahui bagaimana fungsi bridge dapat di patch: http://www.linuxdoc.org/HOWTO/BRIDGE-STP-HOWTO/preparing-the-bridge.html
Berikutnya, download program bridge-utils dari http://bridge.sourceforge.net/bridge-utils.html. Pada saat penulisan artikel ini, penulis menggunakan versi 0.9.3. Untuk mendownload source codenya gunakan link ini: http://bridge.sourceforge.net/bridge-utils/bridge-utils-0.9.5.tar.gz sedangkan untuk binary i386: http://bridge.sourceforge.net/bridge-utils/bridge-utils-0.9.5-1.i386.rpm.
Pada Linux RedHat 7.1, lakukan perintah berikut untuk mendownload versi RPM dan menginstall bridge-utils:
[aksha@becak ~]$ su –
Password:
[root@becak /root]# mkdir download; cd download
[root@becak download]# wget “http://bridge.sourceforge.net/bridge-utils/bridge-utils-0.9.3-1.i386.rpm”
[root@becak download]# rpm –i bridge-utils-0.9.3-1.i386.rpm
Pada tahap ini, sebuah file binary /sbin/brctl telah terinstall. Ketik brctl untuk melihat beberapa opsi program tersebut.
Setup Bridge
Perlu diperhatikan bahwa pada komputer yang akan dijadikan bridge ini memiliki dua network card (eth0 dan eth1). Kedua-duanya yang akan dijadikan anggota sebuah bridge.
•Membuat bridge dengan nama ‘jembatan’:
[root@becak /root]# brctl addbr jembatan
Untuk mematikannya gunakan: brctl delbr jembatan
•Menambah interface pada bridge:
[root@becak /root]# ifconfig eth0 0.0.0.0
[root@becak /root]# ifconfig eth1 0.0.0.0
[root@becak /root]# ifconfig eth0 promisc up
[root@becak /root]# ifconfig eth1 promisc up
[root@becak /root]# brctl addif jembatan eth0
[root@becak /root]# brctl addif jembatan eth1
Perhatikan bahwa interface-interface tersebut dalam keadaan ‘promisc’ dan tanpa IP. Sekarang aktifkan bridge ‘jembatan’ dengan perintah:
[root@becak /root]# ifconfig jembatan up
Bila ingin menambahkan IP pada bridge untuk kemudahaan manajemen nantinya, gunakan:
[root@becak /root]# ifconfig jembatan 192.168.1.254 up
Dengan demikian anda dapat login ke PC bridge ini dengan telnet atau ssh dengan menggunakan IP 192.168.1.254.
Setelah selesai, masukkan perintah-perintah di atas di dalam script /etc/rc.d/rc.local agar dapat dijalankan setiap saat komputer di boot.
Anda juga dapat mendownload antarmuka grafis (GUI) untuk mengkonfigurasi bridge dari: http://home.planet.nl/~kristian/gbrctl.html

Gambar 1. Test Bridge

Test bridge ini dengan cara menghubungkan kedua interface eth0 dan eth1 dengan kabel cross, masing-masing ke sebuah PC. Coba ping dari satu PC ke PC lain dan sebaliknya. Bila berhasil, maka sebuah ethernet bridge telah siap digunakan.
3. CBQ
Berikutnya adalah mengaktifkan CBQ untuk mengatur jumlah bandwidth masing-masing PC yang terhubung melalui bridge kita. Perhatikan rencana pemasangan CBQ pada Gambar 2.

Sekali lagi, penulis menggunakan Linux RedHat 7.1 yang juga telah dilengkapi dengan program CBQ. Tetapi penulis tetap berkeras untuk menggunakan rilis terbaru CBQ yaitu versi 0.6.2 yang dapat di download dari: ftp://ftp.equinox.gu.net/pub/linux/cbq/cbq.init
Setelah di download letakkan di dalam direktori /sbin:
[root@becak download]# wget “ftp://ftp.equinox.gu.net/pub/linux/cbq/cbq.init”
[root@becak download]# chmod 755 cbq.init
[root@becak download]# cp cbq.init /sbin/cbq
cp: overwrite ‘/sbin/cbq’? y
Semua konfigurasi CBQ akan diletakkan di dalam direktori /etc/sysconfig/cbq.
Sedikit tentang CBQ. CBQ adalah kependekan dari class based queueing, yaitu sebuah ethernet shaper yang dapat dijalankan di Linux. CBQ hanya dapat menggunakan interface Ethernet untuk Linux (eth0, eth1, eth2, …) dan ARCNET. Untuk ARCNET, tukar parameter bandwidth menjadi 2Mbit dan bukannya 10Mbit seperti pada ethernet.
Untuk menjalankan CBQ diperlukan utilitas iproute2 yang dibuat oleh Alexey Kuznetsov dan dapat di download dari: ftp://ftp.inr.ac.ru/ip-routing. Tetapi pada distro yang penulis gunakan, iproute2 telah terinstall dengan baik.
Bagaimana CBQ bekerja? Baiklah. Setiap shaper akan ditulis pada sebuah file konfigurasi yang secara default terletak di dalam direktori /etc/sysconfig/cbq. Satu file per satu shaper / class.
Penamaan file konfigurasinya harus seperti: cbq-<classid>.<nama> dimana <classid> adalah dua byte heksadesimal dalam kisaran <0002-FFFF> yang merupakan class ID CBQ. Sedangkan <nama> adalah nama dari shaper itu sendiri. Anda dapat menentukannya sesuka hati. Misalnya sesuai dengan Gambar 2, kita akan menamakan sebuah file konfigurasi CBQ dengan: cbq-1280.nisayudo
File konfigurasi CBQ akan dibagi kedalam beberapa paramater. Berikut adalah beberapa paramater yang akan kita gunakan pada artikel ini.
Parameter Divais
DEVICE=<ifname>,<bandwidth>,<weight>
Contoh: DEVICE=eth0,10Mbit,1Mbit
<ifname> adalah nama interface yang akan diatur. Misalnya eth0. <bandwidth> adalah bandwidth fisik dari divais tersebut, misalnya 10Mbit atau 100Mbit untuk ethernet atau 2Mbit untuk arcnet. Sedangkan <weight> adalah parameter yang dapat ditentukan dengan rumus: <weight> = <bandwidth> / 10
Bila terdapat lebih dari satu class pada satu divais, Anda cukup mengisi <bandwidth> dan <weight> sekali saja. Sedangkan pada file-file lainnya hanya isikan: DEVICE=<ifname>.
Parameter Class
RATE=<speed>
Contoh: RATE=128Kbit
Adalah bandwidth yang dialokasikan pada class tersebut. Dengan cara ini kita dapat membatasi (limit) kecepatan dari shaper. Anda dapat menggunakan akhiran Kbit, Mbit, bps, Kbps, atau Mbps.
WEIGHT=<speed>
Contoh: WEIGHT=12Kbit
Dapat ditentukan dengan cara: WEIGHT = RATE / 10
PRIO=<1-8>
Contoh: PRIO=5
Prioritas trafik dari class bersangkutan. Semakin tinggi angkanya, semakin kecil prioritasnya. Umumnya digunakan prioritas 5.
Parameter Filter
RULE=[[saddr[/prefix]][:port],][daddr[/prefix]][:port]
Contoh: RULE=192.168.1.4
Anda dapat menggunakan lebih dari satu RULE per satu file konfigurasi. RULE digunakan untuk mem-filter trafik apa yang akan diatur. Contoh lainnya:
RULE=192.168.1.4:80
Memfilter trafik yang ditujukan kepada port 80 pada IP 192.168.1.4
RULE=192.168.1.0/24
Filter seluruh trafik yang terdapat di network 192.168.1.0
Keterangan tambahan mengenai parameter-parameter CBQ dapat Anda lihat di dalam file cbq.init itu sendiri.
Dari Gambar 2, kita akan membuat CBQ untuk mengatur bandwidth terhadap IP-IP tertentu. Perlu diperhatikan bahwa interface eth1 adalah yang menghubungi antara CBQ Bridge dengan network 192.168.1.0/24 (HUB). Buatlah file-file berikut di dalam direktori /etc/sysconfig/cbq:
== cbq-64.gitastefanny
DEVICE=eth1,10Mbit,1Mbit
RATE=64Kbit
WEIGHT=6Kbit
PRIO=5
RULE=192.168.1.5
RULE=192.168.1.6
== cbq-48.bagusdanny
DEVICE=eth1
RATE=48Kbit
WEIGHT=4Kbit
PRIO=5
RULE=192.168.1.1
RULE=192.168.1.3
== cbq-128.yudonisa
DEVICE=eth1
RATE=128Kbit
WEIGHT=12Kbit
PRIO=5
RULE=192.168.1.2
RULE=192.168.1.4
Setelah semua file konfigurasi dibuat, jalankan CBQ dengan cara:
[root@becak /root]# /sbin/cbq start
Untuk melihat statistik CBQ jalankan:
[root@becak /root]# /sbin/cbq stats
Sedangkan untuk mematikan CBQ:
[root@becak /root]# /sbin/cbq stop
Dengan dijalankannya CBQ pada bridge tersebut, komputer-komputer pada Gambar 2 telah dialokasikan bandwidth sesuai aturan yang telah dibuat. Anda dapat mencoba dari masing-masing komputer dengan cara mendownload sebuah file yang terdapat di server Linux Gateway, misalnya. Atau dengan mengaktifkan SNMP agent di masing-masing PC dan memonitor trafik masing-masing komputer menggunakan MRTG (http://www.ee.ethz.ch/~oetiker/webtools/mrtg/).
4. Penutup
Perintah-perintah bridge dan CBQ di atas dapat diletakkan di dalam file /etc/rc.d/rc.local agar selalu diaktifkan pada saat komputer di boot. Pada artikel ini hanya dibahas bagaimana CBQ dapat digunakan untuk membatasi penggunaan bandwidth per alamat IP tertentu. Sedangkan CBQ sebenarnya lebih dari sekedar pembatas bandwidth per IP. Ia juga dapat digunakan untuk membatasi trafik Internet seperti trafik HTTP (web), mail, ftp, dan lain-lain. Selain itu CBQ juga memiliki fitur untuk mengatur bandwidth pada jam-jam tertentu. Dengan memanfaatkan fasilitas-fasilitas pada CBQ, Anda dapat membuat sebuah bandwidth manager murah yang hanya memanfaatkan PC.

About these ads