JP2018074401A - 経路制御プログラム、経路制御装置、ノードおよび経路制御方法 - Google Patents

経路制御プログラム、経路制御装置、ノードおよび経路制御方法 Download PDF

Info

Publication number
JP2018074401A
JP2018074401A JP2016212591A JP2016212591A JP2018074401A JP 2018074401 A JP2018074401 A JP 2018074401A JP 2016212591 A JP2016212591 A JP 2016212591A JP 2016212591 A JP2016212591 A JP 2016212591A JP 2018074401 A JP2018074401 A JP 2018074401A
Authority
JP
Japan
Prior art keywords
nodes
node
data transmission
route
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016212591A
Other languages
English (en)
Inventor
宏一郎 雨宮
Koichiro Amamiya
宏一郎 雨宮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016212591A priority Critical patent/JP2018074401A/ja
Priority to US15/730,901 priority patent/US20180123942A1/en
Publication of JP2018074401A publication Critical patent/JP2018074401A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】データが届かなくなる期間をなくすこと。【解決手段】経路制御装置100は、複数のノードから取得したデータ送信経路ntにおけるノード間の通信量に基づいて、データ送信経路ntを変更すると判定した場合に、複数のノードのうち接続されるノード間の候補を示す情報を取得する。経路制御装置100は、取得した情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを特定する。経路制御装置100は、新たに接続されるノードに対して、データ送信経路ntへの新たに接続されるノード間を結ぶ仮の経路の追加要求を送信する。経路制御装置100は、仮の経路がデータ送信経路ntに追加された後、新たに接続されるノードと切断されるノードとに対してオーバレイネットワークlnのノード間の接続関係の変更要求を送信する。【選択図】図1

Description

本発明は、経路制御プログラム、経路制御装置、ノードおよび経路制御方法に関する。
従来、複数のブローカー(Broker)を含むオーバレイネットワーク(Overlay Network)を利用し、パブリッシャ(Publisher)からサブスクライバ(Subscriber)にデータ(Notify)を送信するSubscribe/Publishシステム(Sub/Pubシステム)がある。複数のブローカーは、サブスクライバやパブリッシャが移動した結果いずれかのブローカーの通信負担が増大した場合、オーバレイネットワークのブローカー間の接続関係を変更した上でパブリッシャからサブスクライバまでのデータ送信経路を変更することがある。
先行技術としては、例えば、各ノードが同期して保持するリンクステート情報と各ノードが局所的に管理するインターフェース情報を基に任意のインターフェース内に輻輳が発生した場合にアダプティブにリルーティングパスを設定するものがある。また、例えば、現在のルートのネットワーク資源の消費量と迂回ルートのネットワーク資源の消費量とを比較してその差が許容範囲内である場合に現在のルートから迂回ルートへの切替えを実行する技術がある。
特開2000−201182号公報 特開2002−9798号公報
しかしながら、上述した従来技術では、オーバレイネットワークのブローカー間の接続関係を変更するとき、データ送信経路が一時的に分断されてしまうことがあり、パブリッシャからサブスクライバへとデータが届かなくなる期間が生じてしまうことがある。
1つの側面では、本発明は、データが届かなくなる期間をなくすことができる経路制御プログラム、経路制御装置、ノードおよび経路制御方法を提供することを目的とする。
本発明の一側面によれば、複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる経路制御プログラムおよび経路制御装置が提案される。
また、本発明の一側面によれば、複数のノードのうち自ノードにおいて、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記自ノードから前記複数のノードのうち前記自ノードとは異なる他のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する経路制御プログラムおよびノードが提案される。
また、本発明の一側面によれば、経路制御装置と、複数のノードを含み、前記経路制御装置は、前記複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信し、前記新たに接続されるノードは、前記追加要求を受け付けたことに応じて、前記データ送信経路に自ノードから自ノードと新たに接続される他のノードへの経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記他のノードへの経路を用いて前記データを送信し、前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記新たに接続されるノード間を接続し、前記切断されるノードは、前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記切断されるノード間を切断すると共に、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外する経路制御方法が提案される。
本発明の一態様によれば、データが届かなくなる期間をなくすことができるという効果を奏する。
図1は、実施の形態にかかる経路制御方法の一実施例を示す説明図である。 図2は、経路制御システム200の一例を示す説明図である。 図3は、経路制御装置100のハードウェア構成例を示すブロック図である。 図4は、ノードnのハードウェア構成例を示すブロック図である。 図5は、ノード間の通信量を示す情報500の一例を示す説明図である。 図6は、仮サブスクライブ1300の発行要求600の一例を示す説明図である。 図7は、起動/停止要求の一例を示す説明図である。 図8は、オーバレイ接続要求800の一例を示す説明図である。 図9は、オーバレイ切断要求900の一例を示す説明図である。 図10は、Sub/Pubテーブル1000の記憶内容の一例を示す説明図である。 図11は、重複除去テーブル1100の記憶内容の一例を示す説明図である。 図12は、送受信されるデータ1200の一例を示す説明図である。 図13は、仮サブスクライブ1300の一例を示す説明図である。 図14は、リンクの接続要求1400の一例を示す説明図である。 図15は、オーバレイ接続通知1500の一例を示す説明図である。 図16は、サブスクライブ1600の一例を示す説明図である。 図17は、リンクの切断要求1700の一例を示す説明図である。 図18は、オーバレイ切断通知1800の一例を示す説明図である。 図19は、アンサブスクライブ1900の一例を示す説明図である。 図20は、経路制御装置100およびノードnの機能的構成例を示すブロック図である。 図21は、実施例1における経路制御装置100とノードnとの動作の一例を示す説明図である。 図22は、最小全域木を生成する一例を示す説明図である。 図23は、オーバレイネットワークlnのノード間の接続関係の変更順序を決定する一例を示す説明図である。 図24は、図21におけるノードnが有するブロックの具体例を示す説明図である。 図25は、ノードnの状態遷移を示す説明図である。 図26は、経路制御処理手順の一例を示すフローチャートである。 図27は、仮サブスクライブ発行処理手順を示すフローチャートである。 図28は、サブスクライブ受信処理手順を示すフローチャートである。 図29は、サブスクライブ受信処理手順を示すフローチャートである。 図30は、アンサブスクライブ受信処理手順を示すフローチャートである。 図31は、ノーティファイ受信処理手順を示すフローチャートである。 図32は、オーバレイ切断処理手順を示すフローチャートである。 図33は、オーバレイ接続処理手順を示すフローチャートである。 図34は、ノーティファイ切断処理手順を示すフローチャートである。 図35は、ノーティファイ接続処理手順を示すフローチャートである。
以下に、図面を参照して、本発明にかかる経路制御プログラム、経路制御装置、ノードおよび経路制御方法の実施の形態を詳細に説明する。
(実施の形態にかかる経路制御方法の一実施例)
図1は、実施の形態にかかる経路制御方法の一実施例を示す説明図である。図1の例では、基盤ネットワークbnと、経路制御装置100とが存在する。基盤ネットワークbnとは、パブリッシャpと、サブスクライバsと、ブローカーbとを含むネットワークである。基盤ネットワークbnは、パブリッシャpを複数含んでもよい。基盤ネットワークbnは、サブスクライバsを複数含んでもよい。基盤ネットワークbnは、ブローカーbを少なくとも3つ以上含む。
パブリッシャpとは、データを送信するコンピュータである。データは、例えば、ノーティファイである。パブリッシャpは、例えば、移動可能な端末装置である。サブスクライバsとは、データを受信するコンピュータである。サブスクライバsは、例えば、移動可能な端末装置である。ブローカーbとは、データを中継するコンピュータである。ブローカーbは、例えば、ノードである。
また、基盤ネットワークbn上には、オーバレイネットワークlnが形成される。オーバレイネットワークlnとは、パブリッシャpと、サブスクライバsと、ブローカーbとを含むネットワークである。オーバレイネットワークlnは、基盤ネットワークbnの少なくとも一部を利用した、仮想的なネットワークである。
オーバレイネットワークlnは、例えば、ツリー構造であって、オーバレイツリー(Overlay Tree)と呼ばれる。ここでは、オーバレイネットワークlnは、ループを含まない。オーバレイネットワークlnは、基盤ネットワークbnより下位のレイヤにあるネットワークである。オーバレイネットワークlnがあるレイヤは、オーバレイネットワークln構築レイヤと呼ばれる。
さらに、オーバレイネットワークlnを利用して、データ送信経路ntが形成される。データ送信経路ntとは、パブリッシャpと、サブスクライバsと、ブローカーbとを含むネットワークである。データ送信経路ntは、オーバレイネットワークlnの少なくとも一部を利用した、仮想的なネットワークである。
データ送信経路ntは、例えば、ツリー構造であって、ノーティファイツリー(Notify Tree)と呼ばれる。データ送信経路ntは、例えば、1つのパブリッシャpから1つのサブスクライバsまでを繋げる経路、1つのパブリッシャpから複数のサブスクライバsまでを繋げる経路、複数のパブリッシャpと複数のサブスクライバsとを繋げる経路などであってもよい。データ送信経路ntは、オーバレイネットワークlnより下位のレイヤにあるネットワークである。データ送信経路ntがあるレイヤは、ノーティファイツリー構築レイヤと呼ばれる。
データ送信経路ntは、パブリッシャpからサブスクライバsまでデータを送信するためのネットワークである。データ送信経路ntは、サブスクライバsがサブスクライブ(Subscribe)をブローカーbに送信したことに応じて、いくつかのブローカーbがサブスクライブを転送していくことにより形成される。サブスクライブは、サブスクライバsが要求するデータの種類を示す情報である。
経路制御装置100とは、基盤ネットワークbnに含まれる複数のブローカーbと通信可能なコンピュータである。また、経路制御装置100は、オーバレイネットワークlnのブローカー間の接続関係を制御することができる。また、経路制御装置100は、オーバレイネットワークlnとは独立して、データ送信経路ntを制御することができる。
ところで、従来では、サブスクライバsやパブリッシャpが移動した場合などに、いずれかのブローカーbの通信負担が増大してしまうことがある。例えば、サブスクライバsやパブリッシャpが移動すると、オーバレイネットワークln上でサブスクライブやアンサブスクライブ(Unsubscribe)が流れることにより、オーバレイネットワークln上でデータ送信経路ntが変更される。
しかしながら、オーバレイネットワークlnのブローカー間の接続関係を変更していないため、データ送信経路ntを変更してもデータを効率よく送受信することができる経路にならず、いずれかのブローカーbの通信負担が増大してしまうことがある。
これに対し、いずれかのブローカーbの通信負担が増大した場合、オーバレイネットワークlnのブローカー間の接続関係を変更した上で、オーバレイネットワークlnを利用したデータ送信経路ntを変更する場合がある。例えば、複数のブローカーbが、オーバレイネットワークlnのブローカー間の接続関係を変更した上で、オーバレイネットワークlnを利用してサブスクライブやアンサブスクライブを送受信することにより、データ送信経路ntが変更される。
しかしながら、オーバレイネットワークlnのブローカー間の接続関係を変更するとき、オーバレイネットワークln上でブローカー間が切断され、データ送信経路ntが一時的に途切れてしまうことがある。結果として、パブリッシャpからサブスクライバsへとデータが届かなくなる期間が生じてしまうことがある。さらに、データ送信経路ntを変更する過程で、データ送信経路ntから一部の経路が削除された後、データ送信経路ntに同じ経路が追加されることがあり、効率よくデータ送信経路ntを変更することができないことがある。
さらに、ブローカーbが、オーバレイネットワークln上で他のブローカーbと切断したとき、所定の時間待機してからアンサブスクライブを他のブローカーbに送信するようにして、効率よくデータ送信経路ntを変更しようとすることが考えられる。ブローカーbは、所定の時間待機している間に、他のブローカーbからサブスクライブを新たに受信した場合には、アンサブスクライブを送信しないようにする。
しかしながら、オーバレイネットワークlnのブローカー間の接続関係を変更するとき、オーバレイネットワークln上でブローカー間が切断され、データ送信経路ntが一時的に途切れてしまうことがある。結果として、オーバレイネットワークlnのブローカー間の接続関係を変更するとき、パブリッシャpからサブスクライバsへとデータが届かなくなることがある。
このように、オーバレイネットワークlnのブローカー間の接続関係を変更した後に、オーバレイネットワークln上でデータ送信経路ntを変更するという順番ではパブリッシャpからサブスクライバsへとデータが届かなくなる期間が生じてしまうことがある。
そこで、本実施の形態では、オーバレイネットワークlnのブローカー間の接続関係を変更する前に、基盤ネットワークbnを利用してデータ送信経路ntに仮の経路を新たに追加しておくことができる経路制御方法について説明する。かかる経路制御方法によれば、オーバレイネットワークlnのブローカー間の接続関係を変更する際に、パブリッシャpからサブスクライバsへとデータが届かなくなる期間をなくすことができる。
図1の例では、(1−1)経路制御装置100は、複数のノードからデータ送信経路ntにおけるノード間の通信量を取得する。ノードは、例えば、所定の期間単位で、自ノードと直接通信可能な他のノードそれぞれに自ノードから送信したデータ量を計測し、計測した結果を経路制御装置100に送信する。経路制御装置100は、それぞれのノードが計測した結果を、それぞれのノードから受信する。
(1−2)経路制御装置100は、取得したデータ送信経路ntにおけるノード間の通信量に基づいて、データ送信経路ntを変更するか否かを判定する。経路制御装置100は、例えば、現在のデータ送信経路ntにおけるノード間の通信量に基づいて、オーバレイネットワークlnにおけるノード間の通信量をノード間のコストc12〜c34として算出する。そして、経路制御装置100は、ノード間のコストc12〜c34に基づいて、データ送信経路ntを変更するか否かを判定する。
経路制御装置100は、具体的には、ノード間のコストc12〜c34に基づいて、オーバレイネットワークlnのノード間の接続関係を変更した場合におけるノード間の通信量の和を算出する。経路制御装置100は、現在のデータ送信経路ntにおけるノード間の通信量の和から、オーバレイネットワークlnのノード間の接続関係を変更した場合におけるノード間の通信量の和を減算した差分を算出する。経路制御装置100は、算出した差分が閾値以上である場合に、データ送信経路ntを変更すると判定する。
(1−3)経路制御装置100は、データ送信経路ntを変更すると判定した場合に、複数のノードのうち接続されるノード間の候補を示す情報を取得する。当該情報は、例えば、変更可能なオーバレイネットワークlnのノード間の接続関係の候補を示すトポロジ情報である。当該情報は、例えば、オーバレイネットワークlnにおいて接続可能なノード間を示す情報であってもよい。経路制御装置100は、取得した情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを特定する。
経路制御装置100は、例えば、複数の所定のトポロジ情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークlnにおけるノード間の通信量の和が最小になるオーバレイネットワークlnのノード間の接続関係の候補を特定する。そして、経路制御装置100は、特定した候補に基づいて、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを特定する。
(1−4)経路制御装置100は、特定した新たに接続されるノード間に基づいて、新たに接続される2つのノードに対して、データ送信経路ntへの新たに接続されるノード間を結ぶ仮の経路の追加要求を送信する。経路制御装置100は、例えば、オーバレイネットワークlnのノード間の接続関係を変更しなくても、新たに接続されるノード間を結ぶ仮の経路にデータが流れるように、新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ntに追加させる。経路制御装置100は、具体的には、新たに接続される2つのノードを制御し、新たに接続される2つのノードに基盤ネットワークbnを介して互いに仮サブスクライブを送信させ、新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ntに追加させる。仮サブスクライブは、サブスクライブと同様であり、サブスクライバsが要求するデータの種類を示す情報である。
新たに接続される2つのノードは、追加要求を受信し、互いに仮サブスクライブを送信することにより、新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ntに追加する。新たに接続される2つのノードは、仮の経路をデータ送信経路ntに追加した以降は、元のデータ送信経路ntと追加された仮の経路とを用いてデータを送信する。
(1−5)経路制御装置100は、仮の経路がデータ送信経路ntに追加された後、新たに接続されるノード間に基づいて、新たに接続されるノードに対してオーバレイネットワークlnのノード間の接続関係の変更要求を送信する。また、経路制御装置100は、仮の経路がデータ送信経路ntに追加された後、切断されるノード間に基づいて、切断されるノードに対してオーバレイネットワークlnのノード間の接続関係の変更要求を送信する。経路制御装置100は、例えば、新たに接続される2つのノードを制御し、オーバレイネットワークlnにおいて新たに接続されるノード間を接続させる。また、経路制御装置100は、例えば、切断される2つのノードを制御し、オーバレイネットワークlnにおいて切断されるノード間を切断させる。
(1−6)ノードは、変換要求を受信し、新たに接続されるノード間を接続したことに応じて、同じノード間を結ぶ経路をデータ送信経路ntに追加する。また、ノードは、変換要求を受信し、切断されるノード間を切断したことに応じて、同じノード間を結ぶ経路をデータ送信経路ntから除外する。
新たに接続されるノードは、例えば、サブスクライブを送信することにより、新たに接続されるノード間を結ぶ経路をデータ送信経路ntに追加する。切断されるノードは、アンサブスクライブを送信することにより、切断されるノード間を結ぶ経路をデータ送信経路ntから除外する。
これにより、経路制御装置100は、オーバレイネットワークlnのノード間の接続関係の変更中であっても、仮の経路がデータ送信経路ntに追加されているため、データ送信経路ntが途切れることを防止することができる。このため、経路制御装置100は、オーバレイネットワークlnのノード間の接続関係の変更中に、パブリッシャpからサブスクライバsまでデータが届かなくなる期間が生じることを防止することができる。
ここでは、ノードが、所定の期間単位で、自ノードと直接通信可能な他のノードそれぞれに自ノードから送信したデータ量を計測した結果を経路制御装置100に送信する場合について説明したが、これに限らない。例えば、ノードは、所定の期間単位で、自ノードと直接通信可能な他のノードそれぞれに自ノードから送信したデータ量を計測し、計測した結果が所定の条件を満たす場合に、計測した結果を経路制御装置100に送信してもよい。
ここでは、経路制御装置100が、算出した差分が閾値以上である場合に、データ送信経路ntを変更すると判定する場合について説明したが、これに限らない。例えば、経路制御装置100は、オーバレイネットワークlnのノード間の接続関係を変更した場合におけるノード間の通信量の和が閾値以上である場合に、データ送信経路ntを変更すると判定してもよい。また、例えば、経路制御装置100は、オーバレイネットワークlnのノード間の接続関係を変更した場合におけるノード間の通信量のうち最大値が閾値以上である場合に、データ送信経路ntを変更すると判定してもよい。
ここでは、経路制御装置100が、複数の所定のトポロジ情報に基づいて、オーバレイネットワークlnのノード間の接続関係の候補を特定する場合について説明したが、これに限らない。例えば、経路制御装置100は、接続可能なノード間を示す情報に基づいて、ヒューリスティック解法を用いて、ノード間の通信量の和が比較的小さくなるオーバレイネットワークlnのノード間の接続関係の候補を特定してもよい。
ここでは、ノードが、追加要求に応じてサブスクライブを送信した以降、元のデータ送信経路ntと、追加された仮の経路とを用いて、データを送信する場合について説明したが、これに限らない。例えば、ノードは、追加要求に応じてサブスクライブを送信した以降、追加された仮の経路を用いてデータを送信し、元のデータ送信経路ntを用いてデータを送信しなくてもよい。
ここでは、ノードが、オーバレイネットワークlnにおいて新たに接続されるノード間を接続したことに応じて、同じノード間を結ぶ経路をデータ送信経路ntに追加する場合について説明したが、これに限らない。例えば、ノードは、追加要求に応じて追加された仮の経路があるため、オーバレイネットワークlnにおいて新たに接続されるノード間を接続したことに応じて、同じノード間を結ぶ経路をデータ送信経路ntに追加しなくてもよい。
(経路制御システム200の一例)
次に、図2を用いて、図1に示した経路制御装置100を適用した、経路制御システム200の一例について説明する。
図2は、経路制御システム200の一例を示す説明図である。図2において、経路制御システム200は、経路制御装置100と、パブリッシャpになる複数の送信端末ptと、サブスクライバsになる複数の受信端末stと、ブローカーbになる複数のノードnとを含む構成である。
経路制御システム200において、経路制御装置100と、それぞれのノードnとは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
ここで、複数の送信端末ptと、複数の受信端末stと、複数のノードnとが接続されることにより、複数の送信端末ptと、複数の受信端末stと、複数のノードnとを含む基盤ネットワークbnが形成される。基盤ネットワークbnは、IP(Internet Protocol)ネットワークや、イーサネット(Ethernet)ネットワークである。イーサネットは登録商標である。基盤ネットワークbn上では、複数の送信端末ptと、複数の受信端末stと、複数のノードnとを含むオーバレイネットワークlnが形成される。オーバレイネットワークlnは、例えば、ツリー構造であって、オーバレイツリーと呼ばれる。
さらに、オーバレイネットワークlnを利用して、複数の送信端末ptと、複数の受信端末stと、複数のノードnとを含むデータ送信経路ntが形成される。データ送信経路ntは、オーバレイネットワークlnにおいて接続されていないノード間を結ぶ経路を、仮の経路として含むことができる。データ送信経路ntは、例えば、ツリー構造であって、ノーティファイツリーと呼ばれる。
経路制御装置100は、基盤ネットワークbnに含まれる複数のノードnと通信することができる。経路制御装置100は、複数のノードnから、データ送信経路ntにおけるノード間の通信量を示す情報500を取得して記憶することができる。ノード間の通信量を示す情報500の一例は、例えば、図5を用いて後述する。
経路制御装置100は、複数のノードnのうち接続されるノード間の候補を示す情報を記憶することができる。経路制御装置100は、例えば、変更可能なオーバレイネットワークlnのノード間の接続関係の候補を示すトポロジ情報を記憶することができる。経路制御装置100は、例えば、オーバレイネットワークlnにおいて接続可能なノード間を示す情報を記憶してもよい。
経路制御装置100は、それぞれのノードnに対して、それぞれのノードnから仮サブスクライブを送信端末pt方向へのポートを介して発行させる仮サブスクライブの発行要求600を送信することができる。仮サブスクライブの発行要求600の一例は、例えば、図6を用いて後述する。経路制御装置100は、仮サブスクライブの発行要求600を送信した後、それぞれのノードnに対して、同一内容のデータを複数受信した場合にいずれか一つのデータ以外を破棄するようにする重複除去処理を起動させる起動要求700を送信することができる。起動要求700の一例は、例えば、図7を用いて後述する。
経路制御装置100は、それぞれのノードnに対して、オーバレイネットワークlnのノード間の接続関係を変更させる変更要求を送信することができる。変更要求は、例えば、オーバレイネットワークlnにおいてノード間を接続させるオーバレイ接続要求800、またはオーバレイネットワークlnにおいてノード間を切断させるオーバレイ切断要求900である。経路制御装置100は、例えば、それぞれのノードnに対して、オーバレイネットワークlnにおいてノード間を接続させるオーバレイ接続要求800を送信することができる。オーバレイ接続要求800の一例は、例えば、図8を用いて後述する。経路制御装置100は、例えば、それぞれのノードnに対して、オーバレイネットワークlnにおいてノード間を切断させるオーバレイ切断要求900を送信することができる。オーバレイ切断要求900の一例は、例えば、図9を用いて後述する。
ノードnは、他のノードnと接続されるポートを有する。ノードnは、どのポートがどのノードnに接続され、どのポートにどのトピックのデータを送信するかを制御する際に用いられるSub/Pubテーブル1000を記憶することができる。Sub/Pubテーブル1000の記憶内容の一例は、例えば、図10を用いて後述する。また、ノードnは、受信済みのデータを管理する際に用いられる重複除去テーブル1100を記憶することができる。重複除去テーブル1100の記憶内容の一例は、例えば、図11を用いて後述する。
ノードnは、自ノードnが有するポートを介して他のノードnからデータ1200を受信することができ、自ノードnが有するポートを介して他のノードnにデータ1200を送信することができる。送受信されるデータ1200の一例は、図12を用いて後述する。ノードnは、データ送信経路ntにおいて自ノードnと直接通信可能な他のノードnとの間での通信量を計測し、計測した通信量を示す情報を経路制御装置100に送信することができる。計測した通信量を示す情報の一例は、例えば、図5を用いて後述する。
ノードnは、経路制御装置100から仮サブスクライブ1300の発行要求600を受信すると、自ノードnが有するポートのうち送信端末pt方向へのポートを介して、仮サブスクライブ1300を発行することができる。仮サブスクライブ1300の一例は、例えば、図13を用いて後述する。ノードnは、経路制御装置100から重複除去処理の起動要求700を受信すると、重複除去処理を起動して、同一内容のデータ1200を受信した場合には、いずれか一つのデータ1200以外を破棄することができる。
ノードnは、変更要求を受信すると、オーバレイネットワークlnのノード間の接続関係を変更する。ノードnは、例えば、オーバレイ接続要求800を受信すると、他のノードnにオーバレイネットワークlnにおけるリンクの接続要求1400を送信し、他のノードnとリンクを接続する。リンクの接続要求1400の一例は、例えば、図14を用いて後述する。ノードnは、他のノードnとリンクを接続すると、オーバレイ接続通知1500を出力する。オーバレイ接続通知1500の一例は、例えば、図15を用いて後述する。ノードnは、オーバレイ接続通知1500が出力されたことを検出し、他のノードnにサブスクライブ1600を発行することができる。サブスクライブ1600の一例は、例えば、図16を用いて後述する。
ノードnは、例えば、オーバレイ切断要求900を受信すると、他のノードnにオーバレイネットワークlnにおけるリンクの切断要求1700を送信し、他のノードnとのリンクを切断する。リンクの切断要求1700の一例は、例えば、図17を用いて後述する。ノードnは、他のノードnとのリンクを切断すると、オーバレイ切断通知1800を出力する。オーバレイ切断通知1800の一例は、例えば、図18を用いて後述する。ノードnは、オーバレイ切断通知1800が出力されたことを検出し、他のノードnにアンサブスクライブ1900を発行することができる。アンサブスクライブ1900の一例は、例えば、図19を用いて後述する。
図2に示した経路制御システム200は、例えば、センサ類からのセンシングデータなどを収集するシステムに適用することができる。この場合、例えば、送信端末ptはセンサ類である。例えば、受信端末stは、所定の条件を満たすセンシングデータを示す情報をトピックとしてノードnに登録し、所定の条件を満たすセンシングデータを受信する。また、図2に示した経路制御システム200は、例えば、車載装置からの走行情報などを収集するシステムに適用することもできる。この場合、例えば、送信端末ptや受信端末stは車載装置である。
ここでは、パブリッシャpになる端末装置と、サブスクライバsになる端末装置とが別々の装置である場合について説明したが、これに限らない。例えば、パブリッシャpになる端末装置と、サブスクライバsになる端末装置とは、同一の装置であってもよい。
ここでは、経路制御装置100が、送信端末ptや受信端末stやノードnとは異なる装置である場合について説明したが、これに限らない。例えば、経路制御装置100は、いずれかの送信端末ptと一体であってもよい。また、例えば、経路制御装置100は、いずれかの受信端末stと一体であってもよい。また、例えば、経路制御装置100は、いずれかのノードnと一体であってもよい。
(経路制御装置100のハードウェア構成例)
次に、図3を用いて、図2に示した経路制御システム200に含まれる経路制御装置100のハードウェア構成例について説明する。
図3は、経路制御装置100のハードウェア構成例を示すブロック図である。図3では、経路制御装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、ディスクドライブ304と、ディスク305と、記録媒体I/F306とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、経路制御装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータ(例えば、図2に示したノードn)に接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303には、例えば、モデムやLANアダプタなどを採用することができる。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリード/ライトを制御する。ディスクドライブ304は、例えば、磁気ディスクドライブである。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク305は、例えば、磁気ディスク、光ディスクなどである。
記録媒体I/F306は、外部の記録媒体307に接続され、外部の記録媒体307と内部のインターフェースを司り、外部の記録媒体307に対するデータの入出力を制御する。記録媒体I/F306は、例えば、USB(Universal Serial Bus)ポートである。記録媒体307は、例えば、USBメモリである。記録媒体307は、実施の形態にかかる経路制御プログラムを記憶してもよい。
経路制御装置100は、上述した構成部のほか、例えば、SSD(Solid State Drive)、半導体メモリ、キーボード、マウス、ディスプレイなどを有してもよい。また、経路制御装置100は、ディスクドライブ304およびディスク305の代わりに、SSDおよび半導体メモリなどを有してもよい。
(ノードnのハードウェア構成例)
次に、図4を用いて、図2に示した経路制御システム200に含まれるノードnのハードウェア構成例について説明する。
図4は、ノードnのハードウェア構成例を示すブロック図である。図4では、ノードnは、CPU401と、メモリ402と、ネットワークI/F403と、ディスクドライブ404と、ディスク405と、記録媒体I/F406とを有する。また、各構成部は、バス400によってそれぞれ接続される。
ここで、CPU401は、ノードnの全体の制御を司る。メモリ402は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
ネットワークI/F403は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータ(例えば、図2に示した経路制御装置100)に接続される。そして、ネットワークI/F403は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F403には、例えば、モデムやLANアダプタなどを採用することができる。
ディスクドライブ404は、CPU401の制御に従ってディスク405に対するデータのリード/ライトを制御する。ディスクドライブ404は、例えば、磁気ディスクドライブである。ディスク405は、ディスクドライブ404の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク405は、例えば、磁気ディスク、光ディスクなどである。
記録媒体I/F406は、外部の記録媒体407に接続され、外部の記録媒体407と内部のインターフェースを司り、外部の記録媒体407に対するデータの入出力を制御する。記録媒体I/F406は、例えば、USBポートである。記録媒体407は、例えば、USBメモリである。記録媒体407は、実施の形態にかかる経路制御プログラムを記憶してもよい。
ノードnは、上述した構成部のほか、例えば、SSD、半導体メモリ、キーボード、マウス、ディスプレイなどを有してもよい。また、ノードnは、ディスクドライブ404およびディスク405の代わりに、SSDおよび半導体メモリなどを有してもよい。
(ノード間の通信量を示す情報500の一例)
次に、図5を用いて、ノード間の通信量を示す情報500の一例について説明する。
図5は、ノード間の通信量を示す情報500の一例を示す説明図である。ノード間の通信量を示す情報500は、取得Node Addressと、トピックごとの送信元Node Addressと、トピックごとの通信量とのフィールドを有する。
取得Node Addressのフィールドには、通信量を計測したノードnのアドレスが設定される。送信元Node Addressのフィールドには、トピックに属するデータ1200の送信元になるノードnのアドレスが設定される。通信量のフィールドには、トピックに属するデータ1200の通信量が設定される。
(仮サブスクライブ1300の発行要求600の一例)
次に、図6を用いて、仮サブスクライブ1300の発行要求600の一例について説明する。
図6は、仮サブスクライブ1300の発行要求600の一例を示す説明図である。仮サブスクライブ1300の発行要求600は、宛先Node Addressと、発行先Node Addressとのフィールドを有する。
宛先Node Addressのフィールドには、仮サブスクライブ1300の発行要求600の宛先になるノードnのアドレスが設定される。発行先Node Addressのフィールドには、仮サブスクライブ1300の発行先のノードnのアドレスが設定される。
(起動/停止要求の一例)
次に、図7を用いて、起動/停止要求の一例について説明する。
図7は、起動/停止要求の一例を示す説明図である。起動/停止要求は、宛先Node Addressと、On Flagとのフィールドを有する。
宛先Node Addressのフィールドには、起動/停止要求の宛先になるノードnのアドレスが設定される。On Flagのフィールドには、重複除去処理を起動させるか、停止させるかを示すフラグが設定される。TRUEは、起動させることを示す。FALSEは、停止させることを示す。
(オーバレイ接続要求800の一例)
次に、図8を用いて、オーバレイ接続要求800の一例について説明する。
図8は、オーバレイ接続要求800の一例を示す説明図である。オーバレイ接続要求800は、宛先Node Addressと、接続先Node Addressとのフィールドを有する。
宛先Node Addressのフィールドには、オーバレイ接続要求800の発行要求の宛先になるノードnのアドレスが設定される。接続先Node Addressのフィールドには、仮サブスクライブ1300によって追加される新たな経路を形成する、オーバレイ接続要求800の宛先になるノードnとは異なるノードnのアドレスが設定される。
(オーバレイ切断要求900の一例)
次に、図9を用いて、オーバレイ切断要求900の一例について説明する。
図9は、オーバレイ切断要求900の一例を示す説明図である。オーバレイ切断要求900は、宛先Node Addressと、切断先Node Addressとのフィールドを有する。
宛先Node Addressのフィールドには、オーバレイ切断要求900の発行要求の宛先になるノードnのアドレスが設定される。切断先Node Addressのフィールドには、仮サブスクライブ1300によって切断される経路を形成する、オーバレイ切断要求900の宛先になるノードnとは異なるノードnのアドレスが設定される。
(Sub/Pubテーブル1000の記憶内容)
次に、図10を用いて、Sub/Pubテーブル1000の記憶内容の一例について説明する。Sub/Pubテーブル1000は、例えば、図4に示したメモリ402やディスク405などの記憶領域によって実現される。
図10は、Sub/Pubテーブル1000の記憶内容の一例を示す説明図である。Sub/Pubテーブル1000は、Broker Portと、Received Subscribeと、Adjacent Node Addressとのフィールドを有する。Sub/Pubテーブル1000は、ノードnが有するポートごとに各フィールドに情報を設定することにより、データ送信経路ntの接続情報がレコードとして記憶される。
Broker Portのフィールドには、ノードnが有するポートの番号が設定される。Received Subscribeのフィールドには、ポートを介して送信するデータ1200のトピックのトピックIDが設定される。Adjacent Node Addressのフィールドには、ポートを介して接続されたノードnのアドレスが設定される。
(重複除去テーブル1100の記憶内容)
次に、図11を用いて、重複除去テーブル1100の記憶内容の一例について説明する。重複除去テーブル1100は、例えば、図4に示したメモリ402やディスク405などの記憶領域によって実現される。
図11は、重複除去テーブル1100の記憶内容の一例を示す説明図である。重複除去テーブル1100は、Topic IDと、Received MSG IDとのフィールドを有する。重複除去テーブル1100は、受信したデータ1200ごとに各フィールドに情報を設定することにより、受信済みのデータ1200を管理する情報がレコードとして記憶される。
Topic IDのフィールドには、受信したデータ1200が属するトピックのトピックIDが設定される。Received MSG IDのフィールドには、受信したデータ1200を識別するノーティファイIDが設定される。
(送受信されるデータ1200の一例)
次に、図12を用いて、送受信されるデータ1200の一例について説明する。
図12は、送受信されるデータ1200の一例を示す説明図である。送受信されるデータ1200は、宛先Node Addressと、Topic IDと、コンテンツとのフィールドを有する。
宛先Node Addressのフィールドには、データ1200の宛先になるノードnのアドレスが設定される。Topic IDのフィールドには、データ1200が属するトピックのトピックIDが設定される。コンテンツのフィールドには、データ1200の内容が設定される。
(仮サブスクライブ1300の一例)
次に、図13を用いて、仮サブスクライブ1300の一例について説明する。
図13は、仮サブスクライブ1300の一例を示す説明図である。仮サブスクライブ1300は、宛先Node Addressと、Topic IDとのフィールドを有する。
宛先Node Addressのフィールドには、仮サブスクライブ1300の宛先になるノードnのアドレスが設定される。Topic IDのフィールドには、仮サブスクライブ1300の宛先になるノードnから仮サブスクライブ1300の送信元になるノードnに送信することを要求するデータ1200が属するトピックのトピックIDが設定される。
(リンクの接続要求1400の一例)
次に、図14を用いて、リンクの接続要求1400の一例について説明する。
図14は、リンクの接続要求1400の一例を示す説明図である。リンクの接続要求1400は、宛先Node Addressと、接続先Node Addressとのフィールドを有する。
宛先Node Addressのフィールドには、リンクの接続要求1400の宛先になるノードnのアドレスが設定される。接続先Node Addressのフィールドには、リンクの接続要求1400の宛先になるノードnと接続される自ノードnのアドレスが設定される。
(オーバレイ接続通知1500の一例)
次に、図15を用いて、オーバレイ接続通知1500の一例について説明する。
図15は、オーバレイ接続通知1500の一例を示す説明図である。オーバレイ接続通知1500は、接続先Node Addressとのフィールドを有する。
接続先Node Addressのフィールドには、オーバレイネットワークlnにおいて自ノードnと接続された他のノードnのアドレスが設定される。
(サブスクライブ1600の一例)
次に、図16を用いて、サブスクライブ1600の一例について説明する。
図16は、サブスクライブ1600の一例を示す説明図である。サブスクライブ1600は、宛先Node Addressと、Topic IDとのフィールドを有する。
宛先Node Addressのフィールドには、サブスクライブ1600の宛先になるノードnのアドレスが設定される。Topic IDのフィールドには、サブスクライブ1600の宛先になるノードnからサブスクライブ1600の送信元になるノードnに送信することを要求するデータ1200が属するトピックのトピックIDが設定される。
(リンクの切断要求1700の一例)
次に、図17を用いて、リンクの切断要求1700の一例について説明する。
図17は、リンクの切断要求1700の一例を示す説明図である。リンクの切断要求1700は、宛先Node Addressと、切断先Node Addressとのフィールドを有する。
宛先Node Addressのフィールドには、リンクの切断要求1700の宛先になるノードnのアドレスが設定される。切断先Node Addressのフィールドには、リンクの切断要求1700の宛先になるノードnと切断される自ノードnのアドレスが設定される。
(オーバレイ切断通知1800の一例)
次に、図18を用いて、オーバレイ切断通知1800の一例について説明する。
図18は、オーバレイ切断通知1800の一例を示す説明図である。オーバレイ切断通知1800は、切断先Node Addressのフィールドを有する。
切断先Node Addressのフィールドには、オーバレイネットワークlnにおいて自ノードnと切断された他のノードnのアドレスが設定される。
(アンサブスクライブ1900の一例)
次に、図19を用いて、アンサブスクライブ1900の一例について説明する。
図19は、アンサブスクライブ1900の一例を示す説明図である。アンサブスクライブ1900は、宛先Node Addressと、Topic IDとのフィールドを有する。
宛先Node Addressのフィールドには、アンサブスクライブ1900の宛先になるノードnのアドレスが設定される。Topic IDのフィールドには、アンサブスクライブ1900の宛先になるノードnからアンサブスクライブ1900の送信元になるノードnに送信することを停止させるデータ1200が属するトピックのトピックIDが設定される。
(経路制御装置100およびノードnの機能的構成例)
次に、図20を用いて、経路制御装置100およびノードnの機能的構成例について説明する。
図20は、経路制御装置100およびノードnの機能的構成例を示すブロック図である。経路制御装置100は、取得部2001と、判定部2002と、特定部2003と、追加部2004と、変更部2005とを含む。取得部2001〜変更部2005は、例えば、図3に示したメモリ302やディスク305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302やディスク305などの記憶領域に記憶される。
取得部2001は、複数のノードnから、複数のノードnを含むオーバレイネットワークlnを利用したデータ送信経路ntにおけるノード間の通信量を取得する。データ送信経路ntは、例えば、ノーティファイツリーである。取得部2001は、例えば、複数のノードnのそれぞれのノードnが、当該ノードnが有する複数のポートのそれぞれのポートから受信した、トピックごとのデータ1200の通信量を受信する。
これにより、取得部2001は、データ送信経路ntにおいて効率よくデータ1200が送受信されているかを評価し、データ送信経路ntを変更するか否かを判定する際に用いられる情報を取得することができる。
取得部2001は、複数の時点のそれぞれの時点で、複数のノードnから、複数のノードnを含むオーバレイネットワークlnを利用したデータ送信経路ntにおけるノード間の通信量を取得してもよい。取得部2001は、例えば、複数の時点のそれぞれの時点で、複数のノードnのそれぞれのノードnが、当該ノードnが有する複数のポートのそれぞれのポートから受信した、トピックごとのデータ1200の通信量を受信する。
これにより、取得部2001は、データ送信経路ntにおいて効率よくデータ1200が送受信されているかを評価し、データ送信経路ntを変更するか否かを判定する際に用いられる情報を取得することができる。
取得部2001は、いずれかのノード間の通信量から、過去の所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上であることを示す通知を、いずれかのノードnから取得する。
これにより、取得部2001は、データ送信経路ntにおいて効率よくデータ1200が送受信されているかを評価し、データ送信経路ntを変更するか否かを判定する際に用いられる情報を取得することができる。
判定部2002は、複数のノードnから取得部2001が取得した、複数のノードnを含むオーバレイネットワークlnを利用したデータ送信経路ntにおけるノード間の通信量に基づいて、データ送信経路ntを変更するか否かを判定する。
判定部2002は、例えば、ノード間の通信量の和を算出し、複数のノードnのうち接続されるノード間の候補を示す情報に基づいて、データ送信経路ntを変更した場合におけるノード間の通信量の和を算出する。接続されるノード間の候補を示す情報は、例えば、トポロジ情報である。トポロジ情報は、変更可能な、オーバレイネットワークlnのノード間の接続関係の候補を示す情報である。次に、判定部2002は、算出したノード間の通信量の和から、算出したデータ送信経路ntを変更した場合におけるノード間の通信量の和を減算した差分を算出する。そして、判定部2002は、算出した差分が閾値以上である場合に、データ送信経路ntを変更すると判定する。
これにより、判定部2002は、データ送信経路ntを変更した場合に現在よりどのくらいデータ送信経路ntにおける通信量の和が低減されるかを判断することができる。そして、判定部2002は、データ送信経路ntにおける通信量の和が低減される度合いが比較的大きければ、データ送信経路ntを変更した場合に現在より比較的効率よくデータ1200を送受信することが可能であると判断することができる。判定部2002は、データ送信経路ntを変更した場合に現在より比較的効率よくデータ1200を送受信することが可能であれば、データ送信経路ntを変更すると判定することができる。
判定部2002は、例えば、複数の時点で複数のノードnから取得部2001が取得したノード間の通信量に基づいて、ノード間の通信量の和の平均値を算出する。また、判定部2002は、トポロジ情報に基づいて、データ送信経路ntを変更した場合におけるノード間の通信量の和を算出する。次に、判定部2002は、算出したノード間の通信量の和の平均値から、算出したデータ送信経路ntを変更した場合におけるノード間の通信量の和を減算した差分を算出する。そして、判定部2002は、算出した差分が、ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、データ送信経路ntを変更すると判定する。
これにより、判定部2002は、データ送信経路ntを変更した場合に現在よりどのくらいデータ送信経路ntにおける通信量の和が低減されるかを判断することができる。そして、判定部2002は、データ送信経路ntにおける通信量の和が低減される度合いが比較的大きければ、データ送信経路ntを変更した場合に現在より比較的効率よくデータ1200を送受信することが可能であると判断することができる。判定部2002は、データ送信経路ntを変更した場合に現在より比較的効率よくデータ1200を送受信することが可能であれば、データ送信経路ntを変更すると判定することができる。
判定部2002は、例えば、いずれかのノード間の通信量から、所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上である場合に、データ送信経路ntを変更すると判定する。判定部2002は、具体的には、いずれかのノード間の通信量から、所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上であることを示す情報を、取得部2001が取得した場合に、データ送信経路ntを変更すると判定する。
これにより、判定部2002は、データ送信経路ntのいずれかのノード間における通信量が増大しており、データ送信経路ntにおいて効率よくデータ1200を送受信することができていない可能性があることを判断することができる。そして、判定部2002は、データ送信経路ntにおいて効率よくデータ1200を送受信することができていない可能性が比較的大きければ、データ送信経路ntを変更すると判定することができる。
特定部2003は、判定部2002が変更すると判定した場合に、複数のノードnのうち接続されるノード間の候補を示す情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークlnにおいて新たに接続されるノード間を特定する。また、特定部2003は、判定部2002が変更すると判定した場合に、複数のノードnのうち接続されるノード間の候補を示す情報と、取得したノード間の通信量とに基づいて、オーバレイネットワークlnにおいて切断されるノード間を特定する。
特定部2003は、例えば、現在のオーバレイネットワークlnのノード間の接続関係を示す接続行列を生成する。現在のオーバレイネットワークlnのノード間の接続関係は、予め経路制御装置100が記憶しておき適時更新してもよい。現在のオーバレイネットワークlnのノード間の接続関係は、取得部2001が取得した、オーバレイネットワークlnを利用したデータ送信経路ntにおけるノード間の通信量を示す情報に基づいて特定されてもよい。次に、特定部2003は、複数のノードnのうち接続されるノード間の候補を示す情報に基づいて、変更後のオーバレイネットワークlnのノード間の接続関係を示す接続行列を生成する。そして、特定部2003は、生成した2つの接続行列に基づいて、オーバレイネットワークlnにおいて、新たに接続されるノード間と、切断されるノード間とを特定する。
これにより、特定部2003は、データ送信経路ntへの新たに接続されるノード間を結ぶ経路の追加要求を、どのノードnに送信するかを特定することができる。また、特定部2003は、オーバレイネットワークlnのノード間の接続関係の変更要求を、どのノードnに送信するかを特定することができる。
追加部2004は、特定部2003が特定した新たに接続されるノード間に基づいて、新たに接続されるノードnに対してデータ送信経路ntへの新たに接続されるノード間を結ぶ経路の追加要求を送信する。追加要求は、例えば、図6に示した仮サブスクライブ1300の発行要求600である。仮サブスクライブ1300の発行要求600は、具体的には、仮サブスクライブ1300を送信端末pt方向へのポートを介して発行させる要求である。追加部2004は、例えば、新たに接続されるノードnのリンクを形成する一方のノードnに対して仮サブスクライブ1300の発行要求600を送信する。
これにより、追加部2004は、新たに接続されるノードnのリンクを形成する一方のノードnから他方のノードnに対して、仮サブスクライブ1300を発行させることができる。そして、追加部2004は、データ送信経路ntに新たな仮の経路を追加させることができる。
追加部2004は、さらに、新たに接続されるノードnに対して、異なる経路を介して同一内容のデータ1200を重複して受信した場合には、いずれかのデータ1200を破棄させる重複排除要求を送信する。重複排除要求は、例えば、図7に示した重複除去処理を起動させる起動要求700である。追加部2004は、例えば、新たに接続されるノードnに対して起動要求700を送信する。
これにより、追加部2004は、ノードnが同一内容のデータ1200を重複して受信した場合にはいずれか一つのデータ1200以外を破棄させることができ、ノードnから同一内容のデータ1200が重複して転送されることを防止することができる。
変更部2005は、データ送信経路ntに仮の経路が追加された後、新たに接続されるノード間に基づいて、新たに接続されるノードnに対してオーバレイネットワークlnのノード間の接続関係の変更要求を送信する。また、変更部2005は、データ送信経路ntに仮の経路が追加された後、切断されるノード間に基づいて、切断されるノードnに対してオーバレイネットワークlnのノード間の接続関係の変更要求を送信する。変更要求は、例えば、図8に示したオーバレイ接続要求800、または図9に示したオーバレイ切断要求900である。
これにより、変更部2005は、データ送信経路ntから切断されるノード間を結ぶ経路を除外させることができる。そして、変更部2005は、データ送信経路ntから切断されるノード間を結ぶ経路を除外させた結果、異なる経路を介して同一内容のデータ1200が重複して送信されることを防止することができる。
変更部2005は、オーバレイネットワークlnのノード間の接続関係を変更する過程で、ノード間の接続関係の候補のうちオーバレイネットワークlnにおける通信量の和の低減度合いが相対的に大きい接続関係を選んで遷移するように、変更要求を送信する。
これにより、変更部2005は、データ送信経路ntから切断されるノード間を結ぶ経路を除外させることができる。そして、変更部2005は、データ送信経路ntから切断されるノード間を結ぶ経路を除外させた結果、異なる経路を介して同一内容のデータ1200が重複して送信されることを防止することができる。
一方で、ノードnは、受付部2011と、第1の通信部2012と、第2の通信部2013とを含む。受付部2011〜第2の通信部2013は、例えば、図4に示したメモリ402やディスク405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、または、ネットワークI/F403により、その機能を実現する。各機能部の処理結果は、例えば、図4に示したメモリ402やディスク405などの記憶領域に記憶される。
受付部2011は、複数のノードnを含むオーバレイネットワークlnを利用したデータ送信経路ntへの、第1のノードnから複数のノードnのうち第1のノードnとは異なる第2のノードnへの経路の追加要求を受け付ける。第1のノードnは、例えば、自ノードnである。第2のノードnは、自ノードnと直接通信可能な他のノードnである。受付部2011は、例えば、仮サブスクライブ1300の発行要求600を受け付ける。
第1の通信部2012は、受付部2011が追加要求を受け付けたことに応じて、データ送信経路ntに経路を追加する。第1の通信部2012は、例えば、受付部2011が仮サブスクライブ1300の発行要求600を受け付けたことに応じて、仮サブスクライブ1300の発行要求600に含まれる発行先Node Addressを取得する。そして、第1の通信部2012は、取得した発行先Node Addressに基づいて、基盤ネットワークbnを介して仮サブスクライブ1300を発行する。
第1の通信部2012は、仮の経路を追加した後に、第2のノードnを経由させるデータ1200を受け付けた場合、追加した経路を用いてデータ1200を送信する。第1の通信部2012は、さらに、データ送信経路ntに仮の経路を追加した後かつ経路を除外する前に、第2のノードnを経由させるデータ1200を受け付けた場合、データ送信経路ntのうち仮の経路以外の他の経路を用いてデータ1200を送信してもよい。
これにより、第1の通信部2012は、データ送信経路ntに仮の経路を追加することができる。第1の通信部2012は、データ送信経路ntからいずれかの経路を除外した際にも、仮の経路を介してデータ1200を送受信可能な状態にすることができ、パブリッシャpからサブスクライバsへとデータ1200が届かなくなる期間をなくすことができる。
第2の通信部2013は、受付部2011が変更要求を受け付けたことに応じて、オーバレイネットワークlnにおいて新たに接続されるノード間を接続する。第2の通信部2013は、例えば、受付部2011がオーバレイ接続要求800を受け付けたことに応じて、オーバレイ接続要求800に含まれる接続先Node Addressを取得する。そして、第2の通信部2013は、取得した接続先Node Addressに基づいて、オーバレイネットワークlnにおけるリンクの接続要求1400を送信する。
第2の通信部2013は、変更要求を受け付けたことに応じて、オーバレイネットワークlnにおいて切断されるノード間を切断すると共に、データ送信経路ntから切断されるノード間を結ぶ経路を除外する。第2の通信部2013は、例えば、受付部2011がオーバレイ切断要求900を受け付けたことに応じて、オーバレイ切断要求900に含まれる切断先Node Addressを取得する。そして、第2の通信部2013は、取得した切断先Node Addressに基づいて、オーバレイネットワークlnにおけるリンクの切断要求1700を送信する。
これにより、第2の通信部2013は、データ送信経路ntに含まれる経路が、オーバレイネットワークlnにおいて接続中のノード間を結ぶ経路になるようにすることができる。このため、第2の通信部2013は、以降にデータ送信経路ntを変更しようとした場合に、オーバレイネットワークln上で未接続のノード間を結ぶ経路を追加してループが形成されることを防止することができる。
(実施例1)
次に、図21を用いて、実施例1における経路制御装置100とノードnとの動作について説明する。
図21は、実施例1における経路制御装置100とノードnとの動作の一例を示す説明図である。図21の例は、経路制御装置100とノード2110とノード2120とが通信可能であって、ノード2110とノード2120とが接続され、または、ノード2110とノード2120とが切断される場合についての例である。
ノード2110は、ブローカー部2111と、オーバレイ部2112とを有する。ブローカー部2111は、データ送信経路ntを制御し、または、データ送信経路ntを介したデータ1200の送受信を制御するブロックである。オーバレイ部2112は、オーバレイネットワークln上のノード間の接続関係を制御するブロックである。ノード2120は、同様に、ブローカー部2121と、オーバレイ部2122とを有する。
(21−1)ノード2120において、ブローカー部2121は、データ1200の送信元ごとに、所定の期間単位でデータ1200の通信量を計測し、計測した結果を経路制御装置100に送信する。ブローカー部2121は、例えば、所定の期間単位で、ノード2110から受信するデータ1200について通信量を計測し、計測した通信量を示す情報を経路制御装置100に送信する。経路制御装置100は、それぞれのノードnから、送信元ごとのデータ1200の通信量を受信して記憶する。これにより、経路制御装置100は、データ送信経路ntを変更するか否かを判定する際に用いられる情報を記憶することができる。
ここでは、ブローカー部2121が、通信量Xを計測する都度、通信量Xを経路制御装置100に送信する場合について説明したが、これに限らない。例えば、ブローカー部2121は、計測した通信量Xに基づいて、計測した通信量Xを経路制御装置100に送信するか否かを判定する場合があってもよい。
具体的には、ブローカー部2121は、計測した通信量Xを、過去のいずれかの期間における通信量Yから減算した差分Y−Xを算出する。そして、ブローカー部2121は、算出した差分Y−Xが閾値以上である場合に、データ送信経路ntを変更することが好ましいため、経路制御装置100に計測した通信量Xを送信する。
この場合、経路制御装置100は、ブローカー部2121から通信量Xを受信したことに応じて、それぞれのノードnのブローカー部に送信元ごとのデータ1200の通信量を要求する。そして、経路制御装置100は、それぞれのノードnのブローカー部から送信元ごとのデータ1200の通信量を収集して記憶する。これにより、ブローカー部2121は、経路制御装置100との通信量を低減し、消費電力を抑制することができる。
そして、経路制御装置100は、タイマーがタイムアウトする都度、オーバレイネットワークlnのトポロジ情報と、記憶した送信元ごとのデータ1200の通信量とに基づいて、通信量行列を生成する。経路制御装置100は、生成した通信量行列に基づいて、通信量の和が最小になる全域木を生成する。全域木とは、ループを形成しないネットワークである。以下の説明では、通信量の和が最小になる全域木を「最小全域木」と表記する場合がある。
経路制御装置100は、最小全域木を生成すると、現在のオーバレイネットワークlnにおけるノード間の通信量の和から、最小全域木に対応するオーバレイネットワークlnにおけるノード間の通信量の和を減算した差分を算出する。そして、経路制御装置100は、算出した差分に基づいて、データ送信経路ntを変更するか否かを判定する。経路制御装置100は、例えば、算出した差分が閾値より大きければ、データ送信経路ntを変更すると判定する。
また、経路制御装置100は、閾値を可変にしてもよい。経路制御装置100は、例えば、過去の期間Tにおける、ノード間の通信量の和の平均値λbと標準偏差σbとを算出する。次に、経路制御装置100は、最小全域木に対応するオーバレイネットワークlnにおけるノード間の通信量の和λaを算出する。そして、経路制御装置100は、閾値としてN×σbを採用し、λb−λa>N×σbである場合に、データ送信経路ntを変更すると判定する。
経路制御装置100は、データ送信経路ntを変更すると判定した場合、現在のオーバレイネットワークlnを示す全域木に対応する接続行列と、最小全域木に対応する接続行列とを生成する。そして、経路制御装置100は、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを特定する。ここで、図22の説明に移行し、最小全域木を生成する一例や、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを決定する一例について説明する。
図22は、最小全域木を生成する一例を示す説明図である。図22において、経路制御装置100は、現在のオーバレイネットワークlnを示す全域木に対応する接続行列Bを生成し、生成した接続行列Bに基づいて通信量行列Tを生成する。そして、経路制御装置100は、通信量行列Tに基づいて、最小全域木を生成する。
経路制御装置100は、例えば、総当たり法を用いて最小全域木を生成する。(i)経
路制御装置100は、具体的には、最小全域木の候補におけるノード間の通信量の和を、擬似的に∞に設定する。(ii)経路制御装置100は、作成可能な全域木のいずれかを選
択する。(iii)経路制御装置100は、通信量行列Tに基づいて、選択した全域木におけ
るノード間の通信量の和を算出する。(iv)経路制御装置100は、最小全域木の候補に
おけるノード間の通信量の和と、選択した全域木におけるノード間の通信量の和とを比較する。
(v)経路制御装置100は、選択した全域木におけるノード間の通信量の和の方が小
さければ、選択した全域木を最小全域木の候補として設定する。(vi)経路制御装置10
0は、選択した全域木におけるノード間の通信量の和を、最小全域木の候補におけるノード間の通信量の和として設定する。(vii)経路制御装置100は、作成可能な全域木のす
べてについて、(ii)〜(vi)を繰り返した後、最小全域木の候補として設定された全域
木を、最小全域木として採用する。
また、経路制御装置100は、例えば、ヒューリスティック解法を用いて最小全域木を計算してもよい。ヒューリスティック解法は、例えば、クラスカル法やプリム法である。経路制御装置100は、具体的には、通信量行列Tに基づいて、ノード間の通信量の逆数に所定の計数を乗算した値を、ノード間のリンクのコストとして設定する。換言すれば、経路制御装置100は、ノード間の通信量が大きいほど、小さい値をコストとして設定する。次に、経路制御装置100は、ノード間のリンクのうち最小コストのリンクを選択して接続する処理を、全域木が作成されるまで繰り返す。そして、経路制御装置100は、作成された全域木を、最小全域木として設定する。
経路制御装置100は、最小全域木を設定すると、現在のオーバレイネットワークlnにおけるノード間の通信量の和から、最小全域木に対応するオーバレイネットワークlnにおけるノード間の通信量の和を減算した差分を算出する。そして、経路制御装置100は、算出した差分に基づいて、データ送信経路ntを変更するか否かを判定する。経路制御装置100は、例えば、算出した差分が閾値より大きければ、データ送信経路ntを変更すると判定する。
経路制御装置100は、最小全域木に対応する接続行列Bを生成する。次に、経路制御装置100は、接続行列A−接続行列Bの演算結果の行列に基づいて、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを特定する。経路制御装置100は、例えば、演算結果の行列の「−1」の要素に対応するノード間を切断されるノード間として特定する。また、経路制御装置100は、例えば、演算結果の行列の「1」の要素に対応するノード間を新たに接続されるノード間として特定する。
経路制御装置100は、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを特定すると、オーバレイネットワークlnのノード間の接続関係の変更順序を決定する。ここで、図23の説明に移行し、オーバレイネットワークlnのノード間の接続関係の変更順序を決定する一例について説明する。
図23は、オーバレイネットワークlnのノード間の接続関係の変更順序を決定する一例を示す説明図である。図23のように、現在のオーバレイネットワークlnのノード間の接続関係から、変更後のオーバレイネットワークlnのノード間の接続関係に遷移する過程において、中間状態が複数ある場合がある。図23の例では、中間状態2301〜2303が存在する。
この場合、経路制御装置100は、それぞれの中間状態におけるオーバレイネットワークlnのノード間の通信量の和を算出する。そして、経路制御装置100は、現在のオーバレイネットワークlnのノード間の通信量の和からの低減度合いが最も大きくなる中間状態を選択して、選択した中間状態に遷移するようにノード間を接続または切断する順序を決定する。
図23の例では、経路制御装置100は、中間状態2301〜2303のそれぞれについて通信量の和Tr(1)〜Tr(3)を算出する。そして、経路制御装置100は、現在のオーバレイネットワークlnのノード間の通信量の和Tr(B)と、中間状態2301〜2303のそれぞれについて通信量の和Tr(1)〜Tr(3)との差分を算出する。経路制御装置100は、算出した差分が最も大きい中間状態を選択して、選択した中間状態に遷移するようにノード間を接続または切断する順序を決定する。
図21の説明に戻り、(21−2)経路制御装置100は、新たに接続されるノードnのうち、受信端末stに近い方にあるノードnに対して、仮サブスクライブ1300の発行要求600を送信する。図21の例では、経路制御装置100は、ノード2110に対して、接続先としてノード2120を示す情報を含む仮サブスクライブ1300の発行要求600を送信する。
(21−3)ノード2110において、ブローカー部2111は、経路制御装置100から仮サブスクライブ1300の発行要求600を受信する。ブローカー部2111は、仮サブスクライブ1300の発行要求600に基づいて、ノード2120に仮サブスクライブ1300を発行する。これにより、ブローカー部2111は、第2のブローカーbから第1のブローカーbへの仮の経路を、データ送信経路ntに追加することができる。
(21−4)経路制御装置100は、さらに、ノード2110に対して、重複除去処理の起動要求700を送信する。ノード2110において、ブローカー部2111は、重複除去処理の起動要求700を受信する。ブローカー部2111は、起動要求700に応じて、重複除去処理を起動する。これにより、ブローカー部2111は、異なる経路を介して同一内容のデータ1200を重複して受信した場合に、同一内容のデータ1200を重複して転送してしまうことを防止することができる。
(21−5)ノード2120において、ブローカー部2121は、追加された仮の経路を用いて、ノード2110に対して、データ1200を送信する。また、ブローカー部2121は、追加された仮の経路以外の経路を用いて、他のノードnを経由してノード2110に対して、同一内容のデータ1200を送信する。ノード2110において、ブローカー部2111は、重複除去処理を起動しているため、同一内容のデータ1200を受信しても重複して転送しなくてよくなる。
これにより、ブローカー部2121は、オーバレイネットワークlnのノード間の接続関係の変更中に、追加された仮の経路以外の経路が削除された状態になっても、ノード2110へデータ1200を送信し続けることができる。このため、ブローカー部2121は、ブローカー部2111へデータ1200が届かなくなる期間をなくすことができる。
(21−6)経路制御装置100は、新たに接続されるノードnと切断されるノードnとに対してオーバレイネットワークlnのノード間の接続関係の変更要求を送信する。変更要求は、例えば、オーバレイ接続要求800やオーバレイ切断要求900である。図21の例では、経路制御装置100は、ノード2110に対して、接続先としてノード2120を示す情報を含むオーバレイ接続要求800を送信する。
(21−7)ノード2110において、オーバレイ部2112は、オーバレイ接続要求800を受信する。オーバレイ部2112は、オーバレイ接続要求800に基づいて、ノード2120に対して、オーバレイネットワークlnにおけるリンクの接続要求1400を送信する。ノード2120において、オーバレイ部2122は、リンクの接続要求1400を受信すると、ノード2110とノード2120とのリンクが確立する。
(21−8)ノード2110において、オーバレイ部2112は、ノード2110とノード2120とのリンクが確立すると、オーバレイ接続通知1500をブローカー部2111に送信する。
(21−9)ノード2110において、ブローカー部2111は、オーバレイ接続通知1500を受信すると、オーバレイネットワークlnにおけるリンクの接続に合わせて、ノード2120にサブスクライブ1600を送信する。これにより、ノード2110は、ノード2120との間を結ぶ経路を、データ送信経路ntに追加して、仮の経路を上書きすることができる。ここで、ノード2110は、仮の経路があるため、サブスクライブ1600の送信を省略してもよい。
ここで、図21を用いて、経路制御装置100が、切断されるノードnに対してオーバレイネットワークlnのノード間の接続関係の変更要求を送信する場合についても説明する。以下では、ノード2110とノード2120との間が切断されるとする。
(21−10)ノード2110において、オーバレイ部2112は、オーバレイ切断要求900を受信する。オーバレイ部2112は、オーバレイ切断要求900に基づいて、ノード2120に対して、オーバレイネットワークlnにおけるリンクの切断要求1700を送信する。ノード2120において、オーバレイ部2122は、リンクの切断要求1700を受信すると、ノード2110とノード2120とのリンクを切断する。
(21−11)ノード2110において、オーバレイ部2112は、ノード2110とノード2120とのリンクが切断されると、オーバレイ切断通知1800をブローカー部2111に送信する。
(21−12)ノード2110において、ブローカー部2111は、オーバレイ切断通知1800を受信すると、オーバレイネットワークlnにおけるリンクの切断に合わせて、ノード2120にアンサブスクライブ1900を送信する。これにより、ノード2110は、ノード2120との間を結ぶ経路を、データ送信経路ntから削除することができる。ここで、図24の説明に移行する。
図24は、図21におけるノードnが有するブロックの具体例を示す説明図である。図24に示すように、ノードnは、ブローカー部として、ノーティファイツリー通信計測部2401と、仮ノーティファイツリー構築部2402と、重複除去処理部2403と、パブリッシュ・ノーティファイ処理部2404とを有する。また、ノードnは、オーバレイ部として、オーバレイネットワーク構築部2405を有する。また、ノードnは、ブローカー部として、オーバレイ接続/切断検知部2406と、サブスクライブ・アンサブスクライブ処理部2407とを有する。
ノーティファイツリー通信計測部2401は、送信元ごとのデータ1200の通信量を計測し、経路制御装置100に送信するブロックである。仮ノーティファイツリー構築部2402は、経路制御装置100から仮サブスクライブ1300の発行要求600を受信し、仮サブスクライブ1300を発行するブロックである。仮ノーティファイツリー構築部2402は、経路制御装置100から重複除去処理の起動要求700を受信し、重複除去処理部2403を起動するブロックである。
重複除去処理部2403は、重複除去処理を実行し、パブリッシュ・ノーティファイ処理部2404を制御するブロックである。パブリッシュ・ノーティファイ処理部2404は、他のノードnに対するパブリッシュやデータ1200の送受信を制御するブロックである。パブリッシュ・ノーティファイ処理部2404は、同一内容のデータ1200を重複して受信した場合、重複除去処理部2403の制御にしたがっていずれかのデータ1200を破棄するブロックである。
オーバレイネットワーク構築部2405は、経路制御装置100からオーバレイ接続要求800を受信し、オーバレイネットワークlnのリンクの接続要求1400を送信し、オーバレイネットワークlnを変更するブロックである。オーバレイネットワーク構築部2405は、経路制御装置100からオーバレイ切断要求900を受信し、オーバレイネットワークlnのリンクの切断要求1700を送信し、オーバレイネットワークlnを変更するブロックである。オーバレイネットワーク構築部2405は、オーバレイネットワークlnにおいて他のノードnと接続または切断されると、オーバレイ接続通知1500またはオーバレイ切断通知1800を、オーバレイ接続/切断検知部2406に送信するブロックである。
オーバレイ接続/切断検知部2406は、オーバレイネットワークlnにおける他のノードnとの接続/切断を検知し、サブスクライブ・アンサブスクライブ処理部2407を制御するブロックである。オーバレイ接続/切断検知部2406は、オーバレイネットワーク構築部2405からオーバレイ接続通知1500やオーバレイ切断通知1800を受信し、サブスクライブ・アンサブスクライブ処理部2407を制御するブロックである。
サブスクライブ・アンサブスクライブ処理部2407は、オーバレイ接続/切断検知部2406の制御にしたがって、データ送信経路ntを変更するブロックである。サブスクライブ・アンサブスクライブ処理部2407は、例えば、オーバレイネットワークlnにおいて他のノードnと接続または切断されたことに合わせて、サブスクライブ1600またはアンサブスクライブ1900を他のノードnに送信するブロックである。ここで、図25の説明に移行する。
図25は、ノードnの状態遷移を示す説明図である。図25に示すように、ノードnは、初期状態2501から、隣接する他のノードnとのオーバレイネットワークlnにおけるリンクを接続すると、接続状態2502に移行する。隣接する他のノードnとは、ノードnの通信圏内に存在するノードnである。
ノードnは、接続状態2502から、サブスクライブ1600を送信すると、データ1200の受信を待つ受信待機状態2503に移行する。ノードnは、受信待機状態2503においてアンサブスクライブ1900を送信すると、接続状態2502に戻る。ノードnは、受信待機状態2503においてオーバレイネットワークlnにおけるリンクが切断されると、オーバレイネットワークlnを介さずデータ1200の受信を待つオーバレイなしの受信待機状態2504に移行する。ノードnは、オーバレイなしの受信待機状態2504から初期状態2501に戻る。
ノードnは、接続状態2502から、サブスクライブ1600を受信すると、データ1200の送信を待つ送信待機状態2505に移行する。ノードnは、送信待機状態2505においてアンサブスクライブ1900を受信すると、接続状態2502に戻る。ノードnは、送信待機状態2505においてオーバレイネットワークlnにおけるリンクが切断されると、オーバレイネットワークlnを介さずデータ1200の送信を待つオーバレイなしの送信待機状態2506に移行する。ノードnは、オーバレイなしの送信待機状態2506においてアンサブスクライブ1900を上流に送信し、初期状態2501に戻る。
ノードnは、初期状態2501において、仮サブスクライブ1300を送信すると、オーバレイネットワークlnを介さずデータ1200の受信を待つオーバレイなしの仮受信待機状態2507に移行する。ノードnは、オーバレイなしの仮受信待機状態2507において、オーバレイネットワークlnのリンクが接続されると、オーバレイネットワークlnを介してデータ1200の受信を待つ仮受信待機状態2508に移行する。ノードnは、仮受信待機状態2508において、サブスクライブ1600を送信すると、受信待機状態2503に移行する。
ノードnは、初期状態2501において、仮サブスクライブ1300を受信すると、オーバレイネットワークlnを介さずデータ1200の送信を待つオーバレイなしの仮送信待機状態2509に移行する。ノードnは、オーバレイなしの仮送信待機状態2509において、オーバレイネットワークlnのリンクが接続されると、オーバレイネットワークlnを介してデータ1200の送信を待つ仮送信待機状態2510に移行する。ノードnは、仮送信待機状態2510において、サブスクライブ1600を受信すると、送信待機状態2505に移行する。
(経路制御処理手順)
次に、図26を用いて、経路制御処理手順の一例について説明する。
図26は、経路制御処理手順の一例を示すフローチャートである。図26において、経路制御装置100は、タイマーがタイムアウトしたか否かを判定する(ステップS2601)。ここで、タイムアウトしていない場合(ステップS2601:No)、経路制御装置100は、ステップS2601の処理に戻る。
一方で、タイムアウトした場合(ステップS2601:Yes)、経路制御装置100は、ノーティファイツリーにおけるノード間の通信量を取得し、現在のオーバレイネットワークlnの接続行列を示すマトリクスを生成する(ステップS2602)。次に、経路制御装置100は、ノード間の通信量の和が最小になる新たなオーバレイネットワークlnの接続行列を示すマトリクスを生成する(ステップS2603)。
そして、経路制御装置100は、現在のオーバレイネットワークlnにおけるノード間の通信量の和から、新たなオーバレイネットワークlnにおけるノード間の通信量の和を減算した差分が閾値より大きいか否かを判定する(ステップS2604)。ここで、閾値以下である場合(ステップS2604:No)、経路制御装置100は、ステップS2601の処理に戻る。
一方で、閾値より大きい場合(ステップS2604:Yes)、経路制御装置100は、2つのマトリクスに基づいて、オーバレイネットワークlnにおいて新たに接続される接続対象のリンクと切断される切断対象のリンクとを特定する(ステップS2605)。次に、経路制御装置100は、現在のオーバレイネットワークlnから新たなオーバレイネットワークlnまで変更する過程について、ループを形成せずにリンクを接続または切断する順序を決定する(ステップS2606)。
そして、経路制御装置100は、決定した順序に基づいて、接続対象のリンクと切断対象のリンクとのペアを選択する(ステップS2607)。次に、経路制御装置100は、選択した接続対象のリンクを形成するノードnのうち一方のノードnに、ノーティファイツリーにおいて他方のノードnへのリンクを接続させる仮サブスクライブ1300の発行要求600を送信する(ステップS2608)。
また、経路制御装置100は、選択した接続対象のリンクを形成するノードnのうち他方のノードnに、ノーティファイツリーにおいて一方のノードnへのリンクを接続させる仮サブスクライブ1300の発行要求600を送信する(ステップS2609)。そして、経路制御装置100は、接続対象のリンクを形成するノードnに、重複除去処理の起動要求700を送信する(ステップS2610)。
次に、経路制御装置100は、接続対象のリンクを形成するノードnに、接続対象のリンクを接続させるオーバレイ接続要求800を送信する(ステップS2611)。そして、経路制御装置100は、接続対象のリンクが接続されたか否かを判定する(ステップS2612)。ここで、接続されていない場合(ステップS2612:No)、経路制御装置100は、ステップS2612の処理に戻る。
一方で、接続された場合(ステップS2612:Yes)、経路制御装置100は、切断対象のリンクを形成するノードnに、切断対象のリンクを切断させるオーバレイ切断要求900を送信する(ステップS2613)。次に、経路制御装置100は、接続対象のリンクと切断対象のリンクとのうち、すべてのリンクを選択したか否かを判定する(ステップS2614)。ここで、選択していないリンクがある場合(ステップS2614:No)、経路制御装置100は、ステップS2607の処理に戻る。
一方で、すべてのリンクを選択した場合(ステップS2614:Yes)、経路制御装置100は、経路制御処理を終了する。
(仮サブスクライブ発行処理手順)
次に、図27を用いて、仮サブスクライブ発行処理手順の一例について説明する。
図27は、仮サブスクライブ発行処理手順を示すフローチャートである。図27において、ノードnは、ノーティファイツリーにおいて自ノードnから他のノードnへのリンクを接続する仮サブスクライブ1300の発行要求600を受け付ける(ステップS2701)。
次に、ノードnは、Sub/Pubテーブル1000に基づいて、いずれかのポートに対応付けて接続先になる他のノードnのアドレスが登録済みであるか否かを判定する(ステップS2702)。ここで、登録済みである場合(ステップS2702:Yes)、ノードnは、ステップS2704の処理に移行する。
一方で、登録済みではない場合(ステップS2702:No)、ノードnは、接続先になる他のノードnのアドレスを対応付けたレコードを、Sub/Pubテーブル1000に登録する(ステップS2703)。そして、ノードnは、Sub/Pubテーブル1000に登録済みのトピックのうち、接続先になる他のノードnに送信する仮サブスクライブ1300に含めるトピックを特定する(ステップS2704)。
次に、ノードnは、特定したトピックのうち、いずれかのトピックを選択する(ステップS2705)。そして、ノードnは、選択したトピックが、接続先になる他のノードnから過去に受信済みのサブスクライブ1600に含まれるトピックと同一であるか否かを判定する(ステップS2706)。ここで、同一である場合(ステップS2706:Yes)、ノードnは、ステップS2708の処理に移行する。
一方で、同一ではない場合(ステップS2706:No)、ノードnは、選択したトピックと自ノードnのアドレスとを含む仮サブスクライブ1300を、接続先になる他のノードnに送信する(ステップS2707)。そして、ノードnは、すべてのトピックを選択したか否かを判定する(ステップS2708)。ここで、選択していないトピックがある場合(ステップS2708:No)、ノードnは、ステップS2705の処理に戻る。
一方で、すべてのトピックを選択した場合(ステップS2708:Yes)、ノードnは、仮サブスクライブ発行処理を終了する。
(サブスクライブ受信処理手順)
次に、図28を用いて、サブスクライブ受信処理手順の一例について説明する。
図28は、サブスクライブ受信処理手順を示すフローチャートである。図28において、ノードnは、トピックとノードnのアドレスとを含む仮サブスクライブ1300を受信する(ステップS2801)。
次に、ノードnは、Sub/Pubテーブル1000に、仮サブスクライブ1300を受信したポートに対応付けて、仮サブスクライブ1300に含まれる接続先になるノードnのアドレスが登録済みであるか否かを判定する(ステップS2802)。ここで、登録済みである場合(ステップS2802:Yes)、ノードnは、ステップS2804の処理に移行する。
一方で、登録済みでない場合(ステップS2802:No)、ノードnは、仮サブスクライブ1300を受信したポートと、接続先になるノードnのアドレスとが対応付けられたレコードを、Sub/Pubテーブル1000に登録する(ステップS2803)。
次に、ノードnは、仮サブスクライブ1300を受信したポートに対応付けて、仮サブスクライブ1300に含まれるトピックをSub/Pubテーブル1000に登録する(ステップS2804)。そして、ノードnは、サブスクライブ1600を受信したポート以外のポートに対応付けてトピックが登録済みであるか否かを判定する(ステップS2805)。ここで、トピックが登録済みである場合(ステップS2805:Yes)、ノードnは、サブスクライブ受信処理を終了する。
一方で、トピックが登録済みではない場合(ステップS2805:No)、ノードnは、仮サブスクライブ1300を受信したポート以外のポートを特定する(ステップS2806)。次に、ノードnは、特定したポートのうち、いずれかのポートを選択する(ステップS2807)。そして、ノードnは、選択したポートから、トピックと自ノードnのアドレスとを含むサブスクライブ1600を送信する(ステップS2808)。
次に、ノードnは、すべてのポートを選択したか否かを判定する(ステップS2809)。ここで、選択していないポートがある場合(ステップS2809:No)、ノードnは、ステップS2807の処理に戻る。
一方で、すべてのポートを選択した場合(ステップS2809:Yes)、ノードnは、サブスクライブ受信処理を終了する。
(サブスクライブ受信処理手順)
次に、図29を用いて、サブスクライブ受信処理手順の一例について説明する。
図29は、サブスクライブ受信処理手順を示すフローチャートである。図29において、ノードnは、トピックとノードnのアドレスとを含むサブスクライブ1600を受信する(ステップS2901)。次に、ノードnは、トピックとノードnのアドレスとを対応付けたレコードをSub/Pubテーブル1000に登録する(ステップS2902)。
そして、ノードnは、サブスクライブ1600を受信したポート以外のポートについてトピックが登録済みであるか否かを判定する(ステップS2903)。ここで、トピックが登録済みである場合(ステップS2903:Yes)、ノードnは、サブスクライブ受信処理を終了する。
一方で、トピックが登録済みではない場合(ステップS2903:No)、ノードnは、サブスクライブ1600を受信したポート以外のポートを特定する(ステップS2904)。次に、ノードnは、特定したポートのうち、いずれかのポートを選択する(ステップS2905)。そして、ノードnは、選択したポートから、トピックと自ノードnのアドレスとを含むサブスクライブ1600を送信する(ステップS2906)。
次に、ノードnは、すべてのポートを選択したか否かを判定する(ステップS2907)。ここで、選択していないポートがある場合(ステップS2907:No)、ノードnは、ステップS2905の処理に戻る。
一方で、すべてのポートを選択した場合(ステップS2907:Yes)、ノードnは、サブスクライブ受信処理を終了する。
(アンサブスクライブ受信処理手順)
次に、図30を用いて、アンサブスクライブ受信処理手順の一例について説明する。
図30は、アンサブスクライブ受信処理手順を示すフローチャートである。図30において、ノードnは、トピックとノードnのアドレスとを含むアンサブスクライブ1900を受信する(ステップS3001)。次に、ノードnは、Sub/Pubテーブル1000のうち、アンサブスクライブ1900に含まれるトピックとノードnのアドレスとを対応付けたレコードを削除する(ステップS3002)。
そして、ノードnは、アンサブスクライブ1900を受信したポート以外のポートのうち、アンサブスクライブ1900に含まれるトピックに対応付けて、Sub/Pubテーブル1000に登録されたポートがあるか否かを判定する(ステップS3003)。ここで、ポートがない場合(ステップS3003:No)、ノードnは、アンサブスクライブ受信処理を終了する。
一方で、ポートがある場合(ステップS3003:Yes)、ノードnは、アンサブスクライブ1900を受信したポート以外のポートを特定する(ステップS3004)。次に、ノードnは、特定したポートのうち、いずれかのポートを選択する(ステップS3005)。そして、ノードnは、選択したポートから、トピックと自ノードnのアドレスとを含むアンサブスクライブ1900を送信する(ステップS3006)。
次に、ノードnは、すべてのポートを選択したか否かを判定する(ステップS3007)。ここで、選択していないポートがある場合(ステップS3007:No)、ノードnは、ステップS3005の処理に戻る。
一方で、すべてのポートを選択した場合(ステップS3007:Yes)、ノードnは、アンサブスクライブ受信処理を終了する。
(ノーティファイ受信処理手順)
次に、図31を用いて、ノーティファイ受信処理手順の一例について説明する。
図31は、ノーティファイ受信処理手順を示すフローチャートである。図31において、ノードnは、トピックと、ノーティファイIDと、ノーティファイの送信元になるノードnのアドレスとを含むノーティファイを受信する(ステップS3101)。
次に、ノードnは、重複除去処理が起動中であるか否かを判定する(ステップS3102)。ここで、起動中である場合(ステップS3102:Yes)、ノードnは、ステップS3104の処理に移行する。
一方で、起動中ではない場合(ステップS3102:No)、ノードnは、重複除去テーブル1100に基づいて、受信したノーティファイが別の経路から受信済みのノーティファイであるか否かを判定する(ステップS3103)。ここで、受信済みのノーティファイである場合(ステップS3103:Yes)、ノードnは、ノーティファイ受信処理を終了する。
一方で、受信済みのノーティファイではない場合(ステップS3103:No)、ノードnは、Sub/Pubテーブル1000に、ノーティファイに含まれるトピックに対応付けて登録されたポートを特定する(ステップS3104)。
次に、ノードnは、特定したポートのうち、いずれかのポートを選択する(ステップS3105)。そして、ノードnは、選択したポートから、ノーティファイを送信する(ステップS3106)。その後、ノードnは、すべてのポートを選択したか否かを判定する(ステップS3107)。ここで、選択していないポートがある場合(ステップS3107:No)、ノードnは、ステップS3105の処理に戻る。
一方で、すべてのポートを選択した場合(ステップS3107:Yes)、ノードnは、重複除去処理が起動中であるか否かを判定する(ステップS3108)。ここで、起動中ではない場合(ステップS3108:No)、ノードnは、ノーティファイ受信処理を終了する。
一方で、起動中である場合(ステップS3108:Yes)、ノードnは、重複除去テーブル1100に、ノーティファイに含まれるノーティファイIDを登録する(ステップS3109)。そして、ノードnは、ノーティファイ受信処理を終了する。
(オーバレイ切断処理手順)
次に、図32を用いて、オーバレイ切断処理手順の一例について説明する。
図32は、オーバレイ切断処理手順を示すフローチャートである。図32において、ノードnは、切断するノードnのアドレスを含むオーバレイ切断要求900を受信する(ステップS3201)。次に、ノードnは、切断するノードnに、オーバレイネットワークlnのリンクの切断要求1700を送信する(ステップS3202)。そして、ノードnは、切断完了の応答を受信する(ステップS3203)。
次に、ノードnは、切断するノードnのアドレスを含むオーバレイ切断通知1800を出力する(ステップS3204)。そして、ノードnは、オーバレイ切断処理を終了する。
(オーバレイ接続処理手順)
次に、図33を用いて、オーバレイ接続処理手順の一例について説明する。
図33は、オーバレイ接続処理手順を示すフローチャートである。図33において、ノードnは、新たに接続するノードnのアドレスを含むオーバレイ接続要求800を受信する(ステップS3301)。次に、ノードnは、新たに接続するノードnに、オーバレイネットワークlnのリンクの接続要求1400を送信する(ステップS3302)。そして、ノードnは、接続完了の応答を受信する(ステップS3303)。
次に、ノードnは、新たに接続するノードnのアドレスを含むオーバレイ接続通知1500を出力する(ステップS3304)。そして、ノードnは、オーバレイ接続処理を終了する。
(ノーティファイ切断処理手順)
次に、図34を用いて、ノーティファイ切断処理手順の一例について説明する。
図34は、ノーティファイ切断処理手順を示すフローチャートである。図34において、ノードnは、切断するノードnのアドレスを含むオーバレイ切断通知1800を受け付ける(ステップS3401)。そして、ノードnは、Sub/Pubテーブル1000に、切断するノードnへのポートに対応付けて登録されたトピックを特定する(ステップS3402)。
次に、ノードnは、特定したノードnのうち、いずれかのノードnを選択する(ステップS3403)。そして、ノードnは、切断するノードnのアドレスに対応するポート以外のポートのうち、選択したトピックに対応付けてSub/Pubテーブル1000に登録されたポートがあるか否かを判定する(ステップS3404)。ここで、ポートがない場合(ステップS3404:No)、ノードnは、ステップS3409の処理に移行する。
一方で、ポートがある場合(ステップS3404:Yes)、ノードnは、切断するノードnのアドレスに対応するポート以外のポートを特定する(ステップS3405)。次に、ノードnは、特定したポートのうち、いずれかのポートを選択する(ステップS3406)。そして、ノードnは、選択したポートから、トピックと自ノードnのアドレスとを含むアンサブスクライブ1900を送信する(ステップS3407)。
次に、ノードnは、すべてのポートを選択したか否かを判定する(ステップS3408)。ここで、選択していないポートがある場合(ステップS3408:No)、ノードnは、ステップS3406の処理に戻る。
一方で、すべてのポートを選択した場合(ステップS3408:Yes)、ノードnは、すべてのトピックを選択したか否かを判定する(ステップS3409)。ここで、選択していないトピックがある場合(ステップS3409:No)、ノードnは、ステップS3403の処理に戻る。
一方で、すべてのトピックを選択した場合(ステップS3409:Yes)、ノーティファイ切断処理を終了する。
(ノーティファイ接続処理手順)
次に、図35を用いて、ノーティファイ接続処理手順の一例について説明する。
図35は、ノーティファイ接続処理手順を示すフローチャートである。図35において、ノードnは、新たに接続するノードnのアドレスを含むオーバレイ接続通知1500を受け付ける(ステップS3501)。
次に、ノードnは、Sub/Pubテーブル1000に、新たに接続するノードnのアドレスが登録済みであるか否かを判定する(ステップS3502)。ここで、登録済みである場合(ステップS3502:Yes)、ノードnは、ステップS3504の処理に移行する。
一方で、登録済みでない場合(ステップS3502:No)、ノードnは、新たに接続するノードnへのポートに、新たに接続するノードnのアドレスが対応付けられたレコードをSub/Pubテーブル1000に登録する(ステップS3503)。次に、ノードnは、Sub/Pubテーブル1000に登録済みのトピックを特定する(ステップS3504)。そして、ノードnは、特定したトピックのうち、いずれかのトピックを選択する(ステップS3505)。
次に、ノードnは、新たに接続するノードnへのポートから、トピックと自ノードnのアドレスとを含むサブスクライブ1600を送信する(ステップS3506)。そして、ノードnは、すべてのトピックを選択したか否かを判定する(ステップS3507)。ここで、選択していないトピックがある場合(ステップS3507:No)、ノードnは、ステップS3505の処理に戻る。
一方で、すべてのトピックを選択した場合(ステップS3507:Yes)、ノーティファイ接続処理を終了する。
以上説明したように、経路制御装置100によれば、複数のノードnを含むオーバレイネットワークlnを利用したデータ送信経路ntにおけるノード間の通信量に基づいて、データ送信経路ntを変更するか否かを判定することができる。また、経路制御装置100によれば、変更すると判定した場合に、取得したノード間の通信量とに基づいて、オーバレイネットワークlnにおいて新たに接続されるノード間と切断されるノード間とを特定することができる。また、経路制御装置100によれば、新たに接続されるノードnに対してオーバレイネットワークlnにおいて新たに接続されるノード間を結ぶ仮の経路をデータ送信経路ntに追加させる仮サブスクライブ1300を送信することができる。また、経路制御装置100によれば、データ送信経路ntに仮の経路が追加された後、新たに接続されるノードnと切断されるノードnとに対してオーバレイネットワークlnのノード間の接続関係を変更させる変更要求を送信することができる。
これにより、経路制御装置100は、オーバレイネットワークlnのノード間の接続関係の変更中であっても、仮の経路がデータ送信経路ntに追加されているため、データ送信経路ntが途切れることを防止することができる。このため、経路制御装置100は、オーバレイネットワークlnのノード間の接続関係の変更中に、パブリッシャpからサブスクライバsまでデータ1200が届かなくなる期間が生じることを防止することができる。また、経路制御装置100は、オーバレイネットワークlnのノード間の接続関係の変更に応じて、ノードnに、オーバレイネットワークlnにおいて切断されるノード間を結ぶ経路を、データ送信経路ntから除外させることができる。このため、経路制御装置100は、データ送信経路ntにおけるループを解消することができ、異なる経路を介して同一内容のデータ1200が重複して送信されることを防止することができる。
また、経路制御装置100によれば、新たに接続されるノードnに対して、異なる経路を介して同一内容のデータ1200を重複して受信した場合には、いずれかのデータ1200を破棄させる重複除去処理を起動させる起動要求700を送信することができる。
これにより、経路制御装置100は、ノードnが同一内容のデータ1200を重複して受信した場合にはいずれか一つのデータ1200以外を破棄させることができ、ノードnから同一内容のデータ1200が重複して転送されることを防止することができる。このため、経路制御装置100は、データ送信経路ntにおけるノード間の通信量の増大化を抑制することができる。
また、経路制御装置100によれば、現在のノード間の通信量の和から、データ送信経路ntを変更した場合におけるノード間の通信量の和を減算した差分を算出することができる。また、経路制御装置100によれば、算出した差分が閾値以上である場合に、データ送信経路ntを変更すると判定することができる。
これにより、経路制御装置100は、データ送信経路ntを変更した方がデータ送信経路nt全体での通信量の和が小さくなり、データを効率よく送受信することができる場合に、データ送信経路ntを変更すると判定することができる。このため、経路制御装置100は、パブリッシャpやサブスクライバsが移動した結果、いずれかのノードnの通信負担が増大した場合などに、現在よりも比較的好ましいデータ送信経路ntがあれば、データ送信経路ntを変更すると判定することができる。
また、経路制御装置100によれば、現在までのノード間の通信量の和の平均値から、データ送信経路ntを変更した場合におけるノード間の通信量の和を減算した差分を算出することができる。また、経路制御装置100によれば、算出した差分が、ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、データ送信経路ntを変更すると判定することができる。
これにより、経路制御装置100は、データ送信経路ntを変更した方がデータ送信経路nt全体での通信量の和が小さくなり、データを効率よく送受信することができる場合に、データ送信経路ntを変更すると判定することができる。このため、経路制御装置100は、パブリッシャpやサブスクライバsが移動した結果、いずれかのノードnの通信負担が増大した場合などに、現在よりも比較的好ましいデータ送信経路ntがあれば、データ送信経路ntを変更すると判定することができる。また、経路制御装置100は、現在までのノード間の通信量の和の平均値を用いるため、一時的にデータ送信経路nt全体での通信量の和が大きくなっている場合などには、データ送信経路ntを変更しないと判定することもできる。このため、経路制御装置100は、データ送信経路ntが好ましい状態になる確率を向上させることができる。
また、経路制御装置100によれば、いずれかのノード間の通信量から、所定の時点のいずれかのノード間の通信量を減算した差分が閾値以上である場合に、データ送信経路ntを変更すると判定することができる。これにより、経路制御装置100は、パブリッシャpやサブスクライバsが移動した結果、いずれかのノードnの通信負担が増大した場合などに、データ送信経路ntを変更すると判定することができる。
また、経路制御装置100によれば、次に遷移するノード間の接続関係の候補のうちオーバレイネットワークlnにおける通信量の和の低減度合いが相対的に大きい接続関係に遷移するように、変更要求を送信することができる。これにより、経路制御装置100は、効率よくオーバレイネットワークlnのノード間の接続関係を変更することができる。
また、ノードnによれば、自ノードnを含む複数のノードnを含むオーバレイネットワークlnを利用したデータ送信経路ntに、自ノードnから他のノードnへの仮の経路を追加させる仮サブスクライブ1300を受け付けることができる。また、ノードnによれば、仮サブスクライブ1300を受け付けたことに応じて、データ送信経路ntに仮の経路を追加することができる。また、ノードnによれば、他のノードnを経由させるデータ1200を受け付けた場合、追加した仮の経路を用いてデータ1200を送信することができる。
これにより、ノードnは、オーバレイネットワークlnのノード間の接続関係の変更中であっても、仮の経路を介してデータ1200を他のノードに送信することができる。このため、ノードnは、パブリッシャpからサブスクライバsまでデータ1200が届かなくなる期間が生じることを防止することができる。
なお、本実施の形態で説明した経路制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本経路制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本経路制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
処理を実行させることを特徴とする経路制御プログラム。
(付記2)前記追加要求を送信する処理は、
さらに、前記新たに接続されるノードに対して、異なる経路を介して同一内容のデータを重複して受信した場合には、いずれかのデータを破棄させる重複排除要求を送信する、ことを特徴とする付記1に記載の経路制御プログラム。
(付記3)前記コンピュータに、
前記ノード間の通信量の和を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
前記判定する処理は、
算出した前記差分が閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする付記1または2に記載の経路制御プログラム。
(付記4)前記コンピュータに、
複数の時点で前記複数のノードから取得した前記ノード間の通信量に基づいて、前記ノード間の通信量の和の平均値を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和の平均値から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
前記判定する処理は、
算出した前記差分が、前記ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする付記1または2に記載の経路制御プログラム。
(付記5)前記判定する処理は、
いずれかのノード間の通信量から、所定の時点の前記いずれかのノード間の通信量を減算した差分が閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする付記1または2に記載の経路制御プログラム。
(付記6)前記変更要求を送信する処理は、
前記オーバレイネットワークのノード間の接続関係を変更する過程で遷移可能なノード間の接続関係の候補が複数あれば、ノード間の接続関係の候補のうち前記オーバレイネットワークにおける通信量の和の低減度合いが相対的に大きい接続関係に遷移するように、前記変更要求を送信する、ことを特徴とする付記1〜5のいずれか一つに記載の経路制御プログラム。
(付記7)複数のノードのうち第1のノードに、
前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第1のノードから前記複数のノードのうち前記第1のノードとは異なる第2のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
前記第2のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
処理を実行させることを特徴とする経路制御プログラム。
(付記8)複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
制御部を有することを特徴とする経路制御装置。
(付記9)複数のノードのうち第1のノードであって、
前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第1のノードから前記複数のノードのうち前記第1のノードとは異なる第2のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
前記第2のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
制御部を有することを特徴とするノード。
(付記10)経路制御装置と、複数のノードを含み、
前記経路制御装置は、
前記複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信し、
前記新たに接続されるノードは、
前記追加要求を受け付けたことに応じて、前記データ送信経路に自ノードから自ノードと新たに接続される他のノードへの経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記他のノードへの経路を用いて前記データを送信し、
前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記新たに接続されるノード間を接続し、
前記切断されるノードは、
前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記切断されるノード間を切断すると共に、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外する、
ことを特徴とする経路制御方法。
100 経路制御装置
200 経路制御システム
210 ネットワーク
300,400 バス
301,401 CPU
302,402 メモリ
303,403 ネットワークI/F
304,404 ディスクドライブ
305,405 ディスク
306,406 記録媒体I/F
307,407 記録媒体
600 発行要求
700 起動要求
800 オーバレイ接続要求
900 オーバレイ切断要求
1000 Sub/Pubテーブル
1100 重複除去テーブル
1200 データ
1300 仮サブスクライブ
1400 リンクの接続要求
1500 オーバレイ接続通知
1600 サブスクライブ
1700 リンクの切断要求
1800 オーバレイ切断通知
1900 アンサブスクライブ
2001 取得部
2002 判定部
2003 特定部
2004 追加部
2005 変更部
2011 受付部
2012 第1の通信部
2013 第2の通信部
2110,2120 ノード
2111,2121 ブローカー部
2112,2122 オーバレイ部

Claims (9)

  1. コンピュータに、
    複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
    変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
    特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
    前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
    処理を実行させることを特徴とする経路制御プログラム。
  2. 前記追加要求を送信する処理は、
    さらに、前記新たに接続されるノードに対して、異なる経路を介して同一内容のデータを重複して受信した場合には、いずれかのデータを破棄させる重複排除要求を送信する、ことを特徴とする請求項1に記載の経路制御プログラム。
  3. 前記コンピュータに、
    前記ノード間の通信量の和を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
    前記判定する処理は、
    算出した前記差分が閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする請求項1または2に記載の経路制御プログラム。
  4. 前記コンピュータに、
    複数の時点で前記複数のノードから取得した前記ノード間の通信量に基づいて、前記ノード間の通信量の和の平均値を算出し、前記複数のノードのうち接続されるノード間の候補を示す情報に基づいて、前記データ送信経路を変更した場合におけるノード間の通信量の和を算出し、算出した前記ノード間の通信量の和の平均値から、算出した前記データ送信経路を変更した場合におけるノード間の通信量の和を減算した差分を算出する、処理を実行させ、
    前記判定する処理は、
    算出した前記差分が、前記ノード間の通信量の和の標準偏差に基づく閾値以上である場合に、前記データ送信経路を変更すると判定する、ことを特徴とする請求項1または2に記載の経路制御プログラム。
  5. 前記変更要求を送信する処理は、
    前記オーバレイネットワークのノード間の接続関係を変更する過程で遷移可能なノード間の接続関係の候補が複数あれば、ノード間の接続関係の候補のうち前記オーバレイネットワークにおける通信量の和の低減度合いが相対的に大きい接続関係に遷移するように、前記変更要求を送信する、ことを特徴とする請求項1〜4のいずれか一つに記載の経路制御プログラム。
  6. 複数のノードのうち第1のノードに、
    前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第1のノードから前記複数のノードのうち前記第1のノードとは異なる第2のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
    前記第2のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
    処理を実行させることを特徴とする経路制御プログラム。
  7. 複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
    変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
    特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
    前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、前記新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信することにより、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外させる、
    制御部を有することを特徴とする経路制御装置。
  8. 複数のノードのうち第1のノードであって、
    前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路への、前記第1のノードから前記複数のノードのうち前記第1のノードとは異なる第2のノードへの経路の追加要求を受け付けたことに応じて、前記データ送信経路に前記経路を追加し、
    前記第2のノードを経由させるデータを受け付けた場合、追加した前記経路を用いて前記データを送信する、
    制御部を有することを特徴とするノード。
  9. 経路制御装置と、複数のノードを含み、
    前記経路制御装置は、
    前記複数のノードから取得した、前記複数のノードを含むオーバレイネットワークを利用したデータ送信経路におけるノード間の通信量に基づいて、前記データ送信経路を変更するか否かを判定し、
    変更すると判定した場合に、前記複数のノードのうち接続されるノード間の候補を示す情報と、取得した前記ノード間の通信量とに基づいて、前記オーバレイネットワークにおいて新たに接続されるノード間と切断されるノード間とを特定し、
    特定した前記新たに接続されるノード間に基づいて、新たに接続されるノードに対して前記データ送信経路への前記新たに接続されるノード間を結ぶ経路の追加要求を送信し、
    前記データ送信経路に追加された後、前記新たに接続されるノード間と前記切断されるノード間とに基づいて、新たに接続されるノードと切断されるノードとに対して前記オーバレイネットワークのノード間の接続関係の変更要求を送信し、
    前記新たに接続されるノードは、
    前記追加要求を受け付けたことに応じて、前記データ送信経路に自ノードから自ノードと新たに接続される他のノードへの経路を追加し、前記他のノードを経由させるデータを受け付けた場合、追加した前記他のノードへの経路を用いて前記データを送信し、
    前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記新たに接続されるノード間を接続し、
    前記切断されるノードは、
    前記変更要求を受け付けたことに応じて、前記オーバレイネットワークにおいて前記切断されるノード間を切断すると共に、前記データ送信経路から前記切断されるノード間を結ぶ経路を除外する、
    ことを特徴とする経路制御方法。
JP2016212591A 2016-10-31 2016-10-31 経路制御プログラム、経路制御装置、ノードおよび経路制御方法 Pending JP2018074401A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016212591A JP2018074401A (ja) 2016-10-31 2016-10-31 経路制御プログラム、経路制御装置、ノードおよび経路制御方法
US15/730,901 US20180123942A1 (en) 2016-10-31 2017-10-12 Route control apparatus and route control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016212591A JP2018074401A (ja) 2016-10-31 2016-10-31 経路制御プログラム、経路制御装置、ノードおよび経路制御方法

Publications (1)

Publication Number Publication Date
JP2018074401A true JP2018074401A (ja) 2018-05-10

Family

ID=62022001

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016212591A Pending JP2018074401A (ja) 2016-10-31 2016-10-31 経路制御プログラム、経路制御装置、ノードおよび経路制御方法

Country Status (2)

Country Link
US (1) US20180123942A1 (ja)
JP (1) JP2018074401A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR102018011744B1 (pt) * 2018-06-11 2023-01-10 Vale S.A Método para priorizar fluxos de cruzamento de uma ferrovia, e, meio de armazenamento em memória

Also Published As

Publication number Publication date
US20180123942A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
US6055568A (en) Method and apparatus for dynamically configuring a decentralized network of computers
CN107078963B (zh) 虚拟可扩展局域网中的路由追踪
JP2018056978A (ja) クラウド型高度道路交通の制御システムに基づく制御サーバー
CN103782553A (zh) 一种链路发现方法、sdn控制器及设备
JP2004153802A (ja) 移動通信装置、モバイルルータおよび移動通信システム
JP6205898B2 (ja) 制御方法、制御プログラムおよび情報処理システム
CN112532671A (zh) 获取方法、配置方法、边缘计算集群及装置
RU2679555C1 (ru) Система управления связью, способ управления связью и носитель записи
JP2018074401A (ja) 経路制御プログラム、経路制御装置、ノードおよび経路制御方法
CN113453229A (zh) 一种远距离的无线安全自动化测试方法、装置及设备
US20220247651A1 (en) System and method for network and computation performance probing for edge computing
WO2020004033A1 (ja) 情報処理装置、情報処理方法及びプログラム
CN111405021A (zh) 一种对等节点的数据传输方法、装置、设备及存储介质
CN105763463B (zh) 一种链路探测报文的传输方法和装置
US8681645B2 (en) System and method for coordinated discovery of the status of network routes by hosts in a network
CN110958170B (zh) 一种网络互联方法和装置
CN113595828B (zh) 软件定义网络拓扑探测方法及系统
US9203760B2 (en) Communication device and route search method
CN113612636A (zh) 软件定义网络拓扑发现方法及系统
CN113595939B (zh) 软件定义网络单向链路发现方法及系统
JP2010282360A (ja) 検索システムおよび検索方法
CN114095379B (zh) 基于物联网的一种快速建模方法及系统
Munir et al. SmartTags: bridging applications and network for proactive performance management
CN117880372B (zh) Fttr系统的设备访问控制方法、网关设备及网关分布式系统
WO2024041213A1 (zh) 通信方法、装置、系统及存储介质