QUIC (RFC 9000・2021)(クイック)
Google 2013年提唱・IETF 2021年標準化のUDP 上トランスポートプロトコル。0-RTT 接続・多重化・暗号化統合、HTTP/3 (RFC 9114) の基盤。
概要
QUIC は2012年Google Jim Roskind が初期設計、2013年Chrome / Google サーバで導入・2016年IETF 標準化開始・2021年5月RFC 9000 として標準化されたUDP 上のトランスポートプロトコル。Quick UDP Internet Connections (旧名) → 「QUIC」(略字でなく独立名)。TCP + TLS + HTTP/2 多重化を1プロトコルに統合、0-RTT 接続・Stream Multiplexing・Connection Migration・暗号化標準で大幅高速化を実現。
主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 2012 | Google Jim Roskind 初期設計 |
| 2013-06 | Chrome / Google Server で実験 |
| 2016-11 | IETF QUIC Working Group 設立 |
| 2018-08 | HTTP-over-QUIC を「HTTP/3」と命名 |
| 2019-04 | Cloudflare 全Edge で QUIC 配信 |
| 2020-04 | Apple iOS 14 / macOS 11 QUIC 採用 |
| 2021-05 | RFC 9000 QUIC 標準化 |
| 2022-06 | RFC 9114 HTTP/3 標準化 |
| 2024 | Web トラフィック35%+ がHTTP/3 |
QUIC 主要機能
| 機能 | 内容 |
|---|---|
| 動作層 | UDP (Port 443) |
| 接続確立 | 0-RTT (再接続) / 1-RTT (初回) |
| 暗号化 | TLS 1.3 強制 |
| 認証 | 統合 (ECC X25519 / Ed25519) |
| Multiplexing | Stream (HoL Blocking 解消) |
| Connection Migration | IP変更時も接続維持 |
| Forward Error Correction | あり (オプション) |
| Loss Recovery | 改良ACK |
| Congestion Control | プラガブル (CUBIC / BBR / Reno) |
QUIC vs TCP 性能
| ワークロード | TCP+TLS+HTTP/2 | QUIC+HTTP/3 |
|---|---|---|
| 初回接続 | 3 RTT | 1 RTT |
| 再接続 | 2 RTT | 0 RTT |
| Multiple Streams | あり (HoL Blocking 問題) | 解消 |
| Packet Loss 1% | 50% スループット低下 | 10% 低下 |
| IP変更 | 接続切断 | 維持 |
| 暗号化 | TLS 別 (任意) | 強制統合 |
Head-of-Line Blocking 解消
TCP は1パケット損失で「同一接続全Stream」が待機・性能急減 (HoL Blocking)。QUIC は Stream 単位で独立、1つのStream損失が他に影響しない設計:
TCP:
Stream A | A | B | A | A | (B 1個損失で Stream A も待機)
Stream B | A | B | A | A |
→ 全Stream 待機
QUIC:
Stream A | A | A | A | A | (継続)
Stream B | | | B | | (B のみ再送)
→ A は独立進行
Connection Migration
スマホがWi-Fi → 4G/5G 切替時の接続維持:
- TCP: IP 変更 = 接続切断 → 再接続必要
- QUIC: Connection ID で識別 → IP 変更してもStream継続
YouTube / Spotify / iCloud 等のモバイル利用で大幅な体験改善。
0-RTT 接続
再接続時にデータをHandshake と同時送信:
通常 TCP+TLS+HTTP:
CLIENT → SERVER: SYN (TCP)
CLIENT ← SERVER: SYN-ACK
CLIENT → SERVER: ACK + ClientHello (TLS)
CLIENT ← SERVER: ServerHello
CLIENT ← SERVER: Certificate
CLIENT → SERVER: KeyExchange
CLIENT → SERVER: HTTP Request
→ 3 RTT
QUIC 0-RTT (再接続):
CLIENT → SERVER: QUIC Initial + Encrypted HTTP Request
CLIENT ← SERVER: HTTP Response
→ 0 RTT
数百ms の遅延削減 (国際接続では特に効果大)。
主要採用先
| サービス | QUIC 採用 |
|---|---|
| Google (検索/YouTube/Gmail) | 2013- (元祖) |
| Cloudflare | 2018- (全Edge) |
| Akamai | 2020- |
| AWS CloudFront | 2022- |
| Apple iCloud | 2020- (iOS 14+) |
| Meta (Facebook/Instagram) | 2022- |
| Microsoft (Azure / Edge) | 2021- |
関連用語との違い
- vs TCP: TCP UDP上の機能改善
- vs HTTP/3: QUICはトランスポート / HTTP/3 はそのアプリ層
- vs TLS: TLS 1.3 + 接続管理統合
FAQ
Q1: なぜ UDP 上? A: TCP は OS カーネル深く統合・改造困難。UDP 上でユーザ空間実装することで、iteration を大幅高速化・実装多様化・暗号化標準化。
Q2: Firewall 問題? A: 一部古いFirewall がUDP 443 を遮断・QUIC 接続失敗→ TCP fallback 動作。クライアントが自動切替。
Q3: HTTP/3 と関係? A: HTTP/3 = QUIC + HTTP semantics。QUIC はトランスポート層・HTTP/3 はアプリケーション層、QUIC で動作する HTTP 規格。