HTTP/3 menggantikan TCP dengan QUIC berbasis UDP untuk menghilangkan blokir kepala antrian (head-of-line blocking), mendukung migrasi koneksi saat berpindah jaringan, serta mengurangi latensi handshake melalui waktu round-trip nol (0-RTT). Peningkatan ini bermanfaat bagi pengguna seluler yang sering berganti antara jaringan Wi-Fi dan jaringan seluler, serta klien yang terhubung melalui koneksi berlatensi tinggi atau lossy.
Gateway cloud-native MSE menangani HTTP/3 di edge: klien terhubung melalui QUIC, sedangkan gateway meneruskan permintaan ke layanan backend melalui HTTP/1.1 atau HTTP/2. Layanan backend Anda tidak memerlukan perubahan apa pun. Dibandingkan dengan HTTP/3 end-to-end, pendekatan ini tidak memberikan peningkatan signifikan dalam pemrosesan permintaan, tetapi tetap menyediakan beberapa keunggulan HTTP/3 di tingkat jaringan bagi klien.
Klien yang tidak mendukung HTTP/3 secara otomatis akan fallback ke HTTP/2 atau HTTP/1.1, sehingga mengaktifkan HTTP/3 tidak memengaruhi lalu lintas yang sudah ada.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki gateway cloud-native MSE yang menjalankan versi V1.2.15 atau lebih baru. Untuk informasi selengkapnya, lihat Buat gateway cloud-native.
Mengonfigurasi nama domain HTTPS untuk gateway, karena HTTP/3 memerlukan TLS. Untuk informasi selengkapnya, lihat Kaitkan nama domain dengan gateway cloud-native.
Aktifkan HTTP/3 di Konsol MSE
Langkah 1: Aktifkan parameter EnableHttp3
Login ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik nama gateway tersebut.
Di panel navigasi kiri, klik Parameter Settings.
Di bagian Gateway Engine Parameters, temukan parameter EnableHttp3, lalu klik Edit pada kolom Actions.

