Empresa Microsoft sobre a abertura do código da biblioteca com a implementação do protocolo de rede . O código foi escrito em C e sob a licença MIT. A biblioteca é multiplataforma e pode ser utilizada não só no Windows, mas também no Linux com a utilização de ou OpenSSL para TLS 1.3. Futuramente, o suporte a outras plataformas está planejado.
A biblioteca é baseada no código do driver msquic.sys, fornecido no núcleo do Windows 10 (Insider Preview) para garantir o funcionamento dos protocolos HTTP e sobre o QUIC. Inclusive, o código é utilizado para implementar HTTP/3 na pilha interna do Windows e no .NET Core. O desenvolvimento da biblioteca MsQuic será totalmente realizado no GitHub, utilizando revisão pública, pull requests e GitHub Issues. Uma infraestrutura foi preparada para verificar cada commit e pull request em um conjunto de mais de 4000 testes. Após a estabilização do ambiente de desenvolvimento, mudanças de desenvolvedores externos estão planejadas.
MsQuic já pode ser utilizado para a criação de servidores e clientes, mas nem toda a funcionalidade definida na especificação IETF está disponível atualmente. Por exemplo, ainda não há suporte a 0-RTT, migração de clientes, descoberta de Path MTU e gerenciamento da seleção de endereços para o servidor (Server Preferred Address). Entre os recursos implementados, destaca-se a otimização para alcançar a máxima largura de banda e mínima latência, suporte a entrada/saída assíncrona, RSS (Receive Side Scaling) e a capacidade de combinar fluxos UDP de entrada e saída. A implementação do MsQuic foi testada quanto à compatibilidade com versões experimentais dos navegadores Chrome e Edge.
Vale lembrar que o HTTP/3 padroniza o uso do protocolo QUIC como transporte para o HTTP/2. O protocolo (Quick UDP Internet Connections) vem sendo desenvolvido pela Google desde 2013 como uma alternativa à combinação TCP+TLS para a Web, abordando problemas de latência elevada na configuração e negociação de conexões TCP e eliminando atrasos em caso de perda de pacotes durante a transmissão de dados. O QUIC é uma camada sobre o protocolo UDP, suportando multiplexação de várias conexões e fornecendo métodos de criptografia equivalentes ao TLS/SSL.
Principais QUIC:
- Alta segurança, equivalente ao TLS (na verdade, o QUIC fornece a capacidade de usar TLS 1.3 sobre UDP);
- Controle da integridade do fluxo, prevenindo a perda de pacotes;
- Capacidade de estabelecer uma conexão instantaneamente (0-RTT, em cerca de 75% dos casos, os dados podem ser transmitidos imediatamente após o envio do pacote de configuração da conexão) e garantir latências mínimas entre o envio da solicitação e o recebimento da resposta (RTT, Round Trip Time);
- Não reutilizar o mesmo número de sequência ao retransmitir um pacote, o que ajuda a evitar ambiguidades na identificação dos pacotes recebidos e elimina timeouts;
- A perda de um pacote afeta apenas a entrega do fluxo relacionado e não interrompe a entrega de dados em fluxos paralelos transmitidos através da conexão atual;
- Mecanismos de correção de erros que minimizam atrasos devido à retransmissão de pacotes perdidos. Uso de códigos especiais de correção de erros em nível de pacote para reduzir situações que exigem a retransmissão de dados de pacotes perdidos.
- Os limites dos blocos criptográficos estão alinhados com os limites dos pacotes QUIC, o que diminui o impacto da perda de pacotes na decodificação do conteúdo dos pacotes subsequentes.
- Ausência de problemas de bloqueio de fila TCP.
- Suporte a identificadores de conexão, permitindo reduzir o tempo de estabelecimento de novas conexões para clientes móveis.
- Capacidade de conectar mecanismos avançados de controle de congestionamento.
- Uso de técnicas de previsão de largura de banda em cada direção para garantir a intensidade ideal de envio de pacotes, evitando um estado de sobrecarga em que ocorre a perda de pacotes.
- Notável de desempenho e capacidade em comparação ao TCP. Para serviços de vídeo, como o YouTube, a aplicação do QUIC demonstrou uma redução de 30% nas operações de buffering durante a reprodução de vídeos.
Fonte: opennet.ru
