Networking

BGP Fundamentals untuk ISP

Tutorial komprehensif BGP untuk ISP — AS numbering, peering, route filtering, communities, dan path selection pada MikroTik RouterOS

1. Pengenalan BGP

BGP (Border Gateway Protocol) adalah protokol routing yang menghubungkan Autonomous System (AS) di internet. BGP adalah protokol yang digunakan oleh ISP untuk saling bertukar routing information dan menentukan jalur terbaik untuk mengirim data antar jaringan di seluruh dunia.

BGP disebut juga sebagai "protokol yang menahan internet bersama." Tanpa BGP, ISP tidak bisa saling berkomunikasi dan internet seperti yang kita kenal tidak akan ada.

BGP dalam Ekosistem Internet
🏢
ISP A
AS 12345
Pelanggan lokal
↔ BGP ↔
🌐
Internet Exchange
IX / IXP
IX Indonesia (IIX)
↔ BGP ↔
🏢
ISP B
AS 67890
Pelanggan lokal

1.1 BGP vs IGP (OSPF, RIP)

FiturBGP (EGP)OSPF/RIP (IGP)
TipeExterior Gateway ProtocolInterior Gateway Protocol
CakupanAntar AS (antar ISP)Dalam satu AS
MetricPath attributes kompleksCost / hop count
TransportTCP port 179Bervariasi
ConvergenceRelatif lambatCepat
Skala900,000+ routes (full table)Ribuan routes
AlgoritmaPath VectorLink State / Distance Vector

2. AS Numbering

Setiap organisasi yang ingin terhubung langsung ke internet backbone membutuhkan Autonomous System Number (ASN). ASN adalah nomor unik global yang mengidentifikasi setiap AS di internet.

2.1 Jenis ASN

JenisRentangKeterangan
16-bit (2-byte)1 - 65535ASN tradisional, 64512-65534 private
32-bit (4-byte)65536 - 4294967295ASN baru, diperlukan karena exhaustion
Private ASN64512-65534 (16-bit)Untuk internal, tidak boleh di-announce ke internet
Private ASN4200000000-4294967294Private 32-bit range

2.2 Cara Mendapatkan ASN

  1. APNIC (untuk Asia Pasifik, termasuk Indonesia) — www.apnic.net
  2. Daftar sebagai anggota APNIC atau melalui NIR (National Internet Registry) — di Indonesia yaitu IDNIC
  3. Ajukan permohonan ASN dengan justifikasi teknis
  4. Biaya: tergantung ukuran alokasi, mulai dari USD 1,156/tahun
  5. Proses: 2-4 minggu setelah dokumen lengkap
⚠️ Private ASN

Jangan pernah meng-announce private ASN (64512-65534) ke jaringan publik internet. Private ASN hanya untuk penggunaan internal — misalnya untuk iBGP atau lab testing.

3. BGP Peering

BGP peering adalah hubungan antara dua router BGP yang saling bertukar routing information. Ada dua jenis peering utama: eBGP (antar AS) dan iBGP (dalam satu AS).

3.1 eBGP vs iBGP

FitureBGPiBGP
ScopeAntar AS berbedaDalam satu AS
TTL1 (directly connected)255
Next-hopDiubah ke peer addressTidak diubah
AS_PATHDitambahkan AS lokalTidak diubah
Full meshTidak perluPerlu (atau gunakan route reflector)

3.2 Jenis-jenis Peering

4. Path Selection Algorithm

BGP memilih jalur terbaik berdasarkan serangkaian path attributes. Urutan prioritas berikut adalah urutan standar yang digunakan oleh kebanyakan implementasi BGP:

4.1 BGP Best Path Selection

  1. Highest Weight — Cisco-specific, tidak ada di MikroTik (gunakan routing-mark)
  2. Highest Local Preference (LOCAL_PREF) — Prefensi route dalam AS (default 100)
  3. Locally Originated — Route yang di-announce dari router ini
  4. — Jalur dengan AS_PATH terpendek
  5. Lowest Origin Type — IGP < EGP < Incomplete
  6. Lowest MED — Multi-Exit Discriminator dari neighbor AS
  7. eBGP over iBGP — eBGP lebih diprioritaskan
  8. Lowest IGP Metric — Metric terendah ke next-hop
  9. Oldest Route — Route yang sudah ada lebih lama
  10. Lowest Router ID — Router ID terkecil
💡 Path Selection di MikroTik

MikroTik RouterOS mendukung sebagian besar BGP path attributes. Untuk memanipulasi path selection, gunakan routing filter untuk mengubah local-pref, MED, atau prepend AS_PATH.

5. Route Filtering

Route filtering adalah praktik wajib pada setiap koneksi BGP. Tanpa filter, router Anda bisa menerima atau meng-announce route yang tidak seharusnya, menyebabkan masalah routing global.

5.1 Filter yang Harus Diterapkan

