Sunday, March 9, 2014

Bandwith Manajemen pada Mikrotik

Bandwith Manajemen pada Mikrotik

oleh : Antonius (sw0rdm4n)
www.jasaplus.com | www.cr0security.com | www.ringlayer.net

Table of Content
  • Preface
  • Topologi
  • Setting Mikrotik sebagai Gateway Agar Bisa Digunakan Sebagai Bandwith Manager
  • Queue Pada Mikrotik
  • Penggunaan Queue Simple (Hanya Berdasarkan IP Klien)
  • Penggunaan Queue dengan Mangle Pada Destination Port
  • Penggunaan PCQ
  • Monitoring Trafik pada Mikrotik

Berikut ini topologi yang akan kita gunakan kali ini:

Tipikal Topologi Jaringan dengan TV Kabel


Topologi di atas akan digunakan untuk keseluruhan artikel kali ini. Jika kita perhatikan pada topologi di atas, kita menggunakan 2 router yaitu router linux sebagai firewall dan router mikrotik sebagai bandwith manager.



Setting Mikrotik sebagai Gateway Agar Bisa Digunakan Sebagai Bandwith Manager

Sebelum bisa digunakan sebagai manajemen bandwith kita harus menyetting router mikrotik sebagai gateway. Topologi yang digunakan sudah dilampirkan di atas. di sini sudah diset linux firewall gatewall dengan interface yang menghadap ke bawah menggunakan ip address 10.200.0.1. Jadi jaringan internal menggunakan ip address: 10.200.0.1/32 dengan anggota lainya :
1 router mikrotik sebagai bandwith manager dengan ip 10.200.0.100
1 buah pc klien windows xp dengan ip 10.200.0.120
1 buah pc klien windows xp dengan ip 10.200.0.121
Pada contoh kali ini kita akan menggunakan interface ether1 sebagai interface lokal

Setting ip address:

/ip address add address=10.200.0.100/32 interface=ether1

Selanjutnya tambahkan ip gateway yaitu alamat ip firewall linux : 10.200.0.1

/ip route add gateway=10.200.0.1

Selanjutnya tambahkan rule nat standar :

/ip firewall nat add action=masquerade out-interface=ether1 chain=srcnat

Untuk dns server jaringan lokal menggunakan ip 10.200.0.1 (ip firewall linux)




/ip dns set server=10.200.0.1
/ip dns set allow-remote-requests=yes

Sampai sejauh ini router sudah bisa kita gunakan sebagai gateway, akan kita belum memanfaatkan router ini sebagai bandwith manager. Di sini kita menggunakan 1 fungsi routing untuk 1 jenis router, untuk manajemen bandwith menggunakan mikrotik dan router firewall menggunakan linux, agar kedua fungsi router bisa kita manfaatkan secara optimal.
Queue pada Mikrotik
Queue merupakan fitur yang disediakan mikrotik khusus untuk manajemen bandwith. Pada mikrotik dikenal beberapa macam queue, beberapa diantaranya :
pfifo
pfifo = first in first out
pcq
pcq merupakan jenis queue yang algoritmanya dibuat oleh pembuat sistem operasi routeros, pada dasarnya pcq adalah modifikasi dari algoritma fifo. Jika dijelaskan secara simple pcq digunakan untuk membagi total bandwith dengan jumlah klien yang aktif.
sfq
Stochastic Fairness Queuing (SFQ), saat mangle suatu trafik diidentifikasi berdasarkan hash dan algoritma round robin.
Penggunaan Queue Simple (Hanya Berdasarkan IP Klien)
Simple queue merupakan queue default pada mikrotik, yang menggunakan algoritma pfifo. Untuk memudahkan memahami bagi pemula kita akan menggunakan simple queue yang hanya menggunakan mark berdasarkan ip address klien tanpa mark pada destination port.
/queue simple add name="klien120" target-address=10.200.0.120 dst-address=0.0.0.0/0 interface=all parent=none direction=both priority=8 queue=default-small/default-small limit-at=0/0 max-limit=20k/500k total-queue=default-small disabled=no

