P2P型アプリケーション用ライブラリ SUNET B3 suno アウトライン 背景・問題 STUNの説明 SUNETの概要 システム構成 動作フロー デモ まとめ・感想 背景 家庭のネットワーク環境 ブロードバンド化 ルーター 多くのコンピュータがプライベートなネットワークへ P2Pアプリケーション 集中負荷がかからない クライアントの能力の有効活用 例 ファイル交換 VoIP、ビデオチャット 問題 多くのコンピュータプライベートアドレスを 持っている 直接通信が行えない 今のP2PソフトはグローバルなIPアドレスを持つノ ードを経由している 帯域の限界 遅延の発生 STUNとは? Simple Traversal of UDP through NATs RFC 3489 NAT内の端末同士が直接通信できるようにする Suno家ネットワーク Quno家ネットワーク ルーター yyy.yyy.yyy.yyy ルーター xxx.xxx.xxx.xxx Sunoマシン 192.168.0.2 STUN Qunoマシン 192.168.0.2 何故直接通信できるか サーバー ルーターがポート51を開いて サーバーのポート50へ送る Suno家ネットワーク Quno家ネットワーク ポート50からサーバーのポート50に送信 ルーター xxx.xxx.xxx.xxx Sunoマシン 192.168.0.2 ルーター yyy.yyy.yyy.yyy Suno家のルータのポート51に送ると sunoマシンのポート50にに届く ルーターの種類 Full Cone Restricted Cone Port Restricted Cone Symmetric 高スループット 高セキュリティ SUNETの概要 STUNを利用したP2Pのライブラリ ユニキャスト ブロードキャスト あて先にメッセージを送れる 参加者全員にメッセージを送れる 直接通信 STUNを用いた直接通信が行える 従来のP2PソフトではGlobalなIPアドレスをもったノードを 経由していた 帯域と遅延の問題が解決 ノードのタイプ 親ノード グローバルなIPアドレスを持っている 他の親ノード全てと繋がっている 子ノード プライベートなIPアドレスを持っている 親ノードのうち一つと繋がっている システム構成 親 親 親 親 子 子 子 子 子 動作フロー(参加) 参加ノードに初期親ノードを与える 初期親ノードから親ノードのリストを受け取る ルーターのタイプをチェック 参加ノードがGlobalなIPを持っている場合親ノードとして参加 参加ノードがPrivateなIPを持っている場合子ノードとして参加 初期ノード:suno.net リストくれ ? 親 あいよ 子 親 親 suno.net ルーターチェックさせて 親 動作フロー(ユニキャスト) Sunoとはつながってないから 別の親ノードに送ろう Sunoにメッセージを 送りたい! 親 Sunoとはつながってるぞ! 送ってやろう。 親 親ノード 子 子 子 Suno 親 メッセージキター!! Sunoとはつながってないな。 メッセージは破棄しよう 子 動作フロー(ブロードキャスト) つながってるみんなに 送るぞー みんなにメッセージを 送りたい! 親 つながってる子ノードに 送るぞー 親 親ノード 子 子 子 親 つながってる子ノードに 送るぞー 子 動作フロー(直接通信) 133.27.170.YのB番に接続してちょうだい 133.27.170.XのA番に接続してちょうだい 親 親 子 133.27.170.YのB番 133.27.170.XのA番 親 開いたUDPポートと マッピングされている ルーターのIPとポートは? 開いたUDPポートと マッピングされている ルーターのIPとポートは? 直接通信確立 子 デモ サンプルアプリケーション P2P型共有お絵かきボード 2つのノードで同じお絵かきボードを共有 まとめ P2P型アプリケーション用ライブラリ SUNETを作成した ユニキャスト ブロードキャスト 直接通信 帯域・遅延問題の解消 感想 時間がなくて設計がいまいち 親ノード間のトポロジーがいまいち クラスをより適切に定義すべきだった 今のままだとスケールしない P2Pのルーティングは大変だ Jxta使えばよかった・・・
© Copyright 2024 ExpyDoc