Load Balancing MikroTik Dua ISP dengan PCC di RouterOS v7
· 6 menit baca

Daftar isi11 bagian

Dua ISP di satu router biasanya dipasang karena bandwidth satu link tidak cukup, atau koneksi harus tetap hidup saat satu penyedia gangguan. RouterOS v7 bisa menangani keduanya, tetapi konfigurasinya berbeda dan sering tertukar.
Perlu diluruskan lebih dulu: load balancing di RouterOS bekerja per koneksi, bukan per paket. Satu unduhan besar tetap memakai satu link. Yang bertambah adalah total throughput saat banyak koneksi berjalan bersamaan.
Apa yang sebenarnya dilakukan PCC
PCC mengambil beberapa field dari header IP, mengubahnya menjadi nilai hash 32-bit, membagi nilai itu dengan denominator, lalu mencocokkan sisanya dengan remainder. Kalau cocok, paket ditandai. Field yang bisa dipakai antara lain src-address, dst-address, src-port, dst-port, both-addresses, both-ports, dan both-addresses-and-ports. Semakin banyak variabel yang masuk ke hash, semakin acak pembagian trafik. Karena itu both-addresses-and-ports jadi pilihan paling umum untuk dua ISP.
PCC sendiri tidak melakukan routing. PCC hanya mencocokkan paket. Yang mengarahkan trafik ke gateway tertentu adalah routing mark, dan itu sebabnya konfigurasi PCC selalu terdiri dari dua lapis: mark-connection lalu mark-routing.
| Metode | Per koneksi | Per paket | Catatan |
|---|---|---|---|
| PCC (mangle) | Ya | Tidak | Bisa diatur rasionya lewat denominator dan remainder |
| ECMP | Ya | Tidak | Cukup satu route dengan beberapa gateway, tanpa mangle |
| Nth (mangle) | Ya | Ya | Pembagian berbasis hitungan paket, bisa memecah satu koneksi |
| Bonding | Tidak | Ya | Butuh kontrol di kedua ujung link, tidak cocok untuk ISP berbeda |
Topologi contoh dan asumsi
| Peran | Interface | Alamat IP | Gateway |
|---|---|---|---|
| LAN | bridge-lan | 192.168.88.1/24 | - |
| ISP 1 | ether1 | 10.10.10.2/30 | 10.10.10.1 |
| ISP 2 | ether2 | 10.20.20.2/30 | 10.20.20.1 |
Kalau salah satu ISP memakai PPPoE, interface WAN-nya adalah pppoe-out1, bukan ether. Cara membuatnya ada di panduan setting PPPoE IndiHome di MikroTik. Perbedaan nama interface ini penting karena semua aturan mangle dan routing akan mengacu ke nama tersebut.
Langkah 1: interface list WAN dan NAT
/interface list add name=WAN
/interface list add name=LAN
/interface list member add interface=ether1 list=WAN
/interface list member add interface=ether2 list=WAN
/interface list member add interface=bridge-lan list=LAN
/ip firewall nat add chain=srcnat out-interface-list=WAN action=masqueradeMasquerade di kedua WAN wajib. Tanpa NAT di salah satu link, paket balasan dari internet tidak akan kembali ke klien, dan gejalanya terlihat seperti koneksi putus-putus padahal kedua link aktif.
Langkah 2: buat routing table
Ini perbedaan terbesar RouterOS v7 dibanding v6: routing table harus dibuat dulu sebelum dipakai, dan parameter fib wajib agar rute masuk forwarding table.
/routing table add name=to-isp1 fib
/routing table add name=to-isp2 fibMelewati langkah ini adalah penyebab paling sering dari gejala "mangle sudah benar tapi trafik tetap lewat satu ISP".
Langkah 3: default route dan failover
Setiap tabel mendapat default route sendiri. Notasi @main membuat gateway dicari di tabel main, sehingga next hop tetap resolve.
/ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1@main routing-table=to-isp1 check-gateway=ping distance=1
/ip route add dst-address=0.0.0.0/0 gateway=10.20.20.1@main routing-table=to-isp2 check-gateway=ping distance=1
/ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping distance=1
/ip route add dst-address=0.0.0.0/0 gateway=10.20.20.1 check-gateway=ping distance=2Dua rute terakhir ada di tabel main sebagai jaring pengaman: saat ISP 1 mati, check-gateway menonaktifkan rutenya dan rute ISP 2 dengan distance 2 mengambil alih.
Langkah 4: tandai koneksi dengan PCC
Rasio 2:1 dipakai sebagai contoh, artinya ISP 1 mendapat dua bagian dan ISP 2 satu bagian. Denominator 3, remainder 0 dan 1 untuk ISP 1, remainder 2 untuk ISP 2.
/ip firewall mangle add chain=prerouting action=mark-connection new-connection-mark=isp1_conn connection-mark=no-mark connection-state=new dst-address-type=!local in-interface=bridge-lan per-connection-classifier=both-addresses-and-ports:3/0 passthrough=yes
/ip firewall mangle add chain=prerouting action=mark-connection new-connection-mark=isp1_conn connection-mark=no-mark connection-state=new dst-address-type=!local in-interface=bridge-lan per-connection-classifier=both-addresses-and-ports:3/1 passthrough=yes
/ip firewall mangle add chain=prerouting action=mark-connection new-connection-mark=isp2_conn connection-mark=no-mark connection-state=new dst-address-type=!local in-interface=bridge-lan per-connection-classifier=both-addresses-and-ports:3/2 passthrough=yesTiga parameter di baris itu punya alasan masing-masing. connection-mark=no-mark memastikan koneksi yang sudah ditandai tidak dihitung ulang. connection-state=new membatasi penandaan hanya pada awal koneksi, sehingga satu sesi tidak berpindah link di tengah jalan. dst-address-type=!local mencegah trafik ke alamat router sendiri ikut ditandai, karena kalau itu terjadi, router bisa menjadi tidak bisa diakses dari LAN.
Langkah 5: tandai routing
Tahap kedua mengubah connection mark menjadi routing mark. Chain prerouting menangani trafik yang diteruskan, chain output menangani trafik dari router sendiri seperti DNS dan NTP.
/ip firewall mangle add chain=prerouting action=mark-routing new-routing-mark=to-isp1 connection-mark=isp1_conn in-interface=bridge-lan passthrough=no
/ip firewall mangle add chain=prerouting action=mark-routing new-routing-mark=to-isp2 connection-mark=isp2_conn in-interface=bridge-lan passthrough=no
/ip firewall mangle add chain=output action=mark-routing new-routing-mark=to-isp1 connection-mark=isp1_conn passthrough=no
/ip firewall mangle add chain=output action=mark-routing new-routing-mark=to-isp2 connection-mark=isp2_conn passthrough=noUrutan aturan berpengaruh. Semua aturan mark-connection harus berada di atas aturan mark-routing. Kalau terbalik, routing mark akan diberikan sebelum koneksi punya tanda, dan hasilnya trafik menumpuk di satu link.
Langkah 6: DNS
/ip dns set servers=1.1.1.1,8.8.8.8 allow-remote-requests=yes
/ip firewall filter add chain=input action=accept protocol=udp dst-port=53 in-interface-list=LAN place-before=0
/ip firewall filter add chain=input action=accept protocol=tcp dst-port=53 in-interface-list=LAN place-before=1Cara memeriksa hasilnya
| Pemeriksaan | Perintah | Yang diharapkan |
|---|---|---|
| Jumlah koneksi per link | /ip firewall connection print count-only where connection-mark=isp1_conn | Angka mendekati dua kali lipat isp2_conn |
| Rute aktif | /ip route print detail | Flag A pada rute kedua tabel, gateway sesuai |
| Tabel routing | /routing table print | to-isp1 dan to-isp2 ada dengan tanda fib |
| Uji beban | unduh file besar dari dua perangkat berbeda | Kedua interface WAN menunjukkan trafik |
Uji dengan dua perangkat berbeda, bukan satu. Karena pembagiannya per koneksi, satu laptop yang mengunduh satu file tetap memakai satu link.
Jebakan yang paling sering terjadi
Hotspot dan PCC tidak bisa digabung. Dokumentasi MikroTik menyebut PCC tidak valid untuk hotspot captive portal karena hotspot memakai web-proxy yang hanya membaca default routing table. Kalau jaringan memakai hotspot, pilih ECMP atau failover saja.
Kedua, jangan menandai trafik lokal. Aturan tanpa dst-address-type=!local akan ikut menandai paket menuju alamat router, dan akibatnya Winbox serta akses web router terputus dari LAN.
Ketiga, aplikasi perbankan yang memecah satu sesi menjadi banyak koneksi bisa melihat dua IP publik berbeda, gejalanya logout sendiri. Solusinya address list berisi IP server penting yang selalu diarahkan ke ISP 1, diletakkan di atas aturan PCC. Pembatasan bandwidth per klien tetap jalan lewat queue sederhana, karena queue bekerja setelah paket masuk.
Pertanyaan yang Sering Ditanyakan
Apakah satu file yang diunduh jadi dua kali lebih cepat? Tidak. PCC membagi koneksi ke link, bukan memecah satu koneksi. Satu unduhan tetap berjalan di satu link dengan kecepatan link tersebut. Yang bertambah adalah total kapasitas saat banyak koneksi berjalan bersamaan.
Kenapa klien kadang mendapat alamat IP publik yang berbeda? Setiap koneksi baru bisa ditandai ke link berbeda. Untuk layanan perbankan yang mengikat sesi ke satu IP, tambahkan address list dan arahkan selalu ke satu ISP.
Bisakah dipakai bersama hotspot MikroTik? Tidak disarankan. Dokumentasi resmi menyatakan PCC tidak valid untuk hotspot karena web-proxy hanya memakai default routing table. Untuk jaringan dengan hotspot, gunakan failover atau ECMP.
Berapa denominator kalau kapasitas kedua ISP tidak sama? Samakan dengan perbandingan kapasitas. ISP 1 dua kali ISP 2 memakai denominator 3: remainder 0 dan 1 untuk ISP 1, remainder 2 untuk ISP 2.
Semua alamat IP, nomor interface, dan rasio pada artikel ini adalah contoh. Sesuaikan dengan topologi dan kapasitas link di lapangan sebelum diterapkan.
Pertanyaan yang sering diajukan
Apakah satu file yang diunduh jadi dua kali lebih cepat?
Tidak. PCC membagi koneksi ke link, bukan memecah satu koneksi, sehingga satu unduhan tetap berjalan di satu link dengan kecepatan link tersebut.
Kenapa klien kadang mendapat alamat IP publik yang berbeda?
Setiap koneksi baru bisa ditandai ke link yang berbeda. Untuk layanan perbankan yang mengikat sesi ke satu IP, tambahkan address list khusus dan arahkan selalu ke satu ISP.
Bisakah load balancing PCC dipakai bersama hotspot MikroTik?
Tidak disarankan. Dokumentasi resmi menyatakan PCC tidak valid untuk hotspot karena web-proxy hanya memakai default routing table.
Berapa denominator yang tepat kalau kapasitas kedua ISP tidak sama?
Samakan dengan perbandingan kapasitasnya. ISP 1 dua kali lebih besar dari ISP 2 memakai denominator 3, dengan remainder 0 dan 1 untuk ISP 1 serta remainder 2 untuk ISP 2.


