(57)【要約】【課題】データが届かなくなる期間をなくすこと。【解決手段】経路制御装置１００は、複数のノードから取得したデータ送信経路ｎｔにおけるノード間の通信量に基づいて、データ送信経路ｎｔを変更すると判定した場合に、複数のノードのうち接続されるノード間の候補を示す情報を取得する。経路制御装置１００は、取得した情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを特定する。経路制御装置１００は、新たに接続されるノードに対して、データ送信経路ｎｔへの新たに接続されるノード間を結ぶ仮の経路の追加要求を送信する。経路制御装置１００は、仮の経路がデータ送信経路ｎｔに追加された後、新たに接続されるノードと切断されるノードとに対してオーバレイネットワークｌｎのノード間の接続関係の変更要求を送信する。【選択図】図１
2018074401.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
処理を実行させることを特徴とする経路制御プログラム。
【請求項２】
前記追加要求を送信する処理は、
さらに、前記新たに接続されるノードに対して、異なる経路を介して同一内容のデータを重複して受信した場合には、いずれかのデータを破棄させる重複排除要求を送信する、ことを特徴とする請求項１に記載の経路制御プログラム。
【請求項３】
前記コンピュータに、
前記ノード間の通信量の和を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
前記判定する処理は、
算出した前記差分が閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする請求項１または２に記載の経路制御プログラム。
【請求項４】
前記コンピュータに、
複数の時点で前記複数のノードから取得した前記ノード間の通信量に基づいて、前記ノード間の通信量の和の平均値を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和の平均値から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
前記判定する処理は、
算出した前記差分が、前記ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする請求項１または２に記載の経路制御プログラム。
【請求項５】
前記変更要求を送信する処理は、
前記オーバレイネットワークのノード間の接続関係を変更する過程で遷移可能なノード間の接続関係の候補が複数あれば、ノード間の接続関係の候補のうち前記オーバレイネットワークにおける通信量の和の低減度合いが相対的に大きい接続関係に遷移するように、前記変更要求を送信する、ことを特徴とする請求項１〜４のいずれか一つに記載の経路制御プログラム。
【請求項６】
複数のノードのうち第１のノードに、
前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第１のノードから前記複数のノードのうち前記第１のノードとは異なる第２のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
前記第２のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
処理を実行させることを特徴とする経路制御プログラム。
【請求項７】
複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
制御部を有することを特徴とする経路制御装置。
【請求項８】
複数のノードのうち第１のノードであって、
前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第１のノードから前記複数のノードのうち前記第１のノードとは異なる第２のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
前記第２のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
制御部を有することを特徴とするノード。
【請求項９】
経路制御装置と、複数のノードを含み、
前記経路制御装置は、
前記複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信し、
前記新たに接続されるノードは、
前記追加要求を受け付けたことに応じて、前記データ送信経路に自ノードから自ノードと新たに接続される他のノードへの経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記他のノードへの経路を用いて前記データを送信し、
前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記新たに接続されるノード間を接続し、
前記切断されるノードは、
前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記切断されるノード間を切断すると共に、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外する、
ことを特徴とする経路制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路制御プログラム、経路制御装置、ノードおよび経路制御方法に関する。
【背景技術】
【０００２】
従来、複数のブローカー（Ｂｒｏｋｅｒ）を含むオーバレイネットワーク（Ｏｖｅｒｌａｙ  Ｎｅｔｗｏｒｋ）を利用し、パブリッシャ（Ｐｕｂｌｉｓｈｅｒ）からサブスクライバ（Ｓｕｂｓｃｒｉｂｅｒ）にデータ（Ｎｏｔｉｆｙ）を送信するＳｕｂｓｃｒｉｂｅ／Ｐｕｂｌｉｓｈシステム（Ｓｕｂ／Ｐｕｂシステム）がある。複数のブローカーは、サブスクライバやパブリッシャが移動した結果いずれかのブローカーの通信負担が増大した場合、オーバレイネットワークのブローカー間の接続関係を変更した上でパブリッシャからサブスクライバまでのデータ送信経路を変更することがある。
【０００３】
先行技術としては、例えば、各ノードが同期して保持するリンクステート情報と各ノードが局所的に管理するインターフェース情報を基に任意のインターフェース内に輻輳が発生した場合にアダプティブにリルーティングパスを設定するものがある。また、例えば、現在のルートのネットワーク資源の消費量と迂回ルートのネットワーク資源の消費量とを比較してその差が許容範囲内である場合に現在のルートから迂回ルートへの切替えを実行する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２０１１８２号公報
【特許文献２】特開２００２−９７９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、オーバレイネットワークのブローカー間の接続関係を変更するとき、データ送信経路が一時的に分断されてしまうことがあり、パブリッシャからサブスクライバへとデータが届かなくなる期間が生じてしまうことがある。
【０００６】
１つの側面では、本発明は、データが届かなくなる期間をなくすことができる経路制御プログラム、経路制御装置、ノードおよび経路制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる経路制御プログラムおよび経路制御装置が提案される。
【０００８】
また、本発明の一側面によれば、複数のノードのうち自ノードにおいて、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記自ノードから前記複数のノードのうち前記自ノードとは異なる他のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する経路制御プログラムおよびノードが提案される。
【０００９】
また、本発明の一側面によれば、経路制御装置と、複数のノードを含み、前記経路制御装置は、前記複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信し、前記新たに接続されるノードは、前記追加要求を受け付けたことに応じて、前記データ送信経路に自ノードから自ノードと新たに接続される他のノードへの経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記他のノードへの経路を用いて前記データを送信し、前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記新たに接続されるノード間を接続し、前記切断されるノードは、前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記切断されるノード間を切断すると共に、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外する経路制御方法が提案される。
【発明の効果】
【００１０】
本発明の一態様によれば、データが届かなくなる期間をなくすことができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態にかかる経路制御方法の一実施例を示す説明図である。
【図２】図２は、経路制御システム２００の一例を示す説明図である。
【図３】図３は、経路制御装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、ノードｎのハードウェア構成例を示すブロック図である。
【図５】図５は、ノード間の通信量を示す情報５００の一例を示す説明図である。
【図６】図６は、仮サブスクライブ１３００の発行要求６００の一例を示す説明図である。
【図７】図７は、起動／停止要求の一例を示す説明図である。
【図８】図８は、オーバレイ接続要求８００の一例を示す説明図である。
【図９】図９は、オーバレイ切断要求９００の一例を示す説明図である。
【図１０】図１０は、Ｓｕｂ／Ｐｕｂテーブル１０００の記憶内容の一例を示す説明図である。
【図１１】図１１は、重複除去テーブル１１００の記憶内容の一例を示す説明図である。
【図１２】図１２は、送受信されるデータ１２００の一例を示す説明図である。
【図１３】図１３は、仮サブスクライブ１３００の一例を示す説明図である。
【図１４】図１４は、リンクの接続要求１４００の一例を示す説明図である。
【図１５】図１５は、オーバレイ接続通知１５００の一例を示す説明図である。
【図１６】図１６は、サブスクライブ１６００の一例を示す説明図である。
【図１７】図１７は、リンクの切断要求１７００の一例を示す説明図である。
【図１８】図１８は、オーバレイ切断通知１８００の一例を示す説明図である。
【図１９】図１９は、アンサブスクライブ１９００の一例を示す説明図である。
【図２０】図２０は、経路制御装置１００およびノードｎの機能的構成例を示すブロック図である。
【図２１】図２１は、実施例１における経路制御装置１００とノードｎとの動作の一例を示す説明図である。
【図２２】図２２は、最小全域木を生成する一例を示す説明図である。
【図２３】図２３は、オーバレイネットワークｌｎのノード間の接続関係の変更順序を決定する一例を示す説明図である。
【図２４】図２４は、図２１におけるノードｎが有するブロックの具体例を示す説明図である。
【図２５】図２５は、ノードｎの状態遷移を示す説明図である。
【図２６】図２６は、経路制御処理手順の一例を示すフローチャートである。
【図２７】図２７は、仮サブスクライブ発行処理手順を示すフローチャートである。
【図２８】図２８は、サブスクライブ受信処理手順を示すフローチャートである。
【図２９】図２９は、サブスクライブ受信処理手順を示すフローチャートである。
【図３０】図３０は、アンサブスクライブ受信処理手順を示すフローチャートである。
【図３１】図３１は、ノーティファイ受信処理手順を示すフローチャートである。
【図３２】図３２は、オーバレイ切断処理手順を示すフローチャートである。
【図３３】図３３は、オーバレイ接続処理手順を示すフローチャートである。
【図３４】図３４は、ノーティファイ切断処理手順を示すフローチャートである。
【図３５】図３５は、ノーティファイ接続処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、図面を参照して、本発明にかかる経路制御プログラム、経路制御装置、ノードおよび経路制御方法の実施の形態を詳細に説明する。
【００１３】
（実施の形態にかかる経路制御方法の一実施例）
図１は、実施の形態にかかる経路制御方法の一実施例を示す説明図である。図１の例では、基盤ネットワークｂｎと、経路制御装置１００とが存在する。基盤ネットワークｂｎとは、パブリッシャｐと、サブスクライバｓと、ブローカーｂとを含むネットワークである。基盤ネットワークｂｎは、パブリッシャｐを複数含んでもよい。基盤ネットワークｂｎは、サブスクライバｓを複数含んでもよい。基盤ネットワークｂｎは、ブローカーｂを少なくとも３つ以上含む。
【００１４】
パブリッシャｐとは、データを送信するコンピュータである。データは、例えば、ノーティファイである。パブリッシャｐは、例えば、移動可能な端末装置である。サブスクライバｓとは、データを受信するコンピュータである。サブスクライバｓは、例えば、移動可能な端末装置である。ブローカーｂとは、データを中継するコンピュータである。ブローカーｂは、例えば、ノードである。
【００１５】
また、基盤ネットワークｂｎ上には、オーバレイネットワークｌｎが形成される。オーバレイネットワークｌｎとは、パブリッシャｐと、サブスクライバｓと、ブローカーｂとを含むネットワークである。オーバレイネットワークｌｎは、基盤ネットワークｂｎの少なくとも一部を利用した、仮想的なネットワークである。
【００１６】
オーバレイネットワークｌｎは、例えば、ツリー構造であって、オーバレイツリー（Ｏｖｅｒｌａｙ  Ｔｒｅｅ）と呼ばれる。ここでは、オーバレイネットワークｌｎは、ループを含まない。オーバレイネットワークｌｎは、基盤ネットワークｂｎより下位のレイヤにあるネットワークである。オーバレイネットワークｌｎがあるレイヤは、オーバレイネットワークｌｎ構築レイヤと呼ばれる。
【００１７】
さらに、オーバレイネットワークｌｎを利用して、データ送信経路ｎｔが形成される。データ送信経路ｎｔとは、パブリッシャｐと、サブスクライバｓと、ブローカーｂとを含むネットワークである。データ送信経路ｎｔは、オーバレイネットワークｌｎの少なくとも一部を利用した、仮想的なネットワークである。
【００１８】
データ送信経路ｎｔは、例えば、ツリー構造であって、ノーティファイツリー（Ｎｏｔｉｆｙ  Ｔｒｅｅ）と呼ばれる。データ送信経路ｎｔは、例えば、１つのパブリッシャｐから１つのサブスクライバｓまでを繋げる経路、１つのパブリッシャｐから複数のサブスクライバｓまでを繋げる経路、複数のパブリッシャｐと複数のサブスクライバｓとを繋げる経路などであってもよい。データ送信経路ｎｔは、オーバレイネットワークｌｎより下位のレイヤにあるネットワークである。データ送信経路ｎｔがあるレイヤは、ノーティファイツリー構築レイヤと呼ばれる。
【００１９】
データ送信経路ｎｔは、パブリッシャｐからサブスクライバｓまでデータを送信するためのネットワークである。データ送信経路ｎｔは、サブスクライバｓがサブスクライブ（Ｓｕｂｓｃｒｉｂｅ）をブローカーｂに送信したことに応じて、いくつかのブローカーｂがサブスクライブを転送していくことにより形成される。サブスクライブは、サブスクライバｓが要求するデータの種類を示す情報である。
【００２０】
経路制御装置１００とは、基盤ネットワークｂｎに含まれる複数のブローカーｂと通信可能なコンピュータである。また、経路制御装置１００は、オーバレイネットワークｌｎのブローカー間の接続関係を制御することができる。また、経路制御装置１００は、オーバレイネットワークｌｎとは独立して、データ送信経路ｎｔを制御することができる。
【００２１】
ところで、従来では、サブスクライバｓやパブリッシャｐが移動した場合などに、いずれかのブローカーｂの通信負担が増大してしまうことがある。例えば、サブスクライバｓやパブリッシャｐが移動すると、オーバレイネットワークｌｎ上でサブスクライブやアンサブスクライブ（Ｕｎｓｕｂｓｃｒｉｂｅ）が流れることにより、オーバレイネットワークｌｎ上でデータ送信経路ｎｔが変更される。
【００２２】
しかしながら、オーバレイネットワークｌｎのブローカー間の接続関係を変更していないため、データ送信経路ｎｔを変更してもデータを効率よく送受信することができる経路にならず、いずれかのブローカーｂの通信負担が増大してしまうことがある。
【００２３】
これに対し、いずれかのブローカーｂの通信負担が増大した場合、オーバレイネットワークｌｎのブローカー間の接続関係を変更した上で、オーバレイネットワークｌｎを利用したデータ送信経路ｎｔを変更する場合がある。例えば、複数のブローカーｂが、オーバレイネットワークｌｎのブローカー間の接続関係を変更した上で、オーバレイネットワークｌｎを利用してサブスクライブやアンサブスクライブを送受信することにより、データ送信経路ｎｔが変更される。
【００２４】
しかしながら、オーバレイネットワークｌｎのブローカー間の接続関係を変更するとき、オーバレイネットワークｌｎ上でブローカー間が切断され、データ送信経路ｎｔが一時的に途切れてしまうことがある。結果として、パブリッシャｐからサブスクライバｓへとデータが届かなくなる期間が生じてしまうことがある。さらに、データ送信経路ｎｔを変更する過程で、データ送信経路ｎｔから一部の経路が削除された後、データ送信経路ｎｔに同じ経路が追加されることがあり、効率よくデータ送信経路ｎｔを変更することができないことがある。
【００２５】
さらに、ブローカーｂが、オーバレイネットワークｌｎ上で他のブローカーｂと切断したとき、所定の時間待機してからアンサブスクライブを他のブローカーｂに送信するようにして、効率よくデータ送信経路ｎｔを変更しようとすることが考えられる。ブローカーｂは、所定の時間待機している間に、他のブローカーｂからサブスクライブを新たに受信した場合には、アンサブスクライブを送信しないようにする。
【００２６】
しかしながら、オーバレイネットワークｌｎのブローカー間の接続関係を変更するとき、オーバレイネットワークｌｎ上でブローカー間が切断され、データ送信経路ｎｔが一時的に途切れてしまうことがある。結果として、オーバレイネットワークｌｎのブローカー間の接続関係を変更するとき、パブリッシャｐからサブスクライバｓへとデータが届かなくなることがある。
【００２７】
このように、オーバレイネットワークｌｎのブローカー間の接続関係を変更した後に、オーバレイネットワークｌｎ上でデータ送信経路ｎｔを変更するという順番ではパブリッシャｐからサブスクライバｓへとデータが届かなくなる期間が生じてしまうことがある。
【００２８】
そこで、本実施の形態では、オーバレイネットワークｌｎのブローカー間の接続関係を変更する前に、基盤ネットワークｂｎを利用してデータ送信経路ｎｔに仮の経路を新たに追加しておくことができる経路制御方法について説明する。かかる経路制御方法によれば、オーバレイネットワークｌｎのブローカー間の接続関係を変更する際に、パブリッシャｐからサブスクライバｓへとデータが届かなくなる期間をなくすことができる。
【００２９】
図１の例では、（１−１）経路制御装置１００は、複数のノードからデータ送信経路ｎｔにおけるノード間の通信量を取得する。ノードは、例えば、所定の期間単位で、自ノードと直接通信可能な他のノードそれぞれに自ノードから送信したデータ量を計測し、計測した結果を経路制御装置１００に送信する。経路制御装置１００は、それぞれのノードが計測した結果を、それぞれのノードから受信する。
【００３０】
（１−２）経路制御装置１００は、取得したデータ送信経路ｎｔにおけるノード間の通信量に基づいて、データ送信経路ｎｔを変更するか否かを判定する。経路制御装置１００は、例えば、現在のデータ送信経路ｎｔにおけるノード間の通信量に基づいて、オーバレイネットワークｌｎにおけるノード間の通信量をノード間のコストｃ１２〜ｃ３４として算出する。そして、経路制御装置１００は、ノード間のコストｃ１２〜ｃ３４に基づいて、データ送信経路ｎｔを変更するか否かを判定する。
【００３１】
経路制御装置１００は、具体的には、ノード間のコストｃ１２〜ｃ３４に基づいて、オーバレイネットワークｌｎのノード間の接続関係を変更した場合におけるノード間の通信量の和を算出する。経路制御装置１００は、現在のデータ送信経路ｎｔにおけるノード間の通信量の和から、オーバレイネットワークｌｎのノード間の接続関係を変更した場合におけるノード間の通信量の和を減算した差分を算出する。経路制御装置１００は、算出した差分が閾値以上である場合に、データ送信経路ｎｔを変更すると判定する。
【００３２】
（１−３）経路制御装置１００は、データ送信経路ｎｔを変更すると判定した場合に、複数のノードのうち接続されるノード間の候補を示す情報を取得する。当該情報は、例えば、変更可能なオーバレイネットワークｌｎのノード間の接続関係の候補を示すトポロジ情報である。当該情報は、例えば、オーバレイネットワークｌｎにおいて接続可能なノード間を示す情報であってもよい。経路制御装置１００は、取得した情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを特定する。
【００３３】
経路制御装置１００は、例えば、複数の所定のトポロジ情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークｌｎにおけるノード間の通信量の和が最小になるオーバレイネットワークｌｎのノード間の接続関係の候補を特定する。そして、経路制御装置１００は、特定した候補に基づいて、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを特定する。
【００３４】
（１−４）経路制御装置１００は、特定した新たに接続されるノード間に基づいて、新たに接続される２つのノードに対して、データ送信経路ｎｔへの新たに接続されるノード間を結ぶ仮の経路の追加要求を送信する。経路制御装置１００は、例えば、オーバレイネットワークｌｎのノード間の接続関係を変更しなくても、新たに接続されるノード間を結ぶ仮の経路にデータが流れるように、新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ｎｔに追加させる。経路制御装置１００は、具体的には、新たに接続される２つのノードを制御し、新たに接続される２つのノードに基盤ネットワークｂｎを介して互いに仮サブスクライブを送信させ、新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ｎｔに追加させる。仮サブスクライブは、サブスクライブと同様であり、サブスクライバｓが要求するデータの種類を示す情報である。
【００３５】
新たに接続される２つのノードは、追加要求を受信し、互いに仮サブスクライブを送信することにより、新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ｎｔに追加する。新たに接続される２つのノードは、仮の経路をデータ送信経路ｎｔに追加した以降は、元のデータ送信経路ｎｔと追加された仮の経路とを用いてデータを送信する。
【００３６】
（１−５）経路制御装置１００は、仮の経路がデータ送信経路ｎｔに追加された後、新たに接続されるノード間に基づいて、新たに接続されるノードに対してオーバレイネットワークｌｎのノード間の接続関係の変更要求を送信する。また、経路制御装置１００は、仮の経路がデータ送信経路ｎｔに追加された後、切断されるノード間に基づいて、切断されるノードに対してオーバレイネットワークｌｎのノード間の接続関係の変更要求を送信する。経路制御装置１００は、例えば、新たに接続される２つのノードを制御し、オーバレイネットワークｌｎにおいて新たに接続されるノード間を接続させる。また、経路制御装置１００は、例えば、切断される２つのノードを制御し、オーバレイネットワークｌｎにおいて切断されるノード間を切断させる。
【００３７】
（１−６）ノードは、変換要求を受信し、新たに接続されるノード間を接続したことに応じて、同じノード間を結ぶ経路をデータ送信経路ｎｔに追加する。また、ノードは、変換要求を受信し、切断されるノード間を切断したことに応じて、同じノード間を結ぶ経路をデータ送信経路ｎｔから除外する。
【００３８】
新たに接続されるノードは、例えば、サブスクライブを送信することにより、新たに接続されるノード間を結ぶ経路をデータ送信経路ｎｔに追加する。切断されるノードは、アンサブスクライブを送信することにより、切断されるノード間を結ぶ経路をデータ送信経路ｎｔから除外する。
【００３９】
これにより、経路制御装置１００は、オーバレイネットワークｌｎのノード間の接続関係の変更中であっても、仮の経路がデータ送信経路ｎｔに追加されているため、データ送信経路ｎｔが途切れることを防止することができる。このため、経路制御装置１００は、オーバレイネットワークｌｎのノード間の接続関係の変更中に、パブリッシャｐからサブスクライバｓまでデータが届かなくなる期間が生じることを防止することができる。
【００４０】
ここでは、ノードが、所定の期間単位で、自ノードと直接通信可能な他のノードそれぞれに自ノードから送信したデータ量を計測した結果を経路制御装置１００に送信する場合について説明したが、これに限らない。例えば、ノードは、所定の期間単位で、自ノードと直接通信可能な他のノードそれぞれに自ノードから送信したデータ量を計測し、計測した結果が所定の条件を満たす場合に、計測した結果を経路制御装置１００に送信してもよい。
【００４１】
ここでは、経路制御装置１００が、算出した差分が閾値以上である場合に、データ送信経路ｎｔを変更すると判定する場合について説明したが、これに限らない。例えば、経路制御装置１００は、オーバレイネットワークｌｎのノード間の接続関係を変更した場合におけるノード間の通信量の和が閾値以上である場合に、データ送信経路ｎｔを変更すると判定してもよい。また、例えば、経路制御装置１００は、オーバレイネットワークｌｎのノード間の接続関係を変更した場合におけるノード間の通信量のうち最大値が閾値以上である場合に、データ送信経路ｎｔを変更すると判定してもよい。
【００４２】
ここでは、経路制御装置１００が、複数の所定のトポロジ情報に基づいて、オーバレイネットワークｌｎのノード間の接続関係の候補を特定する場合について説明したが、これに限らない。例えば、経路制御装置１００は、接続可能なノード間を示す情報に基づいて、ヒューリスティック解法を用いて、ノード間の通信量の和が比較的小さくなるオーバレイネットワークｌｎのノード間の接続関係の候補を特定してもよい。
【００４３】
ここでは、ノードが、追加要求に応じてサブスクライブを送信した以降、元のデータ送信経路ｎｔと、追加された仮の経路とを用いて、データを送信する場合について説明したが、これに限らない。例えば、ノードは、追加要求に応じてサブスクライブを送信した以降、追加された仮の経路を用いてデータを送信し、元のデータ送信経路ｎｔを用いてデータを送信しなくてもよい。
【００４４】
ここでは、ノードが、オーバレイネットワークｌｎにおいて新たに接続されるノード間を接続したことに応じて、同じノード間を結ぶ経路をデータ送信経路ｎｔに追加する場合について説明したが、これに限らない。例えば、ノードは、追加要求に応じて追加された仮の経路があるため、オーバレイネットワークｌｎにおいて新たに接続されるノード間を接続したことに応じて、同じノード間を結ぶ経路をデータ送信経路ｎｔに追加しなくてもよい。
【００４５】
（経路制御システム２００の一例）
次に、図２を用いて、図１に示した経路制御装置１００を適用した、経路制御システム２００の一例について説明する。
【００４６】
図２は、経路制御システム２００の一例を示す説明図である。図２において、経路制御システム２００は、経路制御装置１００と、パブリッシャｐになる複数の送信端末ｐｔと、サブスクライバｓになる複数の受信端末ｓｔと、ブローカーｂになる複数のノードｎとを含む構成である。
【００４７】
経路制御システム２００において、経路制御装置１００と、それぞれのノードｎとは、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００４８】
ここで、複数の送信端末ｐｔと、複数の受信端末ｓｔと、複数のノードｎとが接続されることにより、複数の送信端末ｐｔと、複数の受信端末ｓｔと、複数のノードｎとを含む基盤ネットワークｂｎが形成される。基盤ネットワークｂｎは、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークや、イーサネット（Ｅｔｈｅｒｎｅｔ）ネットワークである。イーサネットは登録商標である。基盤ネットワークｂｎ上では、複数の送信端末ｐｔと、複数の受信端末ｓｔと、複数のノードｎとを含むオーバレイネットワークｌｎが形成される。オーバレイネットワークｌｎは、例えば、ツリー構造であって、オーバレイツリーと呼ばれる。
【００４９】
さらに、オーバレイネットワークｌｎを利用して、複数の送信端末ｐｔと、複数の受信端末ｓｔと、複数のノードｎとを含むデータ送信経路ｎｔが形成される。データ送信経路ｎｔは、オーバレイネットワークｌｎにおいて接続されていないノード間を結ぶ経路を、仮の経路として含むことができる。データ送信経路ｎｔは、例えば、ツリー構造であって、ノーティファイツリーと呼ばれる。
【００５０】
経路制御装置１００は、基盤ネットワークｂｎに含まれる複数のノードｎと通信することができる。経路制御装置１００は、複数のノードｎから、データ送信経路ｎｔにおけるノード間の通信量を示す情報５００を取得して記憶することができる。ノード間の通信量を示す情報５００の一例は、例えば、図５を用いて後述する。
【００５１】
経路制御装置１００は、複数のノードｎのうち接続されるノード間の候補を示す情報を記憶することができる。経路制御装置１００は、例えば、変更可能なオーバレイネットワークｌｎのノード間の接続関係の候補を示すトポロジ情報を記憶することができる。経路制御装置１００は、例えば、オーバレイネットワークｌｎにおいて接続可能なノード間を示す情報を記憶してもよい。
【００５２】
経路制御装置１００は、それぞれのノードｎに対して、それぞれのノードｎから仮サブスクライブを送信端末ｐｔ方向へのポートを介して発行させる仮サブスクライブの発行要求６００を送信することができる。仮サブスクライブの発行要求６００の一例は、例えば、図６を用いて後述する。経路制御装置１００は、仮サブスクライブの発行要求６００を送信した後、それぞれのノードｎに対して、同一内容のデータを複数受信した場合にいずれか一つのデータ以外を破棄するようにする重複除去処理を起動させる起動要求７００を送信することができる。起動要求７００の一例は、例えば、図７を用いて後述する。
【００５３】
経路制御装置１００は、それぞれのノードｎに対して、オーバレイネットワークｌｎのノード間の接続関係を変更させる変更要求を送信することができる。変更要求は、例えば、オーバレイネットワークｌｎにおいてノード間を接続させるオーバレイ接続要求８００、またはオーバレイネットワークｌｎにおいてノード間を切断させるオーバレイ切断要求９００である。経路制御装置１００は、例えば、それぞれのノードｎに対して、オーバレイネットワークｌｎにおいてノード間を接続させるオーバレイ接続要求８００を送信することができる。オーバレイ接続要求８００の一例は、例えば、図８を用いて後述する。経路制御装置１００は、例えば、それぞれのノードｎに対して、オーバレイネットワークｌｎにおいてノード間を切断させるオーバレイ切断要求９００を送信することができる。オーバレイ切断要求９００の一例は、例えば、図９を用いて後述する。
【００５４】
ノードｎは、他のノードｎと接続されるポートを有する。ノードｎは、どのポートがどのノードｎに接続され、どのポートにどのトピックのデータを送信するかを制御する際に用いられるＳｕｂ／Ｐｕｂテーブル１０００を記憶することができる。Ｓｕｂ／Ｐｕｂテーブル１０００の記憶内容の一例は、例えば、図１０を用いて後述する。また、ノードｎは、受信済みのデータを管理する際に用いられる重複除去テーブル１１００を記憶することができる。重複除去テーブル１１００の記憶内容の一例は、例えば、図１１を用いて後述する。
【００５５】
ノードｎは、自ノードｎが有するポートを介して他のノードｎからデータ１２００を受信することができ、自ノードｎが有するポートを介して他のノードｎにデータ１２００を送信することができる。送受信されるデータ１２００の一例は、図１２を用いて後述する。ノードｎは、データ送信経路ｎｔにおいて自ノードｎと直接通信可能な他のノードｎとの間での通信量を計測し、計測した通信量を示す情報を経路制御装置１００に送信することができる。計測した通信量を示す情報の一例は、例えば、図５を用いて後述する。
【００５６】
ノードｎは、経路制御装置１００から仮サブスクライブ１３００の発行要求６００を受信すると、自ノードｎが有するポートのうち送信端末ｐｔ方向へのポートを介して、仮サブスクライブ１３００を発行することができる。仮サブスクライブ１３００の一例は、例えば、図１３を用いて後述する。ノードｎは、経路制御装置１００から重複除去処理の起動要求７００を受信すると、重複除去処理を起動して、同一内容のデータ１２００を受信した場合には、いずれか一つのデータ１２００以外を破棄することができる。
【００５７】
ノードｎは、変更要求を受信すると、オーバレイネットワークｌｎのノード間の接続関係を変更する。ノードｎは、例えば、オーバレイ接続要求８００を受信すると、他のノードｎにオーバレイネットワークｌｎにおけるリンクの接続要求１４００を送信し、他のノードｎとリンクを接続する。リンクの接続要求１４００の一例は、例えば、図１４を用いて後述する。ノードｎは、他のノードｎとリンクを接続すると、オーバレイ接続通知１５００を出力する。オーバレイ接続通知１５００の一例は、例えば、図１５を用いて後述する。ノードｎは、オーバレイ接続通知１５００が出力されたことを検出し、他のノードｎにサブスクライブ１６００を発行することができる。サブスクライブ１６００の一例は、例えば、図１６を用いて後述する。
【００５８】
ノードｎは、例えば、オーバレイ切断要求９００を受信すると、他のノードｎにオーバレイネットワークｌｎにおけるリンクの切断要求１７００を送信し、他のノードｎとのリンクを切断する。リンクの切断要求１７００の一例は、例えば、図１７を用いて後述する。ノードｎは、他のノードｎとのリンクを切断すると、オーバレイ切断通知１８００を出力する。オーバレイ切断通知１８００の一例は、例えば、図１８を用いて後述する。ノードｎは、オーバレイ切断通知１８００が出力されたことを検出し、他のノードｎにアンサブスクライブ１９００を発行することができる。アンサブスクライブ１９００の一例は、例えば、図１９を用いて後述する。
【００５９】
図２に示した経路制御システム２００は、例えば、センサ類からのセンシングデータなどを収集するシステムに適用することができる。この場合、例えば、送信端末ｐｔはセンサ類である。例えば、受信端末ｓｔは、所定の条件を満たすセンシングデータを示す情報をトピックとしてノードｎに登録し、所定の条件を満たすセンシングデータを受信する。また、図２に示した経路制御システム２００は、例えば、車載装置からの走行情報などを収集するシステムに適用することもできる。この場合、例えば、送信端末ｐｔや受信端末ｓｔは車載装置である。
【００６０】
ここでは、パブリッシャｐになる端末装置と、サブスクライバｓになる端末装置とが別々の装置である場合について説明したが、これに限らない。例えば、パブリッシャｐになる端末装置と、サブスクライバｓになる端末装置とは、同一の装置であってもよい。
【００６１】
ここでは、経路制御装置１００が、送信端末ｐｔや受信端末ｓｔやノードｎとは異なる装置である場合について説明したが、これに限らない。例えば、経路制御装置１００は、いずれかの送信端末ｐｔと一体であってもよい。また、例えば、経路制御装置１００は、いずれかの受信端末ｓｔと一体であってもよい。また、例えば、経路制御装置１００は、いずれかのノードｎと一体であってもよい。
【００６２】
（経路制御装置１００のハードウェア構成例）
次に、図３を用いて、図２に示した経路制御システム２００に含まれる経路制御装置１００のハードウェア構成例について説明する。
【００６３】
図３は、経路制御装置１００のハードウェア構成例を示すブロック図である。図３では、経路制御装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスクドライブ３０４と、ディスク３０５と、記録媒体Ｉ／Ｆ３０６とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００６４】
ここで、ＣＰＵ３０１は、経路制御装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００６５】
ネットワークＩ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータ（例えば、図２に示したノードｎ）に接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００６６】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリード／ライトを制御する。ディスクドライブ３０４は、例えば、磁気ディスクドライブである。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク３０５は、例えば、磁気ディスク、光ディスクなどである。
【００６７】
記録媒体Ｉ／Ｆ３０６は、外部の記録媒体３０７に接続され、外部の記録媒体３０７と内部のインターフェースを司り、外部の記録媒体３０７に対するデータの入出力を制御する。記録媒体Ｉ／Ｆ３０６は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートである。記録媒体３０７は、例えば、ＵＳＢメモリである。記録媒体３０７は、実施の形態にかかる経路制御プログラムを記憶してもよい。
【００６８】
経路制御装置１００は、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、半導体メモリ、キーボード、マウス、ディスプレイなどを有してもよい。また、経路制御装置１００は、ディスクドライブ３０４およびディスク３０５の代わりに、ＳＳＤおよび半導体メモリなどを有してもよい。
【００６９】
（ノードｎのハードウェア構成例）
次に、図４を用いて、図２に示した経路制御システム２００に含まれるノードｎのハードウェア構成例について説明する。
【００７０】
図４は、ノードｎのハードウェア構成例を示すブロック図である。図４では、ノードｎは、ＣＰＵ４０１と、メモリ４０２と、ネットワークＩ／Ｆ４０３と、ディスクドライブ４０４と、ディスク４０５と、記録媒体Ｉ／Ｆ４０６とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００７１】
ここで、ＣＰＵ４０１は、ノードｎの全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００７２】
ネットワークＩ／Ｆ４０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータ（例えば、図２に示した経路制御装置１００）に接続される。そして、ネットワークＩ／Ｆ４０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ４０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００７３】
ディスクドライブ４０４は、ＣＰＵ４０１の制御に従ってディスク４０５に対するデータのリード／ライトを制御する。ディスクドライブ４０４は、例えば、磁気ディスクドライブである。ディスク４０５は、ディスクドライブ４０４の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク４０５は、例えば、磁気ディスク、光ディスクなどである。
【００７４】
記録媒体Ｉ／Ｆ４０６は、外部の記録媒体４０７に接続され、外部の記録媒体４０７と内部のインターフェースを司り、外部の記録媒体４０７に対するデータの入出力を制御する。記録媒体Ｉ／Ｆ４０６は、例えば、ＵＳＢポートである。記録媒体４０７は、例えば、ＵＳＢメモリである。記録媒体４０７は、実施の形態にかかる経路制御プログラムを記憶してもよい。
【００７５】
ノードｎは、上述した構成部のほか、例えば、ＳＳＤ、半導体メモリ、キーボード、マウス、ディスプレイなどを有してもよい。また、ノードｎは、ディスクドライブ４０４およびディスク４０５の代わりに、ＳＳＤおよび半導体メモリなどを有してもよい。
【００７６】
（ノード間の通信量を示す情報５００の一例）
次に、図５を用いて、ノード間の通信量を示す情報５００の一例について説明する。
【００７７】
図５は、ノード間の通信量を示す情報５００の一例を示す説明図である。ノード間の通信量を示す情報５００は、取得Ｎｏｄｅ  Ａｄｄｒｅｓｓと、トピックごとの送信元Ｎｏｄｅ  Ａｄｄｒｅｓｓと、トピックごとの通信量とのフィールドを有する。
【００７８】
取得Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、通信量を計測したノードｎのアドレスが設定される。送信元Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、トピックに属するデータ１２００の送信元になるノードｎのアドレスが設定される。通信量のフィールドには、トピックに属するデータ１２００の通信量が設定される。
【００７９】
（仮サブスクライブ１３００の発行要求６００の一例）
次に、図６を用いて、仮サブスクライブ１３００の発行要求６００の一例について説明する。
【００８０】
図６は、仮サブスクライブ１３００の発行要求６００の一例を示す説明図である。仮サブスクライブ１３００の発行要求６００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、発行先Ｎｏｄｅ  Ａｄｄｒｅｓｓとのフィールドを有する。
【００８１】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、仮サブスクライブ１３００の発行要求６００の宛先になるノードｎのアドレスが設定される。発行先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、仮サブスクライブ１３００の発行先のノードｎのアドレスが設定される。
【００８２】
（起動／停止要求の一例）
次に、図７を用いて、起動／停止要求の一例について説明する。
【００８３】
図７は、起動／停止要求の一例を示す説明図である。起動／停止要求は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、Ｏｎ  Ｆｌａｇとのフィールドを有する。
【００８４】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、起動／停止要求の宛先になるノードｎのアドレスが設定される。Ｏｎ  Ｆｌａｇのフィールドには、重複除去処理を起動させるか、停止させるかを示すフラグが設定される。ＴＲＵＥは、起動させることを示す。ＦＡＬＳＥは、停止させることを示す。
【００８５】
（オーバレイ接続要求８００の一例）
次に、図８を用いて、オーバレイ接続要求８００の一例について説明する。
【００８６】
図８は、オーバレイ接続要求８００の一例を示す説明図である。オーバレイ接続要求８００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓとのフィールドを有する。
【００８７】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、オーバレイ接続要求８００の発行要求の宛先になるノードｎのアドレスが設定される。接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、仮サブスクライブ１３００によって追加される新たな経路を形成する、オーバレイ接続要求８００の宛先になるノードｎとは異なるノードｎのアドレスが設定される。
【００８８】
（オーバレイ切断要求９００の一例）
次に、図９を用いて、オーバレイ切断要求９００の一例について説明する。
【００８９】
図９は、オーバレイ切断要求９００の一例を示す説明図である。オーバレイ切断要求９００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓとのフィールドを有する。
【００９０】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、オーバレイ切断要求９００の発行要求の宛先になるノードｎのアドレスが設定される。切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、仮サブスクライブ１３００によって切断される経路を形成する、オーバレイ切断要求９００の宛先になるノードｎとは異なるノードｎのアドレスが設定される。
【００９１】
（Ｓｕｂ／Ｐｕｂテーブル１０００の記憶内容）
次に、図１０を用いて、Ｓｕｂ／Ｐｕｂテーブル１０００の記憶内容の一例について説明する。Ｓｕｂ／Ｐｕｂテーブル１０００は、例えば、図４に示したメモリ４０２やディスク４０５などの記憶領域によって実現される。
【００９２】
図１０は、Ｓｕｂ／Ｐｕｂテーブル１０００の記憶内容の一例を示す説明図である。Ｓｕｂ／Ｐｕｂテーブル１０００は、Ｂｒｏｋｅｒ  Ｐｏｒｔと、Ｒｅｃｅｉｖｅｄ  Ｓｕｂｓｃｒｉｂｅと、Ａｄｊａｃｅｎｔ  Ｎｏｄｅ  Ａｄｄｒｅｓｓとのフィールドを有する。Ｓｕｂ／Ｐｕｂテーブル１０００は、ノードｎが有するポートごとに各フィールドに情報を設定することにより、データ送信経路ｎｔの接続情報がレコードとして記憶される。
【００９３】
Ｂｒｏｋｅｒ  Ｐｏｒｔのフィールドには、ノードｎが有するポートの番号が設定される。Ｒｅｃｅｉｖｅｄ  Ｓｕｂｓｃｒｉｂｅのフィールドには、ポートを介して送信するデータ１２００のトピックのトピックＩＤが設定される。Ａｄｊａｃｅｎｔ  Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、ポートを介して接続されたノードｎのアドレスが設定される。
【００９４】
（重複除去テーブル１１００の記憶内容）
次に、図１１を用いて、重複除去テーブル１１００の記憶内容の一例について説明する。重複除去テーブル１１００は、例えば、図４に示したメモリ４０２やディスク４０５などの記憶領域によって実現される。
【００９５】
図１１は、重複除去テーブル１１００の記憶内容の一例を示す説明図である。重複除去テーブル１１００は、Ｔｏｐｉｃ  ＩＤと、Ｒｅｃｅｉｖｅｄ  ＭＳＧ  ＩＤとのフィールドを有する。重複除去テーブル１１００は、受信したデータ１２００ごとに各フィールドに情報を設定することにより、受信済みのデータ１２００を管理する情報がレコードとして記憶される。
【００９６】
Ｔｏｐｉｃ  ＩＤのフィールドには、受信したデータ１２００が属するトピックのトピックＩＤが設定される。Ｒｅｃｅｉｖｅｄ  ＭＳＧ  ＩＤのフィールドには、受信したデータ１２００を識別するノーティファイＩＤが設定される。
【００９７】
（送受信されるデータ１２００の一例）
次に、図１２を用いて、送受信されるデータ１２００の一例について説明する。
【００９８】
図１２は、送受信されるデータ１２００の一例を示す説明図である。送受信されるデータ１２００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、Ｔｏｐｉｃ  ＩＤと、コンテンツとのフィールドを有する。
【００９９】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、データ１２００の宛先になるノードｎのアドレスが設定される。Ｔｏｐｉｃ  ＩＤのフィールドには、データ１２００が属するトピックのトピックＩＤが設定される。コンテンツのフィールドには、データ１２００の内容が設定される。
【０１００】
（仮サブスクライブ１３００の一例）
次に、図１３を用いて、仮サブスクライブ１３００の一例について説明する。
【０１０１】
図１３は、仮サブスクライブ１３００の一例を示す説明図である。仮サブスクライブ１３００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、Ｔｏｐｉｃ  ＩＤとのフィールドを有する。
【０１０２】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、仮サブスクライブ１３００の宛先になるノードｎのアドレスが設定される。Ｔｏｐｉｃ  ＩＤのフィールドには、仮サブスクライブ１３００の宛先になるノードｎから仮サブスクライブ１３００の送信元になるノードｎに送信することを要求するデータ１２００が属するトピックのトピックＩＤが設定される。
【０１０３】
（リンクの接続要求１４００の一例）
次に、図１４を用いて、リンクの接続要求１４００の一例について説明する。
【０１０４】
図１４は、リンクの接続要求１４００の一例を示す説明図である。リンクの接続要求１４００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓとのフィールドを有する。
【０１０５】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、リンクの接続要求１４００の宛先になるノードｎのアドレスが設定される。接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、リンクの接続要求１４００の宛先になるノードｎと接続される自ノードｎのアドレスが設定される。
【０１０６】
（オーバレイ接続通知１５００の一例）
次に、図１５を用いて、オーバレイ接続通知１５００の一例について説明する。
【０１０７】
図１５は、オーバレイ接続通知１５００の一例を示す説明図である。オーバレイ接続通知１５００は、接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓとのフィールドを有する。
【０１０８】
接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、オーバレイネットワークｌｎにおいて自ノードｎと接続された他のノードｎのアドレスが設定される。
【０１０９】
（サブスクライブ１６００の一例）
次に、図１６を用いて、サブスクライブ１６００の一例について説明する。
【０１１０】
図１６は、サブスクライブ１６００の一例を示す説明図である。サブスクライブ１６００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、Ｔｏｐｉｃ  ＩＤとのフィールドを有する。
【０１１１】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、サブスクライブ１６００の宛先になるノードｎのアドレスが設定される。Ｔｏｐｉｃ  ＩＤのフィールドには、サブスクライブ１６００の宛先になるノードｎからサブスクライブ１６００の送信元になるノードｎに送信することを要求するデータ１２００が属するトピックのトピックＩＤが設定される。
【０１１２】
（リンクの切断要求１７００の一例）
次に、図１７を用いて、リンクの切断要求１７００の一例について説明する。
【０１１３】
図１７は、リンクの切断要求１７００の一例を示す説明図である。リンクの切断要求１７００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓとのフィールドを有する。
【０１１４】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、リンクの切断要求１７００の宛先になるノードｎのアドレスが設定される。切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、リンクの切断要求１７００の宛先になるノードｎと切断される自ノードｎのアドレスが設定される。
【０１１５】
（オーバレイ切断通知１８００の一例）
次に、図１８を用いて、オーバレイ切断通知１８００の一例について説明する。
【０１１６】
図１８は、オーバレイ切断通知１８００の一例を示す説明図である。オーバレイ切断通知１８００は、切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドを有する。
【０１１７】
切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、オーバレイネットワークｌｎにおいて自ノードｎと切断された他のノードｎのアドレスが設定される。
【０１１８】
（アンサブスクライブ１９００の一例）
次に、図１９を用いて、アンサブスクライブ１９００の一例について説明する。
【０１１９】
図１９は、アンサブスクライブ１９００の一例を示す説明図である。アンサブスクライブ１９００は、宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓと、Ｔｏｐｉｃ  ＩＤとのフィールドを有する。
【０１２０】
宛先Ｎｏｄｅ  Ａｄｄｒｅｓｓのフィールドには、アンサブスクライブ１９００の宛先になるノードｎのアドレスが設定される。Ｔｏｐｉｃ  ＩＤのフィールドには、アンサブスクライブ１９００の宛先になるノードｎからアンサブスクライブ１９００の送信元になるノードｎに送信することを停止させるデータ１２００が属するトピックのトピックＩＤが設定される。
【０１２１】
（経路制御装置１００およびノードｎの機能的構成例）
次に、図２０を用いて、経路制御装置１００およびノードｎの機能的構成例について説明する。
【０１２２】
図２０は、経路制御装置１００およびノードｎの機能的構成例を示すブロック図である。経路制御装置１００は、取得部２００１と、判定部２００２と、特定部２００３と、追加部２００４と、変更部２００５とを含む。取得部２００１〜変更部２００５は、例えば、図３に示したメモリ３０２やディスク３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２やディスク３０５などの記憶領域に記憶される。
【０１２３】
取得部２００１は、複数のノードｎから、複数のノードｎを含むオーバレイネットワークｌｎを利用したデータ送信経路ｎｔにおけるノード間の通信量を取得する。データ送信経路ｎｔは、例えば、ノーティファイツリーである。取得部２００１は、例えば、複数のノードｎのそれぞれのノードｎが、当該ノードｎが有する複数のポートのそれぞれのポートから受信した、トピックごとのデータ１２００の通信量を受信する。
【０１２４】
これにより、取得部２００１は、データ送信経路ｎｔにおいて効率よくデータ１２００が送受信されているかを評価し、データ送信経路ｎｔを変更するか否かを判定する際に用いられる情報を取得することができる。
【０１２５】
取得部２００１は、複数の時点のそれぞれの時点で、複数のノードｎから、複数のノードｎを含むオーバレイネットワークｌｎを利用したデータ送信経路ｎｔにおけるノード間の通信量を取得してもよい。取得部２００１は、例えば、複数の時点のそれぞれの時点で、複数のノードｎのそれぞれのノードｎが、当該ノードｎが有する複数のポートのそれぞれのポートから受信した、トピックごとのデータ１２００の通信量を受信する。
【０１２６】
これにより、取得部２００１は、データ送信経路ｎｔにおいて効率よくデータ１２００が送受信されているかを評価し、データ送信経路ｎｔを変更するか否かを判定する際に用いられる情報を取得することができる。
【０１２７】
取得部２００１は、いずれかのノード間の通信量から、過去の所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上であることを示す通知を、いずれかのノードｎから取得する。
【０１２８】
これにより、取得部２００１は、データ送信経路ｎｔにおいて効率よくデータ１２００が送受信されているかを評価し、データ送信経路ｎｔを変更するか否かを判定する際に用いられる情報を取得することができる。
【０１２９】
判定部２００２は、複数のノードｎから取得部２００１が取得した、複数のノードｎを含むオーバレイネットワークｌｎを利用したデータ送信経路ｎｔにおけるノード間の通信量に基づいて、データ送信経路ｎｔを変更するか否かを判定する。
【０１３０】
判定部２００２は、例えば、ノード間の通信量の和を算出し、複数のノードｎのうち接続されるノード間の候補を示す情報に基づいて、データ送信経路ｎｔを変更した場合におけるノード間の通信量の和を算出する。接続されるノード間の候補を示す情報は、例えば、トポロジ情報である。トポロジ情報は、変更可能な、オーバレイネットワークｌｎのノード間の接続関係の候補を示す情報である。次に、判定部２００２は、算出したノード間の通信量の和から、算出したデータ送信経路ｎｔを変更した場合におけるノード間の通信量の和を減算した差分を算出する。そして、判定部２００２は、算出した差分が閾値以上である場合に、データ送信経路ｎｔを変更すると判定する。
【０１３１】
これにより、判定部２００２は、データ送信経路ｎｔを変更した場合に現在よりどのくらいデータ送信経路ｎｔにおける通信量の和が低減されるかを判断することができる。そして、判定部２００２は、データ送信経路ｎｔにおける通信量の和が低減される度合いが比較的大きければ、データ送信経路ｎｔを変更した場合に現在より比較的効率よくデータ１２００を送受信することが可能であると判断することができる。判定部２００２は、データ送信経路ｎｔを変更した場合に現在より比較的効率よくデータ１２００を送受信することが可能であれば、データ送信経路ｎｔを変更すると判定することができる。
【０１３２】
判定部２００２は、例えば、複数の時点で複数のノードｎから取得部２００１が取得したノード間の通信量に基づいて、ノード間の通信量の和の平均値を算出する。また、判定部２００２は、トポロジ情報に基づいて、データ送信経路ｎｔを変更した場合におけるノード間の通信量の和を算出する。次に、判定部２００２は、算出したノード間の通信量の和の平均値から、算出したデータ送信経路ｎｔを変更した場合におけるノード間の通信量の和を減算した差分を算出する。そして、判定部２００２は、算出した差分が、ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、データ送信経路ｎｔを変更すると判定する。
【０１３３】
これにより、判定部２００２は、データ送信経路ｎｔを変更した場合に現在よりどのくらいデータ送信経路ｎｔにおける通信量の和が低減されるかを判断することができる。そして、判定部２００２は、データ送信経路ｎｔにおける通信量の和が低減される度合いが比較的大きければ、データ送信経路ｎｔを変更した場合に現在より比較的効率よくデータ１２００を送受信することが可能であると判断することができる。判定部２００２は、データ送信経路ｎｔを変更した場合に現在より比較的効率よくデータ１２００を送受信することが可能であれば、データ送信経路ｎｔを変更すると判定することができる。
【０１３４】
判定部２００２は、例えば、いずれかのノード間の通信量から、所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上である場合に、データ送信経路ｎｔを変更すると判定する。判定部２００２は、具体的には、いずれかのノード間の通信量から、所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上であることを示す情報を、取得部２００１が取得した場合に、データ送信経路ｎｔを変更すると判定する。
【０１３５】
これにより、判定部２００２は、データ送信経路ｎｔのいずれかのノード間における通信量が増大しており、データ送信経路ｎｔにおいて効率よくデータ１２００を送受信することができていない可能性があることを判断することができる。そして、判定部２００２は、データ送信経路ｎｔにおいて効率よくデータ１２００を送受信することができていない可能性が比較的大きければ、データ送信経路ｎｔを変更すると判定することができる。
【０１３６】
特定部２００３は、判定部２００２が変更すると判定した場合に、複数のノードｎのうち接続されるノード間の候補を示す情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークｌｎにおいて新たに接続されるノード間を特定する。また、特定部２００３は、判定部２００２が変更すると判定した場合に、複数のノードｎのうち接続されるノード間の候補を示す情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークｌｎにおいて切断されるノード間を特定する。
【０１３７】
特定部２００３は、例えば、現在のオーバレイネットワークｌｎのノード間の接続関係を示す接続行列を生成する。現在のオーバレイネットワークｌｎのノード間の接続関係は、予め経路制御装置１００が記憶しておき適時更新してもよい。現在のオーバレイネットワークｌｎのノード間の接続関係は、取得部２００１が取得した、オーバレイネットワークｌｎを利用したデータ送信経路ｎｔにおけるノード間の通信量を示す情報に基づいて特定されてもよい。次に、特定部２００３は、複数のノードｎのうち接続されるノード間の候補を示す情報に基づいて、変更後のオーバレイネットワークｌｎのノード間の接続関係を示す接続行列を生成する。そして、特定部２００３は、生成した２つの接続行列に基づいて、オーバレイネットワークｌｎにおいて、新たに接続されるノード間と、切断されるノード間とを特定する。
【０１３８】
これにより、特定部２００３は、データ送信経路ｎｔへの新たに接続されるノード間を結ぶ経路の追加要求を、どのノードｎに送信するかを特定することができる。また、特定部２００３は、オーバレイネットワークｌｎのノード間の接続関係の変更要求を、どのノードｎに送信するかを特定することができる。
【０１３９】
追加部２００４は、特定部２００３が特定した新たに接続されるノード間に基づいて、新たに接続されるノードｎに対してデータ送信経路ｎｔへの新たに接続されるノード間を結ぶ経路の追加要求を送信する。追加要求は、例えば、図６に示した仮サブスクライブ１３００の発行要求６００である。仮サブスクライブ１３００の発行要求６００は、具体的には、仮サブスクライブ１３００を送信端末ｐｔ方向へのポートを介して発行させる要求である。追加部２００４は、例えば、新たに接続されるノードｎのリンクを形成する一方のノードｎに対して仮サブスクライブ１３００の発行要求６００を送信する。
【０１４０】
これにより、追加部２００４は、新たに接続されるノードｎのリンクを形成する一方のノードｎから他方のノードｎに対して、仮サブスクライブ１３００を発行させることができる。そして、追加部２００４は、データ送信経路ｎｔに新たな仮の経路を追加させることができる。
【０１４１】
追加部２００４は、さらに、新たに接続されるノードｎに対して、異なる経路を介して同一内容のデータ１２００を重複して受信した場合には、いずれかのデータ１２００を破棄させる重複排除要求を送信する。重複排除要求は、例えば、図７に示した重複除去処理を起動させる起動要求７００である。追加部２００４は、例えば、新たに接続されるノードｎに対して起動要求７００を送信する。
【０１４２】
これにより、追加部２００４は、ノードｎが同一内容のデータ１２００を重複して受信した場合にはいずれか一つのデータ１２００以外を破棄させることができ、ノードｎから同一内容のデータ１２００が重複して転送されることを防止することができる。
【０１４３】
変更部２００５は、データ送信経路ｎｔに仮の経路が追加された後、新たに接続されるノード間に基づいて、新たに接続されるノードｎに対してオーバレイネットワークｌｎのノード間の接続関係の変更要求を送信する。また、変更部２００５は、データ送信経路ｎｔに仮の経路が追加された後、切断されるノード間に基づいて、切断されるノードｎに対してオーバレイネットワークｌｎのノード間の接続関係の変更要求を送信する。変更要求は、例えば、図８に示したオーバレイ接続要求８００、または図９に示したオーバレイ切断要求９００である。
【０１４４】
これにより、変更部２００５は、データ送信経路ｎｔから切断されるノード間を結ぶ経路を除外させることができる。そして、変更部２００５は、データ送信経路ｎｔから切断されるノード間を結ぶ経路を除外させた結果、異なる経路を介して同一内容のデータ１２００が重複して送信されることを防止することができる。
【０１４５】
変更部２００５は、オーバレイネットワークｌｎのノード間の接続関係を変更する過程で、ノード間の接続関係の候補のうちオーバレイネットワークｌｎにおける通信量の和の低減度合いが相対的に大きい接続関係を選んで遷移するように、変更要求を送信する。
【０１４６】
これにより、変更部２００５は、データ送信経路ｎｔから切断されるノード間を結ぶ経路を除外させることができる。そして、変更部２００５は、データ送信経路ｎｔから切断されるノード間を結ぶ経路を除外させた結果、異なる経路を介して同一内容のデータ１２００が重複して送信されることを防止することができる。
【０１４７】
一方で、ノードｎは、受付部２０１１と、第１の通信部２０１２と、第２の通信部２０１３とを含む。受付部２０１１〜第２の通信部２０１３は、例えば、図４に示したメモリ４０２やディスク４０５などの記憶領域に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、ネットワークＩ／Ｆ４０３により、その機能を実現する。各機能部の処理結果は、例えば、図４に示したメモリ４０２やディスク４０５などの記憶領域に記憶される。
【０１４８】
受付部２０１１は、複数のノードｎを含むオーバレイネットワークｌｎを利用したデータ送信経路ｎｔへの、第１のノードｎから複数のノードｎのうち第１のノードｎとは異なる第２のノードｎへの経路の追加要求を受け付ける。第１のノードｎは、例えば、自ノードｎである。第２のノードｎは、自ノードｎと直接通信可能な他のノードｎである。受付部２０１１は、例えば、仮サブスクライブ１３００の発行要求６００を受け付ける。
【０１４９】
第１の通信部２０１２は、受付部２０１１が追加要求を受け付けたことに応じて、データ送信経路ｎｔに経路を追加する。第１の通信部２０１２は、例えば、受付部２０１１が仮サブスクライブ１３００の発行要求６００を受け付けたことに応じて、仮サブスクライブ１３００の発行要求６００に含まれる発行先Ｎｏｄｅ  Ａｄｄｒｅｓｓを取得する。そして、第１の通信部２０１２は、取得した発行先Ｎｏｄｅ  Ａｄｄｒｅｓｓに基づいて、基盤ネットワークｂｎを介して仮サブスクライブ１３００を発行する。
【０１５０】
第１の通信部２０１２は、仮の経路を追加した後に、第２のノードｎを経由させるデータ１２００を受け付けた場合、追加した経路を用いてデータ１２００を送信する。第１の通信部２０１２は、さらに、データ送信経路ｎｔに仮の経路を追加した後かつ経路を除外する前に、第２のノードｎを経由させるデータ１２００を受け付けた場合、データ送信経路ｎｔのうち仮の経路以外の他の経路を用いてデータ１２００を送信してもよい。
【０１５１】
これにより、第１の通信部２０１２は、データ送信経路ｎｔに仮の経路を追加することができる。第１の通信部２０１２は、データ送信経路ｎｔからいずれかの経路を除外した際にも、仮の経路を介してデータ１２００を送受信可能な状態にすることができ、パブリッシャｐからサブスクライバｓへとデータ１２００が届かなくなる期間をなくすことができる。
【０１５２】
第２の通信部２０１３は、受付部２０１１が変更要求を受け付けたことに応じて、オーバレイネットワークｌｎにおいて新たに接続されるノード間を接続する。第２の通信部２０１３は、例えば、受付部２０１１がオーバレイ接続要求８００を受け付けたことに応じて、オーバレイ接続要求８００に含まれる接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓを取得する。そして、第２の通信部２０１３は、取得した接続先Ｎｏｄｅ  Ａｄｄｒｅｓｓに基づいて、オーバレイネットワークｌｎにおけるリンクの接続要求１４００を送信する。
【０１５３】
第２の通信部２０１３は、変更要求を受け付けたことに応じて、オーバレイネットワークｌｎにおいて切断されるノード間を切断すると共に、データ送信経路ｎｔから切断されるノード間を結ぶ経路を除外する。第２の通信部２０１３は、例えば、受付部２０１１がオーバレイ切断要求９００を受け付けたことに応じて、オーバレイ切断要求９００に含まれる切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓを取得する。そして、第２の通信部２０１３は、取得した切断先Ｎｏｄｅ  Ａｄｄｒｅｓｓに基づいて、オーバレイネットワークｌｎにおけるリンクの切断要求１７００を送信する。
【０１５４】
これにより、第２の通信部２０１３は、データ送信経路ｎｔに含まれる経路が、オーバレイネットワークｌｎにおいて接続中のノード間を結ぶ経路になるようにすることができる。このため、第２の通信部２０１３は、以降にデータ送信経路ｎｔを変更しようとした場合に、オーバレイネットワークｌｎ上で未接続のノード間を結ぶ経路を追加してループが形成されることを防止することができる。
【０１５５】
（実施例１）
次に、図２１を用いて、実施例１における経路制御装置１００とノードｎとの動作について説明する。
【０１５６】
図２１は、実施例１における経路制御装置１００とノードｎとの動作の一例を示す説明図である。図２１の例は、経路制御装置１００とノード２１１０とノード２１２０とが通信可能であって、ノード２１１０とノード２１２０とが接続され、または、ノード２１１０とノード２１２０とが切断される場合についての例である。
【０１５７】
ノード２１１０は、ブローカー部２１１１と、オーバレイ部２１１２とを有する。ブローカー部２１１１は、データ送信経路ｎｔを制御し、または、データ送信経路ｎｔを介したデータ１２００の送受信を制御するブロックである。オーバレイ部２１１２は、オーバレイネットワークｌｎ上のノード間の接続関係を制御するブロックである。ノード２１２０は、同様に、ブローカー部２１２１と、オーバレイ部２１２２とを有する。
【０１５８】
（２１−１）ノード２１２０において、ブローカー部２１２１は、データ１２００の送信元ごとに、所定の期間単位でデータ１２００の通信量を計測し、計測した結果を経路制御装置１００に送信する。ブローカー部２１２１は、例えば、所定の期間単位で、ノード２１１０から受信するデータ１２００について通信量を計測し、計測した通信量を示す情報を経路制御装置１００に送信する。経路制御装置１００は、それぞれのノードｎから、送信元ごとのデータ１２００の通信量を受信して記憶する。これにより、経路制御装置１００は、データ送信経路ｎｔを変更するか否かを判定する際に用いられる情報を記憶することができる。
【０１５９】
ここでは、ブローカー部２１２１が、通信量Ｘを計測する都度、通信量Ｘを経路制御装置１００に送信する場合について説明したが、これに限らない。例えば、ブローカー部２１２１は、計測した通信量Ｘに基づいて、計測した通信量Ｘを経路制御装置１００に送信するか否かを判定する場合があってもよい。
【０１６０】
具体的には、ブローカー部２１２１は、計測した通信量Ｘを、過去のいずれかの期間における通信量Ｙから減算した差分Ｙ−Ｘを算出する。そして、ブローカー部２１２１は、算出した差分Ｙ−Ｘが閾値以上である場合に、データ送信経路ｎｔを変更することが好ましいため、経路制御装置１００に計測した通信量Ｘを送信する。
【０１６１】
この場合、経路制御装置１００は、ブローカー部２１２１から通信量Ｘを受信したことに応じて、それぞれのノードｎのブローカー部に送信元ごとのデータ１２００の通信量を要求する。そして、経路制御装置１００は、それぞれのノードｎのブローカー部から送信元ごとのデータ１２００の通信量を収集して記憶する。これにより、ブローカー部２１２１は、経路制御装置１００との通信量を低減し、消費電力を抑制することができる。
【０１６２】
そして、経路制御装置１００は、タイマーがタイムアウトする都度、オーバレイネットワークｌｎのトポロジ情報と、記憶した送信元ごとのデータ１２００の通信量とに基づいて、通信量行列を生成する。経路制御装置１００は、生成した通信量行列に基づいて、通信量の和が最小になる全域木を生成する。全域木とは、ループを形成しないネットワークである。以下の説明では、通信量の和が最小になる全域木を「最小全域木」と表記する場合がある。
【０１６３】
経路制御装置１００は、最小全域木を生成すると、現在のオーバレイネットワークｌｎにおけるノード間の通信量の和から、最小全域木に対応するオーバレイネットワークｌｎにおけるノード間の通信量の和を減算した差分を算出する。そして、経路制御装置１００は、算出した差分に基づいて、データ送信経路ｎｔを変更するか否かを判定する。経路制御装置１００は、例えば、算出した差分が閾値より大きければ、データ送信経路ｎｔを変更すると判定する。
【０１６４】
また、経路制御装置１００は、閾値を可変にしてもよい。経路制御装置１００は、例えば、過去の期間Ｔにおける、ノード間の通信量の和の平均値λｂと標準偏差σｂとを算出する。次に、経路制御装置１００は、最小全域木に対応するオーバレイネットワークｌｎにおけるノード間の通信量の和λａを算出する。そして、経路制御装置１００は、閾値としてＮ×σｂを採用し、λｂ−λａ＞Ｎ×σｂである場合に、データ送信経路ｎｔを変更すると判定する。
【０１６５】
経路制御装置１００は、データ送信経路ｎｔを変更すると判定した場合、現在のオーバレイネットワークｌｎを示す全域木に対応する接続行列と、最小全域木に対応する接続行列とを生成する。そして、経路制御装置１００は、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを特定する。ここで、図２２の説明に移行し、最小全域木を生成する一例や、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを決定する一例について説明する。
【０１６６】
図２２は、最小全域木を生成する一例を示す説明図である。図２２において、経路制御装置１００は、現在のオーバレイネットワークｌｎを示す全域木に対応する接続行列Ｂを生成し、生成した接続行列Ｂに基づいて通信量行列Ｔを生成する。そして、経路制御装置１００は、通信量行列Ｔに基づいて、最小全域木を生成する。
【０１６７】
経路制御装置１００は、例えば、総当たり法を用いて最小全域木を生成する。（ｉ）経
路制御装置１００は、具体的には、最小全域木の候補におけるノード間の通信量の和を、擬似的に∞に設定する。（ｉｉ）経路制御装置１００は、作成可能な全域木のいずれかを選
択する。（ｉｉｉ）経路制御装置１００は、通信量行列Ｔに基づいて、選択した全域木におけ
るノード間の通信量の和を算出する。（ｉｖ）経路制御装置１００は、最小全域木の候補に
おけるノード間の通信量の和と、選択した全域木におけるノード間の通信量の和とを比較する。
【０１６８】
（ｖ）経路制御装置１００は、選択した全域木におけるノード間の通信量の和の方が小
さければ、選択した全域木を最小全域木の候補として設定する。（ｖｉ）経路制御装置１０
０は、選択した全域木におけるノード間の通信量の和を、最小全域木の候補におけるノード間の通信量の和として設定する。（ｖｉｉ）経路制御装置１００は、作成可能な全域木のす
べてについて、（ｉｉ）〜（ｖｉ）を繰り返した後、最小全域木の候補として設定された全域
木を、最小全域木として採用する。
【０１６９】
また、経路制御装置１００は、例えば、ヒューリスティック解法を用いて最小全域木を計算してもよい。ヒューリスティック解法は、例えば、クラスカル法やプリム法である。経路制御装置１００は、具体的には、通信量行列Ｔに基づいて、ノード間の通信量の逆数に所定の計数を乗算した値を、ノード間のリンクのコストとして設定する。換言すれば、経路制御装置１００は、ノード間の通信量が大きいほど、小さい値をコストとして設定する。次に、経路制御装置１００は、ノード間のリンクのうち最小コストのリンクを選択して接続する処理を、全域木が作成されるまで繰り返す。そして、経路制御装置１００は、作成された全域木を、最小全域木として設定する。
【０１７０】
経路制御装置１００は、最小全域木を設定すると、現在のオーバレイネットワークｌｎにおけるノード間の通信量の和から、最小全域木に対応するオーバレイネットワークｌｎにおけるノード間の通信量の和を減算した差分を算出する。そして、経路制御装置１００は、算出した差分に基づいて、データ送信経路ｎｔを変更するか否かを判定する。経路制御装置１００は、例えば、算出した差分が閾値より大きければ、データ送信経路ｎｔを変更すると判定する。
【０１７１】
経路制御装置１００は、最小全域木に対応する接続行列Ｂを生成する。次に、経路制御装置１００は、接続行列Ａ−接続行列Ｂの演算結果の行列に基づいて、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを特定する。経路制御装置１００は、例えば、演算結果の行列の「−１」の要素に対応するノード間を切断されるノード間として特定する。また、経路制御装置１００は、例えば、演算結果の行列の「１」の要素に対応するノード間を新たに接続されるノード間として特定する。
【０１７２】
経路制御装置１００は、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを特定すると、オーバレイネットワークｌｎのノード間の接続関係の変更順序を決定する。ここで、図２３の説明に移行し、オーバレイネットワークｌｎのノード間の接続関係の変更順序を決定する一例について説明する。
【０１７３】
図２３は、オーバレイネットワークｌｎのノード間の接続関係の変更順序を決定する一例を示す説明図である。図２３のように、現在のオーバレイネットワークｌｎのノード間の接続関係から、変更後のオーバレイネットワークｌｎのノード間の接続関係に遷移する過程において、中間状態が複数ある場合がある。図２３の例では、中間状態２３０１〜２３０３が存在する。
【０１７４】
この場合、経路制御装置１００は、それぞれの中間状態におけるオーバレイネットワークｌｎのノード間の通信量の和を算出する。そして、経路制御装置１００は、現在のオーバレイネットワークｌｎのノード間の通信量の和からの低減度合いが最も大きくなる中間状態を選択して、選択した中間状態に遷移するようにノード間を接続または切断する順序を決定する。
【０１７５】
図２３の例では、経路制御装置１００は、中間状態２３０１〜２３０３のそれぞれについて通信量の和Ｔｒ（１）〜Ｔｒ（３）を算出する。そして、経路制御装置１００は、現在のオーバレイネットワークｌｎのノード間の通信量の和Ｔｒ（Ｂ）と、中間状態２３０１〜２３０３のそれぞれについて通信量の和Ｔｒ（１）〜Ｔｒ（３）との差分を算出する。経路制御装置１００は、算出した差分が最も大きい中間状態を選択して、選択した中間状態に遷移するようにノード間を接続または切断する順序を決定する。
【０１７６】
図２１の説明に戻り、（２１−２）経路制御装置１００は、新たに接続されるノードｎのうち、受信端末ｓｔに近い方にあるノードｎに対して、仮サブスクライブ１３００の発行要求６００を送信する。図２１の例では、経路制御装置１００は、ノード２１１０に対して、接続先としてノード２１２０を示す情報を含む仮サブスクライブ１３００の発行要求６００を送信する。
【０１７７】
（２１−３）ノード２１１０において、ブローカー部２１１１は、経路制御装置１００から仮サブスクライブ１３００の発行要求６００を受信する。ブローカー部２１１１は、仮サブスクライブ１３００の発行要求６００に基づいて、ノード２１２０に仮サブスクライブ１３００を発行する。これにより、ブローカー部２１１１は、第２のブローカーｂから第１のブローカーｂへの仮の経路を、データ送信経路ｎｔに追加することができる。
【０１７８】
（２１−４）経路制御装置１００は、さらに、ノード２１１０に対して、重複除去処理の起動要求７００を送信する。ノード２１１０において、ブローカー部２１１１は、重複除去処理の起動要求７００を受信する。ブローカー部２１１１は、起動要求７００に応じて、重複除去処理を起動する。これにより、ブローカー部２１１１は、異なる経路を介して同一内容のデータ１２００を重複して受信した場合に、同一内容のデータ１２００を重複して転送してしまうことを防止することができる。
【０１７９】
（２１−５）ノード２１２０において、ブローカー部２１２１は、追加された仮の経路を用いて、ノード２１１０に対して、データ１２００を送信する。また、ブローカー部２１２１は、追加された仮の経路以外の経路を用いて、他のノードｎを経由してノード２１１０に対して、同一内容のデータ１２００を送信する。ノード２１１０において、ブローカー部２１１１は、重複除去処理を起動しているため、同一内容のデータ１２００を受信しても重複して転送しなくてよくなる。
【０１８０】
これにより、ブローカー部２１２１は、オーバレイネットワークｌｎのノード間の接続関係の変更中に、追加された仮の経路以外の経路が削除された状態になっても、ノード２１１０へデータ１２００を送信し続けることができる。このため、ブローカー部２１２１は、ブローカー部２１１１へデータ１２００が届かなくなる期間をなくすことができる。
【０１８１】
（２１−６）経路制御装置１００は、新たに接続されるノードｎと切断されるノードｎとに対してオーバレイネットワークｌｎのノード間の接続関係の変更要求を送信する。変更要求は、例えば、オーバレイ接続要求８００やオーバレイ切断要求９００である。図２１の例では、経路制御装置１００は、ノード２１１０に対して、接続先としてノード２１２０を示す情報を含むオーバレイ接続要求８００を送信する。
【０１８２】
（２１−７）ノード２１１０において、オーバレイ部２１１２は、オーバレイ接続要求８００を受信する。オーバレイ部２１１２は、オーバレイ接続要求８００に基づいて、ノード２１２０に対して、オーバレイネットワークｌｎにおけるリンクの接続要求１４００を送信する。ノード２１２０において、オーバレイ部２１２２は、リンクの接続要求１４００を受信すると、ノード２１１０とノード２１２０とのリンクが確立する。
【０１８３】
（２１−８）ノード２１１０において、オーバレイ部２１１２は、ノード２１１０とノード２１２０とのリンクが確立すると、オーバレイ接続通知１５００をブローカー部２１１１に送信する。
【０１８４】
（２１−９）ノード２１１０において、ブローカー部２１１１は、オーバレイ接続通知１５００を受信すると、オーバレイネットワークｌｎにおけるリンクの接続に合わせて、ノード２１２０にサブスクライブ１６００を送信する。これにより、ノード２１１０は、ノード２１２０との間を結ぶ経路を、データ送信経路ｎｔに追加して、仮の経路を上書きすることができる。ここで、ノード２１１０は、仮の経路があるため、サブスクライブ１６００の送信を省略してもよい。
【０１８５】
ここで、図２１を用いて、経路制御装置１００が、切断されるノードｎに対してオーバレイネットワークｌｎのノード間の接続関係の変更要求を送信する場合についても説明する。以下では、ノード２１１０とノード２１２０との間が切断されるとする。
【０１８６】
（２１−１０）ノード２１１０において、オーバレイ部２１１２は、オーバレイ切断要求９００を受信する。オーバレイ部２１１２は、オーバレイ切断要求９００に基づいて、ノード２１２０に対して、オーバレイネットワークｌｎにおけるリンクの切断要求１７００を送信する。ノード２１２０において、オーバレイ部２１２２は、リンクの切断要求１７００を受信すると、ノード２１１０とノード２１２０とのリンクを切断する。
【０１８７】
（２１−１１）ノード２１１０において、オーバレイ部２１１２は、ノード２１１０とノード２１２０とのリンクが切断されると、オーバレイ切断通知１８００をブローカー部２１１１に送信する。
【０１８８】
（２１−１２）ノード２１１０において、ブローカー部２１１１は、オーバレイ切断通知１８００を受信すると、オーバレイネットワークｌｎにおけるリンクの切断に合わせて、ノード２１２０にアンサブスクライブ１９００を送信する。これにより、ノード２１１０は、ノード２１２０との間を結ぶ経路を、データ送信経路ｎｔから削除することができる。ここで、図２４の説明に移行する。
【０１８９】
図２４は、図２１におけるノードｎが有するブロックの具体例を示す説明図である。図２４に示すように、ノードｎは、ブローカー部として、ノーティファイツリー通信計測部２４０１と、仮ノーティファイツリー構築部２４０２と、重複除去処理部２４０３と、パブリッシュ・ノーティファイ処理部２４０４とを有する。また、ノードｎは、オーバレイ部として、オーバレイネットワーク構築部２４０５を有する。また、ノードｎは、ブローカー部として、オーバレイ接続／切断検知部２４０６と、サブスクライブ・アンサブスクライブ処理部２４０７とを有する。
【０１９０】
ノーティファイツリー通信計測部２４０１は、送信元ごとのデータ１２００の通信量を計測し、経路制御装置１００に送信するブロックである。仮ノーティファイツリー構築部２４０２は、経路制御装置１００から仮サブスクライブ１３００の発行要求６００を受信し、仮サブスクライブ１３００を発行するブロックである。仮ノーティファイツリー構築部２４０２は、経路制御装置１００から重複除去処理の起動要求７００を受信し、重複除去処理部２４０３を起動するブロックである。
【０１９１】
重複除去処理部２４０３は、重複除去処理を実行し、パブリッシュ・ノーティファイ処理部２４０４を制御するブロックである。パブリッシュ・ノーティファイ処理部２４０４は、他のノードｎに対するパブリッシュやデータ１２００の送受信を制御するブロックである。パブリッシュ・ノーティファイ処理部２４０４は、同一内容のデータ１２００を重複して受信した場合、重複除去処理部２４０３の制御にしたがっていずれかのデータ１２００を破棄するブロックである。
【０１９２】
オーバレイネットワーク構築部２４０５は、経路制御装置１００からオーバレイ接続要求８００を受信し、オーバレイネットワークｌｎのリンクの接続要求１４００を送信し、オーバレイネットワークｌｎを変更するブロックである。オーバレイネットワーク構築部２４０５は、経路制御装置１００からオーバレイ切断要求９００を受信し、オーバレイネットワークｌｎのリンクの切断要求１７００を送信し、オーバレイネットワークｌｎを変更するブロックである。オーバレイネットワーク構築部２４０５は、オーバレイネットワークｌｎにおいて他のノードｎと接続または切断されると、オーバレイ接続通知１５００またはオーバレイ切断通知１８００を、オーバレイ接続／切断検知部２４０６に送信するブロックである。
【０１９３】
オーバレイ接続／切断検知部２４０６は、オーバレイネットワークｌｎにおける他のノードｎとの接続／切断を検知し、サブスクライブ・アンサブスクライブ処理部２４０７を制御するブロックである。オーバレイ接続／切断検知部２４０６は、オーバレイネットワーク構築部２４０５からオーバレイ接続通知１５００やオーバレイ切断通知１８００を受信し、サブスクライブ・アンサブスクライブ処理部２４０７を制御するブロックである。
【０１９４】
サブスクライブ・アンサブスクライブ処理部２４０７は、オーバレイ接続／切断検知部２４０６の制御にしたがって、データ送信経路ｎｔを変更するブロックである。サブスクライブ・アンサブスクライブ処理部２４０７は、例えば、オーバレイネットワークｌｎにおいて他のノードｎと接続または切断されたことに合わせて、サブスクライブ１６００またはアンサブスクライブ１９００を他のノードｎに送信するブロックである。ここで、図２５の説明に移行する。
【０１９５】
図２５は、ノードｎの状態遷移を示す説明図である。図２５に示すように、ノードｎは、初期状態２５０１から、隣接する他のノードｎとのオーバレイネットワークｌｎにおけるリンクを接続すると、接続状態２５０２に移行する。隣接する他のノードｎとは、ノードｎの通信圏内に存在するノードｎである。
【０１９６】
ノードｎは、接続状態２５０２から、サブスクライブ１６００を送信すると、データ１２００の受信を待つ受信待機状態２５０３に移行する。ノードｎは、受信待機状態２５０３においてアンサブスクライブ１９００を送信すると、接続状態２５０２に戻る。ノードｎは、受信待機状態２５０３においてオーバレイネットワークｌｎにおけるリンクが切断されると、オーバレイネットワークｌｎを介さずデータ１２００の受信を待つオーバレイなしの受信待機状態２５０４に移行する。ノードｎは、オーバレイなしの受信待機状態２５０４から初期状態２５０１に戻る。
【０１９７】
ノードｎは、接続状態２５０２から、サブスクライブ１６００を受信すると、データ１２００の送信を待つ送信待機状態２５０５に移行する。ノードｎは、送信待機状態２５０５においてアンサブスクライブ１９００を受信すると、接続状態２５０２に戻る。ノードｎは、送信待機状態２５０５においてオーバレイネットワークｌｎにおけるリンクが切断されると、オーバレイネットワークｌｎを介さずデータ１２００の送信を待つオーバレイなしの送信待機状態２５０６に移行する。ノードｎは、オーバレイなしの送信待機状態２５０６においてアンサブスクライブ１９００を上流に送信し、初期状態２５０１に戻る。
【０１９８】
ノードｎは、初期状態２５０１において、仮サブスクライブ１３００を送信すると、オーバレイネットワークｌｎを介さずデータ１２００の受信を待つオーバレイなしの仮受信待機状態２５０７に移行する。ノードｎは、オーバレイなしの仮受信待機状態２５０７において、オーバレイネットワークｌｎのリンクが接続されると、オーバレイネットワークｌｎを介してデータ１２００の受信を待つ仮受信待機状態２５０８に移行する。ノードｎは、仮受信待機状態２５０８において、サブスクライブ１６００を送信すると、受信待機状態２５０３に移行する。
【０１９９】
ノードｎは、初期状態２５０１において、仮サブスクライブ１３００を受信すると、オーバレイネットワークｌｎを介さずデータ１２００の送信を待つオーバレイなしの仮送信待機状態２５０９に移行する。ノードｎは、オーバレイなしの仮送信待機状態２５０９において、オーバレイネットワークｌｎのリンクが接続されると、オーバレイネットワークｌｎを介してデータ１２００の送信を待つ仮送信待機状態２５１０に移行する。ノードｎは、仮送信待機状態２５１０において、サブスクライブ１６００を受信すると、送信待機状態２５０５に移行する。
【０２００】
（経路制御処理手順）
次に、図２６を用いて、経路制御処理手順の一例について説明する。
【０２０１】
図２６は、経路制御処理手順の一例を示すフローチャートである。図２６において、経路制御装置１００は、タイマーがタイムアウトしたか否かを判定する（ステップＳ２６０１）。ここで、タイムアウトしていない場合（ステップＳ２６０１：Ｎｏ）、経路制御装置１００は、ステップＳ２６０１の処理に戻る。
【０２０２】
一方で、タイムアウトした場合（ステップＳ２６０１：Ｙｅｓ）、経路制御装置１００は、ノーティファイツリーにおけるノード間の通信量を取得し、現在のオーバレイネットワークｌｎの接続行列を示すマトリクスを生成する（ステップＳ２６０２）。次に、経路制御装置１００は、ノード間の通信量の和が最小になる新たなオーバレイネットワークｌｎの接続行列を示すマトリクスを生成する（ステップＳ２６０３）。
【０２０３】
そして、経路制御装置１００は、現在のオーバレイネットワークｌｎにおけるノード間の通信量の和から、新たなオーバレイネットワークｌｎにおけるノード間の通信量の和を減算した差分が閾値より大きいか否かを判定する（ステップＳ２６０４）。ここで、閾値以下である場合（ステップＳ２６０４：Ｎｏ）、経路制御装置１００は、ステップＳ２６０１の処理に戻る。
【０２０４】
一方で、閾値より大きい場合（ステップＳ２６０４：Ｙｅｓ）、経路制御装置１００は、２つのマトリクスに基づいて、オーバレイネットワークｌｎにおいて新たに接続される接続対象のリンクと切断される切断対象のリンクとを特定する（ステップＳ２６０５）。次に、経路制御装置１００は、現在のオーバレイネットワークｌｎから新たなオーバレイネットワークｌｎまで変更する過程について、ループを形成せずにリンクを接続または切断する順序を決定する（ステップＳ２６０６）。
【０２０５】
そして、経路制御装置１００は、決定した順序に基づいて、接続対象のリンクと切断対象のリンクとのペアを選択する（ステップＳ２６０７）。次に、経路制御装置１００は、選択した接続対象のリンクを形成するノードｎのうち一方のノードｎに、ノーティファイツリーにおいて他方のノードｎへのリンクを接続させる仮サブスクライブ１３００の発行要求６００を送信する（ステップＳ２６０８）。
【０２０６】
また、経路制御装置１００は、選択した接続対象のリンクを形成するノードｎのうち他方のノードｎに、ノーティファイツリーにおいて一方のノードｎへのリンクを接続させる仮サブスクライブ１３００の発行要求６００を送信する（ステップＳ２６０９）。そして、経路制御装置１００は、接続対象のリンクを形成するノードｎに、重複除去処理の起動要求７００を送信する（ステップＳ２６１０）。
【０２０７】
次に、経路制御装置１００は、接続対象のリンクを形成するノードｎに、接続対象のリンクを接続させるオーバレイ接続要求８００を送信する（ステップＳ２６１１）。そして、経路制御装置１００は、接続対象のリンクが接続されたか否かを判定する（ステップＳ２６１２）。ここで、接続されていない場合（ステップＳ２６１２：Ｎｏ）、経路制御装置１００は、ステップＳ２６１２の処理に戻る。
【０２０８】
一方で、接続された場合（ステップＳ２６１２：Ｙｅｓ）、経路制御装置１００は、切断対象のリンクを形成するノードｎに、切断対象のリンクを切断させるオーバレイ切断要求９００を送信する（ステップＳ２６１３）。次に、経路制御装置１００は、接続対象のリンクと切断対象のリンクとのうち、すべてのリンクを選択したか否かを判定する（ステップＳ２６１４）。ここで、選択していないリンクがある場合（ステップＳ２６１４：Ｎｏ）、経路制御装置１００は、ステップＳ２６０７の処理に戻る。
【０２０９】
一方で、すべてのリンクを選択した場合（ステップＳ２６１４：Ｙｅｓ）、経路制御装置１００は、経路制御処理を終了する。
【０２１０】
（仮サブスクライブ発行処理手順）
次に、図２７を用いて、仮サブスクライブ発行処理手順の一例について説明する。
【０２１１】
図２７は、仮サブスクライブ発行処理手順を示すフローチャートである。図２７において、ノードｎは、ノーティファイツリーにおいて自ノードｎから他のノードｎへのリンクを接続する仮サブスクライブ１３００の発行要求６００を受け付ける（ステップＳ２７０１）。
【０２１２】
次に、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００に基づいて、いずれかのポートに対応付けて接続先になる他のノードｎのアドレスが登録済みであるか否かを判定する（ステップＳ２７０２）。ここで、登録済みである場合（ステップＳ２７０２：Ｙｅｓ）、ノードｎは、ステップＳ２７０４の処理に移行する。
【０２１３】
一方で、登録済みではない場合（ステップＳ２７０２：Ｎｏ）、ノードｎは、接続先になる他のノードｎのアドレスを対応付けたレコードを、Ｓｕｂ／Ｐｕｂテーブル１０００に登録する（ステップＳ２７０３）。そして、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００に登録済みのトピックのうち、接続先になる他のノードｎに送信する仮サブスクライブ１３００に含めるトピックを特定する（ステップＳ２７０４）。
【０２１４】
次に、ノードｎは、特定したトピックのうち、いずれかのトピックを選択する（ステップＳ２７０５）。そして、ノードｎは、選択したトピックが、接続先になる他のノードｎから過去に受信済みのサブスクライブ１６００に含まれるトピックと同一であるか否かを判定する（ステップＳ２７０６）。ここで、同一である場合（ステップＳ２７０６：Ｙｅｓ）、ノードｎは、ステップＳ２７０８の処理に移行する。
【０２１５】
一方で、同一ではない場合（ステップＳ２７０６：Ｎｏ）、ノードｎは、選択したトピックと自ノードｎのアドレスとを含む仮サブスクライブ１３００を、接続先になる他のノードｎに送信する（ステップＳ２７０７）。そして、ノードｎは、すべてのトピックを選択したか否かを判定する（ステップＳ２７０８）。ここで、選択していないトピックがある場合（ステップＳ２７０８：Ｎｏ）、ノードｎは、ステップＳ２７０５の処理に戻る。
【０２１６】
一方で、すべてのトピックを選択した場合（ステップＳ２７０８：Ｙｅｓ）、ノードｎは、仮サブスクライブ発行処理を終了する。
【０２１７】
（サブスクライブ受信処理手順）
次に、図２８を用いて、サブスクライブ受信処理手順の一例について説明する。
【０２１８】
図２８は、サブスクライブ受信処理手順を示すフローチャートである。図２８において、ノードｎは、トピックとノードｎのアドレスとを含む仮サブスクライブ１３００を受信する（ステップＳ２８０１）。
【０２１９】
次に、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００に、仮サブスクライブ１３００を受信したポートに対応付けて、仮サブスクライブ１３００に含まれる接続先になるノードｎのアドレスが登録済みであるか否かを判定する（ステップＳ２８０２）。ここで、登録済みである場合（ステップＳ２８０２：Ｙｅｓ）、ノードｎは、ステップＳ２８０４の処理に移行する。
【０２２０】
一方で、登録済みでない場合（ステップＳ２８０２：Ｎｏ）、ノードｎは、仮サブスクライブ１３００を受信したポートと、接続先になるノードｎのアドレスとが対応付けられたレコードを、Ｓｕｂ／Ｐｕｂテーブル１０００に登録する（ステップＳ２８０３）。
【０２２１】
次に、ノードｎは、仮サブスクライブ１３００を受信したポートに対応付けて、仮サブスクライブ１３００に含まれるトピックをＳｕｂ／Ｐｕｂテーブル１０００に登録する（ステップＳ２８０４）。そして、ノードｎは、サブスクライブ１６００を受信したポート以外のポートに対応付けてトピックが登録済みであるか否かを判定する（ステップＳ２８０５）。ここで、トピックが登録済みである場合（ステップＳ２８０５：Ｙｅｓ）、ノードｎは、サブスクライブ受信処理を終了する。
【０２２２】
一方で、トピックが登録済みではない場合（ステップＳ２８０５：Ｎｏ）、ノードｎは、仮サブスクライブ１３００を受信したポート以外のポートを特定する（ステップＳ２８０６）。次に、ノードｎは、特定したポートのうち、いずれかのポートを選択する（ステップＳ２８０７）。そして、ノードｎは、選択したポートから、トピックと自ノードｎのアドレスとを含むサブスクライブ１６００を送信する（ステップＳ２８０８）。
【０２２３】
次に、ノードｎは、すべてのポートを選択したか否かを判定する（ステップＳ２８０９）。ここで、選択していないポートがある場合（ステップＳ２８０９：Ｎｏ）、ノードｎは、ステップＳ２８０７の処理に戻る。
【０２２４】
一方で、すべてのポートを選択した場合（ステップＳ２８０９：Ｙｅｓ）、ノードｎは、サブスクライブ受信処理を終了する。
【０２２５】
（サブスクライブ受信処理手順）
次に、図２９を用いて、サブスクライブ受信処理手順の一例について説明する。
【０２２６】
図２９は、サブスクライブ受信処理手順を示すフローチャートである。図２９において、ノードｎは、トピックとノードｎのアドレスとを含むサブスクライブ１６００を受信する（ステップＳ２９０１）。次に、ノードｎは、トピックとノードｎのアドレスとを対応付けたレコードをＳｕｂ／Ｐｕｂテーブル１０００に登録する（ステップＳ２９０２）。
【０２２７】
そして、ノードｎは、サブスクライブ１６００を受信したポート以外のポートについてトピックが登録済みであるか否かを判定する（ステップＳ２９０３）。ここで、トピックが登録済みである場合（ステップＳ２９０３：Ｙｅｓ）、ノードｎは、サブスクライブ受信処理を終了する。
【０２２８】
一方で、トピックが登録済みではない場合（ステップＳ２９０３：Ｎｏ）、ノードｎは、サブスクライブ１６００を受信したポート以外のポートを特定する（ステップＳ２９０４）。次に、ノードｎは、特定したポートのうち、いずれかのポートを選択する（ステップＳ２９０５）。そして、ノードｎは、選択したポートから、トピックと自ノードｎのアドレスとを含むサブスクライブ１６００を送信する（ステップＳ２９０６）。
【０２２９】
次に、ノードｎは、すべてのポートを選択したか否かを判定する（ステップＳ２９０７）。ここで、選択していないポートがある場合（ステップＳ２９０７：Ｎｏ）、ノードｎは、ステップＳ２９０５の処理に戻る。
【０２３０】
一方で、すべてのポートを選択した場合（ステップＳ２９０７：Ｙｅｓ）、ノードｎは、サブスクライブ受信処理を終了する。
【０２３１】
（アンサブスクライブ受信処理手順）
次に、図３０を用いて、アンサブスクライブ受信処理手順の一例について説明する。
【０２３２】
図３０は、アンサブスクライブ受信処理手順を示すフローチャートである。図３０において、ノードｎは、トピックとノードｎのアドレスとを含むアンサブスクライブ１９００を受信する（ステップＳ３００１）。次に、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００のうち、アンサブスクライブ１９００に含まれるトピックとノードｎのアドレスとを対応付けたレコードを削除する（ステップＳ３００２）。
【０２３３】
そして、ノードｎは、アンサブスクライブ１９００を受信したポート以外のポートのうち、アンサブスクライブ１９００に含まれるトピックに対応付けて、Ｓｕｂ／Ｐｕｂテーブル１０００に登録されたポートがあるか否かを判定する（ステップＳ３００３）。ここで、ポートがない場合（ステップＳ３００３：Ｎｏ）、ノードｎは、アンサブスクライブ受信処理を終了する。
【０２３４】
一方で、ポートがある場合（ステップＳ３００３：Ｙｅｓ）、ノードｎは、アンサブスクライブ１９００を受信したポート以外のポートを特定する（ステップＳ３００４）。次に、ノードｎは、特定したポートのうち、いずれかのポートを選択する（ステップＳ３００５）。そして、ノードｎは、選択したポートから、トピックと自ノードｎのアドレスとを含むアンサブスクライブ１９００を送信する（ステップＳ３００６）。
【０２３５】
次に、ノードｎは、すべてのポートを選択したか否かを判定する（ステップＳ３００７）。ここで、選択していないポートがある場合（ステップＳ３００７：Ｎｏ）、ノードｎは、ステップＳ３００５の処理に戻る。
【０２３６】
一方で、すべてのポートを選択した場合（ステップＳ３００７：Ｙｅｓ）、ノードｎは、アンサブスクライブ受信処理を終了する。
【０２３７】
（ノーティファイ受信処理手順）
次に、図３１を用いて、ノーティファイ受信処理手順の一例について説明する。
【０２３８】
図３１は、ノーティファイ受信処理手順を示すフローチャートである。図３１において、ノードｎは、トピックと、ノーティファイＩＤと、ノーティファイの送信元になるノードｎのアドレスとを含むノーティファイを受信する（ステップＳ３１０１）。
【０２３９】
次に、ノードｎは、重複除去処理が起動中であるか否かを判定する（ステップＳ３１０２）。ここで、起動中である場合（ステップＳ３１０２：Ｙｅｓ）、ノードｎは、ステップＳ３１０４の処理に移行する。
【０２４０】
一方で、起動中ではない場合（ステップＳ３１０２：Ｎｏ）、ノードｎは、重複除去テーブル１１００に基づいて、受信したノーティファイが別の経路から受信済みのノーティファイであるか否かを判定する（ステップＳ３１０３）。ここで、受信済みのノーティファイである場合（ステップＳ３１０３：Ｙｅｓ）、ノードｎは、ノーティファイ受信処理を終了する。
【０２４１】
一方で、受信済みのノーティファイではない場合（ステップＳ３１０３：Ｎｏ）、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００に、ノーティファイに含まれるトピックに対応付けて登録されたポートを特定する（ステップＳ３１０４）。
【０２４２】
次に、ノードｎは、特定したポートのうち、いずれかのポートを選択する（ステップＳ３１０５）。そして、ノードｎは、選択したポートから、ノーティファイを送信する（ステップＳ３１０６）。その後、ノードｎは、すべてのポートを選択したか否かを判定する（ステップＳ３１０７）。ここで、選択していないポートがある場合（ステップＳ３１０７：Ｎｏ）、ノードｎは、ステップＳ３１０５の処理に戻る。
【０２４３】
一方で、すべてのポートを選択した場合（ステップＳ３１０７：Ｙｅｓ）、ノードｎは、重複除去処理が起動中であるか否かを判定する（ステップＳ３１０８）。ここで、起動中ではない場合（ステップＳ３１０８：Ｎｏ）、ノードｎは、ノーティファイ受信処理を終了する。
【０２４４】
一方で、起動中である場合（ステップＳ３１０８：Ｙｅｓ）、ノードｎは、重複除去テーブル１１００に、ノーティファイに含まれるノーティファイＩＤを登録する（ステップＳ３１０９）。そして、ノードｎは、ノーティファイ受信処理を終了する。
【０２４５】
（オーバレイ切断処理手順）
次に、図３２を用いて、オーバレイ切断処理手順の一例について説明する。
【０２４６】
図３２は、オーバレイ切断処理手順を示すフローチャートである。図３２において、ノードｎは、切断するノードｎのアドレスを含むオーバレイ切断要求９００を受信する（ステップＳ３２０１）。次に、ノードｎは、切断するノードｎに、オーバレイネットワークｌｎのリンクの切断要求１７００を送信する（ステップＳ３２０２）。そして、ノードｎは、切断完了の応答を受信する（ステップＳ３２０３）。
【０２４７】
次に、ノードｎは、切断するノードｎのアドレスを含むオーバレイ切断通知１８００を出力する（ステップＳ３２０４）。そして、ノードｎは、オーバレイ切断処理を終了する。
【０２４８】
（オーバレイ接続処理手順）
次に、図３３を用いて、オーバレイ接続処理手順の一例について説明する。
【０２４９】
図３３は、オーバレイ接続処理手順を示すフローチャートである。図３３において、ノードｎは、新たに接続するノードｎのアドレスを含むオーバレイ接続要求８００を受信する（ステップＳ３３０１）。次に、ノードｎは、新たに接続するノードｎに、オーバレイネットワークｌｎのリンクの接続要求１４００を送信する（ステップＳ３３０２）。そして、ノードｎは、接続完了の応答を受信する（ステップＳ３３０３）。
【０２５０】
次に、ノードｎは、新たに接続するノードｎのアドレスを含むオーバレイ接続通知１５００を出力する（ステップＳ３３０４）。そして、ノードｎは、オーバレイ接続処理を終了する。
【０２５１】
（ノーティファイ切断処理手順）
次に、図３４を用いて、ノーティファイ切断処理手順の一例について説明する。
【０２５２】
図３４は、ノーティファイ切断処理手順を示すフローチャートである。図３４において、ノードｎは、切断するノードｎのアドレスを含むオーバレイ切断通知１８００を受け付ける（ステップＳ３４０１）。そして、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００に、切断するノードｎへのポートに対応付けて登録されたトピックを特定する（ステップＳ３４０２）。
【０２５３】
次に、ノードｎは、特定したノードｎのうち、いずれかのノードｎを選択する（ステップＳ３４０３）。そして、ノードｎは、切断するノードｎのアドレスに対応するポート以外のポートのうち、選択したトピックに対応付けてＳｕｂ／Ｐｕｂテーブル１０００に登録されたポートがあるか否かを判定する（ステップＳ３４０４）。ここで、ポートがない場合（ステップＳ３４０４：Ｎｏ）、ノードｎは、ステップＳ３４０９の処理に移行する。
【０２５４】
一方で、ポートがある場合（ステップＳ３４０４：Ｙｅｓ）、ノードｎは、切断するノードｎのアドレスに対応するポート以外のポートを特定する（ステップＳ３４０５）。次に、ノードｎは、特定したポートのうち、いずれかのポートを選択する（ステップＳ３４０６）。そして、ノードｎは、選択したポートから、トピックと自ノードｎのアドレスとを含むアンサブスクライブ１９００を送信する（ステップＳ３４０７）。
【０２５５】
次に、ノードｎは、すべてのポートを選択したか否かを判定する（ステップＳ３４０８）。ここで、選択していないポートがある場合（ステップＳ３４０８：Ｎｏ）、ノードｎは、ステップＳ３４０６の処理に戻る。
【０２５６】
一方で、すべてのポートを選択した場合（ステップＳ３４０８：Ｙｅｓ）、ノードｎは、すべてのトピックを選択したか否かを判定する（ステップＳ３４０９）。ここで、選択していないトピックがある場合（ステップＳ３４０９：Ｎｏ）、ノードｎは、ステップＳ３４０３の処理に戻る。
【０２５７】
一方で、すべてのトピックを選択した場合（ステップＳ３４０９：Ｙｅｓ）、ノーティファイ切断処理を終了する。
【０２５８】
（ノーティファイ接続処理手順）
次に、図３５を用いて、ノーティファイ接続処理手順の一例について説明する。
【０２５９】
図３５は、ノーティファイ接続処理手順を示すフローチャートである。図３５において、ノードｎは、新たに接続するノードｎのアドレスを含むオーバレイ接続通知１５００を受け付ける（ステップＳ３５０１）。
【０２６０】
次に、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００に、新たに接続するノードｎのアドレスが登録済みであるか否かを判定する（ステップＳ３５０２）。ここで、登録済みである場合（ステップＳ３５０２：Ｙｅｓ）、ノードｎは、ステップＳ３５０４の処理に移行する。
【０２６１】
一方で、登録済みでない場合（ステップＳ３５０２：Ｎｏ）、ノードｎは、新たに接続するノードｎへのポートに、新たに接続するノードｎのアドレスが対応付けられたレコードをＳｕｂ／Ｐｕｂテーブル１０００に登録する（ステップＳ３５０３）。次に、ノードｎは、Ｓｕｂ／Ｐｕｂテーブル１０００に登録済みのトピックを特定する（ステップＳ３５０４）。そして、ノードｎは、特定したトピックのうち、いずれかのトピックを選択する（ステップＳ３５０５）。
【０２６２】
次に、ノードｎは、新たに接続するノードｎへのポートから、トピックと自ノードｎのアドレスとを含むサブスクライブ１６００を送信する（ステップＳ３５０６）。そして、ノードｎは、すべてのトピックを選択したか否かを判定する（ステップＳ３５０７）。ここで、選択していないトピックがある場合（ステップＳ３５０７：Ｎｏ）、ノードｎは、ステップＳ３５０５の処理に戻る。
【０２６３】
一方で、すべてのトピックを選択した場合（ステップＳ３５０７：Ｙｅｓ）、ノーティファイ接続処理を終了する。
【０２６４】
以上説明したように、経路制御装置１００によれば、複数のノードｎを含むオーバレイネットワークｌｎを利用したデータ送信経路ｎｔにおけるノード間の通信量に基づいて、データ送信経路ｎｔを変更するか否かを判定することができる。また、経路制御装置１００によれば、変更すると判定した場合に、取得したノード間の通信量とに基づいて、オーバレイネットワークｌｎにおいて新たに接続されるノード間と切断されるノード間とを特定することができる。また、経路制御装置１００によれば、新たに接続されるノードｎに対してオーバレイネットワークｌｎにおいて新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ｎｔに追加させる仮サブスクライブ１３００を送信することができる。また、経路制御装置１００によれば、データ送信経路ｎｔに仮の経路が追加された後、新たに接続されるノードｎと切断されるノードｎとに対してオーバレイネットワークｌｎのノード間の接続関係を変更させる変更要求を送信することができる。
【０２６５】
これにより、経路制御装置１００は、オーバレイネットワークｌｎのノード間の接続関係の変更中であっても、仮の経路がデータ送信経路ｎｔに追加されているため、データ送信経路ｎｔが途切れることを防止することができる。このため、経路制御装置１００は、オーバレイネットワークｌｎのノード間の接続関係の変更中に、パブリッシャｐからサブスクライバｓまでデータ１２００が届かなくなる期間が生じることを防止することができる。また、経路制御装置１００は、オーバレイネットワークｌｎのノード間の接続関係の変更に応じて、ノードｎに、オーバレイネットワークｌｎにおいて切断されるノード間を結ぶ経路を、データ送信経路ｎｔから除外させることができる。このため、経路制御装置１００は、データ送信経路ｎｔにおけるループを解消することができ、異なる経路を介して同一内容のデータ１２００が重複して送信されることを防止することができる。
【０２６６】
また、経路制御装置１００によれば、新たに接続されるノードｎに対して、異なる経路を介して同一内容のデータ１２００を重複して受信した場合には、いずれかのデータ１２００を破棄させる重複除去処理を起動させる起動要求７００を送信することができる。
【０２６７】
これにより、経路制御装置１００は、ノードｎが同一内容のデータ１２００を重複して受信した場合にはいずれか一つのデータ１２００以外を破棄させることができ、ノードｎから同一内容のデータ１２００が重複して転送されることを防止することができる。このため、経路制御装置１００は、データ送信経路ｎｔにおけるノード間の通信量の増大化を抑制することができる。
【０２６８】
また、経路制御装置１００によれば、現在のノード間の通信量の和から、データ送信経路ｎｔを変更した場合におけるノード間の通信量の和を減算した差分を算出することができる。また、経路制御装置１００によれば、算出した差分が閾値以上である場合に、データ送信経路ｎｔを変更すると判定することができる。
【０２６９】
これにより、経路制御装置１００は、データ送信経路ｎｔを変更した方がデータ送信経路ｎｔ全体での通信量の和が小さくなり、データを効率よく送受信することができる場合に、データ送信経路ｎｔを変更すると判定することができる。このため、経路制御装置１００は、パブリッシャｐやサブスクライバｓが移動した結果、いずれかのノードｎの通信負担が増大した場合などに、現在よりも比較的好ましいデータ送信経路ｎｔがあれば、データ送信経路ｎｔを変更すると判定することができる。
【０２７０】
また、経路制御装置１００によれば、現在までのノード間の通信量の和の平均値から、データ送信経路ｎｔを変更した場合におけるノード間の通信量の和を減算した差分を算出することができる。また、経路制御装置１００によれば、算出した差分が、ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、データ送信経路ｎｔを変更すると判定することができる。
【０２７１】
これにより、経路制御装置１００は、データ送信経路ｎｔを変更した方がデータ送信経路ｎｔ全体での通信量の和が小さくなり、データを効率よく送受信することができる場合に、データ送信経路ｎｔを変更すると判定することができる。このため、経路制御装置１００は、パブリッシャｐやサブスクライバｓが移動した結果、いずれかのノードｎの通信負担が増大した場合などに、現在よりも比較的好ましいデータ送信経路ｎｔがあれば、データ送信経路ｎｔを変更すると判定することができる。また、経路制御装置１００は、現在までのノード間の通信量の和の平均値を用いるため、一時的にデータ送信経路ｎｔ全体での通信量の和が大きくなっている場合などには、データ送信経路ｎｔを変更しないと判定することもできる。このため、経路制御装置１００は、データ送信経路ｎｔが好ましい状態になる確率を向上させることができる。
【０２７２】
また、経路制御装置１００によれば、いずれかのノード間の通信量から、所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上である場合に、データ送信経路ｎｔを変更すると判定することができる。これにより、経路制御装置１００は、パブリッシャｐやサブスクライバｓが移動した結果、いずれかのノードｎの通信負担が増大した場合などに、データ送信経路ｎｔを変更すると判定することができる。
【０２７３】
また、経路制御装置１００によれば、次に遷移するノード間の接続関係の候補のうちオーバレイネットワークｌｎにおける通信量の和の低減度合いが相対的に大きい接続関係に遷移するように、変更要求を送信することができる。これにより、経路制御装置１００は、効率よくオーバレイネットワークｌｎのノード間の接続関係を変更することができる。
【０２７４】
また、ノードｎによれば、自ノードｎを含む複数のノードｎを含むオーバレイネットワークｌｎを利用したデータ送信経路ｎｔに、自ノードｎから他のノードｎへの仮の経路を追加させる仮サブスクライブ１３００を受け付けることができる。また、ノードｎによれば、仮サブスクライブ１３００を受け付けたことに応じて、データ送信経路ｎｔに仮の経路を追加することができる。また、ノードｎによれば、他のノードｎを経由させるデータ１２００を受け付けた場合、追加した仮の経路を用いてデータ１２００を送信することができる。
【０２７５】
これにより、ノードｎは、オーバレイネットワークｌｎのノード間の接続関係の変更中であっても、仮の経路を介してデータ１２００を他のノードに送信することができる。このため、ノードｎは、パブリッシャｐからサブスクライバｓまでデータ１２００が届かなくなる期間が生じることを防止することができる。
【０２７６】
なお、本実施の形態で説明した経路制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本経路制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本経路制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２７７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２７８】
（付記１）コンピュータに、
複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
処理を実行させることを特徴とする経路制御プログラム。
【０２７９】
（付記２）前記追加要求を送信する処理は、
さらに、前記新たに接続されるノードに対して、異なる経路を介して同一内容のデータを重複して受信した場合には、いずれかのデータを破棄させる重複排除要求を送信する、ことを特徴とする付記１に記載の経路制御プログラム。
【０２８０】
（付記３）前記コンピュータに、
前記ノード間の通信量の和を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
前記判定する処理は、
算出した前記差分が閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする付記１または２に記載の経路制御プログラム。
【０２８１】
（付記４）前記コンピュータに、
複数の時点で前記複数のノードから取得した前記ノード間の通信量に基づいて、前記ノード間の通信量の和の平均値を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和の平均値から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
前記判定する処理は、
算出した前記差分が、前記ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする付記１または２に記載の経路制御プログラム。
【０２８２】
（付記５）前記判定する処理は、
いずれかのノード間の通信量から、所定の時点の前記いずれかのノード間の通信量を減算した差分が閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする付記１または２に記載の経路制御プログラム。
【０２８３】
（付記６）前記変更要求を送信する処理は、
前記オーバレイネットワークのノード間の接続関係を変更する過程で遷移可能なノード間の接続関係の候補が複数あれば、ノード間の接続関係の候補のうち前記オーバレイネットワークにおける通信量の和の低減度合いが相対的に大きい接続関係に遷移するように、前記変更要求を送信する、ことを特徴とする付記１〜５のいずれか一つに記載の経路制御プログラム。
【０２８４】
（付記７）複数のノードのうち第１のノードに、
前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第１のノードから前記複数のノードのうち前記第１のノードとは異なる第２のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
前記第２のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
処理を実行させることを特徴とする経路制御プログラム。
【０２８５】
（付記８）複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
制御部を有することを特徴とする経路制御装置。
【０２８６】
（付記９）複数のノードのうち第１のノードであって、
前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第１のノードから前記複数のノードのうち前記第１のノードとは異なる第２のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
前記第２のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
制御部を有することを特徴とするノード。
【０２８７】
（付記１０）経路制御装置と、複数のノードを含み、
前記経路制御装置は、
前記複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信し、
前記新たに接続されるノードは、
前記追加要求を受け付けたことに応じて、前記データ送信経路に自ノードから自ノードと新たに接続される他のノードへの経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記他のノードへの経路を用いて前記データを送信し、
前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記新たに接続されるノード間を接続し、
前記切断されるノードは、
前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記切断されるノード間を切断すると共に、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外する、
ことを特徴とする経路制御方法。
【符号の説明】
【０２８８】
１００  経路制御装置
２００  経路制御システム
２１０  ネットワーク
３００，４００  バス
３０１，４０１  ＣＰＵ
３０２，４０２  メモリ
３０３，４０３  ネットワークＩ／Ｆ
３０４，４０４  ディスクドライブ
３０５，４０５  ディスク
３０６，４０６  記録媒体Ｉ／Ｆ
３０７，４０７  記録媒体
６００  発行要求
７００  起動要求
８００  オーバレイ接続要求
９００  オーバレイ切断要求
１０００  Ｓｕｂ／Ｐｕｂテーブル
１１００  重複除去テーブル
１２００  データ
１３００  仮サブスクライブ
１４００  リンクの接続要求
１５００  オーバレイ接続通知
１６００  サブスクライブ
１７００  リンクの切断要求
１８００  オーバレイ切断通知
１９００  アンサブスクライブ
２００１  取得部
２００２  判定部
２００３  特定部
２００４  追加部
２００５  変更部
２０１１  受付部
２０１２  第１の通信部
２０１３  第２の通信部
２１１０，２１２０  ノード
２１１１，２１２１  ブローカー部
２１１２，２１２２  オーバレイ部
【図１】
2018074401.tif 000003
【図２】
2018074401.tif 000004
【図３】
2018074401.tif 000005
【図４】
2018074401.tif 000006
【図５】
2018074401.tif 000007
【図６】
2018074401.tif 000008
【図７】
2018074401.tif 000009
【図８】
2018074401.tif 000010
【図９】
2018074401.tif 000011
【図１０】
2018074401.tif 000012
【図１１】
2018074401.tif 000013
【図１２】
2018074401.tif 000014
【図１３】
2018074401.tif 000015
【図１４】
2018074401.tif 000016
【図１５】
2018074401.tif 000017
【図１６】
2018074401.tif 000018
【図１７】
2018074401.tif 000019
【図１８】
2018074401.tif 000020
【図１９】
2018074401.tif 000021
【図２０】
2018074401.tif 000022
【図２１】
2018074401.tif 000023
【図２２】
2018074401.tif 000024
【図２３】
2018074401.tif 000025
【図２４】
2018074401.tif 000026
【図２５】
2018074401.tif 000027
【図２６】
2018074401.tif 000028
【図２７】
2018074401.tif 000029
【図２８】
2018074401.tif 000030
【図２９】
2018074401.tif 000031
【図３０】
2018074401.tif 000032
【図３１】
2018074401.tif 000033
【図３２】
2018074401.tif 000034
【図３３】
2018074401.tif 000035
【図３４】
2018074401.tif 000036
【図３５】
2018074401.tif 000037