• 検索結果がありません。

HolePunching を用いた NAT 越え MobilePPC の実装

N/A
N/A
Protected

Academic year: 2021

シェア "HolePunching を用いた NAT 越え MobilePPC の実装"

Copied!
28
0
0

読み込み中.... (全文を見る)

全文

(1)

情報処理学会研究報告 IPSJ SIG Technical Report

Hole Punchingを用いたNAT越えMobile PPC 実装

鈴 木 秀 和1,2 寺 澤 圭 史1 渡 邊 1

IPv4ネットワークでは,移動ノードが通信中にグローバルネットワークとプライ ベートネットワークを跨って移動することが想定される.筆者らは,通信経路上に NATが存在した場合,NAT越え手法として知られているHole punchingの原理を 移動透過性技術に適用する方法を検討してきた.これにより,異なるアドレス空間を 跨る移動透過性を実現することができる.本稿では,エンドノードだけで移動透過性 を実現するMobile PPC(Mobile Peer-to-Peer Communication)に上記機能を実 装したので報告する.

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching

Hidekazu Suzuki,1,2 Keiji Terazawa1 andAkira Watanabe1

In IPv4 network, a mobile node may move between a global address net- work and a private address network during communication. We have already proposed a mobility mechanism that uses a principle of hole punching, widely known as a NAT traversal technology, when NAT exists on a communication path. It can realize mobility over different types of address areas. I this paper, we describe the implementation of the above function for Mobile Peer-to-Peer Communication (Mobile PPC) that can realize mobility with only end nodes.

1名城大学大学院理工学研究科

Graduate School of Science and Technology, Meijo University

2日本学術振興会特別研究員PD

Research Fellow of the Japan Society for the Promotion of Science

1. は じ め に

携帯端末や無線ネットワークの普及により,ユーザはいつでも,どこからでもネットワー クに接続できるようになった.現在は携帯電話網の利用が圧倒的に多いが,近年では,無線 LANWiMAXを搭載した携帯端末も登場しており,今後ますますシームレスにIPネッ トワークに接続可能なユーザが増加すると考えられる.しかし,IPネットワークでは通信 中にユーザが移動したり,接続する無線デバイスの切り替えをしたりすると,IPアドレス が変化するため通信が切断されてしまう.この問題を解決するために,移動透過性を実現す る様々な方式が提案されている1)

移動透過性を実現する技術の多くは,IPv6の利用を前提としている.しかし,IPv6は相 互接続という点においてIPv4との互換性がないため,IPv4IPv6が混在する環境が当分 続くと想定される.通信相手がIPv4にしか対応していない機器であれば,IPv4で通信す る必要がある.従って,IPv4ネットワークにおける移動透過性技術の実現は大きな意義が あると考えられる.

IPv4ネットワークではアドレス枯渇問題のため,全ての移動ノード(以下MN; Mobile Node)にグローバルアドレスを割り当てることは困難であり,プライベートアドレスを積 極的に利用する必要がある.そのため,グローバルアドレス空間のネットワーク(以下グ ローバルネットワーク)とプライベートアドレス空間のネットワーク(以下プライベート ネットワーク)を跨った移動があり得る.このような移動では移動前と移動後の通信経路の どちらかにNATNetwork Address Translator)が介在することになる.その結果,移動 通知情報に含まれるIPアドレスと実際の通信で用いられるIPアドレスが一致せず,移動 前後のIPアドレスの関係を正しく管理できないという課題がある.

Mobile IP2)においては,この課題を解決するため,移動通知をUDPによりカプセル化 処理を行ったり,NATに独自の機能を追加するなどの対策が検討されている3)–5).しかし,

この方法ではカプセル化処理に起因するヘッダオーバヘッドのため伝送効率が低下したり,

特殊なNATが必要になるなどの課題が残る.

IPv4ネットワークにおいて,エンドエンドで移動透過性を実現する技術として,Mobile PPCMobile Peer-to-Peer Communication6)がある.Mobile PPCでは,MNDDNS

Dynamic DNS)により通信相手ノード(以下CN; Correspondent Node)のIPアドレス を取得してから通信を開始する.MNが通信中に移動してIPアドレスが変化した際,CN に対して移動前後のIPアドレスの関係を直接通知し,その対応関係をIP層に記憶する.そ

1 c 2009 Information Processing Society of Japan

(2)

情報処理学会研究報告 IPSJ SIG Technical Report

の後,IP層で全てのTCP/UDPパケットにアドレス変換処理を行うことにより,上位層か IPアドレスの変化を隠蔽して通信を継続することができる.

筆者らは既存のNATをそのまま利用でき,かつMNがアドレス空間の違いに関わらず 自由に移動できる方式を提案してきた7).提案方式ではNATのアドレス変換に対応するた めに,NAT越え技術の代表的な手法として知られているHole punching8)の原理を導入す る.MNCNに対してHole punchingに当たるBinding処理を行うことにより,NAT マッピング情報を生成し,さらにNATの外側に割り当てられたIPアドレスとポート番号 を取得する.その後,MNは取得した情報をCN当てに送信する移動通知情報に含めるこ とにより,CN側で適切なアドレス変換処理を実行させることができる.

以下,2章でMobile PPCの基本的仕組みと提案方式について説明する.3章で提案方式 の実装について,4章で動作確認の結果と残された課題について述べ,5章にてまとめる.

2. 提案方式の仕組み

2.1 移動パターンと記号の定義

1IPv4ネットワークにおけるMNの移動パターンを示す.なお,本稿ではCN グローバルネットワークに存在し,MNは必ず通信を開始できることを前提とする.MN 移動パターンは,以下の4つが考えられる.

Pattern 1: グローバルネットワークからグローバルネットワークへの移動

Pattern 2: グローバルネットワークからプライベートネットワークへの移動

Pattern 3: プライベートネットワークからグローバルネットワークへの移動

Pattern 4: プライベートネットワークから異なるプライベートネットワークへの移動

従来のMobile PPCPattern 1のみ対応していたが,提案方式はPattern 2からPattern 4に対応する機能を提供するものである.

本稿で用いる記号を以下のように定義する.

Gi;グローバルIPアドレス

P i;プライベートIPアドレス

A:p; IPアドレスA,ポート番号p

SDDS;SからDへの通信

SD;SD間の通信

SD;SからD,またはDからSへのアドレス変換

1 IPv4環境における移動パターン Fig. 1 Mobility patterns in IPv4 environment.

2 Mobile PPCの基本シーケンスと生成されるCIT Fig. 2 Basic sequence of Mobile PPC and created CITs.

2.2 Mobile PPC

2Mobile PPCにおける通信開始から,移動後の通信継続までの一連の流れを示す.

MNおよびCNIPアドレスを,それぞれ“G1”“G5”とする.MNは通信開始に先立 ち,CNと認証鍵共有ネゴシエーションを行う9).このネゴシエーションは,Cookie交換 DHDiffie-Hellman)鍵交換の2往復で構成されており,認証鍵の共有を行う.認証鍵 は移動後の移動情報通知処理における認証で用いる.

2往復のネゴシエーションの後,MNは送信するTCP/UDPパケットのコネクション識 別子CIDConnection ID⋆1を用いて,式(1)に示すアドレス変換テーブルCITCon-

⋆1 TCPコネクション,またはUDPストリームを識別するための情報であり,送信元/宛先IPアドレス,ポー ト番号とプロトコルタイプの5つの値の組からなる.

2 c 2009 Information Processing Society of Japan

(3)

情報処理学会研究報告 IPSJ SIG Technical Report

nection ID Table⋆1を生成し,通信を開始する.この時点ではパケットのアドレス変換は 行われない.CNTCP/UDPパケット受信時にMNと同様のCITを生成し,セッショ ン情報を記憶する.

M N/CN: G1 :sG5 :d (1)

MNが通信中に別のネットワークに移動して,新しいIPアドレス“G2”を取得すると,

CNとの間で移動通知処理を実行する.CNに送信するCUCIT UpdateRequestには,

移動前のIPアドレス(PREV-ADDR)と移動後のIPアドレス(MOVED-ADDR)が記 載され,通信開始時に共有しておいた認証鍵による署名が付加される.

CU Requestを受信したCNは認証処理を終えた後,MNIPアドレスが“G2”となる ように自身のCITを式(2)に示すように更新し,MNCU Responseを応答する.

M N/CN: {G1 :sG2 :s} ↔G5 :d (2) MNCU Response受信時にCNと同様にCITを更新し,移動通知処理を完了する.以 後,IP層において更新したCITに基づいてTCP/UDPパケットに対してアドレス変換が 行われる.

MNは上位層から渡されたパケットの送信元IPアドレスを,移動前の“G1”から移動後 “G2”へ変換してCNへ送信する.CNでは受信したパケットの送信元IPアドレスを,

MNの移動後の“G2”から移動前の“G1”へ変換して上位層へ渡す.以上の処理により,上 位層からIPアドレスの変化を隠蔽し,かつ正しくルーチングが行われ,通信を継続するこ とができる.

2.3 提 案 方 式

