Update Accelerator feat. Mikrotik Proxy HIT

Update Accelerator adalah software kecil yang ditulis dengan bahasa Perl, dan memiliki fungsi melakukan cache Windows Updates, software updates, antivirus updates, patch game online dan sebagainya. Dapat diintegrasikan dengan baik pada squid atau advanced proxy, sehingga sangat bermanfaat dalam melakukan efisiensi penggunaan bandwidth dalam jaringan yang menggunakan banyak klien, misalnya perkantoran, wifi hotspot, gamecenter atau warnet, dan lain-lainnya.

Permasalahan yang sering muncul adalah jika update accelerator berjalan bersama dengan squid, dan disandingkan dengan mikrotik yang memiliki traffic shaper (bandwidth limiter) baik dengan simple queue atau queue tree maka cache yang hit dari update accelerator akan tetap di penalti / terkena limit pada mikrotik.

Bagaimana hal ini bisa terjadi? Perhatikan contoh dibawah ini :

Coba kita perhatikan alur data yang terjadi pada saat klien mengirim request/permintaan mendownload sebuah file update atau patch. Misalnya update ini memiliki url http://update.windodol.com/update.cab.

Client –> [Mikrotik + Proxy/Adv. Proxy + Upd. Accelerator] –> Internet

Pada saat pertama request, klien mengirimkan permintaan http://update.windodol.com/update.cab lewat mikrotik dan mesin proxy (misalnya memiliki IP 192.168.90.2), kemudian diteruskan menuju ke internet.

Selanjutnya, jika file tersebut ditemukan, maka internet akan menyampaikannya ke klien melewati perantaraan mikrotik dan mesin proxy. Update accelerator akan menyimpan (cache) file update.cab dan menyimpan url file yang bersangkutan (http://update.windodol.com/update.cab) kedalam databasenya.

Client <– [Mikrotik + Proxy/Adv. Proxy + Upd. Accelerator (Cached)] <– Internet

Jika ada klien kedua yang merequest patch yang sama dengan url yang identik, maka squid akan mengambil file update.cab dari url cache lokal, misalnya http://192.168.90.2/updatecache/asdfasdf/update.cab (Update Accelerator HIT).

Akan tetapi, proses pengambilan patch dari cache lokal ini akan di “masquerade” oleh squid. File patch yang disampaikan ke klien oleh squid tetap memiliki URL asli yaitu http://update.windodol.com/update.cab, bukan menggunakan url cache (http://192.168.90.2/updatecache/asdfasdf/update.cab).

Hasilnya, patch yang hit tersebut akan tetap terkena penalti di traffic shaping mikrotik karena mikrotik menganggap file yang di didownload berasal dari internet. Download patch tersebut tidak akan disampaikan dengan full speed ke klien.

before trick

Bagaimana cara untuk mengatasi hal ini?

Sederhananya adalah dengan memaksa penyampaian patch langsung menggunakan URL cache lokal. Dalam contoh implementasi hal ini saya menggunakan :

  • Mikrotik RB750 dengan IP mikrotik – proxy 192.168.90.1, dan IP mikrotik – klien 192.168.1.1
  • Mesin proxy berbasis IPFire dengan IP interface green0 (menuju LAN) 192.168.90.2

Pengaturan disisi proxy

Pertama, menandai semua paket data yang keluar dari port 81 dengan DSCP 12 dengan menggunakan iptables. IPFire secara default membuka akses HTTP pada port 81. Hal ini menjadi menguntungkan, karena tidak menggunakan port 80 yang bersinggungan langsung dengan aktivitas akses squid. Agar rule iptables nya jalan setiap kali start-up tambahkan rule tersebut didalam file /etc/sysconfig/firewall.local.

vim /etc/sysconfig/firewall.local

tambahkan baris berikut ini :

## add your 'start' rules here
iptables -t mangle -A OUTPUT -p tcp --sport 81 -j DSCP --set-dscp 12

Catatan: green0 adalah interface IPFire yang menuju LAN.

Kedua, IPFire memiliki modul PHP namun secara default belum diaktifkan, oleh karena itu kita harus mengaktifkannya secara manual. Kita akan mengaktifkan PHP untuk memanipulasi proses pengambilan patch/updates di update accelerator.

vim /etc/httpd/conf/loadmodule.conf

Temukan baris #LoadModule php5_module /usr/lib/apache/libphp5.so, dan hilangkan tanda pagar didepannya. Menjadi :

LoadModule php5_module /usr/lib/apache/libphp5.so

Selanjutnya tambahkan php handler :

vim /etc/httpd/conf/global.conf

Tambahkan php handler pada global.conf

AddHandler php5-script php htm html

Restart apache agar membaca konfigurasi baru

apachectl -k graceful

Oke.. step ketiga, menambahkan script PHP yang akan meredirect request update accelerator dan squid ke cache lokal.

vim /srv/web/ipfire/html/get.php

Copas script berikut ini :

<?php
$ipfire = "http://192.168.90.2:81/updatecache/";
$updxlget = $ipfire.$_GET['vendorid'];
header("Location: $updxlget");
exit;
?>

Catatan untuk PHP coder :

404 Not Found? Impossible.. karena update accelerator akan terlebih dahulu memeriksa eksistensi file yang bersangkutan.

Ke empat, edit file update accelerator. Jika anda sedang menggunakan advanced proxy dan mengaktifkan update accelerator, silakan non-aktifkan dahulu update accelerator untuk menghindari terjadinya kesalahan.

cp /usr/sbin/updxlrator /usr/sbin/updxlrator.bak

vim /usr/sbin/updxlrator

Carilah baris berikut ini :

$cacheurl="http://$netsettings{'GREEN_ADDRESS'}:$http_port/updatecache/$vendorid/$uuid/$updfile";

kemudian ganti menjadi :

$cacheurl="http://$netsettings{'GREEN_ADDRESS'}:$http_port/get.php?vendorid=$vendorid/$uuid/$updfile";

Selesai, you are good to go!

Pengaturan disisi mikrotik

Pengaturan di mikrotik cukup sederhana, cukup tambahkan DSCP matcher di mangle.

/ip firewall mangle
add action=mark-packet chain=postrouting comment="dscp matcher" dscp=12 \
new-packet-mark=packet-hits passthrough=no

Kemudian tambahkan simple queue atau queue tree sesuai selera anda. Dalam contoh ini saya melimit paket HIT advanced proxy atau Update Accelerator 30 Mbps menggunakan queue tree.

/queue tree
add max-limit=30M name=cache-hits packet-mark=packet-hits parent=global-out priority=1 \
queue=default-small

Jika anda menggunakan squid / advanced proxy yang support ZPH ToS atau QoS, anda tidak perlu menambahkan rule tambahan pada mangle, cukup dengan menggunakan DSCP matcher maka paket HIT proxy atau update accelerator akan ditangani hanya dengan satu rules.

Screenshot setelah menggunakan trik redirection ini :

after trick

Log httpd pada saat update / patch diambil dari cache lokal :

httpd log

Screenshot status Update Accelerator yang saya gunakan saat ini :

mycachestats

Pada gambar diatas terlihat efisiensi bandwidth mencapai indeks 15 lebih (1500%) dan bandwidth yang diselamatkan oleh Update Accelerator berjumlah 2 terabyte lebih.

Semoga tutorial ini bermanfaat!

Pembaca yang baik selalu meninggalkan komentar yang bermanfaat atau mengucapkan terima kasih jika posting ini bermanfaat. Dilarang keras copas tutorial ini, kecuali dengan menyertakan linkback ke blog ini. :)

69 Comments

  1. novianry

    Terima kasih mas Fajar…

  2. novianry

    Iya itu juga sudah di ganti mas…

    Topologi saya ipfire sebagai router, firewall dan proxy. Mikrotik di belakangnya.

    Masih bingung :(

     

     

    • fazar

      hmm.. kok aneh ya, soalnya teman-teman yg lain sukses mengimplementasikan teknik ini. untuk sementara gunakan accelerator yg default aja, nanti akan saya coba periksa kenapa hal tsb bisa terjadi.

  3. novianry

    Loadmodule dan get.php sdh saya aktifkan dan buat mas Fajar, tp masih error. Berikut /httpd/error_log

    [Wed Apr 10 08:42:03 2013] [error] [client 192.168.88.1] (8)Exec format error: exec of ‘/srv/web/ipfire/html/get.php’ failed
    [Wed Apr 10 08:42:03 2013] [error] [client 192.168.88.1] Premature end of script headers: get.php

    Dimana ya masalahnya

    Thanks sebelumnya.

    • fazar

      sudah edit /usr/sbin/updxlrator ?

      cari baris berikut :

      $cacheurl="http://$netsettings{'GREEN_ADDRESS'}:$http_port/updatecache/$vendorid/$uuid/$updfile";

      kemudian ganti menjadi :

      $cacheurl="http://$netsettings{'GREEN_ADDRESS'}:$http_port/get.php?vendorid=$vendorid/$uuid/$updfile";

  4. Novianry

    Saya telah mengikuti seperti panduan di atas. File update saya liat di statistic telah tercache. Tetapi di log http server saya cek ada error : 500 internal server error

    /get.php?vendorid=microsoft/……

     

    • fazar

      apakah modul php sudah diaktifkan? dan apakah sudah dibuatkan file get.php di root directory webserver?
      kemungkinan ada kesalahan disini.

  5. masanom

    mas Fajar, saya pake Mikrotik+[IpCop+Update Accelerator] untuk Update Patch game Online. Selama ini semua berjalan lancar.

    Baru -baru ini saya tambahkan mirror untuk game Elsword dan sudah tercache dengan sempurna tiap kali update patch (tampak sudah tersimpan di Update Accelerator), tapi kenapa tiap kali Client lain melakukan update, tidak mengambil dari Proxy?. Jadi selalu mengulang download dari Web langsung dan tersimpan lagi di proxy. Jadinya ada banyak file yang sama (kembar) terlihat di Update Accelerator.

    Hal ini berlaku hanya untuk game Elsword saja, untuk game-game lain bisa HIT dg lancar sebagaimana mestinya.

    Saya sudah TORCH untuk game Elsword, patch-nya juga lewat port 80 seperti yang lain.

    Saya ucapkan terimakasih sebelumnya untuk bantuannya.

  6. rahmad kurniadi

    terima kasih, anda telah mengajarkan ilmu dan Allah akan ajarkan ilmu baru bagi anda, amin

  7. joen

    terima kasih mas fazar atas pencerahan nya, update accelerator nya saya sudah jalan :cool:

    punya referensi lain untuk patch game online gak yah ?! :grin:

  8. adit

    thanks gan… akhirnya saya menemukan pemecahan masalah update accelerator yg terkena limit. nice post!!!! dan thanksss…

  9. joen

    sampai sekarang saya belum merasakan manfaat dari update accelerator dari IP Fire. mungkin karena tidak tau cara melihat update accelerator sudah berfungsi dengan baik dan benar.

    mohon dishare mas fazar, gimana cara saya memastikan bahwa update accelerator saya itu sadah berjalan dengan baik ato belum ?!

    • fazar

      update accelerator kerasa banget efeknya saat melakukan update windows atau antivirus. misalnya masbro barusan install windows 7 kemudian melakukan windows update sampe selesai. pada saat masbro melakukan hal yang sama – instal windows 7 versi yang SAMA persis dengan yg di instal sebelumnya, dan kemudian melakukan windows update maka akan terasa sangat cepat (5 – 10x lebih cepat) karena update windows disampaikan dari cache lokal oleh update accelerator. ideal untuk lingkungan hotspot atau workshop komputer, namun kurang ideal untuk lingkungan gamecenter (kecuali script nya sudah dimodifikasi untuk caching patch game online).

      • joen

        saya sudah coba untuk melakukan update windows, adobe dan anti virus kaspersky. tetapi tetap saja “local cache is empty” pada update accelerator.

        kira2 apa yg salah yah ??

        • fazar

          syarat pertama agar update accelerator dapat berjalan adalah proxy dalam keadaan aktif dan klien yang bersangkutan mendownload update lewat proxy tersebut. di halaman web interface -> network, jangan lupa tandai enable on green, transparent on green, dan enable update accelerator. dan terakhir lakukan save & restart. update accelerator mendukung caching windows update dan adobe, sedangkan untuk kaspersky belum di dukung.

          contoh setting : http://i.imgbox.com/adbWRMCb.png

  10. joen

    mas fazar … kok masih “Local cache is empty” yah. padahal saya sudah pake 1 bulan. kira2 apa yg salah yah ?

Leave a Reply

Your email address will not be published. Required fields are marked *