Pada kotak dialog Modify Parameters, aktifkan sakelar Value, lalu klik OK.
Langkah 2: Verifikasi pendengar HTTPS
Pastikan instans Classic Load Balancer (CLB) yang dikaitkan dengan gateway memiliki pendengar sehat pada port 443:
Di halaman Overview gateway, klik nama instans CLB.
Di Konsol CLB, konfirmasi bahwa health check status untuk pendengar port 443 dalam kondisi sehat.
Langkah 3: Tambahkan layanan backend dan aturan routing
Tambahkan layanan backend yang mendukung HTTP/1.1. Untuk informasi selengkapnya, lihat Tambahkan layanan dan Tambahkan sumber layanan.
Tambahkan aturan routing untuk layanan tersebut. Misalnya, tambahkan aturan routing bernama
quic. Untuk informasi selengkapnya, lihat Buat aturan routing.
Langkah 4: Uji koneksi HTTP/3
Jalankan perintah cURL untuk mengirim permintaan HTTP/3 melalui gateway:
curl --http3 https://api.alibaba-inc.com/quic \
--resolve api.alibaba-inc.com:443:<IP address of the CLB instance> -kGanti api.alibaba-inc.com dengan nama domain Anda, /quic dengan path yang ditentukan dalam aturan routing Anda, dan <IP address of the CLB instance> dengan alamat IP CLB yang sebenarnya.
Flag --http3 memerlukan build cURL yang mendukung HTTP/3. Anda dapat mengompilasi cURL dari source dengan dukungan HTTP/3, atau gunakan image Docker ymuski/curl-http3 sebagai gantinya:
docker run --rm ymuski/curl-http3 \
curl --http3 https://api.alibaba-inc.com/quic \
--resolve api.alibaba-inc.com:443:<IP address of the CLB instance> -kAktifkan HTTP/3 melalui Kubernetes Ingress
Jika Anda mengelola konfigurasi gateway melalui Kubernetes, gunakan MSE Ingress Controller untuk mengaktifkan HTTP/3.
Langkah 1: Aktifkan parameter EnableHttp3
Ikuti langkah-langkah yang sama seperti Langkah 1 pada metode konsol untuk mengaktifkan parameter EnableHttp3.
Langkah 2: Instal dan kaitkan MSE Ingress Controller
Instal MSE Ingress Controller di kluster Container Service for Kubernetes (ACK) Anda. Untuk informasi selengkapnya, lihat Kelola komponen MSE Ingress Controller.
Kaitkan gateway dengan MSE Ingress Controller. Untuk informasi selengkapnya, lihat Konfigurasikan MseIngressConfig.
Langkah 3: Buat Secret HTTPS dan Ingress
Terapkan manifes berikut untuk membuat TLS Secret dan aturan routing Ingress di kluster ACK Anda:
apiVersion: v1
kind: Secret
metadata:
name: testsecret-tls
namespace: default
data:
tls.crt: <base64-encoded-certificate> # Sertifikat TLS dalam format Base64
tls.key: <base64-encoded-private-key> # Kunci privat dalam format Base64
type: kubernetes.io/tls
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tls-example-ingress
annotations:
# Setel ke HTTP2 jika layanan backend Anda menggunakan HTTP/2
nginx.ingress.kubernetes.io/backend-protocol: HTTP
spec:
tls:
- hosts:
- https-example.foo.com
secretName: testsecret-tls
rules:
- host: https-example.foo.com
http:
paths:
- path: /quic
pathType: Prefix
backend:
service:
name: service1 # Nama layanan backend Anda
port:
number: 80Ganti nilai placeholder berikut:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
<base64-encoded-certificate> | Sertifikat TLS dalam format Base64 | LS0tLS1CRUdJTi... |
<base64-encoded-private-key> | Kunci privat dalam format Base64 | LS0tLS1CRUdJTi... |
https-example.foo.com | Nama domain HTTPS Anda | api.example.com |
service1 | Nama layanan backend Anda | my-web-service |
Langkah 4: Uji koneksi HTTP/3
Jalankan perintah cURL untuk memverifikasi bahwa HTTP/3 berfungsi melalui Ingress:
curl --http3 https://https-example.foo.com/quic \
--resolve https-example.foo.com:443:<IP address of the CLB instance> -kJika koneksi berhasil, respons akan mencakup header alt-svc yang mengiklankan dukungan HTTP/3.
Flag --http3 memerlukan build cURL yang mendukung HTTP/3. Anda dapat mengompilasi cURL dari source dengan dukungan HTTP/3, atau gunakan image Docker ymuski/curl-http3.
Perbedaan HTTP/3 dengan versi sebelumnya
HTTP/3 dibangun di atas HTTP/1.1 dan HTTP/2 tetapi mengubah lapisan transport.
Keterbatasan HTTP/1.1
HTTP/1.1 mentransfer pesan sebagai teks yang dipisahkan spasi. Tanpa lapisan multiplexing, browser membuka beberapa koneksi TCP untuk menangani permintaan paralel, yang mengganggu pengendalian kemacetan dan efisiensi jaringan. Untuk informasi selengkapnya, lihat RFC 9112.
Peningkatan HTTP/2 dan masalah yang tersisa
HTTP/2 menambahkan framing biner dan multiplexing untuk mengurangi latensi tanpa mengubah lapisan transport. Namun, karena HTTP/2 berjalan di atas TCP, satu paket yang hilang akan memblokir semua stream dalam koneksi hingga proses pemulihan selesai (head-of-line blocking). Untuk informasi selengkapnya, lihat RFC 9113.
Cara HTTP/3 menyelesaikan masalah ini
HTTP/3 (sebelumnya disebut HTTP-over-QUIC) menggantikan TCP dengan QUIC, protokol berbasis UDP yang awalnya dikembangkan oleh Google. IETF mengganti nama HTTP-over-QUIC menjadi HTTP/3 pada tahun 2018 dan menerbitkannya sebagai standar usulan dalam RFC 9114 pada 6 Juni 2022.
QUIC memberikan kontrol aliran (flow control) sendiri untuk setiap stream, sehingga paket yang hilang pada satu stream tidak memblokir stream lainnya. HTTP/3 juga meningkatkan pengendalian kemacetan dan kompresi header dibandingkan HTTP/2.
HTTP/3 didukung oleh Cloudflare, Google Chrome, dan Firefox Nightly. Untuk ikhtisar lengkap, lihat HTTP/3 dari A hingga Z: konsep inti.