Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Usar HTTP/3 para acessar um gateway de entrada ASM

Última atualização: Jun 28, 2026

O HTTP/3 é a terceira versão principal do protocolo HTTP. Diferentemente do HTTP/1.1 e do HTTP/2, o HTTP/3 não utiliza mais o protocolo TCP tradicional na camada de transporte; em vez disso, adota o protocolo Quick UDP Internet Connection (QUIC), baseado em UDP. Essa mudança proporciona menor latência, recuperação de erros mais robusta e multiplexação de conexões mais eficiente. Este tópico descreve como configurar serviços baseados em HTTP/3 em um gateway ASM.

Informações básicas

O HTTP/3 utiliza QUIC sobre UDP como mecanismo de transporte e, por isso, apresenta as seguintes vantagens em relação ao HTTP/2:

  • Latência reduzida no handshake: O HTTP/3 usa o recurso 0-RTT do protocolo QUIC para concluir o estabelecimento da conexão (RTT significa round trip time). Além disso, o TLS integra-se ao QUIC para permitir criptografia e handshakes simultâneos, o que reduz significativamente a latência durante o estabelecimento da conexão.

  • Novo mecanismo de multiplexação: O HTTP/2 sofre com bloqueio de cabeça de linha na camada TCP. Já o HTTP/3 usa o QUIC para multiplexar vários fluxos independentes na mesma conexão. Mesmo que ocorra perda de pacote em um fluxo de dados, a transmissão dos demais fluxos não é bloqueada. Assim, o bloqueio de um único fluxo de dados deixa de afetar o desempenho de transmissão de toda a conexão.

  • Migração de conexão: O HTTP/3 permite a migração de conexões entre diferentes endereços IP, mesmo quando o ambiente de rede muda, como na alternância 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 de TLS 1.3 para transmissão criptografada, garantindo maior segurança e proteção de privacidade.

Os gateways ASM suportam HTTP/3. Use HTTP/3 para acessar serviços expostos em gateways ASM e melhorar o desempenho e a estabilidade do serviço.

Pré-requisitos

Etapa 1: Ative o HTTP/3

  1. Faça login no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha ASM Instance > 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: Ative um listener UDP no gateway de entrada ASM

O protocolo QUIC baseia-se em UDP. Portanto, ative um listener UDP no gateway de entrada ASM.

Neste exemplo, modifique a configuração YAML do gateway de entrada 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 ASM suporta listeners TCP e UDP na mesma porta. Por exemplo, adicione um listener UDP na porta 443 para expor serviços HTTPS. Os dois listeners não entram em conflito.

Etapa 3: Configure um gateway Istio

O QUIC impõe comunicação TLS. Portanto, configure um certificado para o gateway Istio. Atualize a configuração do gateway Istio usando 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 acesso ao gateway ASM via HTTP/3

O curl é uma ferramenta comum de teste HTTP, mas seus comandos não suportam HTTP/3 por padrão. Execute o comando a seguir para verificar se o curl instalado suporta HTTP/3:

curl --version | grep http3

Se a saída for semelhante ao exemplo abaixo, os comandos curl no ambiente atual suportam 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

Caso nenhuma saída seja exibida, os comandos curl no ambiente atual não suportam HTTP/3. Recompile o curl em uma versão compatível com HTTP/3. Para mais informações, consulte Build with quictls.

Após concluir a compilação, execute o comando a seguir para testar o suporte a 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 entender por que o bloqueio de cabeça de linha na camada TCP do HTTP/2 pode ser apenas mitigado, mas não completamente evitado, consulte Hypertext Transfer Protocol Version 2 (HTTP/2).

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