Usine VxLAN. Partie 1

Bonjour, Habr. Je suis actuellement responsable du cours "Ingénieur réseau" chez OTUS.
À l'approche du lancement d'un nouveau cycle pour le cours "Ingénieur réseau", j'ai préparé une série d'articles sur la technologie VxLAN EVPN.

Il existe une multitude de ressources sur l'utilisation de VxLAN EVPN, donc je souhaite rassembler diverses tâches et pratiques de résolution dans un datacenter moderne.

Usine VxLAN. Partie 1

Dans la première partie de la série sur la technologie VxLAN EVPN, je vais examiner comment organiser la connectivité L2 entre les hôtes sur une infrastructure réseau.

Tous les exemples seront réalisés sur des Cisco Nexus 9000v, configurés en topologie Spine-Leaf. Nous ne nous attarderons pas sur la configuration du réseau Underlay dans cet article.

  1. Réseau Underlay
  2. Peering BGP pour l'adressage l2vpn evpn
  3. Configuration NVE
  4. Suppr-arp

Réseau Underlay

La topologie utilisée est la suivante :

Usine VxLAN. Partie 1

Attribution des adresses IP à tous les dispositifs :

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

Vérifions qu'il y a une connectivité IP entre tous les dispositifs :

Leaf21# sh ip route

10.255.1.11/32, ubest/mbest: 2/0                      ! Leaf-11 accessible via deux 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 accessible via deux 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

Vérifions si le domaine VPC a été créé et si les deux commutateurs ont réussi à passer le test de cohérence et que la configuration est identique sur les deux nœuds :

Leaf11# show vpc 

vPC domain id                     : 1
État du pair                      : l'adjacence des pairs formée correctement
État du keep-alive vPC           : le pair est vivant
État de cohérence de la configuration : succès
État de cohérence par VLAN        : succès
État de cohérence de type-2      : succès
Rôle vPC                         : primaire
Nombre de vPC configurés         : 0
Passerelle de pair               : Désactivée
VLANs exclus en double actif      : -
Vérification de cohérence en douceur : Activée
État de récupération automatique   : Désactivé
État de restauration différée      : Minuteur est éteint. (timeout = 30s)
État de restauration différée SVI  : Minuteur est éteint. (timeout = 10s)
Routeur de pair opérationnel Layer3  : Désactivé

État du vPC
----------------------------------------------------------------------------
Id    Port          État Cohérence Raison                VLANs actifs
--    ------------  ------ ----------- ------                ---------------
5     Po5           up     succès     succès               1

Peering BGP

Nous pouvons enfin passer à la configuration du réseau Overlay.

Dans le cadre de l'article, il est nécessaire d'organiser un réseau entre les hôtes, comme indiqué sur le schéma ci-dessous :

Usine VxLAN. Partie 1

Pour configurer l'Overlay réseau, il est nécessaire d'activer BGP sur les commutateurs Spine et Leaf avec le support de la famille l2vpn evpn :

feature bgp
nv overlay evpn

Ensuite, il faut configurer le peering BGP entre Leaf et Spine. Pour simplifier la configuration et optimiser la diffusion des informations de routage, nous configurons Spine en tant que Route-Reflector server. Nous inscrirons tous les Leaf dans la configuration via des modèles afin d'optimiser la configuration.

Ainsi, la configuration sur Spine est la suivante :

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

La configuration sur le commutateur Leaf ressemble également :

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

Sur Spine, nous vérifierons le peering avec tous les commutateurs Leaf :

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

Comme nous le voyons, il n'y a eu aucun problème avec BGP. Passons à la configuration de VxLAN. La configuration suivante sera effectuée uniquement du côté des commutateurs Leaf. Spine agit uniquement comme le cœur du réseau et se charge uniquement du transfert de trafic. Tout le travail d'encapsulation et de définition du chemin se fait uniquement sur les commutateurs Leaf.

Configuration NVE

NVE — interface virtuelle réseau

Avant de commencer la configuration, introduisons un peu de terminologie :

