NS3によるP4Pシステムの伝送特性解析

10EC078 田柳 直人
指導教員 坂本 直志

目次

1 はじめに
2 準備
2.1 P2Pとは
2.2 P4Pとは
2.3 先行研究
3 NS3
4 シミュレーション
4.1 シナリオ
4.2 プロトコル
4.2.1 P4Pを使用しないP2P
4.2.2 P4Pを使用するP2P
4.3 NS3の実装
4.4 結果
5 まとめ
6 参考文献
7 付録

1 はじめに

現在、インターネット利用者の数は増え続けており、それによって増加するトラフィックが問題となっている。特に、P2P通信によって発生するトラフィックの割合は減少傾向にあるものの未だに大きく[1]、一部ではP2Pトラフィックを制限するISP(Internet Service Provider)も存在する[2]。

そこで、この問題を解決するために、P2P接続を最適化するための技術であるP4P(Provider Portal for Applications)が考案された[3]。P4PはP2Pトラフィックを減らす目的で考案されたものであり、ISP側のコストを削減するものであるが、ユーザ側のダウンロード速度も向上することが期待されている。

本論文では、P4Pを利用した場合と利用していない場合の2つのP2Pファイル共有ネットワークについて、ネットワークシミュレータであるNS3を用いたシミュレーションを行い、ダウンロードが完了するまでにかかる時間の違いを示した。

2 準備

2.1 P2Pとは

p2p
図 1: P2Pファイル共有ネットワーク例

P2P(Peer to Peer)とは、サーバとクライアントの区別なく、コンピュータ(Peer)同士が対等に相互接続する通信方式である。特定の端末へのアクセス負荷が集中しにくいため、ファイル共有ソフトやライブストリーミング配信などで利用されている。P2Pには複数の種類があるが、本論文ではピュアP2P方式について述べる。

ピュアP2Pは、互いの接続情報を通信しあって仮想のネットワーク接続を行うことで、サーバを完全に必要としない通信形態である。どのピアがどんなデータを所持しているかという接続情報は、それぞれのピアが分散して持つ。自分が知っているピアにデータを所持しているかを聞き、所持していればピアは返答し、所持していなければ別のピアにメッセージを転送していくことでデータを所持しているピアを検索する。どのピアと通信を行うかの選択はランダムで行われる。

接続情報の交換には多くのコンピュータと通信することから、WinnyやShareに代表されるP2Pアプリケーションの利用には大きな通信量を伴う。

これらより、P2Pアプリケーションの利用によって増加する無駄なトランジットが問題となっている。ISP同士はIX(Internet eXchange)を介して接続されており、ISPはトラフィックをIXで上位ISPに中継(トランジット)してもらう際にトラフィック量に応じた料金を支払わなければならないため、なるべくIXを中継するトラフィックを減らす必要がある。P2Pは通信をするピアをランダムで選択するため、図1のようなネットワークを想定した場合、要求するファイルXを所持しているピアが同ISP内に存在するにもかかわらず、外部ISPからXをダウンロードしてしまうということが起こりうる。その場合、同ISP内のピアからダウンロードをしていればトランジットをせずに済んだものが、外部ISPのピアからダウンロードをしたためにトランジットを必要とし、無駄なコストがかかるという結果となってしまう。

2.2 P4Pとは

p4p
図 2: P4Pファイル共有ネットワーク例

P4Pとは、P2Pの問題点を解決するために考案された、ISPがP2Pアプリケーションに対して提供するピア選択のための接続情報のことである。

P4Pを利用することによって、ISP内のピアの情報、希望するネットワークの利用方法、ISPが提供できる機能についての情報を、ISPが保持し、ピアに提供できるようになる。それぞれのピアは、DNSに問い合わせて自分が所属するISPが持つ接続情報へのIPアドレスを取得し、接続情報を得る。その接続情報に基づいて通信を行うことによって、P2Pをより効率的なものとすることができる。

