BGP

Tek bir tane internet çıkışın varsa kullanmayın ya da intenet çıkışın 2 tane yedekli ama aynı ISP'dense. Bu durumda BGP'ye ihtiyacınız yok. BGP'nin yaptığı şey bizim networkümüzü öğretmektir. Birden fazla autonom sistem varsa yani service sağlayıcı varsa BGP kullanılabilir.

Kaynaktaki kişi olarak Aynı ip ile 2 ISPden de anons yapmayı sağlayacaktır. 2 ISP vardır ama BGP yapmak zorundamıyız? Hayır. Bir ISP başka bir Ip diğer ISP başka bir IP çıkarsın olur biter. Servis vermek gibi bir derdimiz yoksa.

BGP'deki otonom sistem numarası eigpr deki gibi değil. Bu sizin kurumunuzdaki tüm network operasyonunu tarif eden unique bir numaradır. Bir kurumun yönetimi altında olan routerlar topluluğunu tarif etmek adına otonom sistem numarası denilen bir numara belirtilmiş. Örnek olarak Türk telekom bir ISP, onun tüm routerlarını ifade eden, arkasındaki tüm networkleri ifade eden buluta otonom sistem adı veriliyor. Bu otonom sistemi almak için IANA'ya başvurmak gerekiyor. IANA altındaki bölgesel kuruluşlar bu atama işini yapıyor (RIPE) gibi.

BGP rota tercihinde path attribute değerlerini kullanıyor. (PA) Birçok değer var.

BGP, routing loop'ları oluşması diye AS Path denilen attribute değerini kullanıyor.

Her prefix öğretildiği zaman mutlaka hangi otonom sistem üzerinden geçtiği ekleniyor. Örneğin 172.16.1.0 networkü 200 otonom sisteme öğretilmiş. Bu öğrendiği zaman şöyle diyor. 172.16.1.0 var origin'i 100. (AS). Bu öğrettiği zaman artık kendisini de ekliyor. Tekrar 100' e geldiğinde otonom sistem numrası olan AS path içerisine bakıyor ve kendi AS Path'ini görüyor. Ben buradan yollamayım diyor. çünkü bu bir loop'a sebep olur diyor. Bu öğrettiği anonsu çöpe atıyor.

BGP de bir update yollandığı anda içinde Attribute değerleri oluyor. Attribute oraya ulaşmak için yani öğrendiği o networke ulaşmak için kullanacağı rotanın detayları. Oraya giderken kaç AS geçiyor . oraya gitmek için bir sonraki router neyi kullanıyor, bu networkü nereden öğrendim ,bgp den mi öğrendin, redistirbuteden mi öğrendin gibi bir sürü detay ve NLRI denilen bir öğrettiği network yer alıyor.

Her öğrendiği network için farklı databaseler oluşturuluyor. MPLSde Multi protocol BGP kullanılıyor.

BGP'de hello paketleri diye bir şey yok. Komşu routerlarını keşfedemez. BGP de mutlaka komşunun ip adresini belirtiyorsun. Eğer komşu BGP routerın ip adresini belirtmezseniz. BGP başlamaz. BGP protokolü TCP 179 portu kullanıyor.

IBGP(Internal BGP)

Kurumun içinde kullanılan BGP demek. Company 2 bu bulut içerisindeki 3 router ile BGP yapabilir. Ama eğer öyle bir şey yaparsa, AD değeri 200 oluyor. Yani hiç güvenmiyor. Sebebi ise Loop Free mekanizmayı BGP AS Path ile sağlıyordu. Aynı AS geldiği anda Loop olduğunu anlayarak çöpe atmasından anlıyordu. Loop riskinden dolayı AD değeri çok büyük. Servis sağlayıcılar kullanıyor. Üzerlerinden network bilgileri geçirdikleri için. Aksi takdirde ISP değilsen hangi şirket A şirketi ile B şirketi arasında network geçirirki. Ancak ISP geçirir.

EBGP(External BGP)

İki farklı AS, İki farklı kurum arasında yapılan BGP'ye verilen isim AD değeri 20.

Sebebi AS Path problemi. Loop oluşmaması için. O yüzden Internal BGP anonsları 1 hop uzağa iletilebiliyor. 10 tane internal bgp routerımız varsa 45 tane komşuluk kurdurmamız gerekiyor.

External BGP'nin asıl amacı interneti sağlamak. Tüm internetteki kurumları birbirlerinin networklerini öğretmek. Eğer external bgp yapacaksanız bunu belirtiyoruz. Örnek olarak sen komşuluk kur ve komşuluk kuracağın router 4 hop ilerde. Ya da 10 hopa kadar uzaklıkta olabilir diye belirtmen lazım. Çünkü defaultta external bgp paketleri 1 hopa kadar yan tarafına öğretilebiliyor.

BGP Paket Tipleri

EBGP

  • Between BGP speakers in different AS

  • eBGP sents connection IP Address as next hop

  • eBGP uses TTL is 1 (Should be directly connected)

  • When using source interface command other than connecting interface you have to change

  • AD of eBGP is 20

  • Never run an IGP between eBGP peers

  • 30 sec for trying to connect again

IBGP

  • IBGP must be full mesh

  • Not requered to be directly connected

  • Next hop Ip address don't change

  • AD of IBGP is 200

  • 0 sec for trying to connect again

BGP Komşuluk Durumları

  • Idle = Bgp paketlerin hiçbir şey yollanmadığı BGP'nin açıldığı aşama

  • Connect

  • Active

  • OpenSent

  • OpenConfirm

  • Established

