HTB (Hierarchical Token Bucket)

Backup dari http://aa.cakralintas.net.id

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 dasar :

  • mengerti dasar dari traffic control
  • mengerti dasar dari iptables
  • mengerti dasar perintah file editor di linux
  • mengerti tentang compile kernel

Bagaimana Traffic Control bekerja ?

Traffic Control menjadi istilah diberikan kepada keseluruhan paket antrian (queuing) di jaringan. Traffic Control terdiri dari beberapa operasi yang berbeda. Penggolongan adalah suatu mekanisme dimana untuk mengidentifikasi paket dan menempatkannya di dalam kelas atau individu yang ada. Menjaga ketertiban mekanisme dimana membatasi banyaknya paket atau bytes di suatu rule yang mempertemukan penggolongan tertentu .

Penjadwalan menjadi pengambilan keputusan memproses dengan mana paket diperintah/dipesan dan yang dipesan-lagi untuk transmisi. Membentuk menjadi proses mana paket yang di/tertunda dan dipancarkan untuk menghasilkan sesuatu traffic yang dapat diprediksi.

Ini banyak karakteristik suatu traffic control dapat dikombinasikan untuk mencadangkan bandwidth untuk rule tertentu atau untuk membatasi jumlah bandwidth tersedia untuk aplikasi atau traffic tertentu.

Salah satu dari konsep utama traffic control adalah konsep token (penandaan). Menjaga ketertiban atau implementasi menghitung banyaknya bytes atau paket mana lewat dengan tingkat rate nya. Masing-Masing paket atau byte ( tergantung pada implementasi), sesuai dengan suatu token.

Suatu kontainer (kumpulan paket besar) yang berhubungan dengan suatu implementasi yang menyimpan token nya menjadi bucket (seperti kumpulan2 paket2 dalam ember). Singkatnya, suatu bucket menghadirkan banyaknya token yang 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 melaksanakan untuk membentuk, penjadwalan, menjaga ketertiban dan penggolongan.

Apa itu HTB ?

Hierarchichal Token Bucket adalah suatu classful qdisc yang ditulis oleh martin Devera dengan yang lebih sederhana bentuk parameternya dibanding CBQ. Ada banyak dokumentasi tentang HTB dan penggunaannya.

Di bawah adalah suatu ringkasan skema HTB sistem. Secara konseptual, HTB adalah suatu jumlah yang berubah-ubah dari token bucket diatur dalam suatu hirarki ( susunan terstruktur). Mari kita mempertimbangkan skenario yang paling sederhana. seperti queuing disiplin device yang dikenal sebagai root qdisc.


The root qdisc akan berisi satu kelas (skenario kompleks bisa mempunyai berbagai kelas yang berkaitan 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 atau jaringan.

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

Di kelas child, tingkat rate dan ceil parameter nilai-nilainya tidak perlu sama tidak seperti kelas parent. Rule ini mengijinkan untuk mencadangkan jumlah bandwidth yang ditetapkan pada kelas tertentu . Itu juga mengijinkan HTB untuk mengkalkulasi perbandingan distribusi dari bandwidth tersedia pada perbandingan dari kelas mereka sendiri.

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

Ingat ketika memilih bandwidth untuk kelas yang tertinggi (top-level class) bahwa traffic shaping hanya membantu jika kamu menjadi bottleneck antara LAN dan Internet. seperti, contoh kasus di lingkungan jaringan kantor dan rumah.

Installasi HTB dan Kompile Kernel

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 dimana 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 :

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

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

Kemudian lakukan proses compile kernel, mudah koq…

~]#make menuconfig
~]#make
~]#make modules_install install

Konfigurasi HTB

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 :

Membuat file konfigurasi HTB
Konfigurasi file downlink (1:1)

~]#mkdir /etc/sysconfig/htb
~]#touch /etc/sysconfig/htb/eth1
~]#touch /etc/sysconfig/htb/eth1-10.aa-dl
~]#touch /etc/sysconfig/htb/eth1-20.andi-dl
~]#touch /etc/sysconfig/htb/eth1-30.adi-dl
~]#touch /etc/sysconfig/htb/eth1-40.masterpop3-dl

file downlink:

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


Konfigurasi file uplink (1:4)

~]#touch /etc/sysconfig/htb/eth0
~]#touch /etc/sysconfig/htb/eth0-10
~]#touch /etc/sysconfig/htb/eth0-10:20.aa-ul
~]#touch /etc/sysconfig/htb/eth0-10:30.andi-ul
~]#touch /etc/sysconfig/htb/eth0-10:40.adi-ul
~]#touch /etc/sysconfig/htb/eth0-10:50.masterpop3-ul

file uplink:

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



catatan:

untuk konfigurasi file uplink, jika: Linux Box anda di setting sebagai Gateway (NAT Enabled), 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

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 pada :
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

Tags: , , , , 1,327 views

5 Responses to “HTB (Hierarchical Token Bucket)”

  1. ri says:

    pas bagian:

    Kompile Kernel >bagian QOS and/or fair queueing

    maksudnya apa ya?

    *binun

  2. itu bagian dari proses “make menuconfig” dan sebagai referensi saja, untuk bagian QoS yg dikompile.
    biasanya sih defaultnya kernel sudah incluce QoS tersebut, jadi anda hanya mengecheck saja, kalau sudah include lanjutkan proses berikutnya.

  3. wahyu prio says:

    teman2 slam kenal…

    saya mohon bantuannya….untuk melimit aplikasi sprti ftp,icmp, dll menggunakan mark iptables bgmana caranya…sy belum paham….

    thnks…

  4. wahyu says:

    Mas, aq mo buat konfigurasi HTB dengan web base
    mohon bantuannya coz nih lg kesulitan udah googling tp msh sedikit
    yg ngebahas ttg ini
    ada sih aplikasi yg udah ada namanya myhtb tp waktu dilakukan penginstallan
    scriptnya ada yg g beres
    thnk mohon bantuan

  5. Mujib Like says:

    salam,,,,,!
    waduh yang lain pd n? Mengkompai Kernel, melimit aplikasi ftp, kofigurasi dg HTB,
    justru sy malah mw n? Tugas Akhir / skripsi ada yg tau gak situs2 yang ngebahas mslh traffic Control tolong ya Bang.

Leave a Reply