JPWO2014168164A1 - ネットワーク検証装置、ネットワーク検証方法及びプログラム - Google Patents

ネットワーク検証装置、ネットワーク検証方法及びプログラム Download PDF

Info

Publication number
JPWO2014168164A1
JPWO2014168164A1 JP2015511274A JP2015511274A JPWO2014168164A1 JP WO2014168164 A1 JPWO2014168164 A1 JP WO2014168164A1 JP 2015511274 A JP2015511274 A JP 2015511274A JP 2015511274 A JP2015511274 A JP 2015511274A JP WO2014168164 A1 JPWO2014168164 A1 JP WO2014168164A1
Authority
JP
Japan
Prior art keywords
state
network
verification
information
search
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
JP2015511274A
Other languages
English (en)
Inventor
豊 八鍬
豊 八鍬
伸行 富沢
伸行 富沢
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
Publication of JPWO2014168164A1 publication Critical patent/JPWO2014168164A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0866Checking the configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

ネットワークの網羅的な検証の効率向上に貢献する。ネットワーク検証装置は、検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付ける検証情報入力部と、前記検証情報を用いたモデル検査において、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行い、かつ、次状態の状態探索前に探索要否確認部に対し、各状態の過去の遷移経路に関する情報を送り、前記次状態の探索を省略可能か否かを問い合わせながらモデル検査を行うモデル検査実行部と、前記モデル検査実行部から受け取った状態の過去の遷移経路に関する情報に基づいて、前記次状態の探索が省略可能か否かを判断し、前記状態の探索が省略可能か否かを応答する探索要否確認部と、前記モデル検査実行部の出力に基づき、検証の結果を出力する検証結果出力部と、を備える。

Description

