GNS3 Üzerinde MPBGP EVPN ile VXLAN UYGULAMASI

Bu yazımızda GNS3 platformu üzerinde Cisco N9K sanal imajlarını kullanarak Multiprotocol BGP üzerinde EVPN ile VXLAN uygulaması oluşturacağız.

Topolojimiz ilk başta şu şekilde olacak,

İlk başta cihazların interface IP yapılandırmalarını yapamya başlayalım. Bunun için SPINE cihazı eth1/1, eth1/2 ve Lo0 interface’lerini , LEAF_101’de eth1/1 ve Lo0, LEAF_102’de eth1/1 ve Lo0 interface’lerini kullanacağız. Aynı zamanda cihazlarda OSPF protokolünü açıp proses adı olarak UNDERLAY ismini vereceğiz. OSPF’i kullanabilmek için mutlaka feature ospf yazmayı unutmayalım. Interface’lere ip vererek başlayalım.

SPINELEAF_101LEAF_102
!
interface lo0
ip address 9.9.9.9/32
no shutdown
!
interface eth1/1
no switchport
ip address 192.168.100.1/30
no shutdown
!
interface eth1/2
no switchport
ip address 192.168.100.5/30
no shutdown
!
interface lo0
ip address 1.1.1.1/32
no shutdown
!
interface eth1/1
no switchport
ip address 192.168.100.2/30
no shutdown





!
interface lo0
ip address 2.2.2.2/32
no shutdown
!
interface eth1/1
no switchport
ip address 192.168.100.6/30
no shutdown





Her segment birbirini ping’lemeye başladığında OSPF tarafına geçebiliriz demektir.

Tüm cihazlarda feature ospf komutunu çalıştırarak bu özelliğin aktif olmasını sağlıyoruz. ardından OSPF konfigürasyonu yapabiliriz.

SPINELEAF_101LEAF_102
!
feaute ospf
!
router ospf UNDERLAY
router-id 9.9.9.9
!
interface lo0
ip router ospf UNDERLAY area 0
!
interface eth1/1
ip router ospf UNDERLAY area 0
!
interface eth1/2
ip router ospf UNDERLAY area 0
!
feaute ospf
!
router ospf UNDERLAY
router-id 1.1.1.1
!
interface lo0
ip router ospf UNDERLAY area 0
!
interface eth1/1
ip router ospf UNDERLAY area 0



!
feaute ospf
!
router ospf UNDERLAY
router-id 1.1.1.1
!
interface lo0
ip router ospf UNDERLAY area 0
!
interface eth1/1
ip router ospf UNDERLAY area 0



OSPF kurulumu bitti ve tüm Lo0 interface’leri birbirini ping’leyebilir hale geldi, ospf database’i şu durumda

Şimdi bu platform üzerine BGP kuracağız. BGP komşuluklar doğrudan Lo0 interfaceleri ile kuracağız. OSPF’de yaptığımız gibi burda da feature olarak açmak için mutlaka feature bgp yazıp BGP fonksiyonunu aktif hale getirmemiz gerekiyor. BGP Otonom Numarası olarak 65432 kullanacağız. Router ID’ler yine Lo0 ip’leri olacak. Kurduğumuz networkte iBGP olduğundan dolayı SPINE cihazın mutlaka route-reflector olması gerekiyor. (Aynı otonom numarasına sahip networkler iBGP dir ve bu tip bağlantıda route tabloları karşı taraf için paylaşılmaz. Mutlaka arada route-reflector konumlandırmak gerekir)

SPINELEAF_101LEAF_102
!
feaute bgp
!
router bgp 65432
router-id 9.9.9.9
template peer VTEPS
remote-as 65432
update-source loopback0
address-family ipv4 unicast
route-reflector-client
send-community both
neighbor 1.1.1.1
inherit peer VTEPS
neighbor 2.2.2.2
inherit peer VTEPS
!
feaute bgp
!
router bgp 65432
router-id 1.1.1.1
neighbor 9.9.9.9
remote-as 65432
update-source loopback0
address-family ipv4 unicast
send-community both




!
feaute bgp
!
router bgp 65432
router-id 2.2.2.2
neighbor 9.9.9.9
remote-as 65432
update-source loopback0
address-family ipv4 unicast
send-community both






