(57)【要約】分散型及び協調型の帯域幅制御を実現するためのソフトウェアに基づくメカニズムである仮想リンク帯域幅制御方式が記述される。その方式は、データ転送に対するレート制御メカニズムの一部分としてキューイング遅延を利用するデータ転送プロトコルとシームレスに一体化することができ、複数のプロセスが転送スピードを自己制限できるようにし、そのため、集約レートは、物理ボトルネック容量より小さな、予め設定された値において安定する。
2010538581.tif 000002
【特許請求の範囲】
【請求項１】
特定のプロトコルに従ってネットワーク内の一つ以上の共通セグメントに渡ってデータを転送し、独立に実行されるソフトウェアプロセスのグループの各プロセスに組み込まれる仮想リンクコントローラであって、前記仮想リンクコントローラは、前記ネットワークセグメント上を前記プロセスのグループによって転送される前記データの集約トラフィックレートを決定するように、かつ、前記プロセスがそれらのデータを転送する仮想リンクを実装するように構成され、前記仮想リンクは、前記集約トラフィックレートが特定の帯域幅限界値ｃｌより大きいか小さいかに従って、それぞれ充填されるか又は空にされる仮想キューを含む、仮想リンクコントローラ、及び
各プロセスに組み込まれ、前記仮想キューがデータで充填される程度を反映する一つ以上の仮想キューパラメータに基づいて前記プロセスのデータ転送レートｘ（ｔ）を調節するように構成されたレート制御メカニズム、
を含むシステム。
【請求項２】
前記仮想リンクコントローラは、前記仮想リンクを通過するトラフィックを、各プロセスによって転送されるデータの量を他の各プロセスに合図する、各プロセスによって送られる断続的なブロードキャストから決定するように構成されていることを特徴とする、請求項１のシステム。
【請求項３】
前記一つ以上の仮想キューパラメータは、Ｑ（ｔ）を前記仮想キューに存在するデータの量として、
【数５】
2010538581.tif 000007
によって計算される仮想キューイング遅延ｑ（ｔ）を含むことを特徴とする、請求項１又は２のシステム。
【請求項４】
前記一つ以上の仮想キューパラメータは、前記仮想キューに存在するデータの量Ｑ（ｔ）と最大仮想キューサイズＱｍａｘとの差を反映する指標を含むことを特徴とする、請求項１乃至３のいずれかのシステム。
【請求項５】
各プロセスに組み込まれた前記レート制御メカニズムは、前記仮想キューイング遅延、及び前記プロセスがデータを転送する前記ネットワーク経路のサンプリングを通じて前記プロセスによって測定されるキューイング遅延の組み合わせに基づいて、前記プロセスの前記データ転送レートを調整することを特徴とする、請求項１乃至４のいずれかのシステム。
【請求項６】
前記レート制御メカニズムは、周期Ｔの終わりに、
【数６】
2010538581.tif 000008
のように各プロセスの前記データ転送レートｘ（ｔ）を周期的に調整し、ｑ（ｔ）は前記仮想キューイング遅延であり、ｘ（ｔ）ｑ（ｔ）は前記プロセスによって前記仮想キューに流入するデータの量であり、Ｋはある定数であり、αはｘ（ｔ）ｑ（ｔ）に対する設定値であることを特徴とする、請求項１乃至５のいずれかのシステム。
【請求項７】
前記レート制御メカニズムは、周期Ｔの終わりで、
【数７】
2010538581.tif 000009
のように各プロセスの前記データ転送レートｘ（ｔ）を周期的に調整し、ｑ（ｔ）は前記仮想キューイング遅延であり、ｘ（ｔ）ｑ（ｔ）は前記プロセスによって前記仮想キューに流入するデータの量であり、Ｋはある定数であり、αはｘ（ｔ）ｑ（ｔ）に対する設定値であり、Ｑｍａｘは前記最大仮想キューサイズであり、ｆ（Ｑ（ｔ），Ｑｍａｘ）は、前記仮想キュー中のデータ量Ｑ（ｔ）に対して非増加の設定値調整関数であることを特徴とする、請求項１乃至６のいずれかのシステム。
【請求項８】
前記設定値調整関数ｆ（Ｑ（ｔ），Ｑｍａｘ）は、相対占有率Ｑ（ｔ）／Ｑｍａｘの非増加関数であって、ｋをある整数として、
【数８】
2010538581.tif 000010
の形を取ることを特徴とする、請求項７のシステム。
【請求項９】
前記キュー流入設定値α及び前記設定値調整関数ｆ（Ｑ（ｔ），Ｑｍａｘ）は、もし他にデータを転送しているプロセスがなければ、前記グループの単一のプロセスが前記仮想リンクの全帯域幅を使用するように、かつ、前記グループの複数のプロセスが存在してデータを最大限に転送しているときには、前記複数のプロセスの各々が仮想リンク容量の等分の分け前を獲得するように、指定されていることを特徴とする、請求項７のシステム。
【請求項１０】
特定のプロトコルに従ってネットワーク内の一つ以上の共通セグメントに渡ってデータを転送する独立のソフトウェアプロセスのグループを実行すること、
前記グループの各プロセスに組み込まれた仮想リンクコントローラを作動させることであって、前記仮想リンクコントローラは、前記ネットワークセグメント上を前記プロセスのグループによって転送される前記データの集約トラフィックレートを決定し、かつ、前記プロセスがそれらのデータを転送する仮想リンクを実装し、前記仮想リンクは、前記集約トラフィックレートが特定の帯域幅限界値ｃｌより大きいか小さいかに従って、それぞれ充填されるか又は空にされる仮想キューを含み、及び
各プロセスに組み込まれ、前記仮想キューがデータで充填される程度を反映する一つ以上の仮想キューパラメータに基づいて、前記プロセスの前記データ転送レートｘ（ｔ）を調節するレート制御メカニズムを作動させること、
を含む方法。
【請求項１１】
前記ネットワークセグメントは、前記プロセスのグループのトラフィックとともに、前記グループのメンバーではない他のプロセスからのトラフィックによっても共有される、ネットワーク内部の一つ以上の通信リンクを含むことを特徴とする、請求項１０の方法。
【請求項１２】
前記仮想リンクコントローラは、単一のコンピュータノード上で実行中のプロセスに組み込まれていることを特徴とする、請求項１０又は１１の方法。
【請求項１３】
前記仮想リンクコントローラは、共通ローカルエリアネットワーク上に位置するか又は共有バックプレーンを介して一体化されている、一つ以上の別個のコンピュータノード上で実行中のプロセスに組み込まれていることを特徴とする、請求項１０又は１１の方法。
【請求項１４】
前記仮想リンクコントローラは、前記仮想リンクを通過するトラフィックを、各プロセスによって転送されるデータの量を他の各プロセスに合図する、各プロセスによって送られる断続的なブロードキャストから決定することを特徴とする、請求項１０乃至１３のいずれかの方法。
【請求項１５】
前記一つ以上の仮想キューパラメータは、Ｑ（ｔ）を前記仮想キューに存在するデータの量として、
【数９】
2010538581.tif 000011
によって計算される仮想キューイング遅延ｑ（ｔ）を含むことを特徴とする、請求項１０乃至１４のいずれかのシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
多くの状況で、ネットワーク上でデータを転送するプロセスの特定のグループによって利用される帯域幅の量を制限したいことがあり得る。例えば、ネットワークの内部の一つ以上のセグメントを通過するあるユーザプロセスの帯域幅の利用を制限することは、同一のネットワークセグメント集合を共有する他のユーザプロセス用にネットワークリソースを残しておくために、しばしば興味が持たれることである。特定のサーバ集合及びクライアントの間のプロセスのグループの集約帯域幅に制限を設けて、サーバの手前の残余帯域幅リソースが、同一のサーバ集合に接続されている他のユーザプロセスによって用いられ得るようにしたいこともあり得る。以下では、前述の集約帯域幅制御の機能を実現するために仮想リンク制御システムを提示する。
【図面の簡単な説明】
【０００２】
【図１】仮想リンクが挿入された共通ネットワーク経路を利用する複数のプロセスを示す図である。
【図２】仮想リンクコントローラ及びレート制御メカニズムの例示の実装を示している。
【図３】仮想帯域幅制御方式を利用するための例示のサーバ構成を示している。
【発明を実施するための形態】
【０００３】
本明細書で記述されるのは、同一又は異なるコンピュータ中に存在する独立に実行されるプロセスのグループが、それらプロセスがネットワーク上でのデータの転送に用いる帯域幅の集約量を、制限し得る方法及びシステムであって、これらのプロセスは、ネットワーク内部の一つ以上の共通セグメント、又は特定のネットワーク経路に沿う全てのセグメントのいずれかを通過するデータ転送の集合から構成され得る。そのような帯域幅制限は、例えば、共有ネットワークセグメントを同じく通過する他のプロセスによる使用のために、これらのセグメントに沿った残余容量を確保するために用いられ得る。集約帯域幅制御を提供するために、各プロセスに統合される仮想リンクコントローラによって、仮想リンクが実装される。仮想リンクコントローラはネットワーク上又はコンピュータ内のいずれかで、互いに通信する。仮想リンクは、あるスループット容量を有する物理リンクをエミュレートするソフトウェア構成体である。スループット容量は、よって、プロセスのグループによって利用される所望の最大帯域幅を表すある値ｃｌとして特定され得る。図１は、ネットワーク１００（破線の箱）上でデータを転送し、共通ネットワークセグメント１００−１、１００−２、及び１００−３を通過するＰ１からＰＮのＮ個のプロセスの例示的な構成を示している。仮想リンク１０１は、ネットワーク１００の内部に挿入されて示されており、制限された容量を有する物理リンクをエミュレートする。共有セグメント１００−１、１００−２、及び１００−３は、例えば、プロセスＰ１からＰＮと同時に、他のプロセスによっても共有され得て、これら他のプロセスによる使用のためにこれらのセグメント上にいくらかの残余帯域幅を残しておくことが望まれ得る。
【０００４】
仮想リンクを実装するために、各プロセスの仮想リンクコントローラはお互いに通信して、仮想リンクを介してプロセスのグループへ流れるか又はプロセスのグループから流れるデータトラフィックの総量を決定する。仮想リンクコントローラは、各プロセスが他の各プロセスに、そのプロセスによって転送されるデータの量を合図する断続的なブロードキャストから、仮想リンクを通過するトラフィックを決定し得る。そのようなブロードキャストは、例えば、ある期間に渡って転送されたデータの量を含み得るか、又はある特定の量のデータが転送されたことを意味し得る。通過するトラフィックの量を素早く正確に決定するために、仮想リンクコントローラは、特定の仮想リンクコントローラによって送信されたブロードキャストメッセージが送信後すぐに全てのコントローラによって聴き取られるように、互いに近い位置に配置され得る。単純化された場合には、例えば、仮想リンクコントローラは、仮想リンクコントローラのホスティングプロセスと同じく、単一のコンピュータ上に配置され得て、連携して仮想リンクを実現する。別の構成では、これらのプロセスは、例えば、共通のローカルエリアネットワーク上のコンピュータノードのグループとしての、又は共通のネットワークバックプレーンを介して一つに統合されたサーバノード集合としての、接続されたネットワーク上の別々のノード上に配置され得る。
【０００５】
仮想リンクコントローラは、収集されたトラフィック情報を用いて、制限された帯域幅を有する物理リンク中のバッファによって保持されるキューイングをシミュレートする仮想キューをアップデートする。しかしながら、仮想キューは単に、物理リンクでキューに入れられるだろうデータの量を表す数に過ぎないので、実際にはキューに入れられるデータは無い。仮想リンク上のトラフィックがリンク容量ｃｌを超えるたびに、物理リンクのバッファ内の実際のキューが充填されるであろう仕方と同様にして、仮想キューは、差に等しいレートで、データで充填される。逆に、トラフィックがリンク容量未満のときには、仮想キューにもはやデータが残っていなくなるまで、リンク容量と全トラフィックフローレートの差に等しいレートで、仮想キューは空にされてゆく。システムが安定しているときには、仮想キュー内部のデータ量は、最大仮想キューサイズＱｍａｘより小さい、ある固定レベルにとどまることになり、それは全データトラフィックレートが仮想リンク容量ｃｌに等しいことを意味する。仮想キュー内のデータの量は、よって、仮想リンク上のトラフィックフローが所望の帯域幅限界量ｃｌを過剰活用又は過少活用する程度の指標であり、各プロセスのデータ転送レートを調節するために各プロセスに組み込まれたレート制御メカニズムによって、フィードバック信号として使用され得る。レート制御メカニズムは、仮想キュー中のデータの絶対量Ｑ（ｔ）、対応する仮想キューイング遅延ｑ（ｔ）（ここでｑ（ｔ）＝Ｑ（ｔ）／ｃｌ）、及び／又は、仮想キューイングの量がどのくらい最大仮想キューサイズＱｍａｘに近いのかを表す仮想キューの相対占有率Ｑ（ｔ）／Ｑｍａｘなどの仮想キューパラメータの一つ以上に基づいて、プロセスがデータを転送するレートを制御し得る。
【０００６】
プロセス中の連続的ステップの実行によって実装されるような、仮想リンクコントローラ及びレート制御メカニズムの例が図２に示されている。ステップＳ１で、プロセスはデータを所定のレートｘ（ｔ）で転送する。ステップＳ２で、プロセスはグループの他のプロセスに、そのプロセスによって転送されたデータの量の指標をブロードキャストする。ステップＳ３で、他のプロセスからの同様のブロードキャストが受信されて集計され、そのためステップＳ４では仮想リンク上の全トラフィックレートｙ（ｔ）が計算され得る。全トラフィックレートに基づいて、仮想キュー中のデータの量はステップＳ５でアップデートされる。ステップＳ６で、所定のデータ転送レートｘ（ｔ）は、仮想キューイング遅延自体、仮想キュー中のデータ量、及び／又は仮想キュー中のデータ量の最大仮想キューサイズに対する比のような仮想キューの相対的占有率を反映するパラメータなどの、仮想キューイングの量を反映するパラメータに従って調節される。プロセスは次に、ステップＳ１に戻り、レートｘ（ｔ）でデータを転送し続ける。
【０００７】
上述のような仮想リンク帯域幅制御方式は、何らかの形式のキューイング遅延情報に基づいて全データ転送レートの調整をすることができる任意のデータ転送プロトコルを利用するプロセスに実装され得る。仮想リンク制御方式の実装に特に適切であるプロトコルの例は、２００５年１２月２３日に出願され、参照によって本明細書に組み込まれる米国特許出願シリアル番号１１／３１７，６６３号に記述されているようなＦＡＳＰプロトコルである。ＦＡＳＰプロトコルは、データパケットに対して測定されたラウンドトリップタイムから実際のキューイング遅延を導出する。この導出された遅延は、ＦＡＳＰがデータパケットを送るネットワーク経路上の全ての物理リンクにおいて生じるキューイング遅延の総量を表し、ＦＡＳＰ内でレート制御メカニズムによってデータ転送レートを調節するための入力パラメータとして使用される。プロトコルはキューイング遅延の減少と共にデータ転送レートを増加させるが、逆もまた然りである。データ転送レートをパケットタイムアウトよりむしろキューイング遅延に基づいて調節することによって、ＦＡＳＰプロトコルは、例えば、データのロスが頻繁に起こり得るネットワークをより効率的に利用することができる。仮想リンク帯域幅制御方式を実装するために、ＦＡＳＰプロトコルのレート制御メカニズムは、仮想リンクコントローラによって与えられる仮想キューイング遅延又は実際に測定されたキューイング遅延及び仮想キューイング遅延の組み合わせを用いるように修正され得る。
【０００８】
仮想リンク制御及びＦＡＳＰは、連携して、優れた設定可能性を有する、エンドツーエンドの、アプリケーション層における帯域幅制御ソリューションを形成し得る。仮想リンク制御によって強制される帯域幅上限は双方向的であり、コンフィグレーションファイルを介して、又は他のソフトウェアモジュールからのコマンドを介してのいずれかによりオンザフライで調整され得る。各ＦＡＳＰセッションは、自身の仮想リンクコントローラを保持し、レートを独立に計算する。制御の集中化した点を除くことによって、仮想リンク設計は、単一故障点を避け、アプリケーションプロトコルに分散制御を埋め込む。このことによって、仮想リンク帯域幅制御方式は、集中化した戦略点、例えば、内部ネットワークルータに実装されることの多い他の形態のアクティブキューマネージメント（ＡＱＭ）方式と区別される。図３は、共通ネットワーク経路３０２上でクライアント３０３のグループと通信するプロセスを実行するサーバ３０１のグループの例を示している。各サーバプロセスは、自身のＦＡＳＰセッションと仮想リンクコントローラを保持している。各仮想リンクコントローラは内部仮想キューを絶えず管理し、それにより動的レートアップデートを実施するために必要な遅延情報が、対応するＦＡＳＰセッションに対して与えられる。独立なレートアップデートアクティビティにもかかわらず、共通仮想リンクを共有するＦＡＳＰセッションは、着信／発信トラフィック情報の交換によって、予め定められた帯域幅上限を、連携して強制することができる。
【０００９】
ＦＡＳＰに加えて、何らかの形式のキューイング遅延情報に基づいてそのプロセスのレートを調節する任意のレート制御メカニズムが、集約帯域幅の上限設定を実現するために仮想リンク制御方式と組み合わされ得る。既に知っているキューイング遅延情報に専ら頼る代わりに、レート制御メカニズムは、ホスティングプロセスの転送レートを調整するために、そのキューイング遅延と仮想キューリング遅延の組み合わせをも用い得る。一実施形態では、個々のプロセスのレート制御メカニズムは、仮想キューイング遅延と、そのプロセスによって収集されたラウンドトリップ遅延測定値から導かれたキューイング遅延との組み合わせに基づいて、そのデータ転送レートを調整する。例えば、データ転送レートｘ（ｔ）は周期Ｔの終わりで、
【数１】
2010538581.tif 000003
のようにアップデートされ得て、ここで、ｑ（ｔ）は仮想リンクコントローラによって通知される仮想キューイング遅延の量、ｑｆ（ｔ）はレート制御メカニズムによって測定されるキューイング遅延の量、Ｋはある定数、そしてαはｘ（ｔ）（ｑ（ｔ）＋ｑｆ（ｔ））に対する設定値である。この場合、ｘ（ｔ）ｑ（ｔ）は仮想キューに存在するキューイングの量を捕捉し、ｘ（ｔ）ｑｆ（ｔ）はプロセスが通過するネットワーク経路に沿った物理リンクによって保持されるキューの中のキューイングの量を表す。それらの和ｘ（ｔ）（ｑ（ｔ）＋ｑｆ（ｔ））は、プロセスによってアクセスされる全てのキュー（物理及び仮想の双方）に蓄積されるデータの総量である。このデータの量を設定値αと比較することによって、レート制御メカニズムは、次の周期での転送レートｘ（ｔ＋Ｔ）を上下に調整する。特に、もしｘ（ｔ）が、仮想リンクであろうと物理リンクの一つであろうと特定のリンクの容量を超えると、そのリンクにおけるキューイング遅延は増大し、キューイング遅延の総量（ｑ（ｔ）＋ｑｆ（ｔ））を引き上げるだろう。一旦、（ｑ（ｔ）＋ｑｆ（ｔ））が、それとｘ（ｔ）との積が設定値αを上回るほどに大きくなると、レート制御メカニズムは、そのリンクをそれ以上輻輳させるのを避けるための処置として、プロセスに転送レートの減少をさせるであろう。
【００１０】
仮想リンクの容量ｃｌは、他のユーザに対して共有ネットワークセグメント上の帯域幅を残しておくために、それらのセグメントのリンク容量より小さな値となるように選ばれ得る。このシナリオでは、集約転送レートは、仮想リンク容量によって制限されるだろうし、従ってそれらの共有ネットワークセグメント内部の物理リンクには、キューイングが蓄積されることはなかろう。よって、レート制御メカニズムは、このコンテキストでは仮想キューイング遅延にのみ応答してもよい。一実施形態では、個別のプロセスのレート制御メカニズムは、そのデータ転送レートを、仮想キューに流入するデータの量を一定レベルに保とうとするような方法で、調整する。例えば、データ転送レートｘ（ｔ）は、周期Ｔで、
【数２】
2010538581.tif 000004
のようにアップデートされ得て、ここで、ｑ（ｔ）は仮想キューイング遅延、よってｘ（ｔ）ｑ（ｔ）はプロセスによって仮想キューに流入するデータの量、Ｋはある定数、そしてαはｘ（ｔ）ｑ（ｔ）に対する設定値である。この実施形態では、仮想キューイング遅延が減少又は増加するにつれて、各プロセスがデータを転送するレートは、ぞれぞれ、増加又は減少する。設定値α及び仮想キューの最大サイズＱｍａｘは、グループ内のプロセスの全てがそれぞれの最大レートでデータを転送しているとき、各プロセスが仮想キューに等しい量のデータを流入させつつ仮想キューは０とＱｍａｘの間で占有されるように選択される。あるプロセスのデータ転送レートが減少すると、仮想キューイング遅延が減少し、個々のキュー流入量を一定に保つために、他のプロセスがそれらのデータ転送レートを増加させることができるようになる。
【００１１】
別の実施形態では、仮想キューが空にされていくにつれて設定値が増加し、その逆も成り立つように、キュー流入設定値αは、仮想キューに存在するデータ量に従って動的に調整される。以下でより詳細に説明するように、キュー流入設定値のそのような動的チューニングはまた、仮想リンクに対して、改善された平衡状態及び安定特性をもたらし得る。キュー流入設定値αは、仮想キューイングの現在の量Ｑ（ｔ）及び最大仮想キューサイズＱｍａｘに基づいて、設定値調整関数ｆ（Ｑ（ｔ），Ｑｍａｘ）を介して調整され得る。一実施形態では、設定値調整関数は、単純に、相対占有率Ｑ（ｔ）／Ｑｍａｘ自体という関数である。特に、設定値調整関数は、Ｑ（ｔ）／Ｑｍａｘの非増加関数として定義され得て、Ｑ（ｔ）／Ｑｍａｘが０から１を超えるまで増加するにつれて、１から０まで変動する。そのような関数の例は、ｆ（Ｑ（ｔ），Ｑｍａｘ）＝［（１−Ｑ（ｔ）／Ｑｍａｘ）＋］ｋであり、ここでｋはある正の数であり、“＋”はあらゆる負の数を０に写像する。そして、レート制御メカニズムは、各プロセスのデータ転送レートｘ（ｔ）を周期Ｔで、
【数３】
2010538581.tif 000005
のように調整する。
【００１２】
キュー流入設定値α及び設定値調整関数ｆ（Ｑ（ｔ），Ｑｍａｘ）を適切に指定することによって、もし他にデータを転送しているプロセスがなければ、単一のプロセスが仮想リンクの帯域幅のほぼ全てを利用するだろうし、データを転送する他のプロセスの数が増加すると、その単一のプロセスは帯域幅の利用を積極的に減少させるだろう。特に、システムが安定している平衡時期において、個々のプロセスがキューに流入させるデータの量ｘ（ｔ）ｑ（ｔ）は厳密に目標キュー設定値ｆ（Ｑ（ｔ），Ｑｍａｘ）αに一致し、そのためレート制御メカニズムは常に、古いレートｘ（ｔ）に等しい新しいレートｘ（ｔ＋Ｔ）を算出する。このことは、平衡状態での、プロセスの転送レートｘ＊、プロセスが経験する仮想キューイング遅延ｑ＊、及びキュー目標設定値ｆ（Ｑ＊，Ｑｍａｘ）αの間の関係を支配する以下の式、
【数４】
2010538581.tif 000006
に反映させることができる。グループ内の各プロセスは、平衡状態では同じ仮想キューイング遅延の量ｑ＊を経験するだろうから、同一のαをグループ内の全てのプロセスに割り当てることによって、各個別のプロセスは同じ目標キュー設定値を持つだろうし、結果として安定したシステムで同じ転送レートを達成するだろう。グループ内のプロセス数Ｎが増加すると、各プロセスは全仮想リンク容量ｃｌの等分の（又は公平な）分け前、つまりｃｌ／Ｎを獲得する。
【００１３】
別の観点からは、Ｑ（ｔ）の非増加関数としての設定値調整関数ｆ（Ｑ（ｔ），Ｑｍａｘ）を適切に選択することによって、プロセスの全数が増加するにつれて、安定した仮想キューでの仮想キューイングの量Ｑ＊は増加し、そのため、減少する目標キュー設定値ｆ（Ｑ＊，Ｑｍａｘ）αが、各プロセスに、その転送レートｘ＊の減少ペースと一致する仕方で与えられる。その増加傾向にも関わらず、全仮想キューイング（遅延）の量は相変わらず、グループにどれだけのプロセスが存在するかに関わらず、最大仮想キューサイズＱｍａｘに関係する有限値より小さくなるように制限され得る。例えば、ｆ（Ｑ（ｔ），Ｑｍａｘ）＝［（１−Ｑ（ｔ）／Ｑｍａｘ）＋］ｋのとき、平衡状態での仮想キュー内のデータ量Ｑ＊は、個別のプロセスの減少する転送レート、つまりｃｌ／Ｎに合致するように、Ｎと共にＱｍａｘに向かって増加する。しかしながら、Ｎがどんなに大きくなり得たとしても、転送レートは常に０より大きいので、Ｑ＊は徐々にＱｍａｘに接近するだけであり、Ｑｍａｘを超えはしない。仮想キューイングの総量をＱｍａｘより小さくなるように制限することは、プロセスの数Ｎが時間と共に変化するシステムで、仮想キューイング遅延の、あり得る振動の範囲を減少させる。先に述べたように、プロセスの転送レートは、レート制御メカニズムのおかげで、仮想キューイング遅延の量に従って上下に変化する。よって、仮想キューイング遅延の振動範囲を減少させることもまた、動的な設定での個別のプロセスの転送レートの平滑化を支援する。
【００１４】
本発明を前述の特定の実施形態と共に記述してきた。これらの実施形態はまた、有利であると考えられる任意の方法で組み合わせ得ることは理解されよう。また、多くの代替、変形及び修正が当業者にとっては明らかであろう。他のそのような代替、変形及び修正は、以下に添付の請求項の範囲内に収まるように意図されている。
【図１】
2010538581.tif 000012
【図２】
2010538581.tif 000013
【図３】
2010538581.tif 000014
【手続補正書】
【提出日】平成22年4月27日(2010.4.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一つ以上のホストプロセッサによって独立に実行されるソフトウェアプロセスのグループとして実装されるシステムであって、
前記独立に実行されるソフトウェアプロセスのグループは、特定のプロトコルに従って一つ以上のネットワークセグメントに渡ってデータを転送するように構成され、
前記ネットワークセグメント上を前記プロセスのグループによって転送される前記データの集約トラフィックレートを決定するように、かつ、前記プロセスがそれらのデータを転送する仮想リンクを実装するように構成され、前記仮想リンクは、前記集約トラフィックレートが特定の帯域幅限界値ｃｌより大きいか小さいかに従って、それぞれ充填されるか又は空にされる仮想キューを含むことを特徴とする、仮想リンクコントローラを含み、
前記仮想リンクコントローラは、前記仮想リンクを通過するトラフィックを、各プロセスによって転送されるデータの量を他の各プロセスに合図する、各プロセスによって送られる断続的なブロードキャストから決定するように構成されており、
各プロセスに組み込まれ、前記仮想キューがデータで充填される程度を反映する一つ以上の仮想キューパラメータに基づいて前記プロセスのデータ転送レートｘ（ｔ）を調節するように構成されたレート制御メカニズムを含む、
ことを特徴とするシステム。
【請求項２】
前記一つ以上の仮想キューパラメータは、Ｑ（ｔ）を前記仮想キューに存在するデータの量として、
【数５】
2010538581.tif 000015
によって計算される仮想キューイング遅延ｑ（ｔ）を含むことを特徴とする、請求項１のシステム。
【請求項３】
前記一つ以上の仮想キューパラメータは、前記仮想キューに存在するデータの量Ｑ（ｔ）と最大仮想キューサイズＱｍａｘとの差を反映する指標を含むことを特徴とする、請求項１乃至２のいずれかのシステム。
【請求項４】
各プロセスに組み込まれた前記レート制御メカニズムは、前記仮想キューイング遅延、及び前記プロセスがデータを転送する前記ネットワーク経路のサンプリングを通じて前記プロセスによって測定されるキューイング遅延の組み合わせに基づいて、前記プロセスの前記データ転送レートを調整することを特徴とする、請求項２乃至３のいずれかのシステム。
【請求項５】
前記レート制御メカニズムは、周期Ｔの終わりに、
【数６】
2010538581.tif 000016
のように各プロセスの前記データ転送レートｘ（ｔ）を周期的に調整し、ｑ（ｔ）は前記仮想キューイング遅延であり、ｘ（ｔ）ｑ（ｔ）は前記プロセスによって前記仮想キューに流入するデータの量であり、Ｋはある定数であり、αはｘ（ｔ）ｑ（ｔ）に対する設定値であることを特徴とする、請求項２乃至４のいずれかのシステム。
【請求項６】
前記レート制御メカニズムは、周期Ｔの終わりで、
【数７】
2010538581.tif 000017
のように各プロセスの前記データ転送レートｘ（ｔ）を周期的に調整し、ｑ（ｔ）は前記仮想キューイング遅延であり、ｘ（ｔ）ｑ（ｔ）は前記プロセスによって前記仮想キューに流入するデータの量であり、Ｋはある定数であり、αはｘ（ｔ）ｑ（ｔ）に対する設定値であり、Ｑｍａｘは前記最大仮想キューサイズであり、ｆ（Ｑ（ｔ），Ｑｍａｘ）は、前記仮想キュー中のデータ量Ｑ（ｔ）に対して非増加の設定値調整関数であることを特徴とする、請求項２乃至４のいずれかのシステム。
【請求項７】
前記設定値調整関数ｆ（Ｑ（ｔ），Ｑｍａｘ）は、相対占有率Ｑ（ｔ）／Ｑｍａｘの非増加関数であって、ｋをある整数として、
【数８】
2010538581.tif 000018
の形を取ることを特徴とする、請求項６のシステム。
【請求項８】
前記キュー流入設定値α及び前記設定値調整関数ｆ（Ｑ（ｔ），Ｑｍａｘ）は、もし他にデータを転送しているプロセスがなければ、前記グループの単一のプロセスが前記仮想リンクの全帯域幅を使用するように、かつ、前記グループの複数のプロセスが存在してデータを最大限に転送しているときには、前記複数のプロセスの各々が仮想リンク容量の等分の分け前を獲得するように、指定されていることを特徴とする、請求項６のシステム。
【請求項９】
一つ以上のホストプロセッサによって実装される方法であって、
特定のプロトコルに従ってネットワーク内の一つ以上のネットワークセグメントに渡ってデータを転送する独立のソフトウェアプロセスのグループを実行することと、
前記グループの各プロセスに組み込まれた仮想リンクコントローラを作動させることを含み、前記仮想リンクコントローラは、前記ネットワークセグメント上を前記プロセスのグループによって転送される前記データの集約トラフィックレートを決定し、かつ、前記プロセスがそれらのデータを転送する仮想リンクを実装し、前記仮想リンクは、前記集約トラフィックレートが特定の帯域幅限界値ｃｌより大きいか小さいかに従って、それぞれ充填されるか又は空にされる仮想キューを含み、
前記仮想リンクコントローラは、前記仮想リンクを通過するトラフィックを、各プロセスによって転送されるデータの量を他の各プロセスに合図する、各プロセスによって送られる断続的なブロードキャストから決定し、
各プロセスに組み込まれ、前記仮想キューがデータで充填される程度を反映する一つ以上の仮想キューパラメータに基づいて、前記プロセスの前記データ転送レートｘ（ｔ）を調節するレート制御メカニズムを作動させることを含む、
ことを特徴とする方法。
【請求項１０】
前記ネットワークセグメントは、前記プロセスのグループのトラフィックとともに、前記グループのメンバーではない他のプロセスからのトラフィックによっても共有される、ネットワーク内部の一つ以上の通信リンクを含むことを特徴とする、請求項９の方法。
【請求項１１】
前記仮想リンクコントローラは、単一のコンピュータノード上で実行中のプロセスに組み込まれていることを特徴とする、請求項９又は１０の方法。
【請求項１２】
前記仮想リンクコントローラは、共通ローカルエリアネットワーク上に位置するか又は共有バックプレーンを介して一体化されている、一つ以上の別個のコンピュータノード上で実行中のプロセスに組み込まれていることを特徴とする、請求項９又は１０の方法。
【請求項１３】
前記一つ以上の仮想キューパラメータは、Ｑ（ｔ）を前記仮想キューに存在するデータの量として、
【数９】
2010538581.tif 000019
によって計算される仮想キューイング遅延ｑ（ｔ）を含むことを特徴とする、請求項９乃至１２のいずれかのシステム。
【国際調査報告】
2010538581.tif 000020
2010538581.tif 000021
2010538581.tif 000022
2010538581.tif 000023
2010538581.tif 000024