Bandwidth Manajemen

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

4 Tanggapan to “Bandwidth Manajemen”

  1. fiscal Says:

    alow…….
    Cukup membantu dari informasi diatas, akan tetapi dari hasil testing saya sampai saat ini, sedikit merasa ada kesulitan disetting nya CBQ.

    Berikut ini saya cantumkan hasil testing selama ini,
    saya membuat 2 class untuk pengaturan bandwidth,
    1. pengaturan downstream untuk pemakaian ETH1
    2. pengaturan upstream untuk pemakaian ETH0 (Internet).
    Class1 :
    blok IP 192.168.35.0/24 eth1 dengan BW 64kbps
    masalah nya timbul pas waktu salah 1 IP 192.168.35.XXX memakai BW sampai 64kbps, ping ke router otomatis melonjak naik.
    kemudian saya coba untuk memblok IP 1 per 1.
    saya jg mendapatkan masalah yang serupa, asalkan salah 1 IP yang mengakses BW sampai limit yang saya batasi, ping ke router saya pasti melonjak tinggi dan kadang RTO.
    Kira2 bisa dikasih sedikit gambaran n penjelasan lebih lanjut untuk setting an CBQ?
    Trims

  2. servas Says:

    pertama-tama di firewallnya harus di mangle dulu supaya dapat packet yang lewat. berdasarkan src-address ip tsb.

    kemudian anda alokasikan bw yang akan diberikan. pada contoh saya setiap user 64 Kbps saya selalu memberikan 62 Kbps, 2 Kbps nya saya dedikasikan untuk packet tcp terutama icmp,

    supaya disaat user itu trafiknya tinggi maka tidak menggangu ping baik dari dalam maupun dari luar.

    ini juga melindungi anggapan dari client kita bahwah kalau ping besar, tandanya lambat… itu kayaknya udah menjadi paradikma di user yang belum banyak tau jaringan itu sendiri.

    Rgds

  3. raffa Says:

    salam kenal,
    pertama-tama di firewallnya harus di mangle dulu supaya dapat packet yang lewat. berdasarkan src-address ip tsb.
    tolong dikasih contohnya mas tentang mangle.
    saya punya lan 192.168.1.0
    eth0 = 192.168.0.242 ====> ke modem ADSL
    eth1 = 192.168.1.254 ====> ke LAN
    saya sudah konfigurasi seperti di atas tapi ketika ping dari client ke server sangat besar bisa sampai 2000 ms dan ke DNS ISP juga 2000 ms ke atas
    tapi ping diservernya sekitar 70 ms.
    tolong solusinya mas. makasih.

  4. servas Says:

    pertama-tama anda membuat 2 mangle. mangle pertama untuk paket ICMP dan kedua untuk bw lan anda.

    misal bw yang anda miliki 128 kbps:

    mangle paket ICMP pada kasus jaringan anda.
    /ip firewall mangle add \
    chain=forward dst-address=192.168.1.0/24 protocol=icmp action=mark-connection new-connection-mark=ICMP-LAN passthrough=yes

    /ip firewall mangle add \
    chain=forward connection-mark=ICMP-LAN action=mark-packet new-packet-mark=ICMP-KOE passthrough=yes

    /ip firewall mangle add \
    chain=forward packet-mark=ICMP-KOE action=change-tos new-tos=min-delay

    done… untuk ICMP
    kemudian anda mangle bw selain packet icmp.

    /ip firewall mangle add \
    chain=forward dst-address=192..168.1.0/24 action=mark-connection new-connection-mark=LAN passthrough=yes

    /ip firwall mangle add \
    chain=forward connection-mark=LAN action=mark-packet new-packet-mark=LAN-KOE passthrough=yes

    done.

    nah sekarang tinggal masukan di Queue Tree misalkan pembagiannya seperti ini : icmp didedikasikan 10 kbps, dan sisanya untuk trafik selain icmp (118 kbps).

    /queue tree add \
    name=”ICMP” packet-mark=ICMP-KOE limit-at=0 queue=default priority=1 max-limit=10000 burst-limit=0 burst-threshold=0 burst-time=0s

    /queue tree add \
    name=”LAN” packet-mark=LAN-KOE limit-at=0 queue=default priority=8 max-limit=118000 burst-limit=0 burst-threshold=0 burst-time=0s

    nah misalnya lannya mau di bagi rata pakai option “Queue Type = PCQ” … nah sekarang silahkan coba lan download … dan kemudian anda coba ping…. maka paket icmp anda tidak akan terganggu oleh besaran packet yang lewat.

    selamat mencoba semoga sukses.


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: