Config VxLAN Cisco avec les Nexus 9K (Spines et Leafs)

 

 

 

Architecture Initiale

 

Ceci est une architecture simplifiée d’une implémentation VxLAN basée sur les Cisco 9K.

 

 

Quelques notions et notes générales 

 

VXLAN : Virtual Extensible Local Area Network. Une technologie d’Overlay Up-to-Date permettant d’étendre des réseaux Layer 2 au-dessus d’une infrastructure Layer 3, en se reposant sur une encapsulation MAC-in-UDP et en introduisant le concept de VNI (VXLAN Network Identifier).

Pour simplifier cette notion : Un même Vlan propagé d’un nuage niveau 2 vers un autre niveau 2 à travers une couche de Routage niveau 3. (Cela n’était pas possible avec les anciennes notions d’Infras classiques).

La Plateforme APIC d’ACI permet de centraliser la supervision, le management, le contrôle et la gestion du tout le network. (Pourtant, elle n’est pas obligatoire pour faire tourner des networks en VxLAN).

A l’heure actuelle de la rédaction de cet article, que les 9K sont supportés par l’ACI de Cisco. Lorsque tu achètes un Catalyst 9K, t’as le choix de le mettre en NX-OS classique ou bien en ACI mode (un OS lu et géré par la plateforme ACI). Dans les deux cas, le VxLAN est supporté nativement sur toutes les gammes 9K.

Equipements Supportés (source Cisco Live) :


Bien que la notion de VLAN classique (Dot1Q) consiste à ajouter 2 Octets à la trame initiale, cette dernière n’utilise que 12 bits uniquement pour le champ Vlan ID, cela permet d’obtenir 4096 Vlans sur l’équipement. Avec VxLAN, cet identifiant (VNI) est codé sur 24 bits ce qui permet d’augmenter la valeur de 4096 à 16 000 000.

VxLAN consiste à encapsuler une trame ordinaire dans une autre trame spécifique dans son propre champ UDP. Autrement et techniquement : VXLAN encapsule L2 dans L3/UDP. Avec cette encapsulation, on ajoute 50 Octets (environ) à la trame initiale. Si un réseau est configuré avec une MTU à 1500 sur les interfaces de ses équipements (cas très fréquents), on risque d’avoir un nombre élevé des fragmentations et ça dégrade les performances du réseau. Afin de résoudre ce problème, on peut : soit configurer les machines dans un Network VXLAN pour envoyer des trames - dès le départ- avec une MTU fixée à 1450, soit augmenter la MTU sur les interfaces des équipements du réseau à 1550 minimum.

Le routeur qui effectue cette encapsulation est nommé VTEP Router. Il possède une patte vers le DC interne (le LAN) et une autre vers les Spines/Leafs (autres N9K du Nuage VxLAN). C’est souvent le Leaf qui joue ce rôle de VTEP.

Lors de la réception d’un paquet VxLAN, le VTEP effectue la des-encapsulation dans le sens inverse afin d’acheminer celui-ci vers sa destination finale (MAC de Destination).

Anciennement, toutes les trames inconnues, de Broadcast, ARP Requests, de type Unknown ect sont encapsulées et envoyées dans des paquets de type Multicast. Une fois l’adresse MAC distante est connue et apprise par le 9K, les trames sont envoyées en Unicast. Actuellement, cela a évolué et on utilise plutôt le Ingress Replication (BGP EVPN) au lieu des Multicasts.

Une Trame VxLAN possède donc dans son champ de niveau 2 la MAC VTEP Dest + MAC VTEP Source, dans son champs Network niveau 3 les IPs source et destination des VTEPs, la couche 4 (Transport) est l’UDP, et la couche 5 est la Trame initiale (MAC Dest, MAC Src, IP Src, IP Dest et la DATA).

En Ethernet classique, les requêtes ARP fonctionnent grâce au broadcast (ARP Requests), par contre dans un Network VXLAN, elles utilisent une adresse IP Multicast.

Le VXLAN permet donc de transiter les données de broadcast sur un groupe de multicast personnalisé ce qui permet à tous les VTEP de communiquer ensemble pour répondre aux requêtes ARP. Cela est correct (historiquement) si on n’utilise pas l’EVPN, sinon avec EVPN c’est l’ARP suppression (Unicast via control-plane).

