(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024129217
(43)【公開日】2024-09-27
(54)【発明の名称】仮想ネットワーク制御システムおよび仮想ネットワーク制御方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20240919BHJP
G06F 9/455 20180101ALI20240919BHJP
【FI】
G06F9/50 120Z
G06F9/455 150
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023038272
(22)【出願日】2023-03-13
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】志水 浩司
(57)【要約】 (修正有)
【課題】仮想ネットワークを提供するサービスのユーザビリティの低下を回避する仮想ネットワーク制御システム及びその制御方法を提供する。
【解決手段】仮想ネットワーク制御システムにおいて、スケーリング部は、仮想ネットワークに割り当てるリソースの量を制御する。監視部は、仮想ネットワークに割り当てられているリソースの使用率が第1の閾値を超えたときに、リソースの増加をスケーリング部に指示する。ベクトル生成部は、仮想ネットワークの状態を表す状態ベクトルを生成する。抽出部は、過去に生成された状態ベクトルの中から、リソースの使用率が第1の閾値を超えた時刻から所定時間だけ過去にさかのぼった時刻に対応づけられている参照ベクトルを抽出する。予測制御部は、仮想ネットワークの現在の状態を表す状態ベクトルと参照ベクトルとの相関が第2の閾値より高いときに、スケーリング部に対してリソースの増加を指示する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
仮想環境上に構築される仮想ネットワークに割り当てるリソースの量を制御するスケーリング部と、
前記仮想ネットワークに割り当てられているリソースの使用率が第1の閾値を超えたときに、前記仮想ネットワークに割り当てるリソースの増加を前記スケーリング部に指示する監視部と、
前記仮想ネットワークにおいて収集される状態情報から前記仮想ネットワークの状態を表す状態ベクトルを生成するベクトル生成部と、
前記状態ベクトルと前記状態情報が収集された時刻とを対応づけて保存する第1の保存部と、
前記第1の保存部に保存されている状態ベクトルの中から、前記リソースの使用率が前記第1の閾値を超えた時刻を表す使用率超過時刻から所定時間だけ過去にさかのぼった時刻を表す予兆時刻に対応づけられている参照ベクトルを抽出する抽出部と、
前記抽出部により抽出された参照ベクトルを保存する第2の保存部と、
前記仮想ネットワークの現在の状態を表す状態ベクトルと、前記第2の保存部に保存されている参照ベクトルとの相関を計算し、前記相関が第2の閾値より高いときに前記スケーリング部に対して前記仮想ネットワークに割り当てるリソースの増加を指示する予測制御部と、
を備える仮想ネットワーク制御システム。
【請求項2】
前記状態ベクトルのベクトル要素は、前記仮想ネットワークにおいて生成されるログ情報またはプロセス情報から抽出される文字列であり、
各ベクトル要素の値は、所定期間内に前記ログ情報または前記プロセス情報において当該文字列が検出された個数を表す
ことを特徴とする請求項1に記載の仮想ネットワーク制御システム。
【請求項3】
前記ベクトル生成部は、前記ログ情報または前記プロセス情報において新たな文字列を検出したときには、前記状態ベクトルのベクトル要素として前記新たな文字列を追加する
ことを特徴とする請求項2に記載の仮想ネットワーク制御システム。
【請求項4】
前記状態ベクトルのベクトル要素は、前記仮想環境を提供するコンピュータに実装されているセンサに係わる情報であり、
各ベクトル要素の値は、前記センサにより検知された値を表す
ことを特徴とする請求項1に記載の仮想ネットワーク制御システム。
【請求項5】
前記予兆時刻は、前記使用率超過時刻に対応づけられた状態ベクトルと、前記使用率超過時刻よりも過去の時刻に対応づけられた状態ベクトルとの相関が、第3の閾値を超えた時刻を表す
ことを特徴とする請求項1に記載の仮想ネットワーク制御システム。
【請求項6】
前記第2の保存部に保存されている参照ベクトルの中から、最も新しい所定数の参照ベクトルを選択する選択部をさらに備え、
前記予測制御部は、前記仮想ネットワークの現在の状態を表す状態ベクトルと、前記選択部により選択された各参照ベクトルとの相関を計算する
ことを特徴とする請求項1に記載の仮想ネットワーク制御システム。
【請求項7】
前記第2の保存部に保存されている参照ベクトルを複数のクラスタにグループ化し、各クラスタに属する参照ベクトルの重心を計算することでクラスタ毎に代表参照ベクトルを生成する選択部をさらに備え、
前記予測制御部は、前記仮想ネットワークの現在の状態を表す状態ベクトルと、各代表参照ベクトルとの相関を計算する
ことを特徴とする請求項1に記載の仮想ネットワーク制御システム。
【請求項8】
コンピュータにより提供される仮想環境上に構築される仮想ネットワークに割り当てられているリソースの使用率が第1の閾値を超えたときに、前記仮想ネットワークに割り当てるリソースの量を増加させる仮想ネットワーク制御方法において、
前記仮想ネットワークにおいて収集される状態情報から前記仮想ネットワークの状態を表す状態ベクトルを生成し、
前記状態ベクトルと前記状態情報が収集された時刻とを対応づけて第1の保存部に保存し、
前記第1の保存部に保存されている状態ベクトルの中から、前記リソースの使用率が前記第1の閾値を超えた時刻から所定時間だけ過去にさかのぼった時刻に対応づけられている参照ベクトルを抽出し、
抽出した参照ベクトルを第2の保存部に保存し、
前記仮想ネットワークの現在の状態を表す状態ベクトルと、前記第2の保存部に保存されている参照ベクトルとの相関を計算し、前記相関が第2の閾値より高いときに前記仮想ネットワークに割り当てるリソースの量を増加させる
ことを特徴とする仮想ネットワーク制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想ネットワークを制御するシステムおよび方法に係わる。
【背景技術】
【0002】
近年、多くの通信事業者がNFV(Network Function Virtualization)を導入している。NFVは、サーバコンピュータ上でソフトウェアによりネットワーク機能の仮想化を実現する技術である。そして、通信事業者、インテグレータ、または関連プロダクトを提供するベンダは、NFVにより、高度な保守サービスおよび/または営業費用(OPEX:Operating Expenditure)の削減を目指している。例えば、NFVにより、サービスの需要の変動に応じて、ネットワーク機能に割り当てるリソースの量を変化させるオートスケーリングが提案されている。なお、オートスケーリングにより仮想マシン数/コンテナ数などのリソース割当て量を適切に制御する方法が提案されている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来のオートスケーリングにおいては、例えば、CPUまたはメモリ等のリソースの使用率が所定の閾値を超えたときに、リソースが追加される。ただし、この方法では、新たなリソースが適切に設定されるまでの期間は、需要に対して十分なリソースが割り当てられない。このため、一時的に、サービスへのアクセスが遅延し、ユーザビリティが低下することがある。
【0005】
本発明の1つの側面に係わる目的は、仮想ネットワークを提供するサービスのユーザビリティの低下を回避または抑制することである。
【課題を解決するための手段】
【0006】
本発明の1つの態様に係わる仮想ネットワーク制御システムは、コンピュータにより提供される仮想環境上に構築される仮想ネットワークに割り当てるリソースの量を制御するスケーリング部と、前記仮想ネットワークに割り当てられているリソースの使用率が第1の閾値を超えたときに、前記仮想ネットワークに割り当てるリソースの増加を前記スケーリング部に指示する監視部と、前記仮想ネットワークにおいて収集される状態情報から前記仮想ネットワークの状態を表す状態ベクトルを生成するベクトル生成部と、前記状態ベクトルと前記状態情報が収集された時刻とを対応づけて保存する第1の保存部と、前記第1の保存部に保存されている状態ベクトルの中から、前記リソースの使用率が前記第1の閾値を超えた時刻を表す使用率超過時刻から所定時間だけ過去にさかのぼった時刻を表す予兆時刻に対応づけられている参照ベクトルを抽出する抽出部と、前記抽出部により抽出された参照ベクトルを保存する第2の保存部と、前記仮想ネットワークの現在の状態を表す状態ベクトルと、前記第2の保存部に保存されている参照ベクトルとの相関を計算し、前記相関が第2の閾値より高いときに前記スケーリング部に対して前記仮想ネットワークに割り当てるリソースの増加を指示する予測制御部と、を備える。
【発明の効果】
【0007】
上述の態様によれば、仮想ネットワークを提供するサービスのユーザビリティの低下を回避または抑制できる。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態に係わる仮想ネットワーク制御システムの一例を示す図である。
【
図2】パフォーマンス監視部の処理の一例を示すフローチャートである。
【
図3】ベクトル生成部の処理の一例を示すフローチャートである。
【
図5】先行事象抽出部の処理の一例を示すフローチャートである。
【
図6】先行事象抽出部により作成される相関プロファイルの一例を示す図である。
【
図8】参照ベクトルを生成しないケースの例を示す図である。
【
図9】予測制御部の処理の一例を示すフローチャートである。
【
図10】予測制御部による相関計算の一例を示す図である。
【
図11】本発明の実施形態のバリエーションの一例を示す図である。
【
図12】K-meansクラスタリングを利用して代表参照ベクトルを決定する方法の一例を示す図である。
【
図13】本発明の実施形態の他のバリエーションの一例を示す図である。
【
図14】仮想ネットワーク制御システムのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0009】
本発明の実施形態は、仮想ネットワークに割り当てるリソースの量を制御する仮想ネットワーク制御システムに係わる。仮想ネットワーク制御システムは、必要に応じて、仮想ネットワークまたは仮想ネットワーク機能(VNF:Virtual Network Function)に割り当てるリソースの量を動的に制御するスケーリングを行う。スケーリングは、仮想ネットワークに割り当てるリソースを増加させるスケーリングアウトまたはスケーリングアップ、及び、仮想ネットワークに割り当てるリソースを削減するスケーリングインまたはスケーリングダウンを含む。
【0010】
上述のスケーリングを自動的に行うオートスケーリングにおいては、例えば、CPUまたはメモリ等のリソースの使用率が所定の閾値を超えたときに、リソースが追加される。ただし、この方法では、新たなリソースが適切に設定されるまでの期間は、需要に対して十分なリソースが割り当てられない。このため、一時的に、サービスへのアクセスが遅延し、ユーザビリティが低下することがある。
【0011】
また、負荷が増加または減少する時間帯を予測可能なケースでは、予めリソースの量を設定しておく時限スケーリングが有効である。例えば、午前9~10時の期間に需要が増加するケース、或いは、週末に需要が減少するケースなどが考えられる。ただし、この方法では、想定外の需要の変化に対応することは困難である。
【0012】
そこで、本発明の実施形態に係わる仮想ネットワーク制御システムは、過去の事例に基づいて、リソースを増加させることが好ましい状況を予測する。そして、仮想ネットワーク制御システムは、その予測に基づいて、実際に負荷が増加する前に、仮想ネットワークに割り当てるリソースを増加させる。これにより、サービスへのアクセスの遅延を回避できるので、ユーザビリティが改善される。
【0013】
図1は、本発明の実施形態に係わる仮想ネットワーク制御システムの一例を示す。本発明の実施形態に係わる仮想ネットワーク制御システム1は、仮想環境500に構築される仮想ネットワーク(または、仮想ネットワーク機能)に割り当てるリソースを動的に制御するスケーリングを行う。
【0014】
仮想環境500は、1または複数のコンピュータにより提供される。この実施例では、仮想環境500は、複数の物理マシンPM1~PMmにより提供される。各物理マシンPM1~PMmは、それぞれ、1または複数のCPUおよび1または複数のメモリデバイスを備える。また、仮想環境500は、仮想基盤を介して複数の仮想マシンVM1~VMnを提供することができる。そして、ユーザ(例えば、通信事業者)は、1または複数の仮想マシンを利用してアプリケーションを動作させることで通信サービスを提供することができる。アプリケーションは、例えば、無線通信システムの基地局である。この場合、仮想環境500において仮想無線通信ネットワークが構築される。
【0015】
仮想ネットワーク制御システム1は、パフォーマンス監視部11、スケーリング制御部12、ベクトル生成部13、状態ベクトル保存部14、先行事象抽出部15、参照ベクトル保存部16、および予測制御部17を備える。なお、仮想ネットワーク制御システム1は、
図1に示していない他の機能をさらに備えてもよい。
【0016】
仮想ネットワーク制御システム1は、情報収集機能21を利用して仮想環境500または仮想環境500を利用して構築される仮想ネットワークの状態に係わる情報を収集することができる。情報収集機能21は、仮想環境500または仮想ネットワークの状態に係わる情報を収集するソフトウェアプログラムであり、この実施例では、仮想マシン上で実行することで実現される。そして、情報収集機能21は、仮想ネットワークに対して割り当てられているリソース(例えば、CPUおよびメモリ)の使用率を検出できる。また、情報収集機能21は、仮想ネットワークのログ情報、プロセス情報、およびセンサ情報を取得することができる。ログ情報は、仮想ネットワークの状態および動作を記述する。プロセス情報は、仮想ネットワークにおいて実行されたプロセスを表す。センサ情報は、仮想環境500を提供するコンピュータに実装されているセンサ(例えば、温度センサ)により検知される値を表す。なお、情報収集機能21は、仮想ネットワーク制御システム1の一部であってもよいし、仮想環境500の一部であってもよい。
【0017】
パフォーマンス監視部11は、所定の時間間隔で、仮想ネットワークに割り当てられているリソースの使用率が所定の使用率閾値を超えたか否かを判定する。リソースの使用率は、上述した情報収集機能21により検出される。そして、リソースの使用率が使用率閾値を超えたときには、パフォーマンス監視部11は、スケーリング制御部12に対して、仮想ネットワークに割り当てるリソースの増加を指示する。このとき、パフォーマンス監視部11は、後述する先行事象抽出部15に抽出を指示する。
【0018】
図2は、パフォーマンス監視部11の処理の一例を示すフローチャートである。このフローチャートの処理は、所定の時間間隔で実行される。所定の時間間隔は、特に限定されるものではないが、例えば、数秒から1分程度である。
【0019】
S1において、パフォーマンス監視部11は、情報収集機能21を利用して、仮想ネットワークに割り当てられているリソースの使用率を表す情報を取得する。具体的には、パフォーマンス監視部11は、仮想ネットワークに割り当てられているCPUの使用率および仮想ネットワークに割り当てられているメモリの使用率を表す情報を取得する。
【0020】
S2において、パフォーマンス監視部11は、CPUまたはメモリのうちの少なくとも一方の使用率が対応する使用率閾値を超えたか否かを判定する。使用率閾値は、特に限定されるものではないが、例えば、それぞれ80パーセントである。そして、CPUおよびメモリの双方の使用率がそれぞれ対応する使用率閾値以下であれば、パフォーマンス監視部11の処理は終了する。
【0021】
CPUまたはメモリのうちの少なくとも一方の使用率が対応する使用率閾値を超えているときは、S3において、パフォーマンス監視部11は、仮想ネットワークに係わる負荷が増加してリソースが不足している状態になったと判定する。この場合、パフォーマンス監視部11は、スケーリング制御部12に対して、仮想ネットワークに割り当てるリソースの増加を指示する。このとき、CPUの使用率が使用率閾値を超えたケースでは、パフォーマンス監視部11は、仮想ネットワークに割り当てるCPUの個数の増加を指示してもよい。また、メモリの使用率が使用率閾値を超えたケースでは、パフォーマンス監視部11は、仮想ネットワークに割り当てるメモリの容量の増加を指示してもよい。さらに、パフォーマンス監視部11は、S4において、先行事象抽出部15に抽出を指示する。ここで、抽出指示は、仮想ネットワークに割り当てられているリソースの使用率が使用率閾値を超えた時刻を表す情報を含むことが好ましい。なお、先行事象抽出部15の動作については、後で説明する。
【0022】
なお、特に図示しないが、仮想ネットワークに割り当てられているリソースの使用率が所定の下限閾値(例えば、20パーセント)より低くなったときには、パフォーマンス監視部11は、スケーリング制御部12に対して、仮想ネットワークに割り当てるリソースの削減を指示する。ただし、このとき、パフォーマンス監視部11は、抽出を指示する必要はない。
【0023】
スケーリング制御部12は、パフォーマンス監視部11または後述する予測制御部17から与えられる指示に応じてスケーリング制御を実行する。具体的には、仮想ネットワークに割り当てるリソースを増加させる旨の指示を受けたときには、スケーリング制御部12は、仮想ネットワークに割り当てるリソースを増加させる。このとき、スケーリング制御部12は、仮想ネットワークに割り当てるCPUの個数および/またはメモリの容量を増加させるスケーリングアウトを実行する。また、仮想ネットワークに割り当てるリソースを削減させる旨の指示を受けたときには、スケーリング制御部12は、仮想ネットワークに割り当てるリソースを削減させる。このとき、仮想ネットワークに割り当てるCPUの個数および/またはメモリの容量を削減するスケーリングインを実行する。
【0024】
ベクトル生成部13は、所定の時間間隔で、情報収集機能21により収集される状態情報から仮想ネットワークの状態を表す状態ベクトルを生成する。このとき、ベクトル生成部13は、生成した状態ベクトルにタイムスタンプを付加する。タイムスタンプは、状態情報が収集された時刻を表す時刻情報の一例である。そして、タイムスタンプが付加された状態ベクトルは、状態ベクトル保存部14に保存される。すなわち、状態ベクトル保存部14には、タイムスタンプ付き状態ベクトルが保存される。ここで、ベクトル生成部13は、所定の時間間隔で状態ベクトルを生成する。したがって、状態ベクトル保存部14には、タイムスタンプ付き状態ベクトルが蓄積される。
【0025】
この実施例では、状態ベクトルVは、n個のベクトル要素v1~vnから構成されるものとする。各ベクトル要素の値は、ログ情報、プロセス情報、およびセンサ情報に基づいて生成される。ログ情報に基づくベクトル要素は、ログ情報中に現れる文字列である。この場合、1つの単語が1つのベクトル要素として使用される。例えば、ログ情報中に現れる文字列「エラー」「スイッチ」「リターン」がそれぞれ1つのベクトル要素として使用される。すなわち、ログ情報の内容に基づいてベクトル要素が定義される。また、ベクトル要素の値は、所定期間内に検出される個数を表す。例えば、所定期間内にログ情報から5個の「エラー」が検出されたときには、このベクトル要素の値は「5」である。
【0026】
プロセス情報に基づくベクトル要素は、ログ情報に基づくベクトル要素と実質的に同じである。すなわち、プロセス情報に基づくベクトル要素は、プロセス情報中に現れる1または複数の文字列であり、その値は、所定期間内にプロセス情報から検出される、対応する文字列の個数を表す。センサ情報に基づくベクトル要素は、仮想環境500を提供するコンピュータに実装されている1または複数のセンサに対応する。例えば、仮想環境500が温度センサを備えるときは、ベクトル要素の値は、その温度センサにより検知される温度を表す。
【0027】
なお、状態ベクトルの要素は、ログ情報、プロセス情報、およびセンサ情報に限定されるものではない。すなわち、状態ベクトルの要素として、仮想環境500を利用して構築される仮想ネットワークの状態に係わる任意の情報を使用することができる。また、状態ベクトルの要素として、仮想ネットワークに割り当てられているCPUおよびメモリの使用率を採用してもよい。
【0028】
状態ベクトルの定義の一例は、下記の通りである。
V={エラー、スイッチ、リターン、...、温度}
また、あるサンプリング時刻に生成された状態ベクトルの一例は下記の通りである。
V={2、0、1、...、25.3}
この状態ベクトルは、前回のサンプリング時刻から今回のサンプリング時刻までの間のサンプリング期間内に、ログ情報において2個の「エラー」および1個の「リターン」が検出され、「スイッチ」が検出されなかった状態を表している。また、今回のサンプリング時刻の温度が25.3℃であったことを表している。
【0029】
図3は、ベクトル生成部13の処理の一例を示すフローチャートである。このフローチャートの処理は、サンプリング時刻において実行される。サンプリング時刻は、所定の時間間隔で設定される。すなわち、このフローチャートの処理は、所定の時間間隔で繰り返し実行される。所定の時間間隔は、特に限定されるものではないが、例えば、数秒から1分程度である。なお、直前のサンプリング時刻と今回のサンプリング時刻との間の期間を「サンプリング期間」と呼ぶことがある。
【0030】
S11において、ベクトル生成部13は、情報収集機能21により収集される状態情報を取得する。状態情報は、上述したように、ログ情報、プロセス情報、およびセンサ情報を含む。このとき、ベクトル生成部13は、前回のサンプリング時刻から今回のサンプリング時刻までの間のログ情報およびプロセス情報、及び、今回のサンプリング時刻におけるセンサ情報を取得する。
【0031】
S12において、ベクトル生成部13は、サンプリング期間内のログ情報およびプロセス情報において現れる文字列をカウントする。ログ情報およびプロセス情報の取得時に未知の文字列が検出されたときには、ベクトル生成部13は、その新たな文字列を状態ベクトルの要素として追加することで、自律的に情報を収集することができる。S13において、ベクトル生成部13は、サンプリング時刻におけるセンサ値を取得する。上述の例では、温度センサにより検知された「温度」が取得される。
【0032】
S14において、ベクトル生成部13は、S12~S13で取得した数値をベクトル要素の値とする状態ベクトルを生成する。S15において、ベクトル生成部13は、生成した状態ベクトルにタイムスタンプを付加する。タイムスタンプは、今回のサンプリング時刻を表す。以下の記載では、タイムスタンプが付加された状態ベクトルを「タイムスタンプ付き状態ベクトル」と呼ぶことがある。そして、S16において、ベクトル生成部13は、タイムスタンプ付き状態ベクトルを状態ベクトル保存部14に保存する。
【0033】
ここで、
図3に示すフローチャートの処理は、所定の時間間隔で繰り返し実行される。よって、状態ベクトル保存部14には、タイムスタンプ付き状態ベクトルが蓄積される。
【0034】
図4は、状態ベクトル保存部14の一例を示す。この実施例では、1分間隔でベクトル生成部13により状態ベクトルが生成され、状態ベクトル保存部14に蓄積されている。各状態ベクトルにはタイムスタンプが付加されている。
【0035】
なお、上述の実施例では、ログ情報およびプロセス情報において検索する文字列が予め決められていないが、本発明の実施形態はこの方式に限定されるものではない。例えば、ベクトル生成部13がカウントすべき文字列(すなわち、ベクトル要素)として、ネットワーク管理者により予め指定された文字列を含めても構わない。この場合、ネットワーク管理者が注目する文字列に対する状態ベクトルの情報を収集し、後述する相関値の計算に利用することができる。
【0036】
なお、後述する先行事象抽出部15および予測制御部17において、状態ベクトル間の相関を計算する際、2つのベクトルのベクトル要素が互いに一致していることが好ましい。よって、状態ベクトルに新たなベクトル要素が追加されるときには、状態ベクトル保存部14に保存されている各状態ベクトルにおいて、追加されたベクトル要素の値として「ゼロ」を設定してもよい。
【0037】
先行事象抽出部15は、仮想ネットワークに割り当てるリソースの使用率が使用率閾値を超えた時刻から所定時間だけ過去にさかのぼった時刻を表す予兆時刻を特定する。そして、先行事象抽出部15は、状態ベクトル保存部14に保存されている状態ベクトルの中から、特定した予兆時刻に対応づけられた状態ベクトルを抽出する。以下の記載では、予兆時刻に対応づけられた状態ベクトルを「参照ベクトル」と呼ぶことがある。
【0038】
図5は、先行事象抽出部15の処理の一例を示すフローチャートである。なお、状態ベクトル保存部14には、現在時刻までの状態ベクトルが蓄積されているものとする。
【0039】
S21において、先行事象抽出部15は、パフォーマンス監視部11により生成される抽出指示を待ち受ける。なお、パフォーマンス監視部11は、上述したように、仮想ネットワークに割り当てられているリソースの使用率が使用率閾値を超えたときに抽出指示を先行事象抽出部15に与える。このとき、抽出指示は、仮想ネットワークに割り当てられているリソースの使用率が使用率閾値を超えた時刻を表す情報を含むものとする。なお、以下の記載では、仮想ネットワークに割り当てられているリソースの使用率が使用率閾値を超えた時刻を「使用率超過時刻」と呼ぶことがある。なお、使用率超過時刻は、特に限定されるものではないが、例えば、パフォーマンス監視部11により取得される。
【0040】
抽出指示を受信すると、先行事象抽出部15の処理はS22に進む。S22において、先行事象抽出部15は、モニタ期間を設定する。また、S23において、先行事象抽出部15は、使用率超過時刻の状態ベクトルとモニタ期間内の各状態ベクトルとの相関を計算することで相関プロファイルを作成する。ここで、状態ベクトルは、上述したように、所定の時間間隔でベクトル生成部13により生成され、状態ベクトル保存部14に蓄積されている。2個のベクトル(V1、V2)の相関は、cos(V1-V2)の絶対値を計算することで得られる。なお、計算結果が「1」に近いほど相関が高い状態を表し、計算結果が「ゼロ」に近いほど相関が低い状態を表す。
【0041】
図6は、先行事象抽出部15により作成される相関プロファイルの一例を示す。モニタ期間は、使用率超過時刻T0を基準として設定される。具体的には、モニタ期間は、
図6に示すように、時刻T1~時刻T2である。T1は、使用率超過時刻T0から時間ΔT1だけさかのぼった時刻を表し、T2は、使用率超過時刻T0から時間ΔT2だけさかのぼった時刻を表す。ΔT2は、特に限定されるものではないが、例えば、仮想環境500におけるスケーリング処理に要する時間の2分の1程度に設定される。この場合、例えば、仮想環境500におけるスケーリング処理に要する時間が1分間であるときは、ΔT2は30秒程度に設定される。ΔT1は、特に限定されるものではないが、数分~数10分に設定される。
【0042】
相関プロファイルは、使用率超過時刻の状態ベクトルとモニタ期間内の各状態ベクトルとの相関を計算し、各相関値を時間軸に対してプロットすることで作成される。よって、例えば、モニタ期間が10分間であり、ベクトル生成部13により10秒間隔で状態ベクトルが生成されるケースでは、時間軸に対して60個の相関値がプロットされる。この実施例では、相関値は、モニタ期間内で上昇している。なお、モニタ期間外(即ち、時刻T1以前、及び、時刻T2以降)は、相関値を計算する必要はない。
【0043】
S24において、先行事象抽出部15は、モニタ期間内で相関値が相関閾値を超えているか否かを判定する。すなわち、モニタ期間内で相関値が上昇して相関プロファイルと閾値ラインとがクロスしているか否かが判定される。相関閾値は、2つの状態ベクトルにより表される2つの状態が互いに近似しているか否かを判定できるように決定される。
【0044】
モニタ期間内で相関値が相関閾値を超えたときには、S25において、先行事象抽出部15は、相関値が相関閾値を超えた時刻を特定する。ここで、使用率超過時刻の状態ベクトルは、仮想ネットワークに割り当てるリソースの使用率が使用率閾値を超えた時点での仮想ネットワークの状態を表す。よって、モニタ期間内で相関値が上昇していくときは、仮想ネットワークに割り当てられているリソースの使用率が上昇していく状況を表している。そして、相関値が上昇して相関閾値を超えるタイミングは、仮想ネットワークに割り当てられているリソースが不足する状況の予兆が現れた時刻と考えられる。なお、以下の記載では、モニタ期間内で相関値が上昇して相関閾値を超えるタイミングを「予兆時刻」と呼ぶことがある。
【0045】
S26において、先行事象抽出部15は、状態ベクトル保存部14に蓄積されている状態ベクトルの中から予兆時刻に対応する状態ベクトルを抽出し、その抽出した状態ベクトルを、参照ベクトルとして参照ベクトル保存部16に保存する。なお、予兆時刻に対応する状態ベクトルは、予兆時刻における仮想ネットワークの状態を表す。すなわち、参照ベクトルは、仮想ネットワークに割り当てられているリソースが不足する状況の予兆が現れた時刻における仮想ネットワークの状態を表す。
【0046】
ここで、
図5に示すフローチャートの処理は、仮想ネットワークに割り当てられているリソースの使用率が使用率閾値を超えるごとに実行される。したがって、参照ベクトル保存部16には、参照ベクトルが蓄積される。参照ベクトル保存部16の一例を
図7に示す。
【0047】
なお、
図5に示すS24において、モニタ期間内に相関値が相関閾値を超えていないときには、先行事象抽出部15の処理は終了する。例えば、
図8(a)に示すケースでは、モニタ期間内で相関値が相関閾値より高い状態が継続している。すなわち、仮想ネットワークに割り当てられているリソースの使用率が使用率閾値を超える前の所定期間内に、仮想ネットワークの状態はさほど変化していない。この場合、リソースの使用率が使用率閾値を超える状況の予兆に対応する状態を特定することは困難である。また、
図8(b)に示すケースでは、モニタ期間が終了した後に、相関値が急激に上昇して相関閾値を超えている。このケースは、非常に短い時間(例えば、仮想環境500におけるスケーリング処理に要する時間よりも短い時間)内にリソースの使用率が急激に上昇したと考えられる。この場合、後述する予測制御部17からの指示に応じてスケーリング処理を行っても、リソースの増加が負荷の増加に間に合わない。したがって、これらのケースでは、先行事象抽出部15は参照ベクトルを抽出する必要はない。
【0048】
予測制御部17は、仮想ネットワークの現在の状態を表す状態ベクトルと、参照ベクトル保存部16に保存されている各参照ベクトルとの相関を計算する。そして、1以上の相関値が所定の閾値より高いときに、予測制御部17は、スケーリング制御部12に対して仮想ネットワークに割り当てるリソースの増加を指示する。
【0049】
図9は、予測制御部17の処理の一例を示すフローチャートである。このフローチャートの処理は、所定の時間間隔で実行される。或いは、このフローチャートの処理は、ベクトル生成部13により新たな状態ベクトルが生成されて状態ベクトル保存部14に保存されたときに実行される。ここで、ベクトル生成部13は、上述したように、所定の時間間隔で最新の状態ベクトルを生成する。よって、この場合、予測制御部17は、ベクトル生成部13と同期して、
図9に示すフローチャートの処理を所定の時間間隔で実行することになる。また、予測制御部17は、最新の状態ベクトルについて
図9に示すフローチャートの処理を実行することになる。以下の記載では、最新の状態ベクトルを「現在時刻の状態ベクトル」と呼ぶことがある。なお、このフローチャートの処理が実行される前に、状態ベクトル保存部14に現在時刻までの状態ベクトルが蓄積されており、また、参照ベクトル保存部16に1または複数の参照ベクトルが保存されているものとする。
【0050】
S31において、予測制御部17は、現在時刻の状態ベクトルを取得する。すなわち、予測制御部17は、状態ベクトル保存部14に最も新しく保存された状態ベクトルを取得する。S32において、予測制御部17は、参照ベクトルを取得する。すなわち、予測制御部17は、参照ベクトル保存部16に保存されている1または複数の参照ベクトルを取得する。
【0051】
S33において、予測制御部17は、現在時刻の状態ベクトルと各参照ベクトルとの相関を計算する。そして、S34において、予測制御部17は、現在時刻の状態ベクトルとの相関値が所定の予測制御判定閾値を超える参照ベクトルの有無を判定する。予測制御判定閾値は、現在の状態ベクトルにより表される状態と参照ベクトルにより表される状態とが互いに十分に近似しているか否かを判定できるように決定される。
【0052】
例えば、
図10に示す例では、参照ベクトル保存部16に参照ベクトルRV1~RV3が保存されている。この場合、予測制御部17は、新たな状態ベクトル(即ち、現在時刻の状態ベクトル)を取得するごとに、その新たな状態ベクトルと各参照ベクトルRV1~RV3との相関を計算する。なお、この実施例では、予測制御判定閾値は「0.7」である。
【0053】
図10(a)に示すケースでは、いずれの相関値も予測制御判定閾値を超えていない。この場合、S34の判定は「No」であり、予測制御部17の処理は終了する。これに対して、
図10(b)に示すケースにおいては、現在時刻の状態ベクトルと参照ベクトルRV3との相関を表す相関値が予測制御判定閾値を超えている。この場合、S34の判定は「Yes」であり、予測制御部17の処理はS35に進む。
【0054】
現在時刻の状態ベクトルとの相関値が予測制御判定閾値を超える参照ベクトルが見つかったときは、予測制御部17は、現在の仮想ネットワークの状態が、過去にリソース不足の予兆が現れたときの仮想ネットワークの状態と類似していると判定する。すなわち、予測制御部17は、近い将来において、仮想ネットワークに割り当てられているリソースが不足することになる可能性が高い、と判定する。したがって、S35において、予測制御部17は、スケーリング制御部12に対して、仮想ネットワークに割り当てるリソースの増加を指示する。
【0055】
なお、スケーリング制御部12は、予測制御部17から増加の指示を受けると、仮想ネットワークに割り当てるリソースを増加させる。このとき、スケーリング制御部12は、仮想ネットワークに割り当てるCPUの個数および/またはメモリの容量を増加させるスケーリングアウトを実行する。
【0056】
このように、本発明の実施形態に係わる仮想ネットワーク制御システム1は、仮想ネットワークによる負荷が増加する状況を事前に予測することができ、負荷が増加する予兆を検知した時点で、その仮想ネットワークに割り当てるリソースを増加させるスケーリングを実行する。よって、リソース不足が発生する前にスケーリングを完了させることが可能となり、エンドユーザにおける応答性および操作性の低下が回避される。
【0057】
なお、パフォーマンス監視部11においてスケーリングの要否を判定するための使用率閾値を低く設定する構成であっても、リソース不足が発生する前にスケーリングを実行することは可能である。ただし、この場合、リソースを増加させる必要がないケースにスケーリング処理が実行されることがあり、仮想環境500の動作効率が低下する。これに対して、本発明の実施形態においては、このような不要なスケーリング処理が削減されるので、仮想環境500の動作効率が改善する。
【0058】
また、本発明の実施形態においては、パフォーマンス監視部11によりリソース不足が検出される毎に、リソース不足の予兆を検知するための参照ベクトルが蓄積される。したがって、時間経過に伴って、リソース不足の予兆を検知する予測機能の精度が自律的に向上していく。
【0059】
<バリエーション>
図1に示す仮想ネットワーク制御システム1においては、予測制御部17は、現在時刻の状態ベクトルと参照ベクトル保存部16に蓄積されている各参照ベクトルとの相関を計算することで、スケーリング処理の要否を判定する。ここで、リソース使用率の予測に基づいてスケーリング処理を遅延なく実行するためには、予測制御部17は、リアルタイム処理が要求される。他方、仮想ネットワークに割り当てられているリソースの使用率が使用率閾値を超えると、新たな参照ベクトルが抽出されて参照ベクトル保存部16に保存される。よって、参照ベクトル保存部16に多くの参照ベクトルが蓄積されることがある。そして、参照ベクトル保存部16に多くの参照ベクトルが蓄積されていると、予測制御部17がスケーリング処理の要否を判定する処理が遅延するおそれがある。そこで、本発明の実施形態のバリエーションにおいては、予測制御部17の負荷を軽減してリアルタイム処理を容易にする機能を備える。
【0060】
図11は、本発明の実施形態に係わる仮想ネットワーク制御システムのバリエーションの一例を示す。
図11に示す仮想ネットワーク制御システム1Bは、
図1に示す仮想ネットワーク制御システム1において、選択部18をさらに備える。選択部18は、予測制御部17において現在時刻の状態ベクトルとの相関が計算される参照ベクトルの個数を制限する。
【0061】
選択部18は、例えば、参照ベクトル保存部16に蓄積されている参照ベクトルのうちから、最新のN個の参照ベクトルを選択する。この場合、参照ベクトル保存部16に多数の参照ベクトルが蓄積されている場合であっても、予測制御部17は、現在時刻の状態ベクトルとN個の参照ベクトルとの相関をそれぞれ計算するだけでよい。なお、Nの値は、例えば、要求されるリアルタイム性および予測制御部17の演算能力などに基づいて、シミュレーション等で決定される。
【0062】
あるいは、選択部18は、統計処理を利用して所定数の代表参照ベクトルを決定してもよい。例えば、選択部18は、K-meansクラスタリングで参照ベクトル保存部16に蓄積されている参照ベクトルをグループ化することで所定数のクラスタを検出する。
図12(a)に示す実施例では、3個のクラスタCL1~CL3が検出されている。なお、
図12においては、参照ベクトルは、図面を見やすくするために2次元で表されている。また、三角形のシンボルは、それぞれ参照ベクトルが表す状態を示している。そして、選択部18は、クラスタ毎に参照ベクトルの重心を計算することで、各クラスタに対応する代表参照ベクトルを決定する。この実施例では、
図12(b)において星形のシンボルで表される3個の代表参照ベクトルが算出される。この場合、予測制御部17は、現在時刻の状態ベクトルと各代表参照ベクトルとの相関を計算する。
【0063】
このように、本発明の実施形態のバリエーションによれば、予測制御部17において現在時刻の状態ベクトルとの相関が計算される参照ベクトルの個数が制限される。したがって、予測制御部17によるスケーリング処理の要否判定が遅延することはなく、仮想ネットワークの負荷が増加する前にリソースを増加させることができる。
【0064】
図13は、本発明の実施形態に係わる仮想ネットワーク制御システムの他のバリエーションの一例を示す。
図13に示す仮想ネットワーク制御システム1Cは、
図1に示す仮想ネットワーク制御システム1または
図11に示す仮想ネットワーク制御システム1Bにおいて、正規化/重みづけ部19をさらに備える。正規化/重みづけ部19は、予測制御部17において相関計算が行われる各ベクトル(すなわち、現在時刻の状態ベクトルおよび各参照ベクトル)に対して、正規化処理および重みづけ処理を行う。
【0065】
正規化は、ベクトルの長さを「1」にする処理に相当する。ここで、正規化された2つのベクトルの相関値は、それら2つのベクトルの内積を計算することで得られる。したがって、現在時刻の状態ベクトルおよび各参照ベクトルを正規化すれば、予測制御部17の負荷を軽減することができる。
【0066】
重みづけは、状態/参照ベクトルを構成する複数のベクトル要素のうち、スケーリング処理の要否判定において重要なベクトル要素を強調する処理に相当する。重みづけは、例えば、TF-IDF(Term Frequency Inverse Document Frequency)により実現される。TF-IDFは、多くのデータセットにおいて出現する要素を軽くし、特定のデータセットのみに出現する要素を強調する。
【0067】
なお、
図13に示す実施例では、状態ベクトル保存部14から取得する現在時刻の状態ベクトルおよび参照ベクトル保存部16から取得する各参照ベクトルに対して正規化/重みづけが行われるが、本発明はこの構成に限定されるものではない。例えば、ベクトル生成部13により生成される状態ベクトルに対して、状態ベクトル保存部14に保存される前に、正規化/重みづけを行ってもよい。また、正規化および重みづけの双方を実行する必要はなく、正規化または重みづけの一方のみを実行する構成であってもよい。
【0068】
<ハードウェア構成>
図14は、仮想ネットワーク制御システム1(1B、1C)のハードウェア構成の一例を示す。仮想ネットワーク制御システム1(1B、1C)は、プロセッサ101、メモリ102、記憶装置103、入出力デバイス104、記録媒体読取り装置105、および通信インタフェース106を備えるコンピュータ100により実現される。
【0069】
プロセッサ101は、記憶装置103に保存されている仮想ネットワーク制御プログラムを実行することにより、仮想ネットワーク制御システム1(1B、1C)の動作を制御する。仮想ネットワーク制御プログラムは、
図2、
図3、
図5、および
図9に示すフローチャートの手順を記述したプログラムコードを含む。よって、プロセッサ101がこのプログラムを実行することで、
図1に示すパフォーマンス監視部11、スケーリング制御部12、ベクトル生成部13、先行事象抽出部15、および予測制御部17(及び、選択部18、正規化/重みづけ部19)の機能が提供される。メモリ102は、プロセッサ101の作業領域として使用される。記憶装置103は、上述した仮想ネットワーク制御プログラムおよび他のプログラムを保存する。状態ベクトル保存部14および参照ベクトル保存部16は、メモリ102または記憶装置103により実現される。
【0070】
入出力デバイス104は、キーボード、マウス、タッチパネル、マイクなどの入力デバイスを含む。また、入出力デバイス104は、表示装置、スピーカーなどの出力デバイスを含む。記録媒体読取り装置105は、記録媒体110に記録されているデータおよび情報を取得できる。記録媒体110は、コンピュータ100に着脱可能なリムーバブル記録媒体である。また、記録媒体110は、例えば、半導体メモリ、光学的作用で信号を記録する媒体、または磁気的作用で信号を記録する媒体により実現される。なお、仮想ネットワーク制御プログラムは、記録媒体110からコンピュータ100に与えられてもよい。通信インタフェース106は、ネットワークに接続する機能を提供する。なお、仮想ネットワーク制御プログラムがプログラムサーバ120に保存されているときは、コンピュータ100は、プログラムサーバ120から仮想ネットワーク制御プログラムを取得してもよい。
【符号の説明】
【0071】
1 仮想ネットワーク制御システム
11 パフォーマンス監視部
12 スケーリング制御部
13 ベクトル生成部
14 状態ベクトル保存部
15 先行事象抽出部
16 参照ベクトル保存部
17 予測制御部
18 選択部
19 正規化/重みづけ部
21 情報収集機能
100 コンピュータ
101 プロセッサ
500 仮想環境