Monday, April 2, 2007

BANDWIDTH MANAGEMEN dgn HTB

1. Pendahuluan

Dokumen ini adalah tutorial menggunakan TC (Traffic Control) dengan HTB (Hierarchical Token Bucket) untuk melakukan management traffic di sebuah Linux mesin.Tutorial ini diperuntukan untuk System Administrator yg sudah punya :

* minimal mengerti dasar dari traffic control
* setidaknya mengerti dasar dari iptables
* mengerti dasar perintah file editor di linux
* mengerti tentang compile kernel

1.1 Bagaimana Traffic Control bekerja ?

Traffic Control menjadi istilah diberikan kepada keseluruhan paket yang queuing subsistem di (dalam) suatu jaringan atau jaringan. Traffic Control terdiri dari beberapa operasi yang berbeda. Penggolongan adalah suatu mekanisme dimana untuk mengidentifikasi paket dan menempatkan [mereka/nya] di (dalam) kelas atau individu yang ada. Menjaga ketertiban mekanisme dimana membatasi banyaknya paket atau bytes di (dalam) suatu current yang mempertemukan penggolongan tertentu .

Penjadwalan menjadi pengambilan keputusan memproses dengan mana paket diperintah/dipesan dan [yang] re-ordered untuk transmisi. Membentuk menjadi proses dengan mana paket di/tertunda dan dipancarkan untuk menghasilkan suatu bahkan dan laju alir dapat diprediksi.

Ini banyak karakteristik suatu traffic control dapat dikombinasikan di (dalam) jalan kompleks untuk memesan/mencadangkan bandwidth untuk current tertentu (atau aplikasi) atau untuk membatasi jumlah bandwidth tersedia untuk aplikasi atau arus tertentu.

Salah satu [dari] konsep utama traffic control menjadi konsep token (penandaan). Suatu menjaga ketertiban atau implementasi membentuk harus mengkalkulasi banyaknya bytes atau paket yang (mana) sudah [lulus/lewat] tentang apa tingkat rate. Masing-Masing paket atau byte ( tergantung pada implementasi), sesuai dengan suatu token (penandaan), dan menjaga ketertiban atau implementasi membentuk akan hanya memancarkan atau lewat paket jika [itu] mempunyai suatu token tersedia.

Suatu kontainer [yang] berkenaan dengan metafora umum di mana suatu implementasi [menyimpan/pelihara] token nya menjadi bucket [itu]. Singkatnya, suatu bucket menghadirkan kedua-duanya banyaknya token yang (mana) dapat digunakan dengan segera ( ukuran dari bucket), dan tingkat di mana token diisi ulang ( seberapa cepat bucket mendapat/kan diisi kembali).

Di bawah linux, traffic control telah sudah menjadi sejarah suatu usaha yang kompleks. Tc command line tool menyediakan suatu alat penghubung kepada struktur inti yang (mana) melaksanakan yang membentuk, penjadwalan, menjaga ketertiban dan menggolongkan. Sintaksis [dari;ttg] perintah ini adalah, bagaimanapun, rahasia.



2. Apa itu HTB ?

Hierarchichal Token Bucket adalah suatu classful qdisc yang ditulis oleh martin Devera dengan suatu [yang] lebih sederhana satuan bentuk wujud parameter dibanding CBQ. Ada banyak dokumentasi pada [atas] lokasi pengarang dan juga pada [atas] Stef website Coene'S tentang HTB dan penggunaannya.

Di bawah adalah suatu ringkasan sket [menyangkut] HTB sistem. Secara konseptual, HTB adalah suatu jumlah yang berubah-ubah dari token bucket diatur di (dalam) suatu hirarki ( ya, kamu mungkin sudah bisa menggambarkan tanpa bantuan kalimatku). Mari kita mempertimbangkan skenario yang paling sederhana. Yang utama [yang] queuing disiplin di device dikenal sebagai root qdisc.


htb

