« ホワイトデー | トップページ | 出張 »

2004.03.15

P2PとNAT(メモ)

近日中にファイアウォールとP2Pの記事を書くので、これはそのメモという位置づけである。

最近、P2P-VoIPにおいてskypeが人気がある。これはNAT越しでも設定不要と言う便利なソフトである。一体どのような仕組みになっているのだろうか?今回はその仕組みに焦点を当てていく。

まず、ファイアウォールのNAT変換の方式として4つの方法がある。これを説明したのが次の資料である。

第1回 IPv6接続をさらに透過するTeredo
NATにはCone NAT,Restricted cone NAT,Port-restricted cone NAT,Symmetric NATがあることがわかる。

さて、一番難しいP2P通信は両者がどちらもNATの内側にある場合である。それを解決する手段がUDP hole punchingである。下はそれを図解したものである。TCPでなく、UDPを使う事に注目。
NAT and IPv6

より詳しい資料はこれである。
P2P communication across middleboxes
英文だが平易な文章で書かれていのでチャレンジして欲しい。

良く知られた技術がSTUN - Simple Traveral of User Datagram Protocolであり、これはRFC資料となっている。
STUN RFC3489

さて、この書類を見ると、Symmetric NATはなかなか通過させるのが難しいことがわかる。ただし、現在Symmetric NATを通過させる事を検討中である。それがSymmetric NAT Traversal using STUNである。また同じくSymmetric NATを通過する方法でTURNが挙げられる。
STUNとTRUNについて

STUNを代表するUDP hole punchingをする際には通常サーバが必要である。これをグローバルIPをもつノードで代用しようとするのが、次の資料。なかなかわかりやすい。
SUNET
これは親ノードと子ノードに分類して、親ノードを経由して子ノードのポート使用状態を他のノードに通知させることである。ただし、親ノード間がメッシュ構造になっていたり、子ノードが複数の親ノードに結びつける事等が検討されていないので、研究すればもっと面白いことになるかもしれない。

*NATについては下記にさらに新しい情報を記載しています。是非ご覧ください。

[NAT]NAT越え入門1-NATとは何か?

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

|

« ホワイトデー | トップページ | 出張 »

P2P」カテゴリの記事

コメント

初めまして。SUNETを作ったSunoと申します。SUNETのご紹介ありがとうございます(^^)

どうやら間違えてすごい勢いでトラックバックしてしまったようで、すみません。
目障りでしたら消してしまってください。
本当にすみませんでした。

投稿: suno | 2004.05.04 23:13

ごろ猫さん:

コメントありがとうございます。回答はごろ猫さんのBLOGへ致しましたので、よろしくお願いします♪

投稿: Tomo | 2004.04.24 23:15

skypeと同じようなアプリケーションを作ってみたいと思っています。まずは、P2Pの実装ですね。紹介していただいた日本語のページは読みました。英語で書かれたページを後回しにするのは駄目だと思っていますが、やはり時間がかかるので後回しになりますね。毎回注意されるのですが(v_v;;)TRUNでは3wayハンドシェイクが行われた後に外部からのポートフォワーディングが行えるのでしょうか。それとも内部からのACKパケットのみで透過できるのでしょうか。実際やってみたいと思います。もしかすると紹介していただいたHPに書いているかもしれませんね。

投稿: ごろ猫 | 2004.04.24 21:11

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/18781/304589

この記事へのトラックバック一覧です: P2PとNAT(メモ):

» TURN実験失敗? [ごろ猫ブログ]
TomoさんからNAT超えの技術としてTURNの存在を教えてもらった。早速まではいかないがJavaを使って実践してみた。構成としては下図の通りである。 PC:A... [続きを読む]

受信: 2004.04.29 09:46

» UDP hole punching実験->失敗 [ごろ猫ブログ]
P2P技術を実現させるのに、UDP hole punchingという技術がある。以前、3端末を用いて実験を行ったが、できなかった。今回は、2つの端末を対向して実... [続きを読む]

受信: 2004.05.09 18:14

» JXTAlinks [PukiWiki/TrackBack 0.1]
JXTA ProjectJXTA IT用語辞典 e-Words : Jxta P2P for Java / JXTA JXTA Shell & Pla... [続きを読む]

受信: 2004.06.07 15:21

» P2P [PukiWiki/TrackBack 0.1]
JXTA P2P一般 P2Pネットワーク要素 ピア ピアグループ ネットワークトランスポート サービス アドバタイズメント プロトコル エンテ... [続きを読む]

受信: 2004.06.07 15:22

» overNAT [PukiWiki/TrackBack 0.1]
http://www.ipv6style.jp/jp/tryout/20030929/index.shtml http://www.faqs.org/rfcs/rfc3489.html http://www.jdrosen.net/papers/draft-rosenberg-midcom-turn-03.txt http://ring.asahi-net.or.jp/archives/doc/internet-drafts/draft-ford-midcom-p2p-03.txt OpenVPN... [続きを読む]

受信: 2004.06.18 00:52

» [pc]UDP で NAT を越えて通信できる UDP Hole Punching [モーグルとカバとパウダーの日記]
skype の NAT越えの話_ - void GraphicWizardsLair( void ); // より、 skype の NAT越えの話 - 日誌 - 2004/12 >> Cone N ... [続きを読む]

受信: 2004.12.24 17:50

« ホワイトデー | トップページ | 出張 »