Skip to content

BGP FSM olayları

BGP, TCP 179 portu üzerinde çalışır. Önce iki router arasında bir TCP bağlantısı kurulur, sonra taraflar birbirine OPEN mesajı yollar, ardından KEEPALIVE ile karşılıklı onay verir. Bundan sonra UPDATE mesajlarıyla route bilgisi akmaya başlar. FSM (finite state machine), bu sırayı altı duruma böler:

  1. Idle: Hiçbir şey denenmiyor. Başlangıç durumu, bir hatadan sonra dönülen yer de burası.
  2. Connect: TCP bağlantısının tamamlanması bekleniyor.
  3. Active: TCP bağlantısı henüz yok, router bağlantı kurmaya çalışıyor ve karşıdan gelecek bağlantıyı da dinliyor.
  4. OpenSent: TCP tamam, OPEN mesajımızı gönderdik, karşının OPEN’ını bekliyoruz.
  5. OpenConfirm: Karşının OPEN’ı geldi ve kabul edildi, şimdi KEEPALIVE bekliyoruz.
  6. Established: Oturum açık. UPDATE ve KEEPALIVE trafiği akıyor.

Sorunsuz bir kurulumda sıra şöyle ilerler: Idle, Connect, OpenSent, OpenConfirm, Established.

Active, TCP bağlantısı ilk denemede kurulamadığında devreye giren yan yoldur. Bu yüzden Active görmek genelde iyiye işaret değildir.

BGP durum makinesi: Idle, Connect, Active, OpenSent, OpenConfirm ve Established durumları ile geçişleri
BGP oturum kurulum akışı. Kesikli çizgiler hata durumunda Idle’a dönüşü gösterir.

“Active” adı aldatıyor

Yeni başlayan biri Active görünce komşuluğun aktif olduğunu düşünebilir. Oysa tam tersi: router karşıya ulaşamıyor, tekrar tekrar deniyor. Bir komşu uzun süre Connect ile Active arasında gidip geliyorsa sorun çoğu zaman TCP katmanındadır. BGP ayarlarına bakmadan önce şunları kontrol etmek gerekir:

  • Komşu IP’sine yönlendirme tablosunda rota var mı? Loopback üzerinden kuruyorsanız IGP ya da statik rota gerçekten karşının loopback’ini getiriyor mu?
  • Ping çalışıyor mu? Kaynak adres, karşı tarafın beklediği adresle aynı mı? (Huawei’de peer ... connect-interface, Nokia’da local-address ile ayarlanır.)
  • Arada 179 numaralı TCP portunu kesen bir ACL veya güvenlik duvarı var mı?
  • eBGP komşusu doğrudan bağlı değilse TTL tarafını düşünün. eBGP paketleri çoğu uygulamada TTL 1 ile gider; birkaç atlama ötedeki komşu için multihop türü bir ayar gerekir.
  • MD5 kimlik doğrulaması varsa iki tarafta da aynı anahtar mı? Anahtar uyuşmazsa TCP oturumu kurulamaz ve komşu Active/Connect arasında kalır. Log’da MD5 ile ilgili bir uyarı aramak iyi bir fikirdir.

Idle: hiç denemiyor ya da bırakmış

Idle, ilk açılışta kısa süre görünebilir. Uzun süre orada kalıyorsa genelde şunlardan biri vardır:

  • Komşu yönetimsel olarak kapatılmış (shutdown ile kapatılmış ya da komşu tanımı silinmiş olabilir).
  • Komşuya giden rota yok, yani router bağlantıyı başlatamıyor.
  • Önceki bir hata nedeniyle oturum düşmüş ve router yeniden denemeden önce bekliyor.

OpenSent’te takılmak

Bu noktada TCP kurulmuş demektir. Yani yol açık, ağ sorunu büyük ihtimalle değil. Router OPEN mesajını göndermiş, karşıdan OPEN bekliyor. Uzun süre burada kalıyorsa:

  • Karşı taraf bizi komşu olarak tanımlamamıştır (bizim IP adresimiz onun tarafında tanımlı değildir).
  • OPEN mesajındaki bir değer karşıda kabul görmemiştir; karşı taraf NOTIFICATION gönderip bağlantıyı kapatmış, biz de sürekli Idle, Connect, OpenSent döngüsüne girmişizdir.

