(57)【要約】送信中に選択された目標帯域幅ＢTを達成するために、コンテンツのパケットの連続する送信間に用いられることになる待ち時間（ｔｗ）を求める方法及びシステムである。送信されるコンテンツの連続するパケット間の待ち時間は、送信中に達成されることになる選択された目標帯域幅（ＢT）、及びアルゴリズム式（Ｉ）2005516539.tif 000008に基づいたパケットのサイズ（Ｐ）の関数として求められる。本発明は、ネットワークのサービスの品質（ＱｏＳ）機能に依存することなく、ソース（送信装置）における帯域幅の制御を提供するものである。
2005516539.tif 000002
【特許請求の範囲】
【請求項１】
送信中に目標帯域幅（ＢT）を達成するために、送信されることになるコンテンツの既知のパケット・サイズ（Ｐ）をもつ連続するパケットの送信の間に待ち時間（ＴW）を用いる方法であって、
送信中に達成しようとする目標帯域幅（ＢT）を選択し、
アルゴリズム
2005516539.tif 000006
を用いて、連続するパケットの送信間の待ち時間（ｔw）を計算し、
前記待ち時間を用いて、前記パケットの送信を制御する、
段階を含むことを特徴とする方法。
【請求項２】
用いられる前記計算された待ち時間ｔwが、ある時間単位まで丸められることを特徴とする請求項１に記載の方法。
【請求項３】
前記時間単位まで丸めることが、カウンタによって達成されることを特徴とする請求項２に記載の方法。
【請求項４】
パケット送信の開始時間ｔ1を定め、
前記パケット送信の終了時間ｔ2を定め、
ｔ2−ｔ1として、前記パケットの送信に用いられる時間ｔusedを求める、
段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
（ａ）パケット送信に用いられる前記時間（ｔused）を求め、
（ｂ）ｔused−ｔwとして、残余時間（ｔ）を求め、
（ｃ）１つのパケットの送信の終了と次のパケットの送信の開始の間に時間ｔだけ待つ、
段階をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
送信される各々のパケットについて、段階（ａ）、段階（ｂ）、及び段階（ｃ）を繰り返す段階をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記残余時間ｔが、
現在時間ｔnowにパケットを送る開始時間ｔstartの値を求め、
（ａ）時間ｔelapsed＝ｔnow−ｔstartを計算し、
（ｂ）ｔelapsedを前記残余時間ｔと比較し、ｔelapsedの値≧ｔの場合に次のパケットを送信する、ループ動作を実行する、
ことによって制御されることを特徴とする請求項５に記載の方法。
【請求項８】
誤差値δ＝ｔelapsed−ｔを計算し、後に与えられるｔの値から前記値δを減算する段階をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
用いられる前記計算された待ち時間ｔwが、ある時間単位まで丸められることを特徴とする請求項５に記載の方法。
【請求項１０】
前記時間単位まで丸めることが、カウンタによって達成されることを特徴とする請求項９に記載の方法。
【請求項１１】
送信されることになる前記パケットの前記既知のパケット・サイズ（Ｐ）を選択する付加的な段階を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記既知のパケット・サイズ（Ｐ）がアプリケーションによって与えられることを特徴とする請求項１に記載の方法。
【請求項１３】
送信中に目標帯域幅（ＢT）を達成するために、送信されることになるコンテンツの連続するパケットの送信間に待ち時間（ＴW）を用いるための装置であって、
データのパケット内のコンテンツの送信を制御するためのプログラムを含むコンピュータと、
送信されることになる前記パケットの前記サイズ（Ｐ）及び前記所望の目標帯域幅（ＢT）のパラメータを入力し、受け取るための手段と、
アルゴリズム
2005516539.tif 000007
を用いて、連続するパケットの送信間の待ち時間（ｔw）を計算するための処理手段と、
前記パケット間の前記待ち時間ｔwを用いて該パケットを連続的に送信するための制御手段と、
を備えることを特徴とする装置。
【請求項１４】
前記コンピュータが、
パケットの送信の開始時間（ｔ1）を定める手段と、
前記パケットの送信の終了時間（ｔ2）を定める手段と、
ｔ2−ｔ1として、前記パケットの送信に用いられる時間ｔusedを求める手段と、
をさらに備えることを特徴とする請求項１３に記載の装置。
【請求項１５】
前記コンピュータが、
パケットの送信に用いられる前記時間（ｔused）を求めるための第１の手段と、
ｔW−ｔusedとして、残余時間（ｔ）を求めるための第２の手段と、
をさらに備え、
前記制御手段が、１つのパケットの送信の開始と次のパケットの送信の開始の間に前記残余時間ｔだけ待つように作動することを特徴とする請求項１４に記載の装置。
【請求項１６】
前記第１及び第２の求める手段が、送信される各々のパケットについての前記残余時間ｔを求めるように作動し、前記制御手段が、１つのパケットの送信の開始と次のパケットの送信の開始の間の前記残余時間ｔを待つように作動することを特徴とする請求項１５に記載の装置。
【請求項１７】
開始時間ｔstart及び現在時間ｔnowの値を求め、
（ａ）時間ｔelapsed＝ｔnow−ｔstartを計算し、
（ｂ）ｔelapsedを前記残余時間ｔと比較し、ｔelapsedの値≧ｔの場合に次のパケットを送信する、ループ動作を実行する、
ことによって、前記残余時間ｔを制御するための手段をさらに含むことを特徴とする請求項１６に記載の装置。
【請求項１８】
誤差値δ＝ｔelapsed−ｔを計算し、後に与えられるｔの値から前記値δを減算するための手段をさらに備えることを特徴とする請求項１７に記載の装置。
【請求項１９】
前記制御手段が、前記待ち時間ｔwを測定するために、周期的ベースで作動するカウンタをさらに備えることを特徴とする請求項１３に記載の装置。
【請求項２０】
前記コンピュータが、前記制御手段を作動させて、他の測定された時間に基づいて前記待ち時間ｔwを計算することを特徴とする請求項１３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、帯域幅制御を達成するために、データ・パケットを、送信装置から１つ又はそれ以上の受信装置に送信するタイミングを取る方法及びシステムに関する。
【背景技術】
【０００２】
ケーブル、電話線、衛星通信といった様々な媒体を用いてデータ送信を行う場合には、データが、一方の装置から他方の装置に送られることが普通である。データは、まずパケットにフラグメント化すなわちセグメント化され、次にパケットは、送信されるか又は配信される。「パケット」という用語は、一連のバイトを示すために用いられ、送信及び受信の最小単位を表す。以下、「装置」は、データ・パケットを受信及び／又は送信することができるソフトウェア部品を有するハードウェア要素と定義される。こうした装置の例には、コンピュータ、ＧＰＲＳ携帯電話、及びネットワーク機器が含まれる。
ここで用いられる「コンテンツ」という用語は、一連のパケットにセグメント化されるデータを示す。コンテンツ内に含まれるデータは、ファイル又はファイルの一部、データ・ストリームの一部、或いは何らかのデータの集まりとすることができる。コンテンツは、単なるデータ、又は音声及びビデオ・データ・ストリーム、或いは何らかの組合せとすることができる。コンテンツは、送信装置から１つ又はそれ以上の受信装置に順次に送信されるパケットの状態で送られる。
送信及び受信装置は、典型的には、ソフトウェア・プログラムを実行し、該プログラムの目的は、送信装置において、送られることになるコンテンツをパケットにフラグメント化し、受信装置において、受け取ったパケットを元のコンテンツに再組み立てすることである。
【０００３】
帯域幅は、例えば１０Ｍｂｐｓ（１秒あたり１０００万ビット）のような、所定の時間枠に媒体を通して送信することができるデータ量と定義される。本質的には、これは送信速度であり、言い換えると、データが送信装置から受信装置に送られる速度である。各々の送信・受信システムは、送信のために用いられる媒体のタイプ、並びにデータの送信及び受信のために用いられる機器のような、様々な要因によって定められる一定の帯域幅能力を有する。例えば、広帯域のケーブル媒体は、電話線よりも大きな帯域幅能力を有する。
【０００４】
コンテンツを形成するデータ・パケットを送るために、様々なタイプのプロトコルが用いられる。幾つかのプロトコルは、ここでは、ベストエフォート型でパケットを伝達し、特に、失ったパケット又は壊れたパケットの自動再送を行わない何らかの送信プロトコルを意味する、「信頼できない」ものと考えることができる。現在、一般的に使われている「信頼できない」プロトコルの例には、ユニキャスト及びマルチキャストのユーザ・データグラム・プロトコル（ＵＤＰ）、不確実伝送モードのＡＴＭアダプテーション層（ＡＡＬ）タイプ３／４及び５、アップルトークＤＤＰデータグラム、及びユニキャスト及び配信のＭＰＥＧ−２トランスポート・ストリームが含まれる。
【０００５】
多くの場合、異なるファイルからのデータが、同じ媒体を通じて同時に送信されることになる。例えば、特定のシステムが１０Ｍｂｐｓの帯域幅送信能力を有する場合には、２つの異なるコンテンツをもつパケットを、例えば各々が５Ｍｂｐｓの帯域幅のストリームである別箇のストリームで、同時に送信することができる。様々な商業用途においては、同時に用いるために、所定の媒体の利用可能な帯域幅の一部分が、異なる顧客に販売されるか又は使用許諾される。
【０００６】
例えば、ジッタ（すなわち、端末相互間のパケット通過時間の変動量）をできる限り低く保持することが重要である音声及びビデオ送信について、幾つかの用途では、パケットが規則的かつタイムリーに受け取られることが必要である。受信装置における信頼性を高めることは、特に広帯域用途の場合に、送信装置において高精度の帯域幅制御を用いることを意味する。
一般に、広帯域用途の帯域幅の使用は、ネットワークの負荷及び速度、リースされた帯域幅容量、及び受信装置の処理速度に従って選択される。所定の送信のために割り当てられた帯域幅を、以下「目標帯域幅」と呼ぶ。送信の際、用いられる実際の帯域幅は、選択された目標帯域幅に対して変化させることができる。
【０００７】
配信が行われる際、帯域幅は、変化し、いつでも測定することができる。「瞬時」帯域幅は、最短の測定可能時間で測定された帯域幅である。例えば、帯域幅の使用を、せいぜい１秒に１回程度、規則正しく調べることができる場合には、瞬時帯域幅は、ある時間枠（この場合は１秒）に転送されるデータ量を、ある時間間隔で割ることによって計算される。
コンテンツの配信は、「平均（又は中間）帯域幅」を有する。これは、送信の際に送信されたデータの総量を、送信時間で割ったものである。「中間帯域幅」及び「平均帯域幅」という用語は、ここでは互換的に用いられる。
コンテンツはパケットで送信されるため、連続するパケットの送信の開始の間に、休止すなわち待ち時間が存在する。パケット間の待ち時間は、コンテンツの送信の際に用いられる帯域幅に関連している。例えば、一定のパケット・サイズを維持しながらパケット間の待ち時間を長くすると、所定時間中に送信されるデータが少なくなり、逆もまた同様である。
【０００８】
正確な帯域幅制御なしにデータが送られる場合には、様々な問題が起こり得る。基本的には、障害を起こし得る３つの異なるシナリオがある：すなわち、
（１）平均帯域幅が、目標帯域幅の値に対して高すぎる、
（２）平均帯域幅が、目標帯域幅の値に対して低すぎる、
（３）平均帯域幅が、目標帯域幅と等しいか又はこれに極めて近いが、送信中に測定される瞬時帯域幅の値は、該目標帯域幅と異なる、
である。このタイプの送信は、以下、不均一と呼ばれ、すなわちピークを含む。
上述の異なるシナリオにより引き起こされる問題は、経路指定及びスイッチング装置、並びに宛先受信装置のような、データを受信するシステムの様々なコンポーネント及び構造に悪影響を与えることがある。このことは、以下に説明される。
【０００９】
（１）データ・パケットを速く送りすぎる場合。目標帯域幅を超える速度でのデータの配信は、通常、実質的にパケットを失わせる。パケットの損失は、データ送信の完全性を減少させるものである。また、経路指定装置が、入ってくるデータ・ストリームをバッファに入れることができない場合には、速すぎる送信速度により輻輳がもたらされることがある。データが衛星通信のアップリンクに送られる場合には、同じ問題がカプセル化に影響を与えることがある。ここでは、一連のパケット全体が失われる可能性がある。受信装置側では、受け取ったデータを処理するハードウェア又はアプリケーション・プログラムが、帯域幅の中間（平均）値より高い受信データ・ストリームの速度のために設計されていない場合には、パケットの再組み立ては困難なものになる。さらに、データ送信機と受信装置との間にトラフィック・バッファリング機構が設けられていない場合には、該受信装置が接続されるローカル・エリア・ネットワーク（ＬＡＮ）が輻輳を被ることがある。
【００１０】
（２）データ・パケットを遅く送りすぎる場合。パケットが指定された目標帯域幅より遅い速度で送信される場合には、データ・パケットが失われることはないであろう。しかしながら、特にデータ送信機と受信装置との間の接続が、送信されるデータ量を基準とする代わりに帯域幅の使用を基準として購入される場合には、リソースの無駄が生じる。また、受信データ速度が遅すぎる場合には、音声及びビデオ・ストリーミング品質に悪影響を及ぼすことがある。つまり、受け取った音声及びビデオが、断続的で不明瞭なものとなるか、或いは、そうでなければ歪められることになる。
【００１１】
（３）帯域幅の使用のピークの場合。平均出力送信帯域幅が目標帯域幅に近い時でさえ、必ずしもデータ・ストリームに問題がないことが保証されるとは限らない。例えば、送信中のどの瞬間においても帯域幅の使用のピークが存在し得る。また、パケットが、連続的なパケット間で、送信中に均質的に、すなわち完全に一定時間で分散されなかった場合には、所定の瞬間において用いられる帯域幅の増加又は減少をもたらすパケットのクラスター化が生じ、これが瞬時帯域幅である。その結果、中間帯域幅が目標帯域幅より高いか又は低い場合の送信について上述されたものと同じ問題が生じるが、被る悪影響の程度はより小さい。
【００１２】
したがって、いずれかのタイプのコンテンツを含むパケットの送信のための帯域幅の使用をより良く制御できることが望ましい。上述の種々の問題を解決するための従来の試みは、一般に、最大帯域幅を実行するものである。つまり、送信プロトコルは、最大値の帯域幅を超えた時に介入するが、帯域幅の使用が最大値より低い場合には介入しないといったものである。他の既存の解決法は、既存のトラフィック・ストリームを修正するものである。つまり、プロトコルは、内蔵式のトラフィック制御を用いることなく、送信者が引き起こす輻輳問題を解決するために用いられる。さらに、他の既存の解決法は、バッファ空間が超過した時にパケットを廃棄するものである。このタイプの解決法の幾つかは、「水漏れバケツ」アルゴリズム（Ｔａｎｅｎｂａｕｍ、Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋｓ、第３版、ｐ．３８０、Ｐｒｅｎｔｉｃｅ  Ｈａｌｌ）のような、アルゴリズムを用いてパケットを廃棄する。他の解決法は、「トークン・バケツ」アルゴリズム（Ｔａｎｅｎｂａｕｍ、ｐ．３８１）のようなアルゴリズムを用いて、出力ストリームにおける一定量のバースト性を可能にするものである。
【発明の開示】
【００１３】
本発明によると、連続するパケット間の休止（待ち時間）が適切に選択され、パケットが、コンテンツの送信中に選択された待ち時間を用いて送信される場合には、帯域幅を所望の目標帯域幅により近づけた状態で保持できることが分かった。所望の目標帯域幅及びパケット・サイズの選択された入力パラメータに応答して、パケット間の待ち時間を定め、維持する新規な方法及びシステムが提供される。
【００１４】
本発明の方法及びシステムは、データ・ストリームのパケット間の休止すなわち待ち時間を制御することによって、コンテンツの送信のための帯域幅を制御する形態で、データを送信するように働く。この方法及びシステムの一部として、パケット間の送信中の待ち又は休止時間（ｔw）を選択し、制御することによって、送信されることになるコンテンツのパケットの所望のサイズ（Ｐ）を、所望の目標帯域幅（ＢT）と関連付ける新規なアルゴリズムが開発され、実行される。本発明は、ソフトウェア及び／又はハードウェアに実装することができる。
【００１５】
本発明の好ましい実施形態においては、帯域幅制御の精度が、最高解像度のクロック又は送信装置で利用可能な他のタイミング装置の使用によって最大にされる。これにより、待ち時間丸め誤差に対する最良の補正がもたらされる。
本発明の好ましい実施形態においては、パケット間の待ち時間が、一定のパケット・サイズ及び目標帯域幅に基づいて計算される。
本発明は、受信装置からのフィードバックを必要とせず、これを用いもしない。したがって、本発明は、ユニキャスト、マルチキャスト、及び配信送信のために、単信、半二重、全二重媒体と共に用いることができる。
【００１６】
上述の既存の送信問題の解決法と比べると、本発明は、データ・フローを目標帯域幅に向けさせ、必要に応じて送信速度を減少又は増加させる。また、本発明は、ソースにおけるトラフィック制御を提供するので、出ていくトラフィックが円滑に分散され、目標帯域幅に向かう。さらに、本発明は、パケット間に休止を取り入れ、次のパケットが送信されるまで送信を阻止することによって過剰なパケットを防止し、決してパケットを廃棄しない。また、本発明は、バースト性が最小である一定帯域幅の使用を維持する。
【発明を実施するための最良の形態】
【００１７】
本発明の他の目的及び利点は、以下の明細書及び添付の図面を参照すると、より明らかになるであろう。
データ・パケットの送信において、帯域幅は、通常、所定の時間枠に送信されるデータ量と定義される。帯域幅の制御は、帯域幅を制御する能力、すなわち所定のデータ量についての送信速度をいう。帯域幅制御の品質を評価するための重要な値は、中間（又は平均）帯域幅ＢM、すなわち全送信中に実際の送信速度が集まる算術的中間値である。目標帯域幅ＢTは、所定のコンテンツ送信のために必要とされる（選択される）帯域幅と定義される。幾つかの場合において、ＢTは、配信能力によってコンテンツの製造者に販売されるか又はリースされた帯域幅の量である。
ＢTが知られている場合には、中間帯域幅ＢMを次の式：
（ＢT−ε）＜ＢM＜（ＢT＋ε）          （式１−１）
によって定めることができる。ここで、
ＢT＝目標帯域幅
ＢM＝中間帯域幅
ε＝ＢTからのＢMの誤差又は偏位
である。
帯域幅制御の主な目的は、ＢMとＢTの間の誤差εを最小にすることである。これを別の観点から考えると、Εは、
2005516539.tif 000003
として百分率で表される、所望の目標帯域幅ＢTに対して実際に送信された帯域幅の中間の誤差百分率である。
【００１８】
完全なコンテンツの送信のために必要な時間より短い一定時間窓、すなわち瞬時帯域幅に送信されたデータ量を考え、目標帯域幅を有する全体のコンテンツ送信中にこの値を比較することも重要である。瞬時帯域幅の値が目標帯域幅と大きく異なる場合には、データ転送速度が変動することになり、すなわち送信が不均一となるなので、このことが必要である。中間帯域幅ＢMが目標帯域幅ＢTと等しいか又はこれに極めて近い場合でも、このことが起こり得る。
特に許容された目標帯域幅が固定され、例えば、衛星伝送によるデータ送信の場合など、該目標帯域幅を超過することができない場合には、ルータ及び他の経路指定装置について、この帯域幅の使用の不均一性を受信側で管理することは非常に難しい。
【００１９】
瞬時帯域幅（時間枠Δｔに測定された）と目標帯域幅ＢTとの間の差が、送信中の時間ｔにおいてゼロに向かう場合には、理論的に「一定の」帯域幅を得ることができる。すなわち：ε及びΔｔがゼロに向かい、ｔstart＜ｔendである状態で、
（ＢT−ε）＜Ｂ[t,t+Δt]＜（ＢT＋ε）          （式１−３）
であり、ここで、
ｔstart：送信開始時間、
ｔend：送信終了時間、
Δｔ：測定時間枠（これは、送信時間より短くなければならない）、
Ｂ[t,t+Δt]：ｔ及びｔ＋Δｔの間に含まれる間隔に測定された瞬時帯域幅Ｂ、
である。
上記は、理論上の状況でしかなく、実世界で再現することはできない。それにもかかわらず、ここで説明される帯域幅制御は、送信装置によりサポートされる最大の精度を用いて、この理想的な解決法にできる限り近づけるように設計される。
【００２０】
考え得る別のパラメータは、
2005516539.tif 000004
と定義される送信のバースト性であり、ここで、ＢMは、送信コンテンツの中間帯域幅であり、Ｂpeakは、送信中に測定された絶対的瞬時帯域幅値の最高値である。
すなわち：
Ｂpeak＝ｍａｘ（Ｂ[t,t+Δt]）          （式１−５）
である。
理想的には、バースト性は、１に近づくはずである。つまり、用いられる帯域幅は、Ｂtに集まるべきである。同じ条件のバースト性の下では、Ｂpeakの繰り返しについての情報がこの値に与えられないので、送信の不均一性が異なることにも注目されたい。実際には、バースト性の値は、ピークが、中間帯域幅ＢMに対してどのくらい大きいかを示すが、送信中にピークが何回繰り返されるかを示すものではない。つまり、送信は、１回又は１０００回のピークを経験するが、値Ｂpeakは、大部分又は全ての場合において同じである。また、送信の不均一性つまりピークの頻度についての情報は与えられない。
【００２１】
送信のためのユーザ・データグラム・プロトコル（ＵＤＰ）のような信頼できないネットワーク・プロトコルを利用するアプリケーション・プロトコルは、一般に、所定の送信についての目標帯域幅ＢTを指定することができない。直接制御がない結果として、データは、ネットワーク・インターフェースによって許容された最大帯域幅で送られる。プログラムが、コンテンツをネットワーク・カードに送るという命令を伝達する際、そのコンテンツは、該ネットワーク・カードにより許容された最大速度（帯域幅）で送られる。例えば、ネットワーク・カードが１０Ｍｂｐｓの帯域幅を処理できる場合には、コンテンツはパケットにフラグメント化され、これらのパケットは、１０Ｍｂｐｓでネットワーク上に送られ、アプリケーション・レベルの制御はない。
【００２２】
本発明によると、帯域幅の使用を制御し、選択された目標帯域幅ＢTを達成するために、連続するパケットの送信間に待ち時間又は標準残余時間が置かれる。本発明の方法及びシステムは、平均送信帯域幅ＢMができる限り帯域幅ＢTに近づくように、この休止を取り入れることによって、帯域幅制御を達成する。また、コンテンツの送信中に測定される全ての「瞬時」帯域幅の値が、できる限り目標帯域幅ＢTに近くなるようにされる。このために、パケット間の時間のタイミングを取る際に高い精度が必要とされ、好ましくは、このタイミングは、できる限り正確にすべきである。待ち時間のために必要とされる必要な精度は、目標送信帯域幅ＢTによって決まる。下に説明するように、目標帯域幅ＢTの値が高くなる程、該目標帯域幅から実際の使用のための許容可能な値までの偏位Εを維持するために、パケット間の休止の精度の制御が大きいものになる。
【００２３】
送信されることになるデータのコンテンツを、例えば、８１９２バイトのパケットに分割し、目標帯域幅ＢT＝１０Ｍｂｐｓで一定量のデータを送信することを必要とする、以下の例を考える。これは、６．５５３６ミリ秒（８１９２バイト＝８１９２*８＝６５５３６ビット。１０Ｍｂｐｓ＝毎秒１０００００００（一千万）ビットである。６５５３６を１０００００００で割ると＝＞待ち時間（パケット間の）＝０．００６５５３６秒＝６．５５３６ミリ秒）である、全ての送信されたパケット間の待ち時間又は休止として計算する。パケット間の待ち時間を求めるための時間測定システムの精度が、例えば１ミリ秒クロックのような１ミリ秒である場合には、この時間の値は、計算された６．５５３６ミリ秒から切り下げ又は切り上げしなければならず、該待ち時間は、６又は７ミリ秒となる。６又は７ミリ秒に丸めることは、それぞれ、平均帯域幅の使用において指定されたＢT＝１０Ｍｂｐｓから−６．３８％又は９．２３％の誤差を生じる。この例は、配信中のパケット間の待ち時間間隔の正確な計算に対する必要性を示す。平均帯域幅ＢMが目標帯域幅ＢTと等しいことを保証するために、理論的には、待ち時間を丸めるべきではない。実際には、幾つかの場合、この値は、ソフトウェア及びハードウェアの制限のために丸めなければならない。以下に説明されるように、送信装置によりサポートされる最も高い精度が用いられ、よって達成される帯域幅制御が、用いられるソフトウェア及びハードウェアの構成のために最適化されることが好ましい。
【００２４】
上述のように、高精度の制御を提供するために、考慮すべき重要な態様は、連続的に送信されるパケット間の待ち時間の測定に対する時間粒度（精度）である。例として、図４は、８ＫＢのパケット・サイズをもつ、１０Ｍｂｐｓまでの帯域幅における所定の送信についての、指定された（目標）帯域幅ＢTにおける絶対的誤差百分率Ε（対数目盛）を示す。上方の曲線は、ミリ秒までの待ち時間の丸めを用いた誤差を示し、下方の曲線は、マイクロ秒まで待ち時間の丸めを用いた誤差を示す。丸めがマイクロ秒（高精度）までである際には、誤差はより少なくなることが分かる。
【００２５】
図５は、８ＫＢのパケット・サイズをもつ、１００Ｍｂｐｓまでの帯域幅における所定の送信についての、指定された目標帯域幅ＢTにおける絶対的誤差百分率Ε（対数目盛）を例として示す。上方の曲線は、ミリ秒までの待ち時間の丸めを用いた誤差を示し、下方の曲線は、マイクロ秒までの待ち時間の丸めを用いた誤差を示す。実際の帯域幅の使用の誤差百分率Εは、決して０．１％を超えないことが分かる。待ち時間をミリ秒まで丸めることによって、結果として生じる誤差が著しく大きくなり、実際の帯域幅の使用は、５０ＭｂｐｓのＢTにおける目標帯域幅より４５−５０％高くなり、ＢT＝１００Ｍｂｐｓにおけるものより３５％低くなる。
【００２６】
図６は、パケット・サイズ＝８ＫＢの場合の、パケットの送信間の待ち時間をマイクロ秒まで丸めた場合の、所定の例示的な送信（１Ｇｂｐｓまで）についての指定された帯域幅ＢTにおける誤差百分率Εを示す。ミリ秒まで丸めた時に得られる誤差百分率は、このグラフ上に示されていない。マイクロ秒まで待ち時間を丸めることによって、１Ｇｂｐｓまでの目標帯域幅ＢTにおける誤差百分率は、最悪の場合でも０．８％より下にとどまる。このことは、中間帯域幅ＢMと目標帯域幅ＢTとの間の差が、８Ｍｂｐｓより下になることを意味する。これは、１Ｇｂｐｓまでの送信速度について許容可能であると考えられる。しかしながら、１マイクロ秒の粒度を用いることは、１Ｇｂｐｓより著しく低い場合であっても、目標帯域幅について、ずっと高く、許容できない誤差を生み出す。
パケット・サイズ（Ｐ）は、送信中に重要な役割を果たす。一般に、少なくともマイクロ秒の精度まで丸められた場合には、パケット・サイズが大きくなるにつれて、中間帯域幅ＢMに対する目標帯域幅ＢTの誤差百分率が小さくなる。これは、パケット・サイズが大きくなる場合、所定の送信コンテンツに対するパケット数が減少し、その結果、パケットの所定の送信間の待ち時間の発生数が減少し、丸め誤差の合計を減少させるという事実によるものである。
【００２７】
本発明においては、送信時の帯域幅は、パケット間の待ち時間間隔ＴWの予め定められた値を選択し、配置することによって制御される。待ち時間間隔ＴWは、利用可能な最高解像度のタイミング装置を用いることにより、送信装置において可能な最高精度で計算することが好ましい。上に示されるように、Ｍｂｐｓ範囲の送信速度についての許容可能な帯域幅制御を保証するために、少なくともマイクロ秒の粒度が好ましい。
帯域幅制御を達成するのに適用されるアルゴリズムは、次のとおりである、すなわち：
目標帯域幅ＢT及びパケット・サイズＰが与えられた場合に、各パケット間の待ち時間間隔ＴWは、
2005516539.tif 000005
である。
【００２８】
作動において、ＢT及びＰの両方は、送信を制御するコンピュータへの入力パラメータとして与えられる。目標帯域幅ＢTは、ユーザ・インターフェースを通じて送信を送りたい人によって設定することができる。例えば、第３者にコンテンツを送りたい場合には、ファイルが送信されることになる「速度」がユーザによって入力された場合にプログラムを利用できる。つまり、目標帯域幅ＢTは、入力パラメータとして与えられる。
パケット・サイズＰのパラメータについては、一般に、送信を配信するためにプログラムがインストールされる際にパケット・サイズが設定され、次に、パケット・サイズは、全ての送信について同じに保持される。例えば、パケット・サイズを、設定ファイル内に含ませることができる。パケット・サイズは、別箇のパラメータとして入力することもできる。典型的な使用においては、送られることになるコンテンツ及び目標送信帯域幅ＢTが選択される。次に、配信・アプリケーションが、該配信・アプリケーションによって前もって設定されるか、又は入力された構成設定から、必要とされるパケット・サイズを読み取る。この時点で、配信・アプリケーションは、送信されることになるファイルを小さなパケットに「フラグメント化」する。一般的には、これらのパケットのヘッダは、受信者のアドレス及びパケットのコンテンツについての情報を指定する。パケット・サイズが、送信されることになるコンテンツをパケットにフラグメント化する前に、設定又は入力から読み取られているので、配信・アプリケーションは、既に該パケット・サイズを知っている。
【００２９】
使用において、配信・アプリケーション・プログラムと共に用いるように選択された目標帯域幅ＢTは、用いられることになる送信媒体、及び使用のためにリースされるか又は購入された帯域幅の量といった他の要因に大きく基づいている。
パケット・サイズの送信中、ループ動作が、次のようにあらゆるパケット送信について繰り返される。すなわち、
（１）実際の時間値ｔ1を得る（パケット送信の開始として）、
（２）パケットを送信する、
（３）実際の時間値ｔ2（パケット送信後）を得る、
（４）パケットを送るために用いられる時間ｔusedを計算する、ここで、
ｔused＝ｔ2−ｔ1          （式２−２）
（５）値ｔ（残余時間）を計算する、
ｔ＝ｔw−ｔused          （式２−３）
（６）ｔを待つ、
（７）段階１に進む。
【００３０】
図７を参照すると、これは、種々の時間を示す。見られるように、ｔwは、２つの連続するパケットの開始（ｔ1）の間の時間であり、一方、ｔは、１つのパケットの終了（ｔ2）了と次のパケットの開始（ｔ1）との間の時間である。残余時間値ｔは、それぞれ選択されたパケット・サイズＰ及び目標帯域幅ＢTに基づいたものにしなくてはならない。
データのパケットを送る作業は時間がかかる。つまり、時間ｔusedは、パケットを物理的に取り、これをネットワーク上で送るために用いられる。待ち時間ｔwが達成されるのに十分な時間があることを保証するために、送信装置は、パケット送信作業が完了した後、残余時間ｔだけ待つ必要がある。計算されたパケット間の待ち時間ｔwにより、必要とされる目標帯域幅において情報が送られることが保証される。つまり、残余時間ｔは、（連続するパケット間を待つ）ｔwと（パケットを送るための）ｔusedとの間の差である。
【００３１】
図１は、データ・パケットの送信について説明する図である。送信ステーションにおいて、配信・アプリケーション・プログラムがインストールされたコンピュータ１０がある。配信・アプリケーション・プログラムは、データ・パケット内の送信されることになるコンテンツ１２上で作動する。送信目標帯域幅ＢT及びパケット・サイズＰのパラメータが、コンピュータ１０に入力される。上述のように、パケット・サイズの値Ｐは、既にコンピュータに知られている。パケット・サイズの値Ｐは、必要に応じて設定することができる。コンピュータは、式２−１のアルゴリズムから待ち時間ｔwを計算し、連続するパケット間に制御された待ち時間ｔwを有するものとして示されるパケット１８（黒色バー）の送信１６を制御するように作動する。
パケット１８は、受信アプリケーション・プログラムがインストールされたコンピュータ２０で受け取られる。このプログラムは、受け取ったパケットを、送られたコンテンツ・ファイル１２に対応するファイルに再組み立てする。これは従来のものである。
【００３２】
図２は、全体のプロセスのフローチャートである。ここでは、Ｓ１及びＳ２において、目標帯域幅ＢT及びパケット・サイズＰがコンピュータに入力される。Ｓ３において、コンピュータは、式２−１のアルゴリズムに従ってｔwを計算する。計算された値ｔwは、Ｓ４において制御パラメータとして用いられ、この制御パラメータは、配信・アプリケーション・プロセスＳ５に入力される。ｔwの値は、Ｓ６において入力として配信・プロセスＳ５に送られるファイルに適用される。Ｓ２からパケット・サイズを、Ｓ３から待ち時間を知っている配信・プロセスＳ５は、Ｓ７パケットを送信する。
【００３３】
図３は、上述のような残余時間ｔを得るためのタイミング・ループの段階を実行するコンピュータの作動を示す。Ｓ１０１において、パケット送信の開始における時間ｔ1が、Ｓ１０２において定められ、格納される。Ｓ１０３において、送られることになるパケットが利用できるようにされ、Ｓ１０４において送られる。Ｓ１０５において、パケット送信の終了時間ｔ２が、Ｓ１０６において定められ、格納される。Ｓ１０８において、パケットを送信する際の時間量ｔusedが計算され（Ｓ１０６の値からＳ１０２の値を減算する）、Ｓ１１０において利用できるようにされる。
Ｓ１１１において、計算されたｔwの値（Ｓ４を参照されたい）は、残余時間ｔ（式２−３を参照せよ）を計算するために、（Ｓ１１０から）ｔusedと共にＳ１１２において用いられる。計算された残余時間の値ｔは、Ｓ１０１及びＳ１０２において次のパケットの送信が開始される前に、Ｓ１１６において満足されるべき時間として、Ｓ１１４において利用可能になる。
【００３４】
式２−１のアルゴリズムを用いると、式２−２の現在時間の値ｔ1及びｔ2を得、式２−４の残余時間を待つために用いられる機能は、少なくともマイクロ秒の粒度（精度又は解像度）有する。粒度をより正確にすることは、目標帯域幅ＢTに対する実際の中間帯域幅ＢMの誤差Εを減少させる。ｔ1及びｔ2の値を得る最も直接的な方法は、タイミング・クロックからといったように、作動システムから実際の時間を得ることである。しかしながら、このことは、作動システムがマイクロ秒の精度のタイマーを有することを意味する。この機能がない場合には、高精度のハードウェア・カウンタを用いることができる。カウンタは、段階的な変数に関するプログラミングに用いられる一般的な用語である。幾つかのシステムは、高解像度の経過時間を提供する高解像度性能のカウンタを含む。カウンタの値は、コンピュータの中央処理ユニット（ＣＰＵ）によって管理され、作動システムによって読み取られる。通常、カウンタは、時間計算に加えて他のタスクが実行される場合には、ＣＰＵ共用作動システムにおいてハードウェア制御されなければならない。カウンタの頻度の増加、すなわち一秒にカウンタが何回増えるかが知られている場合には、２つの異なる時間におけるカウンタ値を得、この差をカウンタの頻度で割ることによって、ｔusedのような時間間隔を計算することが可能である。見られるように、高精度のカウンタを用いることが望ましい。しかしながら、あらゆる信頼できるカウンタを使うことができるが、帯域幅が制御される精度を最大にするために、装置上で利用可能な最高解像度のカウンタを用いるべきである。
【００３５】
別の重要な問題は、所定の残余時間間隔ｔの間にパケットを送るプログラムをどのようにサスペンドするかということである。上に示されるように、パケットが送信された後、プログラムは、別のパケットを送る前に残余時間ｔ＝ｔw−ｔusedが経過するのを待たなくてはならない。配信装置が、所望の粒度を有する残余時間を求めるタスクを達成するのに必要なハードウェア及び／又はソフトウェア機能をもっていないが、所望の粒度と共に現在時間を知るための少なくとも１つの方法を提供する場合には、他のアプローチを用いることができる。
【００３６】
１つのアプローチが、図８に示される。ここでは、段階Ｓ２０１において、残余時間ｔが与えられ、Ｓ２０３及びＳ２０５において、所定のｔstartの値（ｔw関数の開始）及びｔnow（現在時間）が与えられる。時間ｔelapsedが、
ｔelapsed＝ｔnow−ｔstart          （式３−１）
のように、Ｓ２０７において計算される。ループにおいて、次のパケットが送られる前に待つために、ｔelapsedと残余時間ｔとの間の差の値を、Ｓ２０９において周期的に比較する関数（すなわち、ソフトウェア・プロセス）が、実行される。ｔelapsedの値が、所望の残余時間ｔと等しいか又はこれより大きい場合には、ループ・プロセスが終了し、プログラムを続けさせ、新しいパケットを送る。時間計測が高精度を有し、下に説明される適当な値が頻繁な間隔で比較される場合には、このアプローチは高精度をもたらす。
【００３７】
図８の方法は、次のようなアルゴリズムにおいて説明することができる。すなわち、
Ｓ２０１  所望の残余時間ｔ（すなわち、パケットの送信をどれくらい長くサスペンドすべきか）を得る、
Ｓ２０３  開始時間ｔstartを得（待ちプロセスが呼び出された場合）、できるだけ頻繁に次のループを実行し続ける、
Ｓ２０５  現在の時間ｔnowを得る、
Ｓ２０７  ｔnow−ｔstart＝ｔelapsedを計算する。
ｔelapsedがｔより大きいか又はこれと等しい場合には（Ｓ２０９）、ループを終了し、プログラムを実行し続ける。
プロセスがループを終了する時、（ｔnow−ｔstart）は、残余時間ｔより大きいか又はこれと等しい。他の場合には、ループは実行し続ける。幾つかの場合において、ｔelapsed（ｔnow−ｔstart）は、残余時間ｔより大きい、すなわち、プロセスが該残余時間ｔより長く待つことが起こり得る。
【００３８】
図８に用いられるものと同じ段階が同じ参照番号を用いて示される図９に、図８のプロセスの改良が示される。図９のプロセスにおいて、ｔelapsedと残余時間ｔとの間に生じる小さな差δが、該プロセスの各々の呼び出し内に考えられる。まず、Ｓ２００において、δの値がゼロに設定される。段階Ｓ２１１が、δが計算される図８のプロセスに付加される。すなわち、
δ＝ｔelapsed−ｔ          （式３−２）
値δは、次のプロセス呼び出しのためにＳ２１３に格納され、Ｓ２１０において、次の残余時間ｔ（次のｔw周期の開始の次の呼び出しにおいて、プロセスへの入力として渡された）から減算される。
【００３９】
図９のプロセスは、誤差δを用いて残余時間ｔを修正することによって、丸め誤差を動的に補正する。このように、丸めにより生じた誤差にもかかわらず、１つのパケットと次のパケットの送信間に費やされた時間は、平均してｔwに向かう傾向がある。１つの周期にもたらされた誤差は、次の周期において補正される。この修正を用いると、全体の送信中一定に保持される、図８のプロセスにおけるパケット間の待ち時間ｔw（Ｐ及びＢTから計算される）は、前の誤差を補正するために動的に変化する。この誤差の補正期間の際、瞬時帯域幅の使用が、目標帯域幅ＢTを超えることがある。
この誤差修正プロセスの工程は、用いられる中間帯域幅ＢMの精度を増加させるために用いられる瞬時帯域幅の精度を減少させる。用いられる瞬時帯域幅が目標帯域幅ＢTを超える期間は、上述の丸め誤差によって決まる。高解像度のクロック又はカウンタの使用が、この期間を制限する。このために、この修正は、短時間の間目標帯域幅を超えることが可能であり、許容可能な場合にのみ実行すべきである。
【００４０】
バースト性状況を考えると、タイミング丸め誤差が補正されない場合には、考えられる最も低いバースト性の限界は、送信装置により与えられるタイミング機能を用いて制限されるが、平均帯域幅を目標帯域幅ＢTより低くすることができる。タイミング丸め誤差が補正された場合には、平均帯域幅は、送信装置により与えられるタイミング機能を用いて、できる限り目標帯域幅に近いものにされるが、バースト性は、誤差修正が用いられなかった場合よりも大きくなる。
送信制御プロトコル（ＴＣＰ）のような信頼できるプロトコルは、受信の確認通知及び失われたか又は破損したデータ・パケットの再送信のために、付加的なパケットを送る。送信装置は、一般に、送られる付加的なパケットの数又はサイズを判断することができず、そのため、用いられる帯域幅を制御できない。このために、本発明は、主として信頼できないパケット・ベースのプロトコルと共に用いられる際に著しく有益である。
【００４１】
本発明の帯域幅制御方法及びシステムは、如何なるサイズのコンテンツに適用することもできる。送信者が事前にコンテンツのサイズを知る必要はない。前もって必要とされる唯一の知識は、以下Ｐと示されるパケットのサイズと目標帯域幅である。パケット間の標準残余時間を待つのに用いられるプロセス及び／又は装置が十分に正確である場合には、コンテンツのサイズは、送信時間に影響するだけであり、平均帯域幅に影響を及ぼさない。
本発明の方法及びシステムを、既存のトラフィック・シェーピング解決法と共に用いることができる。多くの送信装置、多くの受信装置、及び送信者と受信者との間のトラフィック・シェーパを有するネットワークを考える。１つ又はそれ以上の送信装置がバースト性のトラフィックを生成する場合には、トラフィック・シェーパは、パケットを廃棄することによって結果として生じる輻輳を含むように介在する。１つ又はそれ以上の送信装置において本発明を取り入れることは、出力ストリームのバースト性を減少させ、よって輻輳及びパケット損失の可能性を減少させる。
【００４２】
各々の特徴は、本発明による他の特徴と組み合わせることができるので、本発明の特定の特徴は、便宜のためだけに１つ又はそれ以上の図面に示される。別の実施形態が、当業者によって認識され、特許請求の範囲の範囲内に含まれるように意図される。
【図面の簡単な説明】
【００４３】
【図１】本発明のシステムの実施の概略的な図である。
【図２】プロセスのフローチャートである。
【図３】種々のタイミング関数の生成を示すフローチャートである。
【図４】１０Ｍｂｐｓまでの例示的な送信帯域幅についての指定された目標帯域幅に対する誤差百分率を示す図である。
【図５】１００Ｍｂｐｓより上の例示的な送信帯域幅についての指定された目標帯域幅に対する誤差百分率を示す図である。
【図６】１Ｇｂｐｓまでの例示的な送信帯域幅についての指定された目標帯域幅に対する誤差百分率を示す図である。
【図７】パケット間の種々の時間関係を示す図である。
【図８】連続するパケット送信の開始の間の一定値の待ち時間を生成するための別の関数を示すフローチャートである。
【図９】誤差補正機構を取り入れる、図８の関数の修正である。
【図１】
2005516539.tif 000009
【図２】
2005516539.tif 000010
【図３】
2005516539.tif 000011
【図４】
2005516539.tif 000012
【図５】
2005516539.tif 000013
【図６】
2005516539.tif 000014
【図７】
2005516539.tif 000015
【図８】
2005516539.tif 000016
【図９】
2005516539.tif 000017
【国際調査報告】
2005516539.tif 000018
2005516539.tif 000019