(57)【要約】【課題】フローの間で帯域とバッファ容量を公平に割当てることが可能となり、効率的な伝送を行うことができる通信制御方法、その方法を用いた通信制御装置、制御プログラム及び記録媒体を提供する。【解決手段】  入力データに対して所定の帯域制御を行って伝送を行う通信制御方法であって、入力データを少なくとも１ユーザ毎のフローに分類し、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てる。【選択図】図４
2006033002.tif 000002
【特許請求の範囲】
【請求項１】
入力データに対して所定の帯域制御を行って伝送を行う通信制御方法であって、前記入力データを少なくとも１ユーザ毎のフローに分類するステップと、
同時並行して伝送可能な複数の前記フローに対して前記伝送のために割当てられている全帯域を、実際に伝送すべき前記フローに割当てるステップとを備えたことを特徴とする通信制御方法。
【請求項２】
前記フローは所定の重みを有し、
前記帯域割当ては、実際に通信を行っている前記フローに対し、すべてのフローの前記重みの合計に対する各フロー毎の前記重みの割合に基づいて帯域割当てをすることを特徴とする、請求項１に記載の通信制御方法。
【請求項３】
パケットデータ長をＬとし、
現在通信を行っているフロー全体の重みの合計値をＡとし、
当該フロー番号ｉの重みをＷｉとした場合に、
当該フロー番号ｉの次パケットが到着する時間の理論的な予想値であるＴＡＴ値であるＴＡＴｉをＴＡＴｉ＝ＴＡＴｉ＋Ｌ×Ａ／Ｗｉにより算出することを特徴とする、請求項２に記載の通信制御方法。
【請求項４】
前記少なくとも１ユーザ毎に、実際に伝送すべき前記フローに割当てる際、前記少なくとも１ユーザの送信するデータの伝送速度を可変することを特徴とする、請求項１から請求項３のいずれか１項に記載の通信制御方法。
【請求項５】
前記少なくとも１ユーザ毎に、割当てるパケット容量を可変することを特徴とする、請求項１から請求項４のいずれか１項に記載の通信制御方法。
【請求項６】
入力データに対して所定の帯域制御を行って伝送を行う通信制御装置であって、
前記入力データを少なくとも１ユーザ毎のフローに分類するパケット分類機構と、
同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべき前記フローに割当てるポリシング処理部とを備えたことを特徴とする通信制御装置。
【請求項７】
前記フローは所定の重みを有し、
前記ポリシング処理部は、実際に通信を行っている前記フローに対し、すべてのフローの前記重みの合計に対する各フローの前記重みの割合に基づいて帯域割当てを行うことを特徴とする、請求項６に記載の通信制御装置。
【請求項８】
パケットデータ長をＬとし、
現在通信を行っているフロー全体の重みの合計値をＡとし、
当該フロー番号ｉの重みをＷｉとした場合に、
当該フロー番号ｉの次パケットが到着する時間の理論的な予想値であるＴＡＴ値であるＴＡＴｉをＴＡＴｉ＝ＴＡＴｉ＋Ｌ×Ａ／Ｗｉにより算出することを特徴とする、請求項７に記載の通信制御装置。
【請求項９】
前記少なくとも１ユーザ毎に、実際に伝送すべき前記フローに割当てる際、前記少なくとも１ユーザの送信するデータの伝送速度を可変することを特徴とする、請求項６から請求項８のいずれか１項に記載の通信制御装置。
【請求項１０】
前記少なくとも１ユーザ毎に、割当てるパケット容量を可変することを特徴とする、請求項６から請求項９のいずれか１項に記載の通信制御装置。
【請求項１１】
入力データに対して所定の帯域制御を行って伝送を行う通信制御装置をコンピュータにより制御するための制御プログラムであって、
前記入力データを少なくとも１ユーザ毎のフローに分類させ、
同時並行して伝送可能な複数の前記フローに対して前記伝送のために割当てられている全帯域を、実際に伝送すべき前記フローに割当てさせることを特徴とする制御プログラム。
【請求項１２】
前記フローは、所定の重みが割り当てられており、
前記フローに前記帯域を割当てさせるに際し、実際に通信を行っている前記フローに対し、すべてのフローの前記重みの合計に対する各フローの重みの割合に基づいて帯域割当てを行わせることを特徴とする、請求項１１に記載の制御プログラム。
【請求項１３】
パケットデータ長をＬとし、
現在通信を行っているフロー全体の重みの合計値をＡとし、
当該フロー番号ｉの重みをＷｉとした場合に、
当該フロー番号ｉの次パケットが到着する時間の理論的な予想値であるＴＡＴ値であるＴＡＴｉをＴＡＴｉ＝ＴＡＴｉ＋Ｌ×Ａ／Ｗｉにより算出することを特徴とする、請求項１２に記載の制御プログラム。
【請求項１４】
前記少なくとも１ユーザ毎に、実際に伝送すべき前記フローに割当てる際、前記少なくとも１ユーザの送信するデータの伝送速度を可変することを特徴とする、請求項１１から請求項１３のいずれか１項に記載の制御プログラム。
【請求項１５】
前記少なくとも１ユーザ毎に、割当てるパケット容量を可変することを特徴とする、請求項１１から請求項１４のいずれか１項に記載の制御プログラム。
【請求項１６】
請求項１１から請求項１５のいずれか１項に記載の制御プログラムを記録したことを特徴とするコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トークンバケツモデルを用いた通信制御方法において、余剰帯域及びバッファ容量を公平に配分する通信制御方法、その方法を用いた通信制御装置、制御プログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年、通信ネットワークの接続サービスでは、ＦＴＴＨ（Ｆｉｂｅｒ  Ｔｏ  Ｔｈｅ  Ｈｏｍｅ）の普及によって高速な接続サービスが低コストで提供できるようになってきている。
【０００３】
例えば、音声データをデジタル化し、圧縮して、インターネット上またはＩＰネットワーク上を交換または伝送するＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  ＩＰ）や、インターネット電話が実用化されている。ＶｏＩＰはデータパケットと音声データを１個のネットワーク上で混在して伝送できるので、ネットワークの建設費用、運用費用とも節減できる。さらに、その中でユーザの利用できる帯域を保証する通信サービスが普及してきている。
【０００４】
このような通信ネットワークを流れるデータトラフィックは、その使用するアプリケーションに応じたＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ：サービス品質）制御を行う必要がある。
【０００５】
ＱｏＳ制御により、帯域の調整を通してＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ：サービスレベル契約）を施行する。ＳＬＡは、指定されたユーザまたはサービスタイプに対してネットワークが満たさなければならない保証基準を定義したものである。これらの基準には、保証される帯域、パケット損失等が含まれる。
【０００６】
保証される帯域としては、使用可能な帯域の最小、平均、及びピーク保証値が指定できる。パケット損失は、送信後受信されていないパケットや、受信でエラーが発生したパケットの数または割合を示す。
【０００７】
このＱｏＳ制御を行うための技術方法としては、各フロー毎に異なるキューを構成し、各キューから送信されるパケットをスケジューラによって１回に１個づつ取り出し、スケジューリングするスケジューリング方法がある。
【０００８】
また、ネットワーク内の各通信制御装置（以下、ルータという）で、フローをユーザ毎、サービスタイプ毎のフローに分類して、各フローに対してそれぞれ帯域とバッファ容量を割り当て、フローの最大流量を制限するポリシング方法なども用いられている。
【０００９】
図５は、スケジューリング方法の１態様を示す図である。
図５は、複数の情報ソース２５−１〜２５−ｎ、キュー１２−１〜１２−ｎ、フロー３２−１〜３２−ｎ、１つの出リンク１７を備えたスケジューラ１３からなっている。
【００１０】
図５に示すように、スケジューリング方法とは、複数個の情報ソース２５−１〜２５−ｎからパケットが送信され、それぞれ、フロー３２−１〜３２−ｎを通じて、キュー１２−１〜１２−ｎに入る。スケジューラ１３は１回に１個のパケットしかキュー１２−１〜１２−ｎから取り出すことができない。
【００１１】
フローが複数本の場合、スケジューラ１３はパケットを複数本のキューに待たせて、所定の方法に従ってキューから１個ずつ順に、パケットを取り出して出リンクに送出する必要がある。この送出順序を選択する方法はスケジューリング方法と言われる。
【００１２】
代表的なスケジューリング方法としては、パケットを到着順に出リンクに送出するＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）スケジューリング、可変長のパケットを扱う不足ラウンドロビンスケジューリング、フローの扱いの公平性を狙った重み付けフェアスケジューリング等がある。
【００１３】
また、アプリケーションがフローごとのプライオリティ（優先度）を定め、そのフローのすべてのパケットにフローのプライオリティを追加し、プライオリティで定まる優先度に従ってパケットを処理するプライオリティスケジューリングもある。
【００１４】
一方、１台のルータに収容されるユーザ数はコスト削減などの理由により増加傾向であり、数千から数万のユーザを収容することも珍しくない。また、回線速度も近年急速に高速化している。
【００１５】
しかしながら、このような高速回線上で多数のユーザに対して個別にキューを構成し、パケットのスケジューリングを行うことは、ルータの処理能力的に困難である。また、専用のハードウェアで実現するとしても、設計回路が複雑になりコストが多大にかかる。
【００１６】
また、スケジューリング方法ではパケットのバッファ容量の利用効率が非効率になる問題もある。仮にルータの持つバッファ容量が１メガバイトの容量であるとする。１０００人のユーザに対して個別にキューを作り、各キューの最大キュー長を設定すると、１メガバイト÷１０００ユーザ＝１キロバイトのバッファ容量の割当となる。
【００１７】
しかし、サービスを契約しているユーザが１０００人いるとしても、ある時間に実際にフローを流しているユーザの数はそれほど多くないと考えられる。例えば、サービスを契約しているユーザが４００人であれば、６００人のユーザは実際にフローを流していないことになる。
【００１８】
そのため、上述のように最大キュー長を設定すると実際にはバッファ容量はほとんど使われていないにも関わらず、パケットの廃棄や遅延が発生することになり、バッファ容量の利用効率が非常に悪くなる。
【００１９】
さらに、特許文献２に開示されているように、複数のスケジューリング方法の中で１つのスケジューリング方法を使用し、バッファ容量を効率的に割当てることは難しく、実装することも極めて複雑となる。
【００２０】
一方、スケジューリング方法の代わりに、各フロー毎に帯域とバースト量を制限することができる通信制御方法、例えばポリシング方法等も提供される。
【００２１】
ポリシング方法では、各フロー毎に帯域と許容バースト量の検定が行われる。即ち、ポリシング方法は、ポリサーと呼ばれる流量計を用いて、フローを常に測定している。帯域と許容バースト量の検定が行われた結果、不適合と判定された場合、即ち、ポリサーに設定した帯域の値をフローが超えた場合や、ポリサーに設定した許容バースト量をフローが超えた場合、パケットは廃棄または遅延される。
【００２２】
そして、帯域と許容バースト量の検定が行われた結果、適合と判定された場合、即ち、ポリサーに設定した帯域の値をフローが超えず、かつ、ポリサーに設定した許容バースト量をフローが超えない場合、パケットは次段の処理に入る方法である。
【００２３】
ポリシング方法の１つの方法として、トークンバケツモデルを用いたポリシング方法がある。
【００２４】
図６はトークンバケツモデルを用いたポリシング方法を模式的に説明する図である。
図６は、トークン２６、トークンバケツ２７、パケット２８、ポリサー８、キュー１２からなっている。
【００２５】
図６で示すように、トークンバケツモデルを用いたポリシング方法は、トークン２６と呼ばれるトラフィック送信権を表す仮想的な流量を用いる。そして、このトラフィックの流量を制限したいフローには、このトークン２６をためておくための仮想的なトークンバケツ２７が用意される。このトークンバケツ２７にはフローの制限流量に等しい一定のレート、即ち、トークンバケツ２７にトークン２６が供給される速さで、トークン２６が補充されている。
【００２６】
パケット２８がポリサー８に到着すると、ポリサー８はこのパケットのデータ量に比例したトークン２６をトークンバケツ２７から取り出す。例えば、パケット２８がポリサー８に到着し、そのパケット２８が６４バイト分のトークン２６を必要とする場合、トークンバケツ２７からトークン２６を６４バイト分取り出す。
【００２７】
パケット２８は必要な量のトークン２６を取り出すことで、トラフィック送信権を得て、パケット２８は送信され、いったんキュー１２に格納する。パケット２８に必要な量のトークン２６がトークンバケツ２７から供給されない場合は、このパケット２８は廃棄や遅延等の処理が行われる。そうすることで、フローの流量制限が実現される。
【００２８】
しかしながら、上述したポリサーは、特許文献１が開示するように、複数のフローに対して、フロー毎に帯域制限を行うものである。この場合には、パケットが送信されないフローが存在すると、余剰帯域は他のフローが使用できず、また、バッファ容量の効率的な割当てもできない。さらに、余剰帯域を各フローに公平に配分することは実装する上でも極めて困難である。
【特許文献１】特開平６−１７８３７３号公報
【特許文献２】特表２００１−５１９１２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００２９】
しかしながら、上述のトークンバケツモデルを用いたポリシング方法は、各フローを検定し、廃棄や遅延等をする機能だけを有しており、帯域とバッファ容量を公平に割り当てることができないという問題点があった。
【００３０】
本発明は、上述の問題点に鑑みなされたものであり、各フローに対して、帯域制限を行うとともに、各フローに対して公平に帯域およびバッファ容量を配分することができる通信制御方法、その方法を用いた通信制御装置、制御プログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【００３１】
この発明の通信制御方法の第１の態様は、入力データに対して所定の帯域制御を行って伝送を行う通信制御方法であって、入力データを少なくとも１ユーザ毎のフローに分類するステップと、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てるステップとを備えた通信制御方法である。
【００３２】
この発明の通信制御方法の第２の態様は、フローが所定の重みを有し、帯域割当てが、実際に通信を行っているフローに対し、すべてのフローの重みの合計に対する各フロー毎の重みの割合に基づいて帯域割当てをする通信制御方法である。
【００３３】
この発明の通信制御方法の第３の態様は、パケットデータ長をＬとし、現在通信を行っているフロー全体の重みの合計値をＡとし、当該フロー番号ｉの重みＷｉとした場合に、フロー番号ｉの次パケットが到着する時間の理論的な予想値であるＴＡＴ値であるＴＡＴｉをＴＡＴｉ＝ＴＡＴｉ＋Ｌ×Ａ／Ｗｉにより算出する通信制御方法である。
【００３４】
この発明の通信制御方法の第４の態様は、少なくとも１ユーザ毎に、実際に伝送すべきフローに割当てる際、少なくとも１ユーザの送信するデータの伝送速度を可変することを特徴とする通信制御方法である。
【００３５】
この発明の通信制御方法の第５の態様は、少なくとも１ユーザ毎に、割当てるパケット容量を可変することを特徴とする通信制御方法である。
【００３６】
この発明の通信制御装置の第１の態様は、入力データに対して所定の帯域制御を行って伝送を行う通信制御装置であって、入力データを少なくとも１ユーザ毎のフローに分類するパケット分類機構と、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てるポリシング処理部とを備えた通信制御装置である。
【００３７】
この発明の通信制御装置の第２の態様は、フローが所定の重みを有し、ポリシング処理部が、実際に通信を行っているフローに対し、すべてのフローの重みの合計に対する各フローの重みの割合に基づいて帯域割当てを行う通信制御装置である。
【００３８】
この発明の通信制御装置の第３の態様は、パケットデータ長をＬとし、現在通信を行っているフロー全体の重みの合計値をＡとし、当該フロー番号ｉの重みＷｉとした場合に、フロー番号ｉの次パケットが到着する時間の理論的な予想値であるＴＡＴ値であるＴＡＴｉをＴＡＴｉ＝ＴＡＴｉ＋Ｌ×Ａ／Ｗｉにより算出する通信制御装置である。
【００３９】
この発明の通信制御装置の第４の態様は、少なくとも１ユーザ毎に、実際に伝送すべきフローに割当てる際、少なくとも１ユーザの送信するデータの伝送速度を可変することを特徴とする通信制御装置である。
【００４０】
この発明の通信制御装置の第５の態様は、少なくとも１ユーザ毎に、割当てるパケット容量を可変することを特徴とする通信制御装置である。
【００４１】
この発明の制御プログラムの第１の態様は、入力データに対して所定の帯域制御を行って伝送を行う通信制御装置をコンピュータにより制御するための制御プログラムであって、入力データを少なくとも１ユーザ毎にフローに分類させ、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てさせる制御プログラムである。
【００４２】
この発明の制御プログラムの第２の態様は、フローに所定の重みが割当てられており、フローに帯域を割当てさせるに際し、実際に通信を行っているフローに対し、すべてのフローの重みの合計に対する各フローの重みの割合に基づいて帯域割当てを行わせる制御プログラムである。
【００４３】
この発明の制御プログラムの第３の態様は、パケットデータ長をＬとし、現在通信を行っているフロー全体の重みの合計値をＡとし、当該フロー番号ｉの重みＷｉとした場合に、フロー番号ｉの次パケットが到着する時間の理論的な予想値であるＴＡＴ値であるＴＡＴｉをＴＡＴｉ＝ＴＡＴｉ＋Ｌ×Ａ／Ｗｉにより算出する制御プログラムである。
【００４４】
この発明の制御プログラムの第４の態様は、少なくとも１ユーザ毎に、実際に伝送すべきフローに割当てる際、少なくとも１ユーザの送信するデータの伝送速度を可変することを特徴とする制御プログラムである。
【００４５】
この発明の制御プログラムの第５の態様は、少なくとも１ユーザ毎に、割当てるパケット容量を可変することを特徴とする制御プログラムである。
【００４６】
この発明の記録媒体の第１の態様は、上述の制御プログラムを記録するコンピュータ読取可能な記録媒体である。
【発明の効果】
【００４７】
この発明の通信制御方法によって、複雑なスケジューリング方法を行わなくても、この発明で示した単純な通信制御方法によって各ユーザのフローに公平に帯域とバッファ容量を割り当てることができる。
【００４８】
また、スケジューリング方法では困難であった、通信中のユーザのみを考慮してパケットのバッファ容量割当てを行うことができる。例えば、１０００人のユーザを収容している装置でバッファ容量が１メガバイトの容量である時に、ある時点で通信を行っているユーザが１０人しかいない場合、スケジューリングによる方法では各ユーザあたり１キロバイトの容量のバッファ容量を割当てることになる。
【００４９】
しかし、この発明の通信制御方法を用いれば、ある時点で通信を行っているユーザが１０人しかいない場合には、１００キロバイトの容量のバッファ容量の割当てが可能になる。
【発明を実施するための最良の形態】
【００５０】
以下に、本発明の実施形態を、図面を参照しながら詳細に説明する。
【００５１】
図１は、ポリサーを備えた通信制御装置の構造を示す図である。
図１に示すように、ルータ１は入出力ポート２−１〜２−ｎ、スイッチファブリック３、ネットワークプロセッサ３３を備えている。そして、ネットワークプロセッサ３３はトラフィック調整機構６、トラフィック制御機構１５を備えている。
【００５２】
なお、ルータ１は当該ルータ１全体を制御するための図示しないＣＰＵと、通信制御を行うための制御プログラムあるいは制御データを格納する図示しないＲＯＭ、ＲＡＭ等を備えて構成されており、以下における各種制御は、ＲＯＭ内の制御プログラムに基づいてＣＰＵが行っている。
【００５３】
スイッチファブリック３は各入力ポートで受信したパケットを適切な宛先ポートにスイッチングする機構である。
【００５４】
トラフィック調整機構６は各ユーザ毎、サービスタイプ毎にパケットを分類するパケット分類機構５とパケット分類機構５から送出されたパケットを廃棄や遅延を行うパケット調整機構７を備える。パケット分類機構５には、例えばクラシファイア等があり、ＣＡＭ（Ｃｏｎｔｅｎｔｓ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ：内容参照可能メモリ）等を用いている。
【００５５】
即ち、トラフィック調整機構６は、到着するパケットが契約したフロー特性に適合しているか否かをチェックして、あらかじめ指定された所定の処理を施す。指定された所定の処理には、パケットに廃棄を与える処理やパケットに遅延を与える処理等がある。
【００５６】
パケット調整機構７はパケット分類機構５から送出されたパケットを廃棄処理や遅延処理を行ってもよいか否かを判定するポリサー８およびポリサー８で廃棄されると判定されたパケットを廃棄処理する廃棄処理部（ドロッパー）９を備えている。
【００５７】
トラフィック制御機構１５は、キュー１２にパケットを送出するキューマネージャ１１、送出されたパケットを収容するキュー１２、出リンク１７に出力するパケットを選択するスケジューラ１３を備えている。トラフィック制御機構１５の中のキュー１２を囲む矩形の点線はバッファ容量１６を表している。即ち、キューマネージャ１１とスケジューラ１３はそれぞれのキュー１２の出入口で、キュー１２に出入するパケットを制御する機構である。
【００５８】
即ち、トラフィック制御機構１５は、各フローの出力レートや遅延時間等の要求を満足させるように、出リンク１７に送出するパケットの取捨選択、及び送出順序を制御する。
【００５９】
まず、パケットが入力されると、スイッチ機能を有するスイッチファブリック３は各入力ポートから入力されたパケットの、例えばＩＰヘッダ部にある宛先ＩＰアドレス情報を参照して、所定の宛先ポートにスイッチングする処理を行う。スイッチング処理が行われたパケットは、パケット分類機構５に送出される。
【００６０】
次に、スイッチングされたパケットはパケット分類機構５により各ユーザ毎、サービスタイプ毎の個別のフローに分類される。パケット分類機構５は、例えばパケットのＩＰヘッダ部にある送受信ＩＰアドレス、ＴＣＰ／ＵＤＰヘッダ部にある送受信ポートを参照して、分類を行う。この時、パケットのヘッダ部にフロー番号を示す内部ヘッダが追加され、次段のポリサーに出力されている。
【００６１】
さらに、ポリサー８によって、各フロー毎に帯域と許容バースト量の検定が行われる。即ち、ポリサー８と呼ばれる流量計を用いて、フローを常に測定している。そして、検定した結果、フローが不適合であると判定された場合、即ち、ポリサー８に設定した帯域の値をフローが超えた場合や、ポリサ−８に設定した許容バースト量を超えた場合、不適合時の処理が行われる。例えばパケットは廃棄され、廃棄処理部９へ転送される。
【００６２】
検定した結果、フローが適合であると判定された場合、即ち、ポリサーに設定した帯域の値をフローが超えず、かつ、ポリサーに設定した許容バースト量を超えない場合、パケットはトラフィック制御機構１５へ転送される。
【００６３】
キューマネージャ１１は、キュー１２に収容するパケットを選択する。キュー１２では、前の段階のポリサーの許容バースト分のパケットが留められ、出力ポート速度に遅らせる。そして、スケジューラ１３はパケットを１本または複数のキューに待たせて、所定の方法に従ってキューから１個ずつ順に、パケットを取り出す。所定の方法に従って１つに選択されたパケットは、スケジューラ１３によって出リンク１７に出力され、送信される。
【００６４】
図２は、ポリサーの構造を模式的に説明をするための図である。
【００６５】
図２に示すように、ポリサー８は、ポリシング処理部１８、フローテーブル１９、レート格納部２０、アクティブカウンタ部２１、バースト格納部２２、フロー状態格納部２３、タイマー部２４を備えている。
【００６６】
レート格納部２０は、各フローでのレートを合計したレートの合計値Ｒ（ｂｐｓ）が格納されている。レートとは、トークンバケツにトークンが供給される速さを表している。例えば、出力ポートのレートの値と等しくしてもよい。バースト格納部２２は、ポリシングの許容バースト値Ｂを格納している。許容バースト値は、連続して送信されるパケット列の長さを制限する値を示している。例えば、許容バースト値は出力ポートに割り当てられているパケットのバッファ容量と等しくしてもよい。
【００６７】
フロー状態格納部２３は、各フローの状態をＡｃｔｉｖｅ状態からＩｎａｃｔｉｖｅ状態にするためのチェック間隔Ｔの値を格納している。タイマー部２４は、現在の時刻ｔを格納している。アクティブカウンタ部２１は、現在通信を行っている、即ち、Ａｃｔｉｖｅ状態である各フローの重みの値を合計した重みの合計値Ａを格納している。
【００６８】
図３は、フローテーブルの構成例を示す図である。
図３で示すように、フローテーブルはフロー番号ｉ（ｉは自然数）、重みＷｉ、ＴＡＴｉ値（Ｔｈｅｏｒｅｔｉｃａｌ  Ａｒｒｉｖａｌ  Ｔｉｍｅ）、通信状態を管理するフラグＦｉを備えたテーブルとなっている。各添字で示されたｉは、それぞれのフロー番号での重み、ＴＡＴ値、フラグを示している。フローテーブルの重みＷｉは各フローでの帯域の割合を表している。例えば、各フロー番号１、２、３での帯域が２Ｍｂｐｓ、１Ｍｂｐｓ、４Ｍｂｐｓの設定要求があった場合、各フロー１、２、３にそれぞれ２：１：４の重みを持たせることになる。
【００６９】
フローテーブルのＴＡＴｉ値はフロー番号ｉでの次のパケットが到着する時間の理論的な予想値を示している。フローテーブルのフラグＦｉに登録されているＡｃｔｉｖｅとは、通信が行われている状態を示しており、また、Ｉｎａｃｔｉｖｅとは、通信が行われていない状態を示している。
【００７０】
続いて、余剰帯域を公平に配分するポリシング方法について詳細に説明する。
【００７１】
図４は、図２で示されたポリサーのポリシング処理部の動作を示すフローチャートである。
図４のフローチャートは、一般的なトークンバケツアルゴリズムを基本としているが、一般的なトークンバケツアルゴリズムと根本的に異なる点は、現在Ａｃｔｉｖｅ状態にあるすべてのフローのそれぞれの重みＷｉの和Ａをアクティブカウンタ部２１に記憶しておき、Ａｃｔｉｖｅ状態にあるフローの重みＷｉの割合に基づいて帯域の割り当てを行うように構成されている点である。
【００７２】
具体的には、フローテーブル１９に記憶されているＴＡＴｉにパケット長を加える際に、パケット長をＬとすると、Ｌ１＝Ｌ×Ａ／Ｗｉで表される補正パケット長Ｌ１を加えている。これは、換言すれば、同一のパケット長であっても、現在Ａｃｔｉｖｅ状態にあるすべてのフローの中でより重みの高いフローのパケットに対してより大きな帯域を割り当てていることになる。
【００７３】
詳細に説明すると、各フローのポリシングレートがトータルレートＲのＷｉ／Ａ倍となり、重みに応じて公平に帯域割当て行われることになる。また、各フローに許容されるバースト値もトータルの許容バースト値ＢのＷｉ／Ａとなり、重みに応じて公平にバッファの容量を割り当てることが可能となる。
【００７４】
まず、ポリシング方法は現在の時刻ｔと、前回各フローのＡｃｔｉｖｅ状態をチェックした時刻ｔ´とを差分する。そして、その差分値がフロー状態格納部に登録されているチェック間隔Ｔより大きいか否かを判定する（Ｓ１０１）。
【００７５】
この時、現在の時刻ｔと前回各フローのＡｃｔｉｖｅ状態をチェックした時刻ｔ´との差分値が、フロー状態格納部に登録されているチェック間隔Ｔの値より大きい（Ｓ１０１；ＹＥＳ）と、フロー番号ｉに１を代入する（Ｓ１０２）。この代入処理は、すべてのフロー番号ｉに対して１から処理を始めることを意味する。
【００７６】
次に、条件式ＴＡＴｉ＜Ｒ×ｔを満たしているか判定する（Ｓ１０３）。即ち、トークンバケツがトークンで満たされているか判定する。ここで、Ｒはトークンと呼ばれるトラフィック送信権がトークンバケツに供給されるレート（速さ）を表している。
【００７７】
条件式ＴＡＴｉ＜Ｒ×ｔが満たされている、即ち、トークンバケツがトークンで満たされている（Ｓ１０３；ＹＥＳ）場合は、ＴＡＴｉにＲ×ｔで算出された値を代入する（Ｓ１０４）。この代入処理の目的は、現在時刻ｔを保持しているメモリのビット幅が有限であり、十分長い時間が過ぎればラップしてｔの値が０に戻ってしまうことに対処するものである。即ち、その目的はＴＡＴｉと現在時刻ｔとの差を一定以内に保つことで以下の計算を正しく行えるようにするためのものである。
【００７８】
なお、条件式ＴＡＴｉ＜Ｒ×ｔが満たされていない場合、即ち、トークンバケツがトークンで満たされていない（Ｓ１０３；ＮＯ）場合は、ＴＡＴｉにＲ×ｔで算出された値を代入する処理（Ｓ１０４）は行わず、次の処理はＳ１０７へ転送される。
【００７９】
次に、通信状態を管理する所定のフロー番号ｉでのフラグＦｉの状態がＡｃｔｉｖｅ状態であるか否かを判定する（Ｓ１０５）。所定のフロー番号ｉでのフラグの状態がＡｃｔｉｖｅ状態である（Ｓ１０５；ＹＥＳ）場合、フラグＦｉをＩｎａｃｔｉｖｅ状態とし、アクティブカウンタ値をフローｉの重みＷｉだけ減少させる（Ｓ１０６）。これにより、フローｉが使っていない帯域を他のＡｃｔｉｖｅ状態であるフローが使えるようになる。
【００８０】
なお、所定のフロー番号ｉでのフラグＦｉの状態がＡｃｔｉｖｅ状態でない（Ｓ１０５；ＮＯ）場合、通信状態を管理するフラグＦｉをＩｎａｃｔｉｖｅ状態とし、アクティブカウンタ値をフローｉの重みＷｉだけ減少させる処理（Ｓ１０６）は行わず、次の処理はＳ１０７へ転送される。
【００８１】
次に、現在のフロー番号ｉに１を足すことで、次のフロー番号ｉの処理へ移る（Ｓ１０７）。例えば、Ｓ１０１からＳ１０６の処理でフロー番号ｉが３であるならば、Ｓ１０７でフロー番号ｉは４になる。
【００８２】
さらに、条件式（フロー番号ｉ）≦（最後のフロー番号ｉ）であるか判定する（Ｓ１０８）。最後のフロー番号とは、パケット分類機構でユーザ毎、サービスタイプ毎に分類されたパケットのヘッダ部に追加された番号のうち、最大の番号が最後のフロー番号を表す。この条件式は、Ｓ１０７でフロー番号ｉに１を足した結果の値が、最後のフロー番号以下である（Ｓ１０８；ＹＥＳ）場合、Ｓ１０３に戻り、次のフロー番号の処理を行う。
【００８３】
Ｓ１０７でフロー番号ｉに１を足した結果の値が、最後のフロー番号を超える（Ｓ１０８；ＮＯ）場合、前回Ａｃｔｉｖｅ状態をチェックした時刻ｔ´を現在の時刻ｔに更新して（Ｓ１０９）、次にＡｃｔｉｖｅ状態をチェックする時間間隔を測り始める。
【００８４】
なお、Ｓ１０１でｔ−ｔ´＞Ｔでない（Ｓ１０１；ＮＯ）場合、即ち、現在の時刻ｔと、前回各フローのＡｃｔｉｖｅ状態をチェックした時刻ｔ´との差分値がフロー状態格納部に登録されているチェック間隔Ｔと等しくない場合は、Ｓ１１０に進む。
【００８５】
続いて、パケットがポリサーに到着したか否かを判定する（Ｓ１１０）。パケットがポリサーに到着している（Ｓ１１０；ＹＥＳ）場合、さらに、通信状態を管理するフラグＦｉがＩｎａｃｔｉｖｅ状態であるか否かを判定する（Ｓ１１１）。
【００８６】
ここで、パケットがポリサーに到着していない（Ｓ１１０；ＮＯ）場合には、Ｓ１０１に戻って、現在の時刻ｔと、前回各フローのＡｃｔｉｖｅ状態をチェックした時刻ｔ´とを差分する。そして、その差分値がフロー状態格納部に登録されているチェック間隔Ｔの値と等しいか否かを判定する。
【００８７】
通信状態を管理するフラグＦｉがＩｎａｃｔｉｖｅ状態である場合（Ｓ１１１；ＹＥＳ）、アクティブカウンタにフローｉの重みＷｉを加えて、通信状態を管理するフラグＦｉをＡｃｔｉｖｅ状態にする（Ｓ１１２）。
【００８８】
さらに、条件式ＴＡＴｉ＜Ｒ×ｔを満たすか否か、即ち、トークンバケツの中がトークンで満たされているか否かを判定する（Ｓ１１３）。条件式ＴＡＴｉ＜Ｒ×ｔを満たす（Ｓ１１３；ＹＥＳ）場合、即ち、トークンバケツがトークンで満たされている場合、ＴＡＴｉにＲ×ｔ＋Ｌ×Ａ／Ｗｉで算出された値を代入（Ｓ１１４）して、送信処理（Ｓ１１８）に進む。
【００８９】
ここで、Ｌはパケット長を示しており、Ａは各フロー番号での重みＷｉを合計した合計値を示している。即ち、Ｌ×Ａ／Ｗｉで算出された値はパケット長Ｌをアクティブカウンタの値と重みＷｉの比率だけ倍にした値を示している。
【００９０】
条件式ＴＡＴｉ＜Ｒ×ｔを満たさない、即ち、トークンバケツがトークンで満たされていない（Ｓ１１３；ＮＯ）場合、さらに、条件式ＴＡＴｉ＋Ｌ×Ａ／Ｗｉ−Ｒ×ｔ＜Ｂを満たすか否かを判定する（Ｓ１１５）。ここで、Ｂはバースト許容値を表す。この条件式は、現在トークンバケツに存在するトークンの量で、パケットに供給されるのに必要な分だけのトークンの量が存在しているか否かを判定している。
【００９１】
条件式ＴＡＴｉ＋Ｌ×Ａ／Ｗｉ−Ｒ×ｔ＜Ｂを満たさない（Ｓ１１５；ＮＯ）場合、即ち、現在トークンバケツに存在するトークンの量では、パケットに供給されるのに必要な分だけのトークンの量が存在しない場合、パケットは廃棄される（Ｓ１１６）。または、いったんパケットを所定のバッファ容量等に溜めておいて、トークンバケツにたまっているトークンの残量がパケットに必要な量以上になったときに、適合と判定するように設定することも可能である。
【００９２】
条件式ＴＡＴｉ＋Ｌ×Ａ／Ｗｉ−Ｒ×ｔ＜Ｂを満たす（Ｓ１１５；ＹＥＳ）場合、即ち、現在トークンバケツに存在するトークンの量で、パケットに供給されるのに必要な分だけのトークンの量が存在している場合、ＴＡＴｉにＴＡＴｉ＋Ｌ×Ａ／Ｗｉで算出された値を代入（Ｓ１１７）し、パケットはキューに送信（Ｓ１１８）される。
【実施例１】
【００９３】
図７は、ポリサーを備えた通信制御装置を用いたネットワークを構成を示した図である。
図７は、ユーザ３０−１〜３０−５、ＬＡＮ２９、ルータ１、伝送路３１、３４からなる。１本の伝送路にユーザは数千人オーダのネットワークもあるが、ここでは、便宜的に５つのユーザとして説明する。また、現在、伝送路は１０Ｇｂｐｓを超えるものが現れているが、こちらも便宜的に伝送路３１は１００Ｍｂｐｓ、伝送路３４は１Ｇｂｐｓとして説明する。
伝送路３４を通して最大１Ｇｂｐｓのレートで受信されたパケットはルータ１に備えられた本発明のポリサーによって伝送路３１の最大レート１００Ｍｂｐｓに調整される。
【００９４】
図７に示すように、ユーザ５人が、最大１００Ｍｂｐｓの伝送路３１を使用すると、最大１００Ｍｂｐｓをユーザ数５人で割った値が、その時にポリサーによって実現される公平な帯域の割当となる。つまり、この場合１人あたり使用する伝送路３１は２０Ｍｂｐｓの帯域の割当てとなる。
【００９５】
さらに、ユーザ数を５人から１人ずつ減らしていくと、最大１００Ｍｂｐｓの伝送路をそれぞれ減っていったユーザ数で割った値が、その時の公平な帯域の割当となる。例えば、ユーザ数が２名であれば、１００Ｍｂｐｓ÷２＝５０Ｍｂｐｓの帯域の割当てとなる。
【００９６】
即ち、ポリサーによる公平な帯域の割当の結果は表１のようになる。ただし、表１の３人使用のように割り切れない場合は、例えば、端数を切り捨てたものを採用する。つまり、３３Ｍｂｐｓ×３ユーザ分となる。または、限りなく均等に割当をおこなう。あるいは、予め割り切れる大きさの仮想的なトークンバケツモデルを用いたものを採用する。つまり、例えば、３４Ｍｂｐｓ×３ユーザ分の仮想的なトークンバケツモデルを１０２Ｍｂｐｓとするものである。
【００９７】
【表１】
2006033002.tif 000003
【００９８】
なお、通信の契約内容や装置の応答速度等によって制限のあるユーザが含まれる場合、あるいは、公平でなくても良い場合、例えば、ユーザ１が１０Ｍｂｐｓの上限、ユーザ２と３が２０Ｍｂｐｓの上限、ユーザ４と５が無制限とした場合は表２のようになる。つまり、制限のあるユーザ１，２と３については、あらかじめ定められた値で一定である。しかし、ユーザ４と５は、ユーザ１から３が使用している分を除いた部分を公平に分けるものである。また、制限によらず、ユーザ毎に任意の値を割当てることもできる。
【００９９】
【表２】
2006033002.tif 000004
【０１００】
ルータ１が伝送路３１に接続されたポート上に持つバッファ容量も、ポリサーの機能によって上述の帯域と同様に各ユーザに公平に割当てが行われる。例えばルータ１の持つバッファ容量を１メガバイトとすると、割当ての結果は表３のようになる。
【０１０１】
【表３】
2006033002.tif 000005
【０１０２】
なお、通信の契約内容や装置種類等によっては制限のあるユーザが含まれる場合、あるいは公平でなくても良い場合、ユーザ毎に任意のバッファ容量を割当てることができる。
【産業上の利用可能性】
【０１０３】
この発明の通信制御方法によって、複雑なスケジューリング方法を行わなくても、本稿で示した単純な方法によって各ユーザのフローを公平に帯域を割り当てることができる。
【０１０４】
また、スケジューリング方法では困難であった、通信中のユーザのみを考慮してパケットのバッファ容量の割当てを行うことができる。例えば、１０００人のユーザを収容している装置でバッファ容量が１メガバイトの容量である時に、ある時点で通信を行っているユーザが１０人しかいない場合、スケジューリング方法では各ユーザあたり１キロバイトの容量のバッファ容量の割当てになる。
しかし、この発明の通信制御方法を用いれば１００キロバイトの容量のバッファ容量の割当てが可能となる。
【０１０５】
また、通信速度が向上した場合や、バッファ容量が増大した場合において、プログラムを修正や追加等することにより本発明は実施可能である。
【０１０６】
さらに、以上の説明においては、通信制御装置であるルータを制御するための制御プログラムが予めＲＯＭ等に記憶されている場合について説明したが、各種磁気ディスク、光ディスク、メモリカード等の記録媒体に制御用のプログラムをあらかじめ記録し、これらの記録媒体から読み込み、インストールするように構成することもできる。
【０１０７】
また、通信インタフェースを設け、インターネット、ＬＡＮ等のネットワークを介して制御用プログラムをダウンロートし、インストールして実行するように構成することもできる。このように構成することにより、ソフトウェア的により高機能としたり、より信頼性の高い通信制御装置を構成することが可能となり、産業上の利用の可能性が高い。
【図面の簡単な説明】
【０１０８】
【図１】図１は、ポリサーを備えた通信制御装置（ルータ）の構造を示した図である。
【図２】図２は、ポリサーの構造を説明をするための図である。
【図３】図３は、フローテーブルの構成例を示す図である。
【図４】図４は、ポリサーのポリシング処理部での動作を示すフローチャート図である。
【図５】図５は、スケジューリング方法を模式的に説明するための図である。
【図６】図６は、トークンバケツモデルを用いたポリシング方法を模式的に説明するための図である。
【図７】図７は、ポリサーを備えたルータを使い、ネットワーク構成を示した図である。
【符号の説明】
【０１０９】
１  ルータ
２−１〜２−ｎ  入出力ポート
３  スイッチファブリック
４  クロスバスイッチ
５  パケット分類機構
６  トラフィック調整機構
７  パケット調整機構
８  ポリサー
９  廃棄処理部（ドロッパー）
１０  接続調停回路
１１  キューマネージャー
１２−１〜１２−ｎ  キュー
１３  スケジューラ
１４  入出力ポート
１５  トラフィック制御機構
１６  バッファ容量
１７  出リンク
１８  ポリシング処理部
１９  フローテーブル
２０  レート格納部
２１  アクティブカウンタ部
２２  バースト格納部
２３  フロー状態格納部
２４  タイマー部
２５−１〜２５−ｎ  情報ソース
２６  トークン
２７  トークンバケツ
２８  パケット
２９  ＬＡＮ
３０−１〜３０−５  ユーザ
３１、３４  伝送路
３２−１〜３２−ｎ  フロー
３３  ネットワークプロセッサ
【図１】
2006033002.tif 000006
【図２】
2006033002.tif 000007
【図３】
2006033002.tif 000008
【図４】
2006033002.tif 000009
【図５】
2006033002.tif 000010
【図６】
2006033002.tif 000011
【図７】
2006033002.tif 000012