« P2P研究者にお勧めするRFCとドラフト | トップページ | オフィスツアーのご案内:コミュニティエンジン(7/4[金]) »

2008.06.04

NAT技術者にお勧めするRFCとドラフト

P2Pを含めた通信サービスにおいて、NATは外部からの通信を遮断する厄介なネットワーク機構です。そのため昔からNAT越えをするための研究が行われていました。

しかし、結構泥臭い研究開発のせいか、日本ではあまりNATに関する研究開発がありませんし、NAT越え研究の意義があまり世間に知られてないようです。これは大変残念なことです。

私は昔からNAT越えに興味があり、Skypeが出たころからBlogでUDP  Hole Punchingを使っている可能性があることを指摘したことがあります。現在ではNAT越えがまさしく本業になっていて、IP電話のNAT越えや最近有名になっているIPv4アドレス枯渇のためにISPが設置する「キャリアグレードNAT」の研究開発に携わっています。

2010年の冬には日本のIPv4アドレスがなくなる

なお、余談ですがキャリアグレードNATについては近日技術的な内容のプレゼンをとある有名なイベントで行う予定です。是非ご期待ください。

さて、 RFCやインターネットドラフトには様々なNATやNAT越えに関わるドキュメントがあります。今回はNATに関心がある人が特に読んで欲しいRFC、ドラフトを紹介します。

□日本語によるドキュメント
RFCをいきなり読むのもしんどいので、まずは日本語によるドキュメントを紹介します。
VoIP Conference 2008プレゼン資料
コナミの佐藤さんによるNATの分類方法とUDP Hole Punching等の解説記事です。特に市場におけるNATシェアのグラフは国内外で非常に注目されています。

□STUN(RFC3489)
STUNの役目は大きく分けて3つあります。
役割1:NATの外側に割り当てられたIPアドレスとポート番号を通知する
役割2:NATの外側に割り当てられたIPアドレスとポート番号を維持する(キープアライブ)
役割3:NAT種別をチェックする

役割1,2はUPnPで行うことをサーバを使って行っていると考えるとわかりやすいでしょう。
役割3は少し特殊です。NAT種別がわかるとUDP Hole Punchingができるかどうか判別することができます。ここでは詳細内容を割愛しますが、NAT種別には
・Full Cone NAT
・Restricted Cone NAT
・Port Restricted Cone NAT
・Symmetric NAT
というのがあり、後に書くほど外部との透過性が薄れます。Symmetric NATがあるとUDP Hole Punchingができない場合があるというは覚えておいた方がいいです。
なお、STUNの後継プロトコルにSTUN-bis(draft-ietf-behave-rfc3489bis-15)があります。
STUN-bisはUDPだけでなくTCPにも対応していること、STUNで言うところの役割3を削除したところがSTUNとの主な違いです。

□TURN(Traversal Using Relays around NAT)
現段階の最新ドラフト名はdraft-ietf-behave-turn-07
TURNはTURNサーバを使って端末間のデータを中継する。データ中継はTCP/UDPのどちらも可能で、更にTCP→UDPのようなトランスポート変換も可能。データを中継する前に、まずはサーバ中継用のIPアドレス、ポート番号の払い出し要求を端末からするのが特徴。
TURNはIP電話を意識した作りとなっているので、IP電話とは相性が良い。

□ICE(Interactive Connectivity Establishment)
現段階の最新ドラフト名はdraft-ietf-mmusic-ice-19
ICEは複数のNAT越え方式を端末間で自律的に選択する仕組みを持つ。またICEはSIP(SDP)を使って自端末のNAT関連情報を交換する。
SIPの知識が必要なので、やや難しいドキュメントだがこれがわかれば大抵のNAT越え技術は理解できるはず。

私が今年信学会全国大会で発表したテーマはTURNを拡張したHTTPトンネリングを作り、それをICEに対応させることでした。(つまり、UDP非透過のネットワーク環境でもIP電話ができる)

☆上記3つがまずは内容を押さえて欲しいドキュメントですが、次に重要となる2つドキュメントも参考としてあげます。

□Network Address Translation (NAT) Behavioral Requirements for Unicast UDP(RFC4787)

NATのUDPに対する要求条件が書かれています。STUNではNATタイプは4タイプですが、このRFCではより厳密に
・ポートマッピング(ポート番号の割り当て方)
・フィルタリング(外部からの通信の遮断の仕方)
の2軸によって分類します。またこの2つの概念以外にもヘアピンやキープアライブに必要な時間等NATに関わる技術的要素が網羅されているので、読むことをお勧めします。
なお、TCPとICMPに関するNAT要求条件のドラフトもあります。
draft-ietf-behave-tcp-07
draft-ietf-behave-nat-icmp-07

□Best Current Practices for NAT Traversal for SIP
ドラフト名は
draft-ietf-sipping-nat-scenarios-08
TURNやICEを使った場合の例とシーケンスが載っています。TURNやICEと併用して読むと理解が深まるでしょう。

なお、本記事でNATに興味をもたれた方にうれしい情報です。
6/27(金) 新宿にて私とコナミの佐藤さんによるNAT技術講座が開催されます。
詳しくは第10回SIProp勉強会の案内をご覧ください。参加費無料です。

(*開催日が変更になりました。ご注意願います。)

SIPのNAT越えについては、これより高度な内容になるので、そのうち掲載します。
また9月の信学会NS研究会(東北大)でSIPやRTPなどのNAT越え技術について発表する予定ですのでご興味ある方は是非ご参加を。

この記事を通して多くの人がNATに興味を持って頂ければうれしいです。

NATについて興味のある方は、以下の2冊が大きな参考になるため、是非お読みください。なお、P2P教科書はNATに関わる情報の一部を私が執筆しています。

NAT越えについては、私のサイト(P2P入門)にも解説していますので、併せてご覧ください。

http://homepage3.nifty.com/toremoro/p2p/firewall.html

|

« P2P研究者にお勧めするRFCとドラフト | トップページ | オフィスツアーのご案内:コミュニティエンジン(7/4[金]) »

P2P」カテゴリの記事

コメント

このようなブログがあったとは驚きです。コナミの佐藤さんのパワーポイントファイルはネットで見つけてよく知っておりましたがそれなりの場所で発表されていたんですね。このブログは日本のNATブレイカーにとっては有用なものとなるでしょう。私はCodeProjectにおいてあったソース等で理解しましたが(完全ではありませんが)、ここにもっと早く出会えていればよかったですw。今仮想化環境でUPnP-IGDの操作とSTUNを併用したハイブリッドP2Pの実験をブログのほうでやってるので気が向いたら突っ込んでやってください。では

投稿: natbreaker | 2009.04.28 16:48

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: NAT技術者にお勧めするRFCとドラフト:

« P2P研究者にお勧めするRFCとドラフト | トップページ | オフィスツアーのご案内:コミュニティエンジン(7/4[金]) »