(57)【要約】【課題】  ネットワークイベントを用いたネットワークパケット伝送の歩調合せを可能とする。【解決手段】  送信コンピューティングシステムが特定のネットワークコネクションを通じて受信コンピューティングシステムへいくつかのネットワークパケットを送信する。送信コンピューティングシステムは少なくとも部分的に無相関のネットワークイベントを監視して、ＴＣＰを用いてパケットを送信する場合のフィードバックイベント（例えば確認応答メッセージ）のような無相関のネットワークイベントに基づいて伝送をスケジューリングするソフトタイマを抽出する。潜在的にすべてのネットワークコネクションさえもが使用されるので、イベントは、特定コネクション上のパケットの送信よりも相関が低い。そして、抽出されたタイマを用いて、特定コネクションを通じて送出されるパケットを歩調合せする。送出されるパケットは、監視される無相関のネットワークイベントの発生の頻度を調節するようにマーキングされてもよい。【選択図】  図３
2004229306.tif 000002
【特許請求の範囲】
【請求項１】
送信コンピューティングシステムと受信コンピューティングシステムとを含むコンピュータネットワークにおいて、前記送信コンピューティングシステムは前記受信コンピューティングシステムへネットワークパケットを伝送することが可能であり、前記送信コンピューティングシステムが連続するアクションを歩調合せする方法であって、前記送信コンピューティングシステムによって、
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視するステップと、
監視される前記ネットワークイベントに主として基づくタイマを形成するステップと、
形成された前記タイマを使用して連続するアクションを歩調合せする、形成された前記タイマを使用するステップと
を備えることを特徴とする方法。
【請求項２】
前記連続するアクションはネットワークパケットの伝送である
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記連続するアクションはシステムバス上のデータ通信である
ことを特徴とする請求項１に記載の方法。
【請求項４】
送信コンピューティングシステムと受信コンピューティングシステムとを含むコンピュータネットワークにおいて、前記送信コンピューティングシステムは前記受信コンピューティングシステムへネットワークパケットを伝送することが可能であり、ネットワークパケットのいずれかが伝送中に失われる可能性を減らすように前記送信コンピューティングシステムが複数のパケットの伝送を歩調合せする方法であって、前記送信コンピューティングシステムによって、
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視するステップと、
監視される前記ネットワークイベントに主として基づくタイマを形成するステップと、
形成された前記タイマを使用して複数のパケットが前記送信コンピューティングシステムから前記特定のコネクションを通じて前記受信コンピューティングシステムへ伝送されるレートを歩調合せする、形成された前記タイマを使用して歩調合せするステップと
を備えることを特徴とする方法。
【請求項５】
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視する前記ステップは、
前記特定のコネクション以外の１つまたは複数のコネクション上のネットワークイベントを監視するステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項６】
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視する前記ステップは、
前記特定のコネクション上のネットワークイベントも監視するステップをさらに含む
ことを特徴とする請求項５に記載の方法。
【請求項７】
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視する前記ステップは、
前記送信コンピューティングシステムによってサポートされるすべてのコネクション上のネットワークイベントを監視するステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項８】
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視する前記ステップは、
複数のコネクション上で伝送されたパケットが受信されたことの確認応答を表すフィードバックイベントを監視するステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項９】
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視する前記ステップは、
複数のコネクション上で送信されるパケットを監視するステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項１０】
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視する前記ステップは、
複数のコネクション上で受信されるパケットを監視するステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項１１】
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視する前記ステップは、
複数のコネクション上で伝送されたＴＣＰパケットが受信されたことの確認応答を表すフィードバックイベントを監視するステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項１２】
前記タイマが形成された後に監視される前記ネットワークイベントが発生しているレートが変化したことを判定するステップをさらに含む
ことを特徴とする請求項４に記載の方法。
【請求項１３】
監視される前記ネットワークイベントの変化したレートを反映するように前記タイマを調整するステップをさらに含む
ことを特徴とする請求項１２に記載の方法。
【請求項１４】
監視される前記ネットワークイベントの変化したレートを少なくとも部分的に補償するように、監視される前記ネットワークイベントが発生するレートを調節するステップをさらに含む
ことを特徴とする請求項１２に記載の方法。
【請求項１５】
監視される前記ネットワークイベントは、１つまたは複数のパケットが受信されたことの確認応答を表すフィードバックイベントを含み、監視される前記ネットワークイベントが発生するレートを調節する前記ステップは、
複数のコネクション上のフィードバックイベントによって確認応答されるパケットの数を変化させるステップを含む
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記パケットはＴＣＰパケットであり、前記フィードバックイベントはＴＣＰ確認応答メッセージである
ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記パケットはＵＤＰパケットであり、前記フィードバックイベントはＴＦＲＣ確認応答メッセージである
ことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記パケットはDirectPlayパケットである
ことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記パケットはＳＣＴＰパケットであり、前記フィードバックイベントはＳＣＴＰ確認応答メッセージである
ことを特徴とする請求項１５に記載の方法。
【請求項２０】
監視される前記ネットワークイベントに基づくタイマを形成する前記ステップは、
監視されるネットワークイベントの発生時にのみ前記タイマによって表される時間を変化させるステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項２１】
監視される前記ネットワークイベントに主として基づくタイマを形成する前記ステップは、前記特定のコネクション上に伝送される連続するパケット間に何個の監視される前記ネットワークイベントが発生するべきかを判定するステップを含み、形成された前記タイマを使用して歩調合せする前記ステップは、判定された数の監視されるネットワークイベントがそれぞれの連続するパケットの伝送の間に発生するように連続するパケットを送信するステップを含む
ことを特徴とする請求項４に記載の方法。
【請求項２２】
監視される前記ネットワークイベントに主として基づくタイマを形成する前記ステップは、監視される前記ネットワークイベントが発生するごとにタイマ値をインクリメントするステップを含み、形成された前記タイマを使用して歩調合せする前記ステップは、
パケットが送信されるために超えるべきタイマ値を指定するステップと、
実際のタイマ値が超えるべき前記タイマ値を超えると、前記パケットを送信するステップとを含む
ことを特徴とする請求項４に記載の方法。
【請求項２３】
前記タイマ値はプロセッササイクル値に主として基づき、前記パケットを送信する前記ステップは、
監視されるネットワークイベントを検出するステップと、
監視される前記ネットワークイベントを検出したことに応答して現在のプロセッササイクル値をチェックするステップと、
前記現在のプロセッササイクル値が前記タイマ値より大きい場合に前記パケットを送信するステップとを含む
ことを特徴とする請求項２２に記載の方法。
【請求項２４】
送信コンピューティングシステムと受信コンピューティングシステムとを含むコンピュータネットワークにおいて使用するためのコンピュータプログラムプロダクトであって、前記送信コンピューティングシステムは前記受信コンピューティングシステムへネットワークパケットを伝送することが可能であり、前記コンピュータプログラムプロダクトは、前記送信コンピューティングシステムが複数のパケットの伝送を歩調合せする方法を実行し、前記コンピュータプログラムプロダクトは、前記送信コンピューティングシステムによって実行されるコンピュータ実行可能命令を有する１つまたは複数のコンピュータ読み取り可能な記録媒体を含んでおり、前記コンピュータ実行可能命令は、
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視するステップと、
監視される前記ネットワークイベントに主として基づくタイマを形成するステップと、
形成された前記タイマを使用して、複数のパケットが前記送信コンピューティングシステムから前記特定のコネクションを通じて前記受信コンピューティングシステムへ伝送されるレートを歩調合せする、形成された前記タイマを使用して歩調合せするステップと
を備えることを特徴とするコンピュータプログラムプロダクト。
【請求項２５】
前記１つまたは複数のコンピュータ読み取り可能な記録媒体は物理的なストレージ媒体である
ことを特徴とする請求項２４に記載のコンピュータプログラムプロダクト。
【請求項２６】
送信コンピューティングシステムと受信コンピューティングシステムとを含むコンピュータネットワークにおいて、前記送信コンピューティングシステムは前記受信コンピューティングシステムへネットワークパケットを伝送することが可能であり、前記ネットワークパケットのいずれかが伝送中に失われる可能性を減らすように前記送信コンピューティングシステムが複数のパケットの伝送を歩調合せする方法であって、前記送信コンピューティングシステムによって、
特定のコネクション上のパケットの伝送と少なくとも部分的に無相関であるネットワークイベントを監視するステップと、
少なくとも部分的に無相関の前記ネットワークイベントに主として基づいて前記パケットの伝送を歩調合せするステップと
を備えることを特徴とする方法。
【請求項２７】
少なくとも部分的に無相関の前記ネットワークイベントに主として基づいて前記パケットの伝送を歩調合せする前記ステップは、
監視される前記ネットワークイベントに主として基づくタイマを形成するステップと、
形成された前記タイマを使用して、複数のパケットが前記送信コンピューティングシステムから前記特定のコネクションを通じて前記受信コンピューティングシステムへ伝送されるレートを歩調合せする、形成された前記タイマを使用して歩調合せするステップとを含む
ことを特徴とする請求項２６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信コンピューティングシステムが連続するアクションを歩調合せ（pacing）する方法に関する。より詳細には、通信技術に関し、特に、少なくとも部分的に無相関の複数のネットワークイベントから生成されるソフトタイマを用いてネットワークパケットの伝送を歩調合せするメカニズムに係る、送信コンピューティングシステムが連続するアクションを歩調合せする方法、および送信コンピューティングシステムが複数のパケットの伝送を歩調合せする方法、並びにコンピュータプログラムプロダクトに関する。
【背景技術】
【０００２】
コンピューティング技術は、われわれの仕事および娯楽の様式を一変させた。現代のコンピュータネットワーキングの技術およびインフラストラクチャは、相異なるアプリケーションおよびユーザが、莫大な距離にわたってさえも、容易に利用可能なコンピューティングシステムを用いて比較的迅速に電子的にデータを通信することを可能にしている。このようなコンピューティングシステムとしては、例えば、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、ディジタル電話機等がある。
【０００３】
現在、コンピューティングシステムは高度に相互接続されているため、あるコンピューティングシステムが文字通り、世界中に分散する何百万もの他のコンピューティングシステムのいずれと通信することも可能である。このことは、今ではより容易に通信することができるので、有益である。その最も一般的な形式において、コンピューティングシステム間の通信は、電子メッセージの形成を伴う。次に、その電子メッセージが、より小さい断片に分解される。これらの断片は、適当なヘッダ情報とともに、「パケット」と呼ばれる。
【０００４】
電子メッセージの種々のパケットが、送信コンピューティングシステムから受信コンピューティングシステムへ伝送される。パケットを適切にルーティングするために、送信コンピューティングシステムと受信コンピューティングシステムの間に論理的に存在するいくつかの中間コンピューティングシステムがある。通常、このような中間コンピューティングシステムは、多数の相異なるコンピューティングシステムからやって来るパケット伝送を受信しルーティングする。
【０００５】
相異なるコンピューティングシステムからのパケット伝送の受信を扱うために必要な高いスケーラビリティを有する目的で、中間コンピューティングシステムはキューを有することがある。中間コンピューティングシステムがパケットを適切に処理することができるまで、このキューにパケットが入れられる。キューのサイズは通常、パケット受信レートのある程度の変動に対処するのに十分である。中間コンピューティングシステムが処理可能であるより、高速にパケットが受信される短い期間がある場合、キューは満たされていく。他方、受信されるより高速なレートでパケットが処理される場合、キューは空になっていく。
【０００６】
好適な中間コンピューティングシステムでは、中間コンピューティングシステムは、パケットが受信される少なくとも平均レートで着信要求を処理することができる。したがって、キューは、満たされていくよりはむしろ空になっていく傾向がある。これは、キューが満たされていると、パケットが廃棄され、それによりキュー自体の目的が達成されなくなるからである。
【０００７】
平均パケット受信レートより大きいレートで処理するように設計された好適な中間コンピューティングシステムにおいてでさえ、複数パケットがバーストとして到着するようなある種の状況で、キューはあふれることがある。これは、送信コンピューティングシステムが１つまたは複数のパケットをバーストとして送信した後、バースト的にさらにパケットを送出する前に、受信コンピューティングシステムからの確認応答（acknowledge）を待機するようなフィードバック指向の伝送プロトコルで起こり得る。パケットがバーストとして到着する現象の強度は、本明細書においてしばしば「バースト性（burstiness）」と呼ばれる。グローバルなインターネットでは、バースト性を制限することが重要である。インターネットのようなネットワークを通じてのデータ転送に最も一般的に使用されているプロトコルであるTransmission Control Protocol（ＴＣＰ）でこれを達成するため、送信コンピューティングシステムは通常、２個のパケットをバーストとして送信した後、さらに２個のパケットをバーストとして送出する前に、受信コンピューティングシステムからの確認応答メッセージを待機する。しかし、これは、バースト性を制限するには高価な方法である。というのは、受信側によって送信されるあらゆる確認応答パケットが、送信コンピューティングシステムだけでなく、あらゆる中間コンピューティングシステム上のリソースを消費するからである。中間コンピューティングシステム上のバースト性を制限することは重要であるが、受信コンピューティングシステムによって放出されるパケットの数を減らすことも有利である。
【０００８】
受信側が確認応答パケットを放出する前に２個より多くのパケットを待機するようにすることは実際上困難である（これは、短いメッセージに対する応答時間を増大させる）。
【０００９】
送信側調整型確認応答（Sender Moderated Acknowledgements）と呼ばれる非従来型の技術は、送信側が受信側に対して、受信側がどのデータパケットに確認応答すべきかを動的に指示することを可能にする。これらの方法は両方とも、その特定コネクション上のパケットのバースト性を増大させる。
【００１０】
パケット伝送のバースト性を低下させる１つの方法は、あるパケットの送信と次のパケットの送信の間に十分な時間があるようにパケットのタイミングを歩調合せすることにより、パケット伝送レートを安定化させることである。タイミングの問題は通常、オペレーティングシステム内のソフトウェアで実装されるタイマによって制御される。このようなタイマは通常、１０ミリ秒程度のスケールで動作する。１ギガビット毎秒（Ｇｂｐｓ）の伝送レートをサポートする高速ネットワークでは、単にこのタイミングのみではパケットを歩調合せするための十分な細分性がない。将来、より高速なタイマが利用可能になったとしても、ネットワーク伝送レートもまた上昇するであろう。したがって、タイマに基づくパケット伝送の歩調合せは通常、実現可能な選択肢とはみなされていない。
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている（例えば、非特許文献１参照）。
【００１１】
【非特許文献１】Aron, Mohit、Druschel, Peter；”Soft Timers: Efficient Microsecond Software Timer Support for Net work Processing”;１７th ACM Symposium on Operating Systems Principles (SOSP '99)；１９９９年、１２月；ｐ．２３２−２４６
【発明の開示】
【発明が解決しようとする課題】
【００１２】
したがって、たとえオペレーティングシステムのタイマがパケットの伝送を歩調合せすることをサポートするだけの十分に精細なクロック増分をサポートしていないとしてもそのような歩調合せを行うメカニズムがあれば、有益であろう。  
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、ネットワークイベントを用いたネットワークパケット伝送の歩調合せが可能な、送信コンピューティングシステムが連続するアクションを歩調合せする方法を提供することにある。
【課題を解決するための手段】
【００１３】
従来技術の上記の課題は、送信コンピューティングシステムから１つまたは複数の中間コンピューティングシステム経由で受信コンピューティングシステムへネットワークパケットを伝送する時にネットワークパケットを歩調合せするメカニズムに関する本発明の原理によって克服される。ネットワークパケットがバーストとして伝送される場合、中間コンピューティングシステム内のキューはあふれることがある。したがって、電子メッセージの伝送を歩調合せすることは、いずれかの中間コンピューティングシステムがあふれることによりネットワークパケットを廃棄する可能性を減らす。
【００１４】
ネットワークパケットを適切に歩調合せするため、送信コンピューティングシステムは、少なくとも部分的に無相関のネットワークイベント（複数）を監視して、無相関のネットワークイベントに主として基づいて伝送をスケジューリングするタイマを抽出する。このような部分的に無相関のネットワークイベントとしては、例えば、確認応答メッセージの受信、パケットの送信、および送信コンピューティングシステムによって維持される多くのまたはすべてのコネクションを通じてのパケットの受信がある。潜在的にすべてのネットワークコネクションが使用されることもあるため、特定のコネクションを通じてのパケットの送信よりもイベントの相関は小さい。そして、抽出されたタイマは、特定のコネクションを通じて送出されるパケットを歩調合せするために使用される。
【００１５】
時間が経つと、被監視ネットワークイベントの発生レートは変化するかもしれない。これを、タイマを変化させること、または発生レート自体を調節することのいずれによって補償してもよい。例えば、ネットワークイベントがTransmission Control Protocol（ＴＣＰ）確認応答メッセージの受信のようなフィードバックイベントである場合、送信コンピューティングシステムは、確認応答パケットを送出する前に受信すべきパケットの数を変えるべきことを受信側に知らせることによって、発生レートを大まかに調節してもよい。従来は、所与のコネクション上で、受信側は、送信側から２個のパケットを受信した直後に確認応答パケットを送出する。しかし、本発明の原理によれば、確認応答メッセージごとに送信されるＴＣＰパケットの数を、特定の確認応答メッセージレートを得るために所望に応じて調節してもよい。
【００１６】
本発明のさらなる特徴および利点は以下の説明に記載され、部分的にはその説明から明らかであろうし、または本発明の実施によって知られるであろう。本発明の特徴および利点は、添付の特許請求の範囲に詳細に指摘される手段および組合せによって実現され得られるであろう。本発明のこれらおよびその他の特徴は、以下の説明および添付の特許請求の範囲からさらに十分に明らかになるであろうし、または以下に記載されるように本発明の実施によって知られるであろう。
【００１７】
本発明の上記およびその他の利点および特徴が得られる方法を説明するため、上記で簡単に説明した本発明のさらに詳細な説明が、添付図面に示されるその特定実施形態を参照してなされる。これらの図面は本発明の典型的実施形態のみを示しており、それゆえその範囲を限定するものとみなされてはならないという了解の下で、本発明は、添付図面を用いることによりさらに具体的および詳細に記載され説明される。
【発明の効果】
【００１８】
以上説明したように本発明によれば、送信コンピューティングシステムから受信コンピューティングシステムへネットワークパケットを伝送する時にネットワークパケットを歩調合せすることができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。  
送信コンピューティングシステムは、特定のコネクションを通じて受信コンピューティングシステムへいくつかのネットワークパケットを送信するものである。送信コンピューティングシステムは、少なくとも部分的に無相関のネットワークイベントを監視して、無相関のネットワークイベントに基づいて伝送をスケジューリングするタイマを抽出する。少なくとも部分的に無相関のネットワークイベントは、例えば、確認応答メッセージの受信、パケットの送信、および送信コンピューティングシステムによって維持される多くのまたはすべてのコネクションを通じてのパケットの受信であってもよい。潜在的にすべてのネットワークコネクションが使用されることもあるため、特定のコネクションで生じるパケット送信イベントよりもイベントの相関は小さい。そして、抽出されたタイマは、特定のコネクションを通じて送出されるパケットを歩調合せするために使用される。抽出されるタイマの細分性に対する制御を維持するため、送信側が送信するデータパケットに応答して受信側がどのくらいの頻度で確認応答パケットを送信する必要があるかを受信側に周期的に知らせることによって、ネットワークイベントのレートを調節してもよい。
【００２０】
本発明の範囲内にある実施形態は、コンピュータ実行可能な命令またはデータ構造を備えた、すなわちそれが格納されたコンピュータ可読媒体を含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータによりアクセスすることができるいかなる利用可能な媒体であってもよい。例として、限定ではなく、このようなコンピュータ可読媒体には、ＲＡＭ（random access memory）、ＲＯＭ（read only memory）、ＥＥＰＲＯＭ（electrically erasable programmable read-only memory）、ＣＤ（compact disc）−ＲＯＭ等の光ディスクストレージ、磁気ディスクストレージ等の磁気ストレージデバイスのような物理的なコンピュータ可読媒体、またはコンピュータ実行可能命令もしくはデータ構造の形で所望のプログラムコード手段を備える、すなわち格納するために使用可能であって、汎用もしくは専用コンピュータによりアクセスすることができるいかなる他の媒体も含まれる。
【００２１】
情報が、ネットワークまたは他の通信コネクション（有線、無線、または有線もしくは無線の組合せ、のいずれでもよい）を通じてコンピュータに転送すなわち提供される時、コンピュータはそのコネクションを適宜、コンピュータ可読媒体とみなす。したがって、いかなるこのようなコネクションも適宜、コンピュータ可読媒体と呼ばれる。上記のものの組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。コンピュータ実行可能命令には、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスにある一定の機能または機能群を実行させるいかなる命令およびデータも含まれる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語等の中間フォーマット命令、またはソースコードでもよい。
【００２２】
図１および以下の解説は、本発明が実施され得る好適なコンピューティング環境の簡単な概略的説明を提供するものである。必要とされるわけではないが、本発明は、ネットワーク環境におけるコンピュータによって実行されるプログラムモジュール等のコンピュータ実行可能命令の一般的状況で説明される。一般的に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等がある。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書に開示される方法のステップを実行するプログラムコード手段の例となる。このような実行可能命令の特定のシーケンスは、このようなステップに記載される機能を実施する対応する作用の例となる。
【００２３】
当業者には理解されるように、本発明は、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサ方式またはプログラム可能型の家庭用電化製品、ネットワークＰＣ（personal computer）、ミニコンピュータ、メインフレームコンピュータ等を含む多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境で実施されてもよい。また、本発明は、通信ネットワークを通じてリンク（有線リンク、無線リンク、または有線もしくは無線リンクの組合せ、のいずれによるものでもよい）されたローカルおよびリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施されてもよい。分散コンピューティング環境では、プログラムモジュールはローカルおよびリモートの両方のメモリストレージデバイスに配置されてもよい。
【００２４】
図１を参照すると、本発明を実施する例示的システムは、従来型のコンピュータ１２０の形態の汎用コンピューティングデバイスを含み、コンピュータ１２０は、プロセッサ１２１、システムメモリ１２２、およびシステムメモリ１２２を含む種々のシステムコンポーネントをプロセッサ１２１に結合するシステムバス１２３を含む。システムバス１２３は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および種々のバスアーキテクチャのいずれかを用いたローカルバスを含む数種のバス構成のいずれでもよい。システムメモリは、読み出し専用メモリ（ＲＯＭ）１２４およびランダムアクセスメモリ（ＲＡＭ）１２５を含む。スタートアップ中等にコンピュータ１２０内の要素間で情報を転送するために役立つ基本ルーチンを含むＢＩＯＳ（Basic Input/Output System）１２６がＲＯＭ１２４に格納されてもよい。
【００２５】
また、コンピュータ１２０は、磁気ハードディスク１３９を読み書きするための磁気ハードディスクドライブ１２７、リムーバブル磁気ディスク１２９を読み書きするための磁気ディスクドライブ１２８、およびＣＤ−ＲＯＭ等の光媒体のようなリムーバブル光ディスク１３１を読み書きするための光ディスクドライブ１３０も含む。磁気ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０はそれぞれハードディスクドライブインタフェース１３２、磁気ディスクドライブインタフェース１３３、および光ドライブインタフェース１３４によってシステムバス１２３に接続される。ドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ１２０のためのコンピュータ実行可能命令、データ構造、プログラムモジュールおよびその他のデータの不揮発性ストレージを提供する。本明細書に記載される例示的環境は、磁気ハードディスク１３９、リムーバブル磁気ディスク１２９およびリムーバブル光ディスク１３１を使用しているが、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭ等のような、データを格納するための他のタイプのコンピュータ可読媒体もまた使用可能である。
【００２６】
オペレーティングシステム１３５、１つまたは複数のアプリケーションプログラム１３６、他のプログラムモジュール１３７、およびプログラムデータ１３８を含めて、１つまたは複数のプログラムモジュールを含むプログラムコード手段が、ハードディスク１３９、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４またはＲＡＭ１２５に格納されてもよい。ユーザが、キーボード１４０、ポインティングデバイス１４２、またはマイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等のような他の入力デバイス（図示せず）を通じてコンピュータ１２０にコマンドおよび情報を入力してもよい。これらおよびその他の入力デバイスはしばしば、システムバス１２３に結合したシリアルポートインタフェース１４６を通じてプロセッサ１２１に接続される。別法として、入力デバイスは、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースによって接続されてもよい。モニタ１４７または他の表示デバイスもまた、ビデオアダプタ１４８のようなインタフェース経由でシステムバス１２３に接続される。モニタに加えて、パーソナルコンピュータは通常、スピーカやプリンタのような他の周辺出力デバイス（図示せず）を含む。
【００２７】
コンピュータ１２０は、リモートコンピュータ１４９ａおよび１４９ｂのような１つまたは複数のリモートコンピュータへの論理コネクションを用いたネットワーク環境で動作してもよい。リモートコンピュータ１４９ａおよび１４９ｂはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス等の普通のネットワークノードであってもよく、通常、コンピュータ１２０に関して上記で説明した要素の多くまたはすべてを含むが、メモリストレージデバイス１５０ａおよび１５０ｂならびにそれらに関連するアプリケーションプログラム１３６ａおよび１３６ｂのみが図１には示されている。図１に描かれている論理コネクションはローカルエリアネットワーク（ＬＡＮ）１５１および広域ネットワーク（ＷＡＮ）１５２を含むが、これらはここでは例として提示されており、限定ではない。このようなネットワーキング環境はオフィス規模または企業規模のコンピュータネットワーク、イントラネットおよびインターネットで一般的である。
【００２８】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１２０はネットワークインタフェースすなわちアダプタ１５３を通じてローカルネットワーク１５１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１２０は、インターネットのような広域ネットワーク１５２を通じて通信を確立するためのモデム１５４、無線リンク等の手段を含んでもよい。モデム１５４は、内蔵でも外付けでもよいが、シリアルポートインタフェース１４６経由でシステムバス１２３に接続される。ネットワーク環境では、コンピュータ１２０に関連して描かれているプログラムモジュールまたはその一部が、リモートメモリストレージデバイスに格納されてもよい。理解されるように、図示されているネットワークコネクションは例示であり、広域ネットワーク１５２を通じて通信を確立する他の手段を使用してもよい。
【００２９】
図１は、本発明の原理を実施し得るコンピューティングシステムの例を示しているが、いかなるコンピューティングシステムが本発明の特徴を実施してもよい。明細書および特許請求の範囲において、「コンピューティングシステム」とは、概括的に、ソフトウェアを用いて１つまたは複数の機能を実行することが可能な１つまたは複数のハードウェアコンポーネントとして定義される。コンピューティングシステムの例には、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、電話機、または処理能力を有するいかなる他のシステムもしくはデバイスも含まれる。
【００３０】
図２は、ネットワーク２２０を通じて受信コンピューティングシステム２３０へ複数のネットワークパケット（例えばネットワークパケット２１１Ａ〜２１１Ｊ）を送信する送信コンピューティングシステム２１０を含むコンピュータネットワーク２００を示している。送信コンピューティングシステム２１０および受信コンピューティングシステム２３０はそれぞれクライアントまたはサーバコンピューティングシステムであってもよく、必要とされるわけではないが、図１のコンピュータ１２０に関して上記で説明したように構成されてもよい。
【００３１】
ネットワーク２２０は、コンピューティングシステム２２１Ａ、２２１Ｂ、２２１Ｃを含むいくつかの中間コンピューティングシステム２２１を含む。これらは、省略符号２２１Ｄで表されるような潜在的に多数の他のものの一部である。ネットワーク２２０は、例えば、インターネットであってもよい。各ネットワークパケットが伝送されると、そのネットワークパケットは、１つまたは複数の中間コンピューティングシステムを通じてルーティングされた後、受信コンピューティングシステム２３０に到着する。
【００３２】
従来、ネットワークパケットは、「バースト」と呼ばれるクラスタとして、一度に２パケットずつ間断なくネットワーク２２０に発送される。バーストサイズは、送信側が受信する確認応答の数を減らすために、プロトコルによって２パケットより大きい値に増やされてもよい。このような伝送により、パケットをルーティングする中間コンピューティングシステム内のキューがあふれる結果、ネットワークパケットが伝送中に廃棄される可能性がある。これは特に、その中間コンピューティングシステムがルーティングパスにおけるボトルネックである場合に当てはまる。
【００３３】
図３は、いずれかのネットワークパケットが失われる可能性を減らすようにパケットの伝送を歩調合せする方法３００を示している。方法３００は、以下で主として説明するように、受信コンピューティングシステム２３０へネットワークパケットを送信する時に図２に示した送信コンピューティングシステム２１０によって実行されてもよい。しかし、送信コンピューティングシステム２１０は、他の受信コンピューティングシステムへパケットを送る時にも同様に方法３００を実行してもよい。さらに、受信コンピューティングシステム２３０もまた、ネットワークパケットを送出する送信コンピューティングシステムとして作用してもよい。よって、受信コンピューティングシステム２３０が方法３００を実行してもよい。
【００３４】
図４は、本発明の原理に従ってパケットの伝送を歩調合せする時に使用される送信コンピューティングシステム２１０の主要コンポーネントの概略論理図を示している。よって、図３の方法は、図４のコンポーネントを頻繁に参照して説明される。
【００３５】
方法３００は、まず、パケット伝送と少なくとも部分的に無相関であるネットワークイベントを監視する（動作３０１）。図４を参照すると、送信コンピューティングシステムは、いくつかの別個のコネクション４０１を維持する。コネクションとは、それにより別のコンピューティングシステムとの間で情報を送受信し得る論理メカニズムである。今の場合、コネクションマネージャ４００が、コネクション４０１Ａ、４０１Ｂ、および４０１Ｃ〜４０１Ｎを含むいくつかのオープンコネクションを有する。この例では、コネクション４０１Ａの縞模様によって表されているように、コネクションマネージャ４００は、コネクション４０１Ａを用いて受信コンピューティングシステム２３０へパケットを送信する。
【００３６】
前述のように、被監視イベントは、コネクション４０１Ａ上で発生するパケット伝送イベントと少なくとも部分的に無相関である。この相関の欠如は、コネクション４０１Ａで発生する類似のイベントに加えて、またはその代わりに、他のコネクション４０１Ｂ〜４０１Ｎの１つもしくは複数またはすべての上で発生するネットワークイベントを監視することによって促進してもよい。このようなイベントは、パケットフィードバックイベントだけでなく、パケット送信または受信イベントを含んでもよい。監視モジュール４０３が、部分的に無相関のネットワークイベントを監視することができるように、コネクションマネージャ４００に結合している。
【００３７】
例えば、フィードバックイベントモジュール４０４が、送信されたパケットに応答して受信される確認応答メッセージのようなフィードバックイベントを監視してもよい。例えば、Transmission Control Protocol（ＴＣＰ）は、ＴＣＰパケットの受信に応答して返されるこのような確認応答メッセージを提供する。Stream Control Transmission Protocol（ＳＣＴＰ）が同様にこのような確認応答メッセージを使用してもよい。さらに、User Datagram Protocol（ＵＤＰ）はプッシュ指向であると広くみなされているが、TCP Friendly Rate Control（ＴＦＲＣ）と呼ばれるプロトコルをプロトコルスタック中ＵＤＰの上位レイヤに置き、ＵＤＰパケットの受信に応答して確認応答メッセージが返されるようにしてもよい。さらに、確認応答メッセージを返す別のネットワークトランスポートプロトコルが、「Networking System and Method for the Transmission of Reliable and Non-Reliable Data in a Common Sliding Window」と題する２００１年６月１９日に出願された譲受人同一の同時係属中の米国特許出願第０９／８８４、６３４号にさらに詳細に記載されている。この米国特許出願は参照により全体として本明細書に援用される。その出願に記載されているネットワークトランスポートプロトコルを本明細書では「DirectPlay」と呼ぶことにする。
【００３８】
フィードバックイベントは、監視し得る部分的に無相関のネットワークイベントの決して唯一のタイプではない。送信パケットモジュール４０５がパケット送信イベントを監視してもよい。受信パケットモジュール４０６がパケット受信イベントを監視してもよい。縦の省略符号４０７によって表されるように、他のタイプの少なくとも部分的に無相関のネットワークイベントを監視する他のモジュールもまた含まれてもよい。図４にはソフトタイマ４０２も示されており、これが以下で説明するように機能してもよい。コネクションマネージャ４００、ソフトタイマ４０２、監視モジュール４０３およびそれに含まれるモジュール４０４〜４０７は、明確にする目的上別個のモジュールであるように説明されているが、依然として十分に本発明の原理の範囲内にある限り、これらのモジュールは所望に応じて、より少ない個数の、より一体的なモジュールへと組み合わされてもよい。
【００３９】
いかなる部分的に無相関のネットワークイベントも、本発明の目的にとって十分である。しかし、説明の目的上、そして限定としてではなく、少なくとも部分的に無相関のネットワークイベントが、送信コンピューティングシステム２１０から発送されたＴＣＰパケットがそれらのそれぞれの宛先により受信されたことに応答して、すべてのコネクション４０１Ａ〜４０１Ｎを通じて受信されるＴＣＰ確認応答イベントの形式のフィードバックイベントであるような、よくある例を用いて、方法３００は説明される。
【００４０】
次に、送信コンピューティングシステム２１０は、少なくとも部分的に無相関のネットワークイベントに主として基づいて、パケットの伝送を歩調合せする機能的な結果指向のステップを実行する（ステップ３１０）。この機能的な結果指向のステップは、上記の歩調合せを遂行するためのいかなる対応する動作を含んでもよい。しかし、図３に示されている例では、ステップ３１０は、対応する動作３１１および３１２を含む。
【００４１】
具体的には、ステップ３１０はまず、被監視ネットワークイベントに主として基づくタイマを形成する対応する動作（動作３１１）を含む。タイマが抽出される無相関イベントのプール中の一部の無相関の非ネットワークイベントもまた使用されてもよいという意味で、タイマは被監視ネットワークイベントに「主として」基づいている。しかし、無相関イベントはほとんど、すなわち「主として」ネットワークイベントであるので、無相関イベントのレートは、以下でさらに説明するように、より容易に制御され得る。次に、ステップ３１０は、形成されたタイマを用いて、複数のパケットが送信コンピューティングシステムから特定コネクションを通じて受信コンピューティングシステムへ伝送されるレートを歩調合せする対応する動作（動作３１２）を含む。
【００４２】
タイマが被監視イベントに主として基づいて形成される正確なメカニズムは本発明にとって重要ではない。使用可能ないくつかの形成技法があり、そのいくつかを以下説明するが、それは単に例示目的であり、限定目的ではない。
【００４３】
一例では、プロセッサのサイクルカウンタを被監視ネットワークイベントとともに使用してソフトタイマを抽出する。INTEL（登録商標） x86シリーズのプロセッサのようなプロセッサは、１サイクルごとにインクリメントされる内部カウンタを維持している。このカウンタは、プロセッサ上で実行されるプログラムから問い合わせることが可能であり、経過時間を測定する正確な手段である。コネクション上のパケットを送信することが必要とされるたびに、プログラムは、特定の時点に送出されるようにパケットをスケジューリングすることによってパケットを歩調合せする。一部のパケットは直ちに送信されるかもしれないが、残りは将来の特定の時点で送信されるようにキューイングされる。将来送出されるべきこれらのパケットのそれぞれについて、プログラムは、その特定パケットを送出しなければならない時にサイクルカウンタの値がどうなるかを計算する。パケットは、関連するサイクルカウンタ値とともにキューに入れられる。その後のそれぞれの被監視ネットワークイベントごとに、タイマはその時点におけるサイクルカウンタの値をチェックし、それがパケットを送出することにしたサイクルカウンタ値より大きい場合、そのパケットが送出される。
【００４４】
このタイマ形成方法は、サーバの場合に通常そうであるようにプロセッサ周波数が一定のままである場合には有効である。しかし、ラップトップのような他のデバイスでは、プロセッサ周波数は作業負荷に応じて変動するかもしれない。その場合、タイマは、最近に検出したネットワークイベントにわたり、連続する被監視イベントの間に経過した最大時間を判定してもよい。例えば、（例えば最近の１０００個の確認応答メッセージにわたり）連続する確認応答メッセージの間に経過した最大時間が２．５マイクロ秒であったと仮定する。ここで、パケット伝送を適切に歩調合せするためには、各パケット伝送が約１０マイクロ秒だけ分離されなければならないと仮定する。形成されるタイマは、同一コネクションを通じての最近のパケット伝送後に４個の被監視ネットワークイベントが検出された後にのみ、パケットの伝送を引き起こすであろう。
【００４５】
２．５マイクロ秒が、平均被監視イベント時間ではなく最大被監視イベント時間を表すことを補償するため、各パケット間に生じる必要な被監視イベントの数に安全率を乗じてもよい。例えば、安全率が１．５であるとすると、タイマは、同一コネクションを通じての最近のパケット伝送後に６個の被監視ネットワークイベントが検出された後にのみ、パケット伝送を引き起こすことになる。被監視ネットワークイベント間の平均時間を計算するよりも、被監視ネットワークイベント間の最大時間を計算するほうが、相対的にアルゴリズム的に簡単であるため、最大値が望ましいであろう。
【００４６】
被監視イベントが発生するレートは決して一定ではなく、時間とともに大きく変動する可能性がある。例えば、被監視イベントが、すべてのコネクション４０１Ａ〜４０１Ｎを通じて受信されるＴＣＰ確認応答メッセージであると仮定する。ネットワークトラフィックが重い時には、ＴＣＰ確認応答メッセージは平均として２．５マイクロ秒ごとにおよそ１メッセージのレートで受信されるかもしれない。ここで、その後ネットワークトラフィックが減少したため、５．０マイクロ秒ごとに１個のＴＣＰ確認応答メッセージしかないと仮定する。これに対する何らの補償もなければ、パケット伝送歩調合せは減速してしまうであろう。
【００４７】
したがって、タイマが形成された後に、被監視ネットワークイベントが発生しているレートが変化したと判定した後（動作３１３）、本方法は、オプションＡとして図示されている動作３１４、および／またはオプションＢとして図示されている動作３１５のいずれかまたはその組合せを実行することによって、パケット伝送歩調合せレートの差し迫った変化を任意に補償してもよい。
【００４８】
特に、被監視ネットワークイベントの変化したレートを反映するように、形成されたタイマを調整してもよい（動作３１４）。例えば、ネットワークトラフィックの減少によりネットワークイベントレートが半分になっている場合、被監視イベントが発生する時にはいつでも、タイマを前の量の２倍だけインクリメントしてもよい。別法として、おそらく、単一コネクション上で伝送される連続するパケット間に生じるべき被監視イベントの数を半分にしてもよい。
【００４９】
別法として、または加えて、被監視ネットワークイベントの変化したレートを少なくとも部分的に補償するように、被監視ネットワークイベントが発生するレートを調節してもよい（動作３１５）。例えば、被監視ネットワークイベントがＴＣＰ確認応答メッセージであり、４個の送信ＴＣＰパケットごとに１つの確認応答メッセージが返されるという非従来型の方法が実施されていると仮定する。その場合、仮にネットワークトラフィックの減少によりＴＣＰ確認応答メッセージレートが半分になるとすると、送信コンピューティングシステムは、２個の送信ＴＣＰパケットごとにＴＣＰ確認応答メッセージを返されることによって調整されてもよい。これにより、ＴＣＰパケット伝送レートが半分になったとしても、ＴＣＰ確認応答メッセージレートはおよそそのもとの値に再び増大することになる。
【００５０】
従来、ＴＣＰは、２個の送信ＴＣＰパケットごとに１個のＴＣＰ確認応答が返されることを許している。しかし、ＴＣＰ確認応答メッセージが返されることになるべきＴＣＰパケットのみをマーキングすることによって、定常状態期間中でも、確認応答メッセージあたりの送信ＴＣＰパケットの割合を２個ごとに１個よりも減少させ得る非従来型メカニズムが存在する。このような非従来型メカニズムは、「Method and System for Controlling the Rate of Acknowledgement of Communication Packets」と題する２０００年４月１３日に出願された譲受人同一の同時係属中の米国特許出願第０９／５４８、７１２号にさらに詳細に記載されている。この米国特許出願は参照により全体として本明細書に援用される。同様の技法が、ＵＤＰパケットあたり、またはDirectPlayパケットあたり送信される確認応答メッセージ数を変えるために使用されてもよい。
【００５１】
このような被監視イベントの発生間の時間は通常、オペレーティングシステム内のタイマの現行の細分性よりもはるかに短い。例えば、多くの従来のオペレーティングシステムにあるタイマは、１ないし１０ミリ秒ごと以上の間隔で連続するアクションを実行するように構成されるであろう。他方、連続する被監視ネットワークイベントは、マイクロ秒、またはナノ秒のオーダーでさえ発生し得る。よって、本発明により形成されるタイマによれば、たとえ連続するアクションが互いにマイクロ秒またはナノ秒間隔で発生するようにタイミングをとらなければならない場合であっても、その連続するアクションのタイミングに対するきめの細かい制御が可能である。このような連続するアクションは、必ずしもネットワークパケットの伝送だけではなく、例えば、システムバス上のデータの送信のような他の連続するアクションを含んでもよい。
【００５２】
本発明は、その趣旨または本質的特徴から逸脱することなく、他の特定形態で実施されてもよい。説明した実施形態はすべての点において単なる例示であり制限的ではないとみなされるべきである。したがって、本発明の範囲は、上記の説明によってではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味および均等の範囲内にあるすべての変更が、特許請求の範囲内に含まれるべきである。
【図面の簡単な説明】
【００５３】
【図１】本発明を適用できる実施形態の原理のための好適なオペレーティング環境を示す図である。
【図２】本発明を適用できる実施形態の送信コンピューティングシステムが１つまたは複数の中間コンピューティングシステムを通じて受信コンピューティングシステムへネットワークパケットを送信するネットワーク環境を示す図である。
【図３】本発明を適用できる実施形態のネットワークパケットを歩調合せする方法のフローチャートである。
【図４】本発明を適用できる実施形態の送信コンピューティングシステムの概略図である。
【符号の説明】
【００５４】
１２０  コンピュータ
１２１  プロセッサ
１２２  システムメモリ
１２３  システムバス
１２４  読み出し専用メモリ（ＲＯＭ）
１２５  ランダムアクセスメモリ（ＲＡＭ）
１２６  ＢＩＯＳ
１２７  磁気ハードディスクドライブ
１２８  磁気ディスクドライブ
１２９  リムーバブル磁気ディスク
１３０  光ディスクドライブ
１３１  リムーバブル光ディスク
１３２  ハードディスクドライブインタフェース
１３３  磁気ディスクドライブインタフェース
１３４  光ドライブインタフェース
１３５  オペレーティングシステム
１３６，１３６ａ，１３６ｂ  アプリケーションプログラム
１３７  他のプログラムモジュール
１３８  プログラムデータ
１３９  磁気ハードディスク
１４０  キーボード
１４２  ポインティングデバイス
１４６  シリアルポートインタフェース
１４７  モニタ
１４８  ビデオアダプタ
１４９ａ，１４９ｂ  リモートコンピュータ
１５０ａ，１５０ｂ  メモリストレージデバイス
１５１  ローカルエリアネットワーク（ＬＡＮ）
１５２  広域ネットワーク（ＷＡＮ）
１５３  ネットワークインタフェース
１５４  モデム
２００  コンピュータネットワーク
２１０  送信コンピューティングシステム
２１１Ａ〜２１１Ｊ  ネットワークパケット
２２０  ネットワーク
２２１  中間コンピューティングシステム
２３０  受信コンピューティングシステム
４００  コネクションマネージャ
４０１  コネクション
４０２  ソフトタイマ
４０３  監視モジュール
４０４  フィードバックイベントモジュール
４０５  送信パケットモジュール
４０６  受信パケットモジュール
【図１】
2004229306.tif 000003
【図２】
2004229306.tif 000004
【図３】
2004229306.tif 000005
【図４】
2004229306.tif 000006