(57)【要約】  第一送信手段１６２は、第一のメッセージを、第二送信手段１７２は、第二のメッセージを、それぞれ通信中継装置１８０に送信する。メッセージ転送手段１８１は、第一のメッセージまたは第二のメッセージを受信したときに、自通信中継装置が配信経路設定装置である場合、第一のメッセージまたは第二のメッセージを制御装置２００に転送する。経路情報設定手段２０１は、通信中継装置１８０から受信した第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとに割り当てたフロー識別情報と、第一のメッセージまたは第二のメッセージに含まれる経路情報エレメントとを対応付けた経路情報をフロースイッチ１９０に設定する。
2012073521.tif 000002
【特許請求の範囲】
【請求項１】
発生したイベントを他の装置に配信する配信装置と、
配信されるイベントを受信する受信装置と、
通信ネットワークを介して装置間の通信を中継する通信中継装置と、
前記イベントを含むデータフローを識別し、当該データフローを配信経路上の装置に転送するスイッチであるフロースイッチに配信経路を示す経路情報を設定させる制御装置とを備え、
前記配信装置は、
前記通信中継装置のうち配信経路の設定処理を行う配信経路設定装置を前記イベントに応じて特定する通信中継装置第一特定手段と、
前記配信装置、前記受信装置および前記通信中継装置の間の通信経路を定めた経路表に基づいて、前記イベントを識別する情報であるイベント識別情報と、前記通信経路の一部を示す情報である経路情報エレメントとを含む第一のメッセージを前記通信中継装置に送信する第一送信手段とを備え、
前記受信装置は、
前記配信経路設定装置を前記イベントに応じて特定する通信中継装置第二特定手段と、
前記経路表に基づいて、前記イベント識別情報と前記経路情報エレメントとを含む第二のメッセージを前記通信中継装置に送信する第二送信手段とを備え、
前記通信中継装置は、
前記第一のメッセージまたは前記第二のメッセージを受信したときに、自通信中継装置が前記配信経路設定装置である場合、当該第一のメッセージまたは第二のメッセージを前記制御装置に転送し、自通信中継装置が前記配信経路設定装置でない場合、当該第一のメッセージまたは第二のメッセージに前記経路情報エレメントを追加して、配信経路上の他の通信中継装置に当該第一のメッセージまたは第二のメッセージを前記経路表に基づいて転送するメッセージ転送手段を備え、
前記制御装置は、
前記通信中継装置から受信した第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとに割り当てた前記イベントの配信に用いられるデータフローを識別する情報であるフロー識別情報と、第一のメッセージおよび第二のメッセージに含まれる経路情報エレメントとを対応付けた経路情報を前記フロースイッチに設定する経路情報設定手段を備えた
ことを特徴とするイベント配信システム。
【請求項２】
通信中継装置のメッセージ転送手段は、経路情報設定手段が経路情報を設定後、第一のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、イベント識別情報とフロー識別情報とを含む情報であるフロー情報通知メッセージを配信装置に送信し、第二のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、受信装置に前記フロー情報通知メッセージを送信する
請求項１記載のイベント配信システム。
【請求項３】
配信装置の第一送信手段は、フロー情報通知メッセージに含まれるフロー識別情報を用いて通信中継装置にイベントを送信する
請求項１または請求項２記載のイベント配信システム。
【請求項４】
受信装置の第二送信手段は、フロー情報通知メッセージに含まれるフロー識別情報を用いて受信するイベントを選択する
請求項１から請求項３のうちのいずれか１項に記載のイベント配信システム。
【請求項５】
制御装置の経路情報設定手段は、第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとにフロー識別情報として割り当てたＩＰマルチキャストアドレスと、経路情報エレメントとを対応付けた経路情報をフロースイッチに設定し、
通信中継装置のメッセージ転送手段は、経路情報設定手段が経路情報を設定後、第一のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、イベント識別情報と前記ＩＰマルチキャストアドレスとを含むフロー情報通知メッセージを配信装置に送信し、第二のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、受信装置に前記フロー情報通知メッセージを送信する
請求項１から請求項４のうちのいずれか１項に記載のイベント配信システム。
【請求項６】
発生したイベントを他の装置に配信する配信装置が、通信ネットワークを介して装置間の通信を中継する通信中継装置のうち、配信経路の設定処理を行う配信経路設定装置を当該イベントに応じて特定し、
前記配信装置が、当該配信装置、前記通信中継装置および配信されるイベントを受信する受信装置の間の通信経路を定めた経路表に基づいて、前記イベントを識別する情報であるイベント識別情報と、前記通信経路の一部を示す情報である経路情報エレメントとを含む第一のメッセージを、前記通信中継装置に送信し、
前記通信中継装置が、前記第一のメッセージを受信したときに、自通信中継装置が前記配信経路設定装置である場合、前記イベントを含むデータフローを識別して当該データフローを配信経路上の装置に転送するスイッチであるフロースイッチに配信経路を示す経路情報を設定させる制御装置に対して当該第一のメッセージを転送し、自通信中継装置が配信経路設定装置でない場合、当該第一のメッセージに前記経路情報エレメントを追加して配信経路上の他の通信中継装置に当該第一のメッセージを前記経路表に基づいて転送し、
前記受信装置が、前記イベントに応じて前記配信経路設定装置を特定し、
前記受信装置が、前記経路表に基づいて、前記イベント識別情報と前記経路情報エレメントとを含む第二のメッセージを前記通信中継装置に送信し、
前記通信中継装置が、前記第二のメッセージを受信したときに、自通信中継装置が前記配信経路設定装置である場合、前記制御装置に対して当該第二のメッセージを転送し、自通信中継装置が配信経路設定装置でない場合、当該第二のメッセージに前記経路情報エレメントを追加して配信経路上の他の通信中継装置に当該第二のメッセージを前記経路表に基づいて転送し、
前記制御装置が、前記通信中継装置から受信した第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとに割り当てた前記イベントの配信に用いられるデータフローを識別する情報であるフロー識別情報と、第一のメッセージおよび第二のメッセージに含まれる経路情報エレメントとを対応付けた経路情報を前記フロースイッチに設定する
ことを特徴とするイベント配信方法。
【請求項７】
経路情報をフロースイッチに設定後、第一のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、イベント識別情報とフロー識別情報とを含む情報であるフロー情報通知メッセージを配信装置に送信し、第二のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、受信装置に前記フロー情報通知メッセージを送信する
請求項６記載のイベント配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ある観測対象に発生したイベントの通知を希望する受信者に、そのイベントの情報を通知するイベント配信システムおよびイベント配信方法に関する。
【背景技術】
【０００２】
インターネット等のネットワークに接続された複数の装置に情報を送信する方法が各種知られている。【０００３】
特許文献１には、管理サーバ等を用いずに複数のノード装置に対して情報を送信する情報通信システムが記載されている。特許文献１に記載された情報通信システムでは、カタログ情報を配信するためのオーバーレイネットワークがＤＨＴ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｈａｓｈ  Ｔａｂｌｅ）を利用したアルゴリズムによって構築される。そして、特許文献１に記載された情報通信システムでは、ＤＨＴを利用したマルチキャスト（以下、ＤＨＴマルチキャストと記す。）により、オーバーレイネットワークに参加している一のノードから送出された情報収集メッセージが他の全てのノードに配信され、そのノードが情報収集メッセージに対する返答情報を収集する。なお、ノードＩＤを４桁４進数とした場合、ＤＨＴマルチキャストは、ＩＤマスクごとに（すなわち、第１段階から第４段階までのステップで）行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２３５２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された情報通信システムでは、独自のアプリケーションを用いてオーバーレイネットワークを構築している。そのため、そのオーバーレイネットワーク上では、アプリケーションに適したルーティングを行うことが可能になる。しかし、オーバーレイネットワークにおけるノード間のメッセージ転送がＩＰネットワークを介して行われる場合、オーバーレイネットワークノード間で、ＩＰルーティングも発生することになる。つまり、特許文献１に記載された情報通信システムでは、オーバーレイネットワークにおけるルーティング処理と、ＩＰネットワークにおけるルーティング処理という二重ルーティングが発生するため、配信遅延が増加してしまうという問題がある。【０００６】
そこで、本発明は、オーバーレイネットワークにおけるノード間のイベント配信がＩＰネットワークを介して行われる場合であっても、ネットワーク上のルーティング処理を一本化できるイベント配信システムおよびイベント配信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明によるイベント配信システムは、発生したイベントを他の装置に配信する配信装置と、配信されるイベントを受信する受信装置と、通信ネットワークを介して装置間の通信を中継する通信中継装置と、イベントを含むデータフローを識別し、そのデータフローを配信経路上の装置に転送するスイッチであるフロースイッチに配信経路を示す経路情報を設定させる制御装置とを備え、配信装置は、通信中継装置のうち配信経路の設定処理を行う配信経路設定装置をイベントに応じて特定する通信中継装置第一特定手段と、配信装置、受信装置および通信中継装置の間の通信経路を定めた経路表に基づいて、イベントを識別する情報であるイベント識別情報と、通信経路の一部を示す情報である経路情報エレメントとを含む第一のメッセージを通信中継装置に送信する第一送信手段とを備え、受信装置が、配信経路設定装置をイベントに応じて特定する通信中継装置第二特定手段と、経路表に基づいて、イベント識別情報と経路情報エレメントとを含む第二のメッセージを通信中継装置に送信する第二送信手段とを備え、通信中継装置が、第一のメッセージまたは第二のメッセージを受信したときに、自通信中継装置が配信経路設定装置である場合、その第一のメッセージまたは第二のメッセージを制御装置に転送し、自通信中継装置が配信経路設定装置でない場合、その第一のメッセージまたは第二のメッセージに経路情報エレメントを追加して、配信経路上の他の通信中継装置にその第一のメッセージまたは第二のメッセージを経路表に基づいて転送するメッセージ転送手段を備え、制御装置が、通信中継装置から受信した第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとに割り当てたイベントの配信に用いられるデータフローを識別する情報であるフロー識別情報と、第一のメッセージおよび第二のメッセージに含まれる経路情報エレメントとを対応付けた経路情報をフロースイッチに設定する経路情報設定手段を備えたことを特徴とする。【０００８】
本発明によるイベント配信方法は、発生したイベントを他の装置に配信する配信装置が、通信ネットワークを介して装置間の通信を中継する通信中継装置のうち、配信経路の設定処理を行う配信経路設定装置をそのイベントに応じて特定し、配信装置が、その配信装置、通信中継装置および配信されるイベントを受信する受信装置の間の通信経路を定めた経路表に基づいて、イベントを識別する情報であるイベント識別情報と、通信経路の一部を示す情報である経路情報エレメントとを含む第一のメッセージを、通信中継装置に送信し、通信中継装置が、第一のメッセージを受信したときに、自通信中継装置が配信経路設定装置である場合、イベントを含むデータフローを識別してそのデータフローを配信経路上の装置に転送するスイッチであるフロースイッチに配信経路を示す経路情報を設定させる制御装置に対してその第一のメッセージを転送し、自通信中継装置が配信経路設定装置でない場合、その第一のメッセージに経路情報エレメントを追加して配信経路上の他の通信中継装置にその第一のメッセージを経路表に基づいて転送し、受信装置が、イベントに応じて配信経路設定装置を特定し、受信装置が、経路表に基づいて、イベント識別情報と経路情報エレメントとを含む第二のメッセージを通信中継装置に送信し、通信中継装置が、第二のメッセージを受信したときに、自通信中継装置が配信経路設定装置である場合、制御装置に対してその第二のメッセージを転送し、自通信中継装置が配信経路設定装置でない場合、その第二のメッセージに経路情報エレメントを追加して配信経路上の他の通信中継装置にその第二のメッセージを経路表に基づいて転送し、制御装置が、通信中継装置から受信した第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとに割り当てたイベントの配信に用いられるデータフローを識別する情報であるフロー識別情報と、第一のメッセージおよび第二のメッセージに含まれる経路情報エレメントとを対応付けた経路情報をフロースイッチに設定することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、オーバーレイネットワークにおけるノード間のイベント配信がＩＰネットワークを介して行われる場合であっても、ネットワーク上のルーティング処理を一本化できる。
【図面の簡単な説明】
【００１０】
【図１】本発明によるイベント配信システムの一実施形態を示すブロック図である。
【図２】配信経路を設定する処理の例を示すシーケンス図である。
【図３】広告メッセージに含まれる情報の例を示す説明図である。
【図４】フロースイッチに経路設定を行う処理の例を示すシーケンス図である。
【図５】経路設定メッセージの例を示す説明図である。
【図６】配信経路を設定する処理の例を示すシーケンス図である。
【図７】購読メッセージに含まれる情報の例を示す説明図である。
【図８】フロースイッチに経路が設定された後の処理を示すシーケンス図である。
【図９】本実施例におけるイベント配信システムの一実施形態を示すブロック図である。
【図１０】経路設定メッセージの例を示す説明図である。
【図１１】フロースイッチに経路が設定された後の処理を示すシーケンス図である。
【図１２】本発明によるイベント配信システムの最小構成の例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を図面を参照して説明する。
【００１２】
図１は、本発明によるイベント配信システムの一実施形態を示すブロック図である。本実施形態におけるイベント配信システムは、Ｐｕｂｌｉｓｈｅｒ１０（以下、パブリッシャ１０）と、Ｓｕｂｓｃｒｉｂｅｒ２０（以下、サブスクライバ２０）と、ＲｅｎｄｅｚｖｏｕｓＰｏｉｎｔ３０（以下、ランデブポイント３０）と、Ｂｒｏｋｅｒ（以下、ブローカ）４０〜４６と、フロースイッチ５０と、Ｃｏｎｔｒｏｌｌｅｒ６０（以下、コントローラ６０）とを備えている。
【００１３】
ブローカ４０〜４６およびフロースイッチ５０は、通信ネットワーク７０を介して相互に接続されている。また、ブローカ４０はパブリッシャ１０に接続され、ブローカ４６はサブスクライバ２０に接続される。なお、図１に示す例では、７つのブローカをイベント配信システム内に示しているが、ブローカの数は７つに限定されない。
【００１４】
ブローカ４０〜４６は、各装置から送信される制御メッセージの転送を行う。具体的には、ブローカは、各ブローカに接続されたパブリッシャ１０が行う広告処理や、サブスクライバ２０が行う購読処理で送信される制御メッセージの転送処理を行う。
【００１５】
ここで、広告処理とは、個々のイベントを識別するイベント名をイベント配信システム上に登録する処理である。例えば、「ＬｉｎｋＦａｉｌｕｒｅ」というイベント名がリンク断を示すイベントとして登録される。なお、システム利用者が任意の単語を用いてイベント名を規定してもよく、以下の参考文献に記載されたＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒｓ）を決定する規則に従ってイベント名を規定してもよい。
【００１６】
＜参考文献＞T. Berners-Lee etc., "Uniform Resource Identifiers (URI): Generic Syntax", August 1998, RFC2396 (http://www.ietf.org/rfc/rfc2396.txt)
【００１７】
なお、この広告処理を行う際にパブリッシャ１０が送信する制御メッセージを、以下、広告メッセージと記す。広告メッセージには、登録するイベントのイベント名が含まれる。
【００１８】
また、購読処理とは、パブリッシャ１０から送信されるイベントの受信登録を行う処理である。この購読処理を行う際にサブスクライバ２０が送信する制御メッセージを、以下、購読メッセージと記す。購読メッセージには、登録するイベントのイベント名が含まれる。
【００１９】
ブローカ４０〜４６は、それぞれが独立した装置によって実現されていてもよく、他の機能と一体になった装置の一部として実現されていてもよい。パブリッシャ１０に接続されたブローカ４０、および、サブスクライバ２０に接続されたブローカ４６の機能については、後述する。
【００２０】
パブリッシャ１０は、前記広告処理とイベント情報の送信処理を行う。発生したイベント情報は、例えば、ＩＰマルチキャストによって他の装置に転送される。
【００２１】
イベント情報の送信処理では、パブリッシャ１０は、イベント情報の送信処理に先立ち、広告処理を行うことで、パブリッシャ１０からランデブポイント３０までの配信経路を設定する。ここで、ランデブポイント３０は、パブリッシャ１０からランデブポイント３０までの配信経路とランデブポイント３０からサブスクライバ２０までの配信経路の接続点である。
【００２２】
ブローカ４０は、イベント名からハッシュ値を算出し、算出したハッシュ値をもとに転送先となる隣接ブローカを特定する。なお、ハッシュ値をもとに配信先を決定する方法は、分散ハッシュテーブル（ＤＨＴ）のアルゴリズムとして広く知られているため、ここでは詳細な説明を省略する。なお、パブリッシャ１０とブローカ４０とは、それぞれが独立したサーバ装置によって実現されていてもよく、一つのサーバ装置で実現されていてもよい。
【００２３】
サブスクライバ２０は、イベント情報を受信するための購読処理（以下、イベント情報の受信登録と記す。）を行い、その後、登録したイベントの情報を受信する。また、サブスクライバ２０は、イベント情報の受信に先立ち、購読処理を行うことで、ランデブポイント３０からサブスクライバ２０までの配信経路を設定する。
【００２４】
ブローカ４６は、配信を依頼するイベント名からハッシュ値を算出し、算出したハッシュ値をもとにブローカを特定する。なお、ハッシュ値をもとに、転送先となる隣接配信先を決定する方法は、ブローカ４０が配信先を決定する方法と同様である。なお、サブスクライバ２０とブローカ４６とは、それぞれが独立した装置によって実現されていてもよく、一つの装置で実現されていてもよい。
【００２５】
個々のブローカは、他のブローカから広告メッセージ、または購読メッセージを受信した場合に、受信した通信が自装置宛の通信か否かを判定する。自装置宛の通信であった場合、ブローカ４３は、その通信をランデブポイント３０に送信する。
【００２６】
ランデブポイント３０は、イベント情報の配信経路の管理を行う。具体的には、ランデブポイント３０は、広告メッセージおよび購読メッセージに含まれる経路情報からイベント情報の配信経路を特定する。また、ランデブポイント３０は、特定した配信経路をフロースイッチ５０へ設定するための指示をコントローラ６０に対して行う。ランデブポイント３０は、例えば、ルータ上の機能として実現される。なお、ランデブポイント３０は、受信したメッセージを基に配信経路を設定することから、ランデブポイント３０を配信経路設定装置と呼ぶこともできる。
【００２７】
以下の説明では、ランデブポイント３０がブローカ４３に接続されたモデルについて説明する。ランデブポイント３０とブローカ４３とは、それぞれが独立したサーバ装置によって実現されていてもよく、一つのサーバ装置で実現されていてもよい。
【００２８】
フロースイッチ５０は、フロースイッチ５０自身を通過する個々のデータフローを識別する手段を備えたスイッチである。このデータフローは、データ送受信を行うデバイスやノードを識別する識別子、ノードアドレス、プロトコル識別子等の組み合わせによって識別される。具体的には、フロースイッチ５０は、パブリッシャ１０が送信したイベント情報を含むデータフローを受信すると、そのデータフローの内容を識別し、ランデブポイント３０やサブスクライバ２０へ、そのイベント情報を配信する。
【００２９】
コントローラ６０は、フロースイッチ５０に対して、イベント情報を含むデータフローを識別するための情報（フロー情報）を設定する。なお、フロースイッチ５０に設定する情報については後述する。
【００３０】
次に、本実施形態のイベント配信システムの動作を説明する。以下の説明では、イベント配信の配信経路として、パブリッシャ１０→ブローカ４０→ブローカ４２→ブローカ４３→ランデブポイント３０→ブローカ４３→ブローカ４４→ブローカ４６→サブスクライバ２０という経路が構築される手順を示す。
【００３１】
配信経路のうち、広告処理においてパブリッシャ１０→ブローカ４０→ブローカ４２→ブローカ４３→ランデブポイント３０までの経路が設定され、購読処理においてランデブポイント３０→ブローカ４３→ブローカ４４→ブローカ４６→サブスクライバ２０までの経路が設定される。
【００３２】
まず、広告処理において、パブリッシャ１０→ブローカ４０→ブローカ４２→ブローカ４３→ランデブポイント３０までの配信経路が設定される手順を説明する。図２は、広告処理において配信経路を設定する処理の例を示すシーケンス図である。まず、パブリッシャ１０は広告メッセージを発信し、接続先であるブローカ４０に転送する（ステップＳ１）。この広告メッセージには、パブリッシャ１０が配信するイベントのイベント名が含まれている。
【００３３】
次に、ブローカ４０は、イベント名からハッシュ値を算出し、キーとして使用されるイベント識別子を得る。ここでは、ハッシュ値「４３」が算出されたものとする。このハッシュ値「４３」は、広告メッセージの送信先を識別する情報として取り扱われる。そこで、ブローカ４０は、経路表を用いて、転送すべき隣接ブローカを検索する。
【００３４】
経路表とは、通信元の装置と通信先の装置とを対応付けた表であり、例えば、ＤＨＴで構成される経路表などが挙げられる。経路表は、例えば、各ブローカが備えるメモリ（図示せず）等に記憶される。本実施形態の場合、経路表には、例えば、パブリッシャ１０、サブスクライバ２０およびブローカ４０〜４６の間の通信経路が定められている。ここでは、隣接ブローカをブローカ４２と決定可能な経路表が存在するものとし、ブローカ４０が隣接ブローカとして経路表からブローカ４２を検索したものとする。
【００３５】
そして、ブローカ４０は、広告メッセージに配信経路を示す情報（以下、経路情報エレメントと記す。）を追加する（ステップＳ２）。図３は、広告メッセージに含まれる情報の例を示す説明図である。図３に例示する経路情報エレメントは、メッセージの種別を示すメッセージ種別（ここでは、「広告」）と、イベント名と、イベント識別子と、３つの経路情報エレメントとを含んでいる。経路情報エレメントは、経路情報エレメントが追加された順に付与されるエレメント番号と、経路情報エレメントを追加した自ノード情報と、広告メッセージの送信元であるノードの情報を示す親ノード情報と、広告メッセージの送信先になるノードの情報を示す子ノード情報を含む。ただし、経路情報エレメントの内容は、図３に例示する内容に限定されない。また、この経路情報エレメントを繋ぎ合わせることで配信経路を特定できることから、経路情報エレメントは、配信経路の一部と言うことが出来る。
【００３６】
また、広告メッセージは、イベント情報を操作する指示内容を示す情報を含んでいてもよい。この情報には、指示内容を示す情報として、例えば、イベント情報を新規に追加する（新規）、イベント情報を更新する（更新）、イベント情報の削除する（削除）などが指定される。
【００３７】
ここでは、ブローカ４０は起点ノードになるので、エレメント番号＝０とする情報が追記される。具体的には、ノードＩＤ情報（ここでは、「４０」）、アドレス情報、配信経路上での親ノード情報、子ノード情報が広告メッセージに追記される。なお、具体的なアドレス情報の例は、後述する実施例で説明する。
【００３８】
なお、ブローカ４０は、イベント配信の起点ノードであるため、親ノードは存在しない。したがって、経路情報エレメントの親ノード情報（ノードＩＤ情報、アドレス情報）には、Ｎｕｌｌ値や、何らかの無効な値を設定すればよい。また、ここでは、隣接ノードがブローカ４２であるため、子ノード情報にはブローカ４２の情報を設定すればよい。なお、図３に示す例では、子ノード情報には次の経路情報エレメントに対するポインタを設定している。
【００３９】
同様に、ブローカ４２及びブローカ４３は、図３に例示するように、経路情報エレメント１、経路情報エレメント２という経路情報エレメントをそれぞれ広告メッセージに追加する。具体的には、ブローカ４０が経路情報エレメント（＝０）を追加した広告メッセージをブローカ４２に送信する（図２におけるステップＳ３）。次に、ブローカ４２は、受信した広告メッセージに経路情報エレメント（＝１）を追加し（ステップＳ４）、その広告メッセージをブローカ４３に送信する（ステップＳ５）。そして、ブローカ４３は、受信した広告メッセージに経路情報エレメント（＝２）を追加する（ステップＳ６）。
【００４０】
また、ブローカは、受信した広告メッセージの送信先が自ノードか否かを判断する。広告メッセージを受信したブローカ４３は、自ノードＩＤが「４３」であるため、広告メッセージの転送処理を終了させる。そして、ブローカ４３は、ランデブポイント３０に広告メッセージを引き渡し（ステップＳ７）、ランデブポイント３０が行う処理をスタートさせる。
【００４１】
広告メッセージを受信したランデブポイント３０は、経路情報エレメント０〜２を確認することで、今回の広告処理におけるイベント配信の配信経路が、パブリッシャ１０→ブローカ４０→ブローカ４２→ブローカ４３→ランデブポイント３０であることを特定する。
【００４２】
次に、ランデブポイント３０は、コントローラ６０とフロースイッチ５０を含むネットワークに対して経路設定処理を行う。図４は、フロースイッチ５０に経路設定を行う処理の例を示すシーケンス図である。
【００４３】
最初に、ランデブポイント３０は、コントローラ６０へ経路設定要求メッセージを送信する（ステップＳ８）。経路設定要求メッセージには、フロー識別子と、広告メッセージに含まれていた経路情報エレメントとが含まれる。また、経路設定要求メッセージは、イベント情報の登録についての指示内容を示す情報を含んでいてもよい。
【００４４】
フロー識別子とは、イベント情報を含むデータフローを識別する情報である。フロー識別子として、例えば、広告メッセージに含まれていたイベント識別子（＝４３）を使用してもよい。なお、フロー識別子とイベント識別子とを、１対１で対応させてもよい。具体的には、経路設定要求メッセージのフロー識別子の値にイベント識別子の値を設定してもよい。また、フロー識別子とイベント識別子とを変換する対応表を予め準備し、受信したイベント識別子を変換することで得られるフロー識別子の値を経路設定要求メッセージに設定してもよい。
【００４５】
また、上述するように、経路情報エレメントには、フロースイッチ５０に設定する配信経路（ここでは、ブローカ４０→ブローカ４２→ブローカ４３）を示す情報が含まれる。
【００４６】
コントローラ６０は、経路設定要求メッセージを受信すると、予め生成された物理ネットワーク構成を示す情報と、受信した経路情報エレメントを用いて、フロースイッチ５０へ設定する経路情報（以下、経路設定情報と記す。）を算出する（ステップＳ９）。
【００４７】
具体的には、コントローラ６０は、フロースイッチ５０のどのポートにどの端末（ブローカ）が接続されているかを示す物理ネットワーク構成と、端末上のどのブローカ同士が接続されているかを示す経路情報エレメントから経路設定情報を算出する。ここでは、ブローカ４０を起点とし、ブローカ４２およびブローカ４３を終点としたスター型の構成が算出される。
【００４８】
さらに、コントローラ６０は、フロー識別子に対してフロー識別情報を割り当てる。フロー識別情報とは、イベントの配信に用いられるフローを識別する情報である。コントローラ６０は、フロー識別情報として、例えば、Ｌ３アドレス、ポート番号などを割り当てる。このＬ３アドレスとして、例えばＩＰマルチキャストアドレスを割り当てる。そのとき、コントローラ６０は、例えば、フロー識別子を受信した順でＩＰマルチキャストアドレスが重複しないように割り当てればよい。そして、コントローラ６０は、フロー識別子、フロー識別情報および経路設定情報を含む経路設定メッセージをフロースイッチ５０に送信して経路情報を設定させる（ステップＳ１０）。
【００４９】
図５は、経路設定メッセージの例を示す説明図である。図５に例示する経路設定メッセージは、イベント情報を操作する指示内容を示す情報（以下、配信指示タイプと記す。）と、フロー識別子と、算出された経路設定情報とを含んでいる。経路設定情報には、経路設定情報を識別するエレメント番号、スター型構成における装置の位置づけを示すタイプと、その装置のノード情報とが含まれる。
【００５０】
経路設定メッセージを受信したフロースイッチ５０は、フロー識別子、フロー識別情報および経路設定情報をフローテーブル（図示せず）に設定し、設定処理を完了する。以降、フロースイッチ５０は、該当するフローを受信した場合、フローテーブル（図示せず）に設定されたフロー識別情報を用いて受信フローを識別し、ブローカ４２およびブローカ４３が接続されるポートへ、受信フローをスイッチする。
【００５１】
次に、購読処理において、ランデブポイント３０→ブローカ４３→ブローカ４４→ブローカ４６→サブスクライバ２０までの配信経路が設定される手順を説明する。図６は、購読処理において配信経路を設定する処理の例を示すシーケンス図である。まず、サブスクライバ２０は購読メッセージを発信し、接続先であるブローカ４６に転送する（ステップＳ１１）。この購読メッセージには、サブスクライバ２０が購読するイベント情報のイベント名が含まれている。
【００５２】
次に、ブローカ４６は、イベント名からハッシュ値を算出し、キーとして使用されるイベント識別子を得る。ここでは、ハッシュ値「４３」が算出されたものとする。このハッシュ値「４３」は、購読メッセージの送信先を識別する情報として取り扱われる。そこで、ブローカ４６は、経路表を用いて、転送すべき隣接ブローカを検索する。なお、隣接ブローカの検索方法は、ブローカ４０が隣接ブローカを検索する方法と同様である。ここでは、隣接ブローカとして経路表からブローカ４４が検索されたものとする。
【００５３】
そして、ブローカ４６は、購読メッセージに経路情報エレメントを追加する（ステップＳ１２）。図７は、購読メッセージに含まれる情報の例を示す説明図である。図７に例示する経路情報エレメントは、メッセージの種別を示すメッセージ種別と、イベント名と、イベント識別子と、３つの経路情報エレメントとを含んでいる。なお、イベント名、イベント識別子、および、経路情報エレメントの内容は、図３に例示する広告メッセージと同様である。なお、メッセージ種別には、購読メッセージを示すメッセージ種別「購読」が設定される。
【００５４】
また、購読メッセージは、イベント情報の購読についての指示内容を示す情報（以下、購読指示タイプと記す。）を含んでいてもよい。購読指示タイプには、指示内容を示す情報として、例えば、イベント情報の購読を開始する（新規）、イベント情報の購読内容を変更する（更新）、イベント情報の購読を解除する（削除）などが指定される。
【００５５】
ここでは、ブローカ４６は起点ノードになるので、エレメント番号＝０とする情報が追記される。具体的には、ノードＩＤ情報（ここでは、「４６」）、アドレス情報、配信経路上での親ノード情報、子ノード情報が購読メッセージに追記される。なお、具体的なアドレス情報の例は、後述する実施例で説明する。
【００５６】
なお、ブローカ４６は、イベント配信の起点ノードであるため、親ノードは存在しない。したがって、経路情報エレメントの親ノード情報（ノードＩＤ情報、アドレス情報）には、Ｎｕｌｌ値や、何らかの無効な値を設定すればよい。また、ここでは、隣接ノードがブローカ４４のため、子ノード情報にはブローカ４４の情報を設定すればよい。なお、図７に示す例では、子ノード情報には次の経路情報エレメントに対するポインタを設定している。
【００５７】
同様に、ブローカ４４及びブローカ４３は、図７に例示するように、経路情報エレメント１、経路情報エレメント２という経路情報エレメントをそれぞれ購読メッセージに追加する。具体的には、ブローカ４６が経路情報エレメント（＝０）を追加した購読メッセージをブローカ４４に送信する（図６におけるステップＳ１３）。次に、ブローカ４４は、受信した購読メッセージに経路情報エレメント（＝１）を追加し（ステップＳ１４）、その購読メッセージをブローカ４３に送信する（ステップＳ１５）。そして、ブローカ４３は、受信した購読メッセージに経路情報エレメント（＝２）を追加する（ステップＳ１６）。
【００５８】
また、ブローカ４３は、受信した購読メッセージの送信先が自ノードか否かを判断する。購読メッセージを受信したブローカ４３は、自ノードＩＤが「４３」であるため、購読メッセージの転送処理を終了させる。そして、ブローカ４３は、ランデブポイント３０に購読メッセージを引き渡し（ステップＳ１７）、ランデブポイント３０が行う処理をスタートさせる。
【００５９】
購読メッセージを受信したランデブポイント３０は、経路情報エレメント０〜２を確認することで、今回の購読処理におけるイベント配信の配信経路が、ランデブポイント３０→ブローカ４３→ブローカ４４→ブローカ４６→サブスクライバ２０であることを特定する。
【００６０】
次に、ランデブポイント３０は、コントローラ６０とフロースイッチ５０を含むネットワークに対して経路設定処理を行う。なお、フロースイッチ５０に経路設定を行う処理は、図４に例示する処理と同様である。
【００６１】
最初に、ランデブポイント３０は、コントローラ６０へ経路設定要求メッセージを送信する。この経路設定要求メッセージには、フロー識別子と購読メッセージに含まれていた経路情報エレメントが含まれる。また、経路設定要求メッセージには、イベント情報の購読についての指示内容を示す情報（すなわち、購読指示タイプ）を含んでいてもよい。
【００６２】
フロー識別子として、例えば、購読メッセージに含まれていたイベント識別子（＝４３）が使用される。また、上述するように、経路情報エレメントには、フロースイッチ５０に設定する配信経路（ここでは、ブローカ４３→ブローカ４４→ブローカ４６）を示す情報が含まれる。
【００６３】
コントローラ６０は、経路設定要求メッセージを受信すると、予め生成された物理ネットワーク構成を示す情報と、受信した経路情報エレメントとを用いて、フロースイッチ５０へ設定する経路情報（経路設定情報）を算出する。ここでは、ブローカ４３を起点とし、ブローカ４４およびブローカ４６を終点としたスター型の構成が算出される。
【００６４】
さらに、コントローラ６０は、フロー識別子に対してフロー識別情報を割り当てる。コントローラ６０は、フロー識別情報として、例えば、Ｌ３アドレス、ポート番号などを割り当てる。この割り当て事例では、フロー識別子が、広告処理時に使用したフロー識別子と同じであるため、そのフロー識別子に割り当てたＬ３アドレスと同じＬ３アドレス（つまり、同じマルチキャストアドレス）が割り当てられる。そして、コントローラ６０は、フロー識別子、フロー識別情報および経路設定情報を含む経路設定メッセージをフロースイッチ５０に送信して経路情報を設定させる。
【００６５】
経路設定メッセージを受信したフロースイッチ５０は、フロー識別子、フロー識別情報および経路設定情報をフローテーブル（図示せず）に設定し、設定処理を完了する。以降、フロースイッチ５０は、該当するフローを受信した場合、フローテーブル（図示せず）に設定されたフロー識別情報を用いて受信フローを識別し、ブローカ４４およびブローカ４６が接続されるポートへ、受信フローをスイッチする。
【００６６】
図８は、フロースイッチ５０に経路が設定された後の処理を示すシーケンス図である。経路設定が完了すると、ランデブポイント３０は、広告処理や購読処理で設定された経路を逆に辿り、フロー識別子とフロー識別情報とを含む返信情報（以下、フロー情報通知メッセージと記す。）をパブリッシャ１０およびサブスクライバ２０へ送信する。ここでは、フロー識別子（＝４３）、フロー識別情報（例えば、Ｌ３アドレス、ポート番号等）がフロー情報通知メッセージに含まれる。
【００６７】
具体的には、ランデブポイント３０は、フロー情報通知メッセージをブローカ４３に送信する（ステップＳ２１）。ブローカ４３は、受信したフロー情報通知メッセージをもとに経路表の設定を行い（ステップＳ２２）、さらにブローカ４２にフロー情報通知メッセージを送信する（ステップＳ２３）。同様に、ブローカ４２は、受信したフロー情報通知メッセージをもとに経路表の設定を行い（ステップＳ２４）、ブローカ４０にフロー情報通知メッセージを送信する（ステップＳ２５）。このようにして、パブリッシャ１０は、フロー情報通知メッセージを受信する。
【００６８】
一方、ブローカ４３は、ブローカ４４にもフロー情報通知メッセージを送信する（ステップＳ３３）。ブローカ４４は、受信したフロー情報通知メッセージをもとに経路表の設定を行い（ステップＳ３４）、ブローカ４６にフロー情報通知メッセージを送信する（ステップＳ３５）。このようにして、サブスクライバ２０は、フロー情報通知メッセージを受信する。
【００６９】
その後、パブリッシャ１０は、受信したフロー情報通知メッセージに含まれるフロー識別情報を使用してイベント情報を送信することによって、フロースイッチ５０にイベント情報を含むフローを認識させることができる。具体的には、広告処理および購読処理により、フロー識別情報単位（例えば、Ｌ２アドレス、Ｌ３アドレス、ポート番号単位）でフロースイッチ５０の出力ポートが設定される。また、パブリッシャ１０から送信されるイベント情報は、フロー識別情報が含まれた状態で配送される。そのため、フロースイッチ５０は、受信したイベント情報のフロー識別情報をチェックすることにより、出力ポートを特定できる。
【００７０】
また、サブスクライバ２０は、受信したフロー情報通知メッセージに含まれるフロー識別情報を使用して受信フローをフィルタすることで、要求したイベント情報を正しく受信することができる。
【００７１】
以上のように、本発明によれば、パブリッシャ１０およびブローカ４０が、ランデブポイント３０をイベントに応じて特定し、経路表に基づいて、イベント名と経路情報エレメントとを含む広告メッセージを経路上の通信装置（ここでは、ブローカ４２）に送信する。同様に、サブスクライバ２０およびブローカ４６が、ランデブポイント３０をイベントに応じて特定し、経路表に基づいて、イベント名と経路情報エレメントとを含む購読メッセージを経路上の通信装置（ここでは、ブローカ４４）に送信する。その後、ブローカが広告メッセージまたは購読メッセージを受信したときに、そのブローカ自身が終端装置である場合（すなわち、配信経路の設定処理を行う通信装置である場合）、ランデブポイント３０が、受信したメッセージをコントローラ６０に送信する。一方、そのブローカ自身が終端装置でない場合、ブローカ４３が、受信したメッセージに経路情報エレメントを追加して、配信経路上の他の通信装置にそのメッセージを経路表に基づいて転送する。そして、コントローラ６０は、受信したメッセージに含まれるイベント識別情報ごとに割り当てたフロー識別情報と、メッセージに含まれる経路情報エレメントとを対応付けた経路情報をフロースイッチに設定する。
【００７２】
以上のような構成により、オーバーレイネットワークにおけるノード間のイベント配信がＩＰネットワークを介して行われる場合であっても、ネットワーク上のルーティング処理を一本化できる。すなわち、あるイベント情報の配信に関して、二重ルーティングになっている配信経路が特定され、特定された配信経路が下位ネットワーク（例えば、ＯｐｅｎＦｌｏｗネットワークや、ＭＰＬＳ（Multi-Protocol Label Switching）ネットワーク）で経路設定されることにより、二重ルーティングが解消される。また、二重ルーティングが解消されることにより、各ブローカにおける処理が削減されるため、配信遅延を抑制できる。
【実施例】
【００７３】
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。また、上記実施形態と同様の構成については、図１と同一の符号を付し、説明を省略する。【００７４】
図９は、本実施例におけるイベント配信システムの一実施形態を示すブロック図である。本実施例におけるイベント配信システムは、Ｐｕｂｌｉｓｈｅｒサーバ１００（以下、パブリッシャサーバ１００）と、Ｓｕｂｓｃｒｉｂｅｒサーバ２００（以下、サブスクライバサーバ２００）と、Ｂｒｏｋｅｒサーバ（以下、ブローカサーバ）４１０〜４５０と、オープンフロースイッチ５００（以下、オープンフローフロースイッチ５００）と、ＯｐｅｎＦｌｏｗＣｏｎｔｒｏｌｌｅｒサーバ６００（以下、オープンフローコントローラサーバ６００）とを備えている。【００７５】
パブリッシャサーバ１００、サブスクライバサーバ２００、ブローカサーバ４１０〜４５０、オープンフロースイッチ５００およびオープンフローコントローラサーバ６００は、ＤＨＴリング７００を介して相互に接続されている。【００７６】
パブリッシャサーバ１００は、パブリッシャ１０およびブローカ４０を備え、サブスクライバサーバ２００は、サブスクライバ２０およびブローカ４６を備えている。また、ブローカサーバ４１０〜４５０は、ブローカ４１〜４５をそれぞれ備えている。また、オープンフローコントローラサーバ６００は、オープンフロースイッチコントローラ６６０を備えている。【００７７】
ブローカ４０〜４６は、例えば、ＰａｓｔｒｙやＣｈｏｒｄなどのアルゴリズムを用いた分散ハッシュテーブル（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｈａｓｈ  Ｔａｂｌｅ）で管理されるノードである。【００７８】
また、ブローカサーバ４３０は、ランデブポイント３０も備えている。なお、ブローカサーバ４３０以外のブローカサーバも、上記実施形態におけるランデブポイント３０に相当する手段を備えているが、図９では記載を省略している。以下、ブローカサーバ４３０上で、ランデブポイント３０による各処理が行われるものとして説明する。【００７９】
パブリッシャ１０、サブスクライバ２０、ランデブポイント３０、および、ブローカ４０〜４６は、例えば、アプリケーションプログラムに従って動作するコンピュータのＣＰＵによって実現され、各サーバ機器上で動作する。具体的には、各サーバ機器のＣＰＵは、各機器の記憶部（図示せず）に記憶されたアプリケーションプログラムを読み込み、そのプログラムに従って、パブリッシャ１０、サブスクライバ２０、ランデブポイント３０、および、ブローカ４０〜４６として動作する。また、オープンフロースイッチ５００は、フロースイッチ５０に相当し、オープンフロースイッチコントローラサーバ６００は、コントローラ６０に相当する。【００８０】
本実施例では、イベント配信の配信経路として、パブリッシャサーバ１００→ブローカサーバ４２０→ブローカサーバ４３０→ブローカサーバ４４０→サブスクライバサーバ２００という経路が構築される手順を説明する。【００８１】
配信経路のうち、広告処理においてパブリッシャサーバ１００→ブローカサーバ４２０→ブローカサーバ４３０までの経路が設定され、購読処理においてブローカサーバ４３０→ブローカサーバ４４０→ブローカサーバ４６０→サブスクライバサーバ２００までの経路が設定される。【００８２】
まず、広告処理において、パブリッシャサーバ１００→ブローカサーバ４２０→ブローカサーバ４３０までの経路が設定される手順を説明する。なお、配信経路を設定する処理は、図２に例示する処理と同様である。【００８３】
初めに、パブリッシャサーバ１００のパブリッシャ１０は広告メッセージを発信し、サーバ内のブローカ４０に転送する。この広告メッセージには、パブリッシャサーバ１００のパブリッシャ１０が配信するイベント情報のイベント名が含まれている。【００８４】
次に、パブリッシャサーバ１００のブローカ４０は、イベント名からハッシュ値を算出し、キーとして使用されるイベント識別子を得る。ここでは、ハッシュ値「４３０」が算出されたものとする。このハッシュ値「４３０」は、広告メッセージの送信先を識別する情報として取り扱われる。そこで、パブリッシャサーバ１００のブローカ４０は、経路表を用いて、転送すべき隣接ブローカを検索する。ここでは、隣接ブローカとして経路表からブローカ４２０が検索されたものとする。【００８５】
そして、パブリッシャサーバ１００のブローカ４０は、広告メッセージに経路情報エレメントを追加する。追加する経路情報エレメントは、図３に例示する経路情報エレメントと同様である。【００８６】
例えば、パブリッシャサーバ１００のブローカ４０は起点ノードになるので、エレメント番号＝０とする情報が広告メッセージに追記される。具体的には、ノードＩＤ情報（ここでは、「１００」）、ＩＰアドレス情報、配信経路上での親ノード情報、子ノード情報が広告メッセージに追記される。【００８７】
なお、パブリッシャサーバ１００のブローカ４０は、イベント配信の起点ノードであるため、親ノードは存在しない。したがって、経路情報エレメントの親ノード情報（ノードＩＤ情報、アドレス情報）には、Ｎｕｌｌ値や、何らかの無効な値を設定すればよい。また、ここでは、隣接ノードがブローカサーバ４２０のため、子ノード情報にはブローカサーバ４２０の情報を設定すればよい。【００８８】
同様に、ブローカサーバ４２０のブローカ４２及びブローカサーバ４３０のブローカ４３は、経路情報エレメント１、経路情報エレメント２という経路情報エレメントをそれぞれ広告メッセージに追加する。【００８９】
また、ブローカサーバの各ブローカは、受信した広告メッセージの送信先が自ノードか否かを判断する。広告メッセージを受信したブローカサーバ４３０のブローカ４３は、自ノードＩＤが「４３０」であるため、広告メッセージの転送処理を終了させる。そして、ブローカ４３は、ランデブポイント３０に広告メッセージを引き渡し、ランデブポイント３０が行う処理をスタートさせる。【００９０】
広告メッセージを受信したブローカサーバ４３０のランデブポイント３０は、経路情報エレメント０〜２を確認することで、今回の広告処理におけるイベント配信の配信経路が、パブリッシャサーバ１００→ブローカサーバ４２０→ブローカサーバ４３０であることを特定する。【００９１】
次に、ブローカサーバ４３０のランデブポイント３０は、オープンフローコントローラサーバ６００とオープンフロースイッチ５００を含むネットワークに対して経路設定処理を行う。【００９２】
最初に、ブローカサーバ４３０のランデブポイント３０は、オープンフローコントローラサーバ６００へ経路設定要求メッセージを送信する。この経路設定要求メッセージには、フロー識別子と、広告メッセージに含まれていた経路情報エレメントとが含まれる。また、フロー識別子には、広告メッセージに含まれていたイベント識別子が使用される。また、経路情報エレメントには、オープンフロースイッチ５００に設定する配信経路（ここでは、パブリッシャサーバ１００→ブローカサーバ４２０→ブローカサーバ４３０）を示す情報が含まれる。【００９３】
オープンフローコントローラサーバ６００のオープンフロースイッチコントローラ６６０は、経路設定要求メッセージを受信すると、予め生成された物理ネットワーク構成を示す情報と、受信した経路情報エレメントを用いて、オープンフロースイッチ５００へ設定する経路設定情報を算出する。ここでは、パブリッシャサーバ１００を起点とし、ブローカサーバ４２０およびブローカサーバ４３０を終点としたスター型の構成が算出される。【００９４】
さらに、オープンフロースイッチコントローラ６６０は、フロー識別情報としてＩＰマルチキャストアドレスをフロー識別子に割り当てる。そして、オープンフロースイッチコントローラ６６０は、フロー識別子、フロー識別情報および経路設定情報を含む経路設定メッセージをオープンフロースイッチ５００に送信して経路情報を設定させる。【００９５】
図１０は、経路設定メッセージの例を示す説明図である。図１０に例示する経路設定メッセージは、配信指示タイプと、フロー識別子と、算出された経路設定情報とを含んでいる。また、経路設定情報には、経路設定情報を識別するエレメント番号、スター型構成における装置の位置づけを示すタイプと、その装置のノード情報とが含まれる。ここでの経路設定メッセージには、フロー識別子（＝４３０）、フロー識別情報（ＩＰマルチキャストアドレス）、および、経路設定情報（パブリッシャサーバ１００→ブローカサーバ４２０、ブローカサーバ４３０）が含まれる。【００９６】
経路設定メッセージを受信したオープンフロースイッチ５００は、フロー識別子、フロー識別情報および経路設定情報をフローテーブル（図示せず）に設定し、設定処理を完了する。以降、オープンフロースイッチ５００は、該当するフローを受信した場合、フローテーブル（図示せず）に設定されたフロー識別情報を用いて受信フローを識別し、ブローカサーバ４２０およびブローカサーバ４３０が接続されるポートへ、受信フローをスイッチする。【００９７】
次に、購読処理において、ブローカサーバ４３０→ブローカサーバ４４０→サブスクライバサーバ２００までの配信経路が設定される手順を説明する。まず、サブスクライバサーバ２００は購読メッセージを発信し、サーバ内のブローカ４６に転送する。この購読メッセージには、サブスクライバサーバ２００が購読するイベント情報のイベント名が含まれている。【００９８】
次に、サブスクライバサーバ２００のブローカ４６は、イベント名からハッシュ値を算出し、キーとして使用されるイベント識別子を得る。ここでは、ハッシュ値「４３０」が算出されたものとする。このハッシュ値「４３０」は、購読メッセージの送信先を識別する情報として取り扱われる。そこで、サブスクライバサーバ２００のブローカ４６は、経路表を用いて、転送すべき隣接ブローカを検索する。ここでは、隣接ブローカとして経路表からブローカサーバ４４０が検索されたものとする。【００９９】
そして、サブスクライバサーバ２００のブローカ４６は、購読メッセージに経路情報エレメントを追加する。追加する経路情報エレメントは、図７に例示する経路情報エレメントと同様である。【０１００】
例えば、サブスクライバサーバ２００のブローカ４６は起点ノードになるので、エレメント番号＝０とする情報が購読メッセージに追記される。具体的には、ノードＩＤ情報（ここでは、「２００」。）、ＩＰアドレス情報、配信経路上での親ノード情報、子ノード情報が購読メッセージに追記される。【０１０１】
なお、サブスクライバサーバ２００のブローカ４６は、起点ノードであるため、親ノードは存在しない。したがって、経路情報エレメントの親ノード情報（ノードＩＤ情報、アドレス情報）には、Ｎｕｌｌ値や、何らかの無効な値を設定すればよい。また、ここでは、隣接ノードがブローカサーバ４４０のため、子ノード情報にはブローカサーバ４４０の情報を設定すればよい。【０１０２】
同様に、ブローカサーバ４４０のブローカ４４及びブローカサーバ４３０のブローカ４３は、経路情報エレメント１、経路情報エレメント２という経路情報エレメントをそれぞれ購読メッセージに追加する。【０１０３】
また、ブローカサーバの各ブローカは、受信した購読メッセージの送信先が自ノードか否かを判断する。購読メッセージを受信したブローカサーバ４３０のブローカ４３は、自ノードＩＤが「４３０」であるため、購読メッセージの転送処理を終了させる。そして、ブローカ４３は、ランデブポイント３０に購読メッセージを引き渡し、ランデブポイント３０が行う処理をスタートさせる。【０１０４】
購読メッセージを受信したブローカサーバ４３０のランデブポイント３０は、経路情報エレメント０〜２を確認することで、今回の購読処理におけるイベント配信の配信経路が、ブローカサーバ４３０→ブローカサーバ４４０→サブスクライバサーバ２００であることを特定する。【０１０５】
次に、ブローカサーバ４３０のランデブポイント３０は、オープンフローコントローラサーバ６００とオープンフロースイッチ５００を含むネットワークに対して経路設定処理を行う。【０１０６】
最初に、ブローカサーバ４３０のランデブポイント３０は、オープンフローコントローラサーバ６００へ経路設定要求メッセージを送信する。この経路設定要求メッセージには、フロー識別子と、購読メッセージに含まれていた経路情報エレメントとが含まれる。また、フロー識別子には、購読メッセージに含まれていたイベント識別子が使用される。また、経路情報エレメントには、オープンフロースイッチ５００に設定する配信経路（ここでは、ブローカサーバ４３０→ブローカサーバ４４０→サブスクライバサーバ２００）を示す情報が含まれる。【０１０７】
オープンフローコントローラサーバ６００のオープンフロースイッチコントローラ６６０は、経路設定要求メッセージを受信すると、予め生成された物理ネットワーク構成を示す情報と、受信した経路情報エレメントを用いて、オープンフロースイッチ５００へ設定する経路設定情報を算出する。ここでは、ブローカサーバ４３０を起点とし、ブローカサーバ４３０およびサブスクライバサーバ２００を終点としたスター型の構成が算出される。【０１０８】
さらに、オープンフロースイッチコントローラ６６０は、フロー識別情報としてＩＰマルチキャストアドレスをフロー識別子に割り当てる。そして、オープンフロースイッチコントローラ６６０は、フロー識別子、フロー識別情報および経路設定情報を含む経路設定メッセージをオープンフロースイッチ５００に送信して経路情報を設定させる。【０１０９】
なお、オープンフロースイッチコントローラ６６０が送信する経路設定メッセージは、図１０に例示する経路設定メッセージと同様である。ここでの経路設定メッセージには、フロー識別子（＝４３０）、フロー識別情報（ＩＰマルチキャストアドレス）、および、経路設定情報（ブローカサーバ４３０→ブローカサーバ４４０、サブスクライバサーバ２００）が含まれる。【０１１０】
経路設定メッセージを受信したオープンフロースイッチ５００は、フロー識別子、フロー識別情報および経路設定情報をフローテーブル（図示せず）に設定し、設定処理を完了する。以降、オープンフロースイッチ５００は、該当するフローを受信した場合、フローテーブル（図示せず）に設定されたフロー識別情報を用いて受信フローを識別し、ブローカサーバ４４０およびサブスクライバサーバ２００が接続されるポートへ、受信フローをスイッチする。【０１１１】
以上のように、オープンフロースイッチ５００には、オープンフロースイッチコントローラ６６０により、パブリッシャサーバ１００をルートとしたＩＰマルチキャストが設定される。具体的には、広告処理において、パブリッシャサーバ１００からランデブポイント３０に至るまでのブローカがイベント情報の受信者として特定され、購読処理において、サブスクライバサーバ２００からランデブポイント３０において経由したサブスクライバサーバ２００およびブローカがイベント情報の受信者として特定される。すなわち、イベント情報を投入する装置がパブリッシャサーバ１００であり、イベント情報の受信者がブローカサーバ４２０，４３０，４４０およびサブスクライバサーバ２００であると特定できる。【０１１２】
図１１は、フロースイッチに経路が設定された後の処理を示すシーケンス図である。経路設定が完了すると、ブローカサーバ４３０のランデブポイント３０は、広告処理や購読処理で設定された経路を逆に辿り、フロー識別子とフロー識別情報とを含む返信情報（すなわち、フロー情報通知メッセージ）をパブリッシャサーバ１００およびサブスクライバサーバ２００へ送信する。ここでは、フロー識別子（＝４３０）、フロー識別情報（ＩＰマルチキャストアドレス）がフロー情報通知メッセージに含まれる。【０１１３】
具体的には、ブローカサーバ４３０のランデブポイント３０は、フロー情報通知メッセージをブローカ４３に通知する（ステップＳ４１）。ブローカ４３は、受信したフロー情報通知メッセージをもとに経路表の設定を行い（ステップＳ４２）、さらにブローカサーバ４２０にフロー情報通知メッセージを送信する（ステップＳ４３）。同様に、ブローカサーバ４２０のブローカ４２は、受信したフロー情報通知メッセージをもとに経路表の設定を行い（ステップＳ４４）、パブリッシャサーバ１００にフロー情報通知メッセージを送信する（ステップＳ４５）。このようにして、パブリッシャサーバ１００は、フロー情報通知メッセージを受信する。【０１１４】
一方、ブローカ４３は、ブローカサーバ４４０にもフロー情報通知メッセージを送信する（ステップＳ５３）。ブローカサーバ４４０のブローカ４４は、受信したフロー情報通知メッセージをもとに経路表の設定を行い（ステップＳ５４）、サブスクライバサーバ２００にフロー情報通知メッセージを送信する（ステップＳ５５）。このようにして、サブスクライバサーバ２００は、フロー情報通知メッセージを受信する。【０１１５】
その後、パブリッシャサーバ１００は、受信したフロー情報通知メッセージに含まれるフロー識別情報であるＩＰマルチキャストアドレスを使用してイベント情報を送信することによって、オープンフロースイッチ５００にイベント情報を含むフローを認識させることができる。【０１１６】
具体的には、広告処理および購読処理により、ＩＰマルチキャストアドレスごとにオープンフロースイッチ５００の出力ポートが設定される。また、パブリッシャサーバ１００から送信されるＩＰマルチキャストパケットに乗ってイベント情報が配送される。そのため、オープンフロースイッチ５００は、受信したイベント情報のＩＰマルチキャストアドレスをチェックすることにより、出力ポートを特定できる。【０１１７】
一方、サブスクライバサーバ２００は、受信したフロー情報通知メッセージに含まれるフロー識別情報を使用して、受信フローをフィルタすることで、要求したイベント情報を正しく受信することができる。【０１１８】
次に、本発明の最小構成の例を説明する。図１２は、本発明によるイベント配信システムの最小構成の例を示すブロック図である。本発明によるイベント配信システムは、発生したイベントを他の装置に配信する配信装置１６０（例えば、パブリッシャ１０、ブローカ４０）と、配信されるイベントを受信する受信装置１７０（例えば、サブスクライバ２０、ブローカ４６）と、通信ネットワーク（例えば、通信ネットワーク７０）を介して装置間の通信を中継する通信中継装置１８０（例えば、ブローカ４１〜４５）と、イベントを含むデータフローを識別し、そのデータフローを配信経路上の装置に転送するスイッチであるフロースイッチ１９０（例えば、フロースイッチ５０）に配信経路を示す経路情報を設定させる制御装置２００（例えば、コントローラ６０）とを備えている。【０１１９】
配信装置１６０は、通信中継装置のうち配信経路の設定処理を行う配信経路設定装置（例えば、ブローカ４３）をイベントに応じて特定する通信中継装置第一特定手段１６１（例えば、ブローカ４０）と、配信装置１６０、受信装置１７０および通信中継装置１８０の間の通信経路を定めた経路表（例えば、ＤＨＴで構成される経路表）に基づいて、イベントを識別する情報であるイベント識別情報（例えば、イベント名）と、通信経路の一部を示す情報である経路情報エレメントとを含む第一のメッセージ（例えば、広告メッセージ）を通信中継装置１８０に送信する第一送信手段１６２（例えば、ブローカ４０）とを備えている。【０１２０】
受信装置１７０は、配信経路設定装置（例えば、ブローカ４３）をイベントに応じて特定する通信中継装置第二特定手段１７１（例えば、ブローカ４６）と、経路表（例えば、ＤＨＴで構成される経路表）に基づいて、イベント識別情報と経路情報エレメントとを含む第二のメッセージ（例えば、購読メッセージ）を通信中継装置１８０に送信する第二送信手段１７２（例えば、ブローカ４６）とを備えている。【０１２１】
通信中継装置１８０は、第一のメッセージまたは第二のメッセージを受信したときに、自通信中継装置が配信経路設定装置である場合、その第一のメッセージまたは第二のメッセージを制御装置２００に転送し、自通信中継装置が配信経路設定装置でない場合、その第一のメッセージまたは第二のメッセージに経路情報エレメントを追加して、配信経路上の他の通信中継装置にその第一のメッセージまたは第二のメッセージを経路表に基づいて転送するメッセージ転送手段１８１（例えば、ブローカ４３、ランデブポイント３０）を備えている。【０１２２】
制御装置２００は、通信中継装置１８０から受信した第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとに割り当てたイベントの配信に用いられるデータフローを識別する情報であるフロー識別情報（例えば、ＩＰマルチキャストアドレス）と、第一のメッセージまたは第二のメッセージに含まれる経路情報エレメントと対応付けられた経路情報をフロースイッチ１９０に設定する経路情報設定手段２０１（例えば、コントローラ６０）を備えている。【０１２３】
そのような構成により、オーバーレイネットワークにおけるノード間のイベント配信がＩＰネットワークを介して行われる場合であっても、ネットワーク上のルーティング処理を一本化できる。【０１２４】
また、通信中継装置１８０のメッセージ転送手段１８１、経路情報設定手段２０１が経路情報を設定後、第一のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、イベント識別情報とフロー識別情報とを含む情報であるフロー情報通知メッセージを配信装置１６０に送信し、第二のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、受信装置にフロー情報通知メッセージを送信してもよい。【０１２５】
また、配信装置１６０の第一送信手段１６２は、フロー情報通知メッセージに含まれるフロー識別情報を用いて通信中継装置１８０にイベントを送信してもよい。また、受信装置１７０の第二送信手段１７２は、フロー情報通知メッセージに含まれるフロー識別情報を用いて受信するイベントを選択してもよい。【０１２６】
また、制御装置２００の経路情報設定手段２０１は、第一のメッセージまたは第二のメッセージに含まれるイベント識別情報ごとにフロー識別情報として割り当てたＩＰマルチキャストアドレスと、経路情報エレメントとを対応付けた経路情報をフロースイッチに設定し、通信中継装置１８０のメッセージ転送手段１８１は、経路情報設定手段２０１が経路情報を設定後、第一のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、イベント識別情報とＩＰマルチキャストアドレスとを含むフロー情報通知メッセージを配信装置１６０に送信し、第二のメッセージに含まれる経路情報エレメントが示す通信経路を逆に辿る経路で、受信装置１７０にフロー情報通知メッセージを送信してもよい。【０１２７】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１２８】
この出願は、２０１０年１２月２日に出願された日本特許出願２０１０−２６９６２８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１２９】
本発明は、ある観測対象に発生したイベントの通知を希望する受信者に、そのイベントの情報を通知するイベント配信システムに好適に適用される。また、本発明は、コンテンツを配信するネットワークにおいて好適に適用される。【０１３０】
さらに、本発明は、ネットワーク監視情報や制御情報をコンテンツとして取り扱うネットワーク管理システム分野へも適用可能である。例えば、個々のネットワーク機器が収集した監視情報をパブリッシャサーバに引き渡すと、サブスクライバサーバへ接続した各種サーバ（ネットワーク構成サーバ、障害管理サーバ、ネットワーク経路制御サーバなど）へその情報が配信されるようなネットワークシステムの自律運用に利用できる。
【符号の説明】
【０１３１】
１０  パブリッシャ
２０  サブスクライバ
３０  ランデブポイント
４０〜４６  ブローカ
５０  フロースイッチ
６０  コントローラ
７０  通信ネットワーク
１００  パブリッシャサーバ
２００  サブスクライバサーバ
４１０〜４５０  ブローカサーバ
５００  オープンフロースイッチ
６００  オープンフローコントローラサーバ
【図１】
2012073521.tif 000003
【図２】
2012073521.tif 000004
【図３】
2012073521.tif 000005
【図４】
2012073521.tif 000006
【図５】
2012073521.tif 000007
【図６】
2012073521.tif 000008
【図７】
2012073521.tif 000009
【図８】
2012073521.tif 000010
【図９】
2012073521.tif 000011
【図１０】
2012073521.tif 000012
【図１１】
2012073521.tif 000013
【図１２】
2012073521.tif 000014
【国際調査報告】
2012073521.tif 000015
2012073521.tif 000016