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