BGP Basics
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.
- Ölçek: İnternet routing tablosu >900.000 prefix içerir — IGP bunu handle edemez
- Policy control: "Bu trafik şu AS üzerinden gitsin" gibi kararlar BGP ile verilir
- Multi-homing: Birden fazla ISP bağlantısını yönetmek
- AS boundary: Farklı yönetim alanları arasında routing
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
03 / iBGP vs eBGP
BGP iki modda çalışır:
- eBGP (External BGP): Farklı AS'ler arasında. Komşular genelde directly connected. Next-hop değiştirilir. AD = 20.
- iBGP (Internal BGP): Aynı AS içinde. Komşular loopback üzerinden peer olur. Next-hop değiştirilmez. AD = 200.
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)
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 machineIdle → Connect → Active → OpenSent → OpenConfirm → Established Established = BGP çalışıyor, route exchange başlıyor
cisco ios — bgp sessionrouter 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:
- Neighbor Table: BGP komşuları ve session durumları
- BGP Table: Tüm alınan prefix'ler ve attribute'ları
- Routing Table (RIB): Best path olarak seçilen prefix'ler
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'larAttribute | 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
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
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
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 problemi5 router → 10 session 10 router → 45 session 50 router → 1225 session ← yönetilemez
Çözüm yöntemleri:
- Route Reflector (RR): RR, iBGP'den öğrendiği rotaları diğer iBGP komşulara iletebilir
- Confederation: AS'i alt AS'lere böler
cisco ios — route reflectorrouter 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.
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
- iBGP komşular loopback üzerinden peer mi?
- MD5 authentication aktif mi?
- Inbound/outbound prefix-list filtreleri var mı?
- Maximum-prefix limiti tanımlandı mı?
- Route Reflector kullanılıyorsa cluster-id tanımlı mı?
- BGP router-id explicit tanımlı mı? (loopback IP)