われわれはみな、できる限り高速なインターネットが欲しいと思っているし、必要としている。Microsoftはそれを顧客に提供するために、「Windows 10」と「Windows Server 2016」のTCP/IPスタックを新しくしようとしている。
導入される改善内容は、TCP接続の確立にかかる時間の短縮、TCPの帯域の立ち上がりの改善、パケットロスからの復帰にかかる時間の減少を実現するよう設計されている。具体的には、Windowsの「Redstone」リリースには、次の内容が含まれている。
- TCP接続の確立にかかるRTTをゼロにする「TCP Fast Open」(TFO)(RFC 7413)
- TCPのスロースタートを高速化する「Initial Congestion Window 10」(ICW10)をデフォルトで利用
- パケットロスからの復帰を早める「TCP Recent ACKnowledgement」(RACK)(ステータスがExperimentalのインターネットドラフト)
- 再送信タイムアウト時の応答を改善する「Tail Loss Probe」(TLP)(ステータスがExperimentalのインターネットドラフト)
- バックグラウンド接続のための「TCP LEDBAT」(RFC 6817)
同社はこれらはMicrosoftが実現した改善内容だとほのめかしているが、その多くはGoogleが提案している技術だ。以下では、これらの技術がどのような改善につながるかを簡単にまとめてみよう。
TCP Fast Openは、Googleが提案した、Internet Engineering Task Force(IETF)のRFC 7413(ステータスはExperimental)に基づく技術だ。TFOでは、SYNおよびSYN-ACKパケットでデータを運び、接続ハンドシェイク確立時に受け取り側で利用することが許されている。これによって、データの送受信を開始する前に3方向ハンドシェイクが必要な通常のTCPに比べ、RTT1回分の時間を節約することができる。
これはそれほど大きなことには聞こえないかもしれないが、平均遅延時間が40ミリ秒台のインターネットで、短時間の接続を大量に行うウェブページの送信では非常に大きな違いになってくる。多くの要素が含まれているウェブページでは、この仕組みでかなりの時間を節約することができる。
Windows 10の「Anniversary Update」には、TFOに対応したクライアント側の実装が含まれている。ブラウザ「Microsoft Edge」には、「About:Flags」の設定ページに、TCP Fast Openを有効にする設定項目が追加される予定だ(デフォルトでは無効)。Microsoftによれば、最終的には、将来のWindows 10で「Internet Explorer」とEdgeでこの機能をデフォルトで有効にする予定だという。今後、Microsoftは同社のWebサーバ「IIS」にも、サーバ側の実装を統合する計画だ。サーバ側の実装は、デフォルトでは無効に設定される。
EdgeでTFOを有効にするかどうかを設定するには、「about:flags」や「about:config」ページで、「TCP Fast Openを有効にする」チェックボックスをチェックするか、「netsh int tcp set global fastopen=
Initial Congestion Window 10はGoogleが提案した「RFC 6928」に基づいている。TCPのフロー制御では、歴史的に初期ウィンドウサイズを最大4セグメント(約4Kバイト)としていた。ほとんどのウェブトランザクションは非常に短いため、初期ウィンドウサイズは、フローが完了するまでにかかる時間に大きな影響を与える。インターネットの通信速度は劇的に高速化しているが、TCPの初期ウィンドウサイズは、これまで変更されてこなかった。GoogleはTCPのスライディングウィンドウの初期サイズを、少なくとも10セグメント(約15Kバイト)まで増やすことを提案している。
MicrosoftはWindows 10とWindows Server 2016の通信を高速化しようとしている。