以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態としての網検証装置1の機能ブロック構成を図1に示す。図1において、網検証装置1は、検証対象ネットワーク情報取得部11と、バックトレース関数生成部12と、物理リンクパス取得部13と、バックトレース関数適用部14と、検証結果出力部15とを含む。
また、網検証装置1は、検証対象ネットワーク900と通信可能に接続されている。検証対象ネットワーク900は、1つ以上のスイッチ装置を含む。以下、スイッチ装置を、単にスイッチとも記載する。各スイッチは、1つ以上の転送規則を有している。転送規則は、自装置の任意のポートに入力されたパケットに応じて該パケットに対する処理やその出力ポート等を定めた規則である。網検証装置1は、このような検証対象ネットワーク900を検証対象とする。
ここで、網検証装置1のハードウェア構成の一例を図2に示す。図2において、網検証装置1は、CPU(Central Processing Unit)1001と、RAM(Random Access Memory)1002と、ROM(Read Only Memory)1003と、ハードディスク等の記憶装置1004と、ネットワークインタフェース1005と、表示装置1006とによって構成される。この場合、検証対象ネットワーク情報取得部11は、次のように構成される。すなわち、この機能ブロックは、ネットワークインタフェース1005と、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001とによって構成される。また、バックトレース関数生成部12、物理リンクパス取得部13およびバックトレース関数適用部14は、次のように構成される。すなわち、これらの機能ブロックは、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。また、検証結果出力部15は、表示装置1006と、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001とによって構成される。なお、網検証装置1およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
検証対象ネットワーク情報取得部11は、検証対象ネットワーク900内の各スイッチにおけるパケットの転送規則および検証対象ネットワーク900の物理網トポロジ情報を取得する。例えば、検証対象ネットワーク情報取得部11は、ネットワークインタフェース1005を介して検証対象ネットワーク900にアクセスすることにより、その物理網トポロジ情報を取得可能である。また、検証対象ネットワーク情報取得部11は、ネットワークインタフェース1005を介して検証対象ネットワーク900内の各スイッチにアクセスすることにより、その転送規則を取得可能である。
バックトレース関数生成部12は、スイッチの転送規則に基づいて、バックトレース関数を生成する。バックトレース関数は、そのスイッチが有するポートから出力されるパケットパターンを基に該スイッチの対応するポートに入力されるパケットパターンを逆算する関数である。ここで、パケットパターンとは、パケットが有するヘッダのパターンをいう。また、パケットが出力されるポートを、以降、出力ポートとも記載する。また、出力ポートから出力されるパケットのパケットパターンを、単に出力ポートでのパケットパターンとも記載する。また、パケットが入力されるポートを、以降、入力ポートとも記載する。また、入力ポートに入力されるパケットのパケットパターンを、単に入力ポートでのパケットパターンとも記載する。
物理リンクパス取得部13は、物理網トポロジ情報および転送規則に基づいて、検証対象ネットワーク900の流入ポートから流出ポートまでをつなぐポートの列を表す物理リンクパスを取得する。ここで、流入ポートは、検証対象ネットワーク900に外部からのパケットが流入するスイッチのポートである。流出ポートは、検証対象ネットワーク900から外部へのパケットが流出するスイッチのポートである。物理リンクパス取得部13は、取得した物理リンクパスのリストを、RAM1002または記憶装置1004に記憶させてもよい。
バックトレース関数適用部14は、パケットパターンキャッシュを利用しながら、物理リンクパスの流出ポートから流入ポートに向けてバックトレース関数を順次適用することにより、流出ポートに到達するパケットの流入ポートでのパケットパターンを算出する。ここで、パケットパターンキャッシュは、物理リンクパス上の途中ポートから流出ポートに到達するパケットの、その途中ポートにおけるパケットパターンを記憶する格納部である。例えば、パケットパターンキャッシュは、記憶装置1004またはRAM1002により構成可能である。
このとき、バックトレース関数適用部14は、物理リンクパスの流出ポートから流出するパケットパターンとして所定の値を設定してもよい。なお、所定の値とは、想定される全てのパケットパターンを表す値であってもよい。例えば、バックトレース関数適用部14は、所定の値を設定したパケットパターンに対して、流出ポートを有するスイッチにおいて流出ポートからパケットを出力し得る転送規則に基づくバックトレース関数を適用する。これにより、バックトレース関数適用部14は、流出ポートを有するスイッチにおける入力ポートでのパケットパターンを逆算することができる。算出されたパケットパターンは、その物理リンクパスにおいてその入力ポートに接続される1つ前のスイッチの出力ポートから出力されるパケットパターンでもある。そこで、バックトレース関数適用部14は、算出したパケットパターンを、前述の1つ前のスイッチの出力ポートから流出ポートに到達するパケットの該出力ポートでのパケットパターンとして、パケットパターンキャッシュに記憶させてもよい。そして、バックトレース関数適用部14は、1つ前のスイッチの出力ポートでのパケットパターンに対して、1つ前のスイッチにおいてその出力ポートからパケットを出力し得る転送規則に基づくバックトレース関数を適用する。さらに、バックトレース関数適用部14は、バックトレース関数の適用によって算出されたパケットパターンを、パケットパターンキャッシュに記憶させることを、流出ポートから流入ポートにかけてのスイッチ毎に繰り返す。これにより、バックトレース関数適用部14は、ある物理リンクパスの流入ポートでのパケットパターンを算出可能である。
また、その算出において、物理リンクパスの途中ポートについて流出ポートに到達する算出済みのパケットパターンが、パケットパターンキャッシュに記憶されている場合、バックトレース関数適用部14は、次のように動作する。すなわち、バックトレース関数適用部14は、その算出済みのパケットパターンを、物理リンクパスの流入パケットパターンを求める際に、再利用する。この場合、バックトレース関数適用部14は、流出ポートからの逆算を省略し、途中ポートについて算出済みのパケットパターンを用いて、途中ポートから流入ポートに向けてバックトレース関数を順次適用すればよい。また、この場合も、バックトレース関数適用部14は、バックトレース関数を順次適用する処理過程で、パケットパターンキャッシュに記憶されていない途中ポートのパケットパターンキャッシュを算出した場合は、パケットパターンキャッシュに記憶させればよい。
検証結果出力部15は、バックトレース関数適用部14による処理結果を出力する。具体的には、例えば、検証結果出力部15は、流入ポートでのパケットパターンと、流出ポートとの組み合わせを表す情報を出力してもよい。なお、バックトレース関数適用部14は、表示装置1006等の出力装置に処理結果を出力してもよい。また、検証結果出力部15は、記憶装置1004に処理結果をファイル等として出力してもよい。また、検証結果出力部15は、ネットワークインタフェース1005を介して接続された他の装置(図示せず)に対して、処理結果を出力してもよい。
以上のように構成された網検証装置1の動作について、図3を参照して説明する。
図3において、まず、検証対象ネットワーク情報取得部11は、検証対象ネットワーク900の物理網トポロジ情報および各スイッチの転送規則を取得する(ステップA1)。
次に、バックトレース関数生成部12は、ステップA1で取得された各スイッチの転送規則に基づいて、バックトレース関数を生成する(ステップA2)。前述したように、バックトレース関数は、各スイッチの有するポートから出力されるパケットパターンから、該スイッチの対応するポートに入力されるパケットパターンを逆算する関数である。
次に、物理リンクパス取得部13は、ステップA1で取得された物理網トポロジ情報および転送規則に基づいて、検証対象ネットワーク900の流入ポートから流出ポートまでをつなぐポートの列を表す物理リンクパスを取得する(ステップA3)。
次に、バックトレース関数適用部14は、各物理リンクパスについて、パケットパターンキャッシュを利用しながら、流出ポートから流入ポートに向けてバックトレース関数を順次適用する。これにより、バックトレース関数適用部14は、流出ポートに到達するパケットの流入ポートでのパケットパターンを算出する。
具体的には、バックトレース関数適用部14は、物理リンクパス上の途中ポートからのパケットパターンがパケットパターンキャッシュに記憶されていない場合は(ステップA4でNo)、次のように動作する。この場合、バックトレース関数適用部14は、流出ポートから流入ポートに向けて、スイッチの出力ポートからのパケットパターンに対して、対応する転送規則に基づくバックトレース関数を適用する処理を繰り返す。すなわち、バックトレース関数適用部14は、そのスイッチの入力ポートでのパケットパターンを逆算する処理を流入ポートに向けて繰り返す。なお、このとき、バックトレース関数適用部14は、流出ポートのパケットパターンとして、前述のように所定の値を適用してもよい。また、このとき、バックトレース関数適用部14は、バックトレース関数を順次適用する過程で算出した各パケットパターンを、パケットパターンキャッシュに記憶しておく(ステップA5)。詳細には、バックトレース関数の適用過程で算出された各パケットパターンは、そのパケットパターンが出力されるポートについて流出ポートに到達するパケットパターンとして、パケットパターンキャッシュに記憶される。
また、バックトレース関数適用部14は、物理リンクパス上の途中ポートからのパケットパターンがパケットパターンキャッシュに記憶されている場合は(ステップA4でYes)、次のように動作する。この場合、バックトレース関数適用部14は、途中ポートから流入ポートに向けて、スイッチの出力ポートからのパケットパターンに対して、対応する転送規則に基づくバックトレース関数を適用する処理を繰り返す。すなわち、バックトレース関数適用部14は、そのスイッチの入力ポートでのパケットパターンを逆算する処理を流入ポートにかけて繰り返す。また、このときも、バックトレース関数適用部14は、バックトレース関数を順次適用する過程で算出した各パケットパターンを、パケットパターンキャッシュに記憶しておく(ステップA6)。この場合も、バックトレース関数の適用過程で算出された各パケットパターンは、そのパケットパターンが出力されるポートについて流出ポートに到達するパケットパターンとして、パケットパターンキャッシュに記憶される。
ステップA5またはA6の処理を各物理リンクパスについて完了すると、検証結果出力部15は、バックトレース関数適用部14による処理結果を出力する(ステップA7)。具体的には、前述のように、検証結果出力部15は、流入ポートでのパケットパターンと、流出ポートとの組み合わせを表す情報を出力してもよい。
以上で、網検証装置1は、動作を終了する。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としての網検証装置は、網に対する流入パケットパターンを計算する処理時間をより短くすることができる。
その理由について説明する。本実施の形態では、検証対象ネットワーク情報取得部が、検証対象ネットワークの物理網トポロジ情報および各スイッチの転送規則を取得する。そして、バックトレース関数生成部が、転送規則に基づいて、スイッチの有するポートから出力されるパケットパターンから該スイッチの対応するポートに入力されるパケットパターンを逆算するバックトレース関数を生成するからである。また、物理リンクパス取得部が、物理網トポロジ情報および転送規則に基づいて、検証対象ネットワークにおける流入ポートから流出ポートまでの物理リンクパスを取得する。そして、バックトレース関数適用部が、パケットパターンキャッシュを利用しながら、流出ポートから流入ポートに向けてバックトレース関数を順次適用する。このとき、バックトレース関数適用部は、バックトレース関数の適用過程で算出した各パケットパターンを、そのパケットパターンが出力される途中ポートから流出ポートに到達するパケットパターンとして、パケットパターンキャッシュに記憶する。これにより、バックトレース関数適用部が、流出ポートに到達するパケットの流入ポートでのパケットパターンを算出するからである。
このように、本実施の形態は、物理リンクパスの流入パケットパターンを算出する際に、その物理リンクパスの途中ポートからのパケットパターンがパケットパターンキャッシュに記憶されていれば、算出済みのパケットパターンを利用する。つまり、本実施の形態は、流出ポートから該途中ポートまでのバックトレース関数の適用を省略することができる。その結果、本実施の形態は、一回計算したバックトレース関数の計算結果を再利用することで、網内におけるバックトレース関数の計算を省力化することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第2の実施の形態としての網検証装置2の構成を図4に示す。図4において、網検証装置2は、本発明の第1の実施の形態としての網検証装置1に対して、バックトレース関数生成部12に替えてバックトレース関数生成部22を備える点が異なる。また、網検証装置2は、本発明の第1の実施の形態としての網検証装置1に対して、物理リンクパス取得部13に替えて物理リンクパス取得部23を備える点も異なる。また、網検証装置2は、本発明の第1の実施の形態としての網検証装置1に対して、バックトレース関数適用部14に替えてバックトレース関数適用部24を備える点も異なる。ここで、網検証装置2およびその各機能ブロックは、図2を参照して説明した本発明の第1の実施の形態と同一のハードウェア要素によって構成可能である。ただし、網検証装置2およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
また、本実施の形態では、検証対象ネットワーク情報取得部11によって、転送規則として、入力ポート、マッチングパターン、アクションおよび出力ポートをそれぞれ表す情報を含むフローテーブルが、各スイッチから取得されるものとする。ここで、マッチングパターンは、入力ポートに入力されるパケットパターンが適合する条件を表す。また、アクションは、マッチングパターンに適合した場合の該パケットパターンの処理内容を表す。また、出力ポートは、アクションに基づく処理内容が施されたパケットの出力先のポートを表す。
バックトレース関数生成部22は、バックトレース関数を生成する。ここでは、バックトレース関数は、スイッチの出力ポートのパケットパターンを入力として、該当するフローエントリのマッチングパターンおよびアクションに基づいて入力ポートでのパケットパターンを出力する関数である。また、バックトレース関数生成部22は、後述のバックトレース関数適用部24による処理過程で動作するよう構成される。
物理リンクパス取得部23は、本発明の第1の実施の形態における物理リンクパス取得部13と同様に、物理網トポロジ情報および転送規則に基づいて、物理リンクパスを取得する。ただし、物理リンクパス取得部23は、その機能の一部が、後述のバックトレース関数適用部24による処理過程で動作するよう構成される。
バックトレース関数適用部24は、パケットパターン算出処理を再帰的に実行する。具体的には、パケットパターン算出処理において、バックトレース関数適用部24は、スイッチにおける入力ポートを表す情報を入力とする。そして、バックトレース関数適用部24は、該スイッチにおいて該入力ポートに対応する出力ポートから流出ポートに到達するパケットの該出力ポートでのパケットパターンに対して、バックトレース関数を適用する。これにより、バックトレース関数適用部24は、該入力ポートでのパケットパターンを表す情報を算出し、出力する。
また、バックトレース関数適用部24は、パケットパターン算出処理を実行する際に、入力ポートに対応する出力ポートでのパケットパターンがパケットパターンキャッシュに記憶されていれば、該パケットパターンを再利用する。すなわち、この場合、バックトレース関数適用部24は、パケットパターンキャッシュに記憶されているパケットパターンに対して、バックトレース関数を適用し、出力する。また、バックトレース関数適用部24は、入力ポートに対応する出力ポートでのパケットパターンがパケットパターンキャッシュに記憶されていなければ、次の処理を行うよう構成される。すなわち、この場合、バックトレース関数適用部24は、その出力ポートに対向する次のスイッチにおける入力ポートを表す情報を入力として、パケットパターン算出処理を再帰的に実行する。そして、バックトレース関数適用部24は、再帰的に実行したパケットパターン算出処理から得られたパケットパターンを、出力ポートでのパケットパターンとして、パケットパターンキャッシュに記憶させる。また、バックトレース関数適用部24は、再帰的に実行したパケットパターン算出処理から得られたパケットパターンに対して、バックトレース関数を適用し、出力する。
また、バックトレース関数適用部24は、流出ポートから出力されるパケットパターンとして、所定の値を設定する。所定の値とは、例えば、パケットヘッダを構成する各属性の値がその値域全体をとりうることを表すパケットパターンであってもよい。
また、バックトレース関数適用部24は、パケットパターン算出処理内で、バックトレース関数生成部22を用いてバックトレース関数を生成してもよい。
また、バックトレース関数適用部24は、パケットパターン算出処理内で、物理リンクパス取得部23を用いて物理リンクパスを探索しながら、パケットパターン算出処理を再帰的に実行してもよい。
また、バックトレース関数適用部24は、パケットパターン算出処理の出力として、入力ポートのパケットパターンと、探索した物理リンクパスの流出ポートとの組の集合を出力してもよい。また、この場合、バックトレース関数適用部24は、入力ポートのパケットパターンと流出ポートとの組を、入力ポートの1つ手前のスイッチの出力ポートに対応付けて、パケットパターンキャッシュに記憶させればよい。
以上のように構成された網検証装置2の動作について、図5〜図6を参照して詳細に説明する。
まず、網検証装置2の動作の概略を図5に示す。
図5において、まず、検証対象ネットワーク情報取得部11は、本発明の第1の実施の形態と同様にステップA1を実行し、検証対象ネットワーク900から物理網トポロジ情報および転送規則を得る。ただし、ここでは、転送規則として、上述のフローテーブルが取得される。
次に、物理リンクパス取得部23は、物理網トポロジ情報に基づいて、検証対象ネットワーク900において、物理リンクパスの先頭のポート(流入ポート)となり得るポートpの集合を取得する(ステップB2)。
次に、バックトレース関数適用部24は、流入ポートp毎に、ステップB3〜B4の処理を繰り返す。
ここでは、まず、バックトレース関数適用部24は、流入ポートpを入力としてパケットパターン算出処理を呼び出すことにより、流入ポートpにおけるパケットパターンπと、そのときの流出ポートpgとの組の集合を得る(ステップB3)。以降、流入ポートpにおけるパケットパターンπと、そのときの流出ポートpgとの組を、π@pg、または、(π, pg)とも記載する。
次に、検証結果出力部15は、検証結果として、流入ポートpにおけるパケットパターンπおよび流出ポートpgの組の集合を表す情報を出力する(ステップB4)。
ステップB3〜B4の処理を、各流入ポートについて完了すると、網検証装置2は、動作を終了する。
次に、ステップB3におけるパケットパターン算出処理の詳細を図6に示す。ここで、前述のように、パケットパターン算出処理の入力は、入力ポートpである。出力は、流出ポートpgと、ポートpから流出ポートpgに到達するパケットのポートpでのパケットパターンπとの組 (π, pg)の集合δである。
ここでは、まず、バックトレース関数適用部24は、戻り値用の作業変数δに空集合を代入する(ステップC1)。
次に、バックトレース関数適用部24は、物理リンクパス取得部23を用いて、ポートpを入力ポートとするフローエントリの集合Eを得る(ステップC2)。
次に、バックトレース関数適用部24は、Eの要素であるフローエントリ e∈Eごとに、以下のステップC3からC13までの処理を繰り返し実行する。
すなわち、ここでは、まず、バックトレース関数適用部24は、バックトレース関数生成部22を用いて、フローエントリeに基づくバックトレース関数ζeを生成する(ステップC3)。バックトレース関数ζeの詳細については後述する。
次に、バックトレース関数適用部24は、物理リンクパス取得部23を用いて、フローエントリeの出力ポートp'を得る(ステップC4)。
次に、バックトレース関数適用部24は、出力ポートp'に関して、それに対応するパケットパターンおよび流出ポートの組(π’、pg)が、パケットパターンキャッシュに存在するか否かを確認し、あれば取得する(ステップC5)。
ここで、パケットパターンキャッシュ内に該当するデータがない場合、バックトレース関数適用部24は、前述の出力ポートp'が終端スイッチポート(流出ポート)か否かを調べる(ステップC6)。
ここで、出力ポートp'が終端スイッチポートである場合、バックトレース関数適用部24は、出力ポートp'からのパケットパターンとして、全属性の値がTであるパケットパターンπTを設定する(ステップC7)。
次に、バックトレース関数適用部24は、出力ポートp'に対応付けて、パケットパターンπTおよび流出ポートp'の組を、パケットパターンキャッシュに記憶させる(ステップC8)。
次に、バックトレース関数適用部24は、出力ポートp'からのパケットパターンπTに対してバックトレース関数ζeを適用することにより、入力ポートpのパケットパターンζe(πT)を得る。そして、バックトレース関数適用部24は、ζe(πT)および流出ポートp’の組を、戻り値δに追加する(ステップC9)。
そして、バックトレース関数適用部24は、次のフローエントリeについて、ステップC3からの処理を繰り返す。
一方、ステップC6において、出力ポートp'が終端スイッチポート(流出ポート)でない場合、バックトレース関数適用部24は、物理リンクパス取得部23を用いて、出力ポートp'に対して物理リンクの対向であるポートp''を求める(ステップC10)。
次に、バックトレース関数適用部24は、ポートp''を入力としてパケットパターン算出処理を呼び出す。これにより、バックトレース関数適用部24は、ポートp''を入力ポートとした場合の、流出ポートpgおよびp''に流入するパケットパターンπ'の組 (π', pg)の集合を得る(ステップC11)。
次に、バックトレース関数適用部24は、出力ポートp'をキーとして、ステップC11で得られた(π',pg)の集合を、パケットパターンキャッシュに記憶させる(ステップC12)。
次に、バックトレース関数適用部24は、出力ポートp'からのパケットパターンπ'に対してバックトレース関数ζeを適用することにより、入力ポートpのパケットパターンζe(π')を得る。そして、バックトレース関数適用部24は、ζe(π')および流出ポートpgの組を、戻り値δに追加する(ステップC13)。
そして、バックトレース関数適用部24は、次のフローエントリeについて、ステップC3からの処理を繰り返す。
また、ステップC5において、パケットパターンキャッシュ内に該当するデータがある場合、バックトレース関数適用部24は、パケットパターンキャッシュ内の該当するデータ(π',pg)を用いて、ステップC13の処理を実行する。
そして、バックトレース関数適用部24は、次のフローエントリeについて、ステップC3からの処理を繰り返す。
ステップC2で得られたフローエントリの集合Eに属する各フローエントリeについてステップC3〜C13の処理を完了すると、バックトレース関数適用部24は、値δを返して、このパケットパターン算出処理を呼び出した処理に戻る。
以上で、パケットパターン算出処理の詳細な説明を終了する。
なお、ステップC3において生成されるバックトレース関数ζeについて説明する。バックトレース関数適用部24は、フローエントリeに基づいて、例えば、以下のように定義されるバックトレース関数ζeを生成してもよい。
前述のように、フローエントリeは、入力ポート、マッチングパターン、アクション、出力ポートをそれぞれ表す4つの情報を含んで構成されている。
ここで、マッチングパターンは、属性値Am_1, ・・・, Am_nで構成されるとする。また、アクションは、属性値Aa_1, ・・・, Aa_nで構成されるとする。なお、マッチングパターンの属性値 Am_iは、値すなわち点集合{v}、その値域の全集合T、IPサブネットなどの値域の部分集合r、空集合⊥、または、属性値A'm_iから属性値A''m_iを引いた差集合 (A'm_i − A''m_i)を取り得る。アクションの属性値Aa_iは、値v、または、その値域の全集合Tをとる。
また、パケットパターンπは、属性値Aπ_1, ・・・, Aπ_nで構成されるとする。パケットパターンの属性値Aπ_iは、値v、その値域の全集合T、IPサブネットなどの値域の部分集合r、空集合⊥、属性値A'm_iから属性値A''m_iを引いた差集合(A'm_i−A''m_i)、または、属性値A'm_iと属性値A''m_iの和集合(A'm_i∪A''m_i)をとる。
このとき、フローエントリeに基づくバックトレース関数ζeは、次式(1)のように定義される。
ζe((Aπ_1, ・・・, Aπ_n)) := (μ(Am_1, α(Aa_1, Aπ_1)), ・・・, μ(Am_n, α(Aa_n, Aπ_n)))・・・(1)
ここで、式(1)における関数α: (アクションの属性値)×(パケットヘッダの属性値のパターン)→(パケットパターン)は、以下の表1の通り定義される。
また、式(1)における関数μ:(マッチングルールの属性値)×(パケットヘッダの属性値のパターン)→(パケットパターン)は、表2の通り定義される。
このようなバックトレース関数の定義により、流入ポートから流出ポートへのフォワードトレース経路とは独立して、流出ポートからのバックトレース経路のみに依存して、各出力ポートでのパケットパターンが定まる。その結果、パケットパターンのキャッシュデータの再利用が可能となっている。
以上で、ステップC3で生成されるバックトレース関数の定義の一例についての説明を終了する。
次に、具体例を用いて本発明の第2の実施の形態の動作を説明する。
図7に、具体例で用いる検証対象ネットワーク901を示す。検証対象ネットワーク901は、3台のスイッチsw4、sw5、sw6で構成されている。また、sw4は、ポートp1,p2,p4を有し、sw5は、ポートp1,p2,p3を有し、sw6は、ポートp1,p2,p3を有する。以下、スイッチswiのポートpiを、swi_piとも記載する。検証対象ネットワーク901において、端点となるポートは、sw5_p2、sw5_p3、sw6_p2、sw6_p3、sw4_p4である。また、ポートsw4_p4は、検証対象ネットワーク901外のスイッチsw2に接続されている。また、ポートsw5_p2、sw5_p3、sw6_p2、sw6_p3は、それぞれ、検証対象ネットワーク901外のレイヤ2スイッチ(L2SW)に接続されている。なお、各レイヤ2スイッチは、各ポートに図示のVLAN ID(Virtual Local Area Network ID)が設定されている。また、各レイヤ2スイッチは、図示のMACアドレス(Media Access Control address)およびIPアドレス(Internet Protocol address)を有する装置に接続されている。なお、図7において、mac=miは、その装置のMACアドレスがmiであることを表し、IP=aiは、その装置に設定されたIPアドレスがaiであることを表している。また、スイッチsw4のポートp1のMACアドレスはm9であり、スイッチsw4のポートp2のMACアドレスはm10である。
また、この検証対象ネットワーク901でのフローエントリの一部は、図8のように定義されているとする。図8において、各行は、スイッチsw4〜sw6が有するフローエントリを表す。また、→の左側は、入力ポートおよびマッチングパターンを表し、右側は、アクションおよび出力ポートを表している。例えば、スイッチsw6の1行目のフローエントリは、sw6のポートp1から入力されたパケットの宛先MACアドレス (mac_da)が m8 で、VLAN IDを表すvlan属性が3ならば、sw6のポートp3にパケットを転送することを示す。また、スイッチsw4の1行目のフローエントリは、sw4のポートp1から入力されたパケットの宛先IPアドレス (ip_da)が a8ならば、宛先MACアドレスをm8に書換え、sw4のポートp2にパケットを転送することを示す。
このような検証対象ネットワーク901において、ここでは、バックトレース関数適用部24は、まず、sw5_p2を流入ポートとする検証を行うとする。そこで、バックトレース関数適用部24は、sw5_p2を入力としてパケットパターン算出処理を実行する(ステップB3)。なお、以降、swi_piを入力とするパケットパターン算出処理を、パケットパターン算出処理(swi_pi)とも記載する。
このとき、パケットパターンキャッシュには、sw5_p2を入力ポートとするフローエントリの出力ポートsw5_p1についてパケットパターンが記憶されていないとする(ステップC5でNo)。また、出力ポートsw5_p1は終端点ポートではない(ステップC6でNo)。そこで、バックトレース関数適用部24は、パケットパターン算出処理(sw5_p2)中で、出力ポートsw5_p1に対向するsw4_p1を入力としてパケットパターン算出処理(sw4_p1)を再帰的に呼び出す(ステップC11)。
このとき、パケットパターンキャッシュには、sw4_p1を入力ポートとするフローエントリの出力ポートsw4_p2についてパケットパターンが記憶されていないとする(ステップC5でNo)。また、出力ポートsw4_p2は終端点ポートではない(ステップC6でNo)。そこで、バックトレース関数適用部24は、パケットパターン算出処理(sw4_p1)中で、sw4_p2に対向するsw6_p1を入力としてパケットパターン算出処理(sw6_p1)を再帰的に呼び出す(ステップC11)。
ここで、バックトレース関数適用部24は、パケットパターン算出処理(sw6_p1)中で、そのフローエントリeの1つに関してその出力ポートp'としてsw6_p3を得る(ステップC4)。ここで、sw6_p3についてのパケットパターンはパケットパターンキャッシュに記憶されていないが(ステップC5でNo)、sw6_p3は、終端点ポート(流出ポート)である(ステップC6でYes)。そこで、バックトレース関数適用部24は、パケットパターンπTと流出ポートsw6_p3の組πT@sw6_p3を、sw6_p3に対応付けてパケットパターンキャッシュに記憶させる(ステップC7〜C8)。
ここでは、パケットパターンが、mac_da, vlan,およびip_daの3つの属性を持つと仮定し、πT =(mac_da=T, vlan=T, ip_da=T)と記載する。なお、本来パケットパターンはさらに多種の属性を持つことがあるが、ここでは簡単のため、これら3つの属性を有するものと仮定している。前述のように、Tは、属性がとり得る値域の全集合である。この場合、パケットパターンキャッシュには、図9に示すデータAが記憶されたことになる。
そして、バックトレース関数適用部24は、πT@sw6_p3に対して、このときのフローエントリeに関するバックトレース関数ζeを適用し、ζe(πT)@sw6_p3を求める。この計算結果は以下の通りとする。
{(mac_da=m8, vlan=3, ip_da=T)@sw6_p3,
(mac_da=m7, vlan=2, ip_da=T)@sw6_p3}
そして、バックトレース関数適用部24は、上記の計算結果を、パケットパターン算出処理(sw6_p1)の戻り値δに追加する(ステップC9)。
次に、バックトレース関数適用部24は、パケットパターン算出処理(sw6_p1)中で、次のフローエントリeに関してその出力ポートp'としてsw6_p2を得る(ステップC4)。ここで、sw6_p2についてのパケットパターンはパケットパターンキャッシュに記憶されていないが(ステップC5でNo)、sw6_p2は、終端点ポート(流出ポート)である(ステップC6でYes)。そこで、バックトレース関数適用部24は、πT@sw6_p2を、sw6_p2に対応付けてパケットパターンキャッシュに記憶させる(ステップC7〜C8)。これにより、パケットパターンキャッシュには、図9に示すデータBが記憶されたことになる。
そして、バックトレース関数適用部24は、πT@sw6_p2に対して、このときのフローエントリeに関するバックトレース関数ζeを適用し、ζe(πT)@sw6_p2を求める。この計算結果は以下の通りとする。
{(mac_da=m6, vlan=3, ip_da=T)@sw6_p2,
(mac_da=m5, vlan=2, ip_da=T)@sw6_p2}
そして、バックトレース関数適用部24は、上記の計算結果を、パケットパターン算出処理(sw6_p1)の戻り値δに追加する(ステップC9)。
パケットパターン算出処理(sw6_p1)において、sw6_p1を入力ポートとする他のフローエントリがないものとする。したがって、パケットパターン算出処理(sw6_p1)の戻り値δは、以下の通りとなる。
{(mac_da=m8, vlan=3, ip_da=T)@sw6_p3,
(mac_da=m7, vlan=2, ip_da=T)@sw6_p3,
(mac_da=m6, vlan=3, ip_da=T)@sw6_p2,
(mac_da=m5, vlan=2, ip_da=T)@sw6_p2}
ここで、パケットパターン算出処理(sw6_p1)の戻り値は、パケットパターン算出処理(sw4_p1)の処理におけるステップC11の結果である。そこで、バックトレース関数適用部24は、上述の戻り値δを、sw4_p2 をキーとして、パケットキャッシュパターンに記憶させる(ステップC12)。これにより、パケットパターンキャッシュには、図9に示すデータCが記憶されたことになる。
次に、バックトレース関数適用部24は、パケットパターン算出処理(sw6_p1)の戻り値に対して、このときのフローエントリeに関するバックトレース関数ζeを適用する。この計算結果は以下の通りとする。
{(mac_da=T, vlan=3, ip_da=a8)@sw6_p3,
(mac_da=T, vlan=2, ip_da=a7)@sw6_p3,
(mac_da=T, vlan=3, ip_da=a6)@sw6_p2,
(mac_da=T, vlan=2, ip_da=a5)}@sw6_p2}
そして、バックトレース関数適用部24は、この値を、パケットパターン算出処理(sw4_p1)の戻り値δに加える(ステップC13)。
パケットパターン算出処理(sw4_p1)において、sw4_p1を入力ポートとする他のフローエントリがないとする。したがって、上記のδの値が、パケットパターン算出処理(sw4_p1)の戻り値となる。
ここで、パケットパターン算出処理(sw4_p1)の戻り値は、パケットパターン算出処理(sw5_p2)の処理におけるステップC11の結果である。そこで、バックトレース関数適用部24は、上述の戻り値δを、sw5_p1 をキーとして、パケットキャッシュパターンに記憶させる(ステップC12)。ここで、パケットパターンキャッシュには、図9に示すデータDが記憶されたことになる。
次に、バックトレース関数適用部24は、パケットパターン算出処理(sw4_p1)の戻り値に対して、このときのフローエントリeに関するバックトレース関数ζeを適用する。この計算結果は以下の通りとする。
{{(mac_da=m9, vlan=3, ip_da=a8)@sw6_p3,
(mac_da=m9, vlan=2, ip_da=a7)@sw6_p3,
(mac_da=m9, vlan=3, ip_da=a6)@sw6_p2,
(mac_da=m9, vlan=2, ip_da=a5)@sw6_p2}
そして、バックトレース関数適用部24は、この値を、パケットパターン算出処理(sw5_p2)の戻り値δに加える(ステップC13)。
パケットパターン算出処理(sw5_p2)において、sw5_p2を入力ポートとする他のフローエントリがないとする。したがって、上記のδの値が、パケットパターン算出処理(sw5_p2)の戻り値となる。
このようにして、バックトレース関数適用部24は、流入ポートsw5_p2での流入パケットパターンおよび流出ポートの組を求めることができた。
次に、検証結果表示部25は、上記流入ポートsw5_p2での流入パケットパターンおよび流出ポートの組に基づいて、以下のように検証結果(1)〜(3)を出力する。
検証結果(1)
流入ポートsw5_p2に、条件Aを満たすパケットが流入した場合、必ずsw6_p3からパケットが流出する。
ここで、条件Aとは、
宛先MACアドレス(mac_da)がm9、かつ、VLAN ID(vlan)が3、かつ、IPアドレス(ip_da)がa8、
または、
宛先MACアドレス(mac_da)がm9、かつ、VLAN ID(vlan)が2、かつ、IPアドレス(ip_da) がa7、という条件である。
検証結果(2)
流入ポートsw5_p2に、条件Bを満たすパケットが流入した場合、必ずsw6_p2からパケットが流出する。
ここで、条件Bとは、
宛先MACアドレス(mac_da)がm9、かつ、VLAN ID(vlan)が3、かつ、IPアドレス(ip_da)がa6、
または、
宛先MACアドレス(mac_da)がm9かつ、VLAN ID(vlan)が2、かつ、IPアドレス(ip_da)がa5、という条件である。
検証結果(3)
条件Aを満たさないsw5_p2からの流入パケットは、sw6_p3に到着しない。また、条件Bを満たさないsw5_p2からの流入パケットは、sw6_p2 には到着しない。
次に、同様にして、バックトレース関数適用部24は、sw5_p3を流入ポートとする検証を行うとする。ここでは、まず、バックトレース関数適用部24は、sw5_p3を入力としてパケットパターン算出処理(sw5_p3)を実行する。このとき、sw5_p3を入力ポートとするフローエントリの出力ポートはsw5_p1である(ステップC4)。ここで、パケットパターンキャッシュには、図9に示したように、出力ポートsw5_p1をキーとするパケットパターン(データD)が記憶されている(ステップC5でYes)。
そこで、バックトレース関数適用部24は、出力ポートsw5_p1をキーとするパケットパターンをパケットパターンキャッシュから取得し、これに対して、このときのフローエントリeに関するバックトレース関数ζeを適用する。これにより、流入ポートsw5_p3での流入パケットパターンおよび流出ポートの組が算出される。
このようにして、バックトレース関数適用部24は、流入ポートsw5_p3での流入パケットパターンおよび流出ポートの組を、sw5_p1をキーとするパケットパターンキャッシュを再利用することにより求めることができた。パケットパターンキャッシュを再利用したことにより、バックトレース関数適用部24は、sw4_p1およびsw6_p1をそれぞれ入力とするパケットパターン算出処理を再帰的に実行することなく、sw5_p3での流入パケットパターンが求めることができる。これにより、バックトレース関数適用部24は、高速な検証を可能としている。
このことを、図10および図11を用いて説明する。図10に示すように、網検証装置2は、sw5_p2での流入パケットパターンを求めるため、実線の矢印に沿った順でパケットパターン算出処理を再帰的に実行した。また、その過程で、網検証装置2は、流出ポートから流入ポートに向けて、各出力ポートでのパケットパターンA、B、C、Dを順次パケットパターンキャッシュに登録した。また、図11に示すように、網検証装置2は、sw5_p3での流入パケットパターンを求めるため、破線の矢印が示すパケットパターン算出処理を実行した。その処理中で、網検証装置2は、パケットパターンDを再利用することにより、パケットパターン算出処理を再帰的に実行することなく、sw5_p3での流入パケットパターンが求めることができた。
一方、非特許文献1に記載された関連技術を用いる場合、前述のとおり、途中計算を再利用できない。このことを、図12を用いて説明する。図12において、非特許文献1に記載された関連技術は、実線の矢印に示すように、ポートsw5_p2からの全経路を探索した上で、流出ポートからの逆算を行うことにより、ポートsw5_p2での流入パケットパターンを求める。このとき、開始点が違えば流出ポートでのパケットパターンが異なり、逆算される途中ポートでのパケットパターンも異なるため、開始点の異なる経路間では、途中ポートでのパケットパターンを再利用することができない。そのため、この関連技術は、ポートsw5_p2での流入パケットパターンを求めた後にsw5_p3での流入パケットパターンを求める場合であっても、破線の矢印に示すように、ポートsw5_p3からの全経路を探索した上で、流出ポートからの逆算を行う必要がある。したがって、非特許文献1に記載された関連技術では、本実施の形態に比べて検証時間が延びることになる。
ここで、非特許文献1に記載された技術を実装した場合の検証時間と、本実施の形態を実装した場合の検証時間とを実機評価した結果を図13に示す。図13において、横軸は、検証対象ネットワーク901内のスイッチ群が有するフローエントリ数の合計を表す。また、縦軸は、検証に要する時間を表す。図13によれば、約40,000フローエントリで、非特許文献1に記載された関連技術では、検証に8,000秒近く要しているが、本実施の形態では、検証に要する時間は200秒程度であり、大幅に検証時間を短縮している。
以上で、本発明の第2の実施の形態の動作の具体的な説明を終了する。
次に、本発明の第2の実施の形態の効果について述べる。
本発明の第2の実施の形態としての網検証装置は、網に対する流入パケットパターンを計算する処理時間をさらに短くすることができる。
その理由は、バックトレース関数適用部が、スイッチの出力ポートでのパケットパターンに対してバックトレース関数を適用することにより、入力ポートでのパケットパターンを出力するパケットパターン算出処理を再帰的に実行するからである。また、この際に、バックトレース関数適用部が、該出力ポートでのパケットパターンがパケットパターンキャッシュに記憶されていれば該パケットパターンを再利用するからである。また、該出力ポートでのパケットパターンがパケットパターンキャッシュに記憶されていなければ、該パケットパターンを求めるために該出力ポートに対向する次のスイッチにおける入力ポートを入力としてパケットパターン算出処理を再帰的に実行するからである。そして、この場合、バックトレース関数適用部が、再帰的に実行したパケットパターン算出処理により得られるパケットパターンをパケットパターンキャッシュに記憶させた上で、得られたパケットパターンに対してバックトレース関数を適用するからである。また、転送規則が、入力ポート、マッチングパターン、アクション、および、出力ポートをそれぞれ表す情報を含むとき、バックトレース関数生成部が、次のように動作するからである。すなわち、バックトレース関数生成部は、出力ポートのパケットパターンを入力として、マッチングパターンおよびアクションに基づいて入力ポートに入力されるパケットパターンを出力するよう、バックトレース関数を生成するからである。
これにより、本実施の形態は、パケットパターンキャッシュに、物理リンクパス上の出力ポートごとに、パケットパターンおよびそのときの流出ポートの組という途中計算結果を記録することになる。ある物理リンクパス p1, ・・・, pnを例に説明する。ここで、pi(i=1〜n)は、物理リンクパス上の各スイッチswiの出力ポートを表すものとする。また、各スイッチswiは、この物理リンクパスに適用するフローエントリeiを有しているものとする。このとき、出力ポートpiにおけるバックトレース関数によるパケットパターンの計算結果は、その出力ポートpiから流出ポートpnまでの経路で適用されたフローエントリの列ei, ・・・, en のみに依存して、ζei・ ・・・ ・ζen(πT)と表される。
そのため、本実施の形態は、どの流入ポートから計算を始めても、その途中ポートpiでのパケットパターンがパケットパターンキャッシュにあれば、その値を再利用できる。このように、本実施の形態は、ある流入ポートからのパケットパターンおよび流出ポートの組の算出時に途中ポートについて算出したパケットパターンおよび流出ポートの組を、他の流入ポートからのパケットパターンおよび流出ポートの組の算出時に再利用できる。その結果、本実施の形態は、同一のポートについて、パケットパターンおよび流出ポートの組の計算を1度ずつ計算すればよいことになる。
一方、非特許文献1に記載された関連技術を用いて求める場合について説明する。この関連技術は、まず、流入ポートでのパケットパターンをπTとして、流出ポートでのパケットパターン(φen・ ・・・φei・・・ ・φe1) (πT)を算出する。ただし、φeiは、フローエントリeiに基づく転送関数を表す。そして、この関連技術は、流出ポートのパケットパターンに転送逆関数を適用し、途中の出力ポートpiでのパケットパターン(φ-1 ei・ ・・・ ・φ-1 en)・(φen・ ・・・φei・・・ ・φe1) (πT)を求める。このように、この関連技術では、途中の出力ポートpiでのパケットパターンが、流入ポートp1から出力ポートpiまでの計算結果に影響されることがわかる。したがって、流入ポートが違う経路の場合には、キャッシュを再利用することができない。
次に、上述した本実施の形態の効果を、図14および図15に示す模式的な検証対象ネットワークを用いて説明する。
まず、図14を用いて、本実施の形態の流入パケットパターンを求める処理について模式的に説明する。図14では、検証対象ネットワークは、5つのスイッチsw1、sw2、sw3、sw4、sw5によって構成される。また、この検証対象ネットワークには、2つの物理リンクパスがある。1つ目の物理リンクパスは、sw1のポートp1を流入ポートとして、sw2、sw4を経て、sw5のポートp0を流出ポートとする経路である。また、この経路で適用されるsw1、sw2、sw4、sw5でのフローエントリは、それぞれe1、e2、e4、e5であり、これらに基づくバックトレース関数が、ζe1、ζe2、ζe4、ζe5であるとする。また、2つ目の物理リンクパスは、sw3のポートp3を流入ポートとして、sw4を経て、sw5のポートp0を流出ポートとする経路である。また、この経路で適用されるsw3、sw4、sw5でのフローエントリは、それぞれe3、e4'、e5であり、これらに基づくバックトレース関数が、ζe3、ζe4'、ζe5であるとする。
このとき、本実施の形態は、まず1つ目の物理リンクパスの流入ポートp1の流入パケットパターンを求めるとする。この場合、途中のsw1、sw2、sw4の各出力ポートについてのパケットパターンがパケットパターンキャッシュにまだ記憶されていない。そこで、本実施の形態は、sw5の流出ポートp0からのパケットパターンキャッシュをπTとしてsw5の入力ポートでのパケットパターンπ5=ζe5 (πT)を求め、sw4の出力ポートに対応付けてパケットパターンキャッシュに記憶させる。同様にして、本実施の形態は、この物理リンクパス上でのsw4の入力ポートでのパケットパターンπ4=ζe4 (π5)を求め、sw2の出力ポートに対応付けてパケットパターンキャッシュに記憶させる。同様にして、本実施の形態は、sw2の入力ポートでのパケットパターンπ2=ζe2 (π4)を求め、この物理リンクパス上でのsw1の出力ポートに対応付けてパケットパターンキャッシュに記憶させる。そして、本実施の形態は、sw1の入力ポート、すなわち流入ポートp1でのパケットパターンπ1=ζe1 (π2)を求めることができる。なお、図14において、「スライスS1@(π1,p1)」は、スライス(すなわち、仮想網)S1に属するパケットパターンπ1のパケットを検証対象ネットワークのポートp1に流入させることを表している。つまり、そのような流入パケットパターンπ1が求められたことを表している。また、図14におけるの実線の矢印は、本実施の形態が、1つ目の物理リンクパスの流入ポートp1での流入パケットパターンを求める際のバックトレース関数の処理順序を示している。
また、図14において、本実施の形態は、次に、2つ目の物理リンクパスの流入ポートp3での流入パケットパターンを求めるとする。この場合、パケットパターンキャッシュには、この物理リンクパスの途中ポートであるsw4の出力ポートについてのパケットパターンπ5=ζe5 (πT)が記憶されている。そこで、本実施の形態は、パケットパターンキャッシュからπ5=ζe5 (πT)を取得して再利用する。そして、本実施の形態は、この物理リンクパス上でのsw4の入力ポートでのパケットパターンπ'4=ζe4' (π5)を求め、sw3の出力ポートに対応付けてパケットパターンキャッシュに記憶させる。そして、本実施の形態は、sw3の入力ポート、すなわち流入ポートp3でのパケットパターンπ3=ζe3 (π'4)を求めることができる。なお、図14において、「スライスS2@(π3,p3)」は、スライスS2に属するパケットパターンπ3のパケットを検証対象ネットワークのポートp3に流入させることを表している。つまり、そのような流入パケットパターンπ3が求められたことを表している。また、図14における破線の矢印は、本実施の形態が、2つ目の物理リンクパスの流入ポートp3での流入パケットパターンを求める際のバックトレース関数の処理順序を示している。
次に、比較のため、図14に示した検証対象ネットワークにおける流入ポートでのパケットパターンを、非特許文献1に記載された関連技術を用いて求める処理について、図15を用いて模式的に説明する。図15において、「スライスS1@p1」は、流入ポートp1に、スライスS1に属するパケットパターンを流すことを表す。この場合、関連技術は、まず、1つ目の物理リンクパスの流入ポートp0でのパケットパターンをπTとして、sw1の出力ポートでのパケットパターン(π2, e1)=φ(πT,p1)を求める。なお、(π2, e1)=φ(πT,p1)は、ポートp1に入力されたパケットパターンπTに転送関数φを適用した結果が、フローエントリe1に基づくパケットパターンπ2であることを示している。同様にして、順次、転送関数φを適用していき、この関連技術は、1つ目の物理リンクパスの流出ポートp0でのパケットパターン(πterm, e5)= φ(π5, p5=e4.opor)を求める。なお、pi=ej.oporは、フローエントリejで定められた出力ポートに対向するポートがpiであることを表している。そして、この関連技術は、求めた流出パケットパターンπtermに対して転送逆関数を適用し、sw5の入力ポートでのパケットパターンπ''5=φ-1 e5(πterm)を求める。そして、関連技術は、順次転送逆関数を適用し、流入ポートp1での流入パケットパターンπ'1=φ-1 e1(π'2)を求めることができる。なお、図15において、(1)〜(9)は、1つ目の物理リンクパスの流入パケットパターンを算出する際の転送関数および転送逆関数の適用順序を示している。
また、次に、この関連技術が、2つ目の物理リンクパスの流入パケットパターンを求めることについて考える。図15において、「スライスS2@p3」は、流入ポートp3に、スライスS2に属するパケットパターンを流すことを表す。この場合、まず、この関連技術は、流入ポートp3でのパケットパターンをπTとして、順次転送関数φを適用していき、この物理リンクパスの流出ポートp0でのパケットパターン(π'term, e5)=φ(π7, p5=e4'.opor)を求める。そして、この関連技術は、求めた流出パケットパターンπ'termに対して転送逆関数を適用していく。このとき、sw5の入力ポートでのパケットパターンは、π'' '5=φ-1 e5(π'term)となり、1つ目の物理リンクパスについて転送逆関数で求めたsw5の入力ポートでのパケットパターンπ''5=φ-1 e5(πterm)とは異なる。このように、この関連技術では、転送逆関数を適用する際に、他の物理リンクパスで同一の途中ポートについてパケットパターンを算出していても、その値を再利用することができない。なお、図15において、(a)〜(g)は、2つ目の物理リンクパスの流入パケットパターンを算出する際の転送関数および転送逆関数の適用順序を示している。
以上、図14および図15を用いて説明したように、本実施の形態は、非特許文献1に記載された関連技術と比較して、網に対する流入パケットパターンを計算する処理時間を大幅に短くすることができる。
なお、本発明の第2実施の形態において、バックトレース関数適用部が、バックトレース関数の適用を再帰的に実行する処理手順を中心に説明した。このような処理手順に限らず、本発明のバックトレース関数適用部は、物理リンクパスの流出ポートから流入ポートに向けてバックトレース関数を適用する際に、その他の処理手順を用いてもよい。その他の処理手順は、途中ポートについて算出済みのパケットパターンキャッシュがあればそれを再利用してその途中ポートから流入ポートに向けてバックトレース関数を適用するための手順であればよい。
また、本発明の第2の実施の形態において、パケットパターンキャッシュに記憶される情報の形式の一例を図面に示して説明した。この他、パケットパターンキャッシュに記憶される情報は、途中ポートでのパケットパターンおよびそのパケットパターンがその途中ポートから到達する流出ポートを表すものであれば、他の形式で表されていてもよい。
また、上述した本発明の各実施の形態において、網検証装置は、検証対象ネットワークと接続されていなくてもよく、その物理網トポロジ情報および転送規則を、記憶装置や入力装置等から取得できればよい。
また、上述した本発明の各実施の形態において、網検証装置の各機能ブロックが、記憶装置またはROMに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
また、上述した本発明の各実施の形態において、網検証装置の機能ブロックは、複数の装置に分散されて実現されてもよい。
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した網検証装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納しておいてもよい。そして、係るコンピュータ・プログラムを当該コンピュータ装置のCPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、2014年7月23日に出願された日本出願特願2014−150077を基礎とする優先権を主張し、その開示の全てをここに取り込む。