LINUX BANDWIDTH MANAGEMENT DI SUSUN OLEH:
Kurusetra Computer www.kurusetra.web.id Budi Santosa,ST
[email protected]
-- 1 --
Quality of Service Quality of Service atau QoS digunakan untuk mengukur tingkat kualitas koneksi jaringan TCP/IP internet atau intranet. Ada beberapa metode untuk mengukur kualitas koneksi seperti konsumsi bandwidth oleh user, ketersediaan koneksi, latency, losses dll. Sekarang kita bahas istilah – istilah dalam Quality of Service Bandwidth Bandwidth adalah kapasitas atau daya tampung kabel ethernet agar dapat dilewati trafik paket data dalam jumlah tertentu. Bandwidth juga bisa berarti jumlah konsumsi paket data per satuan waktu dinyatakan dengan satuan bit per second [bps]. Bandwidth internet di sediakan oleh provider internet dengan jumlah tertentu tergantung sewa pelanggan. Dengan QoS kita dapat mengatur agar user tidak menghabiskan bandwidth yang di sediakan oleh provider. Latency Jika kita mengirimkan data sebesar 3 Mbyte pada saat jaringan sepi waktunya 5 menit tetapi pada saat ramai 15 menit, hal ini di sebut latency. Latency pada saat jaringan sibuk berkisar 50 – 70 msec. Losses Losses adalah jumlah paket yang hilang saat pengiriman paket data ke tujuan, kualitas terbaik dari jaringan LAN / WAN memiliki jumlah losses paling kecil. Availability Availability berarti ketersediaan suatu layanan web, smtp, pop3 dan aplikasi pada saat jaringan LAN / WAN sibuk maupun tidak.
-- 2 --
Linux Traffic Control Pengendalian trafik jaringan
Trafik jaringan berhubungan dengan paket data yang dibangkitkan oleh kartu ethernet pada komputer, sebelumnya kita membahas terlebih dahulu kartu ethernet. Pada Diagram 1.1 dibawah ini menunjukkan komputer linux dengan satu kartu ethernet. Network Driver
Kernel linux
NIC
Kabel UTP
Diagram 1.1 komputer dgn satu kartu ethernet Paket data yang dikirimkan oleh komputer lain diterima NIC (kartu ethernet), kemudian teruskan oleh driver kartu ethernet (Network Driver) ke bagian kernel linux untuk diproses. Proses ini hanya mengatur paket data yang keluar maupun masuk melalui satu kartu ethernet. Kernel linux yang bertanggung jawab mengatur aliran data disebut kernel traffic control. Sedangkan pada diagram 1.2 menggambarkan komputer linux yang dioperasikan sebagai gateway atau router, aliran paket data dapat diatur secara bidirectional (dua arah) melalui NIC0 dan NIC1. Gateway linux dikonfigurasi untuk memisahkan trafik dari jaringan lain atau koneksi internet yang disediakan oleh ISP. Hubungan komputer klien yang dibagian NIC1 ke ISP dapat dikendalikan, misalnya bandwidth smtp di jatah 64Kbps, & ftp mendapatkan bandwidth 10Kbps.
Kabel UTP
Kernel linux
NIC0
NIC1
Kabel UTP
Diagram 1.2 komputer linux sebagai router / gateway Struktur kernel traffic control
Pada dasarnya kernel traffic controll memiliki 3 bagian, yang pertama perangkat ingress yaitu jika paket data diterima oleh kartu LAN maka paket tersebut akan diproses oleh ingress, biasanya ingress dipakai untuk mengendalikan traffic upload / uplink. Kemudian perangkat egress dipergunakan untuk mengendalikan paket data yang keluar dari kartu ethernet, sehingga trafik download oleh komputer klien dapat dibatasi sesuai konfigurasi.
ingress
Kernel Traffic Controll
Kartu ethernet 10/100 Mbps
-- 3 --
egress
Metode pengendalian trafik
Dalam mengendalikan trafik administrator jaringan bisa memilih beberapa metode tergantung dari situasi pada jaringan LAN atau backbone. Tiap trafik akan dikendalikan dengan metode tertentu yang akan berdampak pada kecepatan akses, jadi administrator jaringan perlu membaca dan mengerti bagian ini terlebih dahulu, beberapa metode pengendalian trafik sebagai berikut: Prioritas Pada metode prioritas paket data yang melintasi gateway diberikan prioritas berdasarkan port, alamat IP atau sub net. Jika trafik pada gateway sedang tinggi maka prioritas dengan nilai terendah (nilai paling rendah berarti prioritas tertinggi) akan di proses terlebih dahulu, sedangkan yang lainnya akan di berikan ke antrian atau dibuang. Metode prioritas paling cocok diterapkan pada koneksi internet yang memiliki bandwidth sempit, hanya trafik paling penting saja yang dilewatkan seperti smtp dan pop3. FIFO Pada metode FIFO jika trafik melebihi nilai set maka paket data akan dimasukkan ke antrian, paket data tidak mengalami pembuangan hanya tertunda beberapa saat. Metode FIFO cocok diterapkan pada koneksi internet dengan bandwidth menengah 64kbps, untuk menghindari bootle neck pada jaringan LAN. Paket data jika melebihi batas konfigurasi akan di masukkan ke dalam antrian dan pada saat jaringan LAN tidak sibuk maka paket data dalam antrian akan dikeluarkan. Penjadwalan Metode penjadwalan atau scheduling ini paling sering dipakai karena memiliki kemampuan membagi paket data ke dalam ukuran yang sama besar kemudian memasukkan ke dalam beberapa antrian. Antrian itu kemudian di keluarkan oleh scheduler dengan algoritma round robin. Shape & drop Shape & drop merupakan metode paling cocok serta efektif untuk jaringan yang memiliki beban trafik sangat tinggi. Jika trafik melebihi nilai set maka paket data akan di masukan ke dalam antrian sehingga trafik menurun secara perlahan, metode ini disebut pemotongan bandwidth, kemudian jika trafik terus menerus melebihi nilai set maka paket data akan dibuang (drop).
-- 4 --
Desain dan diagram manajemen bandwidth
Topologi Jaringan SOHO ADSL Connection
Topologi Jaringan Intranet Dedicated Connection
-- 5 --
Firewalling Bandwidth Management Single IP iptables t mangle A POSTROUTING o eth1 d 192.168.1.100 j MARK setmark 1 iptables t mangle A POSTROUTING o eth1 d 192.168.1.30 j MARK setmark 2 iptables t mangle A POSTROUTING o eth1 d 192.168.1.35 j MARK setmark 3 iptables t mangle A POSTROUTING o eth1 d 192.168.1.110 j MARK setmark 4
Subnet iptables t mangle A POSTROUTING o eth1 d 192.168.1.0/24 j MARK setmark 1 iptables t mangle A POSTROUTING o eth1 d 192.168.2.0/24 j MARK setmark 2 iptables t mangle A POSTROUTING o eth1 d 192.168.3.0/24 j MARK setmark 3 iptables t mangle A POSTROUTING o eth1 d 192.168.4.0/24 j MARK setmark 4
IP Range iptables t mangle A POSTROUTING o eth1 m iprange dstrange 192.168.1.100 192.168.1.150 j MARK setmark 1 iptables t mangle A POSTROUTING o eth1 m iprange dstrange 192.168.1.151 192.168.1.170 j MARK setmark 2 iptables t mangle A POSTROUTING o eth1 m iprange dstrange 192.168.1.171 192.168.1.180 j MARK setmark 3
Port Range iptables t mangle A POSTROUTING o eth1 p tcp sport 110 j MARK setmark 1 iptables t mangle A POSTROUTING o eth1 p tcp sport 5000:6000 j MARK setmark 2 iptables t mangle A POSTROUTING o eth1 p tcp sport 6667:7000 j MARK setmark 3 iptables t mangle A POSTROUTING o eth1 p tcp m multiport sourceport 80,110 j MARK setmark 1 iptables t mangle A POSTROUTING o eth1 p tcp m multiport destinationport 25 j MARK setmark 1
FTP Port iptables t mangle A POSTROUTING o eth1 m state state NEW,ESTABLISHED,RELATED p tcp sport 21 j MARK setmark 1 iptables t mangle A POSTROUTING o eth1 m state state NEW,ESTABLISHED,RELATED p udp –sport 20 j MARK setmark 1
-- 6 --
Hierarchy Token Bucket Teknik antrian HTB mirip dengan CBQ hanya perbedaannya terletak pada opsi, HTB lebih sedikit opsi saat konfigurasi serta lebih presisi. Teknik antrian HTB memberikan kita fasilitas pembatasan trafik pada setiap level maupun klasifikasi, bandwidth yang tidak terpakai bisa digunakan oleh klasifikasi yang lebih rendah. Kita juga dapat melihat HTB seperti suatu struktur organisasi dimana pada setiap bagian memiliki wewenang dan mampu membantu bagian lain yang memerlukan, teknik antrian HTB sangat cocok diterapkan pada perusahaan dengan banyak struktur organisasi. Manajemen IP Customer
1. Buat IPTables mangle untuk IPRange. iptables t mangle A POSTROUTING o eth1 m iprange dstrange 202.155.23.41202.155.23.45 j MARK setmark 1 iptables t mangle A POSTROUTING o eth1 m iprange dstrange 202.155.23.51202.155.23.58 j MARK setmark 2 iptables t mangle A POSTROUTING o eth1 m iprange dstrange 202.155.23.81202.155.23.88 j MARK setmark 3
2. Buat antrian qdisc dan class HTB.
tc qdisc add dev eth1 root handle 1:0 htb tc class add dev eth1 parent 1:0 classid 1:1 htb rate 2Mbit ceil 2Mbit tc class add dev eth1 parent 1:1 classid 1:2 htb rate 128kbit ceil 128kbit tc class add dev eth1 parent 1:1 classid 1:3 htb rate 256kbit ceil 512kbit tc class add dev eth1 parent 1:1 classid 1:4 htb rate 512kbit ceil 1Mbit
-- 7 --
3. Buat filter untuk memisahkan trafik IP range telah di mark oleh iptables tc filter add dev eth1 parent 1:0 protocol ip handle 1 fw flowid 1:2 tc filter add dev eth1 parent 1:0 protocol ip handle 2 fw flowid 1:3 tc filter add dev eth1 parent 1:0 protocol ip handle 3 fw flowid 1:4
Manajemen bandwith ADSL
1. Buat IPTables mangle untuk mark trafik port aplikasi.
iptables t nat A POSTROUTING o eth1 p tcp –sport 110 j MARK set mark 1 iptables t nat A POSTROUTING o eth1 p tcp –sport 80 j MARK setmark 2 iptables t nat A POSTROUTING o eth1 m state state NEW,ESTABLISHED,RELATED p tcp –sport 21 j MARK setmark 3
iptables -t nat -A POSTROUTING -o eth1 -m state --state NEW,ESTABLISHED,RELATED -p udp –sport 20 -j MARK --set-mark 3
-- 8 --
2. Buat antrian qdisc dan class
tc qdisc add dev eth1 root handle 1:0 htb tc class add dev eth1 parent 1:0 classid 1:1 htb rate 384kbit ceil 384kbit tc class add dev eth1 parent 1:0 classid 1:2 htb rate 384kbit ceil 384kbit tc class add dev eth1 parent 1:0 classid 1:3 htb rate 128kbit ceil 384kbit tc class add dev eth1 parent 1:0 classid 1:4 htb rate 32kbit ceil 64kbit
3. Buat filter untuk setiap trafik yang telah di mark oleh Iptables.
tc filter add dev eth1 parent 1:0 prio 1 protocol ip handle 1 fw flowid 1:2 tc filter add dev eth1 parent 1:0 prio 2 protocol ip handle 1 fw flowid 1:4 tc filter add dev eth1 parent 1:0 prio 3 protocol ip handle 1 fw flowid 1:5
Parameter HTB rate parameter rate menentukan bandwidth maksimum yang bisa dipakai oleh setiap class, jika bandwidth melebihi nilai “rate” maka paket data akan dipotong atau di jatuhkan (drop) ceil parameter ceil di set untuk menentukan peminjaman bandwidth antar class (kelas), peminjaman bandwith dilakukan class paling bawah ke kelas di atasnya, teknik ini disebut link sharing. burst / cburst batas jumlah data yang ditransfer sebelum kecepatan mulai di shape oleh HTB. Satuan dalam kilobyte, contoh: burst 20k prio prioritas class yang akan di utamakan oleh HTB, nilai rendah menunjukkan prioritas tertinggi. prio 0 memiliki prioritas lebih tinggi daripada prio 2, contoh: prio 0
-- 9 --
Policing & packet marking Device egress mengendalikan paket data yang keluar dari ethernet tapi tidak bisa membatasi jumlah rata – rata paket yang memasuki ethernet. Policing mengendalikan paket data yang memasuki kartu ethernet melalui device ingress, administrator memberikan batas maksimum paket yang boleh melewati ingress dan policing akan membuang paket jika melebihi batas maksimum konfigurasi. Setting policing dapat dilakukan dengan dua cara, pertama dengan iptables mangle dan kedua melalui cara manual. Pada iptables mangle paket yang memasuki device ingress diberikan tanda dengan opsi mangle dari iptables, paket tersebut kemudian diproses oleh policing. Pada cara manual paket data di filter dengan opsi “match ip” secara langsung. Klasifikasi paket data pada policing ada beberapa macam seperti berikut; fw Menggunakan iptables mangle untuk klasifikasi paket data. route Menggunakan ip route untuk klasifikasi dikirimkan / di route ke lain subnet.
paket
data
yang
akan
Policing paket data drop Paket data akan di buang atau di antrikan jika melampaui batas maksimum konfigurasi. continue Paket data jika melebihi batas maksimum konfigurasi akan di berikan ke klasifikasi berikutnya, jadi kita dapat membuat skala bandwidth pada device ingress. pass / ok Paket data yang melampaui batas maksimum konfigurasi boleh melintas. reclassify Paket data di klasifikasi oleh kelas berikutnya, ini pilihan default iptables -t mangle -A PREROUTING -i eth0 -p tcp iptables -t mangle -A PREROUTING -i eth0 -p tcp tc qdisc add dev eth0 handle ffff: ingress tc filter add dev eth0 parent ffff: protocol ip 56kbit burst 90k \ continue flowid 4:1 tc filter add dev eth0 parent ffff: protocol ip 128kbit burst 100k drop flowid 4:2 tc filter add dev eth0 parent ffff: protocol ip 64kbit burst 100k continue flowid 4:3 tc filter add dev eth0 parent ffff: protocol ip 128kbit burst 100k drop flowid 4:4
-- 10 --
--dport 22 -j MARK --set-mark 1 --dport 25 -j MARK --set-mark 2 prio 1 handle 1 fw police rate prio 1 handle 1 fw police rate prio 2 handle 2 fw police rate prio 2 handle 2 fw police rate
Time Based Bandwidth Management Diagram Time Based
Konfigurasi script root@ubuntu:~# vim /usr/sbin/bw1 tc qdisc del dev eth1 root tc qdisc add dev eth1 root handle 1:0 htb tc class add dev eth1 parent 1:0 classid 1:0 htb rate 512kbit ceil 512kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:2 htb rate 32kbit ceil 32kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:201 htb rate 32kbit ceil 32kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:202 htb rate 32kbit ceil 32kbit burst 100k root@ubuntu:~# vim /usr/sbin/bw2 tc qdisc del dev eth1 root tc qdisc add dev eth1 root handle 1:0 htb tc class add dev eth1 parent 1:0 classid 1:0 htb rate 512kbit ceil 512kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:2 htb rate 32kbit ceil 64kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:201 htb rate 32kbit ceil 64kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:202 htb rate 32kbit ceil 64bit burst 100k root@ubuntu:~# vim /usr/sbin/bw3 tc qdisc del dev eth1 root tc qdisc add dev eth1 root handle 1:0 htb tc class add dev eth1 parent 1:0 classid 1:0 htb rate 512kbit ceil 512kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:2 htb rate 32kbit ceil 512kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:201 htb rate 32kbit ceil 512kbit burst 100k tc class add dev eth1 parent 1:1 classid 1:202 htb rate 32kbit ceil 512kbit burst 100k root@ubuntu:~# chmod 775 /usr/sbin/bw1 root@ubuntu:~# chmod 775 /usr/sbin/bw2 root@ubuntu:~# chmod 775 /usr/sbin/bw3
Penjadwalan * 9 * * * /usr/sbin/bw1 * 13 * * * /usr/sbin/bw2 * 16 * * * /usr/sbin/bw3 * 18 * * * /usr/sbin/tc qdisc del dev eth1 root
-- 11 --
Squid Delay Pools Squid proxy server juga menyediakan fasilitas pengelolaan bandwidth dengan metode delay pools. Bandwidth protokol http yang dikonsumsi oleh user dimasukkan ke antrian (pools), kemudian diberikan kepada pengguna secara pelan – pelan sesuai dengan settingan delay_pools, teknik ini disebut penundaan (delay). delay_pools delay_pools 3
#jumlah_pools #Berarti kita membuat 3 pools
Delay pools memiliki kelas (class) untuk mengatur bandwidth yang dikonsumsi oleh user. Dengan kelas kita bisa mendefinisikan bandwidth yang akan digunakan oleh satu subnet, antar subnet dibelakang router dan per user. Dibawah ini gambar kelas delay pools
-- 12 --
Keterangan kelas Class 1 delay_parameters #nomor_pools #individual_pools contoh: delay_parameters 1 32000/100000 Berarti kecepatan maksimum browsing untuk satu subnet maupun antar subnet adalah 32 kByte/sec (256000/8 = 32000), dengan burstable file sebesar 100 Kbyte (100000 byte). Class 2 delay_parameters #nomor_pools #agregate #individual contoh: delay_parameters 1 32000/100000 1000/50000 Berarti kecepatan maksimum browsing untuk satu subnet maupun antar subnet adalah 32 kByte/sec (256000/8 = 32000). Setiap komputer klien hanya mendapatkan kecepatan maksimum 1 kByte/sec, saat transfer data mencapai 50 Kbyte. Class 3 delay_parameters #nomor_pools #agregate #antar_subnet #individual contoh: delay_parameters 1 32000/100000 8000/80000 600/50000 Berarti kecepatan maksimum gabungan dari semua subnet adalah 32 kByte/sec (256000/8 = 32000). Setiap subnet mendapatkan kecepatan maksimum 8 kByte/sec (64000/8 = 8000). Setiap komputer mendapatkan kecepatan maksimum 600 Byte / sec, saat transfer data mencapai 50 kByte. Contoh penggunaan class: delay_pools 3
# kita membuat 3 pools
delay_class 1 2 # kita set pools 1 menggunakan class 2 delay_parameters 1 32000/100000 delay_class 2 1 # kita set pools 2 menggunakan class 1 delay_parameters 2 32000/100000 1000/50000 delay_class 3 3 # kita set pools 3 menggunakan class 3 delay_parameters 3 32000/100000 8000/80000 600/50000
Akses delay pools Kita bisa menggunakan class dengan cara menggabungkan ACL dengan delay pools yang sudah kita set menggunakan kelas (class). ACL yang sudah kita dengan delay_access hanya bisa mengkonsumsi bandwidth sesuai dengan kelas (class) masing – masing. Contoh dibawah ini menunjukkan bahwa subnet LAN1 hanya memiliki kecepatan maksimum 32kByte/sec, setiap user mendapatkan kecepatan maksimum 1kByte/sec saat transfer data mencapai 50kByte. acl all src 0.0.0.0 acl LAN1 src 192.168.1.0 delay_pools 3 # kita membuat 3 pools delay_class 1 2 # kita set pool 1 menggunakan tipe kelas 2 (class 2) delay_parameters 1 32000/100000 1000/50000 delay_access 1 allow LAN1 # mengizinkan subnet LAN1 menggunakan pools 1 delay_access 1 deny all # Melarang yang lain menggunakan pools 1
-- 13 --
Contoh kasus 1. Delay Class 1 kita mempunyai kantor dengan bandwidth internet maksimum 256kbps, bandwidth yang digunakan untuk browsing sebesar 128kbps, sisanya untuk aplikasi lain. Jaringan LAN kantor tersebut memiliki alamat subnet 192.168.1.0. Solusinya kita membuat 3 delay pools, menggunakan kelas 1 dengan batasan burstable file sebesar 200kByte. acl all src 0.0.0.0 acl LAN src 192.168.1.0/255.255.255.0 delay_pools 3 delay_class 1 1 delay_parameters 1 16000/200000 delay_access 1 allow LAN delay_access 1 deny all
2. Delay Class 2 Sebuah perusahaan menyewa bandwidth 512kbps dari ISP, bandwidth sebesar 256kbps digunakan untuk browsing. Perusahaan tersebut memiliki dua subnet LAN1 dan LAN2, tiap subnet memiliki 30 komputer klien yang bisa akses internet. Bandwidth total web browser untuk semua subnet adalah 256kbps, kemudian membagi jatah bandwidth sebesar 32kbps untuk setiap komputer klien (user). acl LAN1 src 192.168.1.0/255.255.255.0 acl LAN2 src 192.168.2.0/255.255.255.0 delay_pools 3 delay_class 1 2 delay_parameters 1 32000/100000 4000/20000 delay_access 1 allow LAN1 delay_access 1 allow LAN2 delay_access 1 deny all
3. Delay Class 3 Sebuah perusahaan multinasional yang memiliki beberapa cabang di tiga kota besar, surabaya, bandung dan semarang. Menyewa bandwidth dari ISP sebesar 512kbps, bandwidth 384kbps digunakan untuk browsing web browser, sedangkan sisanya 128kbps untuk aplikasi lain. Solusinya kita membagi 384kbps menjadi tiga bagian 384 / 3 = 128kbps, jadi tiap kantor cabang mendapat 128kbps. Tiap kantor cabang kita hanya mengizinkan 5 komputer yang memiliki akses web browser ke internet, jadi tiap komputer mendapatkan jatah 25kbps. acl all src 0.0.0.0 delay_pools 3 delay_class 1 3 delay_parameters 1 48000/100000 16000/100000 3000/50000 delay_access 1 allow all
-- 14 --
4. Teknik kombinasi Sebuah perusahaan memiliki 3 komputer server mail1, mail2 dan samba, yang membutuhkan koneksi internet saat update antivirus melalui proxy server. Ketiga server tersebut update tiap jam 00:00 menggunakan seluruh bandwidth web browser yang ada. Kemudian komputer admin memiliki akses internet dengan bandwidth tak terbatas (unlimited). Perusahaan tersebut mendapatkan bandwith dari ISP sebesar 384kbps, tiap komputer mendapatkan jatah 8kbps. File download multimedia diberikan transfer rate 1KByte / sec dan situs tertentu hanya memiliki transfer rate 1.5 Kbyte / sec acl acl acl acl acl acl acl acl
all src 0.0.0.0 admin src 192.168.1.2 mail1 src 192.168.1.3 mail2 src 192.168.1.4 samba src 192.168.1.5 LAN src 192.168.1.6-192.168.1.254 multimedia urlpath_regex “/etc/squid/multimedia” situs url_regex “/etc/squid/situs”
# File: /etc/squid/multimedia \.iso$ \.mp3$ \.3gp$ # File: /etc/squid/situs youtube friendster hi5 flickr photobucket liveconnector #Settingan delay pools delay_pools 4 delay_class 1 1 delay_parameters 1 -1/-1 delay_access 1 allow admin delay_access 1 allow mail1 delay_access 1 allow mail2 delay_access 1 allow samba delay_access 1 deny all delay_class 2 2 delay_parameters 2 -1/-1 1000/10000 delay_access 2 allow multimedia delay_access 2 deny all delay_class 3 2 delay_parameters 3 -1/-1 1500/10000 delay_access 3 allow situs delay_access 3 deny all
-- 15 --