Les Spines (les coeurs) sont connectés à tous les Leafs, et les Leafs (les Edges) interconnectent tous les équipements du DataCenter (Serveurs, Firewalls, N2Ks …).

L’architecture entre les 9K Spines et Leafs est de type point à point (liens OSPF par exemple) : Underlay Network. Les protocoles IS-IS et eBGP sont aussi utilisés. Le VxLAN implémenté au-dessus de cette couche est de type Overlay (en utilisant le BGP EVPN). Ça s’appelle un « Clos Network ».

Un « Clos Network » se caractérise alors par :
- La présence des Leafs qui connectent les Endpoints (Serveurs, VMs, FWs,…).
- La présence des Spines qui font le Control Plane et assurent le transport IP.
- Tous les chemins sont actifs grâce à ECMP.
- L’Infra est hautement disponible et possède une scalabilité horizontale.

Les Leafs annoncent les MAC adresses apprises vers tous les autres Leafs du DC à travers le BGP (EVPN L2TP), on a au final les mêmes IP/MAC sur tous les Leafs. Les sessions BGP sont montées entre les Spines et les Leafs et non en FULL MESH. Les Spines jouent le rôle des « Route Reflectors » vers les Leafs.

Les Spines n’ont pas de visibilité sur les infos Layer 2 propagées à travers les sessions BGP, ils ne forwardent pas le trafic L2. Par contre, ils manipulent en Control Plane les routes EVPN et orchestrent le fonctionnement du BGP et du Multicast depuis/vers les Leafs.

Lorsqu’une réponse ARP est reçue, le VTEP garde « une trace » sur l’association IP-MAC Destination. Le flux suivant vers cette IP n’est plus acheminé en Multicast (comme le cas précédant du Flooding en Multicast de l’ARP Request), il est désormais en Unicast.

Avec un OSPF simple entre les Leafs et Spines + Configuration du Multicast, le VxLAN fonctionne parfaitement mais sans couche de contrôle, çela veut dire que les Multicasts sont toujours envoyés dans tous les sens « flood and learn » pour tout type des trames BUM (Broadcast, Unicast Unknown et Multicast). Afin d’éviter cela et d’ajouter le Contrôle Plane, on configure le « MP-BGP EVPN » au-dessus de l’OSPF. Ça permet d’acheminer les infos Layer 2 des Ends Users à travers des sessions BGPs contrôlées vers les VTEPs + un Caching en option (recommandé) des ARP/G-ARP afin de minimiser le flooding des trames ARP Request partout. Autrement, avec le MP-BGP EVPN : on limite le BUM, on consomme moins de ressources et on a plus de contrôle sur l'échange d'adresses MAC.

Distributed Anycast Gateway : Même MAC et même IP virtuelle (Gateway) pour chaque Vlan quelque soit l’emplacement du VTEP.

Pour être radical je vais écrire : Le protocole spanning tree est non utile, ni utilisable ! 0 port bloqué. Pour être Pro et Correct : Le Spanning-tree n’est pas utilisé dans le Fabric VXLAN, Oui, mais il reste et existe toujours côté Access (serveurs, Legacy,…).

VNI (Virtual Network Identifier) : 24 bits, identifiant unique pour un Segment VxLAN.

ARP suppression : Option à utiliser avec le EVPN BGP. Lorsqu’un Host est UP, il émet un Gratuitous ARP vers son Leaf correspond. Ce dernier garde un Cache de cet ARP (IP-MAC) et le transmets à travers le BGP vers les autres Leafs (BGP Route Type 2 ou BGP EVPN MAC Route Advertissement). Les Leafs effectuent un Update de leur ARP Cache avec cette IP-MAC apprise. L’optimisation est claire lorsqu’on reçoit un ARP Request :)

Si un VTEP ne trouve pas l’IP cherchée dans son cache suite à un processus d’ARP Request d’un End User quelconque, il effectue un Flooding classique en Multicast vers tous les autres VTEP du même Segment VxLAN.

To Resume :
- Underlay Network : OSPF, IS-IS, eBGP …
- Overlay Network : VxLAN (Data Plane, Encapsulation) + EVPN (Control Plane, BGP)

 

 

Configuration du VxLAN

 

Config des Spines

SPINE-1

! Activation des services:

