Blog

2014.12.25

Over The Future -Piece of Next Web Protocol-

こんにちは、エンジニアではない林(@lef)です。 この記事は、 HTTP2 Advent Calendar 2014 - Qiita の最終日25日目の記事です。

皆さん、Merry Christmas and Happy Hacking!

HTTP/2 Advent Calendar 2014も最終日を迎えました。
HTTP2勉強会でのご指名で25日に決まったのですが、なんでトリを私が務めることになったんだ?という疑問も抱きつつ、ちょうど来年に向けて良さそうな興味のある話題があったので、来年の、そして今後Webのプロトコルはどう変化していくかについて少し想いを馳せて、このAdvent Calendarを締めたいと思います。

余談ですが、現在の仕様では “HTTP2.0” ではなく “HTTP/2” もしくは “HTTP2” が正しい名称です。

HTTP/2がやってきたこと

というわけで、HTTPの次の姿はほぼ確定しました。この後まだ色々な事があるとは思いますが、全体としては大きな変更はおそらくないでしょう。

では、HTTPはどう変わったのでしょうか。
一言でいえば、現代的で高機能で複雑になりました。
telnetで繋いで人間が手で気楽に扱うことが出来たHTTP/1.1は過去のものとなり、下のレイヤが担っていた(担うことになっていた)多くの機能をアプリケーション層においてブラウザ自身が解決するプロトコルとして生まれ変わったのです。

HTTP/2が出来なかったこととトランスポート層の関係

HTTP/2は、今まで苦しんでいた数々の問題を解決してくれそうです。
我々は、もう通信に苦しむことなく、素晴らしいWebアプリケーションを作り続ければいいのでしょうか。

残念ながら、HTTP/2でも解決できていない問題があります。

HTTPはアプリケーション層のプロトコルです。
TLSという中間層を挟んで、トランスポート層のプロトコルの上に構築されている、一番アプリケーションに近い層(というかアプリケーションと同等)で、通信制御を行っています。
全体像からみれば、HTTPはアプリケーションの一部なのです。
(MVCの機能分担にはうるさいのに、プロトコルレイヤーバイオレーションはみんなあまり気にしないんですよね :-) )

そもそも、恐ろしいことに今のWeb、そしてモバイルの世界はTCPで満足していません。

HTTPレベルでのHead of Line Blockingは解決されても、一本のTCPセッションに多重化されたHTTP/2では、TCPレベルでのHead of Line Blockingの影響も大きく、輻輳制御にも課題を残しています。他にも、信頼の為に用意された3-way-handshakeがそれ故に遅い、Round Trip Time(RTT)をもっともっと少なく0-RTTにしたい等、まだまだ実現したい、技術的に可能な領域が残されているのです。
そして、ご存知の通り、QUICはこの領域に挑んでいるわけです。
QUICの説明は、もう様々なところにあるので省略しますが、単純に挑むべき課題がまだまだあることは自明といっていいでしょう。

要は現在のWebのユースケースとTCP/IPの設計時に想定していたInternetの構造、ユースケースには乖離が出てきているということなのだと思います。
我々はまだ満足していない、というわけです。

今までIP Stackが担ってきた役割・ブラウザとOSの関係

TCP/IPは、実装としてはIP Stackとしてプラットフォームから提供されます。
乱暴にいえば、IP StackというのはInternetを使うアプリケーションで共通化されたコンポーネントを、OS層で共有化する仕組みでした。(そもそも、共有化・共通化を求められる存在がOSだという面も含めて)
ネットワークデバイスというハードウェアと紐づく単一インスタンス(≒物理デバイス)のネットワークリソースの管理を担っていたわけです。

一度普及し、コンセンサスを得たSocketという概念を中心としたIP Stackというコンポーネントは、ほとんどのプラットフォームを席巻し、事実上Internetの基盤となっています。ブルーオーシャンではないですが、多くの場合こういった基盤技術においては最初の提案がそのまま世界へ普及します。InternetはこのIP Stackによって構築されており、実現に膨大なコストをかけて実現された物理的に各国を、世界を繋いでいるネットワークの仕組みを簡単に”置き換える”わけにはいきません。

しかし、Webの力によってInternetは我々の思う以上の速度で急速に巨大に普及しました。
太いケーブルをつないだ巨大な単一のコンピュータを複数のユーザで共有していた時代から、手軽に扱える有線ケーブルの繋がったデスクトップを専有する時代を通過し、今では片手で持てる携帯電話で地球の裏側へIPパケットを送り込んでいるのです。
事実上の基盤となり広がりすぎて簡単には変更できなくなったInternetとその共有コンポーネントであるIP Stackへの不満と制約の回避をアプリケーションとして解決していたのがHTTP/2だといえるわけです。

