今年この「記者の眼」で2回にわたりP2Pファイル共有ソフトのトラフィックについて書かせていただいた(関連記事1関連記事2)。3度目はないと思っていたが,先日ある機器のデモンストレーションに立ち会って考えを改めた。これまでモヤモヤとしていたP2Pファイル共有ソフトに関する「自分の考え」を整理するのに役立ったからだ。

 今回は,そのデモの様子を紹介し,P2Pファイル共有ソフトのトラフィックと,それをプロバイダのネットワークで制御する「QoS」について考えていきたい。

P2Pファイル共有ソフトだけを抑制

 そのデモは,米国の新興ルーター・ベンダーであるカスピアン・ネットワークスの大型ルーター「Apeiro」が持つQoS機能を使い,ネットワークの混雑時にP2Pファイル共有ソフトのトラフィックを抑制するというものだった。

 QoSとは「quality of service」の略で,そのまま訳せば「サービスの品質」という意味になる。ネットワークでQoSといえば,アプリケーションや通信するホストを識別して,通信の品質を制御する機能や技術を指す。ルーターが持つ機能の一つだ。

 デモでは,Apeiroに二つのネットワークを設定した。そして,Webアクセスをシミュレートするクライアントとサーバーの組み合わせとP2Pファイル共有ソフト「WinMX」でファイル転送を行う2台のパソコン,オンライン・ゲームを想定したTCP通信をシミュレートする2台のパソコンを,それぞれApeiroに設定した二つのネットワークに分けて接続し,Webアクセス,オンライン・ゲーム,P2Pファイル共有の3種類のトラフィックがApeiroを経由するようにする。

 さらに,トラフィック・ジェネレータをApeiroにつなぎ,二つのネットワークの間で回線容量を超えるトラフィックを発生させる。このときに,Webアクセス,ネットワーク・ゲーム,P2Pファイル共有ソフトそれぞれの利用帯域がどう変化するのかを見るというものである。

 Apeiroには事前に,P2Pファイル共有ソフトのトラフィックよりWebアクセスとオンライン・ゲームのトラフィックを優先的に処理するように設定してある。このように設定しているのだから,当然ながら回線の容量を超えるパケットが流れ込むと同時にWinMXのトラフィック量が低下。Webアクセスとオンライン・ゲームで使っている帯域は保持された。

パケットの流れでトラフィックを識別

 このデモで筆者が面白いと感じた点は,ルーターがQoS機能を実現する手法にある。

 通常,ルーターでQoSを実現する際には,IPやTCP,UDPなどのヘッダーに含まれる特定のフィールドの値を見てパケットを識別し,識別されたパケットによって転送方法を変えたりする。例えば,Webアクセスのトラフィックを優先させたいなら,TCPヘッダーに含まれるポート番号が「80」のパケットを見つけ出し,優先的に転送する。IPヘッダーに含まれるTOS(type of service)というフィールドで優先度を設定する方法もよく利用される。

 しかし,Apeiroはこうした手法をとらない。WinMXのパケットを識別してトラフィックを制御しているわけではないのだ。Apeiroは,WinMXでファイルをやりとりしている2台のパソコンの間のパケットの流れを見て,「これはP2Pファイル共有のトラフィックらしい」と判断し,パケットの流れを制御したのである。送信元とあて先のIPアドレスおよびポート番号,さらにはプロトコルIDから「フロー」を識別し,そのフローがある基準に達しているかどうかで転送方法を変えるのである。

 ApeiroがP2Pファイル共有ソフトのトラフィックを識別する具体的な判断基準はいくつかある。例えばパケット・サイズ。P2Pファイル共有ソフトは,データを効率的に転送しようとするので,できるだけ大きいサイズのパケットが使われる。TCPコネクションを設定して通信を継続する時間が長いという特徴もある。やりとりしたパケットの数やトータルのデータ量に基準を持たせることも可能だ。

 さらに,いくつか「フロー」に対する細かい設定を施して,ほかのトラフィックとP2Pファイル共有のトラフィックを区別するというわけである。これらの特徴は,そのソフトがファイル共有という目的のために最適化されて作られていた場合に顕著になる。

 もちろん,パケット・サイズや通信の継続時間などに関するしきい値は任意に変更できる。優先度にしても同様。プロバイダのポリシー次第で,きめの細かいQoS制御が可能になる。

 フローでQoSの対象となるトラフィックを識別するという手法は,P2Pファイル共有ソフトへの対策として大きなメリットがある。

 パケットのヘッダー内にあるフィールドの値でP2Pファイル共有ソフトを識別する従来の方法だと,新しいP2Pファイル共有ソフトが登場するたびに設定を追加していかなければならない。パケットの中が暗号化されていたりすると,識別するためのフィールドを読み取れなくなってしまう。

 それに対して,フローの特徴でP2Pファイル共有ソフトを識別する手法なら追加の設定は不要。中身が暗号化されていても識別は可能。ファイル共有という目的のために最適化されて作られているのなら,どんなP2Pファイル共有ソフトでも「網」にかけられるようになるのである。