(57)【特許請求の範囲】
【請求項１】
データ通信リンクを用いてデータ・フローを制御する方法であって、前記リンクは、データ通信プロトコルに従って動作し、前記リンク上のデータ通信の受信者は、現在のレベルのデータ通信についての帯域幅の不足を検知すると、フロー制御メッセージを送信者に送ることによって、前記受信者によって決定された期間、前記リンクと関連したデータ通信を一時停止する、前記方法が、
フロー制御期間の継続期間を前記送信者に対して指定することと、
フロー制御期間中に前記送信者から前記受信者に伝送される破損通信制御パケットの数を前記送信者に対して指定することと、
フロー制御期間中に前記受信者からフロー制御メッセージを受信するかどうかを前記送信者によって判断することと、
フロー制御期間中に前記受信者からフロー制御メッセージを受信するかどうかに応じて、破損通信制御パケットの数を変更することと、
後のフロー制御期間中の正常なデータ通信を用いて、前記変更された破損通信制御パケットの数を前記送信者から前記受信者に伝送することと、
を含み、
前記破損通信制御パケットは、前記受信者が受信時に前記パケットを廃棄するように意図的に破損させた通信制御パケットを含む、
方法。
【請求項２】
前記破損通信制御パケットの数を変更することは、前記フロー制御期間中にフロー制御メッセージを受信した場合に、前記破損通信制御パケットの数を増加させることをさらに含み、
前記変更された破損通信制御パケットの数を伝送することは、前記増加された破損通信制御パケットの数を伝送することをさらに含む、請求項１に記載の方法。
【請求項３】
前記破損通信制御パケットの数を変更することは、前記フロー制御期間中にフロー制御メッセージを受信しなかった場合に、破損通信制御パケットの数を減少させることをさらに含み、
前記変更された破損通信制御パケットの数を伝送することは、前記減少された破損通信制御パケットの数を伝送することをさらに含む、請求項１に記載の方法。
【請求項４】
前記破損通信制御パケットの数を変更することは、所定数のフロー制御期間中にフロー制御メッセージを受信しない場合に、破損通信制御パケットの数を減少させることをさらに含み、
前記変更された破損通信制御パケットの数を伝送することは、前記減少された破損通信制御パケットの数を伝送することをさらに含む、請求項１に記載の方法。
【請求項５】
前記正常なデータ通信は、通信の優先度と関連付けられ、
前記方法は、優先度に応じて複数のデータ通信キューを用いて前記正常なデータ通信をエンキューし、優先度の低いキューを用いて前記破損通信制御パケットをエンキューすることをさらに含み、
前記変更された破損通信制御パケットの数を前記送信者から前記受信者に伝送することは、前記優先度の低いキューから前記変更された破損通信制御パケットの数を伝送することをさらに含む、請求項１に記載の方法。
【請求項６】
データ通信リンクを用いてデータ・フローを制御するための装置であって、前記リンクは、前記リンク上のデータ通信の受信者が、現在のレベルのデータ通信についての帯域幅の不足を検知すると、フロー制御メッセージを送信者に送ることによって、前記受信者によって決定された期間、前記リンクと関連したデータ通信を一時停止するデータ通信プロトコルに従って動作可能である、前記装置が、
フロー制御期間の継続期間を前記送信者に対して指定するための手段と、
フロー制御期間中に前記送信者から前記受信者に伝送される破損通信制御パケットの数を前記送信者に対して指定するための手段と、
フロー制御期間中に前記受信者からフロー制御メッセージを受信するかどうかを前記送信者により判断するための手段と、
フロー制御期間中に前記受信者からフロー制御メッセージを受信するかどうかに応じて、破損通信制御パケットの数を変更するための手段と、
後のフロー制御期間中の正常なデータ通信を用いて、前記変更された破損通信制御パケットの数を前記送信者から前記受信者に伝送するための手段と、
を含み、さらに、
前記受信者が受信時に前記パケットを廃棄するように通信制御パケットを意図的に破損させるための手段を含む、
装置。
【請求項７】
前記破損通信制御パケットの数を変更するための前記手段は、前記フロー制御期間中にフロー制御メッセージを受信した場合に、前記破損通信制御パケットの数を増加させるための手段をさらに含み、
前記変更された破損通信制御パケットの数を伝送するための前記手段は、前記増加された破損通信制御パケットの数を伝送するための手段をさらに含む、請求項６に記載の装置。
【請求項８】
前記破損通信制御パケットの数を変更するための前記手段は、前記フロー制御期間中にフロー制御メッセージを受信しなかった場合に、破損通信制御パケットの数を減少させるための手段をさらに含み、
前記変更された破損通信制御パケットの数を伝送するための前記手段は、前記減少された破損通信制御パケットの数を伝送するための手段をさらに含む、請求項６に記載の装置。
【請求項９】
前記破損通信制御パケットの数を変更するための前記手段は、前記フロー制御期間中にフロー制御メッセージを受信しなかった場合に、前記破損通信制御パケットの数を減少させるための手段をさらに含み、
前記変更された破損通信制御パケットの数を伝送するための前記手段は、前記減少された破損通信制御パケットの数を伝送するための手段をさらに含む、請求項６に記載の装置。
【請求項１０】
前記正常なデータ通信は、通信の優先度と関連付けられ、前記装置は、優先度に応じて複数のデータ通信キューを用いて前記正常なデータ通信をエンキューするための手段と、
優先度の低いキューを用いて前記破損通信制御パケットをエンキューするための手段と、
を含み、
前記変更された破損通信制御パケットの数を前記送信者から前記受信者に伝送するための前記手段は、前記優先度の低いキューから前記変更された破損通信制御パケットの数を伝送するための手段をさらに含む、請求項６に記載の装置。
【請求項１１】
請求項１から請求項５までのいずれか１つに記載の方法の全てのステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は、データ処理であり、より具体的には、データ通信リンクを用いてデータ・フローを制御するための方法、装置及び製品である。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発が、コンピュータ時代の始まりとして引用されることが多い。その時以来、コンピュータ・システムは、極めて複雑な装置へと発展してきた。今日のコンピュータは、ＥＤＶＡＣなどの初期のシステムに比べて、はるかに高性能である。コンピュータ・システムは、典型的には、ハードウェア及びソフトウェア・コンポーネントの組み合わせ、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入力／出力装置等を含む。半導体処理及びコンピュータ・アーキテクチャの進歩により、コンピュータの性能がますます高まるにつれて、ハードウェアのより高い性能を生かすために、より高度なコンピュータ・ソフトウェアが発展し、その結果、現在のコンピュータ・システムは、ほんの数年前よりもはるかに強力なものになっている。
【０００３】
著しい進歩が見られる領域の１つがデータ通信であるが、この領域における改善の必要性が依然として存在する。例えば、ＩＥＥＥ８０２．１ｘプロトコルを含む幾つかのデータ通信プロトコルは、基本的なフロー制御機構を定める。これらは、典型的には、「ｘ−ｏｎ」及び「ｘ−ｏｆｆ」方式に基づいており、受信者が輻輳状態になった場合、受信者は、フレームすなわちフロー制御メッセージを発信元に送り返して、該フロー制御メッセージにおいて定められた期間、全ての通信を遮断することができる。この方式の不利な点は、フロー制御を提供するために、所与のデータ通信リンク上で実行されている全てのセッションが中断されることである。高遅延要件をもつセッションも、低遅延要件をもつセッションも、全て中断される。ビデオ／音声情報をストリーミングしているセッションは、有害な中断の危険にさらされ、ビデオ／オーディオ・ストリームにおいて目に見えるドロップアウトが生じる可能性がある。このｘ−ｏｎ／ｏｆｆ技術は、ネットワークの輻輳を軽減させるものの、特定のデータ通信要件又はいずれかの特定の通信セッションの優先度がどのようであるかに関係なく、リンク上の全ての通信セッションを中断するという非常に高い対価を支払うことになる。このことは、多数の付加的な帯域幅をもつようにネットワークを過剰設計し、フロー制御を呼び出す頻度ができるだけ少なくなることを確実にする必要があることを意味する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データ通信リンクを用いてデータ・フローを制御するための方法、装置及び製品を提供する。
【課題を解決するための手段】
【０００５】
本明細書は、データ通信フロー制御イベントを最小にするが、依然としてフロー制御を提供してネットワーク・オペレーティングをスムーズに保持する方法、装置及び製品を説明する。本明細書は、優先度の高いセッションにフロー制御を提供し、依然として優先度のより低い通信セッションのフローも保持する、随意的な付加的な解決法を説明する。より特定的には、本明細書は、データ通信リンクを用いてデータ・フローを制御するための方法、装置及びコンピュータ・プログラム製品であって、リンクはデータ通信プロトコルに従って動作し、リンク上のデータ通信の受信者は、現在のレベルのデータ通信についての帯域幅の不足を検出すると、フロー制御メッセージを送信者に送ることによって、受信者によって決定された期間、リンク上のデータ通信を一時停止することができ、フロー制御期間の継続時間を送信者に対して指定することと、フロー制御期間中に送信者から受信者に伝送される破損通信制御パケットの数を送信者に対して指定することと、フロー制御期間中に受信者からフロー制御メッセージを受信するかどうかを送信者によって判断することと、フロー制御期間中に受信者からフロー制御メッセージを受信するかどうかに応じて、破損通信制御パケットの数を変更することと、後のフロー制御期間中に正常なデータ通信に混じえて、変更された破損通信制御パケットの数を送信者から受信者に伝送することとを含む、該方法、装置、及びコンピュータ・プログラム製品を説明する。
【０００６】
本発明の上記及び他の特徴並びに利点は、同様の参照番号が、一般に、本発明の例示的な実施形態の同様の部品を表す添付図面に示されるような、本発明の例示的な実施形態の以下のより特定的な説明から明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するためのシステムのネットワーク図を示す。
【図２】本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するための例示的な方法を示すフローチャートを示す。
【図３】本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するためのさらに別の例示的な方法を示すフローチャートを示す。
【図４】本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するためのさらに別の例示的な方法を示すフローチャートを示す。
【発明を実施するための形態】
【０００８】
本発明による、データ通信リンクを用いてデータ・フローを制御するための例示的な方法、装置、及び製品が、図１で始まる添付図面を参照して説明される。図１は、本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するためのシステムのネットワーク図を示す。図１のシステムは、データ通信の送信者、データ通信の幾つかの受信者（１９４）、及びデータ通信を送信者（１５２）から１又は複数の受信者（１９４）に伝送する２つのデータ通信ネットワーク（１００、１０１）を含む。ネットワーク（１００、１０１）は、ローカル・エリア・ネットワーク（１００）及び広域ネットワーク（１０１）として表される。受信者（１９４）は、ローカル・エリア・ネットワーク（１００）を通したデータ通信のために送信者（１５２）に結合されたパーソナル・コンピュータ（１０８）と、同じくローカル・エリア・ネットワーク（１００）を通したデータ通信のために送信者（１５２）に結合されたラップトップ・コンピュータ（１２６）と、ローカル・エリア・ネットワーク（１００）並びに広域ネットワーク（１０１）を通したデータ通信のために送信者（１５２）に結合された携帯情報端末（１１２）と、ローカル・エリア・ネットワーク（１００）並びに広域ネットワーク（１０１）を通したデータ通信のために同じく送信者（１５２）に結合されたサーバ（１０６）と、を含む。
【０００９】
説明を簡単にするために、以下により詳細に説明されるように、この例における送信者（１５２）は、自動化装置として表され、送信者の動作を制御するコンピュータ・プログラム命令を格納するコンピュータ・メモリ（１６８）に動作可能に結合されたコンピュータ・プロセッサ（１５６）を有する。しかしながら、送信者は、実際には、例えば、パーソナル・コンピュータ、ラップトップ・コンピュータ、携帯電話、携帯情報端末、モバイル・インターネット・デバイス、及び当業者が想到できるその他のものを含む、データ通信可能なほぼ全ての自動化装置として実装できることを、読者は認識するであろう。
【００１０】
図１の例における自動化装置の全てが、データ通信の送信及び受信の両方を行ない得ることを、読者は認識するであろう。しかしながら、本明細書で用いられる「送信者（sender）」及び「受信者（receiver）」という用語は、特定のデータ通信メッセージに関する特定の装置の特有のアイデンティティではなく、一般的な役割を示す。本明細書で用いられる「送信者」という用語は、一般的にメッセージ情報を受信者に送る、エンティティ、コンピュータ、別の自動化装置、又は通信アダプタである。本明細書で用いられる「受信者」という用語は、一般的に送信者からメッセージ情報を受信する、エンティティ、コンピュータ、他の何らかの自動化装置、又は通信アダプタである。従って、本明細書における送信者及び受信者を特徴付けるのは、いずれかの特定のデータ通信メッセージの方向ではなく、メッセージ・トラフィック・フローの全体的な方向である。
【００１１】
図１の例において、送信者（１５２）は、「リンク」と呼ばれるデータ通信経路を通して受信者（１９４）とデータ通信するように結合され、送信者と受信者との間のこうしたデータ通信は、リンクを動作させる少なくとも１つのデータ通信プロトコル（１３３）に従って行なわれる。こうしたリンクは、図１の例においては、送信者（１５２）から受信ラップトップ・コンピュータ（１２６）までの、ローカル・エリア・ネットワーク（１００）を通るデータ通信経路（１４０、１４２）、並びに、送信者（１５２）から受信者サーバ（１０６）までの、ローカル・エリア・ネットワーク（１００）及び広域ネットワーク（１０１）を通るデータ通信経路（１４０、１４４、１４６）により表される。
【００１２】
図１の例は、説明を簡単にするために、１つのデータ通信プロトコル（１３３）のみを有するように示されるが、当業者であれば、こうしたデータ通信は、典型的には、１つより多いデータ通信プロトコルを実装し、該プロトコルは、スタック、ハードウェア層、リンク層、ネットワーク層、伝送制御層等において垂直方向の接続を形成するインターフェースを用いてスタック状に編成されることを認識するであろう。こうしたプロトコルにおいては、例えば、受信者がデータを処理するより速く、データが受信者に到着し、通信の受信側における処理帯域幅の不足が明らかになると、受信者が、一定期間通信を停止するよう、送信者にアドバイスできるようにするのが一般的である。送信者の観点から見ると、受信者によって決定された期間、受信者によってもたらされるこうした通信の一時停止は、通信災害、すなわち送信者が全く制御できない大規模な混乱に見えることがある。
【００１３】
本明細書において、「リンク」という用語は、受信者が、受信者によって決定された期間、送信者からの通信を一時停止することができるフロー制御をサポートする、任意のデータ通信プロトコル・スタックの任意の層における任意のデータ通信経路又は結合（coupling）を指す。こうした受信者は、例えば、受信側のアプリケーションが入ってくるメッセージの各々を処理するのを待ちながら、入ってくるメッセージを格納する一定サイズの受信キュー（１３２）を保持し、キューが相対的に一杯であるか（relative fullness）を追跡し、何らかの所定の閾値を超えてキューが一杯であることを帯域幅の不足と解釈することによって、帯域幅の不足を検出することができる。こうしたプロトコルの例は、イーサネット・プロトコル、８０２．１ｘプロトコル等を含み、その各々は、メッセージ・コンテンツの一部として、送信者がメッセージ・トラフィックをその受信者に送ることができない、受信者によって決定された期間を含むことができる、「ＸＯＦＦ」のメッセージ形式のようなメッセージ形式をサポートする。
【００１４】
本発明による、データ通信リンクを用いたデータ・フローの制御は、一般に、コンピュータを用いて、つまり、自動化された計算機を用いて実装される。図１のシステムにおいて、例えば、送信者（１５２）、全ての受信者（１９４）、及び両方のネットワーク（１００、１０１）は、ある程度は少なくともコンピュータとして実装される。従って、さらなる説明のために、図１は、本発明の実施形態による、データ通信リンクを用いたデータ・フローの制御に有用な例示的な送信者（１５２）を含む、自動化された計算機のブロック図を示す。図１の送信者（１５２）は、少なくとも１つのコンピュータ・プロセッサ（１５６）又は「ＣＰＵ」、並びに、高速メモリバス（１６６）及びバス・アダプタ（１５８）を通してプロセッサ（１５６）及び送信者（１５２）の他のコンポーネントに接続されたランダム・アクセス・メモリ（１６８）（「ＲＡＭ」）を含む。
【００１５】
アプリケーション・プログラム（１５１）、すなわち、ユーザ・レベルのデータ処理を実行し、メッセージを１又は複数の受信者に送ることによってデータ通信を利用するコンピュータ・プログラム命令のモジュールが、ＲＡＭ（１６８）内に格納される。オペレーティング・システム（１５４）も、ＲＡＭ（１６８）内に格納される。本発明の実施形態による、データ通信リンクを用いたデータ・フローの制御に有用なオペレーティング・システムは、ＵＮＩＸ（商標）、Ｌｉｎｕｘ（商標）、Ｍｉｃｒｏｓｏｆｔ  ＸＰ（商標）、ＡＩＸ（商標）、ＩＢＭのｉ５／ＯＳ（商標）及び当業者であれば想到できる他のものを含む。通信サブシステム（１２６）、すなわち、アプリケーション・プログラムの代わりにサービスを提供し、本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するコンピュータ・プログラム命令のモジュールも、オペレーティング・システムの一部としてＲＡＭ内に格納される。本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するように改善することができる通信サブシステムの例は、ＴＣＰ／ＩＰエンジン、イーサネット・ドライバ、８０２．１１ｘドライバ等を含む。図１の例におけるアプリケーション・プログラム（１５１）、オペレーティング・システム（１５４）及び通信サブシステム（１２６）は、ＲＡＭ（１６８）内に示されるが、こうしたソフトウェアの多くのコンポーネントは、典型的には、例えば、ディスク・ドライブ（１７０）上、又はフラッシュメモリ（１３４）のファームウェア（１３６）内など、不揮発性メモリ内にも格納される。
【００１６】
図１のコンピュータ（１５２）は、拡張バス（１６０）及びバス・アダプタ（１５８）を通して、プロセッサ（１５６）及び送信者（１５２）の他のコンポーネントに結合されたディスク・ドライブ・アダプタ（１７２）を含む。ディスク・ドライブ・アダプタ（１７２）は、ディスク・ドライブ（１７０）の形態で、不揮発性データ・ストレージをコンピュータ（１５２）に接続する。本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するための、コンピュータにおいて有用なディスク・ドライブ・アダプタは、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（「ＩＤＥ」）アダプタ、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（「ＳＣＳＩ」）アダプタ、及び当業者であれば想到できる他のものを含む。また、不揮発性コンピュータ・メモリは、光ディスク・ドライブ、電気的消去可能プログラム可能読み出し専用メモリ（いわゆる「ＥＥＰＲＯＭ」又は「フラッシュ」メモリ）、ＲＡＭドライブ、及び当業者であれば想到できる他のものとして実装することもできる。
【００１７】
図１の例示的なコンピュータ（１５２）は、１つ又は複数の入力／出力（「Ｉ／Ｏ」）アダプタ（１７８）を含む。Ｉ／Ｏアダプタは、例えば、コンピュータ・ディスプレイ画面等のディスプレイ装置への出力、並びに、キーボード及びマウス等のユーザ入力装置（１８１）からのユーザ入力を制御するための、ソフトウェア・ドライバ及びコンピュータ・ハードウェアを通したユーザ指向の入力／出力を実施する。図１の例示的なコンピュータ（１５２）は、ディスプレイ画面又はコンピュータ・モニタ等のディスプレイ装置（１８０）へのグラフィック出力用に特に設計されたＩ／Ｏアダプタの例である、ビデオ・アダプタ（２０９）を含む。ビデオ・アダプタ（２０９）は、高速ビデオバス（１６４）、バス・アダプタ（１５８）、及び同じく高速バスであるフロントサイド・バス（１６２）を通してプロセッサ（１５６）に接続される。
【００１８】
図１の例示的なコンピュータ（１５２）は、他のコンピュータ（１８２）とのデータ通信及びデータ通信ネットワーク（１００）とのデータ通信のための通信アダプタ（１２２）を含む。こうしたデータ通信は、ＲＳ−２３２接続、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（「ＵＳＢ」）等の外部バス、ＩＰデータ通信ネットワークのようなデータ通信ネットワークを通してシリアル方式で、及び、当業者であれば想到できる他の方法で実行することができる。通信アダプタは、１つのコンピュータが、直接的に又はデータ通信ネットワークを通してデータ通信を別のコンピュータに送る、ハードウェア・レベルのデータ通信を実施する。本発明の実施形態による、データ通信リンクを用いたデータ・フローの制御に有用な通信アダプタの例は、有線ダイヤルアップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット（ＩＥＥＥ８０２．３）アダプタ、及び無線データ通信ネットワーク通信用の８０２．１１アダプタを含む。
【００１９】
この例において、送信者の通信アダプタ（１０２）は、それ自体が、コンピュータ・プロセッサ（１０４）と、メモリバス（１６７）を通してプロセッサに接続されたコンピュータ・メモリ（１０６）とを含む、送信者の自動化されたサブシステムである。通信プログラム（１０８）、すなわち、本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するように改善された、データ通信用のコンピュータ・プログラム命令のモジュールが、通信アダプタのコンピュータ・メモリ内に配置される。例示的な通信アダプタは、そのコンピュータ・メモリ（１０６）において、本発明の実施形態によるデータ通信リンクを用いたデータ・フローの制御をサポートするパラメータ、すなわち、フロー制御期間中に伝送する破損パケットの数を指定するパラメータ（２０８）、フロー制御期間の継続時間を指定するパラメータ（２０６）、及び所定数のフロー制御期間を指定するパラメータ（２１２）を有するように構成される。通信アダプタ（１０２）、アプリケーション・プログラム（１５１）、及び通信サブシステム（１２６）が協働して送信者を動作させ、以下のようにデータ通信リンクを用いてデータ・フローを制御する。
【００２０】
送信者（１５２）は、フロー制御期間についての指定された継続時間（２０６）有し、かつ、各々のフロー制御期間中に送信者から受信者に伝送される破損通信制御パケットの指定された数（２０８）を有する。送信者（１５２）及び受信者（１９４）は全て、データ通信リンクを通してデータ通信を行ない、これらの各々は、データ通信プロトコル（１３３）に従って動作し、そのプロトコルにおいては、リンク上のデータ通信の受信者が、現在のレベルのデータ通信についての帯域幅の不足を検知すると、フロー制御メッセージ（１３５）を送信者に送ることによって、受信者によって決定された期間、リンク上のデータ通信を一時停止することができる。こうした通信において、送信者（１５２）は、各々のフロー制御期間中に、受信者から、通信を一時停止するこうしたフロー制御メッセージ（１３５）を受信したかどうかを判断する。次に、送信者は、フロー制御期間中に受信者からフロー制御メッセージを受信したかどうかどうかに応じて、フロー制御期間中に受信者に伝送される破損通信制御パケットの数を変更する。次に、送信者は、後のフロー制御期間中に正常なデータ通信に混じえて、変更された破損通信制御パケット（２３６）の数を送信者から受信者に伝送する。
【００２１】
破損通信制御パケット（２３６）とは、受信者が、何らかの方法でパケットを処理するのではなく、受信時にパケットを迅速に廃棄するように意図的に破損させた通信制御パケットである。こうしたパケットの目的は、ペイロード・データの送付ではなく、受信側の処理帯域幅に影響を及ぼさずに送信帯域幅を制御することであるので、こうしたパケットは、この文脈において「制御」パケットと呼ばれ、受信側のアプリケーション・プログラムは、こうしたパケットを決して認識しないので、こうした破損パケットは、通信プロトコル・スタック内の低いところに廃棄される。従って、こうした破損パケットは、送信者から成功裏に伝送される程度に正常でなければならず、受信側に到着するとき又は到着する前に廃棄される程度に破損していなければならない。こうした破損は、パケット内に、欠陥のあるチェックサム、短い有効期間、サポートされていないバージョン番号、当業者であれば想到できる他のものを含ませることによって、例えば、欠陥のあるパケットを定期的にドロップさせる、インターネット・プロトコルのような損失のある（lossy）プロトコルにおいて実施することができる。
【００２２】
短い有効期間の使用により、受信者に届く前に、破損パケットをドロップさせることができ、こうした手順は、依然として、受信側の処理帯域幅を低減させずに、送信帯域幅を低減させるという有利な効果をもたらす。正常な通信の中に、破損した通信制御パケットを散在させることによって、送信者は、正常な伝送に使用可能な送信帯域幅を有効に低減させ、その結果、正常な通信の伝送が減速し、受信側の処理機能の後れを取り戻すための時間が与えられ、送信帯域幅と受信側の処理帯域幅のバランスがとれ、フロー制御メッセージが、送信側からのデータ通信に深刻な混乱をもたらすリスクが低減する。この手法は、正常な送信帯域のいくらかの低減を容認して、フロー制御メッセージが深刻な混乱をもたらすリスクを低減させるというものである。
【００２３】
送信者（１５２）は、フロー制御期間中にフロー制御メッセージを受信した場合、破損通信制御パケットの数を増加させ、次いで、後のフロー制御期間中に増加された破損通信制御パケットの数を伝送することによって、破損通信制御パケットの数（２０８）を変更することができる。送信者（１５２）が、フロー制御期間中にフロー制御メッセージを受信しなかった場合、破損通信制御パケットの数を減少させ、後のフロー制御期間中に減少された破損通信制御パケットの数を伝送することによって、破損通信制御パケットの数（２０８）を変更することができる。送信者（１５２）は、所定数のフロー制御期間中にフロー制御メッセージを受信しなかった場合にのみ、破損通信制御パケットの数を減少させ、後のフロー制御期間中に減少された破損通信制御パケットの数を伝送することによって、破損通信制御パケットの数（２０８）を変更することができる。さらに、通信の優先度に従って、正常なデータ通信（３０４）を特徴付けることができ、送信者（１５２）は、優先度に従って正常なデータ通信（３０４）をデータ通信のキュー（１１０）にエンキューし（キューに入れ）、破損パケット（２３６）のみを優先度の低いキューにエンキューし、優先度の低いキューからのみ、変更された破損通信制御パケットの数を伝送する。
【００２４】
図１に示される送信者、受信者、及び例示的なシステムを構成するネットワークの配置は、説明のためのものであり、本発明を制限するためのものではない。本発明の種々の実施形態による、データ通信リンクを用いたデータ・フローの制御に有用なデータ処理システムは、当業者であれば想到できる、図１には示されない、付加的なコンピュータ、送信者、受信者、ネットワーク・ルータ、サーバ、他の装置、クライアント・サーバ及びピア・ツー・ピア・アーキテクチャを含むことができる。こうしたデータ処理システムにおけるネットワークは、例えば、ＴＣＰ（Transmission Control Protocol、伝送制御プロトコル）、ＩＰ（InternetProtocol、インターネット・プロトコル）、ＨＴＴＰ（HyperText TransferProtocol、ハイパーテキスト転送プロトコル）、ＷＡＰ（Wireless Access Protocol、無線アクセス・プロトコル）、ＨＤＴＰ（Handheld Device Transport Protocol、ハンドヘルド機器転送プロトコル）、及び当業者であれば想到できる他のものを含む、多くのデータ通信プロトコルをサポートすることができる。本発明の種々の実施形態は、図１に示されるものに加えて種々のハードウェア・プラットフォーム上で実装することができる。
【００２５】
さらなる説明のために、図２は、本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御する例示的な方法を示すフローチャートを示す。この例におけるリンクは、データ通信プロトコルに従って動作し、リンク上のデータ通信の受信者（図１の１９４）が、データ通信の現在のレベルに対する帯域幅の不足を検知すると、フロー制御メッセージを送信者に送ることによって、受信者によって決定された期間、リンク上のデータ通信を一時停止することができる。当業者である読者であれば、「データ通信リンク」という用語は、典型的には、ＩＳＯデータ通信プロトコル・スタックのリンク層におけるデータ通信の結合を指すために用いられることを認識するであろう。
【００２６】
しかしながら、「データ通信リンク」という用語は、本明細書においては幾分広範な意味で用いられ、受信者が、受信者によって決定された期間、送信者からの通信を一時停止することができるフロー制御をサポートする、任意のデータ通信プロトコル・スタックの任意の層における任意のデータ通信経路又は結合を指す。こうした受信者は、例えば、受信アプリケーションが各々の入ってくるメッセージを処理するのを待ちながら、入ってくるメッセージを格納する一定サイズの受信キューを保持し、キューが相対的に一杯であるかを追跡し、何らかの所定の閾値を超えてキューが一杯であることを帯域幅の不足と解釈することによって、帯域幅の不足を検出することができる。こうしたプロトコルの例は、イーサネット・プロトコル、８０２．１ｘプロトコル等を含み、その各々は、メッセージ・コンテンツの一部として、送信者がメッセージ・トラフィックをその受信者に送ることができない、受信者によって決定された期間を含むことができる、「ＸＯＦＦ」メッセージ形式のようなメッセージ形式をサポートする。送信者の観点から見ると、受信者によって決定された期間、受信者によってもたらされるこうした通信の一時停止は、通信災害、すなわち、送信者が全く制御できない大規模な混乱に見えることがある。
【００２７】
上述のように、「送信者」及び「受信者」という用語は、特定のメッセージに対する特定の行為者の特定のアイデンティティではなく、一般的な役割を示す。本明細書で用いられる「送信者」という用語は、一般的にメッセージ情報を受信者に送る、エンティティ、コンピュータ、別の自動化装置、又は通信アダプタである。本明細書で用いられる「受信者」という用語は、一般的にメッセージ情報を送信者から受信する、エンティティ、コンピュータ、又は通信アダプタである。つまり、「送信者」及び「受信者」という役割は、メッセージ・トラフィック・フローの方向を一般的に示すものであり、例えば、メッセージ・トラフィック・フローの一般的な方向は、送信者から受信者へのものであるので、フロー制御メッセージを「送信者」に送るのは「受信者」であるとすることができる。受信者から送信者へのフロー制御メッセージの伝送は、送信者及び受信者を特徴付けるメッセージ・トラフィック・フローの全体的な方向の例外である。
【００２８】
図２の方法は、フロー制御期間の継続期間（２０６）を送信者に対して指定する（２０２）ことを含む。継続期間の指定は、例えば、通信アダプタの製造時に不揮発性メモリ内に格納されたファームウェア・パラメータのような、通信アダプタについての動作パラメータとして継続時間を指定することによって、行なうことができる。代替的に、フロー制御期間の継続期間は、ユーザ・インターフェースを介していつでも入力することができ、かつ、通信アダプタ内のファームウェアに格納されるユーザ定義の通信パラメータとして実装することもできる。フロー制御期間の継続期間の指定は、当業者であれば想到できる他の方法で実装することもでき、全てのこうした方法は、十分に本発明の範囲内である。本発明の実施形態によるフロー制御期間の継続期間は、本発明の実施形態に従ってフロー制御メッセージが検出され、破損通信制御パケットが伝送される指定された期間である。
【００２９】
図２の方法は、１又は複数のフロー制御期間中に送信者から受信者に伝送される破損通信制御パケットの数（２０８）を送信者に対して指定すること（２０４）を含む。図２の方法において、破損通信制御パケット（２３６）は、受信者が、何らかの方法でパケットを処理するのではなく、受信時にパケットを迅速に廃棄するように意図的に破損された通信制御パケットを含む。受信者にデータ通信を伝送する最終的な目的は、受信者内の、受信者上の、又は受信者と関連したアプリケーション・プログラムによって、通信コンテンツ、すなわちメッセージのコンテンツを処理することである。正常な通信パケットは、送信者から一定の速度で送られ、受信者側のアプリケーションによって一定の速度で消費される。受信者側の処理帯域幅が送信帯域幅より小さい場合には、メッセージ・トラフィックが受信キュー内に蓄積し、受信者上の通信アダプタが、最終的にフロー制御メッセージを送り、送信者の通信動作を中断させる。破損パケットを送ることにより、受信者側の処理帯域幅を低減させずに、正常な通信のための送信帯域幅が低減される。破損パケットが、送信帯域幅の一部分を無用な通信パケットで塞ぐので、正常な通信のための正常な送信帯域幅が低減される。破損パケットを検出し、これらをドロップするのは、通信アダプタ又は低レベルのプロトコル・エンジン内の処理のような低レベルの処理であり、決してこれらを処理のために受信側アプリケーションに提示することはないので、破損パケットが受信者側の帯域幅の処理に影響を及ぼさない。
【００３０】
図２の方法は、フロー制御期間中、受信者からフロー制御メッセージを受信するかどうかを、送信者によって判断すること（２１０）を含む。本出願の実施形態によるフロー制御メッセージは、例えば、ポートベースのネットワーク・アクセス制御についてのＩＥＥＥ８０２．１ｘ規格に従ったＸＯＦＦパケットを含むことができる。上述のように、送信者の観点から見ると、こうしたフロー制御メッセージを受信することにより、データ通信が中断される。送信者は、例えば、フロー制御期間の継続時間を追跡し、フロー制御期間中に受信したフロー制御メッセージをカウントし、フロー制御期間の最後に、フロー制御メッセージのカウントがゼロより大きいかどうかを確認し、カウントがゼロより大きい場合には、次のフロー制御期間中に用いるためにカウントをゼロにリセットすることによって、フロー制御期間中にこうしたフロー制御メッセージを受信するかどうかを判断することができる。
【００３１】
図２の方法は、フロー制御期間中に受信者からフロー制御メッセージが受信されるかどうかどうかに応じて、破損通信制御パケットの数を変更し（２２０）、後のフロー制御期間中に正常なデータ通信に混じえて、変更された破損通信制御パケットの数を送信者から受信者に伝送すること（２３０）を含む。図２の方法において、破損通信制御パケットの数を変更することは、フロー制御期間中にフロー制御メッセージを受信した場合に破損通信制御パケットの数を増加させること（２２６）を含み、変更された破損通信制御パケットを伝送すること（２３０）は、増加された破損通信制御パケットの数を伝送すること（２３２）によって行なわれる。図２の方法において、破損通信制御パケットの数を変更することは、フロー制御期間中にフロー制御メッセージを受信しなかった場合に破損通信制御パケットの数を減少させること（２２８）を含み、変更された破損通信制御パケットの数を伝送すること（２３０）は、減少された破損通信制御パケットの数を伝送すること（２３４）によって行なわれる。当業者の読者であれば、フロー制御期間中に伝送される破損通信パケットの数のこうした変更は、フロー制御期間中の１又は複数のフロー制御メッセージの受信を、負のフィードバックとして用いて正常な通信についての送信帯域幅を制御する閉ループ制御機能を実施するものであることを認識するであろう。フロー制御メッセージを受信しない場合には、より少ない破損パケットを送ることによって、送信帯域幅を広くする。フロー制御メッセージを受信する場合には、より多くの破損パケットを送ることによって送信帯域幅を狭くする。こうした閉ループ制御は、正常な通信についての送信側の帯域幅を受信側の処理帯域幅と事実上合致させる。
【００３２】
さらなる説明のために、図３は、本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するためのさらに別の例示的な方法を示すフローチャートを示す。図３の方法は、図２の方法と類似しており、フロー制御期間の継続期間（２０６）を送信者に対して指定し（２０２）、１又は複数のフロー制御期間中に送信者から受信者に伝送される破損通信制御パケットの数（２０８）を送信者に対して指定し（２０４）、フロー制御期間中に受信者からフロー制御メッセージを受信するかどうかを送信者によって判断し（２１０）、フロー制御期間中に受信者からフロー制御メッセージを受信するかどうかに応じて、破損通信制御パケットの数を変更し（２２０）、後のフロー制御期間中に正常なデータ通信に混じえて、変更された破損通信制御パケットの数を送信者から受信者に伝送すること（２３０）を含み、その全ては、図２の方法に関して上述されたものと同じ方法で動作する。
【００３３】
しかしながら、図３の方法において、フロー制御期間中に伝送される破損通信制御パケットの数は、フロー制御期間中にフロー制御メッセージが受信されないたびに減少されるのではない。それとは逆に、図３の方法は、所定数のフロー制御期間（２１２）に対して動作し、かつ、所定数のフロー制御期間中にフロー制御メッセージを受信しなかったのかどうかの判断（２１８）を含み、所定数のフロー制御期間中にフロー制御メッセージを受信しなかった場合にのみ破損通信制御パケットの数を減少させる（２２８）。図３の方法においては、図２の方法と同様に、減少された破損パケットの数が、次のフロー制御期間に伝送される（２３４）。
【００３４】
図３の方法においては、図２の方法と同様に、フロー制御期間中に伝送されるフロー制御パケットの数は、フロー制御期間中にフロー制御メッセージを受信するたびに増加される（２２６）。読者は、送信者の観点から見て、フロー制御メッセージの受信が、通信の実質的な中断を表すことを認識するであろう。従って、図３の方法は、フロー制御メッセージを受信するたびに、正常なメッセージ・トラフィックについての送信帯域幅を低減させ、受信側の処理帯域幅に合致させるように試みることによって、常に、フロー制御メッセージを受信するリスクを低減させるための措置をとり、従って、フロー制御メッセージのリスクを低減させる。
【００３５】
他方、１又は複数のフロー制御期間中にフロー制御メッセージを受信しないという事実は、単に、送信及び受信者の帯域幅が成功裏に合致し、この特定の時点において、帯域幅をさらに調整するために、破損パケットの数をさらに調整する必要がないことを意味する場合がある。これを確認するために、フロー制御メッセージを受信しない場合、図３の方法は時間の経過と共に、最終的に別のフロー制御パケットを受信し（２１６）、フロー制御期間中に伝送される破損パケットの数を増加させること（２２６）により正常なトラフィックについての帯域幅が再び低減されるまで、所定数のフロー制御期間（２１２）にわたって、破損パケットの数を減少させ（２２８）、正常なパケットについての送信帯域幅を増加させる。当業者の読者であれば、破損パケットの数を減少させる前に、閉ループ制御への慣性の挿入、要するに、ループが、フロー制御メッセージの受信には依然として即座に反応するが、フロー制御メッセージの不足への反応が遅くなる、ループ利得の方向性低減のような、フロー制御メッセージを用いない複数のフロー制御期間に対する要件を含むことを認識するであろう。所定数のフロー制御期間が１に設定される一般的な場合には、図３の方法は、図２の方法と全く同様に動作する。１より大きい任意の所定数のフロー制御期間（２１２）の場合には、図３の方法のループ利得は、述べられたように低減される。
【００３６】
さらなる説明のために、図４は、本発明の実施形態による、データ通信リンクを用いてデータ・フローを制御するためのさらに別の例示的な方法を示すフローチャートを示す。図４の方法は、図２の方法と類似しており、フロー制御期間の継続期間（２０６）を送信者に対して指定し（２０２）、１又は複数のフロー制御期間中に送信者から受信者に伝送される破損通信制御パケットの数（２０８）を送信者に対して指定し（２０４）、フロー制御期間中に受信者からフロー制御メッセージを受信するかどうかを送信者によって判断し（２１０）、フロー制御期間中に受信者からフロー制御メッセージを受信するかどうかに応じて、破損通信制御パケットの数を変更し（２２０）、後のフロー制御期間中に正常なデータ通信に混じえて、変更された破損通信制御パケットの数を送信者から受信者に伝送すること（２３０）とを含み、その全ては、図２の方法に関して上述されたものと同様の方法で動作する。
【００３７】
しかしながら、図４の方法においては、図２の方法の機能に加えて、正常なデータ通信（３０４）は、通信の優先度（３０６）によって特徴付けられ、この方法は、優先度に応じて正常なデータ通信を複数のデータ通信キュー（３０８、３１０）にエンキューし（３０２）、破損パケットを優先度の低いキュー（３１０）にのみエンキューすること（３１２）を含む。また図２の方法の機能に加えて、図４の方法においては、変更された破損通信制御パケットの数を送信者から受信者に伝送すること（２３０）は、優先度の低いキュー（２３６）だけから、変更された破損通信制御パケットの数（２３６）を伝送すること（３１４）を含む。読者は、多くの理由で、正常なデータ通信を通信の優先度によって特徴付けることができることを認識するであろう。例えば、リアルタイムのオペレーティング・システムにより用いるために、一部の優先度の高いパケットを決まった時間までに送付する必要がある場合がある。他の優先度の高いパケットは、ほぼリアルタイムで送付しなければならないビデオ又は他のマルチメディア・データのストリームの一部とすることができる。例えば、インターネット・プロトコル・パケット又はイーサネット・パケット等の損失のある伝送フォーマットの通信パケットに、低い優先度を割り当てることができる。通信の優先度（３０６）によって正常なデータ通信（３０４）が特徴付けられる環境においては、優先度の低いキュー（２３６）のみから破損通信制御パケット（２３６）を伝送すること（３１４）は、〔１〕送信帯域幅を低減させて、上述のように送信帯域幅を受信側の処理帯域幅と均衡させ、かつ〔２〕優先度の高い通信の、結果として生じるあらゆる中断を最小にする。
【００３８】
本発明の例示的な実施形態は、主として、データ通信リンクを用いてデータ・フローを制御するための完全に機能するコンピュータ・システムの文脈において説明される。しかしながら、当業者の読者であれば、本発明はまた、任意の適切なデータ処理システムと共に用いるための、コンピュータ可読の信号搬送媒体上に配置されたコンピュータ・プログラム製品において具体化できることも理解するであろう。こうした信号搬送媒体は、磁気媒体、光媒体、又は他の好適な媒体を含む、機械可読情報のための伝送媒体又は記録可能媒体とすることができる。記録可能媒体の例は、ハード・ドライブ又はディスケットにおける磁気ディスク、光ドライブのためのコンパクト・ディスク、磁気テープ、及び当業者であれば想到できる他のものを含む。伝送媒体の例は、音声通信のための電話ネットワーク、例えばイーサネット（商標）等のデジタル通信ネットワーク、インターネット・プロトコル及びＷｏｒｌｄ  Ｗｉｄe  Ｗｅｂと通信するネットワーク、並びに、例えば、ＩＥＥＥ８０２．１１ファミリーの規格によって実装されるネットワーク等の無線伝送媒体を含む。当業者であれば、好適なプログラミング手段を有するいずれのコンピュータ・システムも、プログラム製品において実現されるように、本発明の方法のステップを実行できることを直ちに認識するであろう。当業者であれば、本明細書に記載される例示的な実施形態のいくつかは、コンピュータ・ハードウェア上にインストールされ実行されるソフトウェアに向けられるが、それにもかかわらず、ファームウェア又はハードウェアとして実装される代替的な実施形態も、十分に本発明の範囲内にあることを直ちに認識するであろう。
【００３９】
上記の説明から、本発明の真の思想から逸脱することなく、本発明の種々の実施形態において修正及び変更をなすことができることが理解されるであろう。本明細書における説明は、例示の目的のみのためのものであり、制限的な意味で解釈されるべきではない。
【符号の説明】
【００４０】
１０２：通信アダプタ
１０４：プロセッサ
１０６：メモリ
１０６：サーバ
１０８：パーソナル・コンピュータ
１０８：通信プログラム
１１０、１３２：キュー
１２２：通信アダプタ
１２６：通信サブシステム
１２６：ラップトップ
１３３：プロトコル
１３４：フラッシュメモリ
１３５：フロー制御メッセージ
１３６：ファームウェア
１４０、１４２、１４４、１４６：データ通信パス
１５１：アプリケーション・プログラム
１５２：送信者
１５４：オペレーティング・システム
１５６：プロセッサ
１５８：バス・アダプタ
１６０：拡張バス
１６２：フロントサイドバス
１６４：ビデオバス
１６６：メモリバス
１６７：メモリバス
１７０：データ・ストレージ
１７２：ドライブアダプタ
１７８：Ｉ／Ｏアダプタ
１８０：ディスプレイ
１８１：ユーザ入力装置
１９４：受信者
２０６：フロー制御期間の継続時間
２０８：破損パケットの数
２０９：ビデオアダプタ
２１２：所定数のフロー制御期間
２３６：破損パケット
３０４：正常パケット
【図１】
0005400881.tif 000002
【図２】
0005400881.tif 000003
【図３】
0005400881.tif 000004
【図４】
0005400881.tif 000005