各種ルータに対応する P2P通信環境に関する研究 学籍番号 200511206 情報科学主専攻 鈴木良平 指導教員 朴泰祐
背景と目的 P2P環境上での,Volunteer Computingに関する 研究が盛んに行われている 多数の遊休状態のPCをP2P環境上で接続して,分散コン ピューティングに利用 例:BOINC 家庭や企業に散在しているPCはNATやファイア ウォールによって守られているため,容易に相互 通信できない 通信環境や家庭用ルータ(NATbox)の種類に応じた NAT越えをユーザ透過に行うシステムを提案する
現在のNAT越え技術 リレー方式 UDP hole punching TCP hole punching サーバなどを介した通信 UDP hole punching あらゆるNATboxに対応しているが,UDP通信 TCP hole punching TCP通信でNAT越えを行うが,すべてのNATboxで行えない UPnP (Universal Plug and Play) 特定のポートを開けれるが,操作できないNATboxがある 先行研究 RI2N/UDPを用いたP2Pオーバレイネットワーク「岡本 2006」 上記のようなNAT越え技術(通信モジュール)の実装,そして, 実装した通信モジュールを用いてTCP,UDP通信をユーザ 透過に行うシステムの実装 先行研究:UDP hole punchingはほぼ確実なNAT越えなので、ノード間のUDP通信をTCPライクに行うための API を提供する研究
NAT越え技術の使用例 UDP hole punching UPnP Skype Windows Messenger IP電話,テレビ会議用アプリケーション UPnP Windows Messenger インスタントメッセージの交換などを行うアプリ ケーション 代表的な例としてskype,messenger
システムの概念 通信相手がNATboxに保護されていたら,リレー方式,UPnP,UDP hole punchingなど利用 各ノードとそれを保護しているNATboxの種類に応じて, 自動的に通信方式を選択する 通信相手がNATboxに保護されていないなら,NAT越え技術は必要ない 今回はUPnPモジュールと,UDP hole punchingモジュー ルを実装し,これら2つの通信モジュールに優先度をつけて ノード間通信を行うシステムを実装 相手がNATboxなどに保護されていないなら,通信を行うことは容易. しかし,そうでない場合はサーバを介さないと通信は行えない. システムの概要: 通信開始時,サーバにアクセスして情報を交換する. そして,通信を行う.
UDP hole punchingモジュール 宛先を指定してUDPパケットを送信しただけではパケッ トは通信相手のNATboxによって破棄される UDPパケットを何度か送信することでNATboxのポート を開け,通信相手と開いたポートを用いて通信をする 今後の設計として,ノード間の通信には先行研究によって提供されたAPIを用いることを検討している
UPnPモジュール UPnPデバイス開発用のライブラリとして UPnP SDKを使用 UPnP対応NATboxをSSDP (Simple Service Discovery Protocol) によって検索 発見できたら,NATboxの情報がXMLで記述され たURLの記載されたメッセージを受信 NATboxの操作専用URLにAction命令を送信す ることで,操作する グローバルアドレスの取得 TCPもしくはUDPのポートを開く XMLを介してNATboxの情報を取得し,Action命令を送る
システムの構成(1) サーバと接続 自分の情報の登録 通信相手の検索 通信相手を発見できたら,サーバに指示された通信 方式を用いる
システムの構成(2) サーバ 接続されたノードの情報を登録 ノードの情報から通信方式を選択する 通信する両ノードのうち 片方だけUPnP対応NATboxによって保護されていたら,その内 側のノードをインバウンド通信側とし,もう一方のノードをアウトバ ウンド通信側とする 両方UPnP非対応NATboxだったら,UDP hole punchingを選択 ノードに通信相手の情報と,通信方式の情報を送信する UPnPモジュールとUDP hole punchingモジュールを 統合したことで,TCP,UDP通信をユーザ透過に行うこ とが可能
評価環境 評価内容:各通信モジュールのスループット NATboxはすべて100Mbps対応 サーバ ノード CPU Intel®Pentium®4 2.4GHz Intel®Pentium®M 1.2GHz Memory 1024Mbyte 512Mbyte NIC Intel®PRO/100 Intel®PRO/1000 NATbox UPnP BUFFALO BBR-4HG (NATbox1) ○ I-O DATA ETX-R (NATbox 2) ×
評価結果 NATbo2のノードがアウトバウンド側, NATbox1のノードがインバウンド側 UDP hole punching以外は Iperf2.0.2 を用いて測定 (NATbox1 → NATbox2) UPnPモジュールによって,NATboxの設定を行うのに約6秒かかった UDP hole punchingによってポートを開けるのに約20m秒かかった ここでは,DMZはNATboxを手動で設定することで,パケットをフォワーディングしている意味 今回,非対称で,かつ,余計なパケットなどが発生する環境で評価を行ったため,性能としては不十分である しかし,実装したモジュールを用いて通信が行えることは確認できた.
まとめ 2つのNAT越え技術を統合し,ユーザ透過にした UDP hole punchingとUPnPを適切に用いて,ノード 間の通信に成功した 今後の課題 通信モジュールの種類を増やす UDP hole punchingを用いたストリーム通信の実装 先行研究のRI2N/UDPを用いることを検討する DHT (Distributed Hash Table) を用いたサーバの実装