feature pim
feature ospf
feature vn-segment-vlan-based
feature nv overlay
feature bgp
nv overlay evpn
! Config de l'OSPF :

router ospf 100
 router-id 192.168.200.1
! Config des Interfaces Interco Spines-Leafs en OSPF :

int eth1/2
 description LINK TO LEAF-1
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
int eth1/3
 description LINK TO LEAF-2
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
! Config d'une Loopback pour le flux Multicast, les Spines vont être des Anycast RPs :

int lo10
 description ANYCAST IP
 ip add 192.168.180.180 255.255.255.255
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 exit

ip pim rp-address 192.168.180.180
ip pim anycast-rp 192.168.180.180 192.168.200.1
ip pim anycast-rp 192.168.180.180 192.168.200.2
! Config du BGP-EVPN et déclarer les Spines comme des Route Reflectors :

router bgp 100
 log-neighbor-changes
 address-family l2vpn evpn
   retain route-target all
 neighbor 192.168.200.3
   remote-as 100
   update-source loopback10
   address-family l2vpn evpn
    send-community extended
    route-reflector-client
 neighbor 192.168.200.4
   remote-as 100
   update-source loopback10
   address-family l2vpn evpn
    send-community extended
    route-reflector-client


SPINE-2

! Activation des services : 

feature pim
feature ospf
feature vn-segment-vlan-based
feature nv overlay
feature bgp
nv overlay evpn
! Config de l'OSPF : 

router ospf 100
 router-id 192.168.200.2
! Config des Interfaces Interco Spines-Leafs OSPF : 

int eth1/2
 description LINK TO LEAF-1
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
int eth1/3
 description LINK TO LEAF-2
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
! Config d'une Loopback pour le flux Multicast, les Spines vont être des Anycast RPs : 

int lo10
 description ANYCAST IP
 ip add 192.168.180.180 255.255.255.255
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 exit

ip pim rp-address 192.168.180.180
ip pim anycast-rp 192.168.180.180 192.168.200.1
ip pim anycast-rp 192.168.180.180 192.168.200.2
! Config du BGP-EVPN et déclarer les Spines comme des Route Reflectors : 

router bgp 100
 log-neighbor-changes
 address-family l2vpn evpn
   retain route-target all
 neighbor 192.168.200.3
   remote-as 100
   update-source loopback10
   address-family l2vpn evpn
    send-community extended
    route-reflector-client
 neighbor 192.168.200.4
   remote-as 100
   update-source loopback10
   address-family l2vpn evpn
    send-community extended
    route-reflector-client


Config des Leafs

LEAF-1

! Allocation de l'Espace TCAM :

hardware access-list tcam region vacl 0
hardware access-list tcam region arp-ether 256
hardware qos ns-buffer-profile mesh
switching-mode store-forward
! Activation des services :

feature pim
feature ospf
feature vn-segment-vlan-based
feature nv overlay
feature interface-vlan
feature bgp
nv overlay evpn
! Config de l'OSPF :

router ospf 100
 router-id 192.168.200.3
! Config des Interfaces Interco Spines-Leafs OSPF :

int eth1/1
 description LINK to SPINE-1
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
int eth1/2
 description LINK to SPINE-2
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
! Config de l'Interface Leaf VTEP :

int lo10
 description VTEP INTERFACE
 ip address 192.168.180.3 255.255.255.255
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
! Config des Leafs comme étant des Multicast Clients :

 ip pim rp-address 192.168.180.180
!Config des Interfaces Users/Serveurs :

 int eth1/8
 switchport access vlan 100
 mtu 9216
! Config du Vlan et Mappage avec le VXLAN ID (VNI) :

 vlan 100
  vn-segment 1800
 vlan 200
  vn-segment 2800
