Monday 26 July 2010

Bandwidth Limiter dengan HTB-Tools di Linux

hi friendz hari nie gw pengen berbagi ilmu na kmw skalian
tentang HTB-Tools! apakah kmw sudah tw tentang htb tools
HTB tools adalah aplikasi yang digunakan untuk SO linux
fungsi daripada aplikasi ini adalah untuk membagi bandwith

Instalasi HTB-Tools
bahan-bahan yang diperlukan:
* Htb-tools akan di install didalam gateway selain untuk routing juga untuk limiter, loe bisa
juga menggunakan bandwidth manager tersendiri yang di bridging diantara gateway dan isp,
tapi dalam hal ini gw tidak membahas dlm bagian ini.
* OS Linux , kernel yg mendukung QOS seharusnya distro-distro sekarang yg
memakai kernel >= 2.6 sudah mendukung module tsb. dalam hal ini sistem yang saya
gunakan adalah Debian punya PT   gw pinjem! wkwkwkwk

darkstar:/boot# cat /etc/debian_version
4.0
darkstar:/boot# uname -a
Linux darkstar 2.6.18-4-686 #1 SMP Mon Mar 26 17:17:36 UTC 2007 i686
GNU/Linux

lakukan pengecekan module

darkstar:/boot# cat /boot/config-2.6.18-4-686 |grep SCH
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
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_CHR_DEV_SCH=m
CONFIG_SENSORS_FSCHER=m
# CONFIG_USB_EHCI_TT_NEWSCHED is not set