その一方、最近のWebの世界では、巨大に膨れ上がった「共通コンポーネント」としてのWebブラウザをプラットフォームとして見なす状況になっています。
いままでOSに求められていたことが、OSの変化の遅さ故にブラウザへ求められるようになってきているのです。
そして、手近なところから、可能な限り理想に近づく、その最先端がQUICだったわけです。

IETF 91 Technical Plenaryでの発表

そんな中、11月のIETF 91でとても興味深い動きがありました。

IETFの上位団体であるInternet Society(ISOC)の委員会に、Internet Architecture Board(IAB)というものがあります。
IABは、Internet全体の主に技術的な構造について、コメント等を出してプロトコルの標準化をリードしています。(他にも、IETFのChairやADの任命をしたりしている)
年に三回あるIETFの会合では毎回あるIETF Technical Plenaryというセッションでは、IABがいくつかのプレゼンテーションを行うことが通例となっています。

そして、先日のIETF91のTechnical Plenaryで、最高に私の興味を唆ったのがIP Stack Evolution Programというプレゼンテーションです。

IP Stack Evolution!

短いスライドなので興味がある人は是非読むのをお薦めします。

スライドの概要としては、図を見るのが一番わかり易いです。(以下の図はIP Stack Evolution ProgramのSlideより引用)

IP Stack Evolution ProgramのSlideより引用
IP Stack Evolution ProgramのSlideより引用

初期の提案として、UDP Port 35を利用して、ユーザー空間(Userland)で動作するNew Transportとなっています。
(ちなみに、UDP Port 35はService Name and Transport Protocol Port Number Registryで”any private printer server”(QMS社が使っていた形跡等があります)に割り当てられていて、 AssigneeとContact共にJon_Postelとなっています。:-) プリンタで使われていた歴史を踏まえて、特定領域では通信しやすいという淡い期待等があるのかもしれませんね)

そしてそのガイダンスとして、SOCK_STREAM、SOCK_DGRAMの次のInterfacesの話や、(ネットワーク)パスの透明性、ネットワーク境界を超える場合のファイヤウォールやmiddleboxとの協調連携等の提案がなされています。

その他、スライドで興味深い部分としては、IETFで半ば公式に”HTTP (+TLS) is a universal session layer”と語られたというだけでも十分驚けるポイントで、他にも”Kernel/userspace boundary is in the wrong place.”とか”Allow evolution beyond and coexistence with “Internet over HTTP””とか、楽しいフレーズが満載となっています。

この件に関連したイベントとして、IAB Workshop on Stack Evolution in a Middlebox Internet (SEMI)というWorkshopが、2015/1/26-27にスイス、チューリッヒで行われるとのことで、そのサマリーは次回のダラスでのIETF92で報告される予定です。
(httpbisのChairを務めるAkamaiのMark Nottinghamも”UDP­based Application Layer Protocol Recipes to the Rescue”というPosition Paperを出しています)

Web Protocolの未来

HTTP/2の標準化を経て、長らく続いてきた歴史的なトランスポート層の仕組みに、遂に変革が起きるかもしれません。

HTTP/1.1bis、SPDY、HTTP/2、QUICを見てきた我々には、この変化はついにWebの世界がInternetの土台を揺り動かした、大きな変革の予兆にみえるのではないかと思います。
個人的には、(皆さんが想起するのと同様に)QUICというプロトコルの登場が、最後の引き金となって、TCPとUDPの二つの選択肢しかなかったIP Stackの制約を打ち破る契機に繋がったと認識しています。
以前、CROSSというイベントのパネルディスカッションでも触れたことがありますが、QUICは現状許される制限の中でどこまでやれるかという試みであり、望むべき理想からすれば大いなる妥協だといっていいと思います。
IP Stack Evolutionのプレゼンテーションを聴いて、その妥協せざるを得ない状況を、Webの力が覆すかもしれないということに私は興奮が抑えられませんでした。(今でも非常にわくわくしています!)

(根が深いMiddleboxの話とかEnd to Endの話とかを端折りましたが :-)、)

いま我々が触っているThe Internetが大きく変わる時代が、2015年から始まるかもしれません。
2015年は、IETF94が横浜で開催(11/01-06)されますし、その前の週(10/26-30)は札幌でW3C TPACも開催されます。この変化を自分で経験し、関わることが出来ることに非常に喜びを感じています。
皆さんも是非、新しいWebプロトコルの未来に心を馳せ、願わくば関わりを持ってもらえると楽しいと思っています。そして、HTTP2 Studyは、その一番良い入り口です。

新しくそして面白いWebプロトコルの未来の到来を祈って。