説明

通信制御方法、通信制御装置、制御プログラム及び記録媒体

【課題】フローの間で帯域とバッファ容量を公平に割当てることが可能となり、効率的な伝送を行うことができる通信制御方法、その方法を用いた通信制御装置、制御プログラム及び記録媒体を提供する。
【解決手段】 入力データに対して所定の帯域制御を行って伝送を行う通信制御方法であって、入力データを少なくとも1ユーザ毎のフローに分類し、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、トークンバケツモデルを用いた通信制御方法において、余剰帯域及びバッファ容量を公平に配分する通信制御方法、その方法を用いた通信制御装置、制御プログラム及び記録媒体に関する。
【背景技術】
【0002】
近年、通信ネットワークの接続サービスでは、FTTH(Fiber To The Home)の普及によって高速な接続サービスが低コストで提供できるようになってきている。
【0003】
例えば、音声データをデジタル化し、圧縮して、インターネット上またはIPネットワーク上を交換または伝送するVoIP(Voice over IP)や、インターネット電話が実用化されている。VoIPはデータパケットと音声データを1個のネットワーク上で混在して伝送できるので、ネットワークの建設費用、運用費用とも節減できる。さらに、その中でユーザの利用できる帯域を保証する通信サービスが普及してきている。
【0004】
このような通信ネットワークを流れるデータトラフィックは、その使用するアプリケーションに応じたQoS(Quality of Service:サービス品質)制御を行う必要がある。
【0005】
QoS制御により、帯域の調整を通してSLA(Service Level Agreement:サービスレベル契約)を施行する。SLAは、指定されたユーザまたはサービスタイプに対してネットワークが満たさなければならない保証基準を定義したものである。これらの基準には、保証される帯域、パケット損失等が含まれる。
【0006】
保証される帯域としては、使用可能な帯域の最小、平均、及びピーク保証値が指定できる。パケット損失は、送信後受信されていないパケットや、受信でエラーが発生したパケットの数または割合を示す。
【0007】
このQoS制御を行うための技術方法としては、各フロー毎に異なるキューを構成し、各キューから送信されるパケットをスケジューラによって1回に1個づつ取り出し、スケジューリングするスケジューリング方法がある。
【0008】
また、ネットワーク内の各通信制御装置(以下、ルータという)で、フローをユーザ毎、サービスタイプ毎のフローに分類して、各フローに対してそれぞれ帯域とバッファ容量を割り当て、フローの最大流量を制限するポリシング方法なども用いられている。
【0009】
図5は、スケジューリング方法の1態様を示す図である。
図5は、複数の情報ソース25−1〜25−n、キュー12−1〜12−n、フロー32−1〜32−n、1つの出リンク17を備えたスケジューラ13からなっている。
【0010】
図5に示すように、スケジューリング方法とは、複数個の情報ソース25−1〜25−nからパケットが送信され、それぞれ、フロー32−1〜32−nを通じて、キュー12−1〜12−nに入る。スケジューラ13は1回に1個のパケットしかキュー12−1〜12−nから取り出すことができない。
【0011】
フローが複数本の場合、スケジューラ13はパケットを複数本のキューに待たせて、所定の方法に従ってキューから1個ずつ順に、パケットを取り出して出リンクに送出する必要がある。この送出順序を選択する方法はスケジューリング方法と言われる。
【0012】
代表的なスケジューリング方法としては、パケットを到着順に出リンクに送出するFIFO(First In First Out)スケジューリング、可変長のパケットを扱う不足ラウンドロビンスケジューリング、フローの扱いの公平性を狙った重み付けフェアスケジューリング等がある。
【0013】
また、アプリケーションがフローごとのプライオリティ(優先度)を定め、そのフローのすべてのパケットにフローのプライオリティを追加し、プライオリティで定まる優先度に従ってパケットを処理するプライオリティスケジューリングもある。
【0014】
一方、1台のルータに収容されるユーザ数はコスト削減などの理由により増加傾向であり、数千から数万のユーザを収容することも珍しくない。また、回線速度も近年急速に高速化している。
【0015】
しかしながら、このような高速回線上で多数のユーザに対して個別にキューを構成し、パケットのスケジューリングを行うことは、ルータの処理能力的に困難である。また、専用のハードウェアで実現するとしても、設計回路が複雑になりコストが多大にかかる。
【0016】
また、スケジューリング方法ではパケットのバッファ容量の利用効率が非効率になる問題もある。仮にルータの持つバッファ容量が1メガバイトの容量であるとする。1000人のユーザに対して個別にキューを作り、各キューの最大キュー長を設定すると、1メガバイト÷1000ユーザ=1キロバイトのバッファ容量の割当となる。
【0017】
しかし、サービスを契約しているユーザが1000人いるとしても、ある時間に実際にフローを流しているユーザの数はそれほど多くないと考えられる。例えば、サービスを契約しているユーザが400人であれば、600人のユーザは実際にフローを流していないことになる。
【0018】
そのため、上述のように最大キュー長を設定すると実際にはバッファ容量はほとんど使われていないにも関わらず、パケットの廃棄や遅延が発生することになり、バッファ容量の利用効率が非常に悪くなる。
【0019】
さらに、特許文献2に開示されているように、複数のスケジューリング方法の中で1つのスケジューリング方法を使用し、バッファ容量を効率的に割当てることは難しく、実装することも極めて複雑となる。
【0020】
一方、スケジューリング方法の代わりに、各フロー毎に帯域とバースト量を制限することができる通信制御方法、例えばポリシング方法等も提供される。
【0021】
ポリシング方法では、各フロー毎に帯域と許容バースト量の検定が行われる。即ち、ポリシング方法は、ポリサーと呼ばれる流量計を用いて、フローを常に測定している。帯域と許容バースト量の検定が行われた結果、不適合と判定された場合、即ち、ポリサーに設定した帯域の値をフローが超えた場合や、ポリサーに設定した許容バースト量をフローが超えた場合、パケットは廃棄または遅延される。
【0022】
そして、帯域と許容バースト量の検定が行われた結果、適合と判定された場合、即ち、ポリサーに設定した帯域の値をフローが超えず、かつ、ポリサーに設定した許容バースト量をフローが超えない場合、パケットは次段の処理に入る方法である。
【0023】
ポリシング方法の1つの方法として、トークンバケツモデルを用いたポリシング方法がある。
【0024】
図6はトークンバケツモデルを用いたポリシング方法を模式的に説明する図である。
図6は、トークン26、トークンバケツ27、パケット28、ポリサー8、キュー12からなっている。
【0025】
図6で示すように、トークンバケツモデルを用いたポリシング方法は、トークン26と呼ばれるトラフィック送信権を表す仮想的な流量を用いる。そして、このトラフィックの流量を制限したいフローには、このトークン26をためておくための仮想的なトークンバケツ27が用意される。このトークンバケツ27にはフローの制限流量に等しい一定のレート、即ち、トークンバケツ27にトークン26が供給される速さで、トークン26が補充されている。
【0026】
パケット28がポリサー8に到着すると、ポリサー8はこのパケットのデータ量に比例したトークン26をトークンバケツ27から取り出す。例えば、パケット28がポリサー8に到着し、そのパケット28が64バイト分のトークン26を必要とする場合、トークンバケツ27からトークン26を64バイト分取り出す。
【0027】
パケット28は必要な量のトークン26を取り出すことで、トラフィック送信権を得て、パケット28は送信され、いったんキュー12に格納する。パケット28に必要な量のトークン26がトークンバケツ27から供給されない場合は、このパケット28は廃棄や遅延等の処理が行われる。そうすることで、フローの流量制限が実現される。
【0028】
しかしながら、上述したポリサーは、特許文献1が開示するように、複数のフローに対して、フロー毎に帯域制限を行うものである。この場合には、パケットが送信されないフローが存在すると、余剰帯域は他のフローが使用できず、また、バッファ容量の効率的な割当てもできない。さらに、余剰帯域を各フローに公平に配分することは実装する上でも極めて困難である。
【特許文献1】特開平6−178373号公報
【特許文献2】特表2001−519120号公報
【発明の開示】
【発明が解決しようとする課題】
【0029】
しかしながら、上述のトークンバケツモデルを用いたポリシング方法は、各フローを検定し、廃棄や遅延等をする機能だけを有しており、帯域とバッファ容量を公平に割り当てることができないという問題点があった。
【0030】
本発明は、上述の問題点に鑑みなされたものであり、各フローに対して、帯域制限を行うとともに、各フローに対して公平に帯域およびバッファ容量を配分することができる通信制御方法、その方法を用いた通信制御装置、制御プログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【0031】
この発明の通信制御方法の第1の態様は、入力データに対して所定の帯域制御を行って伝送を行う通信制御方法であって、入力データを少なくとも1ユーザ毎のフローに分類するステップと、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てるステップとを備えた通信制御方法である。
【0032】
この発明の通信制御方法の第2の態様は、フローが所定の重みを有し、帯域割当てが、実際に通信を行っているフローに対し、すべてのフローの重みの合計に対する各フロー毎の重みの割合に基づいて帯域割当てをする通信制御方法である。
【0033】
この発明の通信制御方法の第3の態様は、パケットデータ長をLとし、現在通信を行っているフロー全体の重みの合計値をAとし、当該フロー番号iの重みWとした場合に、フロー番号iの次パケットが到着する時間の理論的な予想値であるTAT値であるTATをTAT=TAT+L×A/Wにより算出する通信制御方法である。
【0034】
この発明の通信制御方法の第4の態様は、少なくとも1ユーザ毎に、実際に伝送すべきフローに割当てる際、少なくとも1ユーザの送信するデータの伝送速度を可変することを特徴とする通信制御方法である。
【0035】
この発明の通信制御方法の第5の態様は、少なくとも1ユーザ毎に、割当てるパケット容量を可変することを特徴とする通信制御方法である。
【0036】
この発明の通信制御装置の第1の態様は、入力データに対して所定の帯域制御を行って伝送を行う通信制御装置であって、入力データを少なくとも1ユーザ毎のフローに分類するパケット分類機構と、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てるポリシング処理部とを備えた通信制御装置である。
【0037】
この発明の通信制御装置の第2の態様は、フローが所定の重みを有し、ポリシング処理部が、実際に通信を行っているフローに対し、すべてのフローの重みの合計に対する各フローの重みの割合に基づいて帯域割当てを行う通信制御装置である。
【0038】
この発明の通信制御装置の第3の態様は、パケットデータ長をLとし、現在通信を行っているフロー全体の重みの合計値をAとし、当該フロー番号iの重みWとした場合に、フロー番号iの次パケットが到着する時間の理論的な予想値であるTAT値であるTATをTAT=TAT+L×A/Wにより算出する通信制御装置である。
【0039】
この発明の通信制御装置の第4の態様は、少なくとも1ユーザ毎に、実際に伝送すべきフローに割当てる際、少なくとも1ユーザの送信するデータの伝送速度を可変することを特徴とする通信制御装置である。
【0040】
この発明の通信制御装置の第5の態様は、少なくとも1ユーザ毎に、割当てるパケット容量を可変することを特徴とする通信制御装置である。
【0041】
この発明の制御プログラムの第1の態様は、入力データに対して所定の帯域制御を行って伝送を行う通信制御装置をコンピュータにより制御するための制御プログラムであって、入力データを少なくとも1ユーザ毎にフローに分類させ、同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべきフローに割当てさせる制御プログラムである。
【0042】
この発明の制御プログラムの第2の態様は、フローに所定の重みが割当てられており、フローに帯域を割当てさせるに際し、実際に通信を行っているフローに対し、すべてのフローの重みの合計に対する各フローの重みの割合に基づいて帯域割当てを行わせる制御プログラムである。
【0043】
この発明の制御プログラムの第3の態様は、パケットデータ長をLとし、現在通信を行っているフロー全体の重みの合計値をAとし、当該フロー番号iの重みWとした場合に、フロー番号iの次パケットが到着する時間の理論的な予想値であるTAT値であるTATをTAT=TAT+L×A/Wにより算出する制御プログラムである。
【0044】
この発明の制御プログラムの第4の態様は、少なくとも1ユーザ毎に、実際に伝送すべきフローに割当てる際、少なくとも1ユーザの送信するデータの伝送速度を可変することを特徴とする制御プログラムである。
【0045】
この発明の制御プログラムの第5の態様は、少なくとも1ユーザ毎に、割当てるパケット容量を可変することを特徴とする制御プログラムである。
【0046】
この発明の記録媒体の第1の態様は、上述の制御プログラムを記録するコンピュータ読取可能な記録媒体である。
【発明の効果】
【0047】
この発明の通信制御方法によって、複雑なスケジューリング方法を行わなくても、この発明で示した単純な通信制御方法によって各ユーザのフローに公平に帯域とバッファ容量を割り当てることができる。
【0048】
また、スケジューリング方法では困難であった、通信中のユーザのみを考慮してパケットのバッファ容量割当てを行うことができる。例えば、1000人のユーザを収容している装置でバッファ容量が1メガバイトの容量である時に、ある時点で通信を行っているユーザが10人しかいない場合、スケジューリングによる方法では各ユーザあたり1キロバイトの容量のバッファ容量を割当てることになる。
【0049】
しかし、この発明の通信制御方法を用いれば、ある時点で通信を行っているユーザが10人しかいない場合には、100キロバイトの容量のバッファ容量の割当てが可能になる。
【発明を実施するための最良の形態】
【0050】
以下に、本発明の実施形態を、図面を参照しながら詳細に説明する。
【0051】
図1は、ポリサーを備えた通信制御装置の構造を示す図である。
図1に示すように、ルータ1は入出力ポート2−1〜2−n、スイッチファブリック3、ネットワークプロセッサ33を備えている。そして、ネットワークプロセッサ33はトラフィック調整機構6、トラフィック制御機構15を備えている。
【0052】
なお、ルータ1は当該ルータ1全体を制御するための図示しないCPUと、通信制御を行うための制御プログラムあるいは制御データを格納する図示しないROM、RAM等を備えて構成されており、以下における各種制御は、ROM内の制御プログラムに基づいてCPUが行っている。
【0053】
スイッチファブリック3は各入力ポートで受信したパケットを適切な宛先ポートにスイッチングする機構である。
【0054】
トラフィック調整機構6は各ユーザ毎、サービスタイプ毎にパケットを分類するパケット分類機構5とパケット分類機構5から送出されたパケットを廃棄や遅延を行うパケット調整機構7を備える。パケット分類機構5には、例えばクラシファイア等があり、CAM(Contents Addressable Memory:内容参照可能メモリ)等を用いている。
【0055】
即ち、トラフィック調整機構6は、到着するパケットが契約したフロー特性に適合しているか否かをチェックして、あらかじめ指定された所定の処理を施す。指定された所定の処理には、パケットに廃棄を与える処理やパケットに遅延を与える処理等がある。
【0056】
パケット調整機構7はパケット分類機構5から送出されたパケットを廃棄処理や遅延処理を行ってもよいか否かを判定するポリサー8およびポリサー8で廃棄されると判定されたパケットを廃棄処理する廃棄処理部(ドロッパー)9を備えている。
【0057】
トラフィック制御機構15は、キュー12にパケットを送出するキューマネージャ11、送出されたパケットを収容するキュー12、出リンク17に出力するパケットを選択するスケジューラ13を備えている。トラフィック制御機構15の中のキュー12を囲む矩形の点線はバッファ容量16を表している。即ち、キューマネージャ11とスケジューラ13はそれぞれのキュー12の出入口で、キュー12に出入するパケットを制御する機構である。
【0058】
即ち、トラフィック制御機構15は、各フローの出力レートや遅延時間等の要求を満足させるように、出リンク17に送出するパケットの取捨選択、及び送出順序を制御する。
【0059】
まず、パケットが入力されると、スイッチ機能を有するスイッチファブリック3は各入力ポートから入力されたパケットの、例えばIPヘッダ部にある宛先IPアドレス情報を参照して、所定の宛先ポートにスイッチングする処理を行う。スイッチング処理が行われたパケットは、パケット分類機構5に送出される。
【0060】
次に、スイッチングされたパケットはパケット分類機構5により各ユーザ毎、サービスタイプ毎の個別のフローに分類される。パケット分類機構5は、例えばパケットのIPヘッダ部にある送受信IPアドレス、TCP/UDPヘッダ部にある送受信ポートを参照して、分類を行う。この時、パケットのヘッダ部にフロー番号を示す内部ヘッダが追加され、次段のポリサーに出力されている。
【0061】
さらに、ポリサー8によって、各フロー毎に帯域と許容バースト量の検定が行われる。即ち、ポリサー8と呼ばれる流量計を用いて、フローを常に測定している。そして、検定した結果、フローが不適合であると判定された場合、即ち、ポリサー8に設定した帯域の値をフローが超えた場合や、ポリサ−8に設定した許容バースト量を超えた場合、不適合時の処理が行われる。例えばパケットは廃棄され、廃棄処理部9へ転送される。
【0062】
検定した結果、フローが適合であると判定された場合、即ち、ポリサーに設定した帯域の値をフローが超えず、かつ、ポリサーに設定した許容バースト量を超えない場合、パケットはトラフィック制御機構15へ転送される。
【0063】
キューマネージャ11は、キュー12に収容するパケットを選択する。キュー12では、前の段階のポリサーの許容バースト分のパケットが留められ、出力ポート速度に遅らせる。そして、スケジューラ13はパケットを1本または複数のキューに待たせて、所定の方法に従ってキューから1個ずつ順に、パケットを取り出す。所定の方法に従って1つに選択されたパケットは、スケジューラ13によって出リンク17に出力され、送信される。
【0064】
図2は、ポリサーの構造を模式的に説明をするための図である。
【0065】
図2に示すように、ポリサー8は、ポリシング処理部18、フローテーブル19、レート格納部20、アクティブカウンタ部21、バースト格納部22、フロー状態格納部23、タイマー部24を備えている。
【0066】
レート格納部20は、各フローでのレートを合計したレートの合計値R(bps)が格納されている。レートとは、トークンバケツにトークンが供給される速さを表している。例えば、出力ポートのレートの値と等しくしてもよい。バースト格納部22は、ポリシングの許容バースト値Bを格納している。許容バースト値は、連続して送信されるパケット列の長さを制限する値を示している。例えば、許容バースト値は出力ポートに割り当てられているパケットのバッファ容量と等しくしてもよい。
【0067】
フロー状態格納部23は、各フローの状態をActive状態からInactive状態にするためのチェック間隔Tの値を格納している。タイマー部24は、現在の時刻tを格納している。アクティブカウンタ部21は、現在通信を行っている、即ち、Active状態である各フローの重みの値を合計した重みの合計値Aを格納している。
【0068】
図3は、フローテーブルの構成例を示す図である。
図3で示すように、フローテーブルはフロー番号i(iは自然数)、重みW、TAT値(Theoretical Arrival Time)、通信状態を管理するフラグFを備えたテーブルとなっている。各添字で示されたiは、それぞれのフロー番号での重み、TAT値、フラグを示している。フローテーブルの重みWは各フローでの帯域の割合を表している。例えば、各フロー番号1、2、3での帯域が2Mbps、1Mbps、4Mbpsの設定要求があった場合、各フロー1、2、3にそれぞれ2:1:4の重みを持たせることになる。
【0069】
フローテーブルのTAT値はフロー番号iでの次のパケットが到着する時間の理論的な予想値を示している。フローテーブルのフラグFに登録されているActiveとは、通信が行われている状態を示しており、また、Inactiveとは、通信が行われていない状態を示している。
【0070】
続いて、余剰帯域を公平に配分するポリシング方法について詳細に説明する。
【0071】
図4は、図2で示されたポリサーのポリシング処理部の動作を示すフローチャートである。
図4のフローチャートは、一般的なトークンバケツアルゴリズムを基本としているが、一般的なトークンバケツアルゴリズムと根本的に異なる点は、現在Active状態にあるすべてのフローのそれぞれの重みWの和Aをアクティブカウンタ部21に記憶しておき、Active状態にあるフローの重みWの割合に基づいて帯域の割り当てを行うように構成されている点である。
【0072】
具体的には、フローテーブル19に記憶されているTATにパケット長を加える際に、パケット長をLとすると、L1=L×A/Wで表される補正パケット長L1を加えている。これは、換言すれば、同一のパケット長であっても、現在Active状態にあるすべてのフローの中でより重みの高いフローのパケットに対してより大きな帯域を割り当てていることになる。
【0073】
詳細に説明すると、各フローのポリシングレートがトータルレートRのW/A倍となり、重みに応じて公平に帯域割当て行われることになる。また、各フローに許容されるバースト値もトータルの許容バースト値BのW/Aとなり、重みに応じて公平にバッファの容量を割り当てることが可能となる。
【0074】
まず、ポリシング方法は現在の時刻tと、前回各フローのActive状態をチェックした時刻t´とを差分する。そして、その差分値がフロー状態格納部に登録されているチェック間隔Tより大きいか否かを判定する(S101)。
【0075】
この時、現在の時刻tと前回各フローのActive状態をチェックした時刻t´との差分値が、フロー状態格納部に登録されているチェック間隔Tの値より大きい(S101;YES)と、フロー番号iに1を代入する(S102)。この代入処理は、すべてのフロー番号iに対して1から処理を始めることを意味する。
【0076】
次に、条件式TAT<R×tを満たしているか判定する(S103)。即ち、トークンバケツがトークンで満たされているか判定する。ここで、Rはトークンと呼ばれるトラフィック送信権がトークンバケツに供給されるレート(速さ)を表している。
【0077】
条件式TAT<R×tが満たされている、即ち、トークンバケツがトークンで満たされている(S103;YES)場合は、TATにR×tで算出された値を代入する(S104)。この代入処理の目的は、現在時刻tを保持しているメモリのビット幅が有限であり、十分長い時間が過ぎればラップしてtの値が0に戻ってしまうことに対処するものである。即ち、その目的はTATと現在時刻tとの差を一定以内に保つことで以下の計算を正しく行えるようにするためのものである。
【0078】
なお、条件式TAT<R×tが満たされていない場合、即ち、トークンバケツがトークンで満たされていない(S103;NO)場合は、TATにR×tで算出された値を代入する処理(S104)は行わず、次の処理はS107へ転送される。
【0079】
次に、通信状態を管理する所定のフロー番号iでのフラグFの状態がActive状態であるか否かを判定する(S105)。所定のフロー番号iでのフラグの状態がActive状態である(S105;YES)場合、フラグFをInactive状態とし、アクティブカウンタ値をフローiの重みWだけ減少させる(S106)。これにより、フローiが使っていない帯域を他のActive状態であるフローが使えるようになる。
【0080】
なお、所定のフロー番号iでのフラグFの状態がActive状態でない(S105;NO)場合、通信状態を管理するフラグFをInactive状態とし、アクティブカウンタ値をフローiの重みWだけ減少させる処理(S106)は行わず、次の処理はS107へ転送される。
【0081】
次に、現在のフロー番号iに1を足すことで、次のフロー番号iの処理へ移る(S107)。例えば、S101からS106の処理でフロー番号iが3であるならば、S107でフロー番号iは4になる。
【0082】
さらに、条件式(フロー番号i)≦(最後のフロー番号i)であるか判定する(S108)。最後のフロー番号とは、パケット分類機構でユーザ毎、サービスタイプ毎に分類されたパケットのヘッダ部に追加された番号のうち、最大の番号が最後のフロー番号を表す。この条件式は、S107でフロー番号iに1を足した結果の値が、最後のフロー番号以下である(S108;YES)場合、S103に戻り、次のフロー番号の処理を行う。
【0083】
S107でフロー番号iに1を足した結果の値が、最後のフロー番号を超える(S108;NO)場合、前回Active状態をチェックした時刻t´を現在の時刻tに更新して(S109)、次にActive状態をチェックする時間間隔を測り始める。
【0084】
なお、S101でt−t´>Tでない(S101;NO)場合、即ち、現在の時刻tと、前回各フローのActive状態をチェックした時刻t´との差分値がフロー状態格納部に登録されているチェック間隔Tと等しくない場合は、S110に進む。
【0085】
続いて、パケットがポリサーに到着したか否かを判定する(S110)。パケットがポリサーに到着している(S110;YES)場合、さらに、通信状態を管理するフラグFがInactive状態であるか否かを判定する(S111)。
【0086】
ここで、パケットがポリサーに到着していない(S110;NO)場合には、S101に戻って、現在の時刻tと、前回各フローのActive状態をチェックした時刻t´とを差分する。そして、その差分値がフロー状態格納部に登録されているチェック間隔Tの値と等しいか否かを判定する。
【0087】
通信状態を管理するフラグFがInactive状態である場合(S111;YES)、アクティブカウンタにフローiの重みWを加えて、通信状態を管理するフラグFをActive状態にする(S112)。
【0088】
さらに、条件式TAT<R×tを満たすか否か、即ち、トークンバケツの中がトークンで満たされているか否かを判定する(S113)。条件式TAT<R×tを満たす(S113;YES)場合、即ち、トークンバケツがトークンで満たされている場合、TATにR×t+L×A/Wで算出された値を代入(S114)して、送信処理(S118)に進む。
【0089】
ここで、Lはパケット長を示しており、Aは各フロー番号での重みWを合計した合計値を示している。即ち、L×A/Wで算出された値はパケット長Lをアクティブカウンタの値と重みWの比率だけ倍にした値を示している。
【0090】
条件式TAT<R×tを満たさない、即ち、トークンバケツがトークンで満たされていない(S113;NO)場合、さらに、条件式TAT+L×A/W−R×t<Bを満たすか否かを判定する(S115)。ここで、Bはバースト許容値を表す。この条件式は、現在トークンバケツに存在するトークンの量で、パケットに供給されるのに必要な分だけのトークンの量が存在しているか否かを判定している。
【0091】
条件式TAT+L×A/W−R×t<Bを満たさない(S115;NO)場合、即ち、現在トークンバケツに存在するトークンの量では、パケットに供給されるのに必要な分だけのトークンの量が存在しない場合、パケットは廃棄される(S116)。または、いったんパケットを所定のバッファ容量等に溜めておいて、トークンバケツにたまっているトークンの残量がパケットに必要な量以上になったときに、適合と判定するように設定することも可能である。
【0092】
条件式TAT+L×A/W−R×t<Bを満たす(S115;YES)場合、即ち、現在トークンバケツに存在するトークンの量で、パケットに供給されるのに必要な分だけのトークンの量が存在している場合、TATにTAT+L×A/Wで算出された値を代入(S117)し、パケットはキューに送信(S118)される。
【実施例1】
【0093】
図7は、ポリサーを備えた通信制御装置を用いたネットワークを構成を示した図である。
図7は、ユーザ30−1〜30−5、LAN29、ルータ1、伝送路31、34からなる。1本の伝送路にユーザは数千人オーダのネットワークもあるが、ここでは、便宜的に5つのユーザとして説明する。また、現在、伝送路は10Gbpsを超えるものが現れているが、こちらも便宜的に伝送路31は100Mbps、伝送路34は1Gbpsとして説明する。
伝送路34を通して最大1Gbpsのレートで受信されたパケットはルータ1に備えられた本発明のポリサーによって伝送路31の最大レート100Mbpsに調整される。
【0094】
図7に示すように、ユーザ5人が、最大100Mbpsの伝送路31を使用すると、最大100Mbpsをユーザ数5人で割った値が、その時にポリサーによって実現される公平な帯域の割当となる。つまり、この場合1人あたり使用する伝送路31は20Mbpsの帯域の割当てとなる。
【0095】
さらに、ユーザ数を5人から1人ずつ減らしていくと、最大100Mbpsの伝送路をそれぞれ減っていったユーザ数で割った値が、その時の公平な帯域の割当となる。例えば、ユーザ数が2名であれば、100Mbps÷2=50Mbpsの帯域の割当てとなる。
【0096】
即ち、ポリサーによる公平な帯域の割当の結果は表1のようになる。ただし、表1の3人使用のように割り切れない場合は、例えば、端数を切り捨てたものを採用する。つまり、33Mbps×3ユーザ分となる。または、限りなく均等に割当をおこなう。あるいは、予め割り切れる大きさの仮想的なトークンバケツモデルを用いたものを採用する。つまり、例えば、34Mbps×3ユーザ分の仮想的なトークンバケツモデルを102Mbpsとするものである。
【0097】
【表1】

【0098】
なお、通信の契約内容や装置の応答速度等によって制限のあるユーザが含まれる場合、あるいは、公平でなくても良い場合、例えば、ユーザ1が10Mbpsの上限、ユーザ2と3が20Mbpsの上限、ユーザ4と5が無制限とした場合は表2のようになる。つまり、制限のあるユーザ1,2と3については、あらかじめ定められた値で一定である。しかし、ユーザ4と5は、ユーザ1から3が使用している分を除いた部分を公平に分けるものである。また、制限によらず、ユーザ毎に任意の値を割当てることもできる。
【0099】
【表2】

【0100】
ルータ1が伝送路31に接続されたポート上に持つバッファ容量も、ポリサーの機能によって上述の帯域と同様に各ユーザに公平に割当てが行われる。例えばルータ1の持つバッファ容量を1メガバイトとすると、割当ての結果は表3のようになる。
【0101】
【表3】

【0102】
なお、通信の契約内容や装置種類等によっては制限のあるユーザが含まれる場合、あるいは公平でなくても良い場合、ユーザ毎に任意のバッファ容量を割当てることができる。
【産業上の利用可能性】
【0103】
この発明の通信制御方法によって、複雑なスケジューリング方法を行わなくても、本稿で示した単純な方法によって各ユーザのフローを公平に帯域を割り当てることができる。
【0104】
また、スケジューリング方法では困難であった、通信中のユーザのみを考慮してパケットのバッファ容量の割当てを行うことができる。例えば、1000人のユーザを収容している装置でバッファ容量が1メガバイトの容量である時に、ある時点で通信を行っているユーザが10人しかいない場合、スケジューリング方法では各ユーザあたり1キロバイトの容量のバッファ容量の割当てになる。
しかし、この発明の通信制御方法を用いれば100キロバイトの容量のバッファ容量の割当てが可能となる。
【0105】
また、通信速度が向上した場合や、バッファ容量が増大した場合において、プログラムを修正や追加等することにより本発明は実施可能である。
【0106】
さらに、以上の説明においては、通信制御装置であるルータを制御するための制御プログラムが予めROM等に記憶されている場合について説明したが、各種磁気ディスク、光ディスク、メモリカード等の記録媒体に制御用のプログラムをあらかじめ記録し、これらの記録媒体から読み込み、インストールするように構成することもできる。
【0107】
また、通信インタフェースを設け、インターネット、LAN等のネットワークを介して制御用プログラムをダウンロートし、インストールして実行するように構成することもできる。このように構成することにより、ソフトウェア的により高機能としたり、より信頼性の高い通信制御装置を構成することが可能となり、産業上の利用の可能性が高い。
【図面の簡単な説明】
【0108】
【図1】図1は、ポリサーを備えた通信制御装置(ルータ)の構造を示した図である。
【図2】図2は、ポリサーの構造を説明をするための図である。
【図3】図3は、フローテーブルの構成例を示す図である。
【図4】図4は、ポリサーのポリシング処理部での動作を示すフローチャート図である。
【図5】図5は、スケジューリング方法を模式的に説明するための図である。
【図6】図6は、トークンバケツモデルを用いたポリシング方法を模式的に説明するための図である。
【図7】図7は、ポリサーを備えたルータを使い、ネットワーク構成を示した図である。
【符号の説明】
【0109】
1 ルータ
2−1〜2−n 入出力ポート
3 スイッチファブリック
4 クロスバスイッチ
5 パケット分類機構
6 トラフィック調整機構
7 パケット調整機構
8 ポリサー
9 廃棄処理部(ドロッパー)
10 接続調停回路
11 キューマネージャー
12−1〜12−n キュー
13 スケジューラ
14 入出力ポート
15 トラフィック制御機構
16 バッファ容量
17 出リンク
18 ポリシング処理部
19 フローテーブル
20 レート格納部
21 アクティブカウンタ部
22 バースト格納部
23 フロー状態格納部
24 タイマー部
25−1〜25−n 情報ソース
26 トークン
27 トークンバケツ
28 パケット
29 LAN
30−1〜30−5 ユーザ
31、34 伝送路
32−1〜32−n フロー
33 ネットワークプロセッサ











