Delay Pools Squid

SQUID – Delay POOLS

Another useful squid feature is delay pools. Conceptually, delay pools are bandwidth limitations – “pools” of bandwidth that drain out as people browse the Web, and fill up at a rate you specify – this can be thought of as a leaky bucket that is continually being filled.
This is useful when bandwidth charges are expensive like in indonesia.
Delay pools provide a way to limit the bandwidth of certain requests based on any list of criteria. The idea came from a Western Australian university who wanted to restrict student traffic costs (without affecting staff traffic, and still getting cache and local peering hits at full speed).

To enable this, configure squid with the –enable-delay-pools option. There are 3 classes of delay pools – class 1 is a single aggregate bucket, class 2 is an aggregate bucket with an individual bucket for each host in the class C, and class 3 is an aggregate bucket, with a network bucket (for each class B) and an individual bucket for each host.


Latar Belakang

Bandwidth merupakan barang yang mahal. Untuk saat ini kisaran 64 kps dihargai sekitar 4 jt perbulan. Permasalahnnya bandwith 64 kbits itu bukan nilai yang besar. Rata-rata yang didapat pelanggan adalah 64 1:2. Artinya 1 jalur 64 kbits digunakan untuk 2 pelanggan sekaligus.
Sudah bandwidthnya dibatasi terkadang pula disisi user ada yang bertingkah seenaknya. Merasa ada koneksi internet gratis, beberapa user mulai menggunakannya untuk membuka situs-situs tertentu atau mengkoleksi file-file tertentu. Tentu saja alokasi bandwidth yang tersedia semakin menyusut. Yang merasakan adalah golongan user yang biasa-biasa saja (bukan mania internet), mereka hanya bisa mengelus dada.Untuk mengatasi hal diatas, agar setiap user mendapat bandwidth yang cukup, bisa digunakan aplikasi squid proxy server.

Pelaksanaan

Sebelum mulai mengkonfigurasi delay pools, harus dipersiapkan terlebih dahulu aplikasi squid yang sudah dikompilasi dengn support delay pools. Beberapa distro besar seperti RedHat/Mandrake biasanya sudah di atur support delay pools.
Bila tidak dapat dikompilasi sendiri sebagai berikut

# ./configure --enable-delay-pools
# make
# make install

konfigurasi

File konfigurasi squid adalah squid.conf
ada beberapa tag konfigurasi untuk delay pools di squid.conf.

  1. delay_pools
    menyatakan berapa banyak bagian/pool yang akan dibuat
    misal delay_pools 2
  2. delay_class
    menentukan klas/tipe pembagian bandwith dari setiap pool. 1 pool hanya boleh memiliki 1 clas, tidak lebih atau kurang.
    bagian merupakan nomer urut dari jumlah pool didelay pool, jadi ada 1 s/d n bagian dimana n merupakan angka jumlah pada delay_pools
    tipe merupakan tipe class delay yang dipakai.
    Secara umum tipe menyatakan bagaimana cara membagi bandwidth, ada 3 tipe:
tipe/class keterangan
1 semua bandwidth yang ada akan dibagi sama rata untuk semua user squidex ada bandwidth 128 dan semua bandwith dipakai untuk browsing
2 membatasi pemakaian bandwith dari total bandwidth yang ada, dan bandwith yang diperuntukan squid akan dibagi semua user dengan sama rata.ex ada bandwidth 128 dimana 28 kbit dipakai untuk email dan sisanya (128-28) 100 kbit dipakai untuk browsing
3 membatasi pemakaian bandwidth dari total bandwidth yang ada, setiap network class C akan mendapat bandwidth sama besar, setiap user pernetwork akan mendapat bandwidth yang sama besar dari total bandwidth per networkex: bandwidth tersedia 512 kb, untuk browsing disediakan bandwidth 384 kb, sisanya untuk aktifitas lain.
Di jaringan tersebut ada 3 departement dengan network yang berbeda misal lab (192.168.1.0/24), manajer(192.168.2.0/24), sales(192.168.3.0/24).
nah misah oleh admin di set bahwa pernetwork mendapat jatah 128 kb/s.
maka user� di sales akan mendapat pembagian bandwidth sama besar dari total 128 kb/s.
maka user� di lab akan mendapat pembagian bandwidth sama besar dari total 128 kb/s.
maka user� di manajer akan mendapat pembagian bandwidth sama besar dari total 128 kb/s.

misal:

delay_class 1 2    # pool 1 memakai clas tipe 2
delay_class 2 3 # pool 2 memakai clas tipe 3

  • delay_access
    Memberi batasan siapa saja yang boleh mempergunakan delay pools ini.
    Penting untuk diingat sebaiknya setelah menetukan batasan jangan lupa di akhiri dengan deny all.
    misal:
    delay_access 1 allow manajer
    delay_access 1 deny all
    delay_access 2 allow sales
    delay_access 2 deny all
  • delay_parameters
    Ini adalah bagian terpenting dari delay pools memberikan aturan main setiap delay pools yang dibentuk.
    delay parameter mempunyai format yang disesuaikan dengan tipe/class yang dipakai.
    Tapi disetiap tipe yang dipakai ada 1 format baku yaitu restore/max.restore menunjukkan maksimum kecepatan data yang dapat dilewatkan bila harga max sudah terlampaui, dalam satuan bytes/second

    max menunjukkan besar-nya file atau bucket yang dapat dilewatkan tanpa melalui proses delay. dalam satuan bytes.

    Yang perlu diperhatikan dari satuan diatas adalah harga restore dimana kita sering menerima/menyewa/membeli bandwidth dari provider dalam satuan bits/second bukan bytes/second. Sedangkan satuan kecepatan yang ditunjukkan oleh Microsoft pada saat mendonlot file adalah bytes/sec.
    Sedangkan satuan dari harga max sudah sesuai dengan kebiasaan sehari-hari, dimana kita memberi besaran bytes pada file-file.
    1 byte = 8 bit.

    SpesialCase: -1/-1 berarti unlimited atau tidak dibatasi pada nilai restore/max

    ex: 1000/64000 harga restore sama dengan 8000 bits/sec atau 8 kbits/sec.
    Yang artinya user akan mendapat donlot brustable selama file yang akan dibuka lebih kecil dari 64 kbytes, jadi kecepatan bisa diatas 8 kbit/sec.
    Bila ternyata file yang dibuka melebihi 64 bytes, maka proses limitasi akan segera dimulai dengan membatasi kecepatan maksimal 8 kbits/s.

    class 1
    delay_parameters <#pool individual>
    ex: delay_parameters 1 1000/64000
    Berarti semua network akan mendapat bandwidth yang sama di pool no 1.
    Sebesar 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.
    class 2
    delay_parameters <#pool agregate individual>
    ex: delay_parameters 1 32000/32000 1000/64000
    Berarti squid akan memakai bandwidth maksimum (32000*8) 256kbits dari semua bandwidth.
    Bila terdapat lebih dari 1 network class C, maka total yang dihabiskan tetap 256 kbit/sec
    dan tiap user akan mendapat bandwidth maksimum 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.
    class 3
    delay_parameters <#pool agregate network individual>
    ex: delay_parameters 1 32000/32000 8000/8000 1000/64000
    Berarti squid akan memakai bandwidth maksimum (32000*8) 256kbits dari semua bandwidth.
    Bila terdapat lebih dari 1 network class C, maka setiap network akan dipaksa maksimum sebesar (8000*8) 64 kbits/sec
    dan tiap user pada satu network akan mendapat bandwidth maksimum 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.
  • Contoh 1

    dalam 1 network dengan penggunaan bandwidth total tidak dibatasi terdapat beberapa komputer dengan klasifikasi sebagai berikut

    • admin, server dengan bandwidth unlimited
    • staff dengan bandwidth 1,5 kbytes/sec, bila file yang diakses melebihi 64Kbte
    • umum dengan bandwidth 1 kbytes/sec, bila file yang diakses melebihi 32 Kbyte
    acl all src 0.0.0.0/0.0.0.0
    acl admin src 192.168.1.250/255.255.255.255
    acl server src 192.168.1.251/255.255.255.255
    acl umum src 192.168.1.0/255.255.255.0
    acl staff src 192.168.1.1 192.168.1.111 192.168.1.2 192.168.1.4 192.168.1.71

    delay_pools 3

    delay_class 1 1
    delay_parameters 1 -1/-1
    delay_access 1 allow admin
    delay_access 1 allow server
    delay_access 1 deny all

    delay_class 2 1
    delay_parameters 2 1500/64000
    delay_access 2 allow staf
    delay_access 2 deny all

    delay_class 3 1
    delay_parameters 3 1000/32000
    delay_access 3 allow umum
    delay_access 3 deny all

    Cara mencobanya paling mudah adalah dengan menggunakan donlot manajer semacam DAP, GetRight maka akan terlihat bandwidth sudah dibatasi.

    Contoh 2

    Delay pools juga dapat digunakan untuk membatasi donlot file untuk extensi tertentu.
    Gunakan ACL url_regex untuk mengatasi hal ini.
    Contoh dibawah digunakan untuk membatasi donlot file multimedia hingga 1 kByte/sec.

    acl multimedia url_regex -i \.mp3$ \.rm$ \.mpg$ \.mpeg$ \.avi$ \.dat$
    delay_pools 1
    delay_class 1 1
    delay_parameters 1 1000/16000
    delay_access 1 allow multimedia
    delay_access 1 deny ALL

    Contoh 3 dari forum.linux.or.id

    bagaimana caranya membuat delay pools untuk membatasi download di siang hari untuk 15 klient sedangkan malam harinya lost asumsi jamnya ( 10:00 – 21:00)

    acl LTIME time SMTWHFA 10:00-21:00

    acl download url_regex -i ftp \.exe$ \.mp3$ \.mp4$ \.tar.gz$ \.gz$ \.tar.bz2$ \.rpm$ \.zip$ \.rar$
    acl download url_regex -i \.avi$ \.mpg$ \.mpeg$ \.rm$ \.iso$ \.wav$ \.mov$ \.dat$ \.mpe$ \.mid$
    acl download url_regex -i \.midi$ \.rmi$ \.wma$ \.wmv$ \.ogg$ \.ogm$ \.m1v$ \.mp2$ \.mpa$ \.wax$
    acl download url_regex -i \.m3u$ \.asx$ \.wpl$ \.wmx$ \.dvr-ms$ \.snd$ \.au$ \.aif$ \.asf$ \.m2v$
    acl download url_regex -i \.m2p$ \.ts$ \.tp$ \.trp$ \.div$ \.divx$ \.mod$ \.vob$ \.aob$ \.dts$
    acl download url_regex -i \.ac3$ \.cda$ \.vro$ \.deb$

    delay_pools 1

    delay_class 1 1
    delay_parameters 1 3000/3000
    delay_access 1 allow download TIME
    delay_access 1 deny all

    Contoh 4

    Bagaimana caranya membuat delay pools untuk membatasi download di siang hari dengan speed … dan malam hari dengan speed …, abis si bozz malem-nya mau pakai buat dolot.
    Jadi pengennya pas malam bw buat user makin kecil, bukan malah di loss

    acl JAM_KANTOR time SMTWHFA 07:00-18:00

    delay_pools 2 delay_class 1 2
    delay_parameters 1 24000/32000 -1/-1
    delay_access 1 allow riset JAM_KANTOR
    delay_access 1 deny all

    delay_class 1 2
    delay_parameters 2 8000/8000 -1/-1
    delay_access 2 allow riset !JAM_KANTOR
    delay_access 2 deny all

    Contoh 5

    Saya ada bandwidth besar, 1mbps.
    Ingin membatasi yang donlot file besar di atas 5mbyte, di beri speed 32kbps.
    Misal bila ada 3 user yang donlot, tiap-tiap user akan mendapat bw maximal 32kbps.

    acl user src 192.168.1.0/24

    delay_pools 1
    delay_class 1 2
    delay_parameters 1 40000/10000000 4000/5000000
    delay_access 1 allow user download
    delay_access 1 deny ALL

    Contoh 6 limit youtube

    untuk memaksa caching terhadap youtube ( sesuai wiki.squid-cache.org )

    acl youtube dstdomain -i .youtube.com
    acl striming url_regex -i get_video\?video_id videodownload\?
    cache allow youtube
    cache allow striming

    dan harap di ingat untuk posisi tsb di atas sebaiknya diletakkan sebelum hierarchy_stoplist
    kemudian bisa di gabung ke delay_pool juga

    delay_class 2 3
    delay_access 2 allow warnet striming
    delay_access 2 deny all
    delay_parameters 2 -1/-1 -1/-1 3000/200000

    hasilnya :

    Connection: 0x7f1da510
    FD 149, read 555, wrote 6508975
    FD desc: http://ash-v97.ash.youtube.com/get_video?video_id=YXF72VCyt5M
    in: buf 0x7fe65000, offset 0, size 4096
    peer: 192.168.0.111:3317
    me: 127.0.0.1:3127
    nrequests: 1
    defer: n 0, until 0
    uri http://ash-v97.ash.youtube.com/get_video?video_id=YXF72VCyt5M
    log_type TCP_MISS
    out.offset 6508872, out.size 6508975
    req_sz 555
    entry 0x7d24e240/599CDB16D8D8DCB1395E960CD807BD8B
    old_entry 0x0/N/A
    start 1193286572.113589 (2131.525289 seconds ago)
    username -
    delay_pool 2 <= terkena delay

    untuk delay_pool saya tidak menggunakan domain youtube.com, karena ternyata untuk url streaming nya sebagian hanya menggunakan ip address biasa, sehingga menggunakan regex spt di atas saya rasa lebih efektif.
    silakan di eksperimen sendiri untuk regex nya, bisa dg menganalisa access.log atau kalau yg gampang menggunakan sqstat spt yg pernah di post di thread sebelah.


    http://kebofunky.wordpress.com/2008/04/10/ini-adalah-contoh-untuk-mensetting-ipv6-manual-di-fedora-core-not-tutorial-cachakcachak-ip-6-r2001d30f100364-dev-eth0-proto-kernel-metric-256-expires-42943sec-mtu-150/

    Lanjutan Perintah dasar Linux

    Lanjutan Perintah dasar Linux

    Untuk lebih detail berikut daftar ringkas perintah-perintah yang ada di Linux2 :

    PERINTAH KETERANGAN
    any _ command --help |more Menampilkan keterangan bantu tentang pemakaian perintah. "-- help" sama dengan perintah pada DOS " /h".

    Perintah "more" diperlukan agar screen stop setiap 1 layar.
    Ls Melihat isi file dari direktori aktif.

    Pada linux perintah "dir" hanyaberupa alias dari perintah "ls".

    Untuk perintah "ls" sendiri sering dibuatkan liaas "ls --color", agar pada waktu di "ls" ditampilkan warna-warna sesuai dengan file-filenya, biasanya hijau untuk execute, dsb.
    ls -al | more Melihat seluruh isi file pada direktori aktif beserta file hidden,lalu ditampilkan layar per layar.

    cd directory Change directory.Menggunakan "cd" tanpa nama direktori akan menghantarkan anda ke home direktori. Dan "cd -" akan menghantarkan anda ke direktori sebelumnya.
    cp source destination Mengopi suatu file
    mcopy source destination Mengcopy suatu file dari/ke dos filesystem. Contoh mcopy a:autoexec.bat ~/junk . Gunakan "man mtools" untuk command yang sejenis : mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....

    mv source destination Memindahkan atau mengganti nama file
    ln -s source destination Membuat Simbolic Links, contoh "ln –sf
    /usr/X1 1R6/bin/XF86_SVGA /etc/X1 1/X, membuat Simbolic link dari file XF86_S VGA ke X
    rm files Menghapus file
    mkdir directory Membuat direktori baru
    rmdir directory Menghapus direktori yang telah kosong
    rm -r files (recursive remove) Menghapus file, direktori dan subdirektorinya. Hati-hati menggunakan perintah ini apabila anda login sebagai root, karena root dengan mudah dapat menghapus seluruh file pada sistem dengan perintah di atas, tidak ada perintah untuk undelete di Linux (belum). Tetapi jika anda penasaran, coba saja perintah berikut dan jalankan sebagai root : rm -rf /*
    cat filename | more Untuk melihat isi suatu file, dengan tambahan perintah more, maka isi file tersebut ditampilkan layar per layar.

    less filename Melihat suatu file layar per layar, dan tekan tombol "q" apabila ingin keluar, "less" hampir sama dengan perintah "cat filename | more".
    pico filename Edit suatu text file.
    pico -w filename Edit suatu text file, dengan menonaktifkan fungsi word wrap, sangat berguna untuk mengedit file seperti /etc/fstab.
    lynx file.html Melihat file html atau browse ke net dengan text mode, dimana gambar/image tidak dapat ditampilkan, tapi lynx adalah suatu browser yang sangat cepat, sangat berguna bila anda hanya menginginkan suatu artikel tanpa image.
    tar -zxvf filename.tar.gz Meng-untar sebuah file tar sekaligus meng-uncompress file tersebut (*.tar.gz or *.tgz), untuk meletakkannya direktori yg diinginkan tambahkan option -C direktori, contoh tar -zxvf filename.tar.gz -C /opt (meletakkan file tersebut di direktori /opt
    tar -xvf filename .tar Menguntar sebuah file tar yang tidak terkompress (*.tar).
    gunzip filename.gz Meng-uncompress sebuah file zip (*.gz" or *.z). dengan menggunakan gzip (juga zip atau compress) jika anda menginginkan mengompress file. bunzip2 filename.bz2 Meng-uncompress file dengan format (*.bz2) dengan utiliti "bzip2", digunakan pada file yang besar.
    unzip filename.zip Meng-uncompress file dengan format (*.zip) dengan utiliti "unzip" yang kompatibel dengan pkzip for DOS.
    find / -name "filename" Mencari "namafile" pada komputer anda dimulai dengan direktori / Namafile tersebut mungkin saja berisi wildcard (*,?).

    locate filename Mencari file dengan string "filename". Sangat mudah dan cepat dari perintah di atas.
    pine Email reader yang sangat mudah digunakan, dan menjadi favorit banyak pemakai mesin Unix. Atau anda bisa pakai email yang sangat customize, yaitu "mutt",
    talk username1 Berbicara dengan keyboard dengan user lain yg sedang login pada mesin kita (atau gunakan "talk username1@machinename" untuk berbicara dengan komputer lain) . Untuk menerima undangan percakapan, ketikkan"talk username2". Jika seseorang mencoba untuk berbicara dengan anda dan itu dirasakan mengganggu, anda bisa menggunakan perintah "mesg n" untuk menolak pesan tersebut. Dan gunakan perintah "who" atau "rwho" untuk melihat siapa user yang mengganggu tersebut.
    mc Menjalankan "Morton Commander" ... eh... salah maksudnya "Midnight Commander" sebagai file manager, cepat dan bagus.
    telnet server Untuk menghubungkan komputer kita ke komputer lain dengan menggunakan protokol TELNET. Gunakan nama mesin atau Nomor IP mesin, dan anda akan mendapatkan prompt login name dari mesin tersebut, masukkan passwordnya, oh ya .. anda juga harus punya account di mesin remote tersebut. Telnet akan menghubungkan anda dengan komputer lain dan membiarkan anda untuk mengoperasikan mesin tersebut. Telnet sangat tidak aman, setiap yang
    anda ketik menjadi "open text", juga dengan password anda !
    rlogin server (=remote login) Menghubungkan anda ke komputer lain. Loginname dan password, tetapi apabila account anda tersebut telah dipakai, maka anda akan mendapatkan pesan kesalahan pada password anda.
    rsh server (=remote shell) Jalan lain untuk menghubungkan anda ke remote machine. Apabila login name/password anda sedang dipakai di remote mesin tsb, maka password anda tidak akan berlaku.
    ftp server Ftp ke mesin lain, ini sangat berguna untuk mengopy file ke/dari remote mesin.
    minicom Progam Minicom (dapat dikatakan seperti "Procomm for Linux").
    ./program_name Menjalankan program pada direktori aktif, yang mana tidak terdapat pada PATH anda
    xinit Menjalankan X-window server (tanpa windows manager).

    startx Menjalankan X-window server dan meload default windows
    manager. Sama seperti perintah "win" under DOS dengan Win3.1
    startx -- :1 Menjalankan sesi X-windows berikutnya pada display 1 (default menggunakan display 0). Anda dapat menjalankan banyak GUI terminal secara bersamaan, untuk pindah antar GUI gunakan ,
    , etc, tapi ini akan lebih banyak memakan memori.
    xterm (pada X terminal) ,menjalankan X-windows terminal. Untuk keluar
    ketikkan "exit"
    xboing (pada X terminal). Sangat lucu deh ...., seperti games-games lama
    gimp (pada X terminal) Program image editor yang sangat bagus, bisa disamakan dengan Adobe Photoshop, yang membedakan adalah program ini gratis.
    netscape (pada X terminal) menjalankan netscape, versi pada waktu tulisan ini dibuat telah mencapai versi 4.7
    netscape -display host:0.0 (pada X terminal) menjalankan netscape pada mesin yang aktif dan menampilkan outputnya pada mesin yang bernama "host" display 0 screen 0. Anda harus memberikan akses untuk mesin aktif untuk menampilkannya pada mesin "host" dengan perintah "xhost"
    shutdown -h now (sebagai root) Shut down sistem. Umumnya digunakan untuk remote shutdown. Gunakan
    halt reboot (sebagai root) Halt atau reboot mesin. Lebih simple dari perintah di atas. man topic Menampilkan daftar dari sistem manual pages (help) sesuai dengan topic. Coba "man man". lalu tekan "q" untuk keluar dari viewer.
    Perintah "info topic" Manual pages dapat dibaca dilhat dengan cara "any_command --help".
    apropos topic Menampilkan bantuan manual berdasarkan topik..
    pwd Melihat direktori kerja saat ini
    hostname Menampilkan nama local host (mesin dimana anda sedang bekerja). Gunakan perintah "netconf" (sebagai root) untuk merubah nama host dari mesin tersebut, atau edit file /etc/hosts
    whoami Mencetak login name anda
    id username Mencetak user id (uid) atau group id (gid)
    date Mencetak atau merubah tanggal dan waktu pada komputer, contoh merubah tanggal dan waktu ke 2000-12-31 23:57 dengan perintah : date 123123572000 time Melihat jumlah waktu yg ditangani untuk penyelesaian suatu proses + info lainnya. Jangan bingung dengan perintah "date"
    who Melihat user yang login pada komputer kita.
    rwho -a Melihat semua user yg login pada network anda. Layanan perintah rwho
    ini harus diaktifkan, jalankan setup sebagai root untuk mengaktifkannya.
    finger user _name Melihat informasi user, coba jalankan : finger root last Melihat user sebelumnya yang telah login di komputer.
    uptime Melihat jumlah waktu pemakaian komputer oleh seseorang, terhitung proses reboot terakhir.
    ps (=print status) Melihat proses-proses yang dijalankan oleh user
    ps axu | more Melihat seluruh proses yang dijalankan, walaupun tanpa terminal control, juga ditampilkan nama dari user untuk setiap proses.
    top Melihat proses yang berjalan, dengan urutan penggunaan cpu.
    uname -a Informasi system kernel anda
    free Informasi memory (dalam kilobytes).
    df -h(=disk free) Melihat informasi pemakaian disk pada seluruh system (in human-readable form)
    du / -bh | more (=disk usage) Melihat secara detil pemakaian disk untuk setiap direktori, dimulai dari root (in human legible form).
    cat /proc/cpuinfo Cpu info. Melihat file pada /proc directori yang bukan merupakan file nyata (not real files).
    cat /proc/interrupts Melihat alamat interrupt yang dipakai.
    cat /proc/version Versi dari Linux dan informasi lainnya.
    cat /proc/filesystems Melihat filesystem yang digunakan.
    cat /etc/printcap Melihat printer yang telah disetup
    lsmod (as root) Melihat module-module kernel yang telah di load.
    set|more Melihat environment dari user yang aktif
    echo $PATH Melihat isi dari variabel "PATH". Perintah ini dapat digunakan untuk menampilkan variabel environmen lain dengan baik. Gunakan "set" untuk
    melihat environmen secara penuh.
    dmesg Mencetak pesan-pesan pada waktu proses boot. (Menampilkan file: /var/log/dmesg.)