TCP session Connect durumunda başlıyor. TCP 179. TCP session açtığınız anda karşı tarafa Open mesajı yolluyor.

Update ile kendi bgp tablolarını yolluyorlar. Ospf'deki network database gibi.

Herhangi bir aşamada bir yanlışlık olursa Karşı taraf open mesajı yollamazsa Active state durumuna geçiyor.

BGP Konfigurasyonu

İpv6 ya da MPLS vs yapıyorsanız o zaman Multi Protocol BGP'ye geçmemiz gerekiyor. MultiProtocol BGPde adress family diye bir kavram hayatımıza giriyor. ipv4 adres ailesi ipv6 adres ailesi gibi. İki farklı şekilde yapılıyor. birincisi defaultta ipv4 unicast öğreticem ayarlı. Eğer onunla ilgili hiçbir değişiklik yapmazsanı bu iki satır ile BGP ayağa kalkıyor. Aynı routerda 2 farklı otonom sistemi için BGP başlatamazsınız. Hata verir. Yani router bgp 10 ve router bgp 20 diye bir kavram yok. Bir router bir tane otonom sistem sahip olabilir. İkincisinde adress family ile yapmak istersek yine router bgp diyip otonom sistem numarasını yazıyoruz. Yine neigbor veriyoruz. ama diyoruzki ben detaylarımı (hangi protokoller öğretilecek detaylarını kendi adress family konfigurasyonu altında yapacağım. Sen defaullta bununla komşuluk kurma komutunu giriyoruz (no bgp default ipv4-unicast). Bunu yazmazsak direkt olarak komşuluk kurar. adress family ipv4 diyip burada active komutu ile aktif edebiliyoruz.

sh ip bgp summary komutu ile 2 routerın komşuluk kurup kurmadığına bakabiliriz.

Bu öğretmek istediğimiz network bilgisi mutlaka routerın routing tablosunda bulunmak zorunda.

Network komutu ile biz BGP'ye bu networkleri öğret diyoruz. Ama öğretmek istediğimiz networkler mutlaka router'ın ya connected olarak ya static routing olarak ya da dinamik routing olarak zaten bildiği networkler olmak zorundalar. Bunları alıp komşuların anonsa başlar. Komşularına anonsa başlamanın yanı sıra BGP ile öğreteceği tüm network satırlarını da kendisine ait olan bu BGP tablosuna kayıt eder. Yani ben bu networkü BGP ile öğretiyorum şeklinde.

Next hop 0.0.0.0 ise bu benim üzerimde networkmuş Ben bunu öğretiyorum diyor. Weight değeri 32768 diyor bu kendi üzerindeki network demek oluyor. Büyüktür işareteti en iyi tercih edeceği rotayı gösteriyor ( *>)

Local-RIB dediği BGP tablosu. Adj-RIB-IN komşudan bana yollanan BGP tablosu demek. Adj-RIB-Out benim komşuya yolladığım BGP tablosu demek. Filtereleme vs olacağından BGP tablosu her routerda farklı olabilir o yüzden 3 tablo vardır. Bizim sahip olduğumuz BGP database'yi komşuya aynısını yollayacağımız anlamına gelmiyor.

İkincisinin weight değeri 32768 olduğu için 2. yolu seçti.

advertised-route dediği benim komşuya yolladığım BGP tablosu. show ip bgp dersek çıkacak olan benim BGP tablom. Yukardaki komutu derseniz ise bizim filtre sonrası komşuya yolladığım tabloyu görüyoruz.

İstersek de BGP ye ospfden öğrendiğin networkleri öğret diyebilirsin. Ya da redistribute static vs de diyebiliriz. (Herhangi IGP den BGP ye redistribute edebilirsin) Ama önerilmez

Route Summarization

Niye özetleme yaparız. Buradaki R1 routerı üzerinde 3 tane network var biz bunları özetlersek R3 üzerinde. 2 şekilde summarization yapılabiliyor. Network statement ve aggregation ile yapılıyor.

Zaten bu satırı yazmazsak anons etmezki bu şekilde bgp de bir satır yok. Yani normalde üzerinde sadece /24 ler var. /22 yi biz kafamızdan uydurduk routing tablosunda böyle bir ifade yok. Eğer tam anlamıyla subnet maskesi birebir aynı olan satır yoksa BGP onu anons etmez. BGP routing tablosuna bakar /22 li bir satır var mı bakar yok. Anons etmiyorum der. Biz bu Null0 rotasını ekleyerek öncelikle BGP nin anons etmesini aksi takdirde anons etmiyor.

İkinci teknik ise aggregate yazarak. Summarize etmek. Özetleyerek arkaya geçiriyor.

3 tane router var 3üde farklı otonom sistemde R1 routerının 3 tane loopback var. 172.16.1.-2-3 diye ve her routerda ayrıca loopbackler eklenmiş. 192.168.1-2-3 networkleri eklenmiş.

Aggregate diyip network adresi yazıp sonrasında özetleyeceğiniz aralığa göre subnet maskesini yazabiliyorsunuz.

ve bunu yazınca aggregate komutunu kullanarak. Eğer özetleme yaparsanız null0 satırını BGP otomatik olarak ekliyor bizim yazmamıza gerek kalmıyor.

