(57)【要約】ネットワーク送信を調整するために、現在のネットワーク情報と併せて、アプリケーションにより提供される送信メタデータが使用される。データを送信しようとしているアプリケーションとネットワーキング・コンポーネントとの間のインタフェースは、アプリケーションが、宛先情報、通信タイプ情報、転送されるデータの量に関する情報、適時性情報、データ位置情報、コスト情報、及び他の同様の送信メタデータを提供することを可能にする。現在のネットワーク情報は、ネットワーキング・コンポーネント自身により取得されてもよいし、中央コントローラにより提供又は拡張されてもよい。次いで、ネットワーキング・コンポーネントは、ルーティングと、誤り制御設定、フロー制御設定、受信機制御設定、セグメンテーション設定、及び他の同様のプロトコル設定に対する調整の形態でプロトコル設定と、の両方を最適化することができる。
2016515361.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークの一部を介したデータの送信のためのルーティング及びプロトコル設定を生成する方法であって、
前記ネットワークの前記一部を介して前記データを送信しようとしているアプリケーションから、前記データに関連付けられた送信メタデータを受信するステップであって、前記送信メタデータは、宛先情報と、適時性情報と、通信タイプ情報と、データの量情報と、データの位置情報と、コスト情報と、のうちの少なくとも２つを含む、ステップと、
前記送信メタデータの少なくとも一部に基づいて、前記ルーティングを生成するステップと、
前記送信メタデータの少なくとも一部に基づいて、誤り制御と、フロー制御と、受信機制御と、セグメンテーションと、のうちの少なくとも１つを指定することにより、前記プロトコル設定を生成するステップと、
を含む、方法。
【請求項２】
前記ネットワークにおける輻輳を示すネットワーク輻輳情報を取得するステップ
をさらに含む、請求項１記載の方法。
【請求項３】
前記プロトコル設定を生成する前記ステップは、前記送信メタデータにより、送信される前記データが少量であると示される場合、短い最小再送信タイムアウト、及び、アクノレッジメントが送信される前に受信される必要がある少量のパケットとともに、前記プロトコル設定を生成するステップを含む、請求項１記載の方法。
【請求項４】
前記プロトコル設定を生成する前記ステップは、ネットワーク輻輳情報により、前記ネットワークの前記一部に輻輳がないことが示される場合、少なくとも何らかのパケット・ロスを無視してより速い速度でデータを送信し続ける輻輳プロバイダとともに、前記プロトコル設定を生成するステップを含む、請求項１記載の方法。
【請求項５】
請求項１のステップに関するコンピュータ実行可能命令を含む１以上のコンピュータ読み取り可能媒体。
【請求項６】
コンピューティング・デバイスであって、
当該コンピューティング・デバイスをネットワークに通信可能に接続するネットワーク・ハードウェア・インタフェースと、
アプリケーション・プログラムであって、前記アプリケーション・プログラムは、前記ネットワークの一部を介して送信されるデータと、当該コンピューティング・デバイスにより実行されたときに、前記アプリケーション・プログラムに、送信メタデータ・インタフェースを介して、送信メタデータを提供させるコンピュータ実行可能命令と、を含み、前記送信メタデータは、送信される前記データを説明するものである、アプリケーション・プログラムと、
ネットワーク・スタックであって、当該コンピューティング・デバイスにより実行されたときに、前記ネットワーク・スタックに、前記送信メタデータを受信するステップと、前記送信メタデータの少なくとも一部に基づいて、前記ネットワークの前記一部を介した前記データのルーティングを生成するステップと、前記送信メタデータの少なくとも一部に基づいて、前記データが前記ネットワークの前記一部を介して送信されるプロトコル設定を生成するステップと、を実行させるコンピュータ実行可能命令を含むネットワーク・スタックと、
を備えた、コンピューティング・デバイス。
【請求項７】
前記アプリケーション・プログラム及び前記ネットワーク・スタックによりアクセス可能なメモリをさらに備え、前記メモリは、前記アプリケーション・プログラムにより前記メモリに記憶された前記データを含み、前記送信メタデータは、前記データが前記アプリケーション・プログラムにより記憶された、前記メモリ内の位置に対するポインタを含み、さらに、前記ネットワーク・スタックは、前記メモリ内の前記位置から直接前記データを送信するためのコンピュータ実行可能命令をさらに含む、請求項６記載のコンピューティング・デバイス。
【請求項８】
前記送信メタデータは、宛先情報と、適時性情報と、通信タイプ情報と、データの量情報と、データの位置情報と、コスト情報と、のうちの少なくとも２つを含む、請求項６記載のコンピューティング・デバイス。
【請求項９】
前記の生成されたプロトコル設定は、前記送信メタデータの少なくとも一部に基づいて、誤り制御と、フロー制御と、受信機制御と、セグメンテーションと、のうちの少なくとも１つを指定する、請求項６記載のコンピューティング・デバイス。
【請求項１０】
前記ネットワーク・スタックは、前記ネットワークにおける輻輳を示すネットワーク輻輳情報を取得するためのコンピュータ実行可能命令をさらに含む、請求項６記載のコンピューティング・デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
現在のサーバ・コンピューティング・デバイスは、ラック等の制限されたスペース内での複数のそのようなサーバ・コンピューティング・デバイスの設置及び保守を促進するように、しばしば物理的に構成される。サーバ・コンピューティング・デバイスの複数のラックは、次いで、一般的には「データセンタ」と呼ばれる専用施設に収容され得る。そのようなデータセンタは、規模の効率性（efficiencies  of  scale）を提供するものであり、無数のサービス及び機能を提供する物理サーバ・コンピューティング・デバイスをホストするためにしばしば使用される。例えば、ユビキタスなインターネット及びワールド・ワイド・ウェブを介してアクセス可能な多数のサービス及び機能が、データセンタ内のサーバ・コンピューティング・デバイスによりサポートされる。アクセス性が企業イントラネット、大学イントラネット、又は研究イントラネットに制限され得る他のサービス及び機能も同様に、データセンタ内のサーバ・コンピューティング・デバイスによりサポートされる。
【０００２】
しばしば、信頼性を維持するために、データの冗長コピーが、物理的に別々に配置され互いから離れている複数のデータセンタに保持される。そのような複数のデータセンタは、１つの国のあらゆる場所に、あるいは世界中に分散され得る。加えて、他のデータ・セットの一部が、複数の異なるデータセンタにおいて、別々に保持され互いから離れている場合、そのようなデータ・セットは、より経済的でありより信頼性があるよう十分大きいものであり得、そのようなデータ・セットもまた、１つの国のあらゆる場所に、あるいは世界中に分散され得る。
【０００３】
しかしながら、効率的なデータ処理は、通常、データが、そのようなデータ処理を実行するサーバ・コンピューティング・デバイスの処理装置に物理的に近接するコンピュータ読み取り可能記憶媒体に記憶されることを要する。その結果として、データ処理は、そのようなデータが記憶されているデータセンタから、そのような処理が実行され得るデータセンタへの、大量のデータのコピーをしばしば伴うことがある。代替的又は追加的に、データ処理は、そのようなデータが通常は新たなデータ・セット又は変更されたデータ・セットを生成するために処理されたデータセンタから、そのようなデータが記憶されることになるデータセンタへの、大量のデータのコピーをしばしば伴うことがある。そのようなデータの処理は、数千人又は数百万人ものユーザへのサービスの提供に直接影響を及ぼすことがある、あるいは、数千人又は数百万人ものユーザへのサービスの提供によりトリガされることさえある。その結果として、そのようなユーザがより効率的に処理を行い、ユーザが苛立つのを回避することを可能にするために、そのようなデータの処理は、できるだけ迅速且つ効率的に実行されることが通常望ましい。しかしながら、処理のためのデータの集約、記憶のためのデータの後続の分割（disaggregation）、又はデータの他の交換若しくは転送を含め、データセンタ間でデータをコピーするのに必要とされる時間は、通常、そのような処理をいかにして迅速且つ効率的に実行できるかにおける制限要因（limiting  factor）である。
【発明の概要】
【０００４】
一実施形態において、ネットワーキング・コンポーネントは、既知のネットワーク状態と、送信元アプリケーションからの、データがどのように送信されるべきかを説明し得る送信メタデータと、が与えられると、そのようなデータの効率的な送信を最大化するために、プロトコル設定及びルーティング（経路）を調整することができる。
【０００５】
別の実施形態において、データ転送アプリケーションとネットワーキング・コンポーネントとの間の、データ転送アプリケーションが無数の送信メタデータをそのようなネットワーキング・コンポーネントに提供することを可能にし得るインタフェースが規定され得る。このインタフェースは、宛先情報、通信タイプ情報、転送されるデータの量に関する情報、適時性情報（timeliness  information）、データ位置情報、コスト情報、及び他の同様の送信メタデータの形態であり得る送信メタデータの提供を可能にし得る。
【０００６】
さらなる実施形態において、ネットワーキング・コンポーネントは、誤り制御設定、フロー制御設定、受信機制御設定、セグメンテーション設定、及び他の同様のプロトコル設定に対する調整の形態であり得るプロトコル設定の最適化を行うために、送信メタデータを使用することができる。そのようなプロトコル設定の最適化はまた、現在のネットワーク状態を考慮に入れ得る。
【０００７】
さらなる実施形態において、中央コントローラ（centralized  controller）は、ネットワーキング・コンポーネントが送信されるデータのためのプロトコル設定及びルーティングを最適化するのを支援するために、現在のネットワーク状態及びネットワーク構成に関する情報を提供することができる。
【０００８】
この概要は、詳細な説明において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものでもないし、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。
【０００９】
添付の図面を参照しながら進む以下の詳細な説明から、さらなる特徴及び利点が明らかになるであろう。
【図面の簡単な説明】
【００１０】
以下の詳細な説明は、添付の図面と併せて検討されると最良に理解され得る。
【図１】ネットワーク送信を調整するための送信メタデータを取得して使用するための例示的なシステムのブロック図。
【図２】ネットワーク送信を調整するための送信メタデータを取得して使用するための例示的なアーキテクチャのブロック図。
【図３】ネットワーク送信を調整するための送信メタデータの例示的な使用のフロー図。
【図４】例示的な汎用コンピューティング・デバイスを示すブロック図。
【発明を実施するための形態】
【００１１】
以下の説明は、ネットワーク送信を調整するための、アプリケーションにより提供される送信メタデータの取得及び使用に関する。ネットワークを介してデータを送信しようとしているアプリケーションとネットワーキング・コンポーネントとの間の、アプリケーションが送信メタデータをネットワーキング・コンポーネントに提供することを可能にするインタフェースが規定され得る。次いで、ネットワーキング・コンポーネントは、任意的に現在のネットワーク状態情報と併せて送信メタデータを使用して、データの送信に適用できるルーティング及びプロトコル設定を調整することができる。送信メタデータは、宛先情報、通信タイプ情報、転送されるデータの量に関する情報、適時性情報、データ位置情報、コスト情報、及び他の同様の送信メタデータを含み得る。そのような送信メタデータを用いると、ネットワーキング・コンポーネントは、誤り制御設定、フロー制御設定、受信機制御設定、セグメンテーション設定、及び他の同様のプロトコル設定に対する調整の形態で、プロトコル設定を最適化することができる。ネットワーキング・コンポーネントはまた、プロトコル設定を最適化する際に、現在のネットワーク構成情報及び現在のネットワーク輻輳情報等の現在のネットワーク状態情報を使用することができる。そのような現在のネットワーク情報は、ネットワーキング・コンポーネント自身により取得されてもよいし、中央コントローラにより提供又は拡張されてもよい。
【００１２】
本明細書で説明する技術は、特定のタイプのネットワーキング環境及びコンテキストを参照する。詳細には、以下の説明は、サーバ・コンピューティング・デバイス間のデータセンタ間通信のコンテキスト内で提供される。しかしながら、そのような参照は、完全に例示的であり、説明及び提示の明瞭さのため且つ理解のしやすさのためになされるものである。実際、本明細書で説明する技術は、変更することなく、例えば、クライアント・コンピューティング・デバイス上で実行中のアプリケーション・プログラムによる送信、専用ネットワーク機器による送信、及び、例えばデジタル・ビデオ・レコーダ等の特殊目的コンピューティング・デバイスによる送信を含む任意のネットワーク送信の最適化に等しく適用可能である。
【００１３】
必須ではないが、以下の説明の態様は、コンピューティング・デバイスにより実行されるプログラム・モジュール等のコンピュータ実行可能命令の一般的コンテキストにおいて提供される。より詳細には、この説明の態様は、別途示されない限り、１以上のコンピューティング・デバイス又は周辺デバイス（peripheral）により実行される動作（act）及びオペレーションの象徴的表現を参照する。したがって、しばしばコンピュータにより実行されるものとして参照されるそのような動作及びオペレーションは、処理装置による、構造化された形態のデータを表す電気信号の操作を含むことが理解されよう。この操作は、メモリ内の位置でそのデータを変換又は保持し、このことは、当業者によりよく理解される様態でコンピューティング・デバイス又は周辺デバイスのオペレーションを再構成又は変更する。データが保持されるデータ構造は、そのデータのフォーマットにより規定される特定の特性を有する物理的位置である。
【００１４】
一般に、プログラム・モジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、及び同様のものを含む。さらに、コンピューティング・デバイスは、従来のサーバ・コンピューティング・ラック又は従来のパーソナル・コンピュータに限定される必要はなく、ハンドヘルド・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのコンシューマ向け電子デバイス若しくはプログラム可能なコンシューマ向け電子デバイス、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、及び同様のものを含む他のコンピューティング構成を含むことが、当業者には理解されよう。同様に、コンピューティング・デバイスは、スタンドアロン・コンピューティング・デバイスに限定される必要はない。というのは、機構は、通信ネットワークを介して結び付けられた分散コンピューティング環境においても実施され得るからである。分散コンピューティング環境において、プログラム・モジュールは、ローカル・メモリ記憶デバイス及びリモート・メモリ記憶デバイスの両方に配置され得る。
【００１５】
図１を参照すると、コンピューティング・デバイス１１１、１１２、及び１１３等の複数のコンピューティング・デバイスを含む例示的なシステム１００が示されている。コンピューティング・デバイス１１１、１１２、及び１１３は、データセンタ１２１、１２２、及び１２３等の１以上の物理的に異なるデータセンタ内に物理的に配置され得る。コンピューティング・デバイス１１１、１１２、及び１１３に加えて、データセンタ１２１、１２２、及び１２３における他の同様のコンピューティング・デバイスは、ネットワーク１０１の一部として、ともにネットワーク化され得る。これにより、２以上のコンピューティング・デバイス間でのコンピュータ読み取り可能データの送信及び共有が可能になる。以下の説明の目的上、データセンタ１２１、１２２、及び１２３は、物理ノード１３１、１３２、１３３、及び１３５、並びにセグメント１４１、１４２、及び１４３を有する物理ネットワーキング・インフラストラクチャを介して、ともにネットワーク化され得る。図示されるように、例示的なコンピューティング・デバイス１１１等の、データセンタ１２１のコンピューティング・デバイスは、ノード１３１に近接して配置され得、データセンタ１２１のコンピューティング・デバイスに向けられた通信は、ノード１３１によりデータセンタ１２１にルーティングされ得るのに対し、ネットワーク１０１に沿った他の通信は、データセンタ１２１のコンピューティング・デバイスが意識しない形で、ノード１３１を介して他の宛先にルーティングされ得る。同様に、データセンタ１２２は、ノード１３２に近接して配置され得、データセンタ１２３は、ノード１３３に近接して配置され得る。
【００１６】
例示的なコンピューティング・デバイス１１１等のコンピューティング・デバイスの１以上の処理装置上で実行中のコンピュータ実行可能命令は、例示的なネットワーク１０１等のネットワークを介してデータを送信することを含め、他のコンピューティング・デバイスにデータを送信しようとすることができる。例えば、コンピューティング・デバイス１１１の処理装置のうちの１以上で実行されているコンピュータ実行可能命令を含むアプリケーション１６１は、ネットワーク１０１を介してデータを送信しようとすることができる。そうするために、アプリケーション１６１は、ネットワークを介したデータの送信とネットワークから受信されるデータの受信とに専用である、コンピューティング・デバイス１１１上で実行中の他のコンピュータ実行可能命令と通信することができる。そのようなコンピュータ実行可能命令は、通常、１以上のネットワーキング・コンポーネント、プラグイン、エクステンション（extension）、アプリケーション、及び同様のものに編成され得、本明細書では、集合的に「ネットワーク・スタック」と呼ばれる。したがって、ネットワーク１０１を介してデータを送信するために、コンピューティング・デバイス１１１上で実行中のアプリケーション１６１は、コンピューティング・デバイス１１１上で実行中のネットワーク・スタック１６２と通信することができる。
【００１７】
一実施形態において、インタフェース１６３は、アプリケーション１６１が送信メタデータ１６４をネットワーク・スタック１６２に提供することを可能にし得る。次いで、そのような送信メタデータ１６４が、アプリケーション１６１により提供されているデータをネットワーク・スタック１６２が送信するネットワーク１０１を介した経路と、そのようなデータを１以上の他のコンピューティング・デバイスに送信するために使用されるプロトコル設定と、の両方を調整するために、ネットワーク・スタック１６２により使用され得る。例えば、アプリケーション１６１は、データ１７３をデータセンタ１２３内のコンピューティング・デバイス１１３に送信しようとすることができ、また、データ１７２をデータセンタ１２２内のコンピューティング・デバイス１１２に送信しようとすることができる。ネットワーク・スタック１６２は、ネットワーク・スタック１６２がデータ１７３を送信するルーティング１８３を決定することができ、また、ネットワーク・スタック１６２がデータ１７２を送信するルーティング１８２を決定することができる。さらに、ネットワーク・スタック１６２は、データ１７３を送信するために使用されるネットワーク送信プロトコル１９３の設定を調整することができ、データ１７２を送信するために使用されるネットワーク送信プロトコル１９２の設定を調整することができる。ルーティング１８２及び１８３等のルーティングの決定と、プロトコル設定１９２及び１９３等のネットワーク送信プロトコルの設定の調整と、は、アプリケーション１６１からネットワーク・スタック１６２により受信された送信メタデータ１６４により通知され得る。
【００１８】
アプリケーション１６１が送信メタデータをネットワーク・スタック１６２に提供できるインタフェース１６３をさらに説明するために、図２のシステム２００を参照する。したがって、図２に移ると、図２に示されるシステム２００は、図１に示された例示的なサーバ・コンピューティング・デバイス１１１等のコンピューティング・デバイス上で実行中であり得るアプリケーション１６１とネットワーク・スタック１６２との間の例示的な関連（association）とともに、アプリケーション１６１と、ネットワーク・スタック１６２と、アプリケーション１６１及びネットワーク・スタック１６２が実行中であるコンピューティング・デバイスのハードウェア・コンポーネント、すなわち、ハードウェア・ネットワーク・インタフェース２２０におけるメモリ２１０と、の間の関連を示している。図２のシステム２００により示されるように、アプリケーション１６１とネットワーク・スタック１６２との間の送信メタデータ・インタフェース１６３は、アプリケーション１６１による、アプリケーション１６１が行おうとしているネットワーク送信に関連付けられ、そのようなネットワーク送信を説明する複数の異なるタイプの情報の提供を可能にし得る。
【００１９】
アプリケーション１６１がインタフェース１６３を介して提供できる送信メタデータ１６４の１つのタイプは、データの量情報２３３であり得る。当業者により認識されるように、通常、データが、アプリケーション・プログラムに利用可能になるか、あるいはアプリケーション・プログラムにより生成されるときのそのようなデータに対する１以上のポインタをネットワーキング・コンポーネントに単に提供することにより、通常、アプリケーション・プログラムは、そのようなデータを送信する。その結果として、ネットワーキング・コンポーネントは、通常、送信されるべきデータの総量を認識せず、実際、通常、送信されるべきデータの総量を全く知らない。しかしながら、一実施形態において、送信メタデータ１６４は、アプリケーション１６１が送信しようとしているデータの量に関する情報を含み得るので、ネットワーク・スタック１６２は、そのようなデータが送信される態様における様々な最適化及び調整を実行することが可能となる。最初の事項として、ネットワーク・スタック１６２は、ネットワーク・スタック１６２がデータの送信を最適化するのに時間及び処理リソースを使用する（invest）ことが最適であるかどうかを判定するために、データの量情報２３３を、１以上の閾値と比較することができる。例えば、送信されるデータの量が少なく、したがって、ネットワーク・スタック１６２により実行される任意の最適化により得られる効率が、この最初の状況におけるそのような最適化を特定及び実行するために必要とされる時間及びリソースを補って余りあるものでなければ、ネットワーク・スタック１６２が、そのような少量のデータの送信に対して最適化を全く実行しない場合、全体的な効率は増大し得る。
【００２０】
送信メタデータ・インタフェース１６３はまた、通信タイプ情報２３２の提供を提供することができる。例えば、送信メタデータ１６４は、アプリケーション１６１により現在送信されようとしているデータが、限定されたサイズ（delineated  size）のデータの周期的送信を構成する通信の一部であるというインジケーションを含み得る。代替的に、アプリケーション１６１は、通信タイプ情報２３２を介して、アプリケーション１６１が送信しようとしているデータが、単一のメッセージである、あるいは、単一のリクエスト／レスポンス交換の一部であると示してもよい。さらに別の代替例において、通信タイプ情報２３２は、送信されようとしているデータが、データのストリームの一部であることを示してもよい。これは、限りのないストリーム（unbounded  stream）、リクエスト／レスポンス・ストリーム、又は他の同様の特異なもの（specificity）が提供され得るときに示され得る。一実施形態において、通信タイプ情報２３２は、ネットワーク・スタック１６２が、データの送信を最適化するのに時間及びリソースを使用すべきかどうかを判定することを可能にするために、データの量情報２３３とともに使用され得る。例えば、アプリケーション１６１により現在送信されようとしている、データの量情報２３３により示されるデータが、閾データ量よりも少ない場合であるとしても、通信タイプ情報２３２により、現在送信されようとしているデータが、データの周期的送信のうちの１つであると示される場合、ネットワーク・スタック１６２は、データの送信を最適化しようとすべきであると決定することができる。そのような例において、そのような最適化を実行するための時間及びリソースの１回限りの使用（one-time  investment）は、現在送信されようとしているデータの送信により補填されない（recouped）かもしれないが、最終的には、通信タイプ情報２３２により示される周期的性質に起因して、同じタイプの後続のデータのより効率的な送信により補填され得る。
【００２１】
通信タイプ情報２３２及びデータの量情報２３３はまた、データが送信される通信プロトコルの設定を最適化するために、ネットワーク・スタック１６２により使用され得る。ネットワーク・スタック１６２とネットワーク・ハードウェア・インタフェース２２０との間のインタフェース２４０により示されるように、ネットワーク・スタック１６２は、数あるオプション及び設定の中でもとりわけ、アプリケーション１６１により送信されようとしているデータの送信に適用される、誤り制御２４１、フロー制御２４２、受信機制御２４３、及びセグメンテーション２４４を調整することができる。したがって、例えば、データの量情報２３３により、アプリケーションが送信しようとしているデータが少ないと示され、通信タイプ情報２３２により、そのデータが、固定サイズを超えるデータの周期的転送の一部であると示された場合、ネットワーク・スタック１６２は、ショート・メッセージの送信に適した、そのようなデータの転送のためのプロトコル設定を調整することができる。一例として、誤り制御２４１及びフロー制御２４２は、短い最小再送信タイムアウト（short  minimum  retransmission  timeout）、及び、アクノレッジメントが送信される前に受信される必要がある少量のパケットとともに、ショート・メッセージの送信に合わせられた輻輳プロバイダ（congestion  provider）を指定し得る。
【００２２】
送信メタデータ・インタフェース１６３を介して提供され得る情報のうちの他の情報は、ネットワーク・スタック１６２が、送信メタデータにより説明されるデータが送信されるプロトコルとともに、そのようなデータが送信されるネットワークを介した経路を最適化するのを支援し得る情報であり得る。例えば、宛先情報２３１は、例えば、宛先コンピューティング・デバイスのネットワーク・アドレス、及び、任意的にデータが向けられる、そのような宛先コンピューティング・デバイス上のターゲット・アプリケーションを含む、アプリケーション１６１が送信しようとしているそのようなデータの宛先に関する情報を含み得る。同様に、コスト情報２３６とともに適時性情報２３４は、ネットワーク・スタック１６２が、転送されるデータのための最適ルーティングを特定することを可能にし得る。例えば、当業者により認識されるように、データを送信するためのネットワーク帯域幅の使用は、コストがかかるものであり、その結果として、コストの概念、すなわち、アプリケーションがデータを送信するためにどれだけ「支払いを行う」準備があるかが、帯域幅等の制限されたネットワーク・リソースを割り当て与えるために利用され得る。その結果として、アプリケーション１６１が、挑戦的な適時性情報２３２を指定し、そのため、アプリケーション１６１が送信しようとしているデータが、所定の時間期間内に宛先コンピューティング・デバイスにより受信されなければ、そのようなデータが価値のないものになり、単に破棄されるべきである場合、ネットワーク・スタック１６２は、その適時性情報２３４を満たし得るルーティングを特定することができるが、そのようなルーティングは、コスト情報２３６により指定され得る、アプリケーション１６１が負担する準備がある量よりも多いコストを負担することがある。そのような例において、ネットワーク・スタック１６２は、この最初の状況において単純にデータを送信することはできない。というのは、適時性情報２３４により指定された制限が、コスト情報２３６により指定された容認可能なコストと適合し得ないと認識され得るからである。反対に、適時性情報２３４が、緩和した期限を指定するが、コスト情報２３６が、最小コストを指定する場合、ネットワーク・スタック１６２は、他のルーティングよりも大きいレイテンシを有し得るルーティングを特定することができるが、そのような特定されたルーティングは、コスト情報２３６を満たし得る。
【００２３】
ネットワーク・スタック１６２の、ネットワークを介したデータの最適送信を支援するために、アプリケーション１６１はまた、送信メタデータ・インタフェース１６３の一部として、データの位置情報２３５を指定することができる。一実施形態において、そのような情報を使用して、送信されるデータの不必要なコピーを回避することにより、時間及びリソースを節約することができる。例えば、当業者により理解されるように、通常、ネットワークを介したデータの送信は、データが送信される前ですら、送信元コンピューティング・デバイス内でそのようなデータの複数回のコピーを生成することを伴い得る。例えば、アプリケーション１６１は、送信されるべきデータを、アプリケーション１６１に割り当てられるメモリ２１０の一部分に保持し得る。次いで、そのようなデータを送信しようと試みるときに、ネットワーク・スタック１６２は、アプリケーション１６１がそのようなデータを記憶したメモリ２１０の一部分から、メモリ２１０の異なる部分に、そのようなデータをコピーし得る。メモリ２１０内のデータのさらなるコピーが、ネットワーク・ハードウェア・インタフェース２２０によりなされ得る。したがって、一実施形態において、ネットワークを介したデータの送信を最適化するために、特にメモリ２１０内でのデータのそのような複数回のコピーが回避され得る。より詳細には、ネットワーク・スタック１６２は、アプリケーション１６１により提供されるデータの位置情報２３５を使用して、アプリケーション１６１と同じメモリ２１０の一部分におけるデータの１つの同じコピーにアクセスすることができる。これにより、送信に先立つメモリ２１０内でのデータのさらなるコピーを回避することができる。
【００２４】
前に示したように、送信メタデータ・インタフェース１６３を介してアプリケーション１６１により提供される送信メタデータは、ネットワーク・スタック１６２が、ネットワークを介したデータのルーティングを最適化することを可能にし得る情報を含み得る。そのようなルーティングを実行する際、ネットワーク・スタック１６２は、送信メタデータ・インタフェース１６３を介して受信した情報だけでなく、ネットワークの現在の構成及びネットワークの現在の輻輳等のネットワークに関する情報も参照することができる。図１のシステム１００に戻ると、図１に示される例示的なネットワーク１０１は、コンピューティング・デバイス１１２にデータ１７２を送信する構成を含み得、コンピューティング・デバイス１１１上で実行中である、コンピューティング・デバイス１１１からデータを送信しようとしているネットワーク・スタック１６２は、セグメント１４１に沿って、次いでセグメント１４２に沿って、データをルーティングすることができる。したがって、データ１７２をルーティングするとき、ネットワーク・スタック１６２は、セグメント１４１及び１４２に沿ってデータ１７２をルーティングし得るルーティング１８２を使用することができる。
【００２５】
ルーティング１８２等のルーティングの要因に応じて、ネットワーク・スタック１６２は、決定されたルーティング１８２に沿ってデータ１７２を送信するために使用されるプロトコル設定１９２を調整することができる。例えば、ネットワーク・スタック１６２が、ネットワーク１０１のセグメント１４２が現在輻輳しているという情報を受信した場合、ネットワーク・スタック１６２は、例えば、長い最小再送信タイムアウトを組み入れて、実際には宛先に到達する通信の失敗の結果ではなく、ネットワーク・スタック１６２に通知された、セグメント１４２に沿った輻輳によりもたらされた既知の遅延に単に起因するタイムアウトに起因する再送信を回避するために、プロトコル設定１９２を調整することができる。別の例として、ネットワーク・スタック１６２は、アクノレッジメントが送信される前の延長された時間期間遅延を組み入れるために、プロトコル設定１９２を調整することができ、それによって、遅延したアクノレッジメントが複数のパケットの累積アクノレッジメントであり得る可能性を増大させることにより、送信されるアクノレッジメントの全体量を低減させることができ、また、それによって、すでに輻輳しているセグメントに沿ったネットワーク・トラフィックの量を低減させることができる。さらに別の例として、ネットワーク・スタック１６２は、ネットワーク１０１の構成に基づいて、コンピューティング・デバイス１１１からコンピューティング・デバイス１１３にデータ１７３を送信するために、セグメント１４１及び１４３に沿うようにデータ１７３を向けるルーティング１８３を使用できると判定することができる。さらに、ネットワーク・スタック１６２は、セグメント１４１及び１４３はいずれも現在輻輳していないと学習することができる。その結果、一例として、ネットワーク・スタック１６２は、少なくとも何らかのパケット・ロスを無視してデータ１７３が送信される速度を落とすことを回避できる輻輳プロバイダを提供するように、プロトコル設定１９３を調整することができる。というのは、当業者により知られるように、従来の輻輳プロバイダは、パケット・ロスが輻輳に起因するものであると想定し、データが送信される速度を低減させることにより通常は応じるからである。送信メタデータ１６４、ネットワーク構成、及び任意的にネットワーク状態に応じた、ネットワーク・スタック１６２による、プロトコル設定１９２及び１９３等のプロトコル設定の調整における、ルーティング１８２及び１８３等のルーティングの設定が、図１のシステム１００において、矢印１６８及び１６９によりそれぞれ図示されている。
【００２６】
一実施形態において、ネットワーク・スタック１６２は、ルーティング、及び、特に輻輳情報を、受動的に取得することができる。例えば、詳細に上述した最適化等の最適化から利点を得るであろうとネットワーク・スタック１６２が判定できる、送信されるべきデータを受信すると、ネットワーク・スタック１６２は、ネットワーク・スタック１６２が実行中であるコンピューティング・デバイス１１１と、（ネットワークの観点で）近くにあるコンピューティング・デバイスと、の間のネットワーク構成及びネットワーク状態を認識するために、近くにあるコンピューティング・デバイスに、探索パケット（explorer  packet）を送信することができる。そのような探索パケットに対するレスポンスを受信すると、ネットワーク・スタック１６２は、ネットワーク構成及びネットワーク状態に関する情報を取得することができ、任意的に、さらなる探索パケットを近くにあるコンピューティング・デバイスに送信するために、近くにあるコンピューティング・デバイスの少なくとも一部にリクエストすることができる。このように、ネットワーク１０１の受動的探索（reactive  exploration）が、ネットワーク・スタック１６２により行われ得る。
【００２７】
別の実施形態において、ネットワーク・スタック１６２は、ゴシップ・プロトコルを使用して、ネットワーク１０１の構成及び状態に関する情報を主体的に保持することができる。例えば、コンピューティング・デバイス１１１は、ネットワーク１０１を介した、例えばコンピューティング・デバイス１１２及び１１３を含む他のコンピューティング・デバイスとの複数の以前の通信交換を有し得る。そのような通信交換から、ネットワーク・スタック１６２は、コンピューティング・デバイス１１１に向けられたデータを取得するだけでなく、ネットワーク１０１の状態の態様を特定することもできる。例えば、ネットワーク・スタック１６２が実行中であるコンピューティング・デバイス１１１とコンピューティング・デバイス１１２との間の以前の通信が、予想されていた後に受信されたパケットに起因して、繰り返しの再送信を必要とした場合、ネットワーク・スタック１６２は、そのような通信がルーティングされたセグメント１４１及び１４２のうちの少なくとも一方が輻輳していると判定することができる。そのような例を続けると、コンピューティング・デバイス１１１とコンピューティング・デバイス１１３との間の以前の通信が、そのような繰り返しの再送信を必要としなかった場合、ネットワーク・スタック１６２は、そのような通信がルーティングされたセグメント１４１及び１４３が輻輳していないとさらに判定することができる。そのような情報から、ネットワーク・スタック１６２は、セグメント１４１及び１４２の少なくとも一方に輻輳が存在し、セグメント１４１及び１４３には輻輳が存在しないので、セグメント１４２は輻輳しているに違いないとさらに判定することができる。
【００２８】
さらに別の実施形態において、ネットワーク１０１の一部であり得、ネットワーク１０１の態様をモニタリングすることができ、ネットワーク１０１から例えば輻輳情報１５１等の情報を受信することができる中央コントローラ１５０から、ネットワーク・スタック１６２は、ネットワーク構成情報１５５及びネットワーク輻輳情報１５６等のネットワーク情報を受信することができる。中央コントローラ１５０及び関連する情報が、図１において、オプションのコンポーネントであることを示すために、破線で示されている。
【００２９】
図３に移ると、図３に示されるフロー図３００は、ネットワークを介したデータの送信を最適化するために送信メタデータが使用され得る例示的な一連のステップを示している。最初に、ステップ３１０において、アプリケーションがネットワークを介して別のコンピューティング・デバイスにデータを送信することを望んでいるというインジケーションが、例えば、そのようなアプリケーションから受信され得る。次いで、ステップ３２０において、送信メタデータが、例えば、送信メタデータ・インタフェースを介して、受信され得る。送信メタデータは、例えば、そのようなデータの宛先を示す情報、最小レイテンシを指定する情報、満了日又は他の同様の適時性情報、アプリケーションが送信しようとしているデータが単一ブロックのデータであるかストリームの一部であるか、又はデータが単一のイベントであるか周期的交換の一部であるか等の、通信のタイプを指定する情報、アプリケーションが送信しようとしているデータの量、アプリケーションが送信しようとしているデータの、例えば、メモリ内の位置、及び、送信メタデータ・インタフェースを介して指定され得る他の要件を満たす態様でデータを送信する際にアプリケーションが負担する準備があるコスト等の、そのようなデータの優先度を指定する情報を含み得る。
【００３０】
ステップ３３０において、一実施形態において、閾値として、ステップ３２０において受信された送信メタデータに基づいて、そのようなデータの送信を最適化しようと試みる際に負担するコストが、より優れたデータ転送効率の形で補填されるかどうかに関する判定がなされ得る。例えば、前に示したように、少量のデータに関して、最適ルーティング及び最適プロトコル設定を決定する際に負担するコストは、そのような最適化されたネットワーク送信において実現される結果として生じる効率よりも大きいことがある。その結果として、そのような例において、ステップ３３０における判定では、最適化を試みることは不適切であると判定され得る。そのような例において、処理は、ステップ３７０により示される、データを送信することに進み得る。次いで、ステップ３８０において、関連処理が終了し得る。
【００３１】
反対に、ステップ３３０において、ステップ３２０において受信された送信メタデータに基づいて、最適化を行うべきであると判定された場合、処理はステップ３４０に進み得る。ステップ３４０において、任意的に、一実施形態において、ネットワーク輻輳情報又は他の同様のネットワーク状態情報が取得され得る。前に示したように、そのような輻輳情報は、例えば、ゴシップ・プロトコルを介して、主体的に取得されてもよいし、例えば、探索パケットを他のコンピューティング・デバイスに送信することにより受動的に、中央ソースから等外部から、及び同様のものといった先行する通信から情報が他の形で収集されてもよい。前と同様、ステップ３４０がオプションであることを示すために、図３において、破線が用いられている。
【００３２】
ステップ３５０において、中間宛先（例えば、データ送信の蓄積転送機構（store-and-forward  mechanism）が使用される場合）又はアプリケーションがデータを送信しようとしている最終宛先へのルーティングが生成され得る。ステップ３５０において決定されたルーティングが、ステップ３２０において受信された送信メタデータとともに、ネットワークの構成により通知され得る。例えば、送信メタデータ３２０が、緩和した時間制約を示す適時性情報を含んでいた場合、ネットワーク構成は、より大きなレイテンシをもたらし得る遠回りの経路を含む複数の経路を提供し得る。しかしながら、送信メタデータ３２０が、アプリケーションがそのようなデータの送信のコストを最小限にしようとしていること、又はアプリケーションがそのようなデータを送信するために低コストを負担する以外準備していないことを示す優先度情報も含んでいた場合、ステップ３５０において、複数の経路が特定され得るだけでなく、データの送信に適用すべきルーティングとして最もコストのかからない経路を選択するために、それら複数の経路がフィルタリングされ得る。さらに、利用可能な場合、ステップ３５０においてルーティングを生成又は通知するために、ネットワーク輻輳情報又は他の同様のネットワーク状態情報が使用され得る。例えば、輻輳情報は、特定の最も輻輳していない経路だけが、データを信頼性高く宛先に配信することができ、送信メタデータ３２０により提供された適時性要件を満たすことができることを示し得る。
【００３３】
一実施形態において、ステップ３５０において、ステップ３２０において送信メタデータにより提供された要件を満たすことができるルーティングが存在しないという判定がなされることもあり得る。そのような例において、ステップ３５０において、データのいずれも送信しないという判定がなされ得、これによって、どちらにせよアプリケーション要件を満たさないデータの送信を回避することにより効率性が実現される。さらなる実施形態において、そのような例において、ステップ３５０の追加の要素は、送信メタデータを提供するアプリケーションへの、ステップ３２０において提供された送信メタデータがネットワークの現在の能力と相いれないものであり、アプリケーションは、送信メタデータの一部又は全てを変更できるか、あるいは後の時間にデータを送信することを試みることができるかのいずれかであるという通知であり得る。
【００３４】
ステップ３６０において、データを送信するために使用されるプロトコル設定が、データの送信を最適化するために調整され得る。そのようなプロトコル設定は、ステップ３２０において受信された送信メタデータに基づいて、且つ、任意的に、利用可能な場合、ステップ３４０において取得された輻輳情報に基づいて、送信を最適化しようとし得る。前に示したように、そのようなプロトコル設定は、誤り制御、フロー制御、受信機制御、及びセグメンテーションを含み得るが、これらに限定されるものではない。例えば、ステップ３５０において決定されたルーティング及びステップ３４０において取得された輻輳情報に基づいて、選択されたルーティングが全く輻輳していないと判定された場合、誤り制御プロトコル設定は、少なくとも何らかのパケット・ロスを無視してより速い速度でデータを送信し続けることができる輻輳プロバイダを選択するように調整され得る。別の例として、ステップ３２０において受信された送信メタデータに基づいて、送信されるべきデータが少量であると判定された場合、プロトコル設定は、例えば、短い最小再送信タイムアウト、及び、アクノレッジメントが送信される前に受信される必要がある少量のパケットを指定するように調整され得、これにより、少量のデータのための送信を最適化することができる。ステップ３６０において、プロトコル設定が最適化されると、ステップ３７０において、データが送信され得る。次いで、ステップ３８０において、関連処理が終了し得る。
【００３５】
図４に移ると、上記で詳細に説明したオペレーションを行うコンピューティング・デバイスを表す例示的なコンピューティング・デバイスが示されている。例示的なコンピューティング・デバイス４００は、１以上の中央処理装置（ＣＰＵ）４２０、システム・メモリ４３０、及び、システム・メモリ４３０を含む様々なシステム・コンポーネントを処理装置４２０に接続するシステム・バス４２１を含み得るが、これらに限定されるものではない。システム・バス４２１は、様々なバス・アーキテクチャのうちのいずれかを用いる、メモリ・バス又はメモリ・コントローラ、周辺バス、及びローカル・バスを含む複数のタイプのバス構造のいずれかとすることができる。特定の物理的実装に応じて、ＣＰＵ４２０、システム・メモリ４３０、及びコンピューティング・デバイス４００の他のコンポーネントのうちの１以上は、例えば、単一のチップ上等、同一位置に物理的に配置されてよい。そのような場合、システム・バス４２１の一部又は全ては、単一のチップ構造内の通信経路に過ぎず、図４におけるその例示は、例示の目的のための表記上の都合に過ぎない。
【００３６】
コンピューティング・デバイス４００はまた、通常、コンピュータ読み取り可能媒体を含む。このコンピュータ読み取り可能媒体は、コンピューティング・デバイス４００によりアクセスされ得る任意の利用可能な媒体を含み得る。限定ではなく、例として、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータ等の記憶のために任意の方法又は技術により実装された媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくは他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、若しくは他の磁気記憶デバイス、又は、所望の情報を記憶するために使用でき、コンピューティング・デバイス４００によりアクセスされ得る任意の他の媒体を含むが、これらに限定されるものではない。しかしながら、コンピュータ記憶媒体は、通信媒体を含まない。通信媒体は、通常、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータを、搬送波又は他の伝送機構等の変調されたデータ信号内に具現化するものであり、任意の情報配信媒体を含む。限定ではなく、例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、ＲＦ、赤外線、及び他の無線媒体等の無線媒体と、を含む。上述したもののうちの任意の組合せもまた、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【００３７】
システム・メモリ４３０は、読み取り専用メモリ（ＲＯＭ）４３１及びランダム・アクセス・メモリ（ＲＡＭ）４３２等の、揮発性メモリ及び／又は不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中等にコンピューティング・デバイス４００内の要素間で情報を転送するのを助けるための基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）４３３は、通常、ＲＯＭ４３１に記憶されている。ＲＡＭ４３２は、通常、処理装置４２０が即座にアクセス可能である、且つ／あるいは処理装置４２０により現在操作されているデータ及び／又はプログラム・モジュールを含む。限定ではなく、例として、図４は、オペレーティング・システム４３４、他のプログラム・モジュール４３５、及びプログラム・データ４３６を示している。
【００３８】
通信媒体を使用する場合、コンピューティング・デバイス４００は、１以上のリモート・コンピュータへの論理接続を介してネットワーク環境において動作することができる。図４に示される論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）、インターネット等のワイド・エリア・ネットワーク（ＷＡＮ）、又は他のネットワークであり得るネットワーク４９０への一般的なネットワーク接続４７１である。コンピューティング・デバイス４００は、ネットワーク・インタフェース又はアダプタ４７０を介して、一般的なネットワーク接続４７１に接続され、ネットワーク・インタフェース又はアダプタ４７０は、システム・バス４２１に接続される。ネットワーク環境において、コンピューティング・デバイス４００に関して示したプログラム・モジュール、又はその一部若しくはその周辺は、一般的なネットワーク接続４７１を介してコンピューティング・デバイス４００に通信可能に接続される１以上の他のコンピューティング・デバイスのメモリに記憶されてもよい。図示したネットワーク接続は例示的なものであり、コンピューティング・デバイス間で通信リンクを確立する他の手段が使用されてもよいことが理解されよう。
【００３９】
コンピューティング・デバイス４００はまた、他の取り外し可能／取り外し不可能な揮発性／不揮発性のコンピュータ記憶媒体を含んでもよい。例に過ぎないが、図４は、取り外し不可能な不揮発性媒体に対して読み書きするハード・ディスク・ドライブ４４１を示している。例示的なコンピューティング・デバイスとともに使用することができる他の取り外し可能／取り外し不可能な揮発性／不揮発性のコンピュータ記憶媒体は、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ、及び同様のものを含むが、これらに限定されるものではない。ハード・ディスク・ドライブ４４１は、通常、インタフェース４４０等の取り外し不可能なメモリ・インタフェースを介してシステム・バス４２１に接続される。
【００４０】
上述し図４に示すドライブ及び関連するコンピュータ記憶媒体は、コンピューティング・デバイス４００のための、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、及び他のデータのストレージを提供する。図４において、例えば、ハード・ディスク・ドライブ４４１は、オペレーティング・システム４４４、他のプログラム・モジュール４４５、及びプログラム・データ４４６を記憶するものとして示されている。これらのコンポーネントは、オペレーティング・システム４３４、他のプログラム・モジュール４３５、及びプログラム・データ４３６と同一であってもよいし、異なってもよいことに留意されたい。オペレーティング・システム４４４、他のプログラム・モジュール４４５、及びプログラム・データ４４６は、少なくともこれらが異なるコピーであることを示すために、ここでは異なる番号が付けられている。
【００４１】
上記の説明から分かるように、ネットワーク送信を最適化するための送信メタデータを取得して使用するための機構が提示された。本明細書で説明した主題の多くの可能な変形を考慮して、我々は、添付の請求項及びその均等の構成の範囲内に属し得る全てのそのような実施形態を、我々の発明として特許請求する。
【図１】
2016515361.tif 000003
【図２】
2016515361.tif 000004
【図３】
2016515361.tif 000005
【図４】
2016515361.tif 000006
【国際調査報告】
2016515361.tif 000007
2016515361.tif 000008