BGP ve NSX-T T0 Router’ı Provider Router’a Bağlamak

NSX-T ile beraber dinamik routing protokollerindede, yapıdada bir sadeleşme oldu. Artık OSPF veya IS-IS gibi protokoller, Logical Router Control VM’ler yok. Tek haşır neşir olacağımız BGP ve VRF ki VRF’lede bizim görünürde aktif olarak üzerinde yaptığımız bir şey yok.

Sistemciler için kısa bir özet geçelim BGP hakkında ;

*Not: Belirtilenlerin genel olarak BGP’i anlamak, birtakım terimlerden uzak kalmamak için yazılmıştır.
*Not : Aşağıdaki resimler açıklamalarda kullanılacaktır.

Resim 1
Resim 2
Resim 3a
Resim 3b
  • Bilinmesi gereken terimler :
    • AS (Autonomous Systems) Number : Servis sağlayıcıyı tanımlayan bir adres, bir telefon numarası gibi.
    • AS numaralarınında IP gibi public ve private olanları var, liste burada.
    • eBGP : Resim 2‘de gördüğünüz AS 65001, AS 65002, AS 65003 router’ları arasında kurulan BGP komşuluğu ve yönlendirme bilgisinin değiş tokuş işlemine eBGP deniyor.
    • iBGP : Resim 2‘de AS 65001 içersindeki router’lar arasında kurulan BGP komşuluğu ve yönlendirme bilgisinin değiş tokuş işlemine iBGP deniyor.
    • Path Vector Protocol: Diğer routing protokollerin aksine BGP routing tablosuna baktığımızda bir hedefe gitmek için kullanacağı AS bilgilerini listeler buda onu “path vector” routing protokolü yapar.
    • AS PATH : Hedefe ulaşmak için geçilmesi gereken tüm AS numaralarının listesidir. Örneğin resim 1‘de 20.2.2.0 network’üne erişebilmek için AS 65444, sırasıyla 65333,65222 sonunda 65111’e ulaşması gerekir ki ilgili network’e erişebilsin.
    • BGP Loop Prevention : BGP AS_PATH parametresi sayesinde aldığı yönlendirme güncellemelerinde belirtilen AS listesinde eğer kendi AS numarasıda var ise bu güncellemeyi alır fakat bunu “best path” olarak işaretlemez, bu şekilde sistemde loop oluşmaz. Örneğin resim 2‘de R2 router’ı iBGP ile R1’den aldığı 192.168.0.0/24 network’ünü R4’de almayı reddedecek çünkü R4’den aldığı güncellemede AS_PATH parametresinde 65001 AS numarası olduğunda direkt bu route bilgisini tablosuna koymayacak, daha doğrusu best route olarak set etmeyecek.
    • Peering : İki router’ın birbirleri arasında BGP bilgisini değiş tokuş etmek için kurduğu bağlantıya peering denir. Bağlantı UDP değil TCP’dir. Mesela resim 2‘deki R3 ile R4 arasında bir peering var.
    • En Doğru Yolu Seçme Algoritması : BGP’ninde kendine özgü bir yol bulma mekanizması var, burada güzel bir açıklaması var. Bunlar WEGIHT, LOCAL_PREF, AS_PATH parametrelerinden tutun, iBGP’mi yoksa eBGP, Router ID’sine kadar.
    • LOCAL_PREF : Sadece iBGP için bir anlam taşır, yönlendirme tablosuna giren kayıtlardan LOCAL_PREF değeri yüksek olan geçerli olan yol olarak belirlenir. Eğer yönlendirmeler eşit LOCAL_PREF değerlerine sahip ise bu kes AS_PATH parametresine bakılır.
    • AS PATH PREPAND : Traffic Enginnering yapmak için başka bir yöntem. Burada çok güzel anlatmışlar, tek yaptığı AS_PATH listesine kendisini mükerrer olarak eklemek ve yolu uzatmak ki BGP diğer yönlendirmeyi tercih etsin. Örneğin resim 3a‘da AS 100 , AS 1’e erişmek için AS 10 üzerinden ve AS 20 üzerinde gidebilir ve seçilende AS 10’muş. AS 1 üzerinde “outbound” yönünde kendisini iki kez anons ediyor, böylece algoritma uzun oldu için AS 10’u değil AS 20’i üzerinden AS 1’e erişecek.
    • COMMUNITY : Diğer değişik bir Traffic Enginnering yapma şekli, BGP’de iyice anladım ki LOCAL_PREF ve PREPAND etmek trafiğin nereden akacağını belirlemenin yolu, COMMUNITY’de anladığım kadarıyla bir çeşit etiketleme yöntemi ki içersinde bir dizi PREPAND ve LOCAL_PREF tanımı mevcut ve bunu ilgili prefix’lere atıyorsunuz, böylece bir çeşit sabit tanımlar yaparak trafiği yönetiyorsunuz.