Bgp bir exterior gateway(EGP) protokoldür. Yani kurumlar arası network adresleri paylaşmak için geliştirilmiş protokoldür. Eskiden EGP diye bir protokol varmış. Daha sonra ismi BGP diye yeni bir protokol çıkmış. Tüm dünya ağları otonom sistemlere bölünmüş durumda. Her bilgisayar bir otonom sistemin altında. Eigrp'deki otonom sistem ile karıştırmayın. Eigrpdeki otonom sistem area mantığı gibiydi. Yani bir hiyerarşi oluşturmak için yöneticinin kafasından verdiği bir sayıydı. Örnek olarak AS 1 ve 2 diyorsun. Bu 2 otonom sistemin trafiği birbirinden izole oluyordu. Eigprdeki otonom sistem bir filtreleme yapmak, hiyerarşi oluşturmak içindi. BGP'deki AS yöneticinin kafasından atacağı bir sayısal değer değil. BGP'deki AS, aynı otoritinin kontrolü altında bulunan routerlar topluluğu demek.

ASN numarası önceden 2byte idi. 16 bit yani 65535'e kadar yani şimdi ise 4 byte'a çıkarıldı. 32 bit yani 4 milyar otonom sistem olabilir anlamına geliyor. Bu tür sayısal sistemleri IANA verir. IANA bölgelere ayırmış Regional Internet Registry (RIR) diye. Türkiyenin de bağlı olduğu RIR, RIPE.

2 ayrı ISP arasında birbirlerinin network protokollerini öğretmek için BGP denilen protokol geliştirmişler.

BGP metric denilen kavramı kullanmıyor. Path Attribute denilen kavram var onu kullanıyor.

AS-Path Attribute ==> Diğer networke gitme süresince üzerinden geçeceğim otonom sistemleri listelettiriyor. Burada AS 65700 den AS 64512'e giderken networkleri listelemiş

Bgp tüm haritayı çıkarmıyor komşu ne diyorsa, ona güveniyor ordan karşılaştırıyor en iyisini seçip ordan trafiğini yolluyor.

Bgp peer'ları birbirleriyle haberleşirken TCP kullanıyor. IGP protokolleri birbirlerinde multicast ile haberleşme oluyordu. Karşı routerı otomatik olarak keşfediyor. Karşı routerın ip adresi hakkında bilgi vermiyoruz. Tcp kullanıyorsanız unicast kullanmak zorundasınız. Zaten BGP de unicast kullanıyor. Yani komşu router ile unicast haberleşerek komşuluk kurabiliyor. Unicast haberleşebilmek için komşu routerın ip adresini bilmek lazım. Komşu routerın ip adresini bilmiyorsam BGP ile komşuluk kuramazsın. Karşılıklı 2 tarafta birbirleirnin ip adreslerini yazmazlarsa komşuluk oluşmaz. Yani BGP komşuluk kurmak istiyorsanız karşıdaki bgp routerın ip adresini ve otonom sistem numarasını bilmek zorundasın. TCP kullandığı için de paket bozulduğunda Tcp düzeltir.

Tcp port numarası olarak 179'ı kullanıyor. Tcp 179'a izin vermezseniz bgp çalışmaz.

Bgp peer router yani komşu olan eş router. Bgp de hello paketi yok. Keepalive paketi olarak geçiyor.

Bgp'de 2 tane tablo var bunlardan ilki komşuluk tablosu (neighbour) diğeri ise bgp tablosu (asıl kararın verildiği routing tablosuna işleyeceğinin kim olacağına karar vereceği bgp tablosu).

2 peerdan öğrendiğinde aralarında en iyi olan bgp tablosu paylaşılıyor. Öğrenirken sadece network bilgisini öğrenmiyor bir de attribute'larını da öğreniyor.

Enterprise'lar şu için kullanılır çok kritik bir hizmet veriyordur. Tek bir ISP'ye güvenmek istemez yedek bir hat isteyebilir. Amacın sadece internet hizmet almaksa yine BGP ile işin yok. BGP ancak internete hizmet veriyorsa anlamlıdır. Bütün hizmetlerimiz Cloud'da duruyor BGP ile işin yok. Multi ISP çıkışın var ve hizmet veriyorsan büyük bir datacenter'ın varsa o zaman BGP'ye ihtiyacın olur.

Bgp komşuluğu kurmak için illa direkt olarak bağlı olmak zorunda değilsin.

R2 ile R3 burada komşuluk kuruyor ama direkt olarak bağlı değiller.

ISP'ler Mpls cloud'unda da bgp konuşuyorlar. IBGP eğer bir enterprise iseniz kullanmazsınız genelde ISP'ler kullanıyorlar. Enterprise içerisinde genelde ospf gibi protokoller kullanılır.

IBgp de bir problemimiz var loop riski var. Çünkü Bgp loop protection'ı AS Path'e bakara sağlıyordu. Aynı AS Path'e tekrar gelirse, bu loop'a sebep olur ve tekrar öğrenmem diyip çöpe atıyordu. Ama Interior Bgp'de böyle bir koruma mekanizması yok. External'dan öğrendiğini internal'e öğretiyor. Ama internal içindeki öğrenmiş olan external'a öğretemiyor. Full mesh denilen şey olacak herkes birbirleriyle komşu olacaklar ve büyük bir ağın varsa, çorba olur. n.(n-1) /2 tane komşuluk kurulu ve bu 10 routerda 45 komşuluk demektir.

Bir router sadece bir otonom sisteme üye olabilir.

Border router, 2 farklı areayıyı birleştiriyor. Yani o router 2 ayrı areaya üye. Ya da eigrp de otonom sistemde aynı şekilde. 2 ayrı otonom sisteme üye ve arasında geçiş yapan routerdır. Bgp'de öyle değil. Bir router hem türk telekoma hem de superonline'a üye olamaz öyle bir router yok. Bgp de border router benim otonom sistemim bitiyor diğer otonom sistem başlıyor. Bir routera 2 tane otonom sistem tanıtamazsın global bgp için.