[関連出願についての記載]
本発明は、日本国特許出願:特願2013−081886号(2013年 4月10日出願)に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ネットワーク検証装置、ネットワーク検証方法及びプログラムに関し、特に、検証対象のネットワークをモデル化して検証を行うネットワーク検証装置、ネットワーク検証方法及びプログラムに関する。
ネットワークの運用管理に関して、OpenFlowという技術が注目されている(非特許文献1、2参照)。OpenFlowは、Software−Defined Network(以下、「SDN」)の概念を実現する技術としても注目されている。SDNは、ネットワーク制御をプログラマブルな方法で一元管理するという、ネットワークの分野の新たなパラダイムであり、特にOpenFlowは、ネットワーク運用の自動化・効率化・省電力化等、様々な期待を集めている。
一方で、OpenFlowでは、ネットワーク制御の柔軟性が増す分、それに伴う不具合の発生が懸念されている。例えば開発者の考慮漏れや、複数のプログラムを組み合わせたことによる不具合が多くなる。そのためOpenFlowネットワークの安定運用には、そのネットワークが安全なものかを事前に検証することが重要となる。例えば、非特許文献3には、モデル検査によりOpenFlowネットワークの状態探索を行う“NICE”というツールが開示されている。非特許文献3によると、“NICE”は、OpenFlowコントローラのプログラムを記号実行し、すべてのコードパスを実行するためのパケットの代表値の集合を求め、それを用いて状態探索を行っている。
Nick McKeownほか7名、"OpenFlow: Enabling Innovation in Campus Networks"、[online]、[平成25(2013)年3月25日検索]、インターネット〈URL: http://www.openflow.org/documents/openflow-wp-latest.pdf〉 "OpenFlow Switch Specification" Version 1.0.0. (Wire Protocol 0x01)、[online]、[平成25(2013)年3月25日検索]、インターネット〈URL:https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.0.0.pdf〉 Marco Caniniほか4名、"A NICE Way to Test OpenFlow Applications"、[online]、[平成25(2013)年3月25日検索]、インターネット〈URL: http://infoscience.epfl.ch/record/170618/files/nsdi-final.pdf〉
以下の分析は、本発明によって与えられたものである。非特許文献3に代表される手法の問題点は、現実的なコスト(時間及びマシンリソース)で、OpenFlowネットワークの主要な動作を網羅的に検証できないこと、あるいは、(現実的なコストでできないため)網羅的な検証をしないことである。
例えば、非特許文献3が開示している技術では、OpenFlowコントローラのプログラムのすべてのコードパスを網羅する検証を行うが、前記プログラムが影響を与えるOpenFlowネットワークの動作(OpenFlowスイッチによる通信パケットの転送動作等)を網羅する検証は行われない。そのため、OpenFlowネットワークの主要な動作に関わる不具合が検出できない可能性がある。
上記の問題点は、非特許文献1、2のOpenFlowに固有のものではなく、SDNと呼ばれるネットワークに共通するものといえる。
本発明は、SDNに代表されるネットワークの網羅的な検証の効率向上に貢献できるネットワーク検証装置、プログラム及び方法を提供することを目的とする。
第1の視点によれば、検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付ける検証情報入力部と、前記検証情報を用いたモデル検査において、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行い、かつ、次状態の状態探索前に探索要否確認部に対し、各状態の過去の遷移経路に関する情報を送り、前記次状態の探索を省略可能か否かを問い合わせながらモデル検査を行うモデル検査実行部と、前記モデル検査実行部から受け取った状態の過去の遷移経路に関する情報に基づいて、前記次状態の探索が省略可能か否かを判断し、前記状態の探索が省略可能か否かを応答する探索要否確認部と、前記モデル検査実行部の出力に基づき、検証の結果を出力する検証結果出力部と、を備えるネットワーク検証装置が提供される。
第2の視点によれば、検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付けるステップと、前記検証情報を用いて、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行って、モデル検査を行うステップと、前記モデル検査の結果に基づいて前記検証対象のネットワークの検証結果を出力するステップと、を含み、前記モデル検査における次状態の状態探索前に、各状態の過去の遷移経路に関する情報に基づいて、前記次状態の探索が省略可能か否かを判断し、省略可能と判断した状態の探索を省略することを特徴とするネットワーク検証方法が提供される。本方法は、検証対象のネットワークのモデル検査を行う装置(ネットワーク検証装置)という、特定の機械に結びつけられている。
第3の視点によれば、検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付ける処理と、前記検証情報を用いて、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行って、モデル検査を行う処理と、前記モデル検査の結果に基づいて前記検証対象のネットワークの検証結果を出力する処理と、さらに、前記モデル検査における次状態の状態探索前に、各状態の過去の遷移経路に関する情報に基づいて、前記各状態の探索が省略可能か否かを判断し、省略可能と判断した状態の探索を省略する処理とを、コンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な(非トランジエントな)記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
本発明によれば、SDNに代表されるネットワークの網羅的な検証の効率向上に貢献することが可能となる。
本発明の一実施形態の構成を示す図である。 本発明の第1の実施形態のネットワーク検証装置の構成を示す図である。 本発明の第1の実施形態のネットワーク検証装置に入力されるネットワークの構成情報(トポロジ情報)の一例を示す図である。 非特許文献2のOpenFlowスイッチの動作モデルの一例である。 非特許文献2のOpenFlowコントローラの動作モデルの一例である。 本発明の第1の実施形態のネットワーク検証装置で用いる端末の動作モデルの記述形式の一例を示す図である。 本発明の第1の実施形態のネットワーク検証装置で用いる制約充足問題の一例を示す図である。 本発明の第1の実施形態のネットワーク検証装置の動作を示す図である。 本発明の第1の実施形態のネットワーク検証装置によるモデル検査を表したサンプルコードである。 図9と等価のフローチャートである。 参考例として示すモデル検査を表したサンプルコードである。 図6の一行目のパケットに対応する制約情報の例を示す図である。 本発明の第1の実施形態のネットワーク検証装置のモデル検査においてスイッチ側に保持されているフローエントリのマッチングルールの例と、このマッチングルールへのヒットによる状態遷移時の制約情報の例を示す図である。 本発明の第1の実施形態のネットワーク検証装置のモデル検査においてスイッチ側に保持されているフローエントリのマッチングルールの例と、Packet−Inメッセージの送信時の制約情報の例を示す図である。 本発明の第1の実施形態のネットワーク検証装置のモデル検査で用いるコントローラにおけるプログラム実行による動作ステップの例と、この動作ステップに対応する制約情報の例を示す図である。 本発明の第1の実施形態のネットワーク検証装置のモデル検査における遷移先状態の導出処理を説明するための図である。 本発明の第2の実施形態において想定するネットワーク機器の動作モデルの一例である。 本発明の第3の実施形態のネットワーク検証装置の構成を示す図である。
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
本発明は、その一実施形態において、図1に示すように、検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付ける検証情報入力部11と、前記検証情報を用いたモデル検査を行うモデル検査実行部12と、探索要否確認部13と、前記モデル検査実行部の出力に基づき、検証の結果を出力する検証結果出力部14と、を備えるネットワーク検証装置にて実現できる。
より具体的には、モデル検査実行部12は、前記検証情報を用いたモデル検査において、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行う。さらに、モデル検査実行部12は、パケットの内容を具体的に扱わないことに対する措置として、次状態の状態探索前に、探索要否確認部13に対し、各状態の過去の遷移経路に関する情報を送り、前記次状態の探索を省略可能か否かを問い合わせながらモデル検査を行う。ここで、「状態の過去の遷移経路」とは、ある「状態」がその状態に至るまでに遷移した1つ以上の「状態」によって構成される経路をいう。
一方、探索要否確認部13は、前記モデル検査実行部から受け取った状態の過去の遷移経路に関する情報に基づいて、前記次状態の探索が省略可能か否かを判断し、前記状態の探索が省略可能か否かを応答する。
以上のように構成することにより、このネットワーク検証装置は、パケットの内容を具体的に扱わずにモデル検査を行い、その際に不要な状態については探索を省略する。これにより、効率よく網羅的な検証を実行することが可能となる
[第1の実施形態]
続いて、検証対象のネットワークが非特許文献1、2のOpenFlowにより制御されるネットワークであることを前提とした本発明の第1の実施形態について図面を参照して詳細に説明する。
[構成の説明]
図2は、本発明の第1の実施形態のネットワーク検証装置の構成を示す図である。図2を参照すると、入力装置から検証情報を受け付けてモデル検査実行部12に送る検証情報入力部11と、探索要否確認部13と相互に情報をやり取りしてモデル検査を実行し、そのモデル検査の結果を、検証結果出力部14に送るモデル検査実行部12と、記憶装置に記憶された内容を参照して状態の探索要否を判断する探索要否確認部13と、出力装置に検証結果を出力する検証結果出力部14と、を含んだネットワーク検証装置1が示されている。
検証情報入力部11は、ネットワークを構成する全ての端末・スイッチ・コントローラの接続関係と、前記端末・コントローラの各動作モデルと、前記ネットワークが満たすべきプロパティと、を定義した検証情報D11(図8参照)を入力として受け付け、モデル検査実行部12に受け渡す。
図3は、検証情報入力部11が受け付ける端末、スイッチ及びコントローラの接続関係を表したトポロジ情報の一例である。例えば、一行目のエントリは、スイッチ1(switch1)と、ホスト1(host1)とが接続されていることを示している。図3のトポロジ情報は、同一のコントローラ(controller1)に接続されている2つのスイッチが互いに接続され、かつ、それぞれホスト(host1、host2)に接続されているという構成を表している。なお、前記接続関係の記述形式は、上記図3に示す形式に限られるものではない。
続いて、「動作モデル」について説明する。本発明の第1の実施形態では、前記ネットワークは非特許文献2のOpenFlowにより制御されるものであり、前記スイッチ・コントローラはOpenFlowの仕様に則っていることを前提とする。
そのため、前記スイッチの動作仕様は図4に示すとおりとなる。即ち、スイッチは、通信パケットの受信を待ち(ステップSS1)、スイッチ自身にインストール済みのフローエントリの中から、受信した通信パケットに適用可能なマッチング条件を持つエントリを探す(ステップSS2)。ここで、適用可能なフローエントリがあればそのアクションフィールドの内容を実行し(ステップSS3)、適用可能なフローエントリがなければ前記通信パケットをコントローラに転送すると共に処理内容を問い合わせる(ステップSS4)。コントローラに処理内容を問い合わせた場合、コントローラの応答を待ち(ステップSS5)、応答内容に応じて処理を実行する(ステップSS6)。以上を繰り返す、というものとし、それを前提に全体の処理が実行される。
検証入力部に入力される前記コントローラの動作モデルはOpenFlowの仕様に則っているものとし、OpenFlowメッセージを受信した場合にどのような動作を実行するかをイベントハンドラとして定義するものであるとする。例えば、Packet−Inメッセージ(スイッチからの問い合わせ)の受信をイベントとする動作(ハンドラ)の定義を含むものである(例えば、図5参照)。OpenFlowメッセージの種類に応じてそれぞれ個別に動作モデルを定義することとするが、全種類に対して前記動作モデルを用意する必要はなく、あるOpenFlowメッセージに対応する動作モデルが定義されていない場合には、OpenFlow仕様で規定されているデフォルトの動作を定義した動作モデルが与えられたものとして処理する。
前記端末の動作モデルは、どのような内容のパケットをどこに送信するか、を動作の単位とした動作シーケンスとして定義されているものとする。定義されるべきパケットの内容は、OpenFlowのマッチングフィールドに指定可能なものであり、例えばパケットの宛先MAC(Media Access Control)アドレス等である。パケットの内容の定義は部分的であってもよく、例えば宛先MACアドレスのみ定義されていてもよい。前記端末の動作モデルの記述形式は、機械的に処理可能であればその形式は限定されないが、例えば図6に示すような形式で記述することが考えられる。図6の例では、端末の送信パケットの一部(ヘッダ)を定義している。例えば、図6の一行目のエントリは、送信元IPアドレスを192.168.1.2とし、宛先IPアドレスを192.168.1.3とし、TCPの宛先ポート番号を8080とするパケットを、ポート1から送信する動作を示している。
前記動作モデルは、ネットワークに含まれる個々の端末及びコントローラについてそれぞれ個別に定義される。ただし、同一の動作を行うもの同士については、同一の動作モデルを参照することで個別の定義を省略してもよい。動作モデルの記述形式は、機械的に処理可能であればその形式は限定されない。例えば状態遷移図や特定のプログラミング言語等で書かれていてもよい。また、ここではOpenFlow 1.0.0に則っているものとして説明するが、ネットワーク検証装置が適切に対応できるのであれば、その他のバージョンのOpenFlow仕様に則っていても問題ない。
また、検証情報D11において、前記プロパティは必ずしも定義されていなくてよい。前記プロパティが定義されていない場合、典型的なプロパティを検証することとし、以降はネットワーク検証装置全体が、検証情報D11に前記典型的なプロパティが定義されているかのように動作する。
モデル検査実行部12は、検証情報入力部11から受け渡された検証情報D11を用いてモデル検査を実行し、前記プロパティの成否と、前記プロパティが満たされない場合にはそれを示す反例と、を含む検証結果D12を出力し、検証結果出力部14に受け渡す。また、モデル検査実行部12は、各状態の探索の要否の判断に必要な制約情報D13を保持し、状態探索の際、探索対象の状態の制約情報D13を探索要否確認部13に受け渡し、探索が必要か否かの確認を依頼する。
探索要否確認部13は、制約充足問題生成部131と、制約充足問題解決部132と、を含む。
制約充足問題生成部131は、モデル検査実行部12から受け渡された制約情報D13から、探索対象の状態が過去に通った探索経路が実際に起こり得るか否かを判定するための制約充足問題D14を生成する。
制約充足問題解決部132は、制約充足問題D14を解き、解を求める。解が求まった場合、前記遷移経路は実際に起こり得るため、モデル検査実行部12に対し、「探索が必要」という回答を返す。一方、解が求まらない場合、前記遷移経路は実際には起こり得ないため、制約充足問題解決部132は、モデル検査実行部12に対し、「探索は不要」という回答を返す。
ここで、「制約充足問題」について説明する。制約充足問題D14は、制約充足問題解決部132の入力形式で記述される。例えば、制約充足問題解決部132がSMT(Satisfiability Modulo Theories)ソルバのYices(Ver. 1.0.37)を用いる場合、制約充足問題は、図7に示すように記述される。
また、制約情報D13は、それそのものが制約充足問題D14であってもよい。例えば、モデル検査実行部12が状態探索時に、状態に保持させる制約情報D13を制約充足問題解決部132の入力言語の形式で保持させ、そのような制約情報D13が探索要否確認部に受け渡される構成になっていてもよい。その場合、制約充足問題生成部131は不要となるため探索要否確認部13から除外し、モデル検査実行部12が探索要否確認部13に問い合わせる際、直接制約充足問題解決部132に制約情報D13(=制約充足問題D14)を渡すようにすればよい。
検証結果出力部14は、モデル検査実行部12の出力である検証結果D12をディスプレイ等に適切な形で出力する。
なお、図2に示したネットワーク検証装置1の各部(処理手段)は、ネットワーク検証装置を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することができる。
[動作の説明]
続いて、本発明の第1の実施形態の動作について詳細に説明する。図8は、本発明の第1の実施形態のネットワーク検証装置の動作を示す図である。図8を参照すると、ユーザは、検証情報D11を作成し、検証情報入力部11に入力する(ステップS11)。
モデル検査実行部12は、検証情報入力部11に入力された検証情報D11を用いてモデル検査を実行し、プロパティの成否と、前記プロパティが満たされない場合にはそれを示す反例と、を含む検証結果D12を生成し、検証結果出力部14に受け渡す(ステップS12)。前記モデル検査において、モデル検査実行部12は、パケットの具体的な内容を保持せず、その内容に依存しない形で状態遷移を行う。ただし、モデル検査実行部12は、その遷移の際に満たされるべき制約を制約情報D13として遷移先の状態に保持させる。状態は、その状態に至るまでの過去のすべての遷移(遷移経路)についてその制約情報を保持する。
前記状態探索を行う際、探索が必要か否か(遷移経路が実際に起こり得るか否か)を判断するため、モデル検査実行部12は、探索要否確認部13に対し、状態が持つ制約情報D13を送り、探索の要否を問い合わせる(ステップS13)。探索要否確認部13から「探索が必要」という回答が返ってきた場合、モデル検査実行部12は、次状態の探索を行い、「探索は不要」という回答が返ってきた場合、次状態の探索を省略する。
ここで、ネットワーク検証装置1の上記モデル検査の基本動作について、図9に示すサンプルコード及びこのサンプルコードと等価の図10のフローチャートを参照しながら説明する。
図9(図10)を参照すると、まず、モデル検査実行部12は、検証対象の状態遷移モデルの初期状態を生成し(ステップS121)、探索状態の集合とする(ステップS122)。
次に、モデル検査実行部12は、探索候補状態の集合から状態を1つ選んで取り出す(ステップS123)。モデル検査実行部12は、その状態が探索済みであるか否かを確認し、探索済みであればステップS123に戻る(ステップS124)。
一方、抽出した状態が探索済みでなければ、モデル検査実行部12は、探索要否確認部13に対し、前記状態を探索すべきか否かを問い合わせ、探索すべきでなければステップS123に戻る(ステップS131)。一方、探索要否確認部13から探索すべきとの回答が得られた場合、モデル検査実行部12は、前記状態がプロパティを満たすか否かを確認し、満たしていなければ反例付きの検証結果D12を生成してモデル検査を終了する(ステップS125)。
一方、前記状態がプロパティを満たしている場合、モデル検査実行部12は、前記状態から遷移可能な次状態を計算し(ステップS126−1)、計算の結果得られたすべての状態を探索状態の集合に追加する(ステップS127)。
モデル検査実行部12は、前記探索状態の集合が空になるまで、ステップS123からS127(ステップS131を含む)を繰り返す。
図11は、一般的なモデル検査の基本動作を表したサンプルコードである。図9と図11を比較すると分かるように、一般的なモデル検査には状態を探索すべきか否かを確認するステップS131に相当する手順が存在しない。
本実施形態のネットワーク検証装置1のモデル検査においては、パケットの内容を具体的に扱わないため、実際には起こり得ない遷移経路を通った(探索が不要な)状態を生成してしまう場合があるが、探索要否確認部13への問い合わせ(ステップS131)を行うことで探索が不要な状態を探索することなくモデル検査を行うことができる(一般的なモデル検査との相違点の1)。
また、本実施形態のネットワーク検証装置1のモデル検査においては、パケットの内容を具体的に扱わずにOpenFlowネットワークのモデル検査を行うため、状態から遷移可能な次状態を計算するステップS126−1の内容も一般的なモデル検査のアルゴリズムとは異なる(一般的なモデル検査との相違点の2)。以下、ステップS126−1の詳細な動作について説明する。
ネットワーク検証装置1のモデル検査における「状態」の定義について説明する。状態は、(T,S,C,R,P,M,Q)の七つの要素の組として定義される。Tは端末の集合であり、Tの要素t(t∈T)は、端末tの動作モデルとして定義されている動作シーケンス中のどの動作を次に行うかを表す変数svを持つ。Sはスイッチの集合であり、Sの要素s(s∈S)はスイッチにインストールされているフローエントリの集合を表す変数Eを持つ。Eの要素e(e∈E)はフローエントリであり、マッチングルール(マッチ条件)の内容を表す値mrとアクションフィールドの内容を表す値afにより(mr, af)の組として定義される。Cはコントローラの集合であり、Cの要素c(c∈C)は、コントローラcの各動作モデルが大域的に扱う変数の集合を表す変数Vと、コントローラcの動作モデル(イベントハンドラ)に関する情報の集合を表す変数Hを持つ。Vの要素v(v∈V)は、コントローラの動作モデルが大域的に扱う変数の1つであり、変数の名前を表す値vnとその変数の値を表す値vvにより(vn,vv)の組として定義される。Hの要素h(h∈H)は、イベントハンドラの名前を表す値hnとそのイベントハンドラの実行回数を表す値hcにより(hn,hc)の組として定義される。Rは制約情報の集合であり、Rの要素r(r∈R)は、個々の制約情報を表す。Pはパケットの集合であり、Pの要素p(p∈P)は、パケットのIDを表す変数idを持つ。MはOpenFlowメッセージの集合であり、Mの要素m(m∈M)は、OpenFlowメッセージの内容を表す変数mvを持つ。Qは通信ポートの集合であり、Qの要素q(q∈Q)は、パケット及びOpenFlowメッセージを格納するFIFO(First In, First Out)キューにより実現される通信ポートである。以上がネットワーク検証装置1のモデル検査における状態の定義である。このうち、c(c∈C)が持つ変数Hと、p(p∈P)が持つ変数id以外は、検証対象であるOpenFlowネットワークの様子を表すためのものである。一方、前記変数Hと変数idはネットワーク検証装置1によるモデル検査を実行するために補助的に用意した情報である。これらについては、実際にこれらを使用した状態遷移の例の説明で詳しく述べる。
次に、ネットワーク検証装置1のモデル検査における「状態遷移」の定義について説明する。ネットワーク検証装置1のモデル検査における状態遷移は、検証対象のOpenFlowネットワーク内に存在する端末、スイッチ及びコントローラのいずれかが、特定の単位の動作を実行することでネットワークの状態が変化する様子を表すものとする。特定の単位の動作とは、具体的には以下の6種類である。
1. 端末のパケット送信
2. 端末のパケット受信
3. スイッチのフローエントリ適用
4. スイッチのPacket−Inメッセージ送信
5. スイッチのOpenFlowメッセージ受信
6. コントローラのプログラム実行
前記1〜6の動作のいずれかを実行することで、モデル検査実行部12は、ある状態から遷移可能な状態を計算し(ステップS126−1)、探索状態の集合に追加する(ステップS127)。ある状態において複数の状態遷移が可能な場合、モデル検査実行部12は、そのいずれかを実行した結果の状態をそれぞれ計算し(ステップS126−1)、それらすべてを探索状態の集合に追加する(ステップS127)。以下、前記6種類の動作についてそれぞれ詳しく説明する。
(1)端末のパケット送信による状態遷移について説明する。モデル検査実行部12のモデル検査において、端末は、検証情報D11に含まれる前記端末自身の動作モデルの実行がすべて完了していない場合、前記動作モデルにおいて定義されているパケット送信動作のうち、前記端末が持つ変数svにより表されるパケット送信動作を実行することが可能である。端末のパケット送信による状態遷移では、モデル検査実行部12は、まず端末t(t∈T)が送信するパケットpを生成してパケットの集合Pに追加し、パケットpにIDを割り振る(pの変数idに特定の値を代入する)。このとき、割り振るIDとして、モデル検査実行部12は、パケットの集合Pを参照し、既存のパケットと重複しない(パケットを一意に特定できる)IDを割り振る。なお、パケットIDは、パケットを一意に特定できれば、どのような方法で割り振ってもよい。例えば、最初に割り振るIDを整数値の1とし、次に2、3、・・・と割り振る値を1ずつ増加させていく方法でIDを割り振る方法が考えられる(以降はそのようにIDを割り振るものとして説明する)。
次に、モデル検査実行部12は、前記動作モデルにおいて定義されている、送信するパケットの内容を参照し、パケットpがその内容を満たすことを表す制約情報rを生成して制約情報の集合Rに追加する。図12は、図6の1行目のパケット送信動作を実行する際、送信されるパケットのIDが1である場合に追加される制約情報を示す。前記パケットのIDは、制約情報がどのパケットの内容を限定するものなのかを特定するために割り振っており、図12に示すように、制約情報内で用いられる変数名に前記パケットのIDを付与(図12の「pid1_」の部分が該当)することで、制約情報がどのパケットの内容を限定するものか特定できるようにしている。ただし、制約情報の保持形式は、機械的に処理可能であり制約充足問題解決部に入力する制約充足問題D14を生成するのに充分な情報を含んでいれば、図12に示すものに限定されず、他の形式でもよい。最後に、モデル検査実行部12は、パケットpを送信先に対応する通信ポートq(q∈Q)に格納する。前記送信先に対応する通信ポートqは、検証情報D11に含まれる、ネットワークを構成する端末、スイッチ及びコントローラの接続関係から導出する。以降の通信ポートへのパケットあるいはOpenFlowメッセージの格納処理においては、モデル検査実行部12は、図3に示した接続関係に基づいて適切な通信ポートを導出するものとする。
以上の手順の結果得られる次状態を、端末のパケット送信による遷移先状態とする。特定の端末が特定の状態において実行可能なパケット送信動作はたかだか1つ(前記端末が持つ変数svにより表されるもののみ)なので、特定の端末のパケット送信動作により得られる遷移先状態はたかだか1つである。
(2)次に、端末のパケット受信による状態遷移について説明する。モデル検査実行部12のモデル検査において、端末は、自身のパケット受信用通信ポートにパケットが1つ以上格納されている場合、パケット受信動作を実行することが可能である。端末のパケット送信による状態遷移では、パケットが1つ以上格納されている端末t(t∈T)のパケット受信用通信ポートq(q∈Q)から、qに格納された時期が最も古いパケットp(p∈P)を1つ取り出し、捨てる。その結果得られる状態を、端末のパケット受信による遷移先状態とする。特定の端末が特定の状態において実行可能なパケット受信動作の数は、たかだか前記端末のパケット受信用通信ポートの数だけなので(前記端末のすべてのパケット受信用通信ポートにパケットが格納されている場合)、特定の端末のパケット送信動作により得られる遷移先状態の数は、たかだか前記端末のパケット受信用通信ポートの数だけである。
(3)次に、スイッチのフローエントリ適用による状態遷移について説明する。モデル検査実行部12のモデル検査において、スイッチは、自身のパケット受信用通信ポートにパケットが1つ以上格納されている場合、フローエントリ適用動作を実行することが可能である。スイッチのフローエントリ適用動作では、まずパケットが1つ以上格納されているスイッチs(s∈S)のパケット受信用通信ポートq(q∈Q)から、qに格納された時期が最も古いパケットp(p∈P)を1つ取り出す。次に、モデル検査実行部12は、適用するフローエントリe(e∈E)を1つ選ぶ。そして、取り出したパケットpのidと選んだフローエントリeのマッチングルールmrの内容を参照し、取り出したパケットpがマッチングルールmrの内容を満たすことを表す制約情報rを生成して制約情報Rに追加する。
例えば、スイッチsが図13上部に示すマッチングルールを持つフローエントリを有している場合、取り出したパケットpのIDが1であり、図13上部のマッチングルールMatchingRule1を定義しているフローエントリを適用するのであれば、モデル検査実行部12は、図13下部に示すような制約情報を生成して制約情報の集合Rに追加する。最後に、選んだフローエントリeのアクションフィールドafに定義された動作を実行する。ここで、アクションフィールドafにパケットpの内容変更動作(Modify−Field)が定義されている場合、パケットpに新しいIDを割り振り、その後でパケットpが前記内容変更動作後の内容を満たすことを表す制約情報rを生成して制約情報の集合Rに追加する。これは、パケットの内容に変更が生じると以前の制約情報が無関係になり、変更前と変更後の制約情報で不整合が生じ得るため、異なるパケットとして扱うことで不整合の発生を防ぐための処理である。以上の手順の結果得られる状態を、スイッチのフローエントリ適用による遷移先状態とする。特定のスイッチが特定の状態において特定のパケットに対し実行可能なフローエントリ適用動作の数は、たかだか前記スイッチが持つフローエントリの数だけなので、特定のスイッチが特定の状態において実行可能なフローエントリ適用動作の数は、たかだか前記スイッチが持つフローエントリの数×前記スイッチのパケット受信用ポートの数だけである(前記スイッチのすべてのパケット受信用通信ポートにパケットが格納されている場合)。よって、特定のスイッチのフローエントリ適用動作により得られる遷移先状態の数は、たかだか前記スイッチが持つフローエントリの数×前記スイッチのパケット受信用ポートの数だけである。
(4)次に、スイッチのPacket−Inメッセージ(OpenFlowメッセージの1つ)送信による状態遷移について説明する。モデル検査実行部12のモデル検査において、スイッチは、自身のパケット受信用通信ポートにパケットが1つ以上格納されている場合、Packet−Inメッセージ送信動作を実行することが可能である。スイッチのPacket−Inメッセージ送信動作では、まずパケットが1つ以上格納されているスイッチs(s∈S)のパケット受信用通信ポートq(q∈Q)から、qに格納された時期が最も古いパケットp(p∈P)を1つ取り出す。次に、パケットpはスイッチsが持つ全てのフローエントリe(e∈E)のマッチングルールmrを満たさないことを表す制約情報rを生成して制約情報の集合Rに追加する。
例えば、スイッチsが図14上部に示すマッチングルールを持つフローエントリを保持し、取り出したパケットpのIDが1であるならば、モデル検査実行部12は、図14下部に示すような制約情報を生成して制約情報の集合Rに追加する。最後に、モデル検査実行部12は、パケットpの情報を含めたPacket−Inメッセージをコントローラに対応する通信ポートq(q∈Q)に格納する。その結果得られる状態を、スイッチのPacket−Inメッセージ送信による遷移先状態とする。特定のスイッチが特定の状態において実行可能なPacket−Inメッセージ送信動作の数は、たかだか前記スイッチのパケット受信用ポートの数だけなので(前記スイッチのすべてのパケット受信用通信ポートにパケットが格納されている場合)、特定のスイッチのPacket−Inメッセージ送信動作により得られる遷移先状態の数は、たかだか前記スイッチのパケット受信用ポートの数だけである。
(5)次に、スイッチのOpenFlowメッセージ受信による状態遷移について説明する。モデル検査実行部12のモデル検査において、スイッチは、自身のOpenFlowメッセージ受信用通信ポートにOpenFlowメッセージが1つ以上格納されている場合、OpenFlowメッセージ受信動作を実行することが可能である。スイッチのOpenFlowメッセージ受信動作では、まずOpenFlowメッセージが1つ以上格納されているスイッチs(s∈S)のOpenFlowメッセージ受信用通信ポートq(q∈Q)から、qに格納された時期が最も古いOpenFlowメッセージm(m∈M)を1つ取り出す。次に、モデル検査実行部12は、OpenFlowメッセージmの内容mvを参照し、OpenFlowの仕様に則ってmvに対応する動作を実行する。その結果得られる状態を、スイッチのOpenFlowメッセージ受信による遷移先状態とする。特定のスイッチが特定の状態において実行可能なOpenFlowメッセージ受信動作の数は、たかだか前記スイッチのOpenFlowメッセージ受信用ポートの数だけなので(前記スイッチのすべてのOpenFlowメッセージ受信用通信ポートにOpenFlowメッセージが格納されている場合)、特定のスイッチのOpenFlowメッセージ受信動作により得られる遷移先状態の数は、たかだか前記スイッチのOpenFlowメッセージ受信用ポートの数だけである。
(6)次に、コントローラのプログラム実行による状態遷移について説明する。モデル検査実行部12のモデル検査において、コントローラは、自身のOpenFlowメッセージ受信用通信ポートにOpenFlowメッセージが1つ以上格納されている場合、プログラム実行動作を実行することが可能である。コントローラのプログラム実行動作では、まずOpenFlowメッセージが1つ以上格納されているコントローラc(c∈C)のOpenFlowメッセージ受信用通信ポートq(q∈Q)から、qに格納された時期が最も古いOpenFlowメッセージm(m∈M)を1つ取り出す。次に、OpenFlowメッセージmの内容mvを参照し、検証情報D11に含まれるコントローラcの動作モデルにおいて定義されているイベントハンドラのうち、mvに対応するものを実行する(定義されていない場合はOpenFlow仕様で規定されているデフォルトの動作を実行する)。前記イベントハンドラの実行においては、イベントハンドラの動作ステップ(例えば状態遷移図における遷移アクションやプログラミング言語におけるステートメント等、最小の動作単位)毎に、前記動作ステップの内容を満たすことを表す制約情報を生成して制約情報の集合Rに追加する。ただし、前記動作ステップにおいて変数の参照及び代入が行われる場合、生成する制約情報においては、イベントハンドラのhnとhcとを参照して変数名にイベントハンドラの名前と実行回数とを付与し、かつ単一代入になるように変数名を置き換える。例えば、図15上部に示す動作ステップ列に対して、前記動作ステップ列を含むイベントハンドラの名前がpacketInでありその実行回数が3回(目)である場合、モデル検査実行部12は、図15下部に示すように変数名を置き換えた制約情報をそれぞれ生成して制約情報の集合Rに追加する。
なお、上記変数名の置き換えは、制約情報がどの変数の内容を利用あるいは限定するものなのかを特定するために行っている。図15の例では、変数名で、制約情報がどの変数の内容を利用あるいは限定するものか特定できるようにしている。ただし、制約情報の保持形式は、機械的に処理可能であり制約充足問題解決部に入力する制約充足問題D14を生成するのに充分な情報を含んでいればよく、図15に示すものに限定されない。以上の手順の結果得られる状態を、コントローラのプログラム実行による遷移先状態とする。ただし、OpenFlowメッセージmの内容mvが特定のパケットの内容を参照するもの(Packet−Inメッセージ等)である場合、前記イベントハンドラを単純に実行するのではなく、参照するパケットpの内容は不特定のものとして扱いイベントハンドラの記号実行を行い、その結果得られる状態すべてを、コントローラのプログラム実行による遷移先状態とする。つまり、パケットpの内容に応じてイベントハンドラの実行結果が変わる場合、それらの結果すべてを遷移先状態として導出するということである。例えば図16に示すように、パケットの内容(図16では宛先TCPポート番号)に応じて分岐先が変わる(結果としてイベントハンドラの実行結果も変わる)場合、それぞれの分岐先(図16ではif文のthen節とelse節)に分岐して個別にイベントハンドラの実行を進め、実行が完了した結果から得られる状態をすべて遷移先状態として導出する。一般に、パケットの内容に依存するイベントハンドラの分岐は1箇所とは限らないため、そのような分岐が複数存在する場合、その全ての分岐を網羅する形でイベントハンドラの実行を行い(つまり記号実行を行い)遷移先状態を導出する。また、特定のパケットの内容を参照するイベントハンドラの記号実行における動作ステップにおいてパケットpの内容を変更する場合、スイッチにおけるパケットの内容変更動作と同様に、パケットpに新しいIDを割り振り、その後でパケットpが前記内容変更動作後の内容を満たすことを表す制約情報rを生成して制約情報の集合Rに追加する。以上の手順の結果得られる状態すべてを、コントローラのプログラム実行による遷移先状態とする。
モデル検査実行部12のモデル検査において、ある状態から遷移可能な状態(遷移先状態)を計算する動作(図9(図10)のステップS126−1)は、以上の6種類の状態遷移を、ネットワークを構成する端末、スイッチ及びコントローラのそれぞれについて計算することで実現される。
再度、図8を参照すると、探索要否確認部13は、まず制約充足問題生成部131が、モデル検査実行部12からの問い合わせを受け付け、その際に受け渡された制約情報D13から制約充足問題D14を生成する(図8のステップS14)。次に制約充足問題解決部132が、制約充足問題D14を解くことでその解の有無D15を求める(図8のステップS15)。制約充足問題解決部132は、モデル検査実行部12に対し、解の有無D15に応じて探索の要否D16を受け渡す(図8のステップS16)。
より具体的には、制約充足問題生成部131は、制約情報D13を制約充足問題解決部132の入力形式に変換することで、制約充足問題D14を生成する。例えば、図12に示す制約情報D13を、図7に示す制約充足問題D14(SMTソルバYicesのVer. 1.0.37の入力形式)に変換する処理が行われる。図12及び図7を対比すれば明らかなとおり、制約情報D13を予め制約充足問題D14の形式と類似の形式で保持しておけば、その変換は容易である。例えば、図12及び図7に示す例では、制約情報D13に予約語defineによる変数の宣言部分(図7の上3行)を追加し、予約語assertを用いて制約情報を制約式として宣言するだけで(図7の下3行)変換可能である。制約充足問題解決部132は、制約充足問題D14を解き、その解の有無D15を求める。解が存在する場合、制約充足問題解決部132は、モデル検査実行部12に対し、探索の要否D16として「探索が必要」という回答を返し、解が存在しない場合、探索の要否D16として「探索は不要」という回答を返す。モデル検査実行部12は、探索の要否D16として、「探索が必要」という回答が返ってくれば次状態の探索(図9(図10)のステップS125以降)を行い、「探索は不要」という回答が返ってくれば状態の探索を行わず、図9(図10)のステップS123に戻る。
検証結果出力部14は、モデル検査実行部12の出力である、プロパティの成否と、プロパティが満たされない場合にはそれを示す反例と、を含む検証結果D12を出力する(ステップS17)。
ユーザは、ステップS17で出力された結果を確認する(ステップS18)。
以上説明したように、本実施形態によれば、OpenFlowネットワークの網羅的な検証が効率的に実施可能になり、不具合を漏れなく検出することができる。その理由は、検証対象であるOpenFlowネットワークのモデル検査を行う際、ネットワーク検証装置1が、OpenFlowネットワークを往来するパケットの具体的な内容を保持せず、その内容に依存しない形で状態遷移を行うようにしたためである。これにより、OpenFlowネットワーク内の端末が送信するパケットの内容の違いを考慮する必要がなく、効率的なモデル検査が実施可能である。また、パケットの内容を具体的に扱わないことで、実際には起こり得ない遷移経路を通った(探索が不要な)状態を生成してしまう場合があるが、これは前記状態遷移の際に、前記状態遷移が実際に起こり得るか否かの判断に必要な制約情報を状態に保持させ、探索要否確認部13で前記制約情報を用いて状態の過去の遷移経路が実際に起こり得るか否かを確認し、実際に起こり得る遷移経路を通った(探索が必要な)状態のみ探索する。これにより、次状態の探索が不要な状態を省略してモデル検査が実施することが可能となっている。
続いて、OpenFlowネットワーク以外のネットワークの検証動作を行う本発明の第2の実施形態について図面を参照して詳細に説明する。以下、前記第1の実施形態と同様の部分は省略し、異なる部分についてのみ説明する。
[構成の説明]
再度、図2を参照して、本発明の第2の実施形態の構成について詳細に説明する。本発明の第2の実施形態の検証情報入力部11は、ネットワークを構成する端末及びネットワーク機器の接続関係と、前記端末の動作モデルと、前記ネットワークが満たすべきプロパティと、を定義した検証情報D11を入力として受け付ける。端末の動作モデルは、第1の実施形態におけるものと同様のものを用いることができる。図17は、本発明の第2の実施形態において想定するネットワーク機器の動作モデルの一例である。図17の例では、ネットワーク機器は、通信パケットPの受信を待ち(ステップSN1)、パケットを受信すると、自装置に設定・実装済みのエントリの中から、受信パケットPの宛先等に適合するエントリを探し(ステップSN2)、受信パケットの宛先等に適合するエントリがあれば、そのエントリに定められた処理内容を実行する(ステップSN3)。一方、受信パケットPの宛先等に適合するエントリがない場合、ネットワーク機器は、デフォルトの動作として設定・実装されている処理を実行する(ステップSN4)。ネットワーク機器は、以上を繰り返す、という動作を包含する。また、本実施形態においても、検証情報D11に、前記プロパティは必ずしも定義されていなくてよい。前記プロパティが定義されていない場合、典型的なプロパティを検証することとし、以降はネットワーク検証装置全体が、検証情報D11に前記典型的なプロパティが定義されているかのように動作する。
[動作の説明]
次に、本発明の第2の実施形態の動作について詳細に説明する。本発明の第2の実施形態の動作において、本発明の第1の実施形態の動作と異なる点は、モデル検査実行部12におけるモデル検査の状態及び遷移の定義のみである。その他の部位の動作及びモデル検査実行部12におけるモデル検査の基本動作(図9(図10)に相当する部分)は第1の実施形態と同様であるので省略する。
はじめに、ネットワーク検証装置1のモデル検査における「状態」の定義について説明する。本実施形態における「状態」は、(T,N,R,P,Q)の五つの要素の組として定義される。Tは端末の集合であり、Tの要素t(t∈T)は、端末tの動作モデルとして定義されている動作シーケンス中のどの動作を次に行うかを表す変数svを持つ。
Nはネットワーク機器の集合であり、Nの要素n(n∈N)は、ネットワーク機器に設定・実装されている処理エントリの集合を表す変数Eを持つ。Eの要素e(e∈E)は、パケット処理エントリであり、適用条件を表す値mrと適用処理の内容を表す値afにより(mr, af)の組として定義される。
Rは制約情報の集合であり、Rの要素r(r∈R)は、個々の制約情報を表す。
Pはパケットの集合であり、Pの要素p(p∈P)は、パケットのIDを表す変数idを持つ。
Qは通信ポートの集合であり、Qの要素q(q∈Q)は、パケットを格納するFIFO(First In, First Out)キューにより実現される通信ポートである。以上がネットワーク検証装置2のモデル検査における状態の定義である。このうち、p(p∈P)が持つid以外は検証対象であるネットワークの様子を表すためのものである。一方、前記idはネットワーク検証装置1によるモデル検査を実行するために補助的に用意した情報である。これらの違いについては、実際にこれらを使用した状態遷移の例の説明で詳しく述べる。
続いて、本実施形態のネットワーク検証装置1のモデル検査における状態遷移の定義について説明する。ネットワーク検証装置1のモデル検査における状態遷移は、検証対象のネットワーク内に存在する端末及びネットワーク機器のいずれかが、特定の単位の動作を実行することでネットワークの状態が変化する様子を表すものとする。特定の単位の動作とは、具体的には以下の4種類である。
1. 端末のパケット送信
2. 端末のパケット受信
3. ネットワーク機器のデフォルトでない処理エントリ適用
4. ネットワーク機器のデフォルトの処理エントリ適用
前記動作のいずれかを実行することで、ある状態から遷移可能な状態を計算し(図9(図10)のステップS126−1)、探索状態の集合に追加する(図9(図10)のステップS127)。ある状態において複数の状態遷移が可能な場合は、そのいずれかを実行した結果の状態をそれぞれ計算し(ステップS126−1)、それらすべてを探索状態の集合に追加する(ステップS127)。以上の4種類の動作のうち、端末のパケット送信と端末のパケット受信は第1の実施形態で述べたものと同様なので、以下では残り2種類の動作についてそれぞれ詳しく説明する。
はじめに、ネットワーク機器のデフォルトでない処理エントリ適用による状態遷移について説明する。モデル検査実行部12のモデル検査において、ネットワーク機器は、自身のパケット受信用通信ポートにパケットが1つ以上格納されている場合、デフォルトでない処理エントリ適用動作を実行することが可能である。ネットワーク機器のデフォルトでない処理エントリ適用動作では、モデル検査実行部12は、まずパケットが1つ以上格納されているネットワーク機器n(n∈N)のパケット受信用通信ポートq(q∈Q)から、qに格納された時期が最も古いパケットp(p∈P)を1つ取り出す。次に、モデル検査実行部12は、前記パケットpに適用する処理エントリe(e∈E)を1つ選ぶ。そして、モデル検査実行部12は、取り出したパケットpのidと選んだ処理エントリeの適用条件mrの内容を参照し、取り出したパケットpが適用条件mrの内容を満たすことを表す制約情報rを生成して制約情報Rに追加する。最後に、モデル検査実行部12は、選んだ処理エントリeの適用処理afに定義された動作を実行する。ここで、適用処理afにパケットpの内容変更動作が定義されている場合、パケットpに新しいIDを割り振り、その後でパケットpが前記内容変更動作後の内容を満たすことを表す制約情報rを生成して制約情報の集合Rに追加する。以上の手順の結果得られる状態を、ネットワーク機器のデフォルトでない処理エントリ適用による遷移先状態とする。特定のネットワーク機器が特定の状態において特定のパケットに対し実行可能なデフォルトでない処理エントリ適用動作の数は、たかだか前記ネットワーク機器が持つデフォルトでない処理エントリの数だけなので、特定のネットワーク機器が特定の状態において実行可能なデフォルトでない処理エントリ適用動作の数は、たかだか前記ネットワーク機器が持つデフォルトでない処理エントリの数×前記ネットワーク機器のパケット受信用ポートの数だけである(前記ネットワーク機器のすべてのパケット受信用通信ポートにパケットが格納されている場合)。よって、特定のネットワーク機器のデフォルトでない処理エントリ適用動作により得られる遷移先状態の数は、たかだか前記ネットワーク機器が持つデフォルトでない処理エントリの数×前記ネットワーク機器のパケット受信用ポートの数だけである。
次に、ネットワーク機器のデフォルトの処理エントリ適用による状態遷移について説明する。モデル検査実行部12のモデル検査において、ネットワーク機器は、自身のパケット受信用通信ポートにパケットが1つ以上格納されている場合、デフォルトの処理エントリ適用動作を実行することが可能である。ネットワーク機器のデフォルトの処理エントリ適用動作では、モデル検査実行部12は、まずパケットが1つ以上格納されているネットワーク機器n(n∈N)のパケット受信用通信ポートq(q∈Q)から、qに格納された時期が最も古いパケットp(p∈P)を1つ取り出す。次に、モデル検査実行部12は、パケットpが、ネットワーク機器nが持つすべての処理エントリe(e∈E)の適用条件mrを満たさないことを表す制約情報rを生成して制約情報の集合Rに追加する。最後に、モデル検査実行部12は、デフォルトの処理エントリeの適用処理afに定義された動作を実行する。ここで、適用処理afにパケットpの内容変更動作が定義されている場合、モデル検査実行部12は、パケットpに新しいIDを割り振り、その後でパケットpが前記内容変更動作後の内容を満たすことを表す制約情報rを生成して制約情報の集合Rに追加する。以上の手順の結果得られる状態を、ネットワーク機器のデフォルトの処理エントリ適用による遷移先状態とする。特定のネットワーク機器が特定の状態において実行可能なデフォルトの処理エントリ適用動作の数は、たかだか前記ネットワーク機器のパケット受信用ポートの数だけなので(前記ネットワーク機器のすべてのパケット受信用通信ポートにパケットが格納されている場合)、特定のネットワーク機器のデフォルトの処理エントリ適用動作により得られる遷移先状態の数は、たかだか前記ネットワーク機器のパケット受信用ポートの数だけである。
本発明の第2の実施形態におけるモデル検査実行部12のモデル検査において、ある状態から遷移可能な状態(遷移先状態)を計算する動作(図9(図10)のステップS126−1)は、以上の4種類の状態遷移を、ネットワークを構成する端末及びネットワーク機器のそれぞれについて計算することで実現される。
以上説明したように、本実施形態によれば、OpenFlowネットワーク以外のネットワークについても、効率的に網羅的な検証を実施し、不具合を漏れなく検出することができる。その理由は、本実施形態においても、ネットワークを往来するパケットの具体的な内容を保持せず、その内容に依存しない形で状態遷移を行うようにしたことと、探索が不要な状態を探索することなくモデル検査を実施するようにしたことにある。
[第3の実施形態]
続いて、上記第1、第2の実施形態のユーザインタフェースに改良を加えた本発明の第3の実施形態について図面を参照して詳細に説明する。以下、前記第1の実施形態と同様の部分は省略し、異なる部分についてのみ説明する。
[構成の説明]
図18は、本発明の第3の実施形態のネットワーク検証装置の構成を示す図である。本実施形態の検証情報入力部31は、検証情報受付部311と、検証情報雛形提供部312と、を含む。検証情報受付部311は、ネットワークを構成する端末、スイッチ及びコントローラの接続関係と、前記端末及びコントローラの各動作モデルと、前記ネットワークが満たすべきプロパティと、を定義した検証情報D11を入力として受け付ける。
検証情報雛形提供部312は、ユーザから検証情報の入力を受け付ける際、検証情報D11の一部あるいは全部について典型的な雛形(テンプレート)を提供し、ユーザが前記雛形を選択することで、それを検証情報D11の一部あるいは全部として利用し、検証情報受付部311に入力することが可能な機能を備える。
[動作の説明]
ユーザは、図8のステップS11において、検証情報D11を作成する際、検証情報雛形提供部312から所望の雛形をいくつか選択し、それらを用いて検証情報D11を完成させ、検証情報受付部311に入力する。もちろん、第1の実施形態と同様に、ユーザが雛形を全く用いずに検証情報D11を作成して入力してもよい。その他の動作は、本発明の第1の実施形態と同様のため省略する。
以上のように、本実施形態によれば、ネットワーク検証装置を利用する際の、ユーザの検証情報D11の作成に要する負担を軽減することができる。さらに、本実施形態によれば、前記ユーザの負担軽減の結果として、検証全体の効率を向上させることもできる。もちろん、本実施形態の構成は、OpenFlowネットワーク以外のネットワークを検証する第2の実施形態の構成にも適用できる。
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示した装置の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点によるネットワーク検証装置参照)
[第2の形態]
第1の形態のネットワーク検証装置において、
前記検証情報には、端末、OpenFlowスイッチ及びOpenFlowコントローラを含むネットワークの構成情報と、前記端末及び前記OpenFlowコントローラの動作モデルが定義されているネットワーク検証装置。
[第3の形態]
第1又は第2の形態のネットワーク検証装置において、
前記探索要否確認部は、
前記状態の過去の遷移経路を通る際に満たされるべき制約に関する情報(制約情報)を前記モデル検査実行部から受け取り、前記制約情報から制約充足問題を生成する制約充足問題生成部と、
前記制約充足問題の解を求めることで、前記遷移経路が実際に起こり得るか否かを判断し、前記状態の探索が必要か否かを確認する制約充足問題解決部と、
を備えるネットワーク検証装置。
[第4の形態]
第1から第3いずれか一の形態のネットワーク検証装置において、
前記検証情報の一部として、前記検証対象のネットワークが満たすべきプロパティを、ユーザが定義して入力することが可能であるネットワーク検証装置。
[第5の形態]
第1から第4いずれか一の形態のネットワーク検証装置において、
前記検証情報入力部は、
ユーザに対し、前記検証情報の一部あるいは全部について典型的な内容を定めた雛形を提供し、
前記雛形の選択により、前記検証情報の少なくとも一部の入力を受け付けるネットワーク検証装置。
[第6の形態]
(上記第2の視点によるネットワーク検証方法参照)
[第7の形態]
(上記第3の視点によるプログラム参照)
なお、上記第6、第7の形態は、第1の形態と同様に、第2〜第5の形態に展開することが可能である。
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
1、1A、3 ネットワーク検証装置
11、31 検証情報入力部
12 モデル検査実行部
13 探索要否確認部
14 検証結果出力部
131 制約充足問題生成部
132 制約充足問題解決部
311 検証情報受付部
312 検証情報雛形提供部

