« 初めて「シルバニアファミリー」を買う・プレゼントするときの注意点まとめ | トップページ | 私が主催した勉強会活動の歩み(2013年1月版) »

2012.12.16

「分散ハッシュシステムでのNAT超えの考察」に対する質問について

以前当ブログにて「分散ハッシュシステムでのNAT越えの考察」という記事を書きましたが、@Sn0wNightさんから質問を頂きましたので、ここでお答えしたいと思います。

質問はTwitter経由で3つ頂きました。

【質問1】
P1がNext(Hash_P2)を使うことに関わり、どのようにしてP2のハッシュを見つける事ができるか?

⇒ChordではIPアドレスをハッシュとして使うことが一般的ですが、必須ではなかったはずです。ここではP2を何らかの識別子の名前空間(例えば氏名など)から取得します。その識別子をハッシュすることにします。

【質問2】
P2のハッシュをP1が把握しているにも拘らず、P2がG2に対してIPアドレスをポートを通知する理由とは?

⇒P2とP1はお互いプライベートIPアドレス空間のため、UDP hole punchingなどを行っても直接通信できない可能性があります。そのため、P2はG2経由で他のプライベートなIPアドレスの通信をする場合があります。

つまり、多くの場合UDP hole punchingでP2/P1はお互いのプライベートアドレスを知り直接通信ができる。(UDPの場合)、しかしながら一部のNAT状態では何らかのグローバルIPアドレス空間のノードと中継しないと通信ができない。そのためにはP2は自らのプライベートIPアドレスだけでなく、中継を肩代わりしてくれるG2のグローバルIPアドレスを相手に伝える必要があります。UDP hole punching及びグローバルなノードを使ってNAT越えをする手法はICEと呼ばれIETFで標準化されています。

詳細は私が過去「P2Pネットワーク実験協議会」にてNAT越えについて解説したプレゼン資料をご覧ください。

【質問3】
P1からG2経由でP2への接続要求があった場合、G2からP2へどのようなタイミングでリクエストを転送するのでしょうか?

⇒P2とG2は定期的に通信していますが、これはP2とG2のリンクが確立しているかを確認する目的だけです。(※プライベートIPアドレスのノードがグローバルIPアドレスのノードとリンクを絶えず成立することにより、他のノードからの各種リクエストを受け入れる状態を取れるようにする)
P2とG2はTCPで接続が絶えず確立しており、G2からP2へのリクエストがあった場合は、即時にP2に流すように設計します。このため、P2とG2はWebsocketあるいはSIPのように1つのTCPコネクションで両ノードがクライアント-サーバのように振舞います。

Blogの記事等で質問がある場合は@toremoro21までお気軽にご連絡ください。

|

« 初めて「シルバニアファミリー」を買う・プレゼントするときの注意点まとめ | トップページ | 私が主催した勉強会活動の歩み(2013年1月版) »

P2P」カテゴリの記事

コメント

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

トラックバック


この記事へのトラックバック一覧です: 「分散ハッシュシステムでのNAT超えの考察」に対する質問について:

« 初めて「シルバニアファミリー」を買う・プレゼントするときの注意点まとめ | トップページ | 私が主催した勉強会活動の歩み(2013年1月版) »