| 【発明の名称】 |
マルチキャスト通信制御方法 |
| 【発明者】 |
【氏名】ヴ レ ファン
【氏名】小塚 宏
【氏名】前田 慎司
【氏名】佐藤 浩司
|
| 【要約】 |
【課題】マルチキャスト通信において、各通信装置に必要なバッファサイズを削減するとともに、喪失メッセージの回復処理に際してのネットワークの輻輳を防止する。
【解決手段】ノード順位決定手段18を設けて各ノードにマルチキャストドメイン内での順位番号を設定し、一定範囲の順位番号を有するノードを回復処理を行うサーバ・ノードと規定するとともに、このサーバ・ノード間での回復処理の分担も該順位番号に基づいて決定する。さらに、該順位番号を使用して各サーバ・ノード毎に異なるタイマーを設定し、メッセージの喪失を検出したノードからの回復要求メッセージ、およびこれに対する回復応答メッセージのネットワーク送出タイミングをこのタイマーに基づいて決定する。 |
【特許請求の範囲】
【請求項1】 ネットワークに接続された複数のノード間相互の通信システムであるマルチキャスト通信システムにおいて、上記各ノードに優先順位番号を付け、上記各ノード間通信における受信メッセージにメッセージ喪失が検出された場合、下記ステップに従って動作するようにしたことを特徴とするマルチキャスト通信制御方法。 (a)メッセージ喪失を検出したノードが該喪失メッセージの回復を要求する回復要求メッセージを送信する回復要求メッセージ送信ステップ; (b)各ノードが該回復要求メッセージを受信する回復要求メッセージ受信ステップ; (c)最優先順位番号から所定の優先順位番号までの優先順位番号を持つ各ノードが、該回復要求メッセージに対して自ノードが応答するか否かの判定を行う応答判定ステップ; (d)上記応答判定ステップの判定結果に基づき上記最優先順位番号から所定の優先順位番号までの優先順位番号を持つ各ノードが、下記の(d1)あるいは(d2)いずれかのステップを実行するステップ; (d1)自ノードが応答すると判定した場合:バッファ内に保持しているメッセージを利用して該回復要求メッセージに対する第1の回復応答メッセージを作成して所定時間t1経過後送信するように設定した後、下記(d11)あるいは(d12)のいずれかのステップを実行する回復処理ステップ; (d11)上記所定時間t1経過以前に他ノードが上記回復要求メッセージに対する第2の回復応答メッセージを送信した場合には、上記第1の回復応答メッセージの送信を中止するステップ; (d12)上記所定時間t1経過までに他ノードが上記回復要求メッセージに対する第2の回復応答メッセージを送信しなかった場合には、上記第1の回復応答メッセージを送信することにより回復処理を行うステップ; (d2)自ノードが応答すると判定しなかった場合:該回復要求メッセージを廃棄するステップ。 【請求項2】 応答判定ステップにおいて、最優先順位番号を有するノードのみが応答すると判定するようにしたことを特徴とする請求項1に記載のマルチキャスト通信制御方法。 【請求項3】 上記所定の優先順位番号は、最優先順位番号を有するノードの初期化動作時に決定される固有の値に設定されるようにしたことを特徴とする請求項1に記載のマルチキャスト通信制御方法。 【請求項4】 上記所定の優先順位番号は、最優先順位番号を有するノード上に搭載されたソフトウエアによって任意に設定可能であるようにしたことを特徴とする請求項1に記載のマルチキャスト通信制御方法。 【請求項5】 メッセージ喪失を検出したノードは、上記回復要求メッセージ送信ステップにおいて回復要求メッセージに判別番号を付けて送信し、上記最優先順位番号から所定の優先順位番号までの優先順位番号を持つ各ノードが、上記応答判定ステップにおいて該判別番号と自ノードの優先順位番号を用いて判定を行うようにしたことを特徴とする請求項1に記載のマルチキャスト通信制御方法。 【請求項6】 回復処理実行中のノードが回復処理不能に陥った場合、該ノードの優先順位番号を越える優先順位番号を持つ各ノードの優先順位番号を繰り上げるようにしたことを特徴とする請求項1〜請求項5のいずれかに記載のマルチキャスト通信制御方法。 【請求項7】 上記回復処理ステップにおける所定時間t1は、該回復応答メッセージの送信元ノードの優先順位番号によって決定されるようにしたことを特徴とする請求項1に記載のマルチキャスト通信制御方法。 【請求項8】 上記所定時間t1は、回復応答メッセージの送信元ノードの優先順位番号とこのマルチキャスト通信システムに接続されているノードの総数およびこのマルチキャスト通信システムの伝送経路の遅延時間を用いて算出するようにしたことを特徴とする請求項7に記載のマルチキャスト通信制御方法。 【請求項9】 最優先順位番号から所定の優先順位番号までの優先順位番号を持つノードがバッファ内に保持しているメッセージの削除範囲は、最優先順位番号を持つノードが設定するようにしたことを特徴とする請求項1に記載のマルチキャスト通信制御方法。 【請求項10】 上記削除範囲は、過去このマルチキャスト通信システムに接続されたいずれかのノードがメッセージを送信した時刻と、いずれかのノードが上記メッセージの喪失を検出して回復要求メッセージを送信した場合の該回復要求メッセージの送信時刻との時間間隔に基づいて決定するようにしたことを特徴とする請求項9に記載のマルチキャスト通信制御方法。 【請求項11】 上記削除範囲は、回復要求メッセージの送信頻度の増大に応じて縮小するようにしたことを特徴とする請求項9に記載のマルチキャスト通信制御方法。 【請求項12】 最優先順位番号から所定の優先順位番号までの優先順位番号を持つノードがバッファ内に保持しているメッセージを、最優先順位番号を持つノードがいずれかのノードからの回復要求メッセージを受信した場合のみ、略同一時刻に削除するようにしたことを特徴とする請求項1または請求項9の何れかに記載のマルチキャスト通信制御方法。 【請求項13】 ネットワークに接続された複数のノード間相互の通信システムであるマルチキャスト通信システムにおいて、上記各ノードに優先順位番号を付け、上記各ノード間通信における受信メッセージにメッセージ喪失が検出された場合、該メッセージの喪失を検出した第1のノードは第1の回復要求メッセージを作成し、自ノードの優先順位番号によって決定される所定時間t2経過後送信するよう設定した後、以下のいずれかのステップにより動作するようにしたことを特徴とするマルチキャスト通信制御方法。 (a)第2のノードが上記喪失メッセージと同一のメッセージに対する回復要求メッセージを送信し、これに対する回復応答メッセージを上記第1のノードが上記所定時間t2経過以前に受信した場合には、上記第1の回復要求メッセージの送信を中止するステップ; (b)第2のノードが上記喪失メッセージと異なるメッセージに対する回復要求メッセージを送信し、これに対する回復応答メッセージを上記第1のノードが上記所定時間t2経過以前に受信した場合には、この回復応答メッセージを廃棄するステップ; (c)上記所定時間t2経過までにいかなる回復応答メッセージも受信しなかった場合には上記第1の回復要求メッセージを送信するステップ。 【請求項14】 上記所定時間t2は、回復応答メッセージの送信元ノードの優先順位番号とこのマルチキャスト通信システムに接続されているノードの総数およびこのマルチキャスト通信システムの伝送経路の遅延時間を用いて算出することを特徴とする請求項13に記載のマルチキャスト通信制御方法。 【請求項15】 上記ノードの優先順位番号は下記のステップにより付けることを特徴とする請求項1〜請求項14のいずれかに記載のマルチキャスト通信制御方法。 (a)マルチキャスト通信システムに参加しようとするノードが参加要求メッセージを送信する参加要求ステップ; (b)上記参加要求メッセージを送信したノードが、上記参加要求メッセージに応答して送信される参加確認メッセージを受信したか否かの判定を行い、該判定結果に基づいて上記参加要求メッセージを送信したノードが下記のいずれかのステップを実行する参加確認ステップ; (b1)参加確認メッセージを受信しなかった場合:自ノードに最優先順位番号を付け、以後他ノードが送信した参加要求メッセージを受信した場合には識別番号を含む参加確認メッセージを送信するよう自ノードを設定する最優先順位設定ステップ; (b2)参加確認メッセージを受信した場合:この参加確認メッセージに含まれる識別番号に基づいて決定される優先順位番号を自ノードに設定する一般順位設定ステップ。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】この発明は、ネットワークに接続された複数の通信ノードからなるシステムの制御方法に関するものであり、さらに詳しくは各ノード間での通信にマルチキャスト・プロトコルを用いるマルチキャスト通信制御方法に関するものである。 【0002】 【従来の技術】従来、ネットワークに接続された複数の通信装置から成るシステムにおいて、マルチキャスト通信を行う方法として、「A Reliable Multicast Framework for Light−Weight Sessions and Application Level Framing」(Submitted to IEEE/ACM Transaction onNetwoking,November 13,1995)に示される方法がある。 【0003】まず、マルチキャスト通信について簡単に説明しておく。マルチキャスト通信において、ある通信装置からメッセージを送信する際には、通信装置は自分自身の通信装置の識別子と各通信装置毎に管理されるシーケンス番号をメッセージに付加して送信する。これをネットワーク上の一定範囲の通信装置群の全ての通信装置がこれを受信する。この一定の範囲をマルチキャストドメインと呼ぶ。また各通信装置とそこで使用されるアプリケーション・プログラムの組合わせをノードと呼ぶ。各ノードはマルチキャストドメインに送られるメッセージを受信したい場合には、このマルチキャストドメインに対応するIPアドレスを自ノードのネットワークインタフェースに設定し、マルチキャストドメインへ参加メッセージを送信する。 【0004】次に、上記の従来のマルチキャスト通信の動作について図26のフローチャートに沿って説明する。初めに、各ノードは動作状態になると(S1001)、ネットワークからメッセージを受信し(S1002)、メッセージの型を判定する(S1003)。 【0005】メッセージの型には、以下の4種類がある。1)通常メッセージであることを示す“NORMAL”; 2)あるノードでメッセージの受信エラーが発生した時に、このノードが送信する回復要求メッセージであることを示す“REPAIR_REQUEST”; 3)(2)の回復要求メッセージに呼応して、他のノードから送信される回復応答メッセージであることを示す“REPAIR_REPLY”; 4)ロギングバッファのフラッシュ(削除)を指示する同期メッセージであることを示す“REPAIR_SYNC”である。ロギングバッファは過去のメッセージを保持するためのバッファである。また、回復応答メッセージには、この回復応答メッセージが送信される要因となった回復要求メッセージの送信元ノードが受信に失敗した通常メッセージを含んで送信される。 【0006】以下、受信したメッセージの型により分類し、その後の動作について説明する。 【0007】1)受信メッセージの型がNORMALの場合受信したメッセージの型がNORMALの場合、まずメッセージのシーケンス番号に飛びがあるかどうかを調べる(S1004)。飛びがある場合にはメッセージを喪失したと判断し、回復要求メッセージを生成し(S1005)、メッセージを送信したノードと自ノードとのラウンドトリップタイム(RTT:一組のノードにおいて、一方のノードが送信したメッセージに対する応答が他方のノードから返って来るまでの時間)と乱数値を用いてタイマーを設定し、タイマーの完了時に回復要求メッセージを発行するように、回復要求メッセージを回復要求メッセージ送信キューへ投入する(S1006)。このタイマーを回復要求バックオフタイマーと呼び、回復要求メッセージが回復要求メッセージ送信キューへ投入されてから、ネットワークへ送出されるまでの時間を決定する。 【0008】次いで、メッセージ喪失の有無にかかわらず、後の回復処理のためにこのメッセージをロギングバッファに保持し(S1007)、受信メッセージをアプリケーション・プログラムに引き渡す(S1008)。 【0009】2)受信メッセージの型がREPAIR_REQUESTの場合受信したメッセージの型がREPAIR_REQUESTの場合には、送信元のノードが要求しているメッセージを、自ノードがロギングバッファに保持しているかどうかを調べる(S1009)。保持していない場合は、自ノードもこの送信元のノードが要求しているメッセージを喪失しているので、この回復要求メッセージに呼応する回復応答メッセージが他ノードから送信されなかった場合に、再度自ノードが回復要求メッセージを発行するために、回復要求バックオフタイマーを設定する(S1010)。 【0010】要求されているメッセージを保持している場合は、回復要求メッセージを送信したノードと自ノードとのラウンドトリップタイム(RTT)と乱数値を用いて回復応答バックオフタイマーを設定し(S1011)、タイマーの完了時に回復応答メッセージを発行するように回復応答メッセージ送信キューへ投入する(S1012)。 【0011】この回復応答バックオフタイマーは、回復応答メッセージ送信キューへ投入された回復応答メッセージがネットワークへ送出されるまでの時間を決定するタイマーである。 【0012】3)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYの場合には、メッセージが自ノードの要求への応答かを判断し(S1013)、もしそうであればこのメッセージから通常メッセージ部分を取り出し(S1014)、通常メッセージ部分を通常メッセージ受信キューへ投入する(S1015)。さらにこの通常メッセージをロギングバッファに保持し(S1016)、アプリケーションへメッセージを引き渡す(S1017)。 【0013】もし自ノードの要求への応答でない場合には、過去にこの回復応答メッセージの原因となった回復要求メッセージに対して自ノードが応答するために回復応答バックオフタイマーを設定したか否かを調べ(S1018)、設定していた場合には、応答の必要がなくなったので回復応答バックオフタイマーを取り消す(S1019)。 【0014】上記の、受信した通常メッセージや自ノードが送信した回復要求メッセージは回復処理のためにロギングバッファに保持しておく。 【0015】4)受信メッセージの型がREPAIR_SYNCの場合受信メッセージの型がREPAIR_SYNCの場合には、ロギングバッファに保持していたメッセージを削除する(S1020)。この同期メッセージは所定のタイミングに所定のノードから送信され、これに従って各ノードはロギングバッファ内の一定の範囲の過去のメッセージをフラッシュし、ロギングバッファのオーバフローを防止する。 【0016】 【発明が解決しようとする課題】従来のマルチキャスト通信装置は、以上のようにマルチキャストドメイン内の全てのノードが喪失メッセージの回復処理について対等であるため、全てのノードが回復処理に備えなければならず、各ノードに用意すべき通信に必要なバッファサイズおよび回復処理のオーバヘッドが大きいという問題点があった。 【0017】さらに、マルチキャストドメイン内の各ノード間で、喪失メッセージに関する回復処理を柔軟に分散することができないために、系全体で回復処理に要する負荷が高くなってしまうという問題点があった。 【0018】さらに、喪失メッセージの回復処理を行うタイミングの決定に乱数値を用いているために、どのノードが実際に回復処理を行うかを事前に知ることができないという問題点があった。 【0019】さらに、一つのマルチキャストドメインに多数のノードが接続されている場合に、通常は各ノード間のRTTの値に有意な差が見られないため、各ノードが喪失メッセージの回復処理を行なってしまい、ネットワークの輻輳を起こしてしまうという問題点があった。 【0020】さらに、ネットワーク通信量削減のために一部のノードだけが喪失メッセージの回復処理を行うように強いようとしても、系の特性に応じてその回復処理に責任を持つノードの数を制御することができないという問題点があった。 【0021】さらに、喪失メッセージの回復処理のために必要とするロギングバッファのフラッシュのタイミングの決定にアプリケーションの特性を反映できないために、異なるアプリケーションが混在する通信環境で、必要なバッファサイズを最適化できないという問題点があった。 【0022】さらに、喪失メッセージの回復処理のために必要になるバッファのフラッシュ処理のタイミングが、通信が行われるネットワーク環境の特性を反映できないために、異なる形態のネットワークに対して、このバッファサイズを柔軟に調整して回復処理性能を向上させることが困難であるという問題点があった。 【0023】さらに、喪失メッセージの回復処理を行うノードの処理を効率化するためのバッファのフラッシュ処理に関して、そのフラッシュ範囲を安全かつ効率的に増減することが困難であるという問題点があった。 【0024】この発明は上記のような問題点を解決するためになされたもので、ネットワークに接続された複数の通信ノードからなるシステムにおいて、各ノード間での通信にマルチキャスト・プロトコルを用いる際に喪失メッセージの回復処理を迅速に行い、かつシステムの性質の反映や拡張を容易にすることを特徴とするマルチキャスト通信制御方法を得ることを目的とする。 【0025】 【課題を解決するための手段】第1の発明は、ネットワークに接続された複数のノード間相互の通信システムであるマルチキャスト通信システムにおいて、上記各ノードの初期化動作において上記各ノードに優先順位番号を付け、さらにマルチキャスト通信において1つ以上のノードがメッセージの受信に失敗するメッセージ喪失が発生した場合、下記ステップにより動作するようにしたものである。 (a)メッセージ喪失を起こしたノードが該喪失メッセージの回復を要求する回復要求メッセージを送信する回復要求メッセージ送信ステップ; (b)各ノードが該回復要求メッセージを受信する回復要求メッセージ受信ステップ; (c)最優先順位番号から所定の優先順位番号までの優先順位番号を持つ各ノードが、該回復要求メッセージに対して自ノードが応答するか否かの応答判定を行い、該判定結果に基づき該回復要求メッセージを受信した上記最優先順位番号から所定の優先順位番号までの優先順位番号を持つ各ノードが、下記の(c1)あるいは(c2)いずれかのステップを実行する応答判定ステップ; (c1)自ノードが応答すると判定した場合:バッファ内に保持している過去のメッセージを利用して該回復要求メッセージに応答する第1の回復応答メッセージを作成し、該第1の回復応答メッセージを回復応答メッセージ送信待ち行列に投入した後所定時間t1経過後送信するように設定し、さらに上記最優先順位番号から上記所定の優先順位番号までの優先順位番号を持つ各ノードが下記のいずれかのステップにより動作する回復処理ステップ; (c11)上記所定時間t1経過以前に他ノードが上記回復要求メッセージに応答する第2の回復応答メッセージを送信した場合は上記第1の回復応答メッセージの送信を中止する応答中止ステップ; (c12)上記所定時間t1経過までに他ノードが上記回復要求メッセージに応答する第2の回復応答メッセージを送信しなかった場合は上記第1の回復応答メッセージを送信することにより回復処理を行う回復応答メッセージ送信ステップ; (c2)自ノードが応答すると判定しなかった場合:該回復要求メッセージを廃棄する応答拒否ステップ。 【0026】第2の発明は、応答判定ステップにおいて、上記最優先順位番号を持つノードのみが自ノードが応答すると判定するようにしたものである。 【0027】第3の発明は、上記所定の優先順位番号は、最優先順位番号を持つノードの初期化動作時に設定されるようにしたものである。 【0028】第4の発明は、上記所定の優先順位番号は、最優先順位番号を持つノードの初期化後、該最優先順位番号を持つノードからの指示により任意に設定可能であるようにしたものである。 【0029】第5の発明は、メッセージ喪失を起こしたノードが、上記回復要求メッセージ送信ステップにおいて該喪失メッセージの回復を要求する回復要求メッセージに判別番号を付けて送信し、該回復要求メッセージを受信した上記最優先順位番号から所定の優先順位番号までの優先順位番号を持つ各ノードが、上記応答判定ステップにおいて該判別番号と自ノードの優先順位番号を用いて応答判定を行うようにしたものである。 【0030】第6の発明は、回復処理を行うノードが回復処理不能に陥った場合、その回復処理不能に陥ったノードの優先順位番号を越える優先順位番号を持つ各ノードの優先順位番号を繰り上げるようにしたものである。 【0031】第7の発明は、上記回復応答メッセージ送信ステップにおける所定時間t1は、該回復応答メッセージの送信元ノードの優先順位番号によって決定されるようにしたものである。 【0032】第8の発明は、上記所定時間t1は、回復応答メッセージの送信元ノードの優先順位番号とこのマルチキャスト通信システムに接続されているノードの総数およびこのマルチキャスト通信システムの伝送経路の遅延時間を用いて算出するようにしたものである。 【0033】第9の発明は、最優先順位番号から所定の優先順位番号までの優先順位番号を持つノードがバッファ内に保持しているメッセージの削除範囲は、最優先順位番号を持つノードが設定するようにしたものである。 【0034】第10の発明は、上記削除範囲は、過去このマルチキャスト通信システムに接続されたいずれかのノードがメッセージを送信した時刻と、いずれかのノードが上記メッセージの喪失を検出して回復要求メッセージを送信した場合の該回復要求メッセージの送信時刻との時間間隔に基づいて決定するようにしたものである。 【0035】第11の発明は、上記削除範囲は、回復要求メッセージの送信頻度の増大に応じて縮小するようにしたものである。 【0036】第12の発明は、最優先順位番号から所定の優先順位番号までの優先順位番号を持つノードがバッファ内に保持しているメッセージを、最優先順位番号を持つノードがいずれかのノードからの回復要求メッセージを受信した場合のみ、略同一時刻に削除するようにしたものである。 【0037】第13の発明は、ネットワークに接続された複数のノード間相互の通信システムであるマルチキャスト通信システムにおいて、上記各ノードに優先順位番号を付け、上記各ノード間通信における受信メッセージにメッセージ喪失が検出された場合、該メッセージの喪失を検出した第1のノードは第1の回復要求メッセージを作成し、自ノードの優先順位番号によって決定される所定時間t2経過後送信するよう設定した後、以下のいずれかのステップにより動作するようにしたものである。 (a)第2のノードが上記喪失メッセージと同一のメッセージに対する回復要求メッセージを送信し、これに対する回復応答メッセージを上記第1のノードが上記所定時間t2経過以前に受信した場合には、上記第1の回復要求メッセージの送信を中止するステップ; (b)第2のノードが上記喪失メッセージと異なるメッセージに対する回復要求メッセージを送信し、これに対する回復応答メッセージを上記第1のノードが上記所定時間t2経過以前に受信した場合には、この回復応答メッセージを廃棄するステップ; (c)上記所定時間t2経過までにいかなる回復応答メッセージも受信しなかった場合には上記第1の回復要求メッセージを送信するステップ。 【0038】第14の発明は、上記所定時間t2は、回復応答メッセージの送信元ノードの優先順位番号とこのマルチキャスト通信システムに接続されているノードの総数およびこのマルチキャスト通信システムの伝送経路の遅延時間を用いて算出するようにしたものである。 【0039】第15の発明は、ノードの優先順位番号は下記のステップにより付けるようにしたものである。 (a)マルチキャスト通信システムに参加しようとするノードが参加要求メッセージを送信する参加要求ステップ; (b)上記参加要求メッセージを送信したノードが、上記参加要求メッセージに応答して送信される参加確認メッセージを受信したか否かの判定を行い、該判定結果に基づいて上記参加要求メッセージを送信したノードが下記のいずれかのステップを実行する参加確認ステップ; (b1)参加確認メッセージを受信しなかった場合:自ノードに最優先順位番号を付け、以後他ノードが送信した参加要求メッセージを受信した場合には識別番号を含む参加確認メッセージを送信するよう自ノードを設定する最優先順位設定ステップ; (b2)参加確認メッセージを受信した場合:この参加確認メッセージに含まれる識別番号に基づいて決定される優先順位番号を自ノードに設定する一般順位設定ステップ。 【0040】 【発明の実施の形態】 実施の形態1.この発明の実施の形態1について、図1から図4に基づいて説明する。図1はこの実施の形態1におけるマルチキャスト通信システムを構成する各ノードのブロック図、図2はこの実施の形態1におけるノードの初期化を示すフローチャート、図3はこの実施の形態1におけるサーバ・ノードの動作を示すフローチャート,図4はこの実施の形態1におけるクライアント・ノードの動作を示すフローチャートである。 【0041】まず、この実施の形態1の構成について説明する。図1に示す装置のブロック図において、1Aは通信装置、1Bはこの通信装置1を利用するためのアプリケーション・プログラムであり、この通信装置1Aとアプリケーション・プログラム1Bの組合わせを以後ノードと呼ぶ。2は上記アプリケーション・プログラム1Bとこの通信装置1Aのインタフェースを司るアプリケーション・メッセージ送受信手段、3は通常メッセージをアプリケーション・プログラム1B側から後述のネットワーク8側へ、またはネットワーク8側からアプリケーション・プログラム1B側へ、ヘッダの挿入あるいは削除を行って受け渡す通常メッセージ処理手段であり、このヘッダには発信元のノードに関する情報、発信元のノード毎に管理されるメッセージのシーケンス番号、メッセージの型等の情報が含まれている。 【0042】4はネットワーク8へ送信される通常メッセージを到着順に処理する通常メッセージ送信キュー、5はネットワーク8から受信された通常メッセージを到着順に処理する通常メッセージ受信キュー、6はこの通信装置1Aからメッセージをネットワーク8に送出するメッセージ送信手段、7はネットワーク8からメッセージをこの通信装置に取り込むメッセージ受信手段、8は複数のノードを相互に接続するネットワークであり、この中の一定範囲のノード群をここではマルチキャストドメインと呼ぶ。この範囲は物理的な距離で決定されるものではなく、また1つのマルチキャストドメイン内のノードの数は必ずしも固定されていない。9は受信したメッセージの型を分析して適切な処理部へ分配するメッセージ型判定手段、10は回復要求メッセージ受信キュー、11は回復応答メッセージ受信キュー、12は回復要求メッセージ送信キュー、13は回復応答メッセージ送信キュー、14は喪失メッセージに対する回復処理を司る回復メッセージ処理手段、15は回復要求に備えて通常メッセージをロギングする通常メッセージ格納手段、16は受信した回復要求メッセージをロギングする回復要求メッセージ格納手段、17はこのノードのマルチキャストドメイン内での役割を決定し、装置を初期化するマルチキャストドメイン管理手段、18はこのノードのマルチキャストドメイン内でのノード順位を決定するノード順位決定手段、19は現在のノード順位の状態を保持するノード順位管理手段である。 【0043】以上のようなノードを複数含むマルチキャストドメインにおいて、1つのノードから送信されたメッセージは同じマルチキャストドメイン内の他のすべてのノードによって受信される。 【0044】また、メッセージの型として、ここでは以下の4種を使用する。 1)通常メッセージであることを示す“NORMAL”; 2)あるノードでメッセージのメッセージの喪失を検出した時に、このノードが送信する回復要求メッセージであることを示す“REPAIR_REQUEST”; 3)(2)の回復要求メッセージに呼応して他ノードから送信される回復応答メッセージであることを示す“REPAIR_REPLY”; 4)あるノードが新たにマルチキャストドメインへ参加する際に通知されるDOMAIN_JOIN_REPLYメッセージであることを示す“DOMAIN_JOIN_REPLY”である。このうち回復応答メッセージには、この回復応答メッセージが送信される要因となった回復要求メッセージの送信元ノードが受信に失敗した通常メッセージを含んで送信される。 【0045】以下、この装置の動作について、次の順に説明する。 1.初期化動作2.初期化後のサーバ・ノードの動作3.初期化後のクライアント・ノードの動作【0046】1.初期化動作最初に、この実施の形態1におけるノードの初期化動作について、図2に示すフローチャートを用いて説明する。まず、通信装置1Aが動作し始めると(S101)、マルチキャストドメイン管理手段17は、カウンタjoin_countの値を0に設定する(S102)。アプリケーション・プログラム1Bは、アプリケーション・メッセージ送受信手段2を用いて通信装置1Aにマルチキャストドメインに参加する意志表示のメッセージ(DOMAIN_JOIN_REQUESTメッセージ)を送信するよう要求し、通常メッセージ処理手段3は、このメッセージに通常メッセージヘッダを付加し、通常メッセージ送信キュー4へ投入する。 【0047】通常メッセージ送信キュー4は、投入されたメッセージを順次メッセージ送信手段6に送り、メッセージ送信手段6がこのメッセージをネットワーク8へ送信する(S103)。この時点で、マルチキャストドメイン管理手段はカウンタjoin_countの値を1増加する(S104)。join_countの値が初期化境界値Ninit(通常3程度)に達した場合には、マルチキャストドメイン管理手段は自ノードをサーバ・ノードとみなすことをノード順位決定手段18に通知し、ノード順位決定手段18はノード順位を1に決定し、ノード順位管理手段19がこの値を保持する(S106)。 【0048】前記の初期化境界値Ninitはサーバ・ノードのアプリケーション・プログラム1Bが持つ値が使用されるが、予めこのマルチキャストドメインで使用するマルチキャスト・プロトコルで設定されている値を使用してもよい。 【0049】またサーバ・ノードについて補足すると、サーバ・ノードは他ノードが送信したDOMAIN_JOIN_REQUESTメッセージを受信したときに、このマルチキャストドメインへの参加を許可すると同時にこのマルチキャストドメインに参加した順位(ノード順位)を通知するメッセージ(DOMAIN_JOIN_REPLYメッセージ)を送信する。 【0050】さらにS105がNOの場合、すなわちjoin_countの値が初期化境界値Ninitに達しておらずサーバ・ノードに設定されていない場合には、通信装置1A内ではメッセージ受信手段7がネットワーク8からDOMAIN_JOIN_REPLYメッセージが到着するのを待つ(S107)。 【0051】ネットワーク8からメッセージ受信手段7を用いて受信されたメッセージの型を、メッセージ型判定手段9により分析してDOMAIN_JOIN_REPLYメッセージであるか否かを判定し(S108)、DOMAIN_JOIN_REPLYメッセージを受信した場合は、マルチキャストドメイン管理手段17は自ノードをクライアント・ノードとして設定するようにノード順位決定手段18へ受信メッセージと共に通知し、ノード順位決定手段18はこのDOMAIN_JOIN_REPLYメッセージからノード順位を取り出して、その値をノード順位管理手段19に格納する(S109)。もしDOMAIN_JOIN_REPLYメッセージが受信されていなければ、一定時間待機し(S110)、S104以降を繰り返す。 【0052】このように、あるノードが初期化の段階でDOMAIN_JOIN_REPLYメッセージを所定の回数内に受信できなかった場合は同じマルチキャストドメイン内にサーバ・ノードは存在していないとみなして、これ以後ノード順位1のサーバ・ノードとして動作し、DOMAIN_JOIN_REPLYメッセージを受信した場合はすでにサーバ・ノードが他に存在するので、これ以後ノード順位2以上のクライアント・ノードとして動作する。 【0053】2.初期化後のサーバ・ノードの動作次に、初期化後のサーバ・ノードの動作について、図3のフローチャートに沿って説明する。サーバ・ノードが動作状態に入ると(S121)、メッセージ受信手段7がネットワーク8からメッセージを受信し(S122)、メッセージ型判定手段9がメッセージの型を判定する(S123)。 【0054】以下受信したメッセージの型により分類し、その後の動作について説明する。 【0055】1)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYの場合には、メッセージは回復応答メッセージ受信キュー11に投入され、回復メッセージ処理手段14が回復要求メッセージ格納手段16を参照して自ノードの要求への応答かを判断し(S124)、もしそうであればこのメッセージから通常メッセージ部分を取り出し(S125)、通常メッセージ部分を通常メッセージ受信キュー5へ投入する(S126)。自ノードへの応答でない場合はこのメッセージは廃棄される。 【0056】2)受信メッセージの型がREPAIR_REQUESTの場合受信したメッセージの型がREPAIR_REQUESTの場合には、メッセージは回復要求メッセージ受信キュー10に投入され、回復メッセージ処理手段14によって回復の対象となる通常メッセージを通常メッセージ格納手段15から検索して取り出す(S127)とともに、この回復要求メッセージを回復要求メッセージ格納手段16にロギングする。さらにこの取り出した通常メッセージを含む回復応答メッセージを生成し(S128)、この回復応答メッセージを回復応答メッセージ送信キュー13へ投入する(S129)。 【0057】3)受信メッセージの型がNORMALの場合受信したメッセージの型がNORMALの場合は、通常メッセージ受信キュー5に投入され、通常メッセージ処理手段3が通常メッセージ格納手段15に保持されている過去の受信メッセージとの照合により、メッセージのシーケンス番号に飛びがあるかどうかを調べる(S130)。飛びがある場合には、メッセージを喪失したと判断し、回復メッセージ処理手段14に回復を要請する。回復メッセージ処理手段14はこの要請を受け回復要求メッセージを生成し(S131)、回復要求メッセージを回復要求メッセージ送信キュー12へ投入する(S132)。メッセージ喪失の有無にかかわらず、通常メッセージ処理手段3はこの受信メッセージを後の回復処理のために通常メッセージ格納手段15を用いて保持し(S133)、その後、受信メッセージはアプリケーション・メッセージ送受信手段2のインタフェースを通して、アプリケーション・プログラム1に渡される(S134)。 【0058】3.初期化後のクライアント・ノードの動作次いで、初期化後のクライアント・ノードの動作について図4のフローチャートに沿って説明する。まず、クライアント・ノードが動作状態に入ると(S141)、メッセージ受信手段7がネットワーク8からメッセージを受信し(S142)、メッセージ型判定手段9がメッセージの型を判定する(S143)。 【0059】以下、受信したメッセージの型により分類し、その後の動作について説明する。 【0060】1)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYの場合には、メッセージは回復応答メッセージ受信キュー11に投入され、回復メッセージ処理手段14が自ノードの要求への応答かを判断し(S144)、もしそうであればこのメッセージから通常メッセージ部分を取り出し(S145)、通常メッセージ部分を通常メッセージ受信キュー5へ投入する(S146)。自ノードへの応答でない場合はこのメッセージは廃棄される。 【0061】2)受信メッセージの型がREPAIR_REQUESTの場合受信したメッセージの型がREPAIR_REQUESTの場合には、メッセージ型判定手段9は何もせずにこのメッセージを廃棄する。 【0062】3)受信メッセージの型がNORMALの場合受信メッセージの型がNORMALの場合は、通常メッセージ受信キュー5に投入され、通常メッセージ処理手段3が通常メッセージ格納手段15に保持されている過去の受信メッセージとの照合により、メッセージのシーケンス番号に飛びがあるかどうかを調べる(S147)。飛びがある場合には、メッセージを喪失したと判断し、回復メッセージ処理手段14に回復を要請する。回復メッセージ処理手段14はこの要請を受け回復要求メッセージを生成し(S148)、回復要求メッセージを回復要求メッセージ送信キュー12へ投入する(S149)。メッセージ喪失の有無にかかわらず、受信メッセージはアプリケーション・メッセージ送受信手段2のインタフェースを通して、アプリケーション・プログラム1に渡される(S150)。 【0063】以上のように、この発明のマルチキャスト通信制御の方法によれば、装置の初期化においてマルチキャストドメイン管理手段17がDOMAIN_JOIN_REQUESTメッセージとDOMAIN_JOIN_REPLYメッセージを用いて各ノードのノード順位を1以上の整数値に設定し、ノード順位が1であるノードを喪失メッセージの回復処理を行うサーバ・ノードに設定する。 【0064】またノード順位が2以上の場合には、そのノードをクライアント・ノードに設定し、クライアント・ノードではいかなる回復処理も行わないため、従来全てのノードに必要であった回復要求メッセージ受信キュー10、回復応答メッセージ送信キュー13、通常メッセージ格納手段15がクライアント・ノードでは不要になり、さらにクライアント・ノードの回復メッセージ処理手段14ついては、回復応答を行うための通常メッセージ格納手段15からのメッセージ検索処理が不要になるために、マルチキャスト通信装置に必要なバッファサイズおよび回復処理のオーバヘッドを削減することができる。この効果は、マルチキャスト通信への参加ノード数が増えれば更に顕著になる。 【0065】また以上の例では、サーバ・ノードは他ノードが送信したDOMAIN_JOIN_REQUESTメッセージを受信したときに、このマルチキャストドメインへの参加を許可すると同時にこのマルチキャストドメインに参加した順位(ノード順位)を通知するメッセージ(DOMAIN_JOIN_REPLYメッセージ)を送信する例を示したが、サーバ・ノードが送信するのはノード順位そのものの数字ではなく、間接的にノード順位を示す別の識別番号あるいは識別符号でもよい。 【0066】実施の形態2.次に、この発明の実施の形態2について、図1、図4および図5に基づいて説明する。 【0067】前記の実施の形態1では、通信システム内の各ノードに順位付けを行い、このノード順位1のノードを他ノードから出される喪失メッセージの回復要求に応じる責任を持つサーバ・ノードとし、ノード順位2以上のクライアント・ノードはこのような責任を持たないようにしたものであるが、本実施形態では系の性格によってサーバ・ノードの負荷が変動する場合に、実施の形態1と同じノードの順位付け方法を用いてサーバ・ノードの数を変更できるようにしたものである。 【0068】ただし、本実施形態の説明では、初期化時に行われる複数のサーバ・ノードの決定法のみを説明しており、これら複数のサーバ・ノードの初期化後の動作については、実施の形態3以降で順次説明することとする。 【0069】また、本実施形態における各ノードのブロック図は、前記実施の形態1で説明した図1に示すブロック図と同様であり、さらに、初期化後におけるクライアント・ノードの動作は前記実施の形態1で説明した図4のフローチャートに従うので、それぞれ説明を省略する。 【0070】次にこの装置の動作について、図5に示すフローチャートを用いて初期化動作のみを説明する。まず、図5において通信装置1Aが動作し始めると(S201)、マルチキャストドメイン管理手段17は、カウンタjoin_countの値を0に設定する(S202)。アプリケーション・プログラム1Bはアプリケーション・メッセージ送受信手段2を用いて通信装置1Aにマルチキャストドメインに参加する意志表示のメッセージ(DOMAIN_JOIN_REQUESTメッセージ)を送信するよう要求し、通常メッセージ処理手段3は、このメッセージに通常メッセージヘッダを付加し、通常メッセージ送信キュー4へ投入する。通常メッセージ送信キュー4は投入されたメッセージを順次メッセージ送信手段6に送り、メッセージ送信手段6がこのメッセージをネットワーク8へ送信する(S203)。この時点で、マルチキャストドメイン管理手段はカウンタjoin_countの値を1増加する(S204)。 【0071】join_countの値が予めこのマルチキャストドメインで設定されている初期化境界値Ninit(通常3程度)に達した場合には、マルチキャストドメイン管理手段17は自ノードを主サーバ・ノードとみなすことをノード順位決定手段18に通知し、ノード順位決定手段18はノード順位を1に決定し、ノード順位管理手段19がこの値を保持する(S206)。 【0072】主サーバ・ノードは同じマルチキャストドメイン内の他のノードが発信したDOMAIN_JOIN_REQUESTメッセージを受信したときに、このマルチキャストドメインへの参加を許可すると同時にこのマルチキャストドメインに参加した順位(ノード順位)を通知するメッセージ(DOMAIN_JOIN_REPLYメッセージ)を送信する。 【0073】S205がNOの場合、すなわちjoin_countの値が初期化境界値Ninitに達しておらず主サーバ・ノードに設定されていない場合には、通信装置1A内ではメッセージ受信手段7がネットワーク8からDOMAIN_JOIN_REPLYメッセージが到着するのを待ち(S207)、ネットワーク8からメッセージ受信手段7を用いて受信されたメッセージの型をメッセージ型判定手段9により分析して、DOMAIN_JOIN_REPLYメッセージであるか否かを判定する(S208)。 【0074】DOMAIN_JOIN_REPLYメッセージを受信した場合は、そのDOMAIN_JOIN_REPLYメッセージで示される自ノードのノード順位と、DOMAIN_JOIN_REPLYメッセージで示される系の信頼度基準値Nrely(Nrelyは正の整数)を比較し(S209)、ノード順位がNrely以下であれば自ノードを副サーバ・ノードとして設定する(S210)。 【0075】この後、必要に応じて自ノードのノード順位を送信する(S211)。このノード順位はこの時点でのサーバ・ノードの総数Nsを示しており、メッセージの型としてSERVER_NUMBERを持つサーバ数通知メッセージとして送信される。 【0076】またノードの順位がNrelyを越える場合は、自ノードを一般のクライアント・ノードとして設定する(S212)。一方、S208においてDOMAIN_JOIN_REPLYメッセージが受信されていなければ一定時間待機し(S213)、S204以下を繰り返す。 【0077】このように、初期化の段階でDOMAIN_JOIN_REPLYメッセージを所定の回数内に受信できなかった場合は同じマルチキャストドメイン内に主サーバ・ノードは存在していないとみなして、これ以後ノード順位1の主サーバ・ノードとして動作する。DOMAIN_JOIN_REPLYメッセージを受信した場合はノード順位が系の信頼度基準値Nrely以下であれば副サーバ・ノードとして動作し、Nrelyを越える場合はクライアント・ノードとして動作する。 【0078】すなわち、ノード順位1が主サーバ・ノード、ノード順位が2からNrelyまでが副サーバ・ノード、ノード順位がNrely+1以上がクライアント・ノードである。ただしNrely=1とした場合は副サーバ・ノードを使用せず、実施の形態1の形態を採用することを意味する。 【0079】以上のように、この発明の実施形態2では、系の信頼度基準値Nrelyを調整することにより、系の性格によって喪失メッセージの回復処理を行うサーバ・ノードの負荷が大きくなる場合にサーバ・ノードの数を増加させて負荷分散をするなど、実施の形態1と同じノードの順位付け方法を用いてサーバ・ノードの負荷変動に対応してサーバ・ノードの数を変更することができる。 【0080】ここで使用する信頼度基準値Nrelyは、主サーバ・ノードが使用する通信装置1Aのマルチキャストドメイン管理手段17で設定してもよく、この場合は装置の初期化動作の段階で設定される。また主サーバ・ノードが使用するアプリケーション・プログラム1Bで設定してもよく、この場合は装置の初期化以後にも任意の値に設定可能である。 【0081】実施の形態3.次に、この発明の実施の形態3について、図6および図7に基づいて説明する。 【0082】前記の実施の形態1では、回復要求メッセージおよび回復応答メッセージの送信までのタイミングについては特に触れていないが、本実施形態は、回復要求メッセージ送信キューおよび回復応答メッセージ送信キューから回復要求メッセージおよび回復応答メッセージが取り出され、ネットワークへ送信されるまでの時間を決定するタイマー(バックオフタイマー)を、ノード順位番号を用いて設定するようにしたものであリ、この設定法について説明する。 【0083】ただし、ここで設定するバックオフタイマーは、回復処理を行うサーバ・ノードにおいては回復要求メッセージと回復応答メッセージの双方について有効であり、また、回復処理を行なわないクライアント・ノードにおいては回復要求メッセージについてのみ有効であることは、もちろんである。 【0084】まず、図について説明すると、図6は本実施形態のマルチキャスト通信システムを構成する各ノードのブロック図であり、図7は本実施形態におけるバックオフタイマー設定手段の動作を示すフローチャートである。 【0085】以下、この実施の形態3の構成について説明するが、図6のブロック図において、通信装置1Aからノード順位管理手段19まではこれまでの実施の形態1と同一であるので、同一符号を付し説明を省略する。またメッセージの型も前記の実施の形態1と同様である。 【0086】図6における新たなブロックである20は、回復メッセージ処理手段14が回復要求メッセージ送信キュー12および回復応答メッセージ送信キュー13に設定するメッセージ発行遅延タイマー(バックオフタイマー)の値を設定するバックオフタイマー設定手段である。 【0087】次に、動作について説明する。この実施の形態3の要点であるバックオフタイマーは、この装置の初期化時に設定される。その動作を図7のフローチャートに沿って説明する。また、今後の説明において、サーバ・ノードとはノード順位にかかわらず主サーバ・ノードと副サーバ・ノードの総称とする。まず、装置が起動すると(S301)、実施の形態2と同様の初期化を行い、このノードをサーバ・ノードあるいはクライアント・ノードとして設定する(S302)。さらに、バックオフタイマー設定手段20は初期化を行った時点で予想されるこのマルチキャストドメインのラウンドトリップタイム(RTT)値の最大値をTに設定する(S303)。RTTは一組のノードにおいて、一方のノードが送信したメッセージに対する応答が他方のノードから返ってくるまでの時間を意味する。次に、このドメインに参加するノードの最大数をノード順位管理手段19に問い合わせその値をNに設定する(S304)。さらにノード順位管理手段19から現在のノード順位を取得し、この値をOnに設定する(S305)。 【0088】こうして収集した値をもとに、バックオフタイマーの値Tbackoff値を、算式(On―1)*T/Nにより算出する(S306)。バックオフタイマー設定手段20は、このTbackoff値を回復メッセージ処理手段14に通知する。回復メッセージ処理手段14は、回復要求メッセージ送信キュー12および回復応答メッセージ送信キュー13に投入されたメッセージがメッセージ送信手段6へ送られるまでの時間をTbackoff値に設定する。 【0089】このバックオフタイマーの算式を使用すれば、ノード順位1(On=1)のサーバ・ノードでは、回復要求メッセージ送信キュー12および回復応答メッセージ送信キュー13に投入されたメッセージがメッセージ送信手段6へ送られるまでの時間は0であり、以下ノード順位が大きくなるほどこの時間は長くなる。 【0090】以上のように、本実施形態では、回復要求メッセージおよび回復応答メッセージの送出タイミングの算出に、各ノード間のRTT値を用いずにノードの順位番号を用いるために、ノード間のRTTの値に有意な差が見られないような同一ネットワーク内の各マルチキャストノードに対しても、回復要求メッセージあるいは回復応答メッセージの多発によるネットワークの輻輳を招かないようにすることができる。さらに、回復応答メッセージの送出タイミングの算出に乱数値を用いていないために、各ノードのタイマーがいかなる値に設定しているかを確実な値として調べることが可能になる。 【0091】また、Tbackoff値を算出する式は、各ノードから回復要求メッセージあるいは回復応答メッセージが送信されるタイミングがネットワークの輻輳を招かないもので、算式に各ノードのノード順位を使用していれば上記の形でなくてもよい。 【0092】実施の形態4.次に、実施の形態4について、図5〜図8に基づいて説明する。 【0093】前記の実施の形態2では、喪失メッセージの回復処理を行う複数のサーバ・ノードの設定法についてのみ説明し、これら複数のサーバ・ノード間の役割分担については触れていないが、この本実施形態では、複数のサーバ・ノードが喪失メッセージの回復処理の担当範囲を分担する場合の分担法について説明する。 【0094】ただし、本実施形態における各ノードの構成は、すでに実施の形態3で説明した図6のブロック図と同様であり、また、図6中のバックオフタイマー設定手段の動作も同じ実施の形態3で説明した図7のフローチャートに従うので、これらの説明は省略する。 【0095】さらに、本実施形態における各ノードの初期化動作は、すでに実施の形態2で説明した図5のフローチャートと同様であるので、これについても説明は省略する。 【0096】以下、本実施形態における初期化後のサーバ・ノードの動作を、図8に示すフローチャートに沿って説明する。 【0097】まず、図8において、サーバ・ノードが動作状態に入ると(S401)、メッセージ受信手段7がネットワーク8からメッセージを受信し(402)、メッセージ型判定手段9がメッセージの型を判定する(S403)。 【0098】以下、受信したメッセージの型により分類し、その後の動作について説明する。 【0099】1)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYの場合には、前記の実施の形態1または実施の形態2と同様に自ノードの要求への応答かを判断し(S404)、そうであればこのメッセージから通常メッセージ部分を取り出し(S405)、通常メッセージ部分を通常メッセージ受信キュー5へ投入する(S406)。S404がNO、すなわち自ノードの要求への応答でない場合には、このメッセージは廃棄される。 【0100】2)受信メッセージの型がNORMALの場合受信したメッセージの型がNORMALの場合も、前記の実施の形態1または実施の形態2と同様に、メッセージのシーケンス番号に飛びがあるかどうかを調べることにより、メッセージ喪失があるかどうかを調べる(S411)。メッセージ喪失の有無にかかわらず、通常メッセージ処理手段3は、このメッセージを後の回復処理のために通常メッセージ格納手段15を用いて保持する(S414)。その後、受信メッセージは、アプリケーション・プログラム1に引き渡される(S415)。 【0101】3)受信メッセージの型がREPAIR_REQUESTの場合受信したメッセージの型がREPAIR_REQUESTの場合には、メッセージは回復要求メッセージ受信キュー10に投入される。回復メッセージ処理手段14は後述の判断法によりこのメッセージが自ノードの担当かどうかを判断し(S407)、もし自ノードの担当であると判断したら回復メッセージ処理手段14によって回復の対象となるメッセージを通常メッセージ格納手段15から検索して取り出す(S408)。さらにこの取り出した通常メッセージを含む回復応答メッセージを生成し(S409)、この回復応答メッセージを回復応答メッセージ送信キュー13へ投入する(S410)。自ノードの担当でないと判断したときはこのメッセージは廃棄される。 【0102】次に、上記のS407において回復要求メッセージが自ノードの担当であるかどうかを判断する際の判断法について説明する。 【0103】この判断法には,例えば自ノードのノード順位番号とメッセージのシーケンス番号を被除数とし、これをある正の整数である除数で割った時の剰余を利用する方法がある。 【0104】以下、この方法について説明するが,以下の説明において正の整数Aを正の整数Bで割った時の剰余を求める剰余演算をMOD(A,B) で表わす。例えばMOD(5,2)=1、MOD(6,3)=0である。またMOD(1,2)=1、MOD(4,6)=4である。 【0105】最初に、ノード順位番号とメッセージのシーケンス番号に対して除数を2とした場合を例として示す。まず,各サーバ・ノードの回復メッセージ処理手段14は初期化が完了した段階で自ノードのノード順位OnについてMOD(On,2) を求めておく。この値はノード順位1,2,3,4,・・・に対して1,0,1,0,・・・となり、ノード順位が奇数か偶数かによって決定される。 【0106】次いで、各サーバ・ノードの回復メッセージ処理手段14は図8のS407において受信した回復要求メッセージのシーケンス番号Nm についてMOD(Nm,2) を求める。この値はメッセージのシーケンス番号1,2,3,4,・・・に対して1,0,1,0,・・・となり、メッセージのシーケンス番号が奇数か偶数かによって決定される。 【0107】次いで、各サーバ・ノードの回復メッセージ処理手段14は自ノードの MOD(On,2) と受信した回復要求メッセージの MOD(Nm,2) を比較し、一致すればその回復要求メッセージを自ノードの担当と判断する。すなわち、シーケンス番号が奇数の回復要求メッセージについてはノード順位が奇数のサーバ・ノードが自ノードの担当と判断し、シーケンス番号が偶数の回復要求メッセージについてはノード順位が偶数のサーバ・ノードが自ノードの担当と判断する。 【0108】この場合、サーバ・ノードの数が3以上の場合、シーケンス番号が奇数のメッセージについは、ノード順位が1,3・・・と複数のサーバ・ノードが担当と判断する。同じくサーバ・ノードの数が4以上であれば、シーケンス番号が偶数のメッセージについては、ノード順位が2,4・・・と複数のサーバ・ノードが自ノードの担当と判断する。 【0109】しかし、実施の形態3で説明したように、回復応答メッセージ送信キューから、回復応答メッセージが取り出されネットワークへ送出されるまでの時間を決定するタイマー(バックオフタイマー)の長さがノード順位が大きくなるほど長くなるので、通常はシーケンス番号が奇数のメッセージについてはノード順位1のサーバ・ノードが最も早く応答し、他のサーバ・ノードは応答する必要がない。同様にシーケンス番号が偶数のメッセージについては、通常はノード順位2のサーバ・ノードが応答し、他のサーバ・ノードは応答する必要がない。応答すべきサーバ・ノードが応答しない場合のみ、順次ノード順位の大きなサーバ・ノードが応答する。 【0110】以上のように、ノード順位番号とメッセージのシーケンス番号に対して除数を2とした場合は、2つのサーバ・ノードが自身のノード順位が偶数か奇数かに基づいて、他ノードから送信される回復要求メッセージのシーケンス番号が偶数のもののみ、あるいは奇数のもののみに対して、喪失メッセージの回復処理を分担して行うため、どのメッセージの喪失確率も一様である一般的状況に対して、サーバ・ノードの数が1つの場合に比べ平均的な回復処理用メッセージの数がほぼ半分になり、ネットワークの輻輳を防ぐことができる。 【0111】次に、ノード順位番号とメッセージのシーケンス番号に対して除数を3とした場合を例として示す。これも上述の除数2の場合と同様であり、各サーバ・ノードの回復メッセージ処理手段14は初期化が完了した段階で自ノードのノード順位OnについてMOD(On,3) を求めておく。この値はノード順位1,2,3,4,5,6・・・に対して1,2,0,1,2,0・・・となる。 【0112】ついで、各サーバ・ノードの回復メッセージ処理手段14は図8のS407において受信した回復要求メッセージのシーケンス番号NmについてMOD(Nm,3) を求める。この値はメッセージのシーケンス番号1,2,3,4,5,6・・・に対して1,2,0,1,2,0・・・となる。 【0113】次いで、各サーバ・ノードの回復メッセージ処理手段14は、自ノードの MOD(On,3) と受信した回復要求メッセージの MOD(Nm,3)を比較し、一致すればその回復要求メッセージを自ノードの担当と判断する。例えば、シーケンス番号1の回復要求メッセージについてはノード順位1,4,7・・・のサーバ・ノードが同時に自ノードの担当と判断する。シーケンス番号4,7・・・の回復要求メッセージについても同様にノード順位1,4,7・・・のサーバ・ノードが同時に自ノードの担当と判断する。またシーケンス番号2,5,8・・・の回復要求メッセージについてはそれぞれノード順位2,5,8・・・のサーバ・ノードが、シーケンス番号3,6,9・・・の回復要求メッセージについてはそれぞれノード順位3,6,9・・・のサーバ・ノードが同時に自ノードの担当と判断する。 【0114】しかし、実施の形態3で説明したように、回復応答メッセージ送信キューから、回復応答メッセージが取り出されネットワークへ送出されるまでの時間を決定するタイマー(バックオフタイマー)の長さがノード順位が大きくなるほど長くなるので、通常はシーケンス番号が1,4,7・・・のメッセージについてはノード順位1のサーバ・ノードが最も早く応答し、他のサーバ・ノードは応答する必要がない。同様にシーケンス番号が2,5,8・・・のメッセージについては通常はノード順位2のサーバ・ノードが、シーケンス番号が2,5,8・・・のメッセージについてはノード順位3のサーバ・ノードが応答し、他のサーバ・ノードは応答する必要がない。応答すべきサーバ・ノードが応答しない場合のみ、順次ノード順位の大きなサーバ・ノードが応答する。 【0115】以上のように、ノード順位番号とメッセージのシーケンス番号に対して除数を3とした場合は、3つのサーバ・ノードが喪失メッセージの回復処理を分担して行うため、どのメッセージの喪失確率も一様である一般的状況に対して、サーバ・ノードの数が1つの場合に比べ平均的な回復処理用メッセージの数がほぼ3分の1になり、ネットワークの輻輳を防ぐことができる。 【0116】以上の例では、ノード順位番号とメッセージのシーケンス番号に対して除数を2あるいは3とした場合を示したが、これ以外の除数を用いてもよく、除数と等しい数のサーバ・ノードが回復処理を優先的に分担することになる。この際,除数をサーバ・ノードの数を越える数値に設定するとどのサーバ・ノードも応答しないメッセージが発生することがあるので、除数はサーバ・ノードの数以下に設定しなければならない。 【0117】また、除数が1の場合は、ノード順位番号1のサーバ・ノードが回復処理を優先的に担当し、このサーバ・ノードが応答しない場合のみ順次ノード順位の大きなサーバ・ノードが応答する。 【0118】さらに、除数をサーバ・ノードの総数Nsと一致させれば、全てのサーバ・ノードが回復処理を分担して行うことになり効果が高い。これを実現するためには各サーバ・ノードがその時点でのサーバ・ノードの総数Nsを保持している必要があるが、副サーバ・ノードは図5に示した初期化のフローチャート内で、副サーバ・ノードと設定された後でメッセージの型としてSERVER_NUMBERを持つサーバ・ノード数通知メッセージを送信する(S211)ので、これを各サーバ・ノードは回復メッセージ処理手段14に保持し、サーバ数通知メッセージが送信されるたびにこれを更新することにより、常に最新のサーバ・ノードの総数Nsを保持することが可能となる。 【0119】以上のように、本実施形態では複数のサーバ・ノードが任意の正の整数Pを用いて、自身のノード順位Onに対するMOD(On,P)と他ノードから送信される回復要求メッセージのシーケンス番号Nmに対するMOD(Nm,P)を比較し、一致する場合のみ喪失メッセージの回復処理を分担して行うため、どのメッセージの喪失確率も一様である一般的状況に対して、サーバの数が1つの場合に比較して平均的な回復処理用メッセージの数がほぼP分の1になり、ネットワークの輻輳を防ぐことができる。特に、Pを全サーバ・ノード数と一致させた場合は全てのサーバ・ノードが回復処理をほぼ均等に分担するので、効果が高い。 【0120】本実施形態では、自身のノード順位Onに対するMOD(On,P)と他ノードから送信される回復要求メッセージのシーケンス番号Nmに対するMOD(Nm,P)を比較したが、On、Nm を一定の規則の下で変形した後Pによる剰余演算を行うなど、他の方法を適用することも可能である。 【0121】実施の形態5.次に、実施の形態5について、図5および図9〜図12に基づいて説明する。 【0122】前記の実施の形態1〜実施の形態4では、サーバ・ノードは初期化の段階のノード順位番号によって決定されていたが、ここではサーバ・ノードに障害が発生した際に、ノード順位が低い他のノードのノード順位を繰り上げ、この障害を起こしたサーバ・ノードに置き換わるようにした例ついて説明する。 【0123】まず、図について説明すると、図5は前記実施の形態2と同様であるこの実施の形態5におけるノードの初期化動作のフローチャートである。図9はこの実施の形態5におけるマルチキャスト通信システムを構成するブロック図、図10はこの実施の形態5における副サーバ・ノードの動作のフローチャート、図11はこの実施の形態におけるロギングバッファ同調処理のフローチャート、図12はこの実施の形態におけるクライアント・ノードの動作のフローチャートである。 【0124】次に、この実施の形態5の構成について図9のブロック図に基づいて説明するが、図において、通信装置1Aからバックオフタイマー設定手段20までは前記の実施の形態3と同一であるので、同一符号を付し説明を省略する。 【0125】この図9における新たなブロックである21は、回復メッセージ処理手段14が処理した回復要求メッセージと回復応答メッセージの個数をカウントする回復メッセージ計数手段、22は複数の副サーバ・ノード間でバッファのフラッシュ(削除)を同期して行うためのメッセージ処理を行う同期メッセージ処理手段である。 【0126】ここでバッファとは通常メッセージ格納手段15と回復要求メッセージ格納手段16の総称であり、以後も同様の意味で使用する。 【0127】また、ここではこれまでのメッセージの型に加えて、新たに以下の3種のメッセージの型を使用する。 1)複数のサーバ・ノード間でほぼ同時刻にバッファのほぼ同じ範囲のフラッシュを行い、各サーバ・ノードのバッファの内容を均一化するためサーバ・ノードから送信される同期メッセージであることを示す“REPAIR_SYNC”; 2)(1)の同期メッセージに対し、他ノードから送信されるバッファのフラッシュを拒否する応答である同期応答メッセージであることを示す“REPAIR_SYNC_REPLY“; 3)ノード順位を1繰り上げる(小さくする)ことを指示する順位更新メッセージであることを示す”ORDER_UPGRADE“である。 【0128】次に、本実施形態の動作について説明する。本実施形態では、既に説明した実施の形態2と同様に図5に示すフローチャートに従って初期化が行われ、この初期化によってノード順位1の主サーバ・ノードとノード順位2の副サーバ・ノード及びノード順位3以上のクライアント・ノードが決定される。 【0129】本実施形態の説明においては、信頼度基準値Nrely=2、すなわち主サーバ・ノードと1つの副サーバ・ノードを使用する場合について説明する。 【0130】まず、副サーバ・ノードの動作を図10に示すフローチャートに沿って説明する。副サーバ・ノードが起動すると(S501)、カウンタPserverDownの値を0にリセットし、次いでメッセージ受信手段7によりメッセージを受信し(S502)、メッセージ型判定手段9によりそのメッセージの型を判定する(S503)。 【0131】以下、受信したメッセージの型により分類し、その後の動作について説明する。 【0132】1)受信メッセージの型がREPAIR_SYNCの場合受信したメッセージの型がREPAIR_SYNCの場合には、回復メッセージ処理手段14が後述のロギングバッファ同調処理を行う(S504)。 【0133】2)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYである場合には、回復メッセージ計数手段21がカウンタPserverDownの値を0にリセットし(S505)、この回復応答メッセージのもととなった回復要求メッセージに対して自ノードが応答するために作成していた回復応答メッセージを、回復応答メッセージ送信キュー13から削除する(S506)。次いで、この回復応答メッセージが自ノードの要求したものかを判断し(S507)、もしそうであれば、回復メッセージ処理手段14は回復応答メッセージから通常メッセージ部分を取り出し(S508)、通常メッセージを通常メッセージ受信キュー5へ投入する(S509)。S507がNO、すなわち自ノードが要求したものでない場合にはこのメッセージを廃棄する。 【0134】3)受信メッセージの型がREPAIR_REQUESTの場合受信メッセージの型がREPAIR_REQUESTの場合には、実施の形態4で述べた方法でバックオフタイマー設定手段20がバックオフタイマーを設定し(S510)、回復メッセージ計数手段21がカウンタPserverDownの値を1だけ増加させる(S511)。もしここでカウンタPserverDownの値が、装置であらかじめ指定された値MaxFailの値よりも大きければ(S512)、マルチキャストドメイン管理手段17は同期メッセージ処理手段22に対して同期メッセージの作成を指示し、作成された同期メッセージはメッセージ送信手段6によって、マルチキャストドメインに送信される(S513)。 【0135】この後、回復メッセージ処理手段14が、ロギングバッファ同調処理を行う。ロギングバッファ同調処理が完了するとマルチキャストドメイン管理手段17は、各ノードの順位更新メッセージ(ORDER_UPGRADEメッセージ)をメッセージ送信手段6を用いてマルチキャストドメイン内に送信する(S515)。そして自ノードのノード順位番号を1だけ減少させ主サーバ・ノードに昇格する(S516)。もし、S512がNOの場合、すなわちカウンタPserverDownの値がMaxFailの値未満ならばこのメッセージは廃棄される。 【0136】4)受信メッセージの型がNORMALの場合受信メッセージの型がNORMALの場合は、これまでの実施の形態2と同様に、メッセージのシーケンス番号に飛びがあるかどうかを調べることにより、メッセージ喪失があるかどうかを調べる(S517)。メッセージ喪失の有無にかかわらず、通常メッセージ処理手段3は、このメッセージを後の回復処理のために通常メッセージ格納手段15を用いて保持する(S520)。その後、受信メッセージは、アプリケーション・プログラム1に引き渡される(S521)。 【0137】次に、図10中のロギングバッファ同調処理の動作を図11のフローチャートにしたがって説明する。ロギングバッファ同調処理が開始されると(S531)、回復要求メッセージ送信キュー内にまだ回復応答メッセージを受信していない回復要求メッセージが存在するかどうか調べる(S532)。もし存在する場合は、フラッシュ処理を拒否する同期応答メッセージを送信する(S533)。もし存在しない場合は、サーバ・ノードであれば同期メッセージに指定された範囲のバッファをフラッシュし(S535)、クライアント・ノードでは何も動作しない。 【0138】さらに、この実施の形態5におけるクライアント・ノードの動作を図12のフローチャートに沿って説明する。クライアント・ノードが動作状態に入ると(S541)、メッセージ受信手段7がネットワーク8からメッセージを受信し(S542)、メッセージ型判定手段がメッセージの型を判定する(S543)。 【0139】以下、受信したメッセージの型により分類し、その後の動作について説明する。 【0140】1)受信メッセージの型がORDER_UPGRADEの場合受信したメッセージの型がORDER_UPGRADEの場合には、このメッセージはマルチキャストドメイン管理手段17へ送られ、マルチキャストドメイン管理手段17はノード順位決定手段18にノード順位番号の更新を要求する。ノード順位が、系の信頼度基準値Nrelyよりも小さい場合には(S545)、このノードがサーバ・ノードに昇格する(S546)。 【0141】2)受信メッセージの型がREPAIR_SYNCの場合受信したメッセージの型がREPAIR_SYNCの場合には、前述のロギングバッファ同調処理が行われる(S547)。 【0142】3)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYの場合には、メッセージは回復応答メッセージ受信キュー11に投入され、回復メッセージ処理手段14が自ノードの要求への応答かを判断し(S548)、もしそうであればこのメッセージから通常メッセージ部分を取り出し(S549)、通常メッセージ部分を通常メッセージ受信キュー5へ投入する(S550)。 【0143】4)受信メッセージの型がREPAIR_REQUESTの場合受信メッセージの型がREPAIR_REQUESTの場合には、メッセージ型判定手段9は何もせずにこのメッセージを廃棄する。 【0144】5)受信メッセージの型がNORMALの場合受信メッセージの型がNORMALの場合は、前記の実施の形態2と同様に、メッセージのシーケンス番号に飛びがあるかどうかを調べることにより、メッセージ喪失があるかどうかを調べる(S517)。メッセージ喪失の有無にかかわらず、通常メッセージ処理手段3は、このメッセージを後の回復処理のために通常メッセージ格納手段15を用いて保持する(S520)。その後、受信メッセージは、アプリケーション・プログラム1に引き渡される(S521)。 【0145】以上のように、この発明の実施形態5では、主サーバ・ノードが回復処理を実行できなかった場合、すなわち主サーバ・ノードがダウンした場合に、副サーバ・ノードがこれを自動的に検知して主サーバ・ノードに昇格するとともに他のノードのノード順位更新を行い、不足する副サーバ・ノードを補うので、システム全体としての堅牢性を高めることができる。 【0146】実施の形態6.次に、実施の形態6について、図13〜図16に基づいて説明する。 【0147】前記の実施の形態5では、バッファのフラッシュについて、その時間間隔については触れていないが、この実施の形態6では、バッファ内に存在するメッセージをフラッシュする時間間隔を主サーバ・ノードの使用するアプリケーション・プログラムから設定し、その値に基づいてバッファをフラッシュする方法について説明する。 【0148】図について説明すると、図13はこの実施の形態6におけるマルチキャスト通信システムを構成するノードのブロック図、図14はこの実施の形態6のノードの初期化動作のフローチャート、図15はこの実施の形態6におけるバッファのフラッシュに関するフローチャート、図16はこの実施の形態6におけるバッファフラッシュのタイミング情報の送信に関するフローチャートである。 【0149】まず、この実施の形態6の構成について、図13のブロック図に基づいて説明するが、この図13において通信装置1Aからマルチキャストドメイン管理手段17までは前記の実施の形態1〜実施の形態5と同一であるので、同一符号を付し説明を省略する。なおバッファとは通常メッセージ格納手段15と回復要求メッセージ格納手段16の総称であることは前述の通りである。 【0150】図13における新たなブロックである23は、回復メッセージ処理手段14が通常メッセージ格納手段15、回復要求メッセージ格納手段16をフラッシュする際の時間間隔を設定するバッファフラッシュ間隔設定手段である。 【0151】次に本実施形態の動作について説明する。最初に、初期化動作を図14に示すフローチャートに沿って説明する。まず、装置が動作し始めると(S601)、バッファフラッシュ間隔設定手段23はアプリケーション・プログラム1Bから設定された時間間隔Ttmpをマルチキャストドメイン管理手段17に通知する(S602)。 【0152】次いで、マルチキャストドメイン管理手段17は、カウンタjoin_countの値を0に初期化し(S603)、以後前記の実施の形態1と同じ手順でマルチキャストドメイン管理手段17が自ノードをサーバ・ノードまたはクライアント・ノードとして設定する。 【0153】以下、まずサーバ・ノードが実施の形態1と同様に1つの場合について説明する。 【0154】マルチキャストドメイン管理手段17は自ノードをサーバ・ノードと設定した(607)場合、バッファフラッシュ間隔設定手段23に対してTtmpを確認した旨通知する。バッファフラッシュ間隔設定手段23はマルチキャストドメイン管理手段17からこのTtmp確認の通知を受け取ると、TrelevancyにTtmpの値を設定し(S612)、次いでバッファフラッシュ間隔設定手段23は回復メッセージ処理手段14に対してTrelevancyを通知する。 【0155】一方、DOMAIN_JOIN_REPLYを受信して自ノードをクライアント・ノードとして設定した場合には、DOMAIN_JOIN_REPLYメッセージに含まれる値をTrelevancyに設定する。 【0156】このようにして、この装置は初期化され、サーバ・ノードの場合にはアプリケーション・プログラムから指定された値TtmpがTrelevancyに設定される。 【0157】次に、初期化後のサーバ・ノードの動作について図15のフローチャートに沿って説明する。まず、サーバ・ノードは回復メッセージ処理手段14において、Trelevancyを用いてタイマーをセットする(S622)。回復メッセージ処理手段14は、このタイマーが切れた時に、通常メッセージ格納手段15と回復要求メッセージ格納手段16に格納されているメッセージのうち、現在の時刻TnowからTrelevancyを引いた時刻以前に格納したメッセージを消去する(S623)。以下、S622以降を繰り返す。 【0158】以上のように、この実施の形態6では、サーバ・ノードにおけるメッセージ格納バッファのフラッシュを、サーバ・ノードが使用するアプリケーション・プログラム1Bから指定された時間間隔に基づいて行うことにより、バッファのフラッシュを行わない場合と比べてバッファサイズを小さく保つことができるので、サーバ・ノードにおける処理性能をあげることができる。 【0159】以上では、サーバ・ノードが前記実施の形態1と同様に1つの場合について説明したが、実施の形態2に示されるような、サーバ・ノードが主サーバ・ノードおよび副サーバ・ノードから構成される場合にも適用可能であり、図16のフローチャートのように、主サーバ・ノードは他のノードからのDOMAIN_JOIN_REQUESTメッセージに対して、Trelevancyをデータとして含むDOMAIN_JOIN_REPLYメッセージを返答するようにする。副サーバ・ノードではこの主サーバ・ノードから通達されたTrelevancyに基づき主サーバ・ノードと同様にバッファのフラッシュを行う。 【0160】さらに、前記実施の形態5のように、主サーバ・ノードが変更される可能性がある場合には、クライアント・ノードを含め、各ノードは主サーバ・ノードあるいは副サーバ・ノードへと変更されることに備えてTrelevancyを保存する。 【0161】実施の形態7.次に実施の形態7について、図17〜図21に基づいて説明する。 【0162】前記の実施の形態6では、サーバ・ノードにおけるメッセージ格納バッファフラッシュの時間間隔を、初期化の際に主サーバ・ノードの使用するアプリケーション・プログラムから指定された値に設定する例を示したが、この時間間隔を過去の回復要求メッセージの履歴に基づいて設定するようにした実施の形態を説明する。 【0163】まず、図について説明すると、図17はこの実施の形態7におけるマルチキャスト通信システムを構成する各ノードのブロック図、図18はこの実施の形態7におけるノードの初期化動作のフローチャート、図19はこの実施の形態7におけるサーバ・ノードの受信動作のフローチャート、図20はこの実施の形態7におけるバッファのフラッシュの時間間隔の変更に関するフローチャート、図21はこの実施の形態7におけるバッファのフラッシュに関するフローチャートである。 【0164】次に、この実施の形態7の構成について図17のブロック図に基づいて説明するが、この図17において、通信装置1Aからマルチキャストドメイン管理手段17までは前記の実施の形態1〜実施の形態6と同一であるので、同一符号を付し説明を省略する。また前記の実施の形態6と同様に23は回復メッセージ処理手段14が通常メッセージ格納手段15、回復要求メッセージ格納手段16をフラッシュする際の時間間隔を設定するバッファフラッシュ間隔設定手段である。 【0165】この図17における新たなブロックである24は、バッファフラッシュ間隔設定手段23内に設けられたフラッシュ間隔計算手段である。 【0166】次に、この実施の形態7の動作について説明する。最初に初期化動作を図18に示すフローチャートに沿って説明する。まず装置が動作し始めると(S701)、バッファフラッシュ間隔設定手段23はアプリケーションから設定された時間間隔TtmpおよびΔTtmpをマルチキャストドメイン管理手段17に通知する(S702)。 【0167】次いで、マルチキャストドメイン管理手段17は、カウンタjoin_countの値を0に初期化し(S703)、以後実施の形態1と同じ手順でマルチキャストドメイン管理手段17が自ノードをサーバ・ノードまたはクライアント・ノードとして設定する。 【0168】マルチキャストドメイン管理手段17は自ノードをサーバ・ノードとみなした場合、バッファフラッシュ間隔設定手段23に対して保持していたTtmpおよびΔTtmpを通知する。バッファフラッシュ間隔設定手段23はマルチキャストドメイン管理手段17からTtmpおよびΔTtmpを受け取ると、TrelevancyにTtmpの値を設定し、ΔTにΔTtmpの値を設定する(S712)。バッファフラッシュ間隔設定手段23は回復メッセージ処理手段14に対してTrelevancyおよびΔTを通知する。 【0169】一方、DOMAIN_JOIN_REPLYメッセージを受信して自ノードをクライアント・ノードとして設定した場合には、マルチキャストドメイン管理手段17はJOIN_REPLYメッセージに含まれる値をTrelevancyに設定する。このようにして、この装置は初期化され、サーバ・ノードの場合にはアプリケーション・プログラムから指定された値TtmpがTrelevancyに、ΔTtmpがΔTが設定される。 【0170】次に、初期化後のサーバ・ノードのメッセージ受信動作について図19のフローチャートに沿って説明する。まず、サーバ・ノードが動作状態に入ると(S721)、メッセージ受信手段7がネットワーク8からメッセージを受信し(S722)、メッセージ型判定手段がメッセージの型を判定する(S723)。 【0171】以下受信したメッセージの型により分類し、その後の動作について説明する。 【0172】1)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYの場合には、メッセージは回復応答メッセージ受信キュー11に投入され、回復メッセージ処理手段14が自ノードの要求への応答かを判断し(S724)、もしそうであればこのメッセージから通常メッセージ部分を取り出し(S725)、通常メッセージ部分を通常メッセージ受信キュー5へ投入する(S726)。 【0173】2)受信メッセージの型がREPAIR_REQUESTの場合受信したメッセージの型がREPAIR_REQUESTの場合には、メッセージは回復要求メッセージ受信キュー10に投入され、回復メッセージ処理手段14によって受信メッセージのタイムスタンプTrがバッファフラッシュ間隔設定手段に通知され(S727)た後、回復の対象となるメッセージを通常メッセージ格納手段15から検索して取り出す(S728)。取り出した通常メッセージの持つタイムスタンプTnがバッファフラッシュ間隔設定手段に通知され(S729)、さらにこの取り出したメッセージを格納する回復応答メッセージを生成し(S730)、回復応答メッセージを回復応答メッセージ送信キュー13へ投入する(S831)。 【0174】3)受信メッセージの型がNORMALの場合受信したメッセージの型がNORMALの場合は、前記の実施の形態1と同様に、メッセージのシーケンス番号に飛びがあるかどうかを調べることにより、メッセージ喪失があるかどうかを調べる(S517)。メッセージ喪失の有無にかかわらず、通常メッセージ処理手段3は、このメッセージを後の回復処理のために通常メッセージ格納手段15を用いて保持する(S520)。その後、受信メッセージは、アプリケーション・プログラム1に引き渡される(S521)。 【0175】一方、バッファフラッシュ間隔設定手段23においては、図20のフローチャートに示すように、新たなTr、Tnの組が通知された時(S742)にフラッシュ間隔計算手段24を用いて(Tr−Tn+ΔT)の値を求め、この値を新たなTrelevancyとして(S743)回復メッセージ処理手段14に通知する(S744)。 【0176】また、この時、回復メッセージ処理手段14においては、図21のフローチャートに示すように、バッファフラッシュ間隔設定手段23から新しいTrelevancyを通知されると(S752)、Trelevancyを新しい値に更新し(S753)する。S752がNO、すなわち新しいTrelevancyを通知されていない場合には、Trelevancyの値は更新しない。次に、回復メッセージ処理手段14は、Trelevancyを用いてタイマーをセットする(S754)。回復メッセージ処理手段14は、このタイマーが切れるまで待機し(S755)、通常メッセージ格納手段15と回復要求メッセージ格納手段16に格納されているメッセージのうち、現在の時刻TnowからTrelevancyを引いた時刻以前に格納したメッセージを消去する(S756)。以下、S752以降を繰り返す。 【0177】以上のように、本実施形態では、メッセージの回復要求を受け取った際に、その回復要求メッセージのタイムスタンプTrと、その回復要求メッセージが回復を要求している通常メッセージのタイムスタンプTnの差を取り、この値にアプリケーションから初期化時に指定されたΔTを加えた値を新しいTrelevancyとして設定することで、バッファフラッシュの時間間隔およびフラッシュする範囲を動作環境に合わせて動的に変更することが可能となり、メッセージの回復に関する信頼性の向上やサーバ・ノードにおける処理性能をあげることができる。 【0178】また、以上の実施の形態ではTrelevancyを決定するのに一組のTrとTnを使用する例を示したが、複数のTrとTnの組を使用してTrelevancyを決定することも可能である。 【0179】以下にその一例の手順を示すが、この手順はフラッシュ間隔計算手段24内で実行する。 (手順1)回復要求メッセージを受信するたびにその時のTrとTnの差(Tr−Tn)を求め、この値を蓄積していく。 (手順2)この複数の(Tr−Tn)の平均値Mおよび標準偏差σを求める。 (手順3)このMおよびσを使用して、Trelevancy=M+Sσとして、Trelevancyを求める。このSは回復処理の信頼性を決定する定数であり、これが大きいと必要なバッファサイズは大きくなるが回復処理の信頼性は高くなる。このSはアプリケーション・プログラム1BからΔTtmpの代わりに指定すればよい。 【0180】このように、複数の(Tr−Tn)の平均値M、標準偏差σおよび定数SからTrelevancyを決定すれば、統計的手法から回復処理の信頼性を定量的に把握しながらバッファフラッシュの時間間隔やフラッシュする範囲を決定することが可能となる。 【0181】また、この複数の(Tr−Tn)の数に制限を設け、一定の数を越えるものは古い順に廃棄し、最近の一定の数の(Tr−Tn)のみからTrelevancyを決定するようにすれば、メッセージ喪失の発生状況の時間的変動にも対応可能である。この廃棄する順は、TrまたはTnが古い順等とすればよい。 【0182】このように、バッファフラッシュ間隔設定手段23内のフラッシュ間隔計算手段24におけるTrelevancyの計算方法を変化させることで、信頼性を重視するシステムや処理性能を重視するシステムが構築できる。 【0183】実施の形態8.次に、実施の形態8を図22〜図25に基づいて説明する。 【0184】前記の実施の形態7では、バッファフラッシュの時間間隔を過去の回復要求メッセージの履歴に基づいて動的に設定するようにした例を示したが、本実施形態では、サーバ・ノードにおけるバッファ内に存在するメッセージを、複数サーバ間で同期してフラッシュする際に使われる同期メッセージを必要な場合にのみ生成・送信する方法について説明する。 【0185】まず、図について説明すると、図22はこの実施の形態8におけるマルチキャスト通信システムを構成する各ノードのブロック図、図23はこの実施の形態8のノードの初期化動作のフローチャート、図24はこの実施の形態8におけるサーバ・ノードの受信動作のフローチャート、図25はこの実施の形態8におけるバッファのフラッシュに関するフローチャートである。 【0186】最初に、この実施の形態8の構成を図22に示すブロック図を用いて説明するが、この図22において、通信装置1Aからマルチキャストドメイン管理手段17までは前記の実施の形態1〜実施の形態7と同一であるので、同一符号を付し説明を省略する。また22は前記実施の形態5で説明したように、複数のサーバ間でバッファのフラッシュを同期して行うためのメッセージ処理を行う同期メッセージ処理手段、23は実施の形態6および実施の形態7で説明したように、回復メッセージ処理手段14が通常メッセージ格納手段15、回復要求メッセージ格納手段16ををフラッシュする際の時間間隔を設定するバッファフラッシュ間隔設定手段である。 【0187】図22における新たなブロックである25は、回復メッセージ処理手段14内に設けられた、同期メッセージを作成する同期メッセージ作成手段である。 【0188】ついで、この実施の形態8の動作について説明する。まず、初期化動作を図23のフローチャートに沿って説明する。装置が動作し始めると(S801)、バッファフラッシュ間隔設定手段23はアプリケーションから設定された時間間隔Ttmpをマルチキャストドメイン管理手段17に通知する(S802)。 【0189】以後、図23の破線で囲んだ内部のように実施の形態2と同様の手順に従って、このノードを主サーバ・ノードまたは副サーバ・ノード、あるいはクライアント・ノードとして設定する。 【0190】主サーバ・ノード、あるいは副サーバ・ノードと設定されたノードでは、マルチキャストドメイン管理手段17がバッファフラッシュ間隔設定手段23に対してTtmpを通知する。バッファフラッシュ間隔設定手段23はマルチキャストドメイン管理手段17からTtmpを受け取ると、TrelevancyにTtmpの値を設定する(S812)。バッファフラッシュ間隔設定手段23は回復メッセージ処理手段14に対してTrelevancyを通知する。 【0191】次に、回復要求メッセージカウンタCrとCrprevを0に初期化する。また同期メッセージ内に設定する値であり、削除するメッセージの範囲を示すSYNC_RANGEをすべてのメッセージをあらわすFULLRANGEに設定し(S814)、同期メッセージのタイムアウト時間をあらわすTsyncを標準値に設定する。 【0192】クライアント・ノードとして設定された場合には、JOIN_REPLYメッセージに含まれる値をTrelevancyに設定する。 【0193】このようにしてこの装置は初期化され、Trelevancyが設定されるとともに、サーバ・ノードの場合には回復要求メッセージカウンタCr、Crprevが0に初期化される。 【0194】次に初期化後のサーバ・ノードにおける喪失メッセージの回復用のメッセージ格納バッファのフラッシュ動作について図24のフローチャートに沿って説明する。サーバ・ノードが動作状態に入ると(S821)、メッセージ受信手段7がネットワーク8からメッセージを受信し(S822)、メッセージ型判定手段がメッセージの型を判定する(S823)。 【0195】以下受信したメッセージの型により分類し、その後の動作について説明する。 【0196】1)受信メッセージの型がREPAIR_REPLYの場合受信したメッセージの型がREPAIR_REPLYの場合には、前記の実施の形態1と同様に自ノードの要求への応答かを判断し(S824)、そうであればこのメッセージから通常メッセージ部分を取り出し(S825)、通常メッセージ部分を通常メッセージ受信キュー5へ投入する(S826)。S824がNO、すなわち自ノードの要求への応答でない場合には、このメッセージは廃棄される。 【0197】2)受信メッセージの型がREPAIR_REQUESTの場合受信したメッセージの型がREPAIR_REQUESTの場合には、メッセージは回復要求メッセージ受信キュー10に投入され、回復要求メッセージカウンタCrを1増やし(S827)た後、回復の対象となるメッセージを通常メッセージ格納手段15から検索して取り出す(S828)。この取り出したメッセージを含む回復応答メッセージを生成し(S829)、回復応答メッセージを回復応答メッセージ送信キュー13へ投入する(S830)。 【0198】3)受信メッセージの型がNORMALの場合受信したメッセージの型がNORMALの場合は、前記の実施の形態1と同様に、メッセージのシーケンス番号に飛びがあるかどうかを調べることにより、メッセージ喪失があるかどうかを調べる(S831)。メッセージ喪失の有無にかかわらず、通常メッセージ処理手段3は、このメッセージを後の回復処理のために通常メッセージ格納手段15を用いて保持する(S834)。その後、受信メッセージは、アプリケーション・プログラム1に引き渡される(S835)。 【0199】一方、サーバ・ノードにおける回復メッセージ処理手段14においては、図25のフローチャートに示すように、喪失メッセージの回復処理用のメッセージ格納バッファをフラッシュする。この動作について以下に説明する。 【0200】まず、回復要求メッセージのカウンタであるCrと前回までの値を持つCrprevを比較する(S842)。 【0201】もし前回のフラッシュ以降回復要求メッセージが無くCr=CrprevであればTrelevancyを用いてタイマーをセットする(S843)。タイマーが切れるとバッファに存在するメッセージの内、現在の時刻Tnow−Trelevancyで表わされる時刻よりも古いタイムスタンプを持つメッセージをバッファから削除する(S845)。次に、同期メッセージ内に指定する、削除するメッセージの範囲を示すSYNC_RANGEを全体をあらわす値であるFULLRANGEに設定し(S846)、S842に戻る。 【0202】このように、前回のフラッシュ以降新たな回復要求メッセージが出ていなければ、各サーバ・ノードがそれぞれ自サーバ・ノードのバッファをTrelevancyに基づいてフラッシュする。 【0203】次に、S842がNOの場合、すなわち前回のフラッシュ以降回復要求メッセージが送信された場合は現在設定されているSYNC_RANGEの値を用いて同期メッセージを作成し送信する(S847)。次に同期メッセージのタイムアウト時間を示すTsyncを用いてタイマーをセットする(S848)。このタイマーが切れたかどうかを判定し(S849)、もし切れていれば、バッファからSYNC_RANGEの値で指定されている範囲のメッセージを削除し(S850),CrprevにCrの値を設定する(S851)。 【0204】もし、S849でNOの場合、すなわちタイマーがきれていない場合には他ノードからフラッシュ停止を要求する同期応答メッセージを受信しているかどうかを判定し(S852)、受信していなければS849に戻る。 【0205】また、S852でYESの場合、すなわち同期応答メッセージを受信している場合には回復要求メッセージを受信しているかどうかを判定し(S853)、受信していればCrを1増加して(S854)、さらにSYNC_RANGEを現在の値のよりも小さく再設定し(S855)、Tsyncを用いたタイマーが切れるまで待機し(S856),Tsyncの値を増加した(S858)後、S847に戻る。もしS853でNOの場合にはS849へと戻る。以上の操作を繰り返す。 【0206】以上のように、この発明の実施形態8では、複数サーバ・ノード間での同期メッセージに基づいたバッファのフラッシュを、回復要求メッセージが送信された場合にのみ行い、さらに回復要求メッセージが送信された場合にフラッシュするバッファの範囲を小さくするとともに、同期メッセージが送信されてから各サーバ・ノードがバッファのフラッシュを行うまでの時間を長くすることにより、回復要求に応じるサーバ・ノードの信頼性を向上することが可能となる。 【0207】 【発明の効果】以上のようにこの発明では、マルチキャスト通信システムにおいて、各ノードに優先順位番号を付け、メッセージ喪失が検出された場合、最優先順位番号から所定の優先順位番号までの優先順位番号を持つ各ノードが、該喪失メッセージの回復を要求する該回復要求メッセージに対して応答するか否かの判定を行うようにしたので、その他のノードは回復処理に要する負荷を軽減できるという効果がある。 【0208】また、メッセージ喪失が検出された場合、回復要求メッセージに対して応答すると判定したノードは第1の回復応答メッセージを作成して所定時間t1経過後送信するように設定し、上記所定時間t1経過以前に他ノードがこの回復要求メッセージに対する第2の回復応答メッセージを送信した場合には上記第1の回復応答メッセージの送信を中止し、上記所定時間t1経過までに他ノードが第2の回復応答メッセージを送信しなかった場合は上記第1の回復応答メッセージを送信するようにしたので、回復応答メッセージの重複によるネットワークの輻輳が防げるという効果がある。 【0209】また、最優先順位番号を持つノードのみが応答すると判定するようにしたので、その他のノードは回復処理に要する負荷を軽減できるという効果がある。 【0210】また、上記所定の優先順位番号は、最優先順位番号を有するノードの初期化動作時に決定される固有の値に設定されるようにしたので、設定を容易に行なえるという効果がある。 【0211】また、上記所定の優先順位番号は、最優先順位番号を有するノード上に搭載されたソフトウエアによって任意に設定可能であるようにしたので、システムの動作状況を反映した柔軟性が高い運用ができるという効果がある。 【0212】また、メッセージ喪失を検出したノードが、該喪失メッセージの回復を要求する回復要求メッセージに判別番号を付けて送信し、該回復要求メッセージを受信した上記最優先順位番号から上記所定の優先順位番号までの優先順位番号を持つ各ノードが、該判別番号と自ノードの優先順位番号を用いて自ノードが応答するか否かの判定を行うようにしたので、回復処理を担当するノード間で負荷分散が可能となり、各ノードの負荷を軽減できるという効果がある。 【0213】また、回復処理中のノードが回復処理不能に陥った場合、その回復処理不能に陥ったノードの優先順位番号を越える優先順位番号を持つ各ノードの優先順位番号を繰り上げるようにしたので、回復処理を行うノードの数を維持し、システムの信頼性を確保できるという効果がある。 【0214】また、上記所定時間t1は、回復応答メッセージの送信元ノードの優先順位番号によって決定されるようにしたので、回復応答メッセージの重複によるネットワークの輻輳が防止できるという効果がある。 【0215】また、最優先順位番号から所定の優先順位番号までの優先順位番号を持つノードがバッファ内に保持しているメッセージを、最優先順位番号を持つノードが削除範囲を設定して削除するようにしたのでバッファサイズを小さくできるという効果がある。 【0216】また、最優先順位番号から所定の優先順位番号までの優先順位番号を持つノードがバッファ内に保持しているメッセージを、過去いずれかのノードがメッセージを送信した時刻と、いずれかのノードが上記メッセージの喪失を起こし、上記喪失したメッセージの回復を要求して回復要求メッセージを送信した場合の送信時刻との時間間隔に基づいて削除範囲を決定して削除するようにしたので、バッファ削除範囲にシステムの履歴が反映され回復処理の信頼性が高くなるという効果がある。 【0217】また、回復要求メッセージの送信頻度の増大に応じてバッファの削除範囲を縮小するようにしたので、バッファ削除範囲にシステムの動作状況を反映できて回復処理の信頼性が高くなるという効果がある。 【0218】また、最優先順位番号から前記所定の優先順位番号までの優先順位番号を持つノードが回復処理用にバッファ内にそれぞれ保持している過去のメッセージを、最優先順位番号を有するノードがいずれかのノードから回復要求メッセージを受信した場合にのみ、略同一時刻に削除するようにしたので、各ノードにおけるバッファ削除タイミングにシステムの動作状況が反映され回復処理の信頼性が高くなるという効果がある。 【0219】また、ネットワークに接続された複数のノード間相互の通信システムであるマルチキャスト通信システムにおいて、上記各ノードに優先順位番号を付け、いずれかのノードがメッセージの喪失を検出して第1の回復要求メッセージを送信する際、該第1の回復要求メッセージを作成してから送信するまでの所定時間を各ノードの優先順位番号によって決定し、この所定時間内に他ノードが同一の喪失メッセージに対する回復要求メッセージを送信し、これに対する回復応答メッセージを受信した場合には上記第1の回復要求メッセージの送信を中止するようにしたので、回復応答メッセージの重複によるネットワークの輻輳が防止できるという効果がある。 【0220】また、マルチキャスト通信システム参加時に参加確認メッセージを受信しなかったノードが最優先順位番号を自ノードに設定し、以後参加するノードには、この最優先順位番号を有するノードが参加確認メッセージを送信して優先順位番号を通知するようにしたので、優先順位付けが容易で、参加ノードの増加にも対応しやすいという効果がある。
|
| 【出願人】 |
【識別番号】000006013 【氏名又は名称】三菱電機株式会社
|
| 【出願日】 |
平成9年(1997)8月27日 |
| 【代理人】 |
【弁理士】 【氏名又は名称】宮田 金雄 (外2名)
|
| 【公開番号】 |
特開平11−65971 |
| 【公開日】 |
平成11年(1999)3月9日 |
| 【出願番号】 |
特願平9−230717 |
|