Aynı ospf ve eigpr gibi bir router-id'ye ihtiyacı var. Router id de diğeleri gibi aynı şekilde seçiliyor. Ben burada herhangi bir ip adresi vermediğim için bgp'yi başlayamıyor.

Biz ne yapalım herhangi bir loopback oluşturalım.


R1(config-router)#int lo0
R1(config-if)#ip add
*Aug 20 09:17:56.119: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#ip add 10.0.0.1 255.255.255.

10 ve 20 bgp'leri başlatalım. Gördüğünüz gibi 20 bgp'si başlamadı. Bir router tek bir
AS'e sahip olabilir.

R1(config-if)#router bgp 10
R1(config-router)#exit
R1(config)#router bgp 20
BGP is already running; AS is 10
R1(config)#
Bgp de önce yapacağın işlem neighbour'un ip adresini belirtmek .
Neighbor ip adresini belirtmezsen tcp connectionu kurulmaz.
Tcp connection oluşmazsa bgp yok demek.

 
  
   

R1(config)#int fa0/0
R1(config-if)#ip add 20.0.0.1 255.255.255.0
R1(config-if)#no shutdown
R2(config)#int fa0/0
R2(config-if)#ip add 20.0.0.2 255.255.255.0
R2(config-if)#no shut


ip adresini öğrendikten sonra bir de otonom sistem numarasını bilmemiz gerekiyor.

R1(config-router)#neighbor ?
  A.B.C.D     Neighbor address
  WORD        Neighbor tag
  X:X:X:X::X  Neighbor IPv6 address

R1(config-router)#neighbor 20.0.0.2 remote-as 20

Daha sonra tam tersi yönde R2 içinde aynı şeyleri yapıyoruz.
R2(config)#router bgp 20
R2(config-router)#neighbor 20.0.0.1 remote-as 10
R2(config-router)#
*Aug 20 09:58:51.779: %BGP-5-ADJCHANGE: neighbor 20.0.0.1 Up

sh ip bgp komutu ile bgp tablosunu görürüz. Şuan komşudan bir şey öğrenmedik o yüzden
boş.  Yani ospf gibi değil. sh ip ospf yazdığımızda ospf'in detaylarını görebiliyorduk
R1#sh ip bgp
R1#

Bu komut ise komşuları gösteriyor. sh ip ospf neighbour gibi. 

R1#sh bgp summary
BGP router identifier 10.0.0.1, local AS number 10
BGP table version is 1, main routing table version 1

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
20.0.0.2        4           20       6       6        1    0    0 00:02:42        0
R1#

R1 üzerinde lo0 interfacesinde 10 network'ü vardı. Bunu öğretelim.
network komutu daha sonrasında ise öğretmek istediğin network.
R1#sh ip route
     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.0.0.0/24 is directly connected, Loopback0
L        10.0.0.1/32 is directly connected, Loopback0
      20.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        20.0.0.0/24 is directly connected, FastEthernet0/0
L        20.0.0.1/32 is directly connected, FastEthernet0/0



R1(config)#router bgp 10
R1(config-router)#network 10.0.0.0 ?
  backdoor   Specify a BGP backdoor route
  mask       Network mask
  route-map  Route-map to modify the attributes
  <cr>

R1(config-router)#network 10.0.0.0 mask 255.255.255.0 ?
  backdoor   Specify a BGP backdoor route
  route-map  Route-map to modify the attributes
  <cr>

R1(config-router)#network 10.0.0.0 mask 255.255.255.0


R1#sh run | sec bg
router bgp 10
 bgp log-neighbor-changes   // Bu komutu otomatik olarak getiriyor. Bgp komşuluğu ile
//ilgili bir sıkıntı çıkarsa log atsın diye.
 network 10.0.0.0
 network 10.0.0.0 mask 255.255.255.0
 neighbor 20.0.0.2 remote-as 20
R1#



R2 de 10 networkü öğretilmiş mi diye bakalım.

// sh ip bgp ile sh bgp komutları aynı şeyler. 

R2#sh ip bgp
BGP table version is 2, local router ID is 20.0.0.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.0.0.0/24      20.0.0.1                 0             0 10 i
R2#sh bgp
BGP table version is 2, local router ID is 20.0.0.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.0.0.0/24      20.0.0.1                 0             0 10 i
R2#

R2#sh ip route | begin Gateway
Gateway of last resort is not set

      10.0.0.0/24 is subnetted, 1 subnets
B        10.0.0.0 [20/0] via 20.0.0.1, 00:03:06
      20.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        20.0.0.0/24 is directly connected, FastEthernet0/0
L        20.0.0.2/32 is directly connected, FastEthernet0/0
R2#



Eigpr sayesinde birbirlerinin ip adreslerini öğrenmişler yoksa komşuluk kuramazlardı.R1 ile R2 arasında.

State/PfxRcd ==>Kaç tane network öğrendiği demektir.

Burada, 209.165.201.1, bu routerın kendisine ait ip adresi. Local AS number, kendisine ait otonom sistem numarası. Bgp table version, her öğrendiği network bilgileri ile bir bgp tablosu oluşturuyor. Tabloda her değişiklik olduğu anda versiyon numarası değiştiriyor. Buradan da değişiklik olup olmadığını takip ediyor.

Buradaki neighbor, komşunun ip adresi. Komşunun ip adresini otomatik keşif diye bir şey yok. Tümü ile manuel.

Şuan bgp version 4 kullanıyorlar. Biraz revize ettiler, geliştirdiler Multiprotocol bgp de deniliyor.

