(57)【要約】【課題】フローを確立するコンピュータプログラムやネットワークの状況の時間変化に即応して、フロー単位のシェーピングを制御し、フロー制御方式等に起因するデータ転送量の変化を、フロー単位で平滑化する。【解決手段】ネットワークを介してデータ通信装置間にフローを確立して行うデータ通信に対してシェーピングを行うシェーパーの動作を制御する際に、データ通信装置がフローを識別し、識別したフローに対してシェーピングを行うか否かをデータ通信装置が指定し、指定に応じてフローを単位とするシェーピングを行う。【選択図】図１
2007013449.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してデータ通信装置間にフローを確立して行うデータ通信に対してシェーピングを行うシェーパーの動作を制御する方法において、
前記データ通信装置が前記フローを識別する段階と、
識別した前記フローに対してシェーピングを行うか否かを前記データ通信装置が指定する段階と、
前記指定に応じて前記シェーパーがフローを単位とするシェーピングを行う段階と
を含むことを特徴とするシェーパー制御方法。
【請求項２】
請求項１に記載のシェーパー制御方法において、前記データ通信装置が、シェーピングに関する設定情報であるシェーピング設定情報を、フロー単位で指定することを特徴とするシェーパー制御方法。
【請求項３】
請求項２に記載のシェーパー制御方法において、フローの通信状況に応じてそのフローの前記シェーピング設定情報を更新することを特徴とするシェーパー制御方法。
【請求項４】
請求項１に記載のシェーパー制御方法において、前記指定でシェーピングを行うと指定されていないフローに対し、ベストエフォート型の通信を提供することを特徴とするシェーパー制御方法。
【請求項５】
データ通信システムにおいて、
当該データ通信装置と他のデータ通信装置との間のフローに対してシェーピングを行うか否かを、フロー単位で指定する手段と、
前記指定に応じてフロー単位にシェーピングを行うシェーパーと
を備えることを特徴とするデータ通信システム。
【請求項６】
請求項５に記載のデータ通信システムにおいて、
シェーピングに関する設定情報であるシェーピング設定情報をフロー単位で指定する手段を更に備え、
前記シェーパーは、前記シェーピング設定情報に従ってシェーピングを行う
ことを特徴とするデータ通信システム。
【請求項７】
請求項６に記載のデータ通信システムにおいて、フローの通信状況を推定する手段を更に備え、前記推定の結果に応じて、そのフローの前記シェーピング設定情報を更新することを特徴とするデータ通信システム。
【請求項８】
請求項５に記載のデータ通信システムにおいて、前記指定でシェーピングを行うと指定されていないフローに対し、ベストエフォート型の通信を提供することを特徴とするデータ通信システム。
【請求項９】
制御インタフェース及びデータ転送インタフェースを介してコンピュータに接続されることにより、当該コンピュータにネットワークインタフェースを提供するネットワークインタフェース装置において、
フロー単位にシェーピングを行うシェーパーを備えることを特徴とするネットワークインタフェース装置。
【請求項１０】
請求項９に記載のネットワークインタフェース装置において、前記コンピュータまたは前記コンピュータとの間にフローを確立してデータ通信を行う他のコンピュータにより指定されたフローに対し、前記シェーパーにてシェーピングを行うことを特徴とするネットワークインタフェース装置。
【請求項１１】
請求項９に記載のネットワークインタフェース装置において、前記コンピュータまたは前記コンピュータとの間にフローを確立してデータ通信を行う他のコンピュータが生成したシェーピングに関する設定情報に従って、前記シェーパーでのシェーピングに関する設定を行うことを特徴とするネットワークインタフェース装置。
【請求項１２】
請求項９に記載のネットワークインタフェース装置において、前記コンピュータまたは前記コンピュータとの間にフローを確立してデータ通信を行う他のコンピュータが取得したそのフローの通信状況に応じて、前記シェーパーでのシェーピングに関する設定を更新することを特徴とするネットワークインタフェース装置。
【請求項１３】
請求項１０乃至１２のいずれかに記載のネットワークインタフェース装置において、当該ネットワークインタフェース装置に対する制御情報を格納したパケットから、前記指定及び設定情報を抽出する手段を備えることを特徴とするネットワークインタフェース装置。
【請求項１４】
請求項１０に記載のネットワークインタフェース装置において、前記指定を受けていないフローに対し、ベストエフォート型の通信を提供する処理を行うことを特徴とするネットワークインタフェース装置。
【請求項１５】
ネットワーク中継装置において、
フロー単位にシェーピングを行うシェーパーを備え
フローを確立するデータ通信装置からの依頼に応じて、当該フローに対するシェーピングを行う
ことを特徴とするネットワーク中継装置。
【請求項１６】
請求項１５に記載のネットワーク中継装置において、フローを確立するデータ通信装置が生成した当該フローのシェーピングに関する設定情報に応じて、前記シェーパーでのシェーピングに関する設定を行うことを特徴とするネットワーク中継装置。
【請求項１７】
請求項１５に記載のネットワーク中継装置において、フローを確立するデータ通信装置が取得した当該フローの通信状況に応じて、前記シェーパーでのシェーピングに関する設定を行うことを特徴とするネットワーク中継装置。
【請求項１８】
データ通信装置との間にフローを確立してデータ通信を行う処理をコンピュータに実行させるコンピュータプログラムにおいて、
前記フローを識別するフロー識別情報を生成する処理と、
前記フローに対してシェーピングを行うか否かを指定するフラグを生成する処理と、
前記フロー識別情報及びフラグに応じてシェーパーにシェーピングをさせるため、前記フロー識別情報及びフラグを出力する処理と
をコンピュータに実行させるコンピュータプログラム。
【請求項１９】
請求項１８に記載のコンピュータプログラムにおいて、更に、前記フローに対するシェーピングに関する設定情報であるシェーピング設定情報を生成する処理を、コンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項２０】
請求項１９に記載のコンピュータプログラムにおいて、更に、
フローの通信状況を推定する処理と、
前記推定の結果に応じて前記シェーピング設定情報を生成する処理と
をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ通信ネットワークにおけるシェーピングに関し、特にシェーピングの制御に関する。
【背景技術】
【０００２】
インターネット等のデータ通信ネットワーク（以下単にネットワークと記す）を介して大量のデータを転送する際に、送信側からの送出データパケット（以下ＤＡＴＡまたはＤＡＴＡパケットと記す）を短時間精度で測定すると、短い時間間隔でＤＡＴＡパケットをバースト的に送信する時間帯と、なにも送らない時間帯が交互に繰り返される場合が多くみられる。このようなバースト送信と中断を繰り返すトラヒックを、以下ではオン・オフトラヒックと呼ぶ。
【０００３】
こうした転送速度のむらを平滑化する技術としてシェーピングがある。特許文献１には、ピークレートシェーパーとＷＦＱスケジューラとを組み合わせて、多数のユーザ接続に対してピークレートシェーピングと平均帯域保障の両方を提供することを目的としたトラヒック管理システムが開示されている。
【０００４】
また、特許文献２には、各トラヒックの最低保障帯域を保障し、かつ、通信回線の空き帯域を有効に利用して可変長パケットを転送できるトラヒックシェーパーが開示されている。
【０００５】
特許文献１及び２のいずれも、ネットワークサービス提供者あるいはネットワークを管理する立場に立ってユーザ単位でトラヒックをまとめて扱っている。
【０００６】
これらの従来技術ではユーザ単位やデータ通信装置単位にシェーピングを行っている。このため、同一ユーザ、同一データ通信装置が複数のフローを確立していて、その中の一フローで輻輳が発生すると、他のフローにも悪影響が及ぶ。
【０００７】
オン・オフトラヒックのパケットは、ネットワーク内のボトルネック部分で短時間の輻輳を起こし、廃棄されることが多い。また、同じボトルネックを通る他のフローのパケットも廃棄されることが多い。この結果、そのフロー自身の通信品質が低下するだけではなく、同じボトルネックを通る他のフロー通信品質も低下する。更には、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のように、パケットが廃棄されるとそのパケットを再送するプロトコルでは、再送パケット数を増加させることになるため、ネットワークのリソース、即ち、通信帯域及びルータ等の処理能力の利用効率を低下させることとなる。
【０００８】
ＴＣＰプロトコルの送信データパケットでオン・オフトラヒックが発生するのは、スロースタートと呼ばれるＴＣＰプロトコルのフロー制御方式による。スロースタートでは、送達確認パケット（以下ACKまたはACKパケットと記す）の受信に応じて、送信ウィンドウサイズを１、２、４、・・・と増加させていく。つまり、ＡＣＫパケットを受信する毎に、前回の応答よりも大きなデータパケットの塊を送出することになる。図１５（Ａ）は、ＴＣＰ−Ｒｅｎｏと呼ばれるバージョンのＴＣＰにおける送信ウィンドウサイズの増加の契機を模式的に示している。これによると、ＡＣＫパケット到着時に送信ウィンドウサイズを増加させるためにデータパケットが塊になる傾向が見て取れる。
【０００９】
他方、送達確認を行わないＵＤＰプロトコルでもオン・オフトラヒックが発生することがある。これは、ＵＤＰプロトコルを使用して動画像などを転送するアプリケーションプログラムが、データパケットの送信周期を制御できるか否かは、ＯＳの種類等に依存するからである。ＯＳ−Ａ及びＯＳ−Ｂの２種類のＯＳ上にて、ＵＤＰプロトコルを使用して画像を転送するアプリケーションプログラムを実行し、１０パケット毎の平均送信レートをプロットしたのが図１５であるが、これによると、ＯＳ−Ａでは、１００Ｍｂｐｓに近いレートで１０ｍｓの時間送出した後、２５ｍｓ休み、その後また１００Ｍｂｐｓに近いレートで１０ｍｓの間送出することを繰り返している。一方、ＯＳ−Ｂでは、ほぼ３０Ｍｂｐｓに近いレートで比較的安定して送出している。
【００１０】
ＯＳ−Ａでオン・オフトラヒックが発生するのは、ＯＳ−Ａのスケジューラを起動する基本周期が、ＤＡＴＡパケットの送信周期よりも長いからである。定常的な送信レートで出力するようにするためには、現在広く一般に使われているＯＳのスケジューラが起動される基本周期よりも短い時間間隔でＤＡＴＡパケットを送信する必要がある。例えば、１０２４バイトのＤＡＴＡパケットを、送出レートを３０Ｍｂｐｓで等しい時間間隔で送り出すためには、約２７０マイクロ秒間隔でパケットを送出する必要がある。広く一般に使われているＯＳでは基本周期が１０ミリ秒程度であり、１ミリ秒以下の周期で正確に送信プログラムを起動することはできない。
【００１１】
更に、ＴＣＰのようにパケットの廃棄に応じてそのパケットを再送するプロトコルを使用して、動画像をリアルタイムで転送し表示するアプリケーションプログラムなどでは、パケット廃棄の発生に応じて、廃棄分を補うためのバーストトラヒックが発生してDATAパケットをバースト的に送信し、このバースト送信が次のパケット廃棄の原因となるといった悪循環が起きることにより、安定した動作が回復するまでの時間が長時間化する現象が見られる。これは次のような理由によると考えられる。
【００１２】
ＴＣＰを使用して動画像をリアルタイムで転送・表示するアプリケーションプログラムなどでは、受信側アプリケーションプログラムが多くのバッファを用意し、パケット廃棄などによる一時的な到着データの遅れを吸収している。
【００１３】
受信側のＴＣＰプロトコルはパケット廃棄が発生すると再送パケットが届くまで受信データをアプリケーションに引き渡せないので、アプリケーションプログラムからみるとデータの到着が一時的に中断する。リアルタイムアプリケーションプログラムなので、アプリケーションプログラムのバッファ内のデータ量は、時間と共に減少する。受信側アプリケーションプログラムは、バッファ内のデータ量の減少を検知するとバッファ内のデータ量を回復させようとしてＴＣＰプロトコルを経由して最高速でデータの読み取りを行う。このためＴＣＰプロトコルは、再送データを受け取った後にデータパケットが到着すると、常に次のデータパケットを期待するＡＣＫパケットを返送するようになる。次のデータパケットを期待するＡＣＫパケットを受け取った送信側ＴＣＰプログラムは、次々とＤＡＴＡパケットを送ろうとし、ピークレートは増加する。このピークレートの増加が更にパケット廃棄などを引き起こす確率を増加させる。
【００１４】
尚、ＡＣＫパケットのヘッダ部には受信バッファ量が設定されている。アプリケーションが受信データを引き取らないとＴＣＰは返送するＡＣＫパケットヘッダ部の受信バッファ量を削減し送信側でのデータ送信を抑制する。ここでいうデータパケットを期待するＡＣＫパケットとは、送信側でデータの送出を抑制することがない大きな受信バッファ量が設定されているＡＣＫパケットのことをいう。データパケットが安定して流れているときには送信側でのデータ送信を抑制するＡＣＫパケットとデータパケットを期待するＡＣＫパケットが混在して返送されている。
【００１５】
更に、他の従来技術には、フロー単位にシェーピングを行うネットワーク中継装置がある。この種の装置は、ネットワーク管理者がフロー単位のシェーピングを設定することができるが、上述のような刻一刻と変化する状況に応じてフロー単位に適切なシェーピング設定を行うことが困難である。これは、この種の装置はフロー毎に固定的な設定値を更新することを前提としており、動的に設定を変更することを考慮していないからである。
【００１６】
【特許文献１】特開２００１−２４４９９０号公報
【特許文献２】特開２００３−１９８６１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
このように、オン・オフトラヒックの原因としては、フロー制御方式に起因する送出データ量の時間変化、ＯＳのスケジューラの起動周期などがある。
【００１８】
本発明は以上のような状況に鑑みてなされたものであり、本発明が解決しようとする課題は、フローを確立するコンピュータプログラムやネットワークの状況の時間変化に即応して、フロー単位のシェーピングを制御する技術を提供することにある。
【００１９】
また、本発明が解決しようとする他の課題は、フロー制御方式等に起因するデータ転送量の変化を、フロー単位で平滑化する技術を提供することである。
【００２０】
また、本発明が解決しようとする他の課題は、上述の課題をＯＳの種類に依存することなく解決する技術を提供することである。
【課題を解決するための手段】
【００２１】
上述の課題を解決するため、本発明は次のような技術を提供する。
【００２２】
本発明は、ネットワークを介してデータ通信装置間にフローを確立して行うデータ通信に対してシェーピングを行うシェーパーの動作を制御する方法において、データ通信装置がフローを識別する段階と、識別したフローに対してシェーピングを行うか否かをデータ通信装置が指定する段階と、指定に応じてシェーパーがフローを単位とするシェーピングを行う段階とを含むことを特徴とするシェーパー制御方法を提供する。
【００２３】
更に、データ通信装置が、シェーピングに関する設定情報であるシェーピング設定情報を、フロー単位で指定することが望ましい。この場合、フローの通信状況に応じてそのフローのシェーピング設定情報を更新することとしてもよい。
【００２４】
指定でシェーピングを行うと指定されていないフローに対しては、ベストエフォート型の通信を提供することが考えられる。
【００２５】
また、本発明は、データ通信システムにおいて、当該データ通信装置と他のデータ通信装置との間のフローに対してシェーピングを行うか否かを、フロー単位で指定する手段と、指定に応じてフロー単位にシェーピングを行うシェーパーとを備えることを特徴とするデータ通信システムを提供する。
【００２６】
シェーピングに関する設定情報であるシェーピング設定情報をフロー単位で指定する手段を更に備え、シェーパーは、シェーピング設定情報に従ってシェーピングを行うこととしてもよい。
【００２７】
また、フローの通信状況を推定する手段を更に備え、推定の結果に応じて、そのフローのシェーピング設定情報を更新することとしてもよい。
【００２８】
指定でシェーピングを行うと指定されていないフローに対しては、ベストエフォート型の通信を提供することが考えられる。
【００２９】
また、本発明は、制御インタフェース及びデータ転送インタフェースを介してコンピュータに接続されることにより、当該コンピュータにネットワークインタフェースを提供するネットワークインタフェース装置において、フロー単位にシェーピングを行うシェーパーを備えることを特徴とするネットワークインタフェース装置を提供する。
【００３０】
コンピュータまたはコンピュータとの間にフローを確立してデータ通信を行う他のコンピュータにより指定されたフローに対し、シェーパーにてシェーピングを行うことが望ましい。
【００３１】
コンピュータまたはコンピュータとの間にフローを確立してデータ通信を行う他のコンピュータが生成したシェーピングに関する設定情報に従って、シェーパーでのシェーピングに関する設定を行うこととしてもよい。
【００３２】
コンピュータまたはコンピュータとの間にフローを確立してデータ通信を行う他のコンピュータが取得したそのフローの通信状況に応じて、シェーパーでのシェーピングに関する設定を更新することとしてもよい。
【００３３】
当該ネットワークインタフェース装置に対する制御情報を格納したパケットから、指定及び設定情報を抽出する手段を備えることとしてもよい。こうすれば、データ転送インタフェースを介してパケット化された制御情報を受け取ることができる。
【００３４】
指定を受けていないフローに対しては、ベストエフォート型の通信を提供する処理を行うことが考えられる。
【００３５】
また、本発明は、ネットワーク中継装置において、フロー単位にシェーピングを行うシェーパーを備え、フローを確立するデータ通信装置からの依頼に応じて、当該フローに対するシェーピングを行うことを特徴とするネットワーク中継装置を提供する。
【００３６】
フローを確立するデータ通信装置が生成した当該フローのシェーピングに関する設定情報に応じて、シェーパーでのシェーピングに関する設定を行うこととしてもよい。
【００３７】
フローを確立するデータ通信装置が取得した当該フローの通信状況に応じて、シェーパーでのシェーピングに関する設定を行うこととしてもよい。
【００３８】
また、本発明は、データ通信装置との間にフローを確立してデータ通信を行う処理をコンピュータに実行させるコンピュータプログラムにおいて、フローを識別するフロー識別情報を生成する処理と、フローに対してシェーピングを行うか否かを指定するフラグを生成する処理と、フロー識別情報及びフラグに応じてシェーパーにシェーピングをさせるため、フロー識別情報及びフラグを出力する処理とをコンピュータに実行させるコンピュータプログラムを提供する。
【００３９】
更に、フローに対するシェーピングに関する設定情報であるシェーピング設定情報を生成する処理を、コンピュータに実行させることとしてもよい。
【００４０】
更に、フローの通信状況を推定する処理と、推定の結果に応じてシェーピング設定情報を生成する処理とをコンピュータに実行させることとしてもよい。
【発明の効果】
【００４１】
本発明によれば次のような効果が得られる。
【００４２】
第１の効果は通信品質向上である。平滑化されたトラヒックはバーストトラヒックに比べ、ネットワーク内のボトルネック部分で送信バッファあふれなどの理由によりパケットが廃棄されることが少なくなる。特に、シェーパーの帯域をフロー毎に動的に変更する機能を併用することにより、ネットワークの状況に応じて送出レートを変更する方式の効果は大きくなる。動画像配信アプリケーション等には、ネットワークの状況に応じて送信レートを変更する機能を有するものがあるが、送信出力がオン・オフトラヒックである場合、シェーパーの帯域が固定されているとピークレートがシェーパーの設定帯域であるオン・オフトラヒックになり、ネットワークの状況に応じて送出レートを変更する機能の効果が減少する。シェーパーの帯域をアプリケーションの平均送出レートに動的に変更することにより、バースト性がさらに低減され廃棄パケット数を減らすことができる。
【００４３】
第２の効果は、 ネットワークリソースの利用率向上である。平滑化されたトラヒック自身、バーストトラヒックに比べネットワーク内で廃棄されることが少なくなるが、これに伴って、他の通信装置間のコネクションのパケットがネットワーク内で廃棄されることも少なくなる。このため、第一に廃棄されるパケットを廃棄される場所まで運ぶために使われる無駄なネットワークリソースの利用がなくなる。第二にネットワークを利用する全ユーザの再送パケットの比率が低下するので、既に受信側に届いているパケットの再送が削減される。単に廃棄されたDATAパケットだけを再送するならば第一の理由の範囲であるが、TCPプロトコルでは再送パケットも廃棄されるとACK待ちタイムアウトが発生し、既に受信側に届いているパケットも併せて再送されるために第一の効率低下に加えて更に転送効率が低下する。
【発明を実施するための最良の形態】
【００４４】
１．第１の実施の形態
本発明の第１の実施の形態であるデータ通信装置１の構成について図１を参照して説明する。パーソナルコンピュータ、ワークステーション、サーバ装置等であるデータ通信装置１は、そのプロセッサ（不図示）にて実行されるソフトウェア１００と、データ通信装置１をＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットのネットワーク等に接続するためのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）であるネットワークインタフェース装置２００を備える。
【００４５】
ソフトウェア１００は、アプリケーションプログラム１０１、シェーパー機能管理プログラム１０２及び制御プログラム１０３のプログラムと、初期設定データ１１１及び動的設定データ１１２のデータからなる。これらはデータ通信装置１または外部に設けられた不図示の記憶装置に格納され、必要に応じてプロセッサに読み出される。
【００４６】
アプリケーションプログラム１０１は、ネットワークインタフェース装置２００を介してネットワークと通信を行うプログラムである。データ通信装置１がクライアントコンピュータである場合は例えばブラウザやメーラーである。データ通信装置１がサーバコンピュータである場合は例えばウェブサーバ、ＦＴＰサーバ、ストリーミングサーバ等の各種のサーバプログラムである。
【００４７】
或いは、アプリケーションプログラム１０１は、ネットワークを介してデータ通信装置１と接続された他のデータ通信装置による指示に応じて、シェーパー機能部２０２を制御することを目的とするものであってもよい。ここでいう他のデータ通信装置は例えばネットワーク管理者や、データ通信装置１の管理者により用いられる。
【００４８】
アプリケーションプログラム１０１は、自身が他のデータ通信装置とデータ通信を行うためのフロー識別情報を生成する。アプリケーションプログラム１０１から他のデータ通信装置に対してフローの確立を求める場合、フローの確立前にフロー識別情報を生成する。逆に、他のデータ通信装置からフローの確立を求められた場合、フローの確立前後どちらでもよい。フローを生成、削除或いはフロー特性の変更を行う際に、そのフローに対してシェーピングを行うか否かを送信有効フラグ或いは受信有効フラグで指定する。送信有効フラグはアプリケーションプログラム１０１から外部の方向のフローに対するシェーピングの要否を指定し、受信有効フラグは外部からアプリケーションプログラム１０１への向きのフローに対するシェーピングの要否を指定する。更に、そのフローに対してシェーピングを行うと指定する場合は、更にシェーパー帯域及びシェーパーバッファ容量を指定する。生成したフロー識別情報及び有効フラグをシェーパー機能管理プログラム１０２に通知する。
【００４９】
シェーパー機能管理プログラム１０２は、制御プログラム１０３を経由してネットワークインタフェース装置２００を制御するプログラムである。具体的には、アプリケーションプログラム１０１からのフロー識別情報及び有効フラグに応じて、ネットワークインタフェース装置２００によるシェーピングに関する初期設定動作と、アプリケーションプログラム１０１からの依頼に基づいてなされる動的なシェーパー機能の設定変更動作を制御する。シェーパー機能管理プログラム１０２は、初期設定データ１１１に対する読み書きを行ってシェーパー機能の初期設定を制御し、動的設定データ１１２に対する読み書きを行って動的なシェーパー機能の設定変更動作を制御する。
【００５０】
制御プログラム１０３はネットワークインタフェース装置２００のドライバプログラムにあたり、管理機能部２０１を介してネットワークインタフェース機能部２０３を制御する。また、シェーパー機能管理プログラム１０２からの依頼を、管理機能部２０１やシェーパー機能部２０２に伝える。
【００５１】
初期設定データ１１１は図２のような構造を有するデータであり、送信有効フラグ３００、受信有効フラグ３０１、プロトコル３０２、発信元ＩＰアドレス３０３、発信元ＩＰアドレスネットマスク３０４、発信元ポート番号３０５、宛先ＩＰアドレス３０６、宛先ＩＰアドレスネットマスク３０７、宛先ポート番号３０８、シェーパー帯域３０９、及び、シェーパーバッファ容量３１０から構成される。初期設定データ１１１は予め設定されるデータであり、ネットワークインタフェース装置２００をパワーオンやリセットした際、シェーパー機能管理プログラム１０２は、制御プログラム１０３、管理機能部２０１を介して、初期設定データ１１１を設定データ格納部２１１に格納する。送信有効フラグ３００は、そのフローの送信側に対してシェーピングを行うか否かを指定するフラグである。受信有効フラグ３０１は、そのフローの受信側に対してシェーピングを行うか否かを指定するフラグである。プロトコル３０２は、そのフローで用いられているプロトコルの種別を示す。具体的にはＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）、及び、ＵＤＰ（Ｕｓｅｒ  Ｄｉａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）を示す。発信元ＩＰアドレス３０３は、そのフローの発信元のＩＰアドレスを示す。発信元ＩＰアドレスネットマスク３０４は、そのフローの発信元のネットマスクを示す。発信元ポート番号３０５は、そのフローの発信元のポート番号を示す。宛先ＩＰアドレス３０６は、そのフローの宛先のＩＰアドレスを示す。宛先ＩＰアドレスネットマスク３０７は、そのフローの宛先のネットマスクを示す。宛先ポート番号３０８は、そのフローの宛先のポート番号を示す。シェーパー帯域３０９は、そのフローのシェーピングに対して割り当てられる帯域を示す。シェーパーバッファ容量３１０は、そのフローに対して割り当てられるシェーパーバッファの容量を示す。
【００５２】
初期設定データ１１１と同様に、動的設定データ１１２は図２のような構造を有するデータである。動的設定データ１１２は、アプリケーションプログラム１０１からの依頼に応じて、シェーパー機能管理プログラム１０２が登録、変更乃至削除するデータである。
【００５３】
これら設定情報のうち、プロトコル、発信元ＩＰアドレス、発信元ＩＰアドレスネットマスク、発信元ポート番号、宛先ＩＰアドレス、宛先ＩＰアドレスネットマスク、及び、宛先ポート番号をフロー識別情報と呼ぶ。フロー識別情報は図３のような構造を有し、情報はプロトコル３２０、発信元ＩＰアドレス３２１、発信元ポート番号３２２、宛先ＩＰアドレス３２３、及び、宛先ポート番号３２４から構成される。また、残りの設定情報、即ち送信有効フラグ、受信有効フラグ、シェーパー帯域及びシェーパーバッファ容量をシェーピング設定情報と呼ぶ。
【００５４】
初期設定データ１１１及び動的設定データ１１２において、フロー識別情報の各項目は、特定の値のみではなく、値の範囲として指定してもよい。ネットマスクは、比較する２つのＩＰアドレスにまずネットマスクとのビットごとの論理積をとり、その結果同士を比較して一致と不一致を決定する。プロトコルとポート番号は、０以外のときはその値とだけ一致し、０のときは全ての値と一致するとして登録する。このため、ＩＰアドレス、ネットマスク、プロトコル、ポートが全て０で登録された場合どの値とも一致する。
【００５５】
また、図３に示すフロー識別情報が、ある範囲をあらわす２つの登録データと一致した場合は、範囲の狭い方を優先する。範囲の狭い方とは、ＩＰアドレスのネットマスクの１であるビット数が多い方を指し、ネットマスクが同じ場合は、プロトコルが０以外の値で一致している方を指し、プロトコルでの一致が同じ場合は、ポートが０以外の値で一致している方を指すものとする。
【００５６】
ネットワークインタフェース装置２００は、管理機能部２０１、シェーパー機能部２０２、ネットワークインタフェース機能部２０３、設定データ格納部２１１、及び、フロー登録データ格納部２１２からなる。
【００５７】
管理機能部２０１は、制御プログラム１０３を経由してシェーパー機能管理プログラム１０２との間で制御情報をやりとりし、シェーパー機能部２０２及びネットワークインタフェース機能部２０３の動作を制御する。
【００５８】
シェーパー機能部２０２は、制御プログラム１０３とネットワークインタフェース機能部２０３の間のデータ転送インタフェース上に位置し、シェーピング対象として設定された特定のフローに対してシェーピングを行う。即ち、そのフローに対して設定されている帯域に応じて転送速度（パケットの転送間隔）を調整する。
【００５９】
ネットワークインタフェース機能部２０３は、従来のネットワークインタフェース装置に相当する。
【００６０】
設定データ格納部２１１は、初期設定データ１１１及び動的設定データ１１２と同様に図２に示すような構造を有するデータを格納する記憶装置である。シェーパー機能部２０２は、設定データ格納部２１１に設定されたフロー識別情報にて特定されるフローに対し、シェーピング設定情報に応じたシェーピングを行う。
【００６１】
フロー登録データ格納部２１２は、図４に示すような構造を有するフロー管理データを格納する記憶装置である。フロー管理データは、シェーパー機能部２０２を通過する全てのフローに関するフロー識別情報を格納する。これに加えて、シェーピング設定情報、シェーピング機能を実現するためのその他データ３２９を必要に応じて格納する。即ち、フロー登録データ格納部２１２は、送信有効フラグ３３０、受信有効フラグ３３１、プロトコル３３２、発信元ＩＰアドレス３３３、発信元ポート番号３３４、宛先ＩＰアドレス３３５、宛先ポート番号３３６、シェーパー帯域３３７、シェーパーバッファ容量３３８、及び、シェーピング機能を実現するためのその他データ３３９を格納する領域を有する。初期設定データ１１１及び動的設定データ１１２と異なり、フロー管理データ中のフロー識別情報は特定の値をとり、値の範囲にはならない。尚、シェーピング機能を実現するためのその他データ３３９の内容は、シェーパー機能部２０２に実装されるシェーピング手法によって異なるが、本発明の動作を説明する上で必要がないため、詳細な説明を省略する。
【００６２】
制御プログラム１０３とネットワークインタフェース装置２００の間は、物理的にはバス等にて接続される。制御プログラム１０３と管理機能部２０１の間は制御インタフェース１５０により接続され、管理機能部２０１とシェーパー機能部２０２の間は制御インタフェース２５２により接続され、管理機能部２０１とネットワークインタフェース機能部２０３の間は制御インタフェース２５３により接続されている。また、論理的なデータ転送インタフェースの面では、制御プログラム１０３とシェーパー機能部２０２の間はデータ転送インタフェース１５１で接続され、シェーパー機能部２０２とネットワークインタフェース機能部２０３の間はデータ転送インタフェース２５４で接続されている。更に、ネットワークインタフェース機能部２０３は外部インタフェース２６０により外部のネットワークに接続される。
【００６３】
データ通信装置１の動作について以下に説明する。
【００６４】
（１）初期設定
まず次のようにして初期設定を行う。制御プログラム１０４はネットワークインタフェース装置２００のハードウェアレベルの初期設定を行う。次に、制御プログラム１０４は、制御インタフェース２５０、管理機能部２０１、制御インタフェース２５３を経由して、ネットワークインタフェース機能部２０３の初期設定を行う。次に、制御プログラム１０４はシェーパー機能管理プログラム１０２に初期設定の完了を通知する。この通知に応じて、シェーパー機能管理プログラム１０２は、初期設定データ１１１の内容を、制御インタフェース２５０を経由して管理機能部２０１に伝える。これに応じて、管理機能部２０１は受け取ったデータを設定データ格納部２１１に格納すると共に、設定情報の更新があったことをシェーパー機能部２０２に通知する。これに応じて、シェーパー機能部２０２は設定データ格納部２１１にアクセスし、必要に応じてフロー管理データ格納部２１２に格納されているフロー管理データを更新する。初期設定により設定情報が設定されるのは、例えば、データ通信装置１で頻繁に或いは常に確立されることが予めわかっているフローである。
【００６５】
（２）シェーパー制御
初期設定動作の後、次のようにしてシェーパーの動作を制御する。シェーパー機能部２０２は、データ転送インタフェース１５１及び２５４を介して自身を通過するフローのフロー識別情報を参照することにより、フローを識別する。即ち、ＩＰパケット内のＩＰヘッダ及びＴＣＰヘッダ、又はＵＤＰヘッダの内容から、フロー識別情報を取得してフローを識別する。初期設定がなされた後、シェーパー機能部２０２は、通過中のフローのフロー識別情報と、フロー管理データ格納部２１２に登録されている設定情報中のフロー識別情報とを比較する。
【００６６】
比較した結果、そのフローについての設定情報が、フロー管理データ格納部２１１に、有効フラグ（データ通信装置１が発信元である場合は送信有効フラグ、宛先である場合は受信有効フラグ、以下同じ）がオンの状態で登録されている場合、シェーパー機能部２０２は、そのフロー識別情報と対応するシェーピング設定情報に従って、そのフローを対象とするシェーピングを行い、その上でそのフローを出力する。
【００６７】
他方、そのフローについての設定情報が、フロー管理データ格納部２１１に、有効フラグがオフの状態で登録されている場合、または、そのフローについての設定情報が登録されていない場合、シェーパー機能部２０２は、更に設定データ格納部２１１にアクセスし、そのフローについての設定情報が登録されているか否かを判定する。前述のように、初期設定データ１１１及び動的設定データ１１２は範囲指定を含む場合があるので、ここでの判定は２つの数値の単純な一致不一致の判定とは限らず、指定範囲内に含まれるかどうかの判定となる場合がある。
【００６８】
そのフロー或いはそのフローを含む範囲が設定データ格納部２１１に登録されている場合、対応するシェーピング設定情報に従って、そのフローを対象とするシェーピングを行った上でそのフローを出力する。これに加えて、そのフローの設定情報をフロー管理データ格納部２１２に登録する。範囲指定の設定情報にマッチした場合は、その設定情報の中からそのフローのみを対象とする設定情報を抽出し、フロー管理データ格納部２１２に登録する。
【００６９】
フロー管理データ格納部２１２及び設定データ格納部２１１のどちらにも該当するフローが登録されていない場合、シェーパー機能部２０２は、そのフローをベストエフォートで転送すると共に、送信有効フラグ及び受信有効フラグをオフにした状態で、そのフローの設定情報をフロー管理データ格納部２１２に登録する。
【００７０】
このようにして、シェーパー機能部２０２はフロー毎に異なるシェーピング設定情報を参照してシェーピングを行う。
【００７１】
（３）設定情報の更新
シェーパー機能管理プログラム１０２は、アプリケーションプログラム１０１からの依頼に応じて、動的に設定情報を更新する。設定情報の更新は、アプリケーションプログラム１０１が新たなフローを追加しようとしている場合、アプリケーションプログラム１０１がフロー特性を変更しようとしている場合、及び、アプリケーションプログラム１０１が既存のフローを削除しようとしている場合に行われる。以下にデータ通信装置１での設定情報の更新動作について説明する。
【００７２】
まず、アプリケーションプログラム１０１は、シェーパー機能管理プログラム１０２に対して、設定情報の更新を依頼する。
【００７３】
依頼内容がフローの追加の場合、シェーパー機能管理プログラム１０２は、新たな設定情報を動的設定データ１１２に追加すると共に、制御プログラム１０３及び制御インタフェース１５０を介して、管理機能部２０１に設定情報の追加を指示する。指示に応じて、管理機能部２０１は、設定データ格納部２１１に新フローの設定情報を追記すると共に、制御インタフェース２５２を介してシェーパー機能部２０２にその旨を通知する。この通知を受けて、シェーパー機能部２０２は、フロー管理データ格納部２１２のデータを更新する。
【００７４】
依頼内容がフロー特性の変更の場合、シェーパー機能管理プログラム１０２は、変更後のフロー特性を示すシェーピング設定情報を含む設定情報を動的設定データ１１２に追加すると共に、制御プログラム１０３及び制御インタフェース１５０を介して、管理機能部２０１に対し、設定データ格納部２１１中のそのフローのシェーピング設定情報を変更するように指示する。指示に応じて、管理機能部２０１は、設定データ格納部２１１内のそのフローのシェーピング設定情報を変更すると共に、制御インタフェース２５２を介してシェーパー機能部２０２にその旨を通知する。この通知を受けて、シェーパー機能部２０２は、フロー管理データ格納部２１２のデータを更新する。これにより、そのフローのシェーパー帯域及びシェーパーバッファ容量が変更される。アプリケーションプログラム１０１がフロー特性の変更を依頼するのは、例えば送信しようとしているデータ量が一時的に大きくなり、これに対応するためにシェーパー帯域を大きくする場合や、このようにして大きくしたシェーパー帯域を元に戻す場合等がある。
【００７５】
また、依頼内容がフローの削除の場合、シェーパー機能管理プログラム１０２は、削除しようとしているフローの設定情報を初期設定データ１１１または動的設定データ１１２から削除すると共に、制御プログラム１０３及び制御インタフェース１５０を介して、管理機能部２０１に対し、設定データ格納部２１１中のそのフローの設定情報を削除するように指示する。指示に応じて、管理機能部２０１は、設定データ格納部２１１内のそのフローの設定情報を削除すると共に、制御インタフェース２５２を介してシェーパー機能部２０２にその旨を通知する。この通知を受けて、シェーパー機能部２０２は、フロー管理データ格納部２１２のデータを更新する。
【００７６】
このように設定情報を更新することにより、フロー単位のシェーピングの要否、フロー単位のシェーピング帯域及びシェーパーバッファ容量の変更を、アプリケーションプログラム１０１での必要に応じて動的に行うことができる。
【００７７】
（４）フロー管理データ格納部２１２の更新
上述の（３）のように、フローの削除に際し、明示的にフロー管理データ格納部２１２からそのフローの設定情報を削除する場合以外にも、シェーパー機能部２０２は、一定期間パケットの送受信がないフローの設定情報を削除する。
【００７８】
２．第２の実施の形態
本発明の第２の実施の形態であるデータ通信装置２について図５を参照して説明する。基本的な動作は第１の実施の形態に準じるが、前述の第１の実施の形態と比較すると、ソフトウェア４００に帯域・ＲＴＴ推定プログラム１０４が含まれている点が異なる。
【００７９】
帯域・ＲＴＴ推定プログラム１０４は、ネットワークの状態を推定する処理をデータ通信装置２の不図示のプロセッサに実行させるコンピュータプログラムであり、帯域推定とＲＴＴ推定の２つの推定処理によりネットワークの状態を推定する。
【００８０】
帯域推定処理はネットワークの可用帯域を推定する処理である。例えば、パケットペア方式の帯域推定では、ＴＣＰのＤＡＴＡパケットを一度に４個送信する。連続したパケットを受信した場合、受信側は２個のＤＡＴＡパケット毎に１個のＡＣＫパケットを返信するので、４個のＤＡＴＡパケットに対して２個のＡＣＫパケットが返信される。この２個のＡＣＫパケットの到着時刻の差は、２個のＤＡＴＡパケットが相手に届く時間差を保っていると仮定することができる。また、２個のＡＣＫパケットの確認シーケンス番号の差分は、２個のＤＡＴＡパケットのデータ量に等しい。このため、可用帯域をＢ、２個のＡＣＫパケットの確認シーケンス番号の差分をＤ、２個のＡＣＫパケットの到着時間間隔をＴとすると、可用帯域Ｂは次の式１により求めることができる。  
Ｂ＝Ｄ／Ｔ  …  式１
【００８１】
ＲＴＴ推定処理は往復遅延時間（ＲＴＴ、Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）を推定する処理である。例えば、ＤＡＴＡパケットを送信したときにそのシーケンス番号と送信時刻とをメモリに保存し、保存したシーケンス番号の送達確認をするＡＣＫパケットの受信したら、受信時刻と送信時刻との差分を求めることにより、ＲＴＴを推定する方法がある。また、他の方法としては、ＴＣＰのタイムスタンプオプションを使用する方法もある。
【００８２】
帯域・ＲＴＴ推定プログラム１０４は、推定結果をアプリケーションプログラム１０１に通知する。通知に応じて、アプリケーションプログラム１０１は、フロー特性の変更をシェーパー機能管理プログラム１０２に対して依頼する。これに応じたシェーパー機能管理プログラム１０２の動作は「（３）設定情報の更新」と同様である。
【００８３】
帯域・ＲＴＴ推定プログラム１０４は、ＯＳの機能の一部として実装することとしてもよいし、或いは、アプリケーションプログラム１０１の一部として実装することとしてもよい。
【００８４】
第２の実施の形態によれば、フロー単位のシェーピングの設定を、ネットワークの状態の変化に応じて動的に変更することができる。
【００８５】
３．第３の実施の形態
本発明の第３の実施の形態であるデータ通信装置３について図６を参照して説明する。基本的な動作は第１の実施の形態に準じるが、第１の実施の形態と比較すると、データ通信装置１では、シェーパー機能管理プログラム１０２からシェーパー機能部２０２に向けて制御情報を送る際、制御プログラム１０３、制御インタフェース１５０、管理機能部２０１及び制御インタフェース２５２を介して送信したのに対して、データ通信装置３では、シェーパー機能管理プログラム５０１は、制御プログラム１０３、データ転送インタフェース１５１及び５５２、管理機能部５５３並びに制御インタフェース２５２を介して送信する。
【００８６】
シェーパー機能管理プログラム５０１は、シェーパー機能管理プログラム１０２と同様に、初期設定データ１１１及び動的設定データ１１２の読み書きを行うと共に、シェーパー機能部５５１に対する制御情報を生成するが、生成した制御情報をＵＤＰパケットにパケット化して出力する。このＵＤＰパケットはデータ転送インタフェース１５１を介してシェーパー機能部５５１に転送される。シェーパー機能部５５１は制御プログラム１０３から受けるパケットを監視しており、制御情報を格納したＵＤＰパケットを検出すると、データ転送インタフェース５５２を介して管理機能部５５３に転送する。管理機能部５５３はＵＤＰパケットから制御情報を抽出し、制御インタフェース２５２を介してシェーパー機能部５５１に制御情報を通知する。或いは、設定データ格納部１１１内の設定情報を更新する。
【００８７】
本実施の形態によれば、ネットワークインタフェース機能部２０３の動作のみを制御するドライバプログラムをほぼそのまま制御プログラム５０２として用いることができる。
【００８８】
４．第４の実施の形態
本発明の第４の実施の形態であるデータ通信システムについて説明する。本データ通信システムは図７に示すデータ通信システム４と、その外部装置としてＬＡＮケーブル等のデータ転送インタフェースを介してデータ通信システム４に接続される装置であって、図８に示すネットワーク中継装置５からなる。基本的な動作は第１の実施の形態に準じる。
【００８９】
シェーパー機能管理プログラム６０１は、前述のシェーパー機能管理プログラム５０１と同様に、初期設定データ１１１及び動的設定データ１１２の読み書きを行うと共に、シェーパー機能部５５１に対する制御情報を生成するが、生成した制御情報をＵＤＰパケットにパケット化して出力する。
【００９０】
ネットワークインタフェース機能部６５１は、このＵＤＰパケットを他の通常のＵＤＰパケットと同様にデータ転送インタフェース２６０から送出する。
【００９１】
データ通信装置４から送出された制御情報入りのＵＤＰパケットは、ネットワークインタフェース機能部７０１を介してシェーパー機能部７０２に渡される。シェーパー機能部７０２は、ネットワークインタフェース機能部７０１から受けるパケットを監視しており、制御情報を格納したＵＤＰパケットを検出すると、データ転送インタフェース７０３を介して管理機能部７０４に転送する。管理機能部７０４はＵＤＰパケットから制御情報を抽出し、制御インタフェース７０５を介してシェーパー機能部７０２に制御情報を通知する。或いは、設定データ格納部７０６内の設定情報を更新する。
【００９２】
本実施の形態によれば、ネットワークインタフェース機能部６５１の動作のみを制御するドライバプログラムをほぼそのまま制御プログラム６０２として用いることができる。
【００９３】
また、管理機能部、設定データ格納部、フロー管理データ格納部及びシェーパー機能部といった機能ブロックを備えない従来の一般的なネットワークインタフェース装置をそのまま用いることができる。
【００９４】
５．効果
アプリケーションプログラム１０１から出力されるフローは、ＯＳのスケジューラやディスクからの読み出し処理等の影響を受け、間欠的にネットワークインタフェース装置２００に渡される。今、ネットワークインタフェース装置２００は、１００Ｍｂｐｓ弱の帯域で間欠的にデータを受け取っているものとする。
【００９５】
このようなフローに対し、シェーパー機能部２０２が設定データ格納部２１１に格納されている設定データに基づいてシェーピングを行う。このフローに対して設定されていた帯域が３０Ｍｂｐｓのとき、図１０に示すように、このフローは一定帯域３０Ｍｂｐｓの一定帯域に平滑化される。
【００９６】
このようなフローが確立している間に、アプリケーションプログラム１０１が帯域を縮小する方向でフロー特性を変更することがある。或いは、帯域・ＲＴＴ推定プログラム１０４が、そのフローの可用帯域の縮小を判定することがある。このとき、ソフトウェア１００からネットワークインタフェース装置への出力は、間欠的である点では同じだが、データ送信一回当たりの持続時間が短くなり、図１１のようになる。
【００９７】
先の設定データに基づいてシェーピングを続ける場合、図１２に示すように、最大帯域は３０Ｍｂｐｓに縮小されるので、この状態であっても、図１１の状態のまま出力する場合と比較すれば、最大帯域が縮小された分だけ、パケット廃棄が発生する可能性を下げている。しかし、全く送信されない時間帯が残っているので、この時間帯にも送信するように平滑化すれば、パケット廃棄が発生する可能性を更に低くすることができる。
【００９８】
そこで本発明では、送出すべきフローのフロー特性を変更したとき、或いは、ネットワークの可用帯域が変化したとき等に、アプリケーションプログラム１０１はその旨をシェーパー機能管理プログラム１０２に通知する。これを受けて、シェーパー機能管理プログラム１０２は動的設定データ１１２を更新すると共に、設定データ格納部２１１内の設定データを更新し、シェーパー機能部２０２に更新があったことを通知する。これを受けて、シェーパー機能部２０２は帯域を狭めて平滑化を行う。これにより、図１３のように途切れなく均一な帯域でデータを出力することができるようになる。
【００９９】
図１４は、ＴＣＰプロトコルを使用して大量のデータを転送するサーバにパケットシェーパー付ネットワークインタフェース装置を装着しデータ転送を効率よく転送する例である。サーバとクライアントの間はネットワークサービスプロバイダにより帯域を保障された経路で結ばれているものとする。
【０１００】
保障された帯域にα倍（α＜１、例えばα＝０．９）した値にシェーパー帯域を設定する。また、シェーパーバッファ容量を、設定したシェーパー帯域と、サーバ―クライアント間の往復遅延時間ＲＴＴとの積（以下シェーパー帯域遅延積と呼ぶ）に設定する。
【０１０１】
このように設定するとボトルネック、すなわちサーバとクライアント間の最も帯域の小さい部分は、サーバのシェーパー機能部となる。ＴＣＰプログラムとして広く使われているバージョンであるＴＣＰ  Ｒｅｎｏでは、ＤＡＴＡパケットを安定に転送しているときは、その送信ウィンドウサイズを往復遅延時間ごとに１ＤＡＴＡパケット分増加し、送信ウィンドウサイズが大きくなりすぎてパケット廃棄が発生すると、送信ウィンドウサイズを半減する。
【０１０２】
ボトルネック部分をシェーパー機能部としたので、送信ウィンドウサイズがシェーパー帯域遅延積を超えると、ＴＣＰプログラムからの送出レートはシェーパー帯域を超え、シェーパーのバッファに滞留する。滞留するデータ量は（送信ウィンドウサイズ−シェーパー帯域遅延積）で表わされる。送信ウィンドウサイズがシェーパー帯域遅延積の２倍に等しくなると、シェーパーのバッファに滞留するパケットのデータ量は、シェーパーのバッファ量に等しくなるため、シェーパー機能部でパケットが廃棄される。ＴＣＰプログラムが送信ウィンドウサイズを半減すると、その値はちょうどシェーパー帯域遅延積になる。
【０１０３】
このような時間推移を繰り返すため、送信ウィンドウサイズは常にシェーパー帯域遅延積以上の値を保つ。シェーパーからの送信レートは、シェーパーの設定帯域と、（送信ウィンドウサイズ／サーバとクライアント間の往復遅延時間）とのうち、大きくない方の値となるが、送信ウィンドウサイズは常にシェーパー帯域遅延積以上の値を保つため、送信レートは常にシェーパーの設定帯域、即ち、保障された帯域のα倍となり、安定して効率的なデータ転送が実現される。
【０１０４】
シェーパーを使用しない場合、経由するネットワーク内のあるノードがボトルネックになる。このノードの送信待ちバッファのバッファ容量が十分であれば、同様な効果が期待できるが、一般的にネットワーク内のノードのバッファ容量は保障されていない。シェーパーにより利用者がコントロールできる部分にボトルネックを設定し、この部分のバッファ容量を利用者が適切に設定することにより、確実に効率よく転送することが可能になる。
【０１０５】
６．以上、本発明を実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、当業者の通常の知識の範囲内でその変更や改良が可能であることは勿論である。
【０１０６】
例えば、第２の実施の形態にて説明した帯域・ＲＴＴ推定プログラム１０４は、他の実施の形態と組み合わせて実施可能であることは、当業者であれば容易に理解するであろう。
【０１０７】
また、帯域・ＲＴＴ推定プログラムは、アプリケーションプログラムの一部として組み込まれることとしてもよいことは、当業者には容易に理解できるだろう。
【図面の簡単な説明】
【０１０８】
【図１】本発明の第１の実施の形態であるデータ通信装置１の機能ブロック図である。
【図２】初期設定データ１１１、動的設定データ１１２のデータ構造を説明するための図である。
【図３】フロー識別情報の構造を説明するための図である。
【図４】フロー登録データ格納部２１２に格納されるデータの構造を説明するための図である。
【図５】本発明の第２の実施の形態であるデータ通信装置２の機能ブロック図である。
【図６】本発明の第３の実施の形態であるデータ通信装置３の機能ブロック図である。
【図７】本発明の第４の実施の形態の一部であるデータ通信装置４の機能ブロック図である。
【図８】本発明の第４の実施の形態の一部であるネットワーク中継装置５の機能ブロック図である。
【図９】シェーパー機能を持たないネットワークインタフェース装置を使用して、３０Ｍｂｐｓの転送速度でデータを送信するアプリケーションプログラムによるトラヒックパターンを説明するための図である。
【図１０】シェーパー機能を持たないネットワークインタフェース装置を使用して、１０Ｍｂｐｓの転送速度でデータを送信するアプリケーションプログラムによるトラヒックパターンを説明するための図である。
【図１１】本発明のデータ通信装置を使用し、シェーパー帯域を３０Ｍｂｐｓに固定して設定した状態で、３０Ｍｂｐｓのデータを送信するアプリケーションプログラムによるトラヒックパターンを説明するための図である。
【図１２】本発明のデータ通信装置を使用し、シェーパー帯域を３０Ｍｂｐｓに固定して設定した状態で、１０Ｍｂｐｓのデータを送信するアプリケーションプログラムによるトラヒックパターンを説明するための図である。
【図１３】本発明のデータ通信装置を使用し、帯域を１０Ｍｂｐｓに固定して設定した状態で、３０Ｍｂｐｓのデータを送信するアプリケーションプログラムによるトラヒックパターンを説明するための図である。
【図１４】本発明のデータ通信装置にシェーパー帯域とバッファ容量を適切に設定したときのＴＣＰプロトコルの送信バッファ量の時間的な変動を説明するための図である。
【図１５】ＴＣＰプロトコル等の送達確認パケットの受信を契機として送信ウィンドウサイズを増加させるフロー制御方式が、パケットが塊になることの理由であることを説明するための図である。
【図１６】ＵＤＰプロトコルを使用する同種のアプリケーションプログラムから送出されるフローにて、ＯＳの違いによってオン・オフトラヒックが起きることを説明するための図である。
【符号の説明】
【０１０９】
１、２、３、４    データ通信装置
５    ネットワーク中継装置
１００、４００、５００、６００    ソフトウェア
１０１    アプリケーションプログラム
１０２、５０１、６０１    シェーパー機能管理プログラム
１０３、５０２、６０２    制御プログラム
１０４    帯域・ＲＴＴ推定プログラム
１１１    初期設定データ
１１２    動的設定データ
１５０、２５２、２５３、７０５    制御インタフェース
１５１、２５４、２６０、５５２、７０３    データ転送インタフェース
２００、６５０    ネットワークインタフェース装置
２０１、５５３、７０４    管理機能部
２０２、５５１、７０２    シェーパー機能部
２０３、６５１、７０１、７０８    ネットワークインタフェース機能部
２１１、７０６    設定データ格納部
２１２、７０７    フロー管理データ格納部
【図１】
2007013449.tif 000003
【図２】
2007013449.tif 000004
【図３】
2007013449.tif 000005
【図４】
2007013449.tif 000006
【図５】
2007013449.tif 000007
【図６】
2007013449.tif 000008
【図７】
2007013449.tif 000009
【図８】
2007013449.tif 000010
【図９】
2007013449.tif 000011
【図１０】
2007013449.tif 000012
【図１１】
2007013449.tif 000013
【図１２】
2007013449.tif 000014
【図１３】
2007013449.tif 000015
【図１４】
2007013449.tif 000016
【図１５】
2007013449.tif 000017
【図１６】
2007013449.tif 000018