(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、図面を参照しながら、本発明を実施するための形態(実施形態)について説明する。本発明は、以下に説明する実施形態に限定されない。
【0011】
[概要]
図1を用いて、本実施形態の通信制御装置の概要を説明する。なお、以下に説明する通信制御装置は、ベストエフォートの通信回線の通信帯域、例えば、当該通信回線を流れるフローの帯域制御を行う。この通信制御装置は、例えば、スイッチやルータ等により実現される。
【0012】
通信制御装置は、例えば、所定の監視周期(T)で、ベストエフォートの通信回線に入力される各ユーザのフローの通信量を監視する。そして、通信制御装置は、監視周期(T)における各ユーザのフローの通信量の合計が、通信回線の出回線の回線容量を超える場合、通信量の多い上位ユーザのフローの通信帯域を制限する。例えば、通信制御装置は、通信量の多い上位ユーザのフローについて、当該ユーザのフローの通信量の多さに応じて、通信帯域を制限する。
【0013】
例えば、
図1に示すように、通信回線の回線容量が20M(bps)であり、最初の監視周期における各ユーザのフローの通信量(通信帯域)が、ユーザAのフロー:20M(bps)、ユーザBのフロー:12M(bps)、ユーザCのフロー:2M(bps)であった場合を考える。この場合、各ユーザのフローの通信量の合計(34M(bps))は回線容量(20M(bps))を超えるので、通信制御装置は、例えば、通信量が上位2位までのフロー(ユーザA,Bのフロー)に対し通信帯域の制限を行う。例えば、通信制御装置は、帯域の超過分の14M(bps)をユーザA,Bのフローの通信量の多さに応じて按分することにより、ユーザA,Bのフローの通信帯域を制限する。
【0014】
具体的には、通信制御装置は、ユーザAのフローの通信帯域を20M(bps)-8.75M(bps)=11.25M(bps)に制限し、ユーザBのフローの通信帯域を12M(bps)-1.25M(bps)=6.75M(bps)に制限する。一方、通信制御装置は、ユーザCのフロー(2M(bps))については、通信帯域の制限は行わない。
【0015】
このようにすることで、通信制御装置は、ベストエフォートの通信回線の通信帯域を各ユーザのフロー間で公平になるよう制御する際に、通信量の少ないユーザのフローに対する通信帯域の制限をできるだけ避け、かつ、通信回線の利用効率の低下を防止することができる。
【0016】
[構成]
次に、
図2を用いて、通信制御装置10の構成を説明する。通信制御装置10は、振分部11と、カウンタ12と、統計情報管理部(監視部)13と、監視タイマー14と、ポリサー15と、公平制御部16と、シェーパ17とを備える。
【0017】
振分部11は、複数の入回線から同じ出回線へのパケットをIPアドレス等によってフロー単位に振り分ける。振り分けられたパケットはポリサー15へ入力される。
【0018】
カウンタ12は、フロー単位で当該フローの通信量(例えば、パケット数やデータ量)を測定する。
【0019】
統計情報管理部13は、所定の監視周期で、フローそれぞれの通信量を監視する。具体的には、統計情報管理部13は、監視タイマー14から監視期間満了が通知されるまで、カウンタ12によりフローそれぞれの通信量を監視し、その結果を統計情報131に記録する。そして、統計情報管理部13は、統計情報131における各フローの通信量を示す情報(
図3の(a)参照)を、流入帯域の多い順に並べ替え、公平制御部16に引き渡す。
【0020】
監視タイマー14は、監視周期となる時間を保持しており、監視期間が満了するたびに統計情報管理部13に監視期間の満了を通知する。
【0021】
統計情報131は、上記の監視周期におけるフローそれぞれの通信量を示した情報である。統計情報131は、例えば、
図3(a)に示すように、フローの登録番号(i)ごとに、当該フローのIPアドレス、上記の監視周期における、当該フローのパケット数、パケット長、データ量、流入帯域(Ui)等を示した情報である。なお、この統計情報131は、例えば、
図3(b)に示す、全フローの流入帯域の合計(各フローの合計帯域、Ua)、上位N位までのフローの流入帯域の合計(Uu)、通信回線の出回線の帯域(B)、超過帯域(Ue=Ua‐B)等を含んでいてもよい。
【0022】
図2の説明に戻る。ポリサー15は、公平制御部16からの制御に基づき、フローのパケットのポリシングを行う。
【0023】
公平制御部16は、上記の監視周期におけるフローそれぞれの通信量の合計が、所定の閾値(例えば、出回線の容量)を超える場合、通信量の多い順に所定数のフローに対する通信帯域の制限を行う。なお、公平制御部16は、統計情報管理部13が収集した通信量(例えば、パケット数、データ長、データ量)を、上記の監視周期を用いて、帯域に換算して各種計算を行うものとして説明するが、これに限定されない。
【0024】
公平制御部16は、制限対象フロー特定部161と、帯域制御部162とを備える。
【0025】
制限対象フロー特定部161は、上記の監視周期におけるフローそれぞれの通信量の合計が、所定の閾値(例えば、通信回線の回線容量)を超える場合、通信量の多い順に上位所定数のフローを通信帯域の制限対象のフローとして特定する。
【0026】
例えば、制限対象フロー特定部161は、通信量が上位N位までのフローをヘビーユーザのフローとして特定する。なお、Nの値は、固定値としてもよいし、通信回線に入力されるフロー数の変動を考慮し、入力されるフローの上位x%としてもよい。つまり、上記のNの値は、通信回線に入力されるフローの数に、所定の割合(x%)を掛けた数としてもよい。
【0027】
また、制限対象フロー特定部161は、通信回線に入力されるフローのうち、所定の閾値(最低保証通信量)を超える通信量のフローの中から、通信量の多い順に所定数(例えば、上位N位まで)のフローを、通信帯域の制限対象のフローとして特定してもよい。つまり、制限対象フロー特定部161は、最低保証通信量を設定しておき、最低保証通信量を超えたフローのうち、通信量が上位N位までのフローを通信帯域の制限対象のフローとして特定する。
【0028】
このようにすることで、例えば、通信量が上位2位までのフローを制限する場合において、1位のフローが大量の通信を行い、2位のフローは通常以下の通信を行っているとき、制限対象フロー特定部161は、2位のフローを通信帯域の制限対象外とすることができる。
【0029】
なお、制限対象フロー特定部161は、監視周期におけるフローそれぞれの通信量の合計が、所定の閾値を超える場合、通信量の多い順に所定数のフローに対する通信帯域の制限を行ってもよいし、フローそれぞれの通信帯域(流入帯域)の合計が、所定の閾値を超える場合、通信帯域の多い順に所定数のフローに対する通信帯域の制限を行ってもよい。
【0030】
なお、制限対象フロー特定部161が用いる上記の所定の閾値は、通信回線の回線容量の値そのものであってもよいし、通信回線の回線容量より小さい値であってもよい。例えば、上記の所定の閾値として、通信回線の回線容量よりも小さい値を用いることにより、公平制御部16は、回線容量を100%が使用される前の状態(通信回線が逼迫した状態)になった状態で、各フローに対する通信帯域の制限を行うことができる。
【0031】
なお、制限対象フロー特定部161が、上記の監視周期におけるフローそれぞれの通信量の合計は、所定の閾値(例えば、通信回線の回線容量)以下と判断した場合、通信帯域の制限は行わない。また、既にいずれかのフローの通信帯域の制限が行われていた場合、制限対象フロー特定部161は、フローそれぞれの通信量の合計が、所定の閾値以下になったと判断したとき、帯域制御部162に対し、各フローの通信帯域の制限の解除を指示する。
【0032】
帯域制御部162は、制限対象フロー特定部161により特定されたフローに対する通信帯域の制限を行う。具体的には、帯域制御部162は、制限対象フロー特定部161により特定されたフローそれぞれについて、当該フローの通信量の合計が所定の閾値(例えば、通信回線の回線容量)以下となるよう、通信帯域を制限する。
【0033】
例えば、帯域制御部162は、当該フローの通信帯域を、直近の監視期間における当該フローの通信帯域(流入帯域の実績値)から、当該フローの通信帯域の多さに応じた帯域を減じた通信帯域に制限する。
【0034】
一例を挙げる。ここでは、通信帯域の制御対象のフローが、
図1に示すユーザAのフローとユーザBのフローである場合を考える。この場合、最初の監視周期における、ユーザAのフローの流入帯域が20M(bps)であり、ユーザBのフローの流入帯域が12M(bps)であるので、帯域制御部162は、これらの流入帯域に応じて、次の監視周期におけるユーザAのフローの通信帯域を11.25M(bps)に制限し、ユーザBのフローの通信帯域を6.75M(bps)に制限する。
【0035】
このように、帯域制御部162は、通信量(通信帯域)が多い順に上位N位までのフローに対して、各フローの通信量と同じ比率で通信帯域の制限を行う。これにより、公平制御部16は、通信帯域の制限対象の各フロー間での公平性を確保することができる。
【0036】
なお、帯域制御部162による各フローの通信帯域の制限は、例えば、ポリサー15の制御により行ってもよいし、シェーパ17の制御により行ってもよい。
【0037】
シェーパ17は、入力されたフローのパケットのシェーピングを行う。例えば、シェーパ17は、ポリサー15から入力されたフローのパケットのシェーピングを行う。シェーピング後のフローのパケットは、出回線へ出力される。
【0038】
[処理手順]
次に、
図4〜
図6を用いて、通信制御装置10の統計情報管理部13および公平制御部16の処理手順の例を説明する。
【0039】
まず、
図4を用いて統計情報管理部13の処理手順の例を説明する。統計情報管理部13は、カウンタ12により各フローの通信量を収集する(S1)。そして、収集した各フローの通信量のデータを、例えば、統計情報131に記録する。その後、統計情報管理部13は、監視タイマー14から監視周期満了の通知を受けると(S2でYes)、統計情報131における各フローの通信量のデータを、流入帯域が多い順に並び替え(S3)、並べ替えた通信量のデータを公平制御部16に引き渡す(S4)。その後、統計情報管理部13は、次の監視周期の通信量のデータを記録するため、統計情報131に記録した通信量のデータをクリアし(S5)、S1へ戻る。また、S2において、監視タイマー14から監視周期満了の通知を受ける前は(S2でNo)、S1の処理を継続する。
【0040】
なお、統計情報管理部13が、次の監視周期における各フローの通信量の収集を速やかに行うために、統計情報131において通信量のデータを記録(保存)する領域を2面持たせてもよい。つまり、統計情報131における、統計情報管理部13から公平制御部16に通信量のデータを引き渡す面と、次の監視周期において統計情報管理部13が通信量のデータを保存する面とを交互に入れ替えるようにしてもよい。このようにすることで、統計情報管理部13から公平制御部16への通信量のデータの引き渡しと、統計情報管理部13による統計情報131に保存したデータのクリアとに伴う処理遅延を低減することができる。
【0041】
次に、
図5および
図6を用いて公平制御部16の処理手順の例を説明する。公平制御部16の制限対象フロー特定部161は、統計情報管理部13から各フローの通信量のデータの引き渡しがあると(S11でYes)、各フローの通信量の合計が所定の閾値を超えるか否かを判定する。例えば、制限対象フロー特定部161は、各フローの合計帯域(Ua)が、所定の閾値(Ut)を超えるか否かを判定する(S12)。ここで、制限対象フロー特定部161が、各フローの合計帯域(Ua)は、所定の閾値(Ut)を超えると判定した場合(S12でYes)、各フローの制限帯域の算出を行う(S13)。つまり、制限対象フロー特定部161は、流入帯域の多い順に上位所定数(例えば、上位N位まで)のフローを、通信帯域の制限対象のフローとして特定し、帯域制御部162は、当該フローそれぞれの制限帯域を算出する。このS13の処理の詳細は、後記する。
【0042】
S13の後、帯域制御部162は、通信帯域の制限対象のフローに対し、S13で算出した通信帯域に制限するよう、ポリサー15に帯域制限を指示する(S14)。そして、処理を終了する。
【0043】
一方、S12において制限対象フロー特定部161が、各フローの合計帯域(Ua)は、所定の閾値(Ut)以下であると判定した場合(S12でNo)、帯域制御部162は、帯域制限を解除する(S15)。例えば、帯域制御部162は、フローの通信帯域の制限中のポリサー15に対し、通信帯域の制限の解除を指示する。そして、処理を終了する。
【0044】
[制限帯域の算出処理]
次に、
図6を用いて、
図5のS13における制限帯域の算出処理を詳細に説明する。
【0045】
図5のS12において制限対象フロー特定部161は、各フローの合計帯域(Ua)が、所定の閾値(Ut)を超えると判定した場合(S12でYes)、帯域制御部162は、例えば、上位i位(i=1〜N)のフローの制限帯域(Pi)を、以下の式(1)により算出する(
図6のS131)。
【0046】
Pi=Ui-Ui/Uu*(Ua-Ut)…式(1)
【0047】
ただし、Ui:フローiの流入帯域(実績値)、Ua:全フローの流入帯域の合計、Uu:通信量の上位N位までの流入帯域の合計である。
【0048】
つまり、帯域制御部162は、フローiの流入帯域Uiに比例して、超過帯域(この場合、Ua−Ut)のうち、Ui/Uu相当をフローiの流入帯域(実績値)から減じることによりフローiの制限帯域Piを算出する。
【0049】
帯域制御部162は、S131の処理をフローi(i=1〜N)それぞれに対し実行する。
【0050】
このようにすることで、帯域制御部162は、通信帯域の制限対象の各フローの制限帯域を算出することができる。
【0051】
このように通信制御装置10は、例えば、通信回線の全フローの流入帯域の合計(Ua)のうち、所定の閾値(Ut)を超えた分を、通信量の多い各フローの通信帯域から減少させる。その結果、通信制御装置10は、各フローの通信帯域を過剰に制限することがなくなるので、回線使用効率を向上させ、また、通信量の少ないフローへの影響を防ぐことができる。
【0052】
[その他の実施形態]
なお、通信制御装置10の公平制御部16は、例えば、通信量が上位N位までのフローを対象に通信帯域の制限を行う際、この上位N位までのフローそれぞれに等しく帯域を割り当てもよい。この場合の各フローの制限帯域の算出の例を、
図7を用いて説明する。
【0053】
例えば、公平制御部16は、通信量の多いユーザ(例えば、上位2位までのユーザA,B)に、回線容量分のうち、ユーザCに割り当てていない帯域(20M(bps)-2M(bps))を等しく割り当てる。つまり、通信制御装置は、ユーザA,Bのフローの通信帯域を(20M(bps)-2(bps))/2=9M(bps)に制限する。一方、通信制御装置は、通信量が上記2位より下位のユーザCのフロー(2M(bps))については、通信帯域の制限は行わない。
【0054】
この場合の、帯域制御部162における制限帯域の算出処理を、
図8を用いて説明する。
図5のS12において制限対象フロー特定部161は、各フローの合計帯域(Ua)が、所定の閾値(Ut)を超えると判定した場合(S12でYes)、帯域制御部162は、例えば、上位i位(i=1〜N)のフローの制限帯域(Pi)を、以下の式(2)により算出する(
図8のS132)。
【0055】
Pi=(Ut-(Ua-Uu))/N…式(2)
【0056】
つまり、帯域制御部162は、上位N位以外のフローの利用する帯域を(Ua-Uu)にて算出し、閾値(Ut)から(Ua-Uu)を減じることで上位N位のフローで利用可能な空き帯域を算出する。その後、帯域制御部162は、その空き帯域をN本のフローで等分することにより、N本のフローそれぞれの制限帯域を算出する。
【0057】
[プログラム]
また、上記の実施形態で述べた通信制御装置10の機能を実現するプログラムを所望の情報処理装置(コンピュータ)にインストールすることによって実装できる。例えば、パッケージソフトウェアやオンラインソフトウェアとして提供される上記のプログラムを情報処理装置に実行させることにより、情報処理装置を通信制御装置10として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータ、ラック搭載型のサーバコンピュータ等が含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistants)等がその範疇に含まれる。また、通信制御装置10を、クラウドサーバに実装してもよい。
【0058】
図9を用いて、上記のプログラム(制御プログラム)を実行するコンピュータの一例を説明する。
図9に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0059】
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
【0060】
ここで、
図9に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。前記した実施形態で説明した各種データや情報は、例えばハードディスクドライブ1090やメモリ1010に記憶される。
【0061】
そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0062】
なお、上記の制御プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、上記のプログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。