一対多通信における ネットワーク障害物 対応

一対多通信における
ネットワーク障害物対応方法選択
プロトコルの設計
広島市立大学
情報科学部情報メディア工学科
インターネット工学研究室
0421037
日山雅之
1
発表概要
1.研究背景
2.提案プロトコルについて
3.提案プロトコルを実装したプロトタイプ
4.おわりに
2
研究背景

遠隔プレゼンテーションシステム”GOZARU”を使用して、離
れた3大学(慶応SFC、京大)での合同講義を行っている
問題点
ネットワーク障害物(NAT, ファイアウォール等)が原因となりIPv4
での利用ができない場合があって、他組織に展開するにあたっ
て普及の妨げとなっている

そのため、IPv4のネットワーク障害物が介在する場合でも通
信可能な”GOZARU”の作成を開始
それにあたり、ネットワーク障害物に応じて対応方法を決定
するプロトコルを提案、作成する
3
GOZARUとその問題
NAT・NAPT内部のネットワー
受信した制御情報
[ GOZARUとは ]
クであるとプライベートアドレス
通りの動作を実行
複数拠点でのPowerPointファイルのページ遷移と操作の
講演者が実行し
が割り当てられ、講演者は一
た制御情報を受
意に特定できない
講演者
同期を実現することができる、遠隔プレゼンテーションシステム
N
講者へ送信
と同期
A
講演者
T
制御情報
制御情報が送れない
・
同期ができない N
A
P
T
受講者
プライベートアドレス
NAT Traversal技術を使って
同期を可能にする
4
NAT Traversal技術

UDP Hole Punching
(利点)通信開始後は、双方のノードのみで直接通信を行う
(欠点)一方がSymmetric NAT内部であると実行できない

Relaying
(利点)ほとんどのネットワーク環境で実行できる
(欠点)Relayingによるオーバーヘッドで遅延が発生する
Relayサーバーに負荷が集中する
これらの特性を考慮して、ネットワーク環境に応じて
NAT Traversal技術を選択するプロトコルを設計
5
提案プロトコルについて

「ネットワーク障害物対応方法選択プロトコル」
講演者(Sender)と受講者(Receiver)の双方のネットワーク環
境に応じて、対応方法を決定するプロトコル
対応のための戦略を次の4つを順に試す
直
接
間
接
1 直接接続
2 NAT内部ノードからNAT外部ノードへ接続開始
3 UDP Hole Punching (通信確立までの処理が複雑)
4 Relaying (第三のノードを使用してしまう)
6
対応方法決定の組み合わせ

SenderおよびReceiverのネットワーク環境に応じて決めら
セッション毎に新
れる、対応方法の組み合わせ 通信相手が変わっ
ても同じポート番号
が使用される
Receiver
Sender
たなポート番号が
使用される
NATなし
Cone NAT
Symmetric NAT
NATなし
直接接続
NAT内部ノードから
NAT外部ノードへ
接続開始
NAT内部ノードから
NAT外部ノードへ
接続開始
Cone
NAT
直接接続
UDP Hole Punching
Relaying
Symmetric
NAT
直接接続
Relaying
Relaying
7
対応方法決定までの流れ
STUNサーバーとは
問い合わせがあったクライアントのネット
Brokerが対応方法決定の組み
ワーク環境にNATがあるかないか、あった
Sender, Receiverが自ネット
STUNサーバーは要請が
合わせにしたがって対応方法を
場合はそのNATの種類と変換後のアドレスを
インターネット
ワークのネットワーク情報を
あったクライアントのネット
決定
Sender, Receiverが自
クライアントへ通知する
Brokerに通知
ネットワークの情報を
STUNサーバーに要請
ワーク情報を通知
STUNサーバー
BrokerがSender, Receiverに
対応方法を通知
Broker
通知された対応方法を実行
NAT対応ルーター
Sender
Receiver
8
提案プロトコルを実装したプロトタイプ


提案プロトコルを実装したプロトタイプ”GOZARU+”
を現在実装中
Sender+/Receiver+
 GOZARUからBroker通信部分、TCPで制御情報の送受
信を行う部分を追加
 Windows上で、C#で開発

Broker
 現在、Linux上にてPerlで開発したプロトタイプの動作を
確認済み
 今後は、パフォーマンス向上のためにC言語へ移植予定

Relayingのみ動作確認済み
9
おわりに

まとめ
 IPv4環境でGOZARUを展開するためにネットワーク
障害物を回避する方式を提案
 そのプロトコルを実装したGOZARU+を現在開発中
 Relayingの動作を確認

