Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Utiliser HTTP/3 pour accéder à une passerelle d'entrée ASM

Dernière mise à jour :Aug 11, 2026

HTTP/3 est la troisième version majeure du protocole HTTP. Contrairement à HTTP/1.1 et HTTP/2, HTTP/3 n'utilise plus le protocole TCP traditionnel au niveau de la couche transport, mais adopte le protocole Quick UDP Internet Connection (QUIC) basé sur UDP. Cette évolution permet à HTTP/3 d'offrir une latence réduite, une récupération d'erreurs plus robuste et un multiplexage de connexions plus efficace. Cette rubrique explique comment configurer des services basés sur HTTP/3 sur une passerelle ASM.

Contexte

HTTP/3 utilise QUIC sur UDP comme mécanisme de transport et présente donc les avantages suivants par rapport à HTTP/2 :

  • Réduction de la latence lors de l'établissement de la connexion (handshake) : HTTP/3 exploite la fonctionnalité 0-RTT du protocole QUIC pour finaliser l'établissement de la connexion (RTT signifie « round trip time » ou temps aller-retour). De plus, TLS est intégré directement dans QUIC pour prendre en charge le chiffrement et l'établissement de la connexion simultanément, ce qui réduit considérablement la latence lors de l'initialisation.

  • Nouveau mécanisme de multiplexage : HTTP/2 souffre du blocage de tête de ligne au niveau TCP. HTTP/3 utilise QUIC pour multiplexer plusieurs flux indépendants sur une même connexion ; ces flux de données sont totalement indépendants les uns des autres. Ainsi, la perte d'un paquet dans un flux n'interrompt pas la transmission des autres flux. Le blocage d'un seul flux n'affecte plus les performances de transmission de l'ensemble de la connexion.

  • Migration de connexion : HTTP/3 permet de migrer les connexions entre différentes adresses IP, même en cas de changement d'environnement réseau, comme le passage d'un réseau Wi-Fi à un réseau mobile. Cela garantit la continuité et la stabilité des connexions.

  • Sécurité : HTTP/3 impose l'utilisation de TLS 1.3 pour le chiffrement des transmissions, assurant ainsi un niveau de sécurité et de protection de la confidentialité plus élevé.

Les passerelles ASM prennent en charge HTTP/3. Utilisez HTTP/3 pour accéder aux services exposés via les passerelles ASM afin d'améliorer les performances et la stabilité de vos services.

Prérequis

Étape 1 : Activer HTTP/3

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez ASM Instance > Base Information.

  3. Dans le coin supérieur droit de la page Base Information, cliquez sur Settings. Dans la barre latérale développée, sélectionnez Enable HTTP/3.

Étape 2 : Activer un écouteur UDP sur la passerelle d'entrée ASM

Le protocole QUIC repose sur UDP. Vous devez donc activer un écouteur UDP sur la passerelle d'entrée ASM.

Dans cet exemple, modifiez la configuration YAML de la passerelle d'entrée ASM pour activer un écouteur UDP sur le port 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
  ......
Remarque

Une passerelle ASM prend en charge les écouteurs TCP et UDP sur le même port. Par exemple, vous pouvez ajouter un écouteur UDP sur le port 443 utilisé pour exposer des services HTTPS. Les deux écouteurs n'entrent pas en conflit.

Étape 3 : Configurer une passerelle Istio

QUIC impose l'utilisation de TLS pour les communications. Vous devez donc configurer un certificat pour la passerelle Istio. Mettez à jour la configuration de la passerelle Istio à l'aide du fichier YAML suivant :

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

Étape 4 : Tester l'accès à la passerelle ASM via HTTP/3

curl est un outil de test HTTP courant. Toutefois, les commandes curl ne prennent pas en charge HTTP/3 par défaut. Exécutez la commande suivante pour vérifier si votre installation de curl prend en charge HTTP/3 :

curl --version | grep http3

Si un résultat similaire à celui ci-dessous s'affiche, cela signifie que les commandes curl de votre environnement actuel prennent en charge 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 aucun résultat ne s'affiche, les commandes curl de votre environnement actuel ne prennent pas en charge HTTP/3. Vous devez alors reconstruire curl avec une version compatible HTTP/3. Pour plus d'informations, consultez la page Build with quictls.

Une fois la compilation terminée, exécutez la commande suivante pour tester la prise en charge de 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

Résultat attendu :

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

Références

  • Pour comprendre pourquoi le blocage de tête de ligne au niveau TCP de HTTP/2 ne peut être qu'atténué et non entièrement évité, consultez la documentation Hypertext Transfer Protocol Version 2 (HTTP/2).

  • HTTP/3 introduit un nouveau mécanisme de multiplexage qui résout fondamentalement le problème du blocage de tête de ligne. La documentation officielle explique également comment améliorer les performances de connexion en évitant ce blocage. Pour plus d'informations, consultez la documentation QUIC: A UDP-Based Multiplexed and Secure Transport.