Fábrica VxLAN. Parte 1

Hola, Habr. Actualmente soy el líder del curso "Ingeniero de Redes" en OTUS.
Con la próxima apertura del nuevo ciclo del curso "Ingeniero de Redes", he preparado una serie de artículos sobre la tecnología VxLAN EVPN.

Hay una gran cantidad de materiales sobre cómo trabajar con VxLAN EVPN, por lo que quiero recopilar diversas tareas y prácticas para resolver problemas en un centro de datos moderno.

Fábrica VxLAN. Parte 1

En la primera parte de la serie sobre la tecnología VxLAN EVPN, quiero examinar cómo organizar la conectividad L2 entre los hosts sobre la fábrica de red.

Todos los ejemplos se realizarán en Cisco Nexus 9000v, dispuestos en una topología Spine-Leaf. No abordaremos la configuración de la red Underlay en este artículo.

  1. Red Underlay
  2. Emparejamiento BGP para address-family l2vpn evpn
  3. Configuración de NVE
  4. Suprimir ARP

Red Underlay

La topología utilizada se muestra a continuación:

Fábrica VxLAN. Parte 1

Asignemos las direcciones en todos los dispositivos:

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

Verifiquemos que hay conectividad IP entre todos los dispositivos:

Leaf21# sh ip route

10.255.1.11/32, ubest/mbest: 2/0                      ! Leaf-11 accesible a través de dos 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 accesible a través de dos 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

Verifiquemos que el dominio VPC se ha creado y que ambos conmutadores han pasado la verificación de consistencia y la configuración en ambos nodos es idéntica:

Leaf11# show vpc 

vPC domain id                     : 1
Estado del par                       : la adyacencia del par se formó correctamente
Estado de keep-alive de vPC       : el par está vivo
Estado de consistencia de configuración  : éxito
Estado de consistencia por VLAN       : éxito
Estado de consistencia tipo-2         : éxito
Rol de vPC                          : primario
Número de vPC configurados         : 0
Puerta de enlace de par                      : Deshabilitada
VLANs excluidas para dual-active        : -
Verificación de consistencia gradual        : Habilitada
Estado de recuperación automática              : Deshabilitada
Estado de restauración con retardo              : El temporizador está apagado.(tiempo de espera = 30s)
Estado de SVI de restauración con retardo          : El temporizador está apagado.(tiempo de espera = 10s)
Router capa 3 operativo del par           : Deshabilitado

Estado de vPC
----------------------------------------------------------------------------
Id    Puerto          Estado Razón de Consistencia                VLANs activas
--    ------------  ------ ----------- ------                ---------------
5     Po5           up     éxito     éxito               1

Emparejamiento BGP

Finalmente, podemos proceder a la configuración de la red Overlay.

En el marco de este artículo, es necesario organizar una red entre los hosts, como se muestra en el esquema a continuación:

Fábrica VxLAN. Parte 1

Para configurar la red Overlay, es necesario habilitar BGP con soporte para la familia l2vpn evpn en los conmutadores Spine y Leaf:

feature bgp
nv overlay evpn

A continuación, debe configurarse el emparejamiento BGP entre Leaf y Spine. Para simplificar la configuración y optimizar la propagación de la información de rutas, configuramos Spine como Route-Reflector server. Registramos todos los Leaf en la configuración a través de plantillas para optimizar la configuración.

Así, la configuración en Spine se ve así:

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 configuración en el conmutador Leaf se ve de manera similar:

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

En Spine, verificamos el emparejamiento con todos los conmutadores 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

Como podemos ver, no ha habido problemas con BGP. Pasamos a la configuración de VxLAN. La configuración posterior solo se llevará a cabo en los conmutadores Leaf. Spine actúa únicamente como el núcleo de la red y solo se encarga de la transmisión del tráfico. Todo el trabajo de encapsulación y determinación de rutas ocurre únicamente en los conmutadores Leaf.

Configuración de NVE

NVE — interfaz virtual de red

Antes de comenzar la configuración, introduzcamos un poco de terminología:

VTEP — Punto de Terminación de Túnel Virtual, un dispositivo donde comienza o termina el túnel VxLAN. El VTEP no necesariamente tiene que ser un dispositivo de red. También puede ser un servidor que soporte la tecnología VxLAN. En nuestra topología, todos los conmutadores Leaf son VTEP.

VNI — Índice de Red Virtual — identificador de la red dentro de VxLAN. Se puede hacer una analogía con VLAN. Sin embargo, hay algunas diferencias. Al usar una fábrica, las VLAN se vuelven únicas solo dentro de un conmutador Leaf y no se transmiten por la red. Pero a cada VLAN se le puede asociar un número VNI, que ya se transmite por la red. Cómo se ve esto y cómo se puede utilizar se explicará más adelante.

Activemos la característica para el funcionamiento de la tecnología VxLAN y la posibilidad de asociar números VLAN con números VNI:

feature nv overlay
feature vn-segment-vlan-based

Configuraremos la interfaz NVE, que se encarga del funcionamiento de VxLAN. Esta interfaz es la responsable de la encapsulación de tramas en los encabezados de VxLAN. Se puede hacer una analogía con la interfaz de túnel para trabajar con GRE:

interface nve1
  no shutdown
  host-reachability protocol bgp ! usamos BGP para transmitir información de rutas
  source-interface loopback0    ! interfaz desde la que enviamos paquetes loopback0

En el conmutador Leaf-21, todo se crea sin problemas. Sin embargo, si comprobamos la salida del comando show nve peers, resultará vacío. Aquí es necesario volver a la configuración de VPC. Vemos que Leaf-11 y Leaf-12 están trabajando en pareja y están unidos por el dominio VPC. Desde aquí se genera la siguiente situación:

Host-2 envía un marco hacia Leaf-21 para que este lo transmita por la red hacia Host-1. Sin embargo, Leaf-21 observa que la dirección MAC de Host-1 es accesible a través de dos VTEP. ¿Cómo debería actuar Leaf-21 en este caso? Porque esto significa que podría haberse creado un bucle en la red.

Para resolver esta situación, necesitamos que Leaf-11 y Leaf-12 actúen como un solo dispositivo dentro de la fábrica. Esto se soluciona de manera bastante sencilla. En la interfaz Loopback desde la que construimos el túnel, agregamos una dirección secundaria. La dirección secundaria debe ser idéntica en ambos VTEP.

interface loopback0
 ip add 10.255.1.10/32 secondary

De este modo, desde la perspectiva de otros VTEP, obtenemos la siguiente topología:

Fábrica VxLAN. Parte 1

Es decir, ahora el túnel se construirá entre la dirección IP de Leaf-21 y la IP virtual entre los dos Leaf-11 y Leaf-12. Ahora no habrá problemas para aprender la dirección MAC de los dos dispositivos y el tráfico podrá pasar de un VTEP a otro. Qué VTEP de los dos procesará el tráfico se decide mediante la tabla de enrutamiento en 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

Como se puede ver arriba, la dirección 10.255.1.10 está disponible a través de dos Next-hop.

En esta etapa hemos entendido la conectividad básica. Pasemos a la configuración de la interfaz NVE:
Activaremos inmediatamente el Vlan 10 y lo asociaremos con el VNI 10000 en cada Leaf para los hosts. Configuraremos un túnel L2 entre los hosts.

vlan 10                 ! Activamos VLAN en todos los VTEP conectados a los hosts necesarios
  vn-segment 10000      ! Asociamos VLAN con el número VNI 

interface nve1
  member vni 10000      ! Añadimos VNI 10000 para operar a través de la interfaz NVE. para encapsulación en VxLAN
    ingress-replication protocol bgp    ! indicamos que para la propagación de información sobre el host utilizamos BGP

