A Microsoft abriu sua implementação do protocolo QUIC usado em HTTP/3
Microsoft anunciou o sobre como abrir o código da biblioteca MsQuicName com a implementação do protocolo de rede QUIC. O código é escrito em C e distribuído por sob licença do MIT. A biblioteca é multiplataforma e pode ser usada não apenas no Windows, mas também no Linux usando Schannel ou OpenSSL para TLS 1.3. No futuro, está previsto o suporte a outras plataformas.
A biblioteca é baseada no código do driver msquic.sys fornecido no kernel do Windows 10 (Insider Preview) para habilitar o HTTP e SMB em cima do QUIC. O código também é usado para implementar HTTP/3 na pilha interna do Windows e no .NET Core. O desenvolvimento da biblioteca MsQuic será conduzido inteiramente no GitHub usando revisão pública por pares, solicitações pull e problemas do GitHub. Foi preparada uma infraestrutura que verifica cada commit e pull request em um conjunto de mais de 4000 testes. Após estabilizar o ambiente de desenvolvimento, está planejado aceitar alterações de desenvolvedores terceiros.
O MsQuic já pode ser usado para criar servidores e clientes, mas nem todas as funcionalidades definidas na especificação IETF estão disponíveis atualmente. Por exemplo, não há suporte para 0-RTT, migração de cliente, Path MTU Discovery ou controle de endereço preferencial do servidor. Entre os recursos implementados, destaca-se a otimização para atingir rendimento máximo e atrasos mínimos, suporte para 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.
Lembre-se de que HTTP/3 padroniza o uso do protocolo QUIC como transporte para HTTP/2. Protocolo QUIC (Quick UDP Internet Connections) é desenvolvido pelo Google desde 2013 como uma alternativa à combinação TCP+TLS para a Web, resolvendo problemas com longos tempos de configuração e negociação de conexões em TCP e eliminando atrasos quando pacotes são perdidos durante a transferência de dados. QUIC é uma extensão do protocolo UDP que suporta multiplexação de múltiplas conexões e fornece métodos de criptografia equivalentes a TLS/SSL.
Alta segurança semelhante ao TLS (essencialmente o QUIC fornece a capacidade de usar TLS 1.3 sobre UDP);
Controle de integridade de fluxo para evitar perda de pacotes;
A capacidade de estabelecer instantaneamente uma conexão (0-RTT, em cerca de 75% dos casos, os dados podem ser transmitidos imediatamente após o envio de um pacote de configuração de conexão) e garantir atrasos mínimos entre o envio de uma solicitação e o recebimento de uma resposta (RTT, Round Trip Time) ;
Não use o mesmo número de sequência ao retransmitir um pacote, o que permite evitar ambigüidades na determinação dos pacotes recebidos e eliminar os tempos limite;
A perda de pacotes afeta apenas a entrega do stream associado a ele e não interrompe a entrega de dados em streams transmitidos em paralelo na conexão atual;
Ferramentas de correção de erros que minimizam atrasos devido à retransmissão de pacotes perdidos. Uso de códigos especiais de correção de erros no nível do pacote para reduzir situações que requerem retransmissão de dados perdidos do pacote.
Os limites dos blocos criptográficos estão alinhados com os limites dos pacotes QUIC, o que reduz o impacto das perdas de pacotes na decodificação do conteúdo dos pacotes subsequentes;
Sem problemas com o bloqueio da fila TCP;
Suporte de ID de conexão para reduzir o tempo de reconexão para clientes móveis;
Possibilidade de conectar mecanismos avançados para controle de sobrecarga de conexão;
Utilizar técnicas de previsão de largura de banda em cada direção para garantir a intensidade ótima de envio de pacotes, evitando rolar para um estado de congestionamento, no qual há perda de pacotes;
Perceptível crescimento desempenho e taxa de transferência em comparação com o TCP. Para serviços de vídeo como o YouTube, o QUIC demonstrou reduzir as operações de rebuffering de vídeo em 30%.