VTEP — Virtual Tunnel End Point, un dispositif sur lequel commence ou se termine un tunnel VxLAN. VTEP n'est pas nécessairement un appareil réseau. Un serveur prenant en charge la technologie VxLAN peut également agir en tant que tel. Dans notre topologie, tous les commutateurs Leaf sont des VTEP.

VNI — Virtual Network Index — identifiant de réseau au sein de VxLAN. On peut faire une analogie avec VLAN. Cependant, il existe certaines différences. Lors de l'utilisation d'une usine, les VLAN deviennent uniques uniquement au sein d'un commutateur Leaf et ne sont pas transmis sur le réseau. Mais chaque VLAN peut avoir un numéro VNI associé, qui est déjà transmis sur le réseau. Comment cela se présente et comment cela peut être utilisé sera examiné ci-après.

Activer la fonctionnalité pour travailler avec la technologie VxLAN et la possibilité d'associer des numéros VLAN avec le numéro VNI :

feature nv overlay
feature vn-segment-vlan-based

Nous allons configurer l'interface NVE, qui est responsable du fonctionnement de VxLAN. Cette interface est justement responsable de l'encapsulation des trames dans les en-têtes VxLAN. On peut faire une analogie avec l'interface Tunnel pour le fonctionnement de GRE :

interface nve1
  no shutdown
  host-reachability protocol bgp ! nous utilisons BGP pour transmettre les informations de routage
  source-interface loopback0    ! interface à partir de laquelle nous envoyons des paquets loopback0

Sur le commutateur Leaf-21, tout se crée sans problème. Cependant, si nous vérifions la sortie de la commande show nve peers, elle sera vide. Il est nécessaire de revenir à la configuration de VPC. Nous voyons que Leaf-11 et Leaf-12 fonctionnent en paire et sont regroupés dans un domaine VPC. Cela entraîne la situation suivante :

Host-2 envoie une trame vers Leaf-21, afin qu'il puisse la transmettre sur le réseau vers Host-1. Cependant, Leaf-21 constate que l'adresse MAC de Host-1 est accessible via deux VTEP. Comment Leaf-21 doit-il agir dans ce cas ? Cela signifie qu'il pourrait y avoir une boucle dans le réseau.

Pour résoudre cette situation, nous devons faire en sorte que Leaf-11 et Leaf-12 agissent également comme un seul dispositif dans le cadre de la fabrique. Cela se résout assez simplement. Sur l'interface Loopback à partir de laquelle nous construisons le tunnel, nous ajoutons une adresse secondaire. L'adresse secondaire doit être identique sur les deux VTEP.

interface loopback0
 ip add 10.255.1.10/32 secondary

Ainsi, du point de vue des autres VTEP, nous obtenons la topologie suivante :

Usine VxLAN. Partie 1

C'est-à-dire que maintenant le tunnel sera construit entre l'adresse IP de Leaf-21 et l'IP virtuelle entre Leaf-11 et Leaf-12. Maintenant, il n'y aura plus de problèmes pour étudier l'adresse MAC des deux dispositifs et le trafic peut passer d'un VTEP à l'autre. Qui des deux VTEP traitera le trafic est déterminé par la table de routage sur le Spine :

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

Comme on peut le voir ci-dessus, l'adresse 10.255.1.10 est accessible via deux Next-hop.

À ce stade, nous avons compris la connectivité de base. Passons à la configuration de l'interface NVE :
Nous allons immédiatement activer le Vlan 10 et l'associer au VNI 10000 sur chaque Leaf pour les hôtes. Configurons un tunnel L2 entre les hôtes.

vlan 10                 ! Activation de VLAN sur tous les VTEP connectés aux hôtes nécessaires
  vn-segment 10000      ! Associe le VLAN au numéro VNI 

interface nve1
  member vni 10000      ! Ajoute le VNI 10000 pour le fonctionnement via l'interface NVE. pour encapsulation en VxLAN
    ingress-replication protocol bgp    ! Indique que nous utilisons BGP pour la propagation des informations sur l'hôte

Vérifions maintenant les pairs nve et la table pour BGP EVPN :

