一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

複数の通信インターフェイスの活用

iOS 7には、MPTCPが実装されているらしい。複数の通信インターフェースを持っているデバイスが、別々の経路で通信を行うことによって、仮に片方が落ちてしまった場合にももう片方の通信インターフェースにフォールバックして、通信を続けようというプロトコルだ。普通にこういう事をやろうとすると、TCPの場合一旦セッションが途切れてしまう。MPTCPは独自のオプションを定義して、そのオプションを使っているセッションには複数の通信経路を設定して、どの通信経路からのパケットでも同じTCPセッションについての通信とみなすようにする拡張をしている。この事によって、一つの通信インターフェースがコケてもTCPセッションの切断無しに通信を継続する事ができる。

この手の複数の通信インターフェイスを活用したプロトコルの試みはいくつも行われてきた物の、ここまで実用されるようになったのは初めて見た。

この仕組みがあると嬉しいのは、通信回線が安定しないようなモバイルの通信環境においても、スムーズな映像配信が行いやすくなる点だ。仮に一つの通信インターフェイスの電波が弱くなってしまったとしても、再度通信の確立処理を行う必要がなくなる。そのおかげで、スムーズな視聴体験に繋がっていく。

今身の回りにあるデバイスには、大抵2つ以上の通信インターフェイスがついている。モバイル機器だとWi-Fiに加えて、3GやLTE、あるいは有線のLANがついている。こういう複数の通信インターフェイスがついたデバイスが世の中にたくさん普及しているのに、なぜそれを有効活用する物が今まで世に出てこなかったのか。理由は大きく2つある。

まず、必要とされていなかったから。TCPのセッションが切断して困るアプリケーションというのは、思ったほど多くない。多分sshとかVNCとか位しか無い。例えば、HTTPなんかはそれほど持続的な通信を必要としない。ストリーミング配信を行うアプリケーションは、自前で再接続して再生を継続しようとする。といった具合に、思ったほど必要とされるシーンは多くない。

次に、消費電力の問題。片方の通信経路が使えなくなった事を検出して別の通信経路にフォールバックして通信を継続しようとする為には、常に複数の通信インターフェイスを使える状態にしておく必要がある。なので、単一の通信インターフェイスだけを有効にしている時に比べ、消費電力が大きくなってしまう。モバイル機器はバッテリーに限りがあるので、出来る限り消費電力は抑えたい。たまにしか発生しないであろう通信切断時のフォールバックの為だけに、果たして常時複数の通信インターフェイスを有効にしておくのはあまりユーザーにとってありがたいとは言えない。

おまけにもう一つテクニカルな弱点を付け加えるとすると、今までのTCPで使われてきたような単純な輻輳制御が機能しなくなる可能性が高い。通信経路が変わった瞬間に通信品質が著しく変わると、その瞬間に強い輻輳制御がかかり、結果的にスムーズな通信環境とは言い難くなってしまうのではないかという懸念がある。

とはいえ、色々と懸念があるといって、この分野がこの先無用な技術なだけで終わってしまうかというと決してそんな事は無いと思っている。省電力な通信インターフェイスやプロトコルが開発されればそれだけリッチに複数の通信インターフェイスを立ち上げ続けるというのも現実性が増すだろうし、今からこうやって実用的に使われていくというのは、とても大事な事だろうと思う。