Claims (9)

  1. 検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付ける検証情報入力部と、
    前記検証情報を用いたモデル検査において、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行い、かつ、次状態の状態探索前に探索要否確認部に対し、各状態の過去の遷移経路に関する情報を送り、前記次状態の探索を省略可能か否かを問い合わせながらモデル検査を行うモデル検査実行部と、
    前記モデル検査実行部から受け取った状態の過去の遷移経路に関する情報に基づいて、前記次状態の探索が省略可能か否かを判断し、前記状態の探索が省略可能か否かを応答する探索要否確認部と、
    前記モデル検査実行部の出力に基づき、検証の結果を出力する検証結果出力部と、を備えるネットワーク検証装置。
  2. 前記検証情報には、端末、OpenFlowスイッチ及びOpenFlowコントローラを含むネットワークの構成情報と、前記端末及び前記OpenFlowコントローラの動作モデルが定義されている請求項1のネットワーク検証装置。
  3. 前記探索要否確認部は、
    前記状態の過去の遷移経路を通る際に満たされるべき制約に関する情報(制約情報)を前記モデル検査実行部から受け取り、前記制約情報から制約充足問題を生成する制約充足問題生成部と、
    前記制約充足問題の解を求めることで、前記遷移経路が実際に起こり得るか否かを判断し、前記状態の探索が必要か否かを確認する制約充足問題解決部と、
    を備えることを特徴とする請求項1又は2に記載のネットワーク検証装置。
  4. 前記検証情報の一部として、前記検証対象のネットワークが満たすべきプロパティを、ユーザが定義して入力することが可能である請求項1から3のいずれか一に記載のネットワーク検証装置。
  5. 前記検証情報入力部は、
    ユーザに対し、前記検証情報の一部あるいは全部について典型的な内容を定めた雛形を提供し、
    前記雛形の選択により、前記検証情報の少なくとも一部の入力を受け付ける請求項1から4のいずれか一に記載のネットワーク検証装置。
  6. 検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付けるステップと、
    前記検証情報を用いて、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行って、モデル検査を行うステップと、
    前記モデル検査の結果に基づいて前記検証対象のネットワークの検証結果を出力するステップと、を含み、
    前記モデル検査における次状態の状態探索前に、各状態の過去の遷移経路に関する情報に基づいて、前記次状態の探索が省略可能か否かを判断し、省略可能と判断した状態の探索を省略することを特徴とするネットワーク検証方法。
  7. 前記状態の過去の遷移経路を通る際に満たされるべき制約に関する情報(制約情報)を前記モデル検査実行部から受け取り、前記制約情報から制約充足問題を生成するステップと、
    前記制約充足問題の解を求めることで、前記遷移経路が実際に起こり得るか否かを判断し、前記状態の探索が省略可能か否かを確認するステップとを用いて、
    前記状態の探索が省略可能か否かを判断する請求項6のネットワーク検証方法。
  8. 検証対象のネットワークの構成及びネットワークに含まれる機器の動作モデルを定義した検証情報の入力を受け付ける処理と、
    前記検証情報を用いて、前記ネットワークに接続された端末からのパケットの内容を具体的に扱わずに状態遷移を行って、モデル検査を行う処理と、
    前記モデル検査の結果に基づいて前記検証対象のネットワークの検証結果を出力する処理と、さらに、
    前記モデル検査における次状態の状態探索前に、各状態の過去の遷移経路に関する情報に基づいて、前記各状態の探索が省略可能か否かを判断し、省略可能と判断した状態の探索を省略する処理とを、コンピュータに実行させるプログラム。
  9. 前記状態の過去の遷移経路を通る際に満たされるべき制約に関する情報(制約情報)を前記モデル検査実行部から受け取り、前記制約情報から制約充足問題を生成する処理と、
    前記制約充足問題の解を求めることで、前記遷移経路が実際に起こり得るか否かを判断し、前記状態の探索が省略可能か否かを確認する処理とを用いて、
    前記状態の探索が省略可能であるか否かを判断する請求項8のプログラム。
JP2015511274A 2013-04-10 2014-04-09 ネットワーク検証装置、ネットワーク検証方法及びプログラム Pending JPWO2014168164A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013081886 2013-04-10
JP2013081886 2013-04-10
PCT/JP2014/060252 WO2014168164A1 (ja) 2013-04-10 2014-04-09 ネットワーク検証装置、ネットワーク検証方法及びプログラム

Publications (1)

Publication Number Publication Date
JPWO2014168164A1 true JPWO2014168164A1 (ja) 2017-02-16

Family

ID=51689570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015511274A Pending JPWO2014168164A1 (ja) 2013-04-10 2014-04-09 ネットワーク検証装置、ネットワーク検証方法及びプログラム

Country Status (3)

Country Link
US (1) US20160072769A1 (ja)
JP (1) JPWO2014168164A1 (ja)
WO (1) WO2014168164A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016079962A1 (ja) * 2014-11-17 2016-05-26 日本電気株式会社 モデル検査装置、モデル検査方法、および、記憶媒体
US10409705B2 (en) * 2017-04-27 2019-09-10 Nokia Of America Corporation Automated code verification and machine learning in software defined networks
US10528444B2 (en) * 2017-06-19 2020-01-07 Cisco Technology, Inc. Event generation in response to validation between logical level and hardware level
US11188355B2 (en) 2017-10-11 2021-11-30 Barefoot Networks, Inc. Data plane program verification

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005218038A (ja) * 2004-02-02 2005-08-11 Nippon Telegr & Teleph Corp <Ntt> ネットワーク検証方法および装置
JP2011191985A (ja) * 2010-03-15 2011-09-29 Fujitsu Ltd シンボリック実行支援プログラム、方法及び装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487073B2 (en) * 2003-05-21 2009-02-03 At&T Corp. Using symbolic evaluation to validate models that have incomplete information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005218038A (ja) * 2004-02-02 2005-08-11 Nippon Telegr & Teleph Corp <Ntt> ネットワーク検証方法および装置
JP2011191985A (ja) * 2010-03-15 2011-09-29 Fujitsu Ltd シンボリック実行支援プログラム、方法及び装置

Also Published As

Publication number Publication date
US20160072769A1 (en) 2016-03-10
WO2014168164A1 (ja) 2014-10-16

Similar Documents

Publication Publication Date Title
US9331910B2 (en) Methods and systems for automatic generation of routing configuration files
AU2017345769B2 (en) Systems and methods for scalable network modeling
US20140351801A1 (en) Formal verification apparatus and method for software-defined networking
JP6323547B2 (ja) 通信システム、制御装置、通信制御方法、および、プログラム
CN108777629B (zh) 处理规则的修改方法、装置及设备
WO2014168164A1 (ja) ネットワーク検証装置、ネットワーク検証方法及びプログラム
US20170054680A1 (en) Control method, information processing apparatus, and storage medium
CN111835532A (zh) 网络验证的方法和装置
CN105743687B (zh) 节点故障的判断方法及装置
Huang et al. Automatical end to end topology discovery and flow viewer on SDN
Kim et al. Formal verification of SDN-based firewalls by using TLA+
JP6295965B2 (ja) ネットワーク検証装置、ネットワーク検証方法及びプログラム
US11750490B2 (en) Communication coupling verification method, storage medium, and network verification apparatus
JP6524911B2 (ja) ネットワーク制御装置、ネットワーク制御方法およびプログラム
EP3614262A1 (en) Security-aware partitioning of processes
JP6332284B2 (ja) 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム
CN110311828B (zh) 一种网络验证的方法、装置、计算机存储介质及电子设备
JPWO2015107711A6 (ja) 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム
JPWO2014126094A1 (ja) 通信システム、通信方法、制御装置、制御装置の制御方法及びプログラム
WO2023069394A1 (en) Collection of segment routing ipv6 (srv6) network telemetry information
US20230118989A1 (en) Collection of segment routing ipv6 (srv6) network telemetry information
JP2017050708A (ja) 通信システム、制御装置、スイッチ、通信方法及びプログラム
WO2016068238A1 (ja) ネットワークの制御システム、制御装置、ネットワーク情報の管理方法及びプログラム
US10067816B2 (en) Model checking apparatus and method, and storage medium having program stored therein
US10210070B2 (en) Model checking apparatus, model checking method, and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180424

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181016