Advanced BGP

Bgp'de komut ile bu networkleri özetle diyebiliyoruz. Buna aggragete-address deniliyor. İlla böyle yapmak zorunda değiliz. Network komutu ile öğrettiğimiz networkler illa bağlı olmak zorunda değiller. Yani 192.168.3.3'ü başka bir IGP protokolü ile öğrenmiş olabilirsin directly connected olmak zorunda değil.

Biz söyle bir şey yapabiliriz örnek olarak 10.13.0.0/16 bendedir diye öğreteceğiz.

veya bunu static rota ile de yapabiliyoruz. ip route 10.13.0.0 255.255.255.0 null0

veya 192.168.0.0 255.255.0.0 null0 şeklinde static rota yazabiliriz. R1 routerın bgp yazarken ise surpress ederek network 192.168.0.0 mask 255.255.0.0 şeklinde özet bir şekilde yazabiliriz networt tablosunda öyle bir network varsa ve subnet maskesi de eşleşiyorsa anons eder.

Soldaki router R2 deÄŸil R1

no bgp default ipv4 unicast ile (adress family'i mecbur kılmış defaultu kapatmış çünkü).

R1 routerı 172.16 yı özetliyor. R2 de tüm 192.168 leri özetliyor yani loopback adresleri.

Sadece aggregate-address diyip network ve subnet mask yazarsanız, surpress etmiyor. Eğer surpress etseniz istiyorsanız. Summary-only yazmak gerekiyor. Yani artık 172.16'lı gelmiş ve 172.16'nın yanı sıra diğer networkleri gözükmüyor. R3 üzerindeki tabloya bakarsanız. 172.16.1.0 -2.0 -3.0 gibi ve R2 de özetleme yaparken summary-only kullanmış. 192.168.2. networkü yok tabloda oradan anladık. 1 netwokrü de kayıp. 192.168.1.0 networkü R1den 192.168.2.0 networkü ise R2 den geliyordu. Ama ne yapmış 192.168.0.0'ı öğrenmiş. Onun da kaynağını 65200 olarak öğrenmiş.Çünkü özetlemeyi R2 routerı yapıyordu. Ancak kendi üzerindeki 192.168.3.3'ü öğreniyor. Çünkü kendi üzerinde.

Kısaca Bgp'de 2 şekilde özetleme yapılabilir. İlk olarak static routing ile bir Null0 rotası yazarsınız ve bunu network komutu ile öğretirsiniz. En temizi ve en az karışığıdır. Çünkü ekstra bir automic aggregate biti işaretlenmez (bu özetlenmiştir biti). Yanına ya da aggragate attribute yani özetleyen routerın idsi budur diye ekstra bir işaret konmaz. Sadece bgp içindeymiş gibi anons edilir. Çoğu kişi bunu tercih ediyor. Ama bazı Case'lerde aggregate-address komutunu kullanmak gerekebilir.

Route map, hem filtreleme de hem de manipulasyon işleminde kullanılır.

Manipulasyon şu demek öğretiyorsun ama örnek olarak sana öğretilen attribute değerlerine göre değiştirme yapma demek. Bazı değerleri değiştirerek anons etmeye deniliyor.

Route map ile PBR yani policy based route yapabiliyorsun.

Distribution list , access list ile yazılıyor. Standart ya da extended acl yazabilliyoruz.Görüntü acl list gibi gözüküyor. ama acl de olduğu gibi kaynak ve hedef ip gibi bir şey yok burada. Farklı çalışıyor. Buradaki permit şu demek eşleş demek. Buna eşleş ,ben bu eşleştiklerine bir şeyler yapacağım. Buna eşleşmişse çöpe at diyebilirim. Burada permit'i görünce sanki ona izin veriyormuş gibi geliyor ama hayır. İzin vermek değil. ve daha sonrasında neighbour'a uyguluyoruz. Burada IN de uygulamış yani kendi bgp tablosuna sokarken.

permit ip 192.168.0.0 0.0.255.255 host 255.255.255.255 ==>Buradaki tanım şu demek, B sınıfı aralığında olup da subnet maskesi /32 ise izin ver demek .Exemple 12-17 de geçiyor zaten. Subnet maskesi sadecec /32'leri bgp tablosuna almış. Altta implicit deny var bunun altındaki satırlar ölür.

permit ip 100.64.0.0 0.0.255.0 host 255.255.255.128 ==>Burada şunu yapmış. Wildcard maskesi daha esnek subnet maskesinde o yok. Subnet maskesinde networkün bittiği yerde host başlar yani 255.32.255.0 diye bir şey göremezsiniz. Ama wildcard şunu diyor Eğer 0 bitliyse bunlar eşleşecek aynı olacak diyor. Eğer 1'li bit ise bunlar önemli değil buraya bakma sonra yine 0'lı bitler var. Örneğe göre 100.64.0.0 0.0.255.0 ==> Burada 100 ve 64 eşleşecek demek. 255 geldi yani hepsi 1 bit burası önemli değil. yani 3.oktet ne olursa olsun demiş. Sonra yine 0 geldi burası da eşleşecek diyor. 255.255.255.128 burada 2 üzeri 1 den 2 bit çalmış. 256yı 2 böldük 128 oldu. yani 100.64.1.0 -100.64.1.127 birinci subnet oluyor. İkinci subnet ise 100.64.1.128-100.64.1.255 oluyor.

0.0.255.0 ==>Yani son kısım 0 olacak diyor. son kısmı .128'leri bile kabul etme demiş. Routing tablosuna baktığımızda 100.64.2.0 ve 100.64.3.0'ları kabul etmiş.

Prefix list de subnet maskesi tarifini vs daha esnek hale getirebiliyoruz.

Path, hedefe ulaşana kadar üzerinde geçtiği tüm otonom sistem numaralarıdır.

Regular expression aynı zamanda bgp tablosunun çıktıısnı alırken de kullanıyoruz. Yani birinci olarak dünyadan bir şey öğrenirken ya da öğretirken filtrelemede kullanabileceğin gibi. Bgp tablosu çok büyük olduğu için ayıklama yapmak istersek.

_100 =>100 ile eşleşen AS leri göster.

^300 ==>As numarası 300 ile başlayan _40$ ==> As numarası 40 ile biten

Ulaknet ==>Türkiyede üniversitelerin ISPsi.

Filterelemi as-path access-list ile yapıyor. Prefix-list nasıl yazmıştık onun gibi.

Türk telekom otonom sistemi 9121'miş. deny _9121$ yazarsak 9121 ile bitenleri deny et diyebiliriz. Türk telekomun anons ettiği anonsları filterelersin. ^$ ==> As path olmayan anlamına geliyor. Yani otonom sistem path'i boş. Hiçbir otonom sistem numarası olmayan anlamına geliyor. Otonom sistem path'i boş olabilir mi? As path. Mutlaka bir otonom sistemden geçmiyor mu? sen kendi as'indeysen henüz bir as 'den geçmek diye bir şey yok. Üzerinden geçiyorsa ekleniyor. Ama kendi AS'indeysen AS path boştur. AS path boş ise yolla. neighbour 10.12.1.1 filter-list 1 out ==>Çıkışta buna göre filtrele. Otonom sistemi boşsa

advertised_routes ==>Benim anons ettiklerim. Ben filtereleme yaptım Example 12-38 de filtreleme yaptıktan sonra neler öğretildiğini göstermesi lazım. As path boş olan satırların öğretildiği gösteriliyor.

Neighbour diyip neigbour'ın ip adresi sonrasında ise filtreleme uygulanıyor. Prefix list, distribute list de aynı şekilde uygulanıyor. in ve out yönünde uygulanıyor.

route map sefa diye bir isim verdim running configurationdan baktığımda permit 10 olarak otomatik olarak ekledi. Biz bir şey tanıtmazsak route map'i permit olarak yani buradaki eşleşen şeylere izin verilecek. Öğrenilecek anlamında ve bir de sıra numarası ekliyor. İkinci bir route map satırı eklemek istiyorsan, route map'de şunu yapabiliyorsun.bunları eşleşenleri blokla, bunları eşleşenleri manipule et. Local preference değiştir. AS-path'inde şöyle manipulasyon yap gibi birden fazla route map satırı oluşturabilirsin. Route map 10,20,30,40 gibi ikinci bir route map statement ekleyecekseniz sıra numarasını eklemeniz gerekiyor.

R1(config)#route-map sefa
R1(config-route-map)#^Z
R1#sh run | sec route
route-map sefa permit 10
R1#

R1(config)#route-map sefa
R1(config-route-map)#set w
R1(config-route-map)#set weight 1000
R1(config-route-map)#^Z
R1#sh run
*Aug 24 15:32:27.135: %SYS-5-CONFIG_I: Configured from console by console
R1#sh run | sec route
route-map sefa permit 10
 set weight 1000
R1#

Gördüğünüz gibi ilkinin altına ekliyor. Sen aksi bir şey demezsen.



R1(config)#route-map sefa
R1(config-route-map)#set local-preference 1000
R1#sh run | sec route
route-map sefa permit 10
 set local-preference 1000
 set weight 1000
R1#


Eğer sen yeni bir route map statement açmak istiyorsanız yapmanız gereken şu şekilde

R1(config)#route-map sefa permit 20
R1(config-route-map)#set metric 1000

R1#sh run | sec route
route-map sefa permit 10
 set local-preference 1000
 set weight 1000
route-map sefa permit 20
 set metric 1000
R1#

Route map altında match kuralları ve set kuralları var. 

Eğer mathc kurallarına hiçbir şey yazmazsanız doğrudan set yazarsanız ne olursa olsun
eşleşiyor anlamına geliyor.

Eğer match yazıp hiç set yazmazsanız bu eşleşenlere hiçbir değişiklik yapma anlamına 
geliyor.




Görüldüğü üzer 192.168'li ipler filterelenmi sadece localdeki 192.168.1.1 routing tablosunda gözüküyor. Ayrıca 100.64' lü ip ise local preference değerini 222 yaptı.Bunun dışında kalanları path değeri 6200 olanların weight değerini 65200 olarak set et.

Filtre uyguladınız devreye girmesini istiyorsanız yukardakini yapmak gerekebilir.

https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bgp/configuration/xe-3se/3850/irg-xe-3se-3850-book/irg-soft-reset.pdf

Bgp communities dediği aslında route tag yani etiket eklemek. Bir network bilgisi öğretilirken bunun altına opsiyonel olarak etiket ekleniyordu.

Standartta 32 bitlik bir adres, Extended community diye bir şey çıkarmışlar. Extenden Community, bunun başına 8 bytelık bir ek eklenmiş durumda. Bu 8 byte'lık ek ise Mpls-Vpn'de işe yarıyor. Yani ISP kendi mpls bulutunda bgp kullanıyorsa, orada isterse bu mpls vpn'nin kullandığı birkaç parametre var. O parametreleri bgp'nin altına saklayıp karşı tarafa öğretmekte kullanabiliyorsun. Mpls vpn ile de kullanılıyor. Global internette kullanılan bir şey değil. Mpls vpn ==>kapalı bir ISP networkü internet paylaşmak için değil. Buradaki mpls'in amacı kendi kapalı networkü içinde. Müşterilerin noktadan noktaya bağlantılarını layer 3 de routerlar tarafından sağlanması için günümüzde kullanılan teknoloji. Örnek olarak A şirketi Ankaradaki A şubesi ile konuşssun, B şirketi B şubesi ile konuşsun. Ama A'nın trafiği asla B'ye , B'nin trafiği asla A'ya gitmesin. İzole olsun.

Bu bulutta haberleşme kanadında internet yok. Amacı noktadan noktaya şubeler arası iletişim sağlamak. Mpls Vpn , bgp 'ye ihtiyaç duyuyor ona ihtiyaç var.

Yeni cihazların IOS'u IOS XE diye geçiyor. Bu XE cihazlar içinde unix tabanlı çekirdeğe sahip. Eski cihalar IOS diye geçiyor. Ama komut setleri aynıdır.

Standartta bgp community'lerini advertise etmiyor. Yani alıp millete öğretmiyor. Bizim bunu geçirmesini öğrenmesini sağlamak istiyorsanız. Öncelikle community'i millete öğretsin anlamına gelen neighbour ip address send community komutunu kullanmamız gerekiyor.

No-export ==Başka AS'e gönderme No-export subconfed ==>Confed dediği confederation, bu şu demek confederation altındaki local AS'den dışına öğretme.

additive ==>var olanı al buraya ekle anlamına geliyor.

packetlife.net/blog/2010/jan/12/bgp-peer-template

BGP Path Selection

IGP protokolleri ospf,rip,eigpr gibi protokoller metriğe bakar. En küçük metrik olanı seçer. Birebir aynı prefix gelmesi durumunda bu kadar basittir. Ancak bgp de metrik olayı pek yok. Bgp de farklı farklı kurumlar olduğu için standart metrikleri alıp birbiri ile kıyaslama şansımız pek yok.

Bgp aynı networkü 2 ayrı rotadan öğrenirse baktığı attribute'lar bunlar. Önce birinciye bakıyor eşitse ikinciye bakıyor. Eşitse üçüncüye bakıyor. vs..

Weight değeri 16 bitlik bir değer. Diğer routerlara anons edilmiyor. Yüksek olan tercih ediliyor. Hatta eğer bir bgp routerı kendisi network komutu ile eğer bir networkü bgp tablosuna enjecte ederse weight değerini yukarı çekiyor.

route map ile weight değerini ayarlarız.

Burada prefix list yazarak eşleştirme yaptırmış. 172.16.0.0/24 networküne eşleşiyorsa weight değerini 222 olarak yap. 10.24.1.2 komşudan öğreniyorsan bu route map'i devreye al diye komut yazmış. Yani kendi bgp tablosuna işlerken 172.16'nın weight değerini 222 olarak ayarlayacak.R6 da ise 172.24.0.0'ı öğrenirken weight değerini 333 olarak ayarlayacak.

Eğer weight değerleri eşitse diğer bakına yer Local Preference değerleridir. Adı üstünde Local yani yerel aynı otonom sistem içerisinde taşınan bir preference değeridir. Her router bilmek zorunda well know'dur yani AS dışına çıkmayacak şekilde ayarlamışlar. Aynı bgp otonom sistem üzerinde manipulasyon yapmak için kullanılıyor.

R5, 172.16. için R4ü , 172.24 için ise 6'yı tercih etmiş. Yani 16'lar yukardan gidecek 24'ler aşağıdan gidecek tüm BGP bulutunda bu kural geçerli oldu. Hem weight de hem local preference giden yönde yani upload yönünde manipulasyon yaptık. Dünya'da bir kısım buradan gelsin bir kısım başka yerden gelsin manipulasyonu yok. 16'ları buradan upload edeyim. 24'leri buradan upload edeyim manipulasyonu yaptık.

AIGP => İstisnai bir case ancak örneğin 2 ayrı şirket var. Bunlar birleşti ve artık senin şirketinde 2 ayrı otonom sistem oluştu. Ya da bir MPLS-VPN bulut bölgelerin var sen yönetiyorsun. Yani aynı kurumun çatısı altında olduğunda anlamlı olan. Burada IGP protokolünün metriğini taşıyor. Örnek olarak ospf mi kullanıyorsun ospf'in metriğini referans alıp ona göre karar veriyor. Referansta metrikleri topluyor kendi routing tablosundaki metriklere bakmıyor.

orhanergun.net/what-is-aigp-accumulated-igp-metric-attribute-where-aigp-is-used

Shotest As-path ==> Hedefe gidene kadar, en az otonom sistem geçen rota en iyidir.

örnek olarak 20 networküm var buna ulaşana kadar AS10 ve AS20 den geçiyor. Bir başka rota ise yine 20 networküne ulaşırken AS30 ,AS40 ve AS20 den geçiyor. En kısa olan yani ilk rotayı seçecektir. 2 hop olanı.

Prepend == önüne otonom sistem eklemek. En arkadaki AS olarak burada AS100. Sonra AS200'e gidiyor sonra 400'e ulaşıyor. Prepend otonom sistem path'ine ekstra otonom sistem ekliyorsun. Zinciri uzatıyorsun. Başka birinin otonom sistemini mi ekliyoruz. Çünkü otonom sistemleri kurumlara özeldir. kayıt gerekir ? Pek bu şekilde yapılmaz. Kendi otonom sistem numarasını kullnmak gerekiyor. Prepend ettitip önüne birkaç tane daha eklettiyorsun ve dünya 20 networküne gelmek isterse burayı ekstra hopları görüyor. Daha az olan yeri tercih ediyor.

Med'in namı diğeri Metric. Bu metric bizim bildiğimiz şekilde metric değil. BGP'nin metriği. Med upload yönünden ziyade dowload yönünde manipulasyon için kullanılıyor. MED attribute'da ISP'ye diyorsunki bana gelirken burayı seç diyorsun. Buradaki upload demek outbound yani bizden çıkan. Dowload ise bizim indirdiğimiz.

weight değeri başka routerlara anons edilemiyor. Sadece o routerda değiştirebiliyorsun. Tek bgp routerı manipule etmek için kullanılıyor. Resimdekli gibi tek routerım var ve çift çıkışım var ise bu topolojide kullanılabilir.

Çift çıkışım var ve çift routerım var ise, weight burada hiçbir işe yaramaz. Local preference ise birden fazla router varsa aynı otonom sistem içerisinde yine upload yönünde manipulasyon için kullanılıyor.

Download yönünde manipulasyon için as-path ve med daha çok tercih ediliyor.

Med yani metric değeri küçük olan tercih ediliyor.

Deterministic Med'de ise As-path aynı olanlar kendi aralarında karşılaştırılıyor.

Troubleshoot'da bakacağınız ilk komutlardan birisi bu olacak. Eski hali ile sh ip bgp summary. Bu komut ile komşuluk kurulup kurulmadığına bakabiliyorduk.

State/PfxRcd => Burada 0 değeri varsa komşuluk vardır. Ama bunun haricinde Idle vs yazıyorsa komşuluk yoktur. Idle şu demek Tcp connection'ı bile kuramadı.

deny tcp any any eq bgp ==>kaynak herhangi bir ip adresi, hedef herhangi bir ip adresi, hedef port bgp

deny tcp any eq bgp any ==>kaynak port bgp

ephemeral port ==>rastlansal port.

Burada rastgele olarak 45936 portunu seçmiş. Hedef olarak da TCP 179 portunu seçmiş.

Ip adresi tek başına bir şey ifade etmiyor. Router-id'si büyük olan server(tcp 179) oluyor.

Timer'ları değiştirmek önerilmez.

Bu loglari telnet ve ssh ile göremezsiniz. Görmek isterseniz terminal monitor diyip açmak gerekiyor.Yada show logging ile loglara bakacaksınız.

Eski hali ile sh ip bgp komutunun çıktısı

show ip bgp dediğimizde sadece bgp networkleri gözükür. Ospf dersek ospf ile ilgili satırlar gelecektir.

ipv4 de adress family konfigurasyonuna gerek yok. Ama ipv6 kullanıyorsanız mutlaka adress family konfigurasyonunu yapmak zorundasınız. ipv6 da tanımlama yaptıktan sonra ilgili adress family altında aktive etmeniz gerekiyor. Aktive etmezseniz çalışmıyor.

ipv4 için birinci peering ipv6 için ikinci peering oluşturarak kullanılıyor.

Last updated