¿Qué son QUIC y HTTP/3?

Quick UDP Internet Connections (QUIC) es un protocolo de capa de transporte de uso general diseñado para reemplazar al Protocolo de Control de Transmisión (TCP) gracias a su flexibilidad, seguridad integrada, menor impacto en el rendimiento y mayor velocidad de adopción. Originalmente desarrollado por Google, QUIC utiliza el protocolo de datagramas de usuario (UDP) como mecanismo de transporte de bajo nivel para mover paquetes entre cliente y servidor. Un aspecto clave de QUIC es que integra la seguridad de la capa de transporte (TLS) de forma nativa, a diferencia de HTTP/1.1 y HTTP/2, donde TLS se implementa como una capa adicional.

HTTP/3, basado en QUIC, es la tercera gran versión de Hypertext Transfer Protocol (HTTP) y se adoptó como norma del IETF en 2022. QUIC+HTTP/3 se crearon para resolver las limitaciones inherentes a TCP que limitan el rendimiento y la experiencia del usuario.

¿Cómo funcionan las API?

Las API son la «cara pública» de las aplicaciones, revelan las funciones que realizan y la información que pueden proporcionar, y definen el formato adecuado de las peticiones. Cuando un desarrollador crea y expone la API de una aplicación, permite que otras aplicaciones se comuniquen con ella.

En muchos casos, las API ahorran un valioso tiempo a los desarrolladores, ya que facilitan el acceso a funciones de uso común. En lugar de duplicar la funcionalidad de una aplicación existente, los desarrolladores pueden integrar la funcionalidad en sus aplicaciones haciendo llamadas a la API de la aplicación existente.

Diagrama http

Visión general de alto nivel de las pilas de transporte HTTP

Conceptos básicos de QUIC+HTTP/3

El objetivo de QUIC es proporcionar un protocolo de transporte de alto rendimiento, alta fiabilidad y alta seguridad, específicamente diseñado para HTTP/3, aunque también es adecuado para el tráfico no HTTP.

Si QUIC es completamente nuevo para usted, le recomendamos que vea el vídeo introductorio que encontrará a continuación.

UDP, TCP y TLS

UDP es un protocolo sencillo y ligero que no necesita un complejo intercambio de tres vías como TCP para establecer la primera conexión. Esta simplicidad hace que UDP sea rápido y sin conexiones, pero también implica que carece de las características esenciales para garantizar una comunicación fiable y segura en comparación con TCP.

QUIC es único porque combina las ventajas de los protocolos UDP y TCP. Aunque no establece una conexión y utiliza UDP como protocolo de transporte de bajo nivel para reducir los retrasos de conexión y transmisión, está orientado a la conexión en las capas superiores, gracias a la reimplementación de las funciones de establecimiento de conexión y detección de pérdidas de TCP, que aseguran la entrega de paquetes. Se encarga de identificar los datos perdidos y gestionar las retransmisiones necesarias para garantizar una experiencia de usuario fluida y sin interrupciones.

QUIC también incorpora TLS como componente integral, no como una capa adicional como ocurre con HTTP/1.1 y HTTP/2. Esta incorporación garantiza que los mensajes estén cifrados de manera predeterminada.

Visión general de una red QUIC

El siguiente diagrama muestra la anatomía básica de una red QUIC. Como se ve en el diagrama, los objetos lógicos que contienen peticiones HTTP/3, respuestas o cualquier dato de aplicación son flujos QUIC. Para la transmisión entre los puntos de conexión de la red, los flujos QUIC se envuelven dentro de múltiples capas lógicas.

Anatomía de red del diagrama Quic

Anatomía de un flujo QUIC

Empezando desde fuera hacia dentro, las capas y objetos lógicos son:

  • Datagrama UDP: Contiene un encabezado que especifica los puertos de origen y destino (junto con datos de longitud y suma de comprobación), seguido de uno o más paquetes QUIC. El datagrama es la unidad de información transmitida de cliente a servidor a través de la red.
  • Paquete QUIC: Contiene un encabezado QUIC y una o más tramas QUIC.
  • Encabezado QUIC: Contiene metadatos sobre el paquete. Hay dos tipos de encabezado:
    • El encabezado largo, utilizado durante el establecimiento de la conexión.
    • El encabezado corto, utilizado una vez establecida la conexión. Contiene (entre otros datos) el ID de conexión, el número de paquete y la fase de clave (utilizada para rastrear qué claves se utilizaron para cifrar el paquete, en apoyo de la rotación de claves). Los números de paquete son únicos (y siempre aumentan) para una conexión y una fase de clave concretas.
  • Trama: Contiene el tipo, el ID de la secuencia, el desplazamiento y los datos de la secuencia. Los datos de la secuencia se reparten en varias tramas, pero se pueden ensamblar utilizando el ID de conexión, el ID de la secuencia y el desplazamiento, que se utiliza para presentar los trozos de datos en el orden correcto.
  • Flujo: Un flujo de datos unidireccional o bidireccional dentro de una única conexión QUIC. Cada conexión QUIC puede soportar múltiples flujos independientes, cada uno con su propio ID de flujo. Si un paquete QUIC que contiene varios flujos se pierde, esto no afecta al progreso de los flujos no contenidos en el paquete perdido, lo cual es crucial para evitar el bloqueo de encabezado de línea experimentado en HTTP/2. Los flujos pueden ser bidireccionales y ser creados por cualquiera de los puntos de conexión.
Cómo funciona QUIC con un intercambio de TLS

