2017-01-28 8 views
1

私は速くGoogleが多くの結果を得ていることを認識しており、このトピックに関する文献は非常に豊富で、それはまさに問題です。可能な解決法の世界の中で、具体的にどのようなものが私の特定のニーズのための最善の選択であるかはわかりません。P2Pメッセージブロードキャストネットワークを実装する際の最先端技術は何ですか?

私はインターネット経由で、オンラインノードにメッセージをブロードキャストする唯一の機能を備えたP2Pネットワークを実装しようとしています。ネットワークに接続するには、既存のIPを指すことができる必要があります。あなたがそうするとき、あなたはいくつかの同輩を発見し、彼らとの積極的なつながりを保ちます。その後、他のすべてのノードにメッセージを送信できます。直接のコミュニケーションはありません。送信されたメッセージはすべての人が受信します。私はこのネットワークをできるだけ効率的にして、UDPの上で動作させたいと思っています。

ここで指定した形状のこの問題を解決するいくつかの最先端のアルゴリズムの名前は何ですか?

+0

これらの概念に関する詳細な情報およびプロトコル設計のための彼らの仕様書のドキュメントのいくつかをお読みください個々のIPアドレスを知る必要はなく、LAN上のすべてのホストにヒットします。 –

+0

ああ、私はアプリを意味します。モバイルゲームを考えてみましょう。私はユーザーが中央サーバーに関わらず自分の動きを放送できるようにしたい。 – MaiaVictor

+0

今、私は混乱しています。パケットだけをプレーヤーにユニキャストすることを意味しますか?ブロードキャストは、LAN上のすべてのホストに送信されます。ユニキャストが特定のホストに送信され、マルチキャストは、マルチキャストグループに加入しているホストのグループに送信されます。あなたがマルチキャストを使いたいかもしれないように聞こえるかもしれません、そして、各プレーヤーホストはマルチキャストグループに送られたパケットを聞きます、そして、それはLAN上の他のホストを気にしません。 –

答えて

2

インターネット経由でオーバーレイネットワークで1つのメッセージをブロードキャストすることは、かなり簡単なことです。ネットワークに参加し、ネイバーのランダム化または構造化ルーティングテーブルを構築し、ネイバーにメッセージを氾濫させ、ネイバーと同じことを行い、転送ループを避けるために何らかのプルーニングを取り除きます。

複雑さは、ネットワークによって異なる追加の制約と要件から発生します。例えば。匿名の設定、待ち時間の最適化、多数のメッセージの高帯域幅ストリームの最適化(P2Pを利用したライブビデオブロードキャスト)などの信頼性の問題を信頼する。

+0

私はそれがかなりシンプルだと聞いてうれしいですが、私には分かりませんいくつかの合併症があります。ランダムルーティングテーブルを意味します。どのように正確に?各ノードがどのようにピアのリストを保持するのか?そのために、最初の「エントリノード」にはすべてのノードのリストが必要ですか?あなたが参考になるリンク/キーワードがあれば。いずれにせよ、答えに感謝! – MaiaVictor

+0

「オーバーレイネットワーク」、「構造化オーバーレイ」、「小さな世界」、「ルーティングテーブル」、「ネイバーリスト」、「ブートストラップ」...一般的なGoogleの学者(ある程度組み合わせることができます)ブートストラッピングとルーティングテーブルのメンテナンスは、メッセージの伝播とは別の問題です。あなたはピースごとにあなたのP2Pアルゴリズムを構築する必要があります。 – the8472

4

分散型P2Pアーキテクチャを設定するための概念については、 Hypercore(生のP2Pストリーム)やHyperdrive(ハイパーコアの上にファイル転送)など、インターネット上のP2Pデータ共有のためのモジュールのエコシステムを提供するDat Projectをご覧ください。 彼らは、技術的な概念、課題、およびそれらがどのように取り組んできたかについての良い文書を持っています。

P2P設計における課題のいくつか:

  • NATルータやファイアウォール:NATトラバーサルおよびUDPホールパンチングを実装することによって克服する(参照:ZeroTierによってThe State of NAT Traversal)を
  • ピアを発見:Dat Projectはネットワーク上でピア同士を見つけるための効率的な方法としてGossipingを使用し、通信のための簡単な(protobuf)ワイヤプロトコルを使用します(HyperdiscoveryおよびHypercore Protocol)。
  • P2Pデータ通信/同期:Hypercoreはマークル木は、TCP、UDP、のWebRTC両方

正しい順序で他のピアからデータチャンクを集約し、重複排除のために、各ピアで記録し、追加のみ実装BittorrentDHTはDat Projectでサポートされています。あなたが放送した場合、あなたはその後、

+0

私は、実行可能なP2Pテクノロジに関する詳細情報を追加し、モバイルの分散ビデオアプリケーションでDat Projectを使用しました:[WebViewを使用してAndroidでp2pビデオ/オーディオチャット](https://stackoverflow.com/a/45476871/8295283) –

関連する問題