VxLAN Fabrik. Teil 1

Hallo, Habr. Zurzeit bin ich Leiter des Kurses 'Netzwerktechniker' bei OTUS.
Kurz vor Beginn des neuen Kurses "Netzwerktechniker", ich habe eine Reihe von Artikeln zur VxLAN EVPN-Technologie vorbereitet.

Es gibt eine enorme Menge an Materialien zur Arbeit mit VxLAN EVPN, daher möchte ich verschiedene Aufgaben und Praktiken zur Problemlösung im modernen Rechenzentrum zusammenstellen.

VxLAN Fabrik. Teil 1

Im ersten Teil der Reihe zur VxLAN EVPN-Technologie möchte ich die Organisation der L2-Verbindung zwischen Hosts über die Netzwerkfabrik betrachten.

Alle Beispiele werden auf Cisco Nexus 9000v durchgeführt, die in einer Spine-Leaf-Topologie aufgebaut sind. Wir werden uns in diesem Artikel nicht mit der Konfiguration des Underlay-Netzes befassen.

  1. Underlay-Netz
  2. BGP-Peering für Adressfamilie l2vpn evpn
  3. NVE-Konfiguration
  4. Supress-arp

Underlay-Netz

Die verwendete Topologie sieht wie folgt aus:

VxLAN Fabrik. Teil 1

Lass uns die Adressierung auf allen Geräten festlegen:

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

Überprüfen wir, ob es eine IP-Verbindung zwischen allen Geräten gibt:

Leaf21# sh ip route

10.255.1.11/32, ubest/mbest: 2/0                      ! Leaf-11 ist über zwei Spine zugänglich
    *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 ist über zwei Spine zugänglich
    *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

Überprüfen wir, ob der VPC-Domain erstellt wurde und beide Switches die Konsistenzprüfung bestanden haben sowie die Konfiguration auf beiden Knoten identisch ist:

Leaf11# show vpc 

vPC-Domain-ID                     : 1
Peer-Status                       : Peer-Nachbarschaft erfolgreich hergestellt
vPC-Keep-Alive-Status             : Peer ist aktiv
Konfigurationskonsistenzstatus    : Erfolg
Per-VLAN-Konsistenzstatus         : Erfolg
Typ-2-Konsistenzstatus            : Erfolg
vPC-Rolle                          : primär
Anzahl der konfigurierten vPCs    : 0
Peer-Gateway                      : Deaktiviert
Dual-Active ausgeschlossen VLANs   : -
Sanfter Konsistenzcheck           : Aktiviert
Auto-Restaurierungsstatus          : Deaktiviert
Verzögerung-Wiederherstellungsstatus: Timer ist aus.(timeout = 30s)
Verzögerung-Wiederherstellungs-SVI-Status: Timer ist aus.(timeout = 10s)
Betriebsschicht-3-Peer-Router      : Deaktiviert

vPC-Status
----------------------------------------------------------------------------
Id    Port          Status Konsistenz Grund                Aktive VLANs
--    ------------  ------ ----------- ------                ---------------
5     Po5           up     Erfolg      Erfolg               1

BGP-Peering

Schließlich können wir mit der Konfiguration des Overlay-Netzes fortfahren.

Im Rahmen des Artikels ist es notwendig, ein Netzwerk zwischen den Hosts gemäß dem untenstehenden Schema zu organisieren:

VxLAN Fabrik. Teil 1

Um das Overlay-Netzwerk einzurichten, muss auf den Spine- und Leaf-Switches BGP mit Unterstützung für die Familie l2vpn evpn aktiviert werden:

feature bgp
nv overlay evpn

Als nächstes muss das BGP-Peering zwischen Leaf und Spine konfiguriert werden. Zur Vereinfachung der Konfiguration und Optimierung der Verbreitung von Routing-Informationen wird Spine als Route-Reflector-Server konfiguriert. Alle Leaf werden in der Konfiguration über Vorlagen eingebunden, um die Einrichtung zu optimieren.

So sieht die Konfiguration auf Spine aus:

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

Die Konfiguration auf dem Leaf-Switch sieht ähnlich aus:

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

Auf Spine überprüfen wir die Peering-Verbindung zu allen Leaf-Switches:

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

Wie wir sehen, gab es mit BGP keine Probleme. Lassen Sie uns mit der Konfiguration von VxLAN fortfahren. Die weitere Konfiguration wird nur auf der Seite der Leaf-Switches durchgeführt. Spine fungiert lediglich als Backbone des Netzwerks und überträgt nur den Traffic. Die gesamte Arbeit der Kapselung und der Pfadbestimmung erfolgt ausschließlich auf den Leaf-Switches.

NVE-Konfiguration

NVE — network virtual interface