MNCNの通信経路上にNATが介在すると,MNが認識・通知する自身のプライベー IPアドレスと,CNが認識するMNIPアドレス(すなわちNATのグローバルIP ドレス)が一致しない.その結果,通常のMobile PPCによる移動通知ではCITを正しく 更新できず,通信を継続することができない.

上記課題を解決するためには,MNCNが認識するMN側トランスポートアドレス,

すなわちNATのグローバルIPアドレスとマッピングされたポート番号を知ればよい.そ こで,Mobile PPCHole punchingの原理を導入する.Hole punchingNAT越え手 法として知られており,Mobile PPCではBindingメッセージを新たに定義してこれを実 現する.

⋆1実際にはTCP/UDPプロトコル別に生成されるが,本稿ではプロトコルに関する記載を省略する.

3 移動パターン2の場合の通信シーケンス

Fig. 3 Communication sequence in the case of mobility pattern 2.

2.3.1 移動パターン2の場合

3MNがグローバルネットワークからプライベートネットワークへ移動する場合の 通信シーケンスを示す.通信開始時は通信経路上にNATが存在しないため,通常のMobile PPCと同様の処理を行う.

MNがプライベートネットワークへ移動して,新しいIPアドレス“P1”を取得すると,

CNとの間で通常の移動通知処理を実行する.CNに送信するCU Requestには,PREV- ADDR “G1”MOVED-ADDR “P1”が記載される.CNCU Requestにより通知さ れたMOVED-ADDRと,メッセージ送信元IPアドレス(NAT1のグローバルIPアドレ “G3”)の不一致を検出すると,通信経路上にNATが存在すると判断して,CITの更新 を行わず,MNに状態フラグNG_NAT_EXISTを設定したCU Responseを応答する.

MNは上記フラグが設定されたCU Responseを受信したら,CNに対してBinding Re- questを送信する.Binding Requestは,移動後のMNが実際に送信するTCP/UDP ケットと同じIPヘッダとトランスポートヘッダ,およびMobile PPCヘッダから構成され ⋆2.図3の場合,送信元が“P1 :s”,宛先が“G5 :d”となる.

NATBinding Requestを転送する際,通常のNATの原理により送信元トランスポー

⋆2 TCP通信をしていた場合はTCPヘッダ,UDP通信をしていた場合はUDPヘッダとなる.Mobile PPC ヘッダはBindingメッセージか否かを判断するために記載される.詳細は3.2節を参照のこと.

3 c 2009 Information Processing Society of Japan

(4)

情報処理学会研究報告 IPSJ SIG Technical Report

トアドレスを“P1 :s”から“G3 :m”に変換し,式(3)に示すようにマッピング情報を生 成する.

N AT1 : {P1 :sG3 :m} ↔G5 :d (3) CNは受信したBinding Requestの送信元トランスポートアドレス“G3 :m”を取得し,

Binding Responseのメッセージ部にMAPPED-ADDRとして記載して応答する.MN 取得したMAPPED-ADDRMOVED-ADDRとして,再び移動通知処理を実行する.2 回目のCU Request/Responseには,フラグNAT_ON_PATHが設定される.これにより,MN CNNATのアドレス変換を考慮して,正しくCITを更新することができる.

M N: {G1 :sP1 :s} ↔G5 :d (4) CN: {G1 :sG3 :m} ↔G5 :d (5) 2.3.2 移動パターン3の場合

4MNがプライベートネットワークからグローバルネットワークへ移動する場合の 通信シーケンスを示す.この場合,通信開始時の通信経路上にNATが存在するため,移動 パターン2の移動通知処理と同様の仕組みにより,認証鍵共有処理の途中でBinding処理 を行う.

NAT1ではBinding Requestを転送する際,式(3)と同じマッピング情報が生成される.

これにより,MNは予めCNが認識するMN側トランスポートアドレス“G3 :m”,すな わちMAPPED-ADDRを知ることができる.

MNがグローバルネットワークへ移動して,新しいIPアドレス“G4”を取得すると,

CNとの間で移動通知処理を実行する.ここで,CU Requestに記載するPREV-ADDR MAPPED-ADDR “G3 : m”とし,またフラグNAT_OFF_PATHを設定する.これにより,

MNCNNATのアドレス変換がなくなったことを考慮して,正しくCITを更新する ことができる.

M N: {P1 :sG4 :s} ↔G5 :d (6) CN: {G3 :mG4 :s} ↔G5 :d (7) 2.3.3 移動パターン4の場合

プライベートネットワークから異なるプライベートネットワークに移動する場合は,移 動前と移動後の両通信経路上にNATが存在することになる.この場合,図4の移動前処 理と,図3の移動後処理を組み合わせる.従って,移動前と移動後に行うBinding処理に より取得した2つのMAPPED-ADDRを,それぞれPREV-ADDRMAPPED-ADDR に設定することにより対応することができる.

4 移動パターン3の場合の通信シーケンス

Fig. 4 Communication sequence in the case of mobility pattern 3.

3.

3.1 モジュール構成と処理フロー

5と図6Mobile PPCのモジュール構成と,移動前後のシーケンスとの対応関係を 示す.Mobile PPCIP層に実装されるカーネルモジュールと,ユーザランドで動作する デーモン(mppcd)から構成される.

カーネルモジュールは,CIT制御部,認証鍵管理部,移動管理部,および今回新たに実 装したBinding制御部がある.Binding制御部はBindingメッセージの生成および送受信 処理を担い,取得したMAPPED-ADDRを認証鍵管理部および移動管理部へ渡す.

アプリケーションが通信を開始すると,TCP/UDPパケットがまず認証鍵管理部へ渡され る.ここで,認証鍵を管理するテーブルNITNode Information Table)を確認し,対応 する通信相手の認証鍵を検索する.認証鍵がない場合は,処理中のTCP/UDPパケットを 待避してから認証鍵共有ネゴシエーションを開始する.ここで,受信したCookie Response に状態フラグNG_NAT_EXISTが設定されていたら,Binding制御部の処理を割り込ませる.

認証鍵共有ネゴシエーションの1往復目を終えると,待避していたTCP/UDPパケット を戻してCITを生成後,通信を開始する.その後,認証鍵管理部はMPPCソケット⋆1

⋆1ユーザランドとカーネルモジュール間のデータ受渡しを実現するために実装したソケットインタフェース.

4 c 2009 Information Processing Society of Japan

(5)

情報処理学会研究報告 IPSJ SIG Technical Report

5 モジュールと通信シーケンスの関係(通信開始持)

Fig. 5 Diagram relating module to sequence (When MN starts communication).

6 モジュールと通信シーケンスの関係(移動後)

Fig. 6 Diagram relating module to sequence (After MN moves).

通じて,デーモンmppcd2往復目のDH鍵交換を実行させる.この仕組みにより,DH 鍵交換および認証鍵生成処理を実際のTCP/UDP通信のバックエンドで動作させることが でき,通信開始時のオーバヘッドを削減することができる.

またmppcdは移動を検知すると,移動管理部に移動通知処理を行うよう指示する.移動管

理部は認証鍵管理部と同様に,受信したCU Responseに状態フラグNG_NAT_EXISTが設定 されていたら,Binding制御部の処理を割り込ませる.CITの更新後,TCP/UDPパケッ トはCIT制御部においてアドレス・ポート変換されて,上位層または下位層へ渡される.

3.2 メッセージフォーマット

7Mobile PPCメッセージフォーマットを示す.Mobile PPCメッセージはICMP Echo/Echo Replyをベースとしており,ICMPヘッダ以降にMobile PPCヘッダ(図7(a) が続く構造になっている.

本提案方式では新たにNode IDと呼ぶ16 Octetsのフィールドを追加する.Node ID とは各ノードを一意に特定するためのIDであり,複雑なIPアドレスの変化が発生して も,どのノードからのメッセージであるかを容易に識別することができる.この値はUUID

Universally Unique Identifier10)を利用し,ノードのFQDNからハッシュ関数により生 成する.

Mobile PPCDDNSDynamic DNS11)を利用して通信相手の初期IPアドレスを解 決する.従って,Mobile PPCを利用する全ノードは必ずFQDNを有しており,Node ID の生成に当たり,新たな設定をノードに施す必要はない.

7 Mobile PPCメッセージフォーマット Fig. 7 Mobile PPC message formats.

この他に,CUメッセージにおけるPREV-ADDRMOVED-ADDRの拡張を行った.

従来のMobile PPCでは移動前後のIPアドレスだけを通知すればよかったが,提案方式で IPアドレスに加えてポート番号を通知する必要がある.そこで,新たにトランスポート アドレス構造体(図7(b))を定義した.これは各ノードが通信に利用するトランスポート アドレス(IPアドレスとポート番号の組)を1つのデータセットとし,PREV-ADDR MOVED-ADDR(図7(d))の他,Connection ID(図7(c))などで利用する.

Bindingメッセージは図7(e)のように,TCP/UDPヘッダ以降にMobile PPCヘッダが 続く.Original AddressフィールドにはBinding Requestの送信元トランスポートアドレス が,Mapped AddressフィールドにはNATにおいてマッピングされたMAPPED-ADDR が記載される.

3.3 Binding Message Listの定義

Binding処理の導入に当たり,新たにBMLBinding Message List)を定義する.図8 BMLの構造を示す.BMLBindingメッセージの情報の格納,およびトリガとなった メッセージの待避を主な目的としている.また,BMLの作成と同時にBindingメッセージ の監視を開始し,BMLの削除と同時に監視を終了する.BMLは連結リスト構造とし,通 信相手毎にBMLが生成され,さらに確立しているセッション数分のサブ連結リスト構造を とる.

例えばMNCN2つのセッションを確立していた場合,移動時に送信するCU Request 1つでよく,そのメッセージに2セッション分の情報を格納している(図7(d)参照).こ のようにCUは送信すべき情報を集約しているが,Binding処理は各セッションごとに実行 するため集約することができない.

5 c 2009 Information Processing Society of Japan

(6)

情報処理学会研究報告 IPSJ SIG Technical Report

8 BML構造

Fig. 8 Structure of Binding Message List.

そこで,各ノードはCUに集約されているセッションの情報の数をBinding Countとして 設定し,通信相手からBindingメッセージを受信する度に値をデクリメントしていく.この 値が0になったら,CNではBMLを削除してBindingメッセージの監視を終了する.MN では受信したBinding Responseに記載されている2つのトランスポートアドレスを,BML のサブ連結リストに記録する.Binding Count0でない場合は,他のBindingメッセー ジを受信するはずであるため,監視を継続する.Binding Count0になると,記録した トランスポートアドレスを認証鍵管理部または移動管理部へ渡してから,BMLを削除する.

4. 動作確認結果と残された課題

4.1 動 作 確 認

今回はFreeBSD 7.0-RELEASEに対して,Binding制御部の実装および移動管理部の改 良を行った.上記機能を実装したMNCNNAT外部のネットワークにおいて,UDP による通信を開始した後,MNNAT配下のネットワークへ移動する場合の動作確認を 行った.この結果,正しく動作していることを確認し,グローバルネットワークからプライ ベートネットワークへ移動しても通信を継続することができた.

4.2 残された課題

( 1 ) プライベートネットワークからグローバルネットワークへの移動

認証鍵共有ネゴシエーション時に行うBinding処理によりMAPPED-ADDRを取得する が,このトランスポートアドレスを移動通知処理を行うまで保持する必要がある.そこで,

移動前に取得したMAPPED-ADDRESSNITエントリに保存しておく.MNは移動する までに複数のCNと複数のMAPPED-ADDRを取得する可能性があるため,NITBML のようなサブ連結リスト構造を追加するような拡張を行う必要がある.

( 2 ) TCPによるBinding処理とファイアウォールの影響

NAT越えを検討する際,ファイアウォールの存在を無視することができない.近年,多く NATルータにはSPIStateful Packet Inspection)機能が実装されており,Outbound パケットとInboundパケットの整合性を検査する.正当な手順のTCP/UDPセッション と判断できない場合は,パケットは破棄される.特にTCP通信では,ヘッダのSYN ラグやACKフラグのハンドシェイク状態を記憶するため,Bindingシーケンスを3-way handshakeとなるような1.5往復のシーケンスにする必要があると考えられる.

( 3 ) Keep-Alive

Binding処理によって生成されたNATマッピング情報は,一定時間の無通信状態が経過す ると削除されてしまう.TCPセッションの場合は一度コネクションが確立されると長時間 マッピングが維持されるが,UDPの場合は比較的短時間しかマッピングが維持されない⋆1 そのため,MNCNに対してUDP通信をしている場合,Keep-Aliveを定期的に行う必 要がある.

5. ま と

本稿ではHole punchingの原理をBinding処理として,その一部機能をMobile PPC 実装した.その結果,MNはグローバルネットワークからプライベートネットワークへ移動 しても通信を継続できることを確認した.

今後は,残された課題に示した実装を完了させ,通信断絶時間に与える影響やKeep-Alive による負荷の評価などを行う.これまでに,通信相手がプライベートネットワークにいる場 合においても,外部からの着信を可能とし,かつ移動透過性を実現できる方式を文献12) て提案している.この方式はNATに機能を追加しているため,今回のようにMNが不特 定なプライベートネットワークへ移動するケースには対応できない.Binding機能を有効に 活用して,外部からの着信を受けることが可能な方式を別途検討する予定である.

