ひとまず,小グループ内での動作に最低限必要な仕様を考えていく.
・ユーザーは複数のグループに所属できる.
・異なるグループのユーザーの存在を知る方法は,どうしよう…?
逆にTreeのデメリットは,途中のサーバントが消滅した場合の再接続アルゴリズムの困難. ヘタをすると切れた点に隣接していたサーバントがあちこちに接続し合い, ループが形成されてしまう可能性がある. また,通信効率が良い反面,ブロードキャストの伝播時間は最も長くなる.
以上の点を鑑みて,サーバントが数個〜数十個の場合には,
とにかく可能な相手にはどしどしコネクションを張り,
網型ネットワークを形成するのがよろしい気もするが,
100クライアントの場合で,
たった1つのメッセージのために無駄なメッセージを98個も受け取るのはひどい気もする.
結局,うっかりネットワークが複数の島に分断されないようにさえなっていれば,
両者の中間的な,「やや冗長なTree状態」をとっても問題は無いし,そうするのが良いと思われる.
このへんは実際のIPネットワークと同じだが,
トポロジーを自動的に作らねばならない点がむずかしい.
というわけで,Treeの場合の再接続アルゴリズムで, たとえループが形成されてもいいから必ず相手の島のどこかに接続するようなものを考える必要がある.
[8/25 (2001)]