図2のようなネットワークを想定した場合、通常のP2PであればファイルXを所持しているピアの中からランダムで選択し通信を行う。しかし、P4Pを使用することによって、効率のよいピアと通信を行うようになる。図2の例だと、外部ISPのピアよりも同ISP内のピアと通信を行う可能性が高まる。そのため、トランジット通信を行う数が減り、ISPが負担するコストを減らす効果が得られる。

2.3 先行研究

村松は、P4Pを導入した場合のユーザ側のインセンティブについて実験を行った [4]。P4Pを導入したピュアP2Pファイル共有ネットワークのシミュレーションを行い、P4Pを導入することによって、ダウンロードに要する時間とダウンロード通信量にどのような影響が出るのかを実験し、ダウンロードに要する時間はP4Pを導入した方が短いという結果が出ている。但し、シミュレーションはJavaで記述しており、ASホップ数を考慮した伝送容量への重み付けを行っている。上記の研究ではP4Pを使用した方がダウンロード時間は短くなっているが、思ったほど性能の向上はないという結果となっている。しかも、シミュレーションは自作のJavaのプログラムである。そこで本研究では、この研究に近いモデルとシナリオを使い、NS3を用いて追試を行った。

また、今泉らはユーザ側のダウンロード時間の増加を極力抑え、ISP間の総トラフィックを削減するノード選択の手法を提案している[5]。

3 NS3

NS3とは、C++またはPythonで記述をする、NS2の後継のネットワークシミュレータである[6]。NS2と比べて無線系ネットワークのサポートが強化されている。NS3で扱えるほとんどのネットワークの要素は、オブジェクトクラスとして与えられている。まだ日本語のドキュメントは少ないが現在もNS3の開発は進められており、今後更に利用者が増えていくと思われる。

NS3で扱えるほとんどのネットワークの要素は、オブジェクトクラスとして与えられている。また、ノードの作成、接続、帯域速度やIPアドレスの設定などはそれぞれのメソッドを呼び出して行う。シナリオは、必要なネットワーク要素をオブジェクトクラスのインスタンスとして生成し、各関係やパラメータをsetterで与える。通信の開始などは、時刻をパラメータとするstartメソッドを使って行う。

本実験では、C++で記述をしたNS3を使用してシミュレーションを行った。

4 シミュレーション

network
図 3: シミュレーションで仮定するネットワーク図

4.1 シナリオ

n個のピアを持つ2つのISPと、それを結ぶ中継点IXで構成されるネットワークを仮定し、P2Pファイル共有を行った場合のシミュレーションを行う。ピア数は10〜70個とし、ファイル共有を行うピアは2つのISPのいずれかに属するものとする。初期段階では1つのピアが100Kbyteのファイルを持つものとし、それ以外のピアがそのファイルを要求するものとする。通信速度は、ISP-Peer間では100Mbps、ISP-ISP間では10Mbpsに設定をする。

4.2 プロトコル

4.2.1 P4Pを使用しないP2P

ファイルを所持していないピアは、ファイルを所持しているピアの中から1つを選択し、ダウンロードの要求を行う。このダウンロードの順番を生成した後、その順番の通りにダウンロードをシミュレートする。送信終了後、ファイルを送信したピアと受信したピアは、それぞれ新たに1つのピアを選択してファイルの送信をする。全てのピアにファイルが行き渡るまでこれを繰り返す。

4.2.2 P4Pを使用するP2P

ファイルを所持していないピアは、ファイルが1つのISP内のみに存在する初期段階では、外部ISPのピアを1つ選択しファイルの要求を行う。両方のISP内にファイルが存在する状況となったら、同じISP内のピアのみに対してファイルの要求をし、ダウンロードを行う。このようにして、なるべくトランジット通信が行われないようにしてファイルを伝搬していく。

4.3 NS3による実装

本実験はNS3を利用して行った。ISP-ISP間となるネットワークを1つ、ISP-Peer間となるネットワークを2つ作成する。ISP-ISP間のネットワークにはノードを2つ、ISP-Peer間のネットワークには、想定する全ピア数の半数のノードをそれぞれ生成する。ISP-ISP間のネットワークのIPアドレスを10.1.1.0/24、ISP-Peer間のネットワークのIPアドレスをそれぞれ10.1.2.0/24と10.1.3.0/24に設定する。

7章に、P4Pを使用したP2Pのソースコードを記した。ファイルの送信は(82行)にてBulkSendHelperクラスを、受信は(90行)にてPacketSinkHelperクラスを用い、FTPの使用を仮定して行う。(83行)で、データの送信先を指定する。ここでは、ISP2内の10.1.2.6のノードを指定している。(84行)で送信するデータのファイルサイズを100Kbyteに設定し、(85行)でデータの送信元を指定する。ここではISP1内の10.1.1.6のノードを指定している。あらかじめそれぞれのピアが送信に要する時間を計測しておき、送信開始時間は(87行)にて、1つ前のピアへの送信完了時間に合わせて設定をする。(87行)の場合は最初の送信なので、送信開始時間は1.000秒としている。(91行)で受信を全てのノードに許可し、(92行)で受信するノードを指定する。countの値が1となった次の段階では、10.1.1.6のノードが10.1.1.5のノードへ、10.1.2.6のノードが10.1.2.5のノードへそれぞれ送信を行い、その後は図4の通りに送信を行っていく。全ての送信が完了したら、pcapファイルとして通信データを出力する(278、279、280行)。

7章に示したP4Pを使用しないP2Pのソースコードは、ISP間の通信を複数回行うように送信先を指定したものである。

node
図 4: P4Pを使用したP2Pの送信図

4.4 結果

図5に、ピア数が10〜70の場合の、全てのピアにファイルが行き渡るまでに要する時間の測定結果を示した。

p2p_p4p
図 5: ピア数とダウンロードに要した時間の関係

実験の結果は図5にグラフで示した。P4Pを導入した場合の方が、導入していない場合と比較してダウンロードに要する時間が短いことがわかる。P4Pが直線なのに対してP2Pが曲線を描いているが、これはP2Pでは帯域不足により送信が行われなかったパケットが出てきており、ファイルを送信しきれなかったノードが存在するためである。

5 まとめ

本論文では、P4Pを利用した場合のP2Pネットワークについて、P4Pを利用していない場合と比べてダウンロードに要する時間はどのように変化するかを示した。

シミュレーションにはNS3を用いて行ったところ、両者に差があまり見られなかった先行研究の結果とは異なり、P4Pを利用することによってダウンロード時間が大きく短縮される結果となった。

今回の実験では、ダウンロードを行う順番を生成した後、その順番の通りに送信開始時間を指定してダウンロードをシミュレートしているため、結果は理論値である。しかし、実際にP4Pを利用した場合でも、P4Pを利用していない場合と比べて大きな差が出るものだと思われる。

6 参考文献

  1. ジュピターテレコム サービスご加入に関する重要事項説明 13頁
    http://www.jcom.co.jp/library/pdf/yakkan/edogawa_home.pdf
  2. IIJ ブロードバンドトラフィックレポート
    http://www.iij.ad.jp/company/development/report/iir/pdf/iir_vol20_report.pdf
  3. Haiyong Xie, Arvind Krishnamurthy, Avi Silberschatz, Y.Richard Yang, "P4P: Explicit Communications for Cooperative Control Between P2P and Network Providers"Content Distribution?”, ACM USENIX IMC, Berkeley 2005.
    http://www.dcia.info/documents/P4P_Overview.pdf
  4. 村松 謙 "P4PによるP2Pの効率化"
    http://www.net.c.dendai.ac.jp/~muramatsu/p2p_p4p.html
  5. 今泉友輔、今泉貴史 "P2PダウンロードにおけるISP 間トラフィック削減手法の提案"
    http://www.imit.chiba-u.jp/nipc2013/web_pdf/jacn2013/pdf/ipc2013_p011.pdf
  6. ns-3 project "ns-3 Tutorial"
    http://www.nsnam.org/docs/release/3.19/tutorial/singlehtml/index.html

7 付録