以下に、本願の開示する通信接続検証方法、通信接続検証プログラム及びネットワーク検証装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する通信接続検証方法、通信接続検証プログラム及びネットワーク検証装置が限定されるものではない。
図1は、ネットワーク検証装置のブロック図である。ネットワーク検証システム10は、ネットワーク検証装置1、検証対象のネットワーク2及び管理者端末3を有する。
ネットワーク検証装置1は、ネットワーク2に接続される。また、管理者端末3は、ネットワーク2に接続され、ネットワーク2を介してネットワーク検証装置1との間で通信を行う。
ネットワーク2は、ルータ31及びファイアウォール32などのネットワーク装置を有する。ルータ31は、信号を転送するフォワーディングテーブルを有する。また、ファイアウォール32は、例えばスイッチにより実現される。ファイアウォール32には、信号を通過させるか否かを決定するためのフィルタリングルールが設定される。以下では、ルータ31及びファイアウォール32をまとめて、ネットワーク装置という場合がある。
ネットワーク2の管理者は、管理者端末3を使用して、通信を実行するための設定情報及びフォワーディングテーブルを、ネットワーク2におけるルータ31及びファイアウォール32などのネットワーク装置に設定する。
ネットワーク検証装置1は、ネットワーク2の検証を行う。以下にネットワーク検証装置1の詳細について説明する。ネットワーク検証装置1は、図1に示すように、設定変更手順入力部101、通信制御部102、設定変更後テーブル推定部103、設定変更後コンフィグ生成部104、コンフィグ情報収集部105及びテーブル情報収集部106を有する。さらに、ネットワーク検証装置1は、ネットワークモデル化部107、ACL(Access Control List)抽出部108、差分抽出部109、影響判定部110及び出力部111を有する。
ネットワーク2の管理者は、設定変更手順入力部101を用いて、検証対象のネットワーク2に含まれるネットワーク装置の設定変更手順を入力する。設定変更手順入力部101は、管理者により入力された設定変更手順を設定変更後コンフィグ生成部104へ出力する。
通信制御部102は、ネットワーク検証装置1とネットワーク2との間の通信を制御する通信インタフェースである。ネットワーク検証装置1の各部は、通信制御部102を介してネットワーク2に含まれる各種ネットワーク装置と通信を行う。このように、実際にはネットワーク検証装置1の各部は通信制御部102を介してネットワーク2に含まれる各ネットワーク装置と通信を行うが、以下の説明では通信制御部102による中継を省略して説明する場合がある。
コンフィグ情報収集部105は、通信制御部102を介してネットワーク2の中の各ネットワーク装置から設定情報を収集する。そして、コンフィグ情報収集部105は、収集した設定情報を設定変更後コンフィグ生成部104及びACL抽出部108へ出力する。
テーブル情報収集部106は、通信制御部102を介してネットワーク2の中の各ネットワーク装置からフォワーディング情報を収集する。そして、テーブル情報収集部106は、収集した各ネットワーク装置のフォワーディング情報をネットワークモデル化部107へ出力する。
設定変更後コンフィグ生成部104は、設定変更手順の入力を設定変更手順入力部101から受ける。また、設定変更後コンフィグ生成部104は、設定変更前の設定情報の入力をコンフィグ情報収集部105から受ける。そして、設定変更後コンフィグ生成部104は、設定変更前の設定情報に対して設定変更手順を用いて、設定変更後の各ネットワーク装置の設定情報を生成する。その後、設定変更後コンフィグ生成部104は、生成した設定変更後の各ネットワーク装置の設定情報を設定変更後テーブル推定部103及びACL抽出部108へ出力する。
図2は、設定変更後のネットワーク装置の設定情報の生成の一例を表す図である。設定変更後コンフィグ生成部104は、例えば、設定変更前のネットワーク装置の設定情報201を取得する。また、設定変更後コンフィグ生成部104は、ネットワーク装置の設定変更手順202を取得する。そして、設定変更後コンフィグ生成部104は、設定情報201におけるEthernet(登録商標)の設定を、設定変更手順202に記載された設定に変更して、Ethernet1を使用可能にする。また、設定変更後コンフィグ生成部104は、設定情報201におけるルータの設定を設定変更手順202に記載された設定に変更する。このように、設定変更後コンフィグ生成部104は、設定変更後の各ネットワーク装置の設定情報203を生成する。
図1に戻って説明を続ける。設定変更後テーブル推定部103は、設定変更後の各ネットワーク装置の設定情報の入力を設定変更後コンフィグ生成部104から受ける。そして、設定変更後テーブル推定部103は、設定変更後の各ネットワーク装置の設定情報から、シミュレーションにより設定変更後の各ネットワーク装置のフォワーディングテーブルの内容を推定する。例えば、設定変更後テーブル推定部103は、GNS3(https://www.gns3.com/)あるいはBatfish(https://www.batfish.org)のような技術を用いて設定変更後の各ネットワーク装置のフォワーディングテーブルの内容を推定する。その後、設定変更後テーブル推定部103は、推定した設定変更後のネットワーク2における各ネットワーク装置のフォワーディング情報をネットワークモデル化部107へ出力する。
ACL抽出部108は、設定変更前の各ネットワーク装置の設定情報の入力をコンフィグ情報収集部105から受ける。また、ACL抽出部108は、設定変更後の各ネットワーク装置の設定情報の入力を設定変更後コンフィグ生成部104から受ける。ACL抽出部108は、設定変更前及び設定変更後にそれぞれのネットワーク装置に設定されているフィルタリングルールを示すフィルタリング情報であるACLを抽出する。そして、ACL抽出部108は、抽出した各ネットワーク装置における設定変更前及び設定変更後のACLをネットワークモデル化部107へ出力する。
ネットワークモデル化部107は、ネットワーク2の中の各ネットワーク装置の設定変更前のフォワーディング情報の入力をテーブル情報収集部106から受ける。また、ネットワークモデル化部107は、ネットワーク2の中の各ネットワーク装置における設定変更前及び設定変更後のACLの入力をACL抽出部108から受ける。そして、ネットワークモデル化部107は、ネットワーク2の中の各ネットワーク装置のフォワーディング情報及び設定変更前のACLに含まれるフィルタリング情報を用いて、設定変更前のネットワーク2のデータプレーンモデルを生成する。
また、ネットワークモデル化部107は、ネットワーク2の中の各ネットワーク装置の設定変更後のフォワーディング情報の入力を設定変更後テーブル推定部103から受ける。そして、ネットワークモデル化部107は、ネットワーク2の中の各ネットワーク装置の設定変更後のフォワーディング情報及び設定変更後のACLに含まれるフィルタリング情報を用いて、設定変更後のネットワーク2のデータプレーンモデルを生成する。
ここで、ネットワークモデル化部107による設定変更前及び設定変更後のネットワーク2のデータプレーンモデルの生成について詳細に説明する。ネットワークモデル化部107は、ネットワーク2における各ネットワーク装置のフォワーディング情報とフィルタリング情報からフローを抽出する。フローとは、ネットワーク2の中で振る舞いが同じとなるパケットの集合にあたる。以下では、フローのことを、PEC(Packet Equivalence Class)と呼ぶ場合がある。例えば、ネットワークモデル化部107は、次のような方法でフローの抽出を行う。
図3は、フロー抽出およびデータプレーンモデル生成を説明するための図である。図3に示すサンプルネットワーク210では、端末211とサーバ212との間にネットワークがあり、このネットワークの中にはルータ31とファイアウォール32が含まれる。この場合、端末211とルータ31とが接続され、ルータ31とファイアウォール32とが接続され、ファイアウォール32とサーバ212とが接続される。また、ルータ31はフォワーディング情報として図3に示すフォワーディングテーブル213を有する。また、ファイアウォール32の設定情報は、図3に示したフィルタリングルール214を有する。ここでは、このサンプルネットワーク210で、端末211からサーバ212へのパケットの到達性を確認する場合で説明する。
ネットワークモデル化部107は、ネットワーク2に含まれる全てのネットワーク装置のフォワーディング情報及びフィルタリング情報のそれぞれにしたがうパケットヘッダの集合を元として含むようなmeetsemilattice(交わり半束)を構築する。meetsemilatticeは、部分順序集合であり、特定のmeetsemilatticeの2つの元が共通部分を持つなら、その共通部分もその特定のmeetsemilatticeの元となる集合である。
ネットワークモデル化部107は、図3のサンプルネットワーク210に含まれるすべてのフォワーディング情報及びフィルタリング情報を含むmeetsemilatticeを構築する。ここで、図3のルータ31のフォワーディングテーブル213は、1つのエントリを有する。このエントリは、IPパケットの送信先アドレスとして133.28.100.0/28の範囲に含まれるアドレスを持つものがルータ31においてフォワーディングの対象となることを示す。
そこで、ネットワークモデル化部107は、図4に示すように、送信先アドレスとして133.28.100.0/28の範囲のアドレスを持つパケット集合をここでのmeetsemilatticeの1つの元221として追加する。図4は、meetsemilatticeの一例を説明するための図である。図4の縦軸は送信元アドレスを表し、横軸は送信先アドレスを表す。
また、図3のファイアウォール32のフィルタリングルール214としては、2つのルールが設定されている。1つのルールは、送信元アドレスとして202.248.10.0/24の範囲に含まれるアドレスを持つパケットがファイアウォール32を透過することを示す。
そこで、ネットワークモデル化部107は、図4に示すように、送信元アドレスとして202.248.10.0/24の範囲のアドレスを持つパケットの集合をここでのmeetsemilatticeの1つの元222として追加する。さらに、ネットワークモデル化部107は、meetsemilatticeの性質より、元221と元222との共通部分である元223もmeetsemilatticeの元とする。
また、ネットワークモデル化部107は、図3のフィルタリングルール214の他の1つのルールも、図4に示す元224としてここでのmeetsemilatticeに追加する。元224は、全ての送信先アドレス及び送信元アドレスのパケットを含む。ここで、元224は元221~223のそれぞれのとの間に共通部分を持ち、その共通部分は、元221~223のいずれかであり既にここでのmeetsemilatticeの元である。したがって、ネットワークモデル化部107は、元224と元221~223との共通部分の集合を改めてmeetsemilatticeの元として追加することは行わない。
図5は、サンプルネットワークに関して生成されるmeetsemilatticeの元の一覧の図である。図5の元221は、図3のフォワーディングテーブル213のエントリに対応する元である。元222は、図3のファイアウォール32のフィルタリングルール214の1つのルールに対応する元である。そして、元223は、元221と元222との共通部分に対応する元である。また、元224は、図3のファイアウォール32のフィルタリングルール214の他の1つのルールに対応する元である。
ここで、meetsemilatticeの元の親子関係について説明する。meetsemilatticeの元αと元βの間にα⊂βの関係があり、さらにα⊂γ⊂βとなるようなγがmeetsemilatticeに含まれない場合、αとβには親子関係が成立し、αはβの子であるという。この親子関係を簡単にあらわす図として、ハッセ図がある。ハッセ図では、親の元が子の元より上に記載され、親子の間が線で結ばれる。図5で示したmeetsemilatticeの元221~224に対するハッセ図は図6のように表される。図6は、ハッセ図の一例を表す図である。
ネットワークモデル化部107は、図6に示したハッセ図から図3のサンプルネットワーク210におけるPECを求める。具体的には、ネットワークモデル化部107は、meetsemilatticeの元からその元に対する子の元の和を減算することでPECを求める。ここで、ネットワークモデル化部107は、ある元に対して子の元がない場合には、その元は、そのままPECとする。
例えば、meetsemilatticeの元221に着目した場合のPECを#Aとすると、ネットワークモデル化部107は、#A=元221-元223としてPECを算出する。同様に、ネットワークモデル化部107は、他の全てのmeetsemilatticeに着目した場合に関してもPECを計算すると、ネットワークモデル化部107は、#B=元222-元223、#C=元223、#D=元224-(元221∪元222)として各PECを算出する。
このようにPECを求めることで、例えばmeetsemilatticeの元221に含まれるパケットのうちmeetsemilatticeの元222には含まれないものが、PEC#Aに含まれる。PEC#Aに含まれるパケットヘッダを持つパケットは、図3のサンプルネットワーク210の中で同じ振る舞いをすると言える。同様に、PEC#B~#Dに含まれるパケットヘッダを持つパケットも、それぞれ同じ振る舞いをする。
次に、ネットワークモデル化部107は、上の手順で計算されたPECを、ネットワーク2を表すトポロジグラフ上にラベル付けする。まず、図3のルータ31のフォワーディングテーブル213のエントリとして、送信先アドレスが133.28.100.0/28に含まれるパケットをファイアウォール32にフォワーディングするというエントリがある。そこで、ネットワークモデル化部107は、このエントリに対応するmeetsemilatticeの元である元221に含まれるPECをルータ31からファイアウォール32に向かう矢印に対して図7に示すようにラベル付けする。図7は、サンプルネットワークに対してPECをラベル付けした結果を表す図である。ここでは、ネットワークモデル化部107は、PECの名前をラベルとして使用する。
次に、図3のファイアウォール32のフィルタリングルール214として送信元アドレスが202.248.10.0/24に含まれるパケットを透過するというエントリがある。ネットワークモデル化部107は、このエントリに対応するmeetsemilatticeの元222に含まれるすべてのPECをファイアウォールに対してラベル付けする。ネットワークモデル化部107は、ファイアウォールに対するラベル付けとして、以下のような処理を行う。例えば、ネットワークモデル化部107は、アクションがdenyであるようなパケットを透過させないフィルタリングルールに対応するPECに関しては、ファイアウォールに対してラベル付けしない。このようにして、ネットワークモデル化部107は、図7に示すようにサンプルネットワーク210にラベル付けを行う。
なお、図3では簡単のためにフィルタリングルール214として送信元アドレス及び送信先アドレスからなるフィルタリング条件を示したが、IPの上位レイヤのプロトコル種別やポート番号などの情報も含めたフィルタリングルールが設定されてもよい。また、図3ではフィルタリングルール214はファイアウォール32を通るすべてのトラフィックに適用されると考えているが、フィルタリングルールは特定のインタフェースの特定の方向のトラフィックに対して適用されるように設定されてもよい。
以上のように、ネットワークモデル化部107は、ネットワークから抽出したPECを用いてネットワークトポロジにラベル付けを行うことで、ネットワーク2のデータプレーンをモデル化してネットワーク2のデータプレーンモデルを生成する。このようなデータプレーンモデルを利用することにより、ネットワーク2の中で振る舞いの異なるフローの数及び各フローがネットワーク2の中の各ネットワーク装置においてどのように振る舞うのかの理解が容易になる。図1に戻って説明を続ける。ネットワークモデル化部107は、生成した設定変更前のネットワーク2のデータプレーンモデル及び設定変更後のネットワーク2のデータプレーンモデルを差分抽出部109及び影響判定部110へ出力する。
差分抽出部109は、設定変更前のネットワーク2のデータプレーンモデル及び設定変更後のネットワーク2のデータプレーンモデルの入力をネットワークモデル化部107から受ける。そして、差分抽出部109は、設定変更前のネットワーク2のデータプレーンモデルと設定変更後のネットワーク2のデータプレーンモデルとの差分を求める。例えば、差分抽出部109は、設定変更前後のデータプレーンモデルを比較して、重複するフローを取り除くことで差分抽出を行う。そして、差分抽出部109は、追加されたフロー及び削除されたフローを識別することで設定変更前後の差分を求める。次に、差分抽出部109は、求めた設定変更前後の差分を用いて、設定変更により影響を受けたフローを抽出する。その後、差分抽出部109は、抽出したフローの情報を影響判定部110へ出力する。
影響判定部110は、設定変更前のネットワーク2のデータプレーンモデル及び設定変更後のネットワーク2のデータプレーンモデルの入力をネットワークモデル化部107から受ける。また、影響判定部110は、設定変更により影響を受けたフローの情報の入力を差分抽出部109から受ける。
次に、影響判定部110は、ネットワーク2の設定変更前後のデータプレーンモデルを用いて、設定変更により影響を受けたフローの中から、設定変更前のネットワーク2に存在した通信である既存通信を含む可能性のあるフローを抽出する。ここで抽出されたフローは設定変更により影響を受けたフローの一部であるが、以下では、ここで抽出されたフローを設定変更により影響を受けたフローと呼ぶ。そして、影響判定部110は、設定変更により影響を受けたフローによる既存通信に対する影響を判定する。以下に、影響判定部110によるフローの抽出処理の詳細について説明する。
影響判定部110は、設定変更により影響を受けたフローの中から1つフローを抽出する。以下では、この抽出されたフローを、「判定対象フロー」と呼ぶ。
影響判定部110は、設定変更前のデータプレーンモデルにおける差分が検出されたネットワーク装置から判定対象フローをトレースして、判定対象フローの到達先を確認する。そして、影響判定部110は、設定変更前のデータプレーンモデルにおいて、判定対象フローがネットワーク2のモデル化範囲外へ進出するか否かを判定する。
ネットワーク2のモデル化範囲外へ進出しない場合、影響判定部110は、判定対象フローの到達先が判定対象フローの宛先を含むか否かを判定する。判定対象フローの到達先が判定対象フローの宛先を含まない場合、影響判定部110は、設定変更前のネットワーク2における通信では判定対象フローが使用されていないと判定する。そこで、影響判定部110は、判定対象フローが既存通信に影響を与えないと判定する。
これに対して、判定対象フローの到達先が判定対象フローの宛先を含む場合、影響判定部110は、設定変更後のデータプレーンモデルにおける差分が検出されたネットワーク装置から判定対象フローをトレースして到達先を確認する。そして、影響判定部110は、判定対象フローの到達先が、設定変更前後のデータプレーンモデルにおいて一致するか否かを判定する。
判定対象フローの到達先が設定変更前後のデータプレーンモデルにおいて一致する場合、影響判定部110は、判定対象フローが既存通信に影響を与えないと判定する。これに対して、判定対象フローの到達先が設定変更前後のデータプレーンモデルにおいて一致しない場合、影響判定部110は、判定対象フローが既存通信に影響を与えると判定する。
一方、判定対象フローがネットワーク2のモデル化範囲外へ進出する場合、影響判定部110は、設定変更後のデータプレーンモデルにおける差分が検出されたネットワーク装置から判定対象フローをトレースして、判定対象フローの到達先を確認する。そして、影響判定部110は、設定変更後のデータプレーンモデルにおいて、範囲外への出口となるネットワーク装置が設定変更前と同じであり、そのネットワーク装置から同じ次ホップアドレスへ判定対象フローが送られるか否かを判定する。
設定変更前後で判定対象フローの出口となるネットワーク装置が同一で、且つ、次ホップアドレスが同じ場合、設定変更前後での判定対象フローの振る舞いは同一と考えられる。そこで、影響判定部110は、判定対象フローが既存通信に影響を与えないと判定する。
これに対して、判定対象フローの出口となるネットワーク装置又は次ホップアドレスが異なる場合、設定変更前後での判定対象フローの振る舞いに違いがあると考えられる。そこで、影響判定部110は、設定変更前のデータプレーンモデルにおいて判定対象フローが通過するACLエントリを持つネットワーク装置が存在するか否かを判定する。
判定対象フローが通過するACLエントリを持つネットワーク装置が存在する場合、設定変更前に判定対象フローに対して直接的に影響が発生するフィルタリングが行われていたといえる。そこで、影響判定部110は、判定対象フローが既存通信に影響を与える可能性が高いと判定する。
これに対して、判定対象フローが通過するACLエントリを持つネットワーク装置が存在しない場合、設定変更前に判定対象フローに対する直接的なフィルタリングが行われていないといえる。ただし、ネットワーク2の範囲外で判定対象フローの宛先アドレスが適切に設定されているかどうかについては判定が困難である。そこで、影響判定部110は、判定対象フローの宛先アドレスがネットワーク2の範囲外で適切に設定されているか否かを確認することが好ましいと判定する。
影響判定部110は、以上のような判定対象フローによる既存通信に対する影響の判定を、設定変更により影響を受けた全てのフローについて実行する。そして、影響判定部110は、設定変更により影響を受け各フローについての判定結果を出力部111へ出力する。
出力部111は、設定変更により影響を受け各フローによる既存通信に対する影響の判定結果の入力を影響判定部110から受ける。そして、出力部111は、設定変更により影響を受ける各フローによる既存通信に対する影響の判定結果をネットワーク2の管理者に通知する。ここで、出力部111は、設定変更により影響を受ける各フローのうち、全てのフローの情報を管理者に通知してもよいし、既存通信へ影響を与える可能性があると判定されたフローの情報に絞ってネットワーク2の管理者に通知してもよい。
次に、具体的な例を用いて検証手順をさらに詳しく説明する。図8は、検証手順を説明するための1つめのネットワークを表す図である。図8に示したネットワーク230は、ルータ31、並びに、ファイアウォール32A及び32Bを有する。さらに、ルータ31は、外部ネットワーク5に接続される。範囲231が、ネットワーク230のデータプレーンモデルを作成するモデル化範囲である。
ルータ31は、フォワーディングテーブル235が設定される。また、ファイアウォール32Aは、フォワーディングテーブル232及びフィルタリングルール234が設定される。また、ファイアウォール32Bは、フォワーディングテーブル233及びフィルタリングルール236が設定される。また、ルータ31、ファイアウォール32A及び32Bのそれぞれの脇に記載したe11~e33は、それぞれのネットワークインタフェースを表す。また、ネットワーク230では、フィルタリングルールが設定されていないインタフェース及び方向については、すべてのパケットが透過する。
ここで、ネットワーク230に対して、以下の設定変更要求が存在する場合について説明する。例えば、ファイアウォール32Aのインタフェースe12に接続されるサブネットの任意のホストのTCPポート1024~65535の範囲のポートから、ファイアウォール32Bのインタフェースe32に新しく設定されるサブネットの先に新設されるサーバのTCPポート445の間の通信が新たに開通される。
この設定変更要求に対して、以下の設定変更手順が作成される。例えば、ファイアウォール32Bのインタフェースe32に対して10.23.33.0/24のアドレスを持つサブネットを割り当てる。また、新設されるサーバにIPアドレス10.34.33.45を割り当てる。設定変更後コンフィグ生成部104は、この設定変更手順の入力を設定変更手順入力部101から受ける。
設定変更後コンフィグ生成部104は、取得した設定変更手順とコンフィグ情報収集部105により収集されたルータ31、並びに、ファイアウォール32A及び32Bの設定変更前の設定情報とから設定変更後の設定情報を生成する。そして、設定変更後テーブル推定部103は、設定変更後の設定情報から、図8におけるエントリ242が追加されたフォワーディングテーブル235及びエントリ245が追加されたフォワーディングテーブル233を生成する。また、ACL抽出部108は、設定変更前後のルータ31、並びに、ファイアウォール32A及び32Bの設定情報から、設定変更前後のフィルタリングルール情報を抽出する。ここで、ACL抽出部108は、設定変更後にはフィルタリング情報としてエントリ243及び244を追加する。
ネットワークモデル化部107は、図8に示したフォワーディングテーブル232,233,235の設定変更前後の情報、並びに、フィルタリングルール234及び236の設定変更前後の情報から、図9に示す元を有するmeetsemilatticeを生成する。図9は、1つめのネットワークから生成されるmeetsemilatticeの元を表す図である。図9における元n000~n014は、その行に示された各項目の条件を満たす要素を含む。次に、ネットワークモデル化部107は、生成したmeetsemilatticeから、図10に示すPECを生成する。図10は、1つめのネットワークにおけるPECを表す図である。ここでは、ネットワークモデル化部107は、図10に示すフローN000~N014を表すPECを生成する。そして、ネットワークモデル化部107は、生成したPECを用いて、図11に示すネットワーク230の設定変更前のデータプレーンモデル246及び設定変更後のデータプレーンモデル247を生成する。図11は、1つめのネットワークから生成されるデータプレーンモデルを表す図である。
差分抽出部109は、図12に示すように、データプレーンモデル246とデータプレーンモデル247との差分248を抽出する。図12は、1つめのネットワークの設定変更前後の差分を表す図である。差分248で示されるように、この設定変更によりルータ31においてフローN012及びN014が変化する。また、ファイアウォール32BにおいてフローN012、N013及びN014が変化する。さらに、ファイアウォール32AにおいてフローN012が変化する。これ以外のフローについては設定変更前後で変化がない。そこで、仮にこれらの変化のないフローが既存の通信で利用されていたとしても、通信は設定変更の影響を受けないと考えることができる。そのため、影響判定部110は、図12に示された設定変更により影響を受けたフローN012~N014以外については、既存通信への影響の判定を行わない。
影響判定部110は、変化のあったそれぞれのフローN012~N014に関してそれぞれのフローが既存通信で使われていたかどうかを推定する。例えば、影響判定部110は、ルータ31においてフローN012が変化しているので、設定変更前のデータプレーンモデル246を使ってルータ31からフローN012をトレースする。これにより、影響判定部110は、フローN012がルータ31からフォワーディングされないことを確認してルータ31においてフローN012が廃棄されると判定する。すなわち、影響判定部110は、フローN012はルータ31の宛先である10.23.33.45を含むサブネットに到達しないと判定する。そこで、影響判定部110は、フローN012は既存通信で使われておらず、既存通信に影響を与えないと判定する。
同様に、影響判定部110は、変化のあったほかのフローN013及びN014に関しても設定変更前のデータプレーンモデル247を用いてトレースを行う。この場合、影響判定部110は、フローN012~N014のいずれもルータ31で廃棄されると判定して、既存通信で使われておらず、既存通信に影響を与えないと判定する。以上より、影響判定部110は、図8に示したネットワーク230の設定変更は、既存の通信に影響を与えないと判定する。
図13は、検証手順を説明するための2つめのネットワークを表す図である。図13に示したネットワーク250は、ルータ31、並びに、ファイアウォール32A及び32Bを有する。さらに、ルータ31は、外部ネットワーク5に接続される。範囲251が、ネットワーク250のデータプレーンモデルを作成するモデル化範囲である。
ルータ31は、フォワーディングテーブル255が設定される。また、ファイアウォール32Aは、フォワーディングテーブル252及びフィルタリングルール254が設定される。また、ファイアウォール32Bは、フォワーディングテーブル253及びフィルタリングルール256が設定される。また、ネットワーク230では、フィルタリングルールが設定されていないインタフェースおよび方向については、すべてのパケットが透過する。
ここで、ネットワーク250に対して、以下の設定変更要求が存在する場合について説明する。例えば、ファイアウォール32Aのインタフェースe12に接続されるサブネットの任意のホストのTCPポート1024~65535の範囲のポートと、ファイアウォール32Bのインタフェースe32に新しく設定されるサブネットの先に新設されるサーバのTCPポート445の間の通信が新たに開通される。
この設定変更要求に対して、以下の設定変更手順が作成される。例えば、ファイアウォール32Bのインタフェースe32に対して10.23.16.128/25のアドレスを持つサブネットを割り当てる。また、新設されるサーバにIPアドレス10.23.16.173を割り当てる。設定変更後コンフィグ生成部104は、この設定変更手順の入力を設定変更手順入力部101から受ける。
設定変更後コンフィグ生成部104は、取得した設定変更手順とコンフィグ情報収集部105により収集されたルータ31、並びに、ファイアウォール32A及び32Bの設定変更前の設定情報とから設定変更後の設定情報を生成する。そして、設定変更後テーブル推定部103は、設定変更後の設定情報から、図13におけるエントリ262が追加されたフォワーディングテーブル255を生成する。また、ACL抽出部108は、設定変更前後のルータ31、並びに、ファイアウォール32A及び32Bの設定情報から、エントリ263、264が追加されたフィルタリングルール256、およびエントリ261が追加されたフィルタリングルール254を生成する。
この例は、ファイアウォール32Bのインタフェースe32に新しく設定するサブネットに対してファイアウォール32Aのインタフェースe13に割り当てられているサブネットの一部を誤って割り当てることで、既存通信に影響がある場合である。このような誤りは、このネットワーク250程度の小さなネットワークでは人手でも容易に見つけることができるが、大きなネットワークでは見つけることが難しい。
このような誤りを見つけるため、ネットワークモデル化部107は、図13に示したフォワーディングテーブル252、253及び255の設定変更前後の情報、並びに、フィルタリングルール254及び256の設定変更前後の情報から、図14に示す元を有するmeetsemilatticeを生成する。図14は、2つめのネットワークから生成されるmeetsemilatticeの元を表す図である。図14における元n000~n015は、その行に示された各項目の条件を満たす要素を含む。次に、ネットワークモデル化部107は、生成したmeetsemilatticeから、図15に示すPECを生成する。図15は、2つめのネットワークにおけるPECを表す図である。ここでは、ネットワークモデル化部107は、図15に示すフローN000~N015を表すPECを生成する。そして、ネットワークモデル化部107は、生成したPECを用いて、図16に示すネットワーク250の設定変更前のデータプレーンモデル266及び設定変更後のデータプレーンモデル267を生成する。図16は、2つめのネットワークから生成されるデータプレーンモデルを表す図である。
差分抽出部109は、図17に示すように、データプレーンモデル266とデータプレーンモデル267との差分268を抽出する。図17は、2つめのネットワークの設定変更前後の差分を表す図である。差分268で示されるように、この設定変更によりルータ31においてフローN012、N014及びN015が変化する。また、ファイアウォール32BにおいてフローN012、N013、N014及びN015が変化する。さらに、ファイアウォール32AにおいてフローN012が変化する。これ以外のフローについては設定変更前後で変化がない。影響判定部110は、差分268に示された設定変更により影響を受けたフローN012~N014以外については、既存通信への影響の判定を行わない。
影響判定部110は、変化のあったそれぞれのフローN012~N015に関してそれぞれのフローが既存通信で使われていたかどうかを推定する。例えば、影響判定部110は、ルータ31においてフローN012が変化しているので、設定変更前のデータプレーンモデル266を使ってルータ31からフローN012をトレースする。これにより、影響判定部110は、フローN012がファイアウォール32Aのインタフェースe13に送られ、インタフェースe13においてフローN012の宛先アドレスである10.23.16.173/32を含むサブネットに到達すると判定する。
そして、宛先アドレスが到達先に含まれるため、影響判定部110は、フローN012は既存通信で使われている可能性が大きいと判定する。次に、影響判定部110は、同じフローN012を設定変更後のデータプレーンモデル267を使ってルータ31からトレースする。この場合、影響判定部110は、フローN012がファイアウォール32Bのインタフェースe32に送られ、ファイアウォール32BにおいてフローN012の宛先アドレスである10.23.16.173/32を含むサブネットに到達すると判定する。そこで、影響判定部110は、既存通信で使われている可能性が高いフローN012の到達先が変化していることから、フローN012に関する設定変更は既存通信に影響を与えると判定する。そして、影響判定部110は、影響を受ける既存通信はフローN012に含まれる通信であると特定する。
また、例えばフローN015であれば、影響判定部110は、設定変更前のデータプレーンモデル266を使ってフローN015をトレースする。これにより、影響判定部110は、図16に示すデータプレーンモデル266における破線矢印で示すようにフローN015がファイアウォール32B、ルータ31及びファイアウォール32Aを経由して宛先アドレスである10.23.16.0/24を含むサブネットに到達すると判定する。
そして、宛先アドレスが到達先に含まれるため、影響判定部110は、フローN015は既存通信で使われている可能性が大きいと判定する。次に、影響判定部110は、同じフローN015を設定変更後のデータプレーンモデル267を使ってトレースする。この場合、影響判定部110は、図16におけるデータプレーンモデル266における破線矢印で示すようにフローN015が、ルータ31を超えずに、ファイアウォール32BにおいてフローN015の宛先アドレスである10.23.16.128/25を含むサブネットに到達すると判定する。そこで、影響判定部110は、既存通信で使われている可能性が高いフローN015の到達先が変化していることから、フローN015に関する設定変更は既存通信に影響を与えると判定する。そして、影響判定部110は、影響を受ける既存通信はフローN015に含まれる通信であると特定する。
同様に、影響判定部110は、変化のあった他のフローN013及びN014に関しても検証を行い、フローN014についても既存通信に影響があると判定する。この場合、ネットワーク2の管理者は、影響判定部110による判定結果を受けて、フローN012、N014及びN015に影響を与えないように設定変更手順を修正することが好ましい。
図18は、検証手順を説明するための3つめのネットワークを表す図である。図18に示したネットワーク270は、ルータ31、並びに、ファイアウォール32A及び32Bを有する。さらに、ルータ31は、外部ネットワーク5に接続される。範囲271が、ネットワーク270のデータプレーンモデルを作成するモデル化範囲である。
ルータ31は、フォワーディングテーブル275が設定される。また、ファイアウォール32Aは、フォワーディングテーブル272及びフィルタリングルール274が設定される。また、ファイアウォール32Bは、フォワーディングテーブル273及びフィルタリングルール276が設定される。また、ネットワーク270では、フィルタリングルールが設定されていないインタフェースおよび方向については、すべてのパケットが透過する。
ここで、ネットワーク270に対して、以下の設定変更要求が存在する場合について説明する。例えば、ルータ31のインタフェースe23に接続される外部ネットワーク5の中の10.23.65.0/24のサブネットの任意のホストのTCPポート1024~65535の範囲のポートから、ファイアウォール32Bのインタフェースe32に新しく設定されるサブネットの先に新設されるサーバのTCPポート443の間の通信が新たに開通される。
この設定変更要求に対して、以下の設定変更手順が作成される。例えば、ファイアウォール32Bのインタフェースe32に対して10.23.64.0/24のアドレスを持つサブネットを割り当てる。また、新設されるサーバにIPアドレス10.23.64.50を割り当てる。設定変更後コンフィグ生成部104は、この設定変更手順の入力を設定変更手順入力部101から受ける。
設定変更後コンフィグ生成部104は、取得した設定変更手順とコンフィグ情報収集部105により収集されたルータ31、並びに、ファイアウォール32A及び32Bの設定変更前の設定情報とから設定変更後の設定情報を生成する。そして、設定変更後テーブル推定部103は、設定変更後の設定情報から、図18におけるエントリ281が追加されたフォワーディングテーブル275及びエントリ284が追加されたフォワーディングテーブル273を生成する。また、ACL抽出部108は、設定変更前後のルータ31、並びに、ファイアウォール32A及び32Bの設定情報から、設定変更前後のフィルタリングルール情報を抽出する。ここで、ACL抽出部108は、設定変更後にはフィルタリング情報としてエントリ282及び283を追加する。
この例は、ファイアウォール32Bのインタフェースe32に新しく設定するサブネットに対してルータ31のインタフェースe23の先にある外部ネットワーク5で使用されている可能性のあるサブネットの一部を誤って割り当てることで、既存通信に影響があるかもしれない場合である。このような既存通信に影響が発生する可能性のある変更は、このネットワーク270程度の小さなネットワークでは人手でも容易に見つけることができるが、大きなネットワークでは見つけることが難しい。
このような誤りを見つけるため、ネットワークモデル化部107は、図18に示したフォワーディングテーブル272,273,275の設定変更前後の情報、並びに、フィルタリングルール274及び276の設定変更前後の情報から、図19に示す元を有するmeetsemilatticeを生成する。図19は、3つめのネットワークから生成されるmeetsemilatticeの元を表す図である。図19における元n000~n018は、その行に示された各項目の条件を満たす要素を含む。次に、ネットワークモデル化部107は、生成したmeetsemilatticeから、図20に示すPECを生成する。図20は、3つめのネットワークにおけるPECを表す図である。ここでは、ネットワークモデル化部107は、図20に示すフローN000~N018を表すPECを生成する。そして、ネットワークモデル化部107は、生成したPECを用いて、図21に示すネットワーク270の設定変更前のデータプレーンモデル285及び設定変更後のデータプレーンモデル286を生成する。図21は、3つめのネットワークから生成されるデータプレーンモデルを表す図である。
差分抽出部109は、図22に示すように、データプレーンモデル285とデータプレーンモデル286との差分287を抽出する。図22は、3つめのネットワークの設定変更前後の差分を表す図である。差分287で示されるように、この設定変更によりルータ31においてフローN006、N011、N015及びN018が変化する。また、ファイアウォール32BにおいてフローN006、N011、N015、N017及びN018が変化する。これ以外のフローについては設定変更前後で変化がない。影響判定部110は、図22に示された設定変更により影響を受けたフローN006、N011、N015、N017及びN018以外については、既存通信への影響の判定を行わない。
影響判定部110は、変化のあったそれぞれのN006、N011、N015、N017及びN018に関してそれぞれのフローが既存通信で使われていたかどうかを推定する。例えば、影響判定部110は、ルータ31においてフローN011が変化しているので、設定変更前のデータプレーンモデル285を使ってルータ31からフローN011をトレースする。これにより、影響判定部110は、フローN011がルータ31のインタフェースe23から外部ネットワーク5に送られることを確認する。
次に、影響判定部110は、同じフローN011を設定変更後のデータプレーンモデル286を使ってルータ31からトレースする。これにより、影響判定部110は、フローN011がルータ31のインタフェースe23から外部ネットワーク5に送られるものとファイアウォール32Bのサブネットに到達するものの2つに分かれることを確認する。これにより、影響判定部110は、フローN011の到達先が設定変更前後で変化したことと判定する。
影響判定部110は、データプレーンモデル285の中でフローN011はファイアウォール32Aを透過することを確認する。これにより、フローN011が既存通信で使用された可能性がある。既存通信での使用の可能性があるフローN011が設定変更前後で変化したことから、影響判定部110は、外部ネットワーク5の管理者へのフローN011の利用状態の問い合わせ、あるいはネットワーク270の管理者への設定変更手順をフローN011に影響を与えないものに変える通知のいずれかの対応を決定する。
同様に、影響判定部110は、変化のあった他のフローN006、N015、N017及びN018に関しても検証を行い、既存通信への影響を判定する。
次に、図23を参照して、本実施例に係るネットワーク検証装置1による検証処理の全体の流れについて説明する。図23は、実施例1に係るネットワーク検証装置による検証処理全体のフローチャートである。
コンフィグ情報収集部105は、ネットワーク2の中のルータ31やファイアウォール32といったネットワーク装置から設定変更前の設定情報を収集する。また、テーブル情報収集部106は、ネットワーク装置からフォワーディングテーブルに格納されたフォワーディング情報を収集する(ステップS1)。
設定変更後コンフィグ生成部104は、設定変更前の設定情報をコンフィグ情報収集部105から取得する。設定変更後コンフィグ生成部104は、ネットワーク2における各ネットワーク装置に対する設定変更手順を設定変更手順入力部101から取得する(ステップS2)。
次に、設定変更後コンフィグ生成部104は、設定変更前の設定情報及び設定変更手順から設定変更後の設定情報を取得する(ステップS3)。
設定変更後テーブル推定部103は、設定変更後の設定情報を設定変更後コンフィグ生成部104から取得する。そして、設定変更後テーブル推定部103は、設定変更後の設定情報からシミュレーションにより設定変更後のフォワーディングテーブルを推定する(ステップS4)。
ACL抽出部108は、設定変更前の設定情報をコンフィグ情報収集部105から取得する。また、ACL抽出部108は、設定変更後の設定情報を設定変更後コンフィグ生成部104から取得する。その後、ACL抽出部108は、設定変更前後の設定情報から設定変更前のACL及び設定変更後のACLの情報を抽出する(ステップS5)。
ネットワークモデル化部107は、設定変更前のフォワーディング情報をテーブル情報収集部106から取得する。また、ネットワークモデル化部107は、ACL抽出部108により抽出された設定変更前のACLから設定変更前のフィルタリング情報を取得する。そして、ネットワークモデル化部107は、設定変更前のフォワーディング情報及びフィルタリング情報からネットワーク2の設定変更前のデータプレーンモデルを生成する(ステップS6)。
次に、ネットワークモデル化部107は、設定変更後のフォワーディング情報を設定変更後テーブル推定部103により推定された設定変更後のフォワーディングテーブルから取得する。また、ネットワークモデル化部107は、ACL抽出部108により抽出された設定変更後のACLから設定変更後のフィルタリング情報を取得する。そして、ネットワークモデル化部107は、設定変更後のフォワーディング情報及びフィルタリング情報からネットワーク2の設定変更後のデータプレーンモデルを生成する(ステップS7)。
差分抽出部109は、設定変更前後のデータプレーンモデルをネットワークモデル化部107から取得する。そして、差分抽出部109は、設定変更前のデータプレーンモデルと設定変更後のデータプレーンモデルの差分を求める(ステップS8)。
影響判定部110は、データプレーンモデルの設定変更前後の差分を差分抽出部109から取得する。そして、影響判定部110は、設定変更前後の差分から設定変更により変化したフローを特定する。その後、影響判定部110は、設定変更により変化したフローによる既存通信への影響を判定する(ステップS9)。
出力部111は、設定変更により変化したフローによる既存通信への影響の判定結果を影響判定部110から取得する。そして、出力部111は、設定変更により変化したフローによる既存通信への影響の判定結果をネットワーク2の管理者に通知する(ステップS10)。
次に、図24を参照して、データプレーンモデル作成処理の流れについて説明する。図24は、データプレーンモデル作成処理のフローチャートである。図24のフローチャートで示した処理は、図23におけるステップS6及びS7で実行される処理の一例にあたる。
ネットワークモデル化部107は、ネットワーク2に含まれる各ネットワーク装置のフォワーディング情報及びフィルタリング情報の全てのエントリを元として含むmeetsemilatticeを生成する(ステップS101)。
次に、ネットワークモデル化部107は、生成したmeetsemilatticeの各元の親子関係を特定する(ステップS102)。
次に、ネットワークモデル化部107は、meetsemilattice1における親の元から、その元に対応する子の元の和を減産してPECを生成する(ステップS103)。
次に、ネットワークモデル化部107は、生成したPECをネットワーク2のトポロジグラフにラベル付けしてデータプレーンモデルを生成する(ステップS104)。
次に、図25A及び図25Bを参照して、影響判定部110による既存通信への影響判定処理の流れを説明する。図25Aは、既存通信への影響判定処理の第1のフローチャートである。図25Bは、既存通信への影響判定処理の第2のフローチャートである。図25A及び25Bのフローチャートで示した処理は、図23におけるステップS9で実行される処理の一例にあたる。
影響判定部110は、設定変更により変化があったフローの中から判定対象フローを1つ選択する(ステップS201)。
次に、影響判定部110は、設定変更前のネットワーク2のデータプレーンモデルを用いて、差分が検出されたネットワーク装置から判定対象フローをトレースして、判定対象フローの到達先を確認する(ステップS202)。
次に、影響判定部110は、設定変更前のデータプレーンモデルにおける判定対象フローの到達先から、設定変更前のデータプレーンモデルにおいて判定対象フローがネットワーク2のモデル化範囲外へ進出したか否かを判定する(ステップS203)。
判定対象フローがモデル化範囲外へ進出しない場合(ステップS203:否定)、影響判定部110は、判定対象フローの到達先に、その判定対象フローの宛先が含まれるか否かを判定する(ステップS204)。判定対象フローの到達先にその判定対象フローの宛先が含まれない場合(ステップS204:否定)、影響判定部110による影響判定処理はステップS208へ進む。
これに対して、判定対象フローの到達先にその判定対象フローの宛先が含まれる場合(ステップS204:肯定)、影響判定部110は、設定変更後のネットワーク2のデータプレーンモデルを用いて、差分が検出されたネットワーク装置から判定対象フローをトレースして、判定対象フローの到達先を確認する(ステップS205)。
次に、影響判定部110は、設定変更前後で判定対象フローの到達先が一致するか否かを判定する(ステップS206)。
設定変更前後で判定対象フローの到達先が一致しない場合(ステップS206:否定)、影響判定部110は、判定対象フローの変更は既存通信に影響を与えると判定する(ステップS207)。その後、処理はステップS214へ進む。
判定対象フローの到達先に宛先が含まれない場合(ステップS204:否定)、影響判定部110は、判定対象フローの変更は既存通信に影響を与えないと判定する(ステップS208)。同様に、設定変更前後で判定対象フローの到達先が一致する場合(ステップS206:肯定)、影響判定部110は、判定対象フローの変更は既存通信に影響を与えないと判定する(ステップS208)。その後、処理はステップS214へ進む。
一方、判定対象フローがモデル化範囲外へ進出する場合(ステップS203:肯定)、影響判定部110は、図25BのステップS209へ進み、以下の処理を実行する。影響判定部110は、設定変更後のネットワーク2のデータプレーンモデルを用いて、差分が検出されたネットワーク装置から判定対象フローをトレースして、判定対象フローの到達先を確認する(ステップS209)。
次に、影響判定部110は、判定対象フローのモデル化範囲外への出口となるネットワーク装置が設定変更前後で同一であり、そのネットワーク装置からの判定対象フローの次ホップアドレスが同一か否かを判定する(ステップS210)。
モデル化範囲外への出口となるネットワーク装置及び次ホップアドレスが同一の場合(ステップS210:肯定)、影響判定部110は、図25AのステップS208へ進み、判定対象フローの変更は既存通信に影響を与えないと判定する。
モデル化範囲外への出口となるネットワーク装置又は次ホップアドレスが異なる場合(ステップS210:否定)、影響判定部110は、以下の処理を実行する。影響判定部110は、設定変更前のデータプレーンモデルにおいて判定対象フローが透過するACLエントリを持つネットワーク装置が存在するか否かを判定する(ステップS211)。
判定対象フローが透過するACLエントリを持つネットワーク装置が存在しない場合(ステップS211:否定)、影響判定部110は、判定対象フローの宛先アドレスの外部ネットワークにおける使用状態の確認の推奨を決定する(ステップS212)。その後、処理は図25AのステップS214へ進む。
判定対象フローが透過するACLエントリを持つネットワーク装置が存在する場合(ステップS211:肯定)、影響判定部110は、判定対象フローの変更が既存通信に影響を与える可能性が高いと判定する(ステップS213)。その後、処理は図25AのステップS214へ進む。
影響判定部110は、設定変更により変化があった全てのフローについて判定が終了したか否かを判定する(ステップS214)。判定を行っていないフローが残っている場合(ステップS214:否定)、影響判定部110は、ステップS201へ進む。これに対して、全てのフローについて判定が終了した場合(ステップS214:肯定)、影響判定部110は、既存通信への影響判定処理を終了する。
以上に説明したように、本実施例に係るネットワーク検証装置は、ネットワーク装置の設定情報及びフォワーディングテーブルの情報から、ネットワーク内での動作が同じになるフローを抽出してネットワークをモデル化する。そして、ネットワーク検証装置は、生成したモデル上で設定変更前と設定変更後で変化のなかったフローについては設定変更の影響を受けていないものとして検証対象から外す。その後、ネットワーク検証装置は、設定変更前のIPネットワークのモデルを用いてそれぞれのフローが既存通信で利用されていたかどうかを推定する。これにより、検証にかかる時間が設定変更前のIPネットワークで利用されていた既存通信の量に依存して長くなることを回避できる。また、既存通信のリストがなくてもより網羅的な既存通信への影響の確認が実行できる。したがって、網羅的かつ効率性の高いネットワーク検証を行うことができる。
次に、実施例2について説明する。キャリアネットワークなどでは、顧客との契約に基づき、回線や拠点の追加及び削除や、回線増速などに伴う収容変更などが頻繁に行われる。これらの作業をミスなく行うため、ネットワークの変更を事前に検証して、既存通信に影響が出ないことを確認することが好ましい。しかし、この既存通信への影響の確認を人手で行う場合、網羅的に行うことは難しく、また、ヒューマンエラーを生じるおそれがある。
例えば、収容変更の場合、キャリア側の古い顧客収容ルータ(PE:Provider Edge Router)の旧拠点向けの設定削除と、新しい顧客収容ルータの新拠点向けの設定追加という2つの作業手順が連続して行われる。そこで、収容変更時にネットワーク検証を行う場合、旧拠点の削除と新拠点の追加とを順を追って検証することになる。また、収容変更が行われるネットワークにおけるフローの中には、設定変更後に変化するフローと、設定変更後に変化してはいけないフローが存在する。
実施例1のネットワーク検証装置では、1回の検証で1回の作業に対するネットワーク検証が行われて検証が終了する。これに対して、回線や拠点の追加削除及び収容変更の場合、上述したように2回の作業手順が行われる。そのため、実施例1のネットワーク検証装置では、実施例1で説明した検証を2回繰り返すことになる。この方法では、1回目の設定変更を行った後のネットワークに対して、2回目の設定変更の検証を行うことになる。そのため、2回目の検証では、1回目の作業で行われた設定変更を追加したネットワーク情報を手動で生成したうえで、新拠点の追加検証が行われることになる。また、収容変更の場合、旧拠点を通過するフローが全て新拠点経由に変更されたかを検証することが好ましい。しかしながら、実施例1のネットワーク検証装置を用いた場合、1回目の検証と2回目の検証とは別個に実行されるため、PECの情報も変わるおそれがある。そのため、1回目の検証におけるPECと2回目の検証におけるPECとを管理者が目で照合して、旧拠点を通過するフローが全て新拠点経由に変更されたかを検証することになる。このような理由から、複数の設定変更が連続して行われそれぞれについて検証を行う場合、実施例1のネットワーク検証装置では、収容変更の検証において多くの工数がかかってしまい効率がよくない。
図26は、収容変更及び拠点変更の一例を表す図である。例えば、キャリアネットワーク300及び顧客拠点301~303を含む複数の顧客拠点が存在する場合で説明する。顧客拠点301は、顧客側のキャリア接続ルータ(CE:Customer Edge Router)311と顧客収容ルータ321とを用いて100Mb/sの回線速度でキャリアネットワーク300に繋がる。そこで、収容変更を実行して、キャリア接続ルータ312と顧客収容ルータ321とを用いて1Gb/sの回線速度で顧客拠点301がキャリアネットワーク300に接続されるように変更する。
また、顧客拠点や回線の追加及び削除は次のように行われる。例えば、顧客側のキャリア接続ルータ313と顧客収容ルータ323とを用いてキャリアネットワーク300と顧客拠点303とを繋げる回線が削除される。そして、顧客側のキャリア接続ルータ314と顧客収容ルータ324とを用いてキャリアネットワーク300と顧客拠点304とを繋げる回線が新たに追加される。
以上に説明した作業は、複数の設定変更が連続して行われ、それぞれの設定変更が適切に行われたかが順次確認されることが好ましい。そこで、以下では、顧客拠点301の収容変更を例に、本実施例に係るネットワーク検証装置1の動作を説明する。本実施例に係るネットワーク検証装置1も図1のブロック図で表される。ただし、ここでのキャリアネットワーク300が図1のネットワーク2にあたる。以下の説明では、実施例1の各部の動作と同じ動作については説明を省略する。以下の説明では、収容変更における顧客収容ルータ321の削除を「第1の設定変更」といい、顧客収容ルータ322の追加を「第2の設定変更」という。さらに、第1の設定変更前のキャリアネットワーク300の状態を「初期状態」という。
第1の設定変更のネットワーク検証において、ネットワークモデル化部107は、初期状態のネットワーク装置のフォワーディング情報及びフィルタリング情報を用いて、第1の設定変更前のキャリアネットワーク300のデータプレーンモデルを生成する。また、ネットワークモデル化部107は、第1の設定変更後のネットワーク装置のフォワーディング情報及びフィルタリング情報を用いて、第1の設定変更後のキャリアネットワーク300のデータプレーンモデルを生成する。そして、ネットワークモデル化部107は、第1の設定変更前後のデータプレーンモデルを差分抽出部109へ出力する。そして、ネットワークモデル化部107は、第1の設定変更後のデータプレーンモデルを保持する。
第1の設定変更のネットワーク検証が完了後の第2の設定変更のネットワーク検証において、ネットワークモデル化部107は、生成した第1の設定変更後のデータプレーンモデルを、第2の設定変更前のキャリアネットワーク300のデータプレーンモデルとする。また、ネットワークモデル化部107は、第2の設定変更後のネットワーク装置のフォワーディング情報及びフィルタリング情報を用いて、第2の設定変更後のキャリアネットワーク300のデータプレーンモデルを生成する。そして、ネットワークモデル化部107は、第2の設定変更前後のデータプレーンモデルを差分抽出部109へ出力する。
第1の設定変更のネットワーク検証において、差分抽出部109は、第1の設定変更前後のデータプレーンモデルをネットワークモデル化部107から取得する。そして、差分抽出部109は、第1の設定変更前後のデータプレーンモデルの差分を抽出する。その後、差分抽出部109は、抽出した第1の設定変更前後のデータプレーンモデルの差分を影響判定部110へ出力する。
次に、第1の設定変更のネットワーク検証が完了後の第2の設定変更のネットワーク検証において、差分抽出部109は、第2の設定変更前後のデータプレーンモデルをネットワークモデル化部107から取得する。そして、差分抽出部109は、第2の設定変更前後のデータプレーンモデルの差分を抽出する。その後、差分抽出部109は、抽出した第2の設定変更前後のデータプレーンモデルの差分を影響判定部110へ出力する。
第1の設定変更のネットワーク検証において、影響判定部110は、第1の設定変更前後のデータプレーンモデルの差分の入力を差分抽出部109から受ける。そして、影響判定部110は、第1の設定変更により変化したフローを記憶する。次に、影響判定部110は、第1の設定変更前後のデータプレーンモデルを用いて、第1の設定変更により変化したフローの既存通信への影響を判定する。
その後、影響判定部110は、収容変更の処理が完了したか否かを判定する。例えば、影響判定部110は、連続する設定変更の回数を予め保持し、検証を実行した回数が設定変更の回数に達した場合に処理が完了したと判定する。
収容変更の処理が完了していない場合、影響判定部110は、第2の設定変更のネットワーク検証を行う。具体的には、影響判定部110は、第2の設定変更前後のデータプレーンモデルの差分の入力を差分抽出部109から受ける。そして、影響判定部110は、第2の設定変更により変化したフローを記憶する。次に、影響判定部110は、第2の設定変更前後のデータプレーンモデルを用いて、第2の設定変更により変化したフローの既存通信への影響を判定する。
収容変更の処理が完了した場合、影響判定部110は、第1の設定変更により変化したフローと第2の設定変更により変化したフローとを照合する。ここで、収容変更におけるフローの変化について図27を参照して説明する。図27は、収容変更を行った場合のフローの変化を説明するための図である。
キャリアネットワーク300では、例えば、遷移401に示すフロー331及び332が存在する。遷移401における設定変更411が第1の設定変更を表し、設定変更412が第2の設定変更を表す。フロー331は、第1の設定変更である設定変更411の前に、キャリア接続ルータ311から送出され、顧客収容ルータ321及びネットワーク装置325を介してキャリアネットワーク300を通過する。また、フロー332は、設定変更411の前に、ネットワーク装置326及び顧客収容ルータ321を介してキャリアネットワーク300を通過してキャリア接続ルータ311に到達する。
第1の設定変更である設定変更411によりキャリア接続ルータ311が削除されると、フロー331及び332は、到達先が存在しなくなる。その後、第2の設定変更である設定変更412によりキャリア接続ルータ312が追加されると、フロー331は、キャリア接続ルータ312から送出され、顧客収容ルータ322及びネットワーク装置325を介してキャリアネットワーク300を通過する。また、フロー332は、ネットワーク装置326及び顧客収容ルータ322を介してキャリアネットワーク300を通過してキャリア接続ルータ312に到達する。
このように、フロー331及び332は、この収容変更においては2回の設定変更前後で変化することが求められる。さらに、設定変更411の前にキャリア接続ルータ311を通過するフロー331が全て、設定変更412の後にキャリア接続ルータ312を通過することが求められる。
また、キャリアネットワーク300では、例えば、遷移402に示すように、ネットワーク装置325及び326を経由してキャリアネットワーク300を追加するフロー333が存在する。フロー333は、遷移402に示すように、設定変更411と設定変更412とのいずれが行われても、変化しないことが求められる。
そこで、影響判定部110は、記憶した第1の設定変更により変化したフローと第2の設定変更により変化したフローのうち変化しないことが求められるフローを抽出する。そして、影響判定部110は、既存通信への影響の判定結果を用いて、変化しないことが求められるフローに関して変化の有無を確認する。そして、影響判定部110は、変化がないフローについては既存通信への影響がないと判定する。これに対して、影響判定部110は、変化が発生したフローについては既存通信への影響があると判定する。
また、影響判定部110は、記憶した第1の設定変更により変化したフローと第2の設定変更により変化したフローのうち変化することが求められるフローを抽出する。そして、影響判定部110は、収容変更によるフローの変化の条件を満たすか否かを判定する。例えば、影響判定部110は、第1の設定変更前にキャリア接続ルータ311を通過するフローが全て、第2の設定変更後にキャリア接続ルータ312を通過するか否かを判定する。収容変更によるフローの変化の条件を満たすフローについては、影響判定部110は、正常と判定する。これに対して、収容変更によるフローの変化の条件を満たさないフローについては、影響判定部110は、異常が発生した判定する。その後、影響判定部110は、判定結果を出力部111へ出力する。
次に、図28を参照して、本実施例に係るネットワーク検証装置1による検証処理の流れについて説明する。図28は、実施例2に係るネットワーク検証装置1による検証処理のフローチャートである。
ネットワークモデル化部107は、キャリアネットワーク300のネットワーク装置のフォワーディング情報及びフィルタリング情報を用いて、設定変更前のキャリアネットワーク300のデータプレーンモデルを生成する(ステップS301)。
次に、設定変更前の旧キャリア接続ルータの削除による設定変更が設定変更手順にしたがって実行される(ステップS302)。
次に、ネットワークモデル化部107は、設定変更後のネットワーク装置のフォワーディング情報及びフィルタリング情報を用いて、設定変更後のキャリアネットワーク300のデータプレーンモデルを生成する(ステップS303)。
差分抽出部109は、設定変更前後のデータプレーンモデルをネットワークモデル化部107から取得する。そして、差分抽出部109は、第1の設定変更前後のデータプレーンモデルの差分を抽出する(ステップS304)。
影響判定部110は、設定変更前後のデータプレーンモデルの差分の入力を差分抽出部109から受ける。そして、影響判定部110は、設定変更により変化したフローを記憶する(ステップS305)。
次に、影響判定部110は、設定変更前後のデータプレーンモデルを用いて、設定変更により変化したフローの既存通信への影響を判定する(ステップS306)。
その後、影響判定部110は、収容変更処理が完了したか否かを判定する(ステップS307)。収容変更処理が完了していない場合(ステップS307:否定)、ネットワークモデル化部107は、旧キャリア接続ルータの削除後のデータプレーンモデルを設定変更前のデータプレーンモデルとする(ステップS308)。
次に、新キャリア接続ルータの追加による設定変更が設定変更手順にしたがって実行される(ステップS309)。その後、ネットワーク検証処理は、ステップS303へ戻る。
これに対して、収容変更処理が完了した場合(ステップS307:肯定)、影響判定部110は、変化したフローの照合を行う(ステップS310)。これにより、影響判定部110は、設定変更による影響を判定する。その後、出力部111は、影響判定部110による判定結果を管理者に通知する。
以上に説明したように、本実施例に係るネットワーク検証装置は、連続して行われる設定変更について、1つの前の設定変更後のデータプレーンモデルを次の設定変更前のデータプレーンモデルとして使用して、設定変更毎にネットワーク検証を行う。さらに、本実施例に係るネットワーク検証装置は、各設定変更で変化したフローを照合して、変化が求められるフローについては、フローの変化の条件を満たすか否かにより設定変更の成否を判定する。これにより、連続して設定変更が行われ且つそれぞれの設定変更についてネットワーク検証を行う場合に、検証毎に既存ネットワークの生成及びインプットを行わなくてもよく、ネットワーク検証を効率的に行うことが可能となる。
次に、実施例3について説明する。ネットワークには、NAT(Network Address Translation)のようなアドレス変換を行うアドレス変換装置が存在する場合がある。このようなネットワークにおいて、アドレス変換機能を考慮しないと、アドレス変換装置を通過する前後でPECの連続が切れてしまい、PECの到達性の追跡が困難となる。そこで、このようなネットワークにおいては、パケットがアドレス変換装置を通過する際のアドレス変換を考慮してモデル化することが重要となる。
アドレス変換機能を考慮した検証を行うために、PECの宛先アドレスがアドレス変換機能で用いられる変換ルールで対象とされるアドレスに一致する場合に、アドレス変換装置によりアドレス変換が行われた後のフローの情報としてそのPECの情報を追加する方法が考えられる。この方法を用いることで、アドレス変換機能を含むネットワークにおいても到達性が検証可能となる。
ここで、アドレス変換機能は、イントラネットなどの内部ネットワークから送出され且つ外部ネットワークから戻ってきたフローのみを通過させることを目的とする場合がある。言い換えれば、この場合のアドレス変換機能は、内部ネットワークで開始されたフローが外部ネットワーク側から戻ってきた場合に通過させる機能といえる。また、アドレス変換機能は、例えばプライベートアドレスを1つのグローバルアドレスに変換して共有することで、グローバルアドレスを節約する目的がある一方で、内部ネットワークを外部ネットワークから隠ぺいする目的もある。
すなわち、この場合のアドレス変換機能は、内部ネットワークから送信されて外部ネットワークから戻ってきたフローを通過させ、外部ネットワークから開始されたフローは遮断することが求められる。しかし、単にアドレス変換が行われた後のフローの情報としてアドレス変換前のPECの情報を追加した場合、外部ネットワークから開始されたフローも到達性ありと判定されるおそれがある。
そこで、本実施例に係るネットワーク検証装置は、アドレス変換機能の目的に応じた通信を考慮して検証を行う。本実施例に係るネットワーク検証装置1も図1のブロック図で表される。以下の説明では、実施例1の各部の機能と同じ機能については説明を省略する場合がある。
図29は、アドレス変換装置が配置されたネットワークの一例の図である。ここでは、端末501がアドレス変換装置503と内部ネットワークで接続される。また、アドレス変換装置503と端末502とが外部ネットワークで接続される。すなわち、アドレス変換装置503を境に、端末501が配置されたシステムが内部ネットワーク側のシステムであり、端末502が配置されたシステムが外部ネットワーク側のシステムである。内部ネットワークが「第1ネットワーク」の一例にあたり、外部ネットワークが「第2ネットワーク」の一例にあたる。
アドレス変換装置503は、例えばNATである。ここで、アドレス変換装置503の動作を説明する。以下では、内部ネットワーク側の端末501が送信したパケットの通信及びそのパケットに対する外部ネットワーク側の端末502からの返信のパケットの通信を「往復通信」と呼ぶ。また、内部ネットワーク側の端末501又は外部ネットワーク側の端末502のいずれかから開始され返信のパケットを要求しない通信を「片側通信」と呼ぶ。
往復通信において、アドレス変換装置503は、端末501から出力されたパケット511を受信する。このパケット511は、宛先の端末502からの返信を要求するパケットである。そして、アドレス変換装置503は、予め設定された変換ルールにしたがい、パケット511に格納された内部ネットワークにおける送信元アドレスを外部ネットワークにおける送信元アドレスに変換する。例えば、アドレス変換装置503は、内部ネットワークにおける送信元アドレスであるIP1を、外部ネットワークにおける送信元アドレスであるIP2に変換する。そして、アドレス変換装置503は、送信元アドレスをIP2に変換したパケット512を宛先アドレスであるIP3を有する端末502へ送信する。
その後、アドレス変換装置503は、端末501が送信したパケット511に対する返信のパケット513を端末502から取得する。パケット513は、パケット512で送信元アドレスとして指定されたアドレスが、宛先アドレスとして格納される。そして、アドレス変換装置503は、パケット513がパケット511の返信であることを確認する。その後、アドレス変換装置503は、パケット513に格納された外部ネットワークにおける宛先アドレスを内部ネットワークにおける宛先アドレスに変換する。この場合、内部ネットワークにおける宛先アドレスは端末501のアドレスになる。例えば、アドレス変換装置503は、外部ネットワークにおける宛先アドレスであるIP2を、内部ネットワークにおける宛先アドレスであるIP1に変換する。そして、アドレス変換装置503は、宛先アドレスをIP1に変換したパケット514を端末501へ送信する。
また、内部ネットワーク側の端末501から開始される片側通信の場合、アドレス変換装置503は、端末501から出力されたパケットを受信する。そして、アドレス変換装置503は、往復通信の場合と同様に、変換ルールにしたがいパケットに格納された内部ネットワークにおける送信元アドレスを外部ネットワークにおける送信元アドレスに変換する。そして、アドレス変換装置503は、送信元アドレスを内部ネットワークにおける送信元アドレスに変換したパケットを宛先アドレスである端末502へ送信する。
一方、外部ネットワーク側の端末502から開始される片側通信の場合、アドレス変換装置503は、外部ネットワーク側の端末502からパケットを受信する。この場合、アドレス変換装置503は、受信したパケットが内部ネットワーク側から送信されたパネットの返信ではないことを確認する。そして、アドレス変換装置503は、受信したパケットを破棄する。このパケットの破棄を「ブラックホール(Blackhole)」と呼ぶ場合がある。
ネットワークモデル化部107は、ネットワークモデルを構築する際に、アドレス変換装置503を通過するフローを表すPECの宛先アドレスが、アドレス変換装置503が有する変換ルールのアドレスに合致するか否かを判定する。PECの宛先アドレスが変換ルールのアドレスに合致する場合、ネットワークモデル化部107は、そのPECのラベルを、アドレス変換装置503を透過した後のネットワークに追加登録する。すなわち、ネットワークモデル化部107は、生成するデータプレーンモデルのアドレス変換装置503を透過した後のネットワークにそのPECのラベルを追加する。アドレス変換装置503を通過するフローが、「通過フロー」の一例にあたる。また、アドレス変換装置503を通過する前のPECで表されるフローが「通過前フロー」の一例にあたり、通過した後のPECで表されるフローが「通過後フロー」の一例にあたる。この追加登録された情報が、「対応情報」の一例にあたる。
例えば、図29に示すネットワークであれば、ネットワークモデル化部107は、端末501から送出された端末502へ向かうパケットのアドレス変換装置503を通過するフローを表すPECに#Cのラベルを付加する。次に、ネットワークモデル化部107は、アドレス変換装置503により送信元アドレスが変更されたパケットを送信するフローについてラベル付けを行う。PECに#Cに含まれるパケットとアドレス変換装置503から送出されるパケットとは送信元アドレスは異なるが、宛先アドレスが同じであるので、ネットワークモデル化部107は、送信元アドレスの変更前後のフローを同じフローとして取り扱う。そこで、ネットワークモデル化部107は、送信アドレス変更後のフローを表すPECに#Cのラベルを付加する。
これに対して、外部ネットワーク側の端末502から内部ネットワーク側の端末501へのパケット送信を表すフローについて、ネットワークモデル化部107は、以下のようにラベル付けを行う。ネットワークモデル化部107は、対象とするフローの端末502からアドレス変換装置503へ向かうPECに#Aのラベルを付加する。また、対象とするフローは、アドレス変換装置503により宛先アドレスが変更される。ネットワークモデル化部107は、アドレス変換装置503により宛先アドレスが変更されたパケットを送信するフローについて、宛先アドレスの変更前のフローとは異なるフローとして取り扱う。そこで、ネットワークモデル化部107は、宛先アドレス変更後のフローを表すPECに#Bのラベルを付加する。加えて、ネットワークモデル化部107は、アドレス変換装置503が有する変換ルールのアドレスにPEC#Aの宛先アドレスが合致するため、宛先アドレス変更後のフローにPEC#Aを追加する。以下では、通常の方法で生成されるPECのラベルをプライマリラベルと呼び、アドレス変換装置503を通過することで付加されるPECのラベルをセカンダリラベルと呼ぶ場合がある。すなわち、図29に示すアドレス変換装置503から端末501へ向かうPECにおいて、#Bがプライマリラベルであり、#Aがセカンダリラベルである。これにより、図29に示すようにPECのラベルがアドレス変換装置503を含むネットワークを表すデータプレーンモデルに登録される。
例えば、IP1が(192.168.0.1)であり、IP2が(133.160.0.1)であり、IP3が(1.0.0.1)の場合、PEC#A及びPEC#Bは、図30のように表される。図30は、アドレス変換装置を通過する前後のPECの一例を表す図である。PEC#Aについては、プライマリラベル及びセカンダリラベルのいずれも図30に記載されたシンタックスで示される。
影響判定部110は、設定変更により変化があったフローの中から判定対象フローを1つ選択しその判定対象フローを取得する。そして、影響判定部110は、判定対象フローの既存通信に対する影響の判定を行う。この際、影響判定部110は、判定対象フローが宛先に到達するか否かを確定するための通信要件の到達性の判定を行う。この通信要件の到達性判定処理の際に、判定対象フローが往復通信か片側通信かにより判定処理の流れが異なる。そこで、以下に到達性判定処理の流れについて説明する。図31は、NATを用いた場合の往復通信及び片側通信の場合の通信要件の到達性の判定を説明するための図である。
影響判定部110は、判定対象フローの通信要件を取得する。図31に一例として示した通信要件520は、図29における端末501をaEndとし、端末502をzEndとした場合の通信要件である。通信要件520には、例えば、送信元アドレス、宛先アドレス、送信元ポート、宛先ポート及びプロトコルの情報が含まれる。
判定対象フローが内部ネットワーク側から外部ネットワーク側へのパケット送信を表すフローの場合、影響判定部110は、管理者から与えられた情報などから往復通信か否かを判定する。往復通信でなければ、影響判定部110は、通信要件を用いて判定対象フローをトレースし判定対象フローが宛先に到達するか否かを判定して、判定対象フローの通信要件の到達性を確認する。
これに対して、判定対象フローが内部ネットワーク側から外部ネットワーク側へのパケット送信を表すフローであり且つ往復通信の場合、影響判定部110は、以下の到達性処理を実行する。影響判定部110は、内部ネットワーク側から外部ネットワーク側へのパケット送信を表すフローと、それに対する返信となる外部ネットワーク側から内部ネットワーク側へのパケット送信を表すフローとをまとめて一対の判定対象フローとする。この時、影響判定部110は、往復通信の判定対象フローにおける返信フラグを初期値であるオフに設定する。
そして、影響判定部110は、往復通信の往路のフローを表すPECに連続性があるか否かを判定する。連続性がなければ、影響判定部110は、往復通信の往路のフローが終点に到達しないため、往復通信の対とした各フローの通信要件に到達性がないと判定する。これに対して連続性が存在する場合、影響判定部110は、連続性を有するPECの中にセカンダリラベルが付加されたPECがあるか否かを判定する。往復通信の往路のフローの中にはセカンダリラベルが付加されたPECは存在しないので、影響判定部110は、セカンダリラベルが付加されたPECはないと判定する。セカンダリラベルが付加されたPECがない場合、影響判定部110は、往復通信の往路のフローの通信要件の終点に到達したか否かを判定する。往復通信の往路のフローが通信要件の終点に到達しない場合、影響判定部110は、往復通信の対とした各フローの通信要件に到達性がないと判定する。
一方、往復通信の往路のフローが通信要件の終点に到達する場合、影響判定部110は、判定対象フローの返信フラグをオンにする。さらに、影響判定部110は、往復通信の往路のフローの通信要件の終点を始点に変更した通信要件を往復通信の復路のフローの通信要件とする。次に、影響判定部110は、往復通信の復路のフローを表すPECに連続性があるか否かを判定する。連続性がなければ、影響判定部110は、往復通信の復路のフローが通信要件の終点に到達しないため、往復通信の対とした各フローの通信要件に到達性がないと判定する。これに対して、連続性が存在する場合、影響判定部110は、連続性を有するPECの中にセカンダリラベルが付加されたPECがあるか否かを判定する。往復通信の復路のフローの中にはセカンダリラベルが付加されたPECが存在するため、影響判定部110は、セカンダリラベルが付加されたPECが存在すると判定する。セカンダリラベルが付加されたPECが存在する場合、影響判定部110は、判定対象フローの返信フラグがオンかオフかを判定する。往復通信の復路のフローの場合、返信フラグはオンの状態であるので、影響判定部110は、判定対象フローの返信フラグがオンであると判定する。判定対象フローの返信フラグがオンの場合、影響判定部110は、往復通信の復路のフローのフローが通信要件の終点に到達したか否かを判定する。往復通信の復路のフローが通信要件の終点に到達しない場合、影響判定部110は、往復通信の対とした各フローの通信要件に到達性がないと判定する。これに対して、往復通信の復路のフローが通信要件の終点に到達する場合、影響判定部110は、往復通信の対とした各フローの到達性があると判定する。往復通信の復路のフローが、「第1通過フロー」の一例にあたる。また、返信用フラグをオンにすることが、「到達情報の付加」の一例にあたる。
例えば、図31の通信要件520を用いる場合、往復通信であれば、検証結果521に示す到達性判定結果が正常な判定結果である。検証結果521において、端末501から開始される端末502との間の往復通信は、aEndを出発しzEndを経由してaEndへ戻る経路として表される。この場合、判定対象フローは、aEndからアドレス変換装置503であるNATを経由してzEndに到達し、その後、NATを経由してaEndに到達する。したがって、この判定対象フローが正常であれば、影響判定部110は、通信要件520に到達性があると判定する。これに対して、端末502から開始される端末501との間の往復通信は、zEndを出発しaEndを経由してzEndへ戻る経路として表される。この場合、判定対象フローのパケットは、zEndから送信されてNATで破棄される。したがって、この判定対象フローが正常であれば、影響判定部110は、通信要件520に到達性がないと判定する。
また、判定対象フローが外部ネットワーク側から内部ネットワーク側へのパケット送信を表すフローの場合、影響判定部110は、判定対象フローにおける返信フラグを初期値であるオフに設定する。次に、影響判定部110は、判定対象フローを表すPECに連続性があるか否かを判定する。連続性がなければ、影響判定部110は、外部ネットワークから開始される判定対象フローに到達性がないと判定する。これに対して、連続性が存在する場合、影響判定部110は、連続性を有するPECの中にセカンダリラベルが付加されたPECがあるか否かを判定する。外部ネットワークから開始されるフローの中にはセカンダリラベルが付加されたPECが存在するため、影響判定部110は、セカンダリラベルが付加されたPECが存在すると判定する。セカンダリラベルが付加されたPECが存在する場合、影響判定部110は、外部ネットワークから開始される判定対象フローの返信フラグがオンかオフかを判定する。外部ネットワークから開始されるフローの場合、返信フラグは初期値のオフの状態であるので、影響判定部110は、判定対象フローの返信フラグがオフであると判定する。判定対象フローの返信フラグがオフの場合、影響判定部110は、外部ネットワークから開始される判定対象フローに到達性がないと判定する。これに対して、通信要件の終点に到達する場合、影響判定部110は、外部ネットワークから開始される判定対象フローの到達性があると判定する。この外部ネットワーク側で開始され外部ネットワーク側から内部ネットワーク側へ向かうフローが、「第2通過フロー」の一例にあたる。
例えば、図31の通信要件520を用いる場合、片側通信であれば、検証結果522に示す到達性判定結果が正常な判定結果である。検証結果522において、端末501から開始される端末502との間の片側通信は、aEndを出発しzEndに到達する経路として表される。この場合、判定対象フローは、aEndからNATを経由してzEndに到達する。したがって、この判定対象フローが正常であれば、影響判定部110は、通信要件520に到達性があると判定する。これに対して、端末502から開始される端末501との間の片側通信は、zEndを出発しaEndへ到達する経路として表される。この場合、判定対象フローのパケットは、zEndから送信されてNATで破棄される。したがって、この判定対象フローが正常であれば、影響判定部110は、通信要件520に到達性がないと判定する。
影響判定部110は、判定対象フローの到達性の判定が完了した後に、上述したようにその到達性の判定結果を用いて判定対象フローの既存通信への影響判定を実行する。影響判定部110は、データプレーンモデル上の全てのフローについて到達性の判定及び到達性の判定結果を用いた既存通信への影響判定を実行する。
次に、図32を参照して、本実施例に係る影響判定部110による通信要件の到達性判定を含む影響判定処理の流れについて説明する。図32は、実施例3に係る影響判定部による通信要件の到達性判定を含む影響判定処理のフローチャートである。
影響判定部110は、データプレーンモデル上のフローから判定対象フローを選択する(ステップS401)。さらに、影響判定部110は、判定対象フローの通信要件を取得する。
次に、影響判定部110は、通信要件の始点から判定対象フローのトレースを開始する(ステップS402)。
次に、影響判定部110は、判定対象フローを示すPECがラベリングされた経路に沿ってデータプレーンモデル上の隣接ノードへ移動する(ステップS403)。
次に、影響判定部110は、移動したノードの前後において同じラベルのPECが存在するか否かにより、判定対象フローに連続性があるか否かを判定する(ステップS404)。
連続性がある場合(ステップS404:肯定)、影響判定部110は、連続性があるPECのラベルがセカンダリラベルか否かを判定する(ステップS405)。連続性があるPECのラベルがプライマリラベルの場合(ステップS405:否定)、影響判定部110は、ステップS407へ進む。
これに対して、連続性があるPECのラベルがセカンダリラベルの場合(ステップS405:肯定)、影響判定部110は、判定対象フローの返信フラグがオンか否かを判定する(ステップS406)。
判定フラグがオンの場合(ステップS406:肯定)、影響判定部110は、トレース位置が通信要件の終点に到達したか否かを判定する(ステップS407)。トレース位置が通信要件の終点に到達していない場合(ステップS407:否定)、影響判定部110は、ステップS403へ戻る。
これに対して、トレース位置が通信要件の終点に到達した場合(ステップS407:肯定)、影響判定部110は、判定対象フローの通信要件の到達性ありと判定する(ステップS408)。
その後、影響判定部110は、判定対象フローが往復通信の往路のフローか否かを判定する(ステップS409)。
判定対象フローが往復通信の往路のフローの場合(ステップS409:肯定)、影響判定部110は、往復通信の復路のフローを判定対象フローとする。そして、影響判定部110は、判定対象フローの返信フラグをオンにして且つ往復通信の往路のフローの通信要件の終点を始点に変更して往復通信の復路のフローの通信要件とする(ステップS410)。その後、影響判定部110は、ステップS402へ戻る。これに対して、判定対象フローが往復通信の往路のフローでない場合(ステップS409:否定)、影響判定部110は、ステップS412へ進む。
一方、判定対象フローに連続性がない場合(ステップS404:否定)及び返信フラグがオフの場合(ステップS406:否定)、影響判定部110は、判定対象フローの通信要件の到達性なしと判定する(ステップS411)。その後、影響判定部110は、ステップS412へ進む。
次に、影響判定部110は、到達性の判定結果を用いて、判定対象フローの既存通信への影響判定処理を実行する(ステップS412)。
その後、影響判定部110は、データプレーンモデルにおいて設定変更があった全てのフローの影響判定処理が完了したか否かによりデータプレーンモデルにおける影響判定処理が完了したか否かを判定する(ステップS413)。データプレーンモデルにおける影響判定処理が完了していない場合(ステップS413:否定)、影響判定部110は、ステップS401へ戻る。これに対して、データプレーンモデルにおける影響判定処理が完了した場合(ステップS413:肯定)、影響判定部110は、今回の影響判定処理を終了する。
以上に説明したように、本実施例に係るネットワーク検証装置は、外部ネットワーク側からアドレス変換装置を経由して内部ネットワーク側へ向かうフローについて、フローの開始位置により取り扱い方を異ならせる。具体的には、ネットワーク検証装置は、内部ネットワーク側から開始される往復通信における外部ネットワーク側から内部ネットワーク側へ向けたフローと外部ネットワーク側から開始され内部ネットワーク側へ向かうフローとを区別する。そして、内部ネットワーク側から開始される往復通信のフローの場合、ネットワーク検証装置は、返信を要求するフローと要求された返信を送信するフローとを一連のフローとして取り扱い、返信を送信するフローのアドレス変換装置の通過を許可する。これに対して、ネットワーク検証装置は、外部ネットワーク側から開始され内部ネットワーク側へ向かうフローの場合、アドレス変換装置でパケットが破棄されるフローとして取り扱う。これにより、アドレス変換装置を用いた通信の検証において、外部ネットワーク側から内部ネットワーク側へ向かうフローを通すべきか否かを正確に判定でき、ネットワーク検証を効率的に行うことが可能となる。
(変形例)
実施例3ではアドレス変換装置がネットワーク上に存在する場合のネットワーク検証方法について説明したが、ファイアウォールSPI(Stateful Packet Inspection)がネットワーク上に存在する場合も同様の方法でネットワーク検証を行うことが可能である。以下では、ファイアウォールSPIが配置されたネットワークの検証について説明する。
図33は、ファイアウォールSPIが配置されたネットワークの一例の図である。図33では、ファイアフォールSPIを「FW SPI」と記載した。例えば、図33に示すように、ここでは、端末501がファイアウォールSPI504と内部ネットワークで接続される。また、ファイアウォールSPI504と端末502とが外部ネットワークで接続される。すなわち、ファイアウォールSPI504を境に、端末501が配置されたシステムが内部ネットワーク側のシステムであり、端末502が配置されたシステムが外部ネットワーク側のシステムである。
ファイアウォールSPI504は、ファイアウォールを通過するパケットの中身を見て、ポートの開放や閉鎖を動的に行う。ファイアウォールSPI504は、内部ネットワーク側から送信したデータをセッションログとして一時的に保存し、外部ネットワーク側から到着したパケットがセッションログと整合性が合う場合にポートを開放し、矛盾する場合にポートを閉鎖する。
例えば、ファイアウォールSPI504は、往復通信において、端末501から出力されたパケットを受信する。このパケットは、宛先の端末502からの返信を要求するパケットである。そして、ファイアウォールSPI504は、受信したパケットを端末502へ送信するとともに、送信したデータをセッションログとして保存する。
その後、ファイアウォールSPI504は、端末502が端末501へ向けて送信したパケットを受信する。そして、ファイアウォールSPI504は、受信したパケットと保持するセッションログとを比較してパケットの送受信として整合性を有することを確認する。その後、ファイアウォールSPI504は、端末502から受信したパケットを端末501へ送信する。
また、内部ネットワーク側の端末501から開始される片側通信の場合、ファイアウォールSPI504は、端末501から出力されたパケットを受信する。そして、ファイアウォールSPI504は、往復通信の場合と同様に、受信したパケットを端末502へ送信する。
一方、外部ネットワーク側の端末502から開始される片側通信の場合、ファイアウォールSPI504は、外部ネットワーク側の端末502からパケットを受信する。この場合、ファイアウォールSPI504は、保持するセッションログと受信したパケットを比較してパケットの送受信として整合性が取れないことを確認する。また、セッションログを保持しない場合も、ファイアウォールSPI504は、整合性が取れないことを確認する。そして、ファイアウォールSPI504は、ポートを閉鎖して受信したパケットの通過を不許可にする。このパケットの通過の不許可を、「ブロック(block)」と呼ぶ場合がある。このファイアウォールSPI504が、「第2通過フロー遮断装置」の一例にあたる。
ネットワークモデル化部107は、FW SPIを表すACL540を生成する。ACL540は、外部ネットワークからのフローは全てブロックするように設定される。そこで、ネットワークモデル化部107は、往復通信における外部ネットワークから戻ってきたフローを透過させるために、ファイアウォールSPI504を表すACL540にSPIパラメータを追加する。SPIパラメータがオンであれば、外部ネットワークからのフローがファイアウォールSPI504を通過することができる。逆に、SPIパラメータがオフの場合、外部ネットワークからのフローはファイアウォールSPI504でblockされる。ネットワークモデル化部107は、ファイアウォールSPI504が有するACL540のSPIパラメータをオンにする。これに対して、SPIの機能を有さないファイアウォールについては、ネットワークモデル化部107は、ACLのSPIパラメータをオフにする。
ネットワークモデル化部107は、ファイアウォールSPI504を通過するPECについて、内部ネットワーク側から外部ネットワーク側への通信において、ファイアウォールSPI504の通過の前後で同じラベルを有するPECを登録する。例えば、図33に示すように、内部ネットワーク側から外部ネットワーク側への通信を表すPEC#PをファイアウォールSPI504の前後に登録する。
同様に、ネットワークモデル化部107は、ファイアウォールSPI504を通過するPECについて、外部ネットワーク側から内部ネットワーク側への通信において、ファイアウォールSPI504の通過の前後で同じラベルを有するPECを登録する。例えば、図33に示すように、外部ネットワーク側から内部ネットワーク側への通信を表すPEC#QをファイアウォールSPI504の前後に登録する。
影響判定部110は、判定対象フローを1つ選択しその判定対象フローを取得する。次に、影響判定部110は、判定対象フローの通信要件を取得する。図34に一例として示した通信要件541は、図33における端末501をaEndとし、端末502をzEndとした場合の通信要件である。
判定対象フローが内部ネットワーク側から外部ネットワーク側へのパケット送信を表すフローの場合、影響判定部110は、管理者から与えられた情報などから往復通信か否かを判定する。往復通信でなければ、影響判定部110は、通信要件を用いて判定対象フローをトレースし判定対象フローが宛先に到達するか否かを判定して、判定対象フローの通信要件の到達性を確認する。
これに対して、判定対象フローが内部ネットワーク側から外部ネットワーク側へのパケット送信を表すフローであり且つ往復通信の場合、影響判定部110は、以下の到達性処理を実行する。影響判定部110は、内部ネットワーク側から外部ネットワーク側へのパケット送信を表すフローと、それに対する返信となる外部ネットワーク側から内部ネットワーク側へのパケット送信を表すフローとをまとめて一対の判定対象フローとする。この時、影響判定部110は、往復通信の判定対象フローにおける返信フラグを初期値であるオフに設定する。
そして、影響判定部110は、往復通信の往路のフローを表すPECがファイアウォールSPI504を表すACL540で受け入れられるか否かを判定する。内部ネットワークからのフローは全てファイアウォールSPI504を通過するため、往復通信の往路のフローを表すPECはACL540で受け入れられる。そこで、影響判定部110は、往復通信の往路のフローが終点に到達することを確認する。往復通信の往路のフローが通信要件の終点に到達する場合、影響判定部110は、判定対象フローの返信フラグをオンにする。さらに、影響判定部110は、往復通信の往路のフローの通信要件の終点を始点に変更した通信要件を往復通信の復路のフローの通信要件とする。
次に、影響判定部110は、往復通信の復路のフローを表すPECがファイアウォールSPI504を表すACL540で受け入れられるか否かを判定する。この場合、外部ネットワークからのフローは全てACL540でブロックさせるため、影響判定部110は、往復通信の復路のフローを表すPECがACL540でブロックされると判定する。次に、影響判定部110は、ブロックしたACL540のSPIパラメータがオンか否かを判定する。ACL540はファイアウォールSPI504を表すことから、影響判定部110は、ACL540におけるSPIパラメータはオンであると判定する。SPIパラメータがオンの場合、影響判定部110は、判定対象フローの返信フラグがオンかオフかを判定する。往復通信の復路のフローの場合、返信フラグはオンの状態であるので、影響判定部110は、判定対象フローの返信フラグがオンであると判定する。判定対象フローの返信フラグがオンの場合、影響判定部110は、往復通信の復路のフローが通信要件の終点に到達することを確認する。往復通信の復路のフローが通信要件の終点に到達する場合、影響判定部110は、往復通信の対とした各フローの到達性があると判定する。
例えば、図34の通信要件541を用いる場合、往復通信であれば、検証結果542に示す到達性判定結果が正常な判定結果である。図34では、ファイアウォールSPI504を「FW」として記載した。検証結果542において、端末501から開始される端末502との間の往復通信は、aEndを出発しzEndを経由してaEndへ戻る経路として表される。この場合、判定対象フローは、aEndからファイアウォールSPI504を経由してzEndに到達し、その後、ファイアウォールSPI504を経由してaEndに到達する。したがって、この判定対象フローが正常であれば、通信要件541は、到達性があると判定される。これに対して、端末502から開始される端末501との間の往復通信は、zEndを出発しaEndを経由してzEndへ戻る経路として表される。この場合、判定対象フローのパケットは、zEndから送信されてファイアウォールSPI504でブロックされる。したがって、この判定対象フローが正常であれば、通信要件541は、到達性がないと判定される。
また、判定対象フローが外部ネットワーク側から内部ネットワーク側へのパケット送信を表すフローの場合、影響判定部110は、判定対象フローにおける返信フラグを初期値であるオフに設定する。次に、影響判定部110は、判定対象フローを表すPECがファイアウォールSPI504を表すACL540で受け入れられるか否かを判定する。ACL540でブロックされる場合、影響判定部110は、ACL540のSPIインフォメーションがオンか否かを判定する。影響判定部110は、この場合、ACL540のSPIインフォメーションはオンであると判定する。SPIパラメータがオンの場合、影響判定部110は、判定対象フローの返信フラグがオンかオフかを判定する。外部ネットワーク側から内部ネットワーク側への片側通信の場合、返信フラグはオフの状態であるので、影響判定部110は、判定対象フローの返信フラグがオフであると判定する。判定対象フローの返信フラグがオフの場合、影響判定部110は、外部ネットワークから開始される判定対象フローに到達性がないと判定する。
例えば、図34の通信要件541を用いる場合、片側通信であれば、検証結果543に示す到達性判定結果が正常な判定結果である。検証結果543において、端末501から開始される端末502との間の片側通信は、aEndを出発しzEndに到達する経路として表される。この場合、判定対象フローは、aEndからファイアウォールSPI504を経由してzEndに到達する。したがって、この判定対象フローは、正常であれば、通信要件541に到達性があると判定される。これに対して、端末502から開始される端末501との間の片側通信は、zEndを出発しaEndへ到達する経路として表される。この場合、判定対象フローのパケットは、zEndから送信されてファイアウォールSPI504でブロックされる。したがって、この判定対象フローは、正常であれば、通信要件541に到達性がないと判定される。
影響判定部110は、判定対象フローの到達性の判定が完了した後に、上述したようにその到達性の判定結果を用いて判定対象フローの既存通信への影響判定を実行する。影響判定部110は、データプレーンモデル上の全てのフローについて到達性の判定及び到達性の判定結果を用いた既存通信への影響判定を実行する。
次に、図35を参照して、本変形例に係る影響判定部110による通信要件の到達性判定を含む影響判定処理の流れについて説明する。図34は、実施例3の変形例に係る影響判定部による通信要件の到達性判定を含む影響判定処理のフローチャートである。
影響判定部110は、データプレーンモデル上のフローから判定対象フローを選択する(ステップS501)。さらに、影響判定部110は、判定対象フローの通信要件を取得する。
次に、影響判定部110は、通信要件の始点から判定対象フローのトレースを開始する(ステップS502)。
次に、影響判定部110は、判定対象フローを示すPECがラベリングされた経路に沿ってデータプレーンモデル上の隣接ノードへ移動する(ステップS503)。
次に、影響判定部110は、移動したノードのACLで判定対象フローを表すPECが受け入れられるかを判定する(ステップS504)。判定対象フローを表すPECがACLで受け入れられる場合(ステップS504:肯定)、影響判定部110は、ステップS507へ進む。
これに対して、判定対象フローを表すPECがACLでブロックされる場合(ステップS504:否定)、影響判定部110は、ACLのSPIパラメータが有効か否かを判定する(ステップS505)。
SPIパラメータが有効の場合(ステップS505:肯定)、影響判定部110は、判定対象フローの返信フラグがオンか否かを判定する(ステップS506)。
判定対象フローを表すPECがACLで受け入れられる場合(ステップS504:肯定)及び判定フラグがオンの場合(ステップS506:肯定)、影響判定部110は、トレース位置が通信要件の終点に到達したか否かを判定する(ステップS507)。トレース位置が通信要件の終点に到達していない場合(ステップS507:否定)、影響判定部110は、ステップS503へ戻る。
これに対して、トレース位置が通信要件の終点に到達した場合(ステップS507:肯定)、影響判定部110は、判定対象フローの通信要件の到達性ありと判定する(ステップS508)。
その後、影響判定部110は、判定対象フローが往復通信の往路のフローか否かを判定する(ステップS509)。
判定対象フローが往復通信の往路のフローの場合(ステップS509:肯定)、影響判定部110は、往復通信の復路のフローを判定対象フローとする。そして、影響判定部110は、判定対象フローの返信フラグをオンにして且つ往復通信の往路のフローの通信要件の終点を始点に変更して往復通信の復路のフローの通信要件とする(ステップS510)。その後、影響判定部110は、ステップS502へ戻る。これに対して、判定対象フローが往復通信の往路のフローでない場合(ステップS509:否定)、影響判定部110は、ステップS512へ進む。
一方、SPIパラメータが無効の場合(ステップS505:否定)及び判定対象フローの返信フラグがオフの場合(ステップS506:否定)、影響判定部110は、判定対象フローの通信要件の到達性なしと判定する(ステップS511)。その後、影響判定部110は、ステップS512へ進む。
次に、影響判定部110は、到達性の判定結果を用いて、判定対象フローの既存通信への影響判定処理を実行する(ステップS512)。
その後、影響判定部110は、データプレーンモデルにおいて設定変更があった全てのフローの影響判定処理が完了したか否かによりデータプレーンモデルにおける影響判定処理が完了したか否かを判定する(ステップS513)。データプレーンモデルにおける影響判定処理が完了していない場合(ステップS513:否定)、影響判定部110は、ステップS501へ戻る。これに対して、データプレーンモデルにおける影響判定処理が完了した場合(ステップS513:肯定)、影響判定部110は、今回の影響判定処理を終了する。
以上に説明したように、本変形例に係るネットワーク検証装置は、外部ネットワーク側からファイアウォールSPIを通過して内部ネットワーク側へ向かうフローについて開始位置により取り扱い方を異ならせる。具体的には、ネットワーク検証装置は、内部ネットワーク側から開始される往復通信における外部ネットワーク側から内部ネットワーク側へ向けたフローと外部ネットワーク側から開始され内部ネットワーク側へ向かうフローとを区別する。そして、内部ネットワーク側から開始される往復通信のフローの場合、ネットワーク検証装置は、返信を要求するフローと要求された返信を送信するフローとを一連のフローとして取り扱い、返信を送信するフローのファイアウォールSPIの通過を許可する。これに対して、ネットワーク検証装置は、外部ネットワーク側から開始され内部ネットワーク側へ向かうフローの場合、ファイアウォールSPIでブロックされるフローとして取り扱う。これにより、ファイアウォールSPIを用いた通信の検証において、外部ネットワーク側から内部ネットワーク側へ向かうフローを通すべきか否かを正確に判定でき、ネットワーク検証を効率的に行うことが可能となる。
(ハードウェア構成)
図36は、ネットワーク検証装置のハードウェア構成図である。例えば、ネットワーク検証装置1は、CPU(Central Processing Unit)91、メモリ92、通信インタフェース93、読み取り装置94、入出力装置95、記憶装置96を有する。CPU91は、バス97を介して、メモリ92、通信インタフェース93、読み取り装置94、入出力装置95及び記憶装置96に接続される。
通信インタフェース93は、図1に例示した通信制御部102の機能を実現する。入出力装置95は、図1に例示した設定変更手順入力部101の機能を実現する。読み取り装置94は、CD(Compact Disk)ドライブやDVD(Digital Versatile Disc)ドライブなどである。読み取り装置94は、CDやDVDといった外部記憶媒体98に対してデータの書き込み及び読み出しを行う。
記憶装置96は、ハードディスクやSSD(Solid State Drive)などの大容量記憶装置である。記憶装置96は、各種プログラムを格納する。例えば、記憶装置96は、図1に例示した、設定変更手順入力部101、通信制御部102、設定変更後テーブル推定部103、設定変更後コンフィグ生成部104、コンフィグ情報収集部105及びテーブル情報収集部106の機能を実現するプログラムを格納する。また、記憶装置96は、図1に例示したネットワークモデル化部107、ACL抽出部108、差分抽出部109、影響判定部110及び出力部111の機能を実現するプログラムを格納する。
CPU91は、記憶装置96に格納された各種プログラムを読み出してメモリ92に展開して実行する。これにより、CPU91は、図1に例示した、設定変更手順入力部101、通信制御部102、設定変更後テーブル推定部103、設定変更後コンフィグ生成部104、コンフィグ情報収集部105及びテーブル情報収集部106の機能を実現する。また、CPU91は、図1に例示したネットワークモデル化部107、ACL抽出部108、差分抽出部109、影響判定部110及び出力部111の機能を実現する。
なお、ここでは、図1に例示した各部の機能を実現するためのプログラムを記憶装置96に格納し、それをCPU91が読み出して実行するとしたが、他の構成をとることも可能である。例えば、これらのプログラムを外部記憶媒体98に格納し、外部記憶媒体98から読み取り装置94により読み出されたプログラムをCPU91が取得した実行することで、各部の機能を実現しても良い。