Bevor wir mit der Konfiguration beginnen, lassen Sie uns einige Begriffe einführen:

VTEP — Virtual Tunnel End Point, das Gerät, an dem der VxLAN-Tunnel beginnt oder endet. Ein VTEP muss nicht zwingend ein Netzwerkgerät sein. Es kann auch ein Server sein, der die VxLAN-Technologie unterstützt. In unserer Topologie sind alle Leaf-Switches VTEPs.

VNI — Virtual Network Index — die Netzwerk-ID innerhalb von VxLAN. Man kann eine Analogie zu VLAN ziehen. Es gibt jedoch einige Unterschiede. Bei der Verwendung einer Fabrik sind VLANs nur innerhalb eines einzelnen Leaf-Switches einzigartig und werden nicht über das Netzwerk übertragen. Allerdings kann jede VLAN-Nummer mit einer VNI-Nummer verknüpft werden, die dann über das Netzwerk übertragen wird. Wie das aussieht und wie es verwendet werden kann, wird im Folgenden erörtert.

Aktivieren Sie das Feature für die Verwendung der VxLAN-Technologie und die Möglichkeit, VLAN-Nummern mit VNI-Nummern zu verknüpfen:

feature nv overlay
feature vn-segment-vlan-based

Wir richten das NVE-Interface ein, das für den Betrieb von VxLAN verantwortlich ist. Dieses Interface ist genau für die Kapselung von Datenrahmen in VxLAN-Header verantwortlich. Man kann eine Analogie zum Tunnel-Interface für GRE ziehen:

interface nve1
  no shutdown
  host-reachability protocol bgp ! wir verwenden BGP zur Übertragung von Routinginformationen
  source-interface loopback0    ! Interface von dem wir Pakete an loopback0 senden

Auf dem Switch Leaf-21 wird alles problemlos erstellt. Wenn wir jedoch die Ausgabe des Befehls überprüfen, show nve peers, wird die Ausgabe leer sein. Hier ist es notwendig, zu den VPC-Einstellungen zurückzukehren. Wir sehen, dass Leaf-11 und Leaf-12 im Verbund arbeiten und durch das VPC-Domain verbunden sind. Daraus ergibt sich folgende Situation:

Host-2 sendet einen Rahmen in Richtung Leaf-21, damit dieser ihn über das Netzwerk in Richtung Host-1 weiterleitet. Leaf-21 sieht jedoch, dass die MAC-Adresse von Host-1 sofort über zwei VTEPs verfügbar ist. Wie sollte Leaf-21 in diesem Fall handeln? Das bedeutet, dass sich möglicherweise eine Schleife im Netzwerk gebildet hat.

Um diese Situation zu lösen, müssen Leaf-11 und Leaf-12 innerhalb der Fabrik ebenfalls als ein Gerät auftreten. Dies lässt sich ziemlich einfach lösen. Am Loopback-Interface, über das wir den Tunnel aufbauen, fügen wir eine sekundäre Adresse hinzu. Die sekundäre Adresse muss auf beiden VTEPs identisch sein.

interface loopback0
 ip add 10.255.1.10/32 secondary

So erhalten wir aus der Sicht der anderen VTEPs die folgende Topologie:

VxLAN Fabrik. Teil 1

Das heißt, der Tunnel wird jetzt zwischen der IP-Adresse von Leaf-21 und der virtuellen IP-Adresse zwischen den beiden Leaf-11 und Leaf-12 aufgebaut. Jetzt wird es keine Probleme mit der Erfassung der MAC-Adresse von zwei Geräten geben, und der Datenverkehr kann von einem VTEP zum anderen übergehen. Wer genau von den beiden VTEPs den Datenverkehr bearbeitet, wird mithilfe der Routing-Tabelle auf der Spine entschieden:

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

Wie oben zu sehen ist, ist die Adresse 10.255.1.10 sofort über zwei Next-hop verfügbar.

In diesem Schritt haben wir die grundlegende Vernetzung verstanden. Lassen Sie uns jetzt mit der Konfiguration des NVE-Interfaces fortfahren:
Aktivieren wir sofort VLAN 10 und verknüpfen wir es mit VNI 10000 auf jedem Leaf für die Hosts. Wir richten einen L2-Tunnel zwischen den Hosts ein.

vlan 10                 ! VLAN auf allen VTEP aktivieren, die mit den erforderlichen Hosts verbunden sind
  vn-segment 10000      ! VLAN mit der VNI-Nummer assoziieren 

interface nve1
  member vni 10000      ! Fügen Sie VNI 10000 für die Arbeit über das NVE-Interface hinzu, um in VxLAN zu kapseln
    ingress-replication protocol bgp    ! Geben Sie an, dass zur Verbreitung von Hostinformationen BGP verwendet wird

