【国等の委託研究の成果に係る記載事項】(出願人による申告)平成26年度、総務省、「フローマイニングに基づくトラヒック変動に適応する予測型トラヒックエンジニアリングの研究開発」委託事業、産業技術力強化法第19条の適用を受ける特許出願
【文献】
高橋 洋介 他,フローベースネットワーク制御のためのマクロフロー構成手法,電子情報通信学会技術研究報告,2014年 2月20日,Vol.113 No.443,第31〜36頁
【文献】
工藤 宏幸 他,OpenFlowネットワークにおける経路制御粒度が通信性能に与える影響,電子情報通信学会技術研究報告,2011年 4月14日, Vol.111 No.8,第7〜12頁
【文献】
山中 広明 他,フロースペース仮想化における任意のフロー定義が可能なフロー変換手法の検討,電子情報通信学会技術研究報告,2012年12月 6日,Vol.112 No.352,第33〜38頁
(58)【調査した分野】(Int.Cl.,DB名)
ネットワークを流通するデータの転送制御に用いられるレコードごとに、当該レコードの条件に合致したデータ量の履歴に基づいて、前記データ量の変動の大きさを評価する第1の評価部と、
前記レコードごとに、当該レコードの条件に基づいて、当該レコードの空間の大きさを評価する第2の評価部と、
前記第1の評価部による評価結果と、前記第2の評価部による評価結果とに基づいて、前記レコードごとに、一定期間内に所定量以上のデータ量に係るデータが当該レコードの条件に合致する可能性を示す指標値を計算する計算部と、
を有する評価装置。
前記第1の評価部は、前記データ量の履歴に関して標準偏差を算出し、前記履歴を構成する各データ量と、前記標準偏差との比較に基づいて、前記変動の大きさを評価する、
ことを特徴とする請求項1記載の評価装置。
【背景技術】
【0002】
新しいトラヒック制御技術として、近年、OpenFlowに代表されるSDN(Software Defined Network)技術への注目が高まっている。SDN技術の登場により、従来のネットワーキング技術では困難であったマイクロフロー単位の経路制御が技術的に可能となった。また、NetFlow等のフロー計測技術の普及も進んでおり、マイクロフロー単位の詳細なトラヒック情報(フローデータ)を把握することが容易となっている。
【0003】
OpenFlowでは、OpenFlowスイッチ上のフローエントリを用いてフローの制御が行われる。フローエントリはフロー識別フィールドとアクションフィールドとを含む。フロー識別フィールドは、発着IPアドレス、発着ポート番号、プロトコル番号等、フロー(例えば、パケット)に対する条件を示す。アクションフィールドは、特定ポートへの出力や、フローのドロップ等、条件に合致したフロー(例えば、パケット)の処理方法を示す。
【0004】
条件にワイルドカードを含むフローエントリでは、単一のエントリで複数のフローを制御することができる。ワイルドカードを含むフローエントリを用いることで、少数のフローエントリで大量のフローを制御できる。
【0005】
一方で、インターネットでは突発的に大量のフロー(スパイクフロー)が発生することがある。スパイクフローが特定のリンクに集中した場合、当該リンクにおいて輻輳が生じ、結果としてネットワーク全体のパフォーマンスが低下する可能性がある。
【0006】
スパイクフローに対しては、トラヒックシェーピング、迂回制御といった個別制御を実施することで、ネットワーク全体のパフォーマンスの低下を防ぐことができる。
【発明を実施するための形態】
【0013】
以下、図面に基づいて本発明の実施の形態を説明する。
図1は、本発明の実施の形態におけるネットワーク構成例を示す図である。
図1には、4つのエッジノード40、3つの転送装置30、1つの制御装置20、及び1つのフロー評価装置10が示されている。
【0014】
各エッジノード40は、パケットのトラヒックを発生させる装置である。すなわち、各エッジノード40は、パケットの発信元又は宛先に相当する。各エッジノード40は、いずれかの転送装置30にネットワークを介して接続される。
【0015】
各転送装置30は、SDN(Software Defined Network)/OpenFlowに対応したスイッチ(OpenFlowスイッチ)である。各転送装置30は、いずれかのエッジノード40又は他の転送装置30にネットワークを介して接続される。各転送装置30は、フローエントリの集合であるフローテーブルに従って、エッジノード40間のパケットのフローを制御する。フローエントリは、ネットワークを流通するデータの転送制御に用いられる情報であり、フロー識別子、アクション、及びフローカウンタ等を含む。フロー識別子は、フロー(例えば、パケット)に対する条件を示す。アクションは、当該フローエントリの条件に合致したフロー(例えば、パケット等のデータ)の処理方法を示す。フローカウンタは、統計情報であり、例えば、当該フローエントリの条件に合致して転送されたパケット数およびバイト数を示す。なお、本実施の形態において、斯かるパケット数又はバイト数を、「トラヒック量」という。
【0016】
制御装置20は、SDN/OpenFlowに対応したコントローラ(OpenFlowコントローラ)である。制御装置20は、各転送装置30に対してフローテーブルを設定する。制御装置20は、また、定期的に各転送装置30にアクセスし、各転送装置30における各フローエントリのフロー識別子及びフローカウンタ値を取得する。なお、制御装置20と各転送装置30との接続形態は、所定のものに限定されない。
【0017】
フロー評価装置10は、各転送装置30のフローテーブルの各フローエントリのフロー識別子とフローカウンタ値とを制御装置20から取得し、取得されたフロー識別子及びフローカウンタ値に基づいてスパイク指数を計算するコンピュータである。スパイク指数とは、突発的に大量のフロー(以下、「スパイクフロー」という。)がマッチする(フローエントリの条件に合致する)可能性を示す指標値である。換言すれば、スパイク指数は、一定期間内に所定量以上のフローがマッチする可能性を示す指標値である。事前に各フローエントリのスパイク指数が評価されることで、スパイク指数の高いフローエントリに対して個別制御を実施し、ネットワーク全体のパフォーマンス低下を防ぐことができる。フロー評価装置10は、ネットワークを介して制御装置20に接続される。
【0018】
図2は、本発明の実施の形態におけるフロー評価装置のハードウェア構成例を示す図である。
図2のフロー評価装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
【0019】
フロー評価装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0020】
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってフロー評価装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
【0021】
図3は、本発明の実施の形態におけるフロー評価装置の機能構成例を示す図である。
図3において、フロー評価装置10は、フローエントリ情報取得部11、既知リスク評価部12、未知リスク評価部13、スパイク指数計算部14、スパイク推定部15、及び出力部16等を有する。これら各部は、フロー評価装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。フロー評価装置10は、また、フローエントリ情報記憶部17を利用する。フローエントリ情報記憶部17は、補助記憶装置102、又はフロー評価装置10にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【0022】
フローエントリ情報取得部11は、各転送装置30の各フローエントリのフロー識別子及びフローカウンタ値を、制御装置20から取得する。取得されたフロー識別子及びフローカウンタ値は、フローエントリごとに、フローエントリ情報記憶部17に記憶される。
【0023】
既知リスク評価部12は、フローエントリごとに、当該フローエントリの条件に合致したデータ量(トラヒック量)の履歴に基づいて、データ量(トラヒック量)の変動の大きさを評価する。より詳しくは、既知リスク評価部12は、各フローエントリの過去の時系列のトラヒック量(フローカウンタ値)が示す、過去のトラヒックの変動パターンに基づいて、過去に観測済みのスパイクフローが再度発生するリスク(以下、「既知リスク」という。)を、フローエントリごとに評価する。評価結果は、所定の評価値に指標化される。
【0024】
未知リスク評価部13は、フローエントリごとに、当該フローエントリの条件に基づいて、当該フローエントリの空間の大きさを評価する。より詳しくは、各フローエントリのフロー識別子が示すフロー空間に基づいて、将来に未知のスパイクフローが発生するリスク(以下、「未知リスク」という。)を評価する。評価結果は、所定の評価値に指標化される。なお、フロー空間の詳細については後述される。
【0025】
スパイク指数計算部14は、既知リスク評価部12による評価結果と、未知リスク評価部13による評価結果とに基づいて、フローエントリごとに、スパイク指数を計算する。すなわち、スパイク指数計算部14は、将来においてスパイクフローを、(1)過去に発生したことのある既知のスパイクフローと、(2)1度も発生したことのない未知のスパイクフローとの2つのパターンに分類し、(1)及び(2)のそれぞれのリスクを併せてスパイク指数を計算する。
【0026】
スパイク推定部15は、スパイク指数計算部14によってフローエントリごとに計算されたスパイク指数に基づいて、将来的にスパイクフローにマッチする可能性の高いフローエントリを推定する。
【0027】
出力部16は、スパイク推定部15による推定結果を出力する。出力形態は所定のものに限定されない。例えば、液晶ディスプレイ等の表示装置への表示であってもよいし、プリンタへの出力であってもよい。又は、例えば、電子メール等によって、ネットワークを介して送信されてもよい。
【0028】
以下、フロー評価装置10が実行する処理手順について説明する。
図4は、フロー評価装置が実行する処理手順の一例を説明するためのフローチャートである。
【0029】
ステップS101において、フローエントリ情報取得部11は、制御装置20によって各転送装置30から収集されている、各転送装置30のフローテーブルの各フローエントリのフロー識別子及びフローカウンタ値等を含む情報(以下、「フローエントリ情報」という。)を取得する。取得されたフローエントリ情報は、フローエントリ情報記憶部17に記憶される。
【0030】
図5は、フローエントリ情報記憶部の構成例を示す図である。
図5には、フローエントリ情報記憶部17において、フローエントリごとに記憶されているフローエントリ情報テーブルのうちの一つが示されている。すなわち、フローエントリ情報記憶部17には、各転送装置30のフローエントリごとに、フローエントリ情報テーブルが記憶されている。
【0031】
フローエントリ情報テーブルの各レコードは、時刻、発信元IPアドレス、宛先IPアドレス、発信元ポート番号、宛先ポート番号、プロトコル番号、及びフローカウンタ値等の項目を有する。時刻は、制御装置20によって、当該レコードに係るフローエントリ情報が転送装置30から取得された時刻を示す。したがって、フローエントリ情報テーブルには、制御装置20による、各転送装置30からのフローエントリ情報の収集時期ごとに、レコードが記憶される。
【0032】
発信元IPアドレスからプロトコル番号までは、フロー識別子を構成する項目である。フローカウンタ値は、当該レコードの時刻における、フローカウンタ値である。
【0033】
なお、ここでは、ステップS101が、制御装置20によるフローエントリ情報の収集の周期と同じ周期で実行されることとする。したがって、ステップS101では、各転送装置30に対応する各フローエントリ情報テーブルに、1つのレコードが追加される。
【0034】
続いて、既知リスク評価部12は、フローエントリ情報記憶部17を参照して既知リスクを評価する(S102)。既知リスク評価部12は、既知リスクを、過去のトラヒック量の変動の中でスパイクフローが発生した回数(割合)、又は過去のトラヒック量の変動の変動係数に基づいて評価する。前者は、5σ−法で評価される。後者は、CV(Coefficient of variation)法で評価される。
【0035】
5σ−法では、トラヒック量の標準偏差が閾値として用いられる。具体的には、過去の或る期間のトラヒック量の標準偏差σを計算し、当該或る期間に含まれる各時刻について、標準偏差σと当該時刻におけるトラヒック量との比較に基づいて、当該或る期間におけるトラヒック量の変動の大きさが評価される。例えば、当該或る期間に含まれる時刻のうち、トラヒック量が5σ値以上である時刻の回数が、既知リスクの評価値として用いられる。なお、閾値としての5σは一例に過ぎない。3σであってもよいし、σに基づく他の値であってもよい。
【0036】
なお、標準偏差σは、以下の式(1)によって算出可能である。
【0037】
【数1】
ここで、y
i(t
n)は、フローエントリiの時刻t
nにおけるトラヒック量である。時刻t
nにおけるトラヒック量とは、時刻t
nのフローカウンタ値から時刻t
n−1のフローカウンタ値を減じた値である。なお、nは、各時刻の時系列の順番を示す。また、Nの値は、例えば、評価期間に含まれる時刻の数(フローエントリ情報テーブルのレコード数)である。評価期間は、例えば、予め設定されてもよい。本実施の形態では、Nの値は、20であるとする。
【0038】
5σ−法において、既知リスク評価部12は、各フローエントリ情報テーブルについて(すなわち、各フローエントリについて)、直近の20個分(最後から20個分)のレコードについて、標準偏差σを算出する。既知リスク評価部12は、当該20個のレコードの中で、フローカウンタ値が5σ以上であるレコードの数(すなわち、時刻の数)をカウントする。当該レコードの数のカウント結果が、直近の評価期間における、5σ−法による既知リスクの評価値である。なお、ステップS101以降が、一定期間ごとに繰り返される過程において、評価期間の長さは、毎回同じである。したがって、各評価期間において、フローカウンタ値が5σ以上である時刻の数は、実質的に、各評価期間において、フローカウンタ値が5σ以上である時刻の割合を示す。なお、仮に、評価期間が一定でない場合には、各評価期間において、フローカウンタ値が5σ以上である時刻の数を、当該評価期間における時刻の数によって除した値が、5σ−法による既知リスクの評価値とされてもよい。
【0039】
一方、CV法は、トラヒック変動パターンの変動係数CVが、評価値として用いられる。変動係数CVは、例えば、以下の式(2)よって算出される。
【0040】
【数2】
ここで、各変数の意味は、式(1)と同じである。すなわち、変動係数CVは、標準偏差σを、平均値(算出平均)によって除することにより得られる値である。
【0041】
CV法において、既知リスク評価部12は、各フローエントリ情報テーブルについて(すなわち、各フローエントリについて)、直近の20個分のレコードについて、変動係数CVを計算する。
【0042】
なお、ステップS102では、5σ−法及びCV法のいずれが使用されてもよい。また、例えば、標準偏差σが、既知リスクの評価値とされてもよい。トラヒックの変動パターンを評価することが可能な値であれば、その他の評価値が用いられてもよい。
【0043】
続いて、未知リスク評価部13は、各フローエントリのフロー識別子のフロー空間の大きさに基づいて、未知リスクをフローエントリごとに評価する(S103)。具体的には、フロー空間の大きさが、未知リスクの評価値とされる。フロー空間の大きさの評価方法としては、例えば、Dimension法又はBit法が用いられる。
【0044】
Dimension法では、フロー識別子における未指定次元数が、フロー空間の大きさの評価値(すなわち、未知リスクの評価値)とされる。未指定次元とは、フロー識別子の中で、値が指定されていない次元(項目)をいう。例えば、フロー識別子が、発信元IPアドレス、宛先IPアドレス、発信元ポート番号、宛先ポート番号、及びプロトコル番号の5次元で構成される場合に、宛先IPアドレスとプロトコル番号のみに値が指定されているフロー識別子の未指定次元数は、3となる。したがって、この場合、未知リスクの評価値は、3となる。
【0045】
Dimension法において、未知リスク評価部13は、各フローエントリ情報テーブルについて(すなわち、各フローエントリについて)、例えば、最新のレコード(すなわち、ステップS101において取得されたフローエントリ情報が記録されたレコード)の発信元IPアドレス、宛先IPアドレス、発信元ポート番号、宛先ポート番号、及びプロトコル番号のうち、値が指定されていない項目(次元)の数をカウントする。このカウント結果が、未指定次元数であり、Dimension法による未知リスクの評価値である。
【0046】
一方、Bit法では、フロー識別子の未指定ビット数が、フロー空間の大きさの評価値(すなわち、未知リスクの評価値)とされる。未指定ビットとは、フロー識別子の中で、ワイルドカードやネットワークマスクが適用されたビット数とをいう。すなわち、未指定ビットとは、フロー識別子の中で値が特定されていない部分のビット数である。例えば、フロー識別子が、発信元IPアドレス(32ビット)+宛先IPアドレス(32ビット)+発信元ポート番号(16ビット)+宛先ポート番号(16ビット)+プロトコル番号(8ビット)の計104ビットで表現される場合、宛先IPアドレスと宛先ポート番号のみに値(ワイルドカードを含まない値)が指定されており、他の項目には値が指定されていないか、ワイルドカードが指定されている場合には、未指定ビット数は、56ビットとなる。また、各項目の値の一部にワイルドカードが指定される場合も有る。この場合、当該一部のビット数が、未指定ビット数に加算される。
【0047】
Bit法において、未知リスク評価部13は、例えば、各フローエントリ情報テーブルについて(すなわち、各フローエントリについて)、最新のレコードの発信元IPアドレス、宛先IPアドレス、発信元ポート番号、宛先ポート番号、及びプロトコル番号のうち、ワイルドカード等に置き換えられている部分、又は値が指定されていない部分のビット数をカウントする。このカウント結果が、未指定ビット数であり、Bit法による未知リスクの評価値である。
【0048】
なお、Dimension法及びBit法のいずれが使用されてもよい。また、Dimension法においては、未指定次元数の割合が、Bit法においては、未指定ビット数の割合が、それぞれ未知リスクの評価値とされてもよい。本実施の形態においては、基本的に、フロー識別子の次元数及び総ビット数は固定であるため、未指定次元数及び未指定ビット数は、実質的に、未指定次元数の割合又は未指定ビット数の割合に相当する。
【0049】
続いて、スパイク指数計算部14は、以下の式(3)に基づいて、各フローエントリのスパイク指数SIを計算する(S104)。
【0050】
SI
i=αE(Y
i)+βU(f
i) ・・・(3)
ここで、各変数の意味は、以下の通りである。
【0051】
SI
i:フローエントリiのスパイク指数
Y
i=(y
i(t
1),y
i(t
2),・・・,y
i(t
N))
T:フローエントリiのトラヒック量(フローカウンタ値)
y
i(t):フローエントリiの時刻tにおけるトラヒック量(フローカウンタ値)
f
i:フローエントリiのフロー識別子のフロー空間
α:既知リスクに対する重み係数
β:未知リスクに対する重み係数
E(Y
i):既知リスクの評価値
U(f
i):未知リスクの評価値
すなわち、スパイク指数計算部14は、フローエントリごとに、当該フローエントリに関してステップS102において得られた既知リスクの評価値を式(3)のE(Y
i)に代入し、当該フローエントリに関してステップS103において得られた未知リスクの評価値を式(3)のU(f
i)に代入して、当該フローエントリのスパイク指数を算出する。なお、重み係数α及びβは、既知リスク及び未知リスクの評価方法に応じて選択されてもよい。例えば、既知リスクについて、5σ−法に対するαの値と、CV法に対するαの値とが予め設定されており、いずれの評価方法が用いられたのかに応じて、αの値が選択されてもよい。同様に、未知リスクについて、Dimension法に対するβの値と、Bit法に対するβの値とが予め設定されており、いずれの評価方法が用いられたのかに応じて、βの値が選択されてもよい。そうすることにより、既知リスクの評価方法の相違によるスパイク指数の変動、及び未知リスクの評価方法の相違によるスパイク指数の変動を小さくすることができ。スパイク指数に対する閾値を、一定にすることができる。
【0052】
続いて、スパイク推定部15は、ステップS105において各転送装置30のフローエントリごとに算出されたスパイク指数を評価して、各フローエントリの中で、将来的にスパイクフローにマッチする可能性の高い(スパイクフローの要因となる可能性が高い)フローエントリを推定する(S106)。例えば、各フローエントリのスパイク指数が、閾値と比較されることにより、将来的にスパイクフローにマッチする可能性の高いフローエントリが推定されてもよい。すなわち、スパイク指数が閾値以上であるフローエントリが、将来的にスパイクフローにマッチする可能性の高いフローエントリであると推定されてもよい。この場合、閾値は、既知リスクの評価方法と未知リスクの評価方法との組み合わせごとに設定されていてもよい。本実施の形態では、既知リスクの評価方法として2通りが有り、未知リスクの評価方法として2通りが有るため、2×2=4通りの閾値が設定されてもよい。但し、係数α及びβによって、各評価方法の相違によるスパイク変数の変動が抑制される場合には、閾値は一つであってもよい。
【0053】
続いて、出力部16は、ステップS105におけるスパイク推定部15による推定結果を出力する(S106)。例えば、スパイクフローにマッチする可能性が閾値以上であるフローエントリの識別情報が出力されてもよい。又は、出力部16は、ステップS104において計算された、各フローエントリのスパイク指数を出力してもよい。
【0054】
続いて、ステップS101以降が繰り返される。なお、フロー評価装置10は、各フローエントリのスパイク指数に基づいて、各転送装置30のフローテーブルを試作してもよい。この場合、各転送装置30からフローデータ(トラヒック情報)が収集され、フロー評価装置10に蓄積されるようにしてもよい。フローデータは、NetFlow等の技術を用いて収集されてもよい。フローデータには、フローヘッダ情報(5-tuple)、時刻、バイト数が含まれている。このフローデータを、各時刻で収集して過去のフローデータをデータベース化しておく。フロー評価装置10は、新たに試作されたフローテーブルを構成する各フローエントリについて、過去のフローデータのデータベースの情報とフローエントリのフロー空間情報とを使ってスパイク指数を計算し、試作されたフローテーブルに関して、スパイクフローが発生するリスクを評価してもよい。フローテーブルの試作が繰り返しながら(試行錯誤しながら)、特定のフローエントリにスパイクフローが集中しないようにフローテーブルが生成されてもよいし、又は特定のフローエントリにスパイクフローが集まるように仕向けて、個別制御しやすいようにフローテーブルが生成されてもよい。
【0055】
なお、上記では、リアルタイムにスパイク指数が計算される例を示したが、例えば、バッチ的にスパイク指数の計算が行われてもよい。この場合、フローエントリ情報記憶部17にフローエントリごとに記憶されている各フローエントリ情報テーブルについて、或る時刻のレコードが処理対象とされステップS101以降が実行される。その後、次の時刻のレコードに処理対象がずらされながら、ステップS101以降が繰り返されてもよい。この際、ステップS102では、そのときに処理対象のレコードに関して直近の20個のレコードに基づいて、既知リスクの評価値が算出される。
【0056】
上述したように、本実施の形態によれば、既知リスク及び未知リスクに基づいて、スパイク指数が計算される。したがって、既知のスパイクフローのみならず、未知のスパイクフローのリスクも考慮して、突発的に大量のフローが発生する可能性を評価可能とするこができる。また、スパイク指数は、フローエントリごとに算出される。したがって、例えば、ネットワーク管理者は、スパイク指数の高いフローエントリにマッチするトラヒックに対しては、トラヒックシェーピングや迂回制御を予め実施しておくことで、スパイクフローが発生した場合のネットワークの輻輳の影響を低減することができる。
【0057】
なお、本実施の形態において、既知リスク評価部12は、第1の評価部の一例である。未知リスク評価部13は、第2の評価部の一例である。スパイク指数計算部14は、計算部の一例である。フローエントリは、ネットワークを流通するデータの転送制御に用いられるレコードの一例である。すなわち、本実施の形態は、OpenFlow以外のプロトコルに対応した転送装置において利用される、データの転送を制御するためのレコードに関して適用されてもよい。
【0058】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【解決手段】評価装置は、ネットワークを流通するデータの転送制御に用いられるレコードごとに、当該レコードの条件に合致したデータ量の履歴に基づいて、前記データ量の変動の大きさを評価する第1の評価部と、前記レコードごとに、当該レコードの条件に基づいて、当該レコードの空間の大きさを評価する第2の評価部と、前記第1の評価部による評価結果と、前記第2の評価部による評価結果とに基づいて、前記レコードごとに、一定期間内に所定量以上のデータ量に係るデータが当該レコードの条件に合致する可能性を示す指標値を計算する計算部と、を有する。