NAT-f を利用した SIP の NAT 越え通信の検討 三浦 健吉*,鈴木 秀和,渡邊 晃(名城大学)
Researches on the NAT traversal technology utilizing NAT-f Kenkichi Miura, Hidekazu Suzuki, Akira Watanabe (Meijo University)
1.はじめに
いつでもどこからでもネットワークにアクセスできるユ ビキタスネットワークの需要が広まっている.しかし,家 庭内のネットワークはプライベートアドレスで構築される 場合が多く,インターネット側の端末からプライベートア ドレスの端末に通信を開始できないという NAT 越え問題 がある.
我々は,グローバルアドレスの端末と NAT ルータが連携 することにより,NAT 越え問題を解決する NAT-f(NAT-free protocol)を提案している.しかし,NAT-f は SIP(Session Initiation Protocol)に対応できないという問題があった.
そこで NAT-f による SIP の NAT 越えについて検討した.
2.NAT-f とその課題
Fig1 に NAT-f の概要を示す.外部ノードを EN ,内部ノー ドを IN と略する. IN はプライベートアドレス空間に存在 する. EN 及び NAT-f ルータには NAT-f 機能が実装されてお り, IN 及び DDNS サーバは既存のものを使用する. ただし,
DDNS サーバには予め設定が必要である.
EN は IN へ通信を開始する際, IN の FQDN に対する名前 解決を DDNS サーバに依頼する.ここでは, IN の FQDN を bob.home.example.net とする. EN は DNS 応答パケットをカ ーネルでフッキングし,取得した NAT-f ルータの IP アドレ ス G2 を仮想アドレス V1 に書き換える.この処理により,
EN は通信相手の IP アドレスを V1 として認識する.
EN は宛先 IP アドレスが V1 である最初の TCP/UDP パケ ットを送信する際に,一時的にこのパケットをカーネル内 に退避させ, NAT-f ルータとの間で NAT-f ネゴシエーション を実行する. NAT-f ルータはこれにより EN-IN 間の通信に 必要な NAT テーブルを生成する.ここで, NAT-f ルータは,
自身のグローバルアドレス G1 と外側にマッピングされた ポート番号を EN に返信する. EN は以後,送信するパケッ トの宛先 IP アドレスを G1 へ,宛先ポート番号をマッピン
グされたポートに書き換える.逆方向も同様のアドレス変 換を行う.以上の動作により NAT 外部からの通信開始が可 能となる.
ここで,SIP においては TCP/UDP パケットの IP ペイロ ード部分に IP アドレスの情報が記載されている.そのため,
NAT-f のようにネットワーク層でのアドレス変換だけでは
対応できないという課題がある.そこで次章で NAT-f を改 造することにより SIPの NAT 越えを実現する方法について 検討した.
3.提案方式
提案方式のシーケンスを Fig2 に示す.EN, NAT-f ルータ 及び SIP プロキシ B には NAT-f 機能が実装されている.
IN から送信された REGISTER メッセージを受信した SIP プロキシ B は, IP アドレスを P1 から仮想アドレス V1 へ書 き換えて登録する. EN から INVITE を受け付けると SIP プ ロキシ B は NAT-f ルータとの間で NAT-f ネゴシエーション を実行し INVITE を IN まで送り届ける.
IN から返信された 200 OK メッセージは SIP プロキシ B においてトランスポートアドレスを P1 から G2 に書き換え る.200 OK を受け取った EN は同様にアドレスを G2 から V2 へ書き換える.
EN は SIP 完了後, IN との間でデータ転送を行う.この ときの NAT 越えの手段は従来の NAT-f による方法と全く同 様である.
4.むすび
NAT-f による SIP の NAT 越えについて検討を行った.今後 は,実装と動作検証を行う.
文 献
(1) 鈴木秀和他:情処学論,Vol.48,No.12,pp.3949-3961,Dec.2007 Fig.2. Sequence of the proposal method
Fig.1. NAT-f Mapping Negotiation
IP: G2 URI: UG1
IP: G1
INVITE: UG1, G1
INVITE
G2→V2
Media Session P1→G2
INVITE 200 OK: P1 200 OK
REGISTER: UP1, P1
200 OK
ACK ACK
ACK NAT-f Mapping Negotiation
URI: UP1, IP: P1
NAT-f Mapping Negotiation
SIP Proxy A SIP Proxy B NAT-f Router IN EN
P1→V1
NAT-f NAT-f NAT-f
NAT-f Router IN EN
DDNS Server
DNS Query DNS Responese
NAT-f Mapping Negotiation TCP/UDP Communication Domain: example.net
IP: G2 IP: G2, PHN: bob
*.home IN A G2 RR
NAT-f NAT-f
NAT-f
を利用したSIP
のNAT
越え通信の検討名城大学 理工学部 三浦健吉,鈴木秀和,渡邊晃
NAT-fを利用したSIPのNAT越え通信の検討 2
はじめに
IPv4
アドレス枯渇問題近年,インターネットの発展に伴い,
IPv4
グローバルIP
アド レスが不足してきた NAT
1
個のグローバルIP
アドレスを複数のホストで共有する技術⇒ グローバル
IP
アドレスの枯渇を遅らせる効果がある NAT
越え問題NAT
外側の端末から内側の端末に対して通信を開始できな いNAT: Network Address Transration
*: 本稿ではNAPTまたはIPマスカレードを含めてNATと呼ぶ
NAT-fを利用したSIPのNAT越え通信の検討 3
NAT-f*(NAT-free protocol)
について NAT-f
とはNAT
越え問題を解決する技術 NAT-f
の課題SIP
を使用するアプリケーションのNAT
越えに対応できない→
NAT-f
はネットワーク層のプロトコルだが,SIP
はアプリケー ション層にIP
アドレスの情報を含むことが原因→
NAT-f
を利用したSIP
のNAT
越えについて検討した* 情報処理学会論文誌,Vol.48,No.12,pp.3949-3961,Dec.2007
NAT-fを利用したSIPのNAT越え通信の検討 4
NAT-f
動作概要EN(External Node): 外部ノード IN(Internal Node): 内部ノード
DDNS Server NAT-f IN router
HostName: bob EN
TCP/UDP通信 TCP/UDP通信
bobに関する NATテーブル
を生成
マップされたポートに向けて 送信
取得したIPアドレスを 仮想アドレスへ書き換える
(=通信相手のIPアドレスを 仮想アドレスとして認識する)
宛先IPアドレスが仮想 アドレスである最初のパケッ
トをトリガにして実行
ドメイン
IPアドレス
DNS名前解決
bobと通信したい マップされたポート
NAT-fネゴシエーション
INのホスト名とNAT-f ルータのIPアドレス の関係が登録されて
いる
INのホスト名とプライ ベートIPアドレスの関 係が登録されている
NAT-fを利用したSIPのNAT越え通信の検討 5
SIP
の基本シーケンスSIP Server A SIP Server B IN
IP: IPEN URI: URIEN
EN
IP: IPIN URI: URIIN
INVITE: URI EN , URI IN , IP EN :t
200 OK: URI IN , URI EN , IP IN :u REGISTER: URI IN , IP IN :s
URI IN , IP IN :s
登録
ACK: URI EN , URI IN
ロケーション
メディアセッション
dst: IP IN :u dst: IP EN :t
dst: IP IN : s
転送先の情報を取得
NAT-fを利用したSIPのNAT越え通信の検討 6
NAT-f
によるSIP
のNAT
越え通信 NAT-f
を動作させるには通信相手のIP
アドレスを仮 想アドレスとして認識させる必要がある⇒
SIP
メッセージに記載されたIP
アドレスを直接仮想 アドレスへ書きかえることを検討NAT-fを利用したSIPのNAT越え通信の検討 7
提案方式
1/5 :
環境・事前設定 NAT-f
対応端末: EN
,SIP Server B
,NAT-f router
ACT: IN
のSIP URI
とプライベートIP
アドレスを登録しておくACT(Access Controll Table):
アクセス制御テーブルNAT-fを利用したSIPのNAT越え通信の検討 8
提案方式
2/5 : REGISTER
SIP Server B
のロケーションDB
には仮想アドレスが登録さ れるNRT(Name Relation Table):
名前関連テーブルSIP Server A NAT-f IN
router
REGISTER: URI IN , IP IN :s
SIP Server BURI: URIEN HN: bob
URI: URIIN
ロケーション
IP IN
→V1
NRT V1 ,IP
NAT
, URIIN
EN登録
URI
IN
, V1:s生成 NAT-f
NAT-f NAT-f
NAT-fを利用したSIPのNAT越え通信の検討 9
提案方式
3/5 : INVITE
SIP Server B – IN
間のNAT
越えSIP Server A NAT-f IN
router SIP Server B
URI: URIEN HN: bob
URI: URIIN
EN
INVITE: URI EN ,URI IN , IP EN :t
ロケーションURI
IN
, V1:sNRT
m
URI IN , s
NATテーブル
IP NAT :m
⇔IP IN :s
ACT bob, URIIN
, IPIN
V1 ,
IP NAT
, URIIN
VAT
V1:s ⇔ IP NAT
:mdst: IP NAT :m dst: IP IN :s
転送先の情報を取得
dst: V1:s
URIによりINのプライベ ートIPアドレスを取得
VATに従いアドレス変換 V1によりマッピングに必要な情報を取得
NAT-fネゴシエーション NAT-f
NAT-f NAT-f
トリガパケット
生成
生成
NAT-fを利用したSIPのNAT越え通信の検討 10
提案方式
4/5 : 200 OK, ACK
EN
がNAT-f
ネゴシエーションを行うにはNAT
ルータのIP
アドレスが必要SIP Server A NAT-f IN
router SIP Server B
URI: URIEN HN: bob
URI: URIIN
EN
200 OK: URI EN ,URI IN, IP IN :t IP IN
→IP NAT
IP NAT
→V2
NRT V2 ,IP
NAT
, URIIN
生成
ACK: URI EN ,URI IN
dst: IP NAT :m dst: IP IN :s
VATV1:s ⇔ IP NAT
:mVATに従って アドレス変換 NAT-f
NAT-f NAT-f
NAT-fを利用したSIPのNAT越え通信の検討 11
提案方式
5/5 :
メディアセッションの確立 EN – IN
間のNAT
越えSIP Server A NAT-f IN
router SIP Server B
URI: URIEN HN: bob
URI: URIIN
EN
n
URI IN , t
VAT
V2:t ⇔ IP NAT
:n NRT V2 ,IP NAT
, URIIN
IP NAT :m
⇔IP IN :s IP NAT :n
⇔IP IN :t dst: V1:t
dst: IP IN :t dst: IP EN :t
メディアセッション確立
ACT bob, URI
IN
, IPIN
NATテーブル
参照 参照
NAT-fネゴシ エーション
VATに従って
アドレス変換
dst: IP NAT
:nNAT-f
NAT-f NAT-f
トリガパケット
生成
NAT-fを利用したSIPのNAT越え通信の検討 12
むすび
NAT-f
を利用したSIP
のNAT
越え通信について検討 した.
今後は,実装と評価を行う。NAT-fを利用したSIPのNAT越え通信の検討 13
補足資料など
NAT-fを利用したSIPのNAT越え通信の検討 14
提案方式の環境
SIP Server A SIP Server B IN
EN NAT-f
router
URI: URI
ENHN: bob URI: URI
INNAT-f NAT-f NAT-f
NAT-fを利用したSIPのNAT越え通信の検討 15
NAT-f
動作概要 3
フェーズから構成IN DDNS Server
NAT-f router
HN: bob IP: IP
INEN
DNS名前解決
NAT-fネゴシエーション
TCP/UDP通信 TCP/UDP通信
bobと
通信したい bobに関する
NATテーブル を生成
マップされたポート に向けて送信
IP: IP
NATIP: IP
ENNAT-fを利用したSIPのNAT越え通信の検討 16
NAT-f
の動作(
詳細) 1/2
DNS
応答パケットに含まれるIP
アドレスをIP NAT
からV1
へ書き 換える→アプリケーションは通信相手の
IP
アドレスをV1
として認識IN DDNS Server
IP NAT
V1
NAT-f router
仮想アドレスへ書き換え DNS名前解決
NRT
HN: bob bob.home.example.net
Application Kernel
EN
保存
V1, IP NAT , bob
NRT: Name Relation Table;
名前関連テーブルNAT-fを利用したSIPのNAT越え通信の検討 17
NAT-f
の動作(
詳細) 2/2
EN
は最初のパケットをトリガにしてNAT-f
ネゴシエーションを実 行VAT: Vartual Address Translation Table; 仮想アドレス変換テーブル
IN DDNS Server NAT-f
router
NRT V1, IP NAT , bob
HN: bob
Application Kernel
EN
IP EN :s ← V1:d
NAT-f ネゴシエーション
IP NAT :m ⇔ IP IN :d 生成
IP EN :s → IP NAT :m IP EN :s → IP IN :d IP EN :s ← IP IN :d IP EN :s ← IP NAT :m
VAT V1:d ⇔ IP NAT :m IP EN :s → V1:d
アドレス変換
m bob, d
V1で検索
ACT bob, IP IN , allow
bobで検索
生成
NATテーブル
NAT-fを利用したSIPのNAT越え通信の検討 18
仮想アドレス