Fabrica VxLAN. Partea 2

Bună, Habr. Continuăm ciclul de articole despre tehnologia VxLAN EVPN, care au fost scrise special pentru lansarea cursului "Inginer de rețea" de la OTUS. Și astăzi vom analiza o parte interesantă a problemelor — rutarea. Cât de banal ar suna, totuși, în cadrul funcționării unei fabrici de rețea, totul poate fi mai complicat decât pare.

Fabrica VxLAN. Partea 2

Partea 1 a ciclului — Conectivitatea L2 între servere

În partea anterioară, am obținut un domeniu de broadcast construit pe o fabrică de rețea pe Nexus 9000v. Totuși, aceasta nu este întreaga gamă de probleme care trebuie rezolvate în rețeaua centrului de date. Astăzi vom examina următoarea problemă — rutarea între rețele sau între VNI.

Reamintesc că se folosește topologia Spine-Leaf:

Fabrica VxLAN. Partea 2

Mai întâi, să analizăm cum se desfășoară rutarea și ce caracteristici există.

Pentru a înțelege, vom simplifica schema logică și vom adăuga un alt VNI 20000 pentru Host-2. Rezultatul va fi:

Fabrica VxLAN. Partea 2

Cum se poate transmite traficul de la un Host la altul în acest caz?

Există două opțiuni:

  1. Pe toate switch-urile Leaf să păstreze informații despre toate VNI, astfel încât toată rutarea să aibă loc la primul Leaf din rețea;
  2. Să folosim un VNI L3 dedicat

Prima opțiune este simplă și convenabilă. Deoarece este nevoie doar să introducem toate VNI pe toate switch-urile Leaf. Totuși, să introducem câteva sute sau mii de VNI pe toate Leaf-uri nu mai pare o sarcină simplă. Prin urmare, în practică, aceasta este utilizată destul de rar.

Vom analiza a doua opțiune, care este mai interesantă și puțin mai complicată, dar oferă o flexibilitate mai mare în configurarea fabricii.

Vom adăuga în topologie VRF "PROD". În aceasta vom adăuga interface vlan 10 pe perechea Leaf-11/12 și interface VLAN 20 pe Leaf-21. VLAN 20 este asociat cu VNI 20000

vrf context PROD
  rd auto       ! Route Distinguisher nu este esențial și putem folosi unul generat automat
  address-family ipv4 unicast
    route-target both auto      ! specificăm Route-target cu care vor fi importate și exportate prefixele din/in VRF
vlan 20
  vn-segment 20000

interface nve 1
  member vni 20000
    ingress-replication protocol bgp

interface Vlan10
  no shutdown
  vrf member PROD
  ip address 192.168.20.1/24
  fabric forwarding mode anycast-gateway

Pentru a folosi L3VNI, este necesar să creăm un VLAN nou, asociindu-l cu un nou VNI. Noua VNI trebuie să fie identică pe toate Leaf-urile care sunt interesate de informațiile despre VLAN 10 și 20

vlan 99
  vn-segment 99000

interface nve1
  member vni 99000 associate-vrf        ! Creăm L3 VNI

vrf context PROD
  vni 99000                             ! Legăm L3 VNI de un anumit VRF

În rezultat, schema va fi prezentată astfel:

Fabrica VxLAN. Partea 2

A mai este puțin de lucrat — adaugă o interfață suplimentară — interface vlan 99 în VRF PROD

interface Vlan99
  no shutdown
  vrf member PROD
  ip forward  ! Interfața nu ar trebui să aibă IP. Este folosită doar pentru transportul pachetelor între Leaf

În concluzie, logica de trecere a cadrelor de la Host-1 la Host-2 este următoarea:

  1. Cadrele trimise de Host-1 ajung la Leaf în VLAN 10, care este asociat cu VNI 10000;
  2. Leaf verifică unde se află adresa destinației și o găsește prin L3 VNI pe cel de-al doilea switch Leaf;
  3. Odată ce rutele către adresa destinației sunt găsite, Leaf împachetează cadrul în antet cu necesarul L3VNI 99000 — și îl trimite spre al doilea Leaf;
  4. Cel de-al doilea switch Leaf primește datele din L3VNI 99000. Extrage cadrul inițial și îl mută în necesarul L2VNI 20000 și mai departe în VLAN 20.

Rezultatul unei astfel de funcționări L3VNI elimină necesitatea de a păstra informații despre toate VNI-urile pe toate switch-urile Leaf.

În concluzie, atunci când trimitem trafic de la Host-1 la Host-2, pachetul este împachetat în VxLAN cu un nou VNI — 99000:

Fabrica VxLAN. Partea 2

Rămâne să înțelegem cum anume Leaf-1 află despre adresa MAC din alt VNI. Acest lucru se întâmplă tot cu ajutorul EVPN route-type 2 (MAC/IP).

Mai jos este prezentat procesul de răspândire a rutei pentru prefixul aflat într-un alt VNI:

Fabrica VxLAN. Partea 2

Adică adresele obținute din VNI 20000 au două RT.
Reamintesc că rutele obținute din Update ajung în tabela BGP cu Route-target, specificat în setările VRF (procesul este puțin mai complex, dar în cadrul acestui articol nu ne vom aprofunda).
RT-ul se formează conform formulei: AS:VNI (dacă se folosește modul automat).

Exemplu de formare a RT în mod automat și manual:

vrf context PROD
  address-family ipv4 unicast
    route-target import auto - modul automat de funcționare
    route-target export 65001:20000 - modul manual de formare RT

Astfel, este evident că prefixele din alt VNI au două valori RT.
Una dintre ele este 65001:99000 — un L3 VNI suplimentar. Deoarece acest VNI este identic pe toate Leaf și se încadrează în regulile noastre de import în setările VRF — prefixul ajunge în tabela BGP, lucru pe care îl putem observa din ieșirea:

sh bgp l2vpn evpn

   Rețea            Next Hop            Metric     LocPrf     Weight Path
Identificator Ruta: 10.255.1.11:32777    (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]\/216
                      10.255.1.10                       100      32768 i
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[32]:[192.168.10.10]\/272
                      10.255.1.10                       100      32768 i
*>l[3]:[0]:[32]:[10.255.1.10]\/88
                      10.255.1.10                       100      32768 i

Identificator Ruta: 10.255.1.21:32787
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.20]\/272    ! Prefix obținut din VNI 20000
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

Dacă ne uităm mai atent la update-ul obținut, observăm că acest prefix are două RT:

