Merhaba Habr. Şu anda OTUS'ta Ağ Mühendisi kursunun kurs lideriyim.
Kurs için yeni bir kaydın başlaması beklentisiyle
VxLAN EVPN'in nasıl çalıştığına dair çok miktarda materyal var, bu yüzden modern bir veri merkezindeki sorunları çözmeye yönelik çeşitli görevleri ve uygulamaları toplamak istiyorum.
VxLAN EVPN teknolojisi serimizin ilk bölümünde, bir ağ yapısı üzerinde ana bilgisayarlar arasında L2 bağlantısını organize etmenin bir yolunu incelemek istiyorum.
Tüm örnekler, Spine-Leaf topolojisinde birleştirilmiş bir Cisco Nexus 9000v üzerinde gerçekleştirilecektir. Bu yazımızda Underlay network kurulumu üzerinde durmayacağız.
- Altlık ağı
- Adres ailesi l2vpn evpn için BGP eşlemesi
- NVE'yi kurma
- Arp'ı bastır
Altlık ağı
Kullanılan topoloji aşağıdaki gibidir:
Tüm cihazlarda adreslemeyi ayarlayalım:
Spine-1 - 10.255.1.101
Spine-2 - 10.255.1.102
Leaf-11 - 10.255.1.11
Leaf-12 - 10.255.1.12
Leaf-21 - 10.255.1.21
Host-1 - 192.168.10.10
Host-2 - 192.168.10.20
Tüm cihazlar arasında IP bağlantısı olup olmadığını kontrol edelim:
Leaf21# sh ip route
<........>
10.255.1.11/32, ubest/mbest: 2/0 ! Leaf-11 доступен чеерз два Spine
*via 10.255.1.101, Eth1/4, [110/81], 00:00:03, ospf-UNDERLAY, intra
*via 10.255.1.102, Eth1/3, [110/81], 00:00:03, ospf-UNDERLAY, intra
10.255.1.12/32, ubest/mbest: 2/0 ! Leaf-12 доступен чеерз два Spine
*via 10.255.1.101, Eth1/4, [110/81], 00:00:03, ospf-UNDERLAY, intra
*via 10.255.1.102, Eth1/3, [110/81], 00:00:03, ospf-UNDERLAY, intra
10.255.1.21/32, ubest/mbest: 2/0, attached
*via 10.255.1.22, Lo0, [0/0], 00:02:20, local
*via 10.255.1.22, Lo0, [0/0], 00:02:20, direct
10.255.1.101/32, ubest/mbest: 1/0
*via 10.255.1.101, Eth1/4, [110/41], 00:00:06, ospf-UNDERLAY, intra
10.255.1.102/32, ubest/mbest: 1/0
*via 10.255.1.102, Eth1/3, [110/41], 00:00:03, ospf-UNDERLAY, intra
VPC alanının oluşturulduğunu, her iki anahtarın da tutarlılık kontrolünden geçtiğini ve her iki düğümdeki ayarların aynı olduğunu kontrol edelim:
Leaf11# show vpc
vPC domain id : 1
Peer status : peer adjacency formed ok
vPC keep-alive status : peer is alive
Configuration consistency status : success
Per-vlan consistency status : success
Type-2 consistency status : success
vPC role : primary
Number of vPCs configured : 0
Peer Gateway : Disabled
Dual-active excluded VLANs : -
Graceful Consistency Check : Enabled
Auto-recovery status : Disabled
Delay-restore status : Timer is off.(timeout = 30s)
Delay-restore SVI status : Timer is off.(timeout = 10s)
Operational Layer3 Peer-router : Disabled
vPC status
----------------------------------------------------------------------------
Id Port Status Consistency Reason Active vlans
-- ------------ ------ ----------- ------ ---------------
5 Po5 up success success 1
BGP eşlemesi
Son olarak Overlay ağını kurmaya geçebilirsiniz.
Makalenin bir parçası olarak, aşağıdaki şemada gösterildiği gibi ana bilgisayarlar arasında bir ağ düzenlemek gerekiyor:
Bir Yer Paylaşımı ağını yapılandırmak için, l2vpn evpn ailesi desteğiyle Omurga ve Yaprak anahtarlarında BGP'yi etkinleştirmeniz gerekir:
feature bgp
nv overlay evpn
Daha sonra Leaf ve Spine arasında BGP eşlemesini yapılandırmanız gerekir. Kurulumu basitleştirmek ve yönlendirme bilgilerinin dağıtımını optimize etmek için Spine'ı bir Rota Reflektör sunucusu olarak yapılandırıyoruz. Kurulumu optimize etmek için şablonları kullanarak tüm Yaprakları yapılandırmaya yazacağız.
Yani Spine'daki ayarlar şöyle görünüyor:
router bgp 65001
template peer LEAF
remote-as 65001
update-source loopback0
address-family l2vpn evpn
send-community
send-community extended
route-reflector-client
neighbor 10.255.1.11
inherit peer LEAF
neighbor 10.255.1.12
inherit peer LEAF
neighbor 10.255.1.21
inherit peer LEAF
Yaprak anahtarındaki kurulum benzer görünüyor:
router bgp 65001
template peer SPINE
remote-as 65001
update-source loopback0
address-family l2vpn evpn
send-community
send-community extended
neighbor 10.255.1.101
inherit peer SPINE
neighbor 10.255.1.102
inherit peer SPINE
Spine'da tüm Yaprak anahtarlarla eşlemeyi kontrol edelim:
Spine1# sh bgp l2vpn evpn summary
<.....>
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.255.1.11 4 65001 7 8 6 0 0 00:01:45 0
10.255.1.12 4 65001 7 7 6 0 0 00:01:16 0
10.255.1.21 4 65001 7 7 6 0 0 00:01:01 0
Gördüğünüz gibi BGP'de herhangi bir sorun olmadı. VxLAN kurulumuna geçelim. Daha fazla konfigürasyon yalnızca anahtarların Yaprak tarafında yapılacaktır. Spine yalnızca ağın çekirdeği görevi görür ve yalnızca trafiğin iletilmesinde rol oynar. Tüm kapsülleme ve yol belirleme çalışmaları yalnızca Yaprak anahtarlarda gerçekleşir.
NVE'yi kurma
NVE - ağ sanal arayüzü
Kuruluma başlamadan önce bazı terminolojiyi tanıtalım:
VTEP - Vitual Tunnel End Point, VxLAN tünelinin başladığı veya bittiği cihaz. VTEP'in mutlaka herhangi bir ağ cihazı olması gerekmez. VxLAN teknolojisini destekleyen bir sunucu aynı zamanda sunucu görevi de görebilir. Topolojimizde tüm Yaprak anahtarlar VTEP'tir.
VNI - Sanal Ağ Dizini - VxLAN içindeki ağ tanımlayıcısı. VLAN ile bir benzetme yapılabilir. Ancak bazı farklılıklar var. Bir yapı kullanıldığında, VLAN'lar yalnızca bir Yaprak anahtar içinde benzersiz hale gelir ve ağ üzerinden iletilmez. Ancak her VLAN, kendisiyle ilişkilendirilmiş ve ağ üzerinden zaten iletilen bir VNI numarasına sahip olabilir. Neye benzediği ve nasıl kullanılabileceği daha ayrıntılı olarak tartışılacaktır.
VxLAN teknolojisi özelliğinin çalışmasını ve VLAN numaralarını bir VNI numarasıyla ilişkilendirme yeteneğini etkinleştirelim:
feature nv overlay
feature vn-segment-vlan-based
VxLAN'ın çalışmasından sorumlu olan NVE arayüzünü yapılandıralım. Bu arayüz çerçevelerin VxLAN başlıklarında kapsüllenmesinden sorumludur. GRE için Tünel arayüzüne bir benzetme yapabilirsiniz:
interface nve1
no shutdown
host-reachability protocol bgp ! используем BGP для передачи маршрутной информации
source-interface loopback0 ! интерфейс с которого отправляем пакеты loopback0
Leaf-21 anahtarında her şey sorunsuz bir şekilde yaratılmıştır. Ancak komutun çıktısını kontrol edersek show nve peers
, o zaman boş olacak. Burada VPC yapılandırmasına geri dönmeniz gerekiyor. Leaf-11 ve Leaf-12'nin çift olarak çalıştığını ve bir VPC alanı tarafından birleştirildiğini görüyoruz. Bu bize aşağıdaki durumu verir:
Host-2, Leaf-21'e bir çerçeve gönderir ve bunu ağ üzerinden Host-1'e iletir. Ancak Leaf-21, Host-1'in MAC adresine aynı anda iki VTEP aracılığıyla erişilebildiğini görüyor. Yaprak-21 bu durumda ne yapmalıdır? Sonuçta bu, ağda bir döngünün görünebileceği anlamına gelir.
Bu durumu çözmek için Leaf-11 ve Leaf-12'nin fabrika içerisinde tek cihaz olarak hareket etmesine ihtiyacımız var. Çözüm oldukça basit. Tüneli oluşturduğumuz Loopback arayüzüne ikincil bir adres ekleyin. İkincil adres her iki VTEP'te de aynı olmalıdır.
interface loopback0
ip add 10.255.1.10/32 secondary
Böylece diğer VTEP'lerin bakış açısından aşağıdaki topolojiyi elde ederiz:
Yani artık Leaf-21'in IP adresi ile iki Leaf-11 ve Leaf-12 arasındaki sanal IP arasında tünel inşa edilecek. Artık MAC adresini iki cihazdan öğrenmede herhangi bir sorun yaşanmayacak ve trafik bir VTEP'ten diğerine geçebilecek. İki VTEP'ten hangisinin trafiği işleyeceğine Spine'daki yönlendirme tablosu kullanılarak karar verilir:
Spine1# sh ip route
<.....>
10.255.1.10/32, ubest/mbest: 2/0
*via 10.255.1.11, Eth1/1, [110/41], 1d01h, ospf-UNDERLAY, intra
*via 10.255.1.12, Eth1/2, [110/41], 1d01h, ospf-UNDERLAY, intra
10.255.1.11/32, ubest/mbest: 1/0
*via 10.255.1.11, Eth1/1, [110/41], 1d22h, ospf-UNDERLAY, intra
10.255.1.12/32, ubest/mbest: 1/0
*via 10.255.1.12, Eth1/2, [110/41], 1d01h, ospf-UNDERLAY, intra
Yukarıda görebileceğiniz gibi, 10.255.1.10 adresine iki Sonraki atlama noktası aracılığıyla hemen ulaşılabilir.
Bu aşamada temel bağlantı konusunu ele aldık. NVE arayüzünü ayarlamaya geçelim:
Vlan 10'u hemen etkinleştirelim ve ana bilgisayarlar için her Yaprakta VNI 10000 ile ilişkilendirelim. Ana bilgisayarlar arasında bir L2 tüneli kuralım
vlan 10 ! Включаем VLAN на всех VTEP подключенных к необходимым хостам
vn-segment 10000 ! Ассоциируем VLAN с номер VNI
interface nve1
member vni 10000 ! Добавляем VNI 10000 для работы через интерфейс NVE. для инкапсуляции в VxLAN
ingress-replication protocol bgp ! указываем, что для распространения информации о хосте используем BGP
Şimdi diğer eşleri ve BGP EVPN tablosunu kontrol edelim:
Leaf21# sh nve peers
Interface Peer-IP State LearnType Uptime Router-Mac
--------- --------------- ----- --------- -------- -----------------
nve1 10.255.1.10 Up CP 00:00:41 n/a ! Видим что peer доступен с secondary адреса
Leaf11# sh bgp l2vpn evpn
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 10.255.1.11:32777 (L2VNI 10000) ! От кого именно пришел этот l2VNI
*>l[3]:[0]:[32]:[10.255.1.10]/88 ! EVPN route-type 3 - показывает нашего соседа, который так же знает об l2VNI10000
10.255.1.10 100 32768 i
*>i[3]:[0]:[32]:[10.255.1.20]/88
10.255.1.20 100 0 i
* i 10.255.1.20 100 0 i
Route Distinguisher: 10.255.1.21:32777
* i[3]:[0]:[32]:[10.255.1.20]/88
10.255.1.20 100 0 i
*>i 10.255.1.20 100 0 i
Yukarıda sadece EVPN rota tipi 3 rotayı görüyoruz. Bu rota türü eşten (Yaprak) bahsediyor, fakat ana bilgisayarlarımız nerede?
Mesele şu ki, MAC ana bilgisayarları hakkındaki bilgiler EVPN rota tipi 2 aracılığıyla iletiliyor
Ana bilgisayarlarımızı görmek için EVPN rota türü 2'yi yapılandırmanız gerekir:
evpn
vni 10000 l2
route-target import auto ! в рамках данной статьи используем автоматический номер для route-target
route-target export auto
Host-2'den Host-1'e ping atalım:
Firewall2# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 data bytes
36 bytes from 192.168.10.2: Destination Host Unreachable
Request 0 timed out
64 bytes from 192.168.10.1: icmp_seq=1 ttl=254 time=215.555 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=254 time=38.756 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=254 time=42.484 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=254 time=40.983 ms
Aşağıda, BGP tablosunda ana bilgisayar MAC adresine sahip rota türü 2'nin göründüğünü görebiliriz - 5001.0007.0007 ve 5001.0008.0007
Leaf11# sh bgp l2vpn evpn
<......>
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 10.255.1.11:32777 (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216 ! evpn route-type 2 и mac адрес хоста 1
10.255.1.10 100 32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216 ! evpn route-type 2 и mac адрес хоста 2
* i 10.255.1.20 100 0 i
*>l[3]:[0]:[32]:[10.255.1.10]/88
10.255.1.10 100 32768 i
Route Distinguisher: 10.255.1.21:32777
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
10.255.1.20 100 0 i
*>i 10.255.1.20 100 0 i
Daha sonra, MAC Host hakkında bilgi aldığınız Güncelleme hakkında ayrıntılı bilgileri görebilirsiniz. Aşağıda komut çıktısının tamamı yer almamaktadır.
Leaf21# sh bgp l2vpn evpn 5001.0007.0007
BGP routing table information for VRF default, address family L2VPN EVPN
Route Distinguisher: 10.255.1.11:32777 ! отправил Update с MAC Host. Не виртуальный адрес VPC, а адрес Leaf
BGP routing table entry for [2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216,
version 1507
Paths: (2 available, best #2)
Flags: (0x000202) (high32 00000000) on xmit-list, is not in l2rib/evpn, is not i
n HW
Path type: internal, path is valid, not best reason: Neighbor Address, no labe
led nexthop
AS-Path: NONE, path sourced internal to AS
10.255.1.10 (metric 81) from 10.255.1.102 (10.255.1.102) ! с кем именно строим VxLAN тоннель
Origin IGP, MED not set, localpref 100, weight 0
Received label 10000 ! Номер VNI, который ассоциирован с VLAN, в котором находится Host
Extcommunity: RT:65001:10000 SOO:10.255.1.10:0 ENCAP:8 ! Тут видно, что RT сформировался автоматически на основе номеров AS и VNI
Originator: 10.255.1.11 Cluster list: 10.255.1.102
<........>
Fabrikadan geçerken çerçevelerin nasıl göründüğüne bakalım:
ARP'yi Bastır
Harika, artık ana bilgisayarlar arasında L2 iletişimimiz var ve işi orada bitirebiliriz. Ancak her şey o kadar basit değil. Ev sahibimiz az olduğu sürece hiçbir sorun olmayacak. Ancak yüzlerce ve binlerce ana bilgisayarın olduğu bir durumu hayal edelim. Hangi sorunla karşılaşabiliriz?
Bu sorun BUM(Yayın, Bilinmeyen Tek Noktaya Yayın, Çok Noktaya Yayın) trafiğidir. Bu yazımızda yayın trafiğiyle ilgilenme seçeneğini ele alacağız.
Ethernet ağlarındaki ana Yayın oluşturucu, ARP protokolü aracılığıyla ana bilgisayarların kendisidir.
Nexus, ARP istekleriyle mücadele etmek için şu mekanizmayı uygular: bastırma-arp.
Bu özellik şu şekilde çalışır:
- Host-1 kendi ağının Broadcast adresine bir APR isteği gönderir.
- İstek Leaf anahtarına ulaşır ve bu isteği Host-2'ye doğru kumaşın daha da iletmek yerine Leaf kendisi yanıt verir ve gerekli IP ve MAC'i gösterir.
Böylece yayın talebi fabrikaya gitmedi. Peki Leaf yalnızca MAC adresini biliyorsa bu nasıl işe yarayabilir?
Her şey oldukça basit, EVPN rota tipi 2, MAC adresine ek olarak bir MAC/IP kombinasyonu da iletebilir. Bunu yapmak için Leaf'teki VLAN'da bir IP adresi yapılandırmanız gerekir. Soru ortaya çıkıyor, hangi IP'yi ayarlamalıyım? Nexus'ta tüm anahtarlarda dağıtılmış (aynı) bir adres oluşturmak mümkündür:
feature interface-vlan
fabric forwarding anycast-gateway-mac 0001.0001.0001 ! задаем virtual mac для создания распределенного шлюза между всеми коммутаторами
interface Vlan10
no shutdown
ip address 192.168.10.254/24 ! на всех Leaf задаем одинаковый IP
fabric forwarding mode anycast-gateway ! говорим использовать Virtual mac
Böylece, ana bilgisayarların bakış açısından ağ şöyle görünecektir:
BGP l2route evpn'yi kontrol edelim
Leaf11# sh bgp l2vpn evpn
<......>
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 10.255.1.11:32777 (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216
10.255.1.21 100 32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
10.255.1.10 100 0 i
* i 10.255.1.10 100 0 i
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.10.20]/248
10.255.1.10 100 0 i
*>i 10.255.1.10 100 0 i
<......>
Route Distinguisher: 10.255.1.21:32777
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
10.255.1.20 100 0 i
*>i 10.255.1.20 100 0 i
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.10.20]/248
*>i 10.255.1.20 100 0 i
<......>
Komut çıktısından, EVPN rota türü 2'de MAC'a ek olarak artık ana bilgisayarın IP adresini de gördüğümüzü görebilirsiniz.
Arp bastırma ayarına dönelim. Bu ayar her VNI için ayrı ayrı etkinleştirilir:
interface nve1
member vni 10000
suppress-arp
O zaman bazı karmaşıklıklar ortaya çıkar:
- Bu özelliğin çalışması için TCAM belleğinde alan gereklidir. Arp bastırma ayarlarına bir örnek:
hardware access-list tcam region arp-ether 256
Bu ayar çift genişlik gerektirecektir. Yani, 256'yı ayarlarsanız, TCAM'de 512'yi serbest bırakmanız gerekir, çünkü TCAM'ı kurmak bu makalenin kapsamı dışındadır, çünkü TCAM'ı kurmak yalnızca size atanan göreve bağlıdır ve bir ağdan diğerine farklılık gösterebilir.
- Tüm Yaprak anahtarlarda bastırma-arp uygulaması yapılmalıdır. Ancak bir VPC etki alanında bulunan Yaprak çiftleri üzerinde yapılandırma yapılırken karmaşıklık ortaya çıkabilir. TCAM değiştirilirse çiftler arasındaki tutarlılık bozulacak ve bir düğüm devre dışı bırakılabilecektir. Ayrıca TCAM değişiklik ayarını uygulamak için cihazın yeniden başlatılması gerekebilir.
Sonuç olarak, sizin durumunuzda bu ayarın çalışan bir fabrikada uygulamaya değer olup olmadığını dikkatlice düşünmeniz gerekir.
Böylece serinin ilk bölümü tamamlanıyor. Bir sonraki bölümde ağların farklı VRF'lere ayrılmasıyla VxLAN yapısı üzerinden yönlendirmeye bakacağız.
Ve şimdi herkesi davet ediyorum
Kaynak: habr.com