The root qdisc akan berisi satu kelas (skenario kompleks bisa mempunyai berbagai kelas berkait dengan the root qdisc ). HTB kelas Tunggal ini akan diset dengan dua parameter, suatu tingkat tarip ( a rate) dan suatu ceil (a ceil). Nilai-Nilai ini harus merupakan yang sama untuk the top-level class, dan akan menghadirkan total bandwidth yang tersedia di link [jaringan].

Di HTB, rate berarti bandwidth yang dijamin dari yang tersedia untuk kelas yang ditentukan dan ceil (ceiling) adalah yang (mana) menandai (adanya) bandwidth maksimum untuk kelas yang diijinkan untuk mengkonsumsi. Bandwidth yang digunakan antara rate dan ceil itu meminjam dari suatu kelas parent, sarannya yang rate dan ceil menjadi yang sama di (dalam) kelas yang tertinggi [itu].Jumlah kelas child dapat dibuat di bawah kelas ini (parent), masing-masing [di/yang mana] dapat dialokasikan beberapa jumlah bandwidth yang tersedia dari kelas parent.

Di (dalam) kelas child ini, tingkat rate dan ceil parameter nilai-nilainya tidak perlu sama seperti saran untuk kelas parent. Ini mengijinkan kamu untuk memesan/mencadangkan suatu jumlah ditetapkan bandwidth [bagi/kepada] kelas tertentu . [Itu] juga mengijinkan HTB untuk mengkalkulasi perbandingan distribusi [dari;ttg] bandwidth tersedia kepada perbandingan dari kelas diri mereka. Ini harus [yang] lebih nyata di (dalam) contoh di bawah.

Implements Hierarchical Token Bucket adalah suatu classful yang queuing mekanisme untuk linux traffic control sistem, dan menyediakan tingkat rate dan ceil untuk mengijinkan pemakai untuk mengendalikan bandwidth kemutlakan ke kelas bandwidth [yang] tertentu seperti halnya menandai (adanya) perbandingan distribusi bandwidth ketika bandwidth ekstra menjadi tersedia (up to ceil).

Ingat ketika memilih bandwidth untuk kelas [yang] tertinggi mu (top-level class) bahwa traffic shaping hanya membantu jika kamu menjadi bottleneck antar[a] LAN mu dan Internet [itu]. khususnya, ini menjadi kasus di (dalam) lingkungan jaringan kantor dan rumah, [di mana/jika] suatu keseluruhan LAN dilayani oleh suatu DSL atau T1 koneksi.Dalam prakteknya, kamu mungkin perlu menetapkan bandwidth untuk kelas [yang] tertinggi mu ke bandwidth [yang] tersedia.



3. Installasi HTB dan Kompile Kernel3.1 Installasi HTB

Software Yang dibutuhkan :

* HTB Script
* kernel harus dukung HTB; kernel 2.4.20 ke atas

HTB Script dapat di download dari http://sourceforge.net/projects/htbinit/ .

HTB.INIT adalah suatu shell script yg berasal dari CBQ.INIT yang mempermudah pengaturan traffic control HTB-BASED di Linux. HTB ( Hierachical Token Bucket) adalah suatu disiplin antrian baru yang (mana) mencoba untuk memperbaiki kelemahan dari implementasi CBQ.

Installasinya mudah dengan hanya men-download file tersebut dan anda letakkan di file system init /etc/init.d/htb.init, perintah lengkapnya sebagai berikut :

shell> wget http://heanet.dl.sourceforge.net/sourceforge/htbinit/htb.init-v0.8.5
shell> cp htb.init-v0.8.5 /etc/init.d/htb.init
shell> chmod 755 /etc/init.d/htb.init
shell> mkdir /etc/sysconfig/htb
shell> chown root:root -R /etc/sysconfig/htb



3.2 Kompile Kernel >bagian QOS and/or fair queueing
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CLK_JIFFIES=y
# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
# CONFIG_NET_SCH_CLK_CPU is not set
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_ATM=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_NET_CLS_IND=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
# CONFIG_NET_CLS_ACT is not set
CONFIG_NET_CLS_POLICE=y