AS number, komşunun otonom sistem numarası. MsgRcvd ==>Senden kaç paket gitti. MgsSent ==>Sana kaç paket geldi. TblVer ==>Sen tablonu sürekli güncelliyorsun. Güncelledikten sonra bu güncel bilgileri ile beraber komşuna bunu çakabilirsin. Tüm tabloyu anons etmiyorsun, değişiklikleri ediyorsun. Komşun ile en güncel bilgileri paylaştın mı onu anlayabiliyorsun.

Inq,outq ==>Kuyrukta paket olup olmamasını gösteriyor.

up/down ==>up veya down olduğu süreyi gösteriyor. Kopmalar olup olmadığını buradan anlayabiliriz.

Komşu ile ilgili daha detay almak isterseniz bu komutu çalıştırabilirsiniz.

Komşuluklar kuruldu ve artık network adreslerini belirtebiliriz.

sh ip bgp ==> Komşuların bize öğrettiği prefix bilgileri yani network ve subnet maskesi bilgilerine ulaşacağınız tablo var. Ön taraftaki ifadeler status code'da anlantırılıyor. Son kısımda Path isfadesi ise Origin code'da anlatılıyor. * ==> valid anlamına geliyor. > ==> büyük ise best anlamına geliyor.

192.168.33.0 networkü zaten R3'ün kendi üzerindeki bir network. Bunu Bgp ile öğretiyor demekki. Aynı ospf gibi, ospf'nin database'sinde de kendi networkleri database de yer alıyordu. Bgp de de yer alıyor. Bgp için öğreteceği networkleri bu tabloya yazıyorki, bu tablo bilgisini komşuya paslayabilsin. Hatta şunu da anlayabilirsiniz buradan next hop 0.0.0.0 yazıyorsa, bu networkün origini yani kaynağı benim.

Yani bu network benim üzerimden ulaşılabilir. Ben bunun millete öğreteceğim. BGP'ye ilk sokan router benim demek. * valid ise şu demek bu rota, routing tablosuna işlenebilir.

Şöyle olunca yıldız çıkmıyor. Routing tablosuna ben bunu işleyeceğim. Ama benden daha iyi bir rota var. Yani AD değeri çok daha iyi öğretmiş. Statk rotayı çakmışlar beni ezmişler. Mesala o zaman burada R yazıyor. Yani RIB failure ( Routing tablosuna yazamıyorum demek).

Eğer i harfi gözükmüyorsa internal bgp olmadığı anlaşılıyor. (aynı otonom sistemde başka router öğretirse internal).

Hangi network öğrenmişim. Buna ulaşmak için Bir sonraki router hangi ip adresine yollluyorum (0.0.0.0) Next hop ip adresi. 0.0.0.0 ise benim zaten demek. Başkasına yollamıyorum zaten demek. Metric, locprf, weight,path kısımları ==>attibute değerleri. Attribute'ler, bgp 2 ayrı alternatiften network öğrenirse en iyiyi seçmek için bir sürü parametreye bakıyor.

Weight değeri en önce bakılan attribute değeridir. Weight değeri daha büyükse sorgu sual yok weight ne diyorsa o yapılır. Diğer attributelerin hiçbir değeri kalmıyor. Bu şu demek kendisi öğretiyorsa default weight değeri milletin 0'dır.

i harfi ==>IGP ,Redistribution yapılmadan network komutu ile gerçek BGP routerından gelmiştir anlamına geliyor. Yani BGP 'nin içinden gelmiştir anlamına geliyor. e ==>migrationdan kalma. Günümüzde bunu göremezsiniz. ? ==>Redistributiondan öğrendim anlamına geliyor.

IBgp'de external öğrendiğini internal olarak öğretebiliyorsun. Ama bir router daha olsaydı AS 6500'da o zaman R3 gidip buna öğretemezdi.

Yukardaki tabloda next hop adresi olarak 209.165.202.129 var. Yani R1 nin interfacesi. Ama R3'ün routing tablosunda böyle bir network yok. Resimde gördüğünüz gibi. R1 routerı R2'ye öğretti. R2 routerı da R3'e next hop adresini hiç değişitirmeden öğretti. Yani aynen bıraktı. Buradaki kural şu external bgp de öğrendiğin zaman, adamın söylediği ip adresi kaynak olarak alıyorsun yani .129 oraya gitmek istiyorum diyorsun ve doğru olarak alıyorsun. Hiç sorun yok. Ama aynısını internal'a öğretmek istediğin anda dışarda öğretilen orijinal ip adresini değiştirmeyip aynen taşıyorum.

R2 routerı external öğrendiği networkü next hop ip adresini hiç değiştirmeden R3'e aktarıyordu. R2'ye şunu diyebiliyoruz. Sen böyle bir şey yapma internal anonsunda next hop self yani kendini göster. External origini sil. Kendi ip adresini oraya yerleştir diyebiliyoruz.

Burada demişki bu komşuna kendini origin olarak göster

Next hop adresi kendi ip adresi olmuş(172.16.23.2)

Öncelikle komşuluk kurabilmesi için bir statik routing yazmış.

Birbirlerine networkleri öğretmezseniz. Komşuluk zaten kuramazlar. Ben burada ne belirtiysem bgp paketi kaynak olarak bununla gelmelidir. neighbor 192.168.3.3 Çünkü tcp oturumunda unicast olarak haberleşecekler. Bu ip ile haberleşecekler. Bu ip'den talepte bulununca bu ipden cevap gelmelidir. İnterfacenin ip adresi ile komşuluk kurdurmayacaksanız. Başka bir interface ile komşuluk kurdurtacaksanız o zaman. Bu komutları yazmanız gerekiyor.

