MikroTik

⌘K
  1. Home
  2. Docs
  3. MikroTik
  4. Routing
  5. Load Balancing PCC dengan Failover di MikroTik v7

Load Balancing PCC dengan Failover di MikroTik v7

Load Balancing PCC yang diintegrasikan dengan Recursive Gateway adalah teknik efektif untuk membagi trafik secara merata ke dua ISP berdasarkan koneksi, menjaga setiap sesi tetap melalui ISP yang sama (sticky connection), serta memastikan distribusi trafik internet berjalan optimal. Selain itu, metode ini juga memungkinkan failover otomatis jika salah satu ISP mengalami gangguan atau mati total.

Tehnik Ini lebih aman untuk koneksi Games Online, VPN, VoIP, aplikasi perbankan, dan cloud web service yang sensitif sama perubahan public IP.

Konsep Dasar & Persiapan (Prasyarat)

Sebelum mulai konfigurasi (CLI/Winbox), pastikan kita sudah memahami konsep dasarnya.

  • Contoh dokumentasi ini menggunakan Mikrotik RouterOS v7.
  • Disable FastTrack: PCC dan policy routing bergantung pada mangle marks. FastTrack dapat bypass firewall/mangle.
  • PCC (Per Connection Classifier): Trafik dibagi merata antara 2 ISP berdasarkan koneksi dengan mengklasifikasikan koneksi baru ke dalam beberapa grup atau bucket, lalu memastikan semua paket dalam koneksi yang sama tetap melewati link ISP yang sama.
  • Recursive Gateway (Recursive Routing): adalah teknik untuk memastikan koneksi internet ISP benar-benar up, misalnya dengan melakukan ping (probe) ke IP DNS Google 8.8.8.8, jika satu ISP down, trafik dialihkan ke ISP lain otomatis. Anda bisa lihat dokumentasi -> [Setting Recursive Gateway MikroTik v7 untuk Failover] yang membahas tentang Recursive Gateway.
  • Contoh Topologi multi-WAN 2 ISP:
    • ISP 1 : Gateway 192.168.1.1 interface ether1-isp1
    • ISP 2 : Gateway 192.168.2.1 interface ether2-isp2
    • Target Monitor ISP 1: 1.1.1.1 (DNS Cloudflare)
    • Target Monitor ISP 2: 8.8.8.8 (DNS Google)
    • Subnet LAN: 192.168.88.0/24 interface bridge-lan.
    • Rasio bandwidth: 1:1 (misal ISP1 100Mbps dan ISP2 100Mbps)

Contoh Setting Load Balancing 2 ISP & Failover Recursive Gateway

Membuat Routing Table (RouterOS v7)

Pada RouterOS versi 7 ke atas, Anda harus membuat routing table terlebih dahulu sebelum menandainya di Mangle.

/routing table
add fib name=to_WAN1
add fib name=to_WAN2

RouterOS punya 1 tabel routing utama bawaan yaitu main. Di sini kita buat 2 tabel routing tambahan: to_WAN1 dan to_WAN2. Anggaplah kyk 2 jalur tol terpisah “Jalur Alternatif”: satu khusus mobil yang mau ke WAN1, satu lagi khusus mobil yang mau ke WAN2. Nanti, trafik yang dimarking “ke WAN1” akan dipaksa lewat tabel to_WAN1.

Route Default Recursive Gateway + Failover

Buat Route Buat Monitoring (scope 10)

/ip route
add dst-address=1.1.1.1/32 gateway=192.168.1.1 scope=10 \
    comment="Monitor ISP 1"
add dst-address=8.8.8.8/32 gateway=192.168.2.1 scope=10 \
    comment="Monitor ISP 2"

Buat Route Default Recursive (Target-Scope 11).

/ip route
add dst-address=0.0.0.0/0 gateway=1.1.1.1 distance=1 \
    target-scope=11 check-gateway=ping \
    comment="Main Failover via ISP1"
add dst-address=0.0.0.0/0 gateway=8.8.8.8 distance=2 \
    target-scope=11 check-gateway=ping \
    comment="Main Failover via ISP2"

Untuk failover trafik yang berasal dari router itu sendiri seperti ping, DNS resolver, NTP, cloud backup, VPN client atau update system yang dijalankan langsung di router MikroTik. Trafik router tidak dibagi oleh PCC (ga ikut di load balancing).

Buat Route untuk Tabel PCC + Failover Otomatis

Buat Default Route untuk Load Balancing PCC

/ip route
add dst-address=0.0.0.0/0 gateway=1.1.1.1 routing-table=to_WAN1 \
    distance=1 target-scope=11 check-gateway=ping \
    comment="PCC ISP1 primary via ISP1"

add dst-address=0.0.0.0/0 gateway=8.8.8.8 routing-table=to_WAN1 \
    distance=2 target-scope=11 check-gateway=ping \
    comment="PCC ISP1 fallback via ISP2"

add dst-address=0.0.0.0/0 gateway=8.8.8.8 routing-table=to_WAN2 \
    distance=1 target-scope=11 check-gateway=ping \
    comment="PCC ISP2 primary via ISP2"

add dst-address=0.0.0.0/0 gateway=1.1.1.1 routing-table=to_WAN2 \
    distance=2 target-scope=11 check-gateway=ping \
    comment="PCC ISP2 fallback via ISP1"

Untuk penjelasan lebih jelas tentang cara kerja recursive gateway dan failover otomatis bisa lihat dokumentasi -> [Setting Recursive Gateway MikroTik v7 untuk Failover].

Bypass Trafik Lokal Sebelum PCC

Tambahkan bypass untuk trafik lokal sebelum PCC. Ini mencegah akses ke router, inter-VLAN, VPN internal, atau ip lokal nyasar diarahkan ke WAN.

Buat Daftar IP Lokal

/ip firewall address-list
add address=192.168.0.0/16 list=LOCAL-IP
add address=10.0.0.0/8 list=LOCAL-IP
add address=172.16.0.0/12 list=LOCAL-IP

Ini daftar IP Private / RFC1918, nanti dipakai di mangle untuk mengecualikan trafik lokal dari proses PCC. Tujuannya agar trafik antar komputer di jaringan lokal (antar VLAN/Subnet) tidak kena proses PCC biar ga nyasar ke WAN.

Buat Mangle Bypass Trafik Lokal

/ip firewall mangle
add chain=prerouting in-interface=bridge-lan dst-address-type=local \
    action=accept comment="Bypass trafik menuju router -- input"

add chain=prerouting in-interface=bridge-lan dst-address-list=LOCAL-IP \
    action=accept comment="Bypass IP LOKAL"
  • chain=prerouting : Proses paket sebelum routing decision.
  • in-interface=bridge-lan : Paket yang masuk dari interface bridge-lan.
  • dst-address-type=local : Tujuan ke IP router sendiri (misal: akses WinBox, DNS router).
  • dst-address-list=LOCAL-IP : Tujuan ke IP lokal (misal: komputer A ke komputer B).
  • action=accept : Lewati (tidak diproses PCC).

Buat Mangle PCC

Mangle adalah tempat kita menandai (mark) koneksi dan paket. Ini jantung dari PCC. Konsepnya sama dengan PBR (Policy Based Routing) seperti contoh dokumentasi saya -> [Cara Setting Static Route & Pisah Trafik di MikroTik v7 (Multi-WAN)]. Kita marking dulu koneksi sesuai klasifikasi kita, lalu arahkan.

Menandai koneksi yang masuk dari luar agar kembali ke ISP yang sama:

/ip firewall mangle
add chain=prerouting in-interface=ether1-isp1 connection-mark=no-mark \
    action=mark-connection new-connection-mark=WAN1_conn passthrough=yes \
    comment="Tandai koneksi masuk ISP1"
add chain=prerouting in-interface=ether2-isp2 connection-mark=no-mark \
    action=mark-connection new-connection-mark=WAN2_conn passthrough=yes \
    comment="Tandai koneksi masuk ISP2"
  • in-interface=ether1-isp1 : Paket yang masuk dari ISP1.
  • connection-mark=no-mark : Hanya proses kalau belum dimarking.
  • action=mark-connection : Tandai seluruh koneksi.
  • new-connection-mark=WAN1_conn : Nama tanda: WAN1_conn.
  • passthrough=yes : Lanjut ke rule berikutnya (jangan stop di sini).

Misal: user buka website. Request keluar via WAN1. Response dari website harus balik via WAN1 juga. Rule ini memastikan bahwa saat paket masuk dari WAN1, koneksinya diberi tanda WAN1_conn, sehingga router tahu bahwa itu adalah balasan dari WAN1 dan mengarahkannya ke user yang benar. Rules ini penting jika ada port-forwarding, server VPN, atau koneksi inbound yang perlu masuk dan keluar melalui ISP yang sama.

Menerapkan PCC Bagi Trafik Keluar ke 2 ISP

/ip firewall mangle
add chain=prerouting in-interface=bridge-lan connection-mark=no-mark \
    dst-address-type=!local per-connection-classifier=both-addresses:2/0 \
    action=mark-connection new-connection-mark=WAN1_conn passthrough=yes \
    comment="PCC ke WAN1"

add chain=prerouting in-interface=bridge-lan connection-mark=no-mark \
    dst-address-type=!local per-connection-classifier=both-addresses:2/1 \
    action=mark-connection new-connection-mark=WAN2_conn passthrough=yes \
    comment="PCC ke WAN2"
  • dst-address-type=!local : Hanya trafik ke luar (internet), bukan ke router/lokal.
  • per-connection-classifier=both-addresses:2/0 : PCC. Bagi koneksi berdasarkan hash dari IP sumber + IP tujuan.
  • both-addresses:2/0 : Bagi jadi 2 grup (bucket), ini grup ke-0.
  • both-addresses:2/1 : Bagi jadi 2 grup (bucket), ini grup ke-1.

