VXLAN (Virtual Extensible Local Area Network) es un protocolo de superposición de redes ideado para transportar tráfico de capa de enlace de datos sobre la capa de red, concretamente tráfico Ethernet sobre redes IP empleando encapsulación MAC-in-UDP. Inicialmente fue ideado para proveer los mismos servicios que una red VLAN convencional aumentando la extensibilidad y la flexibilidad limitadas de este tipo de redes.

Actualmente se encuentra documentado por el IETF en el RFC 7348 en estado "Informational".

Introducción

VXLAN surgió como propuesta por parte de fabricantes como Cisco, Arista Networks, Broadcom, Intel, VMware y otros para evitar algunos de los problemas que se daban en los centros de datos derivados del empleo de virtualización en los servidores, lo que impone la necesidad de trabajar en entornos con cientos de miles de máquinas virtuales en algunos casos. Trabajar con tantas máquinas genera problemas relacionados con el tamaño de las tablas de direcciones MAC, y en el caso del empleo de VLANs para agrupar estas máquinas aislándolas en grupos surge el problema del número limitado de VLANs que se pueden generar debido al VLAN ID de 12 bits, que permite un máximo de 4094 redes diferentes.

Otro problema importante de los centros de datos proviene del empleo de STP (Spanning Tree Protocol) para evitar los bucles en la capa de enlace, lo que conlleva al desuso de una gran cantidad de los enlaces disponibles (En ocasiones más de la mitad) al generarse la topología en forma de árbol.

Todos estos problemas impulsaron el desarrollo de una tecnología de red que permitiese emplear una red IP para la interconexión de los servidores físicos, lo que supondría el uso de protocolos de enrutamiento de capa 3. De esta forma se eliminarían los problemas de desuso de enlaces impuestos por STP, los bucles de capa 2 y se podrían emplear "estrategias" de enrutamiento como Equal-cost multi-path routing (ECMP), que ayuda a distribuir la carga de la red entre todos los enlaces. A pesar de todo esto seguiría siendo necesario el empleo de una red de capa 2 para la comunicación directa entre las máquinas virtuales.

Esto impulsó finalmente la aparición de VXLAN, que nos permite eliminar los problemas de escalabilidad de la red derivados del uso de VLAN mediante el empleo de un identificador de red (VNI) de 24 bits, pudiendo crear así más de 16 millones de redes virtuales que coexistan en el mismo dominio administrativo. En VXLAN se emplea encaminamiento de capa 3, lo que elimina los problemas de desuso de enlaces mencionados anteriormente y permite un uso más eficiente de estos enlaces. El empleo de protocolos de encaminamiento de capa de red también elimina los problemas del tamaño excesivo que alcanzaban tablas de direcciones MAC en los switches que interconectaban una red de capa 2 en un centro de datos, los cuales tenían que almacenar las direcciones MAC de todas las máquinas virtuales instaladas en los servidores que se encontraban interconectados mediante ese switch.

Encapsulación y formato de paquete VXLAN

VXLAN emplea encapsulación MAC Address-in-User Datagram Protocol (MAC-in-UDP). Al paquete de Capa de enlace enviado inicialmente, que contiene las direcciones MAC del host origen y del host destino, se le añade una cabecera VXLAN. El conjunto anterior se introduce en el campo de datos de un datagrama UDP y se emplea IP como protocolo de Capa de red. Finalmente el paquete que se manda a la red IP tiene como direcciones MAC origen y destino las correspondientes a los VTEPs tras los cuales se encuentran los hosts origen y destino. De esta forma es posible encaminar el paquete inicial sobre una red IP, de manera que este pueda alcanzar a todos los hosts de la VXLAN de igual forma que si se encontrasen en la misma LAN. marco|centro|Encapsulación VXLAN

Componentes de VXLAN 300px|miniaturadeimagen|derecha|Cabecera VXLAN Cabecera VXLAN: Tiene una longitud de 8 bytes y está compuesta por cuatro campos: Flags: Campo de 8 bits que contiene la secuencia de flags “R-R-R-R-I-R-R-R”. El flag denominado “I” debe contener el valor “1” para indicar un VNI válido. El resto de bits (“R”) deben contener el valor “0” a la hora de transmitir la trama y son ignorados en la recepción. VXLAN Network Identifier (VNI o VNID): Se trata de un campo de 24 bits mediante el cual se identifica cada red de “Overlay”, lo que nos permite crear más de 16 millones de segmentos VXLAN en el mismo dominio administrativo. Cada VXLAN tiene un VNI diferente y cada máquina perteneciente a una VXLAN está identificada por su MAC y por su VNI, por lo que es posible tener máquinas con direcciones MAC duplicadas en distintas redes VXLAN. Campos reservados: Existen dos campos reservados en la cabecera VXLAN. Uno de ellos está situado entre el campo de flags y el campo VNI y el otro se encuentra situado al final de la cabecera VXLAN. Estos campos tienen una longitud de 24 y 8 bits respectivamente, ambos deben ser enviados con valor "0" y son ignorados en la recepción del paquete.

VXLAN Tunnel End Point (VTEP): Se trata de una entidad que origina y termina “túneles” VXLAN, y es la encargada de encapsular las tramas Ethernet de cada red física perteneciente a una VXLAN para transportarlas sobre una red IP hacia el resto de VTEPs pertenecientes al grupo multicast de la red virtual. De igual forma se encarga de desencapsular los paquetes IP recibidos y almacena las tablas de encaminamiento necesarias para la comunicación entre los hosts conectados a ese VTEP y el resto de hosts de la red virtual.

Cada VTEP tiene al menos dos interfaces: Una de ellas es la interfaz para el segmento de área local y se encarga de proveer servicio a los sistemas finales que están directamente conectados al VTEP. La otra es una interfaz IP que se encarga de encapsular las tramas del segmento de área local para poder transmitirlas sobre una red IP hacia el resto de VTEPs pertenecientes a la red virtual. Para ello es necesario que todos los dispositivos VTEP de una misma VXLAN se unan a un grupo multicast mediante el protocolo IGMP (Internet Group Management Protocol). Al emplearse encaminamiento basado en la dirección IP externa de cada VTEP las diferentes redes locales físicas que forman una red VXLAN son independientes a la topología que las une y pueden comunicarse entre ellas como si se encontrasen en la misma red física.

VXLAN Gateways: Se trata de un dispositivo VTEP que permite la comunicación entre nodos que soportan y que no soportan el protocolo VXLAN. De esta manera los dispositivos que no soporten esta tecnología pueden permanecer en segmentos VLAN clásicos y emplear un VXLAN Gateway para formar un dominio común de capa de enlace con una red VXLAN. Un VXLAN Gateway también puede ofrecer servicios avanzados de conectividad y seguridad a la red VXLAN, como por ejemplo proporcionando funcionalidades de NAT (dando acceso hacia la red exterior), actuando como Firewall, servidor DHCP y DNS entre otras cosas.

Para formar un paquete VXLAN también son necesarias las siguientes cabeceras:

Cabecera externa UDP que contenga el puerto origen del VTEP y el puerto destino (Definido por el IANA el puerto 4789 como puerto UDP por defecto en VXLAN). Una cabecera externa IP que contenga las direcciones IP del VTEP origen y del VTEP destino necesarias para encaminar el paquete sobre la red IP. La dirección IP destino puede ser una dirección unicast o multicast dependiendo de si el VTEP origen conoce o no la dirección del VTEP al que pertenece el dispositivo al que va dirigido el paquete. Cabecera externa Ethernet que contiene las direcciones MAC origen y destino de los VTEP para que puedan comunicarse entre ellos.

Tanto la cabecera UDP como IP proporcionan adicionalmente un campo checksum para verificar la integridad de los datos del paquete.

Por último, para establecer una red VXLAN es necesario que la red IP sobre la que se encaminen los paquetes soporte funcionalidades de encaminamiento multicast como IGMP y PIM, protocolos de encaminamiento como OSPF y BGP y protocolos de estado de enlace como IS-IS.

Funcionamiento de VXLAN

El funcionamiento de VXLAN se basa principalmente en encapsular el tráfico de capa de enlace de una red de área local y transportarlo sobre una red IP hasta otra LAN física diferente, consiguiendo así que los hosts de ambas redes se puedan comunicar de igual manera que si se encontrasen en la misma red de área local. Para conseguir esto se emplean “túneles” entre los distintos VTEPs por los cuales se transmite el tráfico de “overlay”, de forma que este llegue al otro extremo en el mismo estado en el que se encontraba en la red LAN origen. 400px|miniaturadeimagen|derecha|Túnel entre dos VTEP

En cada red LAN los hosts pertenecientes a la VXLAN se encuentran conectados a un VTEP. Este dispositivo será el encargado de encapsular las tramas de los hosts de un segmento VXLAN y encaminarlas por la red IP para que lleguen al resto de dispositivos de la VXLAN.

Cada segmento VXLAN está identificado por su VNI (VXLAN Network Identifier). Sobre la base de este VNI el VTEP se encargará de que los paquetes solo sean enviadas a los hosts que pertenezcan a un mismo segmento VXLAN. Para ello se emplea el protocolo IGMP, todos los VTEP de un mismo segmento VXLAN se suscriben a un grupo multicast, de manera que solo se envíen entre ellos los paquetes relativos a ese segmento VXLAN.

Cada vez que un host de la VXLAN envía una trama cuyo destino es otro host del mismo segmento VXLAN: el VTEP encapsula la trama añadiéndole las cabeceras correspondientes y lo envía sobre la red IP de manera que alcance el VTEP tras el cual se encuentra el host destino.

Para realizar el encaminamiento sobre la red IP cada VTEP almacena en sus tablas de encaminamiento la correspondencia de cada MAC de un host con la IP del VTEP al que le debe enviar el paquete si quiere alcanzar dicho host. Esto hace que se puedan producir dos situaciones distintas a la hora de querer enviar un paquete a un host: El VTEP tiene almacenadas en sus tablas la IP del VTEP y la MAC del host destino: En este caso la comunicación es unicast y por tanto el VTEP origen envía la trama directamente al VTEP destino. El VTEP no conoce la correspondencia de la dirección MAC del host destino con la IP del VTEP destino: En este caso se lleva a cabo un envío multicast, de manera que el VTEP manda el paquete a todos los VTEP que pertenezcan a ese segmento VXLAN con el objetivo de alcanzar finalmente al host destino.

En el caso de emplear la comunicación multicast cada VTEP involucrado en la comunicación almacenará en sus tablas las direcciones correspondientes a ese intercambio de paquetes, de forma que los próximos paquetes podrán ser enviados empleando una comunicación unicast.

Comunicación Unicast: Ejemplo de comunicación unicast en VXLAN

Basándonos en un esquema como el de la Figura 1, en el que existen dos hosts dentro de un mismo segmento VXLAN, encontrándose estos en diferentes redes de área local, y suponiendo que ambas máquinas conocen de antemano las direcciones de la otra máquina y cada VTEP sabe cómo comunicarse con el otro VTEP. Si uno de los hosts intentase comunicarse con el otro se seguiría la secuencia siguiente: 450px|thumb|izquierda|Figura 1: Ejemplo de red VXLAN con reenvío unicast

El Host-A envía sobre la red de área local una trama MAC cuya dirección MAC destino es la del Host-B, de igual manera que lo haría en un escenario LAN normal. El VTEP-1 recibe la trama y comprueba el VNI que el Host-A tiene asociado. Tras esto se determina si la dirección MAC destino se encuentra en el mismo segmento de red o si existe una entrada en las tablas de encaminamiento que relacione esta dirección MAC con la de otro VTEP en cuya red física se encuentra la máquina destino.