(57)【要約】      （修正有）【課題】論理ネットワークを構成する複数ノード中の特定ノードのみを対象とするマルチキャスト通信を可能とする。【解決手段】ＴＣＰ／ＩＰネットワークなどの通信ネットワーク上に物理的ネットワーク構成にとらわれずに自律的に構成されたツリー構造の論理ネットワークを構成して、サーバントがマルチキャストルーティング情報をターゲットリンクに送信することによりマルチキャスト通信を実現する。【選択図】図７
2005244630.tif 000002
【特許請求の範囲】
【請求項１】
論理ネットワークにおいて、１又は２以上のリンクに接続するサーバントが、
第１タイミングにおいて、
第１タイミング自マルチキャストＩＤセットと、ターゲットリンク以外の全リンクの第１タイミング受信マルチキャストＩＤセットとの第１タイミング和集合を第１タイミングマルチキャストＩＤセットにセットし、
前記第１タイミングマルチキャストＩＤセットを格納した第１タイミングマルチキャスト情報電文を前記ターゲットリンクへ送信し、
第２タイミングにおいて、
第２タイミング自マルチキャストＩＤセットと、ターゲットリンク以外の全リンクの第２タイミング受信マルチキャストＩＤセットとの第２タイミング和集合を第２タイミングマルチキャストＩＤセットにセットし、
前記第２タイミングマルチキャストＩＤセットを格納した第２タイミングマルチキャスト情報電文を前記ターゲットリンクへ送信する、マルチキャストルーティング情報送信方法。
【請求項２】
前記サーバントは、さらに、
前記第２タイミング前に、前記第１タイミング和集合を、送信マルチキャストＩＤセットに記憶し、
前記第２タイミングにおいて、
前記第２タイミングマルチキャストＩＤセットと前記送信マルチキャストＩＤセットとを比較し、
前記第２タイミングマルチキャストＩＤセットと前記送信マルチキャストＩＤセットとが等しい場合には、前記第２タイミングマルチキャスト情報電文を送信しない、請求項１記載のマルチキャストルーティング情報送信方法。
【請求項３】
前記サーバントは、さらに、
前記ターゲットリンク又は前記ターゲットリンク以外のリンクのいずれかから受信したマルチキャスト情報電文から取り出したマルチキャストＩＤセットを、前記マルチキャスト情報電文を受信したリンクの受信マルチキャストＩＤセットにセットし、
前記マルチキャスト情報電文を受信したリンク以外の全リンクに対して、マルチキャストルーティング情報送信処理を起動する請求項１又は２記載のマルチキャストルーティング情報送信方法。
【請求項４】
論理ネットワークにおいて、１又は２以上のリンクに接続するサーバントが、
受信したマルチキャストメッセージからマルチキャストＩＤを取り出し、
前記マルチキャストＩＤが、予め記憶している自マルチキャストＩＤセット中に含まれているときは、前記マルチキャストメッセージを、自サーバントのメッセージ受信アプリケーションに渡し、
前記マルチキャストメッセージを送信してきたリンク以外の全リンクの受信マルチキャストＩＤセットを調べて、前記マルチキャストＩＤが含まれている受信マルチキャストＩＤセットを探し、
前記マルチキャストＩＤが含まれている受信マルチキャストＩＤセットが存在したら、当該受信マルチキャストＩＤセットに対応するリンクに対して、前記マルチキャストメッセージを送信するマルチキャストメッセージ送信方法。
【請求項５】
論理ネットワークにおいて、１又は２以上のリンクに接続するコンピュータに、
第１タイミングにおいて、
第１タイミング自マルチキャストＩＤセットと、ターゲットリンク以外の全リンクの第１タイミング受信マルチキャストＩＤセットとの第１タイミング和集合を第１タイミングマルチキャストＩＤセットにセットする手順、
前記第１タイミングマルチキャストＩＤセットを格納した第１タイミングマルチキャスト情報電文を前記ターゲットリンクへ送信する手順、
第２タイミングにおいて、
第２タイミング自マルチキャストＩＤセットと、ターゲットリンク以外の全リンクの第２タイミング受信マルチキャストＩＤセットとの第２タイミング和集合を第２タイミングマルチキャストＩＤセットにセットする手順、
前記第２タイミングマルチキャストＩＤセットを格納した第２タイミングマルチキャスト情報電文を前記ターゲットリンクへ送信する手順、を実行させるためのマルチキャストルーティング情報送信プログラム。
【請求項６】
前記コンピュータに、さらに、
前記第２タイミング前に、前記第１タイミング和集合を、送信マルチキャストＩＤセットに記憶する手順、
前記第２タイミングにおいて、
前記第２タイミングマルチキャストＩＤセットと前記送信マルチキャストＩＤセットとを比較する手順、
前記第２タイミングマルチキャストＩＤセットと前記送信マルチキャストＩＤセットとが等しい場合には、前記第２タイミングマルチキャスト情報電文を送信しない手順、を実行させるための請求項５記載のマルチキャストルーティング情報送信プログラム。
【請求項７】
前記コンピュータに、さらに、
前記ターゲットリンク又は前記ターゲットリンク以外のリンクのいずれかから受信したマルチキャスト情報電文から取り出したマルチキャストＩＤセットを、前記マルチキャスト情報電文を受信したリンクの受信マルチキャストＩＤセットにセットする手順、
前記マルチキャスト情報電文を受信したリンク以外の全リンクに対して、マルチキャストルーティング情報送信処理を起動する手順、を実行させるための請求項５又は６記載のマルチキャストルーティング情報送信プログラム。
【請求項８】
論理ネットワークにおいて、１又は２以上のリンクに接続するコンピュータに、
受信したマルチキャストメッセージからマルチキャストＩＤを取り出す手順、
前記マルチキャストＩＤが、予め記憶している自マルチキャストＩＤセット中に含まれているときは、前記マルチキャストメッセージを、自サーバントのメッセージ受信アプリケーションに渡す手順、
前記マルチキャストメッセージを送信してきたリンク以外の全リンクの受信マルチキャストＩＤセットを調べて、前記マルチキャストＩＤが含まれている受信マルチキャストＩＤセットを探す手順、
前記マルチキャストＩＤが含まれている受信マルチキャストＩＤセットが存在したら、当該受信マルチキャストＩＤセットに対応するリンクに対して、前記マルチキャストメッセージを送信する手順、を実行させるためのマルチキャストメッセージ送信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想的な論理ネットワーク上において、マルチキャストに必要なルーティング情報を送信する方法及びプログラム、並びにかかるルーティング情報に基づいてメッセージをマルチキャストする方法及びプログラムに関する。具体的には、ＴＣＰ／ＩＰ(Transmission Control Protocol / Internet Protocol)ネットワークなどの通信ネットワーク上に物理的ネットワーク構成にとらわれないツリー構造の論理ネットワークを自律的に構成し、その論理ネットワークを構成する複数ノード中の特定ノードのみを対象とするマルチキャスト通信を可能にする方法及びプログラムに関する。
【背景技術】
【０００２】
ＩＰマルチキャスト（ネットワーク層）では、ルータなどのネットワーク機器がＩＰマルチキャスト通信をサポートしている必要がある。また、それらネットワーク機器の設定・維持のためのコストが発生する。
【０００３】
ＵＤＰブロードキャスト（トランスポート層）では、サブネット単位などの物理的なネットワーク構成に依存した範囲での同報しか行えない（例えば、非特許文献１参照）。
【０００４】
中継サーバを介した同報通信（アプリケーション層）では、中継サーバの導入・維持のためのコストが発生する。また、中継サーバの障害への対応が困難である。
【０００５】
ファイル共有等のＰ２Ｐ(Peer to Peer)アプリケーション（アプリケーション層）では、ノード間をアドホックな方法で接続することによって、論理ネットワークを構成する。よって、無秩序なネットワーク構成となり、通信効率が非常に悪く、リアルタイムな通信に適用できない。
【非特許文献１】竹下隆史他著「マスタリングＴＣＰ／ＩＰ入門  第２版」オーム社  平成１０年５月２５日発行  ８３頁
【発明の開示】
【発明が解決しようとする課題】
【０００６】
社内に分散した複数の文章サーバを横断的に検索するシステムを考える。複数の文章サーバへの検索要求を一度に行うためにブロードキャスト通信を利用することもできるが、これでは文章サーバ以外の無関係なノードにも検索要求が転送されることになり無駄な通信が発生する。複数の文章サーバを一つのマルチキャストグループとして構成し、このグループへのマルチキャスト通信によって検索要求を送信すれば、効率的な通信が可能となる。
【０００７】
そこで本発明は、ＴＣＰ／ＩＰ(Transmission Control Protocol / Internet Protocol)ネットワークなどの通信ネットワーク上に物理的ネットワーク構成にとらわれないツリー構造の論理ネットワークを自律的に構成し、その論理ネットワークを構成する複数ノード中の特定ノードのみを対象とするマルチキャスト通信を可能にする方法及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の特徴は、論理ネットワークにおいて、１又は２以上のリンクに接続するサーバントが、マルチキャストルーティング情報を送信する方法であって、（１）第１タイミングにおいて、（１−１）第１タイミング自マルチキャストＩＤセットと、ターゲットリンク以外の全リンクの第１タイミング受信マルチキャストＩＤセットとの第１タイミング和集合を第１タイミングマルチキャストＩＤセットにセットし、（１−２）前記第１タイミングマルチキャストＩＤセットを格納した第１タイミングマルチキャスト情報電文を前記ターゲットリンクへ送信し、（２）第２タイミングにおいて、（２−１）第２タイミング自マルチキャストＩＤセットと、ターゲットリンク以外の全リンクの第２タイミング受信マルチキャストＩＤセットとの第２タイミング和集合を第２タイミングマルチキャストＩＤセットにセットし、（２−２）前記第２タイミングマルチキャストＩＤセットを格納した第２タイミングマルチキャスト情報電文を前記ターゲットリンクへ送信する、ことにある。
【０００９】
本発明の第２の特徴は、さらに、前記第２タイミング前に、前記第１タイミング和集合を、送信マルチキャストＩＤセットに記憶し、前記第２タイミングにおいて、前記第２タイミングマルチキャストＩＤセットと前記送信マルチキャストＩＤセットとを比較し、  前記第２タイミングマルチキャストＩＤセットと前記送信マルチキャストＩＤセットとが等しい場合には、前記第２タイミングマルチキャスト情報電文を送信しない、ことにある。
【００１０】
本発明の第３の特徴は、さらに、前記ターゲットリンク又は前記ターゲットリンク以外のリンクのいずれかから受信したマルチキャスト情報電文から取り出したマルチキャストＩＤセットを、前記マルチキャスト情報電文を受信したリンクの受信マルチキャストＩＤセットにセットし、前記マルチキャスト情報電文を受信したリンク以外の全リンクに対して、マルチキャストルーティング情報送信処理を起動する、ことにある。
【００１１】
本発明の第４の特徴は、論理ネットワークにおいて、１又は２以上のリンクに接続するサーバントが、受信したマルチキャストメッセージからマルチキャストＩＤを取り出し、前記マルチキャストＩＤが、予め記憶している自マルチキャストＩＤセット中に含まれているときは、前記マルチキャストメッセージを、自サーバントのメッセージ受信アプリケーションに渡し、前記マルチキャストメッセージを送信してきたリンク以外の全リンクの受信マルチキャストＩＤセットを調べて、前記マルチキャストＩＤが含まれている受信マルチキャストＩＤセットを探し、前記マルチキャストＩＤが含まれている受信マルチキャストＩＤセットが存在したら、当該受信マルチキャストＩＤセットに対応するリンクに対して、前記マルチキャストメッセージを送信する、ことにある。
【発明の効果】
【００１２】
本発明の第１の特徴によれば、論理ネットワークにおいて、サーバントはリンクの向こう側に存在する全サーバントの自マルチキャストＩＤセットの和集合を把握することができる。
【００１３】
本発明の第２の特徴によれば、既に送信したマルチキャストＩＤセットと同じ内容のマルチキャストＩＤセットを送信しなくて済むので、送受信されるマルチキャスト情報電文の数を減少させることができる。
【００１４】
本発明の第３の特徴によれば、マルチキャスト情報電文を受け取ったサーバントはそのマルチキャスト情報電文を受信したリンク以外の全リンクに対して、マルチキャストルーティング情報送信処理を起動し、起動された送信処理によって送信されたマルチキャストルーティング情報電文を受信したサーバントにおいてさらにマルチキャストルーティング情報送信処理が起動される。このように、マルチキャストルーティング情報送信処理が繰り返し起動されることによって、マルチキャストルーティング情報がネットワークを構成するサーバントに行き渡る。
【００１５】
本発明の第４の特徴によれば、マルチキャストメッセージを受信した各サーバントは、自サーバントのメッセージ受信アプリケーションがそのマルチキャストメッセージを必要とする場合は、そのマルチキャストメッセージをそのメッセージ受信アプリケーションに渡し、またそのマルチキャストメッセージを送信してきたリンク以外のリンクの先にそのマルチキャストメッセージを必要とするサーバントが存在する場合は、そのマルチキャストメッセージをそのリンクに送信することが可能となる。各サーバントは、受け取ったマルチキャストメッセージを、それを必要とするアプリケーション又はサーバントへ順次渡すことになるため、マルチキャストメッセージがそのマルチキャストメッセージを必要とするサーバントに行き渡る。
【発明を実施するための最良の形態】
【００１６】
本発明の実施形態では、ＴＣＰリンクのみを用いて論理ネットワークを構成する。よって、ネットワーク機器の種類や物理的なネットワーク構成に関わらず、論理ネットワークの構成が可能である。また、この論理ネットワークはツリー構造となっており、効率的な通信を行うことができる。特に、従来のＰ２Ｐ技術では困難であったリアルタイム通信にも適用することができる。
【００１７】
本発明の実施形態の論理ネットワークは、ノードの参加・離脱に応じて自律的に構成される。従って、構成情報の管理などのコストが不要になる。また、障害発生時にも論理ネットワークの再構築が自動的に行われるため、耐障害性が高い。
【００１８】
（用語の定義）
本発明の実施形態を説明するために、下記の用語を定義する。
【００１９】
図１（ａ）に示すように、論理ネットワーク上の仮想的なノードを「サーバント」（Ｓｅｒｖｅｎｔ）１１と言う。アプリケーションはサーバントを生成し、これを介して通信を行う。
【００２０】
論理ネットワークの「種」となるサーバントを「シードサーバント」（ＳｅｅｄＳｅｒｖｅｎｔ）１２と言う。論理ネットワークを構成するためには、少なくともひとつのシードサーバントが存在する必要がある。シードサーバントは論理ネットワークの核となるもので、シードサーバントを中心にシードサーバント以外のサーバントが連続して接続することで論理ネットワークが構成される。
【００２１】
サーバントを一意に識別するための識別子を「サーバントＩＤ」と言う。サーバントＩＤは、物理ネットワークのアドレス（ＩＰアドレスとポート番号）から構成することができる。また、物理ネットワークのアドレスに、かかるアドレス以外の情報を付加して構成することもできる。
【００２２】
サーバントＩＤを０以上の一意の整数値に写像したものをサーバントＩＤ値と言う。サーバントＩＤ値から、サーバントＩＤへの逆変換が可能である必要はない。つまりサーバントＩＤ値から、サーバントＩＤを求めることは出来なくても良い。
【００２３】
本発明の実施形態においては、サーバントおよびサーバント間のＴＣＰリンクにより構成されるツリー構造の論理ネットワークを構築する。
【００２４】
図１（ｂ）に示すように、あるサーバント（図１（ｂ）では中央のサーバント）から見て根に近い側のリンクをアップリンク（ＵｐＬｉｎｋ）１４、葉に近い側のリンクをダウンリンク（ＤｏｗｎＬｉｎｋ）１５と呼ぶ。また、アップリンクの先のサーバントをアップサーバント（ＵｐＳｅｒｖｅｎｔ）１６、ダウンリンクの先のサーバントをダウンサーバント（ＤｏｗｎＳｅｒｖｅｎｔ）１７と呼ぶ。
【００２５】
・multicastId
マルチキャストグループを一意に識別するための識別子を「multicastId」と呼ぶ。multicastIdには、数字・文字列など一意に識別できるものであれば任意のデータ型を利用できる。
【００２６】
・selfMulticastIdSet
自サーバントが所属するマルチキャストグループのmulticastIdの集合を「selfMulticastIdSet」と呼ぶ。図１（ｃ）に示すように、サーバントＳＲ２０〜３７のそれぞれがselfMulticastIdSetＳＬＦ２０〜３７を有する。
【００２７】
・sentMulticastIdSet
あるリンクの接続先に送信したmulticastIdの集合を「sentMulticastIdSet」と呼ぶ。このリンクを境界として、自分側に存在する全てのサーバントの「selfMulticastIdSet」の和集合である。後述するように、このsentMulticastIdSetを保存しておくことで、自分側のselfMulticastIdSetの和集合に関して前回と変化が無い場合の送信を省略することができる。
【００２８】
図１（ｃ）に示すように、サーバントＳＲ２０が、リンクＬ２０の接続先のサーバントＳＲ３０に送信したmulticastIdの集合をsentMulticastIdSetＳＮＴ２０と呼ぶ。sentMulticastIdSetＳＮＴ２０は、リンクＬ２０を境界として、サーバントＳＲ２０側に存在する全サーバントＳＲ２０〜２７のselfMulticastIdSetＳＬＦ２０〜２７の和集合である。sentMulticastIdSetＳＮＴ２０を保存しておくことで、selfMulticastIdSetＳＬＦ２０〜２７の和集合に関して前回と変化が無い場合の送信を省略することができる。selfMulticastIdSetＳＬＦ２０〜２７のいずれか又は全てに変化があっても、それらの和集合に変化がなければ、送信を省略することができる。
【００２９】
・receivedMulticastIdSet
あるリンクの接続先から受け取ったmulticastIdの集合を「receivedMulticastIdSet」と呼ぶ。このリンクを境界として、相手側に存在する全てのサーバントの「selfMulticastIdSet」の和集合である。この情報を元にして、マルチキャストメッセージのルーティング処理が行われる。
【００３０】
図１（ｃ）に示すように、サーバントＳＲ２０が、リンクＬ２０の接続先のサーバントＳＲ３０から受け取ったmulticastIdの集合をreceivedMulticastIdSetＲＣＶ２０と呼ぶ。リンクＬ２０を境界として、サーバントＳＲ３０側に存在する全サーバントのselfMulticastIdSetＳＬＦ３０〜３７の和集合である。
【００３１】
sentMulticastIdSetＳＮＴ２０とreceivedMulticastIdSetＲＣＶ３０との内容は同じである。sentMulticastIdSetＳＮＴ３０とreceivedMulticastIdSetＲＣＶ２０との内容は同じである。
【００３２】
（マルチキャストルーティング情報の送受信）
マルチキャストルーティング情報とは、リンクに結びつけられたmulticastId集合であり、リンクの両端のサーバントがこのmulticastId集合を送受信することによってルーティング情報の伝達が行われる。
【００３３】
図７及び図８に基づいて、マルチキャストルーティング情報の送受信処理で利用される共通処理について以下に示す。
【００３４】
ターゲットリンクへのマルチキャストルーティング情報送信処理：
まず、selfMulticastIdSet及びターゲットリンク以外の全リンクのreceivedMulticastIdSetの和集合をもとめ（図７、Ｓ５０１）、
もとめた和集合をmulticastIdSetにセットし（Ｓ５０２）、
multicastIdSetと、ターゲットリンクへのsentMulticastIdSetとを比較し（Ｓ５０３）、
２つの値が等しければこの処理を終了し（Ｓ５０４）、
２つの値が等しくなければ、multicastIdSetを格納したマルチキャスト情報電文を生成し（Ｓ５０５）、生成したマルチキャスト情報電文をターゲットリンクの相手先サーバントへ送信する（Ｓ５０６）と共に、multicastIdSetをターゲットリンクに対応するsentMulticastIdSetにセットする（Ｓ５０７）。
【００３５】
前記のマルチキャストルーティング情報の送信処理は、以下のイベントごとに実行される。
【００３６】
マルチキャスト情報電文の受信：
マルチキャスト情報電文からmulticastIdSetを取り出し（図８、Ｓ５２１）、
マルチキャスト情報電文を受信したリンクのreceivedMulticastIdSetに、マルチキャスト情報電文から取り出したmulticastIdSetをセットし（Ｓ５２２）、
マルチキャスト情報電文を受信したリンク以外の全リンクに対して、ターゲットリンクへのマルチキャストルーティング情報送信処理を起動する（Ｓ５２３）。
【００３７】
アプリケーションからのマルチキャストグループ参加要求：
１．当該マルチキャストグループの識別子をmulticastIdとし、
２．multicastIdをselfMulticastIdSetに追加し、
３．全てのリンクに対して、マルチキャストルーティング情報送信処理を起動する。
【００３８】
アプリケーションからのマルチキャストグループ離脱要求：
１．当該マルチキャストグループの識別子をmulticastIdとし、
２．multicastIdをselfMulticastIdSetから削除し、
３．全てのリンクに対して、マルチキャストルーティング情報送信処理を起動する。
【００３９】
新しいリンクの接続：
１．新たに接続されたリンクをターゲットリンクとして、マルチキャストルーティング情報送信処理を起動する。
【００４０】
リンクの切断：
１．切断されたリンクのreceivedMulticastIdSetに空集合をセットし、
２．切断されたリンク以外の全リンクに対して、マルチキャストルーティング情報送信処理を起動する。
【００４１】
（マルチキャストメッセージのルーティング）
図９に基づいて、マルチキャストメッセージのルーティング処理を説明する。宛先にmulticastIdを指定したメッセージをマルチキャストメッセージと呼ぶ。
【００４２】
マルチキャストメッセージからmulticastIdを取り出し（図９、Ｓ５３１）、
取り出されたmulticastIdが、selfMulticastIdSetに含まれている時、アプリケーションにメッセージを渡し（Ｓ５３２）、
マルチキャストメッセージを送信してきたリンク以外の全リンクのreceivedMulticastIdSetをチェックし、取り出されたmulticastIdが含まれているリンクを探し（Ｓ５３３）、
取り出されたmulticastIdが、receivedMulticastIdSetに含まれているリンクが存在する場合（Ｓ５３４でＹＥＳ）、ステップＳ５３３で探し出されたリンクに対してマルチキャストメッセージを送信し（Ｓ５３５）、
取り出されたmulticastIdが、receivedMulticastIdSetに含まれているリンクが存在しない場合（Ｓ５３４でＮＯ）、処理を終了する。
【００４３】
マルチキャストルーティング情報の送受信及びマルチキャストメッセージを送受信の前提となる論理ネットワークの構築について説明する。本発明の実施形態においては、サーバントごとのダウンリンクの最大数を既定値とする。以下、この最大数をＮと表記する。以下の例では、特に指定の無い場合、Nを１０としている。
【００４４】
（パーティションとスロット）
ある部分木を取り出した時、この部分木に含まれる全てのサーバントのサーバントＩＤ値をカバーする値域を「パーティション」（Ｐａｒｔｉｔｉｏｎ）と呼ぶ。パーティションは、この部分木の頂点のサーバントにより管理・更新される。また、パーティションをＮ個の値域に分割したものを「スロット」（Ｓｌｏｔ）と呼ぶ。
【００４５】
頂点のサーバントは、各スロットにダウンリンクを割り当て、ダウンリンクの先のサーバントにそのスロットにあたるパーティションの管理をまかせる。このとき、各スロット内のダウンリンクは、最大１本となるように調整する。
【００４６】
（算出方法）
最小値、最大値により定義された値域を[最小値，最大値]として表記する。
【００４７】
部分木のサーバントＩＤ値の値域が[vmin, vmax]であるとき、
Nx × y ≦ vmin,  vmax ＜ Nx × (y + 1)
(x, yは整数  x ＞ 0,  0 ≦ y ＜ N)
を満たす最小のxを求める。
【００４８】
この部分木のパーティションは、[Nx × y , Nx × (y + 1) - 1]であり、パーティションの幅は、Nxとなる。また、スロットの幅は、Nx-1となる。
【００４９】
（計算例）
図１６に、「サーバントＩＤ値の値域」の例を挙げて、その値域から算出された「パーティション」、「パーティションの幅」及び「スロット」を示す。なお、ダウンリンクの最大数Ｎは１０とする。
【００５０】
図２（ａ）及び（ｂ）にツリー全体でのパーティション計算例を示す。なお、ダウンリンクの最大数Ｎは１０とする。図中、○の中の数値はサーバントＩＤ値である。
【００５１】
（サーバントの参加）
論理ネットワークに接続する側のサーバントをコネクター（Ｃｏｎｎｅｃｔｏｒ）、接続を受ける側のサーバントをリスナー（Ｌｉｓｔｅｎｅｒ）と呼び、それぞれの処理を示す。あるサーバントは、アップ側に対する接続処理を行っている間にも、ダウン側からの接続要求を受け付けなければならない。よって、サーバントは、コネクターとしての処理とリスナーとしての処理を並行して行える必要がある。
【００５２】
（コネクターの処理）
図３に基づいて、コネクター処理の流れを説明する。まず、対象サーバントＩＤリストに、シードサーバントのサーバントＩＤリストの内容を代入し（図３、Ｓ１０１）、
次に、対象サーバントＩＤリストからひとつずつ対象サーバントＩＤを取り出して、以下の処理を実行する（Ｓ１０３）。
【００５３】
そして、対象サーバントに接続し（Ｓ１０５）、
接続に成功しなかった場合はステップＳ１０３へ戻り、接続に成功した場合はステップＳ１０９へ進み（Ｓ１０７）、
自分のサーバントＩＤを添付した参加要求電文を、リスナーへ送信する（Ｓ１０９）。
【００５４】
参加応答電文をリスナーから受信し（Ｓ１１１）、
参加応答電文の応答区分が「ＯＫ」ならばコネクター処理を終了し（Ｓ１１３）、
参加応答電文の応答区分が「他のサーバントへの接続指示」であれば、参加応答電文から接続指示サーバントＩＤを取り出し、それを対象サーバントＩＤとして、ステップＳ１０５へ戻る（Ｓ１１５）。
【００５５】
（リスナーの処理）
図４に基づいて、リスナー処理の流れを説明する。
【００５６】
まず、参加要求電文をコネクターから受信し（図４、Ｓ２０１）、
次に、参加要求電文からコネクターのサーバントＩＤを取り出し（Ｓ２０３）、
そして、コネクターのサーバントＩＤ値を使って部分木のサーバントＩＤ値の値域を更新する（Ｓ２０５）。
【００５７】
サーバントＩＤ値の値域が[ａ，ｂ]で、コネクターのサーバントＩＤ値がｃであるとする、そして
ｃ＜ａの場合、値域は[ｃ，ｂ]に更新され、
ｂ＜ｃの場合、値域は[ａ，ｃ]に更新され、
ａ≦ｃ≦ｂの場合は、値域は更新されない。
【００５８】
例えば、参加要求電文受信前のサーバントＩＤ値の値域が［１，２］で、参加要求電文から取り出されたサーバントＩＤ値が「９１」の場合、更新後のサーバントＩＤ値の値域は［１，９１］となる。また、参加要求電文受信前のサーバントＩＤ値の値域が［１８，１９］で、参加要求電文から取り出されたサーバントＩＤ値が「１０」の場合、更新後のサーバントＩＤ値の値域は［１０，１９］となる。
【００５９】
部分木のサーバントＩＤ値の値域からパーティションとスロットを再計算する（Ｓ２０７）。このときパーティションの拡張によって、スロット内に複数のダウンリンクが該当することがある。このときは２番目以降のあふれたダウンリンクを切断する。
【００６０】
前記のように、部分木のサーバントＩＤ値の値域が[vmin, vmax]であるとき、
Nx × y ≦ vmin,  vmax ＜ Nx × (y + 1)
(x, yは整数  x ＞ 0,  0 ≦ y ＜ N)
を満たす最小のxを求める。
【００６１】
この部分木のパーティションは、[Nx × y , Nx × (y + 1) - 1]であり、パーティションの幅は、Nxとなる。
【００６２】
この部分木のスロットは、
[Nx × y                      ,  Nx × y + Nx-1 - 1], 
[Nx × y + Nx-1              ,  Nx × y + Nx-1 ×2 - 1],
：
[Nx × y + Nx-1 ×(N - 1),  Nx × y + (Nx-1 ×N) - 1]
であり、スロットの幅は、Nx-1となる。
【００６３】
例えば、参加要求電文受信前のサーバントＩＤ値の値域が［１，２］、パーティションが［０，９］の場合、参加要求電文から取り出されたサーバントＩＤ値が「９１」であるなら、更新後のサーバントＩＤ値の値域は［１，９１］、再計算後のパーティションは［０，９９］、スロットは［０，９］，［１０，１９］，［２０，２９］，［３０，３９］，［４０，４９］，［５０，５９］，［６０，６９］，［７０，７９］，［８０，８９］，［９０，９９］となる。
【００６４】
例えば、参加要求電文受信前のサーバントＩＤ値の値域が［３，７］、パーティションが［０，９］、ダウンサーバントのサーバントＩＤ値が３，４，７の場合、参加要求電文から取り出されたサーバントＩＤ値が「９１」であるなら、更新後のサーバントＩＤ値の値域は［３，９１］、再計算後のパーティションは［０，９９］、スロットは［０，９］，［１０，１９］，［２０，２９］，［３０，３９］，［４０，４９］，［５０，５９］，［６０，６９］，［７０，７９］，［８０，８９］，［９０，９９］となる。
【００６５】
このとき、スロット［０，９］にはサーバントＩＤ値が３，４，７のダウンサーバントが存在することになるため、サーバントＩＤ値４，７のサーバントへのリンクは切断される。
【００６６】
コネクターのサーバントＩＤ値が属するスロットを求め（Ｓ２０９）、
そのスロットが空かを判断し（Ｓ２１１）、
そのスロットが空であれば、「ＯＫ」の応答区分を持った参加応答電文を送信して（Ｓ２１３）、処理を終了する。
【００６７】
スロットに別のサーバントが割り当てられていれば、「他のサーバントへの接続指示」の応答区分と、スロットに既に割り当てられているサーバントのサーバントＩＤを接続指示サーバントとして設定した参加応答電文を送信して（Ｓ２１５）、処理を終了する。
【００６８】
既に図２（ａ）に示す状態であるとして、図２（ａ）に基づいてステップＳ２０９〜Ｓ２１５を説明する。コネクターのサーバントＩＤ値が「６」の場合、このサーバントＩＤ値が属するスロットとしてスロット［０，９］が求まる（Ｓ２０９）。このスロットには別のサーバント（サーバントＩＤ値「５」）が既に割り当てられているので、「他のサーバントへの接続指示」の応答区分と、先行サーバントのサーバントＩＤ（サーバントＩＤ値「５」）を接続指示サーバントとして設定した参加応答電文を送信する（Ｓ２１５）。
【００６９】
一方、コネクターのサーバントＩＤ値が「２１」の場合、このサーバントＩＤ値が属するスロットとしてスロット［２０，２９］が求まる（Ｓ２０９）。このスロットは空なので、「ＯＫ」の応答区分を持った参加応答電文を送信する（Ｓ２１３）。
【００７０】
（サーバントの離脱・リンクの切断）
物理的なネットワークの障害は、リンクの切断としてサーバントに検知される。また、サーバントの離脱についても、リンクの切断としてアップリンク側およびダウンリンク側のサーバントに検知される。リンク切断を検知したときの処理を以下に示す。
【００７１】
（アップリンク切断時の処理）
図５に基づいて、アップリンク切断時の処理について説明する。
【００７２】
以下では、説明のためにサーバントＩＤ値ｎのサーバントのサーバントＩＤをＩＤｎと表記する。例えば、サーバントＩＤ値５のサーバントのサーバントＩＤをＩＤ５と表記する。
【００７３】
まず、シブリングサーバントＩＤリストを取り出す（Ｓ３０１）。シブリングサーバントＩＤリストとは、同一のアップサーバントを持った兄弟のサーバントのサーバントＩＤリストを意味する。このリストは、アップサーバントから随時送信されるものである。
【００７４】
図２（ａ）の例では、サーバントＩＤ値「５」のサーバントのシブリングサーバントＩＤリストには、「ＩＤ５」と「ＩＤ１３」と「ＩＤ９０」が記されている。また、サーバントＩＤ値「９２」のサーバントのシブリングサーバントＩＤリストには、「ＩＤ９２」と「ＩＤ９５」と「ＩＤ９９」が記されている。
【００７５】
次に、シブリングサーバントＩＤリスト上の自サーバントの位置をもとめ（Ｓ３０３）、
そして、自サーバントが先頭のサーバントか調べ（Ｓ３０５）、
自サーバントがシブリングサーバントＩＤリストにおける先頭のサーバントであれば、コネクター処理を開始する（Ｓ３０７）。
【００７６】
自サーバントがシブリングサーバントＩＤリストにおける先頭のサーバントでなければ、シブリングサーバントＩＤリストを対象サーバントＩＤリストに代入し（Ｓ３０９）、コネクター処理を開始する（Ｓ３１１）。
【００７７】
既に図２（ａ）に示す状態であるとして、図２（ａ）を用いて、図５のステップＳ３０１〜Ｓ３１１を説明する。
【００７８】
まず、サーバントＩＤ値「９０」のサーバントが離脱し、サーバントＩＤ値「９２」のサーバントのアップリンクが切断された場合について説明する。サーバントＩＤ値「９２」のサーバントは、シブリングサーバントＩＤリストを取り出す（Ｓ３０１）。取り出されたリストには、「ＩＤ９２，ＩＤ９５，ＩＤ９９」のように記載されている。よって、サーバントＩＤ値「９２」のサーバントは、シブリングサーバントＩＤリスト上における「先頭のサーバントである」（Ｓ３０３，３０５）。このため、サーバントＩＤ値「９２」のサーバントは、サーバントＩＤ値「３」のシードサーバントを対象サーバントとしてコネクター処理を開始する（Ｓ３０７）。
【００７９】
次に、サーバントＩＤ値「９０」のサーバントが離脱し、サーバントＩＤ値「９５」のサーバントのアップリンクが切断された場合について説明する。サーバントＩＤ値「９５」のサーバントは、シブリングサーバントＩＤリストを取り出す（Ｓ３０１）。取り出されたリストには、「ＩＤ９２，ＩＤ９５，ＩＤ９９」のように記載されている。よって、サーバントＩＤ値「９５」のサーバントは、シブリングサーバントＩＤリスト上における位置は「先頭のサーバントではない」（Ｓ３０３，３０５）。このため、サーバントＩＤ値「９５」のサーバントは、シブリングサーバントＩＤリストを対象サーバントＩＤリストに代入し（Ｓ３０９）、サーバントＩＤ値「９２」のサーバントに対してコネクター処理を開始する（Ｓ３０７）。
【００８０】
図２（ｂ）にこれらの処理が完了した論理ネットワークの状態を示す。なお、サーバントＩＤ値「９９」のサーバントも、サーバントＩＤ値「９５」のサーバントと同様に、サーバントＩＤ値「９２」のサーバントに対してコネクター処理を行う。
【００８１】
このようにして、サーバントの離脱・リンクの切断が生じても、論理ネットワークは自律的に構成される。従って、構成情報の管理などのコストが不要になる。また、障害発生時にも論理ネットワークの再構築が自動的に行われるため、耐障害性が高い。
【００８２】
（ダウンリンク切断時の処理）
ダウンリンク切断時は、切断されたダウンリンクが割り当てられていたスロットを求めて、そのスロットの状態を空とする。
【００８３】
（論理ネットワークのツリー最適化）
本実施形態では、論理ネットワークのツリーが冗長となることを防止するために、論理ネットワーク構成処理と並行して、パーティションに基づいたツリー最適化処理を行う。ツリーの最適化処理は、ツリーの頂点となるシードサーバントとそれ以外のサーバントに分担して行われる。以下に各処理を説明する。
【００８４】
（頂点のシードサーバントのツリー最適化処理）
１．一定時間おきに以下の処理を実行する。
【００８５】
１．１自サーバントのパーティション情報を添付したツリー最適化電文を作成する。
【００８６】
１．２全てのダウンサーバントにツリー最適化電文を送信する。
【００８７】
（頂点以外のサーバントのツリー最適化処理）
図６に基づいて、頂点以外のサーバントのツリー最適化処理の流れを説明する。
【００８８】
アップサーバントからの電文が受信されるのを待ち（Ｓ４０１）、
受信電文がツリー最適化電文か判断し（Ｓ４０３）、
ステップＳ４０３で「ＹＥＳ」に分岐する場合、ツリー最適化電文からアップサーバントのパーティション情報を取り出す（Ｓ４０５）。
【００８９】
自サーバントのパーティションがアップサーバントのパーティションに含まれるか判断する（Ｓ４０７）。なお、自サーバントのパーティションがアップサーバントのパーティションと等しい場合は「含まれない」と判断する。
【００９０】
ステップＳ４０７で「ＹＥＳ」に分岐する場合、自サーバントのパーティション情報を添付したツリー最適化電文を作成し（Ｓ４０９）、
全てのダウンサーバントにツリー最適化電文を送信する（Ｓ４１１）。
【００９１】
ステップＳ４０７で「ＮＯ」に分岐する場合、全てのダウンサーバントにリセット電文を送信し（Ｓ４１３）、
全てのダウンリンクを切断し（Ｓ４１５）、
自サーバントの、部分木の値域、パーティション、スロットをすべてクリアする（Ｓ４１７）。
【００９２】
ステップＳ４０３で「ＮＯ」に分岐する場合、受信電文がリセット電文か判断し（Ｓ４２１）、
ステップＳ４２１で「ＹＥＳ」に分岐する場合、コネクター処理を開始する。
【００９３】
なお、リセット電文受信後、アップサーバントによってアップリンクが切断されるが、コネクター処理が重複して起動することを避けるために、アップリンク切断時の処理が起動しないように制御する。
【実施例１】
【００９４】
図１０に、カテゴリー付きニュース配信システムのシステム構成の一例を示す。かかるニュース配信システムは、ニュース受信を待つ複数のコンピュータ１００ｂ，１００ｃに、ニュース発信コンピュータ１００ａからリアルタイムにニュース情報を配信するシステムである。ニュース情報にはカテゴリーが付与されており、ニュース受信コンピュータ１００ｂ，１００ｃで購読したいカテゴリーを指定することによって、このカテゴリーのニュース情報のみが配信される。
【００９５】
図１０に示すように、本実施形態で使用するサーバント１００は、全体を制御する主制御部（制御手段、以下「ＣＰＵ」とする）１０１に記憶装置１０３が接続されている。ＣＰＵ１０１には、また、入出力制御部１０５を介して送受信部１０７と表示装置１０９が接続されている。さらに、図示していないが、基本入出力システム（ＢＩＯＳ）などが記憶されるリードオンリーメモリ（ＲＯＭ）と、プログラム領域とデータ領域を有するランダムアクセスメモリ（ＲＡＭ）とがＣＰＵ１０１に接続されている。
【００９６】
記憶装置１０３は、ハードディスク、フレキシブルディスク、光ディスク、光磁気ディスクなどのストレージ手段であり、ニュース発信プログラム１１１、ニュース受信プログラム１１３、ＰＢＴＣ通信ライブラリ１１５、ネットワーク定義データ１１７などが格納されている。
【００９７】
ＰＢＴＣ（ＰＢＴＣ：Partition-Based Tree Construction）通信ライブラリ１１５は、本発明の手法を利用してニュース配信システムのための論理ネットワークを構築し、その論理ネットワーク上でのメッセージ通信を行うための通信ライブラリである。本発明による論理ネットワーク上でのマルチキャスト通信機能をサポートする。
【００９８】
ニュース発信プログラム１１１は、ニュース情報発信者の指示を受けて、ニュース情報の同報配信を行うプログラムである。ニュース情報は、ＰＢＴＣ通信ライブラリ１１５を利用してマルチキャストメッセージとして送信される。このマルチキャストメッセージは、ニュースのカテゴリーをそのまま宛先のマルチキャストグループとして設定したものである。
【００９９】
ニュース受信プログラム１１３は、ＰＢＴＣ通信ライブラリ１１５からのニュース情報の受信を待ち、受信時に表示装置１０９にその情報を表示するプログラムである。購読するカテゴリーは、そのままマルチキャストグループとしてＰＢＴＣ通信ライブラリに登録する。
【０１００】
ネットワーク定義データ１１７は、ＰＢＴＣ通信ライブラリ１１５が利用する定義データであり、論理ネットワークの構成に必要なシードサーバントのサーバントＩＤリストを含む。
【０１０１】
図１７（ａ）にネットワーク定義データ１１７の内容を示す。図１７（ａ）に示すように、ネットワーク定義データ１１７には、シードサーバントＩＤと、自サーバントＩＤと、サーバントＩＤ値の値域と、パーティション情報と、スロット情報と、アップ／ダウンサーバント情報とが含まれる。ネットワーク定義データ１１７には、さらに、selfMulticastIdSet、各リンクのsentMulticastIdSet、各リンクのreceivedMulticastIdSetが含まれる。
【０１０２】
なお、ネットワーク定義データ１１７の全てを記憶装置１０３に格納しなくても良い。例えば、シードサーバントＩＤのみを記憶装置１０３に格納し、自サーバントＩＤ、サーバントＩＤ値の値域などはＲＡＭ上に保持するとしても良い。
【０１０３】
また、記憶装置１０３には、図示していないが、ＴＣＰ／ＩＰなどの通信プロトコルに従ってデータの送受信が可能なオペレーティングシステム（ＯＳ）などが格納されている。
【０１０４】
ニュース送信のみを行うサーバント１００ａ、ニュース受信及びニュース送信を行うサーバント１００ｂ並びにニュース受信のみを行うサーバント１００ｃは、ＴＣＰ／ＩＰネットワーク１２０を介してニュースを送受信する。ニュース送信のみを行うサーバント１００ａには、ニュース受信プログラム１１３は不要である。ニュース受信のみを行うサーバント１００ｃには、ニュース送信プログラム１１１は不要である。
【０１０５】
表示装置１０９は、ニュース受信プログラムが受信したニュースを表示する。表示装置１０９には、ＣＲＴ（陰極線管）ディスプレイ、ＴＦＴ液晶などの液晶ディスプレイが含まれる。
【０１０６】
以下に、各プログラムモジュールの処理の流れを示す。
【０１０７】
１）ＰＢＴＣ通信ライブラリ
１．サーバントの生成依頼を待ち、
２．サーバントの生成依頼を受けると、サーバントを生成し、論理ネットワークを自律的に構成し、
３．サーバントは、上位プログラムからの「メッセージ送受信の依頼」、「マルチキャストグループへの登録・削除依頼」を待つ。
【０１０８】
２）ニュース発信プログラム
１．ＰＢＴＣ通信ライブラリにサーバント生成依頼を行い、
２．利用者からのニュース配信指示を待ち、
３．ニュース配信指示を受けたら、ニュース情報をマルチキャストメッセージとしてＰＢＴＣ通信ライブラリに送信を依頼する。このとき、ニュースのカテゴリーを宛先のマルチキャストＩＤとして設定し、
４．利用者からのニュース配信指示待ち状態へ戻る。
【０１０９】
３）ニュース受信プログラム
１．ＰＢＴＣ通信ライブラリにサーバント生成依頼を行い、
２．購読カテゴリーの設定に従って、カテゴリーをマルチキャストグループとしてＰＢＴＣ通信ライブラリに登録を依頼し、
３．ＰＢＴＣ通信ライブラリにメッセージ受信を依頼し、
４．メッセージの受信を待ち、
５．メッセージを受信したら、ニュース情報を取り出して、表示装置１０９の画面に表示し、
６．メッセージの受信待ち状態へ戻る。
【０１１０】
カテゴリー付きニュース配信システムの実施形態について、仮想的な事例を使って具体的に説明する。
【０１１１】
例えば、社内横断的なニュースを従業員へ配信するために、ニュース配信システムを利用しているとする。ニュース発信を専門とする部署Pから、受信部署Ｓ１、Ｓ２、・・・へニュース配信を行っている。受信部署の各従業員のコンピュータは、起動時にニュース受信プログラム１１３が起動するように設定されている。従業員は、購読するカテゴリーをニュース受信プログラムに設定しておく。
【０１１２】
図１１に、ニュース配信システムのネットワーク構成の一例を示す。図１１に示すように、発信部署Ｐのネットワークアドレスは192.168.1.0/24、受信部署Ｓ１のネットワークアドレスは192.168.11.0/24、受信部署Ｓ２のネットワークアドレスは192.168.12.0/24とする。
【０１１３】
発信部署Pでは、ニュース配信の確認を行うためのコンピュータを２台設置しており、常にニュース受信プログラムが起動した状態となっている。なお、以下では、ポート番号は省略して表記する。ニュース配信確認コンピュータのＩＰアドレスを以下に示す。
【０１１４】
192.168.1.1
192.168.1.2
これら2台のコンピュータには、論理ネットワークのシードサーバントの役割を持たせる。よって、ネットワーク定義データの内容は、以下のようになっている。
【０１１５】
ＳｅｅｄＳｅｒｖｅｎｔ
192.168.1.1
192.168.1.2
また、ＰＢＴＣは以下のように調整されている。ダウンリンクの最大数Ｎは「１６」、サーバントＩＤのＩＰアドレスとポート番号をそのまま６バイトの整数としてサーバントＩＤ値とする。
【０１１６】
図１２に、起動しているコンピュータの部署と、ＩＰアドレスと、用途と、購読カテゴリーとを示す。図１２に示すように、
発信部署ＰのＩＰアドレス192.168.1.1〜192.168.1.2のコンピュータは、ニュース受信コンピュータ兼シードサーバント、
発信部署ＰのＩＰアドレス192.168.1.3〜192.168.1.4のコンピュータは、ニュース発信コンピュータ、
受信部署Ｓ１のＩＰアドレス192.168.11.1〜192.168.11.2のコンピュータは、ニュース受信コンピュータで、購読カテゴリーはＸ、
受信部署Ｓ１のＩＰアドレス192.168.11.3のコンピュータは、ニュース受信コンピュータで、購読カテゴリーはＹ、
受信部署Ｓ１のＩＰアドレス192.168.11.4のコンピュータは、ニュース受信コンピュータで、購読カテゴリーはＸ、
受信部署Ｓ２のＩＰアドレス192.168.12.1〜192.168.12.3のコンピュータも、ニュース受信コンピュータで、購読カテゴリーはＹである。
【０１１７】
図１３に、図１２の論理ネットワークの構成例を示す。図１３に示すように、
頂点のサーバントは、ＩＰアドレス192.168.1.1のコンピュータのサーバントであり、
ＩＰアドレス192.168.1.1のコンピュータのダウンサーバントは、ＩＰアドレス192.168.1.2, 192.168.11.4, 192.168.12.2のコンピュータのサーバントであり、
ＩＰアドレス192.168.1.2のコンピュータのダウンサーバントは、ＩＰアドレス192.168.1.3, 192.168.1.4のコンピュータのサーバントであり、
ＩＰアドレス192.168.11.4のコンピュータのダウンサーバントは、ＩＰアドレス192.168.11.1〜192.168.11.3のコンピュータのサーバントであり、
ＩＰアドレス192.168.12.2のコンピュータのダウンサーバントは、ＩＰアドレス192.168.12.1, 192.168.12.3のコンピュータのサーバントである。
【０１１８】
図１３中の{}は登録中のマルチキャストグループの集合(selfMulticastIdSet)を示し、[]はリンクの相手先から受信したマルチキャストグループの集合(receivedMulticastIdSet)を示す。
【０１１９】
ニュース配信システムの動作を、以下のシナリオ１，２を例にとって説明する。以下では、図１３の論理ネットワークが構成されている状況を前提とする。
【０１２０】
（シナリオ１：カテゴリーＸを購読するニュース受信コンピュータ[192.168.12.4]の起動から論理ネットワークへの参加まで）
ニュース受信部署S2に属するニュース受信コンピュータ[192.168.12.4]が起動し、論理ネットワークに参加するまでの動作の流れを以下に示す。
【０１２１】
ニュース受信プログラムが起動し、サーバント[192.168.12.4]が生成され、
サーバント[192.168.12.4]は、対象サーバントリストに[192.168.1.1]と[192.168.1.2]を設定し（図３、Ｓ１０１）、
先頭のシードサーバントであるサーバント[192.168.1.1]のサーバントＩＤを取り出し（Ｓ１０３）、
サーバント[192.168.1.1]に接続し（Ｓ１０５）、
自サーバントＩＤ[192.168.12.4]を添付した参加要求を送信する（Ｓ１０９）。
【０１２２】
サーバント[192.168.1.1]は、サーバント[192.168.12.4]から参加要求を受信し（図４、Ｓ２０１）、
参加要求からサーバント[192.168.12.4]のサーバントＩＤを取り出し（Ｓ２０３）、
サーバント[192.168.12.4]のサーバントＩＤ値を使って部分木を更新し（Ｓ２０５）、部分木の値域からパーティションとスロットを再計算し（Ｓ２０７）、
サーバント[192.168.12.4]のサーバントＩＤ値が属するスロットを求め（Ｓ２０９）、求められたスロットが空か判断し（Ｓ２１１）、
求められたスロットに割り当てられているサーバント[192.168.12.2]への接続指示を参加応答として返す（Ｓ２１５）。
【０１２３】
これによって、サーバント[192.168.1.1]のサーバントＩＤ値の値域は、
[192.168.1.1, 192.168.12.3]から
[192.168.1.1, 192.168.12.4]へ更新される。
【０１２４】
サーバント[192.168.1.1]のパーティションは、
[192.168.0.0, 192.168.15.255]のままである。
【０１２５】
そして、図１７（ｂ）に示すスロット情報に基づいて、サーバント[192.168.12.4]が属するスロット[192.168.12.0, 192.168.12.255]を求める（Ｓ２０９）。図１７（ｂ）に示すように、スロット[192.168.12.0, 192.168.12.255]には既にサーバント[192.168.12.2]が存在する。よって、求められたスロットは空ではないと判断し（Ｓ２１１）、[192.168.12.2]への接続指示を参加応答として返す（Ｓ２１５）。
【０１２６】
サーバント[192.168.12.4]は、サーバント[192.168.1.1]から参加応答を受信し（図３、Ｓ１１１）、
参加応答の内容は「ＯＫ」ではないので、参加応答からサーバント[192.168.12.2]のサーバントＩＤを取り出し、このサーバントＩＤを新たな対象サーバントＩＤとし（Ｓ１１５）、
サーバント[192.168.12.2]へ接続し（Ｓ１０５）、参加要求を送信する（Ｓ１０９）。
【０１２７】
サーバント[192.168.12.2]は、サーバント[192.168.12.4]から参加要求を受信し（図４、Ｓ２０１）、
参加要求からサーバント[192.168.12.4]のサーバントＩＤを取り出し（Ｓ２０３）、
サーバント[192.168.12.4]のサーバントＩＤ値を使って部分木を更新し（Ｓ２０５）、部分木の値域からパーティションとスロットを再計算し（Ｓ２０７）、
サーバント[192.168.12.4]のサーバントＩＤ値が属するスロットを求め（Ｓ２０９）、求められたスロットが空か判断する（Ｓ２１１）。
【０１２８】
具体的には、サーバント[192.168.12.2]のサーバントＩＤ値の値域は、
[192.168.12.1, 192.168.12.3]から
[192.168.12.1, 192.168.12.4]へ更新される。
【０１２９】
サーバント[192.168.12.2]のパーティションは、
[192.168.12.0, 192.168.12.15]のままである。
【０１３０】
サーバント[192.168.12.4]が属するスロットは空なので、サーバント[192.168.12.2]は、接続OKの参加応答を返す（Ｓ２１３）。この結果、サーバント[192.168.12.4]はサーバント[192.168.12.2]のダウンサーバントとなる。
【０１３１】
図１４に、サーバント[192.168.12.4]がサーバント[192.168.12.2]のダウンサーバントとなった論理ネットワークを示す。
【０１３２】
このように、サーバントの参加に応じて、論理ネットワークが自律的に構成される。従って、論理ネットワーク全体の構成情報を管理するなどのコストは不要である。
【０１３３】
次に、図７、図８及び図１４に基づいて、ニュース受信部署S2に属するニュース受信コンピュータ[192.168.12.4]が論理ネットワークに参加した後に、マルチキャスト情報がどのようにやりとりされるかを説明する。
【０１３４】
（サーバント[192.168.12.4]によるマルチキャストルーティング情報送信処理）
サーバント[192.168.12.4]は、新しいリンクＬ１をターゲットリンクとして、マルチキャストルーティング情報送信処理を起動する。
【０１３５】
サーバント[192.168.12.4]は、selfMulticastIdSetと、ターゲットリンクＬ１以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（図７、Ｓ５０１）。サーバント[192.168.12.4]のselfMulticastIdSetは{X}であり、サーバント[192.168.12.4]はターゲットリンクＬ１以外のリンクを有しない。このため、和集合はカテゴリーＸのみである。よって、カテゴリーＸのみをmulticastIdSetにセットする（Ｓ５０２）。
【０１３６】
multicastIdSetと、ターゲットリンクＬ１へのsentMulticastIdSetとを比較する（Ｓ１０３）。リンクＬ１は接続されたばかりであるから、ターゲットリンクＬ１へのsentMulticastIdSetの中身は空である。よって、multicastIdSetと、ターゲットリンクＬ１へのsentMulticastIdSetとは等しくない（Ｓ５０４でＮＯ）。
【０１３７】
サーバント[192.168.12.4]は、カテゴリーＸのみがセットされたmulticastIdSetを格納したマルチキャスト情報電文を生成し（Ｓ１０５）、生成したマルチキャスト情報電文をターゲットリンクＬ１の相手先サーバント[192.168.12.2]へ送信する（Ｓ５０６）。かかる送信を図１４に矢印ＡＲ１１で示す。
【０１３８】
また、サーバント[192.168.12.4]は、カテゴリーＸのみがセットされたmulticastIdSetを、ターゲットリンクＬ１のsentMulticastIdSetにセットする（Ｓ５０７）。
【０１３９】
（サーバント[192.168.12.2]によるマルチキャストルーティング情報送信処理）
サーバント[192.168.12.2]も、新しいリンクＬ１をターゲットリンクとして、マルチキャストルーティング情報送信処理を起動する。
【０１４０】
サーバント[192.168.12.2]は、selfMulticastIdSetと、ターゲットリンクＬ１以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（図７、Ｓ５０１）。サーバント[192.168.12.2]のselfMulticastIdSetは{Y}である。
【０１４１】
ターゲットリンクＬ１以外のリンクとして、
サーバント[192.168.12.3]とのリンクＬ２、
サーバント[192.168.12.1]とのリンクＬ３、
サーバント[192.168.1.1]とのリンクＬ４が存在する。
【０１４２】
リンクＬ２のreceivedMulticastIdSetはカテゴリーＹのみ、
リンクＬ３のreceivedMulticastIdSetもカテゴリーＹのみ、
リンクＬ４のreceivedMulticastIdSetはカテゴリーＸとＹである。
【０１４３】
このため、和集合はカテゴリーＸとＹである。よって、カテゴリーＸとＹをmulticastIdSetにセットする（Ｓ５０２）。
【０１４４】
multicastIdSetと、ターゲットリンクＬ１へのsentMulticastIdSetとを比較する（Ｓ５０３）。リンクＬ１は接続されたばかりであるから、ターゲットリンクＬ１へのsentMulticastIdSetの中身は空である。よって、multicastIdSetと、ターゲットリンクＬ１へのsentMulticastIdSetとは等しくない（Ｓ５０４でＮＯ）。
【０１４５】
サーバント[192.168.12.2]は、カテゴリーＸとＹがセットされたmulticastIdSetを格納したマルチキャスト情報電文を生成し（Ｓ５０５）、生成したマルチキャスト情報電文をターゲットリンクＬ１の相手先サーバント[192.168.12.4]へ送信する（Ｓ５０６）。かかる送信を図１４に矢印ＡＲ１２で示す。
【０１４６】
また、サーバント[192.168.12.2]は、カテゴリーＸとＹがセットされたmulticastIdSetを、ターゲットリンクＬ１のsentMulticastIdSetにセットする（Ｓ５０７）。
【０１４７】
（サーバント[192.168.12.2]によるマルチキャスト情報電文の受信）
サーバント[192.168.12.2]は、矢印ＡＲ１１に対応するマルチキャスト情報電文を受信すると、そのマルチキャスト情報電文からmulticastIdSetを取り出す（図８、Ｓ５２１）。つまり、カテゴリーＸが取り出される。
【０１４８】
そして、サーバント[192.168.12.2]は、マルチキャスト情報電文を受信したリンクのreceivedMulticastIdSetに、multicastIdSetをセットする（Ｓ５２２）。つまり、リンクＬ１のreceivedMulticastIdSetにカテゴリーＸがセットされる。
【０１４９】
さらに、サーバント[192.168.12.2]は、マルチキャスト情報電文を受信したリンク以外の全リンク、つまりリンクＬ２、Ｌ３及びＬ４に対して、マルチキャストルーティング情報送信処理を起動する（Ｓ５２３）。
【０１５０】
（リンクＬ２へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ２である場合のサーバント[192.168.12.2]におけるマルチキャストルーティング情報の送信処理について説明する。
【０１５１】
サーバント[192.168.12.2]は、selfMulticastIdSetと、ターゲットリンクＬ２以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（図７、Ｓ５０１）。サーバント[192.168.12.2]のselfMulticastIdSetは{Y}である。
【０１５２】
ターゲットリンクＬ２以外のリンクとして、
サーバント[192.168.12.4]とのリンクＬ１、
サーバント[192.168.12.1]とのリンクＬ３、
サーバント[192.168.1.1]とのリンクＬ４が存在する。
【０１５３】
リンクＬ１のreceivedMulticastIdSetはカテゴリーＸのみ、
リンクＬ３のreceivedMulticastIdSetはカテゴリーＹのみ、
リンクＬ４のreceivedMulticastIdSetはカテゴリーＸとＹである。
【０１５４】
このため、和集合はカテゴリーＸとＹである。よって、カテゴリーＸとＹをmulticastIdSetにセットする（Ｓ５０２）。
【０１５５】
multicastIdSetと、ターゲットリンクＬ２へのsentMulticastIdSetとを比較する（Ｓ５０３）。ターゲットリンクＬ２へのsentMulticastIdSetの中身はカテゴリーＸとＹである。よって、multicastIdSetと、ターゲットリンクＬ２へのsentMulticastIdSetとは等しい（Ｓ５０４でＹＥＳ）。つまり、情報に変化がないので送信は行われず、リンクＬ２に関するマルチキャストルーティング情報の送信を終了する。
【０１５６】
（リンクＬ３へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ３である場合のサーバント[192.168.12.2]におけるマルチキャストルーティング情報の送信処理は、ターゲットリンクがリンクＬ２である場合と同様であるから説明を省略する。
【０１５７】
（リンクＬ４へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ４である場合のサーバント[192.168.12.2]におけるマルチキャストルーティング情報の送信処理について説明する。
【０１５８】
サーバント[192.168.12.2]は、selfMulticastIdSetと、ターゲットリンクＬ４以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（Ｓ５０１）。サーバント[192.168.12.2]のselfMulticastIdSetは{Y}である。
【０１５９】
ターゲットリンクＬ４以外のリンクとして、
サーバント[192.168.12.4]とのリンクＬ１、
サーバント[192.168.12.3]とのリンクＬ２、
サーバント[192.168.12.1]とのリンクＬ３が存在する。
【０１６０】
リンクＬ１のreceivedMulticastIdSetはカテゴリーＸのみ、
リンクＬ２のreceivedMulticastIdSetはカテゴリーＹのみ、
リンクＬ３のreceivedMulticastIdSetもカテゴリーＹのみである。
【０１６１】
このため、和集合はカテゴリーＸとＹである。よって、カテゴリーＸとＹをmulticastIdSetにセットする（Ｓ５０２）。
【０１６２】
multicastIdSetと、ターゲットリンクＬ４へのsentMulticastIdSetとを比較する（Ｓ５０３）。ターゲットリンクＬ４へのsentMulticastIdSetの中身はカテゴリーＹのみである。よって、multicastIdSetと、ターゲットリンクＬ４へのsentMulticastIdSetとは等しくない（Ｓ５０４でＮＯ）。
【０１６３】
サーバント[192.168.12.2]は、カテゴリーＸとＹがセットされたmulticastIdSetを格納したマルチキャスト情報電文を生成し（Ｓ５０５）、生成したマルチキャスト情報電文をターゲットリンクＬ４の相手先サーバント[192.168.1.1]へ送信する（Ｓ５０６）。かかる送信を図１４に矢印ＡＲ１３で示す。
【０１６４】
また、サーバント[192.168.12.2]は、カテゴリーＸとＹがセットされたmulticastIdSetを、ターゲットリンクＬ４のsentMulticastIdSetにセットする（Ｓ５０７）。
【０１６５】
図１７（ｄ）〜（ｆ）に、リンクＬ１〜４へのマルチキャストルーティング情報送信処理後のselfMulticastIdSet、sentMulticastIdSet及びreceivedMulticastIdSetを示す。
【０１６６】
図１７（ｄ）に示すように、selfMulticastIdSetはカテゴリーＹのみ、
図１７（ｅ）に示すように、sentMulticastIdSetはリンクＬ１〜Ｌ４のいずれについてもカテゴリーＸとＹ、
図１７（ｆ）に示すように、receivedMulticastIdSetはリンクＬ１についてカテゴリーＸ、リンクＬ２及びＬ３についてカテゴリーＹ、リンクＬ４についてカテゴリーＸとＹである。
【０１６７】
（サーバント[192.168.1.1]によるマルチキャスト情報電文の受信）
サーバント[192.168.1.1]は、矢印ＡＲ１３に対応するマルチキャスト情報電文を受信すると、そのマルチキャスト情報電文からmulticastIdSetを取り出す（図８、Ｓ５２１）。つまり、カテゴリーＸとＹが取り出される。
【０１６８】
そして、サーバント[192.168.1.1]は、マルチキャスト情報電文を受信したリンクのreceivedMulticastIdSetに、multicastIdSetをセットする（Ｓ５２２）。つまり、リンクＬ４のreceivedMulticastIdSetにカテゴリーＸとＹがセットされる。
【０１６９】
さらに、サーバント[192.168.1.1]は、マルチキャスト情報電文を受信したリンク以外の全リンク、つまりリンクＬ５とＬ６に対して、マルチキャストルーティング情報送信処理を起動する（Ｓ５２３）。
【０１７０】
（リンクＬ６へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ６である場合のサーバント[192.168.1.1]におけるマルチキャストルーティング情報の送信処理について説明する。
【０１７１】
サーバント[192.168.1.1]は、selfMulticastIdSetと、ターゲットリンクＬ６以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（図７、Ｓ５０１）。サーバント[192.168.1.1]のselfMulticastIdSetの中身は空である。
【０１７２】
ターゲットリンクＬ６以外のリンクとして、
サーバント[192.168.12.2]とのリンクＬ４、
サーバント[192.168.11.4]とのリンクＬ５が存在する。
【０１７３】
リンクＬ４のreceivedMulticastIdSetはカテゴリーＸとＹ、
リンクＬ５のreceivedMulticastIdSetもカテゴリーＸとＹである。
【０１７４】
このため、和集合はカテゴリーＸとＹである。よって、カテゴリーＸとＹをmulticastIdSetにセットする（Ｓ５０２）。
【０１７５】
multicastIdSetと、ターゲットリンクＬ６へのsentMulticastIdSetとを比較する（Ｓ５０３）。ターゲットリンクＬ６へのsentMulticastIdSetの中身はカテゴリーＸとＹである。よって、multicastIdSetと、ターゲットリンクＬ６へのsentMulticastIdSetとは等しい（Ｓ５０４でＹＥＳ）。つまり、情報に変化がないので送信は行われず、リンクＬ６に関するマルチキャストルーティング情報の送信を終了する。
【０１７６】
（リンクＬ５へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ５である場合のサーバント[192.168.1.1]におけるマルチキャストルーティング情報の送信処理について説明する。
【０１７７】
サーバント[192.168.1.1]は、selfMulticastIdSetと、ターゲットリンクＬ５以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（Ｓ５０１）。サーバント[192.168.1.1]のselfMulticastIdSetの中身は空である。
【０１７８】
ターゲットリンクＬ５以外のリンクとして、
サーバント[192.168.12.2]とのリンクＬ４、
サーバント[192.168.1.2]とのリンクＬ６が存在する。
【０１７９】
リンクＬ４のreceivedMulticastIdSetはカテゴリーＸとＹ、
リンクＬ６のreceivedMulticastIdSetの中身は空である。
【０１８０】
このため、和集合はカテゴリーＸとＹである。よって、カテゴリーＸとＹをmulticastIdSetにセットする（Ｓ５０２）。
【０１８１】
multicastIdSetと、ターゲットリンクＬ５へのsentMulticastIdSetとを比較する（Ｓ５０３）。ターゲットリンクＬ５へのsentMulticastIdSetの中身はカテゴリーＹのみである。よって、multicastIdSetと、ターゲットリンクＬ５へのsentMulticastIdSetとは等しくない（Ｓ５０４でＮＯ）。
【０１８２】
サーバント[192.168.1.1]は、カテゴリーＸとＹがセットされたmulticastIdSetを格納したマルチキャスト情報電文を生成し（Ｓ５０５）、生成したマルチキャスト情報電文をターゲットリンクＬ５の相手先サーバント[192.168.11.4]へ送信する（Ｓ５０６）。かかる送信を図１４に矢印ＡＲ１４で示す。
【０１８３】
また、サーバント[192.168.1.1]は、カテゴリーＸとＹがセットされたmulticastIdSetを、ターゲットリンクＬ５のsentMulticastIdSetにセットする（Ｓ５０７）。
【０１８４】
（サーバント[192.168.11.4]によるマルチキャスト情報電文の受信）
サーバント[192.168.11.4]は、矢印ＡＲ１４に対応するマルチキャスト情報電文を受信すると、そのマルチキャスト情報電文からmulticastIdSetを取り出す（図８、Ｓ５２１）。つまり、カテゴリーＸとＹが取り出される。
【０１８５】
そして、サーバント[192.168.11.4]は、マルチキャスト情報電文を受信したリンクのreceivedMulticastIdSetに、multicastIdSetをセットする（Ｓ５２２）。つまり、リンクＬ５のreceivedMulticastIdSetにカテゴリーＸとＹがセットされる。
【０１８６】
さらに、サーバント[192.168.11.4]は、マルチキャスト情報電文を受信したリンク以外の全リンク、つまりリンクＬ７、Ｌ８及びＬ９に対して、マルチキャストルーティング情報送信処理を起動する（Ｓ５２３）。
【０１８７】
（リンクＬ７へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ７である場合のサーバント[192.168.11.4]におけるマルチキャストルーティング情報の送信処理について説明する。
【０１８８】
サーバント[192.168.11.4]は、selfMulticastIdSetと、ターゲットリンクＬ７以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（図７、Ｓ５０１）。サーバント[192.168.11.4]のselfMulticastIdSetは{X}である。
【０１８９】
ターゲットリンクＬ７以外のリンクとして、
サーバント[192.168.1.1]とのリンクＬ５、
サーバント[192.168.11.2]とのリンクＬ８、
サーバント[192.168.11.1]とのリンクＬ９が存在する。
【０１９０】
リンクＬ５のreceivedMulticastIdSetはカテゴリーＸとＹ、
リンクＬ８のreceivedMulticastIdSetはカテゴリーＸ、
リンクＬ９のreceivedMulticastIdSetもカテゴリーＸである。
【０１９１】
このため、和集合はカテゴリーＸとＹである。よって、カテゴリーＸとＹをmulticastIdSetにセットする（Ｓ５０２）。
【０１９２】
multicastIdSetと、ターゲットリンクＬ７へのsentMulticastIdSetとを比較する（Ｓ５０３）。ターゲットリンクＬ７へのsentMulticastIdSetの中身はカテゴリーＸとＹである。よって、multicastIdSetと、ターゲットリンクＬ７へのsentMulticastIdSetとは等しい（Ｓ５０４でＹＥＳ）。つまり、情報に変化がないので送信は行われず、リンクＬ７に関するマルチキャストルーティング情報の送信を終了する。
【０１９３】
（リンクＬ８へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ８である場合のサーバント[192.168.11.4]におけるマルチキャストルーティング情報の送信処理について説明する。
【０１９４】
サーバント[192.168.11.4]は、selfMulticastIdSetと、ターゲットリンクＬ８以外の全リンクのreceivedMulticastIdSetとの和集合をもとめる（Ｓ５０１）。サーバント[192.168.11.4]のselfMulticastIdSetは{X}である。
【０１９５】
ターゲットリンクＬ８以外のリンクとして、
サーバント[192.168.1.1]とのリンクＬ５、
サーバント[192.168.11.3]とのリンクＬ７、
サーバント[192.168.11.1]とのリンクＬ９が存在する。
【０１９６】
リンクＬ５のreceivedMulticastIdSetはカテゴリーＸとＹ、
リンクＬ７のreceivedMulticastIdSetはカテゴリーＹ、
リンクＬ９のreceivedMulticastIdSetもカテゴリーＸである。
【０１９７】
このため、和集合はカテゴリーＸとＹである。よって、カテゴリーＸとＹをmulticastIdSetにセットする（Ｓ５０２）。
【０１９８】
multicastIdSetと、ターゲットリンクＬ８へのsentMulticastIdSetとを比較する（Ｓ５０３）。ターゲットリンクＬ８へのsentMulticastIdSetの中身はカテゴリーＸとＹである。よって、multicastIdSetと、ターゲットリンクＬ８へのsentMulticastIdSetとは等しい（Ｓ５０４でＹＥＳ）。つまり、情報に変化がないので送信は行われず、リンクＬ８に関するマルチキャストルーティング情報の送信を終了する。
【０１９９】
（リンクＬ９へのマルチキャストルーティング情報送信処理）
ターゲットリンクがリンクＬ９である場合のサーバント[192.168.11.4]におけるマルチキャストルーティング情報の送信処理も、ターゲットリンクがリンクＬ８である場合と同様であるから説明を省略する。
【０２００】
上記の如く、新しいリンクＬ１が接続されると、
サーバント[192.168.12.4]は、カテゴリーＸがセットされたmulticastIdSetを格納したマルチキャスト情報電文をリンクＬ１の相手先サーバント[192.168.12.2]へ送信し（矢印ＡＲ１１に対応）、
サーバント[192.168.12.2] は、カテゴリーＸとＹがセットされたmulticastIdSetを格納したマルチキャスト情報電文をリンクＬ１の相手先サーバント[192.168.12.4]とリンクＬ４の相手先サーバント[192.168.1.1]へ送信し（矢印ＡＲ１２とＡＲ１３に対応）、
サーバント[192.168.1.1]は、カテゴリーＸとＹがセットされたmulticastIdSetを格納したマルチキャスト情報電文をリンクＬ５の相手先サーバント[192.168.11.4]へ送信する（矢印ＡＲ１４に対応）。
【０２０１】
そして、サーバント[192.168.12.4]のリンクＬ１に対するreceivedMulticastIdSetはカテゴリーＸとＹになり、
サーバント[192.168.12.2]のリンクＬ１に対するreceivedMulticastIdSetはカテゴリーＸになり、
サーバント[192.168.1.1]のリンクＬ４に対するreceivedMulticastIdSetはカテゴリーＸとＹになり、
サーバント[192.168.11.4]のリンクＬ５に対するreceivedMulticastIdSetもカテゴリーＸとＹになる。
【０２０２】
（シナリオ2：ニュース発信コンピュータ[192.168.1.4]からのカテゴリーＸのニュース発信）
図９及び図１５に基づいて、ニュース配信の一例を説明する。ニュース発信プログラムはサーバント[192.168.1.4]を使って、ニュースを矢印ＡＲ２１に対応するマルチキャストメッセージとして送信する。このときカテゴリーＸを送信先のマルチキャストグループとして設定する。
【０２０３】
（矢印ＡＲ２１に対応するマルチキャストメッセージを受信したサーバント[192.168.1.2]の動作）
まず、サーバント[192.168.1.2]は、マルチキャストメッセージからmulticastIdを取り出す（図９、Ｓ５３１）。具体的には、multicastIdとしてカテゴリーＸが取り出される。
【０２０４】
次に、サーバント[192.168.1.2]は、selfMulticastIdSetに、multicastIdが含まれている時、アプリケーションにメッセージを渡す（Ｓ５３２）。サーバント[192.168.1.2]のselfMulticastIdSetは空である。つまり、カテゴリーＸは、selfMulticastIdSetに含まれていないから、メッセージはニュース受信プログラム１１３などのアプリケーションに渡されない。
【０２０５】
次に、サーバント[192.168.1.2]は、マルチキャストメッセージを送信してきたリンク以外の全リンクのreceivedMulticastIdSetをチェックし、multicastIdが含まれているリンクを探す（Ｓ５３３）。具体的には、マルチキャストメッセージを送信してきたリンクＬ１０以外の全リンク、すなわちリンクＬ６とＬ１１のreceivedMulticastIdSetをチェックし、カテゴリーＸが含まれているリンクを探す。
【０２０６】
リンクＬ６のreceivedMulticastIdSet はカテゴリーＸとＹである。つまり、リンクＬ６のreceivedMulticastIdSet は、カテゴリーＸを含む。すなわち、multicastIdが含まれているリンクがある（Ｓ５３４でＹＥＳ）。
【０２０７】
そこで、multicastIdが含まれているリンクに対して、マルチキャストメッセージを送信する（Ｓ５３５）。具体的には、リンクＬ６に対して、矢印ＡＲ２２に対応するマルチキャストメッセージを送信する。
【０２０８】
（矢印ＡＲ２２に対応するマルチキャストメッセージを受信したサーバント[192.168.1.1]の動作）
まず、サーバント[192.168.1.1]は、マルチキャストメッセージからmulticastIdを取り出す（Ｓ５３１）。つまり、multicastIdとしてカテゴリーＸが取り出される。
【０２０９】
次に、サーバント[192.168.1.1]は、selfMulticastIdSetに、multicastIdが含まれている時、アプリケーションにメッセージを渡す（Ｓ５３２）。サーバント[192.168.1.1]のselfMulticastIdSetは空である。つまり、カテゴリーＸは、selfMulticastIdSetに含まれていないから、メッセージはニュース受信プログラム１１３などのアプリケーションに渡されない。
【０２１０】
次に、サーバント[192.168.1.1]は、マルチキャストメッセージを送信してきたリンク以外の全リンクのreceivedMulticastIdSetをチェックし、multicastIdが含まれているリンクを探す（Ｓ５３３）。具体的には、リンクＬ６以外の全リンク、すなわちリンクＬ４とＬ５のreceivedMulticastIdSetをチェックし、カテゴリーＸが含まれているリンクを探す。
【０２１１】
リンクＬ４もリンクＬ５もreceivedMulticastIdSet は、カテゴリーＸとＹである。つまり、リンクＬ４もリンクＬ５もreceivedMulticastIdSet は、カテゴリーＸを含む。すなわち、multicastIdが含まれているリンクがある（Ｓ５３４でＹＥＳ）。
【０２１２】
そこで、multicastIdが含まれているリンクに対して、マルチキャストメッセージを送信する（Ｓ５３５）。具体的には、リンクＬ４に対して、矢印ＡＲ２４に対応するマルチキャストメッセージを送信し、リンクＬ５に対して、矢印ＡＲ２３に対応するマルチキャストメッセージを送信する。
【０２１３】
（矢印ＡＲ２３に対応するマルチキャストメッセージを受信したサーバント[192.168.11.4]の動作）
まず、サーバント[192.168.11.4]は、マルチキャストメッセージからmulticastIdを取り出す（Ｓ５３１）。つまり、multicastIdとしてカテゴリーＸが取り出される。
【０２１４】
次に、サーバント[192.168.11.4]は、selfMulticastIdSetに、multicastIdが含まれている時、アプリケーションにメッセージを渡す（Ｓ５３２）。サーバント[192.168.11.4]のselfMulticastIdSetはカテゴリーＸであるから、メッセージはニュース受信プログラム１１３などのアプリケーションに渡される。
【０２１５】
次に、サーバント[192.168.11.4]は、マルチキャストメッセージを送信してきたリンク以外の全リンクのreceivedMulticastIdSetをチェックし、multicastIdが含まれているリンクを探す（Ｓ５３３）。具体的には、リンクＬ５以外の全リンク、すなわちリンクＬ７、Ｌ８及びＬ９のreceivedMulticastIdSetをチェックし、カテゴリーＸが含まれているリンクを探す。
【０２１６】
リンクＬ８及びＬ９のreceivedMulticastIdSet は、カテゴリーＸである。つまり、multicastIdが含まれているリンクがある（Ｓ５３４でＹＥＳ）。
【０２１７】
そこで、multicastIdが含まれているリンクに対して、マルチキャストメッセージを送信する（Ｓ５３５）。具体的には、リンクＬ８及びＬ９に対して、矢印ＡＲ２５及びＡＲ２６に対応するマルチキャストメッセージを送信する。receivedMulticastIdSetにカテゴリーＸが含まれていないリンクＬ７に対しては、マルチキャストメッセージは送信されない。
【０２１８】
（矢印ＡＲ２４に対応するマルチキャストメッセージを受信したサーバント[192.168.12.2]の動作）
まず、サーバント[192.168.12.2]は、マルチキャストメッセージからmulticastIdを取り出す（Ｓ５３１）。つまり、multicastIdとしてカテゴリーＸが取り出される。
【０２１９】
次に、サーバント[192.168.12.2]は、selfMulticastIdSetに、multicastIdが含まれている時、アプリケーションにメッセージを渡す（Ｓ５３２）。サーバント[192.168.12.2]のselfMulticastIdSetはカテゴリーＹである。つまり、カテゴリーＸはselfMulticastIdSetに含まれていないから、メッセージはニュース受信プログラム１１３などのアプリケーションに渡されない。
【０２２０】
次に、サーバント[192.168.12.2]は、マルチキャストメッセージを送信してきたリンク以外の全リンクのreceivedMulticastIdSetをチェックし、multicastIdが含まれているリンクを探す（Ｓ５３３）。具体的には、リンクＬ４以外の全リンク、すなわちリンクＬ１、Ｌ２及びＬ３のreceivedMulticastIdSetをチェックし、カテゴリーＸが含まれているリンクを探す。
【０２２１】
リンクＬ１のreceivedMulticastIdSet は、カテゴリーＸである。つまり、multicastIdが含まれているリンクがある（Ｓ５３４でＹＥＳ）。
【０２２２】
そこで、multicastIdが含まれているリンクに対して、マルチキャストメッセージを送信する（Ｓ５３５）。具体的には、リンクＬ１に対して、矢印ＡＲ２７に対応するマルチキャストメッセージを送信する。receivedMulticastIdSetにカテゴリーＸが含まれていないリンクＬ２及びＬ３に対しては、マルチキャストメッセージは送信されない。
【０２２３】
このようにして、図１５に示すように、カテゴリーＸのニュースを含むマルチキャストメッセージが、
サーバント[192.168.1.4]からサーバント[192.168.1.2]へ、
サーバント[192.168.1.2]からサーバント[192.168.1.1]へ、
サーバント[192.168.1.1]からサーバント[192.168.11.4],[192.168.12.2]へ、
サーバント[192.168.11.4]からサーバント[192.168.11.1],[192.168.11.2]へ、
サーバント[192.168.12.2]からサーバント[192.168.12.4]へ、
順次、転送される。
【０２２４】
そして、selfMulticastIdSetがカテゴリーＸを含む各サーバントのニュース受信プログラムは、ニュースを表示装置１０９の画面上に表示する。
【０２２５】
このようにして、ＩＰマルチキャスト通信をサポートしていないネットワーク機器であっても、設定・維持のためのコストをかけることなく、またサブネット単位などの物理的なネットワーク構成に依存することなく、マルチキャストが可能となる。
【図面の簡単な説明】
【０２２６】
【図１】（ａ）はサーバント、シードサーバントを説明するための図、（ｂ）はアップサーバント、ダウンサーバント、アップリンク、ダウンリンクを説明するための図、（ｃ）はselfMulticastIdSet、 sentMulticastIdSet及びreceivedMulticastIdSetを説明するための図である。
【図２】（ａ）は論理ネットワーク構成とそれに対応するサーバントＩＤ値、パーティション、スロットを説明し、（ｂ）は一部のサーバントが離脱・リンクが切断した場合について説明するための図である。
【図３】コネクター処理の流れを説明するためのフローチャートである。
【図４】リスナー処理の流れを説明するためのフローチャートである。
【図５】アップリンク切断時の処理の流れを説明するためのフローチャートである。
【図６】ツリー最適化処理の流れを説明するためのフローチャートである。
【図７】マルチキャストルーティング情報送信処理を説明するためのフローチャートである。
【図８】マルチキャストルーティング情報受信処理を説明するためのフローチャートである。
【図９】マルチキャストメッセージルーティング処理を説明するためのフローチャートである。
【図１０】ニュース配信システムのシステム構成を示す図である。
【図１１】ニュース配信システムに関わる部分のネットワークの構成を示す図である。
【図１２】起動しているコンピュータの部署、ＩＰアドレス、用途、及びカテゴリーの関係を示す図である。
【図１３】図１２に示すコンピュータの論理ネットワークの構成を示す図である。
【図１４】図１３に示す論理ネットワークに、サーバント[192.168.12.4]が参加して、サーバント[192.168.12.2]のダウンサーバントとなった論理ネットワーク及び送受信されるマルチキャストルーティング情報の流れを示す図である。
【図１５】図１４に示す論理ネットワークにおけるマルチキャストメッセージの転送状況を示す図である。
【図１６】サーバントＩＤ値の値域、パーティション、パーティションの幅、スロットを説明するための図である。
【図１７】（ａ）はネットワーク定義データを説明し、（ｂ）はスロット情報の一例、（ｃ）はアップ／ダウンサーバント情報の一例、（ｄ）はselfMulticastIdSetの一例、（ｅ）はsentMulticastIdSetの一例及び（ｆ）はreceivedMulticastIdSetの一例を示すための図である。
【符号の説明】
【０２２７】
１０１…主制御部（ＣＰＵ）
１０３…記憶装置
１０５…入出力制御部
１０７…送受信部
１０９…表示装置
１１１…ニュース発信プログラム
１１３…ニュース受信プログラム
１１５…ＰＢＴＣ通信ライブラリ
１１７…ネットワーク定義データ
【図１】
2005244630.tif 000003
【図２】
2005244630.tif 000004
【図３】
2005244630.tif 000005
【図４】
2005244630.tif 000006
【図５】
2005244630.tif 000007
【図６】
2005244630.tif 000008
【図７】
2005244630.tif 000009
【図８】
2005244630.tif 000010
【図９】
2005244630.tif 000011
【図１０】
2005244630.tif 000012
【図１１】
2005244630.tif 000013
【図１２】
2005244630.tif 000014
【図１３】
2005244630.tif 000015
【図１４】
2005244630.tif 000016
【図１５】
2005244630.tif 000017
【図１６】
2005244630.tif 000018
【図１７】
2005244630.tif 000019