各種ルータに対応 する P2P通信環境に 関する研究

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