shell> make menuconfig
shell> make
shell> make modules_install install



4. Konfigurasi HTB

make sure (pastikan anda) sudah membuat direktori /etc/sysconfig/htb (dijelaskan secara detail di section berikutnya) dan file exec htb di /etc/init.d/htb.init .Perhatikan gambar berikut :

4.1 Membuat file konfigurasi HTB

4.1.1 Konfigurasi file downlink (1:1)
shell>mkdir /etc/sysconfig/htb
shell>touch /etc/sysconfig/htb/eth1
shell>touch /etc/sysconfig/htb/eth1-10.aa-dl
shell>touch /etc/sysconfig/htb/eth1-20.andi-dl
shell>touch /etc/sysconfig/htb/eth1-30.adi-dl
shell>touch /etc/sysconfig/htb/eth1-40.masterpop3-dl



eth1 eth1-10.aa-dl eth1-20.andi-dl eth1-30.adi-dl eth1-40.masterpop3-dl
R2Q=100 RATE=64Kbit
QUANTUM=1500
LEAF=sfq
RULE=10.10.10.2 RATE=64Kbit
QUANTUM=1500
LEAF=sfq
RULE=10.10.10.3 RATE=64Kbit
QUANTUM=1500
LEAF=sfq
RULE=10.10.10.4 RATE=64Kbit
QUANTUM=1500
LEAF=sfq
RULE=10.10.10.5



4.1.2 Konfigurasi file uplink (1:4)

shell>touch /etc/sysconfig/htb/eth0
shell>touch /etc/sysconfig/htb/eth0-10
shell>touch /etc/sysconfig/htb/eth0-10:20.aa-ul
shell>touch /etc/sysconfig/htb/eth0-10:30.andi-ul
shell>touch /etc/sysconfig/htb/eth0-10:40.adi-ul
shell>touch /etc/sysconfig/htb/eth0-10:50.masterpop3-ul



eth0


eth0-10
eth0-10:20.aa-ul eth1-10:30.andi-ul eth1-30.adi-ul eth1-40.masterpop3-ul
R2Q=100 RATE=64Kbit
QUANTUM=1500 RATE=16Kbit
QUANTUM=1500
CEIL=64Kbit
LEAF=sfq
RULE=10.10.10.2, RATE=16Kbit
QUANTUM=1500
CEIL=64Kbit
LEAF=sfq
RULE=10.10.10.3, RATE=16Kbit
QUANTUM=1500
CEIL=64Kbit
LEAF=sfq
RULE=10.10.10.4, RATE=16Kbit
QUANTUM=1500
CEIL=64Kbit
LEAF=sfq
RULE=10.10.10.5,



catatan: untuk konfigurasi file uplink, jika :Linux BOX anda di setting sebagai Router, maka anda akan memerlukan penandaan (MARK), yg di set mangling di dalam firewall iptables.Contoh :


ip : 10.10.10.2 akan di MARK=2 maka :
/sbin/iptables -t mangle -A PREROUTING -i eth1 -s 10.10.10.2 -d ! 10.10.10.0/24 -j MARK --set-mark 0x2

dan di tulis di file konfig uplinknya :
#eth0-10:20.aa-ul
RATE=16Kbit
QUANTUM=1500
CEIL=64Kbit
LEAF=sfq
MARK=2



5. Penutup

Contoh yang saya berikan di atas adalah untuk bandwidth management download 1:1 dan upload 1:4 . Sekarang pilihan terserah pada anda, memilih yg mana, semua bisa disesuaikan dengan kebutuhan.
Terimakasih ke :
http://www.tldp.org/HOWTO/Traffic-Control-HOWTO/index.html
http://www.tldp.org/HOWTO/Traffic-Control-tcng-HTB-HOWTO/
http://luxik.cdi.cz/~devik/qos/htb/
http://efnet.linux.or.id/docs/instalasi-htb-cbq.html

No comments: