3

動的なピア ツー ピア ネットワークでネットワークの整合性を維持する方法に関する技術、アルゴリズムなどに関する情報を探しています。実用的な実装、学術論文、およびそのカテゴリのその他のものの両方を歓迎します。

各ノードがx個の他のノードにのみ接続されている、ピアツーピア ベースのみのネットワークを想像してみてください。すべてのノードのグランド リストがなくても、各ノードはネットワークとの接続を維持する責任があります。ノードは動的に停止し、起動します。つまり、各ノードは、 x個の接続を維持するために、接続する新しいノードをその隣接ノード (およびその隣接ノード?) に問い合わせる必要があります。

ネットワークのセグメンテーション (ネットワークの 2 つの半分は、各ネットワークから 1 つのノードによってのみ接続されます。いずれかがダウンした場合、ネットワークは 2 つに分割されます) と、これを回避する方法と効率的なルーティング (距離メトリックなど) が私の主な関心事です。 、しかし、同様の説明を持つネットワークに関連するものはすべて興味深いでしょう.

私が求めているものと類似しているため、現在Chord DHTプロトコルを見ています。

4

6 に答える 6

3

Netsukuku プロジェクトは、大規模な wifi ベースのアドホック ネットワーク用のプロトコルとソフトウェア実装の作成を目指しています。

彼らの FAQ から: 「Netsukuku プロジェクトは、Wi-Fi 接続の大きな可能性を利用するという非常に単純なアイデアに基づいており、ワイヤレス コミュニティの PC をルーターとして機能させ、インターネットよりもさらに大きなアドホック ネットワークをまとめて処理します。」

于 2009-12-04T14:24:01.440 に答える
2

ユビキタス コンピューティングのために、さまざまなアドホック P2P ネットワークが開発されており、おそらくニーズに合うでしょう。たとえば、軍隊では、通常はコマンドセンターまで、それぞれが隣人と話している小さなカプセルを展開するために使用されています. センターがない場合は、分散コンピューティングに関連している可能性があります。とにかく、いくつかのリンクを次に示します。

于 2009-12-17T13:27:36.913 に答える
2

私の考えだけ - 完全な解決策ではありません。実際にはテストされていませんが、多くの興味深い問題と潜在的な解決策に触れる可能性があります。

ノードの障害と再結合の標準化された時間を記録して管理する必要があります。これを実現するために、ネットワークはリアルタイム ベースではなく、アニメーション フレーム数ベースで計算します。FEP ID、ジョブ ID、およびネットワーク アニメーション フレーム番号を着信ジョブに割り当てる N 個のフロントエンド プロセッサを用意します。リアルタイムには、時間を量子化しても十分に対処できない問題が数多くあります。いくつかの例外的なケースでは、会計の場合と少し似ており、現金が移動したときではなく、イベントが発生したと見なされるべきときにイベントを投稿します。

高いパフォーマンスを実現するには、ハートビート パケットに、実行中のジョブ、最近完了または放棄されたジョブの詳細、およびネットワーク内のホストのインベントリも含める必要があります。

ネットワークは作業項目を処理し、その結果を隣接するピアまたは FEP に公開します。FEP は完了したジョブの詳細をクライアントに転送し、失敗した FEP を引き継ぐことができます。これは、FEP の唯一の状態が要求にスタンプされた最後のシリアル番号であるためです。

続行するには、ネットワークに定足数が必要です。外部モニターは接続を追跡し、現在クォーラムの内外にあるかどうかに関係なく、接続に変化が生じたノードに通知します。

障害が発生したため、または新しいノードがネットワークに参加したためにマシンによって作業項目が完了しなかった場合、新しいノードが戻ってくるまで、残りのノードに作業を割り当てるために、作業項目 ID に基づいて新しい作業割り当てポリシーを確立する必要があります。オンライン。

複数のノードが同じジョブを実行する場合 (作業の重複 - 可能ですが、通常のタイムアウトを適切に設計することで最小限に抑えることができます) の場合、ジョブはロールバック可能である必要があり、マルコフ連鎖を使用して競合を解決する必要があります。

重複の可能性を確実に検出するために、ジョブは、ノードに障害が発生している危機的な期間に適用されるジョブ結果を受信するためのタイムアウトよりも短い時間で自動ロールバックする必要があります。ノードに障害が発生していない場合は、より短いタイムアウトが適用されます。

于 2009-12-14T16:16:16.043 に答える
1

車輪の再発明を避けるために、さまざまなルーティングプロトコルを確認してください。シナリオを考えると、 OSPFは良い出発点かもしれません。もちろん、それがあなたにとって最良の選択ではないかもしれない多くの、多くの変数があります。そのような:

  • Xノードへの最短経路を維持できます。ノードがダウンした場合、接続されているノードに通知され、新しいSP検索を実行して適切なノードを見つけることができます。pingおよびキープアライブメッセージのオーバーヘッドを考慮する必要があります
  • 接続を説明する必要がありますか(つまり、p2pネットワークでの検索)、または相互接続されたノードの大規模なセット(ボットネット)を維持する必要がありますか?その場合、混合アプローチ(ネットワークの小さなサブセット用の小さな分散ハッシュテーブル+境界用のOSPF / BGP)が役立つ場合があります。
  • などなど
于 2009-12-17T11:26:05.057 に答える
0

Kademliaを見たことがありますか?これはChordに似ており、そのバージョンはBitTorrentとeMuleで使用されます。このホワイトペーパーでは、攻撃に直面した場合でも、ネットワークの整合性を確保するためのいくつかの対策を示しています。2つの基本的なものは

  • 十分な数のピアが失敗して問題が発生する可能性が低くなるように、十分な数のピアを維持します。
  • 稼働時間が長い順に、既知のピアのリストを維持します。調査によると、ノードがすでにオンラインになっている時間が長くなるほど、次の1時間以内にノードがオフラインになる確率は低くなります。これにより、攻撃者がネットワークを悪意のあるノードで溢れさせることも困難になります。

私はそれについてあまり読んでいないので、これがどれだけコードに当てはまるかはわかりませんが、あいまい検索が必要でない限り、DHTを使用することは良い考えだと思います。

于 2009-12-15T20:07:20.560 に答える