(57)【要約】【課題】  ネットワークの検証時間を短縮することが可能なネットワーク検証装置等を提供する。【解決手段】  ネットワーク検証装置は、検証対象のネットワークにおいて通信パケットが送受信される物理経路の端点となる物理機器の対に関する物理経路情報を取得する物理経路取得手段と、ネットワークに対応付けられることにより、該ネットワークを利用して通信パケットを送るように仮想的に設定された仮想ネットワークにおける仮想機器の設定情報に基づいて、仮想ネットワークにおいて通信パケットを送受信するように設定された仮想経路の端点となる仮想機器の対を算出する仮想端点対算出手段と、物理経路取得手段により取得された物理経路情報と、前記仮想端点対算出手段により算出された仮想機器の対とに基づいて、前記ネットワークにおける設定違反を検出する違反検出手段とを備える。【選択図】      図２
2017005449.tif 000002
【特許請求の範囲】
【請求項１】
検証対象のネットワークにおいて通信パケットが送受信される物理経路の端点となる物理機器の対に関する物理経路情報を取得する物理経路取得手段と、
前記ネットワークに対応付けられることにより、該ネットワークを利用して前記通信パケットを送るように仮想的に設定された仮想ネットワークにおける仮想機器の設定情報に基づいて、当該仮想ネットワークにおいて前記通信パケットを送受信するように設定された仮想経路の端点となる前記仮想機器の対を算出する仮想端点対算出手段と、
前記物理経路取得手段により取得された物理経路情報と、前記仮想端点対算出手段により算出された前記仮想機器の対とに基づいて、前記ネットワークにおける設定違反を検出する違反検出手段と
を備えたネットワーク検証装置。
【請求項２】
前記仮想経路の端点となる前記仮想機器に、前記ネットワークにおいて前記通信パケットが送受信される物理経路の端点となる前記物理機器がそれぞれ対応付けられた
請求項１記載のネットワーク検証装置。
【請求項３】
前記違反検出手段は、前記物理経路情報に含まれる前記物理経路の端点となる前記物理機器の対に対応付けられる前記仮想機器の対がない場合、当該物理機器の対がなす経路を違反と判定する
請求項２記載のネットワーク検証装置。
【請求項４】
前記違反検出手段は、前記仮想端点対算出手段により算出された前記仮想機器の対に対応付けられる前記物理機器の対が前記物理経路情報にない場合、前記仮想機器の対がなす経路を違反と判定する
請求項２または請求項３記載のネットワーク検証装置。
【請求項５】
前記仮想機器に設定されているフィルタ情報を取得するフィルタ情報取得手段と、
前記仮想端点対算出手段により算出された前記仮想機器の対がなす前記仮想経路のうち前記フィルタ情報が設定された前記仮想機器を含む前記仮想経路を通る前記通信パケットのパケット情報を、当該仮想経路の端点となる前記仮想機器に対応付けられる前記物理機器に入力されるパケットから取得すると共に、当該仮想経路における前記仮想機器に設定された前記フィルタ情報と前記パケット情報とを関連付けたフィルタ判定情報を生成するフィルタ判定情報生成手段と、
前記フィルタ判定情報に基づいて、前記違反検出手段により違反と判定された経路のうち、違反でない経路を検出するフィルタ判定手段
をさらに備えた請求項４記載のネットワーク検証装置。
【請求項６】
前記フィルタ判定手段は、前記フィルタ判定情報において前記フィルタ情報と前記パケット情報とが関連付けられた経路のうち、当該経路における前記仮想機器に設定された前記フィルタ情報に含まれる条件と、当該経路を通る前記通信パケットの前記パケット情報とが整合している場合、当該経路を違反ではないと判定する
請求項５記載のネットワーク検証装置。
【請求項７】
前記フィルタ判定手段は、前記フィルタ判定情報において前記フィルタ情報と前記パケット情報とが関連付けられた経路のうち、当該経路における前記仮想機器に設定された前記フィルタ情報に含まれるアドレスと、当該経路を通る前記通信パケットの送信元アドレスとが整合している場合、当該経路を違反ではないと判定する
請求項６記載のネットワーク検証装置。
【請求項８】
前記フィルタ情報取得手段は、前記仮想機器の単位で設定されている前記フィルタ情報のうち、当該フィルタ情報に含まれる条件が一致する前記フィルタ情報を集約して条件の単位で示される集約フィルタ情報を生成する
請求項５ないし請求項７のいずれか１項記載のネットワーク検証装置。
【請求項９】
検証対象のネットワークにおいて通信パケットが送受信される物理経路の端点となる物理機器の対に関する物理経路情報を取得し、
前記ネットワークに対応付けられることにより、該ネットワークを利用して前記通信パケットを送るように仮想的に設定された仮想ネットワークにおける前記仮想機器の設定情報に基づいて、当該仮想ネットワークにおいて前記通信パケットを送受信するように設定された仮想経路の端点となる前記仮想機器の対を算出し、
前記取得された物理経路情報と、前記算出された前記仮想機器の対とに基づいて、前記ネットワークにおける設定違反を検出する
ネットワーク検証方法。
【請求項１０】
検証対象のネットワークにおいて通信パケットが送受信される物理経路の端点となる物理機器の対に関する物理経路情報を取得する処理と、
前記ネットワークに対応付けられることにより、該ネットワークを利用して前記通信パケットを送るように仮想的に設定された仮想ネットワークにおける前記仮想機器の設定情報に基づいて、当該仮想ネットワークにおいて前記通信パケットを送受信するように設定された仮想経路の端点となる前記仮想機器の対を算出する処理と、
前記取得された物理経路情報と、前記算出された前記仮想機器の対とに基づいて、前記ネットワークにおける設定違反を検出する処理と
を、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク検証装置、ネットワーク検証方法およびプログラムに関する。
【背景技術】
【０００２】
運用するネットワークに仮想化技術の適用を試みる企業や組織が増えてきている。関心が持たれている要因として、ネットワークの仮想化によりネットワーク運用者が様々な制御をソフトウエアによって自動かつ高速に行うことができるという点が考えられる。ネットワーク仮想化技術では、実際にある物理ネットワークを構成する機器との対応関係を持った仮想ネットワークを構築して運用が行われる。
【０００３】
図１は、物理機器により構築される物理ネットワークに、仮想的に構築された仮想ネットワークを対応（マッピング）させた構成を模式的に示す図である。仮想ネットワークは、仮想的に設定された仮想機器によりなる仮想経路を含み、その仮想経路に対応付けられた実際にある物理経路を利用して通信パケットを送信元から宛先に送信する。図１に示す物理ネットワークは、サーバ１、サーバ２および、スイッチ１乃至スイッチ４から構成されている。サーバ１は、スイッチ１のポート１に、サーバ２は、スイッチ２のポート１に、それぞれ接続されている。
【０００４】
図１では、仮想ネットワークの設定情報により、スイッチ１は仮想ネットワークの端点である仮想端点「ｖＥｘ＿１」に対応付けられ、スイッチ２は仮想端点「ｖＥｘ＿２」に対応付けられている。このように、仮想ネットワークの端点は、物理ネットワークのいずれかの機器に対応付けられる。仮想端点「ｖＥｘ＿１」と仮想端点「ｖＥｘ＿２」との間には、仮想ブリッジ「ｖＢｒ＿１」が配置されている。仮想端点「ｖＥｘ＿１」、仮想端点「ｖＥｘ＿２」および仮想ブリッジ「ｖＢｒ＿１」を結んでなる経路の識別情報（経路ＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ））を、経路ＩＤ＝「１」とする。
【０００５】
上記のように構築された仮想ネットワークでは、何らかのトラブルによって仮想ネットワークの設定情報が物理ネットワークに伝わらず、物理ネットワークが運用者の設計意図にそぐわない状況が発生する虞がある。そのため、障害防止を考慮したネットワーク機器の実装や、物理ネットワークに仮想ネットワークの設定情報が正しく伝わっていることを検証するシステム等によって、ネットワーク仮想化技術の信頼性を担保することは、ネットワーク仮想化技術の進展のために重要である。特に、インターネットプロトコルのＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＭＰＬＳ（Ｍｕｌｔｉ  Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）などを用いて物理ネットワークに複数の仮想ネットワークを構築して複数ユーザに割り当てる場合、他のユーザに情報がリークされてはならない。
【０００６】
非特許文献１は、物理ネットワークから転送ルールを含むネットワーク設定情報を取得して、ネットワークをモデル化することにより、ホスト間の通信の到達性、及びユーザごとに定義した仮想ネットワークの隔離性を検証する方法を開示する。非特許文献１に開示される方法では、パケット情報をヘッダ空間として表現し、ネットワーク機器の機能をこのヘッダ空間に変更を与える関数としてモデル化する。このモデル化により、任意のホストが通信可能なホストおよびその通信時のパケットのヘッダ情報が計算され、現在のネットワーク設定におけるパケットの到達性を確認することができる。また、ユーザに割り当てた仮想ネットワークごとに対応したヘッダ空間を計算した後に全仮想ネットワーク間でヘッダ空間に重なる部分がないかを調べることで、ユーザ間でパケット情報がリークしないかを判定することができる。
【０００７】
ここで、図１に示したように、ネットワーク仮想化技術では、実際にある物理ネットワークを構成する機器と対応関係を持った仮想ネットワークおよび仮想機器を構築して運用が行われることがある。この仮想ネットワークでは、通常の物理ネットワークと同様に、ファイアウォール等のパケットフィルタ設定を行うことができる。つまり、仮想ネットワークと物理ネットワークの整合性を確認するツールでは、仮想ネットワークの設定として「所定のアドレスを持つパケットのみ通過を許可する」といったポリシーを読み込み、実際に物理ネットワークで通過し得るパケットがこのポリシーに反していないかの条件判定を行う。
【０００８】
非特許文献２は、物理スイッチの設定情報を充足可能性問題（ＳＡＴ：ＳＡＴｉｓｆｉａｂｉｌｉｔｙ  ｐｒｏｂｌｅｍ）のインスタンスとして書き換え、ＳＡＴソルバーと呼ばれる既存のエンジンを用いることで、高速に物理ネットワークの違反可能性を漏れなく検査する方法を開示する。ここで、違反とは、例えば、仮想ネットワークで定義された導通経路が、物理ネットワークにおいて到達不可能となっていることを指す。この検査の過程において、フィルタ設定を含む物理スイッチの全ての設定は、ブール代数で書き換えられると共に、既存の最適化手法によって再編される。非特許文献２は、また、誤設定検出の高速化のためのＳＡＴソルバーの入力データ最適化方法も開示する。
【０００９】
特許文献１は、構成変更後のネットワークシステムの妥当性を事前に検証する方法を開示する。特許文献１では、稼働中のネットワークシステムからネットワーク設定情報を検証サーバに自動収集し、各ネットワーク機器のルーティングテーブルを自動生成する。そして、構成変更後のネットワークのルーティングテーブルを擬似的に生成して、経路検索を実施することにより、ネットワークの接続性を検証する。
【００１０】
特許文献２は、ファイアウォール等のセキュリティ機器から設定情報を抽出して、機器の仕様に依存しない書式の汎用セキュリティポリシーを生成する方法を開示する。
【００１１】
特許文献３は、ファイアウォールプロセッサの負担を軽減するために、条件判定結果をキャッシュすることにより判定回数を削減する方法を開示する。
【００１２】
特許文献４は、ネットワークにおけるファイアウォール等で設定されているフィルタルールの管理を行い、複雑なフィルタルールの集合を最適化するとともに、複数の機器におけるパケットフィルタ処理の同一性を判断できるルール分析方法を開示する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００２−１８５５１２
【特許文献２】特開２００６−０４０２４７
【特許文献３】特開平１１−１６３９４０
【特許文献４】再特開ＷＯ２００６−０９０７８１
【非特許文献】
【００１４】
【非特許文献１】Peyman Kazemian, George Varghese, Nick McKeown著「Header Space Analysis: Static Checking For Networks」, NSDI'12 Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation、２０１２年、ｐｐ．9−22
【非特許文献２】H. Mai .et.al.著「Debugging the Data Plane with Anteater」, ACM SIGCOMM Computer Communication Review、２０１１年、ｐｐ．290-301
【発明の概要】
【発明が解決しようとする課題】
【００１５】
非特許文献１に記載の方法では、仮想ネットワークの設定違反を検証するために、到達可能物理経路数の２乗のオーダーの計算量が必要となる。そのため、例えば、データセンタの大規模ネットワークのように、多くの仮想ネットワークが設定されている場合、設定違反の検出に膨大な計算時間を要するので、検証が困難となるという課題がある。
【００１６】
非特許文献２に記載の方法では、ネットワークの検証を行う問題を充足可能性問題に落とす過程でフィルタ設定を含む物理ネットワーク設定情報の最適化を行っているが、ネットワークの検証にはやはり多くの時間を要する。
【００１７】
特許文献１ないし特許文献４においても、ネットワークの検証時間を短縮する技術は開示されていない。
【００１８】
本願発明は、上記課題を鑑みてなされたものであり、ネットワークの検証時間を短縮することが可能なネットワーク検証装置等を提供することを主要な目的とする。
【課題を解決するための手段】
【００１９】
本発明の第１のネットワーク検証装置は、検証対象のネットワークにおいて通信パケットが送受信される物理経路の端点となる物理機器の対に関する物理経路情報を取得する物理経路取得手段と、前記ネットワークに対応付けられることにより、該ネットワークを利用して前記通信パケットを送るように仮想的に設定された仮想ネットワークにおける仮想機器の設定情報に基づいて、当該仮想ネットワークにおいて前記通信パケットを送受信するように設定された仮想経路の端点となる前記仮想機器の対を算出する仮想端点対算出手段と、前記物理経路取得手段により取得された物理経路情報と、前記仮想端点対算出手段により算出された前記仮想機器の対とに基づいて、前記ネットワークにおける設定違反を検出する違反検出手段とを備える。
【００２０】
本発明の第１のネットワーク検証方法は、検証対象のネットワークにおいて通信パケットが送受信される物理経路の端点となる物理機器の対に関する物理経路情報を取得し、前記ネットワークに対応付けられることにより、該ネットワークを利用して前記通信パケットを送るように仮想的に設定された仮想ネットワークにおける前記仮想機器の設定情報に基づいて、当該仮想ネットワークにおいて前記通信パケットを送受信するように設定された仮想経路の端点となる前記仮想機器の対を算出し、前記取得された物理経路情報と、前記算出された前記仮想機器の対とに基づいて、前記ネットワークにおける設定違反を検出する。
【００２１】
なお同目的は、上記の各構成を有するネットワーク検証方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００２２】
本願発明によれば、ネットワークの検証時間を短縮することが可能であるという効果が得られる。
【図面の簡単な説明】
【００２３】
【図１】ネットワーク仮想化技術によって運用されるネットワークを示す説明図である。
【図２】本発明の第１の実施形態に係るネットワーク検証装置の構成を示す図である。
【図３】本発明の第１の実施形態に係るネットワーク検証装置の動作の概要を示すフローチャートである。
【図４Ａ】本発明の第１の実施形態に係るネットワーク検証装置が取得した物理機器の設定情報の例を示す図である。
【図４Ｂ】本発明の第１の実施形態に係るネットワーク検証装置が取得した物理機器間の結線情報の例を示す図である。
【図５】本発明の第１の実施形態に係るネットワーク検証装置の経路検証分析部により生成された到達可能物理経路情報の例を示す。
【図６】本発明の第１の実施形態に係るネットワーク検証装置が取得するヘッダ情報の一例を示す図である。
【図７】本発明の第１の実施形態に係るネットワーク検証装置の物理仮想突合部の動作を示すフローチャートである。
【図８】本発明の第１の実施形態に係るネットワーク検証装置の仮想ネットワーク設定入力部から取得した仮想機器設定情報の例を示す図である。
【図９】本発明の第１の実施形態に係るネットワーク検証装置の仮想端点対生成部が生成する仮想端点対情報の一例を示す図である。
【図１０】本発明の第１の実施形態に係るネットワーク検証装置の結線経路突合部の動作を説明するフローチャートである。
【図１１Ａ】本発明の第１の実施形態に係るネットワーク検証装置の結線突合経路記憶部に記憶された結線突合経路情報の例を示す図である。
【図１１Ｂ】本発明の第１の実施形態に係るネットワーク検証装置の結線突合経路記憶部に記憶された結線突合経路情報の例を示す図である。
【図１２】本発明の第２の実施形態に係るネットワーク検証装置の構成を示すブロック図である。
【図１３】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ情報解析部の詳細な構成を示すブロック図である。
【図１４】本発明の第２の実施形態に係るネットワーク検証装置の物理仮想突合部の動作の概要を示すフローチャートである。
【図１５】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ情報解析部、フィルタ判定部および違反経路分析部の動作を示すフローチャートである。
【図１６】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ設定情報集約部が取得するフィルタ設定情報の例を示す図である。
【図１７】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ設定情報集約部が生成する集約フィルタ情報の例を示す図である。
【図１８】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ設定情報集約部の動作を示すフローチャートである。
【図１９】本発明の第２の実施形態に係るネットワーク検証装置の経路フィルタ情報生成部の動作を示すフローチャートである。
【図２０Ａ】本発明の第２の実施形態に係るネットワーク検証装置の経路フィルタ情報記憶部で保持される経路フィルタ情報の例を示す図である。
【図２０Ｂ】本発明の第２の実施形態に係るネットワーク検証装置の経路フィルタ情報記憶部で保持される経路フィルタ情報の例を示す図である。
【図２１】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ判定情報生成部の動作を示すフローチャートである。
【図２２】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ判定情報生成部が生成するフィルタ判定情報の例を示す図である。
【図２３】本発明の第２の実施形態に係るネットワーク検証装置のフィルタ判定部が生成するフィルタ判定結果情報の例を示す図である。
【図２４】本発明の第２の実施形態に係るネットワーク検証装置の違反経路分析部の動作を示すフローチャートである。
【図２５】本発明の第２の実施形態に係るネットワーク検証装置の違反経路分析部が生成する違反経路情報の例を示す図である。
【図２６】本発明の第３の実施形態に係るネットワーク検証装置の構成を示す図である。
【図２７】本発明の各実施形態に係るネットワーク検証装置のハードウエア構成を例示する図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００２５】
第１の実施形態
構成の説明
図２は、本発明の第１の実施形態に係るネットワーク検証装置２００の構成を示す図である。図２に示すネットワーク１００は、図１に模式的に示したように、実際にある物理ネットワークに、仮想ネットワークの設定情報がマッピングされた構成を有する。ネットワーク検証装置２００は、ネットワーク１００における、設定ミス（設定違反）を検出する機能を有する。
【００２６】
ネットワーク１００には、仮想ネットワーク制御部１０１と、１または複数のネットワーク機器１０２１、１０２２、１０２３、・・・（以降、総称して「ネットワーク機器１０２」と称する）とが配置されている。仮想ネットワーク制御部１０１は、プログラムにしたがってネットワーク１００を制御している。
【００２７】
ネットワーク１００は、ＯｐｅｎＦｌｏｗプロトコルにしたがって制御されるネットワーク（ＯｐｅｎＦｌｏｗネットワーク）環境でもよい。また、以下の説明において、「仮想ネットワークに関する設定」は、ＯｐｅｎＦｌｏｗネットワーク環境におけるＯｐｅｎＦｌｏｗコントローラの設定を、「物理ネットワークに関する設定」はＯｐｅｎＦｌｏｗスイッチの設定を、それぞれ指してもよい。図２における仮想ネットワーク制御部１０１はＯｐｅｎＦｌｏｗネットワーク環境におけるＯｐｅｎＦｌｏｗコントローラに相当し、ネットワーク機器１０２はＯｐｅｎＦｌｏｗスイッチに相当する。ネットワーク１００における仮想ネットワークには、仮想ネットワーク制御部１０１により制御される仮想機器が配置される。
【００２８】
図２においてネットワーク検証装置２００は、ネットワーク１００から仮想ネットワークに関する設定と物理ネットワークに関する設定とを取得して、ネットワーク１００の設定の誤りを検出する。
【００２９】
ネットワーク検証装置２００は、仮想ネットワーク設定入力部２１０、物理ネットワーク設定入力部２２０、経路検証分析部２３０、到達可能物理経路記憶部２４０、物理仮想突合部２５０および違反経路出力部２６０を備える。
【００３０】
各構成要素の概要について説明する。
【００３１】
仮想ネットワーク設定入力部２１０は、ネットワーク１００に仮想ネットワーク制御部１０１により設定された仮想ネットワークに関する設定情報を、仮想ネットワーク制御部１０１から取得する。物理ネットワーク設定入力部２２０は、ネットワーク機器１０２などの設定情報（物理ネットワークに関する設定情報）を、ネットワーク機器１０２から取得する。
【００３２】
経路検証分析部２３０は、物理ネットワーク設定入力部２２０が取得した物理ネットワークに関する設定情報に基づいて、物理的に到達可能な端点の対である端点対と、その端点対を結ぶ経路を算出する。到達可能物理経路記憶部２４０は、経路検証分析部２３０が算出した到達可能な物理ネットワークの端点対と、その経路に関する情報（到達可能物理経路情報）を格納する。
【００３３】
物理仮想突合部２５０は、物理ネットワークに関する設定情報と、仮想ネットワークに関する設定情報とを突き合わせることにより、設定ミスによって生じた違反経路を検出する。違反経路出力部２６０は、物理仮想突合部２５０により検出された違反経路を出力する。
【００３４】
物理仮想突合部２５０は、仮想端点対生成部２５１、仮想端点対記憶部２５２、結線経路突合部２５３および結線突合経路記憶部２５４を備える。
【００３５】
仮想端点対生成部２５１は、仮想ネットワークに設定された仮想機器に関する設定情報および仮想機器間の結線情報を解析する。そして、仮想端点対生成部２５１は、仮想ネットワークにおいて到達可能な端点の対である仮想端点対を算出すると共に、その仮想端点対を含む仮想端点対情報を生成する。仮想端点対記憶部２５２は、仮想端点対生成部２５１が生成した仮想端点対情報を記憶する。
【００３６】
結線経路突合部２５３は、仮想端点対生成部２５１が生成した仮想端点対情報と、経路検証分析部２３０が算出した到達可能物理経路情報を参照して、違反経路を算出する。結線突合経路記憶部２５４は、結線経路突合部２５３が算出した違反経路に関する情報を格納する。
【００３７】
図３は、ネットワーク検証装置２００の動作の概要を示すフローチャートである。図３を参照して、ネットワーク検証装置２００の動作の概要について説明する。
【００３８】
ネットワーク検証装置２００は、ネットワーク１００から設定情報を取得する（Ａ１１０）。すなわち、仮想ネットワーク設定入力部２１０は、仮想ネットワークの設定情報を取得する。物理ネットワーク設定入力部２２０は、物理ネットワークの設定情報を取得する。
【００３９】
次に、物理仮想突合部２５０は、取得した情報を参照して、経路の検証を実行し、違反の検出を行う（Ａ１２０）。次に、違反経路出力部２６０は、物理仮想突合部２５０の検証の結果として得られた違反、すなわち到達性違反および隔離性違反（詳細は後述する）となる経路を出力する（Ａ１３０）。
【００４０】
次に、経路検証分析部２３０の動作について説明する。経路検証分析部２３０は、物理ネットワークのネットワーク機器１０２（物理機器）に関する設定情報を、物理ネットワーク設定入力部２２０から取得する。そして、経路検証分析部２３０は、その設定情報に基づいて、到達可能な物理ネットワークの端点対の始点および終点に関する情報を含む到達可能物理経路情報の生成を行う。
【００４１】
図４Ａおよび図４Ｂは、物理機器の設定に関する情報の例を示す図である。図４Ａは、物理機器の設定情報の例を示す。図４Ｂは、物理機器間の結線情報の例を示す。図４Ａに示すように、物理機器の設定情報は、物理機器であるスイッチの識別情報（スイッチＩＤ）、ポート番号、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、アクションを含む。図４Ａでは、例えば、スイッチＩＤ＝「１」を有するスイッチのポート番号＝「１」に設定されたＭＡＣアドレスは「ＭＡＣ１」、ＩＰアドレスは「ＩＰ１」、アクションは「ＡｃｔｉｏｎＡ」であることが示される。
【００４２】
また、図４Ｂに示すように、物理機器間の結線情報は、互いに接続されているスイッチのポートの情報を含む。すなわち、物理機器間の結線情報には、互いに接続される、送信元スイッチＩＤと送信元ポート番号とを含む送信元情報と、宛先スイッチＩＤと宛先ポート番号とを含む宛先情報とを含む。図４Ｂでは、例えば、送信元となる、スイッチＩＤ＝「１」を有するスイッチのポート番号＝「１」は、スイッチＩＤ＝「２」を有するスイッチのポート番号＝「１」を宛先として接続されていることを示す。
【００４３】
経路検証分析部２３０は、上記のような物理機器の設定情報および物理機器間の結線情報を物理ネットワーク設定入力部２２０から取得し、これらに基づいて、到達可能物理経路情報を生成する。
【００４４】
図５は、経路検証分析部２３０により生成された到達可能物理経路情報の例を示す。到達可能物理経路情報には、到達可能な物理ネットワークの端点対の送信元（始点）に関する送信元情報と、宛先（終点）に関する宛先情報とが関連付けられた状態で格納される。送信元情報には、送信元スイッチＩＤ、送信元ポート番号、送信元ＶＬＡＮ−ＩＤ、送信元ヘッダ情報ＩＤが含まれる。宛先情報には、宛先スイッチＩＤ、宛先ポート番号、宛先ＶＬＡＮ−ＩＤ、宛先ヘッダ情報ＩＤが含まれる。
【００４５】
送信元スイッチＩＤ、送信元ポート番号は、スイッチ固有の情報である。送信元ＶＬＡＮ−ＩＤは、仮想ネットワークの端点との対応付けのための情報である。送信元ヘッダ情報ＩＤは、送信されるパケットの送信元のＩＰアドレスなどのパケット情報を含むヘッダパターン（ヘッダ情報）のＩＤである。図６は、ヘッダ情報の一例を示す図である。図６の例では、ヘッダ情報は、ＩＤが付与された、パケットの送信元ＩＰアドレスと送信元ＭＡＣアドレスの組を含む。図５の宛先情報に含まれる各項目は、送信元情報に含まれる上記各項目と同様である。
【００４６】
経路検証分析部２３０は、到達可能な物理ネットワークの端点対の探索に、例えば、非特許文献１に示される技術を利用することにより、図５に示すような到達可能物理経路情報を生成してもよい。具体的には、経路検証分析部２３０は、ヘッダパターンをビット列、ネットワーク機器の動作をビット列に作用する遷移関数としてモデル化を行い、ネットワーク機器の始点から終点にたどり着くために許されるヘッダパターンを求めてもよい。
【００４７】
経路検証分析部２３０は、上記のように生成した到達可能物理経路情報を、到達可能物理経路記憶部２４０に格納する。
【００４８】
違反経路出力部２６０は、設定ミスにより生じた違反の種類、違反している物理経路、および対応する仮想ネットワーク端点の情報を出力する。違反の種類には、到達性の違反と隔離性の違反が含まれる。本実施形態における到達性の違反とは、仮想ネットワークの設定では到達可能であるにも関わらず、物理ネットワークに経路が存在しない場合を指す。また、本実施形態における隔離性の違反とは、仮想ネットワークの設定では到達不可能であるにも関わらず、物理ネットワークに経路が存在する場合を指す。到達性の違反は、例えば、仮想ネットワークの設定情報が何らかのトラブルで物理機器に伝わらず、物理ネットワークにネットワーク運用者の意図した物理経路が設定されない場合に生じる。違反経路出力部２６０は、違反経路を、例えばコマンドラインで違反の種類と違反経路の情報を列挙して表示したり、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）で仮想または物理ネットワークトポロジーと合わせて違反経路を表示したり、またはデータファイルで出力してもよい。
【００４９】
次に、物理仮想突合部２５０の動作について説明する。まず、図７を参照して、物理仮想突合部２５０の動作の概要について説明する。
【００５０】
物理仮想突合部２５０の仮想端点対生成部２５１は、仮想ネットワークに設定された仮想機器の設定情報（以降、「仮想機器設定情報」とも称する）を、仮想ネットワーク設定入力部２１０から取得する（Ｂ１１０）。
【００５１】
仮想端点対生成部２５１は、仮想ネットワーク設定入力部２１０から取得した仮想機器設定情報を参照して、到達可能な仮想端点対を算出する（Ｂ１２０）。
【００５２】
図８は、仮想ネットワーク設定入力部２１０から取得した仮想機器設定情報の例を示す図である。図８に示すように、仮想機器設定情報は、設定情報と結線情報とを含む。ここで、仮想機器には、仮想ネットワークの端点（仮想端点）だけでなく仮想ルータや仮想ブリッジなど経路の途中に配置され得る仮想機器も含まれる。設定情報には、仮想機器ＩＤなど、仮想ネットワークにおいてその機器を特定させる情報が含まれる。
【００５３】
仮想機器が仮想端点の場合（図８に示す例では、仮想機器ＩＤ＝「ｖＥｘ＿１」、「ｖＥｘ＿２」）、その仮想機器に対応付けられる物理端点（物理機器）であるスイッチのＩＤおよびポート番号も設定情報に含まれる。
【００５４】
結線情報には、結線仮想機器ＩＤが含まれる。結線仮想機器ＩＤとは、その仮想機器に隣接するように設定された仮想機器（結線仮想機器)のＩＤである。例えば、図１に示した仮想ネットワークの場合、仮想機器ＩＤ＝「ｖＢｒ＿１」を持つ仮想機器は、仮想機器「ｖＥｘ＿１」と「ｖＥｘ＿２」と接続されている。したがって、仮想機器ＩＤ＝「ｖＢｒ＿１」に対応する結線情報は、「ｖＥｘ＿１」、「ｖＥｘ＿２」となる。また、仮想機器ＩＤ＝「ｖＥｘ＿１」、「ｖＥｘ＿２」に対応する結線情報は、ともに「ｖＢｒ＿１」となる。
【００５５】
仮想端点対生成部２５１は、仮想ネットワーク設定入力部２１０から上記のような仮想機器設定情報を取得して、各仮想機器の結線情報を結ぶことにより図１に示すような仮想ネットワーク全体の結線状態を把握する。そして、仮想端点対生成部２５１は、把握した仮想ネットワークにおける結線状態に基づいて、到達可能な仮想端点対を全て算出する。仮想端点対生成部２５１は、例えば図８に示す仮想機器設定情報を参照すると、仮想端点「ｖＥｘ＿１」から始まる経路は、「ｖＥｘ＿１」の結線仮想機器である「ｖＢｒ＿１」に移り、さらに、「ｖＢｒ＿１」の結線仮想機器であり端点となる「ｖＥｘ＿２」に移ることが分かる。そこで、仮想端点対生成部２５１は、仮想端点対として「ｖＥｘ＿１」および「ｖＥｘ＿２」を算出する。
【００５６】
続いて、仮想端点対生成部２５１は、算出した仮想端点対を元に、仮想端点対情報を生成する。図９は、仮想端点対生成部２５１が生成した仮想端点対情報の一例を示す図である。仮想端点対には、経路ＩＤが割り当てられる。
【００５７】
仮想端点対生成部２５１は、経路ＩＤを付与した、送信元仮想端点情報と宛先仮想端点情報とを含む仮想端点対情報を生成する。仮想端点対生成部２５１は、算出した仮想端点対の「ｖＥｘ＿１」を送信元仮想機器ＩＤに、「ｖＥｘ＿２」を宛先仮想機器ＩＤに、それぞれ設定する。
【００５８】
さらに、仮想端点対生成部２５１は、送信元仮想機器ＩＤおよび宛先仮想機器ＩＤを、それぞれ物理端点と対応付けるために必要なスイッチのＩＤやポート番号、ＶＬＡＮ−ＩＤも、仮想端点対情報に含める。仮想端点対生成部２５１は、生成した仮想端点対情報を仮想端点対記憶部２５２に記憶する。
【００５９】
続いて、図７のＢ１３０に示すように、結線経路突合部２５３は、仮想端点対記憶部２５２から取得した仮想ネットワークにおける仮想端点対情報と、到達可能物理経路記憶部２４０から取得した到達可能物理経路情報とを突き合わせることにより、隔離性違反（Ｉｓｏｌａｔｉｏｎ）または到達性違反（Ｒｅａｃｈａｂｉｌｉｔｙ）の経路を算出する。
【００６０】
図１０は、結線経路突合部２５３により、結線違反となる経路を算出する動作を説明するフローチャートである。図１０を参照して、結線経路突合部２５３の動作について説明する。
【００６１】
結線経路突合部２５３は、まず、仮想端点対記憶部２５２から仮想端点対情報を取得する（Ｃ１１０）。また、結線経路突合部２５３は、到達可能物理経路記憶部２４０から到達可能物理経路情報を取得する（Ｃ１２０）。
【００６２】
続いて、結線経路突合部２５３は、仮想端点対情報に基づいて、到達可能物理経路を探索する（Ｃ１３０）。すなわち、結線経路突合部２５３は、全ての到達可能物理経路に対する探索を終了していない場合（Ｃ１３０においてＮｏ）、仮想端点対情報と到達可能物理経路とを突き合わせ、到達可能物理経路が仮想ネットワークに存在するかを調べる（Ｃ１４０）。結線経路突合部２５３は、上記探索に、図５に示した到達可能物理経路情報に含まれる送信元情報と宛先情報を利用する。すなわち、結線経路突合部２５３は、到達可能物理経路情報に含まれる送信元情報の送信元スイッチＩＤ、送信元ポート番号および送信元ＶＬＡＮ−ＩＤと一致する送信元仮想端点情報と、宛先情報の宛先スイッチＩＤ、宛先ポート番号および宛先ＶＬＡＮ−ＩＤと一致する宛先仮想端点情報との対が、仮想端点対情報に存在しているかを調べる。
【００６３】
上記対が仮想端点対情報に存在する場合（Ｃ１５０においてＹｅｓ）、結線経路突合部２５３は、到達可能物理経路が仮想ネットワークに存在すると判断し、その仮想端点対情報に確認済みである印（チェック）を付与する（Ｃ１６０）。そして、結線経路突合部２５３は、その仮想端点対情報により示される経路を整合経路として結線突合経路記憶部２５４に記憶する（Ｃ１６１）。
【００６４】
一方、上記対が仮想端点対情報に存在しない場合（Ｃ１５０においてＮｏ）、結線経路突合部２５３は、到達可能物理経路は仮想ネットワークに存在しないと判断し、その経路を隔離性違反に属する違反経路として結線突合経路記憶部２５４に記憶する（Ｃ１７０）。
【００６５】
例えば、図５の１行目に示される到達可能物理経路情報の送信元情報は、上述のように把握した図１に示すネットワーク構成における仮想端点「ｖＥｘ＿１」にマッピングされ、宛先情報は仮想端点「ｖＥｘ＿２」にマッピングされる。図９を参照すると、このマッピングにより生成される経路は、送信元仮想機器ＩＤ＝「ｖＥｘ＿１」と宛先仮想機器ＩＤ＝「ｖＥｘ＿２」が成す経路であるＩＤ＝「１」の経路に一致する。結線経路突合部２５３は、経路ＩＤ＝「１」を有する経路は整合経路であると判断して結線突合経路記憶部２５４に記憶すると共に、その仮想端点対情報に、確認済みであるチェックを付与する。
【００６６】
一方で、図５の２行目に示される到達可能物理経路情報について、送信元情報により示される端点と、図９の２行目に示される仮想端点対情報の送信元仮想端点情報により示される端点は一致するが、宛先情報により示される端点と、宛先仮想端点情報により示される端点は一致しない。したがって、この到達可能物理経路情報により示される経路は隔離性違反と判断される。
【００６７】
結線経路突合部２５３は、全ての到達可能物理経路について上記の探索を行い、全ての経路について探索が終わると（Ｃ１３０においてＹｅｓ）、未チェックの仮想端点対情報を探索する（Ｃ１８０）。未チェックの仮想端点対情報が存在する場合（Ｃ１９０でＹｅｓ）、結線経路突合部２５３は、その仮想端点対情報により示される経路を、到達性違反に属する違反経路として、結線突合経路記憶部２５４に記憶する（Ｃ２００）。
【００６８】
上記のように、結線経路突合部２５３による仮想端点対情報と到達可能物理経路との突き合せにより得られ、結線突合経路記憶部２５４に記憶された情報を「結線突合経路情報」と称する。
【００６９】
図１１Ａおよび図１１Ｂは、結線突合経路記憶部２５４に記憶された結線突合経路情報の例を示す図である。図１１Ａおよび図１１Ｂに示す結線突合経路情報は、結線経路突合部２５３による上記突き合わせの結果検出された経路のステータス、経路ＩＤおよび仮想ネットワークの端点情報（送信元仮想端点情報、宛先仮想端点情報）を含む。
【００７０】
図１１Ａに示すように、ステータスには、違反の種類として、隔離性違反と到達性違反が示される。違反でない経路のステータスには、整合（ｃｏｎｓｉｓｔｅｎｔ）が示される。送信元仮想端点情報には、送信元仮想機器ＩＤ、および（ステータスが隔離性違反および整合の場合には、）到達可能物理経路情報から抽出した送信元ヘッダ情報ＩＤが含まれる。宛先仮想端点情報には、宛先仮想機器ＩＤ、および（ステータスが隔離性違反および整合の場合には、）到達可能物理経路情報から抽出した宛先ヘッダ情報ＩＤが含まれる。
【００７１】
なお、到達性違反の場合は物理ネットワークに対応するパケット情報がないので、送信元ヘッダ情報ＩＤ、宛先ヘッダ情報ＩＤの値を「−１」や「＊」等に設定することにより対象となるパケットがないことを明示してもよい。また、隔離性違反には、仮想経路にはない物理経路が該当する、すなわち対象となる仮想経路がないので、経路ＩＤの値を「−１」や「＊」等に設定することにより対象となる仮想経路がないことを明示してもよい。
【００７２】
また、図１１Ｂに示すように、送信元ヘッダ情報ＩＤおよび宛先ヘッダ情報ＩＤに代えて、パケットの送信元および宛先のＩＰアドレスやＭＡＣアドレスの具体値が結線突合経路情報に含まれてもよい。
【００７３】
結線経路突合部２５３は、上記のように生成した結線突合経路情報を結線突合経路記憶部２５４に格納する。
【００７４】
違反経路出力部２６０は、結線突合経路記憶部２５４に格納された図１１Ａまたは図１１Ｂに示すような結線突合経路情報を、例えばＧＵＩ表示やデータファイル出力等でネットワーク管理者に出力する。
【００７５】
以上のように、本第１の実施形態によれば、ネットワーク検証装置２００は、仮想ネットワーク制御部１０１から取得した仮想ネットワークの設定情報に基づいて、仮想ネットワークにおいて到達可能な端点の対である仮想端点対を算出する。そして、結線経路突合部２５３は、ネットワーク１００の物理機器に関する設定情報や結線情報に基づいて算出された到達可能物理経路をなす端点の対と仮想端点対とを突き合わせる。結線経路突合部２５３は、到達可能物理経路をなす端点の対と一致する仮想端点対がない物理経路を、隔離性違反の経路として検出する。
【００７６】
上記構成を採用することにより、仮想ネットワークの設定違反の検証に、通常は到達可能物理経路数の２乗のオーダーの計算時間を要するに対して、到達可能物理経路数のオーダーの計算時間で経路の検証ができるので、隔離性違反の経路の検証を高速に行うことができるという効果が得られる。
【００７７】
第２の実施形態
構成の説明
次に、上述した第１の実施形態を基礎とする第２の形態について図面を参照して説明する。以下の説明では、第１の実施形態と同様の構成については同じ参照番号を付与することにより、重複する説明は省略する。
【００７８】
図１２は、本発明の第２の実施形態に係るネットワーク検証装置３００の構成を示すブロック図である。図１２のネットワーク検証装置３００は、第１の実施形態で説明した図２に示したネットワーク検証装置２００と同様に、ネットワーク１００における設定違反の検証を行う（図１２においては、ネットワーク１００の図示を省略している）。
【００７９】
図１２に示すように、第２の実施の形態に係るネットワーク検証装置３００は、第１の実施形態において説明した物理仮想突合部２５０に代えて物理仮想突合部３５０を備える。物理仮想突合部３５０は、第１の実施形態において説明した物理仮想突合部２５０の機能に加えて、ネットワーク１００の仮想ネットワークに設定された仮想機器に設定されているフィルタ情報（以降、「フィルタ設定」とも称する）を考慮して違反経路の検出を行う機能を有する。ここで、本実施形態におけるフィルタ設定とは、仮想機器に設定されている、パケットの転送制御に関する条件を指す。パケットがネットワーク１００（物理ネットワーク）の端点に流入した時点のヘッダ情報が、フィルタ設定で示されている条件にマッチする場合、仮想機器は、そのパケットに、フィルタ設定に含まれているアクションを適用する。
【００８０】
第２の実施形態に係る物理仮想突合部３５０は、上記の転送制御の条件を加味して、違反経路の検出を行う。
【００８１】
図１２に示すように、物理仮想突合部３５０は、物理仮想突合部２５０の構成に加えて、破線３１５で囲った構成要素、すなわちフィルタ情報解析部２５５、フィルタ判定部２５６、フィルタ判定結果記憶部２５７および違反経路分析部２５８を備える。
【００８２】
物理仮想突合部３５０の各構成要素の概要について説明する。
【００８３】
フィルタ情報解析部２５５は、違反経路の特定に必要となるフィルタ判定情報を生成する。フィルタ判定部２５６は、フィルタ情報解析部２５５により生成されたフィルタ判定情報に基づいて、フィルタ設定を加味した経路の判定を行う。フィルタ判定結果記憶部２５７は、フィルタ判定部２５６による判定結果を記憶する。違反経路分析部２５８は、フィルタ判定部２５６による判定結果と、第１の実施形態にて説明した結線突合経路記憶部２５４に記憶される、違反経路と判断された結線突合経路情報とに基づいて、フィルタ設定を加味した違反経路の検出を行う。
【００８４】
図１３は、図１２に示したフィルタ情報解析部２５５の詳細な構成を示すブロック図である。図１３に示すように、フィルタ情報解析部２５５は、フィルタ設定情報集約部（フィルタ情報取得手段）２５５１、集約フィルタ情報記憶部２５５２、経路フィルタ情報生成部２５５３、経路フィルタ情報記憶部２５５４およびフィルタ判定情報生成部２５５５を備える。
【００８５】
図１４は、図１２に示した物理仮想突合部３５０の動作の概要を示すフローチャートである。物理仮想突合部３５０は、第１の実施形態における物理仮想突合部２５０の動作に加えて、フィルタ設定を加味した経路の判定を行う。まず、図１２および図１４を参照して、物理仮想突合部３５０の動作の概要について説明する。
【００８６】
図１４に示すＤ１１０乃至Ｄ１３０について、物理仮想突合部３５０は、図７に示すＢ１１０乃至Ｂ１３０と同様の動作を行う。ここで、Ｄ１３０において算出された違反経路は、仮想ネットワークにおける仮想機器になされたフィルタ設定は考慮されておらず、結線情報のみに基づいて検出された違反経路である。つまり、仮想機器になされたフィルタ設定によっては、違反ではない経路であっても、Ｄ１３０では違反として判断されている場合がある。そこで、本第２の実施形態では、Ｄ１４０以降の処理において、フィルタ設定を加味した違反経路の検出を行うことにより、違反経路検出の精度を上げることを説明する。
【００８７】
物理仮想突合部３５０は、概略以下の動作を行う。まず、フィルタ情報解析部２５５は、フィルタ判定情報を生成する（Ｄ１４０）。続いて、フィルタ判定部２５６は、生成されたフィルタ判定情報に基づいて、送信するパケットに関するパケット情報と、フィルタ判定情報に含まれる条件（フィルタ条件）がマッチするか否かを判定し、その判定結果であるフィルタ判定結果情報を生成する（Ｄ１５０）。続いて、違反経路分析部２５８は、Ｄ１３０で生成された結線違反経路情報と、Ｄ１５０で生成されたフィルタ判定結果情報とに基づいて、フィルタ設定を加味した違反経路の検出を行う（Ｄ１６０）。
【００８８】
次に、図１３を参照して、フィルタ情報解析部２５５の詳細について説明する。
【００８９】
フィルタ情報解析部２５５のフィルタ設定情報集約部２５５１は、ネットワーク１００の仮想ネットワークにある仮想機器に設定されているフィルタ情報を取得すると共に、機器単位で設定されているフィルタ情報を集約することにより、フィルタ条件単位で示される集約フィルタ情報を生成する。集約フィルタ情報記憶部２５５２は、フィルタ設定情報集約部２５５１により生成された集約フィルタ情報を記憶する。
【００９０】
経路フィルタ情報生成部２５５３は、フィルタ設定がなされた仮想機器にトポロジー情報を付与した（仮想機器がどの経路に属しているかを示す）経路フィルタ情報を生成する。経路フィルタ情報記憶部２５５４は、経路フィルタ情報生成部２５５３により生成された経路フィルタ情報を記憶する。フィルタ判定情報生成部２５５５は、集約フィルタ情報記憶部２５５２から取得した集約フィルタ情報に、経路フィルタ情報記憶部２５５４から取得した経路フィルタ情報により示されるトポロジー情報を付与するとともに、結線突合経路記憶部２５４に記憶される結線突合経路情報を参照して、フィルタ判定情報を生成する。
【００９１】
図１５は、図１４のＤ１４０に示したフィルタ情報解析部２５５の動作（Ｅ１１０乃至Ｅ１４０）と、Ｄ１５０に示したフィルタ判定部２５６の動作（Ｅ１５０）と、Ｄ１６０に示した違反経路分析部２５８の動作（Ｅ１６０）の概要を示すフローチャートである。また、図１６乃至図２５は、Ｅ１１０乃至Ｅ１６０に示す処理の実行にあたり、フィルタ情報解析部２５５、フィルタ判定部２５６または違反経路分析部２５８が生成する情報を示す図、またはそれらの動作を示すフローチャートである。図１５乃至図２５を参照して、フィルタ情報解析部２５５、フィルタ判定部２５６および違反経路分析部２５８の動作について説明する。
【００９２】
フィルタ情報解析部２５５のフィルタ設定情報集約部２５５１は、仮想機器ごとに設定されたフィルタ設定情報を仮想ネットワーク設定入力部２１０から取得する（Ｅ１１０）。図１６は、フィルタ設定情報集約部２５５１が取得したフィルタ設定情報の例を示す図である。フィルタ設定情報は、例えば「ｖＢｒ＿１」など、フィルタ設定がなされた仮想機器ごとに生成されている。図１６では、フィルタ設定情報は、フィルタＩＤ、仮想機器ＩＤ、優先度、条件値およびアクションを含む。条件値には、送信元ＩＰアドレスおよび送信元ＭＡＣアドレスが含まれる。
【００９３】
フィルタＩＤは、設定されているフィルタごとに付与された識別情報である。仮想機器ＩＤは、そのフィルタ設定がなされている仮想機器の識別情報である。優先度は、同じフィルタＩＤを有する条件を適用する際の優先順位を示す値である。例えば、図１６の１行目と２行目は同じフィルタＩＤ＝「１」を有し、１行目の優先度の値が低い（優先順位が高い）ので、１行目に示される条件が先に適用されることを示す。条件値は、その仮想機器を通過するパケットの転送制御の条件を示す。すなわち、パケットの送信元のＩＰアドレスとＭＡＣアドレスが、当該フィルタ設定情報に含まれる条件値の「送信元ＩＰアドレス」と「送信元ＭＡＣアドレス」と整合するか否かが判定される（詳細は後述する）。アクションは、その仮想機器を通過するパケットの送信元のＩＰアドレスとＭＡＣアドレスが条件値の各値とマッチする場合、そのパケットに対して行われるアクションを示す。
【００９４】
送信元ＩＰアドレス、送信元ＭＡＣアドレスの条件値には、１つの値を指定してもよいし、ネットマスクやプレフィックス値を利用して範囲指定してもよいし、もしくは「ＡＮＹ」（全ての値）を指定してもよい。アクションには、例えばパケット通過を指示する「Ｐａｓｓ」、パケット破棄を指示する「Ｄｒｏｐ」などが指定されてもよい。
【００９５】
フィルタ設定情報集約部２５５１は、上記のようなフィルタ設定情報に基づいて、フィルタ条件単位で集約した集約フィルタ情報を生成する（Ｅ１２０）。図１７は、集約フィルタ情報の例を示す図である。集約フィルタ情報は、仮想機器ごとに設定されたフィルタ設定情報のうち、条件値が重複する複数の情報を１つに集約した情報である。
【００９６】
具体的には、フィルタ設定情報集約部２５５１は、図１８に示すフローチャートの手順で、集約フィルタ情報を生成する。フィルタ設定情報集約部２５５１は、仮想ネットワーク設定入力部２１０から、フィルタ設定情報を取得する（Ｆ１１０）。フィルタ設定情報集約部２５５１は、フィルタ設定情報について探索を行う（Ｆ１２０）。すなわち、フィルタ設定情報集約部２５５１は、未探索のフィルタ設定情報から、条件値とアクションの組（条件組）を取得する（Ｆ１３０）。そして、フィルタ設定情報集約部２５５１は、取得した条件組が、集約フィルタ情報記憶部２５５２に記憶されていない新しい条件組である場合（Ｆ１４０においてＹｅｓ）、その条件組にフィルタグループＩＤを割り当てると共にその条件組を集約フィルタ情報記憶部２５５２に記憶する（Ｆ１５０）。
【００９７】
そして、フィルタ設定情報集約部２５５１は、集約フィルタ情報記憶部２５５２に記憶した条件組に含まれている条件値が設定されている仮想機器のＩＤを、フィルタ設定情報から抽出して条件組に追加する（Ｆ１６０）。上記動作により、集約フィルタ情報が生成される。Ｆ１４０において、新しい条件組でない場合、フィルタ設定情報集約部２５５１は、すでに集約フィルタ情報記憶部２５５２に記憶されている条件組に、当該条件値が設定されている仮想機器のＩＤを追加する。
【００９８】
図１７におけるフィルタグループＩＤ＝２で示される集約フィルタ情報は、図１６のフィルタＩＤ＝「２」、「３」を有するフィルタ設定情報が集約された結果である。この集約の際、条件同値性を調べる方法として、例えば特許文献４に記されているような条件情報の正規化とビット演算を用いた方法が利用されてもよい。
【００９９】
続いて、図１５のＥ１３０に示すように、経路フィルタ情報生成部２５５３は、仮想端点対記憶部２５２に記憶されている仮想端点対情報と、仮想ネットワーク設定入力部２１０から取得した仮想機器設定情報およびフィルタ設定情報に基づいて、フィルタ設定にトポロジー情報を付与する。すなわち、経路フィルタ情報生成部２５５３は、仮想端点対を結ぶ経路で通過するフィルタのＩＤまたはフィルタ設定がなされている仮想機器のＩＤを列挙し、経路ＩＤとフィルタＩＤ（または仮想機器ＩＤ）とを対応付けた経路フィルタ情報を生成する。経路フィルタ情報生成部２５５３は、生成した経路フィルタ情報を経路フィルタ情報記憶部２５５４に格納する。
【０１００】
図１９は、経路フィルタ情報生成部２５５３により経路フィルタ情報を生成する動作を示すフローチャートである。図１９に示すように、経路フィルタ情報生成部２５５３は、まず、仮想ネットワーク設定入力部２１０から仮想機器設定情報およびフィルタ設定情報を取得すると共に、仮想端点対記憶部２５２に記憶されている仮想端点対情報を取得する（Ｇ１１０）。
【０１０１】
経路フィルタ情報生成部２５５３は、仮想端点対を結んだ経路にあるフィルタ設定がなされた仮想機器を検出し、その仮想機器の情報または設定されたフィルタＩＤを抽出する（Ｇ１２０）。ここで、仮想機器の情報は、例えば、「ｖＥｘ＿１」などの仮想機器ＩＤや、物理機器と対応付けるためのスイッチＩＤ、ポート番号、ＶＬＡＮ−ＩＤでもよい。例えば、図１に示した経路ＩＤ＝１の場合、経路フィルタ情報生成部２５５３は、仮想端点対＝「ｖＥｘ＿１：ｖＥｘ＿２」を結ぶ経路に存在する「ｖＢｒ＿１」を検出する。この「ｖＢｒ＿１」には、図１６に基づいて、フィルタＩＤ＝１が設定されていることが分かる。そこで、経路フィルタ情報生成部２５５３は、仮想機器ＩＤ＝「ｖＢｒ＿１」、またはその仮想機器になされたフィルタＩＤ＝「１」と、上記経路ＩＤ＝「１」とを関連付けた経路フィルタ情報を生成し、経路フィルタ情報記憶部２５５４に記憶する（Ｇ１３０）。
【０１０２】
図２０Ａおよび図２０Ｂは、経路フィルタ情報記憶部２５５４で保持される経路フィルタ情報の例を示す図である。図２０Ａに示すように、経路フィルタ情報は、経路のＩＤと、その経路で通過するフィルタのＩＤとを関連づける。経路ＩＤで示される経路を通過するフィルタが複数ある場合は、通過する順にフィルタのＩＤが列挙される。
【０１０３】
続いて、図１５のＥ１４０に示すように、フィルタ判定情報生成部２５５５は、フィルタ設定の情報と経路の情報とを対応付けて、フィルタ判定情報を生成する。ここで、ある経路にある仮想機器を通過するパケット情報と、その経路において仮想機器になされているフィルタ設定とが整合していれば、その仮想機器を通過するパケットはフィルタ設定通りに動作することになる。この場合、その経路は、結線情報に基づいて到達性違反と判定されていたとしても、フィルタ設定を加味すると到達性違反ではないと判定できる。フィルタ判定情報生成部２５５５は、このようなフィルタ設定を加味した経路の判定を行うためのフィルタ判定情報を生成する。ここで、上記の「整合している場合」には、仮想機器を通過するパケット情報が、「Ｐａｓｓ」アクションが設定されたフィルタの条件にマッチする場合が含まれる。また、「Ｄｒｏｐ」アクションが設定されたフィルタの条件に関しては、仮想機器を通過するパケット情報が当該条件にマッチしない場合、「整合している」と判断される。
【０１０４】
図２１は、フィルタ判定情報生成部２５５５がフィルタ判定情報を生成する動作を示すフローチャートである。フィルタ判定情報生成部２５５５は、まず、集約フィルタ情報記憶部２５５２から集約フィルタ情報を、経路フィルタ情報記憶部２５５４から経路フィルタ情報を、結線突合経路記憶部２５４から結線突合経路情報を、それぞれ取得する（Ｈ１１０）。
【０１０５】
フィルタ判定情報生成部２５５５は、結線突合経路情報により示される全ての経路の探索を行う（Ｈ１２０）。すなわち、結線突合経路情報に含まれる経路ＩＤに対応するフィルタＩＤ（または仮想機器ＩＤ）を経路フィルタ情報から抽出する（Ｈ１３０）。ここでは、第１の実施形態において説明した図１１Ａまたは図１１Ｂに示す結線突合経路情報を例として説明する。図１１Ａに示される結線突合経路情報において、経路ＩＤ＝１に対応するフィルタＩＤは、図２０Ａに基づいて「１」であることが分かる。
【０１０６】
続いて、フィルタ判定情報生成部２５５５は、上記経路ＩＤにより示される経路のステータスを調べ（Ｈ１４０）、そのステータスが、「整合」である場合、パケット情報として、結線突合経路情報から送信元ヘッダ情報ＩＤ（またはＩＰアドレス、ＭＡＣアドレスなどのパケット情報）を取得する（Ｈ１５０）。ステータスが「到達性違反」である場合、フィルタ判定情報生成部２５５５は、パケット情報として「ヘッダ情報がないこと」を保持する（Ｈ１６０）。
【０１０７】
フィルタ判定情報生成部２５５５は、上記情報に基づいて、パケット情報と、パケット情報に関連するフィルタの情報とを対応付けたフィルタ判定情報を生成する（Ｈ１７０）。図２２は、フィルタ判定情報を示す図である。図２２に示すように、フィルタ判定情報は、経路ＩＤ、ヘッダ情報ＩＤ、仮想機器ＩＤおよびフィルタグループＩＤを含む。
【０１０８】
例えば、経路ＩＤ＝「１」に対応するヘッダ情報ＩＤは、図１１Ａの結線突合経路情報の送信元ヘッダ情報ＩＤから「１」、仮想機器ＩＤは、図２０Ｂの経路フィルタ情報から「ｖＢｒ＿１」、フィルタグループＩＤは、図１７の集約フィルタ情報から「１」が、それぞれフィルタ判定情報に設定されている。
【０１０９】
経路ＩＤ＝「３」の経路は、図１１Ａの結線突合経路情報からステータスが「到達性違反」であるのでヘッダ情報を保持しない。したがって、フィルタ判定情報のヘッダ情報ＩＤには、ヘッダ情報がないことを示す「−１」が設定される。なお、ステータスが「隔離性違反」である結線突合経路情報については、仮想ネットワークが存在せずフィルタ設定に関する判定は不要であるので、何もしない。
【０１１０】
続いて、図１５のＥ１５０に示すように、フィルタ判定部２５６は、上述のように生成されたフィルタ判定情報に基づいて、フィルタ設定を加味した違反経路の検出を行う。図２２の例では、経路ＩＤ＝「１」の経路はステータスが「整合」であり違反ではないので、フィルタ判定部２５６は、ステータスが「到達性違反」である経路ＩＤ＝「２」、「３」の経路について検討する。フィルタ判定部２５６は、まず、経路ＩＤ＝「２」の経路のフィルタグループＩＤ＝「２」の条件値を調べる。
【０１１１】
図１７に示したように、フィルタグループＩＤ＝「２」の条件値は、送信元ＩＰアドレス＝「ＩＰ２」、送信元ＭＡＣアドレス＝「ＡＮＹ」であり、アクションは「Ｄｒｏｐ」である。「Ｄｒｏｐ」アクションが設定されたフィルタに関しては、そのフィルタを適用した結果通過するパケットがない場合に、「違反ではない」と判断できる。フィルタグループＩＤ＝「２」のフィルタの条件の場合、送信元ＩＰアドレス＝「ＩＰ２」以外のパケットは「Ｄｒｏｐ」せず、宛先に送信する必要がある。したがって、経路ＩＤ＝「２」に関しては、到達性違反であるとの判断は変わらない。
【０１１２】
続いて、フィルタ判定部２５６は、経路ＩＤ＝「３」の経路のフィルタグループＩＤ＝「ｘ」の条件値を調べる。
【０１１３】
図１７に示したように、フィルタグループＩＤ＝「ｘ」の条件値は、すべて「ＡＮＹ」であり、アクションは「Ｄｒｏｐ」である。つまり、経路ＩＤ＝「３」にある仮想機器「ｖＲｔ＿１」には、「すべてのパケットをＤｒｏｐする」というフィルタ設定がなされている。経路ＩＤ＝「３」は、結線突合経路情報に到達性違反として含まれている、つまり物理ネットワークが存在しないために違反であると判定されているが、フィルタ設定によりこの経路は「すべてのパケットをＤｒｏｐ」する。したがって、この経路は、到達性違反ではないと判断できる。
【０１１４】
図２３は、フィルタ判定部２５６による上記のようなフィルタ設定を加味した違反経路の判定の結果を示すフィルタ判定結果情報を示す図である。フィルタ判定結果情報は、図１１Ａに示した結線突合経路情報に、フィルタグループＩＤが追加された情報である。図２３に示すように、フィルタ設定を加味した違反経路の判定の結果、検出された違反経路は経路ＩＤ＝「２」の到達性違反のみである。つまり、図１１Ａではステータス「到達性違反」として結線突合経路情報に含まれている経路ＩＤ＝「３」は、フィルタ設定を加味した違反経路の判定の結果、違反ではないと判定される。フィルタ判定部２５６は、生成したフィルタ判定結果情報を、フィルタ判定結果記憶部２５７に記憶する。
【０１１５】
続いて、図１５のＥ１６０に示すように、違反経路分析部２５８は、上述のように生成したフィルタ判定結果情報と、結線突合経路記憶部２５４に記憶されている結線突合経路情報に基づいて、フィルタ設定を加味した違反経路を検出する。
【０１１６】
図２４は、違反経路分析部２５８によりフィルタ設定を加味した違反経路を検出する動作を示すフローチャートである。違反経路分析部２５８は、まず、結線突合経路記憶部２５４から結線突合経路情報を取得すると共に、フィルタ判定結果記憶部２５７からフィルタ判定結果情報を取得する（Ｉ１１０）。
【０１１７】
違反経路分析部２５８は、結線突合経路情報から、ステータスが「隔離性違反」である経路を抽出する（Ｉ１２０）。そして、違反経路分析部２５８は、結線突合経路情報から抽出したステータスが「隔離性違反」である経路の情報と、フィルタ判定結果記憶部２５７から取得したフィルタ判定結果情報を統合することにより、違反経路情報を生成する（Ｉ１３０）。
【０１１８】
図２５は、上記のように生成された違反経路情報の例を示す図である。図１１Ａに示した結線突合経路情報と比較して、経路ＩＤ＝「３」の経路が含まれていない。これは、上述のように、フィルタ設定を加味して経路ＩＤ＝「３」の経路は違反ではないと判断されたので、違反経路情報には含まれないことを示す。すなわち、上述のように、経路ＩＤ＝「３」の経路では、「ｖＲｔ＿１」に「全てのパケットをＤｒｏｐする」というフィルタ（フィルタグループＩＤ＝ｘ）が設定されているので、経路ＩＤ＝「３」の経路は到達不可能となる。よって、物理ネットワークに到達可能経路が無くても（ヘッダ情報ＩＤ＝「−１」）、到達性違反とはならない。
【０１１９】
経路ＩＤ＝「-１」の経路は、ステータスが「隔離性違反」であり、フィルタ設定に関わらず検出される違反経路である。この場合は、フィルタグループＩＤには、「−１」、「＊」など、フィルタ判定が不要である旨を設定してもよい。また、違反経路情報は、違反に関連するフィルタ設定情報を含んでもよい。
【０１２０】
以上のように、本第２の実施形態によれば、ネットワーク検証装置３００の物理仮想突合部３５０は、仮想ネットワークの仮想機器に設定されているフィルタ設定を取得すると共に、フィルタ設定がなされた仮想機器がどの経路に属しているかを算出する。そして、物理仮想突合部３５０は、仮想機器を通過するパケットのパケット情報と、仮想機器のフィルタ設定とに基づいて、第１の実施形態において違反と検出された経路のうち、フィルタ設定を加味すると違反でない経路を検出する。これにより、本第２の実施形態によれば、違反経路検出の精度を向上できるという効果が得られる。
【０１２１】
また、物理仮想突合部３５０のフィルタ情報解析部２５５は、フィルタ設定情報集約部２５５１において、仮想ネットワークに仮想機器単位で設定されているフィルタ情報を条件単位のフィルタ情報に集約する。これにより、本第２の実施形態によれば、ブーリアン代数等のような変換を必要とせず、ネットワークで重複する条件を含むフィルタ情報を集約することにより、フィルタ設定がなされた仮想機器すべてのフィルタ情報に関する違反判定は不要となる。これにより、フィルタ情報に基づく違反判定の回数、すなわち違反判定時間を削減できるので、ネットワーク検証時間をさらに短縮できるという効果が得られる。
【０１２２】
第３の実施形態
図２６は、本発明の第３の実施形態に係るネットワーク検証装置４００の構成を示す図である。上述の第１および第２の実施形態におけるネットワーク検証装置２００、３００は、第３の実施形態におけるネットワーク検証装置４００を基本としている。図２６に示すように、ネットワーク検証装置４００は、物理経路取得部４１０、仮想端点対算出部４２０および違反検出部４３０を備える。
【０１２３】
物理経路取得部４１０は、検証対象のネットワークにおいて通信パケットが送受信される物理経路の端点となる物理機器の対に関する物理経路情報を取得する。仮想端点対算出部４２０は、ネットワークに対応付けられることにより、該ネットワークを利用して通信パケットを送るように仮想的に設定された仮想ネットワークにおける仮想機器の設定情報に基づいて、仮想ネットワークにおいて通信パケットを送受信するように設定された仮想経路の端点となる仮想機器の対を算出する。
【０１２４】
違反検出部４３０は、物理経路取得部４１０により取得された物理経路情報と、仮想端点対算出部４２０により算出された仮想機器の対とに基づいて、ネットワークにおける設定違反を検出する。
【０１２５】
なお、物理経路取得部４１０および違反検出部４３０は、上記第１の実施形態における結線経路突合部２５３に相当し、仮想端点対算出部４２０は、仮想端点対生成部２５１に相当する。
【０１２６】
上記構成を採用することにより、本第３の実施形態によれば、物理経路情報の数のオーダーの計算時間で経路の検証ができるので、違反の経路の検証を高速に行うことができるという効果が得られる。
【０１２７】
なお、図２等に示したネットワーク検証装置の各部は、図２７に例示するハードウエア資源において実現される。すなわち、図２７に示す構成は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス１３およびストレージ１４を備える。ＣＰＵ１０は、ＲＯＭ１２またはストレージ１４に記憶された各種ソフトウエア・プログラム（コンピュータ・プログラム）を、ＲＡＭ１１に読み出して実行することにより、ネットワーク検証装置の全体的な動作を司る。すなわち、上記各実施形態において、ＣＰＵ１０は、ＲＯＭ１２またはストレージ１４を適宜参照しながら、ネットワーク検証装置が備える各機能（各部）を実行するソフトウエア・プログラムを実行する。
【０１２８】
また、上述した各実施形態では、図２等に示したネットワーク検証装置における各ブロックに示す機能を、図２７に示すＣＰＵ１０が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、図２等に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
【０１２９】
また、各実施形態を例に説明した本発明は、ネットワーク検証装置に対して、上記説明した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、ＣＰＵ１０がＲＡＭ１１に読み出して実行することによって達成される。
【０１３０】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【符号の説明】
【０１３１】
１００  ネットワーク
１０１  仮想ネットワーク制御部
１０２１、１０２２、１０２３  ネットワーク機器
２００、３００、４００  ネットワーク検証装置
２１０  仮想ネットワーク設定入力部
２２０  物理ネットワーク設定入力部
２３０  経路検証分析部
２４０  到達可能物理経路記憶部
２５０、３５０  物理仮想突合部
２５１  仮想端点対生成部
２５２  仮想端点対記憶部
２５３  結線経路突合部
２５４  結線突合経路記憶部
２５５  フィルタ情報解析部
２５６  フィルタ判定部
２５７  フィルタ判定結果記憶部
２５８  違反経路分析部
２６０  違反経路出力部
４１０  物理経路取得部
４２０  仮想端点対算出部
４３０  違反検出部
２５５１  フィルタ設定情報集約部
２５５２  集約フィルタ情報記憶部
２５５３  経路フィルタ情報生成部
２５５４  経路フィルタ情報記憶部
２５５５  フィルタ判定情報生成部
【図１】
2017005449.tif 000003
【図２】
2017005449.tif 000004
【図３】
2017005449.tif 000005
【図４Ａ】
2017005449.tif 000006
【図４Ｂ】
2017005449.tif 000007
【図５】
2017005449.tif 000008
【図６】
2017005449.tif 000009
【図７】
2017005449.tif 000010
【図８】
2017005449.tif 000011
【図９】
2017005449.tif 000012
【図１０】
2017005449.tif 000013
【図１１Ａ】
2017005449.tif 000014
【図１１Ｂ】
2017005449.tif 000015
【図１２】
2017005449.tif 000016
【図１３】
2017005449.tif 000017
【図１４】
2017005449.tif 000018
【図１５】
2017005449.tif 000019
【図１６】
2017005449.tif 000020
【図１７】
2017005449.tif 000021
【図１８】
2017005449.tif 000022
【図１９】
2017005449.tif 000023
【図２０Ａ】
2017005449.tif 000024
【図２０Ｂ】
2017005449.tif 000025
【図２１】
2017005449.tif 000026
【図２２】
2017005449.tif 000027
【図２３】
2017005449.tif 000028
【図２４】
2017005449.tif 000029
【図２５】
2017005449.tif 000030
【図２６】
2017005449.tif 000031
【図２７】
2017005449.tif 000032