La empresa Microsoft sobre la apertura del código de la biblioteca con la implementación del protocolo de red . El código está escrito en lenguaje C y bajo la licencia MIT. La biblioteca es multiplataforma y puede ser utilizada no solo en Windows, sino también en Linux utilizando o OpenSSL para TLS 1.3. En el futuro, se planea soportar otras plataformas.
La biblioteca se basa en el código del controlador msquic.sys, proporcionado en el núcleo de Windows 10 (Insider Preview) para habilitar el funcionamiento de los protocolos HTTP y sobre QUIC. Incluyendo que el código se utiliza para implementar HTTP/3 en el stack interno de Windows y en .NET Core. El desarrollo de la biblioteca MsQuic se llevará a cabo completamente en GitHub utilizando revisión pública, pull requests e Issues de GitHub. Se ha preparado una infraestructura que verifica cada commit y pull request en un conjunto de más de 4000 pruebas. Después de estabilizar el entorno de desarrollo, se planea aceptar cambios de desarrolladores externos.
MsQuic ya se puede utilizar para crear servidores y clientes, pero no toda la funcionalidad definida en la especificación de IETF está disponible actualmente. Por ejemplo, aún no hay soporte para 0-RTT, migración de clientes, Path MTU Discovery y gestión de selección de direcciones para el servidor (Server Preferred Address). De las características implementadas, se destaca la optimización para alcanzar el máximo ancho de banda y las mínimas latencias, el soporte para entrada/salida asíncrona, RSS (Receive Side Scaling), y la posibilidad de combinar flujos UDP entrantes y salientes. La implementación de MsQuic ha sido verificada por compatibilidad con ramas experimentales de los navegadores Chrome y Edge.
Recordemos que HTTP/3 normaliza el uso del protocolo QUIC como transporte para HTTP/2. El protocolo (Quick UDP Internet Connections) ha sido desarrollado por Google desde 2013 como una alternativa a la combinación TCP+TLS para la web, que resuelve los problemas de alto tiempo de establecimiento y negociación de conexiones en TCP y elimina las demoras debido a la pérdida de paquetes durante la transmisión de datos. QUIC es una capa sobre el protocolo UDP, que soporta la multiplexión de múltiples conexiones y proporciona métodos de cifrado equivalentes a TLS/SSL.
Principales QUIC:
- Alta seguridad, similar a TLS (en esencia, QUIC proporciona la capacidad de usar TLS 1.3 sobre UDP);
- Control de integridad del flujo, previniendo la pérdida de paquetes;
- La posibilidad de establecer una conexión de inmediato (0-RTT, en aproximadamente el 75% de los casos los datos se pueden transmitir inmediatamente después del envío del paquete de establecimiento de conexión) y asegurar una latencia mínima entre el envío de la solicitud y la recepción de la respuesta (RTT, Round Trip Time);
- No utilizar el mismo número de secuencia para la retransmisión del paquete, lo que permite evitar ambigüedades al determinar los paquetes recibidos y eliminar los tiempos de espera;
- La pérdida de paquetes afecta solo a la entrega de la corriente asociada y no detiene la entrega de datos en las corrientes que se transmiten en paralelo a través de la conexión actual;
- Mecanismos de corrección de errores que minimizan la latencia debido a la retransmisión de paquetes perdidos. Uso de códigos especiales de corrección de errores a nivel de paquete para reducir situaciones que requieren la retransmisión de datos de un paquete perdido.
- Los límites de los bloques criptográficos están alineados con los límites de los paquetes QUIC, lo que reduce el impacto de la pérdida de paquetes en la decodificación del contenido de los siguientes paquetes;
- Ausencia de problemas de bloqueo de la cola TCP;
- Soporte para un identificador de conexión que permite reducir el tiempo de establecimiento de una nueva conexión para clientes móviles;
- Capacidad de conectar mecanismos avanzados de control de congestión de la conexión;
- Uso de técnicas de predicción de ancho de banda en cada dirección para asegurar la intensidad óptima de envío de paquetes, evitando caer en un estado de congestión donde se observa la pérdida de paquetes;
- Notable rendimiento y capacidad de transporte en comparación con TCP. Para servicios de video como YouTube, la aplicación de QUIC ha demostrado reducir las operaciones de repetición de búfer al ver videos en un 30%.
Fuente: opennet.ru