今後の課題
 プロトタイプの完成、動作確認
 選択方法の性能の評価
10
11
NAT (Network Address Translator)
プライベートアドレスとグローバルアドレスを
変換する技術
 IPアドレスにプライベートアドレスが割り当て
られたノードが、インターネットへ接続をすると
きだけグローバルアドレスに変換して通信を
行うことで、グローバルアドレスを節約するこ
とが可能となる

12
NATの利点・欠点

利点
 ひとつのグローバルアドレスで複数のノードがインター
ネットに接続することができる
 グローバルアドレスに変換されなければインターネットに
接続していないも同然であるため、セキュリティ面が向上
する

欠点
 プライベートアドレスが割り当ててあるため、外部から接
続を行ったり、データを送ることができない
 変換によるオーバーヘッドで遅延を起こしてしまう
13
NAPT (Network Address

Port Translator)
アドレスのみでなく、ポート番号も含めて変換
を行う。これにより、単一のグローバルアドレ
スを多数のプライベートアドレスに変換できる
変換例
192.168.1.100:7800 ⇔ 165.242.42.220:7801
192.168.1.101:8900 ⇔ 165.242.42.220:7802
NATの場合
192.168.1.102:9700 ⇔ 165.242.42.220
変換後のアドレスは同一であるが、ポート番号が異なるため、
14
変換前のアドレスを区別することができる
NATの種類

Cone NAT
 Full
Cone NAT
 Restricted Cone NAT
 Port Restricted Cone NAT

Symmetric NAT
15
Full Cone NAT
NAT
Server A
Client
Server B
16
Restricted Cone NAT
NAT
Server A
Client
Server B
17
Port Restricted Cone NAT
NAT
Server A
Client
Server B
18
Symmetric NAT
NAT
Server A
Client
Server B
19
NAT内部ノードからNAT外部ノードへ接続
インターネット
どこ?
ノードB
プライベート
ネットワーク
ノードA
20
UDP Hole Punching
[NAT テーブル]
◆Private A : Port A’ ⇔
Global A : Port A
: [宛先]Global C : Port C
: [宛先]Global B : Port B
NAT対応ルーターA
STUN
Serverと
NAT対応ルーターB
にパケットを送信
通信を行う
のアドレス(ポート番
号)を通知
インターネット
[NAT テーブル]
テーブル]
NAT対応ルーターAと
[NAT
NAT対応ルーターBの
◆Private
◆
PrivateBB: :Port
PortB’B⇔⇔
アドレス(ポート番号)を取得
Global B : Port B
STUN Server
Global C
NAT対応ルーターA
外部 : Global A
内部 : Private A’
ノードA
Private A
Global B : Port B
: [宛先]Global C : Port C
[宛先]Global
C : Port C
: [宛先]Global A : Port A
STUN
Serverと
NAT対応ルーターA
通信を行う
NAT対応ルーターB
のアドレス(ポート番
にパケッ
トを送信
号)を通知
NAT対応ルーターB
外部 : Global B
内部 : Private B’
NATテーブルの宛先
に登録されたアドレス
からのパケットでない
ため通さない
ノードB
Private B
21
なぜSymmetric NATが原因で
UDP Hole Punchingができないのか?
[NAT テーブル]
◆ Private
A : Port
A0 B1
Global
B : Port
⇔ Global A : Port A2
[宛先] Global B : Global B1
ノードA
Private A
NAT対応ルーター
Global A
[NAT テーブル]
A :B0
Port A1
◆ PrivateGlobal
B : Port
STUN サーバー
インターネット
⇔ Global B : Port B2
[宛先] Global A : Global A1
NAT対応ルーター
Global B
ノードB
Private B
22
Relaying
インターネット
ノードC
NAT対応ルーターA
ノードA
NAT対応ルーターA
ノードB
23
対応方法と使用する通信プロトコル
対応不要
NAT内部ノードからNAT外部ノードへ接続開始
TCP/UDP
UDP Hole Punching
UDP
Relaying
TCP
24
参考文献




B.Carpenter, “Internet Transparency”, RFC2775,
IETF,(2000).
B. Ford, P. Srisuresh, and D. Kegel, “Peer-to-peer
communications across network address translations”, In
the 2005 USENIX Annual Technical Conference,
USENIX, pp. 179-191 (2005).
J. Rosenberg, R. Mahy, and C. Huitema,”Traversal using
relay NAT (TURN)”, Internet-Draft, IETF (2005).
J.Rosenberg, J. Weinberger, “STUN – Simple Traversal
of User Datagram Protocol (UDP) Through Network
Address Translators (NATs)”, RFC3489, IETF, (2003)
25