MikroTik — BGP Route Filtering
# Filter INBOUND: Terima hanya prefix yang valid dari peer
/routing filter add \
  chain=BGP-IN \
  prefix=0.0.0.0/0 \
  prefix-length=0-32 \
  rule="if (dst in 10.0.0.0/8 || dst in 172.16.0.0/12 || dst in 192.168.0.0/16) { reject }"

# Filter: Tolak prefix terlalu kecil (> /24 untuk IPv4)
/routing filter add \
  chain=BGP-IN \
  rule="if (dst-len > 24) { reject }"

# Filter: Tolak default route dari peer (jika tidak diinginkan)
/routing filter add \
  chain=BGP-IN \
  prefix=0.0.0.0/0 \
  prefix-length=0 \
  rule="reject"

# Filter OUTBOUND: Hanya announce prefix kita sendiri
/routing filter add \
  chain=BGP-OUT \
  rule="if (dst != 203.0.113.0/24) { accept } else { reject }"

# Filter: Jangan announce private ASN
/routing filter add \
  chain=BGP-OUT \
  rule="if (bgp-as-path ~ \"64[0-9]{3}\") { reject }"

5.2 Bogon Filtering (RFC 6890)

MikroTik — Bogon Filter
# Blokir bogon prefixes dari internet
:local bogons { \
  "0.0.0.0/8"; "10.0.0.0/8"; "100.64.0.0/10"; \
  "127.0.0.0/8"; "169.254.0.0/16"; "172.16.0.0/12"; \
  "192.0.0.0/24"; "192.0.2.0/24"; "192.168.0.0/16"; \
  "198.18.0.0/15"; "198.51.100.0/24"; "203.0.113.0/24"; \
  "224.0.0.0/3" \
}

:foreach bogon in=$bogons do={
  /routing filter add \
    chain=BGP-IN \
    prefix=$bogon \
    rule="reject"
}

# Juga blokir AS_PATH yang mencurigakan
/routing filter add \
  chain=BGP-IN \
  rule="if (bgp-as-path ~ \"^0 \" || len(bgp-as-path) > 25) { reject }"

6. BGP Communities

BGP Communities adalah tag yang bisa ditambahkan ke route untuk menandai atau mengelompokkan route. Communities memudahkan filtering dan policy enforcement tanpa perlu match setiap prefix satu per satu.

6.1 Format Communities

Terminal MikroTik — BGP Communities
# Format: ASN:VALUE (contoh: 65000:1)
# Beberapa community standar:
# 65535:0   = NO_EXPORT (jangan di-export ke eBGP peer)
# 65535:666 = BLACKHOLE
# 65535:0   = NO_ADVERTISE (jangan di-announce ke siapapun)

# Set community pada route yang di-announce
/routing filter add \
  chain=BGP-OUT \
  set-bgp-communities=65000:100 \
  rule="if (dst in 203.0.113.0/24) { accept }"

# Match community pada filter inbound
/routing filter add \
  chain=BGP-IN \
  rule="if (bgp-communities includes 65000:100) { \
    set-bgp-local-pref 200; accept \
  }"

# Contoh penggunaan: ISP Indonesia (IIX community)
# Community untuk menandai route dari IIX
/routing filter add \
  chain=BGP-IIX-IN \
  set-bgp-communities=65000:1 \
  rule="accept"

# Community untuk menandai route dari upstream
/routing filter add \
  chain=BGP-TRANSIT-IN \
  set-bgp-communities=65000:2 \
  rule="accept"

6.2 Well-Known Communities

CommunityNilaiFungsi
NO_EXPORT65535:65281Jangan export ke eBGP peer
NO_ADVERTISE65535:65282Jangan announce ke peer manapun
NO_EXPORT_SUBCONFED65535:65283Jangan export ke confederation peers
BLACKHOLE65535:666Blackhole traffic ke prefix ini

7. Konfigurasi BGP di MikroTik

7.1 Setup BGP Dasar

Terminal MikroTik — BGP Setup
# Set router ID
/routing router-id add \
  name=bgp-id \
  address=203.0.113.1

# Buat BGP instance
/routing bgp instance add \
  name=bgp1 \
  as=65000 \
  router-id=bgp-id \
  redistribute-static=no \
  redistribute-connected=no \
  redistribute-ospf=no

# Tambah BGP peer (upstream ISP)
/routing bgp peer add \
  name=upstream-isp1 \
  instance=bgp1 \
  remote-address=198.51.100.1 \
  remote-as=64600 \
  address-families=ip \
  multihop=no \
  in-filter=BGP-IN \
  out-filter=BGP-OUT \
  comment="Upstream ISP 1"

# Tambah BGP peer (IX peering)
/routing bgp peer add \
  name=ix-peer1 \
  instance=bgp1 \
  remote-address=103.26.156.1 \
  remote-as=7713 \
  address-families=ip \
  in-filter=BGP-IN \
  out-filter=BGP-OUT \
  comment="IIX Peering - Telkom"