* Paket htb-tools (http://htb-tools.arny.ro/download.php), versi yang saya gunakan 
htb_tools-0.2.6
* Paket iproute2 >= iproute2-2.6.10-ss050124 (http://developer.osdl.rg/dev/iproute2/download/)
* Paket flex kalau belum ada (http://flex.sourceforge.net/)
Saya tidak akan membahas cara-cara instalasi paket yg diperlukan oleh htb-tools, silahkan baca
manual/referensi dari masing-masing distro yg digunakan :).
Instalasi:
download htb-tools di http://htb-tools.arny.ro/download.php), versi yang saya gunakan
htb_tools-0.2.6, taruh di /tmp

darkstar:/tmp# cd /tmp/
darkstar:/tmp# cd /tmp/
darkstar:/tmp# tar -xvzf htb_tools-0.2.6.tar.gz
darkstar:/tmp# make
darkstar:/tmp# make install

Konfigurasi
Sebelum melakukan konfigurasi lebih lanjut, sebaiknya ada beberapa hal yang perlu kita ketahui
mengenai format konfigurasi htb-tools, sbb:
- format konfigurasi htb-tools mirip seperti format konfigurasi bind
- bandwidth masing-masing user di bagi menjadi class - class
- masing-masing class tidak dapat membagi/meminjam bandwidth dari kelas lain
- anggota dari sebuah class (client) dapat saling berbagi bandwidth sesuai dengan yang telah di
definisikan sebelumnya
- sebuah class bisa terdiri dari 1 atau lebih client
- transfer rate dalam kbit
- baris yang memiliki # di karakter pertama suatu baris akan diabaikan / dianggap komentar
- field src dan dst hanya dapat didefinisikan di dalam client BUKAN di class
Sintak class
- bandwidth 192 : minimum bandwidth yang di guarantee dari suatu class; merepresentasikan
jumlah toal bandwidth yang di guarantee untuk client dari suatu class
- limit 256 : maksimum transfer rate dari suatu class
- burst 2 : maksimum jumlah kbits yang di kirim sekali waktu oleh suatu class
Note: jika di set dengan nilai yang tidak benar, limit mungkin t idak akan berkerja dengan benar.
contoh: untuk limit 10000kbit maka gunakan burst 12kbit
- burst 0 : HANYA di HTB-tools 0.3.0 - jika di set 0 maka htb tools akan menghitung jumalh
burst nya.
- priority 1 : priority class (priority 0 - 7) secara ascending (dari kecil ke besar). prioritas paling
kecil akan di prioritaskan
- que sfq : menspesifikasikan qdisc (queue discipline) untuk class, jika tidak di spesifikasikan
defaultnya adalah pfifo limit 5 (atau esfq) (http://fatooh.org/esfq-2.6/)
Untuk menerapkan htb-tools saya coba membuat sebuah contoh konfigurasi sederhana dengan 3
buah client dan 1 router, dan andaikan kita mempunyai bandwidth 256kbps (download dan
upload) dari ISP akan dibagikan ke 3 client, berikut skemanya :










Router
eth1 (local/internal interface) : 192.168.1.1/32
eth0 (public/external interface) : 124.xxx.xxx.xxx/32
pc1: 192.168.1.2/32
pc2: 192.168.1.3/32
pc3: 192.168.1.4/32
kita menginginkan pc1 dialokasikan download dan upload (128kbps), pc2 dan pc3 dialokasikan
(64kbps) dan jika salah satu client tidak menggunakan bandwidth maka client lain dapat
meminjam dari client tsb.

darkstar:/tmp# cd /etc/htb 

konfigurasi untuk download (dalam kasus ini kita limit di interface internal eth0)

darkstar:/etc/htb# vi eth0-qos.cfg
# DOWNLOAD
class LAN_1 {
   bandwidth 256; # garansi bandwidth yg dialokasikan untuk LAN
   limit 256; # maksimal bandwidth yang bisa dicapai untuk LAN
   burst 2;
   priority 1;
   que sfq;
   client pc1 {
        bandwidth 128; # garansi bandwidth yang di alokasikan untuk pc1
        limit 192; # bandwidth maksimal yg bisa di capai untuk pc1
        burst 2;
        priority 1;
        dst {
             192.168.1.2/32;
        };
  };
  client pc2 {
       bandwidth 64;
       limit 96;
       burst 2;
       priority 1;
       dst {
             192.168.1.2/32;
        };
  };
  client pc3 {
       bandwidth 64;
       limit 96;
       burst 2;
       priority 1;
       dst {
             192.168.1.2/32;
      };
  };
};

Konfigurasi upload
darkstar:/etc/htb# vi eth1-qos.cfg
# UPLOAD
class LAN_1 {
  bandwidth 256;
  limit 256;
  burst 2;
  priority 1;
  que sfq;
  client pc1 {
       bandwidth 128;
       limit 192;
       burst 2;
       priority 1;
       src {
             192.168.1.2/32;
       };
};
client pc2 {
     bandwidth 64;
     limit 96;
     burst 2;
     priority 1;
     src {
          192.168.1.2/32;
     };
};
client pc3 {
     bandwidth 64;
     limit 96;
     burst 2;
     priority 1;
     src {
           192.168.1.2/32;
     };
 };
};
Test config dan jalankan shapper
darkstar:/etc/htb# htb eth0 start

Applying traffic rules for device eth0
Checking the config file....OK
Checking kernel support for HTB: present.
Delete previous root qdisc
Add root qdisc
Add root class
Add default class
"rate" is required.
RTNETLINK answers: Invalid argument

Add class LAN_1, que sfq 
Add client pc3
 
darkstar:/etc/htb# htb eth1 start
 
Applying traffic rules for device eth1
Checking the config file....OK
Checking kernel support for HTB: present.
Delete previous root qdisc
Add root qdisc
Add root class
Add default class
"rate" is required.
RTNETLINK answers: Invalid argument
 
Add class LAN_1, que sfq
Add client pc3
 

Untuk melihat/monitoring status htb jalankan :
 
darkstar:/etc/htb# htb eth0 stats
darkstar:/etc/htb# htb eth1 stats


lakukan percobaan download/upload dari pc1, pc2 dan pc3.

1 comment: