PT. Hawk Teknologi Solusi

Silahkan Cari Disini

Rabu, 30 April 2008

Contoh Kasus Management Bandwidth dengan Mikrotik BGP Web-Proxy

Sejak saya menulis artikel tentang memisahkan bandwidth Intenational dan IIX/NICE sangat banyak sekali pertanyaan baik melalui email maupun chatting.

Sebenarnya Pak Valens Riyadi @ www.mikrotik.co.id sudah membuat beberapa artikel yang sangat baik, tetapi saya coba untuk memberikan contoh kasus yang saya impelementasi di LAN kantor PT. Data Utama Dinamika Jakarta agar para pembaca dapat lebih jelas lagi bagaimana caranya memisahkan traffic International dengan IIX/NICE menggunakan Mikrotik yang menjalankan BGP dan Web-Proxy.

Adapun diagram jaringannya dapat dilihat pada gambar 1. dibawah ini.

Image

Gambar 1. Diagram Jaringan Kantor PT. Data Utama Dinamika Jakarta


Kondisi jaringan adalah sbb:

  1. Router Kantor menggunakan 3 ethernet card dijalankan pada PC Pentium 4 2660Mhz, Memory 256MB, DOM 128MB.
  2. Klient menggunakan IP Private sehingga diperlukan mekanisme NAT / Masquerade
  3. Router kantor menerima prefix/routing table dari NICE/OpenIXP (NICE/OpenIXP adalah alternatif IIX yang dikelola PT. IDC) menggunakan mekanisme BGP Peering.
  4. Mikrotik RouterOS menggunakan Vesi 2.9.41 dan mengaktifkan paket routing-test, sesuai petunjuk dari Valens Riyadi @ www.mikrotik.co.id.

Image

Gambar 2. Resources Mikrotik Router Kantor

Image

Gambar 3. Packet List

Konfigurasi IP

Image

Gambar 4. Konfigurasi IP Router Kantor


Konfigurasi NAT/Masqurade LAN 192.168.2.0/24

Image

Gambar 5. Konfigurasi NAT General

Image

Gambar 6. Konfigurasi NAT Action


Konfigurasi BGP Peer

Image

Gambar 7. BGP Instance Mikrotik2BGP


Image

Gambar 8. BGP Peer Mikrotik2BGP

Image

Gambar 9. BGP Instance Mikrotik3BGP


Image

Gambar 10. BGP Peer Mikrotik3BGP

AS Number 65003 dan 65004 adalah private AS Number hanya digunakan utk peering internal antar Mikrotik2BGP dengan Mikrotik3BGP


Konfigurasi Routing Filter

Konfigurasi routing filter ini bertujuan agar Mikrotik hanya menerima supernet dengan prefix-length=8-24 bit sehingga lebih menghemat memory penyimpanan prefix/routing table dari NICE/OpenIXP/IIX.

[datautama@router-02-jkt] > /routing filter print

Flags: X - disabled

0 chain=prefix-in prefix-length=0-7 invert-match=no action=discard

1 chain=prefix-in prefix-length=8-24 invert-match=no action=accept

set-nexthop=203.89.26.65

2 chain=prefix-in prefix-length=25-32 invert-match=no action=discard

3 chain=prefix-out prefix-length=0-32 invert-match=no action=discard

BGP Peer Status

Image

Gambar 11. BGP Peer Status

Jika BGP Peering sudah terbentuk maka Mikrotik3BGP menerima prefix-count=2939, dimana jumlah prefix ini akan berubah-rubah secara dinamis tergantung perkembangan BGP advertise dari ISP/NAP atau pengelola jaringan lainnya.


Route List

Image

Gambar 12. Route List

Pada Gambar 12, bisa dilihat routing table dari BGP yang ditandai dengan DAB, sedangkan routing statis ditandai dengan AS.

Dalam sistem routing memiliki aturan main: ”routing spesifik akan dibaca terlebih dahulu”. Dengan demikian maka table routing dari NICE/OpenIXP/IIX yang lebih spesifik akan dibaca dahulu dan jika network yang dicari tidak diketemukan maka paket akan melalui default route yang ditandai dengan ”destination=0.0.0.0/0 gateway=203.89.24.65” ini artinya paket data yang menuju International akan melalui gateway=203.89.24.65 dengan Interface=ether1-intl sedangkan traffic data yang menuju NICE/OpenIXP/IIX akan melalui gateway=203.89.2.6.65 dengan Interface=vlan-id-23-iix, dalam contoh kasus ini kebetulan menggunakan VLAN yang dijalankan pada interface ether2-iix. Sebenarnya tidak harus menggunakan vlan, ether2 juga cukup syaratnya adalah antara traffic NICE/OpenIXP/IIX dan traffic International harus melalui dua Interface yang berbeda karena ini ada hubungannya dengan proses mangle dan limitasi bandwidth antara traffic lokal dengan traffic international.


Hasil Traceroute

Image

Gambar 13. Traceroute ke www.yahoo.com

Image

Gambar 14. Traceroute ke www.plasa.com

Dari hasil traceroute antara Gambar 13 dan Gambar 14 bisa dilihat perbedaan hop1 dimana utk traffic international melalui 203.89.24.65 menggunakan interface ether1-intl dan traffic lokal melalui 203.89.26.65 menggunakan interface vlan-id-23-iix

Konfigurasi Tanpa BGP

Jika ternyata ISP Anda tidak dapat memberikan layanan BGP maka Anda dapat mendownload skrip berikut dari http://www.datautama.net.id/harijanto/mikrotik/datautama-nice-statik.php

Copy skrip diatas lalu lakukan koneksi ssh ke mikrotik menggunakan aplikasi putty.exe lalu paste kan skrip tersebut maka akan dihasilkan daftar rules pada /ip route rules.

Kemudian tambahkan statik routing berikut :

/ip route add dst-address=0.0.0.0/0 gateway=[ip gateway iix/nice] routing-mark=nice

Dalam contoh ini ip gateway/nice adalah = 203.89.26.65 sehingga statik routingnya adalah sbb:

/ip route add dst-address=0.0.0.0/0 gateway=203.89.26.65 routing-mark=nice

Dengan demikian maka routing dari dalam menuju ke alamat IP IIX/NICE akan diarahkan melalui gateway 203.89.26.65 hasilnya akan sama saja dengan menggunakan BGP, bedanya kalau menggunakan BGP routing dihasilkan secara dynamic sedangkan dengan cara ini bersifat statik. Tetapi ISP Anda harus memberikan dua ip point-to-point agar Anda memiliki dua gateway dan masing-masing ip tersebut tetap harus dipisahkan interface/ethernet-nya.


Pengaturan Bandwidth

Sesuai dengan petunjuk dari Valens Riyadi @ www.mikrotik.co.id karena network klien menggunakan IP Private, maka perlu melakukan connection tracking pada mangle.

Image

Gambar 15. Connection Tracking

Selanjutnya untuk masing-masing trafik, lokal dan internasional dibuatkan rule mangle connection pada untuk masing-masing IP komputer yang akan di atur bandwidthnya.


Konfigurasi Mangle

Mangle adalah proses menandai paket data sesuai dengan kebijakan yang diinginkan, sebenarnya teknik mangle ini sudah biasa juga dilakukan di linux dengan mengunakan iptables, di mikrotik proses mangle lebih mudah dan menyenangkan. Untuk contoh kasus ini contoh skrip manglenya adalah sbb:

# may/16/2007 17:23:13 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ ip firewall mangle

#1

add chain=forward out-interface=ether1-intl src-address=192.168.2.12 \

action=mark-connection \

new-connection-mark=harijanto-conn-intl passthrough=yes comment="" \

disabled=no

#2

add chain=forward out-interface=vlan-id-23-iix src-address=192.168.2.12 \

action=mark-connection new-connection-mark=harijanto-conn-nice \

passthrough=yes comment="" disabled=no

#3

add chain=output dst-address=192.168.2.12 action=mark-packet \

new-packet-mark=harijanto-packet-intl passthrough=yes comment="" \

disabled=no

#4

add chain=forward connection-mark=harijanto-conn-intl action=mark-packet \

new-packet-mark=harijanto-packet-intl passthrough=yes comment="" \

disabled=no

#5

add chain=forward connection-mark=harijanto-conn-nice action=mark-packet \

new-packet-mark=harijanto-packet-nice passthrough=yes comment="" \

disabled=no

#6

add chain=forward out-interface=ether1-intl src-address=192.168.2.119 \

action=mark-connection new-connection-mark=christine-conn-intl \

passthrough=yes comment="" disabled=no

#7

add chain=forward out-interface=vlan-id-23-iix src-address=192.168.2.119 \

action=mark-connection new-connection-mark=christine-conn-nice \

passthrough=yes comment="" disabled=no

#8

add chain=output dst-address=192.168.2.119 action=mark-packet \

new-packet-mark=christine-packet-intl passthrough=yes comment="" \

disabled=no

#9

add chain=forward connection-mark=christine-conn-intl action=mark-packet \

new-packet-mark=christine-packet-intl passthrough=yes comment="" \

disabled=no

#10

add chain=forward connection-mark=christine-conn-nice action=mark-packet \

new-packet-mark=christine-packet-nice passthrough=yes comment="" \

disabled=no

mangle dibuat satu persatu untuk semua komputer yang akan di manage bandwidthnya

Penjelasan mangle

Proses mangle biasanya diawali dengan new-connection-mark yang kemudian dilanjutkan dengan new-packet-mark, jadi di mark koneksinya dulu baru di mark paketnya, nah paket ini yang akan digunakan di queue-tree maupun di simple queue.

Mangle no #1,#3,dan #4 adalah proses mangle traffic international untuk komputer IP 192.168.2.12.

Mangle no #2 dan #5 adalah proses mangle traffic lokal untuk komputer IP 192.168.2.12

Pada mangle no #3 digunakan chain=output karena ini tujuannya untuk menandai paket dari Web-Proxy yang dijalankan di Mikrotik3BGP ke komputer IP 192.168.2.12, salah satu pertanyaan yang sering diutarakan adalah bagaimana melakukan limitasi bandwidth kalau pakai proxy karena biasanya jika menggunakan proxy limitasi per komputer jadi tidak efektif, nah hasil dari meditasi sampai jam 4 subuh adalah harus melakukan mangle pada chain=output karena klient mendapatkan isi website dari proxy yang di jalankan di Mikrotik itu sendiri, lebih jelasnya nanti akan dijabarkan pada bagian Web-Proxy.

Sedangkan No #6 sd #10 adalah identik dengan no #1 sd #5 bedanya adalah sumber IP komputer yang di mangle.

Hasil dari skrip diatas adalah seperti pada gambar 16 berikut

Image

Gambar 16. Hasil Mangle

Salah satu kunci efektif tidaknya proses mangle adalah pemilihan “chain”, penjelasannya ada pada dokumentasi “Packet Flow” yang bisa dibaca dari situs http://www.mikrotik.com/testdocs/ros/2.9/ip/flow.php

Pengaturan Bandwidth menggunakan Queue Tree

Untuk melakukan limitas yang efektif dapat digunakan queue-tree, pada dokumen http://www.mikrotik.com/testdocs/ros/2.9/root/queue.php

Dijelaskan bahwa

The queuing is applied on packets leaving the router through a real interface (i.e., the queues are applied on the outgoing interface, regarding the traffic flow), or any of the 3 additional virtual interfaces (global-in, global-out, global-total).

Artinya proses queuing diaplikasikan pada saat paket keluar dari router melalui interface fisik atau interface virtual.

Oleh karena itu pada queue tree didefinisikan bahwa utk traffic download berarti traffic yang keluar dari ether3-client , artinya dari router menuju ke komputer klient sedangkan upload adalah traffic dari ether1-intl atau vlan-id-23-iix yang mana masing-masing interface dilewati oleh paket yang berbeda, ether1-intl untuk traffic international dan vlan-id-23-iix untuk traffic lokal, oleh karena itu harus memiliki interfacenya masing-masing.


Berikut adalah contoh skrip queue tree yang digunakan

# may/16/2007 19:31:00 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ queue tree

#1

add name="harijanto-intl-down" parent=ether3-client \

packet-mark=harijanto-packet-intl limit-at=0 queue=default priority=8 \

max-limit=128000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#2

add name="harijanto-intl-up" parent=ether1-intl \

packet-mark=harijanto-packet-intl limit-at=0 queue=default priority=8 \

max-limit=128000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#3

add name="harijanto-nice-up" parent=vlan-id-23-iix \

packet-mark=harijanto-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#4

add name="harijanto-nice-down" parent=ether3-client \

packet-mark=harijanto-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#5

add name="christine-intl-down" parent=ether3-client \

packet-mark=christine-packet-intl limit-at=64000 queue=default priority=8 \

max-limit=256000 burst-limit=512000 burst-threshold=128000 burst-time=20m \

disabled=no

#6

add name="christine-intl-up" parent=ether1-intl \

packet-mark=christine-packet-intl limit-at=64000 queue=default priority=8 \

max-limit=128000 burst-limit=256000 burst-threshold=96000 burst-time=20m \

disabled=no

#7

add name="christine-nice-down" parent=ether3-client \

packet-mark=christine-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#8

add name="christine-nice-up" parent=vlan-id-23-iix \

packet-mark=christine-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

Penjelasan

#1 adalah pengaturan traffic download internasional untuk IP komputer 192.168.2.12 dimana parent = ether3-client, artinya traffic yang keluar dari router ke komputer 192.168.2.12 berdasarkan packet-mark=harijanto-packet-intl yang merupakan hasil mangle, untuk limit-at, max-limit, burst-limit penjelasannya dapat dibaca dari http://www.mikrotik.com/testdocs/ros/2.9/root/queue.php

#2 adalah pengaturan traffic upload international untuk IP komputer 192.168.2.12 dimana parent=ether1-intl, artinya traffic yang keluar dari router ke Internet

#3 adalah pengaturan traffic upload lokal untuk IP komputer 192.168.2.12 dimana parent=vlan-id-23-iix, artinya traffic yang keluar dari router ke lokal NICE/OpenIXP/IIX

#4 adalah pengaturan traffic downlaod lokal untuk IP komputer 192.168.2.12 dimana parent=ether3-client, artinya traffic yang keluar dari router ke komputer 192.168.2.12 berdasarkan packet-mark=harijanto-packet-nice yang merupakan hasil mangle.

#5 sd #8 adalah identik dengan no #1 sd #4 bedanya IP komputer yang di limit adalah 192.168.2.119.

Hasilnya dapat dilihat pada gambar 17 berikut ini

Image

Gambar 17. Queue Tree

Sampai pada langkah ini proses limitasi bandwidth per komputer sudah selesai tetapi jika diperlukan agar grafik pemakaian peruser dapat ditampilkan pada web mesin mikrotik maka perlu dibuat Simple Queues., contohnya seperti pada gambar 18 dan 19 berikut

Image

Gambar 18. Contoh Simple Queue General

Image

Gambar 19 Contoh Simple Queue Advanced

Di Simple Queue tidak perlu menentukan max limit karena yang membatasi adalah queue-tree tetapi kalau diperlukan boleh juga diisi max limitnya, yang penting adalah target address dan packet-mark nya. Jadi masing-masing user dibuatkan dua simple queue, satu untuk yang international satu untuk yang lokal.

