INSTALASI HTB (Hierachical Token Bucket)
Dan
CBQ (Class-Based Queueing)
Hanny Wijaya (hanny@rsds.or.id)
, irc.efnet.net #indolinux

12-11-2003


Alangkah baiknya siapkan satu pak rokok (A mild) dan makanan ringan :). Distro yang digunakan adalah Redhat Linux 7.2. dan 7.3 .Tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Semoga bermanfaat dan memajukan opensource software di Indonesia.

Pastikan login pada server anda adalah sebagai root

1. Instalasi Kernel 2.4.22
Untuk instalasi kernel, anda bisa membaca artikel mas asfik dengan judul kompilasi kernel 2.4.x di linux
dan tambahankan
bagian QOS and/or fair queueing
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_CSZ=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_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_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_POLICE=y


1.1 Atau install kernel cara saya (semoga anda beruntung!!)

[root@probiotik hanny]#cd /usr/src
[root@probiotik src]#wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.22.tar.gz
[root@probiotik src]#tar -xzvf linux-2.4.22.tar.gz
[root@probiotik src]#ln -s linux-2.4.22 linux
[root@probiotik src]#cd linux
[root@probiotik linux]#make mrproper

Anda bisa copy salinan dari config kernel saya
[root@probiotik linux]#wget http://www.rsds.or.id/linux/configure/config-kernel.2.4.22.hanny
[root@probiotik linux]#mv config-kernel.2.4.22.hanny .config

Tambahkan atau Kurangi hadware pendukung yang anda punya, seperti :
Processor type and features --->
SCSI support --->
Network device support --->
Amateur Radio support --->
IrDA (infrared) support --->
Sound --->
USB support --->
Bluetooth support --->

[root@probiotik linux]#make menuconfig
[root@probiotik linux]#make modules; make modules_install
[root@probiotik linux]#make bzImage
[root@probiotik linux]#cp System.map /boot/System.map-2.4.22
[root@probiotik linux]#cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22

1.2 Tambahkan kernel baru anda pada lilo.conf
[root@probiotik linux]#vi /etc/lilo.conf

#--------Isi lilo.conf------------
prompt
boot=/dev/hda
timeout=50
message=/boot/message
install=/boot/boot.b
root=/dev/hda2
default=2.4.22
linear

#kernel lama
image=/boot/vmlinuz-2.4.7-10
label=2.4.7-10
root=/dev/hda2
read-only
initrd=/boot/initrd-2.4.7-10.img

#kernel baru
image=/boot/vmlinuz-2.4.22
label=2.4.22
root=/dev/hda2
read-only
#--------------------------------

1.3 Lalu restart linux anda
[root@probiotik linux]#reboot

1.4
Cek kernel anda
[root@probiotik hanny]#uname -a
Linux probiotik 2.4.22 #2 Wed Nov 12 12:55:20 WIT 2003 i686 unknown


2. Upgrade Iptables
Untuk menghindari agar iptables linux anda masih tetap berjalan dan tidak ada troble karena kernel, sebaiknya anda upgrade iptables

2.1 Instalasi iptables-1.2.9
[root@probiotik hanny]#wget
http://www.netfilter.org/files/iptables-1.2.9.tar.bz2
[root@probiotik hanny]#tar -xjvf iptables-1.2.9.tar.bz2
[root@probiotik hanny]#cd iptables-1.2.9
[root@probiotik iptables-1.2.9]#make KERNEL_DIR=/usr/src/linux
[root@probiotik iptables-1.2.9]#make install KERNEL_DIR=/usr/src/linux
[root@probiotik iptables-1.2.9]#make install-devel

2.2 Backup iptables lama anda
[root@probiotik iptables-1.2.9]#mv /sbin/ip6tables /sbin/ip6tables.old
[root@probiotik iptables-1.2.9]#mv /sbin/iptables /sbin/iptables.old
[root@probiotik iptables-1.2.9]#mv /sbin/iptables-restore /sbin/iptables-restore.old
[root@probiotik iptables-1.2.9]#mv /sbin/iptables-save /sbin/iptables-save.old

2.2 Menggunakan iptables baru
[root@probiotik iptables-1.2.9]#ln -s /usr/local/sbin/ip6tables /sbin/
[root@probiotik iptables-1.2.9]#ln -s /usr/local/sbin/iptables /sbin/
[root@probiotik iptables-1.2.9]#ln -s /usr/local/sbin/iptables-restore /sbin/
[root@probiotik iptables-1.2.9]#ln -s /usr/local/sbin/iptables-save /sbin/

2.3 Coba jalankan iptables baru
[root@probiotik iptables-1.2.9]#iptables
iptables v1.2.9: no command specified
Try `iptables -h' or 'iptables --help' for more information.


3. INSTALASI HTB (Hierachical Token Bucket)
Ada banyak cara untuk membuat shapper htb, anda bisa membuat secara manual dengan command tc
atau anda bisa mengunakan htb.init. Kebetulan saya menggunakan htb.init :)
Dalam percobaan yang saya lakukan, ada 3 buah komputer dengan total bandwith ISP 128 Kbps
komputer 1 bernama hanny dengan ip 192.168.1.2, akan di beri jatah 64 Kbps
komputer 2 bernama dedy dengan ip 192.168.1.3, akan di beri jatah 32 Kbps
komputer 3 bernama amek dengan ip 192.168.1.4, akan di beri jatah 32 Kbps
Bila ada salah satu komputer idle maka bandwith akan bisa kita pakai


3.1 Persiapan untuk config htb.init
Download htb.init
[root@probiotik iptables-1.2.9]#wget http://keihanna.dl.sourceforge.net/sourceforge/htbinit/htb.init-v0.8.4
[root@probiotik iptables-1.2.9]#mv htb.init-v0.8.4 /sbin/
[root@probiotik iptables-1.2.9]#chmod 755 htb.init-v0.8.4

3.2 Membuat config pada sysconfig
[root@probiotik iptables-1.2.9]#mkdir /etc/sysconfig/htb
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/htb/eth0
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/htb/eth0-10.root
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/htb/eth0-10:10.hanny
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/htb/eth0-10:20.dedy
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/htb/eth0-10:30.amek

Isi dari masing-masing config htb adalah sebagai berikut:

eth0
eth0-10.root
eth0-10:10.hanny
eth0-10:20.dedy
eth0-10:30.amek
DEFAULT=30
R2Q=1
RATE=128Kbit
QUANTUM=1500
RATE=64Kbit
QUANTUM=1500
CEIL=128Kbit
LEAF=sfq
RULE=192.168.1.2/32
RULE=192.168.1.2/32,
RATE=32Kbit
QUANTUM=1500
CEIL=128Kbit
LEAF=sfq
RULE=192.168.1.3/32
RULE=192.168.1.3/32,
RATE=32Kbit
QUANTUM=1500
CEIL=128Kbit
LEAF=sfq
RULE=192.168.1.4/32
RULE=192.168.1.4/32,

Bila masih bertanya tanya apa yang dimaksud dgn RATE,QUANTUM,CEIL,LEAF,RULE,dll
anda dapat membaca pada file htb.init
[root@probiotik iptables-1.2.9]#vi /sbin/htb.init-v0.8.4
atau lihat http://www.docum.org/stef.coene/qos/faq/cache/29.html

3.3 Jalankan htb.init
[root@probiotik iptables-1.2.9]#/sbin/htb.init-v0.8.4
Usage: htb.init-v0.8.4 {start|compile|stop|restart|timecheck|list|stats}

[root@probiotik iptables-1.2.9]#/sbin/htb.init-v0.8.4 compile
[root@probiotik iptables-1.2.9]#/sbin/htb.init-v0.8.4 start

3.4 Cek pada list module linux anda
[root@probiotik iptables-1.2.9]#lsmod
cls_route 4176 0 (unused)
cls_u32 4752 3
cls_fw 2496 0 (unused)
sch_sfq 3760 0 (unused)
sch_htb 18768 1

Bila anda sudah bosan dengan htb :)
[root@probiotik iptables-1.2.9]#/sbin/htb.init-v0.8.4 stop

3.5 Agar bisa autorun saat restart, tambahkan script pada rc.local
[root@probiotik iptables-1.2.9]#echo /sbin/htb.init-v0.8.4 >> /etc/rc.local

4. INSTALASI CBQ (Class-Based Queueing)
Ada banyak cara untuk membuat shapper CBQ, anda bisa membuat secara cbq.init
Dalam percobaan yang saya lakukan, ada 3 buah komputer dengan total bandwith ISP 128 Kbps
komputer 1 bernama hanny dengan ip 192.168.1.2, akan di beri jatah 64 Kbps
komputer 2 bernama dedy dengan ip 192.168.1.3, akan di beri jatah 32 Kbps
komputer 3 bernama amek dengan ip 192.168.1.4, akan di beri jatah 32 Kbps
(CBQ dalam pengambilan bandwith dari teman, tidak bisa murni penuh, hanya sekitar 1Kbit-2Kbit)


4.1 Persiapan untuk config CBQ.init
Download CBQ.init
[root@probiotik iptables-1.2.9]#wget http://heanet.dl.sourceforge.net/sourceforge/cbqinit/cbq.init-v0.7.1
[root@probiotik iptables-1.2.9]#mv cbq.init-v0.7.1 /sbin/
[root@probiotik iptables-1.2.9]#chmod 755 cbq.init-v0.7.1

4.2 Membuat config pada sysconfig
Bila dalam kernel lama sudah terdapat direktori /etc/sysconfig/cbq , maka anda cukup membuat file-file cbq-xxx.xxx.
Jika terdapat file example-cbq dalam direktori /etc/sysconfig/cbq, hapus dan buat file-file cbq-xxx.xxx yang baru :)

[root@probiotik iptables-1.2.9]#rm /etc/sysconfig/cbq/*
[root@probiotik iptables-1.2.9]#mkdir /etc/sysconfig/cbq
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/cbq/cbq-1001.hanny
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/cbq/cbq-1002.dedy
[root@probiotik iptables-1.2.9]#touch /etc/sysconfig/cbq/cbq-1003.amek

Isi dari masing-masing config CBQ adalah sebagai berikut:

cbq-1001.hanny
cbq-1002.dedy
cbq-1003.amek
DEVICE=eth0,10Mbit,1Mbit
RATE=64Kbit
WEIGHT=6.4Kbit
LEAF=sfq
RULE=192.168.1.2/32
RULE=192.168.1.2/32,
DEVICE=eth0,10Mbit,1Mbit
RATE=32Kbit
WEIGHT=3.2Kbit
LEAF=sfq
RULE=192.168.1.3/32
RULE=192.168.1.3/32,
DEVICE=eth0,10Mbit,1Mbit
RATE=32Kbit
WEIGHT=3.2Kbit
LEAF=sfq
RULE=192.168.1.4/32
RULE=192.168.1.4/32,

Bila masih bertanya tanya apa yang dimaksud dgn DEVICE,RATE,WEIGHT,LEAF,RULE,dll
anda dapat membaca pada file CBQ.init
[root@probiotik iptables-1.2.9]#vi /sbin/cbq.init-v0.7.1
atau lihat http://www.docum.org/stef.coene/qos/faq/cache/3.html

4.3 Jalankan CBQ.init
[root@probiotik iptables-1.2.9]#/sbin/cbq.init-v0.7.1
Usage: cbq.init-v0.7.1 {start|compile|stop|restart|timecheck|list|stats}

[root@probiotik iptables-1.2.9]#/sbin/cbq.init-v0.7.1 compile
[root@probiotik iptables-1.2.9]#/sbin/cbq.init-v0.7.1 start

4.4 Cek pada list module linux anda
[root@probiotik iptables-1.2.9]#lsmod
cls_route 4336 0 (unused)
cls_u32 5072 1
cls_fw 2720 0 (unused)
sch_sfq 3856 3
sch_tbf 2672 1
sch_cbq 11728 1

Bila anda sudah bosan dengan CBQ :)
[root@probiotik iptables-1.2.9]#/sbin/cbq.init-v0.7.1 stop

4.5 Agar bisa autorun saat restart, tambahkan script pada rc.local
[root@probiotik iptables-1.2.9]#echo /sbin/cbq.init-v0.7.1 >> /etc/rc.local

5. Tools untuk melihat limit bandwith
- MRTG http://people.ee.ethz.ch/~oetiker/webtools/mrtg/
- Iptraf
http://www.linuxhelp.net/guides/iptraf/

Thank's to
-------------------------------------------
http://luxik.cdi.cz/~devik/qos/htb/
http://www.docum.org/stef.coene/qos/faq/cache/