Cara kerja PCC (Per Connection Classifier)

  1. Router menghitung hash dari IP asal (user) + IP tujuan (website).
  2. Hasil hash dibagi jadi 2 grup:
    • Grup 0 (2/0) → ditandai WAN1_conn → lewat ISP1.
    • Grup 1 (2/1) → ditandai WAN2_conn → lewat ISP2.
  3. Hasilnya: koneksi user dibagi 50% ke ISP1, 50% ke ISP2.

Saya menggunakan metode both-addresses (source IP dan destination IP) agar sesi login (seperti mobile banking) tetap terhubung meski berpindah-pindah IP publik. Cocok untuk jaringan yang user klien nya banyak. Bisa juga menggunakan both-addresses-and-ports (source IP, destination IP, source port, dan destination port) untuk distribusi koneksi internet yang lebih tersebar atau merata. Cocok untuk jaringan yang user klien nya sedikit.

Dan untuk diingat, PCC membagi hanya koneksi (connection-based) ke WAN yang berbeda. Jika satu user download besar (single-connection) bandwidth-nya hanya pakai satu ISP.

Ubah connection-mark menjadi routing-mark (Arahin ke Tabel Routing).

/ip firewall mangle
add chain=prerouting in-interface=bridge-lan connection-mark=WAN1_conn \
    action=mark-routing new-routing-mark=to_WAN1 passthrough=no \
    comment="Arahkan koneksi PCC WAN1 ke routing table WAN1"

add chain=prerouting in-interface=bridge-lan connection-mark=WAN2_conn \
    action=mark-routing new-routing-mark=to_WAN2 passthrough=no \
    comment="Arahkan koneksi PCC WAN2 ke routing table WAN2"
  • connection-mark=WAN1_conn : Kalau koneksi sudah ditandai WAN1_conn
  • action=mark-routing : …beri tanda routing ke paket-paket dalam koneksi itu.
  • new-routing-mark=to_WAN1 : Tanda routingnya: pakai tabel to_WAN1.

Alurnya: User buka website -> PCC tandai koneksi ini WAN1_conn -> Rule ini melihat tanda WAN1_conn, lalu menandai semua paket dalam koneksi tersebut dengan routing-mark=to_WAN1 -> Router cek tabel to_WAN1 -> route default lewat 1.1.1.1 -> recursive ke 192.168.1.1 -> keluar via ISP1.

Kesimpulan

Teknik kombinasi load balancing PCC + Failover dengan Recursive Gateway di Router Mikrotik ini sangat membantu memaksimalkan total kapasitas bandwidth dari kedua ISP Anda (semuanya terpakai) sekaligus mengatasi downtime dengan failover otomatis jika salah satu ISP mati total akan beralih ke ISP yang normal.

Dengan memanfaatkan komponen Routing Table (to_WAN1, to_WAN2), Recursive Gateway (1.1.1.1, 8.8.8.8), PCC Mangle (both-addresses:2/0, 2/1) dengan hasil akhir : 2 ISP hidup -> Trafik dibagi rata 50:50, ISP1 mati -> Semua trafik pindah ke ISP2, ISP2 mati -> Semua trafik pindah ke ISP1

Yang Paling Banyak Jadi Pertanyaan (FAQ)

Kenapa internet mati tetapi failover tidak pindah?

Bisa jadi ISP Anda tidak benar-benar mati total, koneksi internet masih terhubung (masih bisa ping 8.8.8.8/1.1.1.1), tapi bandwidth sedang turun atau kecil sehingga tidak sesuai kapasitas langganan. Saat browsing terasa lambat atau bahkan tidak bisa membuka apa pun, terkesan oleh kita internet sedang mati.

Aplikasi bank, games online atau VPN kok tiba-tiba putus?

Ketika salah satu ISP mati total, bisa jadi sebelumnya koneksi Anda terhubung ke ISP yang baru saja mati total. Akibatnya, Anda perlu melakukan reconnect karena adanya perubahan backbone atau IP Public yang berubah secara tiba-tiba akibat perpindahan ke ISP lain.

Load balancing kok ga rata?

Pemakaian akan terlihat merata jika user melakukan banyak koneksi. Jika jumlah user sedikit, gunakan both-addresses-and-ports yang mengklasifikasikan bucket berdasarkan source IP, destination IP, source port, dan destination port agar distribusi koneksi internet lebih merata.

Hotspot kok jadi ngaco dengan PCC

Kalau router Mikrotik Anda menggunakan hotspot, sebaiknya jangan digabung dengan PCC dalam satu router. Biasanya, kedua fungsi tersebut dipisahkan di router yang berbeda.

Apakah PCC menggabungkan dua bandwidth untuk satu download?

Ngga, kalau satu user download besar dengan single-connection, bandwidth-nya cuma kepakai dari satu ISP. Dengan load balance PCC, bukan berarti bandwidth Anda otomatis jadi 1+1=2.

Kok lama banget failovernya, ga langsung pindah gitu?

Recursive routing dengan check-gateway=ping biasanya memerlukan waktu 20-35 detik untuk menganggap link benar-benar terputus, hal ini normal agar koneksi tidak mengalami flapping (hidup-mati berulang-ulang).

Tags ,
guest

0 Comments
Oldest
Newest Most Voted