(57)【要約】  本明細書において、サードパーティクライアントコンピューターの要求により、２つのコンピューティングデバイス間でデータを直接送信することができるデータ転送システムについて記載する。このシステムにより、サードパーティは、ネットワークファイルシステム内のコンピューター間でデータ転送を開始することができる。より遅い可能性があるサードパーティの接続を介してデータがほとんどまたは全く移動しないので、このことは著しい速度増加をもたらす。データ転送システムは、それぞれのコンピューティングデバイス間の帯域幅および遅延の測定値に基づいて、ダイレクト転送が２つの別個の読み取り操作および書き込み操作よりも効率的であるかどうかを決定するための機構を提供する。データ転送システムは、サードパーティクライアントの指示で、送信元サーバーがデータを圧縮し、宛先サーバーがデータを圧縮解除して、ネットワーク帯域幅をさらに節約するためのサポートを提供する。
2014503141.tif 000002
【特許請求の範囲】
【請求項１】
第３のコンピューティングデバイスの指示で、２つのコンピューティングデバイス間でデータを転送するためのコンピューター実施方法であって、
送信元サーバーと宛先サーバーの間でのデータのダイレクト転送を要求する指示クライアントから転送要求を受信するステップと、
１つまたは複数のネットワークに照会して、前記指示クライアント、前記送信元サーバー、および前記宛先サーバーの間の接続を特定するステップと、
前記特定された接続を測定して、ネットワークパフォーマンスに基づいて前記接続をランク付けするステップと、
少なくとも部分的にそれぞれの接続の前記測定されたネットワークパフォーマンスに基づいて、前記転送を実行する接続を選択するステップと、
最初に前記指示クライアントにデータを転送することなく、前記指示クライアントの代わりに前記送信元サーバーから前記宛先サーバーに前記データを直接転送するステップと、
前記転送の結果を前記指示クライアントに報告するステップとを含み、
前記諸ステップが少なくとも１つのプロセッサによって実行される、方法。
【請求項２】
前記転送要求を受信するステップが、前記送信元サーバーが、前記転送をより速く完了させることができる前記クライアントよりも良好な、前記宛先サーバーへの接続を有するかどうかを決定するステップを含む、請求項１に記載の方法。
【請求項３】
前記転送要求を受信するステップが、前記送信元サーバーが、前記指示クライアントの代わりに、前記送信元サーバーから前記宛先サーバーへのデータのダイレクト転送のためのプロトコルをサポートするかどうかを決定するステップを含む、請求項１に記載の方法。
【請求項４】
代理で前記転送が行われる前記転送要求に関連するセキュリティ資格情報を決定するステップと、前記指示クライアントが前記転送を実行していた場合の資格情報に類似した資格情報を使用して前記送信元サーバーから前記転送を行うことができるように、前記決定されたセキュリティ資格情報を偽装するステップとをさらに含み、セキュリティ資格情報を決定するステップが、前記セキュリティ資格情報を前記指示クライアントに照会するステップを含む、請求項１に記載の方法。
【請求項５】
１つまたは複数のネットワークに照会するステップが、ルーターまたはネットワーク情報の他のソースに照会して、前記ネットワークに接続されたコンピューティングデバイスを特定するステップを含む、請求項１に記載の方法。
【請求項６】
前記特定された接続を測定するステップが、それぞれの接続の帯域幅および遅延を決定するステップを含む、請求項１に記載の方法。
【請求項７】
前記接続を選択するステップが、前記送信元サーバーが、前記宛先サーバーに対して、前記指示クライアントが有するよりも高いスループット接続を有すると決定すると、前記送信元サーバーを選択して前記転送を直接実行するステップを含む、請求項１に記載の方法。
【請求項８】
セキュリティ資格情報を偽装するステップが、前記指示クライアントから前記送信元サーバーに認証情報を転送するステップを含む、請求項１に記載の方法。
【請求項９】
セキュリティ資格情報を偽装するステップが、前記指示クライアントから前記宛先サーバーに認証情報を転送するステップを含む、請求項１に記載の方法。
【請求項１０】
データを転送するステップが、前記２つのサーバー間のより高速なネットワーク接続を介して前記転送を完了させることによって、前記クライアントのより低速なネットワーク接続を回避するステップを含む、請求項１に記載の方法。
【請求項１１】
前記結果を報告するステップが、前記指示クライアントで、前記送信元サーバーからの前記転送の進行状況を明記した情報を受信するステップを含む、請求項１に記載の方法。
【請求項１２】
リモートパーティ間の通信のサードパーティ開始を実行するためのコンピューターシステムであって、
以下のコンポーネント内に具備されたソフトウェア命令を実行するように構成されたプロセッサーおよびメモリーと、
指示クライアントから、宛先サーバーに転送されるべきデータを含む送信元サーバーで要求を受信する要求受信コンポーネントと、
１つまたは複数のネットワークに照会して、コンピューティングデバイスを特定し、どのコンピューティングデバイスがそれぞれのネットワークを介して互いに連絡を取ることができるかを決定する接続照会コンポーネントと、
１つまたは複数のパフォーマンス基準に従って前記要求された転送を完了させることができる１つまたは複数の可能な接続のなかから、接続を選択する接続選択コンポーネントと、
前記指示クライアントから前記送信元サーバーに要求を送信して、最初に前記指示クライアントにデータを送信することなく前記送信元サーバーから前記宛先サーバーに前記データを直接送信するダイレクト転送コンポーネントと、
前記指示クライアントに前記転送の結果を返すことを管理する結果処理コンポーネントとを含む、システム。
【請求項１３】
前記要求受信コンポーネントが、転送されるべき前記データの識別子、転送されるべき前記データの一部分、および前記指示クライアントに関連するセキュリティ資格情報のセットのうちの少なくとも１つを含むパラメータを、前記要求と共に受信する、請求項１２に記載のシステム。
【請求項１４】
コンピューティングデバイス間の１つまたは複数の可能な接続について１つまたは複数のテストを実行して、前記接続の１つまたは複数のデータ転送機能を決定する接続ベンチマークコンポーネント１３０をさらに含み、前記接続ベンチマークコンポーネントが、テストを実行して、それぞれの接続の帯域幅および遅延を決定する、請求項１２に記載のシステム。
【請求項１５】
前記指示クライアントの資格情報を偽装する前記送信元サーバーの資格情報を作成する資格情報偽装コンポーネント１５０をさらに含む、請求項１２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リモートパーティ間の通信のサードパーティ開始に関する。
【背景技術】
【０００２】
[0001]家庭で２つ以上のコンピューターを所有し、これらのマシンがホームネットワーク上にあることがますます一般的になっている。ほとんどの家庭は、デスクトップ、ラップトップ、ホームシアターＰＣ（ＨＴＰＣ）の形での複数のコンピューター、ならびにゲームコンソール、携帯電話、および組込みデバイス（例えば、セットトップボックス、ルーター、および他の機器）などの、一般的なコンピューティングハードウェアを含む従来とは異なるコンピューティングデバイスを有する。ホームネットワークは、いくつかのデバイスに対する有線イーサネット（登録商標）接続および他のデバイスに対するワイヤレスＷｉ−Ｆｉ接続などの２つ以上の接続タイプを含み得る。また、いくつかのデバイスは、ＵＳＢ接続またはＢｌｕｅｔｏｏｔｈ（登録商標）などの他の技術を使用して通信する。小規模オフィスなどの他の環境は、類似の特性を含み得る。
【０００３】
[0002]ユーザーは、特定のタスクを実行するために、複数のデバイスを用いて作業することが多い。これらのタスクは、大量のデータをあるデバイスから別のデバイスに移動することを必要とすることが多い。例えば、ユーザーは、ホームシアターＰＣにテレビ番組を記録し、番組が１つまたは複数のより小さい形式にトランスコードされるホームサーバーに番組を転送し、次いで、出先でテレビ番組を見るために、トランスコードされたファイルをモバイルデバイスにコピーすることができる。また、ユーザーは、大量のデータをあるコンピューティングデバイスからホームサーバーまたはネットワーク接続ストレージ（ＮＡＳ）デバイスなどのバックアップ用コンピューティングデバイスにコピーすることを必要とするバックアップを実行する。
【０００４】
[0003]サーバーコンピューターに保存されたファイルおよびデータにアクセスするとき、クライアントマシンは、ファイルを読み取り、ファイルに書き込み、ファイルを列挙する操作を提供するネットワークファイルシステム（ＮＦＳ）またはサーバーメッセージブロック（ＳＭＢ／ＣＩＦＳ）などのネットワークファイルシステムプロトコルを使用する。クライアントコンピューターは、２つ以上のファイルサーバーと頻繁に対話する。クライアントが、あるサーバーから別のサーバーにファイルを移動またはコピーしたいと望む場合、クライアントがあるサーバーからそのローカルメモリにファイルを読み込み、次いで、ファイルコンテンツを第２のサーバーに書き込むことが普通である。したがって、データはネットワークを２回横断する。ネットワークが低い帯域幅（ワイヤレス／モデム）または高い遅延（衛星／ＷＡＮ）を示す場合、このプロセスは遅く、かつ非効率的である。２つのサーバー間にはより直接的な高速経路が頻繁に存在し得るが、現行のオペレーティングシステムおよびファイルシステムはその経路を使用する方法を提供しない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
リモートパーティ間の通信のサードパーティ開始を提供する。
【課題を解決するための手段】
【０００６】
[0004]本明細書において、サードパーティクライアントコンピューターの要求により、２つのコンピューティングデバイス間でデータを直接送信することができるデータ転送システムについて記載する。このシステムにより、サードパーティは、ネットワークファイルシステム内のコンピューター間でデータ転送を開始することができる。より遅い可能性があるサードパーティの接続を介してデータがほとんどまたは全く移動しないので、このことは著しい速度増加をもたらす。データ転送システムは、それぞれのコンピューティングデバイス間の帯域幅および遅延の測定値に基づいて、ダイレクト転送（direct transfer）が２つの別個の読み取り操作および書き込み操作よりも効率的であるかどうかを決定するための機構を提供する。あるいはまたはそれに加えて、それぞれのコンピューティングデバイスは、短いベンチマーキングプロセスに関与して、様々な接続についての統計情報を集めることができる。データ転送システムは、サードパーティクライアントの指示で、送信元サーバーがデータを圧縮し、宛先サーバーがデータを圧縮解除して、ネットワーク帯域幅をさらに節約するためのサポートを提供する。データ転送システムは、従来のファイルシステムプロトコルを拡張して、サーバーＡがサーバーＡに保存されたファイルＦａからデータを読み取り、書き込み操作をサーバーＢに直接送信して、データをファイルＦｂに転送することをクライアントＣが要求することができる操作をサポートする。したがって、より高速なネットワーク接続がサードパーティコンピューター間で直接利用可能であるとき、データ転送システムは、サードパーティコンピューター間の非効率的なネットワークを介したデータ転送を低減する。
【０００７】
[0005]この発明の概要は、選ばれた概念を簡略化された形で紹介するために提供され、この概念について、発明を実施するための形態において以下でさらに記載する。この発明の概要は、特許請求される主題の主な特徴または不可欠な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。
【図面の簡単な説明】
【０００８】
【図１】[0006]一実施形態における、データ転送システムのコンポーネントを示すブロック図である。
【図２】[0007]一実施形態における、第３のコンピューティングデバイスの指示で、データ転送システムが２つのコンピューティングデバイス間でファイルを転送する処理を示す流れ図である。
【図３】[0008]一実施形態における、データ転送システムが接続ベンチマーキング情報を収集して、データを転送するための接続を選択する接続優先テーブルを作る処理を示す流れ図である。
【図４】[0009]一実施形態における、データ転送システムの例示的な運用環境を示すブロック図である。
【発明を実施するための形態】
【０００９】
[0010]本明細書において、サードパーティクライアントコンピューターの要求により、２つのコンピューティングデバイス間でデータを直接送信することができるデータ転送システムについて記載する。このシステムにより、サードパーティは、ネットワークファイルシステム内のコンピューター間でデータ転送を開始することができる。例えば、低速Ｗｉ−Ｆｉ接続を介してホームネットワークに接続されたラップトップ上のユーザーが大量のファイルをサーバーＡからサーバーＢに転送することを要求し、サーバーＡおよびＢが高速ネットワーク接続によって接続されている場合、ラップトップは、最初にラップトップにデータをルーティングすることなく、サーバーＡがサーバーＢにデータを直接転送することを要求することができる。ラップトップの低速接続を介してデータがほとんどまたは全く移動しないので、このことは著しい速度増加をもたらす。データ転送システムは、それぞれのコンピューティングデバイス間の帯域幅および遅延の測定値に基づいて、ダイレクト転送（direct transfer）が２つの別個の読み取り操作および書き込み操作よりも効率的であるかどうかを決定するための機構を提供する。例えば、前の例におけるラップトップおよび２つのサーバーのオペレーティングシステムは、それぞれのシステム間での転送の速度についての統計情報を維持することができる。あるいはまたはそれに加えて、それぞれのコンピューティングデバイスは、短いベンチマーキングプロセスに関与して、様々な接続についての統計情報をコンパイルすることができる。
【００１０】
[0011]いくつかの実施形態では、データ転送システムは、サーバーＡがデータを圧縮し、サーバーＢがデータを圧縮解除して、ネットワーク帯域幅をさらに節約するためのサポートを提供する。これは、ネットワークが通信の各端での圧縮および圧縮解除によって導入された遅延オーバーヘッドよりも遅い場合、より高速な転送をもたらすことができる。システムは、差分圧縮を使用して、サーバーＢがまだ有していないデータの部分のみを送信することもできる。例えば、ＡおよびＢが更新されたファイルを頻繁に交換する場合、ファイルの多くの部分はＢで既に利用可能である可能性があり、その結果として、Ａはこれらの部分を再送する必要がない。データ転送システムは、２つ以上のファイルサーバーに同一のデータを書き込むなどの効率的なレプリケーションを実行する類似の機構を使用する。
【００１１】
[0012]データ転送システムは、従来のファイルシステムプロトコルを拡張して、サーバーＡがサーバーＡに保存されたファイルＦａからデータを読み取り、書き込み操作をサーバーＢに直接送信して、データをファイルＦｂに転送することをクライアントＣが要求することができる操作をサポートする。既存のプロトコルは、このタイプの転送について以下の擬似コードによって例証されるメッセージを使用する。
【００１２】
ＣからＡ  ＲｅａｄＲｅｑｕｅｓｔ（ＦｉｌｅＡ，  ｏｆｆｓｅｔ  １００）
ＡからＣ  ＲｅａｄＲｅｐｏｎｓｅ（Ｄａｔａ）
ＣからＢ  ＷｒｉｔｅＲｅｑｕｅｓｔ（ＦｉｌｅＢ，  ｏｆｆｓｅｔ  ２００，  Ｄａｔａ）
ＢからＣ  ＷｒｉｔｅＲｅｓｐｏｎｓｅ（ＯＫ）
[0013]データ転送システムを使用すると、会話は以下の擬似コードに示されるように変化する。
【００１３】
ＣからＡ  ＲｅａｄＷｒｉｔｅＲｅｑｕｅｓｔ（ＦｉｌｅＡ，  ｏｆｆｓｅｔ  １００，  ＳｅｒｖｅｒＢ，  ＦｉｌｅＢ，  ｏｆｆｓｅｔ  ２００）
ＡからＢ  ＷｒｉｔｅＲｅｑｕｅｓｔ（ＦｉｌｅＢ，  ｏｆｆｓｅｔ  ２００，  Ｄａｔａ）
ＢからＣ  ＲｅａｄＷｒｉｔｅＲｅｓｐｏｎｓｅ（ＯＫ）
[0014]例えば、ＡがＣに読み取り応答を送信し、ＢがＣに書き込み応答を送信するといった、この会話に代わる多くの代替案がある。あるいは、ＡにＢの応答を送信し、ＡがＣにその応答を転送することができる。別の代替案は、データが反対の方向でコピーされる、すなわち、ＣがＡにＢからデータを読み取り、そのデータをＡで書き込むよう依頼するケースである。
【００１４】
[0015]クライアントＣはＡおよびＢと事前にネゴシエートして、様々なネットワークパフォーマンス特性を決定し、ＡとＣの間でセッション／接続を作成することができ、それにより、ＢはＡにＣとして働いて操作を実行するのをまかせる。これにより、上記のメッセージからいくつかのパラメータを省略することができる。Ｃ、Ａ、およびＢはよく知られている技法（例えば、「パケットペア」、ピング、およびｔｒａｃｅｒｔ）を使用して、３つのネットワーク経路の帯域幅および遅延を決定し、ＡとＣの間のダイレクト転送がパフォーマンス改善をもたらすかどうかを決定する。あるいは、ＭＩＣＲＯＳＯＦＴ（商標）Ｌｉｎｋ  Ｌａｙｅｒ  Ｔｏｐｏｌｏｇｙ  Ｄｉｓｃｏｖｅｒｙ（ＬＬＴＤ）機構により、ネットワーク接続されたデバイスがホームネットワークのマップを作り、それぞれのリンクのボトルネック帯域幅を決定することができる。いくらかの追加の中央処理装置（ＣＰＵ）時間を犠牲にして、システムは、Ａでデータを圧縮し、Ｂでデータを圧縮解除することができ、その結果として、より少ないデータがネットワークを介して送信されるが、遅延はわずかに高くなる。したがって、より高速なネットワーク接続がサードパーティコンピューター間で直接利用可能であるとき、データ転送システムは、サードパーティコンピューター間の非効率的なネットワークを介したデータ転送を低減する。
【００１５】
[0016]データ転送システムが直面する２つの他の考慮事項は、非対称接続およびセキュリティ資格情報（credential）に関するものである。非対称接続は、コンピューターＡはコンピューターＢと通信することができ、コンピューターＢはコンピューターＣと通信することができるが、コンピューターＡはコンピューターＣと通信することができないという現代のネットワーキングで生じる可能性がある状況を指す。これは、例えば、コンピューターＢおよびＣはネットワークアドレス変換器（ＮＡＴ）の後ろにあるが、コンピューターＡは公共インターネット接続に接続されているときに生じる可能性がある。場合によっては、コンピューターＢは、ＭＩＣＲＯＳＯＦＴ（商標）ＷＩＮＤＯＷＳ（商標）Ｈｏｍｅ  Ｓｅｒｖｅｒまたは家の外の外部アクセス専用の他のコンピューターであってもよい。コンピューターＢはルーターによって非武装地帯（ＤＭＺ）に配置されてもよく、または外部ネットワーク接続を直接受信することが可能であってもよいが、コンピューターＣはそうすることができない。そのような状況では、従来のシステムでは（ＡはＢに直接アクセスすることができるが、Ｃに直接アクセスすることができないので）、家の外から接続しているコンピューターＡは、コンピューターＢとコンピューターＣの間でファイルをコピーすることが全くできない可能性がある。しかし、データ転送システムを使用すると、コンピューターＢが、（両方ともファイアウォールの後ろの同じホームネットワーク内で接続されているので）接続がコンピューターＢから直接コンピューターＣに利用可能であることを決定した後で、そのような転送が可能になる。
【００１６】
[0017]第２の考慮事項は、セキュリティ資格情報である。コンピューターＡがファイルをコンピューターＣに転送すると、コンピューターＣはコンピューターＡまたはコンピューターＡの資格情報を使用するユーザーをチェックし、要求された操作が許可されていることを確認し、次いで、操作を実行する。コンピューターＡがコンピューターＢに本明細書において記載されるデータ転送システムを使用してファイルまたは他のリソースをコンピューターＣに転送するよう指示すると、コンピューターＢは、コンピューターＡと同じであるか、少なくとも類似の権限を有する資格情報がコンピューターＣへの転送に使用されることを保証する。そうでなければ、コンピューターＡは、通常のセキュリティ制限を回避することができる。いくつかの実施形態では、コンピューターＡが、転送を実行するためのコンピューターＢに対するセキュリティプリンシパルを特定し、そのセキュリティプリンシパルがコンピューターＢを満足させるものであることを認証し、次いで、コンピューターＢがコンピューターＣへの転送のためのセキュリティプリンシパルを偽装する。これを行うことによって、コンピューターＣは、従来より実行していたものと同じ承認チェックを実行することができ、コンピューターＢは、コンピューターＡの要求で、コンピューターＡがそれ自体で実行したはずである、これらの操作のみを実行することができる。これは、ＭＩＣＲＯＳＯＦＴ（商標）ＷＩＮＤＯＷＳ（商標）設定における偽装としてしばしば知られている。セキュリティ機構が特権の委任を可能にするか、アクセス制御が機能に基づく環境では、他の実装形態が可能であり得る。
【００１７】
[0018]図１は、一実施形態における、データ転送システムのコンポーネントを示すブロック図である。システム１００は、要求受信コンポーネント１１０と、接続照会コンポーネント１２０と、接続ベンチマークコンポーネント１３０と、接続選択コンポーネント１４０と、資格情報偽装コンポーネント１５０と、ダイレクト転送コンポーネント（directed transfer component）１６０と、結果処理コンポーネント１７０とを含む。これらのコンポーネントのそれぞれについて、本明細書においてさらに詳細に記載する。
【００１８】
[0019]要求受信コンポーネント１１０は、指示クライアント（directing client）から、宛先サーバーに転送されるべきデータを含む送信元サーバーで要求を受信する。要求は、データ（例えば、ファイルパスまたは他の識別子）、転送されるべきデータの一部分（例えば、ファイルオフセット、データサイズ、またはデータの一部もしくはすべての他の仕様）、指示クライアントまたは指示クライアントのユーザーに関連するセキュリティ資格情報のセットなどを特定するパラメータを含み得る。指示クライアントは、クライアントで実行中のアプリケーションから要求を受信して、送信元サーバーから宛先サーバーにデータを転送する。
【００１９】
[0020]ダイレクト転送を使用すべきかどうか、また、いつダイレクト転送を使用すべきかをシステムが決定するための多くの方法がある。いくつかの実施形態では、クライアントは、送信元サーバーに要求を送信して、送信元サーバーが、最初に指示クライアントにデータを送信することなく、指示クライアントの代わりにデータを宛先サーバーに直接送信することができるダイレクト転送を送信元サーバーがサポートするかどうかを決定する。送信元サーバーがダイレクト要求をサポートする（また、宛先サーバーへの送信元サーバーの接続が、送信元サーバーと宛先サーバーの両方へのクライアントの接続よりも高速である）場合、クライアントは、送信元サーバーに宛先サーバーに対して直接転送を完了するよう指示する。この機構を使用するという決定を開始時に一度行い、次いで、定期的にチェックするか、いずれかのマシンがネットワーク状態の変更を通知した際にチェックすることができる。この決定は、サーバーＡまたはＢと話すことによって行われないことがあり、時として（例えば、ＬＬＴＤプロトコルを用いて）ネットワーク上のすべてのマシンが、ネットワークトポロジおよび帯域幅を決定し、解析することが可能である。
【００２０】
[0021]接続照会コンポーネント１２０は、１つまたは複数のネットワークに照会して、コンピューティングデバイスを特定し、どのコンピューティングデバイスがどのネットワークを介して互いに連絡を取る（reach）ことができるかを決定する。家庭環境では、例えば、それぞれのネットワークを介してデータをブロードキャストすることによって、または動的ホスト構成プロトコル（ＤＨＣＰ）を使用してインターネットプロトコル（ＩＰ）アドレスをネットワーク上のそれぞれのコンピューティングデバイスに提供するルーターに接続することによって指示クライアントから特定することができる、有線ネットワークおよびワイヤレスネットワークが存在することがある。ＬＬＴＤおよび／またはＢＡＮＤプロトコルを使用して、ネットワーク情報を発見することもできる。コンピューティングデバイスおよびコンピューティングデバイスが接続されている方法を特定した後、システムは、それぞれの潜在的な接続についての統計情報を収集することによって続行することができる。
【００２１】
[0022]接続ベンチマークコンポーネント１３０は、コンピューティングデバイス間の１つまたは複数の可能な接続について１つまたは複数のテストを実行して、接続の１つまたは複数のデータ転送機能を決定する。例えば、システムは、ピングテスト、パケットペアテスト、またはそれぞれの接続の帯域幅、遅延、バッファー容量、およびデータ転送速度に影響を及ぼす他のネットワークパラメータを決定するように設計された他のテストを実行することができる。システムは、（ＬＬＴＤレスポンダーなどの）エージェントをそれぞれのコンピューティングデバイスにインストールすることができ、またはそれぞれのデバイスは、システムがそれぞれのコンピューティングデバイスに、そのデバイスから別のデバイスにベンチマーキングテストを実行するよう指示することができる修正されたオペレーティングシステムを有することができる。完了すると、システムは、利用可能な接続をそのデータ転送機能毎に並べ替える接続優先テーブル（connection preference table）を作ることができる。
【００２２】
[0023]接続選択コンポーネント１４０は、１つまたは複数のパフォーマンス基準に従って要求された転送を完了させることができる１つまたは複数の可能な接続のなかから、接続を選択する。典型的には、パフォーマンス基準は、最少の時間で転送を完了させることを目的とする。しかし、他の考慮事項が、さらなる貴重な高速帯域幅を消費することなく、より低速なアイドル接続を使用して転送を完了させること、バッテリ電力をあまり使用しない接続タイプを介して転送を完了させること、１日のうちのアイドル期間中に転送を完了させることなどの他のパフォーマンス基準をもたらすことがある。クライアントが選択された接続を要求することができるように、接続選択コンポーネント１４０は転送を行う接続を選び、指示クライアントに通知する。場合によっては、システムは、事前に決定された接続優先テーブルを維持し、システムはそのテーブルを転送時に参照して、特定されたサーバーのセット間で最速の接続を選択する。
【００２３】
[0024]資格情報偽装コンポーネント１５０は、指示クライアントの資格情報を偽装する送信元サーバーの資格情報を作成する。指示クライアントは資格情報のセットを提供することができ、または送信元サーバーは資格情報のセットを自動的に決定することができる。場合によっては、送信元サーバーが、クライアントの代わりに資格情報の正確なセットを使用してデータを宛先サーバーに転送することができるように、その送信元サーバーは、パスワードなどの、指示クライアントからの追加の情報を要求することができる。これにより、送信元サーバーがアクションを実行することを承認されている場合でも、指示クライアントが、指示クライアントが実行することを承認されていないこれらのアクションを完了させることを防止する。
【００２４】
[0025]ダイレクト転送コンポーネント１６０は、指示クライアントから送信元サーバーに要求を送信して、最初に指示クライアントにデータを送信することなく送信元サーバーから宛先サーバーにデータを直接送信する。サーバーが高速ネットワークによって接続され、クライアントが低速ネットワークによってサーバーに接続されている場合、ダイレクト転送は一般的に、クライアントへの従来の転送が最初に完了するよりもはるかに速く完了する。ダイレクト転送コンポーネント１６０は、サードパーティが送信元サーバーから他のサーバーに転送を指示することができるＳＭＢおよび／またはＮＦＳレイヤーの改訂などの、ダイレクト転送を可能にするための送信元サーバーのネットワーク関連ソフトウェアに対する修正を含み得る。いくつかの実施形態では、ダイレクト転送コンポーネント１６０は、データ圧縮またはデータ転送パフォーマンスをさらに高めるための他の省スペース技術を要求する。
【００２５】
[0026]本明細書ではクライアントおよびサーバーとして特定されているが、当業者であれば、任意のコンピューティングデバイスは、ある時にはクライアントのように、それ以外の時にはサーバーのように働くことができ、これらの名称は、それぞれのコンピューティングデバイスの任意の特定の機能または機能の欠如を示すものではないことが理解されよう。
【００２６】
[0027]結果処理コンポーネント１７０は、指示クライアントに転送の結果を返すことを管理する。事前に、指示クライアントはそれぞれのアクションを実行しており、転送の結果をそれぞれのサーバーから直接受信する。データ転送システム１００を使用すると、指示クライアントは、データを転送する最初の要求の後、ほとんど会話に入っておらず（ただし、システムは進行状況メッセージを提供することができる）、したがって、転送結果の最初の受信者にならない。例えば、何か問題があった場合、または転送が成功裏に完了した場合、宛先サーバーは送信元サーバーに通知するが、その情報を指示クライアントに伝えるかどうかは送信元サーバー次第である。したがって、送信元サーバーが転送の結果を指示クライアントに提供することができるように、送信元サーバーは、何の代わりに送信元サーバーが転送を実行していたかを特定する、それぞれの転送についての状態情報を追跡することができる。送信元サーバーおよび／または指示クライアントは、再試行のための論理または障害に対する他の処理を含み得る。
【００２７】
[0028]データ転送システムが実装されるコンピューティングデバイスは、中央処理装置、メモリ、入力デバイス（例えば、キーボードおよびポインティングデバイス）、出力デバイス（例えば、ディスプレイデバイス）、および記憶デバイス（例えば、ディスクドライブまたは他の不揮発性記憶媒体）を含み得る。メモリおよび記憶デバイスは、システムを実施するまたは有効にするコンピューター実行可能命令（例えば、ソフトウェア）を用いて符号化することができるコンピューター可読記憶媒体である。加えて、データ構造およびメッセージ構造を保存するか、通信リンク上の信号などのデータ伝送媒体を介して伝送することができる。インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、ポイントツーポイントダイヤルアップ接続、携帯電話ネットワークなどの様々な通信リンクが使用され得る。
【００２８】
[0029]システムの実施形態は、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコンシューマーエレクトロニクス、デジタルカメラ、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、セットトップボックス、システムオンチップ（ＳＯＣ）などを含む様々な運用環境で実施され得る。コンピューターシステムは、携帯電話、携帯情報端末、スマートフォン、パーソナルコンピューター、プログラマブルコンシューマーエレクトロニクス、デジタルカメラなどであってもよい。
【００２９】
[0030]１つまたは複数のコンピューターもしくは他のデバイスによって実行されるプログラムモジュールなどのコンピューター実行可能命令の一般的な文脈において、システムについて記載することができる。一般的に、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能を、様々な実施形態において所望される通りに組み合わせるまたは分散することができる。
【００３０】
[0031]図２は、一実施形態における、第３のコンピューティングデバイスの指示で、データ転送システムが２つのコンピューティングデバイス間でファイルを転送する処理を示す流れ図である。ブロック２１０で開始して、システムは、送信元サーバーと宛先サーバーの間でのデータのダイレクト転送を要求する指示クライアントから転送要求を受信する。例えば、クライアントはＷｉ−Ｆｉを介してホームネットワークに接続されてもよく、送信元サーバーが、転送をより速く完了させることができるクライアントよりも良好な、宛先サーバーへの接続を有するかどうかを問い合わせる要求を送信してもよい。転送は、転送の対象であるファイルなどのデータを特定することができる。要求は様々な方法で発信することができる。例えば、指示クライアントにおけるユーザーは、シェルプログラム（例えば、ＭＩＣＲＯＳＯＦＴ（商標）ＷＩＮＤＯＷＳ（商標）Ｅｘｐｌｏｒｅｒ）を使用して、送信元サーバー上のファイルを見ることができる。ユーザーは、コピーおよび貼り付け操作を使用して、送信元サーバーの１つまたは複数のファイルを宛先サーバーにコピーするよう要求することができる。
【００３１】
[0032]引き続きブロック２２０で、システムは、代理で転送が行われる転送要求に関連するセキュリティ資格情報を決定する。結局、送信元サーバーが転送を直接実行することになった場合、送信元サーバーはセキュリティ資格情報を使用して、指示クライアントの代わりに働く。送信元サーバーは、セキュリティ資格情報を指示クライアントに照会するか、転送要求の一部として資格情報を受信することができる。
【００３２】
[0033]引き続きブロック２３０で、システムは１つまたは複数のネットワークに照会して、指示クライアント、送信元サーバー、および宛先サーバーの間の接続を特定する。システムは、送信元サーバーでＤＮＳキャッシュ情報を検索するか、ルーターまたはネットワーク情報の他のソースに照会するか、ブロードキャストして他のネットワークデバイスを特定することによって照会することができる。また、送信元サーバーは、様々なネットワーク（例えば、Ｗｉ−Ｆｉネットワークおよび有線ネットワーク）上の指示クライアントおよび宛先サーバーに直接ピングを打って、送信元サーバーがどのようにその他のコンピューティングデバイスと連絡を取る（reach）ことができるかを決定することができる。
【００３３】
[0034]引き続きブロック２４０で、システムは特定された接続を測定して、ネットワークパフォーマンスに基づいて接続をランク付けする。例えば、システムは、有線ネットワークがワイヤレスネットワークよりも高いスループットを有する、またはギガビットネットワークインターフェイスカード（ＮＩＣ）を有する２つのコンピューターが、有線ネットワークでは、一方が１００メガビットＮＩＣを有する２つのコンピューターよりも高速であると決定することがある。システムは、ピングテストまたは帯域幅、遅延、および他のネットワークパラメータを測定する他の速度テストなどの、当技術分野でよく知られている様々な技法を使用して、接続を測定する。
【００３４】
[0035]引き続きブロック２５０で、システムは、それぞれの接続の測定されたネットワークパフォーマンスに基づいて、転送を実行する接続を選択する。例えば、送信元サーバーが、宛先サーバーに対して、指示クライアントが有するよりも高いスループット接続を有するとシステムが決定した場合、システムは送信元サーバーを選択して、転送を直接実行する。場合によっては、クライアントがより良好な宛先サーバーへの接続を有することがあるか、送信元サーバーが宛先サーバーに対する接続を全く有さないことがあり、この場合、指示クライアントが従来の方法で、最初にデータをクライアントに転送してから宛先サーバーに転送することによって、転送を実行する。
【００３５】
[0036]引き続きブロック２６０で、指示クライアントが転送を実行する場合の資格情報に類似した資格情報を使用して送信元サーバーから転送を行うことができるように、システムは決定されたセキュリティ資格情報を偽装する。資格情報を偽装することは一般的に単一のコンピューティングデバイスで実行されるが、ネットワーク全体で機能するように拡張することができる。ホームネットワークの場合、それぞれのコンピューティングデバイスはユーザーアカウントおよびパスワードの類似のセットを使用することができ、その結果として、あるコンピューティングデバイスは、どのユーザーアカウントを使用するかを知るだけで、別のコンピューティングデバイスを偽装することができる。他の場合では、システムはあるコンピューティングデバイスから別のコンピューティングデバイスに認証情報を転送して偽装を可能にすることができ、またはＫｅｒｂｅｒｏｓまたは他の認証サーバーを使用して、要求が指示クライアントから発信されたものであるという確認を提供することができる。
【００３６】
[0037]引き続きブロック２７０で、システムは、最初に指示クライアントにデータを転送することなく、指示クライアントの代わりに送信元サーバーから宛先サーバーにデータを直接転送する。データを直接転送することは転送の速度を上げ、最初にクライアントにデータを転送するという冗長なステップを回避する。より重要なことに、転送は、２つのサーバー間の高速ネットワーク接続を介して転送を完了させることによって、遅い可能性があるクライアントのネットワーク接続を回避する。
【００３７】
[0038]引き続きブロック２８０で、システムは転送の結果を指示クライアントに報告する。送信元サーバーはデータを宛先サーバーに転送し、したがって、転送の進行状況ならびに転送の最終結果についての情報を受信する。クライアントが、転送が成功裏に完了したことを確認するか、任意のエラーを指示クライアントが決定した方法で処理することができるように、送信元サーバーはこの情報を指示クライアントに提供する。ブロック２８０の後、これらのステップは終了する。
【００３８】
[0039]図３は、一実施形態における、データ転送システムが接続ベンチマーキング情報を収集して、データを転送するための接続を選択する接続優先テーブルを作る処理を示す流れ図である。ブロック３１０で開始して、システムは、１つまたは複数のネットワークによって接続された１つまたは複数のコンピューティングデバイスを特定する。ネットワークは、イーサネット（登録商標）、Ｗｉ−Ｆｉ、または他のネットワーキング技術を介してコンピューターシステムを接続する、家または小規模オフィス内のネットワークを含み得る。また、デバイスは、３Ｇまたは他のセルラーデータ接続を介してホームネットワークにアクセスすることができる電話などの公共ネットワークによって接続され得る。システムは、要求をブロードキャストし、ネットワーク情報のソース（例えば、ルーターまたはＤＮＳサーバー）に照会することなどによって、コンピューティングデバイスを特定することができる。
【００３９】
[0040]引き続きブロック３２０で、システムは、特定されたコンピューティングデバイス間の接続の１つまたは複数の組合せを生成する。例えば、システムは、利用可能なコンピューティングデバイスのそれぞれの順列を決定し、選択されたネットワークを介して宛先コンピューティングデバイスにピングを打つことによって、接続を行うことができるかどうかを決定することができる。いくつかのデバイスを複数のネットワーク（例えば、冗長ＮＩＣ、有線およびＷｉ−Ｆｉなど）によって接続することができ、それぞれのネットワークは接続の別個の組合せを表す。
【００４０】
[0041]引き続きブロック３３０で、システムは最初に生成された組合せを選択する。その後の反復において、システムは次の組合せを選択する。例示を簡単にするために連続して示されているが、当業者であれば、システムは複数の接続の組合せを並行してテストして、ベンチマーキングプロセスの速度を上げることができることが理解されよう。引き続きブロック３４０で、システムは、選択された組合せによって特定された送信元コンピューティングデバイスおよびターゲットコンピューティングデバイスに基づいて接続を確立する。接続は、伝送制御プロトコル（ＴＣＰ）またはテストデータを転送して接続のパフォーマンスを測定するための他の接続を含み得る。
【００４１】
[0042]引き続きブロック３５０で、システムは、１つまたは複数の測定データ転送を送信して選択された接続のネットワーク機能を評価することによって、接続テストを実行する。測定される機能は、帯域幅、遅延、バッファーサイズ、フィーチャー（例えば、ヘッダー圧縮、選択的肯定応答など）のサポートなどを含み得る。引き続きブロック３６０で、システムは、転送を開始するコンピューティングデバイスに関係なく、特定されたコンピューティングデバイスのうちの任意の２つの間で転送を実行するのに選択すべき接続を決定するためにアクセス可能な接続優先テーブルにベンチマーキング結果を保存する。引き続き決定ブロック３７０で、さらなる組合せがある場合、システムはブロック３３０にループして、次の組合せを選択する。
【００４２】
[0043]引き続きブロック３８０で、システムは、保存された接続優先テーブルを並べ替えて、より高速なネットワーク機能を有する接続に優先権を与える。例えば、システムは、帯域幅または帯域幅に応じて決定されたスコアおよび他のネットワークパラメータ毎にテーブルを並べ替えることができる。それぞれのコンピューティングデバイスは、転送が行われるときに使用すべきネットワーク優先テーブルをキャッシュして、転送用に選択すべき最速の接続を決定することができる。ブロック３８０の後、これらのステップは終了する。
【００４３】
[0044]図４は、一実施形態における、データ転送システムの例示的な運用環境を示すブロック図である。この図は、指示クライアント４１０、送信元サーバー４２０、および宛先サーバー４３０を含む。指示クライアント４１０におけるユーザーは、送信元サーバー４２０から宛先サーバー４３０へのファイルの転送を要求することを含む、様々なアクションを実行することができる。これは、家、小規模オフィス、またはデータセンターさえも含む様々なネットワーク設定における一般的な操作である。あいにく、指示クライアント４１０は、低速ネットワーク４４０を介して送信元サーバー４２０に接続されている。ネットワーク４４０は、ワイヤレス接続、インターネットを介した仮想プライベートネットワーク（ＶＰＮ）接続、またはいくつかの他のタイプの比較的低速な接続であってもよい。
【００４４】
[0045]現在、ファイル転送通信は２つのパーティ間で行われ、クライアントは最初に送信元サーバー４２０から指示クライアント４１０にデータを転送してから、指示クライアント４１０から宛先サーバー４３０にデータを転送せざるを得ない。あいにく、指示クライアント４１０はやはり、低速ネットワーク４５０を介して宛先サーバー４３０に接続されているので、データ転送の全体的な速度は非常に遅く、転送を完了させるには長い時間がかかる。本明細書において記載されるデータ転送システムを使用すると、指示クライアント４１０は、送信元サーバー４２０に、送信元サーバー４２０と宛先サーバー４３０の間の高速ネットワーク４６０を使用してデータを宛先サーバー４３０に直接転送するよう命令することができる。これは転送の速度をかなり上げることになり、クライアントは、転送が完了すると同時に切断するか、他のことを行うことさえもできる可能性がある。
【００４５】
[0046]いくつかの実施形態では、データ転送システムにより、指示クライアントは、クライアントからのさらなる干渉なしに、データ転送を開始し、データ転送を完了させることができる。クライアントはネットワークから切断し、他のタスクを実行する（例えば、ラップトップがローカルホームＷｉ−Ｆｉネットワークに接続されていた家を離れる結果として、ラップトップを切断する）ことができる。クライアントは、後で戻り、送信元サーバーからの転送の結果を要求するか、ファイルまたは他のデータが宛先サーバーに存在するかどうかを直接調べることができる。これにより、クライアントは、操作の完了を待つことに拘束されることなく、いくつかの操作を指示することができる。
【００４６】
[0047]いくつかの実施形態では、データ転送システムにより、クライアントが転送にデータ圧縮を使用することを要求するか、送信元サーバーが転送にデータ圧縮を使用すると決定することができる。ネットワークを介して転送するためのより小さいサイズのデータを生成するためにうまく圧縮するデータ圧縮は、データが冗長情報を含む場合に、ファイル転送の速度を上げるのに有益であり得る。また、データ圧縮は、多くの小さいデータ項目のディレクトリまたは他のソースがネットワークを介して転送されている場合に有益である。通常、それぞれのファイルは個別に転送され、それぞれの転送をセットアップし、実行するためのオーバーヘッドを含む。データを圧縮することによって、システムは１回の操作で転送することができる１つのファイルまたはデータ項目を生成することができる。次いで、宛先サーバーは圧縮されたデータを圧縮解除して、転送を完了させる。また、ディレクトリ全体をＺＩＰまたはＴＡＲファイルに圧縮することは、送信元でファイルを列挙し、宛先でファイルを再作成するための多くの同期ディレクトリ操作を回避する。
【００４７】
[0048]いくつかの実施形態では、データ転送システムは、宛先サーバーから指示クライアントに要求を送信して、指示クライアントの資格情報を確認する。宛先サーバーは、送信元サーバーが指示クライアントの代わりに働くことを許可するのに十分なほど、送信元サーバーを信頼しないことがある。したがって、宛先サーバーは、転送のセットアップ段階の間、指示クライアントに接続して、指示クライアントが転送を承認したことを保証するか、指示クライアントからセキュリティ資格情報を直接取得することができる。大半のデータは直接、送信元サーバーと宛先サーバーの間を流れるが、この場合などの小さいデータクエリの多くの場合に、依然として指示クライアントと連絡を取って、パフォーマンスに及ぼす目に見えて分かる影響なしに、操作をセットアップすることができる。
【００４８】
[0049]上記から、データ転送システムの特定の実施形態について本明細書において例示の目的で記載してきたこと、ただし、本発明の趣旨および範囲を逸脱することなく、様々な修正を行うことができることを理解されたい。したがって、本発明は添付の特許請求の範囲によって限定される場合を除き、限定されない。
【図１】
2014503141.tif 000003
【図２】
2014503141.tif 000004
【図３】
2014503141.tif 000005
【図４】
2014503141.tif 000006
【国際調査報告】
2014503141.tif 000007
2014503141.tif 000008