EVE-NG Üzerinde Multi-Vendor ISP Omurga Tasarımı: OSPF Underlay ve IBGP Overlay Mimarisi

Paylaş

Omurga (Core) : Cisco Router’lar

İnternet Çıkışı : Ariste vEOS (Google DNS Simülasyonu)

Müşteri Tarafı : MikroTik (Static & BGP Routing)

1.Bölüm – Temel BGP ve Underlay (OSPF)

Bu kısımda temel BGP konfigürasyonu ve bu konfigüyasyona bağlı kalarak OSPF hangi amaçla kullanıldığını ve nedenini işliyor olacağız. OSPF de BGP gibi dinamik bir yönlendirme protokolü olsada burada OSPF protokolünü BGP entegre edeceğiz ve bu entegre sonucu bize ne katacağınız göreceğiz.

PE routerlarımızın ara bağlantı bacaklarına ve loopback interface üzerine IP tanımlarını yapıyoruz. Tanımlama sonrası OSPF tanımlamasını aynı şekilde cihazlarımız üzerinde yapıyoruz.

Örnek konfigürasyon yukarıdaki gibidir. Sonrasında BGP tanımlamasına geçiyoruz. Burada OSPF ile BGP birlikte çalışmasının bize ne avantaj sağladığına bakalım.

Normalde BGP tanımlamalarında BGP komşuluğu kuracağımız cihaza bakan interface üzerindeki IP adresi üzerinden tanımlama yapılır. Fakat burada biz komşuluğumuzu loopback interface üzerinden yapacağız. Kurmuş olduğumuz OSPF sayesinden loopback interface tanımlı olan IP adresleri cihazlar arasında bilinmektedir. Burada OSPF avantajı bizim loopback interfacelerimizi cihazlar arasında anons edip cihazların birbirinin loopback interfacelerine birden fazla yol ile erişebiliyor olmasıdır. Bu sayede cihazlarımızın herhangi birisinin interface down olma durumunda diğer interface üzerinden de loopback adrese erişeceğinden BGP down olmayacaktır. Bu konuda ilgili testleri yapıyor olacağız.

IP ve OSPF tanımlamalarını yaptıktan sonra IBGP tanımlamasını yapıyoruz.

router bgp 65000
 bgp log-neighbor-changes
 network 192.168.10.0 mask 255.255.255.252
 neighbor 2.2.2.2 remote-as 65000
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 3.3.3.3 remote-as 65000
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 4.4.4.4 remote-as 65000
 neighbor 4.4.4.4 update-source Loopback0

BGP tanımlamasını yaptıktan sonra birkaç konudan bahsedelim. Burada BGP tanımlamasında BGP sesion’lar loopback interface üzerinden kurulacağından dolayı tanımlama kısmında “update-source loopback0” tanımlaması yapılmıştır. Karşıya gidecek paketin source kısmı interface üzerinde tanımlı olan IP adresinden değil loopback IP üzerinden düzenlenip gideceğinden bağlantı sağlıklı bir şekilde kurulacaktır. Eğer ki bu tanımlamayı yapmadığımız takdirde BGP komşuluğu kurulamayacaktır.

Gerekli tanımlamaları yaptıktan sonra OSPF ve BGP tarafını kontrol edebilirsiniz.

OSPF :

BGP :

Yukarıda gözüktüğü üzere bağlantıların sorunsuz bir şekilde kuruldu gözükmektedir. Peki burada yapmış olduğumuz işlemin mantığını anlamak üzere test yapalım. Burada PE1 ile PE2 arasındaki interface shutdown yapalım yani kapatalım ve BGP komşuluğunun hala devam edip etmediğini kontrol edelim.

PE1 ile PE2 arasındaki portu kapattığımızda trafik diğer bağlantılar üzerinden geçerek trafiğin kesintisiz bir şekilde devam etmesini sağladı. Ne oldu?

Interface kapatıldığından OSPF hemen “Fast Convergence” yani “Hızlı Yakınsama” özelliği devreye girip hedef loopback adresini gördüğü diğer interface üzerine yönlendirdi. Böylece alt katmanda yani underlay tarafında OSPF işleri hallederken overlay kısımda BGP hiçbirşeyden etkilenmeden komşuluğu devam ettirdi.

Trafik nasıl oldu peki?

Eğer ki PE1 ve PE4 arasındaki bağlantıda kopsaydı trafik yönü diğer bağlantı üzerinden PE3’den geçecekti.

Burada yedeklilik konusunda kesintisiz ve sorunsuz bir altyapı kurmuş olduk.

Underlay (OSPF): Fiziksel cihazların birbirini tanıdığı, Loopback adreslerinin ulaşıldığı bir altyapı.

Overlay (BGP): Bu altyapı üzerinde internet rotalarını taşıyan bi yapı.

2.Bölüm – İleri Trafik Mühendisliği (Localpref & Prepend & MED)

BGP trafiğini yönetmek trafik mühendisliği gerektiren bilgi isteyen bir alandır. Burada yanlış yapılan bir işlem ağ tarafında karmaşıklık yaratıp trafiği kesebilir, yanlış yönlendirmelerle ağınızı loop’a dahi sokabilirsiniz. Bu yüzden BGP tarafında yönetilen trafik bilinçli bir şekilde yönetilmeli ve takip edilmelidir. ,

