メッセージ配信プログラム、メッセージ配信方法、およびノード
【課題】 ネットワークにおいて、メッセージを配信しながら最短経路木を構築し、重複せずにメッセージを配信するメッセージ配信技術を提供する。
【解決手段】
本発明は、すでに計算済みの最短経路木にメッセージを送信し、受信した他ノードからの返信メッセージに載っているノード接続情報を使って最短経路木を拡張し、その拡張した最短経路木にメッセージを送信することによって、最短経路木の作成とメッセージ配信を同時に行うことを特徴とするメッセージ配信手法に関する。
【解決手段】
本発明は、すでに計算済みの最短経路木にメッセージを送信し、受信した他ノードからの返信メッセージに載っているノード接続情報を使って最短経路木を拡張し、その拡張した最短経路木にメッセージを送信することによって、最短経路木の作成とメッセージ配信を同時に行うことを特徴とするメッセージ配信手法に関する。
【発明の詳細な説明】
【背景技術】
【0001】
近年、コンピュータネットワークに接続する多数のユーザー間で、特定のデータを要求および提供するためにメッセージを配送するマルチキャスト通信が注目を集めている。
【0002】
しかし、ネットワーク上の全てのユーザーに対してメッセージを配信する場合、メッセージが重複してネットワークの通信量が大きくなり、負荷がかかってしまう。
【0003】
これに対し、受信メッセージをキャッシュに格納しておくことで重複したメッセージを破棄する方式(特許文献1参照)や、データ配信の最短経路を求めてからデータを配信する方式(特許文献2参照)が提案されている。
【0004】
しかしながら、特許文献1では、ネットワークが複雑な場合、破棄される重複メッセージが多くなり、メッセージを識別するIDも格納する分、メモリが余計に消費される。また、特許文献2では、実用的な時間で最短経路が求められるネットワークの大きさには限りがあり、最短経路を事前に求めることは難しくなる。さらに、最短経路を求めるサーバが必要である上、同時多発的なデータ配信時に負荷がかかる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−021770号公報
【特許文献2】特開2004−208289号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述してきた問題を解決するため、本発明では、メッセージを配信しながら最短経路木を構築し、重複せずにメッセージを配信するメッセージ配信技術を提供する。
【課題を解決するための手段】
【0007】
本発明の一態様は、複数のノードからなるネットワークにおけるメッセージ配信プログラムであって、ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信ステップと、 前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新ステップと、前記拡張した最短経路木に前記メッセージを送信するステップと、を送信元ノードに実行させるメッセージ配信プログラムに関する。
【0008】
上述したように、ノード接続情報を用いて拡張した最短経路木にメッセージを送信する構成とすることによって、重複メッセージをなくすことが可能となる。
【発明の効果】
【0009】
以上、本発明によれば、返信メッセージのノード接続情報を用いて拡張した最短経路木にメッセージを送信することによって、重複メッセージをなくすことが可能となり、ネットワークにおける通信量を減少させることができる。また、最短経路の計算に必要なネットワーク情報をメッセージ配信しながら収集するのでサーバが不要となる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施の形態になるネットワークにおけるノードの基本構成を示す図である。
【図2】本発明の実施の形態になるノードがメモリに保持する配信情報テーブルのデータ構造を示す図である。
【図3】本発明の実施の形態になる送信メッセージ及び返信メッセージのデータ構造を示す図である。
【図4】本発明の実施の形態になるネットワーク内の各ノードにおける接続情報を説明する図である。
【図5】本発明の実施の形態になるネットワークの最短経路木の計算結果(第1回目)を示す図である。
【図6】本発明の実施の形態になるネットワークの最短経路木の計算結果(第2回目)を示す図である。
【図7】本発明の実施の形態になるネットワークの最短経路木の計算結果(第3回目)を示す図である。
【図8】本発明の実施の形態になる送信元ノードからのメッセージ送信フローを示す図である。
【図9】本発明の実施の形態になる送信メッセージの転送フローを示す図である。
【図10】本発明の実施の形態になる返信メッセージの送信フローを示す図である。
【図11】本発明の実施の形態になるネットワークの接続状態が変わった場合の最短経路木の修正を説明する図である。
【図12】本発明の実施の形態になるネットワークの接続状態が変わった場合の最短経路木の修正結果を示す図である。
【図13】本発明の実施の形態になる最短経路木のマージ処理フローを示す図である。
【図14】本発明の実施の形態になる最短経路木のマージを説明する図である。
【発明を実施するための形態】
【0011】
以下、図面にもとづいて本発明の実施形態を説明する。
【0012】
図1は、本発明を適用するネットワークの構成例、および該ネットワークを形成する各ノードの基本構成を示している。
【0013】
本ネットワークは、メッセージの送受信装置である複数のノード1(A、B・・・G)とメッセージの送受信経路であるノード1間を結ぶ通信路2とから構成される。以降の実施例では、A、B・・・Gの7個のノード1(ここで、A、B・・・Gは、ノード名を表わしている)が、図のように接続されたネットワーク構成を例として説明する。なお、図では、ノードAをメッセージの送信元ノードとしている。
【0014】
各ノード1は、メッセージの受け皿であるメッセージキュー11(最短経路計算中のメッセージ受信バッファ)を持つメッセージ送受信部10と、最短経路木を構築する最短経路計算部20と、メッセージ本文の内容を実行処理するメッセージ処理部30(例えば、メッセージ本文に転送ファイルがある場合、該ファイルをノードに保存する等の処理)と、それら各部で使用するノード接続情報101、最短経路木102、及びメッセージ本文103のフィールド項目からなる配信情報テーブル100を格納するデータ格納領域(メモリ)50とから構成されている。
【0015】
ここで、ノード1は、図示していないが、CPU(Central Processing Unit )、メモリを有するコンピュータであり、メッセージ送受信部10、最短経路計算部20、およびメッセージ処理部30の各処理を実行するプログラムは、補助記憶装置などに蓄積され、起動時にメモリに展開され、CPUによって実行処理される。
【0016】
また、該プログラムは、フレキシブルディスク、CD(Compact Disk)、MO(Magneto-Optical Disk)などの可搬の記憶媒体に記録され、各記憶媒体に応じたドライバによって読み取る構成としてもよい。
【0017】
本発明の一つの特徴は、メッセージ配信と最短経路計算を同時に行うことにある。送信元ノードAは、ノードの接続情報を記憶した最短経路木(ノードB、C)にメッセージを送信し、ノードB、Cからの返信メッセージに載っているノード接続情報を使って最短経路木を拡張する。この拡張した最短経路木にメッセージを送信することによって、最短経路木の作成とメッセージ配信が同時に行われる。このように、最短経路計算のアルゴリズムにメッセージ送信を組み合わせることにより、最短経路でメッセージを送信するため、重複メッセージをなくすことが可能となる。最短経路木は、徐々に拡張し大きくなっていくが、最短経路が計算できる限界までメッセージ送信が可能となる。
【0018】
また、別な特徴は、最短経路配信からマルチキャスト配信に切り替えを可能とすることにある。メッセージ配信時に計算する最短経路木から、最短経路木の深さと平均分枝数を取得し、最短経路木を使うメッセージ配信の総メッセージ数と隣接する全てのノード1にメッセージを送信する従来型のマルチキャスト配信の総メッセージ数を計算する。そして、最短経路木を使う場合の総メッセージ数の方が多くなる場合に、それ以上の最短経路木の更新(拡張)を停止し、最短経路木以外のノード1に対しては、従来のマルチキャスト配信を行う。
【0019】
さらに、最短経路路木を保持するメモリが限界になった場合にも、配信手法を切り替えることとする。この切り替えにより、メッセージ配信コストが従来手法のコストよりも大きくなることを防ぎ、また、最短経路木作成の限界値を予め計算しなくても、メモリ容量の限界までメッセージを配信することができる。
【0020】
図2は、ノード1がデータ格納領域50上に保持する配信情報テーブル100のデータ構造を示している。配信情報テーブル100は、ノード接続情報101、最短経路木102、およびメッセージ本文103のフィールド項目から構成されている。
【0021】
ノード接続情報101は、ノード1の接続状態を示し、そのノード間の接続状態をノード対(A:B、A:C等)として表わされ、一つ以上のノード対の集合で構成されている。実施例では、ノードAにおいて、集合{A:B、A:C}は、ノードAの接続相手が、ノードBとノードCであることを示している。なお、ノード接続情報101は、ノード1がネットワークに接続されたタイミングで接続しているノード情報が格納される。
【0022】
最短経路木102のデータは、図1のネットワークの例を用いて示している。最短経路木102もノード接続情報と同様に、ノード対の集合で表す。ここで、ノード対には、順番があり、左が親、右が子の関係になり、また、上から下へ根から葉の順序で形成される木構造になっている。また、最短経路木102には、ノード1がメッセージの送信元になった際に、最初にノード接続情報からコピーする(後述する図8送信元フローのS11)ことによって格納される。
【0023】
メッセージ本文103では、ユーザがノード1に対してメッセージ送信を要求する際に、送信したい内容をメッセージ本文として渡すことを想定しており、ノード1がこの要求を受けたときに、渡されたメッセージ本文が格納される。
【0024】
図3は、送信メッセージ200と返信メッセージ300のデータ構造を示している。(a)は、送信元ノードAからBに送信する場合の送信メッセージ200のデータ構造を示し、(b)は、送信メッセージ200を受信したノードBから送信元Aに返送される場合における返信メッセージ300のデータ構造を示している。
【0025】
送信用メッセージ200は、送信用最短経路木202とメッセージ本文203から構成され、例えば、「送信用最短経路木」のデータとしては、A:B、A:Cのようなノード対で表されている。また、返信メッセージ300は、削除経路301、返信用最短経路木302、およびメッセージ本文303の項目から構成されている。例えば、「削除経路」ではB:Eの経路が削除され、「返信用最短経路木」では、ノードBからの返信経路として、B:A、B:D、B:Eのノード対が格納されている。
【0026】
図4は、ノード1の配信情報テーブル100のデータ構造の一つである、ノード接続情報101のデータ構造をネットワーク内の各ノード毎に示している。例えば、ノードEでは、接続ノードB、C、D、Fが、E:B、E:C、E:D、E:Fのノード対の集合として示されている。
【0027】
図5〜図7では、最短経路木102のデータ構造をネットワークの例を用いて示している。最短経路木102もノード接続情報101と同様に、ノード対の集合で表わされる。実施例では、ノードAからメッセージ配信を開始した場合の最短経路木拡張の様子を示しており、図5は、最短経路計算部20によって計算された第1回目の計算結果によるノードAの最短経路木102を示し、また、図6は、第2回目の計算結果を、図7は、第3回目の計算結果を示している。なお、ネットワーク図中において、最短経路木は太線で示している。
【0028】
ノードAの最短経路木は、第1回目の計算によって、A:B、A:C、第2回目の計算によって、A:B、A:C、B:D、B:E、C:F、および第3回目の計算によって、A:B、A:C、B:D、B:E、C:F、D:Gとなり、計算の度にその範囲を拡張させている。
【0029】
図8は、メッセージ送信の手順を説明するフロー図である。本実施例では、送信元のノードAからメッセージを送信する場合のフローを示している。
【0030】
まず、ステップS10において、最短経路木102にデータが存在するか否かを判定する。最短経路木102にデータがなければ、ステップS11において、ノードAの最短経路計算部20が、ノードAの最短経路木102にノードAのノード接続情報101をコピーする。
【0031】
最短経路木102にデータがある場合には、ステップS12へスキップし、送信メッセージ200内の送信用最短経路木202にノードAの最短経路木102をコピーし、また、ステップS13において、送信メッセージ200のメッセージ本文203にノードAのメッセージ本文103をコピーする。
【0032】
さらに、ステップS14において、ノードAのノード接続情報101を集合Q1としてコピーする。そして、ステップS15において、集合Q1が空集合か否かを判定する。
【0033】
集合Q1が空集合でないとき、ステップS16において、集合Q1からノード対を一つ取り出し、それをq(=A:Y)とする。
【0034】
ステップS17において、メッセージ送受信部10が、Yに送信メッセージ200を送信する。ステップS15に戻り、集合Q1が空集合となるまで、ステップS16からS17の処理を繰り返す。集合Q1が空集合になったら、返信メッセージ送信フロー(図10)に進む。
【0035】
つぎに、ステップS18において、返信メッセージ送信フローを受けて、最短経路計算部20が、ノードAの最短経路木102に変化があったかを判定する。変化がなければ終了とし、変化があった場合には、ステップS12に戻り、最短経路木102に新たに追加されたノードに対して、以降の処理を繰り返すことによって、最短経路木102を更新する。
【0036】
図9は、送信メッセージ200を受信したノードが、さらに、子ノードに該メッセージを転送する場合の送信メッセージ転送フローを示している。実施例では、例えば、送信メッセージ200を受信したノードBが、子ノードに該メッセージを転送する場合を取り上げて説明する。
【0037】
まず、ステップS21において、送信元ノードAから送信メッセージ200を受信し、ステップS22において、ノードBの最短経路計算部20が、送信メッセージ200内にある送信用最短経路木202において、左側がBであるノード対pが存在するか否かを判定する。
【0038】
送信用最短経路木202で左側がBであるノード対pが存在すれば、ステップS23において、ノード対pの集合をQ2とする。つぎに、ステップS24において、集合Q2からノード対を一つ取り出し、それをq(=B:Y)とする。
【0039】
そして、ステップS25において、ノード対qがノードBのノード接続情報101に含まれるか否かを判定する。含まれていなければ、ステップS26において、ノード対qを返信メッセージ300の削除経路301に追加し、ステップS27において、Y宛に該メッセージを転送する。また、ステップS25で、ノード対qが含まれているときには、ステップS26をスキップして、ステップS27に進み、転送処理を行う。
【0040】
つぎに、ステップS28において、集合Q2が空集合か否かを判定する。空集合になったら、返信メッセージ送信フロー(図10)に進む。また、集合Q2が空集合でないときには、ステップS24に戻り、以降の処理を繰り返す。
【0041】
一方、ステップS22において、ノード対pが存在しないときには、ステップS29に進み、メッセージ処理部30が、メッセージ本文101の実行処理を行い、内容によって処理結果を返信メッセージ本文301に格納し、返信メッセージ送信フローへと移行する。
【0042】
図10は、返信メッセージの送信フローを示す。本実施例は、例えば、ノードBが行う処理フローである。なお、返信メッセージ300には、親の送信元ノードAへ送信する返信メッセージと、子のノードD、Eから受信する返信メッセージとが存在するため、以下では、子ノードからの返信メッセージを300Rと表現して区別する。なお、子ノードから戻って来る返信メッセージ300Rのデータ構造も、図3(b)と同様に、削除経路301R、最短経路木302R、およびメッセージ本文303Rの項目から構成されているものとする。
【0043】
まず、ステップS31において、返信メッセージ300の返信用最短経路木302にノード接続情報101をコピーする。但し、本フローが送信元フローから来た場合は、返信メッセージがないので、返信用最短経路木302は、送信元ノードの最短経路木102を指す。
【0044】
つぎに、ステップS32において、最短経路計算部20は、送受信時にメモリに保持されるメッセージ送受信の状態情報を参照し、子ノードに送信済みのメッセージに対し、受信していない返信メッセージ300Rがあるか否かを判定する。
【0045】
受信していない返信メッセージ300Rがあれば、ステップS33において、返信メッセージ300Rを受信する。そして、ステップS34において、返信用最短経路木302から返信メッセージ300Rの削除経路301Rを削除する。
【0046】
さらに、ステップS35において、返信メッセージ300Rの削除経路301Rを返信メッセージ300の削除経路301に追加し、ステップS36において、返信メッセージ300Rのメッセージ本文303Rを返信メッセージ300のメッセージ本文303に追加する。なお、本フローが送信元フローから来た場合は、返信メッセージがないので、S35、S356のステップはスキップする。
【0047】
さらに、ステップS37において、返信用最短経路木302と、返信メッセージ300Rの返信用最短経路木302Rをマージする。そして、ステップS32に戻り、受信する返信メッセージ300Rがなくなるまで処理を繰り返す。
【0048】
受信する返信メッセージ300Rがなければ、ステップS38において、返信先が存在するか否かを判定する。返信先が存在すれば、ステップS38において、返信メッセージ300を送信メッセージ送信元ノードAに送信する。返信先が存在しなければ、送信元のメッセージ送信フロー(図8)に戻る。
【0049】
図11は、メッセージ配信中にネットワークの接続状態が変わったときに、送信元ノードAにおける最短経路木102の修正過程を示している。ここでは、最短経路計算3回目で、ノードB/ノードE間の接続が切断された場合を例としている。
【0050】
(1)の最短経路木{A:B、A:C、B:D、B:E、C:F}は、ネットワークの最短経路計算2回目の結果によるノードAの最短経路木102を示している。つぎの最短経路計算3回目で、ノードBからの返信メッセージから削除経路B:Eの情報を取得し、(1)の最短経路木からB:Eのノード対が削除された(2)の最短経路木{A:B、A:C、B:D、C:F}となる。
【0051】
また、ノードBからの返信メッセージから返信用最短経路木{B:A、B:D、D:G}の情報を取得し、(2)の最短経路木をマージして、(3)の最短経路木{A:B、A:C、B:D、C:F、D:G}が得られる。
【0052】
さらに、ノードCの返信メッセージから返信用最短経路木{C:A、C:E、C:F、F:G}の情報を取得し、(3)の最短経路木をマージして、(4)の最短経路木{A:B、A:C、B:D、C:F、D:G、C:E}が得られる。
【0053】
以上の修正処理によって最終的に得られたノードAの最短経路木は、図12のネットワーク図における太線部で表される。
【0054】
図13は、あるノードの最短経路木102に子ノードからの返信メッセージ300Rに載せられた別の返信用最短経路木302Rを取り込んでマージ処理するフローを示している。
【0055】
まず、ステップS41において、子ノードからの返信用最短経路木302Rの集合Sが空集合か否かを判定する。集合Sが空でなければ、ステップS42において、集合Sからノード対を一つ取り出し、それをq(=X:Y)とする。
【0056】
ステップS43において、Yがあるノードの最短経路木102の根か否かを判定する。あるノードの最短経路木102の根でなければ、さらに、ステップS44において、子ノードからの返信用最短経路木302Rに、右側がYであるノード対pが存在するか否かを判定する。
【0057】
ノード対が存在すれば、ステップS45において、あるノードの最短経路木102のpをqに置き換えたとき、根からYまでの経路が短くなるか否かを判定する。経路が短くなれば、ステップS46において、最短経路木102のpをqに置き換える。
【0058】
また、ステップS44で、ノード対が存在しなければ、ステップS47において、最短経路木102にqを追加する。
【0059】
以上の処理を、別の最短経路木として、子ノードからの返信用最短経路木302Rの集合Sが空集合となるまで繰り返し、空集合となった時点で本フローは終了となる。
【0060】
図14は、図13のマージ処理におけるあるノードの最短経路木をノードAの最短経路木102、また、別な最短経路木を子ノードであるノードB及びノードCからの返信メッセージ300Rに載せられた返信用最短経路木302Rとした場合のマージ処理の過程を模式的に表したものである。
【0061】
(1)は、ノードAの最初の最短経路木{A:B、A:C}である。これにノードBからの返信メッセージからの返信用最短経路木{B:A、B:D、B:E}の情報を取り込んでマージして、(2)の最短経路木{A:B、A:C、B:D、B:E}が得られる。さらに、ノードCからの返信メッセージから返信用最短経路木{C:A、C:E、C:F}を取り込んで、(3)の最短経路木{A:B、A:C、B:D、B:E、C:F}が得られる。
【0062】
以上述べてきたように、本発明では、メッセージ配信と最短経路計算を同時に行うことによって重複メッセージをなくすことができ、ネットワークの通信量を抑えることが可能となる。
【0063】
さらに、最短経路木が徐々に増大することによるコストアップに対処するため、最短経路配信からマルチキャスト配信へ配信手法を切り替えることが好ましい。その切り替えの仕組みを以下に述べる。
【0064】
メッセージ配信時に計算する最短経路木から、最短経路木の深さと平均分枝数を取得し、最短経路木を使うメッセージ配信と従来のマルチキャスト配信の総メッセージ数を計算する。最短経路木を使う場合の総メッセージ数の方が多くなる場合は、それ以上の最短経路木更新を停止し、最短経路木以外のノードへは従来のマルチキャスト配信に切り替える。
【0065】
最短経路木をマージする際に、そのノードの接続数がわかるので、最短経路木が構築されている範囲での平均接続数が計算できる。
【0066】
つまり、従来のマルチキャスト配信手法の総メッセージ数は、(ノード数)×(平均接続数)として計算できる。一方、最短経路木を使う手法の総メッセージ数は、平均して(ノード数)×(木の深さ)として計算できる。したがって、木の深さが平均接続数を上回ったときに、最短経路木を使う手法から従来手法に切り替えることが可能となる。
【0067】
また、好ましくは、最短経路木を保持するメモリが限界になった場合にも、配信手法を切り替えるのもよい。
【0068】
こうした切り替えにより、本発明によるメッセージ配信コストが従来手法のコストよりも大きくなることを防ぐことが可能である。また、最短経路木作成の限界値を予め計算せずに、限界までメッセージ配信することができるメリットを有する。
【産業上の利用可能性】
【0069】
コンピュータネットワーク上でのメッセージのマルチキャスト配信に関する分野。
【符号の説明】
【0070】
1 ノード
2 通信路
10 メッセージ送受信部
11 メッセージキュー
20 最短経路計算部
30 メッセージ処理部
50 データ格納領域
100 配信情報テーブル
101 ノード接続情報
102 最短経路木
103 メッセージ本文
【背景技術】
【0001】
近年、コンピュータネットワークに接続する多数のユーザー間で、特定のデータを要求および提供するためにメッセージを配送するマルチキャスト通信が注目を集めている。
【0002】
しかし、ネットワーク上の全てのユーザーに対してメッセージを配信する場合、メッセージが重複してネットワークの通信量が大きくなり、負荷がかかってしまう。
【0003】
これに対し、受信メッセージをキャッシュに格納しておくことで重複したメッセージを破棄する方式(特許文献1参照)や、データ配信の最短経路を求めてからデータを配信する方式(特許文献2参照)が提案されている。
【0004】
しかしながら、特許文献1では、ネットワークが複雑な場合、破棄される重複メッセージが多くなり、メッセージを識別するIDも格納する分、メモリが余計に消費される。また、特許文献2では、実用的な時間で最短経路が求められるネットワークの大きさには限りがあり、最短経路を事前に求めることは難しくなる。さらに、最短経路を求めるサーバが必要である上、同時多発的なデータ配信時に負荷がかかる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−021770号公報
【特許文献2】特開2004−208289号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述してきた問題を解決するため、本発明では、メッセージを配信しながら最短経路木を構築し、重複せずにメッセージを配信するメッセージ配信技術を提供する。
【課題を解決するための手段】
【0007】
本発明の一態様は、複数のノードからなるネットワークにおけるメッセージ配信プログラムであって、ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信ステップと、 前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新ステップと、前記拡張した最短経路木に前記メッセージを送信するステップと、を送信元ノードに実行させるメッセージ配信プログラムに関する。
【0008】
上述したように、ノード接続情報を用いて拡張した最短経路木にメッセージを送信する構成とすることによって、重複メッセージをなくすことが可能となる。
【発明の効果】
【0009】
以上、本発明によれば、返信メッセージのノード接続情報を用いて拡張した最短経路木にメッセージを送信することによって、重複メッセージをなくすことが可能となり、ネットワークにおける通信量を減少させることができる。また、最短経路の計算に必要なネットワーク情報をメッセージ配信しながら収集するのでサーバが不要となる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施の形態になるネットワークにおけるノードの基本構成を示す図である。
【図2】本発明の実施の形態になるノードがメモリに保持する配信情報テーブルのデータ構造を示す図である。
【図3】本発明の実施の形態になる送信メッセージ及び返信メッセージのデータ構造を示す図である。
【図4】本発明の実施の形態になるネットワーク内の各ノードにおける接続情報を説明する図である。
【図5】本発明の実施の形態になるネットワークの最短経路木の計算結果(第1回目)を示す図である。
【図6】本発明の実施の形態になるネットワークの最短経路木の計算結果(第2回目)を示す図である。
【図7】本発明の実施の形態になるネットワークの最短経路木の計算結果(第3回目)を示す図である。
【図8】本発明の実施の形態になる送信元ノードからのメッセージ送信フローを示す図である。
【図9】本発明の実施の形態になる送信メッセージの転送フローを示す図である。
【図10】本発明の実施の形態になる返信メッセージの送信フローを示す図である。
【図11】本発明の実施の形態になるネットワークの接続状態が変わった場合の最短経路木の修正を説明する図である。
【図12】本発明の実施の形態になるネットワークの接続状態が変わった場合の最短経路木の修正結果を示す図である。
【図13】本発明の実施の形態になる最短経路木のマージ処理フローを示す図である。
【図14】本発明の実施の形態になる最短経路木のマージを説明する図である。
【発明を実施するための形態】
【0011】
以下、図面にもとづいて本発明の実施形態を説明する。
【0012】
図1は、本発明を適用するネットワークの構成例、および該ネットワークを形成する各ノードの基本構成を示している。
【0013】
本ネットワークは、メッセージの送受信装置である複数のノード1(A、B・・・G)とメッセージの送受信経路であるノード1間を結ぶ通信路2とから構成される。以降の実施例では、A、B・・・Gの7個のノード1(ここで、A、B・・・Gは、ノード名を表わしている)が、図のように接続されたネットワーク構成を例として説明する。なお、図では、ノードAをメッセージの送信元ノードとしている。
【0014】
各ノード1は、メッセージの受け皿であるメッセージキュー11(最短経路計算中のメッセージ受信バッファ)を持つメッセージ送受信部10と、最短経路木を構築する最短経路計算部20と、メッセージ本文の内容を実行処理するメッセージ処理部30(例えば、メッセージ本文に転送ファイルがある場合、該ファイルをノードに保存する等の処理)と、それら各部で使用するノード接続情報101、最短経路木102、及びメッセージ本文103のフィールド項目からなる配信情報テーブル100を格納するデータ格納領域(メモリ)50とから構成されている。
【0015】
ここで、ノード1は、図示していないが、CPU(Central Processing Unit )、メモリを有するコンピュータであり、メッセージ送受信部10、最短経路計算部20、およびメッセージ処理部30の各処理を実行するプログラムは、補助記憶装置などに蓄積され、起動時にメモリに展開され、CPUによって実行処理される。
【0016】
また、該プログラムは、フレキシブルディスク、CD(Compact Disk)、MO(Magneto-Optical Disk)などの可搬の記憶媒体に記録され、各記憶媒体に応じたドライバによって読み取る構成としてもよい。
【0017】
本発明の一つの特徴は、メッセージ配信と最短経路計算を同時に行うことにある。送信元ノードAは、ノードの接続情報を記憶した最短経路木(ノードB、C)にメッセージを送信し、ノードB、Cからの返信メッセージに載っているノード接続情報を使って最短経路木を拡張する。この拡張した最短経路木にメッセージを送信することによって、最短経路木の作成とメッセージ配信が同時に行われる。このように、最短経路計算のアルゴリズムにメッセージ送信を組み合わせることにより、最短経路でメッセージを送信するため、重複メッセージをなくすことが可能となる。最短経路木は、徐々に拡張し大きくなっていくが、最短経路が計算できる限界までメッセージ送信が可能となる。
【0018】
また、別な特徴は、最短経路配信からマルチキャスト配信に切り替えを可能とすることにある。メッセージ配信時に計算する最短経路木から、最短経路木の深さと平均分枝数を取得し、最短経路木を使うメッセージ配信の総メッセージ数と隣接する全てのノード1にメッセージを送信する従来型のマルチキャスト配信の総メッセージ数を計算する。そして、最短経路木を使う場合の総メッセージ数の方が多くなる場合に、それ以上の最短経路木の更新(拡張)を停止し、最短経路木以外のノード1に対しては、従来のマルチキャスト配信を行う。
【0019】
さらに、最短経路路木を保持するメモリが限界になった場合にも、配信手法を切り替えることとする。この切り替えにより、メッセージ配信コストが従来手法のコストよりも大きくなることを防ぎ、また、最短経路木作成の限界値を予め計算しなくても、メモリ容量の限界までメッセージを配信することができる。
【0020】
図2は、ノード1がデータ格納領域50上に保持する配信情報テーブル100のデータ構造を示している。配信情報テーブル100は、ノード接続情報101、最短経路木102、およびメッセージ本文103のフィールド項目から構成されている。
【0021】
ノード接続情報101は、ノード1の接続状態を示し、そのノード間の接続状態をノード対(A:B、A:C等)として表わされ、一つ以上のノード対の集合で構成されている。実施例では、ノードAにおいて、集合{A:B、A:C}は、ノードAの接続相手が、ノードBとノードCであることを示している。なお、ノード接続情報101は、ノード1がネットワークに接続されたタイミングで接続しているノード情報が格納される。
【0022】
最短経路木102のデータは、図1のネットワークの例を用いて示している。最短経路木102もノード接続情報と同様に、ノード対の集合で表す。ここで、ノード対には、順番があり、左が親、右が子の関係になり、また、上から下へ根から葉の順序で形成される木構造になっている。また、最短経路木102には、ノード1がメッセージの送信元になった際に、最初にノード接続情報からコピーする(後述する図8送信元フローのS11)ことによって格納される。
【0023】
メッセージ本文103では、ユーザがノード1に対してメッセージ送信を要求する際に、送信したい内容をメッセージ本文として渡すことを想定しており、ノード1がこの要求を受けたときに、渡されたメッセージ本文が格納される。
【0024】
図3は、送信メッセージ200と返信メッセージ300のデータ構造を示している。(a)は、送信元ノードAからBに送信する場合の送信メッセージ200のデータ構造を示し、(b)は、送信メッセージ200を受信したノードBから送信元Aに返送される場合における返信メッセージ300のデータ構造を示している。
【0025】
送信用メッセージ200は、送信用最短経路木202とメッセージ本文203から構成され、例えば、「送信用最短経路木」のデータとしては、A:B、A:Cのようなノード対で表されている。また、返信メッセージ300は、削除経路301、返信用最短経路木302、およびメッセージ本文303の項目から構成されている。例えば、「削除経路」ではB:Eの経路が削除され、「返信用最短経路木」では、ノードBからの返信経路として、B:A、B:D、B:Eのノード対が格納されている。
【0026】
図4は、ノード1の配信情報テーブル100のデータ構造の一つである、ノード接続情報101のデータ構造をネットワーク内の各ノード毎に示している。例えば、ノードEでは、接続ノードB、C、D、Fが、E:B、E:C、E:D、E:Fのノード対の集合として示されている。
【0027】
図5〜図7では、最短経路木102のデータ構造をネットワークの例を用いて示している。最短経路木102もノード接続情報101と同様に、ノード対の集合で表わされる。実施例では、ノードAからメッセージ配信を開始した場合の最短経路木拡張の様子を示しており、図5は、最短経路計算部20によって計算された第1回目の計算結果によるノードAの最短経路木102を示し、また、図6は、第2回目の計算結果を、図7は、第3回目の計算結果を示している。なお、ネットワーク図中において、最短経路木は太線で示している。
【0028】
ノードAの最短経路木は、第1回目の計算によって、A:B、A:C、第2回目の計算によって、A:B、A:C、B:D、B:E、C:F、および第3回目の計算によって、A:B、A:C、B:D、B:E、C:F、D:Gとなり、計算の度にその範囲を拡張させている。
【0029】
図8は、メッセージ送信の手順を説明するフロー図である。本実施例では、送信元のノードAからメッセージを送信する場合のフローを示している。
【0030】
まず、ステップS10において、最短経路木102にデータが存在するか否かを判定する。最短経路木102にデータがなければ、ステップS11において、ノードAの最短経路計算部20が、ノードAの最短経路木102にノードAのノード接続情報101をコピーする。
【0031】
最短経路木102にデータがある場合には、ステップS12へスキップし、送信メッセージ200内の送信用最短経路木202にノードAの最短経路木102をコピーし、また、ステップS13において、送信メッセージ200のメッセージ本文203にノードAのメッセージ本文103をコピーする。
【0032】
さらに、ステップS14において、ノードAのノード接続情報101を集合Q1としてコピーする。そして、ステップS15において、集合Q1が空集合か否かを判定する。
【0033】
集合Q1が空集合でないとき、ステップS16において、集合Q1からノード対を一つ取り出し、それをq(=A:Y)とする。
【0034】
ステップS17において、メッセージ送受信部10が、Yに送信メッセージ200を送信する。ステップS15に戻り、集合Q1が空集合となるまで、ステップS16からS17の処理を繰り返す。集合Q1が空集合になったら、返信メッセージ送信フロー(図10)に進む。
【0035】
つぎに、ステップS18において、返信メッセージ送信フローを受けて、最短経路計算部20が、ノードAの最短経路木102に変化があったかを判定する。変化がなければ終了とし、変化があった場合には、ステップS12に戻り、最短経路木102に新たに追加されたノードに対して、以降の処理を繰り返すことによって、最短経路木102を更新する。
【0036】
図9は、送信メッセージ200を受信したノードが、さらに、子ノードに該メッセージを転送する場合の送信メッセージ転送フローを示している。実施例では、例えば、送信メッセージ200を受信したノードBが、子ノードに該メッセージを転送する場合を取り上げて説明する。
【0037】
まず、ステップS21において、送信元ノードAから送信メッセージ200を受信し、ステップS22において、ノードBの最短経路計算部20が、送信メッセージ200内にある送信用最短経路木202において、左側がBであるノード対pが存在するか否かを判定する。
【0038】
送信用最短経路木202で左側がBであるノード対pが存在すれば、ステップS23において、ノード対pの集合をQ2とする。つぎに、ステップS24において、集合Q2からノード対を一つ取り出し、それをq(=B:Y)とする。
【0039】
そして、ステップS25において、ノード対qがノードBのノード接続情報101に含まれるか否かを判定する。含まれていなければ、ステップS26において、ノード対qを返信メッセージ300の削除経路301に追加し、ステップS27において、Y宛に該メッセージを転送する。また、ステップS25で、ノード対qが含まれているときには、ステップS26をスキップして、ステップS27に進み、転送処理を行う。
【0040】
つぎに、ステップS28において、集合Q2が空集合か否かを判定する。空集合になったら、返信メッセージ送信フロー(図10)に進む。また、集合Q2が空集合でないときには、ステップS24に戻り、以降の処理を繰り返す。
【0041】
一方、ステップS22において、ノード対pが存在しないときには、ステップS29に進み、メッセージ処理部30が、メッセージ本文101の実行処理を行い、内容によって処理結果を返信メッセージ本文301に格納し、返信メッセージ送信フローへと移行する。
【0042】
図10は、返信メッセージの送信フローを示す。本実施例は、例えば、ノードBが行う処理フローである。なお、返信メッセージ300には、親の送信元ノードAへ送信する返信メッセージと、子のノードD、Eから受信する返信メッセージとが存在するため、以下では、子ノードからの返信メッセージを300Rと表現して区別する。なお、子ノードから戻って来る返信メッセージ300Rのデータ構造も、図3(b)と同様に、削除経路301R、最短経路木302R、およびメッセージ本文303Rの項目から構成されているものとする。
【0043】
まず、ステップS31において、返信メッセージ300の返信用最短経路木302にノード接続情報101をコピーする。但し、本フローが送信元フローから来た場合は、返信メッセージがないので、返信用最短経路木302は、送信元ノードの最短経路木102を指す。
【0044】
つぎに、ステップS32において、最短経路計算部20は、送受信時にメモリに保持されるメッセージ送受信の状態情報を参照し、子ノードに送信済みのメッセージに対し、受信していない返信メッセージ300Rがあるか否かを判定する。
【0045】
受信していない返信メッセージ300Rがあれば、ステップS33において、返信メッセージ300Rを受信する。そして、ステップS34において、返信用最短経路木302から返信メッセージ300Rの削除経路301Rを削除する。
【0046】
さらに、ステップS35において、返信メッセージ300Rの削除経路301Rを返信メッセージ300の削除経路301に追加し、ステップS36において、返信メッセージ300Rのメッセージ本文303Rを返信メッセージ300のメッセージ本文303に追加する。なお、本フローが送信元フローから来た場合は、返信メッセージがないので、S35、S356のステップはスキップする。
【0047】
さらに、ステップS37において、返信用最短経路木302と、返信メッセージ300Rの返信用最短経路木302Rをマージする。そして、ステップS32に戻り、受信する返信メッセージ300Rがなくなるまで処理を繰り返す。
【0048】
受信する返信メッセージ300Rがなければ、ステップS38において、返信先が存在するか否かを判定する。返信先が存在すれば、ステップS38において、返信メッセージ300を送信メッセージ送信元ノードAに送信する。返信先が存在しなければ、送信元のメッセージ送信フロー(図8)に戻る。
【0049】
図11は、メッセージ配信中にネットワークの接続状態が変わったときに、送信元ノードAにおける最短経路木102の修正過程を示している。ここでは、最短経路計算3回目で、ノードB/ノードE間の接続が切断された場合を例としている。
【0050】
(1)の最短経路木{A:B、A:C、B:D、B:E、C:F}は、ネットワークの最短経路計算2回目の結果によるノードAの最短経路木102を示している。つぎの最短経路計算3回目で、ノードBからの返信メッセージから削除経路B:Eの情報を取得し、(1)の最短経路木からB:Eのノード対が削除された(2)の最短経路木{A:B、A:C、B:D、C:F}となる。
【0051】
また、ノードBからの返信メッセージから返信用最短経路木{B:A、B:D、D:G}の情報を取得し、(2)の最短経路木をマージして、(3)の最短経路木{A:B、A:C、B:D、C:F、D:G}が得られる。
【0052】
さらに、ノードCの返信メッセージから返信用最短経路木{C:A、C:E、C:F、F:G}の情報を取得し、(3)の最短経路木をマージして、(4)の最短経路木{A:B、A:C、B:D、C:F、D:G、C:E}が得られる。
【0053】
以上の修正処理によって最終的に得られたノードAの最短経路木は、図12のネットワーク図における太線部で表される。
【0054】
図13は、あるノードの最短経路木102に子ノードからの返信メッセージ300Rに載せられた別の返信用最短経路木302Rを取り込んでマージ処理するフローを示している。
【0055】
まず、ステップS41において、子ノードからの返信用最短経路木302Rの集合Sが空集合か否かを判定する。集合Sが空でなければ、ステップS42において、集合Sからノード対を一つ取り出し、それをq(=X:Y)とする。
【0056】
ステップS43において、Yがあるノードの最短経路木102の根か否かを判定する。あるノードの最短経路木102の根でなければ、さらに、ステップS44において、子ノードからの返信用最短経路木302Rに、右側がYであるノード対pが存在するか否かを判定する。
【0057】
ノード対が存在すれば、ステップS45において、あるノードの最短経路木102のpをqに置き換えたとき、根からYまでの経路が短くなるか否かを判定する。経路が短くなれば、ステップS46において、最短経路木102のpをqに置き換える。
【0058】
また、ステップS44で、ノード対が存在しなければ、ステップS47において、最短経路木102にqを追加する。
【0059】
以上の処理を、別の最短経路木として、子ノードからの返信用最短経路木302Rの集合Sが空集合となるまで繰り返し、空集合となった時点で本フローは終了となる。
【0060】
図14は、図13のマージ処理におけるあるノードの最短経路木をノードAの最短経路木102、また、別な最短経路木を子ノードであるノードB及びノードCからの返信メッセージ300Rに載せられた返信用最短経路木302Rとした場合のマージ処理の過程を模式的に表したものである。
【0061】
(1)は、ノードAの最初の最短経路木{A:B、A:C}である。これにノードBからの返信メッセージからの返信用最短経路木{B:A、B:D、B:E}の情報を取り込んでマージして、(2)の最短経路木{A:B、A:C、B:D、B:E}が得られる。さらに、ノードCからの返信メッセージから返信用最短経路木{C:A、C:E、C:F}を取り込んで、(3)の最短経路木{A:B、A:C、B:D、B:E、C:F}が得られる。
【0062】
以上述べてきたように、本発明では、メッセージ配信と最短経路計算を同時に行うことによって重複メッセージをなくすことができ、ネットワークの通信量を抑えることが可能となる。
【0063】
さらに、最短経路木が徐々に増大することによるコストアップに対処するため、最短経路配信からマルチキャスト配信へ配信手法を切り替えることが好ましい。その切り替えの仕組みを以下に述べる。
【0064】
メッセージ配信時に計算する最短経路木から、最短経路木の深さと平均分枝数を取得し、最短経路木を使うメッセージ配信と従来のマルチキャスト配信の総メッセージ数を計算する。最短経路木を使う場合の総メッセージ数の方が多くなる場合は、それ以上の最短経路木更新を停止し、最短経路木以外のノードへは従来のマルチキャスト配信に切り替える。
【0065】
最短経路木をマージする際に、そのノードの接続数がわかるので、最短経路木が構築されている範囲での平均接続数が計算できる。
【0066】
つまり、従来のマルチキャスト配信手法の総メッセージ数は、(ノード数)×(平均接続数)として計算できる。一方、最短経路木を使う手法の総メッセージ数は、平均して(ノード数)×(木の深さ)として計算できる。したがって、木の深さが平均接続数を上回ったときに、最短経路木を使う手法から従来手法に切り替えることが可能となる。
【0067】
また、好ましくは、最短経路木を保持するメモリが限界になった場合にも、配信手法を切り替えるのもよい。
【0068】
こうした切り替えにより、本発明によるメッセージ配信コストが従来手法のコストよりも大きくなることを防ぐことが可能である。また、最短経路木作成の限界値を予め計算せずに、限界までメッセージ配信することができるメリットを有する。
【産業上の利用可能性】
【0069】
コンピュータネットワーク上でのメッセージのマルチキャスト配信に関する分野。
【符号の説明】
【0070】
1 ノード
2 通信路
10 メッセージ送受信部
11 メッセージキュー
20 最短経路計算部
30 メッセージ処理部
50 データ格納領域
100 配信情報テーブル
101 ノード接続情報
102 最短経路木
103 メッセージ本文
【特許請求の範囲】
【請求項1】
複数のノードからなるネットワークにおけるメッセージ配信プログラムであって、
ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信ステップと、
前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新ステップと、
前記拡張した最短経路木に前記メッセージを送信するステップと、
を送信元ノードに実行させるメッセージ配信プログラム。
【請求項2】
前記最短経路計算ステップは、メッセージ配信時に計算する最短経路木から該最短経路木の深さと平均接続数を取得し、前記最短経路木を使って配信する最短経路木配信及び隣接する全ノードに配信するマルチキャスト配信の各総メッセージ数を計算し、前記最短経路配信の総メッセージ数の方が多くなる場合に、前記マルチキャスト配信へ切り替えることを特徴とする請求項1に記載のメッセージ配信プログラム。
【請求項3】
複数のノードからなるネットワークにおけるメッセージ配信方法であって、
ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信ステップと、
前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新ステップと、
前記拡張した最短経路木に前記メッセージを送信するステップと、
を送信元ノードに実行させることを特徴とするメッセージ配信方法。
【請求項4】
複数のノードからなるネットワークにおいてメッセージを配信するノードであって、
ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信手段と、
前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新手段と、
前記拡張した最短経路木に前記メッセージを送信する手段と、
を有することを特徴とするノード。
【請求項1】
複数のノードからなるネットワークにおけるメッセージ配信プログラムであって、
ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信ステップと、
前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新ステップと、
前記拡張した最短経路木に前記メッセージを送信するステップと、
を送信元ノードに実行させるメッセージ配信プログラム。
【請求項2】
前記最短経路計算ステップは、メッセージ配信時に計算する最短経路木から該最短経路木の深さと平均接続数を取得し、前記最短経路木を使って配信する最短経路木配信及び隣接する全ノードに配信するマルチキャスト配信の各総メッセージ数を計算し、前記最短経路配信の総メッセージ数の方が多くなる場合に、前記マルチキャスト配信へ切り替えることを特徴とする請求項1に記載のメッセージ配信プログラム。
【請求項3】
複数のノードからなるネットワークにおけるメッセージ配信方法であって、
ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信ステップと、
前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新ステップと、
前記拡張した最短経路木に前記メッセージを送信するステップと、
を送信元ノードに実行させることを特徴とするメッセージ配信方法。
【請求項4】
複数のノードからなるネットワークにおいてメッセージを配信するノードであって、
ノードの接続情報を記憶した最短経路木にメッセージを送信し、他ノードからノード接続情報を載せた返信メッセージを受信するメッセージ送受信手段と、
前記返信メッセージのノード接続情報を用いて拡張した最短経路木を作成する最短経路更新手段と、
前記拡張した最短経路木に前記メッセージを送信する手段と、
を有することを特徴とするノード。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2011−49620(P2011−49620A)
【公開日】平成23年3月10日(2011.3.10)
【国際特許分類】
【出願番号】特願2009−193852(P2009−193852)
【出願日】平成21年8月25日(2009.8.25)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年3月10日(2011.3.10)
【国際特許分類】
【出願日】平成21年8月25日(2009.8.25)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]