(57)【要約】【課題】  メッセージに基づく拡張可能なデータ転送のためのシステムおよび方法を提示する。【解決手段】  通信エンジンは、基本単位としてのメッセージ・オブジェクトに基づき、遠隔のサイトへサーバまたは他のバックアップ・データまたは他の大容量データの配信を制御する。１または複数のサーバまたは他のデータソースからのデータ・セッションを、同じくメッセージ交換制御を含む遠隔のデータ・ホストへの配信のために確立されたパイプを介してバッファすることができる。比較的大きいメッセージ単位は、待ち行列においてチャンネルを介して通信するために待ち合わせとなり、前のメッセージ交換が完了すると、解放される場合がある。完了ポートまたは他のポーリングまたは他の手順は、接続が使用できる状態になったことを示すことができる。【選択図】  図２
2005025758.tif 000002
【特許請求の範囲】
【請求項１】
データの伝送を管理するシステムであって、
少なくとも１つのデータソースからのデータから生成された複数のメッセージ・オブジェクトを受け取る入力インタフェースと、
転送レイヤへの転送インタフェースと、
前記入力インタフェースおよび前記転送インタフェースと通信する通信エンジンであって、前記転送レイヤを介して遠隔の転送先へ転送するために、前記メッセージ・オブジェクトをバッファする通信エンジンと
を備えたことを特徴とするシステム。
【請求項２】
前記少なくとも１つのデータソースは、ネットワークを備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記ネットワークは、少なくとも１つのサーバを備えることを特徴とする請求項２に記載のシステム。
【請求項４】
前記ネットワークは、ローカル・エリア・ネットワークを備えることを特徴とする請求項３に記載のシステム。
【請求項５】
前記転送レイヤは、ＴＣＰレイヤを備えることを特徴とする請求項１に記載のシステム。
【請求項６】
前記遠隔の転送先は、ストレージ・ホストを備えることを特徴とする請求項１に記載のシステム。
【請求項７】
前記通信エンジンは、少なくとも１つの出力バッファにおいて前記メッセージ・オブジェクトを待ち行列に入れることを特徴とする請求項１に記載のシステム。
【請求項８】
前記少なくとも１つのデータソースは、複数のデータソースを備えることを特徴とする請求項１に記載のシステム。
【請求項９】
前記データソースのそれぞれは、少なくとも１つの対応するセッションに関連付けられていることを特徴とする請求項８に記載のシステム。
【請求項１０】
前記通信エンジンは、少なくとも１つのセッションを前記遠隔の転送先への複数の接続の少なくとも１つに束ねることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記通信エンジンは、２以上のセッションを前記遠隔の転送先への少なくとも１つの接続に束ねることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記メッセージ・オブジェクトを前記バッファすることは、少なくとも部分的にはメッセージ完了ポートの状態に従い遂行されることを特徴とする請求項１に記載のシステム。
【請求項１３】
データの伝送を管理する方法であって、
少なくとも１つのデータソースからデータを受け取ること、
前記データを複数のメッセージ・オブジェクトに変換すること、および、
転送レイヤを介して遠隔の転送先へ転送するために、前記メッセージ・オブジェクトをバッファすること
を備えたことを特徴とする方法。
【請求項１４】
前記少なくとも１つのデータソースは、ネットワークを備えることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記ネットワークは、少なくとも１つのサーバを備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記ネットワークは、ローカル・エリア・ネットワークを備えることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記転送レイヤは、ＴＣＰレイヤを備えることを特徴とする請求項１３に記載の方法。
【請求項１８】
前記遠隔の転送先は、ストレージ・ホストを備えることを特徴とする請求項１３に記載の方法。
【請求項１９】
前記メッセージ・オブジェクトをバッファすることは、少なくとも１つの出力バッファにおいて前記メッセージ・オブジェクトを待ち行列に入れることを備えることを特徴とする請求項１３に記載の方法。
【請求項２０】
前記少なくとも１つのデータソースは、複数のデータソースを備えることを特徴とする請求項１３に記載の方法。
【請求項２１】
前記データソースのそれぞれは、少なくとも１つの対応するセッションに関連付けられていることを特徴とする請求項２０に記載の方法。
【請求項２２】
少なくとも１つのセッションを、前記遠隔の転送先への複数の接続の少なくとも１つに束ねることをさらに備えることを特徴とする請求項２１に記載の方法。
【請求項２３】
束ねることは、２以上のセッションを前記遠隔の転送先への前記接続の少なくとも１つに束ねることのステップを備えることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記メッセージ・オブジェクトをバッファすることは、少なくとも部分的にはメッセージ完了ポートの状態に従い遂行されることを特徴とする請求項１３に記載の方法。
【請求項２５】
データベースであって、
少なくとも１つのデータソースからデータを受け取ること、
前記データを複数のメッセージ・オブジェクトに変換すること、および、
転送レイヤを介して前記データベースへ転送するために、前記メッセージ・オブジェクトをバッファすること
を備えた方法によりデータを受け取ることを特徴とするデータベース。
【請求項２６】
前記少なくとも１つのデータソースは、ネットワークを備えることを特徴とする請求項２５に記載のデータベース。
【請求項２７】
前記ネットワークは、少なくとも１つのサーバを備えることを特徴とする請求項２６に記載のデータベース。
【請求項２８】
前記ネットワークは、ローカル・エリア・ネットワークを備えることを特徴とする請求項２７に記載のデータベース。
【請求項２９】
前記転送レイは、ＴＣＰレイヤを備えることを特徴とする請求項２５に記載のデータベース。
【請求項３０】
前記データベースは、ストレージ・ホストを備えることを特徴とする請求項２５に記載のデータベース。
【請求項３１】
前記メッセージ・オブジェクトをバッファすることは、少なくとも１つの出力バッファにおいて前記メッセージ・オブジェクトを待ち行列に入れることを備えることを特徴とする請求項２５に記載のデータベース。
【請求項３２】
前記少なくとも１つのデータソースは、複数のデータソースを備えることを特徴とする請求項２５に記載のデータベース。
【請求項３３】
前記データソースのそれぞれは、少なくとも１つの対応するセッションに関連付けられていることを特徴とする請求項３３に記載のデータベース。
【請求項３４】
前記方法は、少なくとも１つのセッションを前記遠隔の転送先への複数の接続の少なくとも１つに束ねることをさらに備えることを特徴とする請求項３３に記載のデータベース。
【請求項３５】
束ねることは、２以上のセッションを前記遠隔の転送先への前記接続の少なくとも１つに束ねることを備えることを特徴とする請求項３４に記載のデータベース。
【請求項３６】
前記メッセージ・オブジェクトをバッファすることは、少なくとも部分的にはメッセージ完了ポートの状態に従い遂行されることを特徴とする請求項２５に記載のデータベース。
【請求項３７】
メッセージ・オブジェクトであって、
少なくとも１つのデータソースからデータを受け取ること、
通信エンジンにおいて前記データを複数のメッセージ・オブジェクトに変換すること、および、
転送レイヤを介して遠隔の転送先へ転送するために、前記メッセージ・オブジェクトの少なくとも１つをバッファすること
を備えた方法に従って生成されることを特徴とするメッセージ・オブジェクト。
【請求項３８】
前記少なくとも１つのデータソースは、ネットワークを備えることを特徴とする請求項３７に記載のメッセージ・オブジェクト。
【請求項３９】
前記ネットワークは、少なくとも１つのサーバを備えることを特徴とする請求項３８に記載のメッセージ・オブジェクト。
【請求項４０】
前記ネットワークは、ローカル・エリア・ネットワークを備えることを特徴とする請求項３９に記載のメッセージ・オブジェクト。
【請求項４１】
前記転送レイヤは、ＴＣＰレイヤを備えることを特徴とする請求項３７に記載のメッセージ・オブジェクト。
【請求項４２】
前記遠隔の転送先は、ストレージ・ホストを備えることを特徴とする請求項３７に記載のメッセージ・オブジェクト。
【請求項４３】
前記少なくとも１つのメッセージ・オブジェクトをバッファすることは、少なくとも１つの出力バッファにおいて前記少なくとも１つのメッセージ・オブジェクトを待ち行列に入れることを備えることを特徴とする請求項３７に記載のメッセージ・オブジェクト。
【請求項４４】
前記少なくとも１つのデータソースは、複数のデータソースを備えることを特徴とする請求項３７に記載のメッセージ・オブジェクト。
【請求項４５】
前記データソースのそれぞれは、少なくとも１つの対応するセッションに関連付けられていることを特徴とする請求項４４に記載のメッセージ・オブジェクト。
【請求項４６】
前記方法は、少なくとも１つのセッションを前記遠隔の転送先への複数の接続の少なくとも１つに束ねることをさらに備えることを特徴とする請求項４５に記載のメッセージ・オブジェクト。
【請求項４７】
束ねることは、２以上のセッションを前記遠隔の転送先への前記接続の少なくとも１つに束ねることを備えることを特徴とする請求項４６に記載のメッセージ・オブジェクト。
【請求項４８】
前記少なくとも１つのメッセージ・オブジェクトをバッファすることは、少なくとも部分的にはメッセージ完了ポートの状態に従い遂行されることを特徴とする請求項３７に記載のメッセージ・オブジェクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報技術の分野に関し、より詳細には、効率的なメッセージに基づくセッションを介して、大規模ネットワークおよび他のデータ・バックアップまたは転送を起動し、処理するように構成されたプラットホームに関する。
【背景技術】
【０００２】
データ事業およびその他のデータ記憶のソリューションに対する要求が増大することにより、データ・バックアップおよび管理ツールにおける対応する需要が刺激されている。会社、政府、および科学組織、およびその他では、記録保管および他の目的のためにギガバイトまたはテラバイトの、またはさらに多くのデータに対する信頼性の高いバックアップを必要とする場合がある。ストレージ・エリア・ネットワーク、光学的記憶媒体、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disk）および他のプラットホームなどの物理的な記憶媒体は、データ管理者が利用できる全体の記録容量を増加したが、ホスト設備に対し大きいデータ・バックアップを効率的に取り入れる能力は、常に同様に進行した訳ではない。
【０００３】
例えば、ネットワーク管理者は、周期的に、ローカル・エリア・ネットワーク（ＬＡＮ：Local  Area  Network）上のサーバのドライブなどの、ネットワーク記憶装置に格納されたデータ更新を抽出し、そのデータを遠隔のサイトにおける安全なバックアップ用の格納場所に転送することを望むことができる。しかしながら、そのような種類の大規模なデータ転送を予定し、そして実行することは現状の技術を用いて常に効率的であるという訳ではない。例えば、ＬＡＮデータを遠隔のサイトに格納する場合において、管理者は、ＴＣＰ（Transfer  Control  Protocol）のような従来のネットワーク・プロトコルを用いて、そのデータ量を移動するべく試みることができる。
【０００４】
しかしながら、１つの転送のソリューションとしてＴＣＰは、データ・バックアップを遠隔のホストに通信するためには、扱いにくい伝達手段であるということが判明するかもしれない。なぜならば、ＴＣＰがデータを約数十バイトから数千バイトの比較的小さいパケットに分解する傾向があるからである。ギガバイトのオリジナルまたは更新データを遠隔のホストに送ろうと試みる場合には、その大きさは、効率的な転送のために十分ではないであろう。さらに、チャンネル上のデータ・フロー制御を行うときに、ＴＣＰは、チャンネル上に数千バイト程度の小さい利用可能なバンド幅または容量を探し、停止し、そのパイプにおける利用可能な空いた空間にデータを詰めるために中断して、次にさらなる空いたスロットを求めて待つことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
およそメガバイト、ギガバイトまたはそれ以上のデータを、このような規模の断続的なチャンネルを通して転送することは、ＴＣＰ−ＡＰＩの粒度を用いると効率的ではない。より優れた大規模な、そして他のデータ・バックアップ技術が望まれる。他の問題が存在する。
【課題を解決するための手段】
【０００６】
従来技術におけるこれらおよび他の問題を克服する本発明は、ある意味ではメッセージに基づく拡張可能なデータ転送のためのシステムおよび方法に関連する。ここでは、１または複数の個別のサーバまたは他のノードが、通信エンジンを介して遠隔の記憶装置ホストにデータ・バックアップおよび他の情報を伝達する。実施形態において、通信エンジンは、ＴＣＰまたは他のプロトコルなどの、基礎をなしているトランスポート層にインタフェースし、ノードから遠隔の記憶装置へのデータ・フローを取り次ぐことができる。通信エンジンは、転送を待ち受けているデータを一組のメッセージ・オブジェクトに分解することができる。このメッセージ・オブジェクトは、確立されたデータ・パイプに束ねられる接続を介して、バッファされ出力される。データを基本的なメッセージ・オブジェクトにカプセル化することは、データ・ペイロードのより連続的な配信を可能とする。なぜならば、メッセージ交換は、例えば、ストップアンドゴー（stop-and-go）またはチヤッター（chatter）型の挙動を示す場合がある、純粋なＴＣＰ転送と対照的に、接続が占有されるかまたは開放されない限り継続するからである。実施形態において、チャンネル利用率を最大にするために、１つの発信元のセッションは、２以上の接続を介してデータを送信することができる。通信エンジンは、メッセージ完了、または他のチャンネル機構を示すために、完了ポートをポーリングすることに基づいて、トラフィック制御を遂行することができるが、一般的には、個別のパケットまたは他の比較的小さいデータ・オブジェクトの確認を要求しない。本発明のプラットホームおよびプロトコルを通して高いスループットを達成することができる。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明の一実施形態にかかる、メッセージに基づく拡張可能なデータ転送のためのシステムおよび方法が動作することができるアーキテクチャを例示する。この図に示したように、実施形態において、データソースの集合１０２は、ネットワーク１０４を介して相互に、および遠隔のデータソースと通信することができる。実施形態においては、データソースの集合１０２は、例えば、個別のサーバ、クライアントまたは他のノード、または、ハード・ディスク、磁気テープ、光学的記憶媒体または他の記憶媒体を有する情報提供者を含むことができる。ネットワーク１０４は、実施形態においては、イーサネット（登録商標）ネットワークなどのローカル・エリア・ネットワーク（ＬＡＮ：Local  Area  Network）、ワイド・エリア・ネットワーク(ＷＡＮ：Wide  Area  Network）、または他の種類またはトポロジーのネットワークであるか、またはこれを含むことができる。ネットワーク１０４は、さらなる実施形態において、データ・バックアップの目的のための専用ネットワーク、周期的にデータ転送を遂行するために利用される共有ネットワーク、インターネット、または他のネットワークまたは設備であるか、またはこれを含むことができる。しかしながら、一般的に、データソースの集合１０２における１または複数のデータソースは、全体的にまたは部分的に、周期的に、または他の基準に基づき、比較的大容量にで、データをバックアップする必要性を有することができる。
【０００８】
例示されるように、データ・バックアップまたは他のデータ転送が生起された場合には、実施形態においては、データソースの集合１０２における１または複数のデータソースにより送信されたデータを、ストレージ・サーバ１０６と通信し、次にそのデータを記憶装置１０８に通信することができる。記憶装置１０８は、実施形態においては、ＲＡＩＤバンクなどのハード・ディスクリソース、再書込み可能なＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭまたは他の光学的媒体、磁気テープ駆動装置、ＲＡＭ（Random  Access  Memory）、フラッシュ・メモリまたは他の電子的構成要素などの電子的記憶能力、または他の記憶媒体であるか、またはこれを含むことができる。実施形態においては、記憶装置１０８は、ストレージ・エリア・ネットワーク（ＳＡＮ：Storage  Area  Network）または他の情報提供者などのデータ記憶リソースであるか、これを含むか、またはこれにインタフェースすることができる。実施形態においては、記憶装置１０８を、事業および他の目的のために、比較的大規模な量、例えばメガバイト、ギガバイト、テラバイト、またはより多くのデータ・バックアップを受け入れ、そして格納するために装備することができる。
【０００９】
本発明の実施形態にかかり、図２に示したように、データソースの集合１０２の中のデータソースのそれぞれは、通信エンジン１１０と通信することができ、データ・サーバ１０６または他の遠隔の、またはローカルの転送先へのデータ転送セッションを起動し、管理し、そして完了させる。通信エンジン１１０は、ＡＰＩ（Application  Programming  Interface）１１２を含むか、またはこれにインタフェースすることができ、ＡＰＩは、効果的なデータ転送を実行するために、データソースの集合１０２に対し変数、呼び出し、および他のインタフェースパラメータを公開することができる。本実施形態において示したように、データソースの集合１０２におけるデータソースのそれぞれは、セッションの集合１１４の中の対応するセッションを生成するか、またはこれに関連付けられることができる。セッションの集合１１４は、それぞれのセッションに割り当てられた１または複数の入力／出力バッファを有する、入力／出力バッファの待ち行列１１６を含むことができる。セッション、待ち行列、バッファ、および他のリソースの他の組み合わせが可能である。実施形態において、セッション・オブジェクト・クラスから新しいセッションのインスタンスを生成することができるコードの一例を示す。
【００１０】
【表１】
2005025758.tif 000003
【００１１】
他のコード、言語またはモジュール、または異なるＡＰＩが可能である。
【００１２】
図示したように、セッションの集合１１４におけるセッションのそれぞれは、ディスパッチャー・モジュールの集合１１８における１つのディスパッチャー・モジュールと順番に通信することができる。ディスパッチャー・モジュールの集合１１８は、それら自身が１または複数の接続の集合１２０への接続を保証することができる。（１または複数である場合がある）接続の集合１２０は、実施形態においては、Ｗｉｎｓｏｃｋ、パイプまたはその他を介して、ＴＣＰなどの複数の可能な基礎をなす通信手順を用いることができる。論理的なパイプ１２２の中に集約された、接続の集合１２０におけるそれぞれの接続は、ストレージ・サーバ１０６、または他の遠隔の、またはローカルのホストまたはリソースと通信することができる。実施形態においては、その構造の中で接続の集合１２０を確立する前に、パイプ１２２が確立されることができるが、他のセットアップ局面および形態が可能である。実施形態においては、本発明は、１または複数のパイプにおいて、例えば同時接続でおおよそ１０００の、または実施方法に依存しより多くの、またはより少ない、多数の接続を支援するか、または採用することができる。
【００１３】
例示したように、ストレージ・サーバ１０６は、転送先入力／出力待ち行列１２４を含むことができ、ストレージ・サーバ１０６または他の最終転送先に入力し、出力するメッセージ・トラフィックをバッファする。より詳細には、固定的な、周期的な、選択的な、またはその他の時点に、データソースの集合１０２における１または複数のソースは、通信エンジン１１０および関連するリソースによりストレージ・サーバ１０６へのデータ転送を起動することができる。データ転送は、例えば、サーバのハード・ディスクまたは他の記憶装置のバックアップ、大規模な科学的または商業的データのキャプチャー、または他のデータ転送タスクであるか、またはこれを含むことができる。通信エンジン１１０は、より効率的な待ち行列および転送のために、データソースの集合１０２における１または複数のソースからの常駐データを、一組のメッセージ・オブジェクトに分解することができる。
【００１４】
図示したように、セッションの集合１１４におけるセッションＡとして示されるセッションは、ストレージ・サーバ１０６への転送のためのメッセージ１およびメッセージ２というラベルを貼られた２つのメッセージを生成することができる。これらおよび他のメッセージは、実施形態においては、サイズにおいておおよそ数メガバイトか、またはより大きいかまたはより小さい場合がある。同じく例示されたセッションＢは、ストレージ・サーバ１０６への転送のためのメッセージ３というラベルを貼られた１つのメッセージを生成している。 セッションＣは、その入力側に、メッセージ４というラベルを貼られた１つのメッセージを受け取るように示されている。
【００１５】
ディスパッチャー・モジュールの集合１１８におけるディスパッチャー・モジュールは、入力／出力バッファの集合１１６からの多数のメッセージ・ストリームを接続の集合１２０における１または複数の接続に、および、異なるセッションからの多重化されたメッセージを接続の同一パイプに、束ねることができる。例示されるように、Ｄ１というラベルが貼られたディスパッチャー・モジュールは、メッセージ１およびメッセージ２を含むセッションＡからのトラフィックを接続１に通信し、一方、ディスパッチャー・モジュールＤ２は、接続２への接続のためにセッションＢおよびセッションＣへ、およびセッションＣからのメッセージ・ストリームを結合する。他の組み合わせが可能である。図示したように、セッションの集合１１４およびディスパッチャーの集合１１８および他のリソースと相互に作用する通信エンジン１１０は、処理中のパイプ１２２の接続の集合１２０を通るメッセージの可能な最大数を促進させようと試み、ストレージ・サーバ１０６への利用可能なバンド幅の最大限可能な利用を達成することができる。実施形態においては、セッションの集合１１４における個別のセッションが、異なるメッセージまたはメッセージの集合のために、異なる種類のネットワーク接続（ポート、ソケットまたは他のパラメータのような）を指定することができる。
【００１６】
データソースの集合１０２におけるデータソースのそれぞれは、接続の集合１２０における個別の接続およびストレージ・サーバ１０６への転送チェーンにおける他のリンクと同様に、異なる利用可能なバンド幅または他の伝送特性を有することができる。他の転送リソースに関連する入力／出力バッファの待ち行列１１６は、データ転送を最大限可能な利用率で制御する間に、バッファ動作を許容して、最も遅いリンクまたはそのチェーンにおけるリンクを調停し、送信者および受信者側の両方におけるトラフィックの変化を許容する。通信エンジン１１０は、例えば連続的に、または周期的に接続の集合１２０を走査して、出力のまたは入力のメッセージ・ストリームのどちらでそれらが占有されているかを判定することができる。
【００１７】
実施形態においては、これらの探知または走査を、マイクロソフト社のオペレーティング・システムＷｉｎｄｏｗｓ（登録商標）ファミリーで利用可能な完了ポート機能を用いて行うことができ、それによると、GetQueuedCompletionStatusおよび他のコマンドが所定のメッセージが待ち行列から離脱したか、またはしていないかを示すメッセージを返送することができる。通信エンジン１１０、ディスパッチャーの集合１１８および他のリソースは、データ転送の基本的な単位としてメッセージ・オブジェクトに依存することができるので、実施形態における本発明の全体的な動作は、高速で大規模な転送の方向に方向付けされる。なぜならば、純粋なＴＣＰ転送モードのように個別のデータの断片の処理による「ストップアンドゴー」の影響がないからである。本発明により、どちらかと言えば、比較的大規模なメッセージが生成され、入力／出力バッファ１１６の待ち行列の中の待ち行列に入力され、ストレージ・サーバ１０６または他の転送先への伝送のために開放される。
【００１８】
実施形態においては、セッションの集合１１４におけるそれぞれのセッション、または通信エンジン１１０は、そのセッション自身がメッセージ・オブジェクトの伝送が完了したと判定するまで、待ち行列を補充するのを待つことができる。その状態を確認する義務は送信側に存在するので、受信側からの帰還ループは存在せず、その種のオーバーヘッド・コストは回避される。セッションの集合１１４は、その代わりに、次のメッセージを伝送するべく用意するために、入力／出力バッファ１１６の待ち行列からの、待ち行列において空間が空いているという確認を待つことができる。このように、セッションの集合１１４は、メッセージ・ユニット全体が処理されるまで、その待ち行列を補充しようとは試みない場合がある。セッションの集合１１４がタイムアウト機能を含み、もし対応する入力／出力バッファが、接続の集合１２０へのメッセージの発信を１分というような固定的な時間量以内に確認しない場合には、入力／出力バッファ１１６の待ち行列からメッセージを削除する場合がある。セッションの集合１１４は、可変的な猶予時間などの、他のタイムアウトまたは他のチェック用基準、メッセージを撤収するまでに、固定または可変回数だけ繰り返すこと、または、その他を用いることができる。
【００１９】
メッセージ・オブジェクトそれら自身のそれぞれは、より低レベルのプロトコルとしてＴＣＰそれ自身を用いて接続の集合１２０における接続により通信することができる。他のプロトコルが可能である。通信エンジン１１０およびその関連付けられたメッセージに基づくプロトコルは、より高いレベルにおいてフロー制御を管理するため、ＴＣＰデータグラムは、本発明の実施形態により扱われる種類の大きな、拡張可能な転送の速度を低下させる傾向がある小規模のフロー制御、エラー・チェックまたは他の処理を行うことなく流れることができる。
【００２０】
実施形態においては、通信エンジン１１０、ＡＰＩ１１２および他のリソースは、ストレージ・サーバ１０６または他の転送先に転送されるデータを保護するためのセキュリティ保護レイヤを導入することができる。例えば、セッションの集合１１４におけるそれぞれのセッションまたは接続の集合１２０における接続を、パイプ１２２の中に集約されるのを許可される前に、Kerberos、X.509または他のオブジェクトなどのデジタル証明システム、安全なソケット・レイヤまたは他の機構により認証することができる。個別のメッセージ自身を、ストレージ・サーバ１０６に移動されているデータへの介入または改変を阻止するために同様に暗号化することができる。種々のMicrosoft（登録商標）ＳＳＰＩ（Security  Support  Provider  Interface）などの、安全な、暗号化または他の技法、ＲＳＡ標準などの公開キー、ＤＥＳ（Digital  Encryption  System）手順などの秘密キー、またはその他を、メッセージ内容または伝送プロセスの他の形態を保護するために採用することができる。実施形態においては、認証、暗号化および関連した情報を、ＡＰＩ１１２のレベルにおいて公開することができる。
【００２１】
本発明の一実施形態による通信処理の連続した状態を表わす状態マシンの集合１２６を、図３に示す。図に示したように、ＡＰＩ１１２は、通信リソースを呼び出して、サーバのバックアップなどのメッセージに基づくデータ転送、科学的または商業的データのキャプチャーなどの大規模なデータの取り込み、または他の目的を成し遂げるためにインタフェースを提示することができる。セッションの集合１１４によるメッセージの配信は、実施形態においては、個別のメッセージが全体として送信されているか、または再伝送のために待ち行列に入れられているという意味で、信頼し得る。図示したように、多数のセッションを、多数の転送先に向けて確立することができ、例示として、セッション１が転送先１に接続され、セッション２が転送先１に接続され、セッション３が転送先２に接続されている。図示したように、セッション１およびセッション２は、転送先１への個別のメッセージの伝送の完了または他のトリガーとなる事象を待ち受けて、状態１および２の間でループしている場合がある。転送先１との通信は、セッション１に対して接続１の状態マシンを、およびセッション２に対して接続２の状態マシンを介することができる。メッセージ・オブジェクトを無許可での視聴または改変から保護するために、接続１および接続２のそれぞれは、関連付けられた暗号化および認証状態マシンと通信することができる。接続１および接続２のそれぞれは、同様に、転送先１に接続するそれぞれソケット１およびソケット２へのアクセスを統制する、それぞれのソケットＩ／Ｏ状態マシンと通信することができる。セッション３は、伝送、暗号化、認証、および転送先２へのソケット接続を処理する類似の状態マシンと通信することができる。実施形態においては、個別のメッセージの伝送は、非同期とすることができ、その場合には、メッセージは、タイムスロットよりも、チャンネル占有および他の要因に従って、待ち行列に入れられ、そして開放される。個別の接続およびセッションの生成は、同様に実施形態においては、非同期とすることができる。追加的状態マシンおよび相互接続が可能であり、そして他の状態がそれぞれの状態マシンまたはプロセスのために可能である。
【００２２】
全体的なデータ転送処理を、図４に示す。ステップ４０２で、セッションの集合１１４における１または複数のセッションを生成することができる。ステップ４０４で、session  syncメッセージを、データソースの集合１０２におけるデータソースから送信し、転送先のストレージ・サーバ１０６の入力／出力バッファ１２４に伝達することができる。ステップ４０６で、session  syncに対する完了メッセージを、ストレージ・サーバ１０６に通知することができる。ステップ４０８で、ストレージ・サーバ１０６は、そのセッションの要求を受け入れることができる。
【００２３】
ステップ４１０で、session sync確認メッセージを、ストレージ・サーバ１０６の転送先入力／出力バッファ１２４から入力／出力バッファの集合１１４における対応する入力／出力バッファまで、要求しているデータソースのために、送信することができる。ステップ４１２で、セッション確認に対する完了メッセージを、データソースの集合１０２における起動したデータソースに通知することができる。ステップ４１４で、送信データソースがＭ１と表現された第１のメッセージを、入力／出力バッファの集合１１４における関連付けられた入力／出力バッファに送信することができる。ステップ４１６で、送信データソースは、Ｍ２と表現された第２のメッセージを、入力／出力バッファの集合１１４における関連付けられた入力／出力バッファに送信することができる。ステップ４１８で、送信データソースは、Ｍ３と表現された第３のメッセージを、入力／出力バッファの集合１１４における関連付けられた入力／出力バッファに送信することができる。ステップ４２０で、データソースは、その対応する入力／出力バッファが飽和しており、Ｍ３が待ち行列の中に受け入れられないことを示すエラー・メッセージを受け取ることができる。ステップ４２２で、Ｍ１を、ストレージ・サーバ１０６の転送先入力／出力バッファ１２４に送信することができる。ステップ４２４で、Ｍ１の送信に対する完了メッセージを、ストレージ・サーバ１０６または他の転送先に通知することができる。ステップ４２６で、Ｍ１の受信を確認する確認メッセージを、メッセージのデータソースの入力／出力バッファに送信することがでる。ステップ４２８で、Ｍ１に対する完了メッセージを、その対応するデータソースに送信することができる。
【００２４】
ステップ４３０で、Ｍ２を、ストレージ・サーバ１０６または他の転送先の転送先入力／出力バッファ１２４に送信することができる。ステップ４３２で、Ｍ２に対する完了メッセージを、ストレージ・サーバ１０６に通知することができる。ステップ４３４で、Ｍ３を、メッセージのデータソースに対応している入力／出力バッファに再送信することができる。ステップ４３６で、ゼロ単位のウインドウサイズ（ＷｎｄＳｉｚｅ）を持つＭ２の受信を示す確認メッセージを、メッセージに対するデータソースの入力／出力バッファに送信することができる。ステップ４３８で、Ｍ２に対する完了メッセージを、そのソースに通知することができる。ステップ４４０で、Ｍ４を、データソースの集合１０２の中の１つのデータソースから入力／出力バッファ１１６の待ち行列の中の対応する入力／出力バッファに送信することができる。
【００２５】
ステップ４４２で、Ｍ１を受信するクライアント・アプリケーションまたは他のリソースは、転送先入力／出力バッファ１２４からＭ１を検索する。ステップ４４４で、1単位のウインドウサイズ（ＷｎｄＳｉｚｅ）を持つＭ２に対する確認メッセージを、そのメッセージのソースの対応する入力／出力バッファに送信することができる。ステップ４４６で、Ｍ３を、ストレージ・サーバ１０６の転送先入力／出力バッファ１２４に送信することができる。ステップ４４８で、処理が終了するか、繰り返すか、または以前の処理ポイントに戻ることができる。
【００２６】
本発明の上記した記述は例示であり、そして当業者には構成および実施方法における変更が思い浮かぶであろう。例えば本発明が、実施形態において、遠隔のホストへの１つの通信リンクにより通信する多数のデータソースに関して記述されたのに対して、実施形態において、１または複数のノードまたはセッションが遠隔のデータ・ホストまたは他の転送先への個別の物理的、または論理的なリンクにより通信することができる。
【００２７】
同様に本発明で、実施形態において、バックアップ・データを単一の遠隔ホストに転送するとして記述されたのに対して、実施形態において、そのデータは分離された論理的、または物理的なホストまたは媒体に配信される場合がある。単数形であるとして記述された他のハードウェア、ソフトウェアまたは他のリソースが、実施形態において、分散されている場合があり、そして同様に実施形態において、分散されているとして記述されたリソースが結合されている場合がある。本発明の範囲は、それゆえに添付の請求範囲によってのみ限定されるべく意図される。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態にかかる、データ・バックアップまたは他の転送の処理のための全体的なネットワーク配置を例示する図である。
【図２】本発明の一実施形態にかかる、メッセージに基づくデータ転送のためのアーキテクチャを例示する図である。
【図３】本発明の一実施形態にかかる、メッセージに基づくデータ転送の状態遷移を示す図である。
【図４】本発明の一実施形態にかかる、メッセージに基づくデータ転送および関連付けられたプロトコルのフローチャートである。
【符号の説明】
【００２９】
１０２  データソース
１０６  コンピュータ
１１０  通信エンジン
１１４  セッション
１１６  入力／出力バッファの待ち行列
１１８  ディスパッチャー・モジュール
１２０  接続
１２２  パイプ
【図１】
2005025758.tif 000004
【図２】
2005025758.tif 000005
【図３】
2005025758.tif 000006
【図４】
2005025758.tif 000007