BGP tarafında sıkça kullanılan localpref, prepend ve MED gibi parametrelerin ne amaçla kullanıldığını bu bölümde göreceğiz.

  • Local Preference

BGP tarafında içeriden dışarıya doğru trafik yönlendirmek istediğimizde burada devreye “Localpref” girmektedir. Localpref ile birden fazla bağlantı olan çıkışlarımızı önceliklendirmek amaçlı kullanabiliriz. Bunu topoloji üzerinde görelim ve anlayalım.

Burada iç PE routerlarımız bizim iç networkümüzü oluşturmaktadır. Burada PE routerlar IXP-1 üzerinden internete çıkacaktır. IXP1 üzerinden PE2 ve PE4 bağlı olan linkleri uplink olarak düşünebilirsiniz. Burada yapmak istediğimiz işlem PE1 ve PE3 routerlarının internet çıkışını P4 üzerinden değil PE2 üzerinden çıkartmakdır. Buradaki senaryoda mevcut 2. bağlantıda bir sorun olması durumu veya bant genişliği bazlı olarak bu hatta yönlendirilme yapılmak istenebilir. Peki bu durumda trafik nasıl şekillenir.

Burada kritik soru şudur? PE4 arkasındaki Customer-D neden direkt PE4 üzerinden IXP tarafına gidip internete çıkmıyor?

BGP mantığında karar mekanizmasının nasıl çalıştığını burada anlayabilirsiniz. BGP’de karar mekanizması şu şekilde çalışır. PE4 karşısında iki seçenek görür.

  1. Kendi üzerinde bağlı olaran IXP üzerinden direkt olarak internet çıkmak. (Localpref 100)
  2. Kendi üzerinde bağlı olan PE2 üzerine trafiği yönlendirmek. (Localpref 500)

Burada politika gereği PE4 router localpref değeri yüksek olduğu için trafiği PE2 tarafına yönlendirecektir. Böylece tüm trafik PE2 üzerinden internete çıkacaktır.

Bu işlemi nasıl yapıyoruz?

PE2 üzerindeki konfigürasyona beraber bakalım

router bgp 65000
 bgp log-neighbor-changes
 neighbor 172.0.0.2 remote-as 10060
 neighbor 172.0.0.2 route-map Local_Prefix in

route-map Local_Prefix permit 10
 set local-preference 500

Burada route-map oluşturuyoruz. Oluşturduğumuz route-map altında local-preference değeri girip, oluşturuduğumuz bu route-map IXP tarafına doğru “in” yönünde uyguluyoruz. Burada IXP tarafına uygulamamızın sebebi çıkış yönümüzün bu taraf olmasıdır.

  • Prepend & MED

Prepend ve MED bizim dışarıdan içeriye gelen trafiği yönettiğimiz parametrelerdir. BGP tarafında sıkça prepend kullanılmakta ve bu sayede dışarıdan gelen trafiğin yönetimini, yönlendirilmesini sağlayabilmektedir.

Karışıklık olmaması için öncesinde Prepend ile MED arasındaki farklı belirtelim.

Burada prepend ile MED kıyaslamak istediğimiz prepend BGP tarafında baskın gelmektedir. Prepend bizim BGP yolunu uzatmamızı sağlayan bir parametredir. MED ise bir metric değerdir. Düşük olan değere sahip link önceliklenir.

BGP seçim algoritmasında AS-Path uzunluğu MED’den önce gelir. Yani yolu uzatırsanız(Prepend), MED değerinin bir önemi kalmaz.

MED neden kullanılır? MED eğerki cihazınıza gelen iki uplik var ise ve bu iki hattan birisini ana hat diğerini yedek yapmak isterseniz MED kullanabilirsiniz. Bu konuda MED daha stabildir. Tanımlamayı aşağıdaki şekilde yapabilirsiniz.

route-map MED_Test permit 10
 set metric 50

router bgp 65000
 bgp log-neighbor-changes
 neighbor 172.0.0.2 route-map MED_Test out

Peki nasıl oluyor prepend ile trafik yönlendirme?

Trafik çıkış ve girişi IXP1 üzerinden olmaktadır. Burada IXP-1 tarafını ISP olarak düşünebilirsiniz. Buraya bağlı iki cihazımız bulunuyor PE2 ve PE4 router’larımız. BGP çalışma prensibinde geçtiği AS sayısına bakar. Bu AS numarası yani yol ne kadar uzarsa o yol tercih edilmez kısa yol var ise o tercih edilir. Burada biz PE2 router üzerinden prepend girerek yolu uzatmış oluyoruz.

Yani yol IXP tarafında AS1111 – AS2222 – AS10060 – AS65000 olarak hem PE2 hemde PE4 router’a ilerlerken biz PE2 üzerinden prepend girerek yolu uzatıp IXP’nin PE4’ü seçmesini sağlayacağız. Böylece trafik PE4 tarafına girmiş olacaktır. Burada dikkat etmemiz gereken konu ise dışarıdan içeriye girecek trafiği kontrol edeceğimizden dolayı uygulayacağımız route-map ‘i “OUT” yönünde uygulamamız gerekmektedir.