Sanırsam bize bu kadar yeter ! 😀 Nede olsa T0 Router’ı provider’a bağlayacağız ve NAT, LB ip adreslerini dış dünyaya anons etmek için bir konfigürasyon yapacağız hepsi bu.

Yinede BFD ve BGP Fast Convergence ‘da anlatalım öyle geçelim. T0 Router oluşturmak istediğimizde bize hangi Edge Cluster’ı kullanacağımızı soracak. Edge Cluster daha önceki makalemde belirttiğim gibi aslında bir yüklenici ve içersinde sanal ve veya fiziksel Edge Node’larını barındırıyor, örneğin

Edge Cluster Genel 1 ve iki adet edge node

BFD bir protokol, network ortamlarında arızaları tespit etmek için kullanılıyor. Klasik birçok protokolde olduğu gibi oda komşularına “Hello” paketleri gönderiyor fakat farklı olduğu nokta UDP ile çalışması ve milisaniye seviyesinde arızaları tespit edebiliyor olması. NSX-T ‘de eklediğiniz her bir BGP Neighbor için BFD’i aktive edebilirsiniz.

Eğer aktive etmez iseniz ne oluyor o zaman klasik BGP kendi Keepalive mekanizmasını kullanılıyor.

Fast Convergence ise BGP’nin olası komşu bağlantılarındaki problemleri elinde geldiğince hızlı bir şekilde anlayıp milisaniyeler seviyesinde bu problemi telafi etmesi anlamına geliyor ki bu CPU isteyen bir iş, bunun için NSX-T T0 üzerinde Fast Convergence’ı sadece BM (bare-metal) edge node’ları üzerinde destekliyor.

Fabric >> Profiles >> Edge Cluster Profile (BFD Global Config)

Birde ECMP (Equal-cost multi-path routing), normalde BGP komşuluk kurduğu yollardan kendi algoritmasına göre en iyi olarak seçtiğini kullanır (>), diğerleri ise geçerli olarak kalır (*) fakat birde birden fazla yolu kullanabilme opsiyon var (m) , işte ECMP burada birden fazla bağlantı arasında yük dengelemesi yapıyor olacak. Aslında bu kısım NSX-T için değil bildiğimiz Cisco , Juniper Router’larla ilgili, NSX-T ECMP derken bunu T0 ile T1 Router’ları arasında diye kabul etmelisiniz.

Elimizde henüz T0 Router yok, bir tane oluşturacağız, bunun için buradan devam edebilirsiniz. Birkaç önemli konuyu aşağıda belirtmek istedim.

  • Başlamadan önce mimarinizi çizin, provider router ile konuşmak için ihtiyacınız olan şeyler olacak (ben link’de örnek bir excel tablosu paylaştım), bunlar ;
    • Elimizde provider router veya router’larına ait bgp kuracağımız ip bloklarına.
    • T0 Router Port/interface’lere set edilecek ip adreslerine
    • T0 Router Port/interface’lerinin atanacağı VLAN tabanlı Logical Switch’e.
    • VLAN tabanlı Logical Switch’lerin bağlanacağı VLAN Transport Zone’lara
    • Provider’ın BGP AS numarasına.
    • Kendi BGP AS numaramıza (Private BGP aralığından seçebilirsiniz(64.512 – 65.534))
  • T0 Router için iki High Availability Mode seçeneği var ;
    • Active-Active : Bu opsiyonu seçtiğinizde bilinki artık herhangi bir stateful servis üzerinde çalışamaz demek oluyor, yani FW,NAT gibi. Yüksek bant genişliği gereksinimleri için tercih edilecek yöntem.
    • Active-Standby : Aynı anda tek T0 Router aktif ve üzerinde LB hariç diğer stateful servisler çalışabiliyor.
  • HA mode seçildiğinde dikkat edin bir daha üzerinde değişiklik yapamazsınız. (PKS’ciler dikkat !) PKS için Aktif/Pasif HA modunu seçin.
  • BGP configrasyonu yapmadan Edge Node’lar üzerinde herhangi bir SR Instance oluşmayacak.
  • Keza yine T1 ve T0 üzerinde herhangi bir stateful service yaratılmadan herhangi bir SR Instance oluşmayacak.

Birde cli’dan bakalım, sanki router’a bağlandıktan sonra komut çalıştırıyoruz gibi 😀 Sırasıyla aşağıdaki işlemler yapın.

  • NSX-T Manager’a SSH üzerinden bağlanın
  • on <edge 1 id> exec
    • “on” yazıpı iki kez tab’ladığınızda liste geliyor, oradan Edge1’in adını değil UUID’sini kopyalayın
    • enter’a bastığınızda sanki Edge1 üzerinde komut çalıştırıyor gibi olacaksınız. “Session Mode”
  • get logical-routers
    • Diyerek SR-<T0 Router adınızı> VRF id’sini alın
  • vrf <vrf-id> yazıp enter’a basın
  • Şimdi ya get route yada get bgp diyerek hangi yönlendirmeleri aldığınızı kontrol edin.