! Config des nouveaux Vlan/VNI et VRF pour le Inter VXLAN Routing (l'Interface SVI est sans IP) :

vlan 1000
  vn-segment 1000
 vrf context RoutingVxLAN
  vni 1000
  rd auto
  add ipv4 unicast
   route-target both auto evpn
 int vlan 1000
  vrf member RoutingVxLAN
  mtu 9216
  ip forward
  no shut
! Config de l'interface NVE (Network Virtual Endpoint) et mappage avec le VXLAN ID (NVI) :

 int nve10
  source-interface loopback10
  host-reachability protocol bgp
  member vni 1000 associate-vrf
  member vni 1800
   mcast-group 239.1.1.1
   suppress-arp
  member vni 2800
   mcast-group 239.1.1.2
   suppress-arp
  no shut
! Annoncer les VNIs crées dans le BGP. La config de l'EVPN permet les échanges L2 entre les VTEPs :

evpn
  vni 1800 l2
   rd auto
   route-target both auto
  vni 2800 l2
   rd auto
   route-target both auto
! Config de l'Anycast Gateway Feature. Tous les VTEPs vont partager les mêmes IP et MACs pour tous les L3 Vlans (Attention la MAC ne doit pas exister dans le DC !):

 fabric forwarding anycast-gateway-mac 0002.c800.0018
 int vlan 100
  vrf member RoutingVxLAN
  ip add 192.168.10.1/30
  fabric forwarding mode anycast-gateway
  mtu 9216
  no shut
 int vlan 200
  vrf member RoutingVxLAN
  ip add 192.168.20.1/24
  fabric forwarding mode anycast-gateway
  mtu 9216
  no shut
! Config du BGP (MP-BGP EVPN):

router bgp 100
 log-neighbor-changes
 address-family ipv4 unicast
 address-family l2vpn evpn
 neighbor 192.168.200.1
  remote-as 100
  update-source loopback10
  address-family ipv4 unicast
  address-family l2vpn evpn
   send-community extended
 neighbor 192.168.200.2
  remote-as 100
  update-source loopback10
  address-family ipv4 unicast
  address-family l2vpn evpn
   send-community extended
vrf RoutingVxLAN
  address-family ipv4 unicast
   advertise l2vpn evpn


LEAF-2

! Allocation de l'Espace TCAM :

hardware access-list tcam region vacl 0
hardware access-list tcam region arp-ether 256
hardware qos ns-buffer-profile mesh
switching-mode store-forward
! Activation des services :

feature pim
feature ospf
feature vn-segment-vlan-based
feature nv overlay
feature interface-vlan
feature bgp
nv overlay evpn
! Config de l'OSPF :

router ospf 100
 router-id 192.168.200.4
! Config des Interfaces Interco Spines-Leafs OSPF :

int eth1/1
 description LINK to SPINE-1
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
int eth1/2
 description LINK to SPINE-2
 ip ospf network point-to-point
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
 mtu 9216
! Config de l'Interface Leaf VTEP :

int lo10
 description VTEP INTERFACE
 ip address 192.168.180.4 255.255.255.255
 ip router ospf 100 area 0.0.0.0
 ip pim sparse-mode
! Config des Leafs comme étant des Multicast Clients :

 ip pim rp-address 192.168.180.180
!Config des Interfaces Users/Serveurs :

 int eth1/8
 switchport access vlan 100
 mtu 9216
! Config du Vlan et Mappage avec le VXLAN ID (VNI) :

 vlan 100
  vn-segment 1800
 vlan 200
  vn-segment 2800
! Config des nouveaux Vlan/VNI et VRF pour le Inter VXLAN Routing (l'Interface SVI est sans IP) :

vlan 1000
  vn-segment 1000
 vrf context RoutingVxLAN
  vni 1000
  rd auto
  add ipv4 unicast
   route-target both auto evpn
 int vlan 1000
  vrf member RoutingVxLAN
  mtu 9216
  ip forward
  no shut
! Config de l'interface NVE (Network Virtual Endpoint) et mappage avec le VXLAN ID (NVI) :

 int nve10
  source-interface loopback10
  host-reachability protocol bgp
  member vni 1000 associate-vrf
  member vni 1800
   mcast-group 239.1.1.1
   suppress-arp
  member vni 2800
   mcast-group 239.1.1.2
   suppress-arp
  no shut
! Annoncer les VNIs crées dans le BGP. La config de l'EVPN permet les échanges L2 entre les VTEPs :

evpn
  vni 1800 l2
   rd auto
   route-target both auto
  vni 2800 l2
   rd auto
   route-target both auto
! Config de l'Anycast Gateway Feature. Tous les VTEPs vont partager les mêmes IP et MACs pour tous les L3 Vlans (Attention la MAC ne doit pas exister dans le DC !):

 fabric forwarding anycast-gateway-mac 0002.c800.0018
 int vlan 100
  vrf member RoutingVxLAN
  ip add 192.168.10.1/30
  fabric forwarding mode anycast-gateway
  mtu 9216
  no shut
 int vlan 200
  vrf member RoutingVxLAN
  ip add 192.168.20.1/24
  fabric forwarding mode anycast-gateway
  mtu 9216
  no shut
! Config du BGP (MP-BGP EVPN):

router bgp 100
 log-neighbor-changes
 address-family ipv4 unicast
 address-family l2vpn evpn
 neighbor 192.168.200.1
  remote-as 100
  update-source loopback10
  address-family ipv4 unicast
  address-family l2vpn evpn
   send-community extended
 neighbor 192.168.200.2
  remote-as 100
  update-source loopback10
  address-family ipv4 unicast
  address-family l2vpn evpn
   send-community extended
vrf RoutingVxLAN
  address-family ipv4 unicast
   advertise l2vpn evpn


Commandes de Vérification


 ! Vérification du voisinage OSPF : 

show ip ospf n

 ! Vérification des PIM Neighbors : 

sh ip pim n

! Vérification de l'Etat UP de l'NVE :

sh nve int nve10

! Vérification de l'Etat du BGP EVPN :

sh bgp l2vpn evpn summary
sh bgp l2vpn evpn

! Visualisation de la Tablde MAC Address :

show mac add vlan 100

! Vérification de la Table de Routage :

show ip route
show forwarding ipv4 route

! Vérification du cache ARP (IP-MAC <-> VN Segments) stocké dans les Leafs :

show l2route evpn mac-ip all


! Tshoot des infos Layer 2 / Layer 3 des Nodes migrés sur une Plate-forme ACI :

ACI-0002# show endpoints ip 10.10.10.10 
... 
End PointMAC       IP Address  Source  Node Interface Encap    Multicast Address 
00:20:13:33:C2:18  10.10.10.10 learned 103  eth1/22   vlan-88  not-applicable                     
... 

ACI-0002# fabric 103 show interface ethernet 1/22 
----------------------------------------------------------------
 Node 103 (LEAF-103)
----------------------------------------------------------------
Ethernet1/22 is up
... 
... 

Ce contenu t’a plu ? T'as trouvé utile ?

Tu peux m’offrir alors un Super Café ☕☕:)
Ton soutien me permet de continuer à créer des ressources gratuites et utiles :)

✔ Soutien volontaire
✔ Aucun abonnement
✔ Paiement 100% sécurisé

🔒 Paiement sécurisé via Stripe

Ajouter un commentaire

Commentaires

Rolin Ymele
il y a un an

Bonjour monsieur Chaker BCHIR,
Je vous remercie pour le travail de fond et le partage d'information. j'ai pratiquer tout le Lab sauf ACI que je vais chercher mais je suis reconnaissant d'avoir réussi en CLI

aigle
il y a 2 ans

bonjour sur les leafs vlan100 avec /30 et et vlan200 en /24 est ce une erreur ?

aigle
il y a 2 ans

Bonjour les subnets d'interco pour l'ospf non pas été défini un oubli ?

Amine
il y a 3 ans

Bonjour, merci pour ces précieuses explications.
C'est possible de m'envoyer l'article en pdf et le lab sur mon mail : amineelassad@proton.me

faten laaroussi
il y a 3 ans

Merci infiniment pour cette démonstration et toutes ces informations.
pourrais-je avoir les documents sur mon email Svp.

brou
il y a 3 ans

Bronjour Monsieur , je suis très intéressé par cette formation sur la frabric IP et VXLAN faire des lab pouvez-vous m'aider dans ce sens

ibrahim
il y a 3 ans

Bonjour,

Magnifique article! Je souhaite pratiquer ce lab sur EVE NG.Est ce que c'est possible de partager avec moi le lab.

merci d'avance,

HAJJI.MOHAMED
il y a 3 ans

Bonjour, merci pour votre éclaircir et je suis tres intéressant par votre lab.
C'est possible de m'envoyer des slides et lab pour le VXLAN sur mon email :hajjiyam@gmail.com

Chaker BCHIR
il y a 3 ans

Bonjour Mohamed,

1- v9K sur Eve-NG est une solution :)
2- Sinon, ACI de nos jours push toutes les configs VxLAN nécessaires sur les Spines/Leafs.
3- Docs sent by mail :)