İkinci durumda oturum sürekli düşüp kalkar. Çözüm, hangi NOTIFICATION’ın geldiğine bakmaktır. Aşağıdaki tablo bunun için.

OpenConfirm de hızlı geçilmeli

OpenConfirm’de kalan bir oturum nadirdir. Orada takılıyorsa ya KEEPALIVE’lar bir yönde kayboluyordur ya da karşı taraf zamanlayıcı uyuşmazlığı nedeniyle oturumu kapatıyordur. İki tarafta da hold time değerlerine bakın.

Zamanlayıcılar: hold time ve keepalive

İki router, OPEN mesajında kendi hold time değerlerini gönderir; oturum için küçük olan değer kullanılır. RFC 4271’e göre hold time ya sıfır olmalı ya da en az 3 saniye olmalı. KEEPALIVE aralığı için önerilen değer hold time’ın üçte biridir ve saniyede birden sık gönderilmemelidir. Hold time sıfırsa periyodik KEEPALIVE gönderilmez.

Varsayılan değerler üreticiye ve yazılım sürümüne göre değişebilir. Kendi cihazınızdaki değere komşu ayrıntı çıktısından bakmak en güvenlisidir.

Hold time içinde hiç KEEPALIVE ya da UPDATE gelmezse router “Hold Timer Expired” NOTIFICATION’ı gönderip oturumu kapatır. Hat kaybı, tek yönlü paket kaybı ya da cihazın yoğun yük altında olması bu tür düşmelere yol açabilir.

NOTIFICATION kodları: oturum neden kapandı?

Bir oturum hata nedeniyle kapanırken karşıya NOTIFICATION mesajı gider. Bu mesajdaki hata kodu, arıza aramanın en kısa yoludur:

KodAnlamıNe zaman görürsünüz
1Message Header ErrorBozuk mesaj başlığı
2OPEN Message ErrorOPEN içindeki bir parametre kabul edilmedi
3UPDATE Message ErrorUPDATE içeriğinde hata
4Hold Timer ExpiredSüre içinde KEEPALIVE ya da UPDATE gelmedi
5Finite State Machine ErrorMevcut duruma uymayan bir mesaj geldi
6CeaseOturum yönetimsel olarak ya da bir limit nedeniyle kapatıldı

Kod 2 (OPEN Message Error) için alt kodlar özellikle işe yarar:

  • 1: Desteklenmeyen sürüm numarası
  • 2: Bad Peer AS. Karşının AS numarası, bizim tarafta tanımlı komşu AS numarasıyla uyuşmuyor.
  • 3: Bad BGP Identifier. Router-id değeri geçersiz.
  • 4: Desteklenmeyen opsiyonel parametre
  • 6: Kabul edilemeyen hold time

Yeni kurulan bir eBGP komşuluğunda en sık rastlanan hatalardan biri “Bad Peer AS”tir. İki tarafın birbirinin AS numarasını yanlış yazması çok basit bir hatadır ama kolayca gözden kaçar.

Huawei VRP’de komşuların durumunu görmek için:

display bgp peer

Nokia SR OS’ta:

show router bgp summary
show router bgp neighbor <ip> detail

Her iki üreticide de durum Established değilse önce komşunun ayrıntı çıktısına ve cihaz loglarına bakın. Oturumun neden kapandığına dair bilgi çoğunlukla orada bulunur.

Komşu Established olmuyorsa şu sırayla ilerlemek zaman kazandırır:

  1. Durum Idle ise: komşu yönetimsel olarak kapalı mı, komşuya rota var mı?
  2. Durum Connect ya da Active ise: ping, kaynak adres, 179. port, ACL, TTL, MD5.
  3. Durum OpenSent ile Idle arasında gidip geliyorsa: AS numarası, router-id, hold time. NOTIFICATION kodunu bulun.
  4. Established olduktan sonra düşüyorsa: hold timer, cihaz yükü, hat kalitesi, prefix limitleri.
  5. Oturum açık ama route gelmiyorsa: artık FSM değil politika meselesidir. Import ve export politikalarına bakın.

Back To Top