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.
Gambar 1. Diagram Jaringan Kantor PT. Data Utama Dinamika Jakarta
Kondisi jaringan adalah sbb:
- Router Kantor menggunakan 3 ethernet card dijalankan pada PC Pentium 4 2660Mhz, Memory 256MB, DOM 128MB.
- Klient menggunakan IP Private sehingga diperlukan mekanisme NAT / Masquerade
- Router kantor menerima prefix/routing table dari NICE/OpenIXP (NICE/OpenIXP adalah alternatif IIX yang dikelola PT. IDC) menggunakan mekanisme BGP Peering.
- Mikrotik RouterOS menggunakan Vesi 2.9.41 dan mengaktifkan paket routing-test, sesuai petunjuk dari Valens Riyadi @ www.mikrotik.co.id.
Gambar 2. Resources Mikrotik Router Kantor
Gambar 3. Packet List
Konfigurasi IP
Gambar 4. Konfigurasi IP Router Kantor
Konfigurasi NAT/Masqurade LAN 192.168.2.0/24
Gambar 5. Konfigurasi NAT General
Gambar 6. Konfigurasi NAT Action
Konfigurasi BGP Peer
Gambar 7. BGP Instance Mikrotik2BGP
Gambar 8. BGP Peer Mikrotik2BGP
Gambar 9. BGP Instance Mikrotik3BGP
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
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
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
Gambar 13. Traceroute ke www.yahoo.com
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.
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
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
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
Gambar 18. Contoh Simple Queue General
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
Gambar 20. Tools Graphing
Hasilnya dapat dilihat seperti pada gambar 21 berikut
Gambar 21. Contoh grafik MRTG per Simple Queue International
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
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:
- http://ixp.mikrotik.co.id/download/nice.rsc
- http://www.datautama.net.id/harijanto/mikrotik/datautama-nice.php
Hasil test bandwidth dari sistem ini adalah sbb:
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:
- http://www.mikrotik.co.id/artikel_lihat.php?id=21
- http://www.mikrotik.co.id/artikel_lihat.php?id=23
- http://www.mikrotik.co.id/artikel_lihat.php?id=20
- http://www.mikrotik.com/testdocs/ros/2.9/root/queue.php
- http://www.mikrotik.com/testdocs/ros/2.9/ip/flow.php
- http://www.squid-cache.org/
- http://www.linuxguruz.com/iptables/howto/