Todos los productos
Search
Centro de documentos

Alibaba Cloud Service Mesh:Uso de HTTP/3 para acceder a una puerta de enlace de entrada ASM

Última actualización: Sep 05, 2026

HTTP/3 es la tercera versión principal del protocolo HTTP. A diferencia de HTTP/1.1 y HTTP/2, HTTP/3 ya no utiliza el protocolo TCP tradicional en la capa de transporte, sino que adopta el protocolo Quick UDP Internet Connection (QUIC), basado en UDP. Este cambio permite que HTTP/3 ofrezca menor latencia, una recuperación de errores más robusta y una multiplexación de conexiones más eficiente. En este tema se describe cómo configurar servicios basados en HTTP/3 en una puerta de enlace ASM.

Contexto

HTTP/3 utiliza QUIC sobre UDP como mecanismo de transporte y, por lo tanto, presenta las siguientes ventajas frente a HTTP/2:

  • Menor latencia en el saludo inicial: HTTP/3 utiliza la función 0-RTT del protocolo QUIC para completar el establecimiento de la conexión (RTT son las siglas en inglés de tiempo de ida y vuelta). Además, TLS está integrado en QUIC para admitir el cifrado y los saludos iniciales simultáneos, lo que reduce significativamente la latencia durante el establecimiento de la conexión.

  • Nuevo mecanismo de multiplexación: HTTP/2 sufre bloqueo de cabeza de línea en la capa TCP. HTTP/3 usa QUIC para multiplexar varios flujos independientes en la misma conexión; dichos flujos de datos son independientes entre sí. Incluso si se pierde un paquete en un flujo de datos, la transmisión de los demás no se bloquea. De este modo, el bloqueo de un solo flujo de datos deja de afectar el rendimiento de transmisión de toda la conexión.

  • Migración de conexiones: HTTP/3 admite la migración de conexiones entre diferentes direcciones IP, incluso si cambia el entorno de red, como al pasar de una red Wi-Fi a una red móvil. Esto garantiza la continuidad y estabilidad de las conexiones.

  • Seguridad: HTTP/3 exige el uso de TLS 1.3 para la transmisión cifrada, lo que garantiza mayor seguridad y protección de la privacidad.

Las puertas de enlace ASM son compatibles con HTTP/3. Puede usar HTTP/3 para acceder a los servicios expuestos en las puertas de enlace ASM y así mejorar el rendimiento y la estabilidad del servicio.

Requisitos previos

  • Se agregó un clúster de Container Service for Kubernetes (ACK) a su instancia de ASM y la versión de dicha instancia es 1.16 o posterior. Para obtener más información, consulte Add a cluster to an ASM instance.

  • Se desplegó una puerta de enlace de entrada. Para obtener más información, consulte Create an ingress gateway.

  • Se desplegó la aplicación HTTPBin. Para obtener más información, consulte Deploy the HTTPBin application.

  • El clúster de ACK tiene la versión 1.24 o posterior, y Cloud Controller Manager (CCM) tiene la versión 2.6.0 o posterior. Para obtener más información, consulte Cloud Controller Manager.

  • Se creó un certificado llamado aliyun.com.cert para su instancia de ASM. Para obtener más información, consulte Use the certificate management feature of ASM.

Paso 1: Habilitar HTTP/3

  1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

  2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione Instance Information > Base Information.

  3. En la esquina superior derecha de la página Base Information, haga clic en Settings. En la barra lateral expandida, seleccione Enable HTTP/3.

Paso 2: Habilitar un listener UDP en la puerta de enlace de entrada ASM

El protocolo QUIC se basa en UDP. Por lo tanto, debe habilitar un listener UDP en la puerta de enlace de entrada ASM.

En este ejemplo, modifique la configuración YAML de la puerta de enlace de entrada ASM para habilitar un listener UDP en el puerto 444 de dicha puerta de enlace.

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

Una puerta de enlace ASM admite listeners TCP y UDP en el mismo puerto. Por ejemplo, puede agregar un listener UDP en el puerto 443 para exponer servicios HTTPS. Ambos listeners no entran en conflicto entre sí.

Paso 3: Configurar una puerta de enlace Istio

QUIC impone la comunicación TLS. Por lo tanto, debe configurar un certificado para la puerta de enlace Istio. Actualice la configuración de la puerta de enlace Istio mediante el siguiente archivo 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

Paso 4: Probar el acceso a la puerta de enlace ASM con HTTP/3

curl es una herramienta común de pruebas HTTP. Sin embargo, los comandos curl no admiten HTTP/3 de forma predeterminada. Ejecute el siguiente comando para comprobar si su versión de curl es compatible con HTTP/3:

curl --version | grep http3

Si se muestra un resultado similar al siguiente, los comandos curl en el entorno actual son compatibles con 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

Si no se muestra ningún resultado, los comandos curl en el entorno actual no son compatibles con HTTP/3. Recompile curl en una versión que admita HTTP/3. Para obtener más información, consulte Build with quictls.

Una vez completada la compilación, ejecute el siguiente comando para probar si se admite 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

Resultado esperado:

......
* 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

Referencias

  • Para obtener más información sobre las razones por las que el bloqueo de cabeza de línea en la capa TCP de HTTP/2 solo puede mitigarse pero no evitarse por completo, consulte Hypertext Transfer Protocol Version 2 (HTTP/2).

  • HTTP/3 introduce un nuevo mecanismo de multiplexación que resuelve fundamentalmente el problema del bloqueo de cabeza de línea. La documentación oficial también menciona cómo mejorar el rendimiento de las conexiones al evitar dicho bloqueo. Para obtener más información, consulte QUIC: A UDP-Based Multiplexed and Secure Transport.