進化するインターネット技術/IETFトピックス2016-17
第3回
TCP+TLSに代わる高速プロトコル、Google生まれの「QUIC」の特徴と標準化の行方
2017年5月26日 06:00
インターネット技術の普及に向け、IPv6、DNS、HTTPなど基本となるプロトコルを定めてきたIETF(The Internet Engineering Task Force)。今年11月には、100回目の会合(IETF 100)がシンガポールにて開催される予定である。IETFがこれまで手がけてきたインターネット技術も、技術の進歩と普及により、現在も多くの分野において議論が継続され、まだまだ目が離せない状況が続いている。本連載では、インターネットの普及と発展を目的に日ごろIETFを中心に活動を行っているISOC-JP(Internet Society Japan chapter)メンバー有志が、ここ最近のIETFでの活動状況について紹介していく。
「IETFトピックス2016-17」連載記事一覧
- 第1回:「IETF」30周年、IoT分野で新WG、トランスポートレイヤーで大きな動きも
- 第2回:「http://」も暗号化通信する仕様へ? HTTPの「高速化」や「日和見暗号」の標準化議論
- 第3回:TCP+TLSに代わる高速プロトコル、Google生まれの「QUIC」の特徴と標準化の行方
- 第4回:20歳を超えたIPv6の現状、修正版RFCで廃止/アップデートされる仕様も
- 第5回:IPv4をどのように終わらせるか――IPv6普及拡大の前に片づけなければならない課題
- 第6回:インターネットを支え続ける老舗プロトコル、「DNS」30年超の歴史を振り返る
- 第7回:熱い議論の続く、DNSプロトコル拡張と今後
- 第8回:クラウドの基盤を支える、データセンター接続とその運用管理の技術
- 第9回:SDN/NFVの運用管理に、急速に導入が進むNETCONF/YANGへの期待
- 第10回:サイバーセキュリティを“守る側”が情報連携するためのデータ構造/プロトコルたち
- 第11回:セキュリティ情報連携のその先へ――セキュリティ自動化に向けた検討
- 第12回:安全な通信を実現するための暗号技術とセキュアプロトコル/スノーデン事件が標準化議論にもたらした大きなうねり
- 最終回:IoTのさらなる実現に向けたプロトコル/セキュリティ
今回は、「QUIC」の標準化動向について、2016年の大まかな流れと今後の予定を紹介する。
QUICは、Googleが開発しているトランスポートプロトコルだ。「HTTP/2」の仕様は、Googleの「SPDY」プロトコルをベースにスタートし、IETFでの標準化プロセスを経て現在のかたちに変貌を遂げた。同様に、QUICもIETFに提案されたことで、標準版としてのQUICを目指して仕様検討が始まり、2016年にWGが作成された。QUICを構成するパーツのいくつかはIETFの標準で置き換えられ、また、新しいアイデアも盛り込まれて議論が続けられている。QUICワーキンググループ(WG)はトランスポート(TSV)エリアのWGだが、その扱う内容にはTLS、HTTP/2の見識も求められるため、参加者はセキュリティエリア(SEC)、アプリケーション/リアルタイムエリア(ART)にまたがっている。
「QUIC」プロトコルの概要
HTTP/2ではHTTPリクエスト/レスポンスの並列化によって、より効率の良い転送を実現した。HTTP/2の目標の1つは、あるリクエスト処理に時間がかかって他のリクエストが待たされる現象「ヘッド・オブ・ライン・ブロッキング(以下、HoLブロッキング)」を最小化することであり、これはおおむね達成された。
一方で、HTTP/2はTCP上で転送されるプロトコルであることに起因して、大きく2つの問題を残した。1つは接続確立ハンドシェイクに多くのラウンドトリップが必要になること、もう1つはパケットロスからのリカバリーのために複数のリクエストが待たされることだ。QUICはこれらの点を改善し、接続確立までのラウンドトリップ、リクエスト間のHoLブロッキングを最小化する。
QUICはUDPを利用し、ユーザーランド上にTCP同様の信頼性のあるトランスポートを構築する。TCPの長い歴史の中で培われた輻輳制御、ロスリカバリー制御の仕組みを採用し、現在のインターネット状況に合った制御を行う。ユーザーランド上で動作することにより、比較的長いOSカーネルのリリーススケジュールを待つことなく、新しいバージョンを展開できることもメリットだ。
QUICの概要を以下の図に示す。
左側がHTTP/2 over TLS/TCP、右側がHTTP/2 over QUICである。QUICは、TCPの機能に相当する輻輳制御、ロスリカバリー、およびHTTP/2の機能の一部であるストリーム制御、フロー制御などを提供する。暗号方式のネゴシエーションや鍵交換にはTLS 1.3の仕組みを使う。
QUICの特徴は以下の通り。
- TLS同様のセキュリティ機能
- 接続確立の高速化。TCP Fast OpenとTLS Snapstart相当の仕組みを持ち、また、0-RTTを実現
- パケットロス検出のシグナリングを改善。単調増加なパケット番号による再送曖昧性の排除、256までのACKブロックなど
- パケットロスを防ぐためのペーシング
- コネクションIDの導入により、特にモバイルクライアントの再接続ロスを低減
IETFでの標準化動向
QUICは次世代のトランスポートとしてIETFに提案され、WGが設立された。2016年11月のIETF 97(ソウル)において、最初の会合が持たれ、約300名が参加している。会議場は人であふれ、立見も出たほどで、関心の高さが分かる。この会合では、コアとなる4文書をWG文書として採用することが決定されるにとどまり、技術的な検討は次に説明するInterimが最初の議論の場となった。
2017年1月に東京にて「QUIC Interim」が開催された。原型となったQUICプロトコルの開発者であるGoogleのほか、Facebook、Microsoft、Appleといったハイパージャイアント、ブラウザー開発者(Mozilla)、CDN各社(Akamai、Cloudflare、Fastly)、ネットワーク機器メーカー(F5)、ISP(IIJ、NTT、Orange、AT&T)も参加した。トランスポート、HTTP、TLSの分野ごとに、技術的な課題について検討し、GitHubのissue機能を使って整理した(quicwg/base-drafts)。
GoogleのプロプライエタリプロトコルであるQUICから、IETFプロトコルとしてのQUICへの変更にあたり、以下の点が大きな設計方針となっている。
- バージョンアップ可能性。Google版QUIC、検討中のQUIC version 1のあとに登場する将来バージョンとインターネット上で共存できるように、また、将来のバージョンアップができるように考える。特に、パケット中継を行うルーターなどのミドルボックスが、QUICの現行仕様をハードウェアに固定化し、将来の拡張パケットを通さなくなってしまう事態(硬直化:ossification)を防止するための方策もあわせて検討する
- プライバシー尊重。同一のコネクションIDを別の通信経路で出すと、インターネット上の第三者による追跡が可能になってしまうというプライバシー上の問題がある。プライバシーの解決は議論の前提となっている。対策案がさまざま出されているが「何もしない案」は考えない
- 暗号レイヤーとしてTLS 1.3を活用。Google版ではQUIC Cryptoが使われていた。また、コネクションのさまざまなパラメーターは、Google版QUICでは独自のデータフォーマットで渡されていたが、IETF版ではTLSの拡張として定義される。鍵交換や証明書とともにネゴシエーションが行われる
- network byte-order。Google版QUICは、それを扱うすべてのプラットフォームがlittle-endianであるため、数値はすべてlittle-endianになっている。IETF版ではbig-endianとする
「QUIC」の今後
ここでは、具体的なパケット形式やロスリカバリーの仕組み、ハンドシェイク、HTTP/2とのマッピングなどは紹介するスペースがない。これらの技術的な課題は、日々メーリングリスト上で議論され、次々に新しいアイデアが反映されている。上記のGitHub issuesにすべてまとめられるはずなので、そこを見ながら、興味があればメーリングリスト上の議論も追うのがよいかと思う。
QUICの議論では、トランスポート技術(ロスリカバリー、輻輳制御)、暗号通信技術(クリプトハンドシェイク、鍵スケジューリング)、HTTP技術(ヘッダー圧縮、プライオリティ)など、その守備範囲が広く、ひとりで全体について詳細に理解するのは大変だ。自分の興味のある部分を中心に、少しずつ回りの技術を見ていくのがよいだろう。
QUIC WGでは、2018年中にQUICベースプロトコルおよびHTTP/2へのマッピングをRFCにするというマイルストーンで動いており、2017年後半には開発者実装によるinteropなども行われるだろう。議論が早すぎて追いついていけない部分はあるが、2017年は技術的に面白い部分がたくさん検討されると思うので楽しみだ。
「IETFトピックス2016-17」連載記事一覧
- 第1回:「IETF」30周年、IoT分野で新WG、トランスポートレイヤーで大きな動きも
- 第2回:「http://」も暗号化通信する仕様へ? HTTPの「高速化」や「日和見暗号」の標準化議論
- 第3回:TCP+TLSに代わる高速プロトコル、Google生まれの「QUIC」の特徴と標準化の行方
- 第4回:20歳を超えたIPv6の現状、修正版RFCで廃止/アップデートされる仕様も
- 第5回:IPv4をどのように終わらせるか――IPv6普及拡大の前に片づけなければならない課題
- 第6回:インターネットを支え続ける老舗プロトコル、「DNS」30年超の歴史を振り返る
- 第7回:熱い議論の続く、DNSプロトコル拡張と今後
- 第8回:クラウドの基盤を支える、データセンター接続とその運用管理の技術
- 第9回:SDN/NFVの運用管理に、急速に導入が進むNETCONF/YANGへの期待
- 第10回:サイバーセキュリティを“守る側”が情報連携するためのデータ構造/プロトコルたち
- 第11回:セキュリティ情報連携のその先へ――セキュリティ自動化に向けた検討
- 第12回:安全な通信を実現するための暗号技術とセキュアプロトコル/スノーデン事件が標準化議論にもたらした大きなうねり
- 最終回:IoTのさらなる実現に向けたプロトコル/セキュリティ