謝辞 本研究の一部は,日本学術振興会科学研究費補助金(特別研究員奨励費201069 の助成を受けたものである.

⋆1例 え ば ,FreeBSD NAT の 場 合 ,TCP 24 時 間 ,UDP 60 秒 で マッピ ン グ が 破 棄 さ れ る .

(http://fxr.watson.org/fxr/source/netinet/libalias/alias db.c?v=FREEBSD70;im=bigexcerpts)

CISCO NATの場合,TCP24時間,UDP5分である.(http://www.cisco.com/en/US/tech/tk648/

tk361/technologies q and a item09186a00800e523b.shtml#qa45)

6 c 2009 Information Processing Society of Japan

(7)

情報処理学会研究報告 IPSJ SIG Technical Report

参 考

1) 寺岡文男:インターネットにおけるノード移動透過性プロトコル,電子情報通信学会 論文誌(D-I)Vol.J87-D1, No.3, pp.308–328 (2004).

2) Perkins, C.: IP Mobility Support for IPv4, RFC 3220, IETF (2002).

3) Levkowetz, H. and Vaarala, S.: Mobile IP Traversal of Network Address Transla- tion (NAT) Devices, RFC 3519, IETF (2003).

4) Montenegro, G.: Reverse Tunneling for Mobile IP, revised, RFC 3024, IETF (2001).

5) 井戸上彰,久保 健,横田英俊:プライベートアドレスを使用するモバイルネットワー ク間のローミング手順とその実装,情報処理学会論文誌,Vol.44, No.12, pp.2958–2967 (2003).

6) 竹内元規,鈴木秀和,渡邊 晃:エンドエンドで移動透過性を実現するMobile PPC の提案と実装,情報処理学会論文誌,Vol.47, No.12, pp.3244–3257 (2006).

7) 鈴木秀和,渡邊 晃:Hole Punchingを用いたNAT越えMobile PPCの設計,情報 処理学会研究報告,2008-MBL-45, Vol.2008, No.44, pp.69–74 (2008).

8) Ford, B., Srisuresh, P. and Kegel, D.: Peer-to-Peer Communication Across Net- work Address Translators,Proc. USENIX Annual Technical Conference, Anaheim, CA, pp.179–192 (2005).

9) 瀬下正樹,渡邊 晃:Mobile PPCにおける認証方式の実装,DICOMO2006シンポ ジウム論文集,Vol.2006, No.6, pp.809–812 (2006).

10) Leach, P., Mealling, M. and Salz, R.: A Universally Unique IDentifier (UUID) URN Namespace, RFC 4122, IETF (2005).

11) Vixie, P., Thomson, S., Rekhter, Y. and Bound, J.: Dynamic Updates in the Do- main Name System (DNS UPDATE), RFC 2136, IETF (1997).

12) 鈴木秀和,渡邊 晃:プライベートネットワーク内のノードを通信相手とした移動透 過性の実現方式,電子情報通信学会論文誌(B)Vol.J92-B, No.1, pp.109–121 (2009).

7 c 2009 Information Processing Society of Japan

(8)

Hole Punching を用いた NAT 越え Mobile PPC の実装

鈴木 秀和†‡ 寺澤 圭史 渡邊 晃

名城大学大学院理工学研究科

日本学術振興会特別研究員PD

5/8 49MBL研究発表会 MBL-2 (18)

(9)

Agenda

1. IPv4

ネットワークにおける移動透過性

既存の

NAT Traversal

手法(

Mobile IP

2.

提案方式

– Mobile PPC

3.

実装と動作検証

4.

今後の課題

2 Implementation of NAT Traversal for Mobile PPC Applying Hole Punching

(10)

研究背景

移動透過性

ノードのIPアドレスの変化をアプリケーションや ユーザから隠蔽すること

IPアドレスが変化しても通信継続が可能

IP

アドレスの変化が発生する状況

① 基地局の切り替え(ルータをまたぐ場合)

② 無線デバイスの切り替え

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 3

L2 HO L3 HO L2 HO Router

AP

Wi-Fi WiMAX

(11)

なぜ IPv4 がターゲットなのか?

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 4

まず

– IPv6

が早く普及してくれたほうが

Happy 

しかし

接続先ネットワークが

IPv6

とは限らない

IPv4しか対応していないネットワークはたくさんある

IPv6

IPv4

との相互接続性がない

相手がIPv6非対応ノードIPv4通信

“ユビキタス”なモビリティを実現するためには

IPv4

環境における移動透過性技術の実現も重要

(12)

IPv4 環境におけるモビリティ問題

MN

に割り当てるグローバルアドレスが不足

– NAT

を利用してプライベート

IP

アドレスを利用

コネクティビティの維持が困難

– CN

MN

に対して直接のリーチャビリティがない

– NAT

によるアドレス変換により,コネクション識別

情報が非対称

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 5

CN NAT MN

Private Network Src:CN

Dst:NAT

Src:MN Dst:CN

Mapping

MN : Mobile Node

CN : Correspondent Node NAT : Network Address

Translator

(13)

Mobile IP における NAT 対策

UDP

トンネルによる

NAT

越え(

RFC3519

– MN

HA

UDP

トンネルを構築し,トラヒックを誘導

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 6

HA NAT MN

Private Network Src:CN

Dst:HoA

CN

Registration Request with UDP Tunnel Request

Src:HA

Dst:NAT Src:HA

Dst:CoA TunnelUDP

カプセル化処理に 起因するオーバ ヘッドのため,

伝送効率が低下

IP Hdr UDP Hdr MIP Tun Hdr

IP Hdr

IP Pld Original

HA : Home Agent HoA : Home Address CoA : Care-of Address

(14)

Mobile PPC

(Mobile Peer-to-Peer Communication)

MN

は直接

CN

に移動通知

両ノードは

IP

層にアドレス変換テーブルを生成

– CIT (Connection ID Table)

アドレス変換処理により,アドレスの変化を隠蔽

送信時:Old IPアドレスNew IPアドレス受信時:New IPアドレスOld IPアドレス

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 7 IP Layer

MN CN

CIT Upper Layer

Lower Layer

Old IP Address

New IP Address

CIT

Translation Translation

(15)

提案方式

Hole Punching

の原理を利用

– NAT Traversal

技術

– NAT

の内側から外側にパケットを投げて “穴” を開ける

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 8 Rendezvous Server

NAT NAT

CN MN

Mapping Mapping

MAPPED-ADDR

MAPPED-ADDR

NATIP+ポート番号)

MAPPED-ADDR Binding Message

(16)

Binding メッセージの割り込み

Global to Private

1

回目の

CU

CIT Update

従来通り

移動前=G1,移動後=P1 CNはアドレスの不一致を検出

Binding処理をMNに要求

Binding Req./Res.

MAPPED-ADDR=G3:m

2

回目の

CU

Binding結果を反映

移動前=G1:s,移動後=G3:m

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 9 NAT

CN MN

DHKCKY

G1:s G2:d

G2:d

P1:s G3:m

P1:s G2:d

(1st)CU

G3:m (2nd)CU

移動

IP:G1 IP:G2

IP:G3 IP:G1

P1

Binding

CKY: Cookie DHK: DH Key

(17)

パケットのアドレス変化の遷移

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 10

G1G2 sd Data

P1G2 sd Data

G3G2 md

Data

G1G2 sd Data

MN NAT CN

IP

上位層 下位層 下位層 IP 上位層

IP Hdr L4 Hdr

MNの移動に伴う変化

NATの処理に伴う変化 上位層からいずれも隠蔽しており,

通信の継続が可能

CIT NAT CIT

Mapping

CN

から

MN

への応答

上記と逆(宛先トランスポートアドレス)の変換を実行

(18)

実装

FreeBSD 7.0-RELEASE

のカーネルに実装

– Binding制御部を従来のカーネルモジュールに追加

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 11 Req : Request Res : Response

NIT : Node Information Table

(19)

制御メッセージフォーマットの拡張

ノード

ID

の追加

アドレスの変化に影響されずノードを一意に識別

UUID

Universally Unique Identifierを利用

ノードのFQDNからハッシュ関数により生成

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 12 MN

FQDN: alice.example.com

Mobile PPC Message ID

Type Code Flags State

0 8 16 24 31

Type:

REQUEST 1 RESPONSE 2

Code:

COOKIE 1 DH KEY 2

CU 3

BINDING 4

Flags:

NAT-ON-PATH 0x01 NAT-OFF-PATH 0x02 KEEP-ALIVE 0x04

(a) Mobile PPC Header Node ID

State:

OK 1 NG_AUTH 4

NG_COOKIE 2 NG_NAT_EXIST 5 NG_NO_AK 3

Node ID:

550e8400-e29b-41d4-a716-446655440000

16バイトの数値.重複や偶然の一致が

起こりえないと確認して用いることが可能.

RFC4122

(20)

Binding Message List

BML

を新たに定義

– Binding

メッセージ情報の格納,トリガパケットの待避

BML作成Bindingメッセージの監視を開始

CU Responseに記載されたCIDの数をBinding Countとして設定

BML削除監視を終了

Binding Responseの受信ごとにBinding Countをデクリメント

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 13 IDcn

P2:s1 2

List Head

NULL

NULL Node

ID Binding

Count Hold

Packet Chain mbuf

Original

Address Mapped

Address Chain

G3:m1 P2:s2

Original

Address Mapped

Address Chain G3:m2

HeadBML Cookie Response

CU Response

BML: Binding Message List

List generated by each node

List generated by each session

= The number of session

(21)

動作確認

Global to Private

の移動パターンを確認

 UDP

通信の継続を確認

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 14 CN

NAT

MN

MN 移動

UDP

TCP通信は

NATにファイアウォールが 動作していない場合のみ,

動作を確認

(22)

残された課題

TCP

による

Binding

処理と

Fire Wall

の影響

多くのNATルータはSPIStateful Packet Inspection

機能を実装

OutboundパケットとInboundパケットの整合性を検査

正当な手順のTCPセッションと判断できない場合は,破棄

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 15

MN NAT CN

SYN [Out]

SYN/ACK [in]

ACK [Out]

3-way handshake

Bindingメッセージを 1.5往復にする必要あり?

(23)

まとめ

IPv4

環境における移動透過性の実現

– NAT Traversal

問題を解決する必要がある

Hole Punchingによりカプセル化なしで対応可能

 提案方式を実装

簡易的な動作確認を実施

異なるアドレス空間をまたがった移動が可能

 今後の課題

実装を完了

評価

通信相手がプライベートネットワークにいる場合

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 16

(24)

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 17

付録

(25)

Private to Global

Cookie

交換

データ部=P1IPヘッダ=G3 CNはアドレスの不一致を検出

Binding処理をMNに要求

Binding Req./Res.

MAPPED-ADDR=G3:m

CU Request

Binding結果を反映

移動前=G3:m,移動後=G1:s

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 18

NAT CN

MN

DHK

G1:s G2:d

G2:d

P1:s G3:m

P1:s G2:d

G3:m

移動

IP:P1 IP:G3 IP:G2

IP:P1

G1 Binding

CU CKY

(26)

制御メッセージフォーマットの拡張 (2)

 トランスポートアドレス構造体を定義

– IP

アドレス,ポート番号,プロトコルを一括管理

コネクション識別子やCUメッセージにも反映

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 19

Mobile PPC Message Header (a)

0 8 16 24 31

Previous Address (b) Moved Address (b)

CID Set Count MAC Length Old Connection ID (c)

...

Message Authentication Code IP Address

Protocol

0 8 16 24 31

Port Number

(b) Transport Address

(d) CU Message

(e) Binding Message Reserved

Source Transport Address (b)

0 8 16 24 31

(c) Connection ID Destination Transport Address (b)

Mobile PPC Message Header (a)

0 8 16 24 31

IP Header

TCP/UDP Header

Original Address (b) Mapped Address (b)

(27)

CN がプライベート NW にいる場合 (1)

NAT-f (NAT-free protocol)

を併用

通信開始時に

NAT

外側からダイナミックにマッピング 生成

Implementation of NAT Traversal for Mobile PPC Applying Hole Punching 20

Internet Home

NW2 NW1

移動

Mobile PPCによる NAT-fによるマッピング 移動通知

Mobile PPCによる認証鍵共有

* 鈴木,渡邊:信学論(B)Vol.J92-B, No.1, pp.109—121, Jan. 2009.

図 3 移動パターン 2 の場合の通信シーケンス
図 4 移動パターン 3 の場合の通信シーケンス
図 5 モジュールと通信シーケンスの関係(通信開始持)
図 8 BML 構造

参照

関連したドキュメント

When we have a non-homogeneous container, and we want to apply different operations (depending on the concrete type of the element) then Visitor design pattern is appropriate to

We study a refinement of the depth of the external node of rank s, with 0 ≤ s ≤ 2n, where the external nodes are ranked/enumerated from left to right according to an

据付確認 ※1 装置の据付位置を確認する。 実施計画のとおりである こと。. 性能 性能校正

「JSME S NC-1 発電用原子力設備規格 設計・建設規格」 (以下, 「設計・建設規格」とい う。

・底部にベントナイトシート,遮水シート ※1 を敷設し,その上に遮水 シート ※1

従って,今後設計する機器等については,JSME 規格に限定するものではなく,日本産業 規格(JIS)等の国内外の民間規格に適合した工業用品の採用,或いは American

確認事項 確認項目 確認内容

施設設備の改善や大会議室の利用方法の改善を実施した。また、障がい者への配慮など研修を通じ て実践適用に努めてきた。 「