# Announce prefix kita
/ip firewall address-list
/routing filter add \
  chain=BGP-OUT \
  prefix=203.0.113.0/24 \
  rule="accept"

7.2 Monitoring BGP

Terminal MikroTik — BGP Monitoring
# Lihat BGP peers
/routing bgp peer print

# Lihat status detail peer
/routing bgp peer print detail where name=upstream-isp1

# Lihat BGP routes yang diterima
/routing bgp advertisements print peer=upstream-isp1

# Lihat routes yang di-announce
/routing bgp advertisements print

# Monitor BGP state changes
/log print where topics~"bgp"

# Cek jumlah routes
/routing bgp peer print count-only

# Reset BGP session (soft reset)
/routing bgp peer refresh upstream-isp1

# Hard reset BGP session
/routing bgp peer reset upstream-isp1

8. Multi-homing Setup

Multi-homing adalah konfigurasi di mana satu AS terhubung ke internet melalui lebih dari satu ISP. Ini memberikan redundancy dan load balancing.

8.1 Dual-ISP BGP Setup

MikroTik — Multi-homing
# Primary ISP — set local-pref lebih tinggi
/routing filter add \
  chain=BGP-ISP1-IN \
  rule="set-bgp-local-pref 200; accept"

# Backup ISP — local-pref default (100)
/routing filter add \
  chain=BGP-ISP2-IN \
  rule="accept"

# Peer ISP 1 (primary)
/routing bgp peer add \
  name=isp1-primary \
  instance=bgp1 \
  remote-address=198.51.100.1 \
  remote-as=64600 \
  in-filter=BGP-ISP1-IN \
  out-filter=BGP-OUT \
  comment="Primary ISP"

# Peer ISP 2 (backup)
/routing bgp peer add \
  name=isp2-backup \
  instance=bgp1 \
  remote-address=198.51.101.1 \
  remote-as=64601 \
  in-filter=BGP-ISP2-IN \
  out-filter=BGP-OUT \
  comment="Backup ISP"

# Load balancing: set local-pref sama untuk traffic masuk
# dan gunakan AS-path prepend pada satu ISP untuk preferensi

9. BGP State Machine

BGP memiliki state machine yang menentukan tahapan koneksi antara dua peer:

9.1 BGP States

StateKeterangan
IdleState awal, menunggu koneksi
ConnectMencoba membuat koneksi TCP ke port 179
ActiveGagal connect, mencoba ulang
OpenSentBGP Open message terkirim, menunggu balasan
OpenConfirmOpen message diterima, menunggu Keepalive
EstablishedKoneksi berhasil, mulai tukar route

9.2 BGP Message Types

9.3 Troubleshooting BGP

Terminal MikroTik — BGP Debug
# Cek status BGP peers
/routing bgp peer print detail where name=upstream-isp1

# Aktifkan BGP debug logging
/system logging add topics=bgp action=memory

# Lihat BGP log
/log print where topics~"bgp"

# Common issues:
# - State: Active → Tidak bisa TCP connect (firewall block port 179)
# - State: OpenSent → AS number salah di remote-as
# - State: Established tapi no route → Filter salah

# Pastikan port 179 tidak diblokir
/ip firewall filter print where dst-port=179

# Test TCP connectivity
/tool port-scan address=198.51.100.1 port=179

# Lihat route yang diterima dari peer
/routing bgp advertisements print peer=upstream-isp1

# Lihat jumlah route
/ip route print count-only where bgp

10. Best Practices untuk ISP

Quiz Pemahaman

🧠 Tes Pemahaman: BGP Fundamentals

1. BGP termasuk jenis protokol routing apa?

a) Interior Gateway Protocol (IGP)
b) Distance Vector Protocol
c) Exterior Gateway Protocol (EGP)
d) Link State Protocol

2. Mengapa route filtering sangat penting pada BGP?

a) Untuk meningkatkan kecepatan routing
b) Untuk mencegah penerimaan/pengiriman route yang tidak valid
c) Untuk mengurangi penggunaan CPU
d) Untuk mengaktifkan enkripsi BGP

3. Apa fungsi dari LOCAL_PREF pada BGP?

a) Menentukan preferensi route keluar dari AS
b) Mengenkripsi BGP session
c) Mengatur bandwidth peer
d) Memilih port BGP

4. Community 65535:666 digunakan untuk apa?

a) NO_EXPORT
b) NO_ADVERTISE
c) Preferensi tinggi
d) BLACKHOLE

5. Apa itu multi-homing dalam konteks BGP?

a) Menggunakan banyak router dalam satu rack
b) Terhubung ke internet melalui lebih dari satu ISP
c) Menggunakan banyak VLAN
d) Memiliki banyak IP address
← SebelumnyaMikroTik Scripting Selanjutnya →MPLS & Traffic Engineering
🔍 Zoom
100%
🎨 Tema