Bu komşu ile (192.168.3.3) komşuluk kurmak için kaynak ip'yi loopback 0 interfacemin ip adresini kullan. Yani 192.168.2.2'yi kullan. Aynı şeyi R3 de yapıyor. 192.168.2.2 ile komşuluk kurmak için 192.168.3.3'ü kullan.

External bgp de time to live (TTL) değeri 1'dir. Çünkü external bgp'de kolay kolay araya bir router girmez. External bgp de herkes interface'ye verdiği ip adres ile komşuluk kurar. Loopback ile çok olmaz. Araya tanımadığın biri 3.katmanda giremez.

Resilince özelliği için interfaceyi başka bir interfaceye taşırsan paket TTL değeri 1den 0'a geçer ve interfaceye ulaşamaz. Bu durumda TTL değerini 1'in üzerinde olduğunu bir multihop söz konusu olduğunu belirtmek zorundasın.

192.168.2.2 ile multihop yapıyorum. Hop sayısını da elle belirtebiliyoruz. Belitmezsek default değerini ele alıyor. Bunu yapmazsak resilience çalışmaz.

Dinamik routing protokollerin amacı nedir? En iyi yolu bulmak. Path attribute değerlerini kıyaslayarak gideceği yeri karar veriyor. Loop olmasını engellemek için AS Path attribute bakıp, Bu bana geri gelmiş ben bunu almayım diyebiliyor. Bir sürü attribute değerleri var içerisinde taşıdığı.

Bu attributelere bakıp nerden gideceğine karar vereceğiz. Bu attibutelerin bazıları bu update paketinin içerisinde yer almak zorunda. Update mesajı ne idi ? Yeni eklenen bir network mesajıdır.

Bunlara well know mandatory deniliyor ve her update mesajının içerisinde yer alması gerekiyor. Well know attribute değeri yoksa komşuluğu atıyor. Örnek olarak AS path attribute mandatory'dir. Well know'dan kastettiği, her router bu şeyi öğrenmek zorunda. Well known discretionary ==> Her bgp routerı, o attribute'ı bilmek zorunda ama her update paketinin içerisinde yer almak zorunda değil. Ama yer alıyorsa, bunu alıp anlayıp ona göre davranmak zorund olan attributelar.

AFI'dan kastettiği ipv4 mü ipv6 mı ?Normalde standart bgp, unicast ipv4 networkleri öğretmek için yapılmış. Ama demişlerki MP-BGP'de hem unicast hem de multicast öğretilebilir olsun demişler. O yüzden bir de şunu eklemişler SAFI, SAFI ise unicast mi multicast mi bilgisi. Normal şartlarda bir update mesajının içerisinde bir NLRI(network) bilgisi, NLRI bilgisnin altında path attribute'lar olur. Multiprotocol bgp olduğu anda NLRI bilgisi ve buna bağlı Path attribute değerleri olur.

Bgp de bir hello paketi gibi tanışmayı sağlayacak bir paket yok. Hello paketi komşunun keşfini de sağlıyordu. Aynı zamanda ben hayattayımda bilgisini veriyordu. Çünkü komşuluk süresince otomatik discover diye bir şey yok. Sen komşunun ip adresini belirtmek zorundasın.

Hold time değeri belirli sıklıkta bir keepalive yolluyorlar ve hold time süresi kadar. Keepalive gelmeze komşuluğun koptuğuna karar veriyorlar. Yani bir keepalive timer'ı var bir de hold time timer'ı var. Hold time süresi, Keepalive mesajı süresinin 3 katı olmak zorunda. Karşılıklı 2 router farklı hold time sürelerine sahipse, küçük olanı kullanıyorlar. Karşıklı 2 router bu open mesajında anlaşıyorlar ve küçük olanı tercih ediyorlar.

Bgp identifier, aslında router id demek.

Idle ==>Henüz daha hiçbir komşuluk kurulmamış demek. Boş beklemede bgp'yi oturtmaya çalışıyoruz modunda.

Büyük IP adresli router sessionu başlatan cihaz. Büyük ip adresli olan küçük ip adresli olana doğru Tcp 179 ile session başlatıyor.

10.0.0.2 büyük ip adresli router oturumu başlatmış. Kaynak port olarak rastlansal bir port ve hedef port olarak 179'a paket gönderiyor.

Burası external bgp, external bgp de eğer session oturmazsa tcp'yi yolladı. 3 way handshake ilk paketini ikinci paket gelmedi. Eğer gelmezse 30 sn bekliyor. Yani external bgp de kaçırttın 30 sn bekliyorsun orada o yüzden bgp de sabırlı olmanız gerekiyor. Bakın burada 30 sn tekrar beklemiş.

3 way handshake oturduktan sonra bgp sessionu başlayacak. Open mesajı ile başlıyor. Open mesajı yolluyor. Open mesajı içerisinde kendi ile ilgili detaylı bilgiler yer alıyor. Kendi ile ilgili detaylı bilgiye karşı taraf da mesaj yolluyor. Her şey yolundaysa onay için birbirlerine keepalive mesajı yolluyorlar.

OpenSent, birbirleri hakkında bilgileri paylaşıyorlar ve bunların eşleşmesi gerekiyor. OpenSent 'de sıkıntı yaşanırsa bunu Active state'e atıyor ve bir süre daha open mesajının düzgün gelip gelmeme sürecini kontrol etmek adına eğer gelirse, tekrar Connect state'e dönüyor. Herhangi bir yerde hatalı bir yaklaşım yakaladığı anda tekrar active state'e atıyor. Yani şunu yapmıyor 3 way handshake resetlendirmeden active state'e geçiyorlar. Ancak Establish olduysa her şey oturduysa ve bir sorun yakalarsa her şeyi uçuruyor. Yani 3 way handshake'i de resetliyor.

