← Network Makalelerine Dön
CCNPRoutingeBGP/iBGPPath Selection

BGP Basics

BGP Basics
Bu makale BGP'yi "büyük ağlar için routing protokolü" özetinin ötesinde ele alır: AS mimarisi, iBGP/eBGP farkları, attribute tabanlı path selection algoritması ve BGP hijacking/prefix leak güvenlik riskleri.

01 / BGP Neden Var?

OSPF ve EIGRP gibi IGP'ler tek bir organizasyon içinde çalışacak şekilde tasarlanmıştır. İnternet ise binlerce farklı organizasyonun ağından oluşur. IGP'lerin bu ölçeği kaldırması mümkün değildir.

ℹ
BGP ne değildir: BGP hızlı convergence için tasarlanmamıştır. Link-state IGP'ler (OSPF) çok daha hızlı converge eder. BGP'nin gücü ölçek ve policy kontrolündedir.
BGP AS_PATH loop prevention
Şekil 1 — BGP AS_PATH ile loop önleme: AS 10 kendi numarasını görünce prefix'i reddeder

02 / AS Numaraları

AS (Autonomous System), ortak bir routing policy altında çalışan ağlar topluluğudur. Her AS'in benzersiz bir numarası vardır.

as numaraları
16-bit (klasik) : 1 – 65535 32-bit (modern) : 1 – 4.294.967.295 Özel (private) AS'ler: 16-bit: 64512 – 65535 32-bit: 4200000000 – 4294967294 Örnekler: AS 15169 → Google AS 32934 → Meta AS 16509 → Amazon AS 8473 → Türk Telekom
ℹ
Kayıt: AS numaraları IANA → RIR (RIPE, ARIN...) üzerinden tahsis edilir. Türkiye = RIPE bölgesi.

03 / iBGP vs eBGP

BGP iki modda çalışır:

farklar tablosu
Özellik | eBGP | iBGP AS | Farklı AS | Aynı AS TTL | 1 (default) | 255 (multihop) Next-hop | Değiştirilir | Değiştirilmez AD | 20 | 200 Full-mesh | Gerekli değil | Gerekli (veya RR)
⚠
Next-hop iBGP sorunu: iBGP'de next-hop değişmediği için, iBGP komşular next-hop IP'ye erişebilmeli. Genelde IGP ile next-hop IP dağıtılır.
iBGP vs eBGP topology
Şekil 2 — iBGP ve eBGP topolojisi: AS100 içi iBGP, AS100–AS150–AS200 arası eBGP

04 / Session Kurulumu

BGP, TCP port 179 üzerinde çalışır. Diğer routing protokollerinden farklı olarak neighbor discovery yoktur — komşular manuel olarak tanımlanır.

bgp session state machine
Idle → Connect → Active → OpenSent → OpenConfirm → Established Established = BGP çalışıyor, route exchange başlıyor
cisco ios — bgp session
router bgp 65001 bgp router-id 1.1.1.1 ! ! eBGP komşu (farklı AS): neighbor 203.0.113.1 remote-as 65002 neighbor 203.0.113.1 description ISP-A ! ! iBGP komşu (aynı AS, loopback): neighbor 10.0.0.2 remote-as 65001 neighbor 10.0.0.2 update-source Loopback0 neighbor 10.0.0.2 description IBGP-RR

05 / BGP Table

BGP üç ayrı tablo tutar:

show komutları
show ip bgp summary ! komşu durumu show ip bgp ! tüm BGP table show ip bgp 10.0.0.0 ! belirli prefix show ip bgp neighbors ! detaylı komşu bilgisi show ip route bgp ! routing table'daki BGP rotalar

06 / BGP Attribute'ları

BGP, path selection için metric yerine attribute'ları kullanır. Her attribute well-known veya optional olabilir.

temel attribute'lar
Attribute | Tip | Kapsam | Kullanım WEIGHT | Cisco proprietary | Local only | Outbound tercih LOCAL_PREF | Well-known | AS içi | Outbound tercih AS_PATH | Well-known | Tüm BGP | Loop prevention + path ORIGIN | Well-known | Tüm BGP | i/e/? kaynak bilgisi MED | Optional | Komşu AS | Inbound tercih NEXT_HOP | Well-known | Tüm BGP | Next-hop IP
ℹ
WEIGHT: Cisco'ya özgü, sadece local router'da geçerli. En yüksek = tercih edilir. Diğer router'lara iletilmez.

07 / Path Selection Algoritması

BGP aynı prefix için birden fazla yol aldığında best path seçimi sırayla şu kriterlere göre yapılır:

bgp best path — karar sırası
1. WEIGHT → En yüksek (Cisco proprietary) 2. LOCAL_PREF → En yüksek 3. Locally originated→ network/redistribute/aggregate tercih 4. AS_PATH length → En kısa 5. ORIGIN → IGP (i) > EGP (e) > Incomplete (?) 6. MED → En düşük (aynı AS komşularında) 7. eBGP > iBGP → eBGP yolu tercih 8. IGP metric → Next-hop'a en düşük IGP cost 9. Oldest eBGP path → En eski eBGP komşu (stabilite) 10. Router ID → En düşük BGP Router-ID 11. Cluster list → En kısa cluster list 12. Neighbor address → En düşük IP
📌
Ezber: 'We Love Oranges AS Oranges Mean Pure Refreshment' — ilk harfleri path selection sırasını verir.
BGP path selection
Şekil 3 — BGP path selection: summary prefix + more-specific prefix ile inbound yük dağılımı

08 / Route Advertisement

BGP'de prefix advertise etmek için iki yöntem vardır:

cisco ios — route advertisement
! 1. Network komutu (exact match gerekli): router bgp 65001 network 192.168.1.0 mask 255.255.255.0 ! 2. Redistribute (dikkatli kullan!): router bgp 65001 redistribute static route-map FILTER-STATIC redistribute connected route-map FILTER-CONNECTED ! Prefix-list ile filtreleme: ip prefix-list BGP-OUT seq 10 permit 192.168.0.0/16 le 24 ip prefix-list BGP-OUT seq 20 deny 0.0.0.0/0 le 32 router bgp 65001 neighbor 203.0.113.1 prefix-list BGP-OUT out
⛔
Tehlike: 'redistribute connected' veya 'redistribute static' ile tüm rotaları BGP'ye vermek, prefix leak'e yol açabilir. Her zaman route-map/prefix-list ile filtrele.

09 / iBGP Full-Mesh Sorunu

iBGP'de temel kural: iBGP'den öğrenilen bir rota, başka bir iBGP komşuya iletilmez (loop önleme). Bu yüzden n AS içindeki n router için n×(n-1)/2 iBGP session gerekir.

ölçek problemi
5 router → 10 session 10 router → 45 session 50 router → 1225 session ← yönetilemez

Çözüm yöntemleri:

cisco ios — route reflector
router bgp 65001 neighbor 10.0.0.2 remote-as 65001 neighbor 10.0.0.2 route-reflector-client neighbor 10.0.0.3 remote-as 65001 neighbor 10.0.0.3 route-reflector-client

10 / BGP Güvenlik Riskleri

BGP Hijacking

Bir AS, başkasına ait prefix'leri yanlışlıkla veya kasıtlı olarak advertise eder. Trafik yanlış yere yönlendirilir.

⛔
Gerçek Olaylar: 2010: Pakistan Telecom YouTube'u hijack etti. 2008: AS7007 incident — büyük internet kesintisi. 2019: China Telecom, Avrupa trafiğini yönlendirdi.

Prefix Leak

Transit AS, aldığı rotaları başka bir AS'e iletmemelidir. Bu ihlal edilirse trafik beklenmedik yollardan akar.

savunma
! MD5 authentication: router bgp 65001 neighbor 203.0.113.1 password G3rCekl1S1f3! ! Max-prefix limiti: router bgp 65001 neighbor 203.0.113.1 maximum-prefix 1000 80 ! 80% uyarı, 100%'de session drop ! Prefix filtreleme: neighbor 203.0.113.1 prefix-list ISP-IN in

11 / Enterprise Konfigürasyon

cisco ios — dual-homed enterprise
! İki ISP'ye bağlı enterprise örneği: router bgp 65001 bgp router-id 1.1.1.1 bgp log-neighbor-changes ! ! ISP-A (primary): neighbor 203.0.113.1 remote-as 65002 neighbor 203.0.113.1 description ISP-A-PRIMARY neighbor 203.0.113.1 password ISP-A-Secret! neighbor 203.0.113.1 maximum-prefix 800000 80 ! ! ISP-B (secondary): neighbor 198.51.100.1 remote-as 65003 neighbor 198.51.100.1 description ISP-B-SECONDARY neighbor 198.51.100.1 password ISP-B-Secret! neighbor 198.51.100.1 maximum-prefix 800000 80 ! ! Kendi prefix'imizi advertise et: network 203.0.113.0 mask 255.255.255.0 ! ! ISP-A'yı tercih et (LOCAL_PREF): neighbor 203.0.113.1 route-map SET-HIGH-LP in ! route-map SET-HIGH-LP permit 10 set local-preference 200

12 / Checklist