Örnek

Birde provider’a nasıl ip adres ve bloklarını anons ediyoruz, onu görelim.
Öncelikle var olan T1’inizi T0’a bağlayın, bunun için T1 Router’ınızı seçip “Overview” ekranından “Tier-0 Connection” kısmındaki CONNECT düğmesine basmanız yeterli.

T1’i T0’a bağlamak

T1 üzerinden, Routing >> Router Advertisment düğmesine tıklayın

Route Advertisment

Daha öncesinden ben aktive etmiştim, burada sadece NAT tanımlarını T0’a ileteceğimi belirtiyorum.
Status : Enabled
Advertise All NAT Routes : Enabled olmalı.

T1 üzerinde NAT configrasyonum aşağıdaki gibi;
Bir adet SNAT : 10.20.20.0/24 > 82.151.129.196
Bir adet DNAT : 82.151.129.194 > 10.20.20.10

Bu iki public ip adresini T0’a anons edip etmediğini öncelikle T1 “Router Advertisment” ekranından görebilir ve kontrol edebilirim.

Routing >> Router Advertisment >> Advertised Networks

Henüz provider’a ilgili public ipleri iletmiş değiliz, bunun için T0 üzerinde “Route Redistribution” seçeceğini seçip, neleri aktaracağımızı belirlememiz gerekiyor.

Aktive edelim ….

Şimdi +ADD diyerek neleri ileteceğimizi seçelim. Sadece T1’den gelen NAT konfigürasyonları ile ilgileniyorum

Şimdi T0 SR üzerinden CLI’dan yine “get route” veya “get bgp” diyelim.
t1n kayıtlarına dikkat edin, bunlar T1 tarafından T0 anons edilenler.
rl merak ettiyseniz kendisi T0 ile T1 arasındaki interlink.

SESSION-MODE(tier0_sr)> get route

—————————————————————————————————————————————————————————-

72d908d0-3145-4054-8995-7140c9308fe0  edg  Edge1

—————————————————————————————————————————————————————————-

Flags: c – connected, s – static, b – BGP, ns – nsx_static

nc – nsx_connected, rl – router_link, t0n: Tier0-NAT, t1n: Tier1-NAT

t1l: Tier1-LB VIP, t1s: Tier1-LB SNAT

Total number of routes: 7

b    0.0.0.0/0            [20/0]        via 198.18.3.148    

b    0.0.0.0/0            [20/0]        via 198.18.3.152    

t1n  82.151.129.194/32    [3/0]         via 169.254.0.1     

t1n  82.151.129.196/32    [3/0]         via 169.254.0.1     

rl   100.64.48.0/31       [0/0]         via 169.254.0.1     

c    169.254.0.0/28       [0/0]         via 169.254.0.2     

c    198.18.3.148/31      [0/0]         via 198.18.3.149    

c    198.18.3.152/31      [0/0]         via 198.18.3.153    

Bitti mi, bitmedi, birde bunları cidden T0 bgp komşularına iletiyor mu diye bakalım. Önce aşağıdaki komutu çalıştırıp BGP komuşlarımızı görelim.

SESSION-MODE(tier0_sr)> get bgp neighbor summary 

—————————————————————————————————————————————————————————-

72d908d0-3145-4054-8995-7140c9308fe0  edg  Edge1

—————————————————————————————————————————————————————————-

BFD States: NC – Not configured, AC – Activating, DC – Disconnected

            AD – Admin down, DW – Down, IN – Init, UP – Up

BGP summary information for VRF default

Router ID: 198.18.3.153   Local AS: 64512

Neighbor        AS         State  Up/DownTime  BFD InMsgs  OutMsgs InPfx  OutPfx

198.18.3.148    8685       Establ 0d15h33m24s  NC  2007    2157    1      2     

198.18.3.152    8685       Establ 0d15h30m43s  NC  1991    2145    1      2 

Şimdi komşumuza neler iletiyormuşuz ona bakalım

SESSION-MODE(tier0_sr)> get bgp neighbor 198.18.3.148 advertised-routes 

—————————————————————————————————————————————————————————-

72d908d0-3145-4054-8995-7140c9308fe0  edg  Edge1

—————————————————————————————————————————————————————————-

Status flags: * – best, I – internal

Origin flags: I – IGP, E – EGP, ! – incomplete

   Network             Next Hop        LocPrf   MED    AS Path                  

   82.151.129.194/32   198.18.3.149    0        0      64512 !                

   82.151.129.196/32   198.18.3.149    0        0      64512 !

Bunun birde sistemci gözüyle bakalım 😀

Eveeeet , çalışıyor ….

Posted on 20/06/2019, in Uncategorized and tagged , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: