Sabtu, 21 Januari 2012

Mengatur Bandwidth

Mengatur Bandwidth mengalokasikan maksimum bandwidth untuk setiap user / komputer menjadi momok bagi banyak operator terutama untuk menjaga agar penggunaan bandwidth dapat maksimal untuk keperluan yang baik dengan keterbatasan yang ada.

Ada beberapa software open source untuk mengatur bandwidth ini. Biasanya merupakan turunan dua teknik managamen bandwidth yaitu CBQ atau HTB.

Umumnya program pengatur bandwidth gratisan dapat di cari di SourceForge (http://www.sf.net). Pada kesempatan ini akan ditunjukan cara menginstalasi dan mengoperasikan software CBQ. Yang anda butuhkan adalah software CBQinit melalui URL http://sourceforge.net/projects/cbqinit/
Beberapa langkah sederhana untuk menginstalasi CBQinit adalah sebagai berikut

Ambil file cbq.init-* dari Source Forge
http://sourceforge.net/projects/cbqinit/
Copy ke directory /sbin
# cp cbq.init-v0.7.3 /sbin/
# mv /sbin/cbq.init-v0.7.3 /sbin/cbq.init
Buat directory CBQ di /etc/sysconfig
# mkdir /etc/sysconfig/cbq
Buat Aturan untuk manajemen bandwidth di /etc/sysconfig/cbq berbentuk file-file untuk masing-masing aturan yang nantinya akan di compile melalui perintah cbq.init compile.

Start CBQ
# /sbin/cbq.init compile
# /sbin/cbq.init start
# echo /sbin/cbq.init start > /etc/rc.local
Beberapa format / perintah dari file aturan / rule di CBQ terbagi dalam beberapa jenis parameter
Parameter Device Jaringan
DEVICE=<ifname>,<bandwidth>[,<weight>] wajib
DEVICE=eth0,10Mbit,1Mbit
<ifname> nama dari interface yang akan di kontrol, misalnya, eth0
<bandwidth> bandwidth fisik dari device
misalnya 10Mbps atau 100Mbps
<weight> parameter tuning, harus proportional dengan <bandwidth>.
Biasanya digunakan aturan <weight> = <bandwidth> / 10
Jika anda mempunyai lebih dari satu kelas di sebuah Internet, cukup mendefinisikankan <bandwidth> [dan <weight>] satu kali. Di file aturannya lainnya, kita cukup menset DEVICE=<ifname>.
Paramater Class
RATE=<speed> wajib
RATE=5Mbit

Alokasi bandwidth ke sebuah class. Traffic yang lewat melalui class tertentu akan dibentuk sesuai dengan kecepatan yang diberikan. Anda dapat menggunakan Kbit, Mbit atau bps, Kbps, dan Mbps. Jika tidak diberikan unit-nya, maka bit/detik akan digunakan. Perlu dicatat bahwa “bps” di sini berarti “byte per detik” bukan bit per detik.

WEIGHT=<speed> wajib
WEIGHT=500Kbit
Parameter tuning yang harus propoporsional dengan RATE. Aturannya, WEIGHT ~= RATE/10.
PRIO=<1-8> optional, default 5
PRIO=5
Prioritas dari class traffic. Semakin besar nomor, semakin kecil prioritas. Prioritas 5 sudah cukup.
PARENT=<clsid> optional, default not set
PARENT=1280

Menset ID dari class parent (utama) yang ingin anda tempelkan. Anda akan menggunakan LEAF=none untuk parent class. Dengan menggunakan parameter ini dan mengatur urutan file konfigurasi, sangat mungkin untuk membuat hirarki sederhana dari kelas-kelas CBQ. Urutan sangat penting supaya parent dibuat sebelum children (anak) nya.

LEAF=none|tbf|sfq optional, default “tbf”
Memberitahukan script untuk menggunakan teknik antrian (queueing) di leaf tertentu untuk sebuah kelas CBQ. Default, akan menggunakan TBF. Bila TBF digunakan, maka akan tidak mengijinkan kelas tersebut untuk meminjam bandwidth walaupun anda sudah menset BOUNDED menjadi “no”. Untuk mengijinkan sebuah kelas untuk meminjam bandwidth (asumsinya BOUNDED no), anda harus menset LEAF menjadi “none” atau “sfq”/
Jika anda ingin menjamin adanya fair sharing dari bandwidth antara beberapa host yang sama kelasnya, anda mungkin akan menggunakan LEAF=sfq untuk menempelkan SFQ dalam teknik antrian yang digunakan di kelas tersebut.

BOUNDED=yes|no optional, default “yes”
Jika di set “yes”, maka kelas tersebut tidak diijinkan untuk meminjam bandwidth dari parent class jika mencapai overlimit. Jika di set “no”, maka kelas di ijinkan untuk meminjam bandwidth dari parent.
Jangan lupa untuk menset LEAF menjadi “none” atau “sfq”, jika tidak TBF akan secara default digunakan dan akan menolak peminjaman bandwidth yang tidak digunakan ke parent.
ISOLATED=yes|no optional, default “no”
Jika di set “yes”, kelas ini tidak akan dapat meminjamkan bandwidth yang tidak digunakan ke anak (childern)-nya.
Parameter disiplin antrian TBF
BUFFER=<bytes>[/<bytes>] optional, default “10Kb/8″
Parameter ini mengatur kedalaman keranjang (bucket) token. Dalam bahasa sederhana, merepresentasikan maksimum besarnya burst yang dapat dikirim. Bagian optional dari parameter ini menentukan panjang interval dari besarnya paker, yang mana menunjukan waktu pengiriman paket yang diijinkan.
LIMIT=<bytes> optional, default “15Kb”

Parameter ini menentukan panjang maksimum paket di antrian yang akan dikirim. Jika antrian berisi panjang yang lebih dari LIMIT yang di set, paket yang datang kemudian akan dibuang. Panjangnya antrian maksimum ini akan menentukan delay terutama pada saat terjadi congestion.
PEAK=<speed> optional, default not set

Kecepatan maksimum untuk trafik burst jangka pendek. Parameter ini memungkinkan kita mengontrol kecepatan puncak abosult yang dapat dikirim oleh sebuah class, karena dengan sebuah TBF yang mengijinkan 356Kbit/s adalah sama dengan 512Kbit untuk setengah detik, atau 1Mbit untuk seperempat detik.
MTU=<bytes> optional, default “1500″
Jumlah byte maksimum yang dapat dikirim pada satu saat melalui media fisik yang digunakan. Parameter ini dibutuhkan jika kita menggunakan paramater PEAK. Nilai default MTU yang digunakan sesuai dengan ethernet – untuk media yang lain anda mungkin perlu mengubahnya.
Parameter disiplin antrian SFQ
Disiplin antrian SFQ merupakan cara paling murah untuk melakukan sharing bandwidth antara beberapa mesin. Disiplin ini bersifat stochastik (random), tidak betul-betul fair tapi cukup fairlah. Jika anda membutuhkan sesuatu yang betul-betul fair, sebaiknya menggunakan disiplin antrian WRR (weighted round robin) atau WFQ. Perlu di catat bahwa SFQ tidak melakukan shaping trafik – shaping dilakukan oleh class CBQ yang menggunakan SFQ.
QUANTUM=<bytes> optional, default not set
Paramter ini harus di set tidak lebih rendah dari MTU sambungan, untuk ethernet adalah 1500b, atau (dengan MAC header) 1514b.
PERTURB=<seconds> optional, default “10″
Perioda yang digunakan oleh fungsi hash perturbation. Jika tidak di set, rekonfigurasi hash akan terjadi pada waktu yang mungkin tidak kita inginkan. Nilai defaul 10 detik biasanya cukup baik.
Parameter Filter
RULE=[[saddr[/prefix]][:port[/mask]],][daddr[/prefix]][:port[/mask]]
Parameter ini akan membuat “u32” filter yang akan memilih traffic untuk setiap class. Anda dapat menggunakan multiple RULE per config.
Mask port sifatnya optional dan hanya digunakan bagi pengguna yang sudah mahir dan mengerti bagaimana cara kerja filter “u32” bekerja.
Beberapa contoh:
RULE=10.1.1.0/24:80
Pilih trafik menuju port 80 di jaringan 10.1.1.0
RULE=10.2.2.5
Pilih trafik menuju ke semua port pada sebuah mesin 10.2.2.5
RULE=10.2.2.5:20/0xfffe
Pilih trafik menuju port 20 dan 21 pada mesin 10.2.2.5
RULE=:25,10.2.2.128/26:5000
Pilih trafik dari port mana saja antara 50 s/d 5000 di jaringan 10.2.2.128
RULE=10.5.5.5:80,
Pilih trafic dari port 80 dari mesin 10.5.5.5
REALM=[srealm,][drealm]
Parameter akan membentuk filter “route” yang akan mengklasifikasi trafik berdasarkan realm source / destination paket. Untuk informasi lebih lanjut tentang realm, silakan membaca referensi IP command dari Alexey Kuznetsov (http://linux-ip.net/gl/ip-cref/) . Script CBQ tidak mendefinisikan realm apapun, CBQ script ini hanya akan membuat perintah “tc filter” untuk anda.
Realm dapat berbentuk nomor desimal atau kata yang mengacu pada realm biasanya bisa dibaca di /etc/iproute2/rt_realms.
Contoh:
REALM=russia,internet
Pilih trafik dari realm “russia” ke realm “internet”
REALM=freenet,
Pilih trafik dari realm “freenet”
REALM=10
Pilih trafik ke realm 10
MARK=<mark>
Parameter ini akan membuat aturan filter “fw” yang akan memilih trafik untuk setiap class sesuai dengan “mark” firewall. Mark adalah nomor desimal yang ditandakan pada paket jika aturan firewall mengatakan demikian. Anda dapat menggunakan multiple MARK per config.
Perlu dicatat bahwa aturan untuk berbagai tipe filter dapat digabungkan. Kita harus memperhatikan prioritas dari aturan filter, yang dapat di set menggunakan variabel PRIO_{RULE,MARK,REALM}.
Parameter Waktu
TIME=[<dow>,<dow>, ...,<dow>/]<from>-<till>;<rate>/<weight>[/<peak>]
TIME=0,1,2,5/18:00-06:00;256Kbit/25Kbit
TIME=60123/18:00-06:00;256Kbit/25Kbit
TIME=18:00-06:00;256Kbit/25Kbit
Melalui parameter ini kita dapat membedakan bandwidth sebuah class dalam satu hari. Kita menggunakan multiple TIME, jika waktu-nya overlap, yang terakhir yang akan digunakan. Parameter <rate>, <weight> dan <peak> mengacu pada parameter RATE, WEIGHT dan PEAK yang sifatnya optional dan hanya berlaku pada disiplin antrian TBF.
Kita juga dapat mengatur berdasarkan hari dalam satu minggu pada aturan TIME, Day of Week <dow> dalam angka, 0 berarti minggu, 1 berarti senin, dst.
Proses membuat aturan untuk diletakan di /etc/sysconfig/cbq tidak terlalu sukar, hanya saja kita perlu membuat skenario yang spesifik di jaringan yang akan anda atur bandwidthnya.
Contoh isi file konfigurasi, /etc/sysconfig/cbq/cbq-1280.shaper.pertama.saya
DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.128.1.0/24
Dalam contoh konfigurasi ini mengatakan bahwa kita akan mengontrol trafik pada sebuah ethernet 10Mbps dengan device bernama eth0. Trafic menuji jaringan 192.168.1.0 akan diproses dengan prioritas 6 dan diatur agar bekecepatan 128Kbps.
Perlu dicatat bahwa kita hanya dapat mengontrol trafic yang keluar dari device saja. Jika kita akan mengontrol trafic di kedua arah, sebaiknya CBQ diimplementasikan di kedua interface tempat traffic keluar.
Untuk membayangkan proses membuat file konfigurasi, kita lihat topologi jaringan berikut dengan ADSL Modem tersambung ke Internet.

Bayangkan jika kita ingin agar semua client di LAN memperoleh 28Kbit dari Internet dan untuk trafik dari LAN ke Internet diijinkan untuk sampai dengan 40Kbit untuk setiap client. Yang perlu diketahui juga bahwa semua trafik akan melalui Linux proxy server yang menjalankan fungsi NAT, sehingga IP address LAN 192.168.0.0/24 akan berubah menjadi 192.168.1.100 pada saat masuk ke router ADSL.
Kita perlu mensetup file konfigurasi CBQ di kedua interfeca eth1(menuju ke Internet) dan eth0 (menuju LAN), kedua file configurasi tersebut adalah :
/etc/sysconfig/cbq/cbq-028.internet-client
DEVICE=eth0,100Mbit,1Mbit
RATE=28Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.0.0/24
/etc/sysconfig/cbq/cbq-040.client-internet
DEVICE=eth1,100Mbit,1Mbit
RATE=40Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.100,
Perhatikan “,” di parameter RULE, menandakan bahwa yang diatur adalah source IP address.
Tentunya kita dapat memodifikasi bandwidth, misalnya memberikan lebih banyak bandwidth s/d 100Kbit untuk traffic e-mail ke Internet hal ini dapat dilakukan dengan cara menspesifikasikan nomor port 25 (SMTP) ke aturan trafik ke Internet, sehingga
/etc/sysconfig/cbq/cbq-040.e-mail.client-internet
DEVICE=eth1,100Mbit,1Mbit
RATE=100Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.100:25,
Setelah semua konfigurasi dibuat, yang perlu kita lakukan adalah
# /sbin/cbq.init compile
# /sbin/cbq.init start
# echo /sbin/cbq.init start > /etc/rc.local
Lakukan cbq.init compile setiap kali kita mengubah / menambah aturan bandwidth.
penulis : Onno W. Purbo

Tidak ada komentar:

Posting Komentar