Cloudflare oferece um módulo para suportar HTTP / 3 em NGINX

Cloudflare

Cloudflare preparou um módulo para fornecer suporte para o protocolo HTTP / 3 em NGINX. O módulo está feito na forma de um snap na biblioteca de quiches desenvolvido na Cloudflare com a implementação do protocolo de transporte QUIC e HTTP / 3. O código quiche é escrito em Rust, mas o módulo para NGINX é escrito em C e acessa a biblioteca por meio de links dinâmicos. O horário de funcionamento está aberto sob a licença BSD.

Do software cliente, O suporte HTTP / 3 já foi adicionado às compilações experimentais do Chrome Canary e o utilitário curl. No lado do servidor, o uso de implementações de teste isoladas com recursos limitados foi necessário até agora. A capacidade de lidar com HTTP / 3 no nginx simplificará significativamente a implantação de servidores com suporte HTTP / 3 e tornará a implementação de teste do novo protocolo mais acessível.

HTTP / 3 padroniza o uso do protocolo QUIC como um transporte para HTTP / 2. O protocolo QUIC foi desenvolvido pelo Google como uma alternativa ao TCP + TLS para a Web, portanto pretende resolver problemas com um longo tempo de instalação e coordenação de compostos em TCP e atrasa a eliminação da perda de pacotes durante a transmissão de dados. QUIC é um plug-in para o protocolo UDP que oferece suporte à multiplexação de várias conexões e fornece métodos de criptografia equivalentes a TLS / SSL.

Entre as principais características do QUIC que se destacam:

  • Alta segurança, semelhante ao TLS (na verdade, o QUIC fornece a capacidade de usar TLS sobre UDP).
  • Controle de integridade de fluxo que evita a perda de pacotes.
  • A capacidade de estabelecer uma conexão instantaneamente (0-RTT, em cerca de 75% dos casos, os dados podem ser transferidos imediatamente após o envio do 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 usar o mesmo número de sequência ao retransmitir um pacote, o que evita ambigüidade na determinação dos pacotes recebidos e elimina tempos limite.
  • A perda de um pacote afeta a entrega apenas do fluxo associado a ele e não para a entrega de dados em fluxos transmitidos em paralelo pela conexão atual.
  • Ferramentas de correção de erros que minimizam atrasos devido à retransmissão de pacotes perdidos. O uso de códigos especiais de correção de erros no nível do pacote para reduzir as situações que exigem a retransmissão de dados perdidos do pacote.
  • Os limites do bloco criptográfico são alinhados com os limites do pacote QUIC, reduzindo o efeito da perda de pacotes na decodificação do conteúdo dos pacotes subsequentes
  • Sem problemas com o bloqueio da fila TCP
  • Suporte para identificador de conexão, o que reduz o tempo para estabelecer uma reconexão para clientes móveis
  • Capacidade de conectar mecanismos avançados para controlar a sobrecarga de conexão
  • Usando a técnica de previsão da largura de banda em cada direção para garantir a intensidade de encaminhamento de pacote ideal, evitando que ele alcance um estado de congestionamento no qual seja observada perda de pacote
  • Desempenho notável e ganhos de desempenho em relação ao TCP. Para serviços de vídeo como o YouTube, o QUIC mostrou uma redução de 30% nas operações de re-buffering ao assistir vídeos.

Como implementar o módulo para suportar HTTP / 3 em NGINX?

Para aqueles que estão interessados ​​em implementar este módulo em seu servidor, Eles podem fazer isso seguindo as instruções que compartilhamos abaixo.

Para compilá-lo, eles só precisam fazer o download do patch para o nginx 1.16 e o código da biblioteca quiche.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf nginx-1.16.1.tar.gz

git clone --recursive https://github.com/cloudflare/quiche

cd nginx-1.16.1

patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

E compilamos o NGINX com o suporte HTTP / 3 habilitado:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

Durante a compilação, o suporte TLS deve ser baseado na biblioteca BoringSSL ("–with-openssl = .. / quiche / deps / boringssl"), o uso de OpenSSL ainda não é suportado.

Para aceitar conexões na configuração, eles precisarão adicionar a diretiva listener com o sinalizador "quic".


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.