(57)【要約】【課題】データを冗長化させて複数のストレージに格納する場合、データの送信側装置とストレージ間のネットワーク負荷を軽減させることができるデータ転送システムを提供する。【解決手段】転送先情報テーブル記憶手段９１は、転送先ノードと、その転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する。パケット送信手段８１は、対象データの転送先ノードと、対象データが格納される複数のストレージの格納先アドレスと、対象データとを含む転送用パケットを作成して、ノード９０に送信する。データ転送手段９２は、転送先情報テーブル記憶手段９１に転送先ノードが登録されている場合、その転送先ノードに対応するストレージ以外の格納先アドレスを転送用パケットから削除して、その転送用パケットを転送先ノードに転送し、削除された格納先アドレス宛に対象データを複製して転送する。【選択図】図８
2014179748.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して同一の対象データを複数のストレージに格納するデータ転送システムにおいて、
前記対象データを格納すべき複数のストレージを決定するプロキシサーバと、
前記プロキシサーバから送信されるデータを受信して前記ストレージへ転送するノードとを備え、
前記ノードは、
自ノードからデータを転送する先のノードである転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する転送先情報テーブル記憶手段と、
受信したデータを転送するデータ転送手段とを含み、
前記プロキシサーバは、
前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成して、当該転送用パケットを前記ノードに送信するパケット送信手段を含み、
前記ノードのデータ転送手段は、前記転送先情報テーブル記憶手段に前記転送先ノードが登録されている場合、当該転送先ノードに対応するストレージ以外の格納先アドレスを前記転送用パケットから削除して当該転送用パケットを前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送する
ことを特徴とするデータ転送システム。
【請求項２】
プロキシサーバは、
複数のストレージに対象データを送信する際の経路が分岐するノードを分岐点と決定する分岐点決定手段と、
前記分岐点を示すノードの転送先ノードの転送先に２以上のストレージが存在する場合、当該分岐点を示すノードの転送先情報テーブル記憶手段に、当該分岐点を示すノードの転送先ノードの仮想アドレスと、前記転送先に存在する２以上のストレージとを対応付けて登録する転送先情報登録手段とを含む
請求項１記載のデータ転送システム。
【請求項３】
ノードは、
自ノードが分岐点か否かを判断する分岐点判断手段を含み、
プロキシサーバの分岐点決定手段は、特別ポート宛パケットを各ストレージまでの経路に送信し、
前記分岐点判断手段は、前記特別ポート宛パケットを異なる物理ポートに送信する場合に、自ノードを分岐点と判断する
請求項２記載のデータ転送システム。
【請求項４】
ノードは、
分岐点判断手段によって自ノードが分岐点であると判断された場合、自ノードの転送先に存在するストレージの格納先アドレスと、自ノードに割り振る仮想アドレスの要求をプロキシサーバに送信するアドレス要求手段を含み、
分岐点決定手段は、前記要求に応じて仮想アドレスを割り当て、
転送先情報登録手段は、割り当てられた仮想アドレスと前記転送先に存在する２以上のストレージとを対応付けて転送先情報テーブル記憶手段に登録する
請求項３記載のデータ転送システム。
【請求項５】
プロキシサーバは、
ストレージとの通信に使用される複数の第一ソケットを管理するための第二ソケットを作成するコネクション管理手段を含み、
パケット送信手段は、前記第二ソケットを利用して転送用パケットを送信する
請求項１から請求項４のうちのいずれか１項に記載のデータ転送システム。
【請求項６】
同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛に前記対象データをネットワーク上のノードを介して送信する転送用データ送信装置であって、
前記対象データの転送先と、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成し、複数のストレージ宛の対象データが分岐する場合に当該転送用パケットから対象データを複製して各ストレージに送信するノードに対して当該転送用パケットを送信するパケット送信手段を備えた
ことを特徴とする転送用データ送信装置。
【請求項７】
同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛の前記対象データを送信する送信装置から転送用パケットを受信して、前記複数のストレージに当該転送用パケットを転送する転送用データ処理装置であって、
自ノードからデータを転送する先のノードである転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する転送先情報テーブル記憶手段と、
前記転送先情報テーブル記憶手段に前記転送先ノードが登録されている場合、前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを前記送信装置から受信したときに、当該転送用パケットから、前記転送先ノードに対応するストレージ以外の格納先アドレスを削除して前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送するデータ転送手段とを備えた
ことを特徴とする転送用データ処理装置。
【請求項８】
ネットワークを介して同一の対象データを複数のストレージに格納する際に当該ネットワークの負荷を軽減するネットワーク負荷軽減方法であって、
前記対象データを格納すべき複数のストレージを決定するプロキシサーバが、前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成して、前記プロキシサーバから送信されるデータを受信して前記ストレージへ転送するノードに対して当該転送用パケットを送信し、
前記ノードが、転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルに、自ノードからデータを転送する先の転送先ノードが登録されている場合、当該転送先ノードに対応するストレージ以外の格納先アドレスを前記転送用パケットから削除して当該転送用パケットを前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送する
ことを特徴とするネットワーク負荷軽減方法。
【請求項９】
同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛に前記対象データをネットワーク上のノードを介して送信するコンピュータに適用される転送用データ送信プログラムであって、
前記コンピュータに、
前記対象データの転送先と、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成し、複数のストレージ宛の対象データが分岐する場合に当該転送用パケットから対象データを複製して各ストレージに送信するノードに対して当該転送用パケットを送信するパケット送信処理
を実行させるための転送用データ送信プログラム。
【請求項１０】
同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛の前記対象データを送信する送信装置から、転送用パケットを受信して、前記複数のストレージに当該転送用パケットを転送するコンピュータに適用される転送用データ処理プログラムであって、
前記コンピュータに、
転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルに、自ノードからデータを転送する先の転送先ノードが登録されている場合、前記送信装置から前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを受信したときに、当該転送用パケットから、前記転送先ノードに対応するストレージ以外の格納先アドレスを削除して前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送するデータ転送処理
を実行させるための転送用データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ネットワークを経由して対象データを複数のストレージに格納する際に、そのネットワークの負荷を軽減させるデータ転送システム、転送用データ送信装置、転送用データ処理装置、ネットワーク負荷軽減方法、転送用データ送信プログラムおよび転送用データ処理プログラムに関する。
【背景技術】
【０００２】
ＯｐｅｎＳｔａｃｋ（登録商標）のＳｗｉｆｔを利用したクラウドシステムでは、データを格納する際、冗長性を確保するため、データを多重に格納する。これは、システム全体の価格を抑えるため、信用の低いストレージを用いてシステムを構成した場合に、データを格納するノードの信頼性を、データを多重に格納することで確保しようとするものである。
【０００３】
また、特許文献１には、分岐装置の負荷を軽減させるマルチキャストデータ通信システムが記載されている。特許文献１に記載されたマルチキャストデータ通信システムは、分岐処理が不必要なスイッチでは、分岐処理を行わないようにすることで、スイッチ自身の負荷を軽減させる。
【０００４】
また、非特許文献１には、イーサネット（登録商標）で経路を冗長化するための技術としてＴＲＩＬＬ（TRansparent Interconnection of Lots of Links）が記載されている。非特許文献１に記載されたＴＲＩＬＬは、データが送信されるネットワーク経路を選択または限定することで、ネットワーク負荷を軽減する。また、関連する技術として、不要なマルチキャストトラフィックをフィルタリングするＩＧＭＰ（Internet Group Management Protocol）スヌーピングも知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１７５６０９号公報
【非特許文献】
【０００６】
【非特許文献１】日経ＢＰ社、“TRILL とは:ITpro”、［online］、［平成25年 3月11日検索］、インターネット〈URL：http://itpro.nikkeibp.co.jp/article/Keyword/20101019/353114/〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＯｐｅｎＳｔａｃｋのＳｗｉｆｔでは、プロキシノードからデータを多重に書き込むことで、ストレージノードに障害が発生した場合でもデータを保証する。以下の説明では、ストレージノードへの書き込みを３多重として説明する。この場合、プロキシノードとストレージノード間のネットワークには、ユーザが送信するデータ量の３倍以上のデータが流れることになるため、ネットワーク負荷が高くなってしまう。
【０００８】
ストレージの信頼性が高い場合、データの多重度は３多重程度で済むが、ストレージの信頼度が低い場合、データを保証するため、さらに多重度を上げる必要がある。そして、多重度が上がると、それに伴い、さらにネットワーク負荷が高くなってしまう。
【０００９】
具体的には、データを多重に格納することでノードの信頼性を確保しようとした場合、冗長性を上げようとすればするほど、ネットワークの負荷が高くなると言う問題がある。具体的には、プロキシノードが、実際にデータを格納するストレージノードに対して、データを多重に格納する指示を行う場合、プロキシノードとストレージノードとの間のネットワークに、同一のデータが多く流れてしまうという問題がある。
【００１０】
また、特許文献１に記載されたシステムは、分岐装置の負荷を軽減することは可能であるが、データが送信される通信路の負荷を軽減できるわけではない。そのため、例えば、同一データを送信する際に同一通信路が使用される場合、その通信路の負荷を軽減することはできない。また、非特許文献１に記載されたＴＲＩＬＬを用いても、同一データを送信する際に同一通信路が使用される場合、その通信路の負荷を軽減することは困難である。これは、ＩＧＭＰスムーピングを利用した場合も同様である。
【００１１】
そこで、本発明は、データを冗長化させて複数のストレージに格納する場合、データの送信側装置とストレージ間のネットワーク負荷を軽減させることができるデータ転送システム、転送用データ送信装置、転送用データ処理装置、ネットワーク負荷軽減方法、転送用データ送信プログラムおよび転送用データ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明によるデータ転送システムは、ネットワークを介して同一の対象データを複数のストレージに格納するデータ転送システムにおいて、対象データを格納すべき複数のストレージを決定するプロキシサーバと、プロキシサーバから送信されるデータを受信してストレージへ転送するノードとを備え、ノードが、自ノードからデータを転送する先のノードである転送先ノードと、その転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する転送先情報テーブル記憶手段と、受信したデータを転送するデータ転送手段とを含み、プロキシサーバが、対象データの転送先ノードと、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケットを作成して、その転送用パケットをノードに送信するパケット送信手段を含み、ノードのデータ転送手段が、転送先情報テーブル記憶手段に転送先ノードが登録されている場合、その転送先ノードに対応するストレージ以外の格納先アドレスを転送用パケットから削除してその転送用パケットを転送先ノードに転送し、削除された格納先アドレス宛に対象データを複製して転送することを特徴とする。
【００１３】
本発明による転送用データ送信装置は、同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛に対象データをネットワーク上のノードを介して送信する転送用データ送信装置であって、対象データの転送先と、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケットを作成し、複数のストレージ宛の対象データが分岐する場合にその転送用パケットから対象データを複製して各ストレージに送信するノードに対してその転送用パケットを送信するパケット送信手段を備えたことを特徴とする。
【００１４】
本発明による転送用データ処理装置は、同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛の対象データを送信する送信装置から転送用パケットを受信して、複数のストレージにその転送用パケットを転送する転送用データ処理装置であって、自ノードからデータを転送する先のノードである転送先ノードと、その転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する転送先情報テーブル記憶手段と、転送先情報テーブル記憶手段に転送先ノードが登録されている場合、送信装置から対象データの転送先ノードと、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケットを受信したときに、その転送用パケットから、転送先ノードに対応するストレージ以外の格納先アドレスを削除して転送先ノードに転送し、削除された格納先アドレス宛に対象データを複製して転送するデータ転送手段とを備えたことを特徴とする。
【００１５】
本発明によるネットワーク負荷軽減方法は、ネットワークを介して同一の対象データを複数のストレージに格納する際にそのネットワークの負荷を軽減するネットワーク負荷軽減方法であって、対象データを格納すべき複数のストレージを決定するプロキシサーバが、対象データの転送先ノードと、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケットを作成して、プロキシサーバから送信されるデータを受信してストレージへ転送するノードに対してその転送用パケットを送信し、ノードが、転送先ノードと、その転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルに、自ノードからデータを転送する先の転送先ノードが登録されている場合、その転送先ノードに対応するストレージ以外の格納先アドレスを転送用パケットから削除してその転送用パケットを転送先ノードに転送し、削除された格納先アドレス宛に対象データを複製して転送することを特徴とする。
【００１６】
本発明による転送用データ送信プログラムは、同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛に対象データをネットワーク上のノードを介して送信するコンピュータに適用される転送用データ送信プログラムであって、コンピュータに、対象データの転送先と、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケットを作成し、複数のストレージ宛の対象データが分岐する場合にその転送用パケットから対象データを複製して各ストレージに送信するノードに対してその転送用パケットを送信するパケット送信処理を実行させることを特徴とする。
【００１７】
本発明による転送用データ処理プログラムは、同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛の対象データを送信する送信装置から、転送用パケットを受信して、複数のストレージにその転送用パケットを転送するコンピュータに適用される転送用データ処理プログラムであって、コンピュータに、転送先ノードと、その転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルに、自ノードからデータを転送する先の転送先ノードが登録されている場合、送信装置から対象データの転送先ノードと、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケットを受信したときに、その転送用パケットから、転送先ノードに対応するストレージ以外の格納先アドレスを削除して転送先ノードに転送し、削除された格納先アドレス宛に対象データを複製して転送するデータ転送処理を実行させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、データを冗長化させて複数のストレージに格納する場合、データの送信側装置とストレージ間のネットワーク負荷を軽減させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明によるデータ転送システムの一実施形態を示すブロック図である。
【図２】データ転送システムを利用したクラウドシステムの例を示す説明図である。
【図３】データ転送システムが行う通信方法の例を説明する説明図である。
【図４】図２に例示するクラウドシステムにおいて生成される転送先情報テーブルの例を示す説明図である。
【図５】転送用パケットの例を示す説明図である。
【図６】分岐点を決定する動作の例を示すフローチャートである。
【図７】転送先情報テーブルを作成する動作の例を示すフローチャートである。
【図８】本発明によるデータ転送システムの概要を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態を図面を参照して説明する。
【００２１】
図１は、本発明によるデータ転送システムの一実施形態を示すブロック図である。また、図２は、本実施形態のデータ転送システムを利用したクラウドシステムの例を示す説明図である。
【００２２】
図２に例示するクラウドシステムには、例えば、ＯｐｅｎＳｔａｃｋのＳｗｉｆｔが利用される。図２に例示するクラウドシステムは、多数のクライアント４０と、データを格納する複数のストレージノード３１〜３３を備える。なお、図２に例示するクラウドシステムは、３つのストレージノードを備えているが、ストレージノードの数は３つに限定されず、２つであってもよく、４つ以上であってもよい。また、以下の説明では、ストレージノードのことを、単にストレージと記すこともある。
【００２３】
クライアント４０と、ストレージノード３１〜３３の間には、クライアント４０からのデータｄ１を中継するプロキシノード１０が複数存在する。プロキシノード１０は、ユーザ（クライアント４０）から対象データを受信すると、その対象データを格納すべき複数のストレージノードを決定し、受信したデータファイル名から決定した複数のストレージノード３１〜３３にデータを多重に（例えば、データｄ１をデータｄ１〜ｄ３に複製して）格納する。なお、図２に例示するクラウドシステムは、２つのプロキシノードを備えているが、プロキシノードの数は２つに限定されず、１つであってもよく、３つ以上であってもよい。
【００２４】
また、プロキシノード１０とストレージノード３１〜３３の間は、通信ネットワーク網で接続されており、プロキシノード１０から送信されるデータを受信してストレージノード３１〜３３へ中継するスイッチ２０ａ〜２０ｃが存在する。重複したデータは、通信ネットワーク網を介して各ストレージノード３１〜３３に格納される。なお、図２に例示するクラウドシステムは、３つのスイッチ２０ａ〜２０ｃを備えているが、スイッチの数は３つに限定されず、２つであってもよく、４つ以上であってもよい。
【００２５】
以下の説明では、ＯｐｅｎＳｔａｃｋのＳｗｉｆｔを利用して、複数のストレージにデータを冗長化させて格納する場合を例示するが、冗長化する際に利用される技術は、ＯｐｅｎＳｔａｃｋのＳｗｉｆｔに限定されない。また、本実施形態では、説明を単純化するため、最小単位である３多重の場合を例に説明する。
【００２６】
図１を参照すると、本実施形態のデータ転送システムは、プロキシノード１０と、スイッチ２０とを備えている。
【００２７】
プロキシノード１０は、分岐点決定手段１１と、アドレス通知手段１２と、転送先情報テーブル作成手段１３と、転送先情報テーブル記憶手段１４と、ＵＤＰ（User Datagram Protocol）カプセリングパケット作成手段１５と、コネクション管理手段１６と、データ格納先選択手段１７とを含む。
【００２８】
データ格納先選択手段１７は、多数のクライアントからストレージノードに格納すべきデータを受信し、受信したデータをどのストレージノードに多重書きするか決定する。データ格納先選択手段１７は、例えば、ＯｐｅｎＳｔａｃｋ  Ｓｗｉｆｔの基本機能に基づいて、多重書きするストレージノードを決定すればよい。なお、多重書きするストレージノードを決定する方法は、この方法に限定されない。
【００２９】
コネクション管理手段１６は、決定された複数のストレージノードそれぞれに対し、通信端点を作成することで、通信パスを確立する。このとき、コネクション管理手段１６は、ストレージノードとの通信に使用されるソケット（以下、子ソケットと記す。）と、その子ソケットを管理するための特別製のソケット（以下、親ソケットと記す。）を作成する。なお、コネクション管理手段１６の詳細な動作については、後述される。
【００３０】
分岐点決定手段１１は、ストレージノードへの通信パスを確立する。その際、分岐点決定手段１１は、対象データを送信する経路が分岐するスイッチを特定し、そのスイッチを分岐点と決定する。そして、分岐点決定手段１１は、分岐点になるスイッチに、仮想的にＩＰアドレスを割り振る。
【００３１】
アドレス通知手段１２は、分岐点決定手段１１が決定した分岐点（スイッチ）に、割り振られた仮想的なＩＰアドレスを通知する。
【００３２】
転送先情報テーブル記憶手段１４は、データを転送する先のスイッチ（以下、転送先ノードと記す。）と、転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する。この転送先情報テーブルは、通信パスを決定する際、対象データを送信する経路に分岐が発生する場合に、その分岐点の先に存在する複数の相手先（具体的には、ストレージノード）を記憶するものである。
【００３３】
具体的には、分岐点の先に複数のストレージノードが存在する場合、後述する転送先情報テーブル作成手段１３が、次のスイッチに対して、その複数のストレージノードが存在することをスイッチ内部の転送先情報テーブルに登録させる。
【００３４】
転送先情報テーブル作成手段１３は、分岐点（スイッチ）の転送先ノードの転送先に２以上のストレージノードが存在する場合、その分岐点（スイッチ）の転送先情報テーブルに、その分岐点（スイッチ）の転送先ノードの仮想アドレスと、転送先に存在する２以上のストレージノードとを対応付けて転送先情報テーブルに登録する。
【００３５】
すなわち、転送先情報テーブル作成手段１３は、通信パスを決定する際に分岐が発生する場合、分岐点の先に複数の相手先（ストレージノード）がいる場合に、スイッチの転送先に複数の相手先が存在することをスイッチ内部の転送先情報テーブルに記憶させる。
【００３６】
ＵＤＰカプセリングパケット作成手段１５は、転送先ノードに対象データを送信する。具体的には、ＵＤＰカプセリングパケット作成手段１５は、データを送信する先の複数の情報を、特別ポート宛のＵＤＰのデータとしてまとめ、ＵＤＰでカプセル化したデータを転送先ノードに送信する。以下、ＵＤＰカプセリングパケット作成手段１５によって作成されたデータを転送用パケットと記すこともある。
【００３７】
転送用パケットには、送信元アドレス、転送先（スイッチ）アドレス、格納先を示す複数のストレージノードのアドレス、および、ストレージに格納される対象データが含まれる。
【００３８】
分岐点決定手段１１と、アドレス通知手段１２と、転送先情報テーブル作成手段１３と、ＵＤＰカプセリングパケット作成手段１５と、コネクション管理手段１６と、データ格納先選択手段１７とは、プログラム（転送用データ送信プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、プロキシノード１０の記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、分岐点決定手段１１、アドレス通知手段１２、転送先情報テーブル作成手段１３、ＵＤＰカプセリングパケット作成手段１５、コネクション管理手段１６およびデータ格納先選択手段１７として動作してもよい。
【００３９】
また、分岐点決定手段１１と、アドレス通知手段１２と、転送先情報テーブル作成手段１３と、ＵＤＰカプセリングパケット作成手段１５と、コネクション管理手段１６と、データ格納先選択手段１７とは、それぞれが専用のハードウェアで実現されていてもよい。
【００４０】
また、プロキシノード１０は、ストレージノードに転送するためのデータを生成して各スイッチに送信することから、プロキシノード１０のことを、転送用データ送信装置と呼ぶことができる。
【００４１】
スイッチ２０は、分岐点決定手段２１と、アドレス要求手段２２と、転送先情報テーブル作成手段２３と、転送先情報テーブル記憶手段２４と、ＵＤＰカプセリングパケット転送手段２５とを含む。
【００４２】
分岐点決定手段２１は、自スイッチが分岐点に該当するか否か判断する。具体的には、分岐点決定手段２１は、プロキシノード１０の分岐点決定手段１１が分岐点を決定するために送信するパケットをトリガとして、データを送出する物理ポートが異なる場合、自スイッチを分岐点と判断する。
【００４３】
アドレス要求手段２２は、自スイッチが分岐点に該当すると判断された場合、プロキシノード１０に仮想ＩＰアドレスを要求する。プロキシノード１０から割り当てられた仮想ＩＰアドレスは、転送用データを転送する際に利用される。
【００４４】
転送先情報テーブル記憶手段２４は、転送先情報テーブル記憶手段１４と同様に、転送先情報テーブルを記憶する。
【００４５】
転送先情報テーブル作成手段２３は、プロキシノード１０から受信したデータに基づいて、転送先ノードの仮想アドレスと、転送先に存在する２以上のストレージノードとを対応付けた転送先情報テーブルを、転送先情報テーブル記憶手段２４に登録する。
【００４６】
具体的には、転送先情報テーブル作成手段２３は、プロキシノード１０から転送先ノードの仮想ＩＰアドレス割当通知を受けて、転送先情報テーブル記憶手段２４にその仮想ＩＰアドレスを設定する。さらに、転送先情報テーブル作成手段２３は、転送先ノードの先に複数の相手先（ストレージノード）が存在する場合、転送先ノードとその複数の相手先ノードとを対応付けた転送先情報テーブルを転送先情報テーブル記憶手段２４に記憶する。
【００４７】
ＵＤＰカプセリングパケット転送手段２５は、転送先情報テーブル記憶手段２４に記憶された転送先情報テーブルの内容に基づいて受信した対象データを転送先ノードに転送する。具体的には、ＵＤＰカプセリングパケット転送手段２５は、転送先情報テーブル記憶手段２４に転送先ノードが登録されている場合、その転送先ノードに対応するストレージノード以外の格納先アドレスを転送用パケットから削除して、その転送用パケットを転送先ノードに転送する。さらに、ＵＤＰカプセリングパケット転送手段２５は、削除された格納先アドレス宛に対象データを複製して転送する。
【００４８】
ＵＤＰカプセリングパケット転送手段２５は、例えば、特別ポート宛のカプセリングされたＵＤＰパケットを受け取った場合に、データ中の相手先情報を解析し、転送先情報テーブルの情報に従ってデータを複製する。そして、ＵＤＰカプセリングパケット転送手段２５は、複製されたデータを目的とする次のスイッチに送出する。
【００４９】
例えば、ＯｐｅｎＳｔａｃｋのＳｗｉｆｔを利用するクラウドシステムでは、複数のストレージノードに同一データが格納される。その際、前段のプロキシノードと後段のストレージノード間において、本来は複数の同一データがネットワーク内を流れることになる。本実施形態では、複数の同一データをネットワーク内の同一パスを通す必要がある場合でも、１つのデータとして流すことができるため、プロキシノードとストレージノード間のネットワーク負荷を軽減できる。特にデータが集中する共通ネットワークパスでは、効果的に負荷を軽減できる。
【００５０】
分岐点決定手段２１と、アドレス要求手段２２と、転送先情報テーブル作成手段２３と、ＵＤＰカプセリングパケット転送手段２５とは、プログラム（転送用データ処理プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、スイッチ２０の記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、分岐点決定手段２１、アドレス要求手段２２、転送先情報テーブル作成手段２３およびＵＤＰカプセリングパケット転送手段２５として動作してもよい。
【００５１】
また、分岐点決定手段２１と、アドレス要求手段２２と、転送先情報テーブル作成手段２３と、ＵＤＰカプセリングパケット転送手段２５とは、それぞれが専用のハードウェアで実現されていてもよい。
【００５２】
また、スイッチ２０は、プロキシノード１０が生成した転送用パケットを転送先に応じて処理することから、スイッチ２０のことを、転送用データ処理装置と呼ぶことができる。
【００５３】
以下、コネクション管理手段１６の動作を詳細に説明する。まず、コネクション管理手段１６は、作成する通信端点を取りまとめる特別な通信端点を作成する。このとき、コネクション管理手段１６は、この通信端点を特別ポートで作成し、分岐点決定手段１１がＩＰアドレスを割り振る通り道のスイッチにも、特別性のポートを受けることのできる通信端点の作成を依頼する。このとき、依頼されたスイッチは、この依頼に応じて、通信端点を作成する。
【００５４】
次に、コネクション管理手段１６は、同報通信を行う際に、データ格納先選択手段１７によって選択されたデータ格納先（ストレージノード）に対するコネクションを確立し、各コネクションの子ソケットを作成する。
【００５５】
また、このとき、コネクション管理手段１６は、格納先であるストレージの情報を格納する格納先情報テーブル（図示せず）を参照する。格納先情報テーブルに格納先（ストレージノード）の情報が存在しない場合、コネクション管理手段１６は、分岐点決定手段１１に格納先情報テーブルの更新を指示する。一方、格納先の情報が格納先情報テーブルに存在する場合、コネクション管理手段１６は、子ソケットを親ソケットの管理下におく。すなわち、コネクション管理手段１６は、子ソケットに渡されるデータを親ソケットで管理できるように、子ソケットへコネクション情報を親ソケットに上げるよう制御する。
【００５６】
そのため、子ソケットは、この制御により、データを参照するが、実際のデータ送信は行わない。子ソケットは、親ソケットへコネクション情報（具体的には、相手アドレス、ポート、自ポート、シーケンス（ｓｅｑ）番号、確認応答（ＡＣＫ）番号）を通知する。
【００５７】
親ソケットの通信端点（以下、親通信端点と記す。）には、ＵＤＰカプセリングパケット作成手段１５によってカプセル化された、親ソケットに従う子ソケットの通信端点（以下、子通信端点）が用いられる。なお、子ソケットを利用した通信端点は、それぞれのストレージノードに対応する。
【００５８】
ＵＤＰカプセリングパケット作成手段１５がカプセル化されたデータを送信する際、親ソケットが子ソケットのｓｅｑ番号を更新する。カプセル化されたデータは、最終的にそれぞれのデータ格納先に送付され、ＡＣＫが返却される。一方、返却されたｓｅｑ番号およびＡＣＫ番号は、子ソケットから親ソケットに通知される。
【００５９】
コネクション管理手段１６は、親ソケットから通知されたｓｅｑ番号を参照し、再送が必要な場合は、子ソケットが参照しているデータを用いて再送する。
【００６０】
なお、ここでは、子ソケットがＴＣＰ（Transmission Control Protocol ）コネクションを用いた場合の動作を説明した。子ソケットがＵＤＰの場合、子ソケットから親ソケットに渡されるコネクション情報は、相手アドレス、ポート、自ポートのみである。また、作成されるＵＤＰカプセリングデータに格納される格納先の情報も、格納先アドレスとポート番号のみとなる。さらに、子ソケットがＵＤＰの場合、ＴＣＰコネクションを用いた場合に行われるｓｅｑ番号およびＡＣＫ番号の交換、管理および再送動作は必要ない。
【００６１】
図３は、本実施形態のデータ転送システムが行う通信方法の例を説明する説明図である。本実施形態では、プロキシノードとスイッチとの間で、上述する操作（例えば、Ｓｅｑ更新、ＡＣＫ通知など）が行われるが、クライアントには、通常用いられる形式のソケットを用いてパケット（データ）が送受信される。すなわち、クライアントとプロキシノードの間（言い換えると、クライアント／サーバ間）で行われる通信は、通常のソケット通信と変わらない。
【００６２】
次に、本実施形態のデータ転送システムの動作を説明する。ここでは、図２に例示するクラウドシステムに本実施形態のデータ転送システムが用いられるものとする。
【００６３】
まず、プロキシノード１０のコネクション管理手段１６は、ストレージノード３１〜３３との間に確立されるコネクションを管理するため、特別な親ソケットを作成する。プロキシノード１０がクライアント４０からファイル（対象データ）を受信した後、データ格納先選択手段１７は、ファイルの情報から、そのファイルを格納すべきストレージノードを複数（ここでは、３つ）決定する。
【００６４】
コネクション管理手段１６は、複数のストレージノード３１〜３３との間のコネクションを作成した後、子ソケットを管理するため、親ソケットに子ソケットのコネクション情報を通知する。例えば、子ソケットがＴＣＰの場合、コネクション管理手段１６は、自ポート番号、相手アドレス、相手ポート番号、ｓｅｑ番号及びＡＣＫ番号をコネクション情報として親ソケットに通知する。また、例えば、子ソケットがＵＤＰの場合、コネクション管理手段１６は、自ポート番号、相手アドレスおよび相手ポート番号をコネクション情報として親ソケットに通知する。
【００６５】
次に、分岐点決定手段１１は、通信先として決定した各ストレージノード３１〜３３に対し、経路を調査する特別ポートのＵＤＰパケットを送信する。分岐点決定手段２１は、このＵＤＰパケットを１つでも異なる物理ポートに送出する場合、自身が分岐点であると判断する。
【００６６】
図２に示す例では、このＵＤＰパケットは、まず、スイッチＡを通過する。このパケットが通過したスイッチＡの分岐点決定手段２１は、このＵＤＰパケットを異なる物理ポートに送出することになるので、スイッチＡ自身が分岐点であると判断する。
【００６７】
このとき、アドレス要求手段２２は、このＵＤＰパケットの送信元に仮想的なＩＰアドレスを割り振るよう要求する。なお、自スイッチ内でこのＵＤＰパケットを送出する物理ポートが全て同じポートであった場合、アドレス要求手段２２は、何も処理を行わない。
【００６８】
また、アドレス要求手段２２は、このＵＤＰパケットの送信元に、受信した複数の格納先アドレス（ストレージノードのＩＰアドレス）も通知する。送信元であるプロキシノード１０は、ＩＰアドレスを要求するデータを受信する。送出したＵＤＰパケットに割り当てた格納先アドレスが、ＩＰアドレスを要求するデータに含まれている場合、分岐点決定手段１１は、仮想ＩＰアドレスをスイッチＡに割り振る。また、転送先情報テーブル作成手段１３は、割り振ったＩＰアドレスと格納先アドレスの組を、転送先情報テーブル記憶手段１４に格納する。
【００６９】
図２に示す例では、このＵＤＰパケットは、さらに、スイッチＢを通過する。そのため、スイッチＢのアドレス要求手段２２は、このＵＤＰパケットの送信元に仮想的なＩＰアドレスを割り振るよう要求する。
【００７０】
さらにその先のスイッチ（すなわち、スイッチＡの先のスイッチＢ）から仮想的なＩＰアドレスを割り振る要求が行われる際、ＩＰアドレスを要求するデータには、格納先アドレスが減った状態で格納されている。これは、前段のスイッチ（ここでは、スイッチＡ）で分岐されたパケットの一部（図２では、ストレージノード３のアドレス）は、後段のスイッチ（ここでは、スイッチＢ）に届かないためである。
【００７１】
プロキシノード１０（より具体的には、分岐点決定手段１１）は、スイッチＢにも仮想ＩＰアドレスを割り振る。また、転送先情報テーブル作成手段１３は、スイッチＢに割り振った仮想ＩＰアドレスと、ＩＰアドレス要求時にスイッチＢから送信されたデータに含まれていた格納先アドレスを、スイッチＡに通知する。通知されたスイッチＡでは、転送先情報テーブル作成手段２３が、スイッチＢのＩＰアドレスと格納先アドレスとをスイッチＡ自身の転送先情報テーブル記憶手段２４に格納する。
【００７２】
図４は、図２に例示するクラウドシステムにおいて生成される転送先情報テーブルの例を示す説明図である。プロキシノード１０は、転送先ノードであるスイッチＡのＩＰアドレスと、スイッチＡの転送先に存在するストレージノード１，２，３とを対応付けた転送先情報テーブルを記憶する。また、スイッチＡは、転送先ノードであるスイッチＢのＩＰアドレスと、スイッチＢの転送先に存在するストレージノード１，２とを対応付けた転送先情報テーブルを記憶する。
【００７３】
次に、プロキシノード１０が、クライアント４０から受信した対象データを、データ格納先選択手段１７が決定した複数のストレージノードに送信する方法を説明する。図５は、転送用パケットの例を示す説明図である。
【００７４】
上述する処理において、親ソケットは、実際に複数のストレージノードとコネクションを確立している子ソケットからコネクション情報を取得できる。そこで、ＵＤＰカプセリングパケット作成手段１５は、このコネクション情報を用いて、データをカプセリング化し、転送先情報テーブルに示される転送先ノード（同説明ではスイッチＡ）に対し、コネクション情報と共に対象データを送信する。
【００７５】
図２に示す例では、ＵＤＰカプセリングパケット作成手段１５は、ストレージノード１〜３のコネクション情報を含む転送用パケットを生成する（図５（ａ）参照）。
【００７６】
スイッチＡはＵＤＰカプセリングパケットを受信すると、ＵＤＰカプセリングパケット転送手段２５は、ＵＤＰカプセリングパケットに含まれる複数の格納先アドレスを参照し、自身が備える転送先情報テーブルと比較して、次の転送先を決定する。
【００７７】
ＵＤＰカプセリングパケット転送手段２５は、ＵＤＰカプセリングパケットからスイッチＢの先に存在しないストレージノード３の情報を削除し、この情報を削除したＵＤＰカプセリングパケットをスイッチＢ宛に転送する。さらに、ＵＤＰカプセリングパケット転送手段２５は、ストレージノード３に対してはカプセリングパケットに含まれていたストレージノード３のコネクション情報と、対象データ（つまり通常のＴＣＰデータ）を送信する。
【００７８】
なお、スイッチＢでは、転送先情報テーブル記憶手段２４に転送先情報テーブルが記憶されていない。そのため、スイッチＢのＵＤＰカプセリングパケット転送手段２５は、ＵＤＰカプセリングパケットに含まれるストレージノード１のコネクション情報と、ストレージノード２のコネクション情報のそれぞれに対象データを付加して、転送先ノードに送信する（図５（ｃ）参照）。
【００７９】
以降、各ストレージノード１〜３は、通常のＴＣＰデータとして対象データを受信して、必要な処理を行う。
【００８０】
ここで、図４および図５を参照して、各スイッチが転送用パケットを生成する動作をより詳細に説明する。各スイッチは、データを転送する際、図４に例示する転送先情報テーブルを参照し、送信先であるデータ格納先アドレス群（ストレージノードのアドレス群）を検索する。転送先情報テーブルにアドレス群が存在する場合、ＵＤＰカプセリングパケット転送手段２５は、転送先に転送先ノードのアドレスを設定したＵＤＰヘッダを作成する。
【００８１】
次に、ＵＤＰカプセリングパケット転送手段２５は、ストレージノードとのコネクション情報（ストレージノードのＩＰアドレス、ポート番号、Ｓｅｑ番号およびＡＣＫ番号）を全て付加した転送用パケットを生成して、転送先ノードに送信する。
【００８２】
ここで、データ格納先アドレス群を検索した際、格納先のアドレス群の一部が検索された場合、ＵＤＰカプセリングパケット転送手段２５は、検索された格納先のコネクション情報のみをカプセル化して転送先ノードに転送する。一方、ＵＤＰカプセリングパケット転送手段２５は、転送先情報テーブルに存在しないアドレスをカプセル化せず、格納先のコネクション情報をヘッダとし対象データを付加して転送先ノードに転送する。
【００８３】
例えば、プロキシノード１０が図４に例示する転送先情報テーブルを記憶している場合、ＵＤＰカプセリングパケット作成手段１５は、ストレージノード１〜３のアドレス（格納先アドレス１〜３）をカプセル化する。
【００８４】
次に、スイッチＡが図４に例示する転送先情報テーブルを記憶している場合、ＵＤＰカプセリングパケットに含まれる格納先アドレス１〜２が、転送先情報テーブルのアドレスに一致する。そのため、ＵＤＰカプセリングパケット転送手段２５は、格納先アドレス１〜２のみカプセル化し、格納先アドレス３宛てには通常のＴＣＰパケットを送信する。
【００８５】
また、スイッチＡからＵＤＰカプセリングパケットを受信したスイッチＢの転送先情報テーブルには、情報がない。そのため、ＵＤＰカプセリングパケット転送手段２５は、いずれのアドレスもカプセル化せず、格納先アドレス１〜２宛にそれぞれ通常のＴＣＰパケットを送信する。
【００８６】
次に、プロキシノード１０が分岐点を決定する動作を説明する。図６は、分岐点を決定する動作の例を示すフローチャートである。プロキシノード１０のデータ格納先選択手段１７は、複数の格納先を決定する。そして、分岐点決定手段１１は、各格納先のアドレスへ特別ポートのＵＤＰパケットを送信する（ステップＳ１１）。
【００８７】
各スイッチでは特別ポートのＵＤＰパケットを受信した場合（ステップＳ１２におけるＹｅｓ）、分岐点決定手段２１は、送信元のＩＰアドレス、宛先のＩＰアドレスおよびＵＤＰパケットを送信した物理ポートを一時的に記憶する（ステップＳ１３）。異なる物理ポートにＵＤＰパケットが送信された場合（ステップＳ１４におけるＹｅｓ）、アドレス要求手段２２は、送信元にＩＰアドレスを要求する。このとき、アドレス要求手段２２は、送信元から受信した格納先アドレス群も併せて送信する（ステップＳ１５）。
【００８８】
なお、ステップＳ１２において受信したパケットが特別ポートのＵＤＰパケットでない場合（ステップＳ１２におけるＮｏ）、また、ステップＳ１４においてＵＤＰパケットが送信される物理ポートが異なっていない場合（ステップＳ１４におけるＮｏ）、特に処理は行われない。
【００８９】
送信元であるプロキシノード１０がスイッチからＩＰアドレスの要求を受信すると、分岐点決定手段１１は、そのスイッチに対して仮想ＩＰアドレスを割り振る（ステップＳ１６）。以降、転送先情報テーブルを作成する処理が行われる。
【００９０】
次に、転送先情報テーブルを作成する動作を説明する。図７は、転送先情報テーブルを作成する動作の例を示すフローチャートである。
【００９１】
プロキシノード１０がスイッチからＩＰアドレス要求を受信すると（ステップＳ２１）、転送先情報テーブル作成手段１３は、ＵＤＰパケットともに送信した格納先アドレスの全てが、ＩＰアドレス要求とともに送信された格納先アドレスに含まれているか判断する（ステップＳ２２）。
【００９２】
送信した全ての格納先が含まれている場合（ステップＳ２２におけるＹｅｓ）、転送先情報テーブル作成手段１３は、割り振る仮想ＩＰアドレスと格納先アドレス群を対応付けた転送先情報テーブルを転送先情報テーブル記憶手段１４に格納する（ステップＳ２３）。図２に示す例では、スイッチＡからＩＰアドレス要求とともにストレージノード１〜３の格納先アドレスがプロキシノード１０に送信された場合が該当する。
【００９３】
一方、送信した全ての格納先が含まれていない場合（ステップＳ２２におけるＮｏ）、転送先情報テーブル作成手段１３は、転送先情報テーブルを参照し、ＩＰアドレス要求とともに送信された格納先アドレスを含む仮想ＩＰアドレスのうち、送信された格納先アドレスよりも多くの格納先アドレスが対応づけられた仮想ＩＰアドレスが存在するか判断する（ステップＳ２４）。
【００９４】
該当する仮想ＩＰアドレスが存在する場合（ステップＳ２４におけるＹｅｓ）、転送先情報テーブル作成手段１３は、割り振る仮想ＩＰアドレスと格納先アドレス群の情報を、全ての格納先アドレスが対応付けられた仮想ＩＰアドレス宛に通知する（ステップＳ２５）。図２に示す例では、ＩＰアドレス要求とともにストレージノード１〜２の格納先アドレスがスイッチＢからプロキシノード１０に送信された場合が該当する。この場合、スイッチＢに割り振られる仮想ＩＰアドレスとストレージノード１〜２のアドレス群がスイッチＡに送信される。
【００９５】
スイッチは、ＩＰアドレスと格納先アドレス群の情報を受信する（ステップＳ２６）。受信したスイッチでは、転送先情報テーブル作成手段２３が、仮想ＩＰアドレスと格納先アドレス群を対応付けた転送先情報テーブルを転送先情報テーブル記憶手段２４に格納する（ステップＳ２７）。図２に示す例では、スイッチＡが、仮想ＩＰアドレスとストレージノード１〜２のアドレス群を対応付けた転送先情報テーブルを記憶する。
【００９６】
以上のように、本実施形態によれば、プロキシノード１０のＵＤＰカプセリングパケット作成手段１５が、対象データの転送先ノードと、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケットを作成して、スイッチＡに送信する。また、スイッチ２０ａのＵＤＰカプセリングパケット転送手段２５が、転送先情報テーブルに転送先ノードが登録されている場合、その転送先ノードに対応するストレージ以外の格納先アドレスを転送用パケットから削除して転送先ノード（スイッチＢ）に転送する。さらに、ＵＤＰカプセリングパケット転送手段２５が、削除された格納先アドレス宛に対象データを複製して転送する。よって、データを冗長化させて複数のストレージに格納する場合、データの送信側装置とストレージ間のネットワーク負荷を軽減させることができる。
【００９７】
すなわち、本実施形態によれば、ネットワーク上の複数のストレージノードに多重書込みを行う際、ネットワークを流れるデータ量を制限できるため、システム全体の負荷を軽減できる。特に、本実施形態によれば、データが集中する通信路の負荷を低減できるため、ボトルネックになる通信路では、効果的に負荷を軽減できる。
【００９８】
また、本実施形態では、クライアント４０から送信される対象データをプロキシノード１０で受信した後、ネットワーク経由で複数のストレージノードに書き込みを行う際、通信路が同じ間はデータを重複して持たないようにしている。転送先情報テーブルは、選択された複数のデータ格納先にデータを送出する際に通る共通のパスの先にあるスイッチに割り当てられたＩＰアドレスが含まれる。そのスイッチまでは、複数の格納先の情報と共に共通のデータをカプセリングしたＵＤＰカプセリングデータが送信される。
【００９９】
そして、ＵＤＰカプセリングパケット転送手段２５が、ストレージノードに対する通信路が分岐する時点で、送信するデータを複製する。そのため、データ量が集中する経路のネットワーク負荷を特に下げることが可能になる。すなわち、本来は、同一のデータが多重に流れるはずの共通通信パス上に、１つのＵＤＰカプセリングデータしか流されない。そのため、データが集中する共通通信パスでのネットワーク負荷を軽減できる。
【０１００】
また、最終的に格納先のストレージノードにデータが届いた時には、カプセリングが解かれており、各ストレージノードは、通常の通信手順でデータを受信できる。
【０１０１】
次に、本発明の概要を説明する。図８は、本発明によるデータ転送システムの概要を示すブロック図である。本発明によるデータ転送システムは、ネットワークを介して対象データを複数のストレージに格納する。
【０１０２】
本発明によるデータ転送システムは、（例えば、クライアント４０から受信した）対象データを格納すべき複数のストレージ（例えば、ストレージノード３１〜３３）を決定するプロキシサーバ８０（例えば、プロキシノード１０）と、プロキシサーバ８０から送信されるデータ（例えば、転送用パケット）を受信してストレージへ転送するノード９０（例えば、スイッチ２０ａ〜２０ｃ）とを備えている。
【０１０３】
ノード９０は、自ノードからデータを転送する先のノードである転送先ノードと、その転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する転送先情報テーブル記憶手段９１（例えば、転送先情報テーブル記憶手段２４）と、受信したデータを転送するデータ転送手段９２（例えば、ＵＤＰカプセリングパケット転送手段２５）とを含む。
【０１０４】
プロキシサーバ８０は、対象データの転送先ノードと、その対象データが格納される複数のストレージの格納先アドレスと、その対象データとを含む転送用パケット（例えば、ＵＤＰカプセリングパケット）を作成して、その転送用パケットをノード９０に送信するパケット送信手段８１（例えば、ＵＤＰカプセリングパケット作成手段１５）を含む。
【０１０５】
ノード９０（例えば、図２におけるスイッチＡ）のデータ転送手段９２は、転送先情報テーブル記憶手段９１に転送先ノード（例えば、図２におけるスイッチＢ）が登録されている場合、その転送先ノードに対応するストレージ（例えば、図２におけるストレージノード１，２）以外の格納先アドレス（例えば、図２におけるストレージノード３の格納先アドレス）を転送用パケットから削除して、その転送用パケットを転送先ノードに転送し、削除された格納先アドレス宛に対象データを複製して転送する。
【０１０６】
そのような構成により、データを冗長化させて複数のストレージに格納する場合、データの送信側装置とストレージ間のネットワーク負荷を軽減させることができる。
【０１０７】
また、プロキシサーバ８０は、複数のストレージに対象データを送信する際の経路が分岐するノードを分岐点と決定する（例えば、特別ポート宛パケットを送信して分岐点を判断する）分岐点決定手段（例えば、分岐点決定手段１１）と、分岐点を示すノード（例えば、スイッチＡ）の転送先ノード（例えば、スイッチＢ）の転送先に２以上のストレージ（例えば、ストレージノード１〜２）が存在する場合、その分岐点を示すノードの転送先情報テーブル記憶手段９１に、その分岐点を示すノードの転送先ノードの仮想アドレスと、転送先に存在する２以上のストレージとを対応付けて登録する転送先情報登録手段（例えば、転送先情報テーブル作成手段１３）とを含んでいてもよい。
【０１０８】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０９】
（付記１）ネットワークを介して同一の対象データを複数のストレージに格納するデータ転送システムにおいて、前記対象データを格納すべき複数のストレージを決定するプロキシサーバと、前記プロキシサーバから送信されるデータを受信して前記ストレージへ転送するノードとを備え、前記ノードは、自ノードからデータを転送する先のノードである転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する転送先情報テーブル記憶手段と、受信したデータを転送するデータ転送手段とを含み、前記プロキシサーバは、対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成して、当該転送用パケットを前記ノードに送信するパケット送信手段を含み、前記ノードのデータ転送手段は、前記転送先情報テーブル記憶手段に前記転送先ノードが登録されている場合、当該転送先ノードに対応するストレージ以外の格納先アドレスを前記転送用パケットから削除して当該転送用パケットを前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送することを特徴とするデータ転送システム。
【０１１０】
（付記２）プロキシサーバは、複数のストレージに対象データを送信する際の経路が分岐するノードを分岐点と決定する分岐点決定手段と、前記分岐点を示すノードの転送先ノードの転送先に２以上のストレージが存在する場合、当該分岐点を示すノードの転送先情報テーブル記憶手段に、当該分岐点を示すノードの転送先ノードの仮想アドレスと、前記転送先に存在する２以上のストレージとを対応付けて登録する転送先情報登録手段とを含む付記１記載のデータ転送システム。
【０１１１】
（付記３）ノードは、自ノードが分岐点か否かを判断する分岐点判断手段を含み、プロキシサーバの分岐点決定手段は、特別ポート宛パケットを各ストレージまでの経路に送信し、前記分岐点判断手段は、前記特別ポート宛パケットを異なる物理ポートに送信する場合に、自ノードを分岐点と判断する付記２記載のデータ転送システム。
【０１１２】
（付記４）ノードは、分岐点判断手段によって自ノードが分岐点であると判断された場合、自ノードの転送先に存在するストレージの格納先アドレスと、自ノードに割り振る仮想アドレスの要求をプロキシサーバに送信するアドレス要求手段を含み、分岐点決定手段は、前記要求に応じて仮想アドレスを割り当て、転送先情報登録手段は、割り当てられた仮想アドレスと前記転送先に存在する２以上のストレージとを対応付けて転送先情報テーブル記憶手段に登録する付記３記載のデータ転送システム。
【０１１３】
（付記５）プロキシサーバは、ストレージとの通信に使用される複数の第一ソケットを管理するための第二ソケットを作成するコネクション管理手段を含み、パケット送信手段は、前記第二ソケットを利用して転送用パケットを送信する付記１から付記４のうちのいずれか１つに記載のデータ転送システム。
【０１１４】
（付記６）同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛に前記対象データをネットワーク上のノードを介して送信する転送用データ送信装置であって、前記対象データの転送先と、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成し、複数のストレージ宛の対象データが分岐する場合に当該転送用パケットから対象データを複製して各ストレージに送信するノードに対して当該転送用パケットを送信するパケット送信手段を備えたことを特徴とする転送用データ送信装置。
【０１１５】
（付記７）同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛の前記対象データを送信する送信装置から転送用パケットを受信して、前記複数のストレージに当該転送用パケットを転送する転送用データ処理装置であって、自ノードからデータを転送する先のノードである転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルを記憶する転送先情報テーブル記憶手段と、前記転送先情報テーブル記憶手段に前記転送先ノードが登録されている場合、前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを前記送信装置から受信したときに、当該転送用パケットから、前記転送先ノードに対応するストレージ以外の格納先アドレスを削除して前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送するデータ転送手段とを備えたことを特徴とする転送用データ処理装置。
【０１１６】
（付記８）ネットワークを介して同一の対象データを複数のストレージに格納する際に当該ネットワークの負荷を軽減するネットワーク負荷軽減方法であって、前記対象データを格納すべき複数のストレージを決定するプロキシサーバが、前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成して、前記プロキシサーバから送信されるデータを受信して前記ストレージへ転送するノードに対して当該転送用パケットを送信し、前記ノードが、転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルに、自ノードからデータを転送する先の転送先ノードが登録されている場合、当該転送先ノードに対応するストレージ以外の格納先アドレスを前記転送用パケットから削除して当該転送用パケットを前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送することを特徴とするネットワーク負荷軽減方法。
【０１１７】
（付記９）同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛に前記対象データをネットワーク上のノードを介して送信する転送用データ送信方法であって、前記対象データの転送先と、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成し、複数のストレージ宛の対象データが分岐する場合に前記転送用パケットから対象データを複製して各ストレージに送信するノードに対して、前記転送用パケットを送信することを特徴とする転送用データ送信方法。
【０１１８】
（付記１０）同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛の前記対象データを送信する送信装置から転送用パケットを受信して、前記複数のストレージに当該転送用パケットを転送する転送用データ処理方法であって、転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルに、自ノードからデータを転送する先の転送先ノードが登録されている場合、前記送信装置から前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを受信したときに、当該転送用パケットから、前記転送先ノードに対応するストレージ以外の格納先アドレスを削除して前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送することを特徴とする転送用データ処理方法。
【０１１９】
（付記１１）同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛に前記対象データをネットワーク上のノードを介して送信するコンピュータに適用される転送用データ送信プログラムであって、前記コンピュータに、前記対象データの転送先と、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを作成し、複数のストレージ宛の対象データが分岐する場合に当該転送用パケットから対象データを複製して各ストレージに送信するノードに対して当該転送用パケットを送信するパケット送信処理を実行させるための転送用データ送信プログラム。
【０１２０】
（付記１２）同一の対象データを格納すべき複数のストレージを決定し、決定した各ストレージ宛の前記対象データを送信する送信装置から、転送用パケットを受信して、前記複数のストレージに当該転送用パケットを転送するコンピュータに適用される転送用データ処理プログラムであって、前記コンピュータに、転送先ノードと、当該転送先ノードを経由するデータが格納される複数のストレージを対応付けた転送先情報テーブルに、自ノードからデータを転送する先の転送先ノードが登録されている場合、前記送信装置から前記対象データの転送先ノードと、当該対象データが格納される複数のストレージの格納先アドレスと、当該対象データとを含む転送用パケットを受信したときに、当該転送用パケットから、前記転送先ノードに対応するストレージ以外の格納先アドレスを削除して前記転送先ノードに転送し、削除された格納先アドレス宛に前記対象データを複製して転送するデータ転送処理を実行させるための転送用データ処理プログラム。
【産業上の利用可能性】
【０１２１】
本発明は、例えば、データ書き込み時にプロキシノードからストレージノード間のネットワーク負荷を軽減させるような、ＯｐｅｎＳｔａｃｋを使用したクラウドシステムに好適に適用される。
【符号の説明】
【０１２２】
１０  プロキシノード
１１  分岐点決定手段
１２  アドレス通知手段
１３  転送先情報テーブル作成手段
１４  転送先情報テーブル記憶手段
１５  ＵＤＰカプセリングパケット作成手段
１６  コネクション管理手段
１７  データ格納先選択手段
２０，２０ａ〜２０ｃ  スイッチ
２１  分岐点決定手段
２２  アドレス要求手段
２３  転送先情報テーブル作成手段
２４  転送先情報テーブル記憶手段
２５  ＵＤＰカプセリングパケット転送手段
３１〜３３  ストレージノード（１〜３）
４０  クライアント
【図１】
2014179748.tif 000003
【図２】
2014179748.tif 000004
【図３】
2014179748.tif 000005
【図４】
2014179748.tif 000006
【図５】
2014179748.tif 000007
【図６】
2014179748.tif 000008
【図７】
2014179748.tif 000009
【図８】
2014179748.tif 000010