O protocolo QUIC (Quick UDP Internet Connections) aumenta a velocidade de acesso do cliente, especialmente em cenários com condições de rede adversas ou alternância frequente entre redes Wi-Fi e móveis. Ele permite multiplexação sem reconexão, o que aumenta a eficiência no acesso a recursos e protege as transmissões de dados.
Protocolo QUIC
O QUIC, também conhecido como protocolo Quick UDP Internet Connections, oferece segurança equivalente à do SSL e vantagens como multiplexação. Seu desempenho é superior em condições de rede instáveis e mantém a usabilidade do serviço mesmo com perda significativa de pacotes e alta latência. O protocolo QUIC permite implementar diferentes algoritmos de controle de congestionamento na camada de aplicação, sem depender de suporte do sistema operacional ou do kernel. Essa característica torna o protocolo mais flexível para modificações em comparação ao TCP tradicional, sendo ideal para serviços cuja otimização via TCP atingiu um gargalo.
Com o crescimento rápido de novos serviços, como vídeos curtos e transmissões ao vivo, a transmissão de mídia exige alta largura de banda e baixa latência. O protocolo QUIC resolve eficazmente problemas de buffer de rede e vídeo, melhora o acesso a recursos de áudio e vídeo e garante a segurança das transmissões de dados.
Tipos de protocolo QUIC suportados
O ALB suporta gQUIC e iQUIC. O protocolo HTTP/3 é um protocolo da camada de aplicação construído sobre o iQUIC. Ele utiliza o iQUIC para implementar recursos como multiplexação, controle de congestionamento, detecção de perda e retransmissão. O protocolo HTTP/3 estabelece conexões de cliente mais rapidamente e elimina o bloqueio de cabeça de linha em fluxos multiplexados.
Application Load Balancer (ALB) suporta as versões Q46, Q43 e Q39 do gQUIC, além da versão h3 do HTTP/3.
Negociação HTTP/3
Após ativar a QUIC Upgrade, o ALB anuncia os protocolos HTTP/3 e gQUIC aos clientes. O anúncio prioriza o HTTP/3, permitindo que clientes compatíveis se conectem primeiro ao ALB por esse protocolo.
Os clientes sempre retornam ao HTTPS ou HTTP/2 caso falhem ao estabelecer uma conexão HTTP/3.
Clientes compatíveis com HTTP/3 utilizam um cookie de cache relacionado a esse protocolo.
Ativar ou desativar o upgrade QUIC não afeta as conexões dos clientes ao ALB.
O suporte é anunciado no cabeçalho de resposta HTTP Alt-Svc. O valor do cabeçalho alt-svc é:
Alt-Svc : h3=":$quic_port"; ma=3600,quic=":$quic_port"; v="46,43,39"; ma=3600
Quando o upgrade QUIC está ativado, o cliente pode retornar ao HTTPS ou HTTP/2 em certas situações, em vez de negociar HTTP/3. Isso ocorre quando:
A versão do HTTP/3 suportada pelo cliente é incompatível com a versão suportada pelo ALB.
O ALB detecta tráfego UDP bloqueado ou limitado, impedindo o funcionamento do HTTP/3.
O cliente não oferece suporte ao HTTP/3 e, portanto, não tenta negociar uma conexão HTTP/3.
Requisitos do cliente
Se você utilizar o Google Chrome, o navegador poderá iniciar solicitações QUIC diretamente para o ALB.
-
Para acessar o QUIC usando o Google Chrome, utilize uma versão específica do navegador:
A versão mais alta do protocolo gQUIC suportada pelo ALB é a Q46, correspondente ao Google Chrome 74 a 81.
A versão mais alta do protocolo HTTP/3 suportada pelo ALB é a h3, correspondente ao Google Chrome 87 ou posterior.
Caso utilize outros clientes, como um aplicativo desenvolvido sob medida, integre uma biblioteca de rede compatível com o protocolo QUIC, por exemplo: lsquic-client, Cronet, ngtcp2 e quiche.
Casos de uso
Ao usar o Google Chrome para acessar uma instância ALB, o ALB encaminha as solicitações aos servidores de back-end com base no nome de domínio do certificado example.com vinculado ao listener. Os dois principais casos de uso são:
Quando há um listener HTTPS e um listener QUIC configurados, o ALB prioriza o listener QUIC. Nesse cenário, ao inserir o nome de domínio do certificado
example.comno Google Chrome, a instância ALB encaminha a solicitação do cliente ao grupo de servidores padrão RS1 por meio do listener QUIC configurado.Se o listener QUIC estiver indisponível, a conexão retorna automaticamente ao listener HTTPS associado. Nessa situação, ao digitar o nome de domínio do certificado
example.comno Google Chrome, a instância ALB encaminha a solicitação do cliente ao grupo de servidores padrão RS1 por meio do listener HTTPS configurado.
Pré-requisitos
Uma instância ALB criada. Para mais informações, consulte Criar e gerenciar instâncias ALB.
Um grupo de servidores chamado RS1 criado. Para mais informações, consulte Criar e gerenciar grupos de servidores.
Uma instância ECS01 adicionada ao grupo de servidores RS1, com um serviço de vídeo Nginx implantado nela.
Um certificado de servidor SSL implantado na instância ALB. O certificado deve estar vinculado ao nome de domínio
example.com.
Etapa 1: Criar um listener QUIC
Faça login no console ALB.
Na barra de navegação superior, selecione a região onde a instância ALB está implantada.
Na página Instances, localize a instância desejada e clique no ID da instância. Na aba Listener, clique em Create Listener.
-
No assistente Configure Listener, especifique os parâmetros abaixo e clique em Next.
Este tópico descreve apenas os parâmetros relevantes. Para os demais parâmetros, utilize os valores padrão. Para mais informações, consulte Adicionar um listener QUIC.
Configuração do listener
Descrição
Listener Protocol
Selecione o protocolo para o listener.
Neste exemplo, selecione QUIC.
Listener Port
Especifique a porta para receber e encaminhar solicitações aos servidores de back-end.
O número da porta deve estar entre 1 e 65535.
NotaDentro da mesma instância ALB, as portas de listener para o mesmo protocolo devem ser exclusivas, e as portas de listener HTTP e HTTPS não podem ser iguais.
No assistente Configure SSL Certificate, selecione um certificado de servidor e clique em Next.
No assistente Select Server Group, selecione um Server, escolha um grupo de servidores, verifique as informações do servidor de back-end e clique em Next.
No assistente Configuration Review, confirme as informações de configuração e clique em Submit.
Etapa 2: Criar um listener HTTPS
Ao criar o listener HTTPS, ative o upgrade QUIC e associe-o ao listener QUIC criado anteriormente.
Na página Instances, localize a instância para a qual você criou um listener QUIC na Etapa 1 e clique no ID da instância.
Na aba Instance Details, clique na aba Listener e, em seguida, clique em Create Listener.
-
No assistente Configure Listener, especifique os parâmetros abaixo e clique em Next.
Este tópico descreve apenas os parâmetros relevantes. Para os demais parâmetros, utilize os valores padrão. Para mais informações, consulte Adicionar um listener HTTPS.
Configuração do listener
Descrição
Listener Protocol
Selecione o protocolo para o listener.
Neste exemplo, selecione HTTPS.
Listener Port
Insira a porta do listener usada para receber solicitações e encaminhá-las aos servidores de back-end. Geralmente, a porta 80 é usada para HTTP e a porta 443 para HTTPS.
O número da porta deve estar entre 1 e 65535.
Neste exemplo, insira 443.
NotaAs portas de listener devem ser exclusivas dentro da mesma instância de balanceador de carga.
Advanced Settings
Clique em Modify para expandir as configurações avançadas.
QUIC Upgrade
Defina se deseja ativar o upgrade QUIC.
Neste exemplo, ative o upgrade QUIC e selecione o listener QUIC criado na lista suspensa Associated QUIC Listeners.
No assistente Configure SSL Certificate, selecione um certificado de servidor e clique em Next.
No assistente Select Server Group, selecione um Server, escolha um grupo de servidores, verifique as informações do servidor de back-end e clique em Next.
Na página Configuration Review, confirme as informações de configuração e clique em Submit.
Etapa 3: Configurar a resolução de nome de domínio
Crie um registro CNAME para mapear example.com ao nome de domínio público da instância ALB.
Faça login no console ALB.
Na barra de navegação superior, selecione a região.
Localize a instância ALB desejada e copie seu nome DNS.
-
Siga estas etapas para adicionar um registro CNAME.
NotaSe o seu nome de domínio não estiver registrado na Alibaba Cloud, adicione-o primeiro ao console Alibaba Cloud DNS antes de configurar suas definições de resolução. Para mais informações, consulte Gerenciamento de nomes de domínio. Se o nome de domínio já estiver registrado na Alibaba Cloud, prossiga com as etapas a seguir.
Faça login no console Alibaba Cloud DNS.
Na página Public Zone, localize o nome de domínio desejado e clique em Settings na coluna Actions.
Na página Settings, clique em Add Record.
-
No painel Add Record, especifique os parâmetros abaixo e clique em OK.
Parâmetro
Descrição
Record Type
Na lista suspensa, selecione CNAME.
Hostname
O nome de host para o registro. Por exemplo, www.
Query Source
Selecione Default.
Record Value
Cole o nome DNS da instância ALB copiada.
TTL
Tempo de vida (TTL). Define por quanto tempo o registro DNS fica armazenado em cache no servidor DNS. Este exemplo usa o valor padrão.
NotaUm novo registro CNAME entra em vigor quase imediatamente. O tempo de propagação de um registro modificado depende do TTL do registro anterior, cujo padrão é 10 minutos.
Caso encontre um conflito ao adicionar o registro, utilize um nome de host diferente para a resolução. Para mais informações, consulte Regras de conflito de registros DNS.
Etapa 4: Verificar o resultado
Este tópico utiliza um cliente Windows como exemplo. No navegador, insira example.com para acessar a instância ALB. Neste cenário, um serviço de vídeo Nginx está implantado no ECS01, que atua como servidor de back-end no grupo de servidores RS1.
Com um listener HTTPS e um listener QUIC configurados, digite o nome de domínio vinculado ao certificado,
example.com, no navegador e pressioneF12. Observe que o Protocol da página atual é HTTP/3 e a solicitação levou 93 ms.Se o listener QUIC estiver indisponível, digite o nome de domínio vinculado ao certificado,
example.com, no navegador e pressioneF12. Observe que o Protocol da página atual é HTTP/2 e a solicitação levou 148 ms.
Os resultados demonstram que o uso de HTTP/3 via ALB melhora a velocidade de acesso ao conteúdo de vídeo nos servidores de back-end.