Fabrika VxLAN. Część 2

Cześć, Habr. Kontynuuję cykl artykułów na temat technologii VxLAN EVPN, które zostały napisane specjalnie na potrzeby uruchomienia kursu "Inżynier sieciowy" od OTUS. Dzisiaj przyjrzymy się interesującej części zadań — routingu. Jakby to nie brzmiało banalnie, w ramach pracy sieciowej fabryki wszystko może być bardziej skomplikowane.

Fabrika VxLAN. Część 2

Część 1 cyklu — Łączność L2 między serwerami

W poprzedniej części osiągnęliśmy jedną domenę rozgłoszeniową, zbudowaną na bazie sieci fabrycznej na Nexus 9000v. Jednak to nie jest cały zakres zadań, które musimy rozwiązać w ramach sieci centrum danych. Dzisiaj przyjrzymy się kolejnemu zadaniu — routingu pomiędzy sieciami lub pomiędzy VNI.

Przypomnę, że używamy topologii Spine-Leaf:

Fabrika VxLAN. Część 2

Na początek omówimy, jak przebiega routing i jakie są jego cechy.

Aby lepiej to zrozumieć, uprościmy schemat logiczny i dodamy jeszcze jeden VNI 20000 dla Host-2. W rezultacie otrzymujemy:

Fabrika VxLAN. Część 2

Jak w takim przypadku można przesłać ruch z jednego hosta do drugiego?

Są dwie opcje:

  1. Na wszystkich przełącznikach Leaf przechowywać informacje o wszystkich VNI, wtedy cały routing odbywa się na pierwszym Leaf w sieci;
  2. Użyć specjalnie dedykowanego — L3 VNI

Pierwsza metoda jest prosta i wygodna. Wymaga tylko wprowadzenia wszystkich VNI na wszystkie przełączniki Leaf. Jednak wprowadzenie kilku setek lub tysięcy VNI na wszystkie Leaf nie wydaje się już prostym zadaniem. Dlatego w praktyce rzadko się ją stosuje.

Przyjrzymy się drugiemu sposobowi, który jest bardziej interesujący i nieco bardziej skomplikowany, ale oferuje większą elastyczność w konfiguracji fabryki.

Dodamy do topologii VRF "PROD". Dodamy do niej interface VLAN 10 na parach Leaf-11/12 oraz interface VLAN 20 na Leaf-21. VLAN 20 będzie skojarzony z VNI 20000

vrf context PROD
  rd auto       ! Route Distinguisher nie jest kluczowy, możemy używać automatycznie utworzonego
  address-family ipv4 unicast
    route-target both auto      ! określamy Route-target, z którym będą importowane i eksportowane prefiksy do/pobocza 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

Aby korzystać z L3VNI, należy utworzyć nowy VLAN, skojarzyć go z nowym VNI. Nowy VNI powinien być taki sam na wszystkich Leaf, które są zainteresowane informacjami o VLAN 10 i 20

vlan 99
  vn-segment 99000

interface nve1
  member vni 99000 associate-vrf        ! Tworzymy L3 VNI

vrf context PROD
  vni 99000                             ! Przypisujemy L3 VNI do określonego VRF

W rezultacie schemat będzie wyglądać tak:

Fabrika VxLAN. Część 2

Pozostało tylko trochę do zrobienia — dodać jeszcze jeden interfejs — interface vlan 99 w VRF PROD

interface Vlan99
  no shutdown
  vrf member PROD
  ip forward  ! Na interfejsie nie powinno być IP. Używany jest tylko do przesyłania pakietów między Leaf.

Ostatecznie logika przechodzenia ramki od Host-1 do Host-2 jest następująca:

  1. Ramka wysłana przez Host-1 trafia na Leaf w VLAN 10, który jest powiązany z VNI 10000;
  2. Leaf sprawdza, gdzie znajduje się adres docelowy, i znajduje go przez L3 VNI na drugim przełączniku Leaf;
  3. Gdy tylko znajdzie trasę do adresu docelowego, Leaf pakuje ramkę w nagłówek z wymaganym L3VNI 99000 — i wysyła w kierunku drugiego Leaf;
  4. Drugi przełącznik Leaf otrzymuje dane z L3VNI 99000. Wydobywa oryginalną ramkę i przenosi ją do potrzebnego L2VNI 20000, a następnie do VLAN 20.

W rezultacie taka praca L3VNI eliminuje potrzebę trzymania na wszystkich przełącznikach Leaf informacji o wszystkich VNI w sieci.

Ostatecznie, gdy wysyłamy ruch z Host-1 do Host-2, pakiet jest opakowywany w VxLAN z nowym VNI — 99000:

Fabrika VxLAN. Część 2

Musimy zrozumieć, jak dokładnie Leaf-1 dowiaduje się o adresie MAC z innego VNI. Dzieje się to również za pomocą EVPN route-type 2 (MAC/IP).

Poniżej przedstawiono proces rozpowszechniania trasy dotyczącej prefiksu znajdującego się w innym VNI:

Fabrika VxLAN. Część 2

To znaczy, że adresy uzyskane z VNI 20000 mają dwa RT.
Przypominam, że trasy uzyskane z Update trafiają do tabeli BGP z Route-target wskazanym w ustawieniach VRF (proces jest nieco bardziej skomplikowany, jednak w ramach tego artykułu nie będziemy się w to zagłębiać).
Sam RT jest formowany według wzoru: AS:VNI (jeśli używany jest tryb automatyczny).

Przykład formowania RT w trybie automatycznym i ręcznym:

vrf context PROD
  address-family ipv4 unicast
    route-target import auto - tryb automatyczny
    route-target export 65001:20000 - ręczny tryb formowania RT