Eğer open mesaj geldi. OpenSent ile open paketleri geldi. Sıkıntı yok deniyorsa openconfirm state oluyor. OpenConfirm state'de birbirlerine keepalive yolluyorlar. Eğer keepalive yolluyorlarsa hayat güzel establish state'e geçiyorlar. Eğer notification geliyorsa notification demek üzgünüm kardeşim kendine iyi bak state'i oluyor . Bu aşamadan sonra active'e bile düşmez. Idle'a geri uçuruyor.

Bgp'nin kendisine ait bir tablosu var. Buna Loc-RIB' de deniliyor.

Adj-RIB-in ==>Dışardan gelen policyler uygulanmamış hali. Local RIB ==>Policy uygulanmış hali. Adj-RIB-out ==>Sende networkler var çıkarken de ayrı politikalar uygulayabiliyorsun. Out olarak çıkarken uygulayabiliyorsun.

Route-map ile manipule ettirebiliyorsun.

Dinamik routing protokolleri ile öğrendikleri networkleri bgp de kendi networkü gibi, directed connected gibi yazabiliyoruz. Routing tablosunda olsun.

10.12.1.0/24'ün altında network yazmıyor bu şu demek. 10.12.1.0'ı iki ayrı kaynaktan öğrenmiş demek. Bir tanesi kendisi öğretmiş bgp'ye(0.0.0.0). Eğer bir adres varsa (1012.1.2) eğer yanındaki weight değeri de 0 ise başka routerdan öğrenmiştir.

192.168.3.3'ü router eigrp ile öğrenmiş. Bunu bgp'ye soktu. routing tablosundaki next hop adresi kullanıyor.(10.13.1.3) ikincisi olarak metric olarak eigrp'nin routing tablosunda öğrettiği metriği koyuyor. Sondaki i harfi (BGP'den öğrendi).

Burada sadece ospf'i redistribution ile öğretiyordu. ? redistribution ile öğreniyor demek. Yani kaynağını bilmiyorum anlamına geliyor.

Weight değeri 32768 yazıyorsa kendi üzerinde oluyor demektir. Next hop 0.0.0.0 ise kesin connected network. Ama alternatif bir yerden öğrenmişse next hop'a başka bir şey yazıyor. (10.13.1.3) gibi. Defaultta cisco kendisnin dahil ettiklerini 32768 koyuyor. Bu weight değeri şunu sağlıyor. Weight değeri ne kadar büyükse ezici önceliklidir. Weight değeri BGP'nin karar verme mekanizmasında bir numaralı baktığı şeydir. Weight büyükse diğerinin hiçbir önemi yok.

Kısaca BGP'de illa directed connected bir network olmasına gerek yok. Router bir şekilde o networkü öğrendiyse birebir match edecek şekilde network komutu ile yazarsa, bgp sanki kendi malıymış gibi bunu milllete öğretir.

Filtre yazarken her komşuya ayrı ayrı filtre yazmak gerekiyor. Filtre uyguladıktan sonra bazı şeylerin değiştirilerek gitmesini istiyoruz.

Eğer 10.45.1.0'a gitmek istiyorsan, 10.34.1.4 e paketi yolla ve statik olarak da bir rota eklemiş. 10.34.1.0 a gitmek istiyorsan paketi 10.23.1.3 e gönder.

IBgp yukardaki bir case olduğu zaman çatlar. Baş edilebilir bir şey olmaz. Her biri birbiriyle komşu olmak zorunda. Ospfde bu duruma benzer bir durum vardı. Ospf de çözüm ise bir vekil seçiliyordu. Bu vekil routera da DR router deniliyordu. Herkes DR'a anons yapıyordu. DR ise kalan herkese anons yapıyordu. Aynı yaklaşımı IBGPde bunu uygulamışlar. Bgpde ise buna route reflektor adı verilmiş.

Loopback tercih ediyoruz çünkü her zaman up ve sıkıntısız.

Interior BGP'de ilk olarak mutlak her router birbirleri arsasında komşuluk kuracaklar. Full mesh olmak zorundalar. İkincisi genelde yedek hat çok fazla olduğu için tercih edilen şey, resilience özelliği karşılıklı komşuluklar yaparak loopback'e taşımak.

Exterior bgp de genelde resilience yapılmaz. Directed connected ip'lerde komşuluk kurulur. Çünkü 3-5 tane bağlantısı yoktur bunların. Tek bir bağlantı ile bu işlem çözülür. Bunlar ile ilgili yedeklilik yapılacaksa Layer 2 de yedeklilik yapılır. Bu hat kopunca diğer layer 2 den gidilir. Layer 3 te yedeklilik yapılmaz yani ip adresleri değişmez. O yüzden directed connected ip adresleri sabittir. Onunla komşuluk kurulur.

External bgp update'inde next hop revize edilir. 192.168.1.1/32 Next hop (0.0.0.0) adresi R2 üzerinde 10.12.1.1 olarak revize edilmiş.

Ancak Interior Bgp anonslarında next hop bilgisi değiştirilmez. Aynen bırakılır. R2 de next hop adresi 10.12.1.1 ve R3 üzerinde next hop adresi aynı 10.12.1.1 olarak bırakılmış.

Buradan şunu anlıyoruz Interior Bgp anonslarında next hop bilgisi değiştirilmez aynı bırakılır. Ancak Interior bgpde kaynak 0.0.0.0 ise kendisi ise sadece değiştirilir. Onun dışında next hop bilgisi değiştirilmeden öğretilir. Peki bu durumda 10.12.1.1 e nereden gittiğini bilmiyorsa 192.168.1.1'e ulaşamaz. Belliki bilmiyor çünkü büyüktür (>) işaretini koymamış.

Interior olduğu için next hop adresi aynı olur. 10.12.1.1

IBgpde kural şu idi. Bir ibgp peer'ı external öğrendiği bir networkü bir sonraki routera öğretir. ancak O bir sonraki alıp da bunu tekrar başka bir komşuya öğretemiyordu. Bunun için yapılması gereken, mutlaka herkesin birbiri ile peering kurması gerekiyordu. Sebebi ise şu, bgp'nin loop engelleme mekanizması AS-PATH'e güveniyordu. Bu networke ulaşana kadar hangi otonom sistemlerden geçeceğim kayıdına güveniyordu. Aynı otonom sistem zaten tekerrür ederse o rotayı router kabul etmeyip çöpe atıyordu loop olmasın diye ama internal bgp de hepsi aynı otonom sisteme sahip olması loop olma riski. Çözüm ise herkes birbiri ile peering kurması.

Route reflektor konfigurasyonunda, sana client olacak routerların ip adresinin yanına route-reflector-client komutu yazıyoruz. R1 mesala burada client hiçbir şey yapmıyorsun. Herkesi sadece RR ile komşuluk kurduruyorsun.

Aynı otonom sistem içerisinde birden fazla RR olmasının sebebi yedeklilik olsun diye.Clientlara sadece RR ile komşuluk kurduruyorsun. RR ölürse hiçbir komşusu kalmaz.

Attribute şöyle kafamızda canlandıracağız bgp anonsu içerisinde ekstra öğrettiği bilgiler.

ORIGINATORID ==>Router reflektora anons yapan routerın, router idsi. Kendisine kendi id'si ile bir anons gelirse, bu bana ait diyip çöpe atıyor. CLUSTER_LIST==>Router reflektor kendi router idsini. Kendi yaptığı anonsun içine ekliyor. Her araya route reflektor eklendiği sürece as-path gibi peş peşe bunlar yazılıyor. Kendi id'sini cluster liste görürse o route reflektor paketi çöpe atıyor. İkisinin de sebebi loop olmasın.

IBGP'nin bu full mesh yapma problemine çözümlerden bir tanesi de route reflektor. Çift route reflektor ve yedeklilik de olur mis gibi çalışır.Confederation işi ise çok büyüksün bu sefer bir sürü route reflektor olacak, yüzlerce router tek bir route reflektora abanıyor. Reflektor routerında işi zorlaşıyor. Eğer çok büyüksen konfederation oluşturursun diyor.

As 200'ü ayrıca bir daha otonom sistemlere bölüyor.

Bu böldüğümüz otonom sistemleri external bgp olarak konşuyor ve eğer external bgp olarak konuşurlarsa birbirlerine anons yapabiliyorlar. Full mesh ihtiyacı olmuyor.

Med attribute , karar verme mekanizmasında kullanılan attribute'lardan bir tanesidir ve optional non-transitive'dir.

Kısaca burada bahsettiği, bazı attribute'lar otonom sistemi dışarısına anons edilmez. Eğer confederation kullanıyorsan tüm confederation içindeki routerlara bu anons yine gidiyor. Confederation dışına yani external bir anons yapılmıyor. Şeklinde çalışıyor. Next hop adresi yine değiştirilmiyor.

Next hop adres,değiştirilmiyor sanki internal bgp gibi davranıyor.

Parantez içinde gösterilen As-Confed-Sequence, Konfederation içindeki otonom sistem path. Parantez içinde gösterilir. Anons başka bir AS'e gittiğini gösterir. Konfederation içinde loop'u engellemek için tutulan ekstra otonom sistem path'idir.

R1 gitti, R2 ye öğretti. R2 external bgp olarak geldiği için next hop olarak R1 in routerını öğretti. O gidip R4'e öğretiyor ama halen aynı ip den ulaşırım diyor. (10.67.1.7).

R1 den gelen next hop ip aynı konferedasyonun farklı AS'inde bile olsa, değiştirilmiyor. R1 ne öğrettiyse aynen taşınıyor.

Multiprotocol bgp mpls de de kullanılıyor.

redistribute connected ==> redistribute statik ne idi ? bir routerda eğer statik routing ile öğrettiğm bir network varsa, onu al bgp ile öğret. Redistribute connected ise bir router connected olarak öğrendiği tüm networkleri al ve bgp ile öğret anlamına geliyor. Mecbur kalmadığınız sürece connected bir şeyi redistribution ile öğretmeyin.

ipv4 bgp tablosunda next hop 0.0.0.0 yazıyorsa kendisinin kaynak olarak gösterdiği bir network bilgisi oluyor. Yani o network bilgisi bizzat o router tarafından bgp'ye dahil edilmiş anlamına geliyor. Versiyon 6 da ise hepsinin 0 olması için :: kullanılıyordu aynı şekilde.

ipv6 over ipv4 ==>burada kastettiği ipv4 haberleşmesi ile ipv6 öğretebilirsin. Yani komşuluğu ipv4 ile kuracaksın benim peerim ip adresi 10.0.0.1 diyeceksin. diğeri de 10.0.0.2 diyecek bütün haberleşme tcp'nin ipv4 ile yapılacak ama içerisinden ipv6 öğretebilirsin.

s ==surpress

Last updated