# Sınır Geçit Protokolü
 - YÖNLENDİRME 
Sınır Geçit Protokolü (Border Gateway Protocol) internet üzerinde kararların çekirdeğe yönlendirilmesine imkân sağlar. BGP gerçekten de güvenilir, sağlıklı çalışan bir yönlendirme protokolü olmasına karşın yavaş bir yönlendirme protokolüdür. Bu protokol bir IP network tablosunu korur ya da otonom sistemler arasında ağın ulaşılabilirliğini gösterir. Yol vektörü protokolü gibi tarif edilir.
Sınır Geçit Protokolü dış geçit protokolünün (EGP) tamamen dağıtılmış yönlendirimini çekirdek ARPAnet modelinden NFSNET omurgası içeren dağıtılmış sistem modeline çevirmek amacıyla yaratılmıştır. Bu durum internetin gerçekten dağıtılmış bir sistem olmasını sağlar. 1994'ten bu yana BGP 4 versiyonu internet üzerinde kullanılmaktadır. Tüm önceki versiyonlar şimdi demode olmuşlardır. Versiyon 4 de yapılan tüm geliştirmeler Classless Inter-Domain Routing e destek sağlamıştır ve route aggregation kullanımı yönlendirme tablolarının boyutlarının azalmasını sağlamıştır. 2006 Ocak ayından bu yana versiyon 4, RFC 4271 in içinde kodlanmıştır. Versiyon 4 önceki RFC 1771 inkabaca 20 defa gözden geçirilmiş versiyonunu temel alır. RFC 4271 versiyonda hata numaraları düzeltilmiş, karmaşıklık giderilmiş ve endüstri pratiğine daha yakın bir hale getirilmiştir.
Birçok internet servis sağlayıcısı diğer servis sağlayıcılarıyla iletişim kurmada BGP'yi kullanır (özellikle bu sağlayıcılar multihomed ise. (BGP kullanılan bir sistemde yedekli bir bağlantıya ihtiyaç duyabiliriz. Bunun için birden fazla ISP ye bir bağlantı oluşturmamız gerekecek. buna multihoming diyoruz.) ) BGP yi Sinyal Sistemi 7 (SS7) ile karşılaştırırsak sağladığı PSTN üzerinde çekirdek arama ayarları protokolüdür. Çok geniş özel IP networkleri içsel olarak BGP yi kullanır. Buna OSPF (Open Shortest Path Fisrt) in katılması bir örnek olabilir. BGP kullanımının bir diğer nedeni ise BGP networkünün çoklu erişim noktalarından ISP (RFC 1998) ya da çoklu ISP lerden daha iyi fazlalıklarının olmasıdır.


## Çalışma.
BGP komşuları, konfigürasyonun yönlendiriciler arasında TCP oluşturumunun port 179 üzerinde kurulumunun elle yapılmasına bir imkândır. Bir BGP spikeri periyodik olarak 19 byte lık canlı mesajları ana bağlantıya gönderir (her 60 saniyede). Bu yönlendirme protokolleri arasında BGP TCP'yi nakletme protokolü olarak eşşizdir.
BGP otonom sistemin içinden (AS) geçtiği zaman "iç BGP" ("IBGP" or "Interior Border Gateway Protocol") olarak adlandırılır. Otonom sistemler arasından geçtiğinde ise "dış BGP" ("EBGP" or "Exterior Border Gateway Protocol") olarak adlandırılır. Diğer bir AS ise bilgi değişimi yapan AS'nin sınırında olan yönlendiriciler sınır ya da uç yönlendiriciler olarak adlandırılır. İşletim sisteminde IBGP yönleri dış BGP den ya da herhangi bir iç yönlendirici protokolden daha az tercih edilen 200 yönetimsel mesafesindedir. Diğer yöneltici uygulamalar da EBGP'yi IGP'ye tercih eder. Ayrıca BGP, bağlantı güvenliğinin sağlanması için MD5 ile erişimin yetkilendirilmesini sağlar.


## Tablolar.
BGP ile haberleşmek için bir yönlendirici 3 tablo tutar.
 - Komşu Tablosu : Bu tabloya manuel olarak komşu yönlendiriciler yazılır. Ayrıca hangi bilgiyi hangi yönlendiriciye gönderebileceği bilgisi de bu tabloda tutulabilir.
 - BGP Tablosu : Dakikada bir, komşu yönlendiricilerinden ayaktayım-çalışıyorum bilgisi alıp almadığını tutar.
 - IP Yönlendirme Tablosu : BGP tablosundaki en iyi rotaları tutar.


## Eklentilerin Haberleşmesi.
OPEN süresince, BGP konuşmacıları çoklu uzantıları ve çeşitli kurtarma modları da dahil olmak üzere oturumun isteğe bağlı yetenekleri ile iletişime geçebilirler. Eğer BGP ye yönelen çoklu uzantılar yaratılış esnasında anlaşıyorsa, BPG konuşmacıları Ağ Katmanı Ulaşılabilirlik Bilgisine(NLRI) ön ek olarak bir adres ailesi ön eki olarak tanıtırlar. Bu aileler IPv4(default), IPv6, IPv4/IPv6 Sanal Özel Ağlar ve çok noktaya yayın yapan BGP'leri kapsar.


