すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:HTTP/3 を使用した ASM Ingress Gateway へのアクセス

最終更新日:Jun 27, 2026

HTTP/3 は、HTTP プロトコルの第 3 世代メジャーバージョンです。HTTP/1.1 および HTTP/2 とは異なり、HTTP/3 はトランスポート層で従来の TCP プロトコルを使用せず、UDP ベースの Quick UDP Internet Connection (QUIC) プロトコルを採用しています。この変更により、HTTP/3 は低レイテンシー、より堅牢なエラー回復、より効率的な接続の多重化を実現します。本トピックでは、ASM Gateway で HTTP/3 ベースのサービスを設定する方法について説明します。

背景情報

HTTP/3 はトランスポートメカニズムとして UDP 上の QUIC を使用するため、HTTP/2 と比較して以下の利点があります。

  • ハンドシェイクレイテンシーの短縮: HTTP/3 は QUIC プロトコルの 0-RTT 機能を使用して接続確立を完了します (RTT はラウンドトリップタイムの略)。さらに、TLS が QUIC に統合されており、暗号化とハンドシェイクを同時にサポートするため、接続確立時のレイテンシーが大幅に短縮されます。

  • 新しい多重化メカニズム: HTTP/2 は TCP 層でヘッドオブラインブロッキングの影響を受けます。HTTP/3 は QUIC を使用して、同じ接続上で複数の独立したストリームを多重化し、データストリームは互いに独立しています。1 つのデータストリーム内でパケットが失われても、他のデータストリームの送信はブロックされません。これにより、単一のデータフローのブロッキングが接続全体の送信パフォーマンスに影響しなくなります。

  • コネクションマイグレーション: HTTP/3 は、Wi-Fi ネットワークからモバイルネットワークへの切り替えなど、ネットワーク環境が変化した場合でも、異なる IP アドレス間でのコネクションマイグレーションをサポートします。これにより、接続の継続性と安定性が確保されます。

  • セキュリティ: HTTP/3 は暗号化通信のために TLS 1.3 の使用を必須としており、より高いセキュリティとプライバシー保護を保証します。

ASM Gateway は HTTP/3 をサポートしています。ASM Gateway で公開されているサービスへのアクセスに HTTP/3 を使用することで、サービスのパフォーマンスと安定性を向上させることができます。

前提条件

ステップ 1: HTTP/3 の有効化

  1. ASM コンソール にログインします。左側のナビゲーションウィンドウで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM インスタンス] > [基本情報] を選択します。

  3. Base Information ページの右上隅にある Settings をクリックします。展開されたサイドバーで、Enable HTTP/3 を選択します。

ステップ 2: ASM Ingress Gateway での UDP リスナーの有効化

QUIC プロトコルは UDP ベースであるため、ASM Ingress Gateway で UDP リスナーを有効にする必要があります。

この例では、ASM Ingress Gateway の YAML 設定を変更して、ASM Ingress Gateway のポート 444 で UDP リスナーを有効にします。

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 # ポート 444 で UDP リスナーを有効化
      port: 444
      protocol: UDP
      targetPort: 444
  ......
説明

ASM Gateway は同じポートで TCP リスナーと UDP リスナーの両方をサポートします。たとえば、HTTPS サービスを公開するために使用されるポート 443 に UDP リスナーを追加できます。2 つのリスナーは互いに競合しません。

ステップ 3: Istio Gateway の設定

QUIC は TLS 通信を必須としています。そのため、Istio Gateway に証明書を設定する必要があります。以下の YAML ファイルを使用して、Istio Gateway の設定を更新します。

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

ステップ 4: HTTP/3 を使用した ASM Gateway へのアクセステスト

curl は一般的な HTTP テストツールです。ただし、curl コマンドはデフォルトでは HTTP/3 をサポートしていません。以下のコマンドを実行して、使用している curl が HTTP/3 をサポートしているかどうかを確認できます。

curl --version | grep http3

以下のような出力が表示された場合、現在の環境の curl コマンドは 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

何も出力されない場合、現在の環境の curl コマンドは HTTP/3 をサポートしていません。 HTTP/3 をサポートするバージョンの curl を再ビルドできます。 詳細については、「quictls を使用してビルドする」をご参照ください。

ビルドが完了したら、以下のコマンドを実行して HTTP/3 がサポートされているかどうかをテストできます。

curl -k --http3-only -H Host:aliyun.com --resolve aliyun.com:444: https://aliyun.com:444/headers -v

期待される出力:

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

参考情報

  • HTTP/2 の TCP レイヤーにおけるヘッドオブラインブロッキングが緩和しかできず、完全には回避できない理由の詳細については、「ハイパーテキスト転送プロトコル バージョン 2 (HTTP/2)」をご参照ください。

  • HTTP/3 で導入された新しい多重化メカニズムは、ヘッドオブラインブロッキングの問題を根本的に解決します。公式ドキュメントでは、ヘッドオブラインブロッキングを回避して接続パフォーマンスを向上させる方法についても言及されています。詳細については、「QUIC: A UDP-Based Multiplexed and Secure Transport」をご参照ください。