(57)【要約】【課題】マルチキャストを用いたデータの送信を行うためのエンドホスト側の修正を不要とする。【解決手段】ネットワークスイッチ４は、データの送信先となるエンドホスト６〜８にデータをマルチキャスト送信するためのマルチキャストアドレスと、エンドホスト６のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶する。また、ネットワークスイッチ４は、エンドホスト６を送信先に含むマルチキャストアドレスが付与されたデータを受信すると、マルチキャストアドレスをエンドホスト６のユニキャストアドレスに変更する。そして、ネットワークスイッチ４は、マルチキャストアドレスをユニキャストアドレスに変更したデータを直接接続されたエンドホスト６へ転送する。【選択図】図１
2014107595.tif 000002
【特許請求の範囲】
【請求項１】
データの転送を行う転送装置が有するコンピュータに、
データの送信先となる複数の送信先装置にデータをマルチキャスト送信するためのマルチキャストアドレスと、当該マルチキャストアドレスが示す送信先装置のうち、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶装置に格納し、
前記データを受信した場合は、当該データに付与されたマルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に格納されているか否かを判別し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていない場合は、前記受信したデータをマルチキャスト送信し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されている場合は、前記受信したデータに付与されたマルチキャストアドレスを当該マルチキャストアドレスに対応付けられたユニキャストアドレスに変更し、
前記マルチキャストアドレスをユニキャストアドレスに変更したデータを前記直接接続された送信先装置へ転送する
処理を実行させることを特徴とする転送プログラム。
【請求項２】
前記コンピュータに、前記マルチキャストアドレスが示す複数の送信先装置を辿るように前記データを転送するための送信経路が前記データに含まれている場合は、前記直接接続された送信先装置のみにデータを転送するための送信経路に変更する処理をさらに実行させることを特徴とする請求項１に記載の転送プログラム。
【請求項３】
コンピュータに、
データの送信元となる送信元装置からデータの送信先となる複数の送信先装置の通知を受信すると、データを当該複数の送信先装置へマルチキャスト送信するためのマルチキャストアドレスを前記送信元装置に通知し、
前記送信元装置から前記複数の送信先装置まで前記データを転送する１つ又は複数の転送装置のうち、前記送信先装置と直接接続された転送装置を特定し、
前記データに付与されたマルチキャストアドレスを、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスに変更してから、当該直接接続された送信先装置へデータを転送するように、前記特定した転送装置を設定する
処理を実行させることを特徴とする設定プログラム。
【請求項４】
前記特定した転送装置が接続されている前記送信先装置のポートを識別する処理を前記コンピュータにさらに実行させ、
前記マルチキャストアドレスを前記ユニキャストアドレスに変更したデータを、前記識別したポートから出力するように、前記特定した転送装置を設定する
処理を実行させることを特徴とする請求項３に記載の設定プログラム。
【請求項５】
各転送装置と各送信先装置との接続関係を示すトポロジ情報を用いて、前記データを転送する１つ又は複数の転送装置を識別し、当該識別した転送装置のうち前記送信先装置と直接接続された転送装置を特定する処理とを実行させることを特徴とする請求項３または４に記載の設定プログラム。
【請求項６】
コンピュータに、
複数の送信先装置にデータをマルチキャスト送信する場合は、当該複数の送信先装置に前記データをマルチキャスト送信するためのマルチキャストアドレスを当該データに付与し、
直接接続されている送信先装置へデータを転送する際に前記マルチキャストアドレスを当該直接接続されている送信先装置のみへデータを送信するためのユニキャストアドレスに変更してから転送する転送装置が含まれた経路を介して、前記データをマルチキャスト送信する
処理を実行させることを特徴とする送信プログラム。
【請求項７】
前記マルチキャスト送信したデータの送信先となる送信先装置から、当該データに対する応答を受信したか否かを判別し、
前記送信先装置から前記応答を受信しなかった場合には、当該応答を受信していない送信先装置のみに対して、前記データを再送する
処理をさらに実行させることを特徴とする請求項６に記載の送信プログラム。
【請求項８】
データの送信先となる複数の前記送信先装置にデータを送信するためのマルチキャストアドレスと、前記送信先装置のうち、直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶する記憶部と、
前記送信先装置へ送信するデータを受信した場合は、当該データに付与されたマルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶部に格納されているか否かを判別する判別部と、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていないと前記判別部が判別した場合は、前記受信したデータをマルチキャスト送信する送信部と、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていると前記判別部が判別した場合は、前記受信したデータに付与されたマルチキャストアドレスを、前記記憶部が当該マルチキャストアドレスと対応付けて記憶するユニキャストアドレスに変更する変更部と、
前記変更部が、マルチキャストアドレスをユニキャストアドレスに変更したデータを前記直接接続された送信先装置に転送する転送部と
を有することを特徴とする転送装置。
【請求項９】
データの送信元となる送信元装置からデータの送信先となる複数の送信先装置の通知を受信すると、データを当該複数の送信先装置へマルチキャスト送信するためのマルチキャストアドレスを前記送信元装置に通知する通知部と、
前記送信元装置から前記複数の送信先装置まで前記データを転送する１つ又は複数の転送装置のうち、前記送信先装置と直接接続された転送装置を特定する特定部と、
前記通知部が通知したマルチキャストアドレスを、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスに変更してから、当該直接接続された送信先装置へデータを転送するように、前記特定部が特定した転送装置を設定する設定部と
を有することを特徴とする設定装置。
【請求項１０】
複数の送信先装置にデータをマルチキャスト送信する場合は、当該複数の送信先装置に前記データをマルチキャスト送信するためのマルチキャストアドレスを当該データに付与する付与部と、
直接接続された送信先装置に転送する際に、前記付与部が付与したマルチキャストアドレスを、当該直接接続された送信先装置へのみ前記データを送信するためのユニキャストアドレスに変更してから転送する転送装置を含んだ転送経路を介して、前記データをマルチキャスト送信する送信部と
を有することを特徴とする送信装置。
【請求項１１】
データの転送を行う転送装置が、
データの送信先となる複数の送信先装置にデータをマルチキャスト送信するためのマルチキャストアドレスと、当該マルチキャストアドレスが示す送信先装置のうち、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶装置に格納し、
前記データを受信した場合は、当該データに付与されたマルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に格納されているか否かを判別し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていない場合は、前記受信したデータをマルチキャスト送信し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されている場合は、前記受信したデータに付与されたマルチキャストアドレスを当該マルチキャストアドレスに対応付けられたユニキャストアドレスに変更し、
前記マルチキャストアドレスをユニキャストアドレスに変更したデータを前記直接接続された送信先装置へ転送する
処理を実行することを特徴とする転送方法。
【請求項１２】
データを転送する転送装置の設定を行う設定装置が、
データの送信元となる送信元装置からデータの送信先となる複数の送信先装置の通知を受信すると、データを当該複数の送信先装置へマルチキャスト送信するためのマルチキャストアドレスを前記送信元装置に通知し、
前記送信元装置から前記複数の送信先装置まで前記データを転送する１つ又は複数の転送装置のうち、前記送信先装置と直接接続された転送装置を特定し、
前記データに付与されたマルチキャストアドレスを、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスに変更してから、当該直接接続された送信先装置へデータを転送するように、前記特定した転送装置を設定する
処理を実行することを特徴とする設定方法。
【請求項１３】
データを複数の送信先装置へマルチキャスト送信する送信元装置が、
複数の送信先装置にデータをマルチキャスト送信する場合は、当該複数の送信先装置に前記データをマルチキャスト送信するためのマルチキャストアドレスを当該データに付与し、
直接接続されている送信先装置へデータを転送する際に、前記マルチキャストアドレスを当該直接接続されている送信先装置のみへデータを送信するためのユニキャストアドレスに変更してから転送する転送装置が含まれた経路を介して、前記データをマルチキャスト送信する
処理を実行することを特徴とする送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送プログラム、設定プログラム、送信プログラム、転送装置、設定装置、送信装置、転送方法、設定方法および送信方法に関する。
【背景技術】
【０００２】
従来、ネットワークを介してデータの送受信を行う技術が知られている。例えば、１つの送信元装置から複数のエンドホストにデータを転送し、エンドホストが受信したデータを複製することで、データの信頼性や読み書き性能を向上させるストレージシステムが知られている。
【０００３】
図２２は、従来のストレージシステムの一例を説明する図である。図２２に示す例では、ストレージシステム７０は、送信元サーバ７１、複数のネットワークスイッチ７２、７３、複数のエンドホスト７４〜７６を有する。また、ネットワークスイッチ７２は、送信元サーバ７１、エンドホスト７４、ネットワークスイッチ７３と接続されている。また、ネットワークスイッチ７３は、ネットワークスイッチ７２、エンドホスト７５、エンドホスト７６と接続されている。
【０００４】
ここで、送信元サーバ７１は、各エンドホスト７４〜７６にデータを複製するため、マルチユニキャスト、又はチェインを用いたデータの送信を行う。例えば、ストレージシステム７０は、マルチユニキャストを用いてデータの転送を行う場合は、各エンドホスト７４〜７６との間にユニキャスト用のデータパスをそれぞれ生成し、各データパスを介してデータの送信を行う。
【０００５】
詳細には、送信元サーバ７１は、ネットワークスイッチ７２を介して、エンドホスト７４にデータを送信するデータパスを生成する。また、送信元サーバ７１は、ネットワークスイッチ７２、およびネットワークスイッチ７３を介して、エンドホスト７５、およびエンドホスト７６にデータを送信するデータパスをそれぞれ生成する。そして、送信元サーバ７１は、生成した各データパスを介して、データの転送を行う。
【０００６】
また、例えば、送信元サーバ７１は、チェインを用いてデータの転送を行う場合には、ネットワークスイッチ７２を介して、エンドホスト７４にデータを送信する。すると、エンドホスト７４は、データを複製して記憶するとともに、ネットワークスイッチ７２、７３を介して、データをエンドホスト７５に送信する。
【０００７】
また、エンドホスト７５は、エンドホスト７４からデータを受信すると、データを複製して記憶するとともに、ネットワークスイッチ７３を介して、エンドホスト７６にデータを送信する。このように、ストレージシステム７０は、全てのエンドホスト７４〜７６をたどる１つのチェインを辿るようにデータの転送を行うことで、各エンドホスト７４〜７６にデータを転送する。
【０００８】
ここで、効率的なデータ転送を実現するため、ネットワークに接続された送信先装置のうち、特定のグループに属する送信先装置に対してデータを一斉転送するマルチキャストの技術が知られている。
【０００９】
例えば、ストレージシステム７０がマルチキャストの技術を用いてデータの送信を行う場合には、データの送信先となるエンドホストのグループに参加するエンドホストからＩＧＭＰ（Internet  Group  Management  Protocol）リポートが送信される。ここで、各ネットワークスイッチ７２、７３は、ＩＧＭＰリポートを受信すると、データの送信先となるグループを示すマルチキャストアドレスと、ＩＧＭＰリポートを受信したポートとを対応付けてマルチキャストテーブルに登録する。
【００１０】
そして、各ネットワークスイッチ７２、７３は、マルチキャストアドレスが付与されたデータを受信すると、マルチキャストテーブルを参照し、データに付与されたマルチキャストアドレスに対応付けられたポートを識別する。その後、各ネットワークスイッチ７２、７３は、識別したポートからデータを送出する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０００−００４２５１号公報
【非特許文献】
【００１２】
【非特許文献１】Considerations  for  Internet  Group  Management  Protocol  (IGMP)  and  Multicast  Listener  Discovery  (MLD)  Snooping  Switches  (RFC  4541),  M.  Christensen,  K.  Kimball,  F.  Solensky,  May  2006
【非特許文献２】Internet  Management  Group  Protocol,  Version  3  (RFC  3376),  B.  Cain,  S.  Deering,  I.  Kouvelas,  B.  Fenner,  A.  Thyagarajan,  October  2002
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述したマルチキャストの技術では、全てのエンドホスト側で動作するプログラムをマルチキャスト通信に対応させなければならないという問題がある。
【００１４】
例えば、上述したマルチキャストの技術では、マルチキャスト送信の対象となるエンドホストが、ＩＧＭＰリポートを送信するようにエンドホスト側のプログラムを修正しなければならない。また、ストレージシステム７０は、データを送信するエンドホストのグループをデータごとに変更する場合には、データを送信する度にマルチキャストアドレスを動的に割り当てなければならない。
【００１５】
本発明は、マルチキャストを用いたデータの送信を行うためのエンドホスト側の修正を不要とする。
【課題を解決するための手段】
【００１６】
１つの側面では、データの転送を行う転送装置である。転送装置は、データの送信先となる複数の送信先装置にデータをマルチキャスト送信するためのマルチキャストアドレスと、送信先の転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶する。また、転送装置は、データを受信した場合は、データに付与されたマルチキャストアドレスに対応付けられたユニキャストアドレスが記憶装置に格納されているか否かを判別する。また、転送装置は、マルチキャストアドレスに対応付けられたユニキャストアドレスが記憶装置に記憶されていない場合は、受信したデータをマルチキャスト送信する。また、転送装置は、マルチキャストアドレスに対応付けられたユニキャストアドレスが記憶装置に記憶されている場合は、受信したデータに付与されたマルチキャストアドレスをマルチキャストアドレスに対応付けられたユニキャストアドレスに変更する。そして、転送装置は、マルチキャストアドレスをユニキャストアドレスに変更したデータを直接接続された送信先装置へ転送する。
【発明の効果】
【００１７】
１つの実施形態では、マルチキャストを用いたデータの送信を行うためのエンドホスト側の修正を不要とすることができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係わるマルチキャストシステムの一例を説明する図である。
【図２】図２は、実施例１に係わる送信元サーバの機能構成を説明する図である。
【図３】図３は、実施例１に係わるマルチキャスト管理サーバの機能構成を説明する図である。
【図４】図４は、ネットワークトポロジ記憶部が記憶する情報の一例を説明するための図である。
【図５】図５は、マルチキャストアドレス保持部が記憶する情報の一例を説明するための図である。
【図６】図６は、実施例１に係わるネットワークスイッチの機能構成を説明する図である。
【図７】図７は、変更情報の一例を説明する第１の図である。
【図８】図８は、変更情報の一例を説明する第２の図である。
【図９】図９は、転送情報記憶部が記憶する情報の一例を説明する図である。
【図１０】図１０は、変更情報の設定を行う処理を説明する図である。
【図１１】図１１は、ネットワークスイッチがマルチキャストアドレスをユニキャストアドレスに変更する処理を説明する図である。
【図１２】図１２は、ネットワークスイッチがチェインを変更する処理を説明する図である。
【図１３】図１３は、確立するＴＣＰパスを説明する図である。
【図１４】図１４は、送信元サーバが実行するプログラムとカーネルがＴＣＰパスを確立する処理を説明する図である。
【図１５】図１５は、送信元サーバが実行するプログラムとカーネルがデータを送信する処理を説明する図である。
【図１６】図１６は、送信元サーバが実行するプログラムとカーネルがａｃｋを受信する処理の一例を説明する図である。
【図１７】図１７は、データの再送処理を説明する図である。
【図１８】図１８は、送信元サーバが実行するプログラムとカーネルが実行する通常の送信処理の一例を説明するための図である。
【図１９】図１９は、マルチキャスト管理サーバが実行する処理の流れを説明するためのフローチャートである。
【図２０】図２０は、ネットワークスイッチが実行する処理の流れを説明するためのフローチャートである。
【図２１】図２１は、送信先変更プログラムを実行するコンピュータの一例について説明するための図である。
【図２２】図２２は、従来のストレージシステムの一例を説明する図である。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して本願に係る転送プログラム、設定プログラム、送信プログラム、転送装置、設定装置、送信装置、転送方法、設定方法および送信方法について説明する。
【実施例１】
【００２０】
以下の実施例１では、図１を用いて、マルチキャストシステムの一例を説明する。図１は、実施例１に係わるマルチキャストシステムの一例を説明する図である。図１に示す例では、マルチキャストシステム１は、送信元サーバ２、マルチキャスト管理サーバ３、ネットワークスイッチ４、ネットワークスイッチ５、複数のエンドホスト６〜８を有する。
【００２１】
なお、図１では、理解を容易にするため、３つのエンドホスト６〜８を記載したが、実施例は、これに限定されるものではなく、マルチキャストシステム１は、任意の数のエンドホストを有してよい。また、以下の説明では、送信元サーバ２とエンドホスト６〜８との間に、最大で２つのネットワークスイッチ４、５が存在する例について記載するが、実施例はこれに限定されるものではなく、任意の数のネットワークスイッチが任意の段数存在してもよい。また、ネットワークスイッチ５は、ネットワークスイッチ４と同様の機能を発揮するものとして、以下の説明を省略する。
【００２２】
送信元サーバ２は、各エンドホスト６〜８に対してデータの送信を行うサーバであり、例えば、データを冗長化して記憶するストレージシステムのエンドホストである。また、送信元サーバ２は、効率的にデータの送信を行うため、所定のエンドホストの組に対してデータを一括送信するマルチキャスト送信を行う。例えば、送信元サーバ２は、エンドホスト６〜８を含むグループに対してデータをマルチキャスト送信する場合や、エンドホスト６、８を含み、エンドホスト７を含まないグループに対してデータをマルチキャスト送信する場合がある。
【００２３】
ここで、送信元サーバ２は、データをマルチキャスト送信する場合は、送信先のエンドホストを識別し、識別したエンドホストをマルチキャスト管理サーバ３に通知する。また、送信元サーバ２は、データをマルチキャスト送信するためのマルチキャストアドレス、すなわち、データの送信先となるエンドホストのグループを示すマルチキャストアドレスの通知をマルチキャスト管理サーバ３から受信する。そして、送信元サーバ２は、マルチキャスト管理サーバ３から通知されたマルチキャストアドレスをデータの送信先としてデータに付与し、マルチキャストアドレスを付与したデータをネットワークスイッチ４に出力する。
【００２４】
また、送信元サーバ２は、データを送信したエンドホストから送信したデータに対する応答を受信する。そして、送信元サーバ２は、データを送信した全てのエンドホストから応答を受信した場合には、マルチキャスト送信が終了した旨の通知をマルチキャスト管理サーバ３に送信する。また、送信元サーバ２は、データを送信してから所定の時間が経過するまでの間に、応答を受信しなかった場合は、応答を受信していないエンドホストのみに対して、データをユニキャスト送信する。
【００２５】
マルチキャスト管理サーバ３は、送信元サーバ２がデータをマルチキャストする際に用いるマルチキャストアドレスを管理する。具体的には、マルチキャスト管理サーバ３は、送信元サーバ２からデータの送信先となるエンドホストのグループの通知を受信した場合には、使用していないマルチキャストアドレスを識別する。また、マルチキャスト管理サーバ３は、通知されたエンドホストのグループにデータを転送するネットワークスイッチを識別する。すなわち、マルチキャスト管理サーバ３は、エンドホストのグループにデータをマルチキャストする際に、データを転送する経路を識別し、識別した経路に含まれるネットワークスイッチを識別する。
【００２６】
また、マルチキャスト管理サーバ３は、識別したネットワークスイッチのうち、データの送信先となるエンドホストと直接接続されたネットワークスイッチを特定する。そして、マルチキャスト管理サーバ３は、識別したマルチキャストアドレスを、ユニキャストアドレスに変更してから転送するように、特定したネットワークスイッチを設定する。例えば、マルチキャスト管理サーバ３は、識別したマルチキャストアドレスと、特定したネットワークスイッチに直接接続されたエンドホストのみにデータを送信する際のユニキャストアドレスとの組を、特定したネットワークスイッチに通知する。
【００２７】
また、マルチキャスト管理サーバ３は、データを転送する経路に含まれるネットワークスイッチのうち、他のネットワークスイッチにデータを転送するネットワークスイッチを識別する。そして、マルチキャスト管理サーバ３は、識別したネットワークスイッチがデータを転送することができるように、データに付与するマルチキャストアドレスと、データの出力先とを識別したネットワークスイッチに通知する。
【００２８】
その後、マルチキャスト管理サーバ３は、識別したマルチキャストアドレスを、送信元サーバ２に対して通知する。なお、マルチキャスト管理サーバ３は、送信元サーバ２に対して通知したマルチキャストアドレスが使用中である旨を管理し、送信元サーバ２からマルチキャスト送信が終了した旨の通知を受信した場合には、対応するマルチキャストアドレスが使用されていない旨を管理する。
【００２９】
例えば、マルチキャスト管理サーバ３は、送信元サーバ２からエンドホスト６〜８の通知を受信する。すると、マルチキャスト管理サーバ３は、使用されていないマルチキャストアドレス「ｍａ１」を識別する。また、マルチキャスト管理サーバ３は、送信元サーバ２からエンドホスト６〜８にデータを送信する経路に、ネットワークスイッチ４、５が含まれていると判別する。そして、ネットワークスイッチ４がエンドホスト６に直接接続され、ネットワークスイッチ５にエンドホスト７、８が直接接続されていると判別する。また、ネットワークスイッチ４がネットワークスイッチ５にマルチキャスト送信されるデータを転送すると判別する。
【００３０】
このような場合には、マルチキャスト管理サーバ３は、「ｍａ１」が付与されたデータを受信した場合は、「ｍａ１」をエンドホスト６のユニキャストアドレスに変更してエンドホスト６に送信するようネットワークスイッチ４を設定する。また、マルチキャスト管理サーバ３は、「ｍａ１」が付与されたデータをネットワークスイッチ５に送信するようネットワークスイッチ４を設定する。
【００３１】
また、マルチキャスト管理サーバ３は、「ｍａ１」が付与されたデータを受信した場合は、「ｍａ１」をエンドホスト７のユニキャストアドレスに変更してエンドホスト７に送信するようネットワークスイッチ５を設定する。また、マルチキャスト管理サーバ３は、「ｍａ１」をエンドホスト８のユニキャストアドレスに変更してエンドホスト８に送信するようネットワークスイッチ５を設定する。その後、マルチキャスト管理サーバ３は、送信元サーバ２に、マルチキャストアドレス「ｍａ１」を通知する。
【００３２】
ネットワークスイッチ４は、データの転送を行うネットワークスイッチである。また、ネットワークスイッチ４は、マルチキャスト管理サーバ３からの設定にしたがって、データの転送を行う。例えば、ネットワークスイッチ４は、マルチキャスト管理サーバ３から、マルチキャストアドレス「ｍａ１」と、エンドホスト６のユニキャストアドレスとの通知を受信した場合には、「ｍａ１」と、エンドホスト６のユニキャストアドレスとを対応付けて記憶する。
【００３３】
そして、ネットワークスイッチ４は、マルチキャストアドレス「ｍａ１」が付与されたデータを受信した場合は、データに付与されたマルチキャストアドレス「ｍａ１」をエンドホスト６のユニキャストアドレスに変更する。その後、ネットワークスイッチ４は、マルチキャストアドレスをユニキャストアドレスに変更したデータをエンドホスト６に転送する。
【００３４】
また、ネットワークスイッチ４は、マルチキャスト管理サーバ３から、「ｍａ１」が付与されたデータをネットワークスイッチ５に送信するよう設定された場合は、上述したマルチキャストアドレスを変更する処理とともに、データの転送を行う。すなわち、ネットワークスイッチ４は、マルチキャストアドレス「ｍａ１」が付与されたデータをそのままネットワークスイッチ５に送信する。
【００３５】
エンドホスト６〜８は、データの送信先となるエンドホストであり、例えば、ストレージシステムにおけるエンドホストである。また、エンドホスト６〜８は、ネットワークスイッチ４、５からデータを受信した場合には、データを正常に受信した旨を示す応答を送信元サーバ２に対して送信する。このような場合には、各ネットワークスイッチ４、５は、応答を送信元サーバ２に対して送信する。
【００３６】
次に、図２を用いて、送信元サーバ２の機能構成について説明する。図２は、実施例１に係わる送信元サーバの機能構成を説明する図である。図２に示すように、送信元サーバ２は、データ生成部１０、マルチキャストアドレス設定部１１、およびデータ送信部１２を有する。データ生成部１０は、送信対象となるデータの生成を行うとともに、データの送信先となるエンドホストを識別する。
【００３７】
そして、データ生成部１０は、データの送信先が１つのエンドホストである場合には、データの送信先となるエンドホストのユニキャストアドレスと、送信対象となるデータとをデータ送信部１２に出力する、一方、データ生成部１０は、データの送信先となるエンドホストが複数存在する場合は、送信対象となるデータをデータ送信部１２に出力するとともに、識別したエンドホストをマルチキャストアドレス設定部１１に通知する。
【００３８】
マルチキャストアドレス設定部１１は、データ生成部１０からデータの送信先となるエンドホストの通知を受信した場合は、通知されたエンドホストをマルチキャスト管理サーバ３に通知する。このような場合には、マルチキャスト管理サーバ３は、使用していないマルチキャストアドレスを送信元サーバ２に通知する。
【００３９】
データ送信部１２は、データ生成部１０からユニキャストアドレスと送信対象となるデータとを受信した場合には、受信したユニキャストアドレスを送信先アドレスとして、データをネットワークスイッチ４に送信する。また、データ送信部１２は、データ生成部１０から送信対象となるデータを受信し、マルチキャスト管理サーバ３からマルチキャストアドレスの通知を受信した場合には、以下の処理を実行する。すなわち、データ送信部１２は、マルチキャスト管理サーバ３から通知されたマルチキャストアドレスを送信先アドレスとして、データをネットワークスイッチ４に出力する。
【００４０】
また、データ送信部１２は、データをネットワークスイッチ４に出力してから、所定の時間が経過するまでの間に、データの送信先となる全てのエンドホストから応答を受信しなかった場合には、ユニキャストアドレスを用いたデータの再送処理を行う。具体的には、データ送信部１２は、応答を受信しなかったエンドホストのユニキャストアドレスを再送するデータに付与し、ネットワークスイッチ４に出力する。
【００４１】
次に、図３を用いて、マルチキャスト管理サーバ３の機能構成について説明する。図３は、実施例１に係わるマルチキャスト管理サーバの機能構成を説明する図である。図３に示すように、マルチキャスト管理サーバ３は、ネットワーク管理部２０とマルチキャストアドレス設定部２３とを有する。また、ネットワーク管理部２０は、ネットワークトポロジ記憶部２１とネットワークトポロジ管理部２２とを有する、また、マルチキャストアドレス設定部２３は、マルチキャストアドレス保持部２４、マルチキャストアドレス管理部２５、設定部２６を有する。
【００４２】
ネットワークトポロジ記憶部２１は、マルチキャストシステム１が有する送信元サーバ２、各ネットワークスイッチ４、５、エンドホスト６〜８の接続関係を記憶する。例えば、図４は、ネットワークトポロジ記憶部が記憶する情報の一例を説明するための図である。図４に示すように、ネットワークトポロジ記憶部２１は、マルチキャストシステム１が有する各装置の名称と、各装置と直接接続された他の装置の名称とを対応付けて記憶する。
【００４３】
また、図４に示すように、ネットワークトポロジ記憶部２１は、各エンドホスト６〜８にデータをユニキャストする際のユニキャストアドレスを記憶する。また、図４に示すように、ネットワークトポロジ記憶部２１は、ネットワークスイッチ４、５に接続された他の装置がネットワークスイッチ４、５のどのポートに接続されているかを記憶する。
【００４４】
図４に示す例では、ネットワークトポロジ記憶部２１は、送信元サーバ２に、ネットワークスイッチ４が接続されている旨を記憶する。また、ネットワークトポロジ記憶部２１は、ネットワークスイッチ４が有するポート番号「＃４」のポートに送信元サーバ２が接続され、ポート番号「＃３」のポートにネットワークスイッチ５が接続されている旨を記憶する。また、ネットワークトポロジ記憶部２１は、ネットワークスイッチ４が有するポート番号「＃１」のポートにエンドホスト６が接続されている旨を記憶する。
【００４５】
また、ネットワークトポロジ記憶部２１は、ネットワークスイッチ５のポート番号「＃１」のポートにネットワークスイッチ４が接続され、ポート番号「＃２」のポートにエンドホスト７が接続されている旨を記憶する。また、ネットワークトポロジ記憶部２１は、ネットワークスイッチ５のポート番号「＃３」のポートにエンドホスト８が接続されている旨を記憶する。また、ネットワークトポロジ記憶部２１は、エンドホスト６がネットワークスイッチ４に接続されている旨を記憶する。また、ネットワークトポロジ記憶部２１は、エンドホスト７がネットワークスイッチ５に接続され、エンドホスト８がネットワークスイッチ５に接続されている旨を記憶する。
【００４６】
また、図４に示す例では、ネットワークトポロジ記憶部２１は、エンドホスト６のユニキャストアドレスが「１．１．１．１」であり、エンドホスト７のユニキャストアドレスが「２．２．２．２」である旨を記憶する。また、ネットワークトポロジ記憶部２１は、エンドホスト８のユニキャストアドレスが「３．３．３．３」である旨を記憶する。
【００４７】
なお、図４に示す例では、理解を容易にするため、マルチキャストシステム１が有する各装置の名称を記載したが、実施例はこれに限定されるものではなく、ネットワークトポロジ記憶部２１は、各装置を識別する任意の識別情報を記憶してもよい。
【００４８】
図３に戻って、マルチキャストアドレス保持部２４は、マルチキャストアドレスの使用状態を記憶する。例えば、図５は、マルチキャストアドレス保持部が記憶する情報の一例を説明するための図である。図５に示すように、マルチキャストアドレス保持部２４は、マルチキャストアドレスと、マルチキャストアドレスが付与されたデータの送信先となるエンドホストの識別子とを対応付けて記憶する。
【００４９】
例えば、図５に示す例では、「ｍａ１」が「ａ１」、「ａ２」および「ａ３」と対応付けて記憶されている。ここで、「ａ１」とは、エンドホスト６の識別子であり、「ａ２」とは、エンドホスト７の識別子であり、「ａ３」とは、エンドホスト８の識別子である。
【００５０】
このような場合には、マルチキャストシステム１は、「ｍａ１」が付与されたデータをエンドホスト６〜８にマルチキャスト送信する。また、図５に示す例では、「ｍａ２」、および「ｍａ３」が、エンドホストの識別子と対応付けて記憶されていない。このため、マルチキャスト管理サーバ３は、「ｍａ２」、「ｍａ３」が使用されていないマルチキャストアドレスであると判断する。
【００５１】
図３に戻って、ネットワークトポロジ管理部２２は、マルチキャストアドレス管理部２５からデータの送信先となるエンドホストの通知を受信すると、ネットワークトポロジ記憶部２１が記憶する情報を用いて、データの転送を行うネットワークスイッチを識別する。また、ネットワークトポロジ管理部２２は、識別したネットワークスイッチのうち、データの送信先となるエンドホストと直接接続されたネットワークスイッチと、他のネットワークスイッチにデータを転送するネットワークスイッチとを識別する。
【００５２】
また、ネットワークトポロジ管理部２２は、データの送信先となるエンドホストと直接接続されたネットワークスイッチについて、データの送信先となるエンドホストが接続されたポートを識別する。また、ネットワークトポロジ管理部２２は、他のネットワークスイッチにデータを転送するネットワークスイッチについて、データを転送する他のネットワークスイッチが接続されたポートを識別する。
【００５３】
そして、ネットワークトポロジ管理部２２は、データの送信先となるエンドホストと直接接続されたネットワークスイッチと、データの送信先となるエンドホストが接続されたポートとを設定部２６に通知する。また、ネットワークトポロジ管理部２２は、データの送信先となるエンドホストのユニキャストアドレスを設定部２６に通知する。また、ネットワークトポロジ管理部２２は、他のネットワークスイッチにデータを転送するネットワークスイッチと、他のネットワークスイッチが接続されたポートとを設定部２６に通知する。
【００５４】
マルチキャストアドレス管理部２５は、送信元サーバ２からデータの送信先となる複数のネットワークスイッチの通知を受信した場合には、使用していないマルチキャストアドレスを送信元サーバ２へ送信する。具体的には、マルチキャストアドレス管理部２５は、送信元サーバ２からデータの送信先となる複数のネットワークスイッチの通知を受信する。このような場合には、マルチキャストアドレス管理部２５は、マルチキャストアドレス保持部２４にアクセスし、未使用のマルチキャストアドレスを識別する。そして、マルチキャストアドレス管理部２５は、送信元サーバ２から通知された複数のエンドホストと未使用のマルチキャストアドレスとを対応付けてマルチキャストアドレス保持部２４に格納する。
【００５５】
次に、マルチキャストアドレス管理部２５は、送信元サーバ２から通知されたエンドホストをネットワークトポロジ管理部２２と設定部２６とに通知する。その後、マルチキャストアドレス管理部２５は、設定部２６からネットワークスイッチの設定が終了した旨の通知を受信した場合には、送信元サーバ２から通知された複数のエンドホストと対応付けたマルチキャストアドレスを送信元サーバ２に送信する。
【００５６】
また、マルチキャストアドレス管理部２５は、送信元サーバ２からデータのマルチキャスト送信が完了した旨の通知を受信した場合には、完了したマルチキャスト送信に用いたマルチキャストアドレスを未使用のマルチキャストアドレスにする。詳細には、マルチキャストアドレス管理部２５は、マルチキャストアドレス保持部２４が記憶するマルチキャストアドレスのうち、完了したマルチキャスト通信に用いられたマルチキャストアドレスに対応付けられたエンドホストの識別子を削除する。また、マルチキャストアドレス管理部２５は、完了したマルチキャスト通信に用いられたマルチキャストアドレスを設定部２６に通知する。
【００５７】
設定部２６は、マルチキャスト送信されたデータを各ネットワークスイッチ４、５が直接接続されたエンドホストに対して転送する際は、マルチキャストアドレスをユニキャストアドレスに変更してから転送するように設定する。
【００５８】
具体的には、設定部２６は、データの送信先となるエンドホストと直接接続されたネットワークスイッチと、データの送信先となるエンドホストが接続されたポートとの通知をネットワークトポロジ管理部２２から受信する。また、設定部２６は、ネットワークスイッチに直接接続されたエンドホストのユニキャストアドレスの通知をネットワークトポロジ管理部２２から受信する。また、設定部２６は、マルチキャストアドレス管理部２５から、マルチキャストアドレスの通知を受信する。
【００５９】
すると、設定部２６は、データの送信先となるエンドホストと直接接続されたネットワークスイッチごとに、以下の処理を実行する。まず、設定部２６は、マルチキャストアドレス管理部２５から通知されたマルチキャストアドレスと、データの送信先となるエンドホストが直接接続されたポートと、直接接続されたエンドホストのユニキャストアドレスとを対応付けた変更情報を生成する。そして、設定部２６は、生成した変更情報をネットワークスイッチに送信する。
【００６０】
例えば、マルチキャストアドレス「ｍａ１」が付与されたデータの送信先にエンドホスト６が含まれる場合は、設定部２６は、エンドホスト６に直接接続されたネットワークスイッチ４の通知をネットワークトポロジ管理部２２から受信する。また、設定部２６は、エンドホスト６が接続されたポート番号「＃１」と、エンドホスト６のユニキャストアドレス「１．１．１．１」との通知をネットワークトポロジ管理部２２から受信する。また、設定部２６は、マルチキャストアドレス管理部２５からマルチキャストアドレス「ｍａ１」の通知を受信する。
【００６１】
このような場合には、設定部２６は、マルチキャストアドレス「ｍａ１」と、ポート番号「＃１」と、エンドホスト６のユニキャストアドレス「１．１．１．１」とを対応付けた変更情報を生成する。そして、設定部２６は、生成した変更情報をネットワークスイッチ４に送信する。
【００６２】
また、設定部２６は、他のネットワークスイッチにデータを転送するネットワークスイッチと、他のネットワークスイッチが接続されたポートとの通知をネットワークトポロジ管理部２２から受信する。このような場合には、設定部２６は、他のネットワークスイッチにデータを転送するネットワークスイッチごとに、他のネットワークスイッチが接続されたポートと、マルチキャストアドレスとを対応付けた転送情報を生成して送信する。
【００６３】
例えば、マルチキャストアドレス「ｍａ１」が付与されたデータの送信先にエンドホスト７、またはエンドホスト８が含まれる場合は、ネットワークスイッチ４は、ネットワークスイッチ５にデータを転送する。このため、設定部２６は、ネットワークスイッチ４と、ネットワークスイッチ５が接続されたポート番号「＃３」との通知をネットワークトポロジ管理部２２から受信する。このような場合には、設定部２６は、マルチキャストアドレス「ｍａ１」と、ポート番号「＃３」とを対応付けた転送情報を生成し、生成した転送情報をネットワークスイッチ４に対して送信する。
【００６４】
なお、設定部２６は、データの送信先となるエンドホストが直接接続されたネットワークスイッチ、およびデータを他のネットワークスイッチへ転送するネットワークスイッチの設定が終了した場合は、ネットワークスイッチの設定が終了したと判断する。そして、設定部２６は、マルチキャストアドレス管理部２５に、ネットワークスイッチの設定が終了した旨を通知する。
【００６５】
また、設定部２６は、マルチキャストアドレス管理部２５から、完了したマルチキャスト送信に用いられたマルチキャストアドレスの通知を受信すると、以下の処理を実行する。すなわち、設定部２６は、完了したマルチキャスト送信に用いられたマルチキャストアドレスを含む変更情報、および転送情報の削除要求を各ネットワークスイッチ４、５に送信する。
【００６６】
次に、図６を用いて、ネットワークスイッチ４の機能構成について説明する。図６は、実施例１に係わるネットワークスイッチの機能構成を説明する図である。図６に示す例では、ネットワークスイッチ４は、変更情報記憶部４０、転送情報記憶部４１、通信ポート４２〜４５、テーブル制御部４６、通信制御部４７、判別部４８、アドレス変更部４９、識別部５０とを有する。
【００６７】
なお、通信ポート４２は、ポート番号が「＃０」の通信ポートであり、マルチキャスト管理サーバ３と接続されている。また、通信ポート４３は、ポート番号が「＃１」の通信ポートであり、エンドホスト６と接続されている。また、通信ポート４４は、ポート番号が「＃２」の通信ポートであり、ネットワークスイッチ５と接続されている。また、通信ポート４５は、ポート番号が「＃４」の通信ポートであり、送信元サーバ２と接続されている。なお、図４に示す例では、４つの通信ポート４２〜４５を記載したが、実施例はこれに限定されるものではなく、ネットワークスイッチ４は、任意の数の通信ポートを有することができる。
【００６８】
変更情報記憶部４０は、ネットワークスイッチ４に直接接続されたエンドホストに対して、マルチキャスト送信されたデータを送信する際に、マルチキャストアドレスをユニキャストアドレスに変更するための変更情報を記憶する。例えば、変更情報記憶部４０は、図７に例示する変更情報を記憶する。
【００６９】
図７は、変更情報の一例を説明する第１の図である。図７に示すように、変更情報記憶部４０は、マルチキャストアドレスと、ポートとユニキャストアドレスとを対応付けた変更情報を記憶する。例えば、変更情報記憶部４０は、マルチキャストアドレス「ｍａ１」、ポート番号「＃１」、ユニキャストアドレス「１．１．１．１」を対応付けて記憶する。
【００７０】
なお、変更情報記憶部４０が記憶する変更情報は、ネットワークスイッチごとに異なる。例えば、ネットワークスイッチ５において、エンドホスト７がポート「＃２」に接続され、エンドホスト８がポート番号「＃３」のポートに接続されている場合は、ネットワークスイッチ５は、図８に例示する変更情報を記憶する。
【００７１】
図８は、変更情報の一例を説明する第２の図である。図８に示すように、ネットワークスイッチ５は、マルチキャストアドレス「ｍａ１」、ポート番号「＃２」、ユニキャストアドレス「２．２．２．２」を対応付けて記憶する。また、ネットワークスイッチ５は、マルチキャストアドレス「ｍａ１」、ポート番号「＃３」、ユニキャストアドレス「３．３．３．３」を対応付けて記憶する。
【００７２】
図６に戻って、転送情報記憶部４１は、ネットワークスイッチ４がデータの転送処理を行う際に用いる転送情報を記憶する。例えば、図９は、転送情報記憶部が記憶する情報の一例を説明する図である。図９に示すように、転送情報記憶部４１は、データのあて先に含まれる送信先アドレスと、データのあて先が接続された通信ポートのポート番号とを対応付けた転送情報を記憶する。ここで、図９に示す例では、送信先アドレスとして、データの送信先アドレスを記載したが、送信先アドレスは、例えばマルチキャストアドレスやユニキャストアドレスである。
【００７３】
例えば、転送情報記憶部４１は、ポート番号「＃１」と送信先アドレス「１．１．１．１」とを対応付けて記憶する。このため、転送情報記憶部４１は、送信先アドレスが「１．１．１．１」であるデータを受信すると、受信したデータをポート番号「＃１」の通信ポート４３から出力する。
【００７４】
また、転送情報記憶部４１は、ポート「＃２」とマルチキャストアドレス「ｍａ１」とを対応付けて記憶する。このため、転送情報記憶部４１は、マルチキャストアドレス「ｍａ１」が付与されたデータを受信すると、受信したデータをポート番号「＃２」の通信ポート４４から出力する。
【００７５】
図６に戻って、テーブル制御部４６は、マルチキャスト管理サーバ３による設定を変更情報記憶部４０、および転送情報記憶部４１に反映させる。具体的には、テーブル制御部４６は、通信制御部４７を介して、マルチキャスト管理サーバ３が送信した変更情報を取得する。このような場合には、テーブル制御部４６は、受信した変更情報を変更情報記憶部４０に格納する。
【００７６】
また、テーブル制御部４６は、通信制御部４７を介して、マルチキャスト管理サーバ３が送信した転送情報を受信する。このような場合には、テーブル制御部４６は、受信した転送情報を転送情報記憶部４１に格納する。
【００７７】
また、テーブル制御部４６は、通信制御部４７を介して、マルチキャスト管理サーバ３が送信した変更情報、および転送情報の削除要求を受信する。このような場合には、テーブル制御部４６は、削除要求に含まれるマルチキャストアドレスを識別する。そして、テーブル制御部４６は、変更情報記憶部４０が記憶する変更情報のうち、識別したマルチキャストアドレスを含む変更情報を削除する。また、テーブル制御部４６は、転送情報記憶部４１が記憶する転送情報のうち、識別したマルチキャストアドレスを含む転送情報を削除する。
【００７８】
通信制御部４７は、ネットワークスイッチ４が実行する通信の制御を行う。例えば、通信制御部４７は、通信ポート４２を介して、マルチキャスト管理サーバ３から受信したデータをテーブル制御部４６に出力する。また、通信制御部４７は、通信ポート４３〜４５を介して、送信対象となるデータを受信した場合には、受信したデータを判別部４８に出力する。また、通信制御部４７は、識別部５０から送信対象となるデータとともに、データを出力する通信ポートのポート番号を受信した場合には、受信したポート番号が示す通信ポートからデータを出力する。
【００７９】
判別部４８は、通信制御部４７から送信対象となるデータを受信すると、データの送信先アドレスを抽出する。そして、判別部４８は、抽出した送信先アドレスが変更情報記憶部４０に記憶されているか否かを判別する。すなわち、判別部４８は、送信対象となるデータが、ネットワークスイッチ４に直接接続されたエンドホスト６を含む複数のエンドホストを送信先としてマルチキャスト送信されたデータであるかを判別する。
【００８０】
そして、判別部４８は、抽出した送信先アドレスが変更情報記憶部４０に記憶されていると判別した場合は、受信したデータをアドレス変更部４９と識別部５０とに出力する。一方、判別部４８は、抽出した送信先アドレスが変更情報記憶部４０に記憶されていない場合には、受信したデータを識別部５０のみに出力する。
【００８１】
例えば、判別部４８は、変更情報記憶部４０が図７に示す情報を記憶している際に、送信先アドレスが「ｍａ１」である場合には、データをアドレス変更部４９と識別部５０とに出力する。また、判別部４８は、送信先アドレスが「ｍａ２」である場合や、「１．１．１．１」である場合には、データを識別部５０に出力する。
【００８２】
アドレス変更部４９は、判別部４８から受信したデータに送信先アドレスとして付与されたマルチキャストアドレスをユニキャストアドレスに変更する。具体的には、アドレス変更部４９は、判別部４８からデータを受信すると、データに送信先アドレスとして付与されたマルチキャストアドレスを識別する。また、アドレス変更部４９は、識別したマルチキャストアドレスと対応付けられたユニキャストアドレスを変更情報記憶部４０から読み出す。そして、アドレス変更部４９は、データに送信先アドレスとして付与されたマルチキャストアドレスを、変更情報記憶部４０から読み出したユニキャストアドレスに変更し、送信先アドレスを変更したデータを識別部５０に出力する。
【００８３】
例えば、アドレス変更部４９は、送信先アドレスが「ｍａ１」である場合には、変更情報記憶部４０が「ｍａ１」と対応付けて記憶するユニキャストアドレス「１．１．１．１」を読み出す。そして、アドレス変更部４９は、送信先アドレスを「１．１．１．１」に変更したデータを識別部５０に出力する。
【００８４】
識別部５０は、受信したデータの送信先を識別する。具体的には、識別部５０は、判別部４８、およびアドレス変更部４９からデータを受信した場合には、受信したデータの送信先アドレスを抽出する。また、識別部５０は、抽出した送信先アドレスと対応付けられたポート番号を転送情報記憶部４１から識別する。そして、識別部５０は、識別したポート番号の通信ポートからデータを出力するよう通信制御部４７に指示する。
【００８５】
例えば、識別部５０は、送信先アドレスが「ｍａ１」であるデータを判別部４８から受信する。このような場合には、識別部５０は、転送情報記憶部４１から「ｍａ１」と対応付けけられたポート番号「＃２」を識別する。そして、識別部５０は、判別部４８から受信したデータをポート番号「＃２」の通信ポート４４から出力するよう通信制御部４７に指示する。
【００８６】
また、識別部５０は、送信先アドレスが「１．１．１．１」であるデータをアドレス変更部４９から受信する。このような場合には、識別部５０は、転送情報記憶部４１から「１．１．１．１」と対応付けられたポート番号「＃１」を識別する。そして、識別部５０は、アドレス変更部４９から受信したデータをポート番号「＃１」の通信ポート４３から出力するよう通信制御部４７に指示する。
【００８７】
このように、識別部５０は、転送情報を用いたデータの転送を行うが、実施例はこれに限定されるものではなく、例えば、ＦＤＢ（Forwarding  DataBase）を用いたデータ転送処理を行ってもよい。このように、識別部５０がＦＤＢを用いたデータ転送を行う場合には、マルチキャスト管理サーバ３は、転送情報として、ＦＤＢに登録される情報をネットワークスイッチ４、５に送信することになる。また、識別部５０は、データの送信処理を行うたびに、データの送信元ＭＡＣアドレスと、データの送出先ポートとの学習を行い、学習した内容を転送情報記憶部４１に格納してもよい。
【００８８】
続いて、図１０〜１２を用いて、マルチキャストシステム１が実行する処理の流れについて説明する。まず、図１０を用いて、マルチキャスト管理サーバ３が、各ネットワークスイッチ４、５の変更情報の設定を行う処理を説明する。
【００８９】
図１０は、変更情報の設定を行う処理を説明する図である。なお、図１０には、ネットワークスイッチ４のポート＃１にエンドホスト６が接続され、ネットワークスイッチ５のポート＃２にエンドホスト７が接続され、ネットワークスイッチ５のポート＃３にエンドホスト８が接続されている例について記載した。
【００９０】
まず、図１０（Ａ）に示すように、送信元サーバ２は、送信先となるエンドホスト６〜８の識別子「（ａ１，ａ２，ａ３）」をマルチキャスト管理サーバ３に通知する。すると、図１０中（Ｂ）に示すように、マルチキャスト管理サーバ３は、使用していないマルチキャストアドレス「ａ１」と送信先となるエンドホスト６〜８の識別子「（ａ１，ａ２，ａ３）」とを対応付けて記憶する。
【００９１】
次に、マルチキャスト管理サーバ３は、図１０中（Ｃ）に示すように、変更情報の設定を行う。具体的には、マルチキャスト管理サーバ３は、ネットワークスイッチ４のポート＃１にエンドホスト６が直接接続され、ネットワークスイッチ５のポート＃２にエンドホスト７が直接接続されている旨を識別する。また、マルチキャスト管理サーバ３は、ネットワークスイッチ５のポート＃３にエンドホスト８が直接接続され、ネットワークスイッチ４のポート＃４にネットワークスイッチ５が接続されている旨を識別する。
【００９２】
このような場合には、図１０中（Ｄ）に示すように、マルチキャスト管理サーバ３は、マルチキャストアドレス「ｍａ１」とポート「＃１」とユニキャストアドレス「１．１．１．１」とを対応付けた変更情報をネットワークスイッチ４に設定する。また、マルチキャスト管理サーバ３は、マルチキャストアドレス「ｍａ１」とポート「＃４」とを対応付けた転送情報をネットワークスイッチ４に設定する。
【００９３】
また、図１０中（Ｅ）に示すように、マルチキャスト管理サーバ３は、マルチキャストアドレス「ｍａ１」とポート「＃２」とユニキャストアドレス「２．２．２．２」とを対応付けた変更情報をネットワークスイッチ５に設定する。また、マルチキャスト管理サーバ３は、マルチキャストアドレス「ｍａ１」とポート「＃３」とユニキャストアドレス「３．３．３．３」とを対応付けた変更情報をネットワークスイッチ５に設定する。そして、マルチキャスト管理サーバ３は、図１０中（Ｆ）に示すように、マルチキャストアドレス「ｍａ１」を送信元サーバ２に通知する。
【００９４】
次に、図１１を用いて、マルチキャスト送信の際に、ネットワークスイッチ４、５がマルチキャストアドレスをユニキャストアドレスに変更する処理の流れについて説明する。図１１は、ネットワークスイッチがマルチキャストアドレスをユニキャストアドレスに変更する処理を説明する図である。なお、図１１には、図１０に示した変更情報の設定が行われた後で送信元サーバ２が送信先アドレスをマルチキャストアドレス「ｍａ１」としたデータを送信する例について記載した。
【００９５】
まず、図１１中（Ｇ）に示すように、送信元サーバ２は、送信先アドレスを「ｍａ１」にして、データをネットワークスイッチ４に送信する。ここで、ネットワークスイッチ４には、マルチキャストアドレス「ｍａ１」と、ポート「＃１」と、ユニキャストアドレス「１．１．１．１」とを対応付けた変更情報が設定されている。このため、ネットワークスイッチ４は、送信元サーバ２から受信したデータの送信先アドレス「ｍａ１」をユニキャストアドレス「１．１．１．１」に変更し、データをポート「＃１」から出力する。すなわち、ネットワークスイッチ４は、データの送信先アドレスをマルチキャストアドレスからエンドホスト６のユニキャストアドレスに変更し、送信先アドレスを変更したデータをエンドホスト６に送信する。
【００９６】
また、ネットワークスイッチ４には、マルチキャストアドレス「ｍａ１」とポート「＃４」とを対応付けた転送情報が設定されている。このため、ネットワークスイッチ４は、送信元サーバ２から受信したデータの送信先アドレスを変更することなくポート「＃４」から出力する。すなわち、ネットワークスイッチ４は、送信先アドレスが「ｍａ１」のデータをのままネットワークスイッチ５に送信する。
【００９７】
続いて、ネットワークスイッチ５は、ネットワークスイッチ４から送信先アドレスが「ｍａ１」のデータを受信する。ここで、ネットワークスイッチ５には、マルチキャストアドレス「ｍａ１」と、ポート「＃２」と、ユニキャストアドレス「２．２．２．２」とを対応付けた変更情報が設定されている。このため、ネットワークスイッチ５は、送信先アドレス「ｍａ１」をユニキャストアドレス「２．２．２．２」に変更し、データをポート「＃２」から出力する。すなわち、ネットワークスイッチ５は、データの送信先アドレスをマルチキャストアドレスからエンドホスト７のユニキャストアドレスに変更し、送信先アドレスを変更したデータをエンドホスト７に送信する。
【００９８】
また、ネットワークスイッチ５には、マルチキャストアドレス「ｍａ１」と、ポート「＃３」と、ユニキャストアドレス「３．３．３．３」とを対応付けた変更情報が設定されている。このため、ネットワークスイッチ５は、送信先アドレス「ｍａ１」をユニキャストアドレス「３．３．３．３」に変更し、データをポート「＃３」から出力する。すなわち、ネットワークスイッチ５は、データの送信先アドレスをマルチキャストアドレスからエンドホスト８のユニキャストアドレスに変更し、送信先アドレスを変更したデータをエンドホスト８に送信する。
【００９９】
このように、ネットワークスイッチ４は、マルチキャスト送信の送信先に、ネットワークスイッチ４と直接接続されたエンドホスト６が含まれる場合には、マルチキャストアドレスをエンドホスト６のユニキャストアドレスに変更する。そして、ネットワークスイッチ４は、マルチキャストアドレスをユニキャストアドレスに変更したデータをエンドホスト６に送信する。また、ネットワークスイッチ５も同様に、マルチキャストアドレスを、直接接続されたエンドホスト７、またはエンドホスト８のユニキャストアドレスに変更してからデータを送信する。このため、マルチキャストシステム１は、エンドホスト６〜８をマルチキャスト通信に対応させる修正せずとも、マルチキャスト通信を行うことができる。
【０１００】
また、マルチキャストシステム１においては、マルチキャスト管理サーバ３が、送信となるエンドホストへデータを転送するネットワークスイッチを識別する。そして、マルチキャストシステム１は、識別したネットワークスイッチのうち、データの送信先となるエンドホストと直接接続されたネットワークスイッチを特定する。その後、マルチキャストシステム１は、マルチキャストアドレスを直接接続されたエンドホストのユニキャストアドレスに変更するよう、特定したネットワークスイッチを設定する。このため、マルチキャストシステム１は、送信元サーバ２がデータを送信する処理に応じて、マルチキャストアドレスを動的に設定することができる。
【０１０１】
なお、データを送信する際には、チェインを用いた送信が行われる場合がある。ここで、チェインとは、複製データの送信先装置を数珠つなぎにした送信経路のことであり、チェインを用いたデータの送信が行われる場合には、あらかじめ定められた送信経路を辿るように、各送信先装置がデータを順次転送し、そのつどデータを保持する。このように、チェインを用いたデータ送信をユニキャスト送信に変更するため、ネットワークスイッチ４、５は、データの送信先アドレスを変更するとともに、データに含まれるチェインを変更してもよい。
【０１０２】
例えば、図１２は、ネットワークスイッチがチェインを変更する処理を説明する図である。例えば、従来の送信元サーバは、エンドホスト６〜８にデータを転送する場合には、エンドホスト６〜８を順次辿る長さ「３」のチェインを１つ生成し、生成したチェインをデータに付与して送信した。一方、送信元サーバ２は、図１２中（Ｋ）に示すように、長さ「３」のチェインを生成するのではなく、各エンドホスト６〜８のみにデータを送信する長さ「１」のチェインを３つ生成する。
【０１０３】
そして、図１２中（Ｌ）に示すように、送信元サーバ２は、長さ「１」のチェインを３つ有するデータをマルチキャスト送信する。次に、ネットワークスイッチ４は、受信したデータからエンドホスト６のみにデータを送信する長さ「１」のチェインを１つ含むデータを生成し、マルチキャストアドレスをエンドホスト６のユニキャストアドレスに変更する。そして、ネットワークスイッチ４は、図１２中（Ｍ）に示すように、エンドホスト６のみにデータを送信する長さ「１」のチェインを含んだデータをエンドホスト６にユニキャスト送信する。
【０１０４】
また、図１２中（Ｎ）に示すように、ネットワークスイッチ４は、エンドホスト７、またはエンドホスト８のみにデータを送信する長さ「１」のチェインを２つ含むデータをネットワークスイッチ５に送信する。すると、ネットワークスイッチ５は、エンドホスト７のみにデータを送信する長さ「１」のチェインを１つ含むデータを生成し、マルチキャストアドレスをエンドホスト７のユニキャストアドレスに変更する。また、ネットワークスイッチ５は、エンドホスト８のみにデータを送信する長さ「１」のチェインを１つ含むデータを生成し、マルチキャストアドレスをエンドホスト８のユニキャストアドレスに変更する。そして、図１２中（Ｏ）に示すように、ネットワークスイッチ４は、長さ「１」のチェインを含むデータをエンドホスト７、およびエンドホスト８にそれぞれユニキャスト送信する。
【０１０５】
このように、各ネットワークスイッチ４、５は、マルチキャスト送信されたデータにチェインが含まれる場合は、データに含まれるチェインを、直接接続されたエンドホストにのみデータを送信するチェインに変更する。そして、各ネットワークスイッチ４、５は、チェインを変更したデータを直接接続されたエンドホストに送信する。このため、マルチキャストシステム１は、各エンドホスト６〜８がチェインを用いたデータ転送を行うプログラムを実行している場合にも、各エンドホスト６〜８が実行するプログラムを修正することなく、マルチキャスト通信に対応させることができる。
【０１０６】
なお、送信元サーバ２は、データ転送の信頼性を向上させるため、転送プロトコルとしてＴＣＰ（Transmission  Control  Protocol）を用いた場合は、データのマルチキャスト送信を実行する際に、各エンドホストとの間に独立したＴＣＰパスを確立する。例えば、図１３は、確立するＴＣＰパスを説明する図である。図１３に示す例では、送信元サーバ２は、エンドホスト６〜８を送信先とするデータをマルチキャスト送信する。
【０１０７】
しかしながら、各エンドホスト６〜８は、送信元サーバ２がマルチキャスト送信したデータを、それぞれユニキャストされたデータとして受信する。このため、図１３中（Ｐ）〜（Ｒ）に示すように、送信元サーバ２とエンドホスト６〜８との間には、それぞれ独立したＴＣＰパスが確立されることとなる。そして、各エンドホスト６〜８は、それぞれ独立したＴＣＰパスを介して、応答を送信元サーバ２に送信する。
【０１０８】
ここで、送信元サーバ２は、それぞれ独立したＴＣＰパスを介して、各エンドホスト６〜８からデータの応答を受信するが、データをマルチキャスト送信してから所定の時間が経過するまでの間に、応答を受信しなかった場合には、データの再送を行う。すなわち、送信元サーバ２は、応答を受信しなかったエンドホストとの間に確立したＴＣＰパスを介して、データをユニキャスト送信する。
【０１０９】
このようなＴＣＰを用いたマルチキャスト送信を実現する場合は、エンドホスト６〜８が実行するプログラムの修正を行う必要は無いものの、送信元サーバ２が実行するプログラムおよびＯＳ（Operating  System）カーネルの拡張を行う。以下、図１４〜図１８を用いて、送信元サーバ２が実行する拡張したプログラムとＯＳカーネルの動作について説明する。
【０１１０】
まず、図１４を用いて、送信元サーバ２が各エンドホスト６〜８との間でＴＣＰパスを確立する処理について説明する。図１４は、送信元サーバが実行するプログラムとカーネルがＴＣＰパスを確立する処理を説明する図である。なお、図１４に示す例では、送信元サーバ２においてプログラムが動作するユーザー空間と、各カーネルが動作するカーネル空間との関係を示した。また、図１４には、カーネル空間においてＴＣＰレイヤレベルで動作するＡＰＩ（Application  Program  Interface）と、ＩＰレイヤレベルで動作するＡＰＩとを記載した。
【０１１１】
例えば、送信元サーバ２は、データをマルチキャスト送信するプログラム６０と、データをユニキャスト送信するプログラム６１とをユーザー空間内で実行し、データ再送のための再送フラグ６２をカーネル空間内に有する。また、送信先サーバ２は、カーネル空間内のＴＣＰ例やで動作するＡＰＩとして「std＿TCP＿socket」と、「m＿TCP＿socket」とを有する。
【０１１２】
ここで、「std＿TCP＿socket」とは、従来のＯＳカーネルが有するＴＣＰ／ＴＰ処理関数群の１つであり、通常のユニキャスト送信を行うためのソケットと関連付けられる関数群である。詳細には、「std＿TCP＿socket」には、「tcp＿send」として「std＿tcp＿send」が含まれ、「ip＿send」として「std＿ip＿send」が含まれる。
【０１１３】
一方、「m＿TCP＿socket」とは、送信元サーバ２がマルチキャスト送信を行うために拡張された処理関数群の１つであり、例えば、「m＿socket()」が実行されると生成されるマルチキャスト送信用のソケットに関連付けられる関数群である。詳細には、「m＿TCP＿socket」には、「tcp＿send」として、マルチキャスト送信用の「mtcp＿send」が含まれ、「ip＿send」として、マルチキャスト送信用の「mip＿send」が含まれる。
【０１１４】
また、送信元サーバ２は、ＩＰレイヤにマルチキャスト用ソケット情報を記憶する。ここで、マルチキャスト用ソケット情報とは、マルチキャスト送信を行うために保持されたソケット情報である。詳細には、マルチキャスト用ソケット情報には、ユーザー空間におけるプログラム６０が生成したマルチキャスト用ソケットごとに、マルチキャストアドレスと、送信先となる各エンドホスト６〜８のユニキャストアドレスとを関連付けたものが含まれる。
【０１１５】
例えば、プログラム６０を実行した送信元サーバ２は、データを各エンドホスト６〜８にマルチキャスト送信するため、各エンドホスト６〜８を送信先とするマルチキャストアドレス「２３９．０．０．１」を用いて通信ソケット＃１を生成する。例えば、図１４中（Ｓ）に示すように送信先サーバ２は、マルチキャストアドレスと、各エンドホスト６〜８のユニキャストアドレスを指定した「m＿soket(239.0.0.1,1.1.1.1,2.2.2.2,3.3.3.3);」を実行（Invoke）する。
【０１１６】
すると、図１４中（Ｔ）に示すように、ソケット＃１が生成され、生成されたソケット＃１に「m＿TCP＿socket」が対応付けられる。また、ＴＣＰレイヤにおいて「socket.tcp＿send()」が実行され、「socket.tcp＿send()」によってＩＰレイヤにおいて「socket.ip＿send()」が実行される。
【０１１７】
また、ＩＰレイヤにおいて、マルチキャストソケット情報「socket,multicast(ma)」が保持され、再送用のユニキャスト用の対応として「(socket1,ma=239.0.0.1,(t1=1.1.1.1,t2=2.2.2.2,t3=3.3.3.3))」が保持される。ここで、「ｔ１」とは、ＴＣＰパス＃１が確立されたエンドホスト６のユニキャストアドレスを示し、「ｔ２」とは、ＴＣＰパス＃２が確立されたエンドホスト７のユニキャストアドレスを示す。また、「ｔ３」とは、ＴＣＰパス＃３が確立されたエンドホスト８のユニキャストアドレスを示す。
【０１１８】
そして、図１４中（Ｕ）に示すように、エンドホスト６にデータを送信するためのＴＣＰパス＃１、エンドホスト７にデータを送信するためのＴＣＰパス＃２、およびエンドホスト８にデータを送信するためのＴＣＰパス＃３が確立する。
【０１１９】
次に、図１５を用いて、送信元サーバ２がデータをマルチキャスト送信する際に実行する処理の流れについて説明する。図１５は、送信元サーバが実行するプログラムとカーネルがデータを送信する処理を説明する図である。なお、図１５には、図１４と同様に、送信元サーバ２においてプログラムが動作するユーザー空間と、各カーネルが動作するカーネル空間との関係を示した。
【０１２０】
例えば、図１５中（Ｖ）に示すように、プログラム６０は、データをマルチキャスト送信するため「socket1.send(239.0.0.1)」を実行（Invoke）する。すると、ソケット＃１から送信対象のデータがＴＣＰレイヤの「socket.tcp＿send()」に渡される。続いて、ＴＣＰＵレイヤでは、データの再送処理を実行する「rt  handler」が実行され、図１５中（Ｗ）に示すように、「socket.tcp＿send()」が「socket1.ip＿send(rt=0)」を実行（Invoke）する。そしてＴＣＰＵレイヤからＩＰレイヤに送信対象のデータが出力される。ここで、初めて「socket.ip＿send」が実行された場合には、再送フラグ６２が「０」に設定される。
【０１２１】
すると、「socket＿ip＿send()」は、再送フラグ６２が「０」であるか否かを判別する。そして、「socket＿ip＿send()」は、再送フラグ６２が「０」であると判別した場合には、ＴＣＰレイヤから出力されたデータをマルチキャスト送信する。具体的には、「socket＿ip＿send()」は、図１５中（Ｘ）に示すように、「socket1.l2＿send(239.0.0.1)」を実行（Invoke）し、マルチキャストアドレス「２３９．０．０．１」を付与したデータを出力する。一方、「socket＿ip＿send()」は、再送フラグ６２が「１」であると判別した場合には、ユニキャストアドレスを用いたデータの再送を行う。
【０１２２】
以下、図１６〜１７を用いて、データの再送を行う際に、送信サーバ２が実行するプログラムとカーネルが実行する処理について説明する。まず、図１６を用いて、送信元サーバ２がａｃｋを受信した際にプログラムとカーネルが実行する処理の流れについて説明する。図１６は、送信元サーバが実行するプログラムとカーネルがａｃｋを受信する処理の一例を説明する図である。なお、図１６には、図１４と同様に、送信元サーバ２においてプログラム６０が動作するユーザー空間と、各カーネルが動作するカーネル空間との関係を示した。
【０１２３】
例えば、プログラム６０は、図１５中（Ｖ）に示したように、データをマルチキャスト送信するため「socket1.send(239.0.0.1)」を実行（Invoke）する。このような場合には、各エンドホスト６〜８との間に、ＴＣＰパスが確立されている。ここで、各エンドホスト６〜８は、マルチキャスト送信されたデータをユニキャストされたデータとして受信する。そして、各エンドホスト６〜８は、図１６中（Ｙ）に示すように、送信元サーバ２との間に確立した各ＴＣＰパスを介して、受信したデータに対する応答である「ａｃｋ」を送信する。
【０１２４】
そして、ＴＣＰレイヤの「rt  handler」は、データを送信してから所定の時間が経過するまでの間に、送信先となる全てのエンドホスト６〜８から「ａｃｋ」を受信した場合には、マルチキャスト送信が正常に終了したと判断する。なお、マルチキャスト送信が正常に終了したと判断された場合には、送信元サーバ２は、マルチキャストアドレス「２３９．０．０．１」の使用を開放するため、マルチキャスト管理サーバ３に、マルチキャスト送信が終了した旨を通知してもよい。
【０１２５】
一方、図１７は、データの再送処理を説明する図である。なお、図１７には、図１４と同様に、送信元サーバ２においてプログラムが動作するユーザー空間と、各カーネルが動作するカーネル空間との関係を示した。例えば、図１７中（Ｚ）に示すように、ＴＣＰパス＃３を介して送信された「ａｃｋ」がなんらかの障害によりロストする。このような場合には、ＴＣＰレイヤの「rt  handler」は、データを送信してから所定の時間内にＴＣＰパス＃３から「ａｃｋ」を受信しないので、図１７中（ａ）に示すように、「socket1.ip＿send(rt=1)」を実行（Invoke）する。すると、図１７中（ｂ）に示すように、再送フラグ６２に「１」が設定される。
【０１２６】
また、「rt  handler」によって実行された「socket.ip＿send()」は、再送フラグ６２に「１」が設定されていると判別し、ユニキャストアドレスを用いたデータの再送を行う。詳細には、「socket.ip＿send()」は、「ａｃｋ」が帰らなかったＴＣＰパス＃３を識別し、マルチキャスト用ソケット情報から、ＴＣＰパス＃３が確立されたエンドホストのユニキャストアドレス「ｔ３」が「３．３．３．３」であると判別する。そして、「socket.ip＿send()」は、「socket1.l2＿send(3.3.3.3)」を実行（Invoke）することで、ユニキャストアドレスを用いたデータの再送を行う。
【０１２７】
次に、図１８を用いて、ユニキャストアドレスを用いたデータ送信時に、プログラムとカーネルとが実行する処理について説明する。図１８は、送信元サーバが実行するプログラムとカーネルが実行する通常の送信処理の一例を説明するための図である。例えば、プログラム６１は、図１８中（ｄ）に示すように、ユニキャストをおこなうための「socket();」を実行（Invoke）する。すると、図１８中（ｅ）に示すように、プログラム６１がデータの送信を行うためのソケット＃２に、「std＿TCP＿socket」が対応付けられる。その後、図１８中（ｆ）に示すように、ソケット＃２を介して、データのユニキャスト送信が行われる。
【０１２８】
次に、図１９を用いて、マルチキャスト管理サーバ３が実行する処理の流れについて説明する。図１９は、マルチキャスト管理サーバが実行する処理の流れを説明するためのフローチャートである。例えば、マルチキャスト管理サーバ３は、送信元サーバ２から送信先となるエンドホストのユニキャストアドレスを受信する（ステップＳ１０１）。すると、マルチキャスト管理サーバ３は、送信元サーバ２からデータの送信先となるエンドホストまでのデータの転送経路を計算する（ステップＳ１０２）。次に、マルチキャスト管理サーバ３は、未使用のマルチキャストアドレスを有り当てる（ステップＳ１０３）。
【０１２９】
次に、マルチキャスト管理サーバ３は、経路に含まれるネットワークスイッチを１つ選択し（ステップＳ１０４）、選択したネットワークスイッチが送信先エンドホストと直接接続されているか否かを判別する（ステップＳ１０５）。そして、マルチキャスト管理サーバ３は、選択したネットワークスイッチが送信先エンドホストと直接接続されていない場合は（ステップＳ１０５否定）、転送情報を選択したネットワークスイッチに設定する（ステップＳ１０６）。一方、マルチキャスト管理サーバ３は、選択したネットワークスイッチが送信先エンドホストと直接接続されている場合は（ステップＳ１０５肯定）、変更情報と転送情報とを設定する（ステップＳ１０７）。
【０１３０】
続いて、マルチキャスト管理サーバ３は、計算した経路に含まれる全てのネットワークスイッチを選択したか否かを判別し（ステップＳ１０８）、選択していない場合には（ステップＳ１０８否定）、ステップＳ１０４を実行する。一方、マルチキャスト管理サーバ３は、計算した経路に含まれる全てのネットワークスイッチを選択した場合は（ステップＳ１０８肯定）、送信元サーバ２からマルチキャスト送信完了の旨を受信したか否かを判別する（ステップＳ１０９）。
【０１３１】
そして、マルチキャスト管理サーバ３は、マルチキャスト送信完了の旨を送信元サーバ２から受信していない場合は、マルチキャスト送信完了の旨を受信するまで待機する（ステップＳ１０９否定）。一方、マルチキャスト管理サーバ３は、マルチキャスト送信完了の旨を送信元サーバ２から受信した場合は（ステップＳ１０９肯定）、各ネットワークスイッチの設定を解除する（ステップＳ１１０）。すなわち、マルチキャスト管理サーバ３は、完了したマルチキャスト送信に係わる変更情報と転送情報とを各ネットワークスイッチから削除する。そして、マルチキャスト管理サーバ３は、完了したマルチキャスト送信に係わるマルチキャストアドレスを未使用状態にし（ステップＳ１１１）、処理を終了する。
【０１３２】
次に、図２０を用いて、ネットワークスイッチ４が実行する処理の流れについて説明する。図２０は、ネットワークスイッチが実行する処理の流れを説明するためのフローチャートである。なお、ネットワークスイッチ４は、送信元サーバ２からデータを受信したことを契機として、図２０に示す処理を実行する。まず、ネットワークスイッチ４は、受信したデータの送信先アドレスが変更情報に含まれているか否かを判別する（ステップＳ２０１）。
【０１３３】
そして、ネットワークスイッチ４は、受信したデータの送信先アドレスが変更情報に含まれている場合は（ステップＳ２０１肯定）、データの送信先アドレスを、変更情報として対応付けられたユニキャストアドレスに変更する（ステップＳ２０２）。次に、ネットワークスイッチ４は、送信先アドレスをユニキャストアドレスに変更したデータを、転送情報に基づいてユニキャスト送信し（ステップＳ２０３）、処理を終了する。一方、ネットワークスイッチ４は、受信したデータの送信先アドレスが変更情報に含まれていない場合は（ステップＳ２０１否定）、転送情報に基づいた転送処理を実行し（ステップＳ２０４）、処理を終了する。
【０１３４】
［ストレージシステム１の効果］
上述したように、ネットワークスイッチ４は、マルチキャストアドレスと、ネットワークスイッチ４に直接接続されたエンドホスト６のユニキャストアドレスとを対応付けた変更情報を記憶する。また、ネットワークスイッチ４は、受信したデータに付与されたマルチキャストアドレスが含まれる変更情報を記憶しているか否かを判別する。そして、ネットワークスイッチ４は、受信したデータに付与されたマルチキャストアドレスが含まれる変更情報を記憶している場合には、受信したデータに付与されたマルチキャストアドレスを、変更情報として対応付けられたユニキャストアドレスに変更する。
【０１３５】
その後、ネットワークスイッチ４は、マルチキャストアドレスをユニキャストアドレスに変更したデータをエンドホスト６に送信する。このため、マルチキャストシステム１は、エンドホスト６が実行するプログラムを修正せずとも、エンドホスト６をマルチキャスト通信に対応させることができる。
【０１３６】
また、ネットワークスイッチ４は、転送するデータにチェインが含まれている場合には、転送するデータに含まれるチェインをネットワークスイッチ４に直接接続されたエンドホスト６のみにデータを転送するためのチェインに変更する。このため、ネットワークスイッチ４は、エンドホスト６がチェインを用いてデータの転送を行うプログラムを実行する場合にも、プログラムの修正を行うことなくマルチキャスト通信に対応させることができる。
【０１３７】
また、マルチキャスト管理サーバ３は、送信元サーバ２からデータの送信先となるエンドホストの通知を受信すると、未使用のマルチキャストアドレスを送信元サーバ２に通知する。また、マルチキャスト管理サーバ３は、送信元サーバ２からデータの送信先となるエンドホストまでデータを転送するネットワークスイッチのうち、データの送信先となるエンドホストと直接接続されたネットワークスイッチを特定する。そして、マルチキャスト管理サーバ３は、送信元サーバ２に通知したマルチキャストアドレスを、直接接続されたエンドホストのユニキャストアドレスに変更してからデータを転送するように特定したネットワークスイッチの設定を行う。
【０１３８】
例えば、マルチキャスト管理サーバ３は、マルチキャストアドレスをエンドホスト６のユニキャストアドレスに変更してからデータをエンドホスト６に送信するようネットワークスイッチ４を設定する。このため、マルチキャスト管理サーバ３は、エンドホスト６〜８が実行するプログラムを修正せずとも、エンドホスト６〜８をマルチキャスト通信に対応させることができる。また、マルチキャスト管理サーバ３は、送信元サーバ２に未使用のマルチキャストアドレスを通知するので、マルチキャストアドレスを動的に割り当てることができる。
【０１３９】
また、マルチキャスト管理サーバ３は、特定したネットワークスイッチのポートのうち、データの送信先となるエンドホストが直接接続されたポートを識別する。そして、マルチキャスト管理サーバ３は、マルチキャストアドレスをユニキャストアドレスに変更したデータを、識別したポートから出力するように、特定したネットワークスイッチを設定する。このため、マルチキャスト管理サーバ３は、各ネットワークスイッチ４、５が、ユニキャストアドレスに変更したデータをエンドホスト６〜８に送信するため、どのポートから出力すればよいか判別する処理を不要とする。この結果、マルチキャスト管理サーバ３は、各ネットワークスイッチ４、５に大きな修正を加えずとも、各エンドホスト６〜８をマルチキャスト通信に対応させることができる。
【０１４０】
また、マルチキャスト管理サーバ３は、各ネットワークスイッチ４、５と、各エンドホスト６〜８との接続関係を示すトポロジ情報を用いて、データを転送するネットワークスイッチを識別する。そして、マルチキャスト管理サーバ３は、識別したネットワークスイッチのうち、データの送信先となるエンドホストと直接接続されたネットワークスイッチを特定する。このため、マルチキャスト管理サーバ３は、データの送信先となるエンドホストと直接接続されたネットワークスイッチを正確に特定することができる。
【０１４１】
また、送信元サーバ２は、データのマルチキャスト送信を行う場合は、マルチキャストアドレスをデータに付与する。そして、送信元サーバ２は、マルチキャストアドレスを直接接続されたエンドホスト６のユニキャストアドレスに変更してから送信するネットワークスイッチ４に対し、マルチキャストアドレスを付与したデータを出力する。このため、送信元サーバ２は、送信先となるエンドホスト６が実行するプログラムを修正せずとも、マルチキャスト通信に対応させることができる。
【０１４２】
また、送信元サーバ２は、データの送信先となるエンドホストから応答を受信しなかった場合には、応答を受信しなかったエンドホストのユニキャストアドレスをデータに付与して再送する。このため、送信元サーバ２は、何らかの障害により、エンドホスト６〜８がデータを受信できなかった場合に、エンドホスト６〜８が実行するプログラムを修正することなく、データの再送を行うことができる。
【実施例２】
【０１４３】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【０１４４】
（１）エンドホストについて
上述したマルチキャストシステム１では、送信元サーバ２が各エンドホスト６〜８にデータを送信する例について説明した。しかし、実施例はこれに限定されるものではない。すなわち、各エンドホスト６〜８は、送信元サーバ２の機能を有し、他のエンドホストやエンドホストとして動作する送信元サーバ２に対してデータをマルチキャスト送信してもよい。
【０１４５】
なお、データの送信先、すなわちマルチキャスト送信の対象となるエンドホストのグループは、送信元サーバ２が実行するプログラムによってデータごとに選択される。なお、送信元サーバ２は、マルチキャスト送信が終わるたびに、マルチキャストアドレスの使用状態を開放しなくともよく、例えば、所定の期間の間、同じマルチキャストアドレスを用いて、同じエンドホストのグループにデータを送信し続けてもよい。
【０１４６】
（２）転送情報について
上述したネットワークスイッチ４は、転送情報を用いてデータの転送を行った。ここで、転送情報とは、いわゆるＦＤＢやＭＡＣテーブルを利用したものであってもよい。また、マルチキャスト管理サーバ３、およびネットワークスイッチ４は、ＦＤＢやＭＡＣテーブルに転送情報の機能を担保させてもよい。例えば、マルチキャスト管理サーバ３は、ネットワークスイッチ４のＦＤＢに、少なくともマルチキャストアドレスと、送出ポートとを対応付けたエントリを追加することで、転送情報の設定を行ってもよい。
【０１４７】
また、ネットワークスイッチ４は、マルチキャスト管理サーバ３から通知された転送情報以外にも、学習機能により学習したＭＡＣテーブル等を転送情報記憶部４１に格納して利用してもよい。なお、ストレージシステム１において、マルチキャストアドレスは、動的に付与されるアドレスである。このため、ネットワークスイッチ４が学習したＦＤＢやＭＡＣテーブルにマルチキャストアドレスが含まれたとしても、マルチキャスト管理サーバ３が送信した削除要求に従って削除すればよい。
【０１４８】
（３）マルチキャストシステム１について
上述したマルチキャストシステム１では、理解を容易にするため、３つのエンドホスト６〜８とネットワークスイッチ４、５とを有する例について記載した。しかし、実施例はこれに限定されるものではない。例えば、マルチキャストシステム１は、ネットワークスイッチ４、５を段階的に接続する形態のみならず、例えばファブリック等の接続形態を適用してもよい。また、マルチキャストシステム１は、全てのエンドホスト６〜８に対してデータをマルチキャスト送信する必要はなく、例えば、エンドホスト６、８にのみデータをマルチキャスト送信してもよい。
【０１４９】
このように、マルチキャストシステム１は、ネットワークスイッチ４、５、およびエンドホスト６〜８の接続形態によらず、マルチキャストアドレスを動的に割り当てることができる。また、マルチキャストシステム１は、ネットワークスイッチ４、５、およびエンドホスト６〜８の接続形態によらず、エンドホスト６〜８が実行するプログラムを修正することなく、マルチキャスト通信に対応させることができる。
【０１５０】
（４）プログラム
上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図２１を用いて、上記の実施例と同様の機能を有する近傍判定プログラムを実行するコンピュータの一例について説明する。
【０１５１】
図２１は、送信先変更プログラムを実行するコンピュータの一例について説明するための図である。図２１に示すように、コンピュータ１００は、ＨＤＤ（Hard  Disk  Drive）１５０と、ＲＯＭ（Read  Only  Memory）１６０と、ＲＡＭ（Random  Access  Memory）１７０と、ＣＰＵ（Central  Processing  Unit）１８０、Ｉ／Ｏ（Input/Output）を有する。これら１５０〜１９０の各部はバス１４０を介して接続される。
【０１５２】
ＲＡＭ１７０には、ネットワークスイッチ４と同様の機能を発揮する送信先変更プログラム１７０ａ、変更情報１７０ｂ、および転送情報１７０ｃが予め記憶される。この送信先変更プログラム１７０ａについては、実施例１で示した各構成要素と同様、適宜統合又は分離してもよい。
【０１５３】
そして、ＣＰＵ１８０が、送信先変更プログラム１７０ａを読み出して展開して実行することにより、送信先変更プログラム１７０ａは、送信先変更プロセス１８０ａとして機能する。この送信先変更プロセス１８０ａは、ＲＡＭ１７０から読み出した変更情報１７０ｂ、転送情報１７０ｃに基づいて各種処理を実行する。
【０１５４】
なお、送信先変更プロセス１８０ａは、テーブル制御部４６、通信制御部４７、判別部４８、アドレス変更部４９、識別部５０が実行する処理を含む。また、ＣＰＵ１８０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ１８０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されればよい。
【０１５５】
なお、上記の送信先変更プログラム１７０ａについては、必ずしも最初からＲＡＭ１７０に記憶させておく必要はない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ（Flexible  Disk）、ＣＤ（Compact  Disk）−ＲＯＭ、ＤＶＤ（Digital  Video  Disk）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
【０１５６】
そして、コンピュータ１００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮ（Wide  Area  Network）などを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ１００がこれらから各プログラムを取得して実行するようにしてもよい。
【０１５７】
なお、図２１に示すコンピュータは、送信先変更プログラム１７０ａ以外にも、例えば、送信元サーバ２と同様の機能を有する送信プログラムや、マルチキャスト管理サーバ３と同様の機能を有する設定プログラム等を実行することができる。例えば、ＣＰＵ１８０は、ＲＡＭ１７０に保持された送信プログラムや設定プログラムを読み出して展開し、送信プロセス、および設定プロセスを実行することで、送信元サーバ２やマルチキャスト管理サーバ３と同様の機能を発揮する。
【０１５８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５９】
（付記１）データの転送を行う転送装置が有するコンピュータに、
データの送信先となる複数の送信先装置にデータをマルチキャスト送信するためのマルチキャストアドレスと、当該マルチキャストアドレスが示す送信先装置のうち、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶装置に格納し、
前記データを受信した場合は、当該データに付与されたマルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に格納されているか否かを判別し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていない場合は、前記受信したデータをマルチキャスト送信し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されている場合は、前記受信したデータに付与されたマルチキャストアドレスを当該マルチキャストアドレスに対応付けられたユニキャストアドレスに変更し、
前記マルチキャストアドレスをユニキャストアドレスに変更したデータを前記直接接続された送信先装置へ転送する
処理を実行させることを特徴とする転送プログラム。
【０１６０】
（付記２）前記転送装置に、前記マルチキャストアドレスが示す複数の送信先装置を辿るように前記データを転送するための送信経路が前記データに含まれている場合は、前記直接接続された送信先装置のみにデータを転送するための送信経路に変更する処理をさらに実行させることを特徴とする付記１に記載の転送プログラム。
【０１６１】
（付記３）コンピュータに、
データの送信元となる送信元装置からデータの送信先となる複数の送信先装置の通知を受信すると、データを当該複数の送信先装置へマルチキャスト送信するためのマルチキャストアドレスを前記送信元装置に通知し、
前記送信元装置から前記複数の送信先装置まで前記データを転送する１つ又は複数の転送装置のうち、前記送信先装置と直接接続された転送装置を特定し、
前記データに付与されたマルチキャストアドレスを、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスに変更してから、当該直接接続された送信先装置へデータを転送するように、前記特定した転送装置を設定する
処理を実行させることを特徴とする設定プログラム。
【０１６２】
（付記４）前記特定した転送装置が接続されている前記送信先装置のポートを識別する処理を前記コンピュータにさらに実行させ、
前記マルチキャストアドレスを前記ユニキャストアドレスに変更したデータを、前記識別したポートから出力するように、前記特定した転送装置を設定する
処理を実行させることを特徴とする付記３に記載の設定プログラム。
【０１６３】
（付記５）各転送装置と各送信先装置との接続関係を示すトポロジ情報を用いて、前記データを転送する１つ又は複数の転送装置を識別し、当該識別した転送装置のうち前記送信先装置と直接接続された転送装置を特定する処理とを実行させることを特徴とする付記３または４に記載の設定プログラム。
【０１６４】
（付記６）コンピュータに、
複数の送信先装置にデータをマルチキャスト送信する場合は、当該複数の送信先装置に前記データをマルチキャスト送信するためのマルチキャストアドレスを当該データに付与し、
直接接続されている送信先装置へデータを転送する際に前記マルチキャストアドレスを当該直接接続されている送信先装置のみへデータを送信するためのユニキャストアドレスに変更してから転送する転送装置が含まれた経路を介して、前記データをマルチキャスト送信する
処理を実行させることを特徴とする送信プログラム。
【０１６５】
（付記７）前記マルチキャスト送信したデータの送信先となる送信先装置から、当該データに対する応答を受信したか否かを判別し、
前記送信先装置から前記応答を受信しなかった場合には、当該応答を受信していない送信先装置のみに対して、前記データを再送する
処理をさらに実行させることを特徴とする付記６に記載の送信プログラム。
【０１６６】
（付記８）データの送信先となる複数の前記送信先装置にデータを送信するためのマルチキャストアドレスと、前記送信先装置のうち、直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶する記憶部と、
前記送信先装置へ送信するデータを受信した場合は、当該データに付与されたマルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶部に格納されているか否かを判別する判別部と、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていないと前記判別部が判別した場合は、前記受信したデータをマルチキャスト送信する送信部と、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていると前記判別部が判別した場合は、前記受信したデータに付与されたマルチキャストアドレスを、前記記憶部が当該マルチキャストアドレスと対応付けて記憶するユニキャストアドレスに変更する変更部と、
前記変更部が、マルチキャストアドレスをユニキャストアドレスに変更したデータを前記直接接続された送信先装置に転送する転送部と
を有することを特徴とする転送装置。
【０１６７】
（付記９）前記変更部は、前記マルチキャストアドレスが示す複数の送信先装置を辿るように前記データを転送するための送信経路が前記データに含まれている場合は、前記直接接続された送信先装置のみにデータを転送するための送信経路に変更することを特徴とする付記８に記載の転送装置。
【０１６８】
（付記１０）データの送信元となる送信元装置からデータの送信先となる複数の送信先装置の通知を受信すると、データを当該複数の送信先装置へマルチキャスト送信するためのマルチキャストアドレスを前記送信元装置に通知する通知部と、
前記送信元装置から前記複数の送信先装置まで前記データを転送する１つ又は複数の転送装置のうち、前記送信先装置と直接接続された転送装置を特定する特定部と、
前記通知部が通知したマルチキャストアドレスを、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスに変更してから、当該直接接続された送信先装置へデータを転送するように、前記特定部が特定した転送装置を設定する設定部と
を有することを特徴とする設定装置。
【０１６９】
（付記１１）前記設定装置は、
前記特定した転送装置が接続されている前記送信先装置のポートを識別する識別部をさらに有し、
前記設定部は、前記マルチキャストアドレスを前記ユニキャストアドレスに変更したデータを、前記識別部が識別したポートから出力するように、前記特定した転送装置を設定する
ことを特徴とする付記１０に記載の設定装置。
【０１７０】
（付記１２）前記設定装置は、
各転送装置と各送信先装置との接続関係を示すトポロジ情報を記憶するトポロジ情報記憶部をさらに有し、
前記特定部は、前記トポロジ情報記憶部が記憶するトポロジ情報を用いて、前記データを転送する１つ又は複数の転送装置を識別し、当該識別した転送装置のうち前記送信先装置と直接接続された転送装置を特定することを特徴とする付記１０または１１に記載の設定装置。
【０１７１】
（付記１３）複数の送信先装置にデータをマルチキャスト送信する場合は、当該複数の送信先装置に前記データをマルチキャスト送信するためのマルチキャストアドレスを当該データに付与する付与部と、
直接接続された送信先装置に転送する際に、前記付与部が付与したマルチキャストアドレスを、当該直接接続された送信先装置へのみ前記データを送信するためのユニキャストアドレスに変更してから転送する転送装置を含んだ転送経路を介して、前記データをマルチキャスト送信する送信部と
を有することを特徴とする送信装置。
【０１７２】
（付記１４）前記送信装置は、
前記マルチキャスト送信したデータの送信先となる送信先装置から、当該データに対する応答を受信したか否かを判別する判別部と、
前記判別部が、前記送信先装置から前記応答を受信しなかったと判別した場合には、当該応答を受信していない送信先装置のみに対して、前記データを再送する再送部と
をさらに有することを特徴とする付記１３に記載の送信装置。
【０１７３】
（付記１５）データの転送を行う転送装置が、
データの送信先となる複数の送信先装置にデータをマルチキャスト送信するためのマルチキャストアドレスと、当該マルチキャストアドレスが示す送信先装置のうち、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスとを対応付けて記憶装置に格納し、
前記データを受信した場合は、当該データに付与されたマルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に格納されているか否かを判別し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されていない場合は、前記受信したデータをマルチキャスト送信し、
前記マルチキャストアドレスに対応付けられたユニキャストアドレスが前記記憶装置に記憶されている場合は、前記受信したデータに付与されたマルチキャストアドレスを当該マルチキャストアドレスに対応付けられたユニキャストアドレスに変更し、
前記マルチキャストアドレスをユニキャストアドレスに変更したデータを前記直接接続された送信先装置へ転送する
処理を実行することを特徴とする転送方法。
【０１７４】
（付記１６）前記転送装置が、前記マルチキャストアドレスが示す複数の送信先装置を辿るように前記データを転送するための送信経路が前記データに含まれている場合は、前記直接接続された送信先装置のみにデータを転送するための送信経路に変更する処理をさらに実行することを特徴とする付記１５に記載の転送方法。
【０１７５】
（付記１７）データを転送する転送装置の設定を行う設定装置が、
データの送信元となる送信元装置からデータの送信先となる複数の送信先装置の通知を受信すると、データを当該複数の送信先装置へマルチキャスト送信するためのマルチキャストアドレスを前記送信元装置に通知し、
前記送信元装置から前記複数の送信先装置まで前記データを転送する１つ又は複数の転送装置のうち、前記送信先装置と直接接続された転送装置を特定し、
前記データに付与されたマルチキャストアドレスを、前記転送装置に直接接続された送信先装置のみにデータを送信するためのユニキャストアドレスに変更してから、当該直接接続された送信先装置へデータを転送するように、前記特定した転送装置を設定する
処理を実行することを特徴とする設定方法。
【０１７６】
（付記１８）前記設定装置が、前記特定した転送装置が接続されている前記送信先装置のポートを識別し、
前記マルチキャストアドレスを前記ユニキャストアドレスに変更したデータを、前記識別したポートから出力するように、前記特定した転送装置を設定する
ことを特徴とする付記１７に記載の設定方法。
【０１７７】
（付記１９）前記設定装置が、各転送装置と各送信先装置との接続関係を示すトポロジ情報を用いて、前記データを転送する１つ又は複数の転送装置を識別し、当該識別した転送装置のうち前記送信先装置と直接接続された転送装置を特定することを特徴とする付記１７または１８に記載の設定方法。
【０１７８】
（付記２０）データを複数の送信先装置へマルチキャスト送信する送信元装置が、
複数の送信先装置にデータをマルチキャスト送信する場合は、当該複数の送信先装置に前記データをマルチキャスト送信するためのマルチキャストアドレスを当該データに付与し、
直接接続されている送信先装置へデータを転送する際に、前記マルチキャストアドレスを当該直接接続されている送信先装置のみへデータを送信するためのユニキャストアドレスに変更してから転送する転送装置が含まれた経路を介して、前記データをマルチキャスト送信する
処理を実行することを特徴とする送信方法。
【０１７９】
（付記２１）前記送信元装置が、
前記マルチキャスト送信したデータの送信先となる送信先装置から、当該データに対する応答を受信したか否かを判別し、
前記送信先装置から前記応答を受信しなかった場合には、当該応答を受信していない送信先装置のみに対して、前記データを再送する
処理をさらに実行することを特徴とする付記２０に記載の送信方法。
【符号の説明】
【０１８０】
１  マルチキャストシステム
２、７１  送信元サーバ
３  マルチキャスト管理サーバ
４、５、７２、７３  ネットワークスイッチ
６〜８、７４〜７６  エンドホスト
１０  データ生成部
１１  マルチキャストアドレス設定部
１２  データ送信部
２０  ネットワーク管理部
２１  ネットワークトポロジ記憶部
２２  ネットワークトポロジ管理部
２３  マルチキャストアドレス設定部
２４  マルチキャストアドレス保持部
２５  マルチキャストアドレス管理部
２６  設定部
４０  変更情報記憶部
４１  転送情報記憶部
４２〜４５  通信ポート
４６  テーブル制御部
４７  通信制御部
４８  判別部
４９  アドレス変更部
５０  識別部
【図１】
2014107595.tif 000003
【図２】
2014107595.tif 000004
【図３】
2014107595.tif 000005
【図４】
2014107595.tif 000006
【図５】
2014107595.tif 000007
【図６】
2014107595.tif 000008
【図７】
2014107595.tif 000009
【図８】
2014107595.tif 000010
【図９】
2014107595.tif 000011
【図１０】
2014107595.tif 000012
【図１１】
2014107595.tif 000013
【図１２】
2014107595.tif 000014
【図１３】
2014107595.tif 000015
【図１４】
2014107595.tif 000016
【図１５】
2014107595.tif 000017
【図１６】
2014107595.tif 000018
【図１７】
2014107595.tif 000019
【図１８】
2014107595.tif 000020
【図１９】
2014107595.tif 000021
【図２０】
2014107595.tif 000022
【図２１】
2014107595.tif 000023
【図２２】
2014107595.tif 000024