Ahora revisaremos los pares nve y la tabla para 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                 ! Vemos que el peer está disponible desde la dirección secundaria

Leaf11# sh bgp l2vpn evpn

   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)        ! De quién vino exactamente este l2VNI
*>l[3]:[0]:[32]:[10.255.1.10]\/88                                   ! Ruta EVPN tipo 3 - muestra a nuestro vecino, que también sabe sobre 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

Arriba vemos que hay rutas solo de tipo EVPN 3. Este tipo de rutas habla de peer (Leaf), pero ¿dónde están nuestros hosts?
La cuestión es que la información sobre las direcciones MAC de los hosts se transmite a través de la ruta EVPN tipo 2.

Para ver nuestros hosts, es necesario configurar la ruta EVPN tipo 2:

evpn
  vni 10000 l2
    route-target import auto   ! en este artículo utilizamos un número automático para el route-target
    route-target export auto

Haremos ping desde Host-2 a Host-1:

Firewall2# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 bytes de datos
36 bytes desde 192.168.10.2: Host de destino inalcanzable
Request 0 timed out
64 bytes desde 192.168.10.1: icmp_seq=1 ttl=254 time=215.555 ms
64 bytes desde 192.168.10.1: icmp_seq=2 ttl=254 time=38.756 ms
64 bytes desde 192.168.10.1: icmp_seq=3 ttl=254 time=42.484 ms
64 bytes desde 192.168.10.1: icmp_seq=4 ttl=254 time=40.983 ms

Y abajo podemos ver que en la tabla BGP aparecieron rutas tipo 2 con direcciones MAC de los hosts — 5001.0007.0007 y 5001.0008.0007

Leaf11# sh bgp l2vpn evpn


   Red              Siguiente Salto          Métrica     LocPrf     Peso Ruta