Leaf11# sh bgp l2vpn evpn 5001.0008.0007
Informații despre tabelul de rutare BGP pentru VRF default, familie de adrese L2VPN EVPN
Identificator Ruta: 10.255.1.21:32787
Intrare în tabelul de rutare BGP pentru [2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.20]\/272, versiune 5164
Cărți: (2 disponibile, cel mai bun #2)
Flăcări: (0x000202) (high32 00000000) pe lista xmit, nu este în l2rib\/evpn, nu este în HW

  Tipul căii: intern, calea este validă, nu cea mai bună motiv: Adresa vecinului, fără nexthop etichetat
  AS-Path: NIMIC, calea provine intern din AS
    10.255.1.20 (metric 81) de la 10.255.1.102 (10.255.1.102)
      Origine IGP, MED nesetată, localpref 100, weight 0
      Etichetă primită 20000 99000                                 ! Două etichete pentru funcționarea VxLAN
      Extcommunity: RT:65001:20000 RT:65001:99000 SOO:10.255.1.20:0 ENCAP:8     ! Două valori Route-target, pe baza cărora s-a adăugat acest prefix
          Router MAC:5001.0005.0007
      Originator: 10.255.1.21 Lista cluster: 10.255.1.102

În tabela de rutare de pe Leaf-1 se poate observa și prefixul 192.168.20.20\/32:

Leaf11# sh ip route vrf PROD
192.168.10.0/24, ubest/mbest: 1/0, attached
 *via 192.168.10.1, Vlan10, [0/0], 01:29:28, direct
192.168.10.1/32, ubest/mbest: 1/0, attached
 *via 192.168.10.1, Vlan10, [0/0], 01:29:28, local
192.168.10.10/32, ubest/mbest: 1/0, attached
 *via 192.168.10.10, Vlan10, [190/0], 01:27:22, hmm
192.168.20.20/32, ubest/mbest: 1/0 ! Adresa Host-2
 *via 10.255.1.20fault, [200/0], 01:20:20, bgp-65001, internal, tag 65001 ! Accesibil prin Leaf-2
(evpn) segid: 99000 tunnelid: 0xaff0114 encap: VXLAN ! Prin VNI 99000

Ați observat absența principalului prefix 192.168.20.0\/24 în tabela de rutare?
Exact, nu este acolo. Aceasta înseamnă că foile îndepărtate primesc informații doar despre gazdele care există în reteaua dvs. Și acesta este un comportament corect. În toate update-urile de mai sus se poate observa că informațiile vin cu conținut MAC\/IP. Nu se discută despre niciun prefix.

Funcționează protocolul Host Mobility Manager (HMM), care completează tabela ARP din care ulterior se completează tabela BGP (în cadrul acestui articol vom sări acest proces). Pe baza informațiilor obținute din HMM se formează rutele EVPN de tip 2 (se transmite MAC\/IP).

Cu toate acestea, ce este de făcut dacă există nevoie să transmitem informații despre un anumit prefix?

Pentru acest tip de informație există tipul de rutare EVPN 5 — permite transmiterea prefixelor prin address-family l2vpn evpn (acest tip de rute este, în momentul scrierii acestui articol, doar în versiune draft RFC, din această cauză comportamentul acestui tip de rută poate varia între diferiți producători)

Pentru a transmite prefixe, este necesar să adăugăm prefixele care vor fi anunțate în procesul BGP pentru VRF:

router bgp 65001
  vrf PROD
    address-family ipv4 unicast
      redistribute direct route-map VNI20000        ! În acest caz, anunțăm prefixele conectării direct la Leaf în VNI 20000
route-map VNI20000 permit 10
  match ip address prefix-list VNI20000_OUT    ! Specificăm ce prefix-list să folosim

ip prefix-list VNI20000_OUT seq 5 permit 192.168.20.0/24   ! Specificăm ce rețele vor fi incluse în EVPN route-type 5

În concluzie, în Update va fi:

Fabrica VxLAN. Partea 2

Să ne uităm la tabela BGP. Pe lângă rutele EVPN de tip 2,3 au apărut și rute de tip 5, care conțin informații despre numărul rețelei:

Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:3
* i[5]:[0]:[0]:[24]:[192.168.10.0]/224
                      10.255.1.10              0        100          0 ?
*>i                   10.255.1.10              0        100          0 ?

Route Distinguisher: 10.255.1.11:32777
* i[2]:[0]:[0]:[48]:[5001.0007.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.0007.0007]:[32]:[192.168.10.10]/272
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i
* i[3]:[0]:[32]:[10.255.1.10]/88
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i

Route Distinguisher: 10.255.1.12:3
*>i[5]:[0]:[0]:[24]:[192.168.10.0]/224      ! EVPN route-type 5 cu numărul prefixului
                      10.255.1.10              0        100          0 ?
* i                   

În tabela de rutare, prefixul a apărut de asemenea:

Leaf21# sh ip ro vrf PROD
192.168.10.0/24, ubest/mbest: 1/0
 *via 10.255.1.10fault, [200/0], 00:14:32, bgp-65001, internal, tag 65001 ! Prefix îndepărtat disponibil prin Leaf1/2 (adresa Next-hop = IP virtual între perechea VPC)
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN ! Prefix disponibil prin L3VNI 99000

192.168.10.10/32, ubest/mbest: 1/0
 *via 10.255.1.10fault, [200/0], 02:33:40, bgp-65001, internal, tag 65001
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN

192.168.20.0/24, ubest/mbest: 1/0, attached
 *via 192.168.20.1, Vlan20, [0/0], 02:39:44, direct
192.168.20.1/32, ubest/mbest: 1/0, attached
 *via 192.168.20.1, Vlan20, [0/0], 02:39:44, local
192.168.20.20/32, ubest/mbest: 1/0, attached
 *via 192.168.20.20, Vlan20, [190/0], 02:35:46, hmm

Aici încheiem a doua parte a ciclului de articole despre VxLAN EVPN. În următoarea parte vom analiza diferite opțiuni de rutare între VRF.

Bazele protocolului IPv6 și diferențele față de IPv4

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster