(57)【要約】  メッセージを転送するスイッチを制御するコントローラでは、第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、タグを含む通知を受け取ると、タグと仮想アドレスとを対応付けて保持するとともに、仮想アドレスと通知を送出した第２のノードの物理アドレスとを対応付けて保持する保持手段と、仮想アドレスと物理アドレスとの対応付けをスイッチに設定する設定手段と、第１のノードからタグに対応付けられた仮想アドレスの問い合わせを受けると仮想アドレスを応答するタグ解決手段と、を備えている。メッセージがパブリッシャから発信されてサブスクライバが受信するまでのレイテンシを小さくする。
2014098185.tif 000002
【特許請求の範囲】
【請求項１】
メッセージを転送するスイッチを制御するコントローラであって、
第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取ると、該タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと該通知を送出した該第２のノードの物理アドレスとを対応付けて保持する保持手段と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する設定手段と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答するタグ解決手段と、を備える、コントローラ。
【請求項２】
前記第１のノードは、前記問合せによって得られた仮想アドレスを宛先として前記メッセージを送出し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを、自身に設定された該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する、請求項１に記載のコントローラ。
【請求項３】
前記保持手段は、前記メッセージを一時的に蓄積する第３のノードの物理アドレスと前記タグを含む通知を前記第２のノードから受け取ると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持し、
前記設定手段は、前記仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定する、請求項１または２に記載のコントローラ。
【請求項４】
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送する、請求項３に記載のコントローラ。
【請求項５】
前記タグは、ＯＳＩ（Open Systems Interconnection）参照モデルのアプリケーション層で設定される配信先を決定するための情報である、請求項１ないし４のいずれか１項に記載のコントローラ。
【請求項６】
前記仮想アドレスは、仮想ＩＰアドレスと仮想ポート番号との組みであり、
前記物理アドレスは、物理ＩＰアドレスと物理ポート番号との組みである、請求項１ないし５のいずれか１項に記載のコントローラ。
【請求項７】
タグが付加されたメッセージを配信する第１のノードと、
前記メッセージを転送するスイッチと、
前記スイッチによる前記メッセージの転送を制御するコントローラと、
前記メッセージを購読する第２のノードと、を備え、
前記第２のノードは、前記タグを含む通知を前記コントローラに送出し、
前記コントローラは、前記通知を受け取ると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持し、該仮想アドレスと該物理アドレスとの対応付けを前記スイッチに設定し、
前記第１のノードは、前記タグに対応する仮想アドレスを前記コントローラに問い合わせて、得られた仮想アドレスを宛先として前記メッセージを送出し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する、メッセージ配信システム。
【請求項８】
前記メッセージを一時的に蓄積する第３のノードをさらに備え、
前記第２のノードは、前記第３のノードの物理アドレスと前記タグを含む通知を前記コントローラに送出し、
前記コントローラは、前記通知を受けると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持し、該仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送する、請求項７に記載のメッセージ配信システム。
【請求項９】
メッセージを転送するスイッチを制御するコントローラが、第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取る工程と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持する工程と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する工程と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答する工程と、を含む、メッセージ配信方法。
【請求項１０】
前記第１のノードが、前記問合せによって得られた仮想アドレスを宛先として前記メッセージを送出する工程と、
前記スイッチが、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを、自身に設定された該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する工程と、を含む、請求項９に記載のメッセージ配信方法。
【請求項１１】
前記コントローラが、前記メッセージを一時的に蓄積する第３のノードの物理アドレスと前記タグを含む通知を前記第２のノードから受け取る工程と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持する工程と、
前記仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定する工程と、を含む、請求項９または１０に記載のメッセージ配信方法。
【請求項１２】
前記スイッチが、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送する工程を含む、請求項１１に記載のメッセージ配信方法。
【請求項１３】
メッセージを転送するスイッチを制御するコンピュータに対して、
第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取る処理と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持する処理と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する処理と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答する処理と、を実行させる、プログラム。
【請求項１４】
前記第１のノードは、前記問合せによって得られた仮想アドレスを宛先として前記メッセージを送出し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを、自身に設定された該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する、請求項１３に記載のプログラム。
【請求項１５】
前記メッセージを一時的に蓄積する第３のノードの物理アドレスと前記タグを含む通知を前記第２のノードから受け取る処理と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持する処理と、
前記仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定する処理と、を前記コンピュータに実行させる、請求項１３または１４に記載のプログラム。
【請求項１６】
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送する、請求項１５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−２７８０２９号（２０１２年１２月２０日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、コントローラ、メッセージ配信システム、メッセージ配信方法およびプログラムに関し、特に、メッセージ指向ミドルウェアにおけるメッセージ配信を制御するコントローラ、かかるコントローラを備えたメッセージ配信システム、メッセージ配信方法およびプログラムに関する。
【背景技術】
【０００２】
メッセージ指向ミドルウェア（Message-Oriented Middleware、ＭＯＭ）におけるメッセージ配信方法の一例が、ＡＭＱＰ(Advanced Message Queuing Protocol)として標準化されている（非特許文献１）。【０００３】
図７は、ＡＭＱ（Advanced Message Queuing）モデルの全体構成を示す図である。図７を参照すると、ＡＭＱモデルは、パブリッシャ・アプリケーション（Publisher  Application）１１０、サーバ（Server）１３０、および、コンシューマ・アプリケーション（Consumer Application）１４０を含んで構成される。以下では、パブリッシャ・アプリケーションおよびコンシューマ・アプリケーションを、それぞれ、「パブリッシャ」および「コンシューマ」という。【０００４】
パブリッシャ１１０は、メッセージを生成して送信する。【０００５】
ＡＭＱＰにおいて標準化されたサーバ１３０は、メッセージを受け取ると、所定の基準に従ってコンシューマ１４０に配信するエクスチェンジ（Exchange）１３４と、コンシューマ１４０がメッセージ受信を行えない場合のバッファとしてのメッセージ・キュー（Message Queue）１３６とを備えている（図７）。また、エクスチェンジ１３４とメッセージ・キュー１３６の組みを仮想的に複数個設けるために、仮想ホスト（Virtual Host）１３２の概念を実装したサーバも存在する。以下では、メッセージ・キューを、単に「キュー」という。【０００６】
コンシューマ１４０は、メッセージを受信して消費する。【０００７】
メッセージ指向ミドルウェアの存在により、パブリッシャ１１０とコンシューマ１４０の間のインタフェースが最小化され、疎結合性が実現される。【０００８】
また、エクスチェンジ１３４の存在により、パブリッシャ１１０とコンシューマ１４０は互いのネットワーク上の物理的な位置（例えば、ＩＰ（Internet Protocol）アドレス等）を知っておく必要がなくなる。【０００９】
さらに、キュー１３６が存在することにより、パブリッシャ１１０とコンシューマ１４０が同時に通信可能状態である必要がなくなり、非同期性が向上する。【００１０】
ＡＭＱＰのメッセージ送信は、以下のようにして行われる。新しいメッセージがパブリッシャ１１０上でＡＭＱＰのクライアントＡＰＩ（Application Program Interface）を利用して作成される。パブリッシャ１１０は、メッセージの本体と管理情報等をメッセージに格納する。次に、パブリッシャ１１０は、配信情報をメッセージに設定する。その後、パブリッシャ１１０は、サーバ１３０上で動作するエクスチェンジ１３４に向けてメッセージを送信する。【００１１】
サーバ１３０にメッセージが届くと、エクスチェンジ１３４は、メッセージに付加された配信情報とサーバ１３０内にあるルールから、配信先のキュー１３６を決定し、メッセージを配信する。なお、配信先のキューが複数の場合もある。メッセージの配信先が存在しない場合、エクスチェンジ１３４は、メッセージを破棄するか、パブリッシャ１１０に返すことができる。１つのメッセージが複数のキュー１３６に配信される場合、コピーを作成してもよいし、参照数で管理するようにしてもよい。【００１２】
配信先は、次のように決定される。例えば、Pub-Sub通信モデルでは、送信メッセージにキーワード（以下、「タグ」という。）が付加され、エクスチェンジ１３４は、タグを受信すると、事前に宣言（Subscribe）していたコンシューマ（Pub-Sub通信モデルでは、「サブスクライバ（Subscriber）」という。）に対応するキューにメッセージを配信する。また、Fanout通信モデルでは、エクスチェンジ１３４は、参加しているすべてのコンシューマに対応するキューにメッセージを配信する。以下では、主にPub-Sub通信モデルをベースとして説明を行うが、本発明の適用先はPub-Sub通信モデルに限定されず、他の通信モデルにも適用し得る。【００１３】
メッセージがキュー１３６に届くと、キュー１３６はコンシューマ１４０に直ちにメッセージを送信しようと試みる。すぐに配信できない場合、キュー１３６は、メッセージを保持し、コンシューマ１４０の準備が整うのを待つ。コンシューマ１４０が存在しない場合、キュー１３６はパブリッシャ１１０にメッセージを返すこともできる。【００１４】
キュー１３６がコンシューマ１４０へのメッセージの配信を完了すると、キュー１３６からメッセージを削除する。メッセージを削除するタイミングは、一例として、コンシューマ１４０から返信するacknowledgedメッセージackに基づいて制御することができる。【００１５】
コンシューマ１４０は、メッセージ配信直後にackを返すこともできる。また、コンシューマ１４０は、メッセージを適切に処理してからackを返すこともできる。さらに、コンシューマ１４０は、メッセージを拒否するnackを返すこともできる。【００１６】
特許文献１には、パブリッシャ・クライアントおよびサブスクライバ・クライアントならびにミドルウェア間のメッセージの制御フローが記載されている。【００１７】
また、特許文献２には、オープンフロー（OpenFlow、非特許文献２）に基づくコンピュータシステムが記載されている。特許文献２に記載されたコンピュータシステムは、コントローラと、コントローラによりフローエントリが設定されたフローテーブルを保持し、フローエントリに適合する受信パケットに対してフローエントリで規定された中継動作を行うスイッチとを備えている。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特表２０１１−５０５０４８号公報
【特許文献２】特開２０１１−１４６９８２号公報
【非特許文献】
【００１９】
【非特許文献１】"AMQP Advanced Message Queuing Protocol, Protocol Specification," Version 0-9-1, 13 November 2008.
【非特許文献２】"OpenFlow Switch Specification," Version 1.1.0 Implemented (Wire Protocol 0x02), February 28, 2011.
【発明の概要】
【発明が解決しようとする課題】
【００２０】
上記の特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。【００２１】
ＡＭＱＰに基づくメッセージ配信システム（図７）によると、メッセージがパブリッシャ１１０から発信されてコンシューマ１４０が受信するまでのホップ数が大きい（すなわち、レイテンシが大きい）という問題がある。【００２２】
図８は、かかる問題について説明するための図である。図８を参照すると、エクスチェンジ１３４とキュー１３６がサーバ（ブローカ（Broker）ともいう。）１３０上に存在するため、メッセージはパブリッシャ１１０ａ〜１１０ｃからスイッチ１２０を経由して、一旦、サーバ１３０が受信する。さらに、エクスチェンジ１３４が宛先キューにメッセージを格納し、メッセージは再度スイッチ１２０を経由してコンシューマ１４０ａ〜１４０ｃに配信される。このとき、メッセージは、スイッチ１２０を少なくとも２回経由することになる。なお、スイッチが多段になっている場合のように、ネットワークの構成によっては、メッセージは３回以上スイッチを経由することもある。したがって、図７に示したメッセージ配信システムによると、ホップ数の増大を招き、レイテンシが増大する。【００２３】
ところで、メッセージ指向ミドルウェアにおけるメッセージ配信では、メッセージの配信先の決定にＯＳＩ（Open Systems Interconnection）参照モデルのアプリケーション層（レイヤ７、L7）の情報（例えば、タグ）を利用し、柔軟な配信を実現している。したがって、一般的なレイヤ２（L2）、レイヤ３（L3）の情報に基づいてメッセージをやり取りするネットワークスイッチ（ルータ）に対して、エクスチェンジに相当する機能を搭載することは困難であり、単純に図８のサーバ（ブローカ）１３０を省略することは不可能である。【００２４】
また、図７に示したメッセージ配信システムによると、サーバ（ブローカ）１３０がボトルネックとなるおそれがある。【００２５】
その理由は、エクスチェンジ１３４とキュー１３６がサーバ１３０上に存在するため、すべてのメッセージは必ずサーバ１３０を経由するからである。特に、キュー１３６に関わるメッセージのコピー、キュー１３６に格納されているメッセージの管理等の処理の負荷が大きい。メッセージの量が多い場合、キューの数が多い場合（例えば、コンシューマ（サブスクライバ）の数が多い場合）、コンシューマの処理性能がメッセージの入ってくる速度に対して低く、キュー長が伸びる場合等において、サーバ１３０にかかる負荷が顕著に増大する。【００２６】
以上のように、図７および図８に示した関連技術によると、メッセージ指向ミドルウェアにおけるメッセージ配信において、配信先の決定を行うサーバ１３０がメッセージを中継することによる、メッセージのホップ数の増加および負荷の集中によるボトルネック化が問題となる。【００２７】
そこで、メッセージがパブリッシャから発信されてサブスクライバが受信するまでのホップ数を小さくする（すなわち、レイテンシを小さくする）とともに、サーバがボトルネックとなることを回避することが要望される。本発明の目的は、かかる要望に寄与するコントローラ、メッセージ配信システム、メッセージ配信方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００２８】
本発明の第１の視点に係るコントローラは、
メッセージを転送するスイッチを制御するコントローラであって、
第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取ると、該タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと該通知を送出した該第２のノードの物理アドレスとを対応付けて保持する保持手段と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する設定手段と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答するタグ解決手段と、を備える。【００２９】
本発明の第２の視点に係るメッセージ配信システムは、
タグが付加されたメッセージを配信する第１のノードと、
前記メッセージを転送するスイッチと、
前記スイッチによる前記メッセージの転送を制御するコントローラと、
前記メッセージを購読する第２のノードと、を備え、
前記第２のノードは、前記タグを含む通知を前記コントローラに送出し、
前記コントローラは、前記通知を受け取ると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持し、該仮想アドレスと該物理アドレスとの対応付けを前記スイッチに設定し、
前記第１のノードは、前記タグに対応する仮想アドレスを前記コントローラに問い合わせて、得られた仮想アドレスを宛先として前記メッセージを送出し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する。【００３０】
本発明の第３の視点に係るメッセージ配信方法は、
メッセージを転送するスイッチを制御するコントローラが、第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取る工程と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持する工程と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する工程と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答する工程と、を含む。【００３１】
本発明の第４の視点に係るプログラムは、
メッセージを転送するスイッチを制御するコンピュータに対して、
第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取る処理と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持する処理と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する処理と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答する処理と、を実行させる。
なお、プログラムは、非トランジエントなコンピュータ読み取り可能な記録媒体（non-transitory computer-readable storage medium）に記録されたプログラム製品として提供することができる。
【発明の効果】
【００３２】
本発明に係るコントローラ、メッセージ配信システム、メッセージ配信方法およびプログラムによると、メッセージがパブリッシャから発信されてサブスクライバが受信するまでのホップ数を小さくする（すなわち、レイテンシを小さくする）とともに、サーバがボトルネックとなることを回避することが可能となる。
【図面の簡単な説明】
【００３３】
【図１】第１の実施形態に係るメッセージ配信システムの構成を一例として示すブロック図である。
【図２】配信テーブルの構成を一例として示す図である。
【図３】第１の実施形態に係るメッセージ配信システムの効果について説明するための図である。
【図４】第１の実施形態に係るメッセージ配信システムの動作を一例として示す図である。
【図５】第２の実施形態に係るメッセージ配信システムの構成を一例として示すブロック図である。
【図６】第２の実施形態に係るメッセージ配信システムの動作を一例として示す図である。
【図７】メッセージ指向ミドルウェアの一例であるＡＭＱＰの構成を示すブロック図である。
【図８】メッセージ指向ミドルウェアにおける問題点について説明するための図である。
【発明を実施するための形態】
【００３４】
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００３５】
図１は、本発明に係るメッセージ配信システムの構成を一例として示すブロック図である。図１を参照すると、メッセージ配信システムは、タグが付加されたメッセージを配信する第１のノード（パブリッシャ１０）と、メッセージを転送するスイッチ（２０）と、スイッチ（２０）によるメッセージの転送を制御するコントローラ（３０）と、メッセージを購読する第２のノード（サブスクライバ４０）と、を備えている。
【００３６】
コントローラ（３０）は、第１のノード（１０）により配信されるメッセージであってタグが付加されたメッセージを購読する第２のノード（４０）から、タグを含む通知を受け取ると、タグと仮想アドレスとを対応付けて保持するとともに、仮想アドレスと通知を送出した第２のノード（４０）の物理アドレスとを対応付けて（例えば、配信テーブル３２として）保持する保持手段（３３）と、仮想アドレスと物理アドレスとの対応付けをスイッチ（２０）に設定する設定手段（３６）と、第１のノード（１０）からタグに対応付けられた仮想アドレスの問い合わせを受けると、仮想アドレスを応答するタグ解決手段（３４）と、を備えている。
【００３７】
第２のノード（４０）は、タグを含む通知をコントローラ（３０）に送出する。コントローラ（３０）は、通知を受け取ると、タグと仮想アドレスとを対応付けて保持するとともに、仮想アドレスと第２のノード（４０）の物理アドレスとを対応付けて保持し、仮想アドレスと物理アドレスとの対応付けをスイッチ（２０）に設定する。第１のノード（１０）は、タグに対応する仮想アドレスをコントローラ（３０）に問い合わせて、得られた仮想アドレスを宛先としてメッセージを送出する。スイッチ（２０）は、第１のノード（１０）からメッセージを受け取ると、メッセージの宛先に含まれる仮想アドレスを仮想アドレスに対応付けられた物理アドレスに書き換えて転送する。以上により、第２のノード（４０）に対するメッセージの配信が行われる。
【００３８】
かかるメッセージ配信システムによると、メッセージが第１のノード（パブリッシャ）から発信されて第２のノード（サブスクライバ）が受信するまでのホップ数を小さくする（すなわち、レイテンシを小さくする）とともに、特定のノード（例えば、関連技術におけるサーバ）がボトルネックとなることを回避することが可能となる。
【００３９】
図５を参照すると、メッセージ配信システムは、メッセージを一時的に蓄積する第３のノード（キュー９０）をさらに備えていてもよい。このとき、第２のノード（サブスクライバ８０）は、第３のノード（９０）の物理アドレスとタグを含む通知をコントローラ（７０）に送出する。コントローラ（７０）は、通知を受けると、タグと仮想アドレスとを対応付けて保持するとともに、仮想アドレスと第３のノード（９０）の物理アドレスとを対応付けて保持し、仮想アドレスと第３のノード（９０）の物理アドレスとの対応付けをスイッチ（６０）に設定する。スイッチ（６０）は、第１のノード（パブリッシャ５０）からメッセージを受け取ると、メッセージの宛先に含まれる仮想アドレスを仮想アドレスに対応付けられた第３のノード（９０）の物理アドレスに書き換えて転送する。このとき、第２のノード（８０）は、キュー（９０）を介して、第１のノード（５０）からメッセージの配信を受けることができる。
【００４０】
かかるメッセージ配信システムによると、第３のノード（キュー９０）を設けたことにより、第１のノード（５０）と第２のノード（８０）間の疎結合性および非同期性を実現することができる。また、第３のノード（キュー９０）をエクスチェンジとは切り離した形で複数設置することができるため、キューがボトルネックとなることを回避することができる。
【００４１】
なお、本発明において、下記の形態が可能である。
［形態１］
上記第１の視点に係るコントローラのとおりである。
［形態２］
前記第１のノードは、前記問合せによって得られた仮想アドレスを宛先として前記メッセージを送出し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを、自身に設定された該仮想アドレスに対応付けられた物理アドレスに書き換えて転送してもよい。
［形態３］
前記保持手段は、前記メッセージを一時的に蓄積する第３のノードの物理アドレスと前記タグを含む通知を前記第２のノードから受け取ると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持し、
前記設定手段は、前記仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定してもよい。
［形態４］
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送してもよい。
［形態５］
前記タグは、ＯＳＩ（Open Systems Interconnection）参照モデルのアプリケーション層で設定される配信先を決定するための情報であってもよい。
［形態６］
前記仮想アドレスは、仮想ＩＰアドレスと仮想ポート番号との組みであり、
前記物理アドレスは、物理ＩＰアドレスと物理ポート番号との組みであってもよい。
［形態７］
上記第２の視点に係るメッセージ配信システムのとおりである。
［形態８］
前記メッセージ配信システムは、前記メッセージを一時的に蓄積する第３のノードをさらに備え、
前記第２のノードは、前記第３のノードの物理アドレスと前記タグを含む通知を前記コントローラに送出し、
前記コントローラは、前記通知を受けると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持し、該仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送してもよい。
［形態９］
上記第３の視点に係るメッセージ配信方法のとおりである。
［形態１０］
前記メッセージ配信方法は、前記第１のノードが、前記問合せによって得られた仮想アドレスを宛先として前記メッセージを送出する工程と、
前記スイッチが、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを、自身に設定された該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する工程と、を含んでもよい。
［形態１１］
前記メッセージ配信方法は、前記コントローラが、前記メッセージを一時的に蓄積する第３のノードの物理アドレスと前記タグを含む通知を前記第２のノードから受け取る工程と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持する工程と、
前記仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定する工程と、を含んでもよい。
［形態１２］
前記メッセージ配信方法は、前記スイッチが、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送する工程を含んでもよい。
［形態１３］
上記第４の視点に係るプログラムのとおりである。
［形態１４］
前記プログラムは、前記メッセージを一時的に蓄積する第３のノードの物理アドレスと前記タグを含む通知を前記第２のノードから受け取る処理と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持する処理と、
前記仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定する処理と、を前記コンピュータに実行させてもよい。
【００４２】
（実施形態１）
第１の実施形態に係るメッセージ配信システムについて、図面を参照して詳細に説明する。
【００４３】
図１は、本実施形態に係るメッセージ配信システムの構成を一例として示すブロック図である。メッセージ配信システムは、一例として、メッセージ指向ミドルウェアとして実現することができる。
【００４４】
図１を参照すると、メッセージ配信システムは、メッセージの送信を行うパブリッシャ（Publisher）１０と、メッセージの受信を行うサブスクライバ（Subscriber）４０と、メッセージを転送するスイッチ２０と、スイッチ２０を制御するスイッチコントローラ（以下、「コントローラ」という。）３０と、を備えている。パブリッシャ１０およびサブスクライバ４０は、それぞれ、プロキシ（Proxy）１２、４２を備えている。プロキシ１２、４２は、Pub-Sub通信のインタフェースを踏襲しつつ、Pub-Sub間の通信を本実施形態の固有の手順に置き換える。
【００４５】
コントローラ３０は、メッセージに付加されるタグと配信先サブスクライバの対応付けを記録した配信テーブル３２を保持する保持手段３３と、配信テーブル３２を用いてタグから配信先サブスクライバを求めるタグ解決手段３４と、スイッチ２０の経路設定を行う設定手段３６とを備えている。
【００４６】
スイッチ２０として、例えば、オープンフロー・スイッチ（OpenFlow Switch）のように、ＯＳＩ参照モデルのレイヤ４（L4）までの情報を元にメッセージのやり取りを行い、かつ、スイッチの経路制御を外部のコントローラによってソフトウェア的に変更可能なスイッチを利用することができる。
【００４７】
なお、図１においては、論理的な接続のみが記載され、物理的な接続は省略されている。パブリッシャ１０、コントローラ３０およびサブスクライバ４０は、いずれもスイッチ２０に物理的に結線されており、論理的にはそれぞれの間で通信することが可能である。
【００４８】
パブリッシャ１０がメッセージを送信する際、メッセージには配信先を決定するためのタグが付加されている。パブリッシャ１０はプロキシ１２を利用してコントローラ３０から該当タグの付加されたメッセージに対応する仮想ＩＰアドレスと仮想ポート番号の組み（以下、「仮想アドレス」という。）を取得する。
【００４９】
図２は、配信テーブル３２の構成を一例として示す図である。図２を参照すると、配信テーブル３２は、２つのテーブル３２ａ、３２ｂを有する。テーブル３２ａは、タグ（Tag）に対応する仮想アドレス（Vaddr）を保持する。一方、テーブル３２ｂは、仮想アドレスに対応する物理IPアドレスと物理ポート番号の組み（以下、「物理アドレス」という。）（Paddr）を保持する。
【００５０】
プロキシ１２は、仮想アドレスを宛先としてメッセージを送信する。
【００５１】
スイッチ２０がコントローラ３０によって適切に経路制御されている場合には、仮想アドレスに宛てたメッセージはスイッチ２０によって対応する物理アドレス宛に送信され、最終的に、当該タグの付加されたメッセージを受信すべきサブスクライバ４０に配信される。
【００５２】
サブスクライバ４０は、メッセージの受信を開始する（Subscribeする）際、プロキシ４２を利用して、コントローラ３０にSubscribeメッセージを送る。Subscribeメッセージを受信したコントローラ３０は、Subscribe時に指定されたタグに対応する仮想アドレスが存在しない場合、ユニークな仮想アドレスを生成する。コントローラ３０は、生成した仮想アドレスを、仮想アドレスに対応する物理アドレスとともに、配信テーブル３２に含まれるテーブル３２ａ（図２）に対してエントリとして登録する。
【００５３】
図３は、本実施形態に係るメッセージ配信システムの動作を一例として示す図である。本実施形態の構成によると、図８に示した関連技術の構成とは異なり、エクスチェンジ１３４に相当する機能をスイッチ２０とコントローラ３０で実現し、キュー１３６を削除したことで、ボトルネックを解消することが可能となる。
【００５４】
次に、本実施形態に係るメッセージ配信システムの全体の動作を詳細に説明する。図４は、本実施形態に係るメッセージ配信システムの動作を一例として示す図である。
【００５５】
図４を参照すると、サブスクライバ４０は、タグの付けられたメッセージを受信（購読、Subscribe）すること伝えるSubscribeメッセージを、プロキシ（Proxy）４２を介してコントローラ３０上のタグ解決手段３４に送出する（ステップＡ１）。Subscribeメッセージは、タグを含む。
【００５６】
タグ解決手段３４は、配信テーブル３２を参照して、タグに対応するエントリが既に存在するか否かを確認し、存在しない場合、対応するユニークな仮想アドレスを生成して、タグに対応付けて登録する（ステップＡ２）。一方、タグに対応するエントリが存在する場合には、当該エントリに記載されたタグと仮想アドレスとの対応付けを利用する。
【００５７】
次に、タグ解決手段３４は、仮想アドレスに対してサブスクライブ（Subscribe）してきたサブスクライバ４０の物理アドレスを登録する（ステップＡ３）。すでにサブスクライブしている他のサブスクライバが存在する場合、タグ解決手段３４は、エントリへの追加を行う。なお、オープンフロー（OpenFlow）においては、エントリは「オープンフロー・エントリ（OpenFlow Entry）」と呼ばれる。
【００５８】
タグ解決手段３４は、設定手段３６を用いて、スイッチ（オープンフローの場合には、「オープンフロー・スイッチ」）２０に対してエントリに基づいて経路設定を行う（ステップＡ４）。
【００５９】
パブリッシャ１０は、メッセージを送信する際、プロキシ１２を介して、メッセージに付加されたタグに対応する仮想アドレスを解決する（ステップＡ５）。パブリッシャ１０上のプロキシ１２がタグに対応する仮想アドレスをコントローラ３０に問い合わせると、タグ解決手段３４は配信テーブル３２に含まれるテーブル３２ａを参照して、タグに対応する仮想アドレスを応答する（ステップＡ５）。
【００６０】
次に、パブリッシャ１０は、仮想アドレスを宛先としてメッセージを送信する（ステップＡ６）。
【００６１】
メッセージを受け取ったスイッチ２０は、設定された経路情報を元に仮想アドレスを物理アドレスに書き換えて、サブスクライバに配信する（ステップＡ７）。仮想アドレスが複数の物理アドレスに展開された場合には、スイッチ２０は複数のサブスクライバに対してメッセージを配信する。
【００６２】
ステップＡ５でタグの解決ができなかった場合、コントローラ３０はパブリッシャ１０にエラーを返すようにしてもよい。また、ステップＡ７で宛先の書き換えが行えなかった場合、スイッチ２０はパブリッシャ１０にエラーを返すようにしてもよい。
【００６３】
本実施形態によると、関連技術（図８）におけるサーバ１３０上のエクスチェンジ１３４の機能をスイッチ２０とコントローラ３０によって実現し、キュー１３６を削除することができる。かかる構成によると、メッセージ配信の際に必ずサーバ１３０を経由することによるホップ数の増大、ホップ数の増大によるレイテンシの増大を回避することが可能となる。
【００６４】
また、本実施形態によると、仮想アドレスを使用し、物理アドレスへの解決をスイッチ２０に行わせることで、メッセージのコピーがパブリッシャ１０側ではなくスイッチ２０側で行うことができる。したがって、パブリッシャ１０とスイッチ２０間の通信量を抑えることが可能となる。
【００６５】
本実施形態のメッセージ配信システムでは、コントローラ３０は、タグから仮想アドレスへの対応と仮想アドレスから物理アドレスへの対応を管理する配信テーブル３２を備え、仮想アドレスから物理アドレスへの変換をスイッチ２０に行わせるように制御する。また、パブリッシャ１０は、メッセージの送信に際して、タグから仮想アドレスを求め、仮想アドレス宛にメッセージを送信する。さらに、メッセージを受信したスイッチ２０は、メッセージの宛先を仮想アドレスから物理アドレスに書き換えた上でサブスクライバ４０に配信する。
【００６６】
これにより、関連技術（図７、図８）におけるエクスチェンジ１３４は、スイッチ２０とコントローラ３０で代替される。なお、スイッチ２０として、一例として、オープンフロー対応スイッチのように外部から経路制御を変更可能であるスイッチを採用することができる。
【００６７】
かかるメッセージ配信システムによると、メッセージがパブリッシャ１０から発信されてサブスクライバ４０が受信するまでのホップ数を、関連技術（図７、図８）と比較して小さくし、レイテンシを小さくすることが可能となる。
【００６８】
（実施形態２）
次に、第２の実施形態に係るメッセージ配信システムについて、図面を参照して説明する。
【００６９】
図５は、本実施形態に係るメッセージ配信システムの構成を一例として示すブロック図である。メッセージ配信システムは、一例として、メッセージ指向ミドルウェアとして実現することができる。
【００７０】
図５を参照すると、メッセージ配信システムは、メッセージの送信を行うパブリッシャ５０と、メッセージの受信を行うサブスクライバ８０と、メッセージを転送するスイッチ６０と、スイッチ６０を制御するコントローラ７０と、を備えている。パブリッシャ５０およびサブスクライバ８０は、それぞれ、プロキシ５２、８２を備えている。プロキシ５２、８２は、Pub-Sub通信のインタフェースを踏襲しつつ、Pub-Sub間の通信を本実施形態の固有の手順に置き換える。
【００７１】
コントローラ７０は、メッセージに付加されるタグと配信先サブスクライバの対応付けを記録した配信テーブル７２を保持する保持手段７３と、配信テーブル７２を用いてタグから配信先サブスクライバを求めるタグ解決手段７４と、スイッチ６０の経路設定を行う設定手段７６とを備えている。
【００７２】
スイッチ６０として、例えば、オープンフロー・スイッチのように、ＯＳＩ参照モデルのレイヤ４（L4）までの情報を元にメッセージのやり取りを行い、かつ、スイッチの経路制御を外部のコントローラによってソフトウェア的に変更可能なスイッチを利用することができる。
【００７３】
図５を参照すると、本実施形態のメッセージ配信システムでは、第１の実施形態に係るメッセージ配信システム（図１）に対して、キュー（Queue）９０が追加されている。キュー９０は、サブスクライバ８０と１対１で対応していてもよいし、複数のサブスクライバに対して１つのキューを対応させてもよい。さらに、１つのサブスクライバに対して、複数のキューを設けてもよい。
【００７４】
次に、本実施形態に係るメッセージ配信システムの全体の動作を詳細に説明する。図６は、本実施形態に係るメッセージ配信システムの動作を一例として示す図である。
【００７５】
図６を参照すると、まず、サブスクライバ８０はキュー９０に接続する（ステップＢ１）。
【００７６】
次に、サブスクライバ８０は、タグの付けられたメッセージを受信（購読、Subscribe）することを伝えるSubscribeメッセージを、プロキシ（Proxy）８２を介して、コントローラ７０上のタグ解決手段７４に送出する（ステップＢ２）。Subscribeメッセージは、タグとキュー９０のアドレスとを含む。
【００７７】
タグ解決手段７４は、配信テーブル７２を参照して、タグに対応するエントリが既に存在するか否かを確認し、存在しない場合、対応するユニークな仮想アドレスを生成して、タグに対応付けて登録する（ステップＢ３）。一方、タグに対応するエントリが存在する場合には、エントリに記載されたタグと仮想アドレスとの対応付けを利用する。
【００７８】
次に、タグ解決手段７４は、仮想アドレスに対して、キュー９０のアドレスを対応付けて登録する（ステップＢ４）。
【００７９】
タグ解決手段７４は、設定手段７６を用いて、スイッチ６０に対してエントリに基づいて経路設定を行う（ステップＢ５）。
【００８０】
パブリッシャ５０は、メッセージを送信する際、プロキシ５２を介してメッセージに付加されたタグに対応する仮想アドレスを解決する（ステップＢ６）。パブリッシャ５０上のプロキシ５２がタグに対応する仮想アドレスをコントローラ７０に問い合わせると、タグ解決手段７４は配信テーブル７２に含まれるテーブル７２ａを参照して、タグに対応する仮想アドレスを応答する（ステップＢ６）。
【００８１】
次に、パブリッシャ５０は、仮想アドレスを宛先としてメッセージを送信する（ステップＢ７）。
【００８２】
メッセージを受け取ったスイッチ６０は、設定された経路情報を元に仮想アドレスを物理アドレスに書き換えて、キュー９０に配信する（ステップＢ８）。仮想アドレスが複数のキューの物理アドレスに展開された場合、スイッチ６０は複数のキューに対してメッセージを配信する。
【００８３】
ステップＢ６でタグの解決ができなかった場合、コントローラ７０はパブリッシャ５０にエラーを返すようにしてもよい。また、ステップＢ８で宛先の書き換えが行えなかった場合、スイッチ６０はパブリッシャ５０にエラーを返すようにしてもよい。
【００８４】
本実施形態に係るメッセージ配信システムの動作（図６）は、サブスクライバ８０がキュー９０に接続する点（ステップＢ１）、配信テーブル７２には仮想アドレスとキューのアドレスが登録されている点（ステップＢ４）、パブリッシャ５０によって送信されたメッセージはスイッチ６０によってキュー９０に配信される点（ステップＢ８）、サブスクライバ８０はキュー９０からメッセージの配信を受ける点において、第１の実施形態に係るメッセージ配信システムの動作（図４）と相違する。
【００８５】
本実施形態では、キュー９０を設けることによって、第１の実施形態では失われていたコンポーネント間の疎結合性および非同期性を実現することができる。また、関連技術（図７、図８）の方式とは異なり、キュー９０をエクスチェンジとは切り離した形で複数設置することができるため、キューがボトルネックとなることを回避することができる。
【００８６】
第１および第２の実施形態に係るメッセージ配信システムは、例えば、L2〜L3ないしはL4ネットワークにおいて、アプリケーション層（L7）の情報を用いてメッセージの配信制御を行うようなシステムに適用することができる。なお、第１の実施形態および第２の実施形態に係るメッセージ配信システムは、アプリケーションの求める特性に応じて適宜使い分けることが望ましい。
【００８７】
上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００８８】
１０、５０、１０ａ〜１０ｃ    パブリッシャ
１２、４２、５２、８２    プロキシ
２０、６０、１２０    スイッチ
３０、７０    コントローラ
３２、７２    配信テーブル
３２ａ、３２ｂ、７２ａ、７２ｂ    テーブル
３３、７３    保持手段
３４、７４    タグ解決手段
３６、７６    設定手段
４０、４０ａ〜４０ｃ、８０  サブスクライバ
９０    キュー
１１０、１１０ａ〜１１０ｃ    パブリッシャ（パブリッシャ・アプリケーション）
１３０    サーバ（ブローカ）
１３２    仮想ホスト
１３４    エクスチェンジ
１３６    キュー（メッセージ・キュー）
１４０、１４０ａ〜１４０ｃ    サブスクライバ（コンシューマ・アプリケーション）
【図１】
2014098185.tif 000003
【図２】
2014098185.tif 000004
【図３】
2014098185.tif 000005
【図４】
2014098185.tif 000006
【図５】
2014098185.tif 000007
【図６】
2014098185.tif 000008
【図７】
2014098185.tif 000009
【図８】
2014098185.tif 000010
【手続補正書】
【提出日】平成27年6月19日(2015.6.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メッセージを転送するスイッチを制御するコントローラであって、
第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取ると、該タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと該通知を送出した該第２のノードの物理アドレスとを対応付けて保持する保持手段と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する設定手段と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答するタグ解決手段と、を備える、コントローラ。
【請求項２】
前記第１のノードは、前記問合せによって得られた仮想アドレスを宛先として前記メッセージを送出し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを、自身に設定された該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する、請求項１に記載のコントローラ。
【請求項３】
前記保持手段は、前記メッセージを一時的に蓄積する第３のノードの物理アドレスと前記タグを含む通知を前記第２のノードから受け取ると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記第３のノードの物理アドレスとを対応付けて保持し、
前記設定手段は、前記仮想アドレスと前記第３のノードの物理アドレスとの対応付けを前記スイッチに設定する、請求項１または２に記載のコントローラ。
【請求項４】
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた前記第３のノードの物理アドレスに書き換えて転送する、請求項３に記載のコントローラ。
【請求項５】
前記タグは、ＯＳＩ（Open Systems Interconnection）参照モデルのアプリケーション層で設定される配信先を決定するための情報である、請求項１ないし４のいずれか１項に記載のコントローラ。
【請求項６】
前記仮想アドレスは、仮想ＩＰアドレスと仮想ポート番号との組みであり、
前記物理アドレスは、物理ＩＰアドレスと物理ポート番号との組みである、請求項１ないし５のいずれか１項に記載のコントローラ。
【請求項７】
タグが付加されたメッセージを配信する第１のノードと、
前記メッセージを転送するスイッチと、
前記スイッチによる前記メッセージの転送を制御するコントローラと、
前記メッセージを購読する第２のノードと、を備え、
前記第２のノードは、前記タグを含む通知を前記コントローラに送出し、
前記コントローラは、前記通知を受け取ると、前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持し、該仮想アドレスと該物理アドレスとの対応付けを前記スイッチに設定し、
前記第１のノードは、前記タグに対応する仮想アドレスを前記コントローラに問い合わせて、得られた仮想アドレスを宛先として前記メッセージを送出し、
前記スイッチは、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する、メッセージ配信システム。
【請求項８】
メッセージを転送するスイッチを制御するコントローラが、第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取る工程と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持する工程と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する工程と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答する工程と、を含む、メッセージ配信方法。
【請求項９】
前記第１のノードが、前記問合せによって得られた仮想アドレスを宛先として前記メッセージを送出する工程と、
前記スイッチが、前記第１のノードから前記メッセージを受け取ると、前記メッセージの宛先に含まれる仮想アドレスを、自身に設定された該仮想アドレスに対応付けられた物理アドレスに書き換えて転送する工程と、を含む、請求項８に記載のメッセージ配信方法。
【請求項１０】
メッセージを転送するスイッチを制御するコンピュータに対して、
第１のノードにより配信されるメッセージであってタグが付加されたメッセージを購読する第２のノードから、該タグを含む通知を受け取る処理と、
前記タグと仮想アドレスとを対応付けて保持するとともに、該仮想アドレスと前記通知を送出した前記第２のノードの物理アドレスとを対応付けて保持する処理と、
前記仮想アドレスと前記物理アドレスとの対応付けを前記スイッチに設定する処理と、
前記第１のノードから前記タグに対応付けられた仮想アドレスの問い合わせを受けると、該仮想アドレスを応答する処理と、を実行させる、プログラム。
【国際調査報告】
2014098185.tif 000011
2014098185.tif 000012
2014098185.tif 000013