BGP komşuluklarımızda tamamlandı, artık Multicast konfigürasyonuna başlayabiliriz. Bu senaryonun amacı, SPINE Switch üzerinde PIM-SM’yi Anycast RP ile yapılandırmaktır. Multicast altyapısı VXLAN paketlerinde Broadcast, Unknown unicast ve Multicast trafiği (BUM) aktarabilmek için kullanılacaktır.

PIM-SM’nin Anycast RP ile yapılandırılması aşağıdaki konfigürasyonları gerektirecektir:
• PIM’i etkinleştir
• PIM için SPINE ve LEAF interface’lerini yapılandırma

Aşağıdaki konfigürasyonları Multicast konfigürasyonları için tamamlıyalım.

SPINELEAF_101LEAF_102
!
feature pim
!
ip pim rp-address 9.9.9.9
!
int eth1/1
ip pim sparse-mode
!
int eth1/2
ip pim sparse-mode
!
int lo0
ip pim sparse-mode
!
feature pim
!
ip pim rp-address 9.9.9.9
!
int eth1/1
ip pim sparse-mode
!
int lo0
ip pim sparse-mode



!
feature pim
!
ip pim rp-address 9.9.9.9

!
int eth1/1
ip pim sparse-mode
!
int lo0
ip pim sparse-mode


SPINE switch’inde pim komşuluklarını görüyoruz. Şunu bilmemiz gerekiyor; oluşturacağımız her VXLAN segmenti için ayrı bir multicast gurubu oluşturmamız gerekiyor. Yaptığımız lab’da tek bir VXLAN olacağından dolayı Multicast gurubu oluşturmadan ilerleyeceğiz.

Şimdi alt yapımız hazır, verimerkezimizde bir müşteri subneti sonlandıralım ve bunu VXLAN olarak iki LEAF Switch arasında genişletelim. Bunun için öncelikli olarak aktif etmemiz gereken bazı feauture’lar var.

  • nv overlay evpn
  • feature nv overlay
  • feature interface-vlan
  • feature vn-segment-vlan-based.

Şimdi aşağıdaki konfigürasyonları tamamlayalım.

SPINELEAF_101 / LEAF_102
!
nv overlay evpn
feature nv overlay
feature interface-vlan
feature vn-segment-vlan-based
!

































!
nv overlay evpn
feature nv overlay
feature interface-vlan
feature vn-segment-vlan-based
!
vlan 100
name MUSTERI-1_VLAN-100
vn-segment 10100
!
vlan 999
vn-segment 10999
!
vrf context MUSTERI-1
vni 10999
rd auto
address-family ipv4 unicast
route-target both auto
route-target both auto evpn
fabric forwarding anycast-gateway-mac 0001.0001.0001
!
interface Vlan100
no shutdown
vrf member MUSTERI-1
ip address 172.16.100.1/24
fabric forwarding mode anycast-gateway
!
interface vlan 999
no shu
vrf member MUSTERI-1
ip forward
!
int nve1
no shu
source-interface lo0
host-reachability protocol bgp
member vni 10999 associate-vrf
member vni 10100
mcast-group 239.1.1.100
Bu müşterinin VNI numarası 10100 MCAST Grup IP’si 239.1.1.100

Yukarıda da görüldüğü üzere her iki LEAF switch üzerinde de nve1 interfaceleri L2 ve L3 olarak aktive edildi. L3 routing yapmayacağımız için onun özelinde multicast grup girmedik. Yukarıda da belirttiğim gibi Her bir müşteri segmentasyonu için ayrı multicast gruplar oluşturmak gerek.

Şimdi BGP üzerinde EVPN ile Kontrol Düzlemi (Control Plane) oluşturalım.

SPINELEAF_101 / LEAF_102
!
router bgp 65432
address-family l2vpn evpn
retain route-target all
template peer VTEPS
address-family l2vpn evpn
send-community both
route-reflector-client
!






!
router bgp 65432
address-family l2vpn evpn
retain route-target all
neighbor 9.9.9.9
remote-as 65432
address-family l2vpn evpn
send-community both
!
evpn
vni 10100 l2
rd auto
route-target import auto
route-target export auto
!

