第1の実施例を、データセンタのネットワークシステムにおいて、機器に設定された設定情報を基に生成したテナント毎の論理トポロジと、機器に新規に入力する設定情報とを用いて、設定情報入力後のテナントの論理トポロジを模擬生成し、設定情報を事前に検証する例について説明する。
論理トポロジとは、仮想ネットワークを構成する仮想リソースと、仮想リソースを接続するエッジと、の関係を示す論理的構造である。論理トポロジにおいて、仮想リソースはノードと呼ばれる。テナントの論理トポロジとは、テナント毎の情報処理システムを構築する論理トポロジ、すなわち、仮想リソース(ノード)とエッジとの接続関係を示す。
例えば、ノードには、仮想マシン、VLAN、VLANインタフェース、仮想ルータ、仮想ストレージインタフェース、Zone、LU等が含まれ、エッジには仮想マシンとVLANとの接続や、VLANと仮想ルータとの接続等が含まれる。各仮想リソースについては後で詳しく説明する。
図1は、本実施形態におけるシステム構成の例を示す図である。
データセンタ100は、ネットワーク101を介して、適宜のICTサービスを提供するためのシステムを構成する。そのシステムの構成要素になりうる機器として、ファイアウォール102、ロードバランサ103、L3スイッチ104、L2スイッチ105a、105bのようなネットワーク機器に加えて、サーバ106a、106b、106c、106dといったサーバ機器、FC(Fibre Channel)スイッチ107a、107bのようなSAN(Storage Area Network)スイッチ機器、ストレージ108a、108bなどのストレージ機器を含む。これら機器を全て用いてシステムを構成する必要はなく、適宜の種類の機器を適宜の個数だけ用いて、適宜のICTサービスを提供するためのシステムを構成すればよい。また、このシステムには、管理サーバ109が接続される。管理サーバ109はコンソール110と接続している。
ファイアウォール102、ロードバランサ103、L3スイッチ104、L2スイッチ105a、105bのようなネットワーク機器は、LAN(Local Area Network)を構築し、サーバ106a〜106dにネットワーク接続性を提供するとともに、サーバが送受信するパケットを制御する。これらネットワーク機器はサーバと接続し、また、管理サーバ109やデータセンタ100の外部のネットワークとも接続してもよい。LAN内通信をするためのプロトコルはEthernet(登録商標)を含み、LAN間通信をするためのプロトコルはIP(Internet Protocol)を含む。そして、これらネットワーク機器は、VLANのような仮想LAN技術、VLANインタフェースやサブインタフェースのような仮想インタフェース技術、VRFやVRのような仮想ルータ技術を有し、物理的なネットワークの上に仮想的なネットワークを構成する。
サーバ106a〜106dのようなサーバ機器は、適宜のICTサービスを行うためのアプリケーションを実行する。以下、サーバ106a〜106dをサービスサーバと称する。これらサーバ機器は、前述のネットワーク機器を介して相互に接続し、また、データセンタ100の外部に接続する。また、後述のように、FCスイッチ107a、107bを介して、ストレージ機器108a、108bにアクセスする。それぞれのサーバ機器は、NIC(Network Interface Card)やHBA(Host Bus Adapter)あるいはCNA(Converged Network Adapter)を搭載し、LANおよびSANにアクセスする。サーバ機器には、VMM(Virtual Machine Monitor)技術あるいはLPAR(Logical Partitioning)技術によって、複数の仮想サーバ(VM)が生成されていてもよい。この場合、VMは仮想的なインタフェースであるvNIC(Virtual Network Interface Card)、vHBA(Virtual Host Bus Adaptor)や仮想CNAを生成し、これらの仮想的なインタフェースにより、ネットワーク機器あるいはストレージ機器にアクセスする。
FCスイッチ107a、107bのようなSANスイッチ機器は、SANを構成し、サービスサーバ106a〜106dからのI/O(Input/Output)要求をストレージ108a、108bに転送し、ストレージ108から読み出したI/Oデータをサービスサーバ106a〜106dに転送する。SAN内通信およびSAN間通信をするためのプロトコルは、FC、FCIP(FC over IP)、FCoE(FC over Ethernet)やiSCSI(Internet Small Computer System Interface)を含む。また、これらSANスイッチ機器は、Zoning、NPIV(N Port_ID Virtualization)、VSAN(Virtual Storage Area Networking)のような仮想化技術を備えている。これ以外の仮想化技術を備えていてもよい。
ストレージ108a、108bのようストレージ機器は、前述のSANを介して、サービスサーバ106a〜106dに外部記憶領域を提供する。ストレージ機器108は、ストレージにアクセスする物理ポートを仮想化するためのNPIV、物理ストレージに構成された論理ヴォリュームであるLU(Logical Unit)を含む。ストレージ108は、ストレージのポートと、LUおよびサーバを対応付けるLUN(Logical Unit Number)マスキングなどの機能を備えていてもよい。
管理サーバ109は、テナント毎の論理トポロジを保持し、システム内の機器に入力する設定情報から、テナントの論理トポロジを模擬生成したり、設定情報を検証したりする。
なお、上記のシステムの構成機器(ファイアウォールやロードバランサなど)の機能は、ハードウェアによって提供されてもよく、また、ソフトウェアによって提供されてもよい。
図2に、サービスサーバ106aとL2スイッチ105aの装置構成例を示す。サービスサーバ106aは、ハードウェア201として物理CPU202、物理メモリ203、物理NIC204、物理HBA205を備える。ハードウェア201として備える各リソース(202〜205)は仮想化処理部210によって複数の仮想マシン(220、230、240)に分割される。各仮想マシン220、230、240は、1つ以上の仮想NIC221および仮想HBA222を備える。仮想NIC221は仮想スイッチ部212を介して物理NIC204に接続され、仮想HBA222は仮想ポート部213を介して物理HBA205に接続される。
仮想化処理部210は、サーバ設定情報211を保持する。サーバ設定情報211は、サービスサーバ106aに生成された仮想マシン(220、230、240)と、仮想マシンが備える仮想NIC221、仮想HBA222の情報および仮想NIC221、仮想HBA222に対応付けられる物理NIC204、物理HBA205との対応関係を管理する。また、仮想NIC221が属するVLANとの対応関係もサーバ設定情報211に含まれる。
サービスサーバ106aには、複数の仮想リソースが設定されている。仮想マシン(220、230、240)は論理トポロジにおいて仮想マシンノードN705として表わされる。
仮想NIC221および仮想NIC221が属するVLANは、LANの仮想リソースの一つであり、論理トポロジにおいては、VLANインタフェースノードN702およびVLANノードN701として表わされる。仮想HBA222は、SANの仮想リソースの一つであり、論理トポロジにおいては、仮想ストレージインタフェースノードN704として表わされる。サービスサーバ106aに生成されたこれらの仮想リソース(ノード)の情報と、仮想リソース間のエッジの情報は、サーバ設定情報211に設定情報として保持されており、サーバ設定情報211を解析することで、サービスサーバ106aに生成された論理トポロジの情報を取得することができる。
L2スイッチ105aは、ハードウェア250として物理CPU251、物理メモリ252、1つ以上の物理NIC253を備える。さらに、L2スイッチ105aは、ネットワークの各レイヤの仮想化処理を行うために、仮想化処理部260を備える。仮想化処理部260は、L2スイッチ設定情報261を保持し、VLAN処理部262とVRF処理部263を備える。
L2スイッチ設定情報261は、VLAN処理部262およびVRF処理部263の処理に必要な設定情報であり、VLANおよびVRFの定義情報、VLANとVRFとの対応関係、VLANに含まれるインタフェースの情報、VRFとVRFとの対応関係等が含まれる。その他の情報を含んでいてもよい。
VLAN処理部262は、L2スイッチ設定情報261に設定された情報を参照し、L2レイヤの仮想化技術であるVLANの処理を行う。VRF処理部263は、L2スイッチ設定情報261に設定された情報を参照し、L3レイヤの仮想化技術であるVRFの処理を行う。L2スイッチに機種により、VRF処理部は、他のL3レイヤの仮想化技術であるVR処理部であってもよい。仮想化処理部260の処理はハードウェアで行ってもソフトウェアで行ってもどちらでもよい。
論理トポロジにおいて、VLANの定義情報はVLANノードN701、VRFの定義情報はVRFノードN703、VLANに含まれるインタフェースの情報はVLANインタフェースノードN702、VLANとVRFとの対応関係やVRFとVRFとの対応関係はエッジとして表わされる。そのため、L2スイッチ設定情報261を解析することで、L2スイッチ105aに設定された論理トポロジの情報を取得することができる。
図3にFCスイッチ107aとストレージ108aの装置構成例を示す。
FCスイッチ107aはハードウェア300として物理CPU301、物理メモリ302、1つ以上の物理FCポート303を備える。さらに、FCスイッチ107aは、特定のサーバ(106aから106dからのいずれか)からのI/O要求を、サーバに対応づけられたLUを含む適切なストレージ(108aと109bのいずれか)に転送するために、物理CPU301による物理メモリ302に格納されているプログラムの実行またはハードウェアにより実現されるZoning処理部305を備える。Zoning処理部305は、ストレージアダプタのイニシエータとターゲットの対応関係を示すZone情報(物理メモリ302または図示しない記録装置に格納される)を参照する。Zone情報は、FCスイッチ設定情報304に保持されている。
論理トポロジにおいて、Zone情報はZoneノードN706として表わされる。
ストレージ108aはハードウェア310として物理CPU311、物理メモリ312、1つ以上の物理FCポート313、1つ以上の物理ディスク314を備える。物理FCポート313は、FCoEポートでもよい。物理ディスク314は、複数のLU317に論理的に分割される。
さらに、ストレージ108aは、特定の物理FCポート313から入力された特定のサーバ(106aから106dからのいずれか)からのI/O要求をサーバに対応づけられたLU317にに転送するために、物理CPU311による物理メモリ312に格納されているプログラムの実行またはハードウェアにより実現されるLUNマスキング処理部316を備える。LUNマスキング処理部316は、サーバのイニシエータと、LUの番号(LUN)とを対応づけるLUNマスキング情報を参照する。
物理ディスク314を複数のLU317に論理的に分割するためのLU定義情報や、LUNマスキング情報は、ストレージ設定情報315(物理メモリ312または図示しない記録装置に格納される)に保持されている。
論理トポロジにおいて、LU317の定義情報は、仮想ストレージインタフェースノードN704およびLUノードN707として表わされる。また、LUNマスキング情報は、仮想ストレージインタフェースノードとZoneノードとを接続するエッジとして表わされる。
図4に、管理サーバ109の装置構成の例を示す。管理サーバ109は、物理CPU401、物理メモリ402、補助記憶装置403を備える一般的な計算機を用いて実現することができる。さらに、各装置を構成するそれぞれの機能は、CPUが補助記憶装置に格納されているプログラムを実行することにより、上記計算機上に具現化される。各プログラムは、あらかじめ、上記計算機内の補助記憶装置403に格納されていてもよい。あるいは、各プログラムは、必要なときに通信インタフェース404やメディアインタフェース405を経由して上記計算機が利用可能な媒体を介し、他の装置から上記記憶装置に導入されてもよい。媒体とは、たとえば、通信媒体(すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号)、またはメディアインタフェース405に着脱可能な外部記憶媒体407を指す。なお、管理サーバ109は、入出力装置406を介して管理サーバを操作するコンソール110に接続してもよい。
図5は、管理サーバ109の機能構成例を示す図である。
管理サーバ109は、構成要素として、管理要求受付部501、視覚化部502、テナントトポロジ生成部503、テナントトポロジ検証部510を有する。
管理要求受付部501は、テナントの論理トポロジの生成、検証に関する処理要求をオペレータから受付け、各機能部に処理の実行を命令する。オペレータが要求する処理は、例えば、新たに機器に設定する設定情報(以下、新規設定情報と称す)の検証要求や、新規設定情報によって変更されるテナントの論理トポロジの可視化である。また、オペレータからの処理要求には、管理サーバ内の各処理部が使用するテーブルやDBの登録要求も含まれる。これらの処理要求により、テナントトポロジ検証部510および、視覚化部502が実行される。各処理部が必要とする新規設定情報やテナントID等の情報も管理要求受付部501を介して各処理部に通知される。
視覚化部502は、新たに機器に設定する新規設定情報の検証結果や、新規設定情報により変更されるテナントのトポロジ情報を可視化する。検証結果の可視化には、CLI表示制御部506を用いてCLI(Command Line Interface)画面に検証結果を出力する。また、トポロジ情報の可視化にはGUI表示制御部505を用いてGUI(Graphical User Interface)画面に論理トポロジを出力する。
テナントトポロジ生成部503は、データセンタ内の各機器(102〜108b)から設定情報(サーバ設定情報211、L2スイッチ設定情報261、FCスイッチ設定情報304、ストレージ設定情報315等)を収集し、収集した設定情報からテナント毎の論理トポロジを生成し、テナントトポロジDB504に格納する。なお、テナントトポロジ生成部503は必ず必要な処理部ではなく、オペレータが手動でテナントトポロジDB504のエントリを作成し、管理要求受付部501を介してテナントトポロジDB504に設定してもよい。
図6にテナントトポロジDB504の構成例を示す。テナントトポロジDB504は、テナントの情報処理システムを構築する仮想リソースと、仮想リソース間のエッジと、の接続関係、すなわち、論理トポロジをテナント毎に示すデータベースである。テナントトポロジDB504は、1つ以上の論理トポロジエントリで構成される。1つの論理トポロジエントリは、1つのテナントの論理トポロジを示す。1つの論理トポロジエントリ600aは、トポロジID601、テナントID602、ノード管理テーブル610、エッジ管理テーブル620を含む。
トポロジID601は、テナントトポロジDB504内で一意に論理トポロジを識別するための識別子である。テナントID602は、テナントを識別するための識別子である。テナントトポロジDB504内でテナントを一意に識別できる値であれば、識別子は文字列であったり、数字であったり、記号であったりしてもよい。テナントに関連づかない仮想リソースが機器に設定されている場合、論理トポロジエントリのテナントID602はNULLを用いる。
ノード管理テーブル610は、テナントの情報処理システムを構成する仮想リソース(ノード)の情報を管理するためのテーブルである。構成要素としてノード識別子611、ノードタイプ612、機器識別子613、タイプ内識別子614を含む。ノード識別子611は、仮想ネットワーク全体で一意にノードを特定するための識別子である。ノードタイプ612は、仮想リソースの種類を示す識別子である。仮想リソースには、VLANノードN701、VLANインタフェースノードN702、VRFノードN703、仮想ストレージインタフェースノードN704、仮想マシンノードN705、ZoneノードN706、LUノードN707等が含まれる。
本実施例では、ノードタイプN1はVLANノード、ノードタイプN2はVLANインタフェースノードN702、ノードタイプN3はVRFノードN703、ノードタイプN4は仮想ストレージインタフェースノードN704、ノードタイプN5は仮想マシンノードN705、ノードタイプN6はZoneノードN706、ノードタイプN7はLUノードN707に対応する。
機器識別子613は、ノードが定義されている物理機器の識別子を示す。ノードが複数の物理機器で定義されている場合は、機器識別子613に複数の物理機器の識別子が含まれる。
タイプ内識別子614は、ノードタイプ612に付随する識別子を含む。ノードタイプN1のVLANの場合、タイプ内識別子614にはVLAN IDを含む。ノードタイプN2のVLANインタフェースの場合、タイプ内識別子614にはVLANインタフェース番号と、インタフェースに付与されたIPアドレスの両方を含む。ノードタイプN3のVRFの場合、タイプ内識別子614には仮想ルータ番号を含む。ノードタイプN4の仮想ストレージインタフェースの場合、タイプ内識別子614には、仮想HBAのWWNまたはストレージの物理FCポートのWWNを含む。ノードタイプN5の仮想マシンの場合、タイプ内識別子614には仮想マシンの識別子を含む。ノードタイプN6のZoneの場合、タイプ内識別子614には、Zoneに含まれるイニシエータとターゲットのWWNを含む。ノードタイプN7のLUの場合、タイプ内識別子614にはLUNが含まれる。
行615は、機器SW1およびServer1に、VLAN番号(ノードN1のタイプ内識別子)が10のVLAN(ノードN1)が存在することを意味し、行616は、機器SW1においてVLANインタフェース番号(ノードN2のタイプ内識別子)が10、IPアドレスがx.x.x.xのVLANインタフェース(ノードN2)が存在することを意味し、行617は機器FW1において仮想ルータ番号(ノードN3のタイプ内識別子)が1の仮想ルータ(ノードN3)が存在することを意味する。
エッジ管理テーブル620は、テナントの情報処理システムを構成する仮想リソース(ノード)を接続するエッジを管理するためのテーブルである。エッジ管理テーブル620は構成要素として、エッジ識別子621、エッジタイプ622、ノード識別子623−1、623−2を含む。エッジ識別子621は、仮想ネットワーク全体で一意にエッジを特定するための識別子である。エッジタイプ622は、エッジの種類を示す識別子である。ノード識別子623−1、623−2は、エッジの両端に接続されるノードのノード識別子である。
テナントトポロジDB504をコンソール110上に可視化した論理トポロジ構成例を図7に示す。可視化は、視覚化部502のGUI表示制御部505により実現され、図7の外枠が、図27に示すテナントトポロジ検証画面の新規設定トポロジ表示エリア2701に相当する。
識別子1000で示されるテナントの情報処理システムは、2つの仮想マシンノードN705から構成され、仮想マシンノードN70は、仮想ストレージインタフェースノードN704、ZoneノードN706を介してLUノードN707に接続する。さらに、仮想マシンノードN705は、VLANインタフェースノードN702、VLANを介してVRFN703に接続し、VRFはさらに異なるVRFに接続していることを示している。本構成例では、論理トポロジをテナント毎に可視化しているが、複数のテナントの論理トポロジを同時に可視化してもよい。
図5に戻り、テナントトポロジ検証部510を説明する。
テナントトポロジ検証部510は、構成要素として、テーブル登録部511、設定情報解析部512、新規設定トポロジ生成部513、二重生成削除検証部516、テナント間検証部517、テナント内検証部520、パターンテーブル524、重要度テーブル525、新規設定トポロジ526、検証結果テーブル527を含む。
テーブル登録部511は、テナントトポロジ検証部510の各処理が使用するテーブルの登録、変更、削除を行う。オペレータがテーブルの登録、削除、変更要求を行った場合に、管理要求受付部501から、オペレータが要求した登録、変更、削除情報を受け付け、各テーブルの操作を行う。本処理で登録されるテーブルはパターンテーブル524、重要度テーブル525である。
設定情報解析部512は、テナントの情報処理システムの構築、変更、削除に関する機器毎の新規設定情報から、該当するテナントの論理トポロジに対する操作対象と操作を1つずつ特定し、新規設定トポロジ生成部513、二重生成削除検証部516、テナント間検証部517、テナント内検証部520の処理を命令する。
新規設定トポロジ生成部513は、新規設定情報を機器に入力することにより、テナントの論理トポロジがどのように変化するかを解析し、新規設定情報入力後のテナントの論理トポロジを模擬生成する。新規設定トポロジ生成部513には、ノード操作部514とエッジ操作部515があり、操作対象により、異なる処理部が実行される。生成した論理トポロジは新規設定トポロジ526に保存される。
二重生成削除検証部516は、設定操作によりテナントトポロジDB504に既に存在するノードやエッジを生成(二重生成)したり、テナントトポロジDB504に存在しないノードやエッジを削除(二重削除)したりしないかを検証する。検証結果は検証結果テーブル527に登録される。
テナント間検証部517は、新規設定情報を機器に入力することにより、操作対象のテナント以外のテナントの論理トポロジに影響が及ばないことを検証する。独立性検証部518は、1つの設定操作によって、操作対象のテナントの論理トポロジが異なるテナントの論理トポロジに接続する障害の可能性を検証する。属性検証部519は、設定操作によって、操作対象以外のテナントの論理トポロジを削除する障害の可能性を検証する。検証結果は検証結果テーブル527に登録される。
テナント内検証部520は、複数の設定操作により操作対象のテナントの論理トポロジが変化した後も、テナント内の接続性が保たれることを検証する。IP重複検証部521は、テナント内に同一のIPアドレスを含む仮想リソースが存在し、通信が不可能となる障害の可能性を検証する。接続性検証部522は、テナントの論理トポロジを構成する仮想リソースが、エッジによって接続されず、仮想リソース間の通信が不可能となる障害の可能性を検証する。到達性検証部523は、テナント内の仮想リソース間の通信においてルーティングテーブルやACL(Access Control List)やLB(Load Balancer)等を経由することにより、L3レイヤ以上の接続性が確保されず通信が不可能となる障害の可能性を検証する。検証結果は検証結果テーブル527に登録される。
図8および図9にパターンテーブル524の構成例を示す。パターンテーブル524は、設定情報解析部512が、物理機器に新たに設定する設定情報から、テナントの論理トポロジへの操作を特定するために使用するテーブルである。パターンテーブル524には、ノードパターンテーブル524a(図8)とエッジパターンテーブル524b(図9)が含まれる。
ノードパターンテーブル524aは機器に設定する設定情報から、仮想リソース(ノード)に関する操作を抽出するためのテーブルである。ノードパターンテーブル524aは、仮想リソースの操作に関する設定パターン801と、ノードタイプ802と、操作タイプ803との対応を管理する。ノードタイプ802は、設定パターン801により操作される仮想リソースの種別を示す。ノードタイプ802の種類は、テナントトポロジDB504におけるノードタイプ612と一致する。操作タイプ803は、設定パターン801による仮想リソースの操作が、追加であるか削除であるかを示す。
設定パターン801の各セルに記載されている内容について説明する。セル内の最初の行は、ある項目の設定を開始するコマンドであることを意味し、最後の行はこの項目に関する設定を終了するコマンドであることを意味する。例えば、VLANインタフェースの設定パターン812においては、“interface vlan <id>”が、あるVLANインタフェースの設定を開始するコマンドであることを意味し、最後の“exit”の行が、この設定を終了するコマンドであることを意味する。また、テナントトポロジDB504のタイプ内識別子614で説明したように、VLANインタフェースのタイプ内識別子は、VLAN IDとIPアドレスである。“interface vlan <id>”から、VLANインタフェースのタイプ内識別子であるVLALN IDは<id>、“ip address <x.x.x.x/y>”から、VLANインタフェースのタイプ内識別子であるIPアドレスは<x.x.x.x/y>と特定する。“:”で記載される場所には、設定パターン801に示されていないコマンドが存在してもよいことを示す。
エッジパターンテーブル524bは、機器に設定する設定情報から、仮想リソース(ノード)を接続するエッジに関する操作を抽出するためのテーブルである。エッジパターンテーブル524bは、エッジの操作に関する接続パターン901と、エッジタイプ902と、接続ノードタイプ903、操作タイプ904との対応を管理する。エッジタイプ902は、エッジの種別を示す。例えば、エッジE1はVLANとVLANインタフェースそれぞれの仮想リソース間の接続、エッジE2はVLANインタフェースとVRFそれぞれの仮想リソース間の接続、エッジE3はVRFの2つの仮想リソース間の接続である。
接続パターン901の各セルに記載されている内容について説明する。セル内の最初の行は、ある項目の設定を開始するコマンドであることを意味し、最後の行はこの項目に関する設定を終了するコマンドであることを意味する。例えば、接続パターン911において“interface vlan”から始まるコマンドがエッジの設定を開始するコマンドであることを意味し、“exit”がこの設定を終了するコマンドであることを意味する。”<id>”で示されるVLANの仮想リソースと、VLANインタフェースの仮想リソースを接続するエッジを追加することを示す。なお、“:”で記載される場所には、接続パターンの例に示されていないコマンドが存在してもよいことを示す。
接続パターン912においては、<id1>で示されるVLANインタフェースの仮想リソースと<id2>で示されるVRFの仮想リソースとを接続するエッジを追加することを示す。接続パターン913においては、<id1>で示されるVRFの仮想リソースと<id2>で示されるVRFの仮想リソースとが、<name>で示される文字列によって関連付けられ、2つのVRF仮想リソース間を接続するエッジが追加することを示す。
接続パターン914においては、<id>”で示されるVLANの仮想リソースと、VLANインタフェースの仮想リソースを接続するエッジを削除することを示す。
パターンテーブル524は機器毎にテーブルを保持する。そのため、パターンテーブル524には、ファイアウォール102用、ロードバランサ103用、L3スイッチ104用、L2スイッチ105用、サービスサーバ106用、FCスイッチ107用、ストレージ108用のパターンテーブルが含まれる。また、機器により、機種が異なる場合、例えば、サービスサーバ106aとサービスサーバ106bで機種が異なる場合は、サービスサーバ106a用のパターンテーブルとサービスサーバ106b用のパターンテーブルを保持する。
図10に重要度テーブル525の構成例を示す。重要度テーブル525は、二重生成削除検証部516、テナント間検証部517、テナント内検証部520において判定した検証結果の重要度を判定し、検証結果テーブル527に登録する際に用いるテーブルである。
重要度テーブル525には、検証ID1001と、検証結果1002と、重要度1003と、検証結果の説明1004との対応関係を、各検証部516〜523における検証結果と一致するように、予め設定しておく。
検証ID1001は、テナントトポロジ検証部510内の各検証部516〜523で検証した検証結果を示す識別子である。検証結果1002は、検証結果がWarningであるか、Failであるか、Passであるかを示す。重要度1003は、検証結果の重要度を示す。検証結果の説明1004は、検証結果を説明するための文字列である。検証結果の説明1004は必ず必要な構成要素ではない。
検証結果1002は、Warning、Fail、Passの3段階であるが、オペレータは、重要度1003を、検証部毎に任意の値に設定できる。そのため、検証結果1002が同じ場合でも、検証結果の重要度を変更することができる。例えば、テナント間検証部517における検証結果Failは重要度を高く設定し、テナント内検証部520における検証結果Failは重要度を低く設定することができる。テナント間検証部517によって検証される障害の方が、障害の波及範囲が広いためである。
新規設定トポロジ526および検証結果テーブル527については、後述する新規設定トポロジ生成部513、二重生成削除検証部516、テナント間検証部517、テナント内検証部520の詳細な処理フローとともに説明する。
次に、テナントトポロジDB504と、新たに機器に設定する新規設定情報531から、テナントの論理トポロジを模擬生成する処理フローとテナントの論理トポロジを検証する処理フローを詳細に説明する。
オペレータはコンソール110より、新たに機器に設定する予定の新規設定情報531と新規設定情報531に対応づけられるテナントID532を入力する。入力された新規設定情報531とテナントID532は、管理要求受付部501を介して設定情報解析部512に通知される。
図11に設定情報解析部512の処理フローを示す。
設定情報解析部512は、新規設定情報531およびテナントID532を取得する(ステップ1101)。
図12に新規設定情報531の例を示す。新規設定情報531は、1つのテナントに関連付けて機器に入力する設定コマンドの一覧である。コマンド以外の設定方法を用いる機器、例えばWEBインタフェース等は、HTML(Hypertext Markup Language)やXML(Extensible Markup Language)で書かれた設定情報の一覧であってもよい。複数の機器に設定情報を入力する場合は、機器毎に設定操作の一覧を入力する。例えば、531aは、L2スイッチの機種aaaへ入力する設定操作の一覧であり、531bは、サーバに入力する設定操作の一覧であったり、531cはFCスイッチに入力する設定操作の一覧であったりする。新規設定情報531には、対応する機器に入力可能な設定操作が記述されており、文法的な誤りは含まれないことを前提とする。設定操作の文法的な誤りは既存の方法を用いて予め検証を行う。
次に、設定情報解析部512は、新規設定情報531aに対応した機器および機種のパターンテーブル524を参照し(ステップ1102)、新規設定情報531aの中から、パターンテーブル524の設定パターン801または接続パターン901に一致する設定操作を一つ特定する(ステップ1103)。設定操作は、ノードパターン管理テーブルの設定パターン801または、エッジパターンテーブルの接続パターン901によって特定される論理トポロジの操作を1つ行う、1つ以上のコマンドのまとまりである。さらに、設定操作に対応する論理トポロジの操作におけるオブジェクト情報と操作(追加または削除)、設定する機器の機器識別子を特定する(ステップ1104)。オブジェクト情報はノードまたはエッジの情報であり、ノードの場合は、ノードタイプ、タイプ内識別子の情報が含まれる。エッジの場合は、エッジタイプ、エッジで接続される2つのノードのノードタイプとタイプ内識別子の情報が含まれる。
例えば、ノードパターンテーブル524a、エッジパターンテーブル524bを参照して、新規設定情報531aを検索すると、811行の設定パターン801が検索にヒットし、設定操作1201が1つ特定されるとともに、ノードパターンテーブル524aのノードタイプ802、操作タイプ803から、設定操作1201による操作が、ノードタイプN1(VLANノード)の追加であることが特定でき、VLANノードのタイプ内識別子であるVLAN IDは100であることが特定できる。
ステップ1104により特定したオブジェクト情報と操作、機器識別子、テナントID532を引数として新規設定トポロジ生成部513、二重生成削除検証部516、テナント間検証部517の処理を実行する(ステップ1105、1106、1107)。
すべての設定操作についてステップ1102から1107の処理を繰り返し、全設定操作の処理が終了した場合(ステップ1108でYes)は、テナント内検証部520の処理を実行する(ステップ1109)。新規設定情報531に複数の機器の設定情報が含まれる場合は、機器ごとに設定情報解析部512の処理を実行する。
図13に新規設定トポロジ生成部513の処理フローを示す。
新規設定トポロジ生成部513は、設定情報解析部512から、オブジェクト情報、操作、機器識別子、テナントID532を取得する(ステップ1301)。
ステップ1301で取得したテナントIDが設定された新規設定トポロジが存在しない場合(ステップ1302でNo)は、初期化処理(ステップ1303)を実行し、新規設定トポロジ526を初期化する。
図18に新規設定トポロジ526の構成例を示す。新規設定トポロジ526は、新規設定情報によるテナントの論理トポロジの変化を模擬するためのテーブルである。新規設定トポロジ526の構成要素は、トポロジID1801、テナントID1802、ノード管理テーブル1810、エッジ管理テーブル1820を含む。ノード管理テーブル1810の構成要素として、ノード識別子1811、ノードタイプ1812、機器識別子1813、タイプ内識別子1814、テナントID1815を含む。エッジ管理テーブル1820の構成要素として、エッジ識別子1821、エッジタイプ1822、ノード識別子1823−1、1823−2を含む。
新規設定トポロジ526の構成は、ノード管理テーブル1810の構成要素にテナントID1815が含まれる以外は、テナントトポロジDB504を構成する1つの論理トポロジエントリと同等である。
初期化処理(ステップ1303)では、新規設定トポロジ526を新規生成後、ステップ1301で取得したテナントIDを基にテナントトポロジDB504を検索する。テナントIDが一致するテナントの論理トポロジエントリが存在する場合には、該当するエントリに設定された全情報を新規設定トポロジ526にコピーし、ノード管理テーブル1810内のテナントID1815に、ステップ1301で取得したテナントIDを登録する。テナントIDが一致するテナントトポロジエントリが存在しない場合には、新規設定トポロジ526のテナントID1802に、ステップ1301で取得したテナントIDのみを登録する。
新規設定トポロジが存在する場合(ステップ1302でYes)は、初期化処理(ステップ1303)は行わない。
次に、ステップ1301で取得したオブジェクト情報がノードの場合(ステップ1304でYes)は、ノード操作部514の処理を実行する(ステップ1305)。ステップ1301で取得したオブジェクト情報がエッジの場合(ステップ1306でYes)は、エッジ操作部515の処理を実行する(ステップ1307)。オブジェクト情報がノードまたはエッジに該当しない場合には処理を終了する。
次に、ノード操作部514の処理を説明する。
ステップ1301取得した操作が追加の場合(ステップ1308でYes)は、ノード追加処理を実行する(ステップ1309)。ステップ1301で取得した操作が削除の場合(ステップ1310でYes)は、ノード削除処理を実行する(ステップ1311)。
図14にノード操作部514のノード追加処理の処理フローを示す。
ノード追加処理は、オブジェクト情報に含まれるノードタイプ、タイプ内識別子を基に、新規設定トポロジ526を検索する(ステップ1401)。新規設定トポロジ526のノード管理テーブル1810に、ノードタイプ、タイプ内識別子が一致するノードが存在する場合(ステップ1402でYes)には、検索にヒットしたノードの機器識別子1813を参照する。該当ノードの機器識別子1813に、ステップ1301で取得した機器識別子が既に登録されている場合(ステップ1403でYes)場合には、処理を終了する。機器識別子が登録されていない場合(ステップ1403でNo)の場合には、検索にヒットしたノードの機器識別子1813に、ステップ1301で取得した機器識別子を登録して処理を終了する。新規設定トポロジ526のノード管理テーブル1810に、ノードタイプ、タイプ内識別子が一致するノードが存在しない場合(ステップ1402でNo)には、新規設定トポロジ526のノード管理テーブル1810に、ノードタイプ1812、機器識別子1813、タイプ内識別子1814、テナントID1815を登録し処理を終了する。
図15にノード操作部514のノード削除処理の処理フローを示す。
ノード削除処理は、オブジェクト情報に含まれるノードタイプ、機器識別子、タイプ内識別子を基に、新規設定トポロジ526を検索する(ステップ1501)。
新規設定トポロジ526のノード管理テーブル1810に、ノードタイプ、機器識別子、タイプ内識別子が一致するノードが存在する場合(ステップ1502でYes)には、新規設定トポロジ526内の該当ノードの機器識別子1813から該当機器の機器識別子を削除する(ステップ1506)。該当ノードの機器識別子1813からすべての機器識別子が削除された場合(ステップ1507でYes)は、新規設定トポロジ526のノード管理テーブル1810から該当ノードのエントリを削除する(ステップ1508)。該当ノードの機器識別子1813に他の機器の機器識別子が登録されている場合(ステップ1507でNo)は処理を終了する。
新規設定トポロジ526のノード管理テーブル1810に、ノードタイプ、機器識別子、タイプ内識別子が一致するノードが存在しない場合(ステップ1502でNo)には、ノードタイプ、機器識別子、タイプ内識別子を基に、テナントトポロジDB504を検索する(ステップ1503)。テナントトポロジDB504内の論理トポロジエントリのノード管理テーブル610に、ノードタイプ、機器識別子、タイプ内識別子が一致するノードが存在しない場合(ステップ1504でNo)には処理を終了する。
テナントトポロジDB504内の論理トポロジエントリのノード管理テーブル610に、ノードタイプ、機器識別子、タイプ内識別子が一致するノードが存在する場合(ステップ1504でYes)は、該当ノードを含むテナントの論理トポロジエントリから、ノード管理テーブル610とエッジ管理テーブル620を新規設定トポロジ526のノード管理テーブル1810およびエッジ管理テーブル1820に取り込み、ノード管理テーブル1810のテナントID1815には、テナントトポロジDB504の論理トポロジエントリのテナントID602に登録された値を登録する(ステップ1505)。ステップ1506以降の処理は前述の通りである。
図13に戻り、エッジ操作部515の処理フローについて説明する。
エッジ操作部515は、ステップ1301取得した操作が追加の場合(ステップ1312でYes)は、エッジ追加処理を実行する(ステップ1313)。ステップ1301で取得した操作が削除の場合(ステップ1314でYes)は、エッジ削除処理を実行する(ステップ1315)。
図16にエッジ操作部515のエッジ追加処理の処理フローを示す。
エッジ追加処理は、ステップ1301で取得したオブジェクト情報に含まれる2つのノードの情報の中から1つを選択する(ステップ1601)。ステップ1601で選択したノードのノードタイプ、機器識別子、タイプ内識別子を基に、新規設定トポロジ526を検索する(ステップ1602)。新規設定トポロジ526のノード管理テーブル1810に、ノードタイプ、機器識別子、タイプ内識別子が一致するノードが存在する場合(ステップ1603でYes)は、ステップ1608を実行する。新規設定トポロジ526のノード管理テーブル1810に、ノードタイプ、機器識別子、タイプ内識別子が一致するノードが存在しない場合(ステップ1603でNo)は、ノードタイプ、タイプ内識別子を基にテナントトポロジDB504を検索する(ステップ1604)。テナントトポロジDB504内の論理トポロジエントリのノード管理テーブル610に、ノードタイプ、タイプ内識別子が一致するノードが存在しない場合(ステップ1605でNo)は、エッジを構成する一端のノードが存在しないと判定し、ステップ1608を実行する。
テナントトポロジDB504内の論理トポロジエントリのノード管理テーブル610に、ノードタイプ、タイプ内識別子が一致するノードが存在する場合(ステップ1605でYes)は、ステップ1604で検索にヒットしたノードを含む論理トポロジエントリのテナントID602と、ステップ1301で取得したテナントIDとを比較する。テナントIDが一致する場合(ステップ1606でNo)は、ステップ1608を実行する。
テナントIDが不一致の場合(ステップ1606でYes)は、ステップ1604で検索にヒットしたノードを含む論理トポロジエントリのノード管理テーブル610とエッジ管理テーブル620を新規設定トポロジ526のノード管理テーブル1810とエッジ管理テーブル1820に追加し、追加したノードのテナントID1815には、テナントトポロジDB504の論理トポロジエントリのテナントID602に登録された値を登録する(ステップ1607)。
ステップ1608では、エッジを構成する2つのノードを基に新規設定トポロジの検索が終了したかを判定する。エッジを構成する2つノードの検索が終了していない場合(ステップ1608でNo)には、ステップ1601に戻り、もう一方のノードの検索を行う。エッジを構成する2つのノードの検索が終了した場合(ステップ1608でYes)は、エッジの両端のノードが存在しているかを判定する。エッジの両端のノードが存在しない場合(ステップ1609でNo)は、処理を終了する。エッジの両端ノードが存在する場合(ステップ1609でYes)は、新規設定トポロジ526にエッジを追加する(ステップ1610)。
図17にエッジ操作部515のエッジ削除処理の処理フローを示す。
オブジェクト情報に含まれるエッジタイプ、エッジで接続される2つのノードのノードタイプ、装置識別子、タイプ内識別子を基に、新規設定トポロジ526のノード管理テーブル1810、エッジ管理テーブル1820を検索する(ステップ1701)。
エッジタイプ、エッジで接続される2つのノードのノードタイプ、装置識別子、タイプ内識別子が一致するエッジが存在する場合(ステップ1702でYes)は、該当するエッジを新規設定トポロジ526のエッジ管理テーブル1820から削除し(ステップ1707)、処理を終了する。
エッジが存在しない場合(ステップ1702でNo)は、エッジタイプ、エッジで接続される2つのノードのノードタイプ、装置識別子、タイプ内識別子を基に、テナントトポロジDB504のノード管理テーブル610、エッジ管理テーブル620を検索する(ステップ1703)。
エッジタイプ、エッジで接続される2つのノードのノードタイプ、装置識別子、タイプ内識別子が一致するエッジが存在しない場合(ステップ1704でNo)は、処理を終了する。エッジが存在する場合(ステップ1704でYes)は、該当エッジを含む論理トポロジエントリのテナントID602と、ステップ1301で取得したテナントIDとを比較する。テナントIDが一致する場合(ステップ1705でNo)の場合は処理を終了する。テナントIDが不一致の場合(ステップ1705でYes)は、ステップ1704で検索にヒットしたエッジを含む論理トポロジエントリのノード管理テーブル610とエッジ管理テーブル620を新規設定トポロジ526のノード管理テーブル1810とエッジ管理テーブル1820に追加し、ノード管理テーブル1810のテナントID1815には、テナントトポロジDB504の論理トポロジエントリのテナントID602に登録された値を登録する(ステップ1706)。ステップ1707で、該当するエッジを新規設定トポロジ526のエッジ管理テーブル1820から削除し、処理を終了する。
以上のようにして、機器に設定情報を入力することによりテナントの論理トポロジがどのように変更するかを設定操作毎に模擬することができる。
特に、ステップ1503からステップ1508の処理により、新規に機器に入力予定の設定操作により、異なるテナントのノード情報を削除した論理トポロジを生成することができる。また、ステップ1604からステップ1610の処理により、新規に機器に入力予定の設定操作により、異なるテナントのノードと接続した論理トポロジを生成することができる。さらに、ステップ1703から1707の処理により、新規に機器に入力予定の設定操作により、異なるテナントのエッジ情報を削除した論理トポロジを生成することができる。
図19に、新規設定トポロジ生成部513の処理を実行後、視覚化部502により、新規設定トポロジ526を、図27に示すテナントトポロジ検証画面のトポロジ表示エリア2701に可視化した例を示す。この例では、誤った設定操作を含む設定情報によりテナントID1000の仮想ルータの仮想リソースN1901と、テナントID2000のVLANインタフェースの仮想リソースN1902が、エッジE1903により接続されることを示している。
図20に二重生成削除検証部516の処理フローを示す。二重生成削除検証部516は、二重生成検証部516aと二重削除検証部516bの2つの処理フローを含む。
まず、二重生成検証部516aについて説明する。
二重生成検証部516aは、設定操作によって追加する仮想リソースが既に設定済みでないことを検証する。
二重生成検証部516aは、設定情報解析部512から、オブジェクト情報と、操作と、機器識別子と、テナントID532と、を取得する(ステップ2001)。
操作が追加操作以外の場合(ステップ2002でNo)は処理を終了する。操作が追加操作の場合(ステップ2002でYes)は、オブジェクト情報を基にテナントトポロジDB504を検索する(ステップ2003)。オブジェクト情報はノードまたはエッジの情報であり、ノードの場合は、ノードタイプ、タイプ内識別子の情報が含まれる。エッジの場合は、エッジタイプ、エッジで接続される2つのノードのノードタイプとタイプ内識別子の情報が含まれる。
例えば、オブジェクトがノードの場合は、ノードタイプ、タイプ内識別子、機器識別子を基にテナントトポロジDB504のノード管理テーブル610を検索する。オブジェクトの場合は、エッジタイプ、エッジで接続される2つのノードのノードタイプ、タイプ内識別子、機器識別子を基にテナントトポロジDB504のノード管理テーブル610とエッジ管理テーブル620を検索する。
オブジェクト情報が一致するオブジェクトがテナントトポロジDB504に存在するかを判定する(ステップ2004)。オブジェクトがノードの場合には、ステップ2001で取得したオブジェクト情報(ノードタイプ、タイプ内識別子)、機器識別子が一致するノードが存在するかを判定する。オブジェクトがエッジの場合には、ステップ2001で取得したオブジェクト情報(エッジタイプ、エッジで接続される2つのノードのノードタイプとタイプ内識別子)が一致するエッジが存在するかを判定する(ステップ2005)。
オブジェクトが既に存在する場合(ステップ2004でYes)には、二重生成と判定し、検証結果に対応する検証ID(例えば、v1)を取得する。検証IDは、検証処理における検証結果を一意に特定できる識別子であり、重要度テーブル525の検証ID1001に登録された値のいずれかと一致する。
オブジェクトが存在しない場合(ステップ2004でNo)には、検証Passと判定し、検証結果に対応する検証ID(例えば、v1000)を取得する(ステップ2006)。
取得した検証IDを基に重要度テーブル525を参照し、検証結果1002、重要度1003を取得し、検証結果テーブル527に設定操作1201、検証結果1002、重要度1003を登録する。設定操作1201は、既に登録されている場合は、登録しない(ステップ2007)。
図26に検証結果テーブル527の構成例を示す。検証結果テーブル527は、設定操作2601と、設定情報による操作の検証結果、重要度を管理するためのテーブルであり、テナント別に管理する。構成要素として、設定操作2601と、各検証部に対応した検証結果、重要度の登録欄(2602〜2607)を含む。本実施例における検証部は、二重生成削除検証部516、テナント間検証部517における独立性検証部518および属性検証部519、テナント内検証部520におけるIP重複検証部521、接続性検証部522、到達性検証部523であるため、各検証部に対応した検証結果の登録欄を含む。例えば、二重生成削除検証部516の検証結果および重要度は、二重生成削除検証結果の登録欄2602に登録する。本構成例では、各登録欄の上段に検証結果を登録し、下段に重要度を示す。検証結果WAはWarningを示す。重要度L1は重要度が1であること示す。
図20に戻り、二重削除検証部516bについて説明する。
二重削除検証部516bは、設定操作によって削除する仮想リソースが存在することを検証する。
二重削除検証部516bは、設定情報解析部512から、オブジェクト情報と、操作と、機器識別子と、テナントID532と、を取得する(ステップ2011)。
操作が削除操作以外の場合(ステップ2012でNo)は処理を終了する。操作が削除操作の場合(ステップ2012でYes)は、オブジェクト情報を基にテナントトポロジDB504を検索する(ステップ2013)。オブジェクトの検索方法は、二重生成検証部と同様である。
オブジェクトが存在しない場合(ステップ2014でNo)には、二重削除と判定し、検証結果に対応する検証ID(例えば、v2)を取得する。オブジェクトが存在する場合(ステップ2014でYes)には、検証Passと判定し、検証結果に対応する検証ID(例えば、v1002)を取得する。
取得した検証IDを基に重要度テーブル525を参照し、検証結果1002、重要度1003を取得し、検証結果テーブル527に設定操作1201、検証結果1002、重要度1003を登録する(ステップ2017)。設定操作は、既に登録されている場合は、登録しない。
次にテナント間検証部517の処理フローを示す。
テナント間検証部517は、新規設定情報を機器に入力することにより、操作対象のテナント以外のテナントの論理トポロジに影響が及ばないことを検証する。独立性検証部518は、1つの設定操作によって、操作対象のテナントの論理トポロジが異なるテナントの論理トポロジに接続する障害が引き起こされる可能性を検証する。属性検証部519は、設定操作によって、操作対象以外のテナントの論理トポロジが操作する障害が引き起こされる可能性を検証する。
図21にテナント間検証部517の処理フローを示す。
テナント間検証部517は、設定情報解析部512から、オブジェクト情報、操作、機器識別子、テナントID532を取得する(ステップ2101)。
操作が削除操作(ステップ2102でYes)の場合は、属性検証部519の処理を実行する(ステップ2103)。操作が追加操作(ステップ2105でYes)の場合は、ステップ2101で取得したオブジェクト情報がエッジの場合(ステップ2105でYes)に、独立性検証部518の処理を実行する(ステップ2106)。
独立性検証は、エッジを追加する場合に必要な検証項目である。属性検証は、仮想リソース、すなわちノード、および/またはエッジを削除する場合に必要な検証項目である。
図22に独立性検証部518の処理フローを示す。
独立性検証部518は、テナント間検証部517よりオブジェクト情報、操作、機器識別子、テナントIDを取得する(ステップ2201)。独立性検証部518はエッジ追加操作の場合に実行される処理のため、オブジェクト情報はエッジの情報である。エッジの情報にはエッジタイプ、エッジで接続される2つのノードのノードタイプとタイプ内識別子の情報が含まれる。
エッジで接続される2つのノード情報のうち、1つのノード情報を選択し(ステップ2202)、ノードタイプ、タイプ内識別子を基に新規設定トポロジ526を検索する(ステップ2203)。ノードタイプ、ノードのタイプ内識別子が一致するノードが存在する場合(ステップ2204でYes)は、ステップ2203で検索したノードは同一テナントに含まれるノードと判断できる。次にステップ2210を実行する。
ノードタイプ、ノードのタイプ内識別子が一致しない場合(ステップ2204でNo)は、新規設定トポロジ526内にエッジで接続しようとするノードが存在せず、他のテナントの論理トポロジに含まれるノードに接続する可能性がある。そこで、ノードタイプ、ノードのタイプ内識別子を基にテナントトポロジDB504を検索する(ステップ2205)。ノードタイプ、ノードのタイプ内識別子が一致するノードが存在しない場合(ステップ2206でNo)は、設定操作によって接続しようとするノード1つが存在しないと判定し、対応する検証IDを取得する(ステップ2207)。
ノードタイプ、ノードのタイプ内識別子が一致するノードが存在する場合(ステップ2206でYes)は、該当ノードを含むテナントの論理トポロジエントリのテナントID602を取得する。
テナントID602がステップ2201で取得したテナントIDと一致するか、NULL以外の場合(ステップ2208でNo)は、エッジを追加することにより、異なるテナントのノードと接続するため、独立性違反と判断する。対応する検証IDを取得する(ステップ2209)。
テナントID602がステップ2201で取得したテナントIDと一致するか、NULLの場合(ステップ2208でYes)は、ステップ2202で選択したノードの検証はPassと判定する。テナントID602がNULLの場合は、特定のテナントに関連づけられていない論理トポロジエントリであることを示す。例えば、テナント追加時の新規設定情報を少なくするために、VLAN等の仮想リソースを予め機器に設定しておく場合等は、テナントIDがNULLの論理トポロジエントリとなる。
ステップ2210では、エッジで接続される2つのノードの検証が終了したかを判定する。2つのノードの検証が終了していない場合(ステップ2210でNo)は、ステップ2202に戻り、もう一方のノードの検証を行う。2つのノードの検証が終了した場合(ステップ2210でYes)の場合は、検証Passと判定し、対応する検証IDを取得する(ステップ2211)。ステップ2212では、重要度テーブル525を参照し、検証IDに対応する検証結果1002と重要度1003を取得する。取得した検証結果1002と重要度1003を検証結果テーブル527に登録する(ステップ2212)。
図23に属性検証部519の処理フローを説明する。
属性検証部519は、テナント間検証部517よりオブジェクト情報、操作、機器識別子、テナントIDを取得する(ステップ2301)。属性検証部519は削除操作の場合に実行される処理である。オブジェクト情報には、ノードまたはエッジの情報が含まれる。
ステップ2301で取得したオブジェクト情報を基に、テナントトポロジDB504を検索する(ステップ2302)。例えば、オブジェクトがノードの場合は、ノードタイプ、タイプ内識別子、機器識別子を基にテナントトポロジDB504のノード管理テーブル610を検索する。オブジェクトがエッジの場合は、エッジタイプ、エッジで接続される2つのノードのノードタイプ、タイプ内識別子、機器識別子を基にテナントトポロジDB504のノード管理テーブル610とエッジ管理テーブル620を検索する。
オブジェクト情報が一致するオブジェクトがテナントトポロジDB504に存在するかを判定する(ステップ2303)。オブジェクトがノードの場合には、ステップ2301で取得したオブジェクト情報(ノードタイプ、タイプ内識別子)、機器識別子が一致するノードが存在するかを判定する。オブジェクトがエッジの場合には、ステップ2301で取得したオブジェクト情報(エッジタイプ、エッジで接続される2つのノードのノードタイプとタイプ内識別子)が一致するエッジが存在するかを判定する。
オブジェクトが存在しない場合(ステップ2303でNo)には、二重削除と判定し、検証結果に対応する検証ID(例えば、v2)を取得する(ステップ2304)。なお、二重削除は、二重生成削除検証部516で検証済みのため、属性検証部519で検証IDを付与しなくてもよい。
オブジェクトが存在する場合(ステップ2303でYes)は、ステップ2301で取得したテナントIDと、ステップ2302で検索にヒットしたノードを含む論理トポロジエントリのテナントID602が一致するかを判定する。
テナントIDが一致する場合は、検証Passと判定し、対応する検証ID(例えば、v1004)を取得する(ステップ2306)。テナントIDが一致しない場合は、対応する設定操作によって、異なるテナントの論理トポロジが変更されるため、属性違反と判定する。対応する検証ID(例えば、v5)を取得する(ステップ2307)。
ステップ2308では、重要度テーブル525を参照し、検証IDに対応する検証結果1002と重要度1003を取得する。取得した検証結果1002と重要度1003を検証結果テーブル527に登録する(ステップ2308)。
図24にテナント内検証部520の処理フローを示す。テナント内検証部520は、新規設定情報に含まれる1つ以上の設定操作によってテナントの論理トポロジが変化した後も、テナント内の接続性が保たれることを検証する。IP重複検証部521、接続性検証部522、到達性検証部523の処理を逐次実行する。
図25にIP重複検証部521と接続性検証部522の処理フローを示す。
IP重複検証部521は、操作対象のテナント内の同一のIPアドレスを含む仮想リソースが存在し、通信が不可能となる障害の可能性を検証する。
IP重複検証部521は、まず、新規設定トポロジ526を取得する(ステップ2501)。ノード管理テーブル1810を参照し、タイプ内識別子1814にIPアドレスを含むすべてのノードを取得する(ステップ2502)。
ノードのIPアドレスを比較し、IPアドレスに重複がないかを判定する(ステップ2503)。IPアドレスが重複する場合は、IP重複と判定し、対応する検証ID(例えば、v6)を取得する(ステップ2505)。IPアドレスが重複しない場合は、検証Passと判定し、対応する検証ID(例えば、v1005)を取得する(ステップ2504)。
ステップ2506では、重要度テーブル525を参照し、検証IDに対応する検証結果1002と重要度1003を取得する。取得した検証結果1002と重要度1003を、検証結果テーブル527のIP重複検証結果の欄に登録する。IPアドレスの重複検証は、複数の設定操作2601に対して行われる。検証結果から、対応する設定操作を特定する場合は、重複したIPアドレスをもとに、検証結果テーブル527の設定操作2601を検索し、重複したIPアドレスを含む設定操作に対しては、検証結果Failと重要度を登録し、重複したIPアドレスを含まない設定操作に対しては、検証結果Passを登録する。
接続性検証部522は、テナントの論理トポロジを構成する仮想リソースが、エッジによって接続されず、仮想リソース間の通信が不可能となる障害の可能性を検証する。
接続性検証部522は、まず、新規設定トポロジ526を取得する(ステップ2511)。ノード管理テーブル1810とエッジ管理テーブル1820を参照し、一般的な探索アルゴリズムを用いて、新規設定トポロジに含まれる全ノードと全エッジが接続されることを検証する。全ノードと全エッジが接続されない場合(ステップ2512でNo)は、接続性違反と判定し、対応する検証ID(例えば、v7)を取得する(ステップ2514)。全ノードと全エッジが接続される場合(ステップ2512でYes)の場合は、検証Passと判定し、対応する検証ID(例えば、v1006)を取得する。
ステップ2515では、重要度テーブル525を参照し、検証IDに対応する検証結果1002と重要度1003を取得する。取得した検証結果1002と重要度1003を、検証結果テーブル527の接続性検証結果の欄に登録する。検証結果が、特定の設定操作2601に対応づかない場合は、設定操作2601は空欄としたまま、検証結果を登録する。
到達性検証部523は、テナント内の仮想リソースがL3レイヤの接続性が確保されず通信が不可能となる障害の可能性を検証する。IPアドレスをタイプ内識別子に持つ適切なノード間で、ルーティングテーブル、ACL(Access Control List)、LB、NAT(Network Address Translation)を介して接続可能であることを、一般的な方法、例えば、"On static reachability analysis of IP networks、” IEEE INFOCOM 2005、 pp. 2170−2183、 March、 2005.を用いて検証する。
以上の検証処理により、新規設定情報を機器に入力することで発生する障害の可能性を事前に検証することができる。
図27はコンソール110に表示されるテナントトポロジ検証画面例である。
テナントトポロジ検証画面には、新規設定トポロジ表示エリア2701、テナントID登録エリア2702、新規設定情報登録エリア2703、検証結果表示エリア2706を含む。新規設定トポロジ表示エリア2701は、新規設定トポロジ526を視覚化部502のGUI表示制御部505により可視化した結果が表示される。
テナントID登録エリアは、オペレータがテナントID532を入力するための領域である。新規設定情報登録エリア2703は、オペレータが新規設定情報531を登録するための領域であり、登録ボタン2704および検証開始ボタン2705を含む。検証結果表示エリア2706は、視覚化部502におけるCLI表示制御部506により可視化した検証結果が表示される。
本実施の形態によると、データセンタのネットワークシステムにおいて、機器に設定された設定情報を基に生成したテナント毎の論理トポロジと、機器に新規に入力する設定情報とを用いて、設定情報入力後のテナントの論理トポロジを模擬生成することができる。これにより、異なるテナントに含まれる仮想リソースが接続する障害が発生する可能性を視覚的に把握することができる。また、設定情報を設定操作ごとに検証することで、障害の発生原因となる設定操作を迅速に特定することができる。