Identificador de Ruta: 10.255.1.11:32777    (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216                      !  tipo de ruta evpn 2 y dirección mac del host 1
                      10.255.1.10                       100      32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216                      ! tipo de ruta evpn 2 y dirección mac del host 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
Identificador de Ruta: 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

A continuación se puede ver información detallada sobre la actualización, en la que obtuvimos información sobre el Host MAC. A continuación se presenta no toda la salida del comando

Leaf21# sh bgp l2vpn evpn 5001.0007.0007

Información de la tabla de enrutamiento BGP para VRF por defecto, familia de direcciones L2VPN EVPN
Identificador de Ruta: 10.255.1.11:32777        !  envié una actualización con el Host MAC. No es una dirección virtual de VPC, sino la dirección Leaf
Entrada de la tabla de enrutamiento BGP para [2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216,
 versión 1507
Rutas: (2 disponibles, mejor #2)
Banderas: (0x000202) (high32 00000000) en la lista de transmisión, no está en l2rib/evpn, no está en HW

  Tipo de ruta: interno, la ruta es válida, no mejor razón: Dirección de Vecino, sin nexthop etiquetado
  AS-Path: NINGUNO, ruta fuente interna al AS
    10.255.1.10 (métrica 81) de 10.255.1.102 (10.255.1.102)    ! con quién estamos construyendo exactamente el túnel VxLAN
      Origen IGP, MED no establecido, preferencia local 100, peso 0
      Etiqueta recibida 10000         ! Número VNI, que está asociado con VLAN, en la que se encuentra el Host
      Extcommunity: RT:65001:10000 SOO:10.255.1.10:0 ENCAP:8        ! aquí se puede ver que RT se formó automáticamente en función de los números AS y VNI
      Originador: 10.255.1.11 Lista de clúster: 10.255.1.102

Veamos cómo se ven los tramas cuando se transmiten a través de la fábrica:

Fábrica VxLAN. Parte 1

Suprimir-ARP

Genial, ya tenemos conexión L2 entre los hosts y podríamos terminar aquí. Sin embargo, no todo es tan simple. Mientras tengamos pocos hosts no habrá problemas. Pero imaginemos situaciones en las que tengamos cientos o miles de hosts. ¿Con qué problema podríamos encontrarnos?

Este problema es el tráfico BUM (Broadcast, Unicast Desconocido, Multicast). En este artículo, abordaremos la lucha contra el tráfico broadcast.
El principal generador de Broadcast en redes Ethernet son los hosts mismos a través del protocolo ARP.

En el nexus se implementa el siguiente mecanismo para combatir las solicitudes ARP: suprimir-arp.
El funcionamiento de esta función es el siguiente:

  1. El Host-1 envía una solicitud APR a la dirección Broadcast de su red.
  2. La solicitud llega al conmutador Leaf y en lugar de transmitir esta solicitud más lejos a la fábrica en dirección al Host-2, el Leaf responde por sí mismo y proporciona la IP y MAC necesarias.

De esta manera, la consulta Broadcast no llegó a la fábrica. Pero, ¿cómo puede funcionar esto si Leaf solo conoce la dirección MAC?

Todo es bastante simple, el tipo de ruta EVPN 2, además de la dirección MAC, puede transmitir la combinación MAC/IP. Para esto, es necesario configurar una dirección IP en el VLAN en Leaf. Surge la pregunta, ¿qué IP asignar? En Nexus, hay la posibilidad de crear una dirección distribuida (igual) en todos los conmutadores:

feature interface-vlan

fabric forwarding anycast-gateway-mac 0001.0001.0001    ! asignamos una MAC virtual para crear un gateway distribuido entre todos los conmutadores

interface Vlan10
  no shutdown
  ip address 192.168.10.254/24          ! asignamos la misma IP en todos los Leaf
  fabric forwarding mode anycast-gateway    ! indicamos usar la MAC virtual

Por lo tanto, desde la perspectiva de los hosts, la red se verá de la siguiente manera:

Fábrica VxLAN. Parte 1

Verifiquemos BGP l2route evpn

Leaf11# sh bgp l2vpn evpn


   Red            Siguiente salto            Métrico     LocPrf     Peso Ruta
Descriptor de 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.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



Descriptor de ruta: 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 salida del comando se puede ver que en el tipo de ruta EVPN 2, además de la MAC, ahora también vemos la dirección IP del host.

Regresamos a la configuración de suppress-arp. Esta configuración se activa para cada VNI individualmente:

interface nve1
  member vni 10000   
    suppress-arp

Luego surge cierta complejidad:

  • Para que esta función funcione, es necesario contar con espacio en la memoria TCAM. A continuación, un ejemplo de configuración para suppress-arp:

hardware access-list tcam region arp-ether 256

Para esta configuración, se necesitará doble ancho. Es decir, si asignas 256, en TCAM es necesario liberar 512. La configuración de TCAM excede el alcance de este artículo, ya que la configuración de TCAM depende únicamente de la tarea que se te asigne y puede diferir de una red a otra.

  • La implementación de suppress-arp debe realizarse en todos los switches Leaf. Sin embargo, pueden surgir complicaciones al configurarlo en los pares Leaf dentro del dominio VPC. Al modificar el TCAM, la consistencia entre los pares se verá afectada y uno de los nodos puede quedar fuera de servicio. Además, para aplicar la configuración del cambio en el TCAM, es posible que se necesite reiniciar el dispositivo.

Como resultado, es necesario pensar bien si en su situación vale la pena implementar esta configuración en una fábrica en funcionamiento.

Con esto concluimos la primera parte del ciclo. En la siguiente parte, abordaremos el enrutamiento a través de la fábrica VxLAN con segregación de redes en diferentes VRF.

Ahora invito a todos a un webinar gratuito, en el cual explicaré detalladamente sobre el curso. Los primeros 20 participantes que se registren para este seminario web recibirán un Certificado de descuento en su correo electrónico dentro de 1-2 días después de la transmisión.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster