JP2016092748A - 検証装置、検証方法、および、検証プログラム - Google Patents

検証装置、検証方法、および、検証プログラム Download PDF

Info

Publication number
JP2016092748A
JP2016092748A JP2014228557A JP2014228557A JP2016092748A JP 2016092748 A JP2016092748 A JP 2016092748A JP 2014228557 A JP2014228557 A JP 2014228557A JP 2014228557 A JP2014228557 A JP 2014228557A JP 2016092748 A JP2016092748 A JP 2016092748A
Authority
JP
Japan
Prior art keywords
verification
target data
variable order
bdd
variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014228557A
Other languages
English (en)
Inventor
伸行 富沢
Nobuyuki Tomizawa
伸行 富沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2014228557A priority Critical patent/JP2016092748A/ja
Publication of JP2016092748A publication Critical patent/JP2016092748A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】BDD(Binary Decision Diagram)を用いた検証において、事前に変数順序を決定することなく、検証対象データに応じた変数順序をより適切に決定する技術を提供すること。【解決手段】1つ以上の変数からなる検証対象データを取得する検証対象データ取得部11と、複数の検証対象データ間での各変数の値の変化しやすさに基づいて、それらの変数の順序を決定する変数順序決定部12と、決定された変数順序に基づき検証対象データを表すBDDを生成するBDD処理部13と、生成されたBDDを用いて検証対象データの検証を行う検証部14と、を備える。【選択図】図1

Description

本発明は、二分決定図を用いた検証技術に関する。
検証技術において、BDD(Binary Decision Diagram:二分決定図、二分決定グラフ)と呼ばれるデータ構造が広く使われてきた。なお、ここでいうBDDは、より正確にはROBDD(Reduced Ordered BDD、簡約済順序付二分決定図)を指す。ROBDDは、変数の順序が一定であり(順序付・オーダード)、共通の結果を導くノードが共有された(リデュースド・簡約済み)非循環有効グラフとなる。RODBBは、単純な二分決定木に比べると多くのケースで、メモリ使用量を大幅に削減できる利点がある。そのため、一般的に、BDDと言えばこのROBDDを指す。そこで、以下では、ROBDDを、単にBDDと記載する。
BDDは、引数として複数の0あるいは1を取り、返値として0あるいは1を返すような、いわゆるブール関数を表現することができる。このようなブール関数は、例えば、単純な真理値表の形でも表現可能である。しかし、二分決定図中のノードを効率よく共有できる場合、BDDは、真理値表に比べて、使用するメモリの量を劇的に削減できることが広く知られている。このため、BDDは、LSIの検証を始めとしてこれに留まらず、各種検証技術に幅広く応用されている。例えば、特許文献1には、回路内で起こり得るエラーまたは故障個所を発見する方法において、BDDを用いることが記載されている。
ただし、BDDがメモリを効率的に利用できるかどうかは、変数の順序に強く依存する。そのような変数の順序を決定する問題は、NP(Non-deterministic Polynomial)完全問題であることが広く知られている。そのため、単一のアルゴリズムで、任意のBDDの最適な変数順序を決めることはできない。このため、BDDの変数順序を決める様々なヒューリスティックの研究や、それに基づくBDDライブラリの実装がおこなわれてきた(例えば、非特許文献1参照)。非特許文献1に記載された変数順序最適化手段は、評価用のベンチマークデータをもとに、どのようなデータに対してもよい性能を出すよう変数を順序付ける発見的アルゴリズムを用いている。
特開2000−132417号公報
Fadi A. Aloul 他著、"MINCE: A Static Global Variable−Ordering for SAT and BDD"、Proc. IEEE 10th International Workshop on Logic and Syntesis, 2001年、pp.281−286
しかしながら、上述の特許文献1および非特許文献1に記載された関連技術には、変数順序について以下の課題がある。
特許文献1には、変数順序の規定に関する記載はない。また、非特許文献1に記載されたようなヒューリスティックを用いて変数順序を決定する場合も、結局は、事前に決定された変数順序に基づきBDDライブラリを用いて検証を行うことになる。ここで、応用領域によって、効率の良い変数順序は異なる。そのため、応用領域に適した効率の良い変数順序の決定は、利用者に任されていた。また、利用者は、ヒューリスティックによる得意・不得意を勘案した上で、変数順序を決定する必要があった。また、同じ応用領域であっても、個々の環境で検証対象データの特性が異なる場合、どのような変数順序が適しているかを事前に決定できないという問題がある。個々の環境で検証対象データの特性が異なるケースとしては、例えば、ネットワーク設定情報の検証が挙げられる。この場合、同じネットワーク検証という領域であっても、データセンタ等の環境によってネットワーク構成やアドレス体系などが異なる。そのため、検証対象となるネットワーク設定情報をBDDにより検証するための適切な変数順序も、データセンタ等の環境によって異なると考えられる。しかしながら、上述の関連技術を用いて、個々の環境に応じて事前に変数順序を決定しておくことは難しい。
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、BDDを用いた検証において、事前に変数順序を決定することなく、検証対象データに応じた変数順序をより適切に決定する技術を提供することを目的とする。
本発明の検証装置は、1つ以上の変数からなる検証対象データを取得する検証対象データ取得部と、複数の前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、それらの変数の順序を決定する変数順序決定部と、前記変数順序決定部によって決定された変数順序に基づき前記検証対象データを表す二分決定グラフ(BDD:Binary Decision Diagram)を生成するBDD処理部と、前記BDDを用いて前記検証対象データの検証を行う検証部と、を備える。
また、本発明の検証方法は、1つ以上の変数からなる検証対象データを取得し、複数の前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、それらの変数の順序を決定し、決定した変数順序に基づき前記検証対象データを表す二分決定グラフ(BDD:Binary Decision Diagram)を生成し、前記BDDを用いて前記検証対象データの検証を行う。
また、本発明の検証プログラムは、1つ以上の変数からなる検証対象データを取得する検証対象データ取得ステップと、複数の前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、それらの変数の順序を決定する変数順序決定ステップと、前記変数順序決定ステップで決定された変数順序に基づき前記検証対象データを表す二分決定グラフ(BDD:Binary Decision Diagram)を生成するBDD処理ステップと、前記BDDを用いて前記検証対象データの検証を行う検証ステップと、をコンピュータ装置に実行させる。
本発明は、BDDを用いた検証において、事前に変数順序を決定することなく、検証対象データに応じた変数順序をより適切に決定する技術を提供することができる。
本発明の第1の実施の形態としての検証装置の機能ブロック図である。 本発明の第1の実施の形態としての検証装置のハードウェア構成の一例を示す図である。 本発明の第1の実施の形態としての検証装置の動作を説明するフローチャートである。 本発明の第2の実施の形態としての検証装置の機能ブロック図である。 本発明の第2の実施の形態としての検証装置の動作の概略を説明するフローチャートである。 本発明の第2の実施の形態としての検証装置の変数順序決定動作を説明するフローチャートである。 本発明の第2の実施の形態の具体例におけるネットワーク設定情報の一例を示す模式図である。 本発明の第2の実施の形態の具体例における変換情報の一例を示す模式図である。
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態としての検証装置1の機能ブロック構成を図1に示す。図1において、検証装置1は、検証対象データ取得部11と、変数順序決定部12と、BDD処理部13と、検証部14とを備える。
ここで、検証装置1は、図2に示すようなハードウェア要素によって構成可能である。図2において、検証装置1は、CPU(Central Processing Unit)1001、メモリ1002、出力装置1003、入力装置1004、および、ネットワークインタフェース1005を含む。メモリ1002は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)等によって構成される。出力装置1003は、ディスプレイ装置やプリンタ等のように、情報を出力する装置によって構成される。入力装置1004は、キーボードやマウス等のように、ユーザ操作の入力を受け付ける装置によって構成される。ネットワークインタフェース1005は、インターネット、LAN(Local Area Network)、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークに接続するインタフェースである。この場合、検証装置1の各機能ブロックは、メモリ1002に格納されるコンピュータ・プログラムを読み込んで実行するとともに出力装置1003および入力装置1004を制御するCPU1001によって構成される。なお、検証装置1およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、各機能ブロックの詳細について説明する。
検証対象データ取得部11は、検証対象データを取得する。検証対象データは、1つ以上の変数からなる。また、検証対象データは、ブール関数により表現可能なデータである。例えば、検証対象データ取得部11は、入力装置1004またはネットワークインタフェース1005を介して検証対象データを取得してもよい。また、例えば、検証対象データ取得部11は、メモリ1002または可搬型記録媒体に格納された検証対象データを取得してもよい。
変数順序決定部12は、複数の検証対象データ間での各変数の値の変化しやすさに基づいて、それらの変数の順序を決定する。例えば、4個の検証対象データが得られているとする。また、検証対象データが、変数x1、x2、x3からなるとする。このとき、4個の検証対象データにおいて変数x1の値は同一(固定的)であったとする。また、変数x2の値は、4個の検証対象データのうち3個が同一であり1個が異なる値であったとする。また、変数x3の値は、4個の検証対象データのうち2個が同一でありその値に対して他の2個が異なる値であったとする。この場合、変数順序決定部12は、x3、x2、x1の順に変化しやすいと判断する。そして、この場合、変数順序決定部12は、変化しやすい順に変数順序を決定する。このように、変数順序決定部12は、各変数について、変更回数の多さを表す情報を、変化しやすさとして求めてもよい。変更回数の多さとは、複数の検証対象データうち同一である個数が最も多い値に対して異なる値の個数や割合などであってもよい。そして、変数順序決定部12は、変化しやすい順に変数の順序を決定すればよい。
BDD処理部13は、変数順序決定部12によって決定された変数順序により、検証対象データを表すBDD(Binary Decision Diagram:二分決定グラフ)を生成する。BDD処理部13は、検証対象データを表すブール関数を、決定された変数順序で表すBDDを生成すればよい。
検証部14は、BDD処理部13によって生成されたBDDを用いて、検証対象データの検証を行う。
以上のように構成された検証装置1の動作について、図3を参照して説明する。
図3において、まず、検証対象データ取得部11は、検証対象データを取得する(ステップS1)。
次に、変数順序決定部12は、複数の検証対象データ間での各変数の値の変化しやすさに基づいて、それらの変数の順序を決定する(ステップS2)。
次に、BDD処理部13は、変数順序決定部12によって決定された変数順序により検証対象データを表すBDDを生成する(ステップS3)。
次に、検証部14は、ステップS3で生成されたBDDを用いて、検証対象データの検証を行う(ステップS4)。
次に、検証部14は、検証結果を出力する(ステップS5)。
以上で、検証装置1は、動作を終了する。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としての検証装置は、BDDを用いた検証において、事前に変数順序を決定することなく、検証対象データに応じた変数順序をより適切に決定することができる。
その理由は、変数順序決定部が、検証対象データ取得部によって取得された複数の検証対象データ間での、検証対象データを構成する各変数の値の変化しやすさに基づいて、変数順序を決定するからである。そして、検証部が、決定された変数順序でBDD処理部により生成されたBDDを用いて、検証を行うからである。
これにより、本実施の形態は、取得した検証対象データの特性に応じて変数順序を決定することができる。そのため、本実施の形態は、事前に定められた変数順序を用いる必要がない。その結果、本実施の形態は、同じ応用領域であっても個々の環境により検証対象データの特性が異なる場合も、その環境の検証対象データの特性に応じた適切な変数順序を決定することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
本実施の形態では、検証対象データとして、ネットワーク設定情報を適用する例について説明する。ネットワーク設定情報は、対象のネットワーク内における各ネットワーク機器に設定される情報である。ここで、対象とするネットワークの構成やアドレス体系によって、ネットワーク設定情報における各設定項目には、変更の多いものもあれば、変更の少ない固定的なものもある。そのため、ネットワーク設定情報を構成する各変数は、その値の変化しやすさが異なる。したがって、異なる環境のネットワークでは、ネットワーク設定情報をBDDで表す場合に適切な変数順序が異なると考えられる。そこで、本実施の形態は、本発明の検証対象データとしてネットワーク設定情報を適用することにより、個々のネットワーク環境に応じて、ネットワーク設定情報をBDDで表す際の適切な変数順序を決定し、検証を行う。
まず、本発明の第2の実施の形態としての検証装置2の機能ブロック構成を図4に示す。図4において、検証装置2は、本発明の第1の実施の形態としての検証装置1に対して、検証対象データ取得部11に替えて検証対象データ取得部21と、変数順序決定部12に替えて変数順序決定部22と、BDD処理部13に替えてBDD処理部23と、検証部14に替えて検証部24とを備え、さらに、ネットワーク設定情報保持部25を備える点が異なる。なお、ネットワーク設定情報保持部25は、本発明の検証対象データ取得部の一部の一実施形態を構成する。ここで、検証装置2およびその各機能ブロックは、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。なお、検証装置2およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
検証対象データ取得部21は、検証対象データとして、ネットワーク設定情報を取得する。前述のように、ネットワーク設定情報は、ネットワーク機器に設定される情報である。また、ネットワーク設定情報は、ブール関数で表現可能であるものとする。例えば、ネットワーク設定情報がビット列で表されるとすると、各ビットは、ブール関数の変数とみなすことができる。また、ブール関数の返値としては、例えば、そのネットワーク設定情報が正しければ1、正しくなければ0を返すとみなしてもよい。なお、ネットワーク設定情報をブール関数として表現する方法はこれに限らない。また、検証対象データ取得部21は、対象のネットワーク内の各ネットワーク機器と通信することにより、それぞれのネットワーク設定情報を取得してもよい。
また、検証対象データ取得部21は、略同一の時刻情報に関連するネットワーク設定情報をまとめて、ネットワーク設定情報保持部25に保存する。このような略同一の時刻情報に関連するネットワーク設定情報を、以降、時刻グループとも記載する。具体的には、検証対象データ取得部21は、対象のネットワークにおいてある時点に各ネットワーク機器に設定されているネットワーク設定情報をまとめて1つの時刻グループとすればよい。例えば、検証対象データ取得部21は、取得時刻が略同一のネットワーク設定情報をまとめて1つの時刻グループとしてもよい。取得時刻が略同一であるとは、取得時刻が、いずれかの取得時刻前後の所定範囲の時間帯に含まれることであってもよい。あるいは、取得時刻が略同一であるとは、取得時刻から得られる情報の一部が同一であることであってもよい。取得時刻から得られる情報の一部とは、例えば、年月日までの情報や、時分までの情報などをさす。また、検証対象データ取得部21が、ネットワーク内の各ネットワーク機器からネットワーク設定情報を取得する取得処理を、所定タイミング毎に行う場合を想定する。この場合、検証対象データ取得部21は、同一タイミングの取得処理において各ネットワーク機器から取得したネットワーク設定情報をまとめて、1つの時刻グループとしてもよい。
変数順序決定部22は、略同一の時刻情報に関連する複数のネットワーク設定情報間において、ネットワーク設定情報を構成する各変数の値の変化しやすさに基づいて、変数順序を決定する。具体的には、変数順序決定部22は、上述した同一の時刻グループ内での各変数の値の変化しやすさに基づいて、変数順序を決定すればよい。ここで、同一の時刻グループには、上述したように、ある時点における各ネットワーク機器のネットワーク設定情報が含まれている。したがって、同一の時刻グループ内のネットワーク設定情報間で値が変化しやすい変数は、そのネットワーク環境で、個々のネットワーク機器に応じて、設定が異なることが多い項目に対応すると考えられる。また、このような同一の時刻グループ内のネットワーク設定情報間で値が変化しにくい変数は、そのネットワーク環境では、ネットワーク機器が異なっていても、設定が固定的となることが多い項目に対応すると考えられる。
また、変数順序決定部22は、複数の時刻グループのそれぞれについて、各時刻グループ内における各変数の値の変化しやすさを算出してもよい。この場合、変数順序決定部22は、同じ変数について複数の時刻グループ内でそれぞれ算出した変化しやすさを統合して、その変数の値の変化しやすさを求めてもよい。
また、変数順序決定部22は、異なる時刻情報にそれぞれ関連する複数のネットワーク設定情報間において、ネットワーク設定情報を構成する各変数の値の変化しやすさに基づいて、変数順序を決定する。具体的には、変数順序決定部22は、異なる時刻グループ間での各変数の値の変化しやすさに基づいて、変数順序を決定すればよい。ここで、異なる時刻グループには、各ネットワーク機器について異なる時間に設定されていたネットワーク設定情報が含まれている。したがって、異なる時刻グループ間で値が変化しやすい変数は、そのネットワーク環境で、時間の経過に伴い設定が変更されやすい項目に対応すると考えられる。また、異なる時刻グループ間で値が変化しにくい変数は、そのネットワーク環境で、時間が経過しても設定が変更されることが少なく固定的となりやすい項目に対応すると考えられる。
なお、変数順序決定部22は、同一の時刻グループ内または異なる時刻グループ間での各変数の値の変化しやすさとして、本発明の第1の実施の形態と同様に、変更回数の多さを表す情報を、変化しやすさとして求めてもよい。また、変更回数の多さとは、本発明の第1の実施の形態と同様に、複数のネットワーク設定情報のうち同一である個数が最も多い値に対する異なる値の個数や割合などであってもよい。
また、変数順序決定部22は、同一の時刻グループ内での各変数の変化しやすさおよび異なる時刻グループ間での各変数の変化しやすさを組み合わせて、変数順序を決定してもよい。例えば、変数順序決定部22は、まず、同一の時刻グループ内での各変数の変化しやすさに基づいて、変数順序を暫定的に決定する。このとき、同一の時刻グループ内での変化しやすさが同一の複数の変数があるとする。この場合、変数順序決定部22は、それらの変化しやすさが同一の複数の変数については、異なる時刻グループ間での変化しやすさに基づいて、変数順序を定めてもよい。あるいは、変数順序決定部22は、まず異なる時刻グループ間での変化しやすさに基づいて変数順序を決定してもよい。そして、変数順序決定部22は、異なる時刻グループ間での変化しやすさが同一の複数の変数について、同一の時刻グループ内での変化しやすさに基づいて変数順序を決定してもよい。
また、変数順序決定部22は、後述の検証部24が用いる検証アルゴリズムにあらかじめ定められた変数順序を、決定した変数順序に変換する変換情報を生成する。変換情報は、例えば、あらかじめ定められた変数順序に対して、決定された変数順序が対応付けられたテーブル形式であってもよい。
BDD処理部23は、与えられた変数順序で、与えられたブール関数を表すBDDを生成する。BDD処理部23は、公知の技術によって実現可能である。BDD処理部23は、後述の検証部24から、上述の変換情報を介して利用される。これにより、BDD処理部23は、変数順序決定部22によって決定された変数順序で、ネットワーク設定情報を表すBDDを生成することになる。
検証部24は、ネットワーク設定情報をBDDで表して検証する検証アルゴリズムを実行する。なお、検証アルゴリズムには、公知の技術を採用可能である。また、検証アルゴリズムには、変数順序があらかじめ定められている。そこで、検証部24は、上述の変換情報を介してBDD処理部23を利用する。これにより、検証部24は、決定された変数順序に基づいてBDDを生成し検証を行うことができる。
以上のように構成された検証装置2の動作について、図面を参照して説明する。
まず、検証装置2の検証動作の概略を図5に示す。
図5では、まず、検証対象データ取得部21は、対象のネットワーク内の各ネットワーク機器から、ネットワーク設定情報を取得する(ステップS11)。前述のように、検証対象データ取得部21は、取得したネットワーク設定情報を時刻グループごとにまとめて、ネットワーク設定情報保持部25に保存する。
次に、変数順序決定部22は、ネットワーク設定情報保持部25に保存したネットワーク設定情報を構成する各変数について、その値の変化しやすさに基づいて変数順序を決定する(ステップS12)。このステップの詳細については後述する。
次に、変数順序決定部22は、検証部24に定められた変数順序を、ステップS12で決定した変数順序に変換する変換情報を生成する(ステップS13)。
次に、検証部24は、変換情報を介してBDD処理部23を利用することにより、ステップS12で決定された変数順序で、ネットワーク設定情報を表すBDDを生成する(ステップS14)。
次に、検証部24は、ステップS14で生成されたBDDを用いて、ネットワーク設定情報の検証を行う(ステップS15)。
次に、検証部24は、検証結果を出力する(ステップS16)。
以上で、検証装置2は、検証動作を終了する。
次に、ステップS12における変数順序決定動作の詳細を、図6に示す。
図6では、まず、変数順序決定部22は、ネットワーク設定情報保持部25から、過去に取得したn回分(n個の時刻グループ)のネットワーク設定情報を取り出す(ステップS21)。ただし、nは、2以上の整数である。
次に、変数順序決定部22は、過去n回のそれぞれの時刻グループ内において、ネットワーク設定情報間での各変数の値の変化しやすさを求める(ステップS22)。例えば、変数順序決定部22は、それぞれの時刻グループ内において、ネットワーク設定情報間での変数の値の変化しやすさを算出する。そして、変数順序決定部22は、ある変数についてn個の時刻グループにおいて算出した変化しやすさを統合して、その変数の変化しやすさを求めてもよい。
次に、変数順序決定部22は、ネットワーク設定情報を構成する各変数について、過去n回の取得時刻に対応する時刻グループ間での値の変化しやすさを求める(ステップS23)。
次に、変数順序決定部22は、ステップS22およびS23で求めた各変数の値の変化しやすさに基づいて、変数順序を決定する(ステップS24)。
例えば、前述のように、変数順序決定部22は、まず、同一の時刻グループ内での変化しやすさの順に変数順序を決定してもよい。そして、変数順序決定部22は、同一の時刻グループ内での変化しやすさが同一の複数の変数について、異なる時刻グループ間での変化しやすさの順に変数順序を決定してもよい。あるいは、前述のように、変数順序決定部22は、まず、異なる時刻グループ間での変化しやすさの順に変数順序を決定してもよい。そして、変数順序決定部22は、異なる時刻グループ間での変化しやすさが同一の複数の変数について、同一の時刻グループ内での変化しやすさの順に変数順序を決定してもよい。
以上で、変数順序決定部22は、変数順序決定動作を終了する。
次に、検証装置2の動作を具体例で示す。まず、この具体例において、ネットワーク設定情報をブール関数で表現する方法について説明する。ここで、ネットワーク設定情報をブール関数として表現する方法は、検証アルゴリズム、検証項目、または、検証対象などによって異なる。ここでは、一例として、ネットワーク設定情報が、パターンにマッチする場合にアクションを行うというルールを表す例を用いて説明する。パターンとは、例えば、送信元および送信先のネットワークアドレスを特定するパケットのパターンを表す。また、アクションとは、パケットに対する転送や破棄などの処理を表す。パターンおよびそれに対するアクションからなるルールは、2進数で表現した時に0、1、xからなるビット列として表現される。なお、「x」は、0および1のどちらでもよいことを表すワイルドカードである。
このとき、ネットワーク設定情報は、ビット列の各ビットをブール変数として、上述のようなパターンおよびアクションからなるルールとして有効なビット列を含む場合に1を返し、そうでない場合に0を返すブール関数として表現される。このようなブール関数の集合は、BDDを用いることで、コンパクトに保持可能となることが多い。さらには、このようなブール関数の集合は、BDDを用いることで、集合に対する演算(和集合・積集合)を効率よく実行可能となる。
この具体例におけるネットワーク設定情報のデータ構造を模式的に図7に示す。ここでは、対象のネットワークには、ネットワーク機器R1およびR2が含まれるとする。図7に示す時刻t1の時刻グループは、時刻t1に、検証対象データ取得部21によってネットワーク機器R1およびR2からそれぞれ取得されたネットワーク検証情報r1およびr2を含む。また、時刻tnの時刻グループは、時刻tnに、検証対象データ取得部21によってネットワーク機器R1およびR2からそれぞれ取得されたネットワーク検証情報r1およびr2を含む。
また、図7において、それぞれのネットワーク検証情報は、パターンおよびアクションを含む。アクションactは、パターンにマッチしたパケットを受け取った場合に実行する処理を表している。actは、例えば、8ビットで表されていてもよい。パターンは、条件となるソースアドレス(送信元のネットワークアドレス)srcおよびデスティネーションアドレス(送信先のネットワークアドレス)dstを含む。srcおよびdstは、それぞれ、例えば32ビットで表されていてもよい。また、srcおよびdstは、それぞれ図示のピリオドで区切られた4つのビット範囲(例えば、8ビットずつ)から構成される。以降、これらのビット範囲を、src[0]〜[3]、dst[0]〜[3]と記載する。なお、図7では、これらのビット範囲の値として、ビット列でない表記を示しているが、実際には、これらのビット範囲は、0、1、xのビット列で構成される。また、この具体例では、説明を簡単にするため、以下、このようなビット範囲ごとに、その変化しやすさについて述べている。ただし、実際には、各変数の変化しやすさは、ネットワーク設定情報を構成するビット列のビット(ブール変数)毎に求められる。
このような具体例において、検証装置2は、次のように動作する。
まず、検証対象データ取得部21は、時刻t1〜tnに、ネットワーク内のネットワーク機器R1およびR2からネットワーク設定情報を取得する。そして、検証対象データ取得部21は、時刻ti(i=1〜n)に取得したネットワーク設定情報r1およびr2を、時刻ti(i=1〜n)の時刻グループとして、ネットワーク設定情報保持部25に保存する(ステップS11)。
次に、変数順序決定部22は、ネットワーク設定情報保持部25に保存したネットワーク設定情報に基づいて、ネットワーク設定情報を構成する変数の順序を決定する(ステップS12)。
ここで、変数順序として、dst[2]、dst[3]、act、・・・、src[0:3]、・・・、dst[0]、dst[1]が決定されたものとする。この変数順序は、以下のように決定される。
まず、変数順序決定部22は、ネットワーク設定情報保持部25から、過去n回の時刻t1〜tnにおけるネットワーク設定情報を取り出す(ステップS21)。
次に、変数順序決定部22は、各取得時刻tiの時刻グループ内での各変数について、その変化しやすさを求める(ステップS22)。
例えば、時刻t1では、ネットワーク設定情報r1のdst[2]、dst[3]は、「a.b」であるが、ネットワーク設定情報r2のdst[2]、dst[3]は、「*.*」である。つまり、時刻t1において、dst[2]、dst[3]は変化している。また、時刻t1では、ネットワーク設定情報r1およびr2とも、dst[0]、dst[1]は、「10.0」である。つまり、時刻t1において、dst[0]、dst[1]は、変化していない。このように、時刻t1において、dst[2]、dst[3]は、dst[0]、dst[1]よりも変化しやすい。同様に、取得時刻tnにおいても、dst[2]、dst[3]は、dst[0]、dst[1]よりも変化しやすい。これは、例えば、パケットの転送やファイヤウォールの用途では、デスティネーションアドレス毎に異なる処理をアクションとして指定することが多いためである。なお、異なる処理とは、ポート番号を指定した転送や、パケットの破棄などである。また、このネットワーク環境において、各機器に割り当てられるネットワークアドレスは、上位部分dst[0]、dst[1]の部分が固定的であり、下位部分dst[2]、dst[3]が変化する。したがって、このネットワーク設定情報において、デスティネーションアドレス中の下位部分dst[2]、dst[3]の部分に対応する変数は、上位部分より変化しやすい変数となる。
同様に、時刻t1では、ネットワーク設定情報r1のact「・・・1011・・・」と、r2のact「・・・1000・・・」とは、異なっている。つまり、時刻t1において、actは変化している。同様に、時刻t2でも、actは変化している。
このようにして、ステップS22において、変数順序決定部22は、同一の時刻グループ内での変化しやすさとして、以下の情報を求めた。
・同一の時刻グループ内で変化しやすい変数:dst[2]、dst[3]、act
・同一の時刻グループ内で変化していない変数:dst[0]、dst[1]、src[0〜3]
次に、変数順序決定部22は、ネットワーク設定情報を構成する各変数について、過去n回の時刻グループをまたいでの変化しやすさを求める(ステップS23)。
例えば、ネットワーク設定情報r1のactは、時刻t1で「・・・1011・・・」であり、時刻tnで「・・・1011・・・」である。つまり、時刻t1、tn間で、ネットワーク設定情報r1のactは変化していない。同様に、ネットワーク設定情報r2のactは、時刻t1、tn間で変化していない。
また、ネットワーク設定情報r2では、時刻t1およびtnともに、dst[2]、dst[3]は、「*.*」で変化していない。しかしながら、ネットワーク設定情報r1では、dst[2]、dst[3]は、時刻t1で「a.b」であり、時刻t2で「c.d」である。つまり、ネットワーク設定情報r1のdst[2]、dst[3]は、時刻t1、tn間で変化している。これは、パケットの転送やファイヤウォールの用途では、時間の経過に伴うマシン移動等によりネットワーク設定情報のデスティネーションアドレスを変更することのほうが、それに対する処理(アクション)を変更することよりも多いためである。
このようにして、ステップS23において、変数順序決定部22は、ステップS22で同一の変化しやすさとなったdst[2]、dst[3]、actについて、異なる時刻グループ間での変化しやすさとして、以下の情報を求めた。
・異なる時刻グループ間で変化しやすい変数:dst[2]、dst[3]
・異なる時刻グループ間で変化していない変数:act
そして、変数順序決定部22は、まず、同一の時刻グループ内での変化しやすさの順に変数を並べる。そして、変数順序決定部22は、同一の時刻グループ内での変化しやすさが同一のものについて、異なる時刻グループ間での変化しやすさの順に並べる。その結果、変数順序決定部22は、dst[2]、dst[3]、act、・・・、src[0:3]、・・・、dst[0]、dst[1]のように、変数順序を決定する(ステップS24)。
このようにして決定された変数順序は、次の順で変数を含む。
(1)同一の時刻グループ内でも異なる時刻グループ間でも変化しやすい、デスティネーションアドレスの下位部分dst[2]、dst[3]に対応する変数
(2)異なる時刻グループ間では変化していないが同一の時刻グループ間では変化しやすいactに対応する変数
(3)同一の時刻グループ内でも異なる時刻グループ間でも変化していない、ソースアドレスsrc[0]〜[3]およびデスティネーションアドレスの上位部分dst[0]、dst[1]に対応する変数
なお、この具体例では、同一の時刻グループ内で値が変化していない変数dst[0]、dst[1]、src[0〜3]は、異なる時刻グループ間でも値が変化していなかった。ここで、仮に、同一の時刻グループ内で値が変化していないこれらの変数について、異なる時刻グループ間での変化しやすさに違いがあるとする。この場合、変数順序決定部22は、上記(2)と(3)の間に、
・異なる時刻グループ間では変化しやすいが同一の時刻グループ間では変化していない変数、
を入れて変数順序を決定してもよい。
次に、変数順序決定部22は、検証部24にあらかじめ定められた変数順序を、ステップS24で決定した変数順序に変換する変換情報を生成する(ステップS13)。変換情報を、模式的に図8に示す。図8において、例えば、変換情報を構成する9番目のデータには、13という値が格納されている。これは、検証部24がBDD処理部23に対して13番目の変数を参照しようとするとき、9番目の変数を参照するよう変換する情報を表している。
次に、検証部24は、図8の変換情報を介してBDD処理部23を用いることにより、ネットワーク設定情報を表すBDDを生成する(ステップS14)。
次に、検証部24は、ステップS14で生成されたBDDを用いて検証を行う(ステップS15)。そして、検証部24は、検証結果を出力する(ステップS16)。
以上で、具体例の動作の説明を終了する。
次に、本発明の第2の実施の形態の効果について述べる。
本発明の第2の実施の形態としての検証装置は、BDDを用いたネットワーク設定情報の検証において、事前に変数順序を決定することなく、個々のネットワーク環境に応じた変数順序をより適切に決定することができる。
その理由は、検証対象データ取得部が、検証対象データとしてネットワーク設定情報を取得し、変数順序決定部が、ネットワーク設定情報を構成する各変数について、値の変化のしやすさに基づいて変数順序を決定するからである。また、このとき、変数順序決定部が、略同一の時刻情報に関連するネットワーク設定情報間での変数の値の変化しやすさと、異なる時刻情報にそれぞれ関連するネットワーク設定情報間での変数の値の変化しやすさとに基づいて、変数順序を決定するからである。そして、変数順序決定部が、検証部の用いる検証アルゴリズムにあらかじめ定められた変数順序を変換する変換情報を生成するからである。そして、検証部が、変換情報を介してBDD処理部を利用することにより、変換された変数順序でネットワーク設定情報を表すBDDを生成し検証を行うからである。
これにより、本実施の形態は、対象のネットワーク中において各ネットワーク機器のネットワーク設定情報を構成するビット列のどの位置(ビット)が固定的か、あるいはよく変化するかに基づいて、BDDを生成する際の変数順序を決定することができる。ここで、ネットワーク設定情報を構成するビット列のどの位置が固定的か、あるいはよく変化するかは、ネットワークの構成、アドレス体系、運用状況などの個々の環境によって異なってくる。したがって、本実施の形態は、BDD処理部での変数順序として、検証アルゴリズムによって決定されたものを固定的に用いるのではなく、対象ネットワークの環境に応じて決定した変数順序を用いることができる。その結果、本実施の形態は、検証対象のネットワーク設定情報を表すBDDとしてより効率的な情報を生成して検証を行うことができる。例えば、本実施の形態は、ネットワーク設定情報の正しさの検証等の用途において、上述のような効果を奏する。
なお、本発明の第2の実施の形態において、検証対象データ取得部が、略同時に取得したネットワーク設定情報をまとめて1つの時刻グループとしてネットワーク設定情報保持部に保存する例について説明した。この他、検証対象データ取得部は、取得したネットワーク設定情報を、単に、時刻情報に関連付けてネットワーク設定情報保持部に保存してもよい。この場合、変数順序決定部が、ネットワーク設定情報保持部を参照することにより、略同一の時刻情報に関連するネットワーク設定情報を1つの時刻グループとして抽出すればよい。また、これに限らず、検証対象データ取得部は、略同一の時刻情報に関連するネットワーク設定情報をまとめて抽出可能であるような形式で、ネットワーク設定情報をネットワーク設定情報保持部に保存すればよい。
また、本発明の第2の実施の形態の具体例において、各変数の値の変化しやすさとして、変化しやすい、変化していない、の2段階の情報を求める例について説明した。これに限らず、変数順序決定部は、変化しやすさとして、さらに多段階の情報や、数値で表される情報などを求めてもよい。
また、本発明の第2の実施の形態において、検証対象データとしてネットワーク設定情報を適用する例を説明した。これに限らず、本発明における検証対象データは、他の領域の検証対象データにも適用可能である。特に、本発明は、検証対象データを構成する各変数の変化しやすさに傾向があるような領域において、効果を奏する。例えば、ネットワーク設定に限らず、コンピュータシステムにおける各種設定情報には、設定項目によって変更されやすいもの、固定的になりやすいものなどの傾向があるケースがある。そのような設定情報を、本発明の検証対象データとして適用することにより、本発明は、より適切な変数順序を定めてBDDを用いて検証を行うことができる。
また、上述した本発明の各実施の形態において、検証装置は、検証対象データを検証するたびにそのための変数順序を決定するよう説明した。これに限らず、検証装置は、対象環境の検証対象データについて一旦変数決定処理を行った後は、検証対象データの特性に大きな変化がない場合には、変数決定処理を省略してもよい。この場合、検証装置は、変数順序決定部により以前に決定した変数順序でBDDを生成してもよい。例えば、本発明の第2の実施の形態の場合、検証装置は、ネットワークの構成やアドレス体系に大きな変化があった場合に変数順序決定処理を行うようにしてもよい。この場合、検証装置は、ネットワークの構成やアドレス体系に大きな変化がない場合には、変数決定処理を省略してもよい。そして、この場合、検証装置は、変数順序決定部により以前に決定した変数順序を用いてBDDを生成し、ネットワーク設定情報の検証を行ってもよい。
また、上述した本発明の各実施の形態において、検証装置の各機能ブロックが、記憶装置またはROMに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが、専用のハードウェアにより実現されていてもよい。
また、上述した本発明の各実施の形態において、検証装置の機能ブロックは、複数の装置に分散されて実現されてもよい。
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した検証装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータの記憶装置(記憶媒体)に格納しておく。そして、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
1、2 検証装置
11、21 検証対象データ取得部
12、22 変数順序決定部
13、23 BDD処理部
14、24 検証部
25 ネットワーク設定情報保持部
1001 CPU
1002 メモリ
1003 出力装置
1004 入力装置
1005 ネットワークインタフェース

