Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Use o HTTP/3 para acessar um gateway de entrada do ASM

Última atualização: Sep 21, 2026

O HTTP/3 é a terceira versão principal do protocolo HTTP. Ao contrário do HTTP/1.1 e do HTTP/2, o HTTP/3 deixa de usar o protocolo tcp tradicional na camada de transporte e adota o protocolo Quick udp Internet Connection (QUIC), baseado em udp. Essa mudança permite que o HTTP/3 apresente menor latência, recuperação de erros mais robusta e multiplexação de conexões mais eficiente. Este tópico descreve como configurar service baseados em HTTP/3 em um gateway do ASM.

Informações de contexto

O HTTP/3 usa o QUIC sobre udp como mecanismo de transporte e, portanto, apresenta as seguintes vantagens em relação ao HTTP/2:

  • Latência de handshake reduzida: o HTTP/3 usa o recurso 0-RTT do protocolo QUIC para concluir o estabelecimento da conexão (RTT é a sigla para round trip time). Além disso, o QUIC integra o TLS para oferecer suporte a criptografia e handshakes simultâneos, reduzindo significativamente a latência durante o estabelecimento da conexão.

  • Novo mecanismo de multiplexação: o HTTP/2 sofre com o bloqueio de cabeça de linha (head-of-line blocking) na camada tcp. O HTTP/3 usa o QUIC para multiplexar vários fluxos independentes na mesma conexão, e os fluxos de dados são independentes entre si. Mesmo que um pacote em um fluxo de dados seja perdido, a perda não bloqueia a transmissão dos outros fluxos. Dessa forma, o bloqueio de um único fluxo de dados não afeta mais o desempenho de transmissão de toda a conexão.

  • Migração de conexão: o HTTP/3 oferece suporte à migração de conexões entre diferentes endereços IP, mesmo com mudanças no ambiente de rede, como ao alternar de uma rede Wi-Fi para uma rede móvel. Isso garante a continuidade e a estabilidade das conexões.

  • Segurança: o HTTP/3 exige o uso do TLS 1.3 para transmissão criptografada, o que garante maior segurança e proteção de privacidade.

Os gateways do ASM são compatíveis com o HTTP/3. Use o HTTP/3 para acessar service expostos em gateways do ASM e melhorar o desempenho e a estabilidade do service.

Pré-requisitos

Etapa 1: Ative o HTTP/3

  1. Acesse o console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha Instance Information > Base Information.

  3. No canto superior direito da página Base Information, clique em Settings. Na barra lateral expandida, selecione Enable HTTP/3.

Etapa 2: Ativar um listener udp no gateway de entrada do ASM

O protocolo QUIC é baseado em udp. Portanto, ative um listener udp no gateway de entrada do ASM.

Neste exemplo, modifique a configuração YAML do gateway de entrada do ASM para ativar um listener udp na porta 444.

apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
  labels:
    asm-gateway-type: ingress
  name: ingressgateway
  namespace: istio-system
spec:
  ......
  ports:
    - name: http-0
      port: 80
      protocol: HTTP
      targetPort: 80
    -name: udp # Enable a UDP listener on port 444.
      port: 444
      protocol: UDP
      targetPort: 444
  ......
Nota

Um gateway do ASM oferece suporte a listeners TCP e UDP na mesma porta. Por exemplo, você pode adicionar um listener UDP na porta 443, que é usada para expor serviços HTTPS. Os dois listeners não entram em conflito entre si.

Etapa 3: Configurar um gateway do Istio

O QUIC exige comunicação TLS. Portanto, configure um certificado para o gateway do Istio. Atualize a configuração do gateway do Istio com o seguinte arquivo YAML:

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: httpbin
  namespace: default
spec:
  selector:
    istio: ingressgateway
  servers:
    - hosts:
      - '*'
      port:
        name: test
        number: 80
        protocol: HTTP
    - hosts:
      - '*'
      port:
        name: quic
        number: 444
        protocol: HTTPS
      tls:
        credentialName: aliyun.com.cert
        mode: SIMPLE

Etapa 4: Testar o uso do HTTP/3 para acessar o gateway do ASM

O curl é uma ferramenta comum para testes de HTTP e JSON. No entanto, o curl não oferece suporte ao HTTP/3 por padrão. Execute o seguinte comando para verificar se o seu curl oferece suporte ao HTTP/3:

curl --version | grep http3

Se a saída for semelhante à seguinte, o curl no ambiente atual oferece suporte ao HTTP/3.

curl 8.9.0-DEV (aarch64-apple-darwin23.5.0) libcurl/8.9.0-DEV quictls/3.1.4 zlib/1.2.12 libidn2/2.3.7 nghttp2/1.59.0 ngtcp2/1.2.0 nghttp3/1.1.0

Se nenhuma saída for exibida, o curl no ambiente atual não oferece suporte ao HTTP/3. Recompile o curl para uma versão que ofereça suporte ao HTTP/3. Para mais informações, consulte Build with quictls.

Após a compilação, execute o seguinte comando para testar se há suporte ao HTTP/3:

curl -k --http3-only -H Host:aliyun.com --resolve aliyun.com:444 :${IP address of the ASM gateway} https://aliyun.com:444/headers -v

Saída esperada:

......
* Connected to aliyun.com (xxx.xx.xx.x) port 444
* using HTTP/3
* [HTTP/3] [0] OPENED stream for https://aliyun.com:444/headers
* [HTTP/3] [0] [:method: GET]
* [HTTP/3] [0] [:scheme: https]
* [HTTP/3] [0] [:authority: aliyun.com]
* [HTTP/3] [0] [:path: /headers]
* [HTTP/3] [0] [user-agent: curl/8.9.0-DEV]
* [HTTP/3] [0] [accept: */*]
> GET /headers HTTP/3
> Host:aliyun.com
> User-Agent: curl/8.9.0-DEV
> Accept: */*
>
* Request completely sent off
* old SSL session ID is stale, removing
< HTTP/3 200
< server: istio-envoy
< date: Wed, 26 Jun 2024 07:40:07 GMT
< content-type: application/json
< content-length: 460
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 1
< alt-svc: h3=":444"; ma=86400
<
{
  "headers": {
    "Accept": "*/*",
    "Host": "aliyun.com",
    "Transfer-Encoding": "chunked",
    "User-Agent": "curl/8.9.0-DEV",
    "X-Envoy-Attempt-Count": "1",
    "X-Envoy-External-Address": "xx.xx.xx.xx",
    "X-Forwarded-Client-Cert": "xxxxxxx"
  }
}
* Connection #0 to host aliyun.com left intact

Referências

  • Para mais informações sobre os motivos pelos quais é possível apenas mitigar, mas não evitar completamente, o bloqueio de cabeça de linha na camada tcp do HTTP/2, consulte Hypertext Transfer Protocol Version 2 (HTTP/2).

  • O HTTP/3 introduz um novo mecanismo de multiplexação que resolve de forma definitiva o problema do bloqueio de cabeça de linha. A documentação oficial também menciona como melhorar o desempenho da conexão evitando o bloqueio de cabeça de linha. Para mais informações, consulte QUIC: A UDP-Based Multiplexed and Secure Transport.