【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度、独立行政法人情報通信研究機構、「高速通信・放送研究開発委託研究/高機能光電子融合型パケットルータ基盤技術の研究開発」、産業技術力強化法第19条の適用を受ける特許出願
(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
ソフトウェア制御が可能なネットワーク(SDN:Software Defined Networking)の一つの技術要素として、ネットワークノードの機能をネットワークルーチング機構(ノードのデータ転送機能)とコントローラ機構(ノードでの制御ソフトウェア・ルーチング制御機能)とに、分離できるようにインタフェースを公開し、ネットワーク制御をプログラマブルにすることにより、柔軟な経路制御や構成変更等が容易に実現可能となる機構が注目されている。SDNではコントローラがネットワークの全情報を集め、一元的に定義し、ソフトウェアを活用した集中制御処理に基づいて、ネットワーク全体を制御できる特徴を持つ。コントローラは、スイッチ制御用のソフトウェアを配備することにより、スイッチの動作を制御できる。SDNの実現方法の1つとして、オープンフロー(OpenFlow:非特許文献1など)と呼ばれるネットワークプラットフォームの標準化が進められ、オープンソースによる実装と同時に企業によるシステム/製品群が市場に出てきている。
【0003】
しかしながら、上記スイッチの動作情報の未設定や新しい機能やサービスの追加等に起因する、スイッチとコントローラの間の制御用トラヒックの急激な増加に対しては、上記のコントローラの処理能力は逼迫し、コントローラのスケーラビリティは、保障できない状況が生じ得る。また、当該のコントローラに故障が発生した場合の対策に関しては、当該の技術が開示されていないのが現状である。また、SDNを実現するコントローラに関しては、NECが開発し、オープンソースとして公開したTremaや、スタンフォード大学で開発されたBeacon、NOX/POX等があるが、本願で開示する技術は、いずれのコントローラに対しても、同様に適用することが可能である。
【0004】
すなわち、現時点におけるSDN実現上の技術的な課題の一つは、ネットワークで提供されるサービスに対して、一時的に発生するネットワークへのアクセス集中や、スイッチの動作として登録されていない新しいトラヒックフローを含めた、急激なトラヒック増加や、コントローラの故障に対して、迅速に当該のコントローラの処理能力の増大化や、代替えとなるシステムを割り当てるための、メカニズムが確立されていない状況にある。
【0005】
図1に、SDNの基本構成の一例を示す。一般的なオープンフロースイッチの構成を示す。オープンフロースイッチでは、従来のルータ等のネットワーク機器が持つ機能を、オープンフローコントローラ(以下、OFCと記す。)92とフローテーブルの内容に基づいてパケットを転送するオープンフロースイッチ(以下、OFSと記す。)91とに分離されている。OFC92は、OFS91内のスイッチ11へのパケット処理動作や統計処理機能等の制御行う。OFS91は、スイッチ11と、フローテーブル12を備える。スイッチ11は、OFC92の指示に従い、入力トラヒックのフロー情報に基づいて、パケットに対するルーチング等の処理(アクション)を行う。ネットワーク管理者は、入力トラヒックのフローの優先処理方法、廃棄方法および、経路設定方法等のアクションを、事前に、フローテーブル12内のフローエントリーにインストラクションとして登録する。このフローエントリー内のインストラクション等のパケット処理に関わる制御内容は、OFS91の外部にあるOFC92からのソフトウェアにより管理される。OFS91は登録されたフローテーブル12に対して、パケットトラヒックの処理に関わるマッチングルールを適用して、マッチしたフローエントリーに示された転送処理を当該パケットに対して行う。
【0006】
OFS91は、自身のフローテーブル12にて未定義のトラヒックフローが到着した場合、OFC92に未定義フローに対する動作(アクション)を問い合わせる場合がある。OFC92は未定義フローに対する動作を、当該OFS91に指示する。OFS91に入力されるトラヒックフローに対して、予めフローテーブル12(インストラクション等のアクションリスト)に未登録のトラヒックフローが増えた時には、OFS91とOFC92との間でこの制御メッセージのやり取りが多数発生する。また、OFC92ではOFS91に指示すべきフローエントリー決定のための処理負荷が増大する。このように、オープンフロー制御機構(パケット処理の制御機構)に対して、制御トラヒック量およびトラヒック処理量が、想定した負荷量の閾値以上に増大し、OFC92により管理するネットワークの制御が困難になる危険性があった。
【0007】
すなわち、集中制御方式を前提とした現状のOFC(制御用サーバ)92によるネットワーク制御では、コントローラへ加わる制御用トラヒックの処理能力が過剰になり、通信サービスを継続できない事態が発生し得る。
【0008】
従来、これらのトラヒックに対する対処方法としては、ユーザに対して、一時的に利用を控えるように通知する方法や、強制的にOFC92への制御用のトラヒックを、OFS91の前段または、OFS91内で、遮断又は廃棄する手法が一般的であった。ユーザの通信サービスの継続に関わる信頼性の向上、および、今後の新しい形態の通信トラヒックの増加にも対応できる必要があり、従来の方式に代わる新たな技術の開発が求められていた。
【0009】
一方、サーバの仮想化技術の進歩により、新たなサービスの追加が必要となった場合においても、複数の物理的なリソースを、ユーザ要望に適うように、要求される処理能力に応じて、随時、適切に組み合わせて同時に活用することが可能である。例えば、OFC92に代表されるネットワーク制御用の通信機器を適切に配備して、新しいサービスを実施するために必要な処理能力を増強することも可能である。
【0010】
非特許文献2、非特許文献3には、OFC92を複数の物理的なリソースで構成される分散環境上に実装することで、信頼性と可用性の保証を実現する例が示されている。非特許文献2は、OFC92が備えるべきデータを分散データベース上に構築し、OFC92を介して実装されるネットワークアプリケーションに対して適切なAPI(Application Programming Interface)を提供することにより、OFC92の分散化を実現している。非特許文献3は、データを分散データベース上で管理すると共に、複数のOFC92間で通信を行うことで同期をとる方法が示されている。また、特許文献1には、複数のOFC92を配備し、負荷状態に応じてOFC92が制御するOFS91の使用数を変化させることで、負荷分散、消費電力の削減、可用性の保証を行う方式が述べられている。
【発明を実施するための形態】
【0028】
添付の図面を参照して本発明の実施形態を説明する。以下に説明する実施形態は本発明の実施の例であり、本発明は、以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【0029】
本発明は、予想できない制御トラヒック量の増大が、一時的に生じた場合、あるいは、継続して発生する場合に対して、クラウド等のコンピューティング、およびネットワークリソースを前提とした仮想リソース環境を効率的に活用し、ネットワーク制御装置あるいは、オープンフロー制御機構(パケット処理制御機構)を仮想化されたクラウドを活用することにより、大規模な処理能力を動的に確保するための技術手段を開示するものである。本発明は任意のSDNコントーラに適用できるが、以下の実施形態ではSDNコントローラの一例としてOFCについて説明する。
【0030】
図1に示すSDNにおけるネットワーク制御を考えた場合、OFC92の位置する制御レイヤ82の上位に、ネットワークアプリケーション93を配備する方法が一般的である。この場合、ネットワークアプリケーション93は、OFC92の上位に存在し、新しいネットワーク制御用のアプリケーションソフトウェアを導入する場合や、ネットワーク制御用の経路計算アルゴリズムを変更する場合など、通常のネットワーク管理や監視機能を更改する場合などに活用する。SDNに関する標準化はAPIも含め、まだ十分には進んでおらず、各OFC92の実装に依存してアプリケーション93も実装されているのが現状である。本発明における記述では、既存のOFC92とアプリケーションが1つの物理または仮想マシン(図中においてはVMと表記する。)上に実装されている場合において、クラウドの等の仮想環境を活用することにより、高可用性、高拡張性、リソースの有効活用を、ダイナミックかつシンプルに実現するネットワーク制御メカニズムを開示する。将来的にOFC92とアプリケーション93間のAPIが定まった場合は、最も処理能力の変動が想定されるOFC92の処理能力に対して本発明を適用することも実施形態として有効である。
【0031】
図2に本発明の実施形態として、OFC92に対して、ライブクローン作成を行うためのメカニズムの概要を示す。OFS91(OFS#1〜OFS#n)に対して、各OFS91を制御するOFC92として仮想的なOFC#1が割り当てられる。仮想的なOFC#1は、1つの仮想マシン71#1上で稼働させることも可能であるが、負荷状態によって複数の仮想マシン71#1及び仮想マシン71#2で稼働させることも可能である。
【0032】
OFS91とOFC92で構成されるネットワークに対して、別途OFCリソースコントローラ95を設ける。OFC92がSDNコントローラとして機能し、OFCリソースコントローラ95がSDNコントローラ制御部として機能する。OFCリソースコントローラ95は、OFC92をどのような仮想/物理構成で実現するかを管理し、制御する機構である。OFCリソースコントローラ95は、オープンフロー制御トラヒック監視機能951、OFCリソース負荷監視機能952、ライブクローン制御機能953、ロードバランス制御機能954を持つ。
【0033】
本実施形態に係るSDNコントローラの制御方法は、ソフトウェア制御を用いてコントローラとスイッチの対応付けを制御する方法であって、判定手順と、制御手順と、を順に有する。判定手順では、オープンフロー制御トラヒック監視機能951及びOFCリソース負荷監視機能952を機能させる。制御手順では、ライブクローン制御機能953を機能させる。ライブクローン制御機能953を機能させた後に、ロードバランス制御機能954を機能させる。
【0034】
オープンフロー制御トラヒック監視機能951は、OFS91に流入するトラヒックのうち、OFC92へ転送される制御トラヒック量を監視する。
OFCリソース負荷監視機能952は、OFC92のリソース(CPU負荷、メモリ容量、I/O転送量等)を監視する。
【0035】
ライブクローン制御機能953は、OFC92が過負荷であることを検知する。例えば、ライブクローン制御機能953は、オープンフロー制御トラヒック監視機能951により観測された制御トラヒック量が、事前に設定された閾値を超えると過負荷を検知する。また、ライブクローン制御機能953は、OFCリソース負荷監視機能952により観測された、OFC92のリソースが事前に設定された閾値を超えると過負荷を検知する。
【0036】
ライブクローン制御機能953は、過負荷状態を検知すると、仮想マシン71(OFC)のライブクローンが必要と判断する。また、現在過負荷状態ではないが、今後過負荷になる可能性がある場合も仮想マシン71(OFC)のライブクローンが必要と判断する。ライブクローン制御機能953は、クラウドのリソースを管理し、仮想マシン71のライブクローンをどのリソースに生成するかを判断し、ライブクローンを作成する。このとき、ライブクローン制御機能953は、ライブクローン作成指示をVM71に通知する。
【0037】
ロードバランス制御機能954は、ライブクローンの生成が完了すると、負荷分散を行うために制御トラヒックの分配を指示するロードバランス指示を仮想マシン71のほか、該当のOFS91やロードバランサに対して指示する。ここでは、処理能力を増やすために、ライブクローンを作成する場合を示したが、仮に、OFC#1が何らかの状況(故障発生や、別のアプリケーションの実施等)が発生した場合には、ライブマイグレーションを行うことにより、他のクラウドのリソースを活用するように、制御動作を実施することも同様に可能である。
【0038】
OFS91やOFC92とは別の媒体上で構成することが好ましい機能をまとめて、OFCリソースコントローラ95上に配備する。オープンフロー制御トラヒック監視機能951は、OFS91内に配備する方法、OFC92内に配備する方法、OFCリソースコントローラ95上に配備する方法がある。また、OFCリソース負荷監視機能952は、OFC92内に配備する方法、OFCリソースコントローラ95上に配備する方法がある。ライブクローン制御機能953とロードバランス制御機能954は、OFCリソースコントローラ95上に配備するのが望ましい。各機能の配備は、この物理的論理的構成に縛られるものではなく、例えば、ロードバランス制御機能954のみを別の物理構成上に実装することは、OFCリソースコントローラ95をクラウド上で実現し分散制御を行う実施形態も考えられる。
【0039】
オープンフロー制御トラヒック監視機能951は、OFS91とOFC92間のトラヒック量があらかじめ定められた閾値以上であると高負荷であると検知し、ライブクローン制御機能953に通知する。また、ライブクローン制御機能953やロードバランス制御機能954がオープンフロー制御トラヒック量に関する情報を所望する場合に、当該情報を提供する。
【0040】
オープンフロー制御トラヒック監視機能951をOFS91内に配備する場合は、オープンフローとは全く別の機構で、OFCとやり取りされる制御トラヒック量を監視する方法や、オープンフローの機構を利用してコントローラ95に対するトラヒックフローをフローテーブル12内に定義し、フローテーブル12のカウント機能を利用して監視する方法等がある。
【0041】
オープンフロー制御トラヒック監視機能951をOFC92内に配備する場合は、オープンフローとは全く別の機構で、OFS91とやり取りされる制御トラヒック量を監視する方法や、オープンフローの機構を利用して、OFC92に対するトラヒックフローをフローテーブル12内に定義し、フローテーブル12の内のカウンタ値をOFC92経由で取得することで監視する方法がある。このトラヒック監視機能は、OFCリソースコントローラ95上に配備する他にも、OFS91やOFC92とは別の監視センターに配備する場合でも、同等な機能を実現するネットワーク制御が可能となることは、いうまでもない。
【0042】
OFCリソース負荷監視機能952は、OFC92の仮想マシン71のリソースを監視し、リソースの使用状況、負荷状況があらかじめ定められた閾値以上であると高負荷であると検知し、ライブクローン制御機能953に通知する。また、ライブクローン制御機能953やロードバランス制御機能954が各OFC92の仮想マシン71のリソース情報を所望する場合に、当該情報を提供する。
【0043】
ライブクローン制御機能953は、
(1)どの仮想マシン71を選択して複製又は縮退するか、
(2)どのような手順でライブクローンを実施するか、
を決定して実行する。オープンフロー制御トラヒック監視機能951により過負荷が報告された場合、またはOFCリソース負荷監視機能952より過負荷が報告された場合に、当該OFC92を構成する仮想マシン71のライブクローンが必要と判断する。それ以外にも、定期的に、オープンフロー制御トラヒック監視機能951からオープンフロー制御トラヒック情報と、OFCリソース負荷監視機能952からリソース情報を取得し、将来的に過負荷が予想される場合に当該仮想マシン71のOFC92のライブクローンが必要と判断する。
【0044】
一方、OFS91に加わる負荷が定常的に減少し、現在配備されているOFC91に割り当てられたクラウド内のリソースが明らかに余剰であることが、トラヒック量の監視結果により明らかになった場合には、上記に述べたOFC92用のリソースを減少させるための制御を行う(減設)必要がある。どの番号のOFC92を減設するかを決定する場合には、一般には、減設の影響により、処理能力の減少効果が少ない順番に選択する方法が、安全である。しかしながら、クラウド内での、他のアプリケーションの処理状況により、減設する場合の優先順位は、異なる場合も存在し、上記の方法に限定されるものではないことは明らかである。
【0045】
ライブクローン制御機能953が、ライブクローン生成方法を決定し、ライブクローンを作成する場合には、次の2通りの方法が考えられる。
第1の方法:フローテーブル12の全情報を格納したデータベースの情報も一緒にコピーし、全く同等のサーバとして用いる。
第2の方法:フロー制御に最小限必要となる情報はコピーするが、全情報コピーを対象とせず、新しいフローテーブル12の情報のみを追記したサーバとして用いる。
【0046】
第1の方法は、信頼性を高めるための冗長制御が実現できるライブクローンとして用いる場合であり、通常は、負荷分散装置(ロードバランサ)と接続して使用される。一方、第2の方法は、緊急的にトラヒックが増えそうな場合を予め予測して、緊急時に行う処理に適する。そのため、OFC92用のサーバ処理能力に余剰能力等の、余裕が出てきた時点で、第2の方法の形態から第1の方法の形態に移行する運用方式が好ましい。
【0047】
一般に、ライブクローンを作成する場合の、レプリケーション技術はデータベースの内容の一貫性を保ちながら、情報を複製する技術として活用され、同じデータを複数のデータベースに格納する際に用いられる。任意のOFC92が、他のOFC92内のデータベース(DB)72へのアクセス時には、ある時点では、1つのOFC92のみがマスターとして動作し、他のOFC92からの要求を待ち合わせるための同期処理のメカニズムを用いることにより実現できる。
【0048】
例えば、異なるOFC92間で特定のデータベース内のファイルへのアクセスを、一時的には、1つのプロセスに制限し、アクセス競合による、デッドロック等を防止するメカニズム(ファイルロックを適用した複製)を利用することもできる。また、データベース内容のレプリケーションは、一般には、専用の管理システムで行うこともでき、マスタースレーブ・システムを構成する場合には、マスター側では、更新を記録し、その内容をスレーブ群に通知する場合もあるが、この方法に限定される必要はないことはいうまでもない。なお、この場合にはスレーブ側は、更新を正しく実施した旨を示すためのメッセージを送り、後続する新たな更新要求を受け付けられる状態であることの通知を行うことが必要である。
【0049】
図3にライブクローンの模式図を示す。OFC#1−1からOFC#1−2への単純なライブクローンは、動作中の仮想マシン71の実体であるイメージファイルとメモリ内容を複製すれば良いが、イメージファイルの複製は、一般に長い時間を要するため、新たな工夫が必要である。そこで、
図3に示すように、イメージファイルを大きく二つに分ける。一つはライブクローン(作成)時に異なる内容でクローン先の仮想マシン71#2に引き継ぐマスターイメージファイル73であり、もう一つはライブクローン(作成)時にも全く同一内容でクローン先の仮想マシン71#2に引き継ぐイメージファイル72である。OFC92を対象にする場合は、異なる内容で引き継ぐマスターイメージ73はOS等のシステム本体に相当し、同一内容で引き継ぐイメージはフローテーブル12の全情報を格納したデータベースファイル(DB)72に相当する。更に異なる内容で引き継ぐOS等を含んだイメージファイルも二段階に分け、全ての仮想マシン71の標準かつ共通となるOS等のシステムをマスターイメージ73とし、仮想マシン71毎に異なる設定情報やログ情報等は、マスターイメージ73よりも仮想マシン71に近いところに差分ファイル74として装備する。
【0050】
図3に、ライブクローンによる仮想マシン71の第1の複製例を示す。仮想マシン71#1の複製として仮想マシン71#2をライブクローンしているが、OS等の標準かつ共通部分はマスターイメージ73として共有しつつ、仮想マシン71#1独自の設定情報や、仮想マシン71#1が起動してからの実行ログ等の変更部分は仮想マシン71#1の側の差分ファイル74#1に保存し、仮想マシン71#2独自の設定情報や、仮想マシン71#2が起動してからの実行ログ等の変更部分は、仮想マシン71#2の側の差分ファイル74#2に保存するように配置している。差分ファイル74に存在しない、標準かつ共通部分は、仮想マシン71#1、仮想マシン71#2共にマスターイメージ73にアクセスに行く。また、仮想マシン71#1から仮想マシン71#2に完全に同一で引き継ぐべきDB72の部分は、同じイメージをアクセスするものとしている。これにより、ライブクローン時のイメージのコピー作業を無くし、クローンされる仮想マシン71用の差分ファイル74の作成だけで、新たなライブクローンを起動することが可能になる。
【0051】
図4に、ライブクローンによる仮想マシンの第2の複製例を示す。仮想マシンの第2の複製例では、
図3の構成に加えて、データベースの高信頼化技術として標準的なレプリケーション(replication)を行うことにより、標準状態でDB72をDB72#1とDB72#2に二重化している。クローン後では、DB72のレプリケーションを中止して、二重化したDB72を切り離した上で、各々のDB72を異なる仮想マシンに割り当てることにより、DB72へのアクセスが性能低下の要因にならないようにしている。更にライブクローン後に、DB72の高信頼化のためのレプリケーションを再度開始し、DB72#1とDB72#2の各々で、別の二重化を開始するべきである。この実現形態の例を、
図5の実施形態2に示す。
【0052】
図5に、ライブクローンによる仮想マシンの第3の複製例を示す。仮想マシンの第3の複製例の場合、仮想マシン71#1がアクセスしているDB72#1のレプリケーションとしてDB72#3を、仮想マシン71#2がアクセスしているDB72#2のレプリケーションとしてDB72#4を作成して、二重化を実施している。OFC92を構成する各仮想マシン71の処理の殆どは、制御用トラヒックと一致するフローテーブル12を、フローテーブル12の全情報を格納したDB72から検索し、その検索結果をOFS91に新規のフローテーブル12として返信する処理である。そのため、ライブクローンにより新しい仮想マシン71#2を生成して、CPUリソースとメモリリソースを拡張することにより、上記の処理を、より多くの仮想マシン71に分散させることが可能となり、一台の仮想マシン71当たりに加わる負荷の減少に伴い、応答処理の高速化が期待できる。
【0053】
しかしながら、
図7(a)に示すように、フローテーブル12の全情報を格納したDBがライブクローンされた仮想マシン71間で共有された場合、CPUリソースとメモリリソースに余裕がある場合でも、DBのファイルへのアクセスがボトルネックとなって、期待される応答の高速化が得られないことが生じ得る。このような場合には、レプリケーションのようなDB72の複製技術とライブクローン技術を結び付け、
図7(a)に示すDB72の複製を実現している状態から、
図7(b)のようなライブクローンを行うことにより、DBファイルへのアクセスに関わるリソースを拡張でき、応答の高速化を実現することが可能となる。
【0054】
図3のライブクローン実施形態1においても、
図4、
図5のライブクローン実施形態2においても、クローンされた仮想マシン71は、クローン元の仮想マシン71と同一機能と同一のDBファイルを備えるが、異なるコントローラとして機能する。そのため、クローン元の仮想マシン71で使用中のセッション(TCPセッション、SSLセッション、オープンフローの制御セッション)をクローンされた仮想マシン71に引き継ぐことは出来ない。TCPセッションやSSLセッションはOFS91がクローンされた仮想マシン71にセッションを繋ぎ直すことにより容易に回復可能であるが、オープンフローの制御セッション(PacketIn→FlowMod→PacketOut)の扱いは注意すべきである。例えば、クローン元の仮想マシン71がOFS91#nの制御をクローンされた仮想マシン71に引き継がせる場合、OFS91#nに対してFlowModを送信済のセッションについては、続くPacketOutをクローン元から送るが、OFS91#nからPacketInを受け取っただけのセッションはクローン元では処理せず、残ったPacketOutを送り終わった時点でOFS91#nとのTCP接続を切断することにより、OFS91#nに対して、PacketInをクローンされた仮想マシン71に再送信するように促すための処理が必要になる。仮想マシン71を縮退する場合も同様の配慮が必要である。
【0055】
一般には、CPUリソースとメモリリソースの拡張に対する要求と、DBファイルへのアクセス能力に対する要求の双方のバランスを取りながら、
図3に示すライブクローンと、
図4に示すライブクローンとを混合させたライブクローンを逐次行うことにより、適切な処理能力の増強を、仮想マシン環境で達成することが可能となる。
【0056】
図6に、OFC92を2重化することにより、クラウド上にライブクローンを作成する際に、現状の処理能力を減少させることなく、OFC92を動作可能とするための接続動作の一例を示す。OFCリソースコントローラ95から、ライブクローン作成指示がサイト1のOFC92に行われた場合(S301)、第1のサイトのOFC92#1は、OFS91との接続処理を一方の仮想マシン71#1で行いながら(S302及びS303)、他方の仮想マシン71#3で第2のサイトのOFC92#2へのコピーを作成する(S304)。すなわち、S303及びS304のデータ転送が同時並行処理することにより、第1のサイトのOFC92#1−1が、ライブクローンを第2のサイトに作成する時の処理能力の劣化を抑止できる。またOFC92#1−1とOFC92#1−2が同一のサイトにある場合も同様に、本メカニズムが適用できることは言うまでもない。
【0057】
急激な制御用トラヒックの増大により、連続してライブクローンの作成を行う場合、フローテーブル12の全情報を格納したDB72の共有や複製・レプリケーションが全体の性能を決定する上での重要課題となる。例えば
図6に示すように、仮想マシン71#1のライブクローンをCPUリソースやメモリリソース的には余裕の有る仮想マシン71#2に作成する場合に、仮想マシン71#2と現在使用されているDB72の間のネットワークの遅延が大きい場合、あるいは利用可能な伝送帯域が狭い場合に、DB72を共有する時や、あるいは、複製する時には、より多くの処理時間を必要とするため、仮想マシン71#2をライブクローンしたことによっても、応答処理の高速化は実現出来ない可能性がある。
【0058】
マスターイメージ73に関しては、全仮想マシン71で共通の内容なので、
図3に示すように、オープンフロークラウド内の複数個所に同じイメージを事前に配備することによりこのような問題は回避出来る。しかしながら、DB72の事前配備は困難であるため、現在使用されているDB72から、低遅延でかつ広帯域なネットワークで接続された場所の仮想マシン71を優先的に選択し、複数ライブクローンすると共に、DB72の複製・レプリケーションを作成することが好ましい。
【0059】
図7に、オープンフロー制御トラヒック監視機能951、OFCリソース負荷監視機能952の情報から、ライブクローン制御機能953がOFC処理能力の増加を判断し、次々と逐次的に複数のライブライブクローンの作成を実施する場合の基本的な2つの方法例を示す。
図7(a)に示す第1の方法は、マスターとなる最初に設置されたOFC92#1から、他の、コントローラ機能の実装可能なクラウド上のリソースに対して、順次、OFC92#1を固定して、これを用いてライブクローンを増やす場合の方法である。この方法は、マスターとなるOFC92の処理能力に、相当の余剰処理能力があり、信頼性が高い場合や、従属となるOFC92間の伝送距離が短い、データセンター内に限定された場合には適用可能である。仮に、マスターのOFC92とその配下に置かれる、各種の従属のOFC92との間の伝送帯域が逼迫する状況が明らかである場合には、伝送帯域が十分に確保されている区間においてはこの方法を用いることが好ましい。
【0060】
従属のOFC92が遠隔地にある場合や、マスターのOFC92の処理能力が、不足している場合、あるいは上述したように、マスターのOFC92からいくつかの従属のOFC92へ直接接続するための、伝送帯域が不足する場合には、
図7(b)に示す第2の方法を用いることが好ましい。第2の方法は、コピーをされるOFC92#1をマスタコントローラに固定せず、コピー後は、逐時、マスターの機能を移動する。この方法は、仮に、マスターのOFC92が故障した場合にも、マスターのOFC92を容易に変更することができる特徴をもち、システム全体の耐故障性を向上する場合にも適用することが可能である。
【0061】
上述の技術は、現在サービスされているクラウドサービスにおいて、カスタマのポータルサイトからの要求に応じて、仮想マシン71のリソースの割り当てを行い、新たな仮想マシン71を、ステップ・バイ・ステップ的に増やせるメカニズムを盛り込むことにより達成することができる。このメカニズムにより、ネットワーク内でコントローラの処理能力が逼迫する場合においても、安定したサービスの継続(BCP:Business Continuity Plan)を実現することができる。
【0062】
ロードバランス制御機能954は、ライブクローン制御機能953により複製されたOFC92間の負荷分散と、複数のOFC92間の負荷分散の2つの負荷分散を組み合わせて実施する。
【0063】
ライブクローンにより複製されたOFC92に対して適切にオープンフロー制御メッセージを分配するための制御方法について説明する。オープンフロー制御メッセージの分配は、負荷分散装置をOFS91の内部、または、クラウド内の複数のOFC92を管理するOFCリソースコントローラ95の中、またはクラウド内に独立に配備することにより実現する。ライブクローンによりセッション情報も引き継ぐため、パケットの転送を適切な仮想マシン71に対して行うことにより負荷分散を実現できる。ライブクローン実施時にアドレスの再構成を行う場合は、クローン元のOFC92とOFS91間のセッションを維持するための機構を持つことが必要なことは言うまでもない。
【0064】
図8に、OFS91の構成例を示す。
図8(a)に示すOFS91は、L3(レイヤ3の処理)スイッチと負荷分散装置とを物理的に接続してスイッチ11の機能を実現する。
図8(b)に示すOFS91は、複数のオープンフロースイッチを物理的に接続してスイッチ11の機能を実現する。
図8(c)に示すOFS91は、仮想的なL3スイッチと仮想的な負荷分散装置とを物理的に接続してスイッチ11の機能を実現する。
図8(a)に示す装置構成は、原理的にOFS91の制御ソフトウェアを複数種類設けることにより、
図8(b)に示すOFS91のみによる物理構成で、
図8(c)に示す論理構成と同等の装置を構成することも可能である。OFS91の機能は、ここに示した例に限定されるものではないが、これら各種機能の実現に必要となる、OFS91のアクション用制御コマンドの種別の例、および、定義可能なヘッダ情報の種別の例を以下に示す。
【0065】
フローに対するアクションに指定できるコマンドには、例えば次のものがある。
Forward:パケットを特定の物理ポートに転送する。
Drop:パケットを破棄する。
Modify−Field:パケットヘッダの値を指定した値に書き換える。
Store:パケットを一時、共通バッファに格納する。
copy:パケットをコピーし、複数ポートにマルチキャストする。
divide:パケットを分割し、複数ポートにマルチキャストする。
encryption:パケットの中身を暗号化する。
Enqueue:パケットを指定したキューバッファに格納する。
【0066】
オープンフローで定義可能なヘッダの情報としては、例えば、物理ポート番号、送信元MACアドレス、送信先MACアドレス、Etherタイプ、VLAN ID、VLANプライオリティ、送信元IPアドレス、送信先IPアドレス、IPプロトコル種別、IPTOS情報、送信元L4ポート番号、送信先L4ポート番号、MPLSラベル番号、及び閉域サービス識別番号がある。
【0067】
ロードバランス制御機能954の、複数のOFC92間の負荷分散方法を、以下に説明する。
図9に示すように、OFS91は自身に対する設定情報として使用可能なOFC92の情報を複数保持し、同時に複数のOFC92とオープンフロー制御用のコネクションを確立することが可能である。例えば、ある1つのOFC92#2をマスターとして使用し、その他のOFC92#1及び#3をスレーブとして利用する使用形態や、全てのOFC92#1から#3を同等の制御機能を持つOFC92として、全てのOFC92に対して制御トラヒックを転送できる使用形態も可能である。
【0068】
また、
図10に示すように、OFS91は、例えば、OFC92のプロキシとして動作を行わせるOFC92#1と接続し、プロキシとして動作するOFC92#1が、各OFC92#2〜#4に処理を振り分けることも、同様に可能である。
【0069】
図11は対象とするクラウドサーバ群がn個の処理能力を異にするOFC92#1〜OFC92#nを含む場合の接続構成である。
図11の構成は、
図9及び
図10の形態を一般化したものである。例えば、OFS91内に配備されたOFC92へ届けるための制御用のトラヒック負荷量測定を実施するオープンフロー制御トラヒック監視機能951が過負荷状態を観測し、ロードバランス制御機能954にて、新たなOFC92への接続が必要であると判断されると、不荷分散の制御を実施し、当該新たなOFC92へ接続される。この場合、最も簡単な新たな接続先OFC92を選択する方法の例として、OFC92#毎に、要求されるリソース種別は1つであり、かつこのリソースにおける処理能力の相対値の大きさが異なり、仮に処理能力の大きさが、例えば、OFC92#1の処理能力>OFC92#2の処理能力>……>OFC92(#n−1)の処理能力>OFC92#nの処理能力の順番であると仮定した場合には、処理能力の高い順に、当該番号のOFC92を割り当てることが好ましい。
【0070】
一方、OFS91から定期的に各OFC92の処理能力に影響を来さない範囲で、応答レスポンス時間を得るための問い合わせ用メッセージを送出する方法も有効である。この場合は、応答レスポンス時間の最も短い、当該番号のOFC92を最優先に選択すべきと判断することも可能である。あるいは、上記2つの判断方法に、適切な重みづけを行って評価する方法が、より好ましい場合があり、以下にその例を説明する。例えば、最も簡単な場合として、新たなOFC92の割り当てを決定する際の要求条件として、リソース種別1(CPU処理能力)、リソース種別2(余剰なメモリ容量)があり、これらのリソースの要求値を同時に満足する必要がある場合を仮定する。
【0071】
ここでは、議論を簡単にするため、ライブクローンの対象となり得る、全てのリソース種別1は、同一の規格(クロック周波数、単位時間当たり命令実行処理数回数など)を想定し、ギブソンミックスやコマーシャルミックスに対応する処理能力等については、当該のリソース種別が未使用時には、同一の能力をもつことを仮定する。リソース種別2に関しても、同一の規格を想定する。この場合、OFC92で扱うべき、制御用のトラヒックが増えたことに対して、例えば、リソース種別1には、30(相対値)の能力が必要であり、リソース種別2には、40(相対値)の能力が必要である場合を仮定する。
【0072】
実際には、例えばリソース種別1は、例えば100 MIPS(Million Instructions Per Second)×割り当て可能なCPU使用率を、勘案することが必要であるが、ここでは、それらの、割り当て可能とすべき条件等を全て併せて考慮し、単純な、「相対値」に変換した値として、すでに、上記の条件にも配慮した「相対値」を活用する。
【0073】
ここで、各種の、割り当て可能なリソース種別が存在する、使用可能なOFC92として#5、#6、#7、#8、#9があり、例えば#5は(リソース1:20、リソース2:50)、#6は(リソース1:40、リソース2:20)、#7(リソース1:28、リソース2:35)、#8(リソース1:30、リソース2:45)、#9(リソース1:30、リソース2:50)であったとする。この場合は、条件に適合するのは、#8と#9であるが、要求条件に最も近いOFC92#は、OFC92#8であるため、#8を選択し、ライブクローンを作成すれば良い。
【0074】
更に複雑な事例として、リソース1には、60(相対値)の能力が必要であり、リソース2には、70(相対値)の能力が必要である場合を仮定する。この場合には、単独では、満足できるOFC92#は見つからないため、2つ以上のOFC92#を組み合わせる必要があり、この場合、組み合わせる数は、極力、少ないことが実用上は好ましい。上記の条件の場合は、OFC92#5とOFC92#6とを組み合わせることが、最も好ましい。
【0075】
上記の例では、リソース1とリソース2のみを考慮したが、新たなリソース3として、例えば、応答遅延時間の短さを、レスポンス能力と見なし、相対値として、50を付け加えることを考える。ここで、リソース3が最も、高い優先順位を持つものと仮定し、重み付け係数を「2」と仮定すると、必要なリソース3は、50×2=100と設定できる。このため、要求条件を満足するOFC92#の探索に当っては、以下の条件を満足するOFC92#を、選択すれば良い。
【0076】
#5、#6、#7、#8、#9のOFC92は、リソース3の要素に関わる重み付け係数を考慮すると、例えば#5は(リソース1:20、リソース2:50、リソース3:70)、#6は(リソース1:40、リソース2:20、リソース3:40)、#7(リソース1:28、リソース2:35、リソース3:100)、#8(リソース1:30、リソース2:45、リソース3:60)、#9(リソース1:30、リソース2:50、リソース3:65)となり、前提となる条件は、以下の通りである。
(1)リソース1は60以上で最も60に近い
(2)リソース2は70以上で最も70に近い
(3)リソース3は100以上で最も100に近い
【0077】
単独のOFC92#では、各リソースの要素に関わる条件の全てを、満足することはできず、#5と#6を組み合わせで使用する方法が、最も好ましい。
【0078】
以上に述べた例では、いずれも、各リソースの値は、加算して評価することができることを前提にして、条件を満足する組み合わせ(単独の場合も含む)に対して、最も要求値に近い組み合わせを選ぶ方法を示した。しかしながら、この例に限定されず、例えば、各リソースの要素の要求値の2乗の和を評価する場合であっても、同様の方法で、最も適切な組み合わせを選ぶことができることは言うまでもない。仮に、満足できる組み合わせが、一つも存在しない場合には、最も、要求条件に近い組み合わせを選択することで、対応することが、実用上は好ましい。
【0079】
一方、対象となるOFC92の数やリソースの種別数が非常に大きくなった場合には、ヒューリスティックに容易に適切なOFC92を選ぶことは困難である。この場合は、ナップザック問題を解く手法と類似した手法を活用することにより、解決手段を提供することができる。まず、第一段階として、一変数を対象とした場合のリソース種別の割り当て資源を最適化するアルゴリズムを
図12に示す。
【0080】
ここでは、対象OFC92の数が非常に大きく、世界中の全てのOFC92を対象にすること現実的ではないため、先ず当該のリソース種別の判断が可能なOFC数を、当面、n個あると仮定し、それらに対するリソース量の読み出し(サンプリング)を特定の、または、適切なOFC92の中から、行った前提のもとに、
図12の制御フローの内容を説明する。
【0081】
ステップS101:対象としたリソース種別を「D」として、適用可能な複数のOFC92のもつ、第1種のリソースに関わるリソースベクトルDを、以下のように定義する。
D=(n個の要素からなるベクトル)=(D0,D1,…D(n−1))
ステップS102:リソースの状態D0(=D[0], D[1], D[1],…. D[n−1])を記録する。ここで、aはリソース合計の目的値、mは繰り返し回数の上限値である。ctは繰り返しのカウンタ、s0はリソース合計の暫定値である。初期値として考えられる最悪の値を入れておく。
ステップS103:リソース合計sが目的とする値aを超えるまで加える。
s=s+D[i]、i=i+1
ステップS104:sがs0より良い値を実現できたときD0=D、i0=i、s0=sとして記録を更新する。
ステップS105:ct<mのときDを並べ替えてステップS103からの処理を繰り返す。
【0082】
ここで、Dの並べ替えの方法としては、nをベクトルDの長さとして、
(数1)
r1=random(n)
r2=random(n)
x=D[r1]
D[r1]=D[r2]
D[r2]=x
のように2つずつ並べ替える方法や、Fisher−Yates shuffleなどを用いてD全体を並べ替える方法があるが、これらの特定の並べ方に限定されないことはいうまでもない。現実的に収束する速度が早いものを適切に選択すれば良い。
【0083】
ステップS106:ct≧mとなったら、記録しておいたD0、i0、s0を出力して終了する。
【0084】
上述した方法は、容易に多変数のリソース種別を持つ場合の、最適な組み合わせを求めるアルゴリズムに拡張することが容易である。
図13及び
図14に、概要フローを示す。
ステップS201:リソース種別として、k変数からなるデータDを、特定または、任意の複数のOFC92からサンプリングする。この場合Dはn行k列の行列である。
ステップS202:リソースの状態D0を記録する。a=(a0,a1,……,a(k−1))はリソース合計の目的値、mは繰り返し回数の上限である。ctは繰り返しのカウンタ、s00はリソース合計差分の暫定値である。初期値として考えられる最悪の値を入れておく。
【0085】
ステップS203〜S208:j番目のリソース合計sjが目的値ajを超えるまで加える。ここで、sjは以下の式で表わされる。
(数1)
sj=sj+D[i,j]
s=|s0−a0|+……+|sj−aj|+……+|s(k−1)−a(k−1)|
明らかに、sが小さいことは記録されたD0が最適解に近いことを表している。特にs00=0のときは最適解が得られたことを保証できる。
【0086】
ステップS204:sがs00より良い値を実現できたときD0=D、i0=i、s00=sとして記録を更新する。
ステップS205:ct<mのときDを並べ替えてステップS203からの処理を繰り返す。
ここで、Dの並べ替えの方法としてはnをDの行数とし、r番目の行ベクトルをD[r,]として、
(数2)
r1=random(n)
r2=random(n)
x=D[r1,]
D[r1,]=D[r2,]
D[r2,]=x
のように2行ずつ並べ替える方法やFisher−Yates shuffleなどを用いてD全体を並べ替える方法があるが、これに限定される必要のないことは、いうまでもない。
並べ替えを行った結果、同じものが、出現されることがなければ、どのような並べ替えアルゴリズムを用いても良い。
【0087】
ステップS206:ct>=mとなったら記録しておいたD0、i0、s00を出力して終了する。
【0088】
一方、新たに発生するトラヒックフローに対して、
図10に記載の方法によりプロキシとなるOFC92に対して割り振りルールを指定することで、イベントの種類毎に、それぞれ使用するOFC92の番号を指定して、当該の処理を、特定のOFC92に分担させるための機能分散の手法を用いて、機能別にOFC92を配備することが可能であることは言うまでもない。
【0089】
また
図9に記載のマスター/スレーブ方式の複数OFC利用形態においては、新たなOFC92が割り当てられた後は、当該の新たなコントローラがをマスターとする旨を、OFS91に迅速に通知することが好ましい。
【0090】
上記には、ライブクローン制御機能953により複製されたOFC92間の負荷分散制御方法と、複数のOFC92間の負荷分散制御方法を別々に記載したが、適宜組み合わせて使用する制御方法を適切に混在できることは、言うまでもない。
【0091】
OFC92の処理能力がダイナミックに変動する場合には、各OFC92から一定の周期で、その時点でのリソース処理能力を、ライブクローン制御機能953、ロードバランス制御機能954に通知することにより、OFCリソースコントローラ95は最新の状況を把握できる。当該のOFCリソースコントローラ95は、この情報に基づいて、次に割り当てるべきOFC92#や次にライブクローンを行うべきOFC92#を決定することができる。
【0092】
図15は、地域サーバ群#1、#2、#3に対応して、OFS91が存在した時に、それぞれのサーバ群から、未定義フロートラヒックが対応するOFS91#に流入し、対応するOFC92#に向けて制御トラヒックが発生した場合の基本的なネットワーク構成を示すものである。
図15では、OFC92#1内に仮想マシン71#2〜71#rが生成され、OFC92#2内に仮想マシン71#2〜71#sが生成され、OFC92#3内に仮想マシン71#2〜71#tが生成される場合を示す。制御用トラヒック量が予め規定された閾値を超えたことを検知すると、それぞれのOFC92#に、予め割り当てられた、オープンクラウドのサイトへ接続し、当該のオープンクラウドのサイトでは、必要な処理能力に応じて、クローン作成あるいは、ライブマイグレーションを逐次、実施する。当該のリソースの量が十分確保されている場合には、その範囲の中で、要求に応じて、適切に、OFC92を拡張することができる。
【0093】
地域サーバ群#1、#2、#3があった場合に、それぞれの地域サーバ群から未定義フロートラヒックがOFS91に流入し、対応するOFC92#に向けて制御トラヒックが発生した場合に、OFC92が処理すべき制御用トラヒックが、予め規定された閾値を超えたことを検知すると、共通的に使用可能な、オープンクラウドのサイト(OFC92#1)へ接続してもよい。この場合、OFC92#1で、接続要求に応じて必要な処理能力に対応できるための、ライブクローン化を逐次実施し、所望の処理能力を達成するための基本構成である。
【0094】
以上、説明したように、本発明の特徴は
集中制御を前提とした、ネットワーク制御方式において、
(1)クラウドのもつ仮想サーバのリソースを有効に活用し、
(2)ネットワークを集中制御するコントローラの処理能力のダイナミック制御を、
(3)トラヒックの急激な増加やネットワーク機器の故障等の状況に応じて
(4)リアルタイムに、同一クラウド内、および異なるクラウド間に跨る範囲において、開示した技術は、
既存のクラウドが保有するリソースを、要求されるリソースに関わる条件を満足できるように、最大限に活用して、融通性の高いコントローラ(ネットワーク制御系)を構築できる特徴をもつ。
【0095】
すなわち、開示した技術はクラウドを活用し、ネットワーク制御系を構築する場合に、最初から最大負荷に応じた設備を備えることを不要とし、必要に応じて処理能力を増減できる融通性を具備するものである。さらに、開示した技術は、ライブクローンを用いた制御を行うことにより、既存のシステムの流用が可能であると共に、シンプルな制御(ライブクローンの複製や削除)で上記特徴を達成できる。不要になったネットワーク制御用のリソースに関しては、逐次、ライブクローンを解放する等のプロシージャ―を組み込むことにより、稼働中のクラウドのリソースを有効に活用できることができ、最新のトラヒック処理状況に見合う、制御系の処理能力を備えるネットワーク構成を実現できる。
【0096】
このように、ネットワークソフトウェアを、クラウド上で、大規模に仮想化できるメリットを、十分に発揮することができる。また、開示した本技術は、SDNに代表されるオープンフロータイプのネットワークに適用できるだけでなく、NGNや既存の携帯電話網の制御やオペレーションシステムの処理能力の増強にも適用でき、適用対象範囲は極めて広い。以上説明したように、本技術は安全なネットワークを、実現する上での基盤技術として活用でき、今後の情報通信産業を発展させる上で、極めて大きな意義を持つ。