router bgp 65000
 bgp log-neighbor-changes
 neighbor 172.0.0.2 route-map Prepend_Test out

route-map Prepend_Out permit 10
 set as-path prepend 65000 65000 65000

PE2 router cihazımızda bunu uyguladıktan sonra çalışıp çalışmadığı IXP tarafından kontrol edelim. Hem uygulamadan önce nasıl gözüktüğüne uyguladıktan sonra nasıl route tablosunun gözüktüğüne beraber bakalım.

Yukarıda gözüktüğü üzere rotaların normalde tek AS numarası ile gittiği gözükürken, biz prepend ekledikten sonra PE2 router ve bu router arkasındaki tüm prefixlere artık ekstra eklediğimiz AS number ile yolu uzatmış olduk. Böylece yol seçiminde PE2 ikinci plana düştüğünden yol seçimi daima PE4 olacaktır.

Localpref : IN

Prepend : OUT

MED : OUT

3.Bölüm – Route Reflector

Yukarıdaki topolojide dört adet PE routerımızın arasında BGP komşuluğu yaptık. Bu komşulük için her router üzerinde üç adet BGP komşuluğu için konfigürasyon girdik. Peki bu cihaz sayımız 20 veya 30 olsaydı nasıl oldurdu? Tabikide bu kısımda her cihaz üzerinde konfigürasyon girmek zor, uğraştırıcı ve karmaşıklığa sebep olacaktı. Tam da bu kısımda şuan ki konu olan “Route Reflector” kısmı devreye girmektedir. Route reflector sayesinde hem ölçeklenebilirlik hem de uğraştırıcı kısmı bu sayede yok etmiş oluyoruz.

Topolojide IBGP çalıştığından mantık gereği IBGP öğrendiği rotayı bir diğer komşusuna bildirmez. Route reflector ile bu keskin kuralı biraz esnetmiş oluyoruz. Route reflector ile aynalama yaparak routeları diğerlerine yansıtmış oluyoruz.

Burada route reflector rotayı yansıtırken, üzerine rotayı ilk gönderen cihazın ID kısmını ekler. Aynı şekilde rota eğer ki bir route reflector üzerinden geçiyorsa o route reflector’un ID’si rotaya eklenir. Peki bunu neden yapar?

Eğer ki bir router rotasının üzerinde kendi cluster ID ‘sini görür ise, bir döngü yani loop olduğunu anlar ve paketi düşürür.

Bu işlem için ağımızda bir adet route reflector görevini üstlenecek bir cihaz seçimi yapıyoruz. Sonrasında ise ilgili tanımlamaları giriyoruz. Bu sayede bu cihaz üzerinden aynalama yaparak bağlantıların kurulabilmesini sağlayacağız. Bu işlem PE1 cihazını seçelim.

router bgp 65000
 bgp log-neighbor-changes
 neighbor 2.2.2.2 remote-as 65000
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 2.2.2.2 route-reflector-client
 neighbor 3.3.3.3 remote-as 65000
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 3.3.3.3 route-reflector-client
 neighbor 4.4.4.4 remote-as 65000
neighbor 4.4.4.4 update-source Loopback0
 neighbor 4.4.4.4 route-reflector-client

Tanımlamayı yaptıktan sonra route reflector çalışıp çalışmadığını nasıl anlarız?

PE3 üzerinden show ip bgp 8.8.8.8 yazdığımızda aşağıdaki ekran karşımıza gelecektir.

Burada dikkat ettiğimizde en bastaki rotanın ;

Originator : 4.4.4.4 Rotayı sisteme ilk sokan cihazın (PE-4) kimliğidir.

Cluster list : 1.1.1.1 (PE-1 rotaya kendi damgasını vurduğunu ve rotanın PE1 üzerinden yansıdığını buradan anlayabiliriz. Aslında en alt satırdı PE-4 diretk olarak PE-3 ‘e bağlı olduğu gözükmektedir. Burada aslında 4.4.4.4 IP adresinin direkt bağlı olan PE-4 olduğunu fakat rotanın PE-1 tarafından yansıtıldığını analtır.

Normalde bir test yapmak istediğimizde PE-3 ile PE-4 arasındaki bağlantı kopsa ve kapatılsa bile PE-1 aynalama görevi yani route reflector görevi gördüğünden PE-4 ile bağlantısı üzerinden aldığı rotaları PE-3 ‘e yansıtacaktır. Bu yüzden route reflector IBGP kısmının esnemesini sağlamaktadır demiştik. Çünkü normalde IBGP öğrendiği rotayı başka komşusuna göndermez ama biz bunu route reflector kullanarak yapabiliyoruz.

Buradaki PE-3 davranışına gelirsek, PE-3 PE-4 ile bağlantısı koptuğundan PE-1 cihazına alternatik yol sorar ve PE-1 ona route reflector ile yansıttığı yolu kullanmaya başlar.

Devamını Oku

Son Paylaşılanlar