Kalau sudah untuk mengaktifkan grafiknya dilakukan dengan mengaktifkan dari tool graphing seperti pada gambar 20 berikut


Image

Gambar 20. Tools Graphing

Hasilnya dapat dilihat seperti pada gambar 21 berikut

Image

Gambar 21. Contoh grafik MRTG per Simple Queue International

Image

Gambar 21. grafik MRTG per Simple Queue Lokal

Ok selesai sudah proses limitasi bandwidth menggunakan BGP dan Queue-Tree

Selanjutnya bagaiman kalau mau pake Proxy? Seperti sudah diketahui bahwa proxy sangat bermanfaat dalam melakukan penghematan bandwidth setidaknya sampai dengan 30% traffic web yang ada.


Konfigurasi Web-Proxy

Mikrotik pada dasarnya adalah linux yang sangat powerfull, bahkan dengan mudahnya kita menggunakan squid yang dijalankan di mikrotik. Di mikrotik paket squid ini dikenal dengan nama Web-Proxy

Image

Gambar 22. Web-Proxy Settings

Untuk mengaktifkan Web-Proxy caranya dari IP->Web Proxy kemudian klik enable agar Web-Proxy dijalankan, untuk menjadi Transparant Proxy dengan cara ceklist kotak disamping kiri tulisan ”Transparent Proxy” kemudian OK atau Apply. Untuk fungsi Transparent Proxy harus didukung juga dengan IP->Firewall->NAT, nanti akan saya jelaskan lebih detail.

Untuk Web-Proxy ini yang penting adalah pertama tambahkan Access List agar IP network LAN dapat di allow untuk mengambil web melalui proxy sedangkan selain IP LAN harus di deny, ini bertujuan agar Web-Proxy tersebut tidak open proxy yang berakibat habisnya bandwidth yang dimiliki karena di akses oleh user diluar LAN.

Jika memiliki proxy lainnya dapat pula dijadikan Parent Proxy, misalnya proxy ISP atau proxy yang dijalankan pada Linux Server yang berkapasitas besar. Tujuannya agar proses browsing dapat lebih cepat karena beberapa object telah di cache pada proxy tersebut.

Contoh skrip untuk web-proxy adalah sbb:

# may/16/2007 20:01:52 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ ip web-proxy

set enabled=yes src-address=0.0.0.0 port=3128 hostname="proxy" \

transparent-proxy=yes parent-proxy=203.89.24.4:3128 \

cache-administrator="webmaster" max-object-size=4096KiB cache-drive=system \

max-cache-size=none max-ram-cache-size=unlimited

/ ip web-proxy access

add dst-port=23-25 action=deny comment="block telnet & spam e-mail relaying" \

disabled=no

add src-address=192.168.2.0/24 action=allow comment="" disabled=no

add action=deny comment="" disabled=no

/ ip web-proxy cache

add url=":cgi-bin \\\?" action=deny comment="don't cache dynamic http pages" \

disabled=no

/ ip web-proxy direct

add dst-address=203.89.24.0/21 action=allow comment="" disabled=no

add action=deny comment="" disabled=no

Pada script diatas ditentukan 192.168.2.0/24 boleh akses web-proxy sedangkan selain itu di deny dan utk url yang mengandung cgi-bin atau “?” tidak di cache karena itu tandanya halaman dinamis dan untuk dst-address=203.89.24.0/21 boleh direct sedangkan yang lain tidak, ini tujuannya agar website www.datautama.net.id tidak usah di cache, tentunya nanti ini disesuaikan dengan konfigurasi yang akan digunakan.

Berikutnya adalah pengaturan agar setiap request port 80 diarahkan ke web-proxy, nah ini triknya.

Untuk traffic international saya arahkan ke web-proxy yang jalan di Mikrotik3BGP sedangkan untuk traffic lokal saya arahkan ke proxy 203.89.24.4 yang merupakan proxy server yang jalan di linux. Tujuannya adalah supaya walupun menggunakan proxy limiter tetap efektif, hanya saja berdasarkan pengetesan sistem ini masih ada kelemahan yaitu untuk test upload internasional tetap tidak dapat di limit secara efektif tetapi akan terlimit dari limiter lokalnya, hal ini tidak akan jadi masalah kalau antara bandwidth internasional dan lokal sama tetapi ada kecendrungan saat ini bandwidth lokal lebi besar dari pada bandwidth internasional.

Contoh skrip IP->Firewall-NAT untuk mengarahkan traffic http ke proxy adalah sebagai berikut:


# may/16/2007 20:09:14 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ ip firewall nat

#1

add chain=srcnat src-address=192.168.2.0/24 action=masquerade comment="LAN \

Kantor" disabled=no

#2

add chain=dstnat src-address=192.168.2.0/24 protocol=tcp dst-port=80 \

dst-address-list=!nice action=redirect to-ports=3128 comment="Transparent \

Proxy untuk traffic International" disabled=no

#3

add chain=dstnat src-address=192.168.2.0/24 protocol=tcp dst-port=80 \

dst-address-list=nice action=dst-nat to-addresses=203.89.24.4 \

to-ports=3128 comment="Tranparent Proxy untuk traffic NICE/OpenIXP/IIX" \

disabled=no

Penjelasan

#1 berfungsi untuk melakukan NAT / Masquerade IP Private

#2 berfungsi mengarahkan traffic http yaitu protocol=tcp port=80 untuk dst-address-list=!nice ke port 3128 Web-Proxy internal di Mikrotik3BGP , arti dari dst-address-list=!nice adalah tujuan alamat yang bukan NICE/OpenIXP/IIX jadi untuk yang traffic Internasional, nah dapat dari mana address list tersebut nanti akan saya jelaskan.

#3 berfungsi mengarahkan traffic http lokal ke proxy 203.89.24.4 port 3128

Dengan skrip diatas maka kalau yang ditujua adalah www.yahoo.com maka proxy yang akan di gunakan adalah internal Web-Proxy sedangkan jika ke www.plasa.com proxy yang digunakan adalah 203.89.24.4:3128

Untuk address-list NICE dapat diambil dari:

  1. http://ixp.mikrotik.co.id/download/nice.rsc
  2. http://www.datautama.net.id/harijanto/mikrotik/datautama-nice.php


Hasil test bandwidth dari sistem ini adalah sbb:

Image

Gambar 23. Contoh Speedtest

Untuk melindungi router mikrotik jangan lupa baca juga

http://www.datautama.net.id/web3/index.php?option=com_content&task=view&id=27&Itemid=31

Bahan bacaan:

  1. http://www.mikrotik.co.id/artikel_lihat.php?id=21
  2. http://www.mikrotik.co.id/artikel_lihat.php?id=23
  3. http://www.mikrotik.co.id/artikel_lihat.php?id=20
  4. http://www.mikrotik.com/testdocs/ros/2.9/root/queue.php
  5. http://www.mikrotik.com/testdocs/ros/2.9/ip/flow.php
  6. http://www.squid-cache.org/
  7. http://www.linuxguruz.com/iptables/howto/

2 komentar:

yanto mengatakan...

thanks panduannnya mas!. saya mau nanya dalam pengaturan bandwidth saya pengin mambatasi download pc misal 128kbps, tetapi testing bandwidth pada speedtest.net bisa 256kbps apakah bisa diterapkan? gimana caranya?

Unknown mengatakan...

salam kenal,

wah saya baru ketemu webnya mas dan saya liat di artikel ini menarik, tapi boleh minta tolong di reupload imagenya lagi ? Biar saya gampang belajarnya.


makasi mas