¿Por qué VXLAN usa UDP en lugar de TCP como el protocolo de transporte subyacente?

Por lo que puedo ver, VXLAN (RFC 7348) es esencialmente “LAN virtuales para máquinas virtuales a través de redes IP”.

Una regla general para todas las buenas redes de superposición es reducir la latencia y la sobrecarga al mínimo necesario para completar la misión. Dado que VXLAN básicamente hace un túnel de las tramas de Ethernet a través de una red IP, el transporte lógico a utilizar debe manejar eficientemente todo tipo de tráfico de Ethernet (unidifusión, multidifusión, difusión) al tiempo que reduce la sobrecarga y la latencia al mínimo. En el mundo de IP, eso significa más o menos UDP.

Por el contrario, considere lo que sucedería si se implementara VXLAN con conexiones TCP de VM a VM. Como mínimo:

  • enviar un solo paquete UDP de unidifusión entre dos máquinas virtuales iniciaría una configuración de conexión TCP completa (y un eventual desmantelamiento) entre los dos
  • el envío de tráfico de multidifusión o difusión (por ejemplo, ARP) a través de la VLAN eventualmente daría como resultado una malla completa de conexiones TCP [matemáticas] (n (n-1) / 2) [/ matemáticas] entre cada par de máquinas virtuales, junto con la VXLAN de cada máquina virtual el tiempo de ejecución tiene que emular dichas transmisiones unidifusión a todos los demás,
  • todo el tráfico sufriría la latencia impuesta por los mecanismos de transporte confiables de TCP (entrega en orden, control de flujo y congestión, retransmisión automática), completamente innecesario si las máquinas virtuales se comunican a través de TCP, completamente indeseable si están hablando UDP

En resumen, VXLAN usa UDP para el transporte porque TCP aporta demasiado a la parte de VLAN.

TCP agrega gastos generales y puede crear cuellos de botella involuntarios de ancho de banda.

Para evitar esto, uno usaría UDP. UDP no agrega más sobrecarga de encabezado que TCP, sino menos sobrecarga de protocolo. No encontrará una ventana TCP que cause problemas de velocidad con UDP. TCP está diseñado para aplicaciones orientadas a la conexión. UDP está diseñado para conexiones donde las conexiones son irrelevantes (flujos, donde los paquetes reenviados se desperdiciarían en el ancho de banda) y aplicaciones donde la aplicación misma maneja las funciones deseadas de TCP (TFTP es una aplicación orientada a la conexión sobre UDP, con “seguimiento” y retransmisiones manejadas a nivel de aplicación, no a nivel de protocolo).

Entonces, en la práctica, UDP proporcionará un mayor ancho de banda y una menor latencia utilizando menos recursos de host, por lo que VXLAN lo utiliza.

VxLAN es un estándar IETF RFC7348, TCP es un protocolo confiable y orientado a la conexión con tres manos, por lo tanto, es un poco más lento que UDP debido a la confiabilidad. UDP, por otro lado, es un protocolo no confiable, más simple y sin conexión, por lo tanto, es bueno usarlo.

La razón principal para usar el encabezado L4 en VXLAN es para compartir la carga o equilibrar la carga del tráfico en los enrutadores centrales, para hacerlo, usar el encabezado UDP era la mejor opción.

Por qué VxLAN y cómo se realiza el equilibrio de carga usando el encabezado UDP se discute en los siguientes videos.

Como la comunicación se realiza localmente en la nube informática, UDP es mucho más rápido que TCP y es suficiente para establecer la ruta hacia el destino.