Leaf21# sh nve peers
Interface Peer-IP          État Type d'apprentissage Durée   Mac-Router
--------- ---------------  ----- --------- -------- -----------------
nve1      10.255.1.10      Up    CP        00:00:41 n/a                 ! Nous voyons que le pair est accessible depuis l'adresse secondaire

Leaf11# sh bgp l2vpn evpn

   Réseau            Prochaine Hop            Métrique     LocPrf     Poids Chemin
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)        ! De qui est venu ce l2VNI
*>l[3]:[0]:[32]:[10.255.1.10]\/88                                   ! EVPN route-type 3 - indique notre voisin qui connaît aussi l'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

Nous observons ci-dessus que les routes ne sont que des EVPN route-type 3. Ce type de routes parle du pair (Leaf), mais où sont nos hôtes ?
Le problème est que les informations sur les adresses MAC des hôtes sont transmises via EVPN route-type 2

Pour voir nos hôtes, il est nécessaire de configurer EVPN route-type 2 :

evpn
  vni 10000 l2
    route-target import auto   ! Dans le cadre de cet article, nous utilisons un numéro automatique pour le route-target
    route-target export auto

Faisons un ping de Host-2 à Host-1 :

Firewall2# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 octets de données
36 octets de 192.168.10.2: Destination Host Unreachable
Request 0 timed out
64 octets de 192.168.10.1: icmp_seq=1 ttl=254 time=215.555 ms
64 octets de 192.168.10.1: icmp_seq=2 ttl=254 time=38.756 ms
64 octets de 192.168.10.1: icmp_seq=3 ttl=254 time=42.484 ms
64 octets de 192.168.10.1: icmp_seq=4 ttl=254 time=40.983 ms

Et ci-dessous, nous pouvons voir que dans la table BGP, des route-type 2 avec l'adresse MAC des hôtes — 5001.0007.0007 et 5001.0008.0007 sont apparus

Leaf11# sh bgp l2vpn evpn


   Réseau            Prochain saut            Métro     LocPrf     Poids Chemin
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]\/216                      !  type de route evpn 2 et adresse mac de l'hôte 1
                      10.255.1.10                       100      32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]\/216                      ! type de route evpn 2 et adresse mac de l'hôte 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

Vous pouvez ensuite consulter des informations détaillées sur la mise à jour, dans laquelle nous avons obtenu des informations sur le MAC de l'hôte. Ci-dessous, la sortie de la commande n'est pas complète.

Leaf21# sh bgp l2vpn evpn 5001.0007.0007

Informations sur la table de routage BGP pour VRF par défaut, famille d'adresses L2VPN EVPN
Route Distinguisher: 10.255.1.11:32777        !  Update envoyé avec MAC de l'hôte. Pas une adresse VPC virtuelle, mais une adresse Leaf
Entrée de la table de routage BGP pour [2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]\/216,
 version 1507
Chemins: (2 disponibles, meilleur #2)
Drapeaux: (0x000202) (high32 00000000) sur xmit-list, n'est pas dans l2rib\/evpn, n'est pas en HW

  Type de chemin: interne, chemin valide, pas meilleur raison: adresse du voisin, pas de prochain saut étiqueté
  AS-Path: AUCUN, chemin provenant de l'intérieur de l'AS
    10.255.1.10 (métrique 81) de 10.255.1.102 (10.255.1.102)    ! avec qui nous construisons exactement le tunnel VxLAN
      Origine IGP, MED non défini, localpref 100, poids 0
      Étiquette reçue 10000         ! Numéro VNI associé au VLAN dans lequel se trouve l'hôte
      Extcommunity: RT:65001:10000 SOO:10.255.1.10:0 ENCAP:8        ! Ici, on voit que le RT s'est formé automatiquement sur la base des numéros AS et VNI
      Initiateur: 10.255.1.11 Liste de clusters: 10.255.1.102

Voyons à quoi ressemblent les trames lorsqu'elles traversent la fabrique :

Usine VxLAN. Partie 1

Suppress-ARP

Parfait, la connexion L2 entre les hôtes est établie et nous pourrions en rester là. Cependant, ce n'est pas si simple. Tant que nous avons peu d'hôtes, il n'y aura pas de problème. Mais imaginons une situation où nous avons des centaines ou des milliers d'hôtes. Quel problème pourrions-nous rencontrer ?

Ce problème est le trafic BUM (Broadcast, Unknown Unicast, Multicast). Dans cet article, nous examinerons une option pour lutter contre le trafic broadcast.
Le principal générateur de Broadcast dans les réseaux Ethernet est en fait les hôtes eux-mêmes via le protocole ARP.

Sur Nexus, le mécanisme suivant a été mis en œuvre pour lutter contre les requêtes ARP : suppress-arp.
Le fonctionnement de cette fonctionnalité est le suivant :

  1. L'hôte-1 envoie une requête APR à l'adresse Broadcast de son réseau.
  2. La requête parvient au commutateur Leaf et au lieu de transmettre cette requête plus loin dans la fabrique vers l'hôte-2 — le Leaf répond lui-même et indique l'IP et le MAC nécessaires.

Ainsi, la requête Broadcast n'est pas passée dans le fabric. Mais comment cela peut-il fonctionner si Leaf ne connaît que l'adresse MAC ?

C'est assez simple, le type de route EVPN 2 peut transmettre non seulement l'adresse MAC, mais aussi l'association MAC/IP. Pour cela, il est nécessaire de configurer une adresse IP dans le VLAN sur Leaf. La question se pose, quelle adresse IP attribuer ? Sur Nexus, il est possible de créer une adresse distribuée (identique) sur tous les commutateurs :

feature interface-vlan

fabric forwarding anycast-gateway-mac 0001.0001.0001    ! nous définissons le mac virtuel pour créer une passerelle distribuée entre tous les commutateurs

interface Vlan10
  no shutdown
  ip address 192.168.10.254/24          ! nous définissons la même IP sur tous les Leaf
  fabric forwarding mode anycast-gateway    ! nous indiquons d'utiliser le mac virtuel

Ainsi, du point de vue des hôtes, le réseau apparaîtra comme suit :

Usine VxLAN. Partie 1

Vérifions BGP l2route evpn

Leaf11# sh bgp l2vpn evpn


   Réseau            Prochain saut            Métier     LocPrf     Poids Chemin
Identificateur de route : 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



Identificateur de route : 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

De la sortie de la commande, on voit que dans le type de route EVPN 2, en plus de la MAC, nous voyons maintenant aussi l'adresse IP de l'hôte.

Revenons à la configuration de suppress-arp. Cette option est activée pour chaque VNI séparément :

interface nve1
  member vni 10000   
    suppress-arp

Ensuite, il y a une certaine complexité :

  • Pour que cette fonctionnalité fonctionne, il est nécessaire d'avoir de l'espace dans la mémoire TCAM. Je vais donner un exemple de configuration pour suppress-arp :

hardware access-list tcam region arp-ether 256

Cette configuration nécessitera un double-large. Ainsi, si vous attribuez 256, il faut libérer 512 dans la TCAM. La configuration TCAM dépasse le cadre de cet article, car la configuration TCAM dépend uniquement de la tâche qui vous est assignée et peut varier d'un réseau à l'autre.

  • L'implémentation de suppress-arp doit être réalisée sur tous les commutateurs Leaf. Cependant, des difficultés peuvent survenir lors de la configuration sur des paires Leaf situées dans un domaine VPC. En cas de modification de TCAM, la cohérence entre les paires sera compromise et un nœud peut tomber en panne. De plus, pour appliquer cette configuration, un redémarrage de l'appareil peut être nécessaire après la modification de TCAM.

En conséquence, il est important de bien réfléchir à la pertinence de cette configuration dans votre situation pour une usine en production.

Nous en restons là pour cette première partie du cycle. Dans la prochaine partie, nous aborderons le routage à travers l'usine VxLAN en séparant les réseaux par différents VRF.

Et maintenant, je vous invite tous à webinaire gratuit, au cours duquel je vais détailler le programme. Les 20 premiers participants inscrits à ce webinaire recevront un certificat de réduction par e-mail dans les 1 à 2 jours suivant la diffusion.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster