TCPは、モバイル、Web、データセンターといった個別の利用場面に合わせ、分化する方向で進化を続けている。ここでは、そうしたTCPの最新技術を取り上げる。

iOS 7が採用したMPTCP

 2013年9月、iOS 7がリリースされ、「マルチパスTCP」(MPTCP)という新しいTCPの仕組みが商用OSで初めて実装された。このことに筆者は大いに驚いた。MPTCPは、2013年1月にRFC 6824として公開されたばかりの技術で、標準化からほとんど間を置かずiOSに搭載されたからだ。

複数パスを1本のコネクションに

 MPTCPは、複数のTCPコネクションを束ねて1本のTCPコネクションとして扱う仕組みである。

 似た仕組みとして、チーミング(ボンディング)やリンクアグリゲーションがある。ただし、これは物理層/データリンク層でインタフェースを束ねるものだ。MPTCPは、こうした仕組みをトランスポート層レベルで実現する技術である。

 MPTCPでは、TCPより下のIPや物理インタフェースも複数にして、並列で利用できる。複数のインタフェースを同時に利用することによって、インタフェースや途中のリンクに障害が発生してもTCPコネクションを維持して通信を継続できるメリットがある。

 iOS 6以前の従来型TCPでは、TCPコネクションで使うインタフェースとして無線LANとモバイル回線(3G/LTE)を選べるが、同時に使えるのはどちらか1つだった。例えば、無線LANとモバイル回線の両方が有効になっているiPhoneでWebブラウジングを行うとき、無線LAN経由で確立したTCPコネクションをそのままモバイル回線のほうに移せない。いったんコネクションを切断し、モバイル回線で張り直す必要がある。

 これに対し、iOS 7が搭載したMPTCPでは2つの無線インタフェースを併用して、1つのTCPコネクションを確立できる。

 ただしiOS 7では、WebブラウジングなどTCP通信全般にはMPTCPを利用していない。音声アシスタント機能である「Siri」を利用するときだけMPTCPが使われる。

iOS 7でのMPTCPの動作
iOS 7でのMPTCPの動作
iOSに搭載された音声アシスタント「Siri」を使う際、Wi-Fiとモバイル回線(3G/LTE)の両方が使える環境では、複数のTCPコネクションを束ねて1つのTCPコネクションとして扱う「MPTCP」(Multipath TCP)が使われる。
[画像のクリックで拡大表示]

 Siriでは、無線LANとモバイル回線の両方がオンになっているときにMPTCPを利用する。両方で同時にデータを流すわけではなく、無線LANがメイン、モバイル回線がバックアップという使い方になっている。この状態で無線LANが切れると、TCPの接続を維持しつつモバイル回線にインタフェースを切り替えるという動作になる。