Un intercambio de TLS proporciona una conexión segura entre el cliente y el servidor. El cifrado proporcionado por QUIC requiere TLS v1.3. Como se ve en el siguiente diagrama, QUIC mantiene la «capa de contenido» de TLS que proporciona las claves criptográficas, pero sustituye la «capa de registro» por su propio mecanismo de transporte.

Diagrama de TLS y capas de Quic

QUIC también se basa en TLS para la autenticación y negociación de parámetros críticos para la seguridad y el rendimiento. En lugar de una estratificación estricta, los dos protocolos cooperan: QUIC utiliza el intercambio de TLS para establecer una conexión segura, mientras que TLS utiliza la capa de fiabilidad, entrega ordenada y registro que proporciona QUIC.

A alto nivel, existen dos interacciones principales entre los componentes TLS y QUIC:

  • El componente TLS envía y recibe mensajes a través del componente QUIC, que proporciona una abstracción de flujo fiable a TLS.
  • El componente TLS proporciona una serie de actualizaciones al componente QUIC, incluyendo a) nuevas claves de protección de paquetes para instalar y b) cambios de estado como la finalización del intercambio, el certificado del servidor, etc.

Opciones de soporte HTTP/3 para TLS en QUIC

TLS en QUIC es una variante de TLS que está diseñada específicamente para el protocolo QUIC. Actualmente hay dos opciones para los usuarios que buscan soporte HTTP/3 en TLS en QUIC:

  • Implementación de QUIC en OpenSSL: OpenSSL está trabajando actualmente en la implementación de una pila QUIC completa de manera independiente. Este desarrollo encapsulará toda la funcionalidad de QUIC dentro de la propia implementación, lo que facilitará a los usuarios de HTTP/3 utilizar la API TLS de OpenSSL sin tener que preocuparse por los detalles específicos de QUIC.
  • Bibliotecas que soportan la API QUIC de BoringSSL: Varias bibliotecas SSL como BoringSSL, quicTLS y LibreSSL (que comenzó como una bifurcación de OpenSSL) proporcionan ahora funcionalidad TLS de QUIC implementando la API QUIC de BoringSSL. Esta es actualmente la única opción para los usuarios que deseen utilizar HTTP/3, ya que la implementación TLS de QUIC de OpenSSL aún no está lista.
Ventajas de QUIC+HTTP/3

El objetivo de QUIC+HTTP/3 es mejorar el rendimiento de las aplicaciones web reduciendo la latencia y mejorando la entrega de datos en redes poco fiables. Entre sus ventajas destacan:

  • Reducción de la latencia: Los protocolos tradicionales como TCP sufren de latencia debido a su proceso de establecimiento de conexiones. Las capacidades de multiplexación de QUIC+HTTP/3 les permiten establecer conexiones de forma más eficiente, lo que se traduce en una menor latencia para el establecimiento de conexiones y la transmisión de datos.
  • Establecimiento de conexión más rápido: QUIC+HTTP/3 combina el protocolo TLS y la configuración de cifrado en un solo paso, lo que reduce el número de idas y vueltas necesarias para establecer una conexión segura.
  • Multiplexación: Al manejar múltiples flujos de datos dentro de una única conexión, QUIC+HTTP/3 permite un uso más eficiente de los recursos de red y ayuda a evitar el problema del bloqueo de cabecera, en el que un flujo lento podría retrasar a los demás en las conexiones TCP tradicionales.
  • Corrección de errores mejorada: QUIC incorpora técnicas de corrección de errores hacia adelante, que pueden ayudar a recuperar paquetes perdidos sin necesidad de retransmisiones, reduciendo el impacto de la pérdida de paquetes en el rendimiento.
  • Reducción del impacto de la pérdida de paquetes: UDP no establece conexión y permite una transmisión más rápida al prescindir de la rigurosa comprobación de errores de TCP, lo que lo hace especialmente ventajoso en escenarios donde las condiciones de la red son menos estables.
  • Control de congestión adaptativo: QUIC+HTTP/3 están diseñados para ser más eficientes y reactivos que el control de congestión de TCP, lo que resulta en un mejor rendimiento en entornos de red variables.
  • Compatibilidad con la migración: QUIC+HTTP/3 puede pasar sin problemas de una conexión de red a otra (por ejemplo, de Wi-Fi a móvil) sin interrumpir el rendimiento de la aplicación.
  • Seguridad mejorada: QUIC+HTTP/3 integra cifrado por defecto, lo que mejora la seguridad y la privacidad de la transmisión de datos. Este cifrado impide las escuchas y la manipulación de los datos en tránsito.
  • Traspaso de NAT: El uso de UDP por parte de QUIC+HTTP/3 puede ayudar a traspasar la traducción de direcciones de red (NAT), lo que facilita el establecimiento de conexiones en situaciones en las que las conexiones TCP tradicionales podrían plantear problemas.
  • Evolución constante: Dado que QUIC+HTTP/3 fueron diseñados para ser implementados y actualizados a través de software, sin necesidad de modificar la infraestructura de red subyacente, pueden actualizarse y mejorarse con mayor rapidez para adaptarse a las condiciones cambiantes de la red y a los problemas de seguridad.
Más información sobre el uso de QUIC+HTTP/3 con NGINX

Explore los siguientes recursos para conocer la implementación de QUIC+HTTP/3 de NGINX y otras formas de utilizar QUIC+HTTP/3 para una comunicación más rápida y eficaz.

Recursos adicionales

Blogs

Webinar