/queue simple add name="klien121" target-address=10.200.0.121 dst-address=0.0.0.0/0 interface=all parent=none direction=both priority=8 queue=default-small/default-small limit-at=0/0 max-limit=20k/500k total-queue=default-small disabled=no





Keterangan :
max-limit=upload/download, merupakan bandwith maksimal yang diperoleh oleh klien
Limit At : upload/download, merupakan Bandwidth minimal yang diperoleh oleh klien

Pada contoh di atas kita alokasikan bandwith maksimal untuk upload di tiap klien sebesar 20 kb perdetik dan maksimal untuk download 500 kb per detik.
Teknik di atas memiliki kekurangan di mana queue hanya berdasarkan alamat ip si klien tanpa memperhitungkan destination port, selain itu karena tidak menggunakan perconnection queue maka walaupun ada klien yg tidak aktif di jaringan maka kecepatan koneksi akan tetap sama (fix).
Selain memiliki kekurangan, teknik ini juga memiliki kelebihan, teknik ini bisa dipakai untuk menahan korupsi bandwith oleh user user yang menggunakan program2 download manager yang bertebaran di internet.


Penggunaan Queue dengan Mangle Pada Destination Port
Pada simple queue di atas tidak ada pembagian pada destination port sehingga menyebabkan pembagian bandwith menjadi sama baik untuk browsing, koneksi ke port2 server game online, ftp, ssh, ping, dll. Untuk membagi bagi koneksi berdasarkan destination port kita perlu penandaan pada trafik atau biasa disebut mangle.
Berikut ini adalah contoh sederhana penandaan paket dengan mangle destination port, di mana di sini kita akan membuat mark untuk 2 destination port, yaitu : port 80 (http), port 21 (ftp)

Membuat connection mark untuk trafik http ke destination port 80 :

/ip firewall mangle add chain=forward protocol=tcp dst-port=80 action=mark-connection new-connection-mark=http passthrough=yes comment=http disabled=no

Membuat penandaan pada paket http:

/ip firewall mangle add chain=forward connection-mark=http action=mark-packet new-packet-mark=http_packet passthrough=no comment=http_packet disabled=no

Untuk destination port 21 :

/ip firewall mangle add chain=forward protocol=tcp dst-port=21 action=mark-connection new-connection-mark=ftp passthrough=yes comment=ftp disabled=no

/ip firewall mangle add chain=forward connection-mark=ftp action=mark-packet new-packet-mark=ftp_packet passthrough=no comment=ftp_packet disabled=no

Berikut ini kita sudah menyetting manglenya :
Selanjutnya siapkan queue sebagai berikut:

/queue simple add name=http_parent interface=ether1 parent=none priority=8 queue=default-small/default-small disabled=no packet-marks=http_packet total-queue=default-small limit-at=0/0 max-limit=60k/150k

/queue simple add name="klien120" target-address=10.200.0.120 interface=all parent=http_parent priority=8 queue=default-small/default-small limit-at=0/0 max-limit=50k/100k total-queue=default-small disabled=no

/queue simple add name="klien121" target-address=10.200.0.121 interface=all parent=http_parent priority=8 queue=default-small/default-small limit-at=0/0 max-limit=50k/100k total-queue=default-small disabled=no

Jika setting di atas dilakukan dengan benar, kita bisa melihat adanya parent queue dan anak2 queue seperti tampilan di bawah ini :






Penggunaan PCQ
Teknik queue di atas cukup bagus tapi tidak memperhitungkan jika suatu saat ada klien yang tidak terhubung ke jaringan di mana akan menyebabkan sisa bandwith tidak terpakai (sia - sia). Untuk itu kita bisa menggunakan algoritma bawaan mikrotik pcq (per connection queque).
Jika pada algoritma simple queue di atas, misal bandwith upstream total adalah 1 mb perdetik jika dibagi 2 klien menjadi 500 kb perdetik, pada saat salah satu klien tidak terhubung ke jaringan maka bandwith untuk klien lain yang sedang aktif adalah sama yaitu tetap 500 kb perdetik, untuk itu diperlukan penggunaan pcq yang akan membagi bandwith total dengan jumlah klien yang sedang aktif di jaringan sehingga tidak ada bandwith yang terbuang sia sia.
Berikut ini contoh sederhana penggunaan pcq. Seperti biasa, kita siapkan penandaan pada paket (mangle) di mana kita tandai dulu trafiknya baru kita tandai paketnya, kita gunakan teknik yang sama seperti di atas (contoh sederhana saja bisa dikembangkan)

/ip firewall mangle add chain=forward protocol=tcp dst-port=80 action=mark-connection new-connection-mark=http passthrough=yes comment=http disabled=no

/ip firewall mangle add chain=forward connection-mark=http action=mark-packet new-packet-mark=http_packet passthrough=no comment=http_packet disabled=no

/ip firewall mangle add chain=forward protocol=tcp dst-port=21 action=mark-connection new-connection-mark=ftp passthrough=yes comment=ftp disabled=no

/ip firewall mangle add chain=forward connection-mark=ftp action=mark-packet new-packet-mark=ftp_packet passthrough=no comment=ftp_packet disabled=no

Saat mangle paket kita harus selalu memberikan mark pada destination port karena ada koneksi - koneksi ke port tertentu yang hanya membutuhkan bandwith sedikit dan ada trafik ke port port tertentu yang membutuhkan bandwith lebih.
Setelah membuat mangle, selanjutnya adalah membuat queue tipe pcq :

/queue type add name=pcq-download kind=pcq pcq-classifier=dst-address

/queue type add name=pcq-upload kind=pcq pcq-classifier=src-address
Setelah menambahkan jenis pcq untuk download dan upload, selanjutnya adalah membuat queue tree :

/queue tree add name=downstream limit-at=0 packet-mark=http_packet parent=ether1 priority=8

Jika ingin menambahkan queue untuk upstream, pada contoh ini interface yang menghadap ke atas adalah ether2 :
/queue tree add name=upstream disabled=no limit-at=0 packet-mark=http_packet parent=ether2 priority=8

Dengan teknik pcq di atas total bandwith yang tersedia akan dibagi dengan total jumlah klien yang sedang melakukan streaming paket (upload / download)
Monitoring Trafik pada Mikrotik
Pada mikrotik tersedia utilitas dasar untuk melakukan monitoring trafik :

/tool sniffer




Utilitas ini bisa dihubungkan ke wireshark. Untuk kali ini kita hanya akan melakukan simple monitoring dengan tool sniffer. Misal kita set untuk sniffing paket yang lalu lalang pada interface ether1 :

[admin@MikroTik] /tool sniffer> set interface=ether1

Misal kita akan memantau trafik ke server ringlayer.net dengan alamat ip 208.79.92.178 port 80.

[admin@MikroTik] /tool sniffer> set filter-address1=208.79.92.178:80

Jalankan sniffer:

[admin@MikroTik] /tool sniffer> start
[admin@MikroTik] /tool sniffer> quick






Kita bisa memantau ada aktivitas koneksi http dari ip klien 10.200.0.121 dengan source port 1186 menuju server ringlayer.net dengan alamat 208.79.92.178 destination port 80 melalui router mikrotik dengan ip 10.200.0.100. Untuk monitoring dengan grafik bisa menggunakan cacti. Sekian dan semoga bermanfaat.
Thanks to : Zico, Eki, Ega, Edward, Gunslinger and all my brothers out there

References

  • http://wiki.mikrotik.com/wiki/Manual:Queue
  • http://www.mikrotik.co.id


by : Antonius (ringlayer)
Web : 
https://www.ringlayer.com
https://www.jasaplus.com
https://www.olmyshop.com
https://www.screenku.com