Topolojimize artık yukarıda görüldüğü gibi müşteri PC’lerini bağlayabilecek duruma geldik. Yaptığımız konfigürasyondan da anlaşılacağı üzere PC’lerin GW adresi 172.16.100.1 (MAC: 0001.0001.0001) olacak şekilde ayarladık ve her PC kendi bağlı bulunduğu LEAF switch’i GW olarak görecek. Bunun bir diğer avantajı da sanallaştırma ortamlarından, Örneğin: Vmware kullandığınızda DRS fonksiyonunu kullanırsanız sunucu içerisinde çalışan işletim sistemi başka bir hosta kaydığında kendi GW adresini yeniden keşfetmesine gerek kalmadan (ARP süreci) yoluna devam edecek.

Her iki LEAF switch üzerinde de eth1/5 portuna birer tane VPCS bağlayalım. Ardından LEAF switch konfigürasyonlarına devam edelim.

LEAF_101LEAF_102
!
int eth1/5
description “Link to PC1”
switchport
switchport mode access
switchport access vlan 100
no shut
!
!
int eth1/5
description “Link to PC2”
switchport
switchport mode access
switchport access vlan 100
no shut
!

PC’lerin Power-on yapıp IP yapılandırmalarını yukarıdaki gibi yaptıktan sonra her iki PC’den hem kendi GW adreslerine hemde birbirlerine Ping atmayı deniyelim.

Görüldüğü üzere her iki PC’de de GW mac adresi aynı görünse de aslında direk kendi bağlı bulundukları LEAF switch’i pingliyorlar. Peki LEAF switch’lerde durum nasıl buna bakalım.



Görüldğü üzere NVE tüneller karşılıklı olarak kurulmuş durumda


Control Plane durumunu görebilmek için kullanacağımız komut show bgp l2vpn evpn

Peki bu VXLAN paketleri neye benziyor biraz inceleyelim. Bunun için LEAF_102 ile PC-2 arasındaki kabloyu wireshark ile izleyelim.

Start Capture dediğinizde bu size wireshark’ı açıcaktır. wireshark açılmasını bekledikten sonra PC-1 üzerinden PC-2’ye doğru yeniden ping paketlerini göndermeyi deneyip wireshark’da neler yakalıyoruz bir bakalım

ilk etapta gözüme Join/Prune PIMv2 paketi gözüme çarpıyor. Paketlerin içlerine girip bu flow’u takip edersek ilk başta LEAF_101’in ardından LEAF_102’nin PIM Group 0’a (239.1.1.100) üye olduğunun bildilerini görüyoruz.

Hemen ardından BGP Update paketi gözüme çarpıyor.

Path Attributes bize herşeyi açıklıyor. Bize burda MP_REACH_NLRI lazım.



İşte bu, BGP attribute’ları ile bir IP/MAC bilgisi taşıyoruz. Network Layer Reachability İnformation protokolünü BGP içinde taşımışız ve PC-1 IP/MAC bilgisini LEAF_102’ye söylemişiz.

Sonrasında ARP paketi görüyorum. Ne varmış bakalım.



İşte karşınızda VXLAN 🙂 Aslında Paketin ilk başlık kısmına baktığınızda LEAF_101’den Multicast Group 0 adresine doğru oluşturumuş UDP paket olduğunu (Sarı işaretli alan) düşünüyorsunuz ama onunla kalmıyor. Hemen altında Virtual eXtensible Local Area Network Encapsulasyonu olduğunu ve içinde bazı bilgilerin olduğunu (Kırmızı Alan) görüyoruz. VNI: 10100. Bu encapsulasyonun altında başka bir ethernet frame’i olduğunu (Mavi Alan) farkediyoruz. işte bizim PC-1 in ürettiği ARP mesajı burda. 172.16.100.20’nin kim olduğunu brodcast mac-asresine soruyor.

Arp mesajları gidip geliyor, PC-1 PC2’nin mac-adresi ni öğreniyor ve ICMP paketleri yola çıkıyor.

Bu sefer paket LEAF_101’den Leaf_102’ye unicast UDP olarak gidiyor ve VXLAN encapsüllemesi ile ICMP paketleri PC-1 ve PC-2 arasında gidip gelmeye başlıyor.