(57)【特許請求の範囲】
【請求項１】
トランスポート層インターフェイスプロバイダと少なくとも２つのアプリケーションとの間のデータの共有フロー制御方法であって、
前記少なくとも２つのアプリケーションから第１の統合下りデータレートのデータストリームを受信するステップであって、該データストリームはそれぞれ個別下りデータレートを持つ複数のストリームからなるステップ、
前記データストリームの前記第１の統合下りデータレートを測定するステップ、
前記個別下りデータレートを測定するステップ、
前記トランスポート層インターフェイスプロバイダに前記データストリームを送信するステップ、
該第１の統合下りデータレートを所定の下り統合しきい値と比較するステップ、
該第１の個別下りデータレートを所定の下り個別しきい値と比較するステップ、及び
該比較の結果に基づいて、前記第１の統合下りデータレートから第２の統合下りデータレートへ全ての又は一部の前記データストリームをスロットルするステップ
からなる方法。
【請求項２】
前記測定するステップは、前記データストリームからの受信データの量を統合下りカウンタでカウントするステップをさらに含む、請求項１記載の方法。
【請求項３】
前記カウントするステップは、前記受信データの量だけ前記統合下りカウンタをインクリメントするステップと、
所定の時間間隔で前記統合下りカウンタを所定量だけデクリメントするステップとをさらに含む、請求項２記載の方法。
【請求項４】
前記スロットルするステップは、前記統合下りカウンタを所定の下り統合しきい値と比較するステップと、
前記複数のデータストリームをスロットルすることを前記トランスポート層インタフェースプロバイダに通知するステップとをさらに含む、請求項２記載の方法。
【請求項５】
前記測定するステップは、前記複数のデータストリームから個別下りデータストリームを識別するステップと、
前記個別下りデータストリームと関連する個別下りカウンタにより、個別の受信データの量を前記個別下りデータストリームからカウントするステップと、前記カウントするステップは、前記個別の受信データの量だけ前記個別下りカウンタをインクリメントするステップと、
所定の時間間隔で前記個別下りカウンタを所定量だけデクリメントするステップとをさらに含む、請求項１記載の方法。
【請求項６】
前記スロットルするステップは、ＵＮＩＸ列関数を実行して前記データストリームをスロットルするステップをさらに含む、請求項１記載の方法。
【請求項７】
トランスポート層インターフェイスプロバイダと少なくとも２つのアプリケーションとの間のデータの共有フロー制御方法であって、
前記トランスポート層インターフェイスプロバイダから第１の統合上りデータレートのデータストリームを受信するステップであって、該データストリームはそれぞれ個別上りデータレートを持つ複数のストリームからなるステップ、
前記データストリームの前記第１の統合上りデータレートを測定するステップ、
前記個別上りデータレートを測定するステップ、
前記少なくとも２つのアプリケーションに前記データストリームを送信するステップ、
該第１の統合上りデータレートを所定の上り統合しきい値と比較するステップ、
該第１の個別上りデータレートを所定の上り個別しきい値と比較するステップ、及び
該比較の結果に基づいて、前記第１の統合上りデータレートから第２の統合上りデータレートへ全ての又は一部の前記データストリームをスロットルするステップ
からなる方法。
【請求項８】
前記測定するステップは、前記データストリームからの受信データの量を統合上りカウンタでカウントするステップをさらに含む、請求項７記載の方法。
【請求項９】
前記測定するステップは、前記複数のデータストリームから個別上りデータストリームを識別するステップと、
前記個別上流データストリームと関連する個別上りカウンタにより、個別受信データの量を前記個別上りデータストリームからカウントするステップと、前記カウントするステップは、前記個別の受信データの量だけ前記個別上りカウンタをインクリメントするステップと、
所定の時間間隔で前記個別上りカウンタを所定量だけデクリメントするステップとをさらに含む、請求項７記載の方法。
【請求項１０】
前記スロットルするステップは、ＵＮＩＸ列関数を実行して前記データストリームをスロットルするステップをさらに含む、請求項９記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データの通信に関し、特に、データの上流（即ち、上り）および下流（即ち、下り）フロー制御に関する。
【０００２】
【従来の技術】
層状通信プロトコルは、しばしば一連の連続機能層として実施される。連続プロセスの例として、７層オープンシステム相互接続（ＯＳＩ）プロトコルモデルがよく知られている。ＯＳＩモデルの各ソフトウェア層は、プロトコルスタック全体の一部を実装するプロトコルプロバイダを有する。典型的には、ソフトウェアプロトコルプロバイダは、その層を通って供給されるデータをできるだけ速やかに処理する。
【０００３】
従来のフロー制御方式は、通信リンクの各端部においてフロー制御機構を実施する必要がある。たとえば、Ｘ．２５およびＴＣＰプロトコルプロバイダは、ピア・ツー・ピアによるフロー制御を用いてデータ送受信を管理する。しかしながら、根底をなす伝送媒体が広い帯域幅であることにより、既存のプロトコル層によって規制されているとしても、非常に大量のデータを送受信することができる。この高速のデータレートは、装置が他のより重要なタスクを実行できなくなる時点まで装置の資源を消耗または枯渇させるおそれがある。
【０００４】
【発明が解決しようとする課題】
データフロー制御を一層強力化する方法および装置が、送信および受信装置、またはプロセスにより独立してアクセス可能な（共有される）単一フロー制御層において必要とされている。
【０００５】
【課題を解決するための手段】
フロー制御モジュールは、フロー制御モジュールの上方および下方から複数の供給源の間を行き来するように、データストリームの中に配置される。フロー制御モジュールは、上流および下流のデータストリームの統合データレートを統合カウンタを介して計算するとともに、上流のデータストリーム方向および下流のデータストリーム方向の両方におけるそれぞれのデータストリームに関連した個別データレートカウンタを介して、個別データレート（１秒あたりのバイト）を計算する。統合カウンタは、上流および下流データの所定のしきい値と比較され、適宜スロットルされる。加えて、個別データレートカウンタは、それぞれ、所定の個別データレートしきい値と比較され、適宜スロットルされる。統合データレートカウンタおよび個別データレートカウンタを用いたデータのフロー制御は、しきい値を越えた場合、上流および下流におけるデータに作用する。さらに、上記カウンタは、所定数のバイトだけ所定の周期でデクリメントされる。
【０００６】
本発明の上記の目的および利点については、さらに詳細に後述し、その他については、図面を参照してなされる本発明の詳細な説明から明らかとなろう。
【０００７】
【発明の実施の形態】
図１において、本発明の一実施形態に係る、複数のアプリケーション１０４〜１１０およびトランスポート層プロバイダ１１２に接続されるフロー制御モジュール１０２のブロック図を示す。フロー制御モジュール１０２は、それぞれ「アプリケーション−１」ないし「アプリケーション−Ｎ」１０４〜１１０を付された複数のアプリケーションにソフトウェアを介して接続される。アプリケーション１０４〜１１０は、アプリケーションソフトウェアレベルであり、オペレーティングシステムソフトウェアレベルとインタフェースを形成する。また、フロー制御モジュール１０２は、オペレーティングシステムソフトウェアレベルにあるトランスポート層プロバイダ１１２にさらに接続される。トランスポート層プロバイダ１１２は、ネットワークに関連する物理媒体１１４に接続されたハードウェアにソフトウェアおよび装置ドライバを介して接続される。
【０００８】
統合データストリームは、アプリケーション１０４〜１１０からの複数の個別データストリームで構成される。フロー制御モジュール１０２は、ある時間ごと（すなわち、毎秒）にフロー制御モジュール１０２において受信されたデータの量（すなわち、データのバイト）だけ統合カウンタを加算またはインクリメントする。統合カウンタは、統合カウンタ値を所定の統合しきい値（８０，０００バイト）と比較することによってデータに直面する度にチェックされる。統合カウンタは、タイマが切れるごとに所定量だけデクリメントされる。タイマは、１秒などの所定値に設定される。統合カウンタ値がチェックされたときに統合しきい値を越えると、アプリケーション１０４〜１１０からのすべてのデータストリームがスロットルされる。
【０００９】
同様に、組み合わされた統合データストリームを構成するそれぞれのデータストリームの個別データレートは、個別データストリームに関連する個別カウンタを用いて決定される。個別カウンタがデータバイトの所定のしきい値を越えると、個別カウンタに関連するデータストリームがスロットルされる。個別カウンタは、統合カウンタと同様にデクリメントされる。１秒など所定の期間を有するタイマが切れると、個別の各カウンタ値は、所定量（８，０００バイト）だけデクリメントされる。個別の各カウンタのデクリメントの量は、個別の各カウンタごとに一意であってもよく、あるいは、すべての個別カウンタを同一値（８，０００バイト）だけデクリメントしてもよい。さらに、本実施形態における個別および統合カウンタは、ゼロを下回ることは決してない。本発明の一実施形態において、ＵＮＩＸ列ライブラリを使用するＵＮＩＸオペレーティングシステムを選択的に使用することで、所定の個別および統合しきい値に応答してデータフローを有効および無効にすることができる。
【００１０】
また、アプリケーション１０４〜１１０はさらにアクティブであり、また同時に、データを受信中または送信中であってもよい。上述したように、フロー制御モジュール１０２は、アプリケーション１０４〜１１０から受信および送信されたバイトをカウントする上流および下流統合カウンタを備える。上流または下流統合カウンタが、ある期間だけ（すなわち、秒）、関連の統合データレートしきい値を越える場合、フロー制御モジュールは、アプリケーション１０４〜１１０からのデータストリームすべてをスロットルする。同様に、個別データストリームが個別データレートしきい値を越える場合、個別データストリームはスロットルされる。
【００１１】
統合カウンタによって、もはや統合データレートしきい値を越えない場合、個別データレートしきい値を越えないとすれば、統合データストリームのスロットルは中止される。同様に、個別データストリームの個別データレートがこれ以上個別データレートしきい値を越えなくなると、個別データストリームはスロットル解除される。
【００１２】
次に図２において、本発明に係る、図１のアプリケーション１０４〜１１０からネットワークへのデータストリームの下流における共有フロー制御方法のフロー図を示す。図２のステップ２０２では、複数のデータストリームが図１のフロー制御モジュール１０２においてアプリケーション１０４〜１１０から受信される。フロー制御モジュール１０２における下流統合カウンタは、図２のステップ２０４において受信されたデータの量（バイト数）だけインクリメントされる。同様に、ステップ２０６において、個別下流データストリームに関連する個別下流カウンタがインクリメントされる。ステップ２０８では、ステップ２０２において受信されたデータが、図１のフロー制御モジュール１０２から送信される。
【００１３】
下流統合しきい値は、図２のステップ２１０において統合下流カウンタと比較される。ステップ２１０において下流統合しきい値を越えた場合、ステップ２１２において、下流方向のデータストリームがすべてスロットルされ、２１８において処理が一時停止される。
【００１４】
ステップ２１０において、下流統合しきい値を越えていない場合、個別下流カウンタはステップ２１４において、関連する個別下流しきい値と比較される。ステップ２１４において個別データレートしきい値をいずれも越えない場合、ステップ２０２が繰り返される。ステップ２１４において１つ以上の個別データレートしきい値の１つ以上を越える場合、ステップ２１６において、個別しきい値を越えたデータストリームがスロットルされ、ステップ２０２が繰り返される。
【００１５】
図３において、本発明の一実施形態に係る、無効にされている下流方向のデータストリームを有効にする方法のフロー図が示される。ステップ３０２において、下流統合カウンタは所定量（８０，０００バイト）だけデクリメントされる。個別下流カウンタは、ステップ３０４において所定量（８，０００バイト）だけデクリメントされる。ステップ３０６において、統合下流カウンタは下流統合しきい値と比較される。統合下流カウンタがステップ３０６において下流統合しきい値より小さい場合、その関連する個別しきい値より小さい個別下流データストリームのそれぞれがステップ３０８においてスロットル解除され、ステップ３１０においてデクリメントタイマが切れるのを待つ。そうでなければ、統合下流カウンタはステップ３０６において、下流統合しきい値以上であり、ステップ３１０においてデクリメントタイマが切れるのを待つ。デクリメントタイマは、初期化時に１秒など所定値に設定される。
【００１６】
図４において、本発明の一実施形態に係る、図１のトランスポート層プロバイダ１１２からアプリケーション１０４〜１１０へのデータストリームの上流における共有フロー制御方法のフロー図を示す。
【００１７】
図４のステップ４０２において、複数のデータストリームが図１のフロー制御モジュール１０２においてトランスポート層プロバイダ１１２から受信される。フロー制御モジュール１０２における上流統合カウンタは、図４のステップ４０４において受信されたデータの量（バイト数）だけインクリメントされる。同様に、ステップ４０６において、個別上流データストリームのそれぞれに関連する個別上流カウンタがインクリメントされる。ステップ４０８では、ステップ４０２において受信されたデータは、図１のフロー制御モジュール１０２から送信される。
【００１８】
上流統合しきい値（８０，０００バイト）は、図４のステップ４１０において統合上流カウンタと比較される。ステップ４１０において上流統合しきい値を越えた場合、ステップ４１２において、上流のデータストリームがすべてスロットルされ、ステップ４１８において処理が一時停止される。
【００１９】
ステップ４１０において、上流統合しきい値を越えていない場合、個別上流カウンタは、ステップ４１４において、関連する個別上流しきい値と比較される。ステップ４１４において個別データレートしきい値をいずれも越えない場合、ステップ４０２が繰り返される。ステップ４１４において１つ以上の個別データレートしきい値の１つ以上を越える場合、ステップ４１６において、該しきい値を越えたデータストリームがスロットルされ、ステップ４０２が繰り返される。
【００２０】
図５において、本発明の一実施形態に係る、無効にされている上流方向のデータストリームを有効にする方法のフロー図が示される。ステップ５０２において、上流統合カウンタは所定量（８０，０００バイト）だけデクリメントされる。同様に、個別上流カウンタは、ステップ５０４において所定量（８，０００バイト）だけデクリメントされる。ステップ５０６において、統合上流カウンタは、上流統合しきい値と比較される。統合上流カウンタがステップ５０６において上流統合しきい値より小さい場合、その関連する個別しきい値より小さい個別上流データストリームのそれぞれがステップ５０８においてスロットル解除され、ステップ５１０においてデクリメントタイマが切れるのを待つ。そうでなければ、統合上流カウンタはステップ５０６において上流統合しきい値以上であり、ステップ５１０においてデクリメントタイマが切れるのを待つ。デクリメントタイマは、初期化時に１秒など所定値に設定される。
【００２１】
図２ないし図５に示される各ステップは、コンピュータ読み取り可能なプログラムコード（すなわち、「Ｃ」または「Ｃ＋＋」を有するＵＮＩＸ）によりまたは集積回路において、選択的に実施可能である。コンピュータ読み取り可能なプログラムコードは、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、フロッピーディスク、磁気テープまたはプログラマブルチップ（すなわち、ＰＲＯＭ、ＥＥＰＲＯＭまたはＥＰＲＯＭ）などの製造物に含まれている。
【００２２】
図６において、アプリケーションプロセスおよびネットワーク通信のシステムブロック図が示される。通信は、ネットワークを行き来する。アプリケーション６０４およびネットワーク６０６の間の複数のデータストリーム６０２は、送受信機６１０と、カウンタ６１２と、比較器６１４とを有するフロー制御モジュール６０８を通って（上流および下流の両方において）搬送される。また、データストリーム６０２は、インプリメンタ６１８と別の送受信機６２０とを有するトランスポート層プロバイダ４１６も通って搬送される。
【００２３】
アプリケーションプロセス６０４とネットワーク６０６の間のデータストリーム４０２は、フロー制御モジュール６０８において計算されたデータレートを有する。フロー制御モジュール６０８は、送受信機６１０においてデータストリームを受信し、上流統合カウンタおよび下流統合カウンタを有するカウンタ６１２は、統合データストリームのデータレートを決定する。上流および下流統合カウンタは、比較器６１４により統合データレートしきい値と比較される。代替の実施形態において、多数のデータストリームは、それぞれ、個別上流カウンタおよび個別下流カウンタにより計算された関連するデータレートしきい値を有する。個別カウンタは、比較器６１４により、個別データレートしきい値と比較される。
【００２４】
しきい値（統合または個別）のいずれか一方を越える場合、データストリームのデータレートがスロットルされる。フロー制御モジュール６０８は、信号（電気またはソフトウェア）を介してインプリメンタ６１８に、データストリームをスロットルするよう信号を発信する。その後、トランスポート層プロバイダ６１６におけるインプリメンタ６１８は、他方の送受信機６２０によりネットワーク６０６に送信中のデータストリームのデータレートをスロットルする。したがって、共有フロー制御モジュール６０８を用いて、時間単位ごとにデータフローを管理することによって、装置資源が保護される。
【００２５】
特定の実施形態を参照して本発明を特に図示および説明してきたが、本発明の精神および範囲から逸脱することなく形態および詳細における各種変更が可能であることが、当業者には理解されよう。また、かかる変更はすべて特許請求の範囲に包含されるものとする。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る、複数のアプリケーションおよびプロトコルプロバイダに接続されたフロー制御モジュールのブロック図を示す。
【図２】本発明の一実施形態に係る、各アプリケーションからネットワークへの下流におけるデータストリームの共有フロー制御方法のフロー図である。
【図３】本発明の一実施形態に係る、無効にされている下流方向のデータストリームを有効にする方法のフロー図である。
【図４】本発明の一実施形態に係る、トランスポート層プロバイダからアプリケーションへの上流におけるデータストリームの共有フロー制御方法のフロー図である。
【図５】本発明の一実施形態に係る、無効にされている上流方向のデータストリームを有効にする方法のフロー図である。
【図６】本発明の一実施形態に係る、アプリケーションプロセスおよびネットワーク通信のシステムブロック図である。
【図１】
0003759430.tif 000002
【図２】
0003759430.tif 000003
【図３】
0003759430.tif 000004
【図４】
0003759430.tif 000005
【図５】
0003759430.tif 000006
【図６】
0003759430.tif 000007