Jetzt überprüfen wir die nve Peers und die Tabelle für BGP EVPN:

Leaf21# sh nve peers
Interface Peer-IP          State LearnType Uptime   Router-Mac
--------- ---------------  ----- --------- -------- -----------------
nve1      10.255.1.10      Up    CP        00:00:41 n/a                 ! Wir sehen, dass der Peer über die sekundäre Adresse erreichbar ist

Leaf11# sh bgp l2vpn evpn

   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)        ! Von wem genau kam dieser l2VNI
*>l[3]:[0]:[32]:[10.255.1.10]\/88                                   ! EVPN-Routen-Typ 3 - zeigt unseren Nachbarn, der ebenfalls über l2VNI10000 Bescheid weiß
                      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

Darüber sehen wir nur Routen vom EVPN-Routen-Typ 3. Dieser Routen-Typ berichtet über den Peer (Leaf), aber wo sind unsere Hosts?
Das liegt daran, dass Informationen über die MAC-Adressen der Hosts über den EVPN-Routen-Typ 2 übertragen werden.

Um unsere Hosts zu sehen, müssen wir den EVPN-Routen-Typ 2 konfigurieren:

evpn
  vni 10000 l2
    route-target import auto   ! In diesem Artikel verwenden wir eine automatische Nummer für den route-target
    route-target export auto

Wir machen ein Ping von Host-2 auf Host-1:

Firewall2# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 Datenbytes
36 Bytes von 192.168.10.2: Zielhost nicht erreichbar
Anforderung 0 hat die Zeitüberschreitung überschritten
64 Bytes von 192.168.10.1: icmp_seq=1 ttl=254 Zeit=215.555 ms
64 Bytes von 192.168.10.1: icmp_seq=2 ttl=254 Zeit=38.756 ms
64 Bytes von 192.168.10.1: icmp_seq=3 ttl=254 Zeit=42.484 ms
64 Bytes von 192.168.10.1: icmp_seq=4 ttl=254 Zeit=40.983 ms

Und unten sehen wir, dass in der BGP-Tabelle Route-Typ 2 mit den MAC-Adressen der Hosts — 5001.0007.0007 und 5001.0008.0007 hinzugefügt wurden.

Leaf11# sh bgp l2vpn evpn


   Netzwerk            Nächste Hop            Metrik     LocPrf     Gewicht Pfad
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 und MAC-Adresse des Hosts 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 und MAC-Adresse des Hosts 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

Im Folgenden kann man detaillierte Informationen zu dem Update einsehen, in dem Informationen über MAC-Hosts erhalten wurden. Nachfolgend wird nicht die gesamte Ausgabe des Befehls angezeigt.

Leaf21# sh bgp l2vpn evpn 5001.0007.0007

BGP-Routing-Tabelleninformationen für VRF standard, Adressfamilie L2VPN EVPN
Route Distinguisher: 10.255.1.11:32777        !  Update mit MAC-Host gesendet. Nicht die virtuelle Adresse des VPC, sondern die Adresse des Leaf
BGP-Routing-Tabelleneintrag für [2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]\/216,
 Version 1507
Pfad: (2 verfügbar, bester #2)
Flags: (0x000202) (high32 00000000) auf xmit-list, ist nicht in l2rib\/evpn, ist nicht in HW

  Pfadtyp: intern, Pfad ist gültig, nicht bester Grund: Nachbaradresse, kein gelabelter Nächster Hop
  AS-Pfad: NONE, Pfad stammt intern aus AS
    10.255.1.10 (Metrik 81) von 10.255.1.102 (10.255.1.102)    ! mit wem genau bauen wir den VxLAN-Tunnel
      Ursprung IGP, MED nicht gesetzt, localpref 100, Gewicht 0
      Erhaltenes Label 10000         ! Die Nummer des VNI, die mit dem VLAN assoziiert ist, in dem sich der Host befindet
      Extcommunity: RT:65001:10000 SOO:10.255.1.10:0 ENCAP:8        ! Hier ist zu sehen, dass der RT automatisch basierend auf den Nummern von AS und VNI gebildet wurde
      Ursprungsgeber: 10.255.1.11 Clusterliste: 10.255.1.102

Schauen wir uns an, wie die Frames aussehen, wenn sie durch die Fabrik übertragen werden:

VxLAN Fabrik. Teil 1

Suppress-ARP

Perfekt, die L2-Verbindung zwischen den Hosts ist hergestellt und man könnte hierauf enden. Allerdings ist nicht alles so einfach. Solange wir nur wenige Hosts haben, wird es keine Probleme geben. Aber lassen Sie uns eine Situation vorstellen, in der wir Hunderte und Tausende von Hosts haben. Welches Problem könnte auftauchen?

Dieses Problem ist der BUM (Broadcast, Unknown Unicast, Multicast) Verkehr. In diesem Artikel betrachten wir eine Möglichkeit, Broadcast-Verkehr zu bekämpfen.
Der Hauptgenerator von Broadcast in Ethernet-Netzen sind die Hosts selbst über das ARP-Protokoll.

Auf Nexus wurde folgendes Verfahren zur Bekämpfung von ARP-Anfragen implementiert – suppress-arp.
Die Funktionsweise dieses Features sieht folgendermaßen aus:

  1. Host-1 sendet eine APR-Anfrage an die Broadcast-Adresse seines Netzwerks.
  2. Die Anfrage erreicht den Leaf-Switch und anstatt diese Anfrage weiter zur Fabrik in Richtung Host-2 zu leiten, antwortet der Leaf selbst und gibt die benötigte IP und MAC an.

So wurde die Broadcast-Anfrage nicht an die Fabrik gesendet. Aber wie kann das funktionieren, wenn Leaf nur die MAC-Adresse kennt?

Alles ist ziemlich einfach, der EVPN-Routentyp 2 kann neben der MAC-Adresse auch eine MAC\/IP-Bindung übertragen. Dafür muss auf Leaf eine IP-Adresse im VLAN konfiguriert werden. Die Frage ist, welche IP zugewiesen werden soll? Auf Nexus besteht die Möglichkeit, eine verteilte (identische) Adresse auf allen Switches zu erstellen:

feature interface-vlan

fabric forwarding anycast-gateway-mac 0001.0001.0001    ! Wir weisen eine virtuelle MAC für die Erstellung eines verteilten Gateways zwischen allen Switches zu

interface Vlan10
  no shutdown
  ip address 192.168.10.254\/24          ! Wir weisen allen Leafs die gleiche IP zu
  fabric forwarding mode anycast-gateway    ! Wir sagen, dass die virtuelle MAC verwendet werden soll

So wird das Netzwerk aus der Sicht der Hosts folgendermaßen aussehen:

VxLAN Fabrik. Teil 1

Überprüfen wir BGP l2route evpn

Leaf11# sh bgp l2vpn evpn


   Netzwerk            Nächster Hop            Metrik     LocPrf     Gewicht Pfad
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

Aus der Ausgabe des Befehls ist zu erkennen, dass wir im EVPN-Routentyp 2 neben der MAC jetzt auch die IP-Adresse des Hosts sehen.

Wir kehren zur Konfiguration von suppress-arp zurück. Diese Einstellung wird für jedes VNI separat aktiviert:

interface nve1
  member vni 10000   
    suppress-arp

Danach tritt eine gewisse Schwierigkeit auf:

  • Für das Funktionieren dieser Funktion ist Platz im TCAM-Speicher erforderlich. Ich gebe ein Beispiel für die Konfiguration von suppress-arp:

hardware access-list tcam region arp-ether 256

Für diese Konfiguration ist ein double-wide erforderlich. Das heißt, wenn Sie 256 angeben, müssen im TCAM 512 freigegeben werden. Die TCAM-Konfiguration geht über den Rahmen dieses Artikels hinaus, da die TCAM-Konfiguration nur von der Ihnen gestellten Aufgabe abhängt und von einem Netzwerk zum anderen unterschiedlich sein kann.

  • Die Implementierung von suppress-arp muss auf allen Leaf-Switches erfolgen. Allerdings kann es bei der Konfiguration auf Leaf-Paaren, die sich im VPC-Domäne befinden, zu Schwierigkeiten kommen. Bei einer Änderung des TCAM kann die Konsistenz zwischen den Paaren gestört werden, und ein Knoten kann außer Betrieb gehen. Zusätzlich kann für die Anwendung der TCAM-Änderung ein Neustart des Geräts erforderlich sein.

Daher sollte man gut überlegen, ob es in Ihrer Situation sinnvoll ist, diese Konfiguration in einer laufenden Fabrik einzuführen.

Damit beenden wir den ersten Teil des Zyklus. Im nächsten Teil werden wir die Routenführung durch die VxLAN-Fabrik mit der Trennung der Netzwerke nach verschiedenen VRFs behandeln.

Und jetzt lade ich alle ein zu kostenlosen Webinar, in dessen Rahmen ich ausführlich über den Kurs berichten werde. Die ersten 20 Teilnehmer, die sich für dieses Webinar anmelden, erhalten innerhalb von 1-2 Tagen nach der Übertragung ein Zertifikat mit einem Rabatt per E-Mail.

Quelle: habr.com

60GB SSD 8Gb DDR4