Versão preliminar do nginx com suporte para QUIC e HTTP/3

Empresa NGINX anunciou sobre o início dos testes implementação dos protocolos QUIC e HTTP/3 no servidor HTTP e proxy nginx. A implementação é baseada no 27º rascunho da especificação IETF-QUIC e está disponível através de um repositório separado, ramificado da versão 1.19.0. O código é distribuído sob a licença BSD e não se sobrepõe à implementação proposta anteriormente do HTTP/3 para nginx pela Cloudflare, que é um projeto separado.

O suporte ao HTTP/3 no nginx é marcado como experimental, pois nem todos os recursos do protocolo estão implementados. Enquanto isso, o nginx já pode ser usado para enviar respostas a solicitações simples HTTP/3 sobre QUIC e transferir/baixar grandes arquivos. Entre os recursos ainda ausentes do protocolo estão os mecanismos de negociação de versão do protocolo, ECN e controle de congestionamento, logs estruturados, modo de recuperação (QUIC recovery, gerência de fluxo e congestionamento), Rebinding de NAT, endereços móveis, Server push, anexo de dados (trailer). Além disso, foi proposta apenas uma suporte básico para o tratamento de pacotes ACK e controle de fluxo, o que requer melhorias. Nem todos os requisitos da norma foram atendidos.

Para ativar o HTTP/3, é necessário compilar o nginx com o módulo http_v3_module e adicionar uma diretiva adicional
«listen» com a flag «http3″ para criar um socket UDP de escuta. Por exemplo:

server {
listen 443 ssl; # socket TCP para HTTP/1.1
listen 443 http3 reuseport; # socket UDP para QUIC+HTTP/3

ssl_protocols TLSv1.3; # TLS 1.3 é obrigatório no QUIC
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;

add_header Alt-Svc ‘quic=»:443″‘; # sinal de disponibilidade do QUIC
add_header QUIC-Status $quic; # Cabeçalho com o status do uso do QUIC
}

Vale lembrar que o HTTP/3 padroniza o uso do protocolo QUIC como transporte para o HTTP/2. O protocolo QUIC (Quick UDP Internet Connections) está sendo desenvolvido pela Google desde 2013 como uma alternativa ao conjunto TCP+TLS para a Web, resolvendo problemas com o longo tempo de conexão e negociação em TCP e eliminando latências durante a perda de pacotes no processo de 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. Do lado do cliente, o suporte experimental ao HTTP/3 já foi adicionado ao Curl, Firefox e Chromium.

Versão preliminar do nginx com suporte para QUIC e HTTP/3

Principais Características 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);
    Versão preliminar do nginx com suporte para QUIC e HTTP/3
  • 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 aumento 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

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster