Kamis, 04 Desember 2008

Mengatur bandwidth download dengan squid (delay pool)

Mau memberikan jaminan download file dari internet yang “fair” ? coba gunakan fitur delay pool yang disediakan oleh squid (proxy server). Delay pool dapat Anda jadikan sebagai cara termudah bagi Anda dalam mengelola bandwidth internet pada kantor atau warnet Anda, meskipun hanya sebatas mengatur bandwidth download file via http atau ftp, ternyata delay pool dapat memberikan layanan jaringan yang lebih berkualitas bagi jaringan dikantor atau warnet Anda.

Layanan akses internet yang cukup populer adalah layanan akses web (http), bisa dikatakan saat ini hampir sebagian aplikasi berjalan dalam environment web, sehingga perlu perlakukan yang khusus untuk layanan web(http) ini. Penggunan internet di warnet umumnya mereka mengakses berbagai aplikasi dan layanan di internet melalui layanan http ini, mereka mendownload file melalui layanan http , sehingga bagi sebuah warnet pengaturan traffic download file lewat http ini sangat penting agar seluruh penggunan memperoleh kualitas jaringan yang baik dan terjamin. Tidak boleh ada seorang atau beberapa pengguna internet didalam jaringan Anda yang memakan bandwidth dengan 'rakus' dikarenakan dia mendownload suatu file atau menonton video di youtube dan lain-lain. Tentunya hal tersebut dapat Anda atur, salah satunya menerapkan web caching dengan proxy server seperti squid (http://www.squid-cache.org), dan jaminan kualitas download file yang adil dapat didukung dengan memanfaatkan fitur delay pool yang ada di squid.

Dalam tulisan kali ini penulis akan menjelaskan bagaimana membangun sebuah proxy server dengan squid untuk memberikan atau menyediakan web caching dan pengaturan bandwidth download file via http. Harapannya adalah terciptanya jaringan akses internet yang berkualitas dan terjamin bagi kantor atau warnet Anda. Dalam tulisan ini penulis menggunakan sistem operasi Linux distro CentOS 5, dan software squid yang digunakan adalah bawaan distro CentOS yaitu squid-2.6.STABLE6-3.el5. Diasumsikan sistem operasi linux CentOS sudah Anda install dan software squid sudah Anda install juga saat instalasi linux, namun jika squid belum terinstall maka Anda dapat lakukan instalasi dengan yum atau manual seperti berikut ini:

# ym install squid
atau
# rpm -ivh /media/cdrom/CentOS/squid-2.6.STABLE6-3.el5.i386.rpm


I. Skenario
Agar memudahkan penjelasan maka penulis membuat skenario jaringan LAN sebagai berikut:
Koneksi internet jaringan menggunakan ADSL dengan downlink 512kbps (512 kilo bit per second)
Komputer yang bertindak sebagai proxy server adalah komputer yang juga berperan sebagai gateway (internet sharing) pada jaringan LAN. Komputer ini memiliki dua buah network interface, yaitu eth0 dan eth1. Network interface eth0 terhubung dengan modem ADSL, sedangkan eth1 terhubung dengan hub atau switch LAN. Network Address LAN adalah 192.168.1.0/24.
Konfigurasi proxy yang akan diterapkan adalah transparent proxy, dengan skenario pengaturan bandwidth download file adalah setiap komputer dalam jaringan diatur agar bandwidth download via http sebesar sekitar 16KBps(16 kilo byte per second), dengan maximum bucket 64KBps.


II. Konfigurasi Internet sharing (gateway)
Langkah konfigurasi pertama adalah mengkonfigurasi komputer bakal proxy server sebagai internet sharing (gateway), yaitu sebagai berikut:
Enbale IP Forwarding
# echo 1 > /proc/sys/net/ipv4/ip_forward
atau edit file /etc/sysctl.conf, dan set parameter “net.ipv4.ip_forward=1”
Enable IP Masquerade
Diasumsikan default policy firewall Anda adalah ACCEPT, dan tidak ada rule spesifik apapun pada konfigurasi firewall di komputer proxy server sebelumnya.
# service iptables stop
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE


Rule iptables untuk mendukung Transparent proxy
# iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 –dport 80 -j REDIRECT –to-ports 3128
# service iptables save
# chkconfig iptables on

Rule firewall tersebut akan menyebabkan setiap koneksi dari LAN dengan port tujuan 80 kemanapun akan di arahkan ulang sehingga menuju local process pada komputer gateway(proxy server) yaitu proses yang berjalan pada port 3128 (squid).


III. Konfigurasi squid standar

Langkah selanjutnya adalah konfigurasi squid, secara default konfigurasi squid akan memblok semua koneksi dari jaringan LAN ke internet. Untuk itu kita harus melakukan konfigurasi ulang dengan mengedit file /etc/squid/squid.conf. Beberapa parameter konfigurasi squid yang sebelumnya perlu Anda setup diantaranya adalah parameter berikut ini:
visible_hostname : parameter ini mendefinisikan nama komputer proxy server Anda , nilai default parameter ini tidak diset. Terkadang pengguna awam sering menjumpai squid errror dikarenakan parameter ini tidak diset dan squid mencoba menggunkan nama hostname komputer Anda yang ternyata hostname nya tidak ditulis lengkap dengan nama domain. parameter ini dapat diisi dengan nama komputer yang dilengkapi dengan nama domain. Misalnya sebagai berikut:
visible_hostname proxy.coba.co.id
http_port: parameter ini menunjukkan nomor port service squid. Nilai defaultnya dalah 3128. Jika Anda ingin menerapkan transparent proxy maka nilai parameter ini harus diset sebagai berikut:
http_port 3128 transparent
acl: parameter ini digunakan untuk mendefinisikan access control list format penulisannya sebagai berikut:
acl nama-acl tipe-acl string-pattern ...
acl nama-acl tipe-acl "file" ...


Dalam konfigurasi squid yang kita skenariokan , Anda harus membuat sebuah acl yang menunjukkan jaringan local Anda, Sebaiknya definisi acl ini Anda tulis pada file konfigurasi squid yaitu dibawah baris yang bertuliskan #INSERT YOUR OWN RULE HERE(S) ......., seperti berikut ini:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl lan src 192.168.1.0/24

http_access: parameter ini menunjukkan rule yang akan diterapkan pada suatu access control list. Untuk skenario kita maka Anda harus mendefinisikan rule yang akan mengijinkan LAN Anda untuk dapat mengakses internet (tulis rule tersebut dibagian bawah dari pendefinisian acl ), seperti berikut ini:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl lan src 192.168.1.0/24
http_access allow lan





IV. Konfigurasi squid delay pool
Untuk mengatur bandwidth download sesuai skenario yaitu menyediakan bandwidth download untuk setiap host dalam LAN sebesar 16KBps dan maksimal bucket 64KBps, maka beberapa parameter konfigurasi squid yang berkaitan dengan delay pool yang harus Anda set adalah sebagai berikut (edit file /etc/squid/squid.conf):

delay_pool: parameter ini menentukan ada berapakah pool yang akan Anda terapkan. Misalnya dalam skenario kita ini hanya akan dibuat sebuah pool, maka konfigurasinya sebagai berikut:
delay_pool 1

delay_class: parameter ini mendefinisikan class untuk setiap pool yang ada. Setiap pool harus memiliki sebuah class (delay_class) tidak lebih dan tidak kurang. Jadi kalau Ada 2 delay pool maka harus ada 2 delay_class. Class delay pool terdiri dari 3 class, yaitu :
class 1 : untuk delay pool dengan class ini maka semuanya dibatasi dengan single bucket agregate. Setiap class harus berasosiasi dengan single bucket agregate. Single bucket agregtae ini adalah bandwidth yang diasosiasikan dengan setiap class.
Class 2: untuk delay pool dengan class ini maka semuanya dibatasi dengan single bucket agregate, dan suatu “individual” bucket untuk stiap host atau komputer dalm jaringan class C.
Class 3: untuk delay pool dengan class ini maka semuanya dibatasi dengan single bucket agregate, dan “networke” bucket untuk setiap network class C, serta suatu individual bucket untuk stiap host atau komputer dalm jaringan class C. Untuk class 3 ini biasanya digunakan jika LAN Anda terdiri dari beberapa segment jaringan class C.

Untuk konfigurasi delay_class yang sesuai dengan skenario kita adalah seperti berikut ini:
delay_class 1 2

delay_access: parameter ini menentukan suatu request ke proxy server harus diletakkan pada delay pool yang mana. Konfigurasi delay_access yang sesuai dengan skenario kita adalah seperti berikut ini:
delay_access 1 allow lan
delay_access 1 deny all


delay_parameters: parameter ini mendefinisikan parameter -parameter untuk suatu delay pool. Format penulisan parameter delay_parameters adalah sebagai berikut:

delay_parameter pool aggregate bucket network individual

Untuk skenario kita maka nilai delay_parameters nya sebagai berikut:

delay_parameters 1 -1/-1 16000/64000

catatan: -1/-1 berarti bandwidth untuk aggregate nya diset unlimited (sesuai dengan bandwidth internet yang tersedia dari ISP). 16000(16KBps) adalah total bandwidth rata-rata yang bakal diperloleh setiap host dalam LAN, dan 64000(64KBps) adalah nilai bandwidth maksimum yang dapat tersedia dalam bucket disetiap saat.

Setelah konfigurasi squid Anda lakukan cobalah Anda restart atau start service squid seperti berikut ini:

# service squid start
# chkconfig squid on


Kemudian coba Anda gunakan web browser di beberapa client dan cobalah Anda download suatu file diinternet kemudian perhatikan kecepatan download pada window download. Berikut ini gambar -1, yang menunjukkan proses download pada suatu komputer ketika mendownload sebuah file (perhatikan kecepatan perdetiknya sekitar 16KBps), dan juga perhatikan gambar-2 yang menggambarkan kecepatan saat mendownload 2 buah file bersamaan (perhatikan jika di total kecepatan perdetiknya sekitar 16KBps ) pada suatu host.



Gambar-1. Mendownload sebuah file





Gambar-2. Mendownload dua buah file

2 komentar:

  1. mantap.. hatur nuhun untuk tutorialnya.. bermanfaat banget..

    BalasHapus
  2. sama sama mas, semoga bermanfaat buat semua

    BalasHapus