W wyniku powyższego widać, że prefiksy z innego VNI mają dwie wartości RT.
Jedna z nich to 65001:99000 — dodatkowy L3 VNI. Ponieważ ten VNI jest taki sam na wszystkich Leaf i podlega naszym zasadom importu w ustawieniach VRF — prefiks trafia do tabeli BGP, co można zobaczyć z wyjścia:

sh bgp l2vpn evpn

   Sieć            Następny skok            Metryka     LocPrf     Waga Ścieżka
Numer rozdzielający: 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

Numer rozdzielający: 10.255.1.21:32787
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.20]\/272    ! Prefiks uzyskany z VNI 20000
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

Przy bliższym przyjrzeniu się uzyskanemu aktualizacji, widać, że ten prefiks ma dwa RT:

Leaf11# sh bgp l2vpn evpn 5001.0008.0007
Informacje o tabeli routingu BGP dla VRF default, rodzaj adresu L2VPN EVPN
Numer rozdzielający: 10.255.1.21:32787
Wpis w tabeli routingu BGP dla [2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.20]\/272, wersja 5164
Ścieżki: (2 dostępne, najlepsza #2)
Flagi: (0x000202) (high32 00000000) na liście xmit, nie jest w l2rib/evpn, nie jest w HW

  Typ ścieżki: wewnętrzny, ścieżka jest ważna, nie najlepsza przyczyna: Adres sąsiada, brak oznakowanego next hop
  Ścieżka AS: BRAK, ścieżka pochodzi od wewnątrz AS
    10.255.1.20 (metryka 81) z 10.255.1.102 (10.255.1.102)
      Początek IGP, MED nie ustawiony, localpref 100, waga 0
      Otrzymany label 20000 99000                                 ! Dwa label do pracy VxLAN
      Extcommunity: RT:65001:20000 RT:65001:99000 SOO:10.255.1.20:0 ENCAP:8     ! Dwa wartości Route-target, na podstawie których dodano ten prefiks
          Router MAC:5001.0005.0007
      Autor: 10.255.1.21 Lista klastrów: 10.255.1.102

W tabeli routingu na Leaf-1 również można zauważyć prefiks 192.168.20.20\/32:

Leaf11# sh ip route vrf PROD
192.168.10.0\/24, ubest\/mbest: 1\/0, podłączone
 * przez 192.168.10.1, Vlan10, [0\/0], 01:29:28, bezpośrednie
192.168.10.1\/32, ubest\/mbest: 1\/0, podłączone
 * przez 192.168.10.1, Vlan10, [0\/0], 01:29:28, lokalne
192.168.10.10\/32, ubest\/mbest: 1\/0, podłączone
 * przez 192.168.10.10, Vlan10, [190\/0], 01:27:22, hmm
192.168.20.20\/32, ubest\/mbest: 1\/0 ! Adres Host-2
 * przez 10.255.1.20fault, [200\/0], 01:20:20, bgp-65001, wewnętrzny, tag 65001 ! Dostępny przez Leaf-2
(evpn) segid: 99000 tunnelid: 0xaff0114 encap: VXLAN ! Przez VNI 99000

Zauważyliśmy brak głównego prefiksu 192.168.20.0\/24 w tabeli routingu?
Dokładnie, go tam nie ma. To znaczy, że zdalne Leafy otrzymują informacje tylko o hostach, które znajdują się w twojej sieci. I to jest poprawne zachowanie. Wyżej we wszystkich aktualizacjach widać, że przychodzi informacja zawierająca MAC/IP. Nie ma mowy o jakichkolwiek prefiksach.

To działa protokół Host Mobility Manager (HMM), który wypełnia tabelę ARP, z której następnie wypełniana jest tabela BGP (w ramach tego artykułu pominiemy ten proces). Na podstawie informacji uzyskanych z HMM formowane są EVPN route-type 2 (przechodzi MAC/IP).

Jednak co zrobić, jeśli istnieje potrzeba przekazania informacji o jakimś prefiksie?

Dla tego typu informacji istnieje EVPN route-type 5 — umożliwia on przesyłanie prefiksów przez address-family l2vpn evpn (ten typ tras w momencie pisania artykułu znajduje się tylko w wersji roboczej) RFC, z tego powodu zachowanie tego typu trasy może się różnić w zależności od producenta)

Aby przesłać prefiksy, należy w trakcie BGP dla VRF dodać prefiksy, które będą ogłaszane:

router bgp 65001
  vrf PROD
    address-family ipv4 unicast
      redistribute direct route-map VNI20000        ! W tym przypadku ogłaszamy prefiksy podłączenia bezpośredniego do Leaf w VNI 20000
route-map VNI20000 permit 10
  match ip address prefix-list VNI20000_OUT    ! Określamy, którego prefix-list użyć

ip prefix-list VNI20000_OUT seq 5 permit 192.168.20.0/24   ! Określamy, które sieci trafią do EVPN route-type 5

Ostatecznie w aktualizacji będzie:

Fabrika VxLAN. Część 2

Zobaczmy tabelę BGP. Oprócz EVPN route-type 2, 3 pojawiły się trasy typu 5, które zawierają informacje o numerze sieci:

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 z numerem prefiksu
                      10.255.1.10              0        100          0 ?
* i                   

W tabeli routingu prefiks również się pojawił:

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 ! Zdalny prefiks, dostępny przez Leaf1/2 (adres Next-hop = wirtualny IP między parą VPC)
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN ! Prefiks dostępny przez 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

Na tym zakończymy drugą część cyklu artykułów o VxLAN EVPN. W następnej części omówimy różne metody routingu między VRF.

Podstawy protokołu IPv6 i jego różnice w porównaniu do IPv4

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster