JPWO2014174720A1 - 経路設定検証装置、制御方法、及びプログラム - Google Patents
経路設定検証装置、制御方法、及びプログラム Download PDFInfo
- Publication number
- JPWO2014174720A1 JPWO2014174720A1 JP2015513487A JP2015513487A JPWO2014174720A1 JP WO2014174720 A1 JPWO2014174720 A1 JP WO2014174720A1 JP 2015513487 A JP2015513487 A JP 2015513487A JP 2015513487 A JP2015513487 A JP 2015513487A JP WO2014174720 A1 JPWO2014174720 A1 JP WO2014174720A1
- Authority
- JP
- Japan
- Prior art keywords
- virtual
- packet
- switch
- test
- route
- 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.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
経路設定検証装置(2000)は、ホスト(10)、スイッチ(20)、及び制御装置(30)を有するネットワークシステム(40)における経路設定の正当性を検証する。トポロジ情報取得部(2020)はトポロジに関する情報を取得する。経路設定情報取得部(2040)は制御装置(30)が経路設定の更新に用いる経路設定情報を取得する。テストヘッダ生成部(2060)は、経路設定情報を用いてテスト用のパケットに持たせるテストヘッダを生成する。テストデータ生成部(2080)は、テストヘッダを用いてシミュレートするパケット列を生成する。スイッチシミュレート部(2120)はスイッチ(20)の動作をシミュレートし、制御装置シミュレート部(2140)は制御装置(30)の動作をシミュレートする。経路設定検証部(2160)はシミュレートされた経路設定の正当性を検証する。
Description
本発明は、ネットワークシステムにおける経路設定を検証する技術に関する。
ネットワークを介して接続されたホスト間で情報をやりとりするネットワークシステムでは、ホスト間でパケットの送受信が行われる。ここで、ホストとは、種々の計算機が備えるネットワークインタフェースのことである。また、パケットとは、ネットワークを介して送受信されるデータのことである。そして、ネットワークシステムでは、スイッチによってパケットの中継が行われる。スイッチは、受信したパケットの送信元や送信先などの情報に基づいて、そのパケットを適切なポートから送信したり、パケットを破棄したりなどする。スイッチは、受信したパケットをどのように中継するのかを表すルールの集合である経路表を保持する。そして、スイッチは、この経路表に従ってパケットの中継を行う。ネットワークシステムにおいて、どのパケットがどのように中継されるのかを表す設定を、そのネットワークシステムにおける経路設定と呼ぶ。経路設定は、そのネットワークシステムに含まれる各スイッチの経路表の集合によって定まる。
また近年、経路設定を事前に行わず、各スイッチからの要求に応じて、外部の装置(以下、制御装置)が経路設定を動的に行う技術が用いられている。この技術は、SDN (Software-Defined Network)と呼ばれる。例えば、次のような方法で経路設定が行われる。まず、パケットを受信したスイッチは、そのパケットを中継するためのルールが経路表に設定されているか否かを判定する。そして、そのパケットを中継するためのルールが経路表に設定されていない場合、制御装置に対し、経路表の設定等を求める制御要求を送信する。そして、制御要求を受信した制御装置が、そのスイッチに対して経路表の設定などを行う。このような流れにより、ネットワークシステムの経路設定が更新されていく。
ネットワークシステムにおいて、経路設定の正当性を検証することは重要である。経路設定が誤っていると、パケットが正しい送信先へ中継されないため、ホスト間で正しく情報をやりとりできないためである。また、上述のように動的に経路設定を行うシステムでは、ネットワークシステムを流れるパケットの内容やパケットが送信される順番などに依存して、経路設定が変化する。そのため、動的に経路設定を行うネットワークシステムにおいては、設定されうる様々な経路設定それぞれについて、正当性を検証する必要がある。
例えば非特許文献1は、SDN の一実装である OpenFlow を用いるネットワークシステムにおいて、制御装置が行う処理に誤りがないかを検証する装置を開示している。この装置は、Symbolic Execution と呼ばれる方法を用いて、ネットワークシステムの状態の遷移をシミュレートする。ここで、ネットワークシステムの状態は、各スイッチが保持する経路表の状態やパケットキューの状態などの組み合わせで表される。
Marco Canini、外4名、「A NICE Way to Test OpenFlow Applications」、EPFL Technical Report EPFL-REPORT-169211、2011 年
Peyman Kazemian、外2名、「Header Space Analysis: Static Checking For Networks」、Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation(NSDI '12)、2012 年、pp. 9-22
本発明者は、動的に経路設定が行われるネットワークシステムにおいて、経路設定の正当性の検証にかかる時間を短くする方法を検討した。非特許文献1が開示している装置は、ネットワークシステムにおいて設定されうる各経路設定を割り出すために、多くの時間を要する。例えばこの装置は、ホストで ping が5回実行されたことをシミュレーションするために30時間を要する。この原因の1つは、パケットキューの状態など、経路設定の更新に関わらない状態まで考慮しているために、ネットワークシステムがとりうる状態の数が多くなってしまうことが挙げられる。また、Symbolic Execution という、実行に長い時間を要する手法を用いてシミュレーションを行っていることも原因の一つと考えられる。
本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、動的に経路設定を行うネットワークシステムにおける経路設定の正当性を、短い時間で検証する技術を提供することである。
本発明が提供する経路設定検証装置は、ホスト、スイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証する。前記ホストは、少なくとも1つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信する。前記スイッチは、前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、受信した前記パケットを中継するための中継ルールを示す経路表を保持し、受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行う。前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行う。当該経路設定検証装置は、前記ホストと前記スイッチとの接続関係を示すトポロジ情報を取得する、トポロジ情報取得手段と、前記経路設定情報を取得する経路設定情報取得手段と、複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段と、前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成手段と、前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成手段と、前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレート手段と、シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレート手段と、前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証手段と、を有する。また、前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示す。また、前記スイッチシミュレート手段は、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする。
本発明が提供する制御方法は、コンピュータによって実行される。この制御方法は、前記コンピュータが、本発明が提供する経路設定検証装置が検証対象としているネットワークシステムにおける経路設定の検証を行う方法である。当該制御方法は、前記ホストと前記スイッチとの接続関係を示すトポロジ情報を取得する、トポロジ情報取得ステップと前記経路設定情報を取得する経路設定情報取得ステップと、前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成ステップと、前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成ステップと、前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレートステップと、シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレートステップと、前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証ステップと、を有する。また、前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示す。また、前記スイッチシミュレートステップは、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする。
本願発明が提供するプログラムは、コンピュータを、本発明が提供する経路設定検証装置として機能させるプログラムである。当該プログラムは、前記コンピュータに、本発明が提供する経路設定検証装置の各機能構成部が有する機能を持たせる。
本発明によれば、動的に経路設定を行うネットワークシステムにおける経路設定の正当性を、短い時間で検証する技術が提供される。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
[実施形態1]
図1は、実施形態1に係る経路設定検証装置2000を示すブロック図である。図1において、矢印の流れは情報の流れを示している。また、図1において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
図1は、実施形態1に係る経路設定検証装置2000を示すブロック図である。図1において、矢印の流れは情報の流れを示している。また、図1において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
経路設定検証装置2000は、図2に示すネットワークシステム40の経路設定を検証する。ネットワークシステム40は、ホスト10、スイッチ20、及び制御装置30を含む。経路設定検証装置2000は、ネットワークシステム40の経路設定を検証するために、ネットワークシステム40の動作をシミュレートする。ここで、ネットワークシステム40における経路設定とは、各スイッチが各パケットをどのように中継するのかを表す設定である。言い換えると、ネットワークシステム40における経路設定は、各パケットがどの経路を通ってネットワークシステム40内を流れていくかを示す。
以下、まずは、経路設定検証装置2000がシミュレートするネットワークシステム40について説明する。
<ホスト10>
ホスト10は、PC(Personal Computer)やサーバなどの計算機が備えるネットワークインタフェースである。例えばネットワークインタフェースは、ネットワークインタフェースカード(NIC)である。1つの PC が複数のネットワークインタフェースを備えている場合、それら各ネットワークインタフェースは、それぞれ異なるホスト10として扱われる。
ホスト10は、PC(Personal Computer)やサーバなどの計算機が備えるネットワークインタフェースである。例えばネットワークインタフェースは、ネットワークインタフェースカード(NIC)である。1つの PC が複数のネットワークインタフェースを備えている場合、それら各ネットワークインタフェースは、それぞれ異なるホスト10として扱われる。
ホスト10は、少なくとも1つのスイッチ20と接続されている。そして、接続されているスイッチ20に対して、パケットを送信する。ここで、パケットは、ネットワークを介して送信されるデータである。パケットは、各種情報を示すヘッダを含む。ヘッダに示される情報については、後述する。
<スイッチ20>
スイッチ20は、制御装置30と接続されている。また、スイッチ20は、少なくとも1つのホスト10又は他のスイッチ20と接続されている。スイッチ20は、中継ルールを示す経路表を保持する。中継ルールは、受信したパケットを中継するためのルールである。例えば中継ルールは、受信したパケットのヘッダが示す MAC(Media Access Control)アドレスやIP(Internet Protocol )アドレスに応じた中継方法を示すルールや、パケットを受信した入力ポートに応じた中継方法を示すルールなどである。例えば中継ルールは、「受信したパケットのヘッダが示す宛先 MAC(Media Access Control)アドレスが XX:XX:XX:XX:XX:XX である場合、そのパケットをポート2から出力する」といったルールを示す。
スイッチ20は、制御装置30と接続されている。また、スイッチ20は、少なくとも1つのホスト10又は他のスイッチ20と接続されている。スイッチ20は、中継ルールを示す経路表を保持する。中継ルールは、受信したパケットを中継するためのルールである。例えば中継ルールは、受信したパケットのヘッダが示す MAC(Media Access Control)アドレスやIP(Internet Protocol )アドレスに応じた中継方法を示すルールや、パケットを受信した入力ポートに応じた中継方法を示すルールなどである。例えば中継ルールは、「受信したパケットのヘッダが示す宛先 MAC(Media Access Control)アドレスが XX:XX:XX:XX:XX:XX である場合、そのパケットをポート2から出力する」といったルールを示す。
スイッチ20は、受信したパケットの中継を行う。受信したパケットに関する中継ルールが経路表に含まれている場合、スイッチ20は、その中継ルールに従ってパケットの送信や破棄を行う。一方、受信したパケットに関する中継ルールが経路表に含まれていない場合、スイッチ20は、制御装置30に対して制御要求を送信する。制御要求は、制御装置30に対して、スイッチ20が受信したパケットに関する情報を伝え、それに対する制御処理の要求を示す。例えば制御要求は、スイッチ20が受信したパケットのヘッダに含まれる情報を示す。また例えば、制御要求は、パケットを受信したスイッチ20のポートの、ポート番号を示す。
<制御装置30>
制御装置30は、スイッチ20の動作を制御する装置である。制御装置30は、スイッチ20から制御要求を受信し、受信した制御要求に応じて、スイッチ20が保持する経路表の更新などを行う。
制御装置30は、スイッチ20の動作を制御する装置である。制御装置30は、スイッチ20から制御要求を受信し、受信した制御要求に応じて、スイッチ20が保持する経路表の更新などを行う。
制御装置30は、経路設定情報に基づいて動作する。経路設定情報は、イベントハンドラと、そのイベントハンドラが実行される条件である実行条件とを対応付ける情報である。例えば経路設定情報は、プログラムの形で表される。制御装置30は、スイッチ20から制御要求を受信した場合、その制御要求が示す情報と、経路設定情報が示す実行条件とを比較する。そして、制御装置30は、制御要求が示す情報が実行条件を満たす場合、その実行条件と対応するイベントハンドラが示す処理を行う。
イベントハンドラが行う処理は、例えばスイッチ20が保持する経路表の更新である。具体的には、制御装置30は、イベントハンドラを実行することで、中継ルールをスイッチ20の経路表に追加する。スイッチ20の経路表が更新されることにより、ネットワークシステム40における経路設定が更新される。なおイベントハンドラは、スイッチ20の経路表を更新する代わりに、スイッチ20に対して中継ルールの送信を行ってもよい。この場合、中継ルールを受信したスイッチ20が、自身で経路表の更新を行う。
経路設定検証装置2000は、上述した特徴を持つネットワークシステム40における経路設定の検証を行う。そのために、経路設定検証装置2000は、トポロジ情報取得部2020、経路設定情報取得部2040、テストヘッダ生成部2060、テストデータ生成部2080、仮想経路表集合格納部2100、スイッチシミュレート部2120、制御装置シミュレート部2140、及び経路設定検証部2160を有する。以下、これらの機能構成部について、詳細に説明する。
<トポロジ情報取得部2020>
トポロジ情報取得部2020は、トポロジ情報を取得する。トポロジ情報は、ホスト10とスイッチ20との接続関係を示す。トポロジ情報は、ホスト10が、どのスイッチ20のどのポートと接続されているのかを示す。また、スイッチ20同士が接続されている場合、トポロジ情報は、そのスイッチ20同士の接続関係も示す。この場合、トポロジ情報は、どのスイッチ20のどのポートが、他のスイッチ20のどのポートと接続されているかを示す。トポロジ情報はさらに、ホスト10の MAC アドレスや IP アドレスを示してもよい。
トポロジ情報取得部2020は、トポロジ情報を取得する。トポロジ情報は、ホスト10とスイッチ20との接続関係を示す。トポロジ情報は、ホスト10が、どのスイッチ20のどのポートと接続されているのかを示す。また、スイッチ20同士が接続されている場合、トポロジ情報は、そのスイッチ20同士の接続関係も示す。この場合、トポロジ情報は、どのスイッチ20のどのポートが、他のスイッチ20のどのポートと接続されているかを示す。トポロジ情報はさらに、ホスト10の MAC アドレスや IP アドレスを示してもよい。
<経路設定情報取得部2040>
経路設定情報取得部2040は、経路設定情報を取得する。これは、経路設定検証装置2000がシミュレートする対象の制御装置30が用いる経路設定情報と同内容の情報である。例えば経路設定情報取得部2040は、シミュレートする対象の制御装置30から、経路設定情報を取得する。また、経路設定情報取得部2040は、制御装置30以外の別の装置から経路設定情報を取得してもよいし、人手による経路設定情報の入力を受け付けてもよい。
経路設定情報取得部2040は、経路設定情報を取得する。これは、経路設定検証装置2000がシミュレートする対象の制御装置30が用いる経路設定情報と同内容の情報である。例えば経路設定情報取得部2040は、シミュレートする対象の制御装置30から、経路設定情報を取得する。また、経路設定情報取得部2040は、制御装置30以外の別の装置から経路設定情報を取得してもよいし、人手による経路設定情報の入力を受け付けてもよい。
<テストヘッダ生成部2060>
テストヘッダ生成部2060は、経路設定情報取得部2040が取得した経路設定情報を用いて、テストヘッダを生成する。テストヘッダは、経路設定情報が示すいずれかの実行条件を満たす情報を含む。経路設定情報取得部2040は、経路設定情報が複数の実行条件を示す場合、それら複数の実行条件それぞれからテストヘッダを生成する。テストヘッダは、シミュレートするパケットのヘッダに含める情報である。
テストヘッダ生成部2060は、経路設定情報取得部2040が取得した経路設定情報を用いて、テストヘッダを生成する。テストヘッダは、経路設定情報が示すいずれかの実行条件を満たす情報を含む。経路設定情報取得部2040は、経路設定情報が複数の実行条件を示す場合、それら複数の実行条件それぞれからテストヘッダを生成する。テストヘッダは、シミュレートするパケットのヘッダに含める情報である。
ここで、1つの実行条件を満たす情報が複数ある場合、テストヘッダ生成部2060は、そのいずれかの情報を用いてテストヘッダを生成する。例えば、実行条件が、「送信元 IP アドレスが 192.168.0.* である(*はワイルドカード)」のような場合、実行条件を満たす送信元 IP アドレスは複数ある。この場合、テストヘッダ生成部2060は、この条件を満たす IP アドレスの中から、適当なものを選択して用いる。例えば、テストヘッダ生成部2060は、実行条件を満たす情報の中の一つを、ランダムに選択する。その他にも例えば、テストヘッダ生成部2060は、実行条件を満たす情報を、トポロジ情報を用いて決定する。例えば実行条件を満たすための情報が、送信元ホストの IP アドレスであるとする。さらに、トポロジ情報が、ホスト10の IP アドレスを示しているとする。この場合、実行条件を満たす複数の IP アドレスの中にホスト10の IP アドレスが含まれていたら、テストヘッダ生成部2060は、このホスト10の IP アドレスを、テストヘッダが示す情報として用いる。
図3は、テストヘッダ生成部2060によって生成されるテストヘッダの集合を、テーブル形式で例示した図である。このテーブルを、テストヘッダテーブル200と表記する。テストヘッダテーブル200は、ヘッダ ID 202及びヘッダ情報204を有する。ヘッダ ID 202は、テストヘッダの ID である。ヘッダ情報204は、テストヘッダが示す情報である。例えば、図3の1行目のレコードは、宛先であるホスト10の MAC アドレスが XX:XX:XX:XX:XX:XX であることを示している。また、図3の2行目のレコードは、送信元であるホスト10の IP アドレスが 192.168.0.1 であることを示している。
<テストデータ生成部2080>
テストデータ生成部2080は、テストデータを生成する。テストデータは、ネットワークシステム40の動作をシミュレートするために利用する、仮想的なパケット群である。
テストデータ生成部2080は、テストデータを生成する。テストデータは、ネットワークシステム40の動作をシミュレートするために利用する、仮想的なパケット群である。
まず、テストデータ生成部2080は、ホスト10の集合と、テストヘッダ生成部2060が生成したテストヘッダの集合との、直積集合を生成する。この直積集合を、テストパケット集合と表記する。また、テストパケット集合に含まれる各要素を、テストパケットと表記する。テストパケットは、「ホスト10、テストヘッダ」の組み合わせである。例えば、テストパケットAが「ホストA、テストヘッダA」の組み合わせであるとする。このテストパケットAは、テストヘッダAによって示される情報をヘッダに含むパケットが、ホストAから送信されたことをシミュレートするために用いられる。経路設定検証装置2000は、「ホスト10、テストヘッダ」の全ての組み合わせを用いて、ネットワークシステム40の動作をシミュレートする。具体的には、経路設定情報が示すイベントハンドラのいずれかを実行するパケットが、ホスト10から送信されたことをシミュレートする。
図4は、テストデータ生成部2080によって生成されるテストパケット集合をテーブル形式で例示する図である。このテーブルを、テストパケットテーブル300と表記する。テストパケットテーブル300は、パケット ID 302、ホスト ID 304、及びヘッダ ID 306を示す。パケット ID 302は、テストパケットの ID を示す。ホスト ID 304は、テストパケットが示すホスト10の ID である。ヘッダ ID 306は、テストパケットが示すテストヘッダの ID である。テストパケットテーブルの各レコードが表すテストパケットは、ヘッダ ID 306で特定されるテストヘッダが示す情報をヘッダに含むパケットが、ホスト ID 304で特定されるホスト10から送信されたことをシミュレートするために用いられる。
さらに、テストデータ生成部2080は、テストパケット集合に含まれる全てのテストパケットを用いて生成できる全ての順列を生成する。この各順列を、テストパケット列と表記する。例えばテストパケット集合にn個のテストパケットが含まれているとすると、テストパケット列の個数はn!個となる。例えばテストデータ生成部2080は、テストパケットの ID を順位付けて並べることで、テストパケット列を生成する。例えば、テストパケット集合が「host1、host2、host3」である場合、テストデータ生成部2080は、「host1、host2、host3」、「host1、host3、host2」、「host2、host1、host3」、「host2、host3、host1」、「host3、host1、host2」、及び「host3、host2、host1」という6個のテストパケット列を生成する。例えば、経路設定検証装置2000がテストパケット列「host1、host2、host3」についてシミュレーションを行う場合、ID がhost1のテストパケット、ID がhost2のテストパケット、ID がhost3のテストパケットという順でテストパケットが送信されたことをシミュレートする。
<仮想経路表集合格納部2100>
経路設定検証装置2000は、ネットワークシステム40の動作をシミュレートするために、各スイッチ20が保持する経路表の変化をシミュレートする。そのために、仮想経路表集合格納部2100は、経路設定検証装置2000によってシミュレートされた各経路表の集合を格納する。ここで、経路設定検証装置2000によってシミュレートされた経路表を、仮想経路表と表記する。仮想経路表は、1つのスイッチ20と対応付けられる。スイッチ20と対応付けられた仮想経路表は、そのスイッチ20が保持する経路表を、経路設定検証装置2000がシミュレートしたものである。仮想経路表集合格納部2100が格納する仮想経路表の集合を、仮想経路表集合と表記する。
経路設定検証装置2000は、ネットワークシステム40の動作をシミュレートするために、各スイッチ20が保持する経路表の変化をシミュレートする。そのために、仮想経路表集合格納部2100は、経路設定検証装置2000によってシミュレートされた各経路表の集合を格納する。ここで、経路設定検証装置2000によってシミュレートされた経路表を、仮想経路表と表記する。仮想経路表は、1つのスイッチ20と対応付けられる。スイッチ20と対応付けられた仮想経路表は、そのスイッチ20が保持する経路表を、経路設定検証装置2000がシミュレートしたものである。仮想経路表集合格納部2100が格納する仮想経路表の集合を、仮想経路表集合と表記する。
図5は、仮想経路表集合格納部2100が格納する仮想経路表集合の構成をテーブル形式で例示する図である。このテーブルを、仮想経路表集合テーブル400と表記する。仮想経路表集合テーブル400の各レコードは、スイッチ ID 402で特定されるスイッチの仮想経路表が、中継ルール404に示す中継ルールを含んでいることを表す。ここで、仮想経路表集合テーブル400に含まれるレコードのうち、同一のスイッチ ID 402を有するレコードのみの集合は、そのスイッチ ID 402で特定されるスイッチ20に対応する仮想経路表を表す。
<スイッチシミュレート部2120>
スイッチシミュレート部2120は、スイッチ20の動作をシミュレートする。スイッチシミュレート部2120は、スイッチ20の動作をシミュレートするために、そのスイッチ20に対応する仮想経路表を用いる。
スイッチシミュレート部2120は、スイッチ20の動作をシミュレートする。スイッチシミュレート部2120は、スイッチ20の動作をシミュレートするために、そのスイッチ20に対応する仮想経路表を用いる。
スイッチシミュレート部2120は、以下の流れで動作する。まず、スイッチシミュレート部2120は、テストデータ生成部2080によって生成されたテストデータから、テストパケット列を1つ取り出す。次に、スイッチシミュレート部2120は、取り出した1つのテストパケット列から、テストパケットを順次取り出す。ここで、スイッチシミュレート部2120は、テストパケットを、テストパケット列の中で順位付けられた順に取り出す。そして、テストパケットそれぞれについて、スイッチ20の動作を順次シミュレートする。スイッチシミュレート部2120は、1つのテストパケット列に含まれる全てのテストパケットについて、スイッチ20の動作をシミュレートし終えたら、テストデータから次のテストパケット列を取り出す。なお、スイッチシミュレート部2120は、1つのテストパケット列に関するシミュレーションを行う前に、仮想経路表集合格納部2100に格納されている各仮想経路表を初期化する。こうすることで、各テストパケット列について、経路設定が初期状態からどのように遷移していくかをシミュレートする。なお、初期状態における仮想経路表の内容は、初期状態における各スイッチ20の経路表の内容と同様である。例えば初期状態の経路表は、中継ルールを1つも持たない。その他にも例えば、初期状態の経路表は、運用前に予め与えられた中継ルールを持つ。例えば、「他のいずれの中継ルールにも当てはまらないパケットは破棄する」という中継ルールを運用前に予め設定しておくことで、想定外のパケットを全て破棄するようにしておくことがある。
スイッチシミュレート部2120は、以上の動作を全てのテストパケット列について繰り返す。ここで、スイッチシミュレート部2120がテストパケット列を取り出す順番は任意である。
次に、スイッチシミュレート部2120が1つのテストパケットについて行うスイッチ20の動作のシミュレートについて説明する。まず、スイッチシミュレート部2120は、テストパケットが示すホスト10と接続されているスイッチ20を特定する。そして、テストパケットが示すテストヘッダに含まれる情報を有するパケットを、スイッチ20が受信した場合を想定したシミュレートを行う。具体的には、そのパケットに対するスイッチ20が行う中継処理をシミュレートする。この中継処理が制御要求の送信を伴う場合、後述する制御装置シミュレート部2140が、この制御要求を処理する制御処理をシミュレートする。
<制御装置シミュレート部2140>
制御装置シミュレート部2140は、制御装置によって行われる動作をシミュレートする。具体的には、スイッチシミュレート部2120によってシミュレートされた中継処理が制御要求の送信を伴う場合に、制御装置30がその制御要求に対して行う制御処理をシミュレートする。この制御処理が経路表の更新を伴う場合、制御装置シミュレート部2140は、この経路表をシミュレートした仮想経路表の内容を更新する。更新の内容は、制御処理が経路表に加える更新の内容と同等である。
制御装置シミュレート部2140は、制御装置によって行われる動作をシミュレートする。具体的には、スイッチシミュレート部2120によってシミュレートされた中継処理が制御要求の送信を伴う場合に、制御装置30がその制御要求に対して行う制御処理をシミュレートする。この制御処理が経路表の更新を伴う場合、制御装置シミュレート部2140は、この経路表をシミュレートした仮想経路表の内容を更新する。更新の内容は、制御処理が経路表に加える更新の内容と同等である。
<経路設定検証部2160>
経路設定検証部2160は、トポロジ情報と仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する。ここで、経路設定が不正であるとは、例えば、スイッチ20が中継すべきパケットを中継しない場合や、パケットがネットワークシステム40の中をループしてしまう場合などがある。例えば、経路設定情報が示す実行条件に誤りがあると、実行されるべきイベントハンドラが実行されない。そのために、スイッチ20が中継すべきパケットに関する中継ルールがスイッチ20の経路表に追加されない。その結果、スイッチ20は、中継すべきパケットを受信しても、そのパケットに関する中継ルールを取得できず、結果としてそのパケットを中継できない。したがって、このパケットは、経路設定が正しくされていれば到達するはずの宛先に到達しないことになる。これは、ホスト間で正しく情報の伝送が行えないことを意味する。
経路設定検証部2160は、トポロジ情報と仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する。ここで、経路設定が不正であるとは、例えば、スイッチ20が中継すべきパケットを中継しない場合や、パケットがネットワークシステム40の中をループしてしまう場合などがある。例えば、経路設定情報が示す実行条件に誤りがあると、実行されるべきイベントハンドラが実行されない。そのために、スイッチ20が中継すべきパケットに関する中継ルールがスイッチ20の経路表に追加されない。その結果、スイッチ20は、中継すべきパケットを受信しても、そのパケットに関する中継ルールを取得できず、結果としてそのパケットを中継できない。したがって、このパケットは、経路設定が正しくされていれば到達するはずの宛先に到達しないことになる。これは、ホスト間で正しく情報の伝送が行えないことを意味する。
なお、各経路設定が正当であるか否かを判定する方法は周知技術であるため、説明を省略する。この方法は、例えば非特許文献2に開示されている。
<ハードウエア構成>
経路設定検証装置2000が有する各機能構成部は、例えば、個々に又は複数組み合わせられた状態で、少なくとも1つのハードウエア構成要素として実現される。その他にも例えば、各機能構成部は、少なくとも1つのソフトウエア構成要素として実現される。その他にも例えば、各機能構成部は、ハードウエア構成要素とソフトウエア構成要素の組み合わせにより実現される。
経路設定検証装置2000が有する各機能構成部は、例えば、個々に又は複数組み合わせられた状態で、少なくとも1つのハードウエア構成要素として実現される。その他にも例えば、各機能構成部は、少なくとも1つのソフトウエア構成要素として実現される。その他にも例えば、各機能構成部は、ハードウエア構成要素とソフトウエア構成要素の組み合わせにより実現される。
図6は、経路設定検証装置2000のハードウエア構成を例示するブロック図である。図6において、経路設定検証装置2000は、バス1020、プロセッサ1040、メモリ1060、及びストレージ1080を有する。
バス1020は、プロセッサ1040、メモリ1060及びストレージ1080が、相互にデータを送受信するためのデータ伝送路である。プロセッサ1040は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ1060は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ1080は、例えばメモリカード、ハードディスク、又は SSD (Solid State Drive) などの記憶装置である。また、ストレージ1080は、RAM や ROM 等のメモリであってもよい。
トポロジ情報取得モジュール1220は、経路設定検証装置2000に、トポロジ情報取得部2020の機能を持たせるためのプログラムである。プロセッサ1040は、トポロジ情報取得モジュール1220を実行することで、トポロジ情報取得部2020の機能を実現する。
経路設定情報取得モジュール1240は、経路設定検証装置2000に、経路設定情報取得部2040の機能を持たせるためのプログラムである。プロセッサ1040は、経路設定情報取得モジュール1240を実行することで、経路設定情報取得部2040の機能を実現する。
テストヘッダ生成モジュール1260は、経路設定検証装置2000に、テストヘッダ生成部2060の機能を持たせるためのプログラムである。プロセッサ1040は、テストヘッダ生成モジュール1260を実行することで、テストヘッダ生成部2060の機能を実現する。
テストデータ生成モジュール1280は、経路設定検証装置2000に、テストデータ生成部2080の機能を持たせるためのプログラムである。プロセッサ1040は、テストデータ生成モジュール1280を実行することで、テストデータ生成部2080の機能を実現する。
スイッチシミュレートモジュール1320は、経路設定検証装置2000に、スイッチシミュレート部2120の機能を持たせるためのプログラムである。プロセッサ1040は、スイッチシミュレートモジュール1320を実行することで、スイッチシミュレート部2120の機能を実現する。
制御装置シミュレートモジュール1340は、経路設定検証装置2000に、制御装置シミュレート部2140の機能を持たせるためのプログラムである。プロセッサ1040は、制御装置シミュレートモジュール1340を実行することで、制御装置シミュレート部2140の機能を実現する。
経路設定検証モジュール1360は、経路設定検証装置2000に、経路設定検証部2160の機能を持たせるためのプログラムである。プロセッサ1040は、経路設定検証モジュール1360を実行することで、経路設定検証部2160の機能を実現する。
例えばプロセッサ1040は、上記各モジュールをメモリ1060上に読み出して実行する。ただし、プロセッサ1040は、上記各モジュールを、メモリ1060上に読み出さずに実行してもよい。
ストレージ1080は、仮想経路表集合1300を格納する。こうすることで、ストレージ1080は、仮想経路表集合格納部2100の機能を実現する。また、ストレージ1080は、上記各モジュールを格納する。
経路設定検証装置2000のハードウエア構成は、図6に示した構成に限定されない。例えば、各モジュールはメモリ1060に格納されてもよい。この場合、経路設定検証装置2000は、ストレージ1080を備えていなくてもよい。また、経路設定検証装置2000は、複数の計算機で構成されてもよい。例えば、経路設定検証装置2000は、ネットワークシステム40の動作のシミュレートを行うトポロジ情報取得部2020、経路設定情報取得部2040、テストヘッダ生成部2060、テストデータ生成部2080、仮想経路表集合格納部2100、スイッチシミュレート部2120、及び制御装置シミュレート部2140を備える計算機と、シミュレーションによって生成された各経路設定の正当性を検証する経路設定検証部2160を備える別の計算機とで構成される。
<処理の流れ>
図7及び図8を用いて、実施形態1の経路設定検証装置2000によって実行される処理の流れを説明する。図7は、実施形態1の経路設定検証装置2000が行う処理の全体である全体処理の流れを例示する。図8は、1つのテストパケットに関する処理であるパケット処理の流れを例示する。パケット処理は、全体処理の中で呼び出される。
図7及び図8を用いて、実施形態1の経路設定検証装置2000によって実行される処理の流れを説明する。図7は、実施形態1の経路設定検証装置2000が行う処理の全体である全体処理の流れを例示する。図8は、1つのテストパケットに関する処理であるパケット処理の流れを例示する。パケット処理は、全体処理の中で呼び出される。
<<全体処理>>
まず、図7を用いて、全体処理の流れを説明する。ステップS102において、トポロジ情報取得部2020は、トポロジ情報を取得する。ステップS104において、経路設定情報取得部2040は、経路設定情報を取得する。ステップS106において、テストヘッダ生成部2060は、テストヘッダを生成する。ステップS108において、テストデータ生成部2080は、テストデータを生成する。
まず、図7を用いて、全体処理の流れを説明する。ステップS102において、トポロジ情報取得部2020は、トポロジ情報を取得する。ステップS104において、経路設定情報取得部2040は、経路設定情報を取得する。ステップS106において、テストヘッダ生成部2060は、テストヘッダを生成する。ステップS108において、テストデータ生成部2080は、テストデータを生成する。
ステップS109〜ステップS118は、各テストパケット列について実行されるループ処理Aである。ループ処理Aで用いるカウンタiの初期値は0である。また、ループ処理Aを1回実行する度に、スイッチシミュレート部2120は、iの値を1増加させる。ステップS109において、スイッチシミュレート部2120は、「i<テストパケット列の総数」であるか否かを判定する。ここで、「i=テストパケット列の総数」であることは、既に全てのテストパケット列について、ループ処理Aが実行されたことを意味する。したがって、「i<テストパケット列の総数」でない場合、全体処理は終了する。一方、「i<テストパケット列の総数」である場合、全体処理はステップS110に進む。以下、i番目のテストパケット列を、テストパケット列iと表記する。ステップS110において、スイッチシミュレート部2120は、仮想経路表集合格納部2100に格納されている全ての仮想経路表を初期化する。
ステップS112〜ステップS116は、テストパケット列iに含まれる各テストパケットについて実行されるループ処理Bである。ループ処理Bで用いるカウンタjの初期値は0である。また、ループ処理Bを1回実行する度に、スイッチシミュレート部2120は、jの値を1増加させる。ステップS112において、スイッチシミュレート部2120は、「j<テストパケットの総数」であるか否かを判定する。ここで、「j=テストパケットの総数」であることは、既に、テストパケット列iに含まれる全てのテストパケットについて、ループ処理Bが実行されたことを意味する。したがって、「j<テストパケットの総数」でない場合、全体処理はステップS118に進む。一方、「j<テストパケットの総数」の場合、全体処理は、ステップS114に進む。以下、テストパケット列iのj番目のパケットを、テストパケットi−jと表記する。ステップS114において、スイッチシミュレート部2120は、テストパケットi−jについてパケット処理を行う。パケット処理の具体的な流れについては、後述する。
ステップS116は、ループ処理Bの終端である。そのため、ステップS116において、全体処理はステップS112に進む。ステップS118は、ループ処理Aの終端である。そのため、ステップS118において、全体処理はステップS109に進む。
<<パケット処理>>
図8を用いて、1つのテストパケットについてシミュレーションを行うパケット処理について説明する。ここで、このパケット処理に対して入力されるテストパケットを、テストパケット P と表記する。ステップS114で呼び出されるパケット処理におけるテストパケット P は、テストパケットi−jである。
図8を用いて、1つのテストパケットについてシミュレーションを行うパケット処理について説明する。ここで、このパケット処理に対して入力されるテストパケットを、テストパケット P と表記する。ステップS114で呼び出されるパケット処理におけるテストパケット P は、テストパケットi−jである。
ステップS202において、スイッチシミュレート部2120は、スイッチ20による中継処理をシミュレートする。このスイッチ20、テストパケット P が示す送信元と、他のスイッチ20を介さずに接続されているスイッチ20である。また、この中継処理は、テストパケット P が示すテストヘッダによって示される情報をヘッダに含むパケットに対して、スイッチ20が行う処理である。
ステップS204において、経路設定検証装置2000は、ステップS202の中継処理が制御要求を送信するか否かをチェックする。この中継処理が制御要求を送信する場合、パケット処理はステップS206に進む。一方、この中継処理が制御要求を送信しない場合、パケット処理はステップS212に進む。
ステップS206において、制御装置シミュレート部2140は、ステップS202の中継処理で送信された制御要求に対して制御装置30が行う制御処理をシミュレートする。
ステップS208において、経路設定検証装置2000は、ステップS206の制御処理に伴って仮想経路表集合が更新される否かを判定する。ステップS206の制御処理に伴って仮想経路表集合が更新される場合、パケット処理はステップS210に進む。一方、ステップS206の制御処理に伴って仮想経路表集合が更新されない場合、パケット処理はステップS212に進む。
ステップS210において、経路設定検証部2160は、更新された仮想経路表集合によって表される経路設定の正当性を検証する。ここで、経路設定検証部2160が、検証対象の仮想経路表集合と同内容の仮想経路表集合について、既に経路設定の正当性を検証していたとする。この場合、経路設定検証部2160は、この仮想経路表集合の検証を行わなくてもよい。こうすることで、経路設定検証部2160が経路設定の検証を行う回数が少なくなり、結果として経路設定の検証にかかる時間が短くなる。なおこの場合、経路設定検証部2160は、これまでに検証を行った仮想経路表集合を特定できる必要がある。そこで、例えば経路設定検証装置2000は、既に検証を終えた仮想経路表集合を格納する格納部を有する。その他にも例えば、経路設定検証装置2000は、これまでに生成した仮想経路表集合に対し、既に検証を終えたかどうかを表すフラグを対応付けて格納する格納部を有してもよい。
ここで、2つの仮想経路表集合が同内容であるか否かを判定する際、中継ルールの内容及び各中継ルールが示されている順序が同一である場合のみ、2つの仮想経路表集合が同内容であると判定してもよいし、順序は考慮せずに中継ルールの内容が一致すれば同内容であると判定してもよい。ただし、中継ルールが示されている順序を考慮せずに判定する方が、同内容と判定される仮想経路表集合の数が多くなる。そのため、経路設定検証部2160が経路設定の検証を行う回数が少なくなり、結果として経路設定の検証にかかる時間が短くなる。
ステップS212において、経路設定検証装置2000は、ステップS202でシミュレートした中継処理、又はステップS206でシミュレートした制御処理が、パケットの送信を行うか否かをチェックする。これらの処理がパケットの送信を行う場合、パケット処理はステップS214に進む。一方、これらの処理がパケットの送信を行わない場合、パケット処理は終了する。
ステップS214において、経路設定検証装置2000は、ステップS202でシミュレートした中継処理によって送信されたパケット、及びステップS206でシミュレートした制御処理で送信されたパケットそれぞれに基づいて、テストパケットをそれぞれ生成する。このテストパケットが示す送信元は、スイッチシミュレート部2120がシミュレートしたスイッチ20である。このテストパケットが示すテストヘッダは、スイッチシミュレート部2120がシミュレートした中継処理や、制御装置シミュレート部2140がシミュレートした制御処理の内容に依存する。
ステップS216において、生成したテストパケットについて、図8で表されるパケット処理を再帰的に実行する。送信されたパケットが複数ある場合、それら複数のパケットにそれぞれ対応するテストパケットについて、パケット処理を再帰的に実行する。
<作用・効果>
経路設定検証装置2000は、ネットワークシステム40の制御装置30によって用いられる経路設定情報を用いて、その経路設定情報が示す各イベントハンドラを実行する実行条件を満たすパケットのヘッダ(テストヘッダ)を生成する。そして、ネットワークシステム40に含まれるホストとテストヘッダとの全ての組み合わせに含まれる要素(テストパケット)を任意の順序で並べた順列(テストパケット列)について、ネットワークシステム40の挙動をシミュレートする。このように、本実施形態の経路設定検証装置2000によれば、Symbolic Execution のような実行に長い時間を要する手法を用いず、制御装置30によって利用される経路設定情報から、シミュレートするパケットのヘッダに示す値を抽出する。この方法により、Symbolic Execution を用いる場合と比較し、シミュレーションにかかる時間が短くなる。そのため、既存技術と比較し、シミュレーションにかかる時間が短い。これにより、ネットワークシステム40の経路設定の検証にかかる時間が短くなる。
経路設定検証装置2000は、ネットワークシステム40の制御装置30によって用いられる経路設定情報を用いて、その経路設定情報が示す各イベントハンドラを実行する実行条件を満たすパケットのヘッダ(テストヘッダ)を生成する。そして、ネットワークシステム40に含まれるホストとテストヘッダとの全ての組み合わせに含まれる要素(テストパケット)を任意の順序で並べた順列(テストパケット列)について、ネットワークシステム40の挙動をシミュレートする。このように、本実施形態の経路設定検証装置2000によれば、Symbolic Execution のような実行に長い時間を要する手法を用いず、制御装置30によって利用される経路設定情報から、シミュレートするパケットのヘッダに示す値を抽出する。この方法により、Symbolic Execution を用いる場合と比較し、シミュレーションにかかる時間が短くなる。そのため、既存技術と比較し、シミュレーションにかかる時間が短い。これにより、ネットワークシステム40の経路設定の検証にかかる時間が短くなる。
また、経路設定検証装置2000は、ネットワークシステム40の状態のうち、スイッチ20が有するパケットキューの状態など、経路設定の遷移に影響を及ぼさない情報をシミュレートしない。そのため、既存技術と比較し、シミュレーションにかかる時間が短い。これにより、ネットワークシステム40の経路設定の検証にかかる時間がさらに短くなる。
[実施形態2]
図9は、実施形態2に係る経路設定検証装置2000を示すブロック図である。図9において、矢印の流れは情報の流れを示している。また、図9において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
図9は、実施形態2に係る経路設定検証装置2000を示すブロック図である。図9において、矢印の流れは情報の流れを示している。また、図9において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
実施形態2の経路設定検証装置2000は、ネットワークシステム40の動作をシミュレートする際に生成される仮想経路表集合の履歴を格納する仮想経路表集合履歴格納部2180を有する点で、実施形態1の経路設定検証装置2000と異なる。以下、具体的に説明する。
<仮想経路表集合履歴格納部2180>
仮想経路表集合履歴格納部2180は、仮想経路表集合の履歴を格納する。例えば、仮想経路表集合格納部2100は、格納しているいずれかの仮想経路表が更新される場合、その更新前に、格納している全ての仮想経路表(仮想経路表集合)のコピーを仮想経路表集合履歴格納部2180へ格納する。こうすることで、経路設定検証装置2000がネットワークシステム40の動作をシミュレートする際に生成される各仮想経路表集合が、仮想経路表集合履歴格納部2180に格納される。ここで、前述したように、仮想経路表集合は、ネットワークシステム40における経路設定を表す。そのため、仮想経路表集合履歴格納部2180は、ネットワークシステム40における経路設定の更新履歴を格納しているとも言える。
仮想経路表集合履歴格納部2180は、仮想経路表集合の履歴を格納する。例えば、仮想経路表集合格納部2100は、格納しているいずれかの仮想経路表が更新される場合、その更新前に、格納している全ての仮想経路表(仮想経路表集合)のコピーを仮想経路表集合履歴格納部2180へ格納する。こうすることで、経路設定検証装置2000がネットワークシステム40の動作をシミュレートする際に生成される各仮想経路表集合が、仮想経路表集合履歴格納部2180に格納される。ここで、前述したように、仮想経路表集合は、ネットワークシステム40における経路設定を表す。そのため、仮想経路表集合履歴格納部2180は、ネットワークシステム40における経路設定の更新履歴を格納しているとも言える。
なお、仮想経路表集合の履歴を格納する方法は、前述した、仮想経路表集合格納部2100が、格納している仮想経路表をコピーする方法に限定されない。例えば、スイッチシミュレート部2120は、シミュレートする中継処理がいずれかの仮想経路表を更新する際、その更新を行う前に、仮想経路表集合格納部2100に格納されている全ての仮想経路表をコピーして、仮想経路表集合履歴格納部2180に格納する。
また、スイッチシミュレート部2120や仮想経路表集合格納部2100は、仮想経路表集合を仮想経路表集合履歴格納部2180に格納する際に、既に同じ内容の仮想経路表集合が格納されていたら、その仮想経路表集合を格納しなくてもよい。これにより、仮想経路表集合履歴格納部2180が格納する仮想経路表集合のデータサイズが小さくなる。また、これにより、仮想経路表集合履歴格納部2180に格納されている仮想経路表を用いて検証を行う経路設定検証部2160が、同一の仮想経路表集合に関する検証を重複して行うことを防ぐことができる。したがって、経路設定検証装置2000による検証の効率が上がる。
なお、2つの仮想経路表集合が同内容であるか否かを判定する際、中継ルールの内容及び各中継ルールが示されている順序が同一である場合のみ、2つの仮想経路表集合が同内容であると判定してもよいし、順序は考慮せずに中継ルールの内容が一致すれば同内容であると判定してもよい。ただし、中継ルールが示されている順序を考慮せずに判定する方が、仮想経路表集合の履歴の数が少なくなる。そのため、経路設定検証部2160が経路設定の検証を行う回数が少なくなり、結果として経路設定の検証にかかる時間が短くなる。また、仮想経路表集合履歴格納部2180を実現するために要する記憶領域のサイズが小さくなる。
また、仮想経路表集合履歴格納部2180は、更新前後の仮想経路表集合を対応付けるように、仮想経路表集合を格納してもよい。こうすることで、仮想経路表集合が遷移する流れが、仮想経路表集合履歴格納部2180に格納される。つまり、ネットワークシステム40における経路設定が変更されていく流れが、仮想経路表集合履歴格納部2180に格納される。
<経路設定検証部2160>
実施形態2の経路設定検証部2160は、仮想経路表集合履歴格納部2180に格納されている複数の仮想経路表集合それぞれによって表される各経路設定の正当性を検証する。例えば経路設定検証部2160は、全てのテストパケット列についてシミュレーションが終わった後に、仮想経路表集合履歴格納部2180に格納されている各仮想経路表集合の検証を行う。
実施形態2の経路設定検証部2160は、仮想経路表集合履歴格納部2180に格納されている複数の仮想経路表集合それぞれによって表される各経路設定の正当性を検証する。例えば経路設定検証部2160は、全てのテストパケット列についてシミュレーションが終わった後に、仮想経路表集合履歴格納部2180に格納されている各仮想経路表集合の検証を行う。
<処理の流れ>
実施形態2の経路設定検証装置2000は、図8のパケット処理において、S210の代わりに、更新前の仮想経路表集合を格納する処理を行う。また、実施形態2の経路設定検証装置2000は、図7の全体処理において、S118の後に、仮想経路表集合履歴格納部2180に格納されている各仮想経路表集合によって表される経路設定それぞれの正当性を検証する。
実施形態2の経路設定検証装置2000は、図8のパケット処理において、S210の代わりに、更新前の仮想経路表集合を格納する処理を行う。また、実施形態2の経路設定検証装置2000は、図7の全体処理において、S118の後に、仮想経路表集合履歴格納部2180に格納されている各仮想経路表集合によって表される経路設定それぞれの正当性を検証する。
<作用・効果>
実施形態2の経路設定検証装置2000によれば、ネットワークシステム40のシミュレーションを行った際に生成された全ての仮想経路表集合が、仮想経路表集合履歴格納部2180に格納される。また、経路設定検証部2160は、仮想経路表集合履歴格納部2180に格納されている複数の仮想経路表集合それぞれによって表される各経路設定の正当性を検証する。こうすることで、検証対象の仮想経路表集合が生成される度にその仮想経路表集合の正当性の検証する場合と異なり、ネットワークシステム40のシミュレーションと、そのシミュレーションによって生成された各経路設定の正当性の検証処理とが、明確に切り分けられる。そのため、経路設定検証装置2000の設計がよりシンプルになる。例えば、経路設定検証装置2000を、ネットワークシステム40のシミュレーションを行う計算機と、経路設定の正当性の検証処理を行う計算機とに、容易に分けることができる。
実施形態2の経路設定検証装置2000によれば、ネットワークシステム40のシミュレーションを行った際に生成された全ての仮想経路表集合が、仮想経路表集合履歴格納部2180に格納される。また、経路設定検証部2160は、仮想経路表集合履歴格納部2180に格納されている複数の仮想経路表集合それぞれによって表される各経路設定の正当性を検証する。こうすることで、検証対象の仮想経路表集合が生成される度にその仮想経路表集合の正当性の検証する場合と異なり、ネットワークシステム40のシミュレーションと、そのシミュレーションによって生成された各経路設定の正当性の検証処理とが、明確に切り分けられる。そのため、経路設定検証装置2000の設計がよりシンプルになる。例えば、経路設定検証装置2000を、ネットワークシステム40のシミュレーションを行う計算機と、経路設定の正当性の検証処理を行う計算機とに、容易に分けることができる。
[実施形態3]
図10は、実施形態2に係る経路設定検証装置2000を示すブロック図である。図10において、矢印の流れは情報の流れを示している。また、図10において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
図10は、実施形態2に係る経路設定検証装置2000を示すブロック図である。図10において、矢印の流れは情報の流れを示している。また、図10において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
<仮想経路表集合履歴格納部2180>
実施形態3の仮想経路表集合履歴格納部2180は、仮想経路表集合に、その仮想経路表集合が生成された際のシミュレーションに用いられていたテストパケット列の ID を対応付けて格納する。ここで、仮想経路表集合を仮想経路表集合履歴格納部2180に格納する際に、その仮想経路表集合と同内容の仮想経路表集合が既に仮想経路表集合履歴格納部2180に格納されていたとする。この場合、仮想経路表集合履歴格納部2180に仮想経路表集合を格納する仮想経路表集合格納部2100やスイッチシミュレート部2120は、既に格納されている同内容の仮想経路表集合に対して、現在シミュレートしているテストパケット列のIDをさらに対応付ける。こうすることで、1つの仮想経路表集合について、その仮想経路表集合を生成する各テストパケット列がそれぞれ対応付けられる。なお、実施形態2の場合と同様に、2つの仮想経路表集合が同内容であるか否かを判定する際、中継ルールの内容及び各中継ルールが示されている順序が同一である場合のみ、2つの仮想経路表集合が同内容であると判定してもよいし、順序は考慮せずに中継ルールの内容が一致すれば同内容であると判定してもよい。
実施形態3の仮想経路表集合履歴格納部2180は、仮想経路表集合に、その仮想経路表集合が生成された際のシミュレーションに用いられていたテストパケット列の ID を対応付けて格納する。ここで、仮想経路表集合を仮想経路表集合履歴格納部2180に格納する際に、その仮想経路表集合と同内容の仮想経路表集合が既に仮想経路表集合履歴格納部2180に格納されていたとする。この場合、仮想経路表集合履歴格納部2180に仮想経路表集合を格納する仮想経路表集合格納部2100やスイッチシミュレート部2120は、既に格納されている同内容の仮想経路表集合に対して、現在シミュレートしているテストパケット列のIDをさらに対応付ける。こうすることで、1つの仮想経路表集合について、その仮想経路表集合を生成する各テストパケット列がそれぞれ対応付けられる。なお、実施形態2の場合と同様に、2つの仮想経路表集合が同内容であるか否かを判定する際、中継ルールの内容及び各中継ルールが示されている順序が同一である場合のみ、2つの仮想経路表集合が同内容であると判定してもよいし、順序は考慮せずに中継ルールの内容が一致すれば同内容であると判定してもよい。
図11は、仮想経路表集合の状態遷移を概念的に示す有向グラフである。A〜Eは、各仮想経路表集合の ID である。START は、初期状態の経路表集合を表している。そして、矢印に付されている値は、矢印の方向へ仮想経路表集合の状態が遷移した際にシミュレートされていたテストパケット列の ID である。例えば、仮想経路表集合が初期状態から仮想経路表集合Aへ更新されるのは、スイッチシミュレート部2120が、テストパケット列1についてシミュレーションを行った場合である。したがって、仮想経路表集合履歴格納部2180は、仮想経路表集合Aに対してテストパケット列1を対応付けて格納する。同様に、仮想経路表集合履歴格納部2180は、仮想経路表集合Bに対してテストパケット列2及び3を、仮想経路表集合Cに対してテストパケット列1及び2を、仮想経路表集合Dに対してテストパケット列3を、仮想経路表集合Eに対してテストパケット列1〜3を対応付けて格納する。このようにすることで、仮想経路表集合履歴格納部2180に格納されている情報によって、図11に示すような仮想経路表集合の遷移を表すことができる。
なお、仮想経路表集合履歴格納部2180は、仮想経路表集合に対し、その仮想経路表集合が生成された際にシミュレートされたテストパケットの ID をさらに対応付けてもよい。
<仮想経路表集合入力部2190>
仮想経路表集合入力部2190は、仮想経路表集合の入力を受け付ける。ここで、仮想経路表集合入力部2190には、仮想経路表集合の ID が入力されてもよい。この ID は、例えば仮想経路表集合履歴格納部2180に格納されている各仮想経路表集合に対して割り振られている ID である。
仮想経路表集合入力部2190は、仮想経路表集合の入力を受け付ける。ここで、仮想経路表集合入力部2190には、仮想経路表集合の ID が入力されてもよい。この ID は、例えば仮想経路表集合履歴格納部2180に格納されている各仮想経路表集合に対して割り振られている ID である。
<テストパケット列抽出部2200>
テストパケット列抽出部2200は、仮想経路表集合入力部2190に入力された仮想経路表集合に対応するテストパケット列を、仮想経路表集合履歴格納部2180から抽出する。こうすることで、目的の仮想経路表集合を生成するために必要なテストパケット列が抽出される。目的の仮想経路表集合を生成するために必要なテストパケット列を抽出することで、目的の仮想経路表集合を生成するためには、どのような情報を示すパケットを、どのホストから、どのような順序で送信すればよいかが割り出せる。
テストパケット列抽出部2200は、仮想経路表集合入力部2190に入力された仮想経路表集合に対応するテストパケット列を、仮想経路表集合履歴格納部2180から抽出する。こうすることで、目的の仮想経路表集合を生成するために必要なテストパケット列が抽出される。目的の仮想経路表集合を生成するために必要なテストパケット列を抽出することで、目的の仮想経路表集合を生成するためには、どのような情報を示すパケットを、どのホストから、どのような順序で送信すればよいかが割り出せる。
また、仮想経路表集合履歴格納部2180が仮想経路表集合にテストパケット列及びテストパケットを対応付けて格納している場合、テストパケット列抽出部2200は、取得した仮想経路表集合に対応するテストパケット列及びテストパケットの組み合わせを抽出してもよい。こうすることで、目的の仮想経路表集合を生成するためには、テストパケット列が示すテストパケットのうち、どのテストパケットが必要かをさらに割り出すことができる。
実施形態3の経路設定検証装置2000は、仮想経路表集合履歴格納部2180に格納されている仮想経路表集合の履歴に基づいて、図10のような仮想経路表集合の状態遷移図を出力する機能を有していてもよい。例えば経路設定検証装置2000のユーザは、この状態遷移図を閲覧し、検証したい仮想経路表集合を選択する。仮想経路表集合入力部2190は、この選択された仮想経路表集合を入力として受け取る。こうすることで、ユーザは、どの仮想経路表集合について検証を行うかを、容易に決定することができる。
<作用・効果>
実施形態3によれば、ネットワークシステム40の経路設定を目的の経路設定にするために、どのような情報を示すパケットを、どのホストから、どのような順序で送信すればよいかを割り出すことができる。
実施形態3によれば、ネットワークシステム40の経路設定を目的の経路設定にするために、どのような情報を示すパケットを、どのホストから、どのような順序で送信すればよいかを割り出すことができる。
実施形態3の経路設定検証装置2000は、例えば、ネットワークシステム40の経路設定について、特定の正当性を検証したい際に有用である。例えば、ネットワークシステム40において、各経路表のデータ量が想定外に大きくなってしまうことがある。このことを一般に、経路溢れと呼ぶ。そのため、ネットワークシステム40の運用前に、ネットワークシステム40において経路溢れが起こらないことを確認することが有用である。ここで、経路溢れが起こるか否かを確認するためには、各経路表の大きさが最も大きくなる場合の経路設定について検証すればよい。これは、例えば図11のように仮想経路表集合の遷移を有向グラフで表した場合において、状態遷移の終端にある仮想経路表集合である。図11の場合は、仮想経路表集合Eである。そこで、仮想経路表集合入力部2190に対して仮想経路表集合Eを入力することで、テストパケット列抽出部2200から、経路表溢れの検証に必要なテストパケット列を取得することができる。
<実施例>
以下、経路設定検証装置2000の実施例について説明する。以下で説明する実施例では、動的な経路設定に OpenFlow を用いる。そのため、経路設定情報が示すイベントハンドラは、OpenFlow に準拠している命令である flow_mod 命令及び pkt_out 命令のいずれか1つ以上を実行する。flow_mod 命令は、スイッチ20の経路表に対して中継ルールを追加する命令である。制御装置シミュレート部2140は、仮想経路表の更新を行うことで、flow_mod 命令をシミュレートする。pkt_out 命令は、指定したスイッチ20に対してパケットの送信を行わせる命令である。制御装置シミュレート部2140が pkt_out 命令をシミュレートした場合、制御命令に伴ってパケットの送信が行われることになるので、スイッチシミュレート部2120は、図8のパケット処理を再帰的に実行する。
以下、経路設定検証装置2000の実施例について説明する。以下で説明する実施例では、動的な経路設定に OpenFlow を用いる。そのため、経路設定情報が示すイベントハンドラは、OpenFlow に準拠している命令である flow_mod 命令及び pkt_out 命令のいずれか1つ以上を実行する。flow_mod 命令は、スイッチ20の経路表に対して中継ルールを追加する命令である。制御装置シミュレート部2140は、仮想経路表の更新を行うことで、flow_mod 命令をシミュレートする。pkt_out 命令は、指定したスイッチ20に対してパケットの送信を行わせる命令である。制御装置シミュレート部2140が pkt_out 命令をシミュレートした場合、制御命令に伴ってパケットの送信が行われることになるので、スイッチシミュレート部2120は、図8のパケット処理を再帰的に実行する。
図12は、実施例におけるネットワークシステム40の構成を示すブロック図である。ネットワークシステム40は、2つのホスト10−1及び10−2、2つのスイッチ20−1及び20−2、及び制御装置30を有する。ホスト10−1の MAC アドレスは ms であり、ホスト10−2の MAC アドレスは md である。また、ホスト10−1は、パケットの送信を行うものの、パケットの受信は行わない。一方、ホスト10−2は、パケットの受信は行うものの、パケットの送信は行わない。スイッチ20−1及び20−1はそれぞれ、スイッチ e1、e2 とも表記される。
ホスト10−1がスイッチ20−1に対して送信するパケットは、スイッチ20−1のポート pa で受信される。スイッチ20−1のポート pb から送信されたパケットは、スイッチ20−2のポート pa によって受信される。スイッチ20−2のポート pb から送信されたパケットは、ホスト10−2によって受信される。
図13は、実施例における経路設定情報が示す実行条件及びイベントハンドラを示す図である。実行条件は、図13(a)における50−1と、図13(b)における50−2である。また、イベントハンドラは、図13(a)における60−1と、図13(b)における60−2である。実行条件50−1と50−2は同一である。
実行条件50−1及び50−2は、「制御要求を送信したスイッチがスイッチ e1 であること」、「スイッチ e1 のポート pa がパケットを受信したこと」、及び「受信したパケットの宛先 MAC アドレスが md であること」という3つの条件の論理積である。つまり、これらの3つの条件全てを満たした場合に、イベントハンドラが実行される。
イベントハンドラ60−1に含まれる3つの命令は、それぞれ次の意味を持つ。1行目の flow_mod は、スイッチ e2 に対し、「スイッチ e2 のポート pa によって、送信元 MAC アドレスが ms であるパケットが受信されたら、そのパケットを e2 のポート pb から送信する」という中継ルールを設定する命令である。HEADER_NO_CHANGE は、「パケットのヘッダの内容を変更しない」ということを指定するフラグである。次に、2行目の flow_mod は、スイッチ e1 に対し、「スイッチ e1 のポート pa によって、送信元 MAC アドレスが ms であるパケットが受信されたら、そのパケットを e1 のポート pb から送信する」という中継ルールを設定する命令である。3行目の pkt_out は、スイッチ e1 に対し、パケットの送信を指示する命令である。なお、イベントハンドラ60−2は、イベントハンドラ60−1において1行目の命令と2行目の命令を入れ替えたものに相当する。
以上の想定環境において、経路設定検証装置2000を動作させる。ここで、制御装置30が図13(a)に示す経路設定情報を用いる場合をケース1、制御装置30が図13(b)に示す経路設定情報を用いる場合をケース2とする。
図14は、ケース1の場合とケース2の場合それぞれについて経路設定検証装置2000を動作させた場合における、仮想経路表集合の遷移を示す図である。図14(a)はケース1の場合、図14(b)はケース2の場合をそれぞれ表す。経路設定検証装置2000がイベントハンドラ60−1の1行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合80−1となる。次に、経路設定検証装置2000がイベントハンドラ60−1の2行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合80−2となる。
一方、経路設定検証装置2000がイベントハンドラ60−2の1行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合80−3となる。次に、経路設定検証装置2000がイベントハンドラ60−1の2行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合80−4となる。なお、仮想経路表集合80−2と80−4は同内容である。
ここで、ケース1の場合は、全ての経路設定が正しくなる。しかし、ケース2の場合は、仮想経路表集合80−3で表される経路設定が不正である。以下、ケース2の場合について、経路設定検証装置2000の動作を詳しく説明する。
まず、トポロジ情報取得部2020は、ホスト10−1とスイッチ20−1の接続関係、ホスト10−2とスイッチ20−2の接続関係、及びスイッチ20−1とスイッチ20−2の接続関係を示すトポロジ情報を取得する。また、トポロジ情報は、ホスト10−2がパケットの送信を行わないことをさらに示す。経路設定情報取得部2040は、図13(b)に示す経路設定情報を取得する。
テストヘッダ生成部2060は、経路設定情報からテストヘッダを生成する。図13(b)が示す実行条件50−2のうち、ヘッダに含まれうる情報は、宛先 MAC アドレス md のみである。そこで、テストヘッダ生成部2060は、「ヘッダ ID:header1、宛先 MAC アドレス:md」というテストヘッダを生成する。
テストデータ生成部2080は、ホスト10の集合とテストヘッダの集合とを用いて、テストパケット集合を生成する。ここで、テストデータ生成部2080は、トポロジ情報を参照して、パケットの送信を行うホスト10のみを、テストパケット集合の生成に用いる。そのため、ホスト10の集合は、「ms」となる。また、テストヘッダの集合は「header1」である。そのため、テストパケット集合は、「ms、header1」というテストパケット(以下、テストパケット1)のみを持つ集合となる。したがって、テストデータに含まれるテストパケット列は、テストパケット1のみを持つ1つのテストパケット列である。
スイッチシミュレート部2120は、上記テストパケット列についてシミュレーションを行う(図8のパケット処理)。ここで、仮想経路表集合の初期状態は空であるとする。テストパケット1の送信元は ms であるので、スイッチシミュレート部2120は、ホスト10−1と接続されているスイッチ20−1によって実行される中継処理をシミュレートする(ステップS202)。スイッチ20−1が受信するパケットのヘッダに含まれる情報は、テストパケット1のテストヘッダが示す「宛先 MAC アドレス = md」を含む。
ここで、スイッチ20−1の経路表は空であるため、このパケットを送信するための中継ルールを持たない。そこで、スイッチ20−1は、制御装置30に対して制御要求を送信する。この制御要求は、「この制御要求の送信元がスイッチ20−1である」という情報、「パケットを受信したポートはポート pa である」という情報、及びテストヘッダの内容などを含んでいる。
制御装置シミュレート部2140は、上記制御要求を受信した制御装置30の動作をシミュレートする(ステップS206)。ここで、パケットヘッダが示す情報は、実行条件50−2を全て満たしている。したがって、制御装置シミュレート部2140は、イベントハンドラ60−2をシミュレートする。前述したとおり、ケース2における仮想経路表集合の状態遷移は、図14(b)によって表される。
まず、制御装置シミュレート部2140は、イベントハンドラ60−1の1行目の flow_mod 命令をシミュレートする。これにより、仮想経路表集合は、図14(b)に示す仮想経路表集合80−3となる。ここで、仮想経路表が更新されたため、経路設定検証部2160は、仮想経路表集合80−3によって表される経路設定の正当性を検証する(ステップS210)。
経路設定が仮想経路表集合80−3で表される場合において、ホスト10−1がパケットを送信したとする。このパケットは、送信元 MAC アドレスが ms である。また、このパケットは、スイッチ20−1のポート pa によって受信される。この時、スイッチ20−1の経路表は、「送信元 MAC アドレスが ms であり、かつポート pa によって受信されたパケットを、ポート pb から送信する」という中継ルールを保持している。そのため、このパケットは、スイッチ20−2に対して送信される。
このパケットを受信したスイッチ20−2は、このパケットの中継処理を行おうとする。しかし、現在の経路設定は仮想経路表集合80−3に示す設定であるため、スイッチ20−2の仮想経路表は、中継ルールを持っていない。そこで、スイッチ20−2は、制御装置30に対して制御要求を送信する。しかし、スイッチ20−2から送信された制御要求は、実行条件50−2を満たさない。そのため、制御装置30による制御処理が行われず、仮想経路表集合は更新されない。したがって、スイッチ20−2は、制御要求を送信しても、受信したパケットに対する中継ルールを取得することができず、このパケットの中継を行えない。したがって、このパケットは不達になる。このように、ケース2の場合、仮想経路表集合が80−3の状態になる場合に、経路設定が不正と判断される。
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記実施形態の組み合わせ、及び上記実施形態以外の様々な構成を採用することもできる。
この出願は、2013年4月26日に出願された日本出願特願2013−094296号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
Claims (12)
- ホスト、スイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証する経路設定検証装置であって、
前記ホストは、少なくとも1つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信し、
前記スイッチは、
前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、
受信した前記パケットを中継するための中継ルールを示す経路表を保持し、
受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行い、
前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行い、
当該経路設定検証装置は、
前記ホストと前記スイッチとの接続関係を示すトポロジ情報を取得する、トポロジ情報取得手段と、
前記経路設定情報を取得する経路設定情報取得手段と、
複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段と、
前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成手段と、
前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成手段と、
前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレート手段と、
シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレート手段と、
前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証手段と、を有し、
前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示し、
前記スイッチシミュレート手段は、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする、経路設定検証装置。 - 前記経路設定検証手段は、前記仮想経路表集合が更新された場合に、更新後の前記仮想経路表集合によって表される経路設定の正当性を検証する、請求項1に記載の経路設定検証装置。
- 前記仮想経路表集合の履歴を格納する仮想経路表履歴格納手段を有し、
前記経路設定検証手段は、前記テストデータに含まれる複数の前記順列それぞれについてシミュレーションが終わった後に、前記仮想経路表履歴格納手段に格納されている各前記仮想経路表集合それぞれによって表される経路設定の正当性をそれぞれ検証する、請求項1に記載の経路設定検証装置。 - 前記仮想経路表集合の履歴を、各仮想経路表集合が生成された際にシミュレーションの対象となっていた前記順列と対応付けて格納する仮想経路表履歴格納手段と、
前記仮想経路表集合の入力を受け付ける仮想経路表集合入力手段と、
前記仮想経路表集合入力手段に入力された前記仮想経路表集合に対応する前記順列を、前記仮想経路表履歴格納手段から抽出するテストパケット列抽出手段と、
を有する請求項1乃至3いずれか一項に記載の経路設定検証装置。 - ホスト、複数のスイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証するコンピュータによって実行される制御方法であって、
前記ホストは、少なくとも1つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信し、
前記スイッチは、
前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、
受信した前記パケットを中継するための中継ルールを示す経路表を保持し、
受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行い、
前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行い、
前記コンピュータは、複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段を有し、
当該制御方法は、
前記ホストと前記スイッチとの接続関係、及び前記スイッチ同士の接続関係を示すトポロジ情報を取得する、トポロジ情報取得ステップと、
前記経路設定情報を取得する経路設定情報取得ステップと、
前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成ステップと、
前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成ステップと、
前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレートステップと、
シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレートステップと、
前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証ステップと、を有し、
前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示し、
前記スイッチシミュレートステップは、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする、制御方法。 - 前記経路設定検証ステップは、前記仮想経路表集合が更新された場合に、更新後の前記仮想経路表集合によって表される経路設定の正当性を検証する、請求項5に記載の制御方法。
- 前記コンピュータは、前記仮想経路表集合の履歴を格納する仮想経路表履歴格納手段を有し、
前記経路設定検証ステップは、前記テストデータに含まれる複数の前記順列それぞれについてシミュレーションが終わった後に、前記仮想経路表履歴格納手段に格納されている各前記仮想経路表集合それぞれによって表される経路設定の正当性をそれぞれ検証する、請求項5に記載の制御方法。 - 前記コンピュータは、前記仮想経路表集合の履歴を、各仮想経路表集合が生成された際にシミュレーションの対象となっていた前記順列と対応付けて格納する仮想経路表履歴格納手段を有し、
当該制御方法は、
前記仮想経路表集合の入力を受け付ける仮想経路表集合入力ステップと、
前記仮想経路表集合入力ステップで入力された前記仮想経路表集合に対応する前記順列を、前記仮想経路表履歴格納手段から抽出するテストパケット列抽出ステップと、
を有する請求項5乃至7いずれか一項に記載の制御方法。 - コンピュータに、ホスト、複数のスイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証する機能を持たせるプログラムであって、
前記ホストは、少なくとも1つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信し、
前記スイッチは、
前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、
受信した前記パケットを中継するための中継ルールを示す経路表を保持し、
受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行い、
前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行い、
前記コンピュータは、複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段を有し、
当該プログラムは、前記コンピュータに、
前記ホストと前記スイッチとの接続関係、及び前記スイッチ同士の接続関係を示すトポロジ情報を取得する、トポロジ情報取得機能と
前記経路設定情報を取得する経路設定情報取得機能と、
前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成機能と、
前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成機能と、
前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレート機能と、
シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレート機能と、
前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証機能と、を持たせ、
前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示し、
前記スイッチシミュレート機能は、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする、プログラム。 - 前記経路設定検証機能は、前記仮想経路表集合が更新された場合に、更新後の前記仮想経路表集合によって表される経路設定の正当性を検証する、請求項9に記載のプログラム。
- 前記コンピュータは、前記仮想経路表集合の履歴を格納する仮想経路表履歴格納手段を有し、
前記経路設定検証機能は、前記テストデータに含まれる複数の順列それぞれについてシミュレーションが終わった後に、前記仮想経路表履歴格納手段に格納されている各前記仮想経路表集合それぞれによって表される経路設定の正当性をそれぞれ検証する、請求項9に記載のプログラム。 - 前記コンピュータは、前記仮想経路表集合の履歴を、各仮想経路表集合が生成された際にシミュレーションの対象となっていた前記順列と対応付けて格納する仮想経路表履歴格納手段を有し、
当該プログラムは、前記コンピュータに、
前記仮想経路表集合の入力を受け付ける仮想経路表集合入力機能と、
前記仮想経路表集合機能で入力された前記仮想経路表集合に対応する前記順列を、前記仮想経路表履歴格納手段から抽出するテストパケット列抽出機能と、
を持たせる請求項9乃至11いずれか一項に記載のプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013094296 | 2013-04-26 | ||
JP2013094296 | 2013-04-26 | ||
PCT/JP2013/083024 WO2014174720A1 (ja) | 2013-04-26 | 2013-12-10 | 経路設定検証装置、制御方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2014174720A1 true JPWO2014174720A1 (ja) | 2017-02-23 |
Family
ID=51791311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015513487A Ceased JPWO2014174720A1 (ja) | 2013-04-26 | 2013-12-10 | 経路設定検証装置、制御方法、及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160087870A1 (ja) |
JP (1) | JPWO2014174720A1 (ja) |
WO (1) | WO2014174720A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016199404A1 (ja) * | 2015-06-09 | 2016-12-15 | 日本電気株式会社 | ネットワーク検証装置、ネットワーク検証方法およびプログラム記録媒体 |
US20170012900A1 (en) * | 2015-07-08 | 2017-01-12 | Infinera Corporation | Systems, methods, and apparatus for verification of a network path |
US9769060B2 (en) * | 2015-07-20 | 2017-09-19 | Schweitzer Engineering Laboratories, Inc. | Simulating, visualizing, and searching traffic in a software defined network |
US10169203B2 (en) | 2015-10-14 | 2019-01-01 | At&T Intellectual Property I, L.P. | Test simulation for software defined networking environments |
EP3721586B1 (en) * | 2017-12-04 | 2022-07-06 | Telefonaktiebolaget LM Ericsson (publ) | Network link verification |
GB2570697A (en) * | 2018-02-02 | 2019-08-07 | Sony Corp | Network testing |
US20210400452A1 (en) | 2019-01-10 | 2021-12-23 | Nec Communication Systems, Ltd. | In-vehicle control apparatus, in-vehicle network design apparatus, communication method, and program |
CN113204499B (zh) * | 2021-06-10 | 2022-08-02 | 卡斯柯信号有限公司 | 一种cbtc系统仿真测试方法及装置 |
CN114880248B (zh) * | 2022-07-04 | 2022-09-27 | 温州电力建设有限公司 | 一种基于虚拟数据的稳控装置调试方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004147021A (ja) * | 2002-10-23 | 2004-05-20 | Ntt Docomo Inc | 経路制御システム、経路制御装置、及び経路制御方法 |
WO2011158628A1 (ja) * | 2010-06-17 | 2011-12-22 | 日本電気株式会社 | 集中制御検証装置、集中制御検証プログラム、集中制御検証方法 |
-
2013
- 2013-12-10 WO PCT/JP2013/083024 patent/WO2014174720A1/ja active Application Filing
- 2013-12-10 JP JP2015513487A patent/JPWO2014174720A1/ja not_active Ceased
- 2013-12-10 US US14/785,332 patent/US20160087870A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004147021A (ja) * | 2002-10-23 | 2004-05-20 | Ntt Docomo Inc | 経路制御システム、経路制御装置、及び経路制御方法 |
WO2011158628A1 (ja) * | 2010-06-17 | 2011-12-22 | 日本電気株式会社 | 集中制御検証装置、集中制御検証プログラム、集中制御検証方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2014174720A1 (ja) | 2014-10-30 |
US20160087870A1 (en) | 2016-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2014174720A1 (ja) | 経路設定検証装置、制御方法、及びプログラム | |
Anderson et al. | xOMB: Extensible open middleboxes with commodity servers | |
US9146826B2 (en) | Method and apparatus for scaling network simulation | |
US10009229B2 (en) | Policy verification in a network | |
JP7366860B2 (ja) | 攻撃シナリオシミュレーション装置、攻撃シナリオ生成システム、および攻撃シナリオ生成方法 | |
CN111835532A (zh) | 网络验证的方法和装置 | |
JP2016541202A (ja) | ソフトウェア定義ネットワークにおけるオフラインクエリ | |
Berger et al. | Does my bft protocol implementation scale? | |
Simmonds et al. | Towards scalable network emulation | |
JP2009246453A (ja) | エミュレータ装置 | |
Wang et al. | Tool: An efficient and flexible simulator for Byzantine fault-tolerant protocols | |
US20220014457A1 (en) | Methods, systems and computer readable media for stateless service traffic generation | |
US10289762B2 (en) | Interconnection network simulator and method for simulating interconnection networks | |
US20150370675A1 (en) | Methods, systems, and computer readable media for utilizing abstracted user-defined data to conduct network protocol testing | |
Shahbaz et al. | Elmo: Source-routed multicast for cloud services | |
CN116192654A (zh) | 一种应用于网络靶场中实体设备动态接入方法及装置 | |
Singh | Large-scale emulation of anonymous communication networks | |
Poncea et al. | Design and implementation of an Openflow SDN controller in NS-3 discrete-event network simulator | |
Casado et al. | Reconfigurable networking hardware: A classroom tool | |
Chen et al. | Multiscale emulation technology based on the integration of virtualization, physical and simulation networks | |
Lei et al. | MINIWAN: A new framework for simulating multi-segment network topology based on mininet | |
Mustafa et al. | Genix: A geni-based ixp emulation | |
CN105009516B (zh) | 用于诊断或测试的透明消息修改 | |
Benchaïb et al. | Virconel: A network virtualizer | |
WO2019200461A1 (en) | Method and system for performing an action requested by a blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161107 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170905 |
|
A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20180130 |