(57)【特許請求の範囲】
【請求項１】
ネットワークにそれぞれ通信アプリケーションプログラムで動作する複数のノードが接続されたネットワークシステムにおいて、
前記複数のノードのそれぞれが、通信帯域を制御するために必要な通信属性を前記通信アプリケーションプログラムから取得する帯域情報取得手段と、前記帯域情報取得手段によって取得された通信属性を自ノードの帯域情報として記憶する帯域情報記憶手段と、前記自ノードの帯域情報をネットワークに接続された他のノードに配信する帯域情報配信手段と、他ノードの前記帯域情報配信手段により配信された帯域情報を受信して前記帯域情報記憶手段に他ノードの帯域情報として記憶する帯域情報受信手段と、前記帯域情報記憶手段に記憶された自ノードの帯域情報と他ノードの帯域情報に基づいて現在の帯域量を求める帯域量計算手段と、を有してなり、前記帯域量計算手段は、求めた帯域量をネットワークの帯域量とみなして帯域判定し、帯域制御するものであり、さらに、前記の各ノードは、自ノードにおいて観測可能な通信データパケット量とその通信品質と通信品質を制御するために必要な通信品質属性を取得する通信品質取得手段と、前記取得した自ノードの通信データパケットから、アプリケーション通信データを通信する際に発生する再送データを含む各種プロトコル制御データが占める帯域量を除く、実効通信データの帯域量を前記取得した通信品質をもとに算出し、該算出結果が前記帯域量計算手段が求めた帯域量と等しくなるように前記取得した通信品質属性を決定する通信品質補正手段とを有してなり、
前記通信品質補正手段は、前記帯域量計算手段が求めた帯域量を実効通信データの帯域量として保証可能な通信品質を決定し、通信品質を制御するものであることを特徴とするネットワークシステム。
【請求項２】
請求項１記載のネットワークシステムにおいて、
前記通信品質補正手段は、前記通信品質取得手段より取得した通信品質属性を調整した結果から得られる通信品質が、一定の水準に達しない場合には、通信品質が劣化しているものとみなして、前記所定の水準の通信品質が得られる実効通信帯域量を求め、帯域制御するものであることを特徴とするネットワークシステム。
【請求項３】
ネットワークに複数のノードが接続されたネットワークシステムの通信帯域を制御する通信帯域制御方法において、
前記複数のノードそれぞれが、通信帯域を制御するために必要な通信属性を通信アプリケーションプログラムから取得し、取得した通信属性を自ノードの帯域情報として記憶するとともにネットワークに接続されたノードに配信し、他ノードから配信された帯域情報を該他ノードの帯域情報として記憶し、前記記憶された自ノードの帯域情報と他ノードの帯域情報に基づいて現在の帯域量を求め、求められた帯域量をネットワークの帯域量とみなして帯域判定し、さらに、前記の各ノードは、自ノードにおいて観測可能な通信データパケット量とその通信品質と通信品質を制御するために必要な通信品質属性を取得し、前記取得した自ノードの通信データパケットから、アプリケーション通信データを通信する際に発生する再送データを含む各種プロトコル制御データが占める帯域量を除く、実効通信データの帯域量を前記取得した通信品質をもとに算出し、該算出結果が前記帯域量と等しくなるように前記取得した通信品質属性を決定して通信品質を制御することを特徴とする通信帯域制御方法。
【請求項４】
請求項３記載の通信帯域制御方法において、
前記通信品質属性は、アプリケーションプログラムの通信データを前記帯域量に従って送信する際の、データ通信粒度を決定するデータパケット長や通信タイミングなどの制御パラメータと、データ回復強度を決定する再送や誤り訂正処理の制御パラメータを含み、前記帯域量を実効通信データの帯域量として保証可能な、データの通信粒度と回復強度を決定し、通信品質を制御することを特徴とする通信帯域制御方法。
【請求項５】
請求項３記載の通信帯域制御方法において、
前記取得した通信品質属性を調整した結果から得られる通信品質が、一定の水準に達しない場合には、通信品質が劣化しているものとみなして、前記所定の水準の通信品質が得られる実効通信帯域量を求め、帯域制御することを特徴とする通信帯域制御方法。
【請求項６】
請求項３記載の通信帯域制御方法において、
自ノードの帯域情報の他ノードへの配信をブロードキャスト通信により配信することを特徴とする通信帯域制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ネットワークシステムとその通信帯域制御方法に係り、特に通信プロトコルとしてＩＰ(Internet Protocol）を用いるＩＰネットワークにおけるネットワークシステムとその通信帯域制御方法に関する。
【０００２】
【従来の技術】
インターネット・イントラネットの進展とパーソナルコンピュータをはじめとするハードウェアの高性能化により、インターネット，イントラネット上でのマルチメディアアプリケーションは当然のこととなってきている。
【０００３】
インターネット・イントラネットのネットワーク媒体としては主にイーサネット、上位プロトコルとしては、ＩＰ（Internet Protocol）が使用されている。
【０００４】
イーサネットおよびＩＰプロトコルは帯域共有型のネットワークであり、データの種別に依らず、常に最大の帯域を使用して通信が行われる、ベストエフォート（最大努力）のネットワークである。
【０００５】
従って、ＩＰネットワークにおいては、ＷＥＢアプリケーションやマルチメディアアプリ―ケーションのトラフィックも、社内業務システムなどのようなミッションクリティカルな通信も区別なく対等なものとして扱われ、同一のネットワーク上の帯域を共有することになる。
【０００６】
この結果、ファイル転送により帯域が圧迫されて、ミッションクリティカルな業務アプリケーションのデータが遅延したり、ＷＥＢアプリケーションなどの通信データにより帯域が確保されず、音声など遅延時間の保証が必要なデータ転送にゆらぎが発生するなどの問題がある。
【０００７】
これらは、いずれもＩＰネットワークがアプリケーションや通信のデータ種別によらず、１つの共有帯域をベストエフォートで使用することにより発生する。
【０００８】
これらの対応策としては、通信品質の保証が必要なデータ転送用のネットワークセグメントとその他のネットワークセグメントを分離するなどして、十分な帯域を確保することにより解決することもできるが、追加の投資が必要となり現実には容易ではない。
【０００９】
上述の背景から、アプリケーションやデータ種別毎に使用する帯域制御することによりＩＰネットワークの帯域を効率よく使用する帯域制御技術のニーズが高まっている。
【００１０】
現在、帯域制御については以下の標準的な技術がある。
１．ＲＳＶＰ(Resource Reservation Protocol)
ＲＳＶＰは、ＴＣＰ／ＩＰの上位プロトコルとして動作し、端末上のアプリケーションおよび、ルータに実装されるシグナリングのプロトコルである。End to Endの通信において、要求元の端末のアプリケーションから目的とする端末に対して、必要な通信帯域を予約するＰＡＴＨと呼ばれるメッセージを発行する。
ＰＡＴＨメッセージは、通常のメッセージと同様にルーティングされて目的の端末に送達される。このとき、ＰＡＴＨメッセージを中継する全てのルータが、要求された帯域を確保可能ならば、ＰＡＴＨメッセージを目的の端末まで転送し、帯域が確保できたことを表すＲＥＳＶメッセージを要求の端末まで送り返す。確保できなければ、拒否のメッセージを要求した端末に送り返す。上記の動作により、要求元から目的の端末まで、経路上の全てのルータ上で帯域の確保を行う。
【００１１】
上記の通り、ＲＳＶＰは、帯域予約のプロトコルであり、実装までは規定されていない。また、通信経路上のルータ装置で帯域の管理を行うため、要求端末と目的端末とが同一セグメント（サブネットワーク）上にある場合の帯域制御はできないものとなっている。そのため、ＲＳＶＰを拡張した形で、ＳＢＭ(Subnet Bandwidth Manager)と呼ばれるプロトコルも標準化されている。ＳＢＭでは、ＤＳＢＭ(Designated ＳＢＭ）と呼ばれる、帯域管理サーバをサブネット内に実装する。端末のアプリケーションから送出されるＰＡＴＨメッセージは、宛先がサブネット内ならば、ＤＳＢＭに転送される。ＤＳＢＭは、受け取ったＰＡＴＨメッセージで要求されている帯域が確保可能か否かを判断し、応答であるRESVメッセージを返す。つまり、サブネット内の帯域管理をＤＳＢＭで行う方式となっている。
２．DiffServ(Differentiated Services)
DiffServは、優先制御型のプロトコルである。端末のアプリケーションでは、データの重要度に従って分類した優先度クラスに対応して、ＩＰプロトコルヘッダ一部（ＤＳフィールド）に優先度を埋め込み、ルータなどの中継装置が優先度を認識して、優先度の高いパケットを優先して転送する。
【００１２】
優先度を低く設定されたパケットはルータなどの中継装置内でバッファリングされるため、パケットが遅延するか、廃棄されてしまうが、バッファが大量のパケットであふれることのないように、ＴＣＰ／ＩＰのウィンドウサイズを変更するなどして、端末からの送信を低速にするなどのフロー制御も実施されている。
【００１３】
また、優先度の設定については、IEEE802.1pによりデータリンクレベル（Ethernet）での優先制御も可能としている。
【００１４】
【発明が解決しようとする課題】
ネットワークにおいて、効率的なデータ送信を行うには、その時点でのネットワークの帯域量に余裕があるときには、高い帯域量で送信し、余裕が少ないときは、帯域量を小さくして送信するように、送信するときのネットワークの帯域量に応じた帯域制御を行うことが望ましい。
【００１５】
DiffServ（ＩＰプロトコルのＤＳフィールド使用、またはIEEE802.1pの優先度を使用）は、予めデータの優先度を定めておき、優先度の高いパケットを優先して転送するから、通信フロー毎に帯域使用量に基づいて帯域量（時間当りの送信データ量）をきめることが困難である。
【００１６】
一方、ＲＳＶＰは、帯域予約の観点で設計されており、送信側ノードから受信側ノードまでの帯域確保の処理は実現されるものの、フロー毎の帯域情報（ここでいう帯域情報は、帯域制御のために必要な情報を意味する）は、ルータもしくはＤＳＢＭに集中して管理されることとなるから、サブネット内の帯域制御（通信量制御）に適用する場合、サブネット内にＤＳＢＭサーバを配置する必要がある。
【００１７】
サブネットワークの通信容量をできるだけ効率よく利用するには、サブネットワーク上にどのようなデータフローが発生しているか（ネットワークの帯域量）を把握し、通信品質を保証すべき通信と、品質を保証せず帯域の空きを使って通信するものを分離して管理，制御する必要がある。ルータなどの中継装置があれば、ルータを通過するパケットを監視することで、フロー毎の帯域情報を取得し、容易に現在の帯域量を把握できるが、すべてのデータパケットが通過するルータが設けられていないサブネット内の帯域制御に適用できる技術は知られていない。
【００１８】
そして、サブネット内では、全ての端末が同位であり、ネットワークを流れるパケットから帯域情報を取得するには、専用の端末にて全パケットを監視（キャプチャー）する必要がある。１０Base５やリピータハブなどのサブネットが１つのセグメントで実現されていれば、全パケットの監視による帯域情報の取得も可能であるが、スイッチングハブなどでサブネットを複数のセグメントに分割したネットワークにおいては、セグメント内で閉じた通信は他のセグメントに転送しないというスイッチングハブの機能により、サブネット内の全パケット収集を１つの端末で実現することはできない。
【００１９】
通信品質を保証すべき通信の帯域量を高い精度で制御するには、前述のように、帯域量を把握することに加え、実際に帯域制御を実施しているときのネットワークを流れる帯域量との差異を極小化することも必要になってくる。
【００２０】
ネットワークを流れるパケットは、アプリケーションの通信データ（実効通信データ）と、回復プロトコルの再送データを含む各種プロトコル制御データに分類される。特に、後者は前者のオーバーヘッドとして必然的に発生するが、その量は、通信品質に大きく依存することが知られている。これは、例えばネットワークの通信品質の劣化によりデータの損失が発生し、その回復のための再送データが発生することからも明らかである。
【００２１】
従って、限られたネットワークの帯域をできるだけ効率よく利用するには、後者の特に回復プロトコルの再送データにより、実効通信データの帯域が圧迫されることがないように通信品質を制御することが必須となってくる。即ち、実際にネットワークを流れる帯域量が、実効通信データの帯域量に等しくなるように通信品質を制御することが必須であるといえる。
【００２２】
特に、無線ＬＡＮやモバイル環境下では、通信品質が使用場所などに依存して低下したりするので、その時々の品質に応じた品質補正が必要になる。
【００２３】
本発明は上記に鑑みなされたもので、その目的は、サブネット内の帯域制御において、特別なハードウェアを用いることなく、サブネット内の発生帯域情報に基づく帯域制御を可能とすることにある。
【００２４】
さらに、本発明の他の目的は、通信品質が不均質で劣化するようなネットワーク環境においても、それに依存して発生する再送データを含む各種プロトコルの制御データの帯域量を、データの通信粒度や回復強度を変更するなどして調整し、データの実効通信帯域や品質補正を制御し、より高精度な帯域制御を可能とすることにある。
【００２５】
【課題を解決するための手段】
上記の目的を達成するには、サブネットの各ノードが、サブネット内の発生帯域情報を把握する必要がある。そのためには、各ノードが自ノードの帯域情報を採取して保持するとともにそれを他のノードすべてに送信し、各ノードは受信した他のノードの帯域情報を自ノードの帯域情報に併せて保持するようにすればよい。そうすれば、各ノードが、他のノードの帯域情報と自ノードの帯域情報を用いてその時点でのネットワークの帯域量がどのような数値になっているか、帯域量の内訳（例えば、通信品質を保証すべき通信と、品質を保証せず帯域の空きを使って通信するものの割合）がどうなっているかを把握できる。各ネットワークは、把握したネットワークの帯域量に基づいて、送信するデータの帯域量を制御すればよい。
【００２６】
本発明においては、ネットワークに接続された各ノードに、通信帯域を制御するために必要な通信属性を通信アプリケーションプログラムから取得する帯域情報取得手段を設け、取得した通信属性を自ノードの帯域情報として保持する帯域情報記憶手段を設けた。また、帯域情報記憶手段に保持された自ノードの帯域情報を他ノードすべてに送信する帯域情報送信手段と、他ノードから送信された帯域情報を受信して前記帯域情報記憶手段に格納する帯域情報受信手段を設けた。
【００２７】
さらに、帯域情報記憶手段に保持された自ノードおよび他ノードの帯域情報に基づいてその時点でのネットワークの帯域量を求め、求めた帯域量に基づいて送信するデータの帯域量を制御する帯域量計算手段を設けた。
【００２８】
すなわち、本発明は、前記課題を達成するために、ネットワークに複数のノードが接続されたネットワークシステムの通信帯域を制御する通信帯域制御方法において、前記複数のノードそれぞれが、通信帯域を制御するために必要な通信属性を通信アプリケーションプログラムから取得し、取得した通信属性を自ノードの帯域情報として記憶するとともにネットワークに接続された全てのノードに配信し、他ノードから配信された帯域情報を該他ノードの帯域情報として記憶し、前記記憶された自ノードの帯域情報と他ノードの帯域情報に基づいて現在の帯域量を求め、求められた帯域量をネットワークの帯域量とみなして帯域判定し、帯域制御することを特徴とする。
【００２９】
ここでいう通信属性はすなわち帯域情報であり、ＩＰアドレス，ポート番号，帯域量，データ種別，動作アプリケーションの数とプロセスＩＤのリストなどをまとめていう。
【００３０】
さらに、本発明においては、ネットワーク通信環境が無線環境であったり、モバイル機器の使用場所に依存するなどして通信品質が不均質な場合にも高精度な帯域制御が可能なように、前記で求めた帯域量と実効通信データの帯域量が等しくなるように通信品質を調整可能とする通信品質補正手段を備えている。
【００３１】
すなわち、各ノードは、自ノードにおいて観測可能な通信データパケット量とその通信品質と通信品質を制御するために必要な通信品質属性を取得する通信品質取得手段と、前記取得した自ノードの通信データパケットから、アプリケーション通信データを通信する際に発生する再送データを含む各種プロトコル制御データが占める帯域量を除く、実効通信データの帯域量を前記取得した通信品質をもとに算出し、それが前記帯域量計算手段が求めた帯域量と等しくなるように前記取得した通信品質属性を決定する通信品質補正手段とを設けたものである。
【００３２】
また、通信品質属性を調整した結果得られる通信品質が、一定の水準に達しない場合には、通信品質が劣化しているものとみなして、前記所定の水準の通信品質が得られる実効通信帯域量を求め、帯域制御をするものである。
【００３３】
ここでいう通信品質属性は、アプリケーションプログラムの通信データを前記帯域量計算手段が求めた帯域量に従って送信する際の、データ通信粒度を決定するデータパケット長や通信タイミングなどの制御パラメータと、データ回復強度を決定する再送や誤り訂正処理の制御パラメータを含み、前記通信品質補正手段は、前記帯域量計算手段が求めた帯域量を実効通信データの帯域量として保証可能な、データの通信粒度と回復強度を決定し、通信品質を制御するものである。
【００３４】
上記構成によれば、通信アプリケーションプログラムの動作数を通信属性毎に取得してネットワークに接続されたすべてのノードに配信することにより、実際にＬＡＮのパケットを監視することなく、各ノードがそれぞれＬＡＮ内の帯域量を推定することが可能となる。
【００３５】
さらに、各ノードがそれぞれ上記算出した帯域量にしたがってデータ通信を行う場合に、自ノードで観測可能な、例えばＴＣＰ／ＩＰプロトコルなどの通信データの入出力情報などから得られる、通信データパケット量，データ損失や誤り訂正情報などの通信品質をもとに、実効通信データの帯域量を算出し、それが帯域制御量に等しくなるように、通信データの品質を調整することが可能となる。
【００３６】
すなわち、決定した帯域量を遵守しながらも、データ通信粒度を調整したり、回復強度を変更するなどして、それに伴って発生する再送トラフィックを含む各種プロトコルの制御トラフィックの帯域量を調整することにより、一定の水準の通信品質をもち、また、上記推定した帯域量の精度を高めることが可能となる。
【００３７】
従って、各ノードは、当該ノードの帯域情報と配信された他ノードの帯域情報に基づいて全体の帯域量を高精度に把握することが可能となり、通信毎に、把握しているネットワーク全体の帯域量に基づいて帯域制御を行うことができる。
【００３８】
なお、サブネットがスイッチングハブなどで複数のセグメントに分割されている場合でも、自ノードの帯域情報をブロードキャストで他のノードに配信することにより、帯域情報をすべてのノードに配信することができる。
【００３９】
【発明の実施の形態】
以下、本発明の実施の形態を図面に従って詳細に説明する。
【００４０】
図１に、本発明の第一の実施の形態のシステム構成を示す。ＩＰネットワーク１は、スイッチ機能を有する機器（スイッチングハブ３）で構成されており、複数のノード２がネットワーク１を介してＩＰ通信を行うようになっている。
【００４１】
図２にＩＰ通信を行っているノード２内の機能構成を示す。ノード２は、通信アプリケーションプログラム２７と、擬似ソケットライブラリ３０と、オペレーティングシステム２８と、帯域情報管理テーブル２６と、帯域情報送信モジュール２４と、帯域情報受信モジュール２３と、ネットワークインターフェースカード２０と、を含んで形成されている。上記擬似ソケットライブラリ３０，オペレーティングシステム２８，帯域情報管理テーブル２６，帯域情報送信モジュール２４、及び帯域情報受信モジュール２３は、いずれもソフトウェアで構成されている。
【００４２】
上記擬似ソケットライブラリ３０と、帯域情報管理テーブル２６と、帯域情報送信モジュール２４と、帯域情報受信モジュール２３が、本発明により新たに付加された部分である。
【００４３】
通信アプリケーションプログラム２７は、データの送受信を行うプログラムである。
【００４４】
擬似ソケットライブラリ３０は、通信アプリケーションプログラム２７とオペレーティングシステム２８及び帯域情報管理テーブル２６に接続され、帯域情報取得手段と帯域量計算手段を兼ねた送信レート制御モジュール２５と、さらには、通信品質取得手段と通信品質補正手段を兼ねた品質制御モジュール３１を実装している。
【００４５】
擬似ソケットライブラリ３０は、通信アプリケーションプログラム２７からの送信内容を取得するために、オペレーティングシステム２８に含まれるソケットライブラリ２９とまったく同一のアプリケーションインターフェース（ＡＰＩ）をもつが、この擬似ソケットライブラリ３０は、ユーザの要求内容を横取り（フック）するのみで、その他の機能は全て、オペレーティングシステム２８に含まれるソケットライブラリ２９を呼び出すことにより実現している。前記送信レート制御モジュール２５は、通信アプリケーションプログラム２７からの送信パラメータを元に帯域情報を作成し、作成した帯域情報を帯域情報管理テーブル２６に出力する。
【００４６】
また品質制御モジュール３１は、前記送信レート制御モジュール２５がソケットライブラリ２９を呼び出す際の制御パラメータを前記オペレーティングシステム２８などから得られる各種通信品質状況に応じて、決定する。
【００４７】
オペレーティングシステム２８は、通信アプリケーションプログラム２７と前記擬似ソケットライブラリ３０に接続され、その機能として、ソケットライブラリ２９に加え、ＩＰプロトコルを処理するためのＩＰプロトコル処理モジュール２２と、ネットワークを制御するためのネットワーク制御ドライバ２１が実装されている。オペレーティングシステム２８はまた、ネットワークインターフェースカード２０を介して前記ネットワーク１に接続されている。
【００４８】
帯域情報記憶手段である帯域情報管理テーブル２６は、擬似ソケットライブラリ３０，帯域情報送信モジュール２４、及び帯域情報送信モジュール２４に接続され、送信レート制御モジュール２５から入力された帯域情報を格納する。また、帯域情報受信モジュール２３から入力された他のノードの帯域情報を格納する。
【００４９】
帯域情報配信手段である帯域情報送信モジュール２４は、前記帯域情報管理テーブル２６に接続されるとともに、オペレーティングシステム２８，ネットワークインターフェースカード２０を介して前記ネットワーク１に接続されている。帯域情報送信モジュール２４は、帯域情報管理テーブル２６に格納された自ノードの帯域情報をソケットライブラリ２９を介してネットワーク１にブロードキャストする。送信レート制御モジュール２５と帯域情報送信モジュール２４の送信は、ほぼ同一タイミングでおこなわれる。
【００５０】
帯域情報受信手段である帯域情報受信モジュール２３は、前記帯域情報管理テーブル２６に接続されるとともに、オペレーティングシステム２８，ネットワークインターフェースカード２０を介して前記ネットワーク１に接続している。帯域情報受信モジュール２３は、他のノードの帯域情報送信モジュール２４が送信した帯域情報を受信し、帯域情報管理テーブル２６に出力する。
【００５１】
ネットワークインターフェースカード２０は、これらの構成をネットワーク１に接続してデータの送受信を行う。
【００５２】
図３に帯域情報管理テーブル２６の構成の例を示す。帯域情報管理テーブル２６は、自ノード用の情報を記憶する自ノードテーブル２６１と他ノード用の情報を記憶する他ノードテーブル２６２から構成される。他ノードテーブル２６２は、図示された自ノードテーブル２６１と構成は同一であり、他ノードの数に合わせてその数だけ設定される。帯域情報管理テーブル２６には、通信データのフローならびにデータの種別を特定するための情報として、ＩＰアドレス２６３，ポート番号２６４，帯域量２６５，種別２６６，動作アプリケーションの数267とプロセスＩＤのリスト２６８を記憶する。
【００５３】
ＩＰアドレス（通信相手を指定するもの）２６３，ポート番号（通信内容を識別するもの）２６４，帯域量２６５，種別２６６はユーザの設定によりあらかじめ格納される値である。種別２６６は、ＩＰアドレス２６３とポート番号２６４により特定される通信の帯域を確保することにより通信品質を保証することを指示する「ＱｏＳ」か、ベストエフォートで通信するかを識別する「ＢＥ」が設定される。
【００５４】
動作アプリケーションの数２６７とプロセスＩＤのリスト２６８は、動的（通信毎）に送信レート制御モジュール２５により設定される値であり、動作アプリケーションの数２６７は、ＩＰアドレス２６３とポート番号２６４により特定される通信を現在行っているプロセスの数であり、プロセスＩＤのリスト２６８はそのプロセスの識別子（番号）を格納する。
【００５５】
図４，図５，図６に、送信レート制御モジュール２５の処理フローを示す。帯域量計算手段を兼ねている送信レート制御モジュール２５は、擬似ソケットライブラリ３０の関数として実装される。従って、処理自体は、通信アプリケーションプログラム２７の要求に従って実行される。ソケットライブラリの関数としては、通信の開始時点で発行される図４の関数connect(２５０１），通信の終了時点で発行される図５の関数close(２５０５）、実際のデータ転送を行う図６の関数send（２５０９）がある。これら関数が、通信アプリケーションプログラム２７から呼び出されることを利用して、関数connect(２５０１）ではデータ通信フローの発生を、関数close(２５０５）では通信データフローの消滅を、関数send（２５０９）ではデータ送信要求を検出して、帯域情報の取得と、帯域制御を行う。
【００５６】
関数connect(２５０１)では、connect(２５０１)で指定されたＩＰアドレスとポート番号をキーにして、帯域情報管理テーブル２６の自ノードテーブル２６１に設定されたＩＰアドレス２６３とポート番号２６４を検索（処理２５０２）し、エントリが検索できたならば、そのエントリのアプリケーション数に１を加え、プロセスＩＤのリストに自プロセス（通信アプリケーションプログラム２７のプロセス番号）を追加する（処理２５０３）。さらに、変更したテーブルを全てのノードに通知する必要があるため、帯域情報送信モジュール２４にイベント（送信の指示）を送る（処理２５０４）。
【００５７】
関数close(２５０５）では、関数connect(２５０１）の処理とは逆に、検索（処理２５０２）にて見つけたエントリのアプリケーション数から１を減算し、プロセスＩＤのリストから自プロセス（通信アプリケーションプログラム２７のプロセス番号）を削除し（処理２５０７）、帯域情報送信モジュール２４にイベントを送る（処理２５０８）。
【００５８】
関数send（２５０９）では、実際に送信するデータのレートを調整する処理を行う。レートは、単位時間に許される最大データ量、つまり帯域量に従い、あるデータサイズ毎にディレイをすることによって、単位時間当たりのデータ量を調整する。送信可能帯域量は、種別がＱｏＳの場合とＢＥの場合で異なり、考え方は以下の通りである。
（１）ＱｏＳでは、設定された帯域量を送信可能帯域量として扱う
（２）ＢＥでは、ＢＥとして割り当てられている帯域量からＱｏＳとして使用されている帯域量を引いた帯域量を送信可能帯域量として扱う。
【００５９】
つまり以下のように計算する。
【００６０】
送信可能帯域量＝ＢＥ設定帯域量／動作アプリケーションの数−ＱｏＳ使用帯域量
ＢＥ設定帯域量＝帯域情報管理テーブル２６に設定された種別がＢＥの帯域量
ＱｏＳ使用帯域量＝ＱｏＳ設定帯域量×動作アプリケーションの数
上記により、関数send（２５０９）では、種別がＢＥの場合には、配信された全てのノードの帯域情報管理テーブルから各々の通信パスに対する動作アプリケーションの数を求め（処理２５１０）、求めた動作アプリケーションの数に基づいて送信可能な帯域量を求め（処理２５１２）、種別がＱｏＳの場合には、設定された帯域量を送信可能帯域量として処理する（処理２５１１）。求めた送信可能帯域量に従い、送信のレート、つまり送信頻度の調節を行う（処理２５１３）。このレート送信頻度などの具体的な調整は、後述の品質制御モジュール３１にて実施している。詳細な方法は後述する。なお、図４〜図６は、ＴＣＰ／ＩＰベースの通信の処理を元にしているが、ＵＤＰ／ＩＰにおいては、関数connect に相当する処理と関数sendに相当する処理を、関数sendtoに実装する方法を採っている。
【００６１】
図７に、帯域情報送信モジュール２４の処理フローを示す。本モジュールは、起動されるとタイマー２４２および、送信レート制御モジュール２５からの帯域情報送信要求イベント待ち（処理２４４）となる。つまり、タイマーによる周期と、通信アプリケーションプログラム２７が通信を開始する場合の処理が行われる。タイマーによる周期実行を行うのは、自ノードテーブルの帯域情報（帯域情報管理テーブル）の送信をブロードキャストで行う（処理２４５）ため、メッセージが１回の送信にて送達しない可能性があり、そのリカバリのためである。
【００６２】
図８に、帯域情報受信モジュール２３の処理フローを示す。本モジュールは、起動されると帯域情報受信待ち（処理２３２）となる。他ノードの帯域情報を受信すると、受信した内容をノード番号をインデックスとした帯域情報管理テーブル２６にセットする。
【００６３】
上記実施の形態によれば、通信アプリケーションプログラムの動作数を通信属性毎に取得してネットワークに接続されたすべてのノードに配信することにより、実際にＬＡＮのパケットを監視することなく、各ノードがそれぞれＬＡＮ内の帯域量を推定することが可能となる。ここでいう通信属性はすなわち帯域情報であり、ＩＰアドレス，ポート番号，帯域量，データ種別，動作アプリケーションの数とプロセスＩＤのリストなどをまとめていう。したがって、各ノードがそれぞれ通信毎に、その時点でのネットワーク帯域量に基づいて帯域制御することが可能となる。
【００６４】
なお、スイッチングハブなどで複数のセグメントに分割されたサブネットであっても、帯域情報をブロードキャストで他のノードに配信することで、各ノードが他のノードの帯域情報を入手することができる。
【００６５】
次に、本発明の第２の実施の形態を説明する。第２の実施の形態では、通信品質が不均質で劣化するようなネットワーク環境において、データ通信時の通信粒度や回復強度などを調整することにより、それに依存して発生する再送データを含むプロトコル制御データ量を変更し、高精度に帯域制御を実施可能とするものである。
【００６６】
図９に、品質制御モジュール３１の処理フローを示す。本モジュールは、前記送信レート制御モジュール２５が決定した、送信可能帯域量に従い、実効通信データ量がそれに等しくなるように、データ通信時の通信粒度や回復強度などを変更し、それに依存して発生する再送データを含むプロトコル制御データの帯域を変更するものである。
【００６７】
本モジュールは、起動されると、まずポリシーを参照し、規定のデフォルト制御パラメータや制御ポリシーを取得する（処理３１０１）。このポリシーは図示していないが、事前にそれを管理するノードで定義され、制御に先だって配布され、各ノードはそれに従って制御処理を実施するものである。
【００６８】
そして、ポリシーを取得した後、送信レート制御モジュール２５が決定した送信可能帯域量をパラメータなどから取得し（処理３１０２）、まず規定のパラメータでソケットライブラリを呼び出し、送信する（処理３１０３）。例えば、帯域量が５Ｋバイト／秒で規定のパケットサイズが５００バイトであれば、ディレイは１００ミリ秒と決定される。そして、ＴＣＰ／ＩＰプロトコルの通信データの入出力情報などから得られる、通信データパケット量とデータ損失情報などの通信品質を観測する（処理３１０４）。なお、前記（処理３１０４）では、他の通信品質属性として、例えば再送回数や時間間隔などのデータ回復強度のための制御パラメータをも同様に取得する。
【００６９】
そして、前記（処理３１０１）でポリシから取得した、通信品質水準と比較するなどして（処理３１０５）、その水準に達していれば、実効通信データの帯域量を算出し（処理３１０６）、前記（処理３１０２）で取得した、送信レート制御モジュール２５が決定した送信可能帯域量と比較する（処理３１０７）。比較した結果が等しければ、前記（処理３１０３）と同様に規定のパラメータでソケットライブラリを呼び出し、送信する（処理３１０８）。
【００７０】
例えば、前記（処理３１０１）で取得したポリシーは、“品質水準は再送データの発生がＮ回以下、その品質に達している場合にはパケットサイズ１Ｋバイトで送信する”であるとするならば、前記（処理３１０８）では、ソケットライブラリを呼び出す際のパラメータを、パケットサイズは５００バイトから１Ｋバイトに、ディレイは１００ミリ秒を２００ミリ秒に変更し、送信する。即ち前記（処理３１０８）では、送信可能な帯域量５Ｋバイト／秒を遵守するように、データの粒度を変更しデータを送信する。
【００７１】
そして、残り通信データがあれば、前記（処理３１０８）の通信状況を観測すべく（処理３１０４）から繰り返し実施し、なくなれば処理を終了する（処理３１０９）。
【００７２】
さて、前記（処理３１０７）で、実効通信帯域量に等しくない場合には、実効通信データの帯域量の調整（処理３１２１）を実施することとなる。
【００７３】
例えば、前記（処理３１０１）で取得したポリシーは、“通信品質が一定水準以上でありながら帯域量が等しくない場合には、再送が成功する確率を向上させるためにパケットサイズ４００バイトで送信する。データ回復強度の再送時間間隔を２倍の値に変更する”であるとするならば、前記（処理３１２１）では、ソケットライブラリを呼び出す際のパラメータを、パケットサイズは５００バイトから４００バイトに、ディレイは１００ミリ秒を８０ミリ秒に、さらに再送時間間隔を２倍の値に変更し、送信する。即ち前記（処理３１２１）では、送信可能な帯域量５Ｋバイト／秒を遵守するように、データの粒度と回復の強度を変更しデータを送信する。
【００７４】
そして前記と同様に、残り通信データがあれば、前記（処理３１２１）の通信状況を観測すべく（処理３１０４）から繰り返し実施し、なくなれば処理を終了する（処理３１０９）。
【００７５】
前記処理は通信品質が一定水準に達している場合の処理であるが、もし、前記（処理３１０５）で、通信品質が一定水準に達しない場合には、規定の通信品質を満たす帯域量を求め（処理３１２０）前記、実効通信データの帯域量の調整（処理３１２１）を実施することとなる。
【００７６】
すなわち、この場合の状態は、不均質に品質状態が劣化し、送信レート制御モジュール２５が決定した送信可能帯域量を、再送データが圧迫していると判断している状態であり、規定の水準の通信品質が得られる実効通信帯域量を求め、その帯域量に従ってデータを送信する。
【００７７】
例えば、前記（処理３１０１）で取得したポリシーは、“通信品質が再送データの発生がＮ回以下とならない場合には、誤り訂正処理を２倍の強度のものに、再送時間間隔を２倍の値に変更し、その結果得られる実効通信帯域量とする”であるとするならば、前記（処理３１２１）では、ソケットライブラリを呼び出す際のパラメータを、誤り訂正処理を２倍の強度のものに、さらに再送時間間隔を２倍の値に変更し送信する。
【００７８】
そして前記と同様に、残り通信データがあれば、前記（処理３１２１）の通信結果状況を観測すべく（処理３１０４）から繰り返し実施することとなるが、この場合通信品質が一定水準に回復するまで求めた帯域量で送信する。
【００７９】
第２の実施の形態によれば、各ノードがそれぞれ算出した帯域量にしたがってデータ通信を行う場合に、自ノードで観測可能な、例えばＴＣＰ／ＩＰプロトコルなどの通信データの入出力情報などから得られる、通信データパケット量と通信品質をもとに、実効通信データの帯域量を算出し、それが帯域制御量に等しくなるように、通信データの品質を調整することが可能となる。
【００８０】
すなわち、第１の実施の形態により決定した帯域量を遵守しながらも、データ通信粒度や回復強度を変更するなどして、それに依存して発生する再送データを含む各種プロトコル制御データの帯域量を調整することにより、一定の水準の通信品質をもち、また、上記帯域量の精度を高めることが可能となる。
【００８１】
【発明の効果】
本発明によれば、サブネット内の帯域制御において、スイッチングハブなどのセグメントが複数に分離された形態のネットワークであっても、特別なハードウェアを用いることなく、サブネット内の発生帯域情報に基づいて通信ごとに送信可能帯域量を求めることが可能となるので、送信可能帯域量やデータの種別に応じた帯域制御が実現できる。
【００８２】
さらに、その通信品質が不均質で劣化するようなネットワーク環境においても、それに依存して発生する再送データを含む各種プロトコルの制御データの帯域量を、データの通信粒度や回復強度を変更するなどして調整することにより、データの実効通信帯域や品質補正が可能となるので、より高精度な帯域制御が実現できる。
【図面の簡単な説明】
【図１】本発明が適用されるネットワークの例を示すシステム全体構成図である。
【図２】本発明の実施の形態の構成を示すブロック図である。
【図３】図２に示す帯域情報管理テーブルの構成を示す図である。
【図４】図２に示す送信レート制御モジュールの動作を示すフローチャートである。
【図５】図２に示す送信レート制御モジュールの他の動作を示すフローチャートである。
【図６】図２に示す送信レート制御モジュールの他の動作を示すフローチャートである。
【図７】図２に示す帯域情報送信モジュールの動作を示すフローチャートである。
【図８】図２に示す帯域情報受信モジュールの動作を示すフローチャートである。
【図９】図２に示す品質制御モジュールの動作を示すフローチャートである。
【符号の説明】
１…ネットワーク、２…ノード、３…スイッチングハブ、２０…ネットワークインターフェースカード、２１…ネットワーク制御ドライバ、２２…ＩＰプロトコル処理モジュール、２３…帯域情報受信モジュール、２４…帯域情報送信モジュール、２５…送信レート制御モジュール、２６…帯域情報管理テーブル、２７…通信アプリケーションプログラム、２８…オペレーティングシステム、２９…ソケットライブラリ、３０…疑似ソケットライブラリ、２６１…自ノードテーブル、２６２…他ノードテーブル、２６３…ＩＰアドレス、２６４…ポート番号、２６５…帯域量、２６６…種別、２６７…動作アプリケーションの数、２６８…動作アプリケーションのプロセスＩＤのリスト。
【図１】
0003639792.tif 000002
【図２】
0003639792.tif 000003
【図３】
0003639792.tif 000004
【図４】
0003639792.tif 000005
【図５】
0003639792.tif 000006
【図６】
0003639792.tif 000007
【図７】
0003639792.tif 000008
【図８】
0003639792.tif 000009
【図９】
0003639792.tif 000010