(57)【要約】【課題】通信ネットワークの安定化が可能な通信装置を提供する。【解決手段】負荷モニタモジュール１１は、キュー４〜６に保持された保持パケット数を検出し、保持パケット数がキュー４〜６の許容サイズに近づくように目標入力パケットレートを演算してアップストリームスケジューラ７およびクロスレイヤモジュール２１へ送信する。アップストリームスケジューラ７は、目標入力パケットレートをキュー８，９に入れるパケットに追加してキューに入れて他の無線装置へ送信する。クロスレイヤモジュール２１は、目標入力パケットレートを上層レートコントローラ２０へ送信し、上層レートコントローラ２０は、目標入力パケットレートに基づいて、目標出力パケットレートを演算し、その演算した目標出力パケットレートを用いてＶｏｉｃｅ１７およびＶｉｄｅｏ１８の出力レートを制御する。【選択図】図１
2008099055.tif 000002
【特許請求の範囲】
【請求項１】
自律的に確立される通信ネットワークを構成し、負荷を制御可能な通信装置であって、
パケットが入力される入力バッファと、
前記入力バッファに保持された保持パケット数を検出する検出手段と、
前記検出手段によって検出された保持パケット数が前記入力バッファの許容サイズに近づくように前記入力バッファに入るパケット数を制御する制御手段とを備える通信装置。
【請求項２】
パケットを生成する生成手段を更に備え、
前記バッファは、
前記生成手段によって生成されたパケットが入力される第１の入力バッファと、
他の通信装置から送信されたパケットが入力される第２の入力バッファとを含み、
前記検出手段は、前記第１および第２の入力バッファにそれぞれ保持された第１および第２の保持パケット数を検出し、
前記制御手段は、前記第１の保持パケット数が前記第１の入力バッファの第１の許容サイズに近づくように前記生成手段を制御するとともに、前記第２の保持パケット数が前記第２の入力バッファの第２の許容サイズに近づくように前記他の通信装置を制御し、
前記生成手段は、前記制御手段からの制御に従って、前記第１の保持パケット数が前記第１の許容サイズに近づくように前記第１の入力バッファに入れる入力パケットレートを増減する、請求項１に記載の通信装置。
【請求項３】
前記制御手段は、
前記第１の入力バッファに入れる入力パケットレートの目標値である第１の目標入力パケットレートを演算する第１の演算手段と、
前記生成手段が前記パケットを前記第１の入力バッファへ出力するときの出力パケットレートを前記第１の目標入力パケットレートを用いて演算する第２の演算手段と、
前記演算された出力パケットレートを前記生成手段へ出力する出力手段とを含み、
前記生成手段は、前記生成したパケットを前記出力パケットレートで前記第１の入力バッファへ出力する、請求項２に記載の通信装置。
【請求項４】
前記制御手段は、
前記第２の入力バッファに入れる入力パケットレートの目標値である第２の目標入力パケットレートを演算する演算手段と、
前記第２の目標入力パケットレートを前記他の通信装置へ通知する通知手段とを含む、請求項２に記載の通信装置。
【請求項５】
前記通知手段は、前記第２の目標入力パケットレートを前記他の通信装置宛のパケットに含めて前記他の通信装置へ通知する、請求項４に記載の通信装置。
【請求項６】
前記通知手段は、前記第２の目標入力パケットレートを専用パケットに含めて前記他の通信装置へ通知する、請求項４に記載の通信装置。
【請求項７】
各送信先へパケットを送信する送信手段と、
保持しているパケットが空になると前記第１および／または第２の入力バッファから前記パケットを受けて送信先ごとに保持するとともに、前記保持したパケットを前記送信手段へ送信する出力バッファと、
前記第１および第２の保持パケット数がそれぞれ前記第１および第２の許容サイズに近づくように前記出力バッファが前記パケットを前記送信手段へ送信するときの送信パケットレートを制御する送信制御手段とを更に備える、請求項２に記載の通信装置。
【請求項８】
前記出力バッファは、前記パケットを送信可能であるアンロック状態と前記パケットを送信できないロック状態とが設定され、前記アンロック状態が設定されると前記パケットを前記送信手段へ送信し、前記ロック状態が設定されると前記パケットの前記送信手段への送信を停止し、
前記送信制御手段は、前記アンロック状態の期間と前記ロック状態の期間とを制御することによって前記送信パケットレートを制御する、請求項７に記載の通信装置。
【請求項９】
前記送信制御手段は、前記第１の入力バッファに入れる入力パケットレートの目標値である第１の目標入力パケットレートを演算し、その演算した第１の目標入力パケットレートを用いて前記送信パケットレートを演算するとともに、前記演算した送信パケットレートの逆数を前記ロック状態の期間として演算し、その演算したロック状態の期間に基づいて前記送信パケットレートを制御する、請求項８に記載の通信装置。
【請求項１０】
請求項１から請求項９のいずれか１項に記載の通信装置を備える通信ネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、負荷を制御可能な通信装置およびそれを備えた通信ネットワークに関し、特に、自律的に確立される通信ネットワークを構成する通信装置およびそれを備えた通信ネットワークに関するものである。
【背景技術】
【０００２】
標準的なネットワークプロトコルは、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）レイヤ型モデルに基づいて構築されている。
【０００３】
ＴＣＰ／ＩＰレイヤ型モデルは、リンク／ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層と、ネットワーク層と、トランスポート層と、アプリケーション層とを備える。そして、ＴＣＰ／ＩＰレイヤ型モデルにおいて、リンク／ＭＡＣ層、ネットワーク層、トランスポート層およびアプリケーション層は、異なる役割を果たす。
【０００４】
即ち、リンク／ＭＡＣ層は、２つの通信装置間を物理的に接続する経路の確立および２つの通信装置間における通信等を行なう。ネットワーク層は、ネットワーク上の経路選択および経路中断等を行なう。トランスポート層は、エンド−エンド間の通信処理および輻輳処理等を行なう。アプリケーション層は、特定のアプリケーションの詳細な動作に関する処理を行なう。
【０００５】
また、ＴＣＰ／ＩＰレイヤ型モデルは、構造的には、リンク／ＭＡＣ層、ネットワーク層、トランスポート層およびアプリケーション層にそれぞれ属する複数のプロトコルが、相互に独立して、上述した各役割を果たすという特徴を有する。即ち、特定のレイヤにおけるプロトコルの変更は、他のレイヤにおけるプロトコルに影響することなく行なわれる。
【０００６】
有線ネットワークにおいて通信を行なう端末装置および無線ネットワークにおいて無線通信を行なう通信装置は、上述したＴＣＰ／ＩＰレイヤ型モデルによって構成されている。
【０００７】
無線ネットワークは、有線ネットワークと以下の点で異なる。
【０００８】
（１）反射および遮断などにより電波状態が大きく変動する。
【０００９】
（２）同一通信範囲に位置する各無線装置は、無線チャネルを共用して通信を行なう。
【００１０】
（３）無線装置が移動可能である。
【００１１】
無線ネットワークは、有線ネットワークと（１）の異なる点を有している結果、マルチパス通信および一時的な通信の切断によりパケットロスが発生するなど、通信の品質が大きく異なる。
【００１２】
また、無線ネットワークは、有線ネットワークと（２）の異なる点を有している結果、チャネルアクセスの際の無線装置間またはフロー間の公平性が重要な課題となる。
【００１３】
更に、無線ネットワークは、有線ネットワークと（３）の異なる点を有している結果、ルートの切断およびネットワークの分裂等が生じる。
【００１４】
従って、無線ネットワークにおいては、通信状態がダイナミックに変動する。そして、この通信状態の変動の原因を特定することは困難である。その結果、ＴＣＰ／ＩＰレイヤ型モデルを構成する複数のプロトコルの各々が独立して動作すると、通信の品質および効率が低下する。
【００１５】
このような理由から、無線ネットワークにおいて、高効率、かつ、高品質な無線通信を行なうには、ＴＣＰ／ＩＰレイヤ型モデルを構成する複数のプロトコルの相互間において情報交換を行ない、通信の品質および効率を向上させるクロスレイヤ処理が必要となる。
【００１６】
そこで、従来、リンクレイヤにおける輻輳状態をＴＣＰに知らせるＥＣＮ（Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ）というクロスレイヤ処理が行なわれている（非特許文献１）。
【００１７】
このクロスレイヤ処理は、中継端末において輻輳によってパケットロスが発生した場合、中継端末は、ロスしたパケットの次に届いたパケットのヘッダにＣＥ（Ｃｏｎｇｅｓｔｉｏｎ  Ｅｘｐｅｒｉｅｎｃｅｄ）ビットを設定して送信先へ転送し、ＣＥビットが設定されたパケットを受信した送信先がＡＣＫ（Ａｃｋｎｏｗｌｅｄｇｅ）パケットのヘッダにＥＣＮ−Ｅｃｈｏビットを設定して送信元のＴＣＰへ送信するというものである。
【００１８】
ＥＣＮ−Ｅｃｈｏビットが設定されたＡＣＫパケットを受信した送信元のＴＣＰは、ＡＣＫパケットからＥＣＮ−Ｅｃｈｏビットを検出することにより、パケットが輻輳によってロスしたことを検知する。
【非特許文献１】Ｋ．Ｒａｍａｋｒｉｓｈｎａｎ  ａｎｄ  Ｓ．Ｆｌｏｙｄ，“Ａ  Ｐｒｏｐｏｓａｌ  ｔｏ  ａｄｄ  Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ（ＥＣＮ）  ｔｏ  ＩＰ”，ＲＦＣ  ２４８１，Ｊａｎ  １９９９．
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかし、従来のパケット通信ネットワークにおいては、通信の流れであるトラフィックを多重化したり、ネットワークリソースを共有することが行なわれているため、ネットワークの負荷がゆらぎ、ネットワークが不安定化するという問題がある。
【００２０】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、通信ネットワークの安定化が可能な通信装置を提供することである。
【００２１】
また、この発明の別の目的は、通信ネットワークの安定化が可能な通信装置を備えた通信ネットワークを提供することである。
【課題を解決するための手段】
【００２２】
この発明によれば、通信装置は、自律的に確立される通信ネットワークを構成し、負荷を制御可能な通信装置であって、入力バッファと、検出手段と、制御手段とを備える。入力バッファは、パケットが入力される。検出手段は、入力バッファに保持された保持パケット数を検出する。制御手段は、検出手段によって検出された保持パケット数が入力バッファの許容サイズに近づくように入力バッファに入るパケット数を制御する。
【００２３】
好ましくは、通信装置は、生成手段を更に備える。生成手段は、パケットを生成する。バッファは、第１および第２の入力バッファを含む。第１の入力バッファは、生成手段によって生成されたパケットが入力される。第２の入力バッファは、他の通信装置から送信されたパケットが入力される。そして、検出手段は、第１および第２の入力バッファにそれぞれ保持された第１および第２の保持パケット数を検出する。制御手段は、第１の保持パケット数が第１の入力バッファの第１の許容サイズに近づくように生成手段を制御するとともに、第２の保持パケット数が第２の入力バッファの第２の許容サイズに近づくように他の通信装置を制御する。生成手段は、制御手段からの制御に従って、第１の保持パケット数が第１の許容サイズに近づくように第１の入力バッファに入れる入力パケットレートを増減する。
【００２４】
好ましくは、制御手段は、第１および第２の演算手段と、出力手段とを含む。第１の演算手段は、第１の入力バッファに入れる入力パケットレートの目標値である第１の目標入力パケットレートを演算する。第２の演算手段は、生成手段がパケットを第１の入力バッファへ出力するときの出力パケットレートを第１の目標入力パケットレートを用いて演算する。出力手段は、演算された出力パケットレートを生成手段へ出力する。生成手段は、生成したパケットを出力パケットレートで第１の入力バッファへ出力する。
【００２５】
好ましくは、制御手段は、演算手段と、通知手段とを含む。演算手段は、第２の入力バッファに入れる入力パケットレートの目標値である第２の目標入力パケットレートを演算する。通知手段は、第２の目標入力パケットレートを他の通信装置へ通知する。
【００２６】
好ましくは、通知手段は、第２の目標入力パケットレートを他の通信装置宛のパケットに含めて他の通信装置へ通知する。
【００２７】
好ましくは、通知手段は、第２の目標入力パケットレートを専用パケットに含めて他の通信装置へ通知する。
【００２８】
好ましくは、通信装置は、送信手段と、出力バッファと、送信制御手段とを更に備える。送信手段は、各送信先へパケットを送信する。出力バッファは、保持しているパケットが空になると第１および／または第２の入力バッファからパケットを受けて送信先ごとに保持するとともに、保持したパケットを送信手段へ送信する。送信制御手段は、第１および第２の保持パケット数がそれぞれ第１および第２の許容サイズに近づくように出力バッファがパケットを送信手段へ送信するときの送信パケットレートを制御する。
【００２９】
好ましくは、出力バッファは、パケットを送信可能であるアンロック状態とパケットを送信できないロック状態とが設定され、アンロック状態が設定されるとパケットを送信手段へ送信し、ロック状態が設定されるとパケットの送信手段への送信を停止する。送信制御手段は、アンロック状態の期間とロック状態の期間とを制御することによって送信パケットレートを制御する。
【００３０】
好ましくは、送信制御手段は、第１の入力バッファに入れる入力パケットレートの目標値である第１の目標入力パケットレートを演算し、その演算した第１の目標入力パケットレートを用いて送信パケットレートを演算するとともに、演算した送信パケットレートの逆数をロック状態の期間として演算し、その演算したロック状態の期間に基づいて送信パケットレートを制御する。
【００３１】
また、この発明によれば、通信ネットワークは、請求項１から請求項９のいずれか１項に記載の通信装置を備える。
【発明の効果】
【００３２】
この発明による通信装置においては、入力バッファに保持される保持パケット数が入力バッファの許容サイズに近づくように入力バッファに入力されるパケット数が制御される。その結果、各通信装置における負荷が低減される。
【００３３】
従って、この発明によれば、通信ネットワークを安定化できる。
【発明を実施するための最良の形態】
【００３４】
本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
【００３５】
［実施の形態１］
図１は、この発明の実施の形態１による通信装置の構成を示す概略図である。この発明の実施の形態による通信装置１００は、ＭＡＣレイヤモジュール１と、リンクレイヤクラシファイア２と、トラフィッククラシファイア３と、キュー４〜６，８，９と、アップストリームスケジューラ７と、ダウンストリームスケジューラ１０と、負荷モニタモジュール１１と、下層レートコントローラ１２と、ネットワークレイヤクラシファイア１３と、ルーティングモジュール１４と、ＵＤＰ１５と、ＴＣＰ１６と、Ｖｏｉｃｅ１７と、Ｖｉｄｅｏ１８と、Ｔｅｘｔ１９と、上層レートコントローラ２０と、クロスレイヤモジュール２１とを備える。
【００３６】
ＭＡＣレイヤモジュール１は、ＭＡＣ層に属し、他の通信装置から受信したパケットをリンクレイヤクラシファイア２へ送信する。
【００３７】
また、ＭＡＣレイヤモジュール１は、２つの通信装置間における物理的な接続を制御する。
【００３８】
更に、ＭＡＣレイヤモジュール１は、チャネルアクセスしてチャネルが空いているとき、データリンク層から受けたパケットを所定のチャネルで送信する。
【００３９】
リンクレイヤクラシファイア２は、データリンク層に属し、ＭＡＣレイヤモジュール１からパケットを受ける。そして、リンクレイヤクラシファイア２は、その受けたパケットが後述するレートコントロールを要求する信号Ｒａｔｅ＿ｓｉｇｎａｌを含むとき、その信号Ｒａｔｅ＿ｓｉｇｎａｌをパケットから取り出して下層レートコントローラ１２へ送信し、残りのデータパケットをネットワーククラシファイア１３へ送信する。
【００４０】
トラフィッククラシファイア３は、データリンク層に属し、通信装置１００が他の通信装置から受信したパケットまたは上位層から受信したパケットをパケットの送信元ごとに分類してキュー４〜６へ入れる。
【００４１】
キュー４〜６の各々は、データリンク層に属し、トラフィッククラシファイア３から受けたパケットを保持するとともに、その保持したパケットをアップストリームスケジューラ７からの出力要求に応じてアップストリームスケジューラ７へ出力する。なお、キュー４，６は、通信装置１００が他の通信装置から受信したパケットを保持し、キュー５は、通信装置１００において生成されたパケットを保持する。
【００４２】
アップストリームスケジューラ７は、データリンク層に属する。そして、アップストリームスケジューラ７は、キュー８または９が空になると、キュー４〜６から１個のパケットを読み出し、その読み出した１個のパケットをキュー８または９へ入れる。
【００４３】
また、アップストリームスケジューラ７は、後述する目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌを負荷モニタモジュール１１から受けると、その受けた信号Ｒａｔｅ＿ｓｉｇｎａｌをデータパケットに追加してキュー８または９へ送信する。
【００４４】
キュー８，９の各々は、データリンク層に属し、パケットを出力できないロック状態とパケットを出力可能なアンロック状態とを有する。そして、キュー８，９の各々は、アップストリームスケジューラ７から受けた１個のパケットを保持するとともに、アンロック状態になり、かつ、ダウンストリームスケジューラ１０からの出力要求に応じて、保持した１個のパケットをダウンストリームスケジューラ１０へ出力する。
【００４５】
ダウンストリームスケジューラ１０は、データリンク層に属する。そして、ダウンストリームスケジューラ１０は、ＭＡＣレイヤモジュール１からパケットの出力要求を受け、かつ、キュー８，９の状態がアンロック状態になると、キュー８，９から１個のパケットを読み出してＭＡＣレイヤモジュール１へ送信する。
【００４６】
負荷モニタモジュール１１は、データリンク層に属し、キュー５〜６に保持されたパケット数をレートコントロール間隔ごとにモニタするとともに、制御方式に応じてキュー４〜６の許容サイズを後述する方法によって演算する。そして、負荷モニタモジュール１１は、後述する方法によって、キュー４〜６に保持されているパケット数がキュー４〜６の許容サイズに近づくようにキュー４〜６に入れるパケットの目標レートである目標入力パケットレートをレートコントロール間隔ごとに計算する。そして、負荷モニタモジュール１１は、キュー５の目標入力パケットレートを計算すると、その計算した目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌをクロスレイヤモジュール２１へ送信し、キュー４，６の目標入力パケットレートを計算すると、その計算した目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌをアップストリームスケジューラ７へ送信する。
【００４７】
下層レートコントローラ１２は、データリンク層に属する。そして、下層レートコントローラ１２は、隣接する通信装置のキュー４〜６に保持されているパケット数がキュー４〜６の許容サイズになるようにキュー８，９からの出力パケットレートの制御を後述する方法によって行なう。
【００４８】
また、下層レートコントローラ１２は、キュー８，９の状態をロック状態に設定するロック期間を後述する方法によって演算する。そして、下層レートコントローラ１２は、その演算したロック期間を用いてキュー８，９からのパケットの出力パケットレートを制御する。
【００４９】
ネットワーククラシファイア１３は、ネットワーク層に属し、リンクレイヤクラシファイア２から受けたパケットをルーティングモジュール１４へ出力する。
【００５０】
ルーティングモジュール１４は、ネットワーク層に属し、ネットワーククラシファイア１３からパケットを受ける。そして、ルーティングモジュール１４は、ルーティングプロトコルに従って、その受けたパケットの送信先を決定し、その決定した送信先宛のパケットをトラフィッククラシファイア３を介してキュー（キュー４または６）へ入れる。また、ルーティングモジュール１４は、ＵＤＰ１５およびＴＣＰ１６からパケットを受ける。そして、ルーティングモジュール１４は、ルーティングプロトコルに従って、その受けたパケットの送信先を決定し、その決定した送信先宛のパケットをトラフィッククラシファイア３を介してキュー５へ入れる。なお、この発明においては、ルーティングモジュール１４が送信先を決定するために用いるルーティングプロトコルとしては、オンデマンド型のルーティングプロトコルとテーブル駆動型のルーティングプロトコルとがある。
【００５１】
ＵＤＰ１５は、トランスポート層に属し、アプリケーション層のプロトコル（例えば（Ｖｏｉｃｅ１７，Ｖｉｄｅｏ１８）からパケットを受け、その受けたパケットをルーティングモジュール１４へ送信する。
【００５２】
ＴＣＰ１６は、トランスポート層に属し、アプリケーション層から受けたデータを上層レートコントローラ２０から受けた目標出力パケットレートでルーティングモジュール１４へ送信する。
【００５３】
Ｖｏｉｃｅ１７は、アプリケーション層に属し、音声データを生成する。そして、Ｖｏｉｃｅ１７は、上層レートコントローラ２０から受けた目標出力パケットレートで音声データからなるパケットをＵＤＰ１５へ送信する。
【００５４】
Ｖｉｄｅｏ１８は、アプリケーション層に属し、映像データを生成する。そして、Ｖｉｄｅｏ１８は、上層レートコントローラ２０から受けた目標出力パケットレートで画像データからなるパケットをＵＤＰ１５へ送信する。
【００５５】
Ｔｅｘｔ１９は、アプリケーション層に属し、テキストデータを生成する。そして、Ｔｅｘｔ１９は、その生成したテキストデータをＴＣＰ１６へ送信する。
【００５６】
上層レートコントローラ２０は、トランスポート層およびアプリケーション層に跨って属し、クロスレイヤモジュール２１から目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌを受けると、後述する方法によって目標出力パケットレートを演算する。そして、上層レートコントローラ２０は、ＴＣＰ１６、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８からの出力パケットレートが演算した目標出力パケットレートになるようにＴＣＰ１６、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８を制御する。
【００５７】
クロスレイヤモジュール２１は、負荷モニタモジュール１１から目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇａｎａｌを受けると、その受けた信号Ｒａｔｅ＿ｓｉｇｎａｌを上層レートコントローラ２０へ送信する。
【００５８】
図２は、自律的に確立される通信ネットワークであるアドホックネットワークの概念図である。通信装置１００〜１０２は、アドホックネットワークを構成する。そして、例えば、通信装置１０１は、送信元の通信装置であり、通信装置１０２は、送信先の通信装置であり、通信装置１００は、通信装置１０１と通信装置１０２との間でパケットを中継する中継通信装置である。中継通信装置である通信装置１００においては、例えば、キュー４は、通信装置１０１から受信したパケットを保持し、キュー６は、通信装置１０２から受信したパケットを保持する。また、通信装置１００においては、キュー８は、通信装置１０１宛てのパケットを保持し、キュー９は、通信装置１０２宛てのパケットを保持する。なお、通信装置１０１，１０２の各々は、図１に示す通信装置１００と同じ構成からなる。
【００５９】
以下においては、図２に示すアドホックネットワークにおいて各通信装置１００〜１０２が自己のキュー４〜６に保持されているパケット数がキュー４〜６の許容サイズに近づくように制御することによって、アドホックネットワーク全体を安定化させる方法について説明する。
【００６０】
［負荷のモニタ］
負荷モニタモジュール１１がキュー４〜６に保持されているパケット数をモニタする方法について説明する。負荷モニタモジュール１１は、システムのパラメータであるレートコントロール間隔ごとに、各々のキューに関して出力パケット数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ、失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｆａｉｌ、パケットサイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔおよび保持パケット数Ｈ＿Ｐｋｔを演算する。
【００６１】
出力パケット数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔは、前回の処理時刻以降にキューから出力されたパケット数である。失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔは、前回の処理時刻以降にキューからのパケットの出力に失敗した回数である。パケットサイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔは、前回の処理時刻以降にキューから出力されたパケットのサイズの合計である。保持パケット数Ｈ＿Ｐｋｔは、現時点でキューに保持されているパケット数である。
【００６２】
負荷モニタモジュール１１は、３つの制御方法のいずれかに従って各キュー４〜６に保持されている保持パケット数Ｈ＿Ｐｋｔが各キュー４〜６の許容サイズ（ＴＱＬ：Ｔｏｌｅｒａｎｃｅ  Ｑｕｅｕｅ  Ｌｅｎｇｔｈ）にそれぞれ近づくように各キュー４〜６に入力されるパケットレートを制御する。
【００６３】
３つの制御方法は、Ｃｏｎｓｔａｎｔ  ＴＱＬ（Ｃ−ＴＱＬ）、Ａｄｄｉｔｉｖｅ  Ｉｎｃｒｅａｓｅ／Ｄｅｃｒｅａｓｅ  ＴＱＬ（ＡＩＡＤ−ＴＱＬ）およびＤｅｌａｙ  Ｂａｓｅｄ  ＴＱＬ（ＤＢ−ＴＱＬ）である。Ｃ−ＴＱＬは、リンクレイヤにおけるパケットの輻輳状態を回避することによって、パケット落ちまたはキューにおける待ち時間を解消することを目的とする制御方法である。また、ＡＩＡＤ−ＴＱＬは、高いチャネル使用率を保持し、かつ、必要最小限のキュー長を保つことを目的とする制御方法である。更に、ＤＢ−ＴＱＬは、キューにおけるパケット遅延を特定の値以内に保つことを目的とする制御方法である。そして、この３つの制御方法のいずれの制御方法を用いるかによってキューの許容サイズ（ＴＱＬ）の決定方法が異なる。
【００６４】
ｉ）Ｃ−ＴＱＬを用いた場合のＴＱＬの決定方法
Ｃ−ＴＱＬを用いた場合、ＴＱＬは、一定値Ｃ＿ＴＱＬに保持され、この一定値Ｃ＿ＴＱＬは、システムパラメータとして負荷モニタモジュール１１に設定される。従って、この場合、負荷モニタモジュール１１は、ＴＱＬを演算することはない。
【００６５】
一定値Ｃ＿ＴＱＬは、次のように決定される。許容サイズＴＱＬの最大値をＴＱＬ＿ｍａｘとし、許容サイズＴＱＬの最小値をＴＱＬ＿ｍｉｎとすると、許容サイズの最大値ＴＱＬ＿ｍａｘは、次式によって決定される。
【００６６】
ＴＱＬ＿ｍａｘ＝（キューの最大サイズ（バイト）の７０％）／（キューから出力されたパケットの平均サイズ（バイト））・・・（１）
また、許容サイズの最小値ＴＱＬ＿ｍｉｎは、次式によって決定される。
【００６７】
ＴＱＬ＿ｍｉｎ＝（キューの最大サイズ（バイト）の１０％）／（キューから出力されたパケットの平均サイズ（バイト））・・・（２）
そして、キューサイズ＞ＴＱＬ＿ｍａｘ、かつ、キューサイズ＜ＴＱＬ＿ｍｉｎであるとき、許容サイズＴＱＬは、次式によって決定される。
【００６８】
ＴＱＬ＝（ＴＱＬ＿ｍａｘ−ＴＱＬ＿ｍｉｎ）／２＋ＴＱＬ＿ｍｉｎ
・・・（３）
一方、キューサイズ＞ＴＱＬ＿ｍａｘ、かつ、キューサイズ＜ＴＱＬ＿ｍｉｎが成立しない場合、許容サイズＴＱＬは、次式によって決定される。
【００６９】
ＴＱＬ＝キューサイズ・・・（４）
また、許容サイズＴＱＬは、次の方法によって決定されてもよい。
【００７０】
キューサイズ＞ＴＱＬ＿ｍａｘであれば、ＴＱＬ＝ＴＱＬ＿ｍａｘと決定し、キューサイズ＜ＴＱＬ＿ｍｉｎであれば、ＴＱＬ＝ＴＱＬ＿ｍｉｎと決定し、キューサイズ＞ＴＱＬ＿ｍａｘ、かつ、キューサイズ＜ＴＱＬ＿ｍｉｎが成立しない場合、ＴＱＬ＝キューサイズと決定する。
【００７１】
Ｃ−ＴＱＬが用いられる場合、上述した方法のいずれかによって、許容サイズＴＱＬが決定される。
【００７２】
ｉｉ）ＡＩＡＤ−ＴＱＬを用いた場合のＴＱＬの決定方法
負荷モニタモジュール１１は、演算したパケットサイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔおよび出力パケット数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔに基づいて、前回の処理時刻以降にキューから出力されたパケットの平均サイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ＿ａｖｅを演算する。そして、負荷モニタモジュール１１は、その演算したパケットの平均サイズを用いて、次式により許容サイズＴＱＬの最大値ＴＱＬ＿ｍａｘを演算する。
【００７３】
ＴＱＬ＿ｍａｘ＝（キューのサイズの３０％）／（Ｓ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ＿ａｖｅ）・・・（５）
また、負荷モニタモジュール１１は、ＴＱＬ＿ｍｉｎをＴＱＬ＿ｍｉｎ＝１と決定する。
【００７４】
そして、ＴＱＬ＿ｐｒｅｖを前回のレートコントロールタイマが終了した時のＴＱＬの値とし、ＴＱＬ＿ｎｅｗを次回のレートコントロールタイマが終了した時のＴＱＬの値とする。
【００７５】
そうすると、負荷モニタモジュール１１は、該当のキュー４〜６から出力されたパケットがあった場合、ＴＱＬ＿ｐｒｅｖとキューに保持されているパケット数とを比較し、ＴＱＬ＿ｐｒｅｖ＞保持されているパケット数であれば、ＴＱＬ＿ｎｅｗを下げる。この場合、負荷モニタモジュール１１は、例えば、ＴＱＬ＿ｎｅｗを１パケット分だけ下げる（ＴＱＬ＿ｎｅｗ＝ＴＱＬ＿ｐｒｅｖ−１）。キューへ入れたパケット数がキューへのパケットの出力要求数を上回っているので、ＴＱＬ＿ｎｅｗを下げることにしたものである。
【００７６】
また、負荷モニタモジュール１１は、キューからのパケットの出力要求に対してキューからパケットを出力できなかったとき（即ち、空振りしたとき）、ＴＱＬ＿ｎｅｗを上げる。この場合、負荷モニタモジュール１１は、例えば、ＴＱＬ＿ｎｅｗを１パケット分だけ上げる（ＴＱＬ＿ｎｅｗ＝ＴＱＬ＿ｐｒｅｖ＋１）。パケットの出力要求数がキューへ入れたパケット数を上回っているので、パケットの送信処理に余裕がある状態であると見なし、ＴＱＬ＿ｎｅｗを上げることにしたものである。
【００７７】
ただし、負荷モニタモジュール１１は、ＴＱＬ＿ｍｉｎからＴＱＬ＿ｍａｘの範囲を超えないようにＴＱＬ＿ｎｅｗの値を決定する。
【００７８】
そして、負荷モニタモジュール１１は、レートコントロールタイマが終了した時点のＴＱＬ＿ｎｅｗを許容サイズＴＱＬとして更新するとともに、その更新したＴＱＬ＿ｎｅｗをＴＱＬ＿ｐｒｅｖに設定する。
【００７９】
ｉｉｉ）ＤＢ−ＴＱＬを用いた場合のＴＱＬの決定方法
負荷モニタモジュール１１は、キューへのパケットの出力要求回数とレートコントロール間隔とに基づいて、ＭＡＣ要求レートを次式によって演算する。
【００８０】
ＭＡＣ要求レート＝（出力要求回数）／（レートコントロール間隔）
・・・（６）
なお、出力要求回数は、パケットの出力要求が空振りであった回数を含む。
【００８１】
そして、負荷モニタモジュール１１は、アップストリームスケジューラ７からパケットの出力要求があったときに、空振りせずに各キュー４〜６の遅延が許容遅延量ＴＱＤ（Ｔｏｌｅｒａｂｌｅ  Ｑｕｅｕｅ  Ｄｅｌａｙ）になるようにＴＱＬを演算する。即ち、負荷モニタモジュール１１は、次式によってＴＱＬを演算する。
【００８２】
ＴＱＬ＝ＴＱＤ×（ＭＡＣ要求レート）・・・（７）
負荷モニタモジュール１１は、上述した３つの制御方法のいずれかにおける許容サイズＴＱＬの決定方法に従って許容サイズＴＱＬを演算すると、その演算した許容サイズＴＱＬを用いて目標入力パケットレート（Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ）を次式によって演算する。
【００８３】
Target Enqueue Rate=(dequeue Rate)-((Queue Length-TQL)/(Rate Control Interval))+(Number of Dequeue Failure)/(Rate Control Interval)
・・・（８）
即ち、負荷モニタモジュール１１は、レートコントロール間隔内でキュー長（＝キューに保持されているパケット数）が許容サイズＴＱＬに近づくように、各キュー４〜６にパケットを入れるときの目標入力パケットレートを演算する。なお、式（８）において、ｄｅｑｕｅｕｅ  ｒａｔｅは、各キュー４〜６から出力されるパケットの出力レートであり、Ｑｕｅｕｅ  Ｌｅｎｇｔｈは、キュー長であり、Ｒａｔｅ  Ｃｏｎｔｒｏｌ  Ｉｎｔｅｒｖａｌは、レートコントロール間隔であり、Ｎｕｍｂｅｒ  ｏｆ  Ｄｅｑｕｅｕｅ  Ｆａｉｌｕｒｅは、上述した失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｆａｉｌである。
【００８４】
そして、負荷モニタモジュール１１は、通知タイプ＝ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ、ＲａｔｅＩｎｆｏ＝Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  ＲａｔｅおよびＬｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ＝負荷を発生させている通信装置のＩＤからなる信号Ｒａｔｅ＿ｓｉｇｎａｌを生成し、その生成した信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ］をクロスレイヤモジュール２１へ送信する。
【００８５】
［レートシグナリング］
Ａ．上層レートコントローラへのレートシグナリング
クロスレイヤモジュール２１は、負荷モニタモジュール１１から信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ］を受けると、信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ］を上層レートコントローラ２０へ送信する（図１参照）。
【００８６】
Ｂ．下層レートコントローラへのレートシグナリング
図３および図４は、それぞれ、目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態１における第１および第２の概念図である。なお、図３および図４においては、通信装置１００が通信装置１０１へ目標入力パケットレートを通知する場合について説明する。
【００８７】
通信装置１００の負荷モニタモジュール１１は、キュー４（通信装置１０１から受信したパケットを保持するキュー）における保持パケット数Ｈ＿Ｐｋｔがキュー４の許容サイズＴＱＬから掛け離れていることを検出し、上述した方法でキュー６への目標入力パケットレートを演算する。
【００８８】
そして、通信装置１００の負荷モニタモジュール１１は、その演算した目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ］をアップストリームスケジューラ７へ送信し、アップストリームスケジューラ７は、信号Ｒａｔｅ＿ｓｉｇｎａｌを負荷モニタモジュール１１から受信する。
【００８９】
そうすると、通信装置１００のアップストリームスケジューラ７は、通信装置１０１宛てのパケットを保持するキュー８に１個のパケットを入れる際にそのパケットに受信した信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｒｅｑｕｅｓｔｅｒ  ＩＤ］を追加してからキュー８に入れる。ここで、Ｒｅｑｕｅｓｔｅｒ  ＩＤは、通信装置１００のＩＤである。そして、通信装置１００のキュー８は、アンロック状態にある場合にＭＡＣレイヤモジュール１からパケットの出力要求を受けると、信号Ｒａｔｅ＿ｓｉｇｎａｌを含む１個のパケットをＭＡＣレイヤモジュール１へ送信し、ＭＡＣレイヤモジュール１は、信号Ｒａｔｅ＿ｓｉｇｎａｌを含む１個のパケットを通信装置１０１へ送信する（図３参照）。
【００９０】
通信装置１０１のＭＡＣレイヤモジュール１は、信号Ｒａｔｅ＿ｓｉｇｎａｌを含む１個のパケットを通信装置１００から受信し、信号Ｒａｔｅ＿ｓｉｇｎａｌを含む１個のパケットをリンクレイヤクラスファイア２へ送信する。
【００９１】
通信装置１０１のリンクレイヤクラスファイア２は、信号Ｒａｔｅ＿ｓｉｇｎａｌを含む１個のパケットを受け、その受けた１個のパケットから信号Ｒａｔｅ＿ｓｉｇｎａｌを取り出す。そして、通信装置１０１のリンクレイヤクラスファイア２は、その取り出した信号Ｒａｔｅ＿ｓｉｇｎａｌを下層レートコントローラ１２へ送信し、信号Ｒａｔｅ＿ｓｉｇｎａｌを取り出した後の１個のパケットをネットワーククラシファイア１３へ送信する。
【００９２】
ネットワーククラシファイア１３は、信号Ｒａｔｅ＿ｓｉｇｎａｌを取り出した後の１個のパケットを受け、その受けた１個のパケットの宛先が通信装置１０１であるとき、その１個のパケットをＵＤＰ１５またはＴＣＰ１６へ送信し、その受けた１個のパケットの宛先が通信装置１０１以外の通信装置であるとき、その１個のパケットをルーティングモジュール１４へ送信する（図４参照）。
【００９３】
上述した動作によって、通信装置１００におけるキュー４の負荷を発生させている通信装置１０１へ目標入力パケットレートが送信される。
【００９４】
［レートコントロール］
Ａ．上層レートコントローラ２０におけるレートコントロール
次に、上層レートコントローラ２０におけるレートコントロールについて説明する。
【００９５】
上層レートコントローラ２０は、信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ］を受けると、パケットのキュー５への入力レートが目標入力パケットレートに近づくように、トラフィックを生成するアプリケーション毎の目標出力パケットレートを演算する。
【００９６】
以下、例として、Ｖｏｉｃｅ１７とＶｉｄｅｏ１８との２つのアプリケーションがトラフィックを生成する場合を対象にして説明する。
【００９７】
上層レートコントローラ２０は、信号Ｒａｔｅ＿ｓｉｇｎａｌに含まれる目標入力パケットレート（＝Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ）を用いて増減レート（Ｄｅｃｒｅｍｅｎｔ／ｉｎｃｒｅｍｅｎｔ  Ｒａｔｅ）＝Δを次式により演算する。
【００９８】
Δ＝（Current Total Rate−Target Enqueue Rate）・・・（９）
なお、式（９）において、Ｃｕｒｒｅｎｔ  Ｔｏｔａｌ  Ｒａｔｅは、Ｖｏｉｃｅ１７から出力されている現在の出力レートＣｕｒｒｅｎｔ  Ｖｏｉｃｅ  Ｒａｔｅと、Ｖｉｄｅｏ１８から出力されている現在の出力レートＣｕｒｒｅｎｔ  Ｖｉｄｅｏ  Ｒａｔｅとの和である。
【００９９】
式（９）によって、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８が増減すべき出力レートの増減レートΔが決定される。そして、Δが正であれば、出力パケットレートは、減少され、Δが負であれば、出力パケットレートは、増加される。
【０１００】
上層レートコントローラ２０は、式（９）によって増減レートΔを演算すると、その演算した増減レートΔを用いて各アプリケーションごとの目標出力パケットレートを演算する。
【０１０１】
この場合、上層レートコントローラ２０は、全体の増減レートΔを相対トラフィックレート係数であるαを用いてαと（１−α）とに重み付けして、Ｖｏｉｃｅ１７とＶｉｄｅｏ１８とのそれぞれの目標出力パケットレートを演算する。
【０１０２】
例として、上層レートコントローラ２０は、相対トラフィックレート係数αを次式によって演算する。
【０１０３】
α＝Initial Voice Rate/Initial Total Rate・・・（１０）
上層レートコントローラ２０は、相対トラフィックレート係数αを演算すると、その演算した相対トラフィックレート係数αを用いて各アプリケーション（Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８）の目標出力パケットレートを次のように演算する。
【０１０４】
ｉ）ＶｏｉｃｅおよびＶｉｄｅｏの出力レートが共に最小レートよりも大きい場合
上層レートコントローラ２０は、次式によってＶｏｉｃｅ１７およびＶｉｄｅｏ１８のそれぞれの目標出力パケットレートを演算する。
【０１０５】
VoiceOutgoingTrafficeRate=CurrentVoiceOutgoingTrafficRate-α×Δ
・・・（１１）
VideoOutgoingTrafficeRate=CurrentVideoOutgoingTrafficRate-(1-α)×Δ
・・・（１２）
ｉｉ）ＶｏｉｃｅおよびＶｉｄｅｏの一方の出力レートが最小レートで送信している場合
上層レートコントローラ２０は、式（９）によって演算した増減レートΔが正である場合（Δ＞０）、次の方法によってＶｏｉｃｅ１７およびＶｉｄｅｏ１８の目標出力パケットレートを演算する。
【０１０６】
上層レートコントローラ２０は、Ｖｏｉｃｅ１７の現在の出力レート（＝CurrentVoiceOutgoingTrafficRate）がＶｏｉｃｅ１７の出力レートの最小値（＝VoiceOutgoingTrafficRate_min）よりも大きいか否かを判定し、Ｖｏｉｃｅ１７の現在の出力レートがＶｏｉｃｅ１７の出力レートの最小値よりも大きい場合、次式によってＶｏｉｃｅ１７およびＶｉｄｅｏ１８の目標出力パケットレートを演算する。
【０１０７】
TargetVoiceOutgoingTrafficeRate=CurrentVoiceOutgoingTrafficRate-Δ
・  ・・（１３）
TargetVideoOutgoingTrafficeRate=VideoOutgoingTrafficRate_min
・  ・・（１４）
また、上層レートコントローラ２０は、Ｖｉｄｅｏ１８の現在の出力レート（＝CurrentVideoOutgoingTrafficRate）がＶｉｄｅｏ１８の出力レートの最小値（＝VideoOutgoingTrafficRate_min）よりも大きいか否かを判定し、Ｖｉｄｅｏ１８の現在の出力レートがＶｉｄｅｏ１８の出力レートの最小値よりも大きい場合、次式によってＶｏｉｃｅ１７およびＶｉｄｅｏ１８の目標出力パケットレートを演算する。
【０１０８】
TargetVoiceOutgoingTrafficeRate=VoiceOutgoingTrafficRate-min
・  ・・（１５）
TargetVideoOutgoingTrafficeRate=CurrentVideoOutgoingTrafficRate-Δ
・・・（１６）
このように、上層レートコントローラ２０は、出力パケットレートを減らす処理を行なう場合（Δ＞０である場合）、指定された最小レートよりも大きいレートで送信しているアプリケーション（Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８のいずれか一方）の出力パケットレートを減らす。
【０１０９】
但し、上層レートコントローラ２０は、指定された最小レートを下回らないようにＶｏｉｃｅ１７およびＶｉｄｅｏ１８の目標出力パケットレートを演算する。
【０１１０】
次に、出力パケットレートを増やす場合（Δ＜０である場合）、上層レートコントローラ２０は、次式によって、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８の目標出力パケットレートを演算する。
【０１１１】
TargetVoiceOutgoingTrafficeRate=CurrentVoiceOutgoingTrafficRate-α×Δ
・  ・・（１７）
TargetVideoOutgoingTrafficeRate=CurrentVideoOutgoingTrafficRate-（１−α）×Δ                                                  ・・・（１８）
上層レートコントローラ２０は、上述した方法によって演算したＶｏｉｃｅ１７およびＶｉｄｅｏ１８の目標出力パケットレートをそれぞれＶｏｉｃｅ１７およびＶｉｄｅｏ１８へ出力し、目標出力パケットレートでパケットをキュー５へ出力するようにＶｏｉｃｅ１７およびＶｉｄｅｏ１８を制御する。
【０１１２】
Ｂ．下層レートコントローラ１２におけるレートコントロール
下層レートコントローラ１２は、レートコントロールの対象となるキュー（キュー８，９の少なくとも１つ）を決定するために、信号Ｒａｔｅ＿ｓｉｇｎａｌに含まれている送信元のＩＰアドレスを抽出する。
【０１１３】
上述したように、信号Ｒａｔｅ＿ｓｉｇｎａｌは、信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｒｅｑｕｅｓｔｅｒ  ＩＤ］からなるので、下層レートコントローラ１２は、信号Ｒａｔｅ＿ｓｉｇｎａｌから“Ｒｅｑｕｅｓｔｅｒ  ＩＤ”を送信元のＩＰアドレスとして抽出する。Ｒｅｑｕｅｓｔｅｒ  ＩＤは、レート制御を要求した通信装置のＩＰアドレスからなるので、Ｒｅｑｕｅｓｔｅｒ  ＩＤが送信元のＩＰアドレスを示すことになる。
【０１１４】
そして、Ｒｅｑｕｅｓｔｅｒ  ＩＤが通信装置１０１のＩＰアドレスからなるとき、下層レートコントローラ１２は、キュー８をレートコントローラの対象となるキューと決定し、Ｒｅｑｕｅｓｔｅｒ  ＩＤが通信装置１０２のＩＰアドレスからなるとき、下層レートコントローラ１２は、キュー９をレートコントローラの対象となるキューと決定する。
【０１１５】
下層レートコントローラ１２は、レートコントロールの対象となるキューを決定すると、信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｒｅｑｕｅｓｔｅｒ  ＩＤ］に含まれているＴａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅを抽出し、その抽出したＴａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅを目標出力パケットレートとする。
【０１１６】
そうすると、下層レートコントローラ１２は、目標出力パケットレートの逆数を演算して該当のキューがロック状態に設定されているロック期間Ｌｃｋ＿ｔｉｍｅ（＝Ｌｏｃｋ  Ｉｎｔｅｒｖａｌ）を演算し、その演算したロック期間Ｌｃｋ＿ｔｉｍｅによって、レートコントロールの対象となるキューのロック期間を更新する。
【０１１７】
その後、下層レートコントローラ１２は、ロック期間Ｌｃｋ＿ｔｉｍｅを用いてキュー８，９から出力されるパケットのレートコントロールを行なう。
【０１１８】
キュー８，９は、最初の状態は、アンロック状態である。キュー８，９が初期状態にあるときに、下層レートコントローラ１２は、信号Ｒａｔｅ＿ｓｉｇｎａｌを受けると、該当のキュー（キュー８または９）の状態をアンロック状態からロック状態に変えてから、ロックタイマにロック期間Ｌｃｋ＿ｔｉｍｅを設定し、ロックタイマを起動させる。一方、該当のキューが初期状態でない場合、下層レートコントローラ１２は、信号Ｒａｔｅ＿ｓｉｇｎａｌを受けたとき、ロックタイマが既に進行していれば、ロック期間Ｌｃｋ＿ｔｉｍｅの満了を待つ。そして、ロック期間Ｌｃｋ＿ｔｉｍｅが満了したら、該当のキューの状態をアンロック状態に更新してから、新しいロック期間Ｌｃｋ＿ｔｉｍｅでロックタイマを起動させる。
【０１１９】
また、下層レートコントローラ１２は、ロック期間Ｌｃｋ＿ｔｉｍｅが満了したとき、該当のキューの状態をアンロック状態に更新し、ロックタイマをリセットする（再起動させる）。
【０１２０】
一方、ダウンストリームスケジューラ１０は、ＭＡＣレイヤモジュール１からパケットの出力要求が届いたとき、アンロック状態にあるキュー（キュー８，９のいずれか）から１個のパケットを取り出してＭＡＣレイヤモジュール１へ送信する。そして、ダウンストリームスケジューラ１０が下層レートコントローラ１２に対してキューの状態をロック状態に設定するように要求する。下層レートコントローラ１２は、要求に応じて、そのパケットを取り出したキュー（キュー８，９のいずれか）の状態をロック状態に更新する。
【０１２１】
上述したように下層レートコントローラ１２は、受信した信号Ｒａｔｅ＿ｓｉｇｎａｌから目標出力パケットレート（＝Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ）を取り出し、その取り出した目標出力パケットレートになるようにキュー（キュー８，９のいずれか）の出力パケットレートを制御する。
【０１２２】
これによって、通信装置１０１から通信装置１００へ送信されるパケットが増減し、隣接の通信装置１００のキュー（キュー４または６）に保持された保持パケット数Ｈ＿Ｐｋｔがキュー（キュー４または６）の許容サイズＴＱＬに徐々に近づく。
【０１２３】
図５は、目標入力パケットレートをアプリケーションへ通知する動作を説明するためのフローチャートである。一連の動作が開始され、レートコントロールタイマが満了すると（ステップＳ１）、負荷モニタモジュール１１は、キュー４〜６（アップストリームキュー）に対してキュー条件取得要求を送信し（ステップＳ２）、キュー４〜６（アップストリームキュー）は、キュー条件（＝出力パケット数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ、失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｆａｉｌ、パケットサイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔおよび保持パケット数Ｈ＿Ｐｋｔからなる）を負荷モニタモジュール１１へ送信する（ステップＳ３）。
【０１２４】
そして、負荷モニタモジュール１１は、キュー条件（＝出力パケット数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ、失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｆａｉｌ、パケットサイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔおよび保持パケット数Ｈ＿Ｐｋｔからなる）を受信し、その受信したキュー条件（＝出力パケット数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ、失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｆａｉｌ、パケットサイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔおよび保持パケット数Ｈ＿Ｐｋｔからなる）を用いて、上述した方法によって、目標入力パケットレートを演算する（ステップＳ４）。
【０１２５】
そうすると、負荷モニタモジュール１１は、その演算した目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌをクロスレイヤモジュール２１へ通知する（ステップＳ５）。そして、負荷モニタモジュール１１において、新たなレートコントロールタイマが設定される（ステップＳ６）。
【０１２６】
信号Ｒａｔｅ＿ｓｉｇｎａｌを受信したクロスレイヤモジュール２１は、その受信した信号Ｒａｔｅ＿ｓｉｇｎａｌを上層レートコントローラ２０へ送信する（ステップＳ７）。そして、上層レートコントローラ２０は、クロスレイヤモジュール２１から受信した信号Ｒａｔｅ＿ｓｉｇｎａｌに含まれる目標入力パケットレートを用いて、上述した方法によって、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８の目標出力パケットレートを演算し（ステップＳ８）、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８からのパケットの出力パケットレートが目標出力パケットレートになるようにＶｏｉｃｅ１７およびＶｉｄｅｏ１８を制御する（ステップＳ９，Ｓ１０）。
【０１２７】
そして、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８は、それぞれ、パケットの出力パケットレートが目標出力パケットレートになるようにパケットをルーティングモジュール１４へ送信する。これによって、一連の動作は終了する。
【０１２８】
このように、負荷の発生元が当該通信装置である場合、パケットの生成元（＝Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８）からキュー５への出力パケットレートを制御することによって、キュー５に保持された保持パケット数Ｎ＿Ｐｋｔがキュー５の許容サイズＴＱＬに近づく。その結果、キュー５における負荷が減少する。
【０１２９】
図６は、目標入力パケットレートを他の通信装置へ通知する動作を説明するためのフローチャートである。図６に示すフローチャートは、図５に示すフローチャートのステップＳ５，Ｓ７〜Ｓ１０をステップＳ１１〜Ｓ１８に代えたものであり、その他は、図５に示すフローチャートと同じである。
【０１３０】
上述したステップＳ１〜ステップＳ４が順次実行されると、負荷モニタモジュール１１は、演算した目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌをアップストリームスケジューラ７へ送信し、目標入力パケットレートのパケットへの追加を依頼する（ステップＳ１１）。
【０１３１】
一方、ＭＡＣ層のＭＡＣレイヤモジュール１は、チャネルアクセスを行ない、パケットの送信が可能な状態になると、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）をダウンストリームスケジューラ１０へ送信する（ステップＳ１２）。そして、ダウンストリームスケジューラ１０は、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）に応じて、アンロック状態にあるキュー（ダウンストリームキュー）から１個のパケットを取り出し（ステップＳ１３）、その取り出した１個のパケットをＭＡＣレイヤモジュール１へ送信する（ステップＳ１４）。
【０１３２】
また、ダウンストリームスケジューラ１０は、パケットが空になったキューを指定したパケットの出力要求（Ｄｅｑｕｅｕｅ要求）をアップストリームスケジューラ７へ送信する（ステップＳ１５）。そして、アップストリームスケジューラ７は、ダウンストリームスケジューラ１０からのパケットの出力要求（Ｄｅｑｕｅｕｅ要求）に応じて、空になったキュー（キュー８，９のいずれか）に入れるべき１個のパケットをキュー４〜６（アップストリームキュー）から取り出し（ステップＳ１６）、その取り出した１個のパケットに目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌを追加する（ステップＳ１７）。
【０１３３】
そして、アップストリームスケジューラ７は、目標入力パケットレートを含む１個のパケットを空になったキューへ入れる（ステップＳ１８）。
【０１３４】
パケットが空であったキューは、目標入力パケットレートを含む１個のパケットが入れられることによって空でなくなり、上述したステップＳ１２〜ステップＳ１４に従って他の通信装置へ送信される。これによって、一連の動作は終了する。
【０１３５】
図７は、目標入力パケットレートを受信した通信装置における動作を説明するためのフローチャートである。一連の動作が開始されると、ＭＡＣレイヤモジュール１は、信号Ｒａｔｅ＿ｓｉｇｎａｌ（目標入力パケットレート）を含むパケットを受信し、その受信したパケットをリンクレイヤクラシファイア２へ送信する（ステップＳ２１）。
【０１３６】
そして、リンクレイヤクラシファイア２は、ＭＡＣレイヤモジュール１から信号Ｒａｔｅ＿ｓｉｇｎａｌを含むパケットを受信し、その受信したパケットから信号Ｒａｔｅ＿ｓｉｇｎａｌを抽出するとともに、その抽出した信号Ｒａｔｅ＿ｓｉｇｎａｌを下層レートコントローラ１２へ通知する（ステップＳ２２）。なお、リンクレイヤクラシファイア２は、信号Ｒａｔｅ＿ｓｉｇｎａｌを抽出した後のパケットをその送信先に応じてトランスポート層（ＵＤＰ１５およびＴＣＰ１６）またはルーティングモジュール１４へ送信する。
【０１３７】
下層レートコントローラ１２は、信号Ｒａｔｅ＿ｓｉｇｎａｌを受信すると、その受信した信号Ｒａｔｅ＿ｓｉｇｎａｌに含まれる目標入力パケットレートを用いて、上述した方法によって、目標出力パケットレートを演算するとともに、その演算した目標出力パケットレートの逆数を演算してロック期間Ｌｃｋ＿ｔｉｍｅ（＝ロックインターバル）を演算する（ステップＳ２３）。
【０１３８】
そして、ロックタイマが満了すると（ステップＳ２４）、下層レートコントローラ１２は、ロック状態にあるキュー（ダウンストリームキュー）の状態をロック状態からアンロック状態に変える（ステップＳ２５）。その後、ロックタイマが設定される（ステップＳ２６）。
【０１３９】
一方、ＭＡＣ層のＭＡＣレイヤモジュール１は、チャネルアクセスを行ない、パケットの送信が可能な状態になると、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）をダウンストリームスケジューラ１０へ送信する（ステップＳ２７）。そして、ダウンストリームスケジューラ１０は、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）に応じて、アンロック状態にあるキュー（ダウンストリームキュー）から１個のパケットを取り出す（ステップＳ２８）。
【０１４０】
また、ダウンストリームスケジューラ１０は、１個のパケットを取り出したキューの状態をロック状態に設定するためのキューロック要求を下層レートコントローラ１２へ送信する（ステップＳ２９）。
【０１４１】
下層レートコントローラ１２は、ダウンストリームスケジューラ１０からのキューロック要求に応じて、１個のパケットを出力したキュー（ＵＮＬＯＣＫ＿ｑｕｅｕｅＩＤ）の状態をロック状態に変更する（ステップＳ３０）。
【０１４２】
その後、ダウンストリームスケジューラ１０は、ステップＳ２８において、キューから取り出した１個のパケットをＭＡＣレイヤモジュール１へ送信するとともに（ステップＳ３１）、パケットが空になったキューを指定したパケットの出力要求（Ｄｅｑｕｅｕｅ要求）をアップストリームスケジューラ７へ送信する（ステップＳ３２）。
【０１４３】
そして、アップストリームスケジューラ７は、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）に応じて、キュー４〜６（アップストリームキュー）から１個のパケットを取り出し（ステップＳ３３）、その取り出した１個のパケットを空になったキューへ入れる（ステップＳ３４）。これによって、一連の動作が終了する。
【０１４４】
上述したように、目標入力パケットレートを受信した通信装置においては、受信した目標入力パケットレートに応じたロック期間Ｌｃｋ＿ｔｉｍｅ（ロックインターバル）が演算され、その演算されたたロック期間Ｌｃｋ＿ｔｉｍｅ（ロックインターバル）によって、キュー８，９からＭＡＣレイヤモジュール１（ＭＡＣ層）へのパケットの出力パケットレートが制御される。
【０１４５】
なお、図７においては、通信装置１０１が目標入力パケットレートの通知を受信した場合について説明したが、通信装置１０２が目標入力パケットレートの通知を受信した場合も、図７に示すフローチャートに従ってパケットの出力パケットレートの制御が行なわれる。
【０１４６】
図８は、図１に示す負荷モニタモジュール１１におけるキューの許容サイズを演算する動作を説明するためのフローチャートである。一連の動作が開始されると、アップストリームスケジューラ７は、キュー（キュー４〜６のいずれか）からパケットの出力を試みる（ステップＳ４１）。
【０１４７】
そして、負荷モニタモジュール１１は、パケットを出力（Ｄｅｑｕｅｕｅ）できたか否かを判定し（ステップＳ４２）、パケットを出力（Ｄｅｑｕｅｕｅ）できたと判定したとき、出力（Ｄｅｑｕｅｕｅ）できたパケット数を計測する（ステップＳ４３）。その後、負荷モニタモジュール１１は、出力（Ｄｅｑｕｅｕｅ）できたパケット数のパケットサイズを演算する（ステップＳ４４）。
【０１４８】
一方、ステップＳ４２において、パケットを出力（Ｄｅｑｕｅｕｅ）できなかった判定されたとき、負荷モニタモジュール１１は、出力（Ｄｅｑｕｅｕｅ）の失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｆａｉｌを計測する（ステップＳ４５）。
【０１４９】
そして、ステップＳ４４またはステップＳ４５の後、負荷モニタモジュール１１は、ＭＡＣリクエストの回数を計測し（ステップＳ４６）、制御方式がＡＩＡＤ−ＴＱＬか否かを判定する（ステップＳ４７）。
【０１５０】
ステップＳ４７において、制御方式がＡＩＡＤ−ＴＱＬであると判定された場合、負荷モニタモジュール１１は、上述した式（５）によって、許容サイズＴＱＬの最大値ＴＱＬ＿ｍａｘ＝（キューのサイズの３０％）／（Ｓ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ＿ａｖｅ）を演算する（ステップＳ４８）。
【０１５１】
その後、負荷モニタモジュール１１は、パケットを出力できたか否かを判定する（ステップＳ４９）。そして、負荷モニタモジュール１１は、パケットを出力できなかったとき、即ち、キューからのデータの取り出しを空振りしたときＴＱＬ＿ｎｅｗを増加（例えば、１パケット分）させる（ステップＳ５０）。
【０１５２】
一方、ステップＳ４９において、パケットを出力できたと判定されたとき、負荷モニタモジュール１１は、前回のレートコントロールタイマ終了時のＴＱＬの値ＴＱＬ＿ｐｒｅｖがキュー中のパケットサイズよりも小さいか否かを更に判定する（ステップＳ５１）。
【０１５３】
そして、ステップＳ５１において、前回のレートコントロールタイマ終了時のＴＱＬの値ＴＱＬ＿ｐｒｅｖがキュー中のパケットサイズよりも小さいと判定されたとき、負荷モニタモジュール１１は、ＴＱＬ＿ｎｅｗを減少（例えば、１パケット分）させる（ステップＳ５２）。
【０１５４】
ステップＳ５０の後、またはステップＳ５１において、前回のレートコントロールタイマ終了時のＴＱＬの値ＴＱＬ＿ｐｒｅｖがキュー中のパケットサイズ以上であると判定されたとき、またはステップＳ５２の後、負荷モニタモジュール１１は、ＴＱＬ＿ｎｅｗがＴＱＬ＿ｍｉｎよりも小さいか否かを判定し（ステップＳ５３）、ＴＱＬ＿ｎｅｗがＴＱＬ＿ｍｉｎ以上であるとき、ＴＱＬ＿ｎｅｗがＴＱＬ＿ｍａｘよりも大きいか否かを更に判定する（ステップＳ５４）。
【０１５５】
そして、ステップＳ５４において、ＴＱＬ＿ｎｅｗがＴＱＬ＿ｍａｘよりも大きいと判定されたとき、負荷モニタモジュール１１は、ＴＱＬ＿ｎｅｗをＴＱＬ＿ｍａｘに設定する（ステップＳ５５）。
【０１５６】
一方、ステップＳ５３において、ＴＱＬ＿ｎｅｗがＴＱＬ＿ｍｉｎよりも小さいと判定されたとき、負荷モニタモジュール１１は、ＴＱＬ＿ｎｅｗをＴＱＬ＿ｍｉｎに設定する（ステップＳ５６）。
【０１５７】
そして、ステップＳ４７において制御方式がＡＩＡＤ−ＴＱＬでないと判定されたとき、またはステップＳ５４においてＴＱＬ＿ｎｅｗがＴＱＬ＿ｍａｘよりも大きくないと判定されたとき、またはステップＳ５５の後、またはステップＳ５６の後、一連の動作は終了する。
【０１５８】
上述したように、図８に示すフローチャートに従えば、ＡＩＡＤ−ＴＱＬ方式におけるＴＱＬ＿ｎｅｗは、最小値ＴＱＬ＿ｍｉｎと最大値ＴＱＬ＿ｍａｘとの間に設定される（ステップＳ４８〜ステップＳ５６参照）。
【０１５９】
図９は、許容サイズの計算方法を説明するためのフローチャートである。一連の動作が開始されると、負荷モニタモジュール１１は、パケットの出力情報（＝Ｄｅｑｕｅｕｅ情報）、即ち、出力パケット数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔ、失敗回数Ｎ＿Ｄｅｑｕｅｕｅ＿Ｆａｉｌ、パケットサイズＳ＿Ｄｅｑｕｅｕｅ＿Ｐｋｔおよび保持パケット数Ｈ＿Ｐｋｔを取得する（ステップＳ６１）。
【０１６０】
そして、負荷モニタモジュール１１は、制御方式がＡＩＡＤ−ＴＱＬであるか否かを判定し（ステップＳ６２）、制御方式がＡＩＡＤ−ＴＱＬであると判定したとき、許容サイズＴＱＬを図８に示すフローチャートに従って演算したＴＱＬ＿ｎｅｗに設定する（ステップＳ６３）。その後、一連の動作は、ステップＳ７５へ移行する。
【０１６１】
一方、ステップＳ６２において、制御方式がＡＩＡＤ−ＴＱＬでないと判定されたとき、負荷モニタモジュール１１は、制御方式がＣ−ＴＱＬであるか否かを更に判定する（ステップＳ６４）。そして、制御方式がＣ−ＴＱＬであると判定されたとき、負荷モニタモジュール１１は、キューから出力されたパケット数（＝Ｄｅｑｕｅｕｅパケット数）が“０”よりも大きいか否かを更に判定する（ステップＳ６５）。
【０１６２】
ステップＳ６５において、キューから出力されたパケット数が“０”であると判定されたとき、負荷モニタモジュール１１は、平均パケットサイズを“ＤＥＦＡＵＬＴ＿ＥＨＴＥＲＮＥＴ＿ＭＴＵ”に設定する（ステップＳ６６）。その後、一連の動作は、ステップＳ６８へ移行する。
【０１６３】
一方、ステップＳ６５において、キューから出力されたパケット数が“０”よりも大きいと判定されたとき、負荷モニタモジュール１１は、キューから出力されたパケットサイズをキューから出力されたパケット数で除算して平均パケットサイズを演算する（ステップＳ６７）。
【０１６４】
そして、ステップＳ６６またはステップＳ６７の後、負荷モニタモジュール１１は、上述した式（１）によって許容サイズＴＱＬの最大値ＴＱＬ＿ｍａｘを演算し（ステップＳ６８）、上述した式（２）によって許容サイズの最小値ＴＱＬ＿ｍｉｎを演算する（ステップＳ６９）。
【０１６５】
そうすると、負荷モニタモジュール１１は、キュー長が許容サイズＴＱＬの最小値ＴＱＬ＿ｍｉｎよりも小さく、かつ、キュー長が許容サイズＴＱＬの最大値ＴＱＬ＿ｍａｘよりも大きいか否かを判定する（ステップＳ７０）。
【０１６６】
そして、ステップＳ７０において、キュー長が最小値ＴＱＬ＿ｍｉｎよりも小さく、または、キュー長が最大値ＴＱＬ＿ｍａｘよりも大きいと判定されたとき、負荷モニタモジュール１１は、上述した式（３）によって許容サイズＴＱＬを演算する（ステップＳ７１）。
【０１６７】
一方、ステップＳ７０において、キュー長が最小値ＴＱＬ＿ｍｉｎ以上であり、かつ、キュー長が最大値ＴＱＬ＿ｍａｘ以下であると判定されたとき、負荷モニタモジュール１１は、許容サイズＴＱＬをキュー長に設定する（ステップＳ７２）。
【０１６８】
ステップＳ６４において、制御方式がＣ−ＴＱＬでないと判定されたとき、即ち、制御方式がＤＢ−ＴＱＬであると判定されたとき、負荷モニタモジュール１１は、上述した式（６）によってＭＡＣ要求レートを演算し（ステップＳ７３）、その演算したＭＡＣ要求レートを用いて式（７）によって許容サイズＴＱＬを演算する（ステップＳ７４）。
【０１６９】
そして、ステップＳ６３、ステップＳ７１、ステップＳ７２およびステップＳ７４のいずれかの後、負荷モニタモジュール１１は、変数をクリアする（ステップＳ７５）。これによって、一連の動作は終了する。
【０１７０】
図１０は、許容サイズの他の計算方法を説明するためのフローチャートである。図１０に示すフローチャートは、図９に示すフローチャートのステップＳ７０〜ステップＳ７２をステップＳ７０Ａ，Ｓ７１Ａ，Ｓ７２Ａ，Ｓ７３Ａ，Ｓ７４Ａに代えたものであり、その他は、図９に示すフローチャートと同じである。
【０１７１】
ステップＳ６９の後、負荷モニタモジュール１１は、キュー長が許容サイズＴＱＬの最小値ＴＱＬ＿ｍｉｎよりも小さいか否かを判定し（ステップＳ７０Ａ）、キュー長が最小値ＴＱＬ＿ｍｉｎよりも小さいとき、許容サイズＴＱＬを最小値ＴＱＬ＿ｍｉｎに設定する（ステップＳ７１Ａ）。
【０１７２】
一方、ステップＳ７０Ａにおいて、キュー長が最小値ＴＱＬ＿ｍｉｎよりも小さくないと判定されたとき、負荷モニタモジュール１１は、キュー長が許容サイズＴＱＬの最大値ＴＱＬ＿ｍａｘよりも大きいか否かを更に判定し（ステップＳ７２Ａ）、キュー長が最大値ＴＱＬ＿ｍａｘよりも大きいと判定したとき、許容サイズＴＱＬを最大値ＴＱＬ＿ｍａｘに設定する（ステップＳ７３Ａ）。
【０１７３】
一方、ステップＳ７２Ａにおいて、キュー長が最大値ＴＱＬ＿ｍａｘよりも大きくないと判定されたとき、負荷モニタモジュール１１は、許容サイズＴＱＬをキュー長に設定する（ステップＳ７４Ａ）。そして、ステップＳ６３、ステップＳ７１Ａ、ステップＳ７３Ａ、ステップＳ７４およびステップＳ７４Ａのいずれかの後、一連の動作は、ステップＳ７５へ移行する。
【０１７４】
図１１は、目標入力パケットレートの計算方法を説明するためのフローチャートである。一連の動作が開始されると、負荷モニタモジュール１１は、図９に示すフローチャートまたは図１０に示すフローチャートに従って許容サイズＴＱＬを演算する（ステップＳ８１）。
【０１７５】
そして、負荷モニタモジュール１１は、キューから出力されたパケット数をレートコントロール間隔で除算することによって出力パケットレート（Ｄｅｑｕｅｕｅレート）を演算する（ステップＳ８２）。
【０１７６】
その後、負荷モニタモジュール１１は、通知タイプｔｙｐｅを“ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥに設定し（ステップＳ８３）、キューからのパケットの出力に失敗した失敗回数（＝Ｄｅｑｕｅｕｅ失敗数）をレートコントロール間隔で除算することによってｉｎｃｒｅｍｅｎｔ＿ｖａｌｕｅを演算する（ステップＳ８４）。
【０１７７】
そして、負荷モニタモジュール１１は、ステップＳ８１、ステップＳ８２およびステップＳ８４において演算した各値を用いて、Ｄｅｑｕｅｕｅレート−（（キュー長−ＴＱＬ）／レートコントロール間隔）＋ｉｎｃｒｅｍｅｎｔ＿ｖａｌｕｅによってｖａｌｕｅ（＝目標入力パケットレート）を演算する（ステップＳ８５）。
【０１７８】
そうすると、負荷モニタモジュール１１は、タイプｔｙｐｅおよびｖａｌｕｅをアップストリームスケジューラ７９またはクロスレイヤモジュール２１へ通知する（ステップＳ８６）。その後、レートコントロールタイマが設定される（ステップＳ８７）。
【０１７９】
これによって、目標入力パケットレートを演算する動作が終了する。
【０１８０】
図１２は、目標出力パケットレートの計算方法を説明するためのフローチャートである。一連の動作が開始されると、上層レートコントローラ２０は、現在のＶｏｉｃｅ１７の出力レートと現在のＶｉｄｅｏ１８の出力レートとの和を演算して現在のトータルレートを演算する（ステップＳ９１）。
【０１８１】
そして、上層レートコントローラ２０は、現在のトータルレートから目標入力パケットレートを減算して増減レートΔを演算し（ステップＳ９２）、初期のＶｏｉｃｅレートを初期のトータルレートで除算して相対トラフィックレート係数αを演算する（ステップＳ９３）。
【０１８２】
そうすると、上層レートコントローラ２０は、現在のＶｏｉｃｅ１７の出力レートがＶｏｉｃｅレートの最小値よりも大きく、かつ、現在のＶｉｄｅｏ１８の出力レートがＶｉｄｅｏレートの最小値よりも大きいか否かを判定する（ステップＳ９４）。
【０１８３】
そして、ステップＳ９４において、現在のＶｏｉｃｅ１７の出力レートがＶｏｉｃｅレートの最小値よりも大きく、かつ、現在のＶｉｄｅｏ１８の出力レートがＶｉｄｅｏレートの最小値よりも大きいと判定されたとき、上層レートコントローラ２０は、上述した式（１１）によって目標Ｖｏｉｃｅレートを演算し（ステップＳ９５）、上述した式（１２）によって目標Ｖｉｄｅｏレートを演算する（ステップＳ９６）。
【０１８４】
一方、ステップＳ９４において、現在のＶｏｉｃｅ１７の出力レートがＶｏｉｃｅレートの最小値以下である、または現在のＶｉｄｅｏ１８の出力レートがＶｉｄｅｏレートの最小値以下であると判定されたとき、上層レートコントローラ２０は、増減レートΔが０よりも大きいか否かを更に判定する（ステップＳ９７）。
【０１８５】
そして、ステップＳ９７において、増減レートΔが０よりも大きいと判定されたとき、上層レートコントローラ２０は、現在のＶｏｉｃｅ１７の出力レートがＶｏｉｃｅ１７の最小値よりも大きいか否かを更に判定する（ステップＳ９８）。ステップＳ９８において、現在のＶｏｉｃｅ１７の出力レートがＶｏｉｃｅ１７の最小値よりも大きいと判定されたとき、上層レートコントローラ２０は、上述した式（１３）によって、目標Ｖｏｉｃｅレートを演算し（ステップＳ９９）、上述した式（１４）によって目標Ｖｉｄｅｏレートを演算する（ステップＳ１００）。
【０１８６】
一方、ステップＳ９８において、現在のＶｏｉｃｅ１７の出力レートがＶｏｉｃｅ１７の最小値以下であると判定されたとき、上層レートコントローラ２０は、上述した式（１５）によって目標Ｖｏｉｃｅレートを演算し（ステップＳ１０１）、上述した式（１６）によって目標Ｖｉｄｅｏレートを演算する（ステップＳ１０２）。
【０１８７】
一方、ステップＳ９７において、増減レートΔが０よりも大きくない、即ち、増減レートが０以下であると判定されたとき、上層レートコントローラ２０は、上述した式（１７）によって目標Ｖｏｉｃｅレートを演算し（ステップＳ１０３）、上述した式（１８）によって目標Ｖｉｄｅｏレートを演算する（ステップＳ１０４）。
【０１８８】
そして、ステップＳ９６、ステップＳ１００、ステップＳ１０２およびステップＳ１０４のいずれかの後、上層レートコントローラ２０は、目標ＶｏｉｃｅレートがＶｏｉｃｅレートの最小値よりも小さいか否かを判定し（ステップＳ１０５）、目標ＶｏｉｃｅレートがＶｏｉｃｅレートの最小値よりも小さいとき、目標ＶｏｉｃｅレートをＶｏｉｃｅレートの最小値に設定する（ステップＳ１０６）。その後、一連の動作は、ステップＳ１０７へ移行する。
【０１８９】
一方、ステップＳ１０５において、目標ＶｏｉｃｅレートがＶｏｉｃｅレートの最小値よりも小さくないと判定されたとき、またはステップＳ１０６の後、上層レートコントローラ２０は、目標ＶｉｄｅｏレートがＶｉｄｅｏレートの最小値よりも小さいか否かを更に判定し（ステップＳ１０７）、目標ＶｉｄｅｏレートがＶｉｄｅｏレートの最小値よりも小さいとき、目標ＶｉｄｅｏレートをＶｉｄｅｏレートの最小値に設定する（ステップＳ１０８）。その後、一連の動作は、ステップＳ１０９へ移行する。
【０１９０】
一方、ステップＳ１０７において、目標ＶｉｄｅｏレートがＶｉｄｅｏレートの最小値よりも小さくないと判定されたとき、またはステップＳ１０８の後、上層レートコントローラ２０は、変更した目標出力パケットレートをＶｏｉｃｅ１７へ通知し（ステップＳ１０９）、変更した目標出力パケットレートをＶｉｄｅｏ１８へ通知する（ステップＳ１１０）。そして、一連の動作は、終了する。
【０１９１】
図１３は、図１に示す下層レートコントローラ１２における目標出力パケットレートの計算方法を説明するためのフローチャートである。下層レートコントローラ１２は、信号Ｒａｔｅ＿ｓｉｇｎａｌで通知された目標出力パケットレートを該当キュー（キュー８，９のいずれか）の目標出力パケットレートとして設定する（ステップＳ１１１）。そして、一連の動作は、終了する。
【０１９２】
図１４は、図１に示すダウンストリームスケジューラ１０における動作を説明するためのフローチャートである。一連の動作が開始されると、ダウンストリームスケジューラ１０は、前回、パケットを取り出した（Ｄｅｑｕｅｕｅした）キューの次のキュー（キュー８，９のいずれか）を操作対象のターゲットキューとする（ステップＳ１２１）。
【０１９３】
そして、ダウンストリームスケジューラ１０は、ターゲットキューの状態がロック状態であるか否かを判定する（ステップＳ１２２）。ステップＳ１２２において、ターゲットキューの状態がロック状態であると判定されたとき、次のキューをターゲットキューとし（ステップＳ１２３）、ターゲットキューのステータスを既にチェックしているか否かを判定する（ステップＳ１２４）。
【０１９４】
そして、チェック済みであれば、一連の動作は、ステップＳ１２６へ移行し、チェック済みではない場合は、ステップＳ１２２へ戻る。
【０１９５】
一方、ステップＳ１２２において、ターゲットキューの状態がロックではない（＝アンロック）状態であれば、ダウンストリームスケジューラ１０は、ターゲットキュー（キュー４〜６のいずれか）からパケットを取り出し（ステップＳ１２５）、一連の動作は、ステップＳ１２６へ移行する。
【０１９６】
以上、パケットの取得処理が終了すると、ダウンストリームスケジューラ１０は、全ての空のキューに対して、アップストリームスケジューラ７へパケットのＤｅｑｕｅｕｅ要求の処理を開始する。
【０１９７】
パケットのＤｅｑｕｅｕｅ要求の処理は、ステップＳ１２４の判定がＹＥＳとなった場合、またはステップＳ１２５が終了したときに、ターゲットキューが空であるか否かを判定するステップＳ１２６から開始される。
【０１９８】
ステップＳ１２６において、ターゲットキューが空であると判定された場合、ダウンストリームスケジューラ１０は、アップストリームスケジューラ７へターゲットキューに関してパケットのＤｅｑｕｅｕｅ要求を送信し（ステップＳ１２７）、一連の動作は、ステップＳ１２８へ移行する。
【０１９９】
そして、ステップＳ１２６において、ターゲットキューが空ではないと判定された場合、またはステップＳ１２７の後、ダウンストリームスケジューラ１０は、ターゲットキューを次のキューに設定する（ステップＳ１２８）。
【０２００】
その後、ダウンストリームスケジューラ１０は、ターゲットキューが空であるかについてチェック済みか否かを判定する（ステップＳ１２９）。ステップＳ１２９において、ターゲットキューがチェック済みでないと判定された場合、一連の動作は、ステップＳ１２６へ戻り、ステップＳ１２９において、ターゲットキューが空であるかについてチェック済みであると判定されるまで、上述したステップＳ１２６〜ステップＳ１２９が繰り返し実行される。そして、ステップＳ１２９において、ターゲットキューが空であるかについてチェック済みであると判定されると、一連の動作は終了する。
【０２０１】
このように、ダウンストリームスケジューラ１０は、キューの状態をチェックし（ステップＳ１２２参照）、アンロック状態のキューがあれば、保持されたパケットを取り出す（ステップＳ１２５参照）。更に、キュー８，９の全てに対して、キューが空であるか否かをチェックし（ステップＳ１２６参照）、キューが空であれば、アップストリームスケジューラ７に対してパケットの出力を要求する（ステップＳ１２７参照）。
【０２０２】
図１５は、図１４によってダウンストリームスケジューラ１０からパケットのＤｅｑｕｅｕｅ要求を受けたときの図１に示すアップストリームスケジューラ７における動作を説明するためのフローチャートである。一連の動作が開始されると、アップストリームスケジューラ７は、前回、パケットを出力した（Ｄｅｑｕｅｕｅした）アップストリームキューの次のキューをチェックのターゲットキューとする（ステップＳ１３１）。
【０２０３】
そして、アップストリームスケジューラ７は、ターゲットキューを既にチェックしたか否かを判定し（ステップＳ１３２）、チェックしていないと判定したとき、先頭パケットの送信ＩＰアドレスをチェックする（ステップＳ１３３）。
【０２０４】
そうすると、アップストリームスケジューラ７は、チェックしたＩＰアドレスが、要求があったＩＰアドレスと一致するか否かを判定し（ステップＳ１３４）、チェックしたＩＰアドレスが、要求があったＩＰアドレスと一致しないとき、次にチェックするキューを取得する（ステップＳ１３５）。そして、一連の動作は、ステップＳ１３２へ戻り、ステップＳ１３４において、チェックしたＩＰアドレスが、要求があったＩＰアドレスと一致すると判定されるまで、上述したステップＳ１３２〜ステップＳ１３４が繰り返し実行される。
【０２０５】
ステップＳ１３４において、チェックしたＩＰアドレスが、要求があったＩＰアドレスと一致すると判定されると、アップストリームスケジューラ７は、キューからパケットを取得し（ステップＳ１３６）、同一のＩＰアドレスに関して、目標入力パケットレートの追加依頼が有ったか否かを判定する（ステップＳ１３７）。そして、目標入力パケットレートの追加依頼が有ったと判定されたとき、アップストリームスケジューラ７は、追加依頼された目標入力パケットレートをパケットに追加する（ステップＳ１３８）。
【０２０６】
ステップＳ１３７において、目標入力パケットレートの追加依頼が無かったと判定されたとき、またはステップＳ１３８の後、アップストリームスケジューラ７は、パケットをキュー８または９（ダウンストリームキュー）に入れる（ステップＳ１３９）。
【０２０７】
そして、ステップＳ１３２において、ターゲットキューがチェック済みであると判定されたとき、またはステップＳ１３９の後、一連の動作は終了する。
【０２０８】
上述した図８から図１１に示すフローチャートは、図５および図６に示すフローチャートのステップＳ４において実行される。
【０２０９】
また、上述した図１２に示すフローチャートは、図５に示すフローチャートのステップＳ８〜ステップＳ１０において実行される。
【０２１０】
更に、上述した図１３に示すフローチャートは、図７に示すフローチャートのステップＳ２３において実行される。
【０２１１】
更に、上述した図１４に示すフローチャートは、図６に示すフローチャートのステップＳ１３〜ステップＳ１５および図７に示すフローチャートのステップＳ２８およびステップＳ３２において実行される。
【０２１２】
更に、上述した図１５に示すフローチャートは、図６に示すフローチャートのステップＳ１６〜ステップＳ１８および図７に示すフローチャートのステップＳ３３〜ステップＳ３４において実行される。
【０２１３】
上述したように、通信装置１００で生成されたパケットを保持するキュー５の負荷（＝保持パケット数Ｈ＿Ｐｋｔ）がキュー５の許容サイズＴＱＬから掛け離れたとき、通信装置１００のアプリケーション（Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８）がキュー５へ出力するパケットの出力パケットレートを制御してキュー５に保持された保持パケット数Ｈ＿Ｐｋｔをキュー５の許容サイズＴＱＬに近づける。また、通信装置１００以外の通信装置１０１，１０２から送信されたパケットを保持する通信装置１００のキュー４，６の負荷（＝保持パケット数Ｈ＿Ｐｋｔ）がキュー４，６の許容サイズＴＱＬから掛け離れたとき、通信装置１０１，１０２のキュー８，９からのパケットの出力パケットレートを制御して通信装置１００のキュー４，６に保持された保持パケット数Ｈ＿Ｐｋｔをキュー４，６の許容サイズＴＱＬに近づける。
【０２１４】
そして、この通信装置１００におけるアプリケーション（Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８）からキュー５へのパケットの出力パケットレートの制御と、通信装置１０１，１０２における通信装置１０１，１０２から通信装置１００へのパケットの出力パケットレートの制御を行なうことによって、各通信装置１００〜１０２においてキュー４〜６に保持される保持パケット数Ｈ＿Ｐｋｔがキュー４〜６の許容サイズＴＱＬに近づき、各通信装置１００〜１０２における負荷が軽減される。その結果、通信装置１００〜１０２からなるアドホックネットワークを安定化できる。
【０２１５】
［実施の形態２］
図１６は、実施の形態２による通信装置の構成を示す概略図である。実施の形態２による通信装置１００Ａは、図１に示す通信装置１００のリンクレイヤクラシファイア２を削除し、負荷モニタモジュール１１を負荷モニタモジュール１１Ａに代え、クロスレイヤモジュール２１をクロスレイヤモジュール２１Ａに代えたものであり、その他は、通信装置１００と同じである。
【０２１６】
負荷モニタモジュール１１Ａは、負荷モニタモジュール１１と同じ方法によってキュー４〜６における負荷をモニタし、他の通信装置から受信したパケットを保持するキュー４，６への目標入力パケットレートを他の通信装置へ通知する場合も、目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌをクロスレイヤモジュール２１へ送信する。その他、負荷モニタモジュール１１Ａは、負荷モニタモジュール１１と同じ機能を果たす。
【０２１７】
クロスレイヤモジュール２１Ａは、他の通信装置へ通知する目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌを負荷モニタモジュール１１Ａから受信すると、上述した信号Ｒａｔｅ＿ｓｉｇｎａｌを含む専用パケットＰＫＴ＿Ｄを生成し、その生成した専用パケットＰＫＴ＿Ｄをルーティングモジュール１４へ送信する。ルーティングモジュール１４は、専用パケットＰＫＴ＿Ｄを受信すると、その受信した専用パケットＰＫＴ＿Ｄをトラフィッククラシファイア３を介してキュー５へ入れる。
【０２１８】
このように、実施の形態２においては、目標入力パケットレートの他の通信装置への通知は、専用パケットＰＫＴ＿Ｄを用いて行なわれる。
【０２１９】
なお、実施の形態２においては、図２に示す通信装置１０１，１０２も、図１６に示す通信装置１００Ａと同じ構成からなる。
【０２２０】
図１７および図１８は、それぞれ、目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態２における第１および第２の概念図である。なお、図１７および図１８においては、通信装置１００Ａが通信装置１０１へ目標入力パケットレートを通知する場合について説明する。
【０２２１】
通信装置１００Ａの負荷モニタモジュール１１Ａは、キュー４（通信装置１０１から受信したパケットを保持するキュー）における保持パケット数Ｈ＿Ｐｋｔがキュー４の許容サイズＴＱＬから掛け離れていることを検出し、上述した方法でキュー４への目標入力パケットレートを演算する。
【０２２２】
そして、通信装置１００Ａの負荷モニタモジュール１１Ａは、その演算した目標入力パケットレート（＝Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ）と、ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥと、Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤとを含む信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ］を生成し、その生成した信号Ｒａｔｅ＿ｓｉｇｎａｌをクロスレイヤモジュール２１Ａへ送信する。通信装置１００Ａのクロスレイヤモジュール２１２Ａは、信号Ｒａｔｅ＿ｓｉｇｎａｌを負荷モニタモジュール１１Ａから受信する。
【０２２３】
そうすると、通信装置１００Ａのクロスレイヤモジュール２１Ａは、その受信した信号Ｒａｔｅ＿ｓｉｇｎａｌと、Ｒｅｑｕｅｓｔｅｒ  ＩＤである通信装置１００ＡのＩＰアドレスとを含む専用パケットＰＫＴ＿Ｄを生成し、その生成した専用パケットＰＫＴ＿Ｄをルーティングモジュール１４へ送信する。
【０２２４】
通信装置１００Ａのルーティングモジュール１４は、クロスレイヤモジュール２１Ａから専用パケットＰＫＴ＿Ｄを受信すると、その受信した専用パケットＰＫＴ＿Ｄをトラフィッククラシファイア３を介してキュー５へ入れる。
【０２２５】
そして、通信装置１００Ａのアップストリームスケジューラ７は、ダウンストリームスケジューラ１０からのパケットの出力要求に応じて、キュー５に保持された専用パケットＰＫＴ＿Ｄを読み出してキュー８（通信装置１０１宛てのパケットを保持するキュー）に入れる。
【０２２６】
通信装置１００Ａのキュー８は、アンロック状態にある場合にＭＡＣレイヤモジュール１からパケットの出力要求を受けると、専用パケットＰＫＴ＿ＤをＭＡＣレイヤモジュール１へ送信し、ＭＡＣレイヤモジュール１は、専用パケットＰＫＴ＿Ｄを通信装置１０１へ送信する（図１７参照）。
【０２２７】
通信装置１０１のＭＡＣレイヤモジュール１は、専用パケットＰＫＴ＿Ｄを通信装置１００Ａから受信し、専用パケットＰＫＴ＿Ｄをネットワークレイヤクラスファイア１３へ送信する。
【０２２８】
通信装置１０１のネットワークレイヤクラスファイア１３は、専用パケットＰＫＴ＿Ｄを受け、その受けた専用パケットＰＫＴ＿Ｄをクロスレイヤモジュール２１Ａへ送信する。
【０２２９】
通信装置１０１のクロスレイヤモジュール２１Ａは、専用パケットＰＫＴ＿Ｄを受信すると、その受信した専用パケットＰＫＴ＿Ｄから信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ／Ｒｅｑｕｅｓｔｅｒ  ＩＤ］を取り出す。そして、通信装置１０１のクロスレイヤモジュール２１Ａは、その取り出した信号Ｒａｔｅ＿ｓｉｇｎａｌを下層レートコントローラ１２へ送信する（図１８参照）。
【０２３０】
上述した動作によって、通信装置１００Ａにおけるキュー４の負荷を発生させている通信装置１０１へ目標入力パケットレートが専用パケットＰＫＴ＿Ｄによって送信される。そして、目標入力パケットレートを受信した通信装置１０１においては、目標入力パケットレートは、上述したように下層レートコントローラ１２へ送信されるので、下層レートコントローラ１２は、目標入力パケットレート＝目標出力パケットレートとして目標出力パケットレートを演算し、その演算した目標出力パケットレートになるように通信装置１００Ａ宛てのパケットを保持するキュー（キュー８，９のいずれか）の出力パケットレートを制御する。
【０２３１】
これによって、通信装置１０１から通信装置１００Ａへ送信されるパケットが増減し、通信装置１００Ａのキュー４に保持された保持パケット数Ｈ＿Ｐｋｔがキュー４の許容サイズＴＱＬに徐々に近づく。
【０２３２】
図１９は、目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態２におけるフローチャートである。図１９に示すフローチャートは、図５に示すフローチャートのステップＳ７〜ステップＳ１０をステップＳ１４０，Ｓ１４１に代えたものであり、その他は、図５に示すフローチャートと同じである。
【０２３３】
一連の動作が開始されると、上述したステップＳ１〜ステップＳ５が順次実行され、負荷モニタモジュール１１Ａは、目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌをクロスレイヤモジュール２１Ａへ送信する。
【０２３４】
そして、クロスレイヤモジュール２１Ａは、負荷モニタモジュール１１Ａから信号Ｒａｔｅ＿ｓｉｇｎａｌを受信し、その受信した信号Ｒａｔｅ＿ｓｉｇｎａｌと、宛先の通信装置のＩＰアドレス（Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ）とＲｅｑｕｅｓｔｅｒ  ＩＤとして自端末のＩＰアドレスとを含む専用パケットＰＫＴ＿Ｄを生成する（ステップＳ１４０）。そして、クロスレイヤモジュール２１Ａは、その生成した専用パケットＰＫＴ＿Ｄをルーティングモジュール１４へ送信する（ステップＳ１４１）。
【０２３５】
ルーティングモジュール１４は、クロスレイヤモジュール２１Ａから受信した専用パケットＰＫＴ＿Ｄをトラフィッククラシファイア３を介してキュー５に入れ、アップストリームスケジューラ７は、キュー５に保持された専用パケットＰＫＴ＿Ｄをキュー８に入れ、ダウンストリームスケジューラ１０は、キュー８がアンロック状態である期間にキュー５から専用パケットＰＫＴ＿Ｄを読み出してＭＡＣレイヤモジュール１へ送信する。そして、ＭＡＣレイヤモジュール１は、専用パケットＰＫＴ＿Ｄを通信装置１０１へ送信する。これによって、一連の動作は、終了する。
【０２３６】
図２０は、図１６に示すクロスレイヤモジュール２１Ａにおける動作を説明するためのフローチャートである。実施の形態２においては、通信装置１００Ａで生成されたパケットを保持するキュー５および他の通信装置で生成されたパケットを保持するキュー４，６のいずれで負荷が発生しても、各キュー４〜６へのパケットの目標入力パケットレートは、負荷モニタモジュール１１Ａからクロスレイヤモジュール２１Ａへ送信され、クロスレイヤモジュール２１Ａは、目標入力パケットレートを通信装置１００Ａの上層レートコントローラ２０または他の通信装置へ送信する。図２０は、目標入力パケットレートのクロスレイヤモジュール２１Ａにおける処理を説明するためのフローチャートである。
【０２３７】
一連の動作が開始されると、クロスレイヤモジュール２１Ａは、負荷モニタモジュール１１Ａから信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ／Ｌｏａｄ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ］を受信し、その受信した信号Ｒａｔｅ＿ｓｉｇｎａｌに含まれる“ＬＯＡＤ  Ｇｅｎｅｒａｔｉｏｎ  ＩＤ”に基づいて、負荷を発生して通信装置をチェックする（ステップＳ１５１）。
【０２３８】
そして、クロスレイヤモジュール２１Ａは、負荷元が他の通信装置か否かを判定し（ステップＳ１５２）、負荷元が他の通信装置ではないとき、信号Ｒａｔｅ＿ｓｉｇｎａｌ＝［ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥ／Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅ］を上層レートコントローラ２０へ通知する（ステップＳ１５３）。
【０２３９】
一方、ステップＳ１５２において、負荷元が他の通信装置であると判定されたとき、クロスレイヤモジュール２１Ａは、送信先アドレスＤＥＳＴ＿ＡＤＤ、Ｒｅｑｕｅｓｔｅｒ  ＩＤ＝ｏｗｎ  ＩＤ、Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｔｙｐｅ＝ＮＯＴＩＦＹ＿ＴＡＲＧＥＴ＿ＲＡＴＥおよびＲａｔｅｉｎｆｏ＝Ｔａｒｇｅｔ  Ｅｎｑｕｅｕｅ  Ｒａｔｅを含む専用パケットＰＫＴ＿Ｄを生成し（ステップＳ１５４）、その生成した専用パケットＰＫＴ＿Ｄをルーティングモジュール１４へ送信する（ステップＳ１５５）。
【０２４０】
そして、ステップＳ１５３またはステップＳ１５５の後、一連の動作は、終了する。
【０２４１】
図２１は、専用パケットＰＫＴ＿Ｄを受信した通信装置における動作を説明するためのフローチャートである。一連の動作が開始されると、ＭＡＣレイヤモジュール１は、目標入力パケットレートを含む専用パケットＰＫＴ＿Ｄを受信し、その受信した専用パケットＰＫＴ＿Ｄをネットワークレイヤクラシファイア１３へ送信する（ステップＳ１６１）。
【０２４２】
そして、ネットワークレイヤクラシファイア１３は、ＭＡＣレイヤモジュール１から専用パケットＰＫＴ＿Ｄを受信し、その受信した専用パケットＰＫＴ＿Ｄをクロスレイヤモジュール２１Ａへ送信する（ステップＳ１６２）。
【０２４３】
クロスレイヤモジュール２１Ａは、専用パケットＰＫＴ＿Ｄを受信すると、その受信した専用パケットＰＫＴ＿Ｄから目標入力パケットレートを含む信号Ｒａｔｅ＿ｓｉｇｎａｌを取り出し、その取り出した信号Ｒａｔｅ＿ｓｉｇｎａｌを下層レートコントローラ１２へ送信する（ステップＳ１６３）。
【０２４４】
下層レートコントローラ１２は、信号Ｒａｔｅ＿ｓｉｇｎａｌを受信すると、その受信した信号Ｒａｔｅ＿ｓｉｇｎａｌから目標入力パケットレートを読み出し、その読み出した目標入力パケットレートを用いて、上述した方法（図１３に示すフローチャート）によって、目標出力パケットレートを演算し、その演算した目標出力パケットレートの逆数を演算してロック期間Ｌｃｋ＿ｔｉｍｅ（＝ロックインターバル）を計算する（ステップＳ１６４）。
【０２４５】
そして、レートコントロールタイマが満了すると（ステップＳ１６５）、下層レートコントローラ１２は、ロック状態にあるキュー（ダウンストリームキュー）の状態をロック状態からアンロック状態に変える（ステップＳ１６６）。その後、レートコントロールタイマが設定される（ステップＳ１６７）。
【０２４６】
一方、ＭＡＣ層のＭＡＣレイヤモジュール１は、チャネルアクセスを行ない、パケットの送信が可能な状態になると、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）をダウンストリームスケジューラ１０へ送信する（ステップＳ１６８）。そして、ダウンストリームスケジューラ１０は、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）に応じて、アンロック状態にあるキュー（ダウンストリームキュー）から１個のパケットを取り出す（ステップＳ１６９）。
【０２４７】
また、ダウンストリームスケジューラ１０は、１個のパケットを取り出したキューの状態をロック状態に設定するためのキューロック要求を下層レートコントローラ１２へ送信する（ステップＳ１７０）。
【０２４８】
下層レートコントローラ１２は、ダウンストリームスケジューラ１０からのキューロック要求に応じて、１個のパケットを出力したキュー（ＵＮＬＯＣＫ＿ｑｕｅｕｅＩＤ）の状態をロック状態に変更する（ステップＳ１７１）。
【０２４９】
その後、ダウンストリームスケジューラ１０は、ステップＳ１６９において、キューから取り出した１個のパケットをＭＡＣレイヤモジュール１へ送信するとともに（ステップＳ１７２）、パケットが空になったキューを指定し、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）をアップストリームスケジューラ７へ送信する（ステップＳ１７３）。
【０２５０】
そして、アップストリームスケジューラ７は、パケットの出力要求（Ｄｅｑｕｅｕｅ要求）に応じて、キュー４〜６（アップストリームキュー）から１個のパケットを取り出し（ステップＳ１７４）、その取り出した１個のパケットを空になったキューへ入れる（ステップＳ１７５）。これによって、一連の動作が終了する。
【０２５１】
上述したように、目標入力パケットレートを含む専用パケットＰＫＴ＿Ｄを受信した通信装置においては、受信した目標入力パケットレートに応じたロック期間Ｌｃｋ＿ｔｉｍｅ（ロックインターバル）が演算され、その演算されたたロック期間Ｌｃｋ＿ｔｉｍｅ（ロックインターバル）によって、キュー８，９からＭＡＣレイヤモジュール１（ＭＡＣ層）へのパケットの出力パケットレートが制御される。
【０２５２】
なお、図２１においては、通信装置１０１が目標入力パケットレートを含む専用パケットＰＫＴ＿Ｄを受信した場合について説明したが、通信装置１０２が目標入力パケットレートを含む専用パケットＰＫＴ＿Ｄを受信した場合も、図２１に示すフローチャートに従ってパケットの出力パケットレートの制御が行なわれる。
【０２５３】
上述したように、通信装置１００Ａで生成されたパケットを保持するキュー５の負荷（＝保持パケット数Ｈ＿Ｐｋｔ）がキュー５の許容サイズＴＱＬから掛け離れたとき、通信装置１００Ａのアプリケーション（Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８）がキュー５へ出力するパケットの出力パケットレートを制御してキュー５に保持された保持パケット数Ｈ＿Ｐｋｔをキュー５の許容サイズＴＱＬに近づける。また、通信装置１００Ａ以外の通信装置１０１，１０２から送信されたパケットを保持する通信装置１００Ａのキュー４，６の負荷（＝保持パケット数Ｈ＿Ｐｋｔ）がキュー４，６の許容サイズＴＱＬから掛け離れたとき、通信装置１０１，１０２のキュー８，９からのパケットの出力パケットレートを制御して通信装置１００Ａのキュー４，６に保持された保持パケット数Ｈ＿Ｐｋｔをキュー４，６の許容サイズＴＱＬに近づける。
【０２５４】
そして、この通信装置１００Ａにおけるアプリケーション（Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８）からキュー５へのパケットの出力パケットレートの制御と、通信装置１０１，１０２における通信装置１０１，１０２から通信装置１００Ａへのパケットの出力パケットレートの制御を行なうことによって、各通信装置１００Ａ，１０１，１０２においてキュー４〜６に保持される保持パケット数Ｈ＿Ｐｋｔがキュー４〜６の許容サイズＴＱＬに近づき、各通信装置１００Ａ，１０１，１０２における負荷が軽減される。その結果、通信装置１００Ａ，１０１，１０２からなるアドホックネットワークを安定化できる。
【０２５５】
その他は、実施の形態１と同じである。
【０２５６】
上記においては、キュー８，９は、１個のパケットを保持すると説明したが、この発明においては、これに限らず、キュー８，９は、１個以外の任意に決定された一定個数のパケットを保持するようにしてもよい。つまり、キュー８，９は、ダウンストリームスケジューラ１０が、キュー８，９が空であるか否かを容易に判定できる個数のパケットを保持すればよい。
【０２５７】
なお、キュー４〜６は、「入力バッファ」を構成し、キュー４〜６に保持された保持パケット数Ｈ＿Ｐｋｔを検出する負荷モニタモジュール１１，１１Ａは、「検出手段」を構成する。
【０２５８】
また、負荷モニタモジュール１１、上層レートコントローラ２０、下層レートコントローラ１２およびアップストリームスケジューラ７は、「制御手段」を構成し、負荷モニタモジュール１１Ａ、上層レートコントローラ２０および下層レートコントローラ１２は、「制御手段」を構成する。
【０２５９】
更に、Ｖｏｉｃｅ１７およびＶｉｄｅｏ１８は、「生成手段」を構成する。
【０２６０】
更に、キュー５は、「第１の入力バッファ」を構成し、キュー４，６は、「第２の入力バッファ」を構成する。
【０２６１】
更に、目標入力パケットレートを演算する負荷モニタモジュール１１，１１Ａは、「第１の演算手段」を構成し、目標入力パケットレートを上層レートコントローラ２０へ通知するクロスレイヤモジュール２１，２１Ａは、「通知手段」を構成し、目標入力パケットレートを用いて目標出力パケットレートを演算する上層レートコントローラ２０および下層レートコントローラ１２は、「第２の演算手段」を構成し、演算した目標出力パケットレートをＶｏｉｃｅ１７およびＶｉｄｅｏ１８へ送信する上層レートコントローラ２０は、「出力手段」を構成する。
【０２６２】
更に、他の通信装置へ通知する目標入力パケットレートを演算する負荷モニタモジュール１１は、「演算手段」を構成し、他の通信装置へ通知する目標入力パケットレートをパケットに入れるアップストリームスケジューラ７は、「通知手段」を構成する。
【０２６３】
更に、専用パケットＰＫＴ＿Ｄを生成して他の通信装置へ送信するクロスレイヤモジュール２１Ａは、「通知手段」を構成する。
【０２６４】
ＭＡＣレイヤモジュール１は、「送信手段」を構成し、キュー８，９は、「出力バッファ」を構成し、下層レートコントローラ１２は、「通信制御手段」を構成する。
【０２６５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０２６６】
この発明は、通信ネットワークの安定化が可能な通信装置に適用される。また、この発明は、通信ネットワークの安定化が可能な通信装置を備えた通信ネットワークに適用される。
【図面の簡単な説明】
【０２６７】
【図１】この発明の実施の形態１による通信装置の構成を示す概略図である。
【図２】自律的に確立される通信ネットワークであるアドホックネットワークの概念図である。
【図３】目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態１における第１の概念図である。
【図４】目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態１における第２の概念図である。
【図５】目標入力パケットレートをアプリケーションへ通知する動作を説明するためのフローチャートである。
【図６】目標入力パケットレートを他の通信装置へ通知する動作を説明するためのフローチャートである。
【図７】目標入力パケットレートを受信した通信装置における動作を説明するためのフローチャートである。
【図８】図１に示す負荷モニタモジュールにおけるキューの許容サイズを演算する動作を説明するためのフローチャートである。
【図９】許容サイズの計算方法を説明するためのフローチャートである。
【図１０】許容サイズの他の計算方法を説明するためのフローチャートである。
【図１１】目標入力パケットレートの計算方法を説明するためのフローチャートである。
【図１２】目標出力パケットレートの計算方法を説明するためのフローチャートである。
【図１３】図１に示す下層レートコントローラにおける目標出力パケットレートの計算方法を説明するためのフローチャートである。
【図１４】図１に示すダウンストリームスケジューラにおける動作を説明するためのフローチャートである。
【図１５】図１４によってダウンストリームスケジューラからパケットのＤｅｑｕｅｕｅ要求を受けたときの図１に示すアップストリームスケジューラにおける動作を説明するためのフローチャートである。
【図１６】実施の形態２による通信装置の構成を示す概略図である。
【図１７】目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態２における第１の概念図である。
【図１８】目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態２における第２の概念図である。
【図１９】目標入力パケットレートを他の通信装置へ通知する動作を説明するための実施の形態２におけるフローチャートである。
【図２０】図１６に示すクロスレイヤモジュールにおける動作を説明するためのフローチャートである。
【図２１】専用パケットを受信した通信装置における動作を説明するためのフローチャートである。
【符号の説明】
【０２６８】
１  ＭＡＣレイヤモジュール、２  リンクレイヤクラシファイア、３  トラフィッククラシファイア、４〜６，８，９  キュー、７  アップストリームスケジューラ、１０  ダウンストリームスケジューラ、１１，１１Ａ  負荷モニタモジュール、１２  下層レートコントローラ、１３  ネットワークレイヤクラシファイア、１４  ルーティングモジュール、１５  ＵＤＰ、１６  ＴＣＰ、１７  Ｖｏｉｃｅ、１８  Ｖｉｄｅｏ、１９  Ｔｅｘｔ、２０  上層レートコントローラ、２１，２１Ａ  クロスレイヤモジュール、１００，１００Ａ，１０１，１０２  通信装置。
【図１】
2008099055.tif 000003
【図２】
2008099055.tif 000004
【図３】
2008099055.tif 000005
【図４】
2008099055.tif 000006
【図５】
2008099055.tif 000007
【図６】
2008099055.tif 000008
【図７】
2008099055.tif 000009
【図８】
2008099055.tif 000010
【図９】
2008099055.tif 000011
【図１０】
2008099055.tif 000012
【図１１】
2008099055.tif 000013
【図１２】
2008099055.tif 000014
【図１３】
2008099055.tif 000015
【図１４】
2008099055.tif 000016
【図１５】
2008099055.tif 000017
【図１６】
2008099055.tif 000018
【図１７】
2008099055.tif 000019
【図１８】
2008099055.tif 000020
【図１９】
2008099055.tif 000021
【図２０】
2008099055.tif 000022
【図２１】
2008099055.tif 000023