【特許請求の範囲】
【請求項1】
入力データに対して所定の帯域制御を行って伝送を行う通信制御方法であって、前記入力データを少なくとも1ユーザ毎のフローに分類するステップと、
同時並行して伝送可能な複数の前記フローに対して前記伝送のために割当てられている全帯域を、実際に伝送すべき前記フローに割当てるステップとを備えたことを特徴とする通信制御方法。
【請求項2】
前記フローは所定の重みを有し、
前記帯域割当ては、実際に通信を行っている前記フローに対し、すべてのフローの前記重みの合計に対する各フロー毎の前記重みの割合に基づいて帯域割当てをすることを特徴とする、請求項1に記載の通信制御方法。
【請求項3】
パケットデータ長をLとし、
現在通信を行っているフロー全体の重みの合計値をAとし、
当該フロー番号iの重みをWとした場合に、
当該フロー番号iの次パケットが到着する時間の理論的な予想値であるTAT値であるTATをTAT=TAT+L×A/Wにより算出することを特徴とする、請求項2に記載の通信制御方法。
【請求項4】
前記少なくとも1ユーザ毎に、実際に伝送すべき前記フローに割当てる際、前記少なくとも1ユーザの送信するデータの伝送速度を可変することを特徴とする、請求項1から請求項3のいずれか1項に記載の通信制御方法。
【請求項5】
前記少なくとも1ユーザ毎に、割当てるパケット容量を可変することを特徴とする、請求項1から請求項4のいずれか1項に記載の通信制御方法。
【請求項6】
入力データに対して所定の帯域制御を行って伝送を行う通信制御装置であって、
前記入力データを少なくとも1ユーザ毎のフローに分類するパケット分類機構と、
同時並行して伝送可能な複数のフローに対して伝送のために割当てられている全帯域を、実際に伝送すべき前記フローに割当てるポリシング処理部とを備えたことを特徴とする通信制御装置。
【請求項7】
前記フローは所定の重みを有し、
前記ポリシング処理部は、実際に通信を行っている前記フローに対し、すべてのフローの前記重みの合計に対する各フローの前記重みの割合に基づいて帯域割当てを行うことを特徴とする、請求項6に記載の通信制御装置。
【請求項8】
パケットデータ長をLとし、
現在通信を行っているフロー全体の重みの合計値をAとし、
当該フロー番号iの重みをWとした場合に、
当該フロー番号iの次パケットが到着する時間の理論的な予想値であるTAT値であるTATをTAT=TAT+L×A/Wにより算出することを特徴とする、請求項7に記載の通信制御装置。
【請求項9】
前記少なくとも1ユーザ毎に、実際に伝送すべき前記フローに割当てる際、前記少なくとも1ユーザの送信するデータの伝送速度を可変することを特徴とする、請求項6から請求項8のいずれか1項に記載の通信制御装置。
【請求項10】
前記少なくとも1ユーザ毎に、割当てるパケット容量を可変することを特徴とする、請求項6から請求項9のいずれか1項に記載の通信制御装置。
【請求項11】
入力データに対して所定の帯域制御を行って伝送を行う通信制御装置をコンピュータにより制御するための制御プログラムであって、
前記入力データを少なくとも1ユーザ毎のフローに分類させ、
同時並行して伝送可能な複数の前記フローに対して前記伝送のために割当てられている全帯域を、実際に伝送すべき前記フローに割当てさせることを特徴とする制御プログラム。
【請求項12】
前記フローは、所定の重みが割り当てられており、
前記フローに前記帯域を割当てさせるに際し、実際に通信を行っている前記フローに対し、すべてのフローの前記重みの合計に対する各フローの重みの割合に基づいて帯域割当てを行わせることを特徴とする、請求項11に記載の制御プログラム。
【請求項13】
パケットデータ長をLとし、
現在通信を行っているフロー全体の重みの合計値をAとし、
当該フロー番号iの重みをWとした場合に、
当該フロー番号iの次パケットが到着する時間の理論的な予想値であるTAT値であるTATをTAT=TAT+L×A/Wにより算出することを特徴とする、請求項12に記載の制御プログラム。
【請求項14】
前記少なくとも1ユーザ毎に、実際に伝送すべき前記フローに割当てる際、前記少なくとも1ユーザの送信するデータの伝送速度を可変することを特徴とする、請求項11から請求項13のいずれか1項に記載の制御プログラム。
【請求項15】
前記少なくとも1ユーザ毎に、割当てるパケット容量を可変することを特徴とする、請求項11から請求項14のいずれか1項に記載の制御プログラム。
【請求項16】
請求項11から請求項15のいずれか1項に記載の制御プログラムを記録したことを特徴とするコンピュータ読取可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−33002(P2006−33002A)
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【出願番号】特願2004−204129(P2004−204129)
【出願日】平成16年7月12日(2004.7.12)
【出願人】(000005290)古河電気工業株式会社 (4,457)
【復代理人】
【識別番号】100092989
【弁理士】
【氏名又は名称】片伯部 敏
【Fターム(参考)】