## Sonlu Durum Makinesi.
Faaliyetleri içinde aynı işi yaptığı eşleri ile beraber karar alabilmek için, BPG eşi 6 durum içeren basit bir sonlu durum makinesi(FSM) kullanır; Boş, Bağlantı,Aktif,Açık Gönderim, Açık Onay, Kurulmuş. Her karşılıklı eşleşme (peer-to-peer) için bir BPG uygulaması bu 6 durumu bir değişkende tutar. BGP protokolü her eşin bir durumdan diğerine değişimini belirtmek için bir mesaj tanımlar. İlkdurum BOŞ olma durumudur. BOŞ olma durumunda, BGP tüm kaynakları başlatır, tüm gelen BGP bağlantı girişimlerini reddeder, eşbir TCP bağlantısı başlatır. İkinci durum BAĞLANTIdır. BAĞLANTI durumunda router TCP bağlantısının gönderilmesini ve AÇIK GÖNDER durumuna geçişin başarılı olmasını bekler. Eğer başarısız olursa, Bağlantıyı tekrar deneme zamanlayıcısını çağırır ve sona ermesi ile beraber AKTİF durumuna geçer. AKTİF durumunda yönlendirici Bağlantıyı tekrar deneme zamanlayıcısını sıfırlar ve BAĞLANTI durumuna döner. AÇIK GÖNDERİM durumunda yönlendirici bir AÇMA mesajı gönderir ve AÇIK ONAY durumuna geçmek için başka bir mesajın gelmesini bekler. Canlı tutma mesajları değiş-tokuş yapılır, başarım sağlandıktan sonra yönlendirici KURUM durumuna geçer. KURUM durumunda yönlendirici eşine canlı tutma, güncelleme ve bildirim mesajları gönderir veya alabilir.
Boş Durum
  - Gelen tüm BGP çağrılarını reddet
  - Olay tetikleyicilerini başlat
  - Yapılandırılmış BGP eşi ile bir TCP bağlantısı başlat
  - Eşinden bir TCP bağlantısı bekler
  - BAĞLANTI durumuna geçer
  - FSM süreçlerinin herhangi bir durumunda hata oluşursa BGP oturumu derhal iptal edilir ve BOŞ durumuna dönülür. Bir yönlendirici şu sebeplerle BOŞ durumundan ilerleyemez 
  - 179 nolu TCP portu kapalı olabilir.
  - Yönlendiricide eşinin adresi yanlış yapılandırılmış olabilir.
  - 1023 üzerinde herhangi bir TCP portu açık olmayabilir.
  - AS numarası yönlendirici üzerinde yanlış yapılandırılmış olabilir.
Bağlantı Durumu
  - Eşi ile başarılı bir TCP haberleşmesi bekler.
  - TCP oturumu başarılı kurulmuş ise BGP bu durumda çok zaman harcamaz.
  - Eşine OPEN mesajı gönderir ve durumunu AÇIK GÖNDER durumuna değiştirir.
  - Bir hata oluşursa, BGP AKTİF durumuna geçer. Bu hatanın var olma sebepleri 
  - TCP bağlantı noktası 179 açık olmayabilir.
  - 1023 üzerinde rastgele bir TCP bağlantı noktası açık olmayabilir.
  - Eş adresi yönlendiricide yanlış yapılandırılmış olabilir.
  - AS numarası yönlendiricide yanlış yapılandırılmış olabilir.
Aktif Durum
  - Eğer yönlendirici başarılı bir TCP oturumu kuramadıysa aktif durum biter.
  - BGP FSM diğer TCP oturumunu yeniden başlatmayı dener ve eğer başarılıysa o zaman OPEN mesaj gönderir.
  - Eğer tekrar başarısız olursa FSM etkin olmayan durumu yeniden başlatır.
  - Tekrarlanan başarısızlıklar pasif ve aktif durum arasında yönlendirici döngüde sonuçlanabilir. Bazı nedenler şunlardır:
  - TCP 179. portta açık değildir.
  - 1023 portu üzerinde rastgele TCP açık değildir.
  - BGP yapılandırma hatası.
  - Ağ yoğunluğu.
  - Sabit olmayan ağ arayüzü.
Açık Gönderim Durumu
  - BGP FSM OPEN mesajı eşdeğerinden dinler.
  - Mesaj alındığında yönlendirici OPEN mesajın geçerliliğini kontrol eder.
  - Eğer hata varsa OPEN mesajın alanlarından biri eşdeğerlerinin arasında eşleşmediği için, BGP versiyonu uyuşmaz, MDS parolası uyuşmaz, eş yönlendirici farklı my AS bekler vb.
  - Yönlendirici hataya neden gösteren eşdeğerine bir uyarı mesajı gönderir.
  - Eğer hata yoksa canlı tutma mesajı gönderir, çeşitli zamanlayıcılar ayarlanır, durum açık gönderim olarak değiştirilir.
Açık Onayla Durumu
  - Eş diğer eşten bir canlı tutma mesajı bekler.
  - Eğer canlı tutma mesajı alınırsa ve herhangi bir zamanlayıcının canlı tutma alım aşamasında süresi dolmamışsa, BGP KURUM durumuna geçer.
  - Eğer bir zamanlayıcı BOŞ durumuna geçer.
Bağlantı Kuruldu Durumu
  - Bu durumda eşdeğer her bir yönlendirici hakkında bilgi alış-verişi için güncelleme mesajı gönderir.
  - Güncelleme mesajında herhangi bir hata yoksa eşdeğerine uyarı mesajı gönderilir ve BGP geçişi eylemsiz duruma geri döndürülür.
  - Canlı tutma mesajı alınmadan önce eğer zamanlayıcının süresi dolarsa ya da hata durumu meydana gelirse yönlendirici geçişi eylemsiz duruma geri döndürülür.
  - Domain'in yasaklanmamış olması gerekir