From:
<ken...@ya...> - 2006-10-04 17:15:12
|
松永です。 >それって西村君とかレオネットユーザーを見捨てると言うこと? そうなりますね。 西村君の名前を出されるとかなり心苦しいところではあるけど。 見捨てる方向のほうが楽できると思う。 ちょっと前に阿部君とそういう話しなかったけ? UDPホール・パンチングってどんなものか見てみた? この仕組みで、ポート開けているノードと同じような通信を ポート開けていないノードにやらせようとすると、結構つらいことになるよ。 UDPホール・パンチングの何がつらいかっていうと、 UDPホール・パンチングではルータの外側Aから内側Bに対して通信するために、まず内側Bから外側Aにパケットを投げて道を作る必要があるけど、つまり、外側から勝手に通信を始めることが出来ない。 これじゃ一般ノードにしても、ファイルアップロード時には、外側から要求が来るわけだから、外側から要求を受け付けるには、以下のどれかの選択に迫られるね。 1.外部からの要求を受け付ける代理ノード(もちろんポートが開いている)を定義して、内側のノードは外側からの通信を受け付けるために、代理ノードはUDPホール・パンチングでコネクションを確保する。内側のノードにパケットを投げたい時には、代理ノードにパケットを投げる。代理ノードはパケットを転送する。 代理ノードの候補としてはキーサーバーが考えられる。 ファイルキーを登録する全てのキーサーバに代理登録をしておく。 ただし、ルータがUDPホール・パンチングに対応していなかったら、(1)の方法をとっても、外側からUDPのパケットを届けるのは不可能。 例えばレオネットのルータがUDPホール・パンチングに対応しているかはかなり怪しい。 2. (1)と同じ要領だが、通信をTCPにする。これなら確実に通信可能。 3.諦めて、ポートの内側はダウンロードオンリーする。 他にも方法は考え付くけど、上の案よりひどいので省略。 個人的な意見を言わせてもらえば、 1は面倒だし、ルータが対応していないと破綻するので嫌。 2は面倒な上に、普段はUDPなのに、特別ケースでTCPの通信も考えなくちゃいけないので嫌。 3は内側のノードがシステムに一切貢献しないから嫌。 よって、ポート開けられないユーザは見捨てたい。 対応するとしても、ずっと後がいいです。 それとも、もっと簡単な実現方法考え付いてる? 又は、上記の案のどれかと似たような仕組みを考え付いていて、それを受け入れている? 阿部誠 <abe...@gm...> wrote: 阿部です。 > 今回のファイル共有システムでは、システム参加者全員がUDPポートを空ける方向で行きましょう。 それって西村君とかレオネットユーザーを見捨てると言うこと? それはないと思うので、 少なくても一般ノード(キャッシュサーバ)はポート空けなしで参加可能と言うことにしましょう。 システム管理サーバ、キーサーバはポート空け必須と言うことにしましょう。 問題は、大多数がポート空けなしになる可能性だけど ファイル交換時はノード空けなしだと接続対象が大幅に減るので問題ないと思います。 06/10/04 に 松永 健太郎 さんは書きました: > 松永です。 > > >プライベートIPでの参加ノードはどう取り扱いますか? > > アプリケーションのプロトコルで、自分のグローバルIPをネットワーク越しのノードに問い合わせる制御を入れましょう。 > で、通信相手に自分のIPを伝える時には、問い合わせたIPを使う。 > 他に良さげな方法ある? > たしか『Winnyの技術』でここらへんの内容に触れてるよ。(無くしたんだっけ?) > > >UDP通信ってポートを空けずに双方向通信ってできるの? > > UDPホール・パンチング(下記URL参照)が使えるなら、TCPと同じで片方のポートが開いてればOKです。 > 使えないなら、両方空けている必要があるね。 > > 今回のファイル共有システムでは、システム参加者全員がUDPポートを空ける方向で行きましょう。 > > http://www.atmarkit.co.jp/fwin2k/experiments/skype02/skype02_03.html > http://www.atmarkit.co.jp/fwin2k/experiments/skype02/skype02_04.html > > > 関係ないけど、下のページ少し参考になるよ? > SkypeとかGnutellaのプロトコルについて少し解説してるし。 > http://www.atmarkit.co.jp/fwin2k/experiments/indexpage/index.html > > 阿部誠 wrote: > 阿部です。 > > プライベートIPでの参加ノードはどう取り扱いますか? > UDP通信ってポートを空けずに双方向通信ってできるの? > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > P2p-sim-develop mailing list > P2p...@li... > https://lists.sourceforge.net/lists/listinfo/p2p-sim-develop > > > > > ________________________________ > [10th Anniversary] special auction campaign now! > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > > _______________________________________________ > P2p-sim-develop mailing list > P2p...@li... > https://lists.sourceforge.net/lists/listinfo/p2p-sim-develop > > > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ P2p-sim-develop mailing list P2p...@li... https://lists.sourceforge.net/lists/listinfo/p2p-sim-develop --------------------------------- [10th Anniversary] special auction campaign now! |