複数のアドホック ノード間でワイヤレス ブロードキャスト チャネルを介して共有バスを作成しようとしています。各ノードはいつでも送信でき、すべてのノードが相互に受信できる必要があります。これは、マルチキャスト、特にOpenPGMの仕事のように思えます (他の誰かが尋ねていることについては、この質問を参照してください)。紛失しましたが、私は専門家ではありません。誰かが私を修正したい場合は、お気軽に!)。OpenPGM は機能しない可能性があるため、ライブラリの最小要件についてじっくり考えることにしました。どうぞ:
- UDP で動作する必要があります。
- メッセージに取り組む必要があります。ライブラリに一度にメッセージを渡し、一度にメッセージを受信できるようにしたい。
- 最も近い隣人に到達するだけです!
- 多くのネイバーが同時に更新されるように、ブロードキャストで作業する必要があります。
- 複数のネイバーが同時にブロードキャストすることを、それらの間で調整することなくサポートする必要があります。
- 対応するパケットからメッセージを自動的に再構築し、メッセージをパケットに分割する必要があります。
- 合理的な信頼性のみが必要です。これは、次のすべてを意味します。
- 一部のパケットが単純に通過しないため、メッセージが失われる可能性があります。
- NACK が返されないため、メッセージが通過したと見なされる場合があります。
- 他に考えられる理由。
最後の一連のポイントは重要です。メッセージが失われる可能性がありますが、私は気にしません。それが「合理的に信頼できる」ということです。ライブラリが不完全なメッセージを私に渡してほしくありません。むしろ、合理的なタイムアウト期間の後にメッセージがドロップされることを望みます。また、メッセージの配信を保証できないかどうかも気にしません。必要に応じて、より強力な信頼性の保証を構築できます。基本的には、メッセージを受け取ったら完了したことを確認する必要があるだけです。それ以外は保証する必要はありません。
それで、これに似たものはありますか?それとも自分で書くべきですか?
編集: 明確にするために、私のメッセージは、単一の UDP パケットが処理できるよりも大きくなる可能性があります。そうでない場合は、ストレートな UDP ブロードキャストを使用し、パケットを受信したかどうかを知らせる何らかの番号方式を使用します。そのため、それを処理できるライブラリを探しています。
また、ノード自体が信頼できないことに注意してください。接続が失われ、定期的に再起動されます。これはめったに起こりませんが、必ず起こります。ピアが死んだためにライブラリがハングアップした場合、私はそれを使用できません。
これまで助けてくれてありがとう!