Claims (7)

  1. 1つ以上の変数からなる検証対象データを取得する検証対象データ取得部と、
    複数の前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、それらの変数の順序を決定する変数順序決定部と、
    前記変数順序決定部によって決定された変数順序に基づき前記検証対象データを表す二分決定グラフ(BDD:Binary Decision Diagram)を生成するBDD処理部と、
    前記BDDを用いて前記検証対象データの検証を行う検証部と、
    を備えた検証装置。
  2. 前記検証対象データ取得部は、前記検証対象データとしてネットワーク設定情報を取得し、
    前記変数順序決定部は、前記ネットワーク設定情報を構成する各変数について前記変数順序を決定し、
    前記BDD処理部は、決定された変数順序により前記ネットワーク設定情報を表すBDDを生成し、
    前記検証部は、前記BDDを用いて前記ネットワーク設定情報の検証を行うことを特徴とする請求項1に記載の検証装置。
  3. 前記変数順序決定部は、略同一の時刻情報に関連する前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、前記変数順序を決定することを特徴とする請求項1または請求項2に記載の検証装置。
  4. 前記変数順序決定部は、異なる時刻情報にそれぞれ関連する前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、前記変数順序を決定することを特徴とする請求項1から請求項3のいずれか1項に記載の検証装置。
  5. 前記変数順序決定部は、前記検証部であらかじめ定められた変数順序を、決定した前記変数順序に変換する変換情報を生成し、
    前記検証部は、前記変換情報を介して前記BDD処理部を利用することにより、前記BDDを用いて前記検証対象データの検証を行うことを特徴とする請求項1から請求項4のいずれか1項に記載の検証装置。
  6. 1つ以上の変数からなる検証対象データを取得し、
    複数の前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、それらの変数の順序を決定し、
    決定した変数順序に基づき前記検証対象データを表す二分決定グラフ(BDD:Binary Decision Diagram)を生成し、
    前記BDDを用いて前記検証対象データの検証を行う検証方法。
  7. 1つ以上の変数からなる検証対象データを取得する検証対象データ取得ステップと、
    複数の前記検証対象データ間での前記各変数の値の変化しやすさに基づいて、それらの変数の順序を決定する変数順序決定ステップと、
    前記変数順序決定ステップで決定された変数順序に基づき前記検証対象データを表す二分決定グラフ(BDD:Binary Decision Diagram)を生成するBDD処理ステップと、
    前記BDDを用いて前記検証対象データの検証を行う検証ステップと、
    をコンピュータ装置に実行させる検証プログラム。
JP2014228557A 2014-11-11 2014-11-11 検証装置、検証方法、および、検証プログラム Pending JP2016092748A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014228557A JP2016092748A (ja) 2014-11-11 2014-11-11 検証装置、検証方法、および、検証プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014228557A JP2016092748A (ja) 2014-11-11 2014-11-11 検証装置、検証方法、および、検証プログラム

Publications (1)

Publication Number Publication Date
JP2016092748A true JP2016092748A (ja) 2016-05-23

Family

ID=56018831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014228557A Pending JP2016092748A (ja) 2014-11-11 2014-11-11 検証装置、検証方法、および、検証プログラム

Country Status (1)

Country Link
JP (1) JP2016092748A (ja)

Similar Documents

Publication Publication Date Title
JP6804668B2 (ja) ブロックデータ検証方法および装置
Jean et al. Optimizing implementations of lightweight building blocks
Martin et al. Counting keys in parallel after a side channel attack
Ding et al. Deriving an NCD file from an FPGA bitstream: Methodology, architecture and evaluation
US20080147599A1 (en) Load balancing for complex database query plans
JP7132926B2 (ja) コンパイルデバイス及びコンパイル方法
JP2014186407A (ja) テストケース生成方法、テストケース生成装置およびプログラム
Homsirikamol et al. Toward a new HLS-based methodology for FPGA benchmarking of candidates in cryptographic competitions: The CAESAR contest case study
Lu et al. Black-box parallel garbled RAM
Martin et al. Two sides of the same coin: counting and enumerating keys post side-channel attacks revisited
CN110262775A (zh) 业务规则生成方法及装置
WO2016063502A1 (ja) 知識管理装置、知識管理方法、及び、プログラムの記録媒体
JPWO2008081932A1 (ja) 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム
JP7063274B2 (ja) 情報処理装置、ニューラルネットワークの設計方法及びプログラム
JP5106447B2 (ja) テストケース生成装置およびその生成方法、ならびにコンピュータプログラム
Hövelmanns et al. A note on Failing gracefully: Completing the picture for explicitly rejecting Fujisaki-Okamoto transforms using worst-case correctness
WO2023124677A1 (zh) 数据处理的方法和计算平台
Schilling et al. Analysis of trivium using compressed right hand side equations
JPWO2016056502A1 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
JP2016092748A (ja) 検証装置、検証方法、および、検証プログラム
Sugier Low-cost hardware implementations of Salsa20 stream cipher in programmable devices
CN108845844A (zh) 一种状态转换方法及装置
US20190294637A1 (en) Similar data search device, similar data search method, and recording medium
Shibu et al. VeRLPy: Python Library for Verification of Digital Designs with Reinforcement Learning
US20170111262A1 (en) Route search apparatus and route search method