(57)【要約】  経路設定検証装置（２０００）は、ホスト（１０）、スイッチ（２０）、及び制御装置（３０）を有するネットワークシステム（４０）における経路設定の正当性を検証する。トポロジ情報取得部（２０２０）はトポロジに関する情報を取得する。経路設定情報取得部（２０４０）は制御装置（３０）が経路設定の更新に用いる経路設定情報を取得する。テストヘッダ生成部（２０６０）は、経路設定情報を用いてテスト用のパケットに持たせるテストヘッダを生成する。テストデータ生成部（２０８０）は、テストヘッダを用いてシミュレートするパケット列を生成する。スイッチシミュレート部（２１２０）はスイッチ（２０）の動作をシミュレートし、制御装置シミュレート部（２１４０）は制御装置（３０）の動作をシミュレートする。経路設定検証部（２１６０）はシミュレートされた経路設定の正当性を検証する。
2014174720.tif 000002
【特許請求の範囲】
【請求項１】
ホスト、スイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証する経路設定検証装置であって、
前記ホストは、少なくとも１つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信し、
前記スイッチは、
前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、
受信した前記パケットを中継するための中継ルールを示す経路表を保持し、
受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行い、
前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行い、
当該経路設定検証装置は、
前記ホストと前記スイッチとの接続関係を示すトポロジ情報を取得する、トポロジ情報取得手段と、
前記経路設定情報を取得する経路設定情報取得手段と、
複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段と、
前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成手段と、
前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成手段と、
前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレート手段と、
シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレート手段と、
前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証手段と、を有し、
前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示し、
前記スイッチシミュレート手段は、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする、経路設定検証装置。
【請求項２】
前記経路設定検証手段は、前記仮想経路表集合が更新された場合に、更新後の前記仮想経路表集合によって表される経路設定の正当性を検証する、請求項１に記載の経路設定検証装置。
【請求項３】
前記仮想経路表集合の履歴を格納する仮想経路表履歴格納手段を有し、
前記経路設定検証手段は、前記テストデータに含まれる複数の前記順列それぞれについてシミュレーションが終わった後に、前記仮想経路表履歴格納手段に格納されている各前記仮想経路表集合それぞれによって表される経路設定の正当性をそれぞれ検証する、請求項１に記載の経路設定検証装置。
【請求項４】
前記仮想経路表集合の履歴を、各仮想経路表集合が生成された際にシミュレーションの対象となっていた前記順列と対応付けて格納する仮想経路表履歴格納手段と、
前記仮想経路表集合の入力を受け付ける仮想経路表集合入力手段と、
前記仮想経路表集合入力手段に入力された前記仮想経路表集合に対応する前記順列を、前記仮想経路表履歴格納手段から抽出するテストパケット列抽出手段と、
を有する請求項１乃至３いずれか一項に記載の経路設定検証装置。
【請求項５】
ホスト、複数のスイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証するコンピュータによって実行される制御方法であって、
前記ホストは、少なくとも１つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信し、
前記スイッチは、
前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、
受信した前記パケットを中継するための中継ルールを示す経路表を保持し、
受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行い、
前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行い、
前記コンピュータは、複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段を有し、
当該制御方法は、
前記ホストと前記スイッチとの接続関係、及び前記スイッチ同士の接続関係を示すトポロジ情報を取得する、トポロジ情報取得ステップと、
前記経路設定情報を取得する経路設定情報取得ステップと、
前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成ステップと、
前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成ステップと、
前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレートステップと、
シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレートステップと、
前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証ステップと、を有し、
前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示し、
前記スイッチシミュレートステップは、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする、制御方法。
【請求項６】
前記経路設定検証ステップは、前記仮想経路表集合が更新された場合に、更新後の前記仮想経路表集合によって表される経路設定の正当性を検証する、請求項５に記載の制御方法。
【請求項７】
前記コンピュータは、前記仮想経路表集合の履歴を格納する仮想経路表履歴格納手段を有し、
前記経路設定検証ステップは、前記テストデータに含まれる複数の前記順列それぞれについてシミュレーションが終わった後に、前記仮想経路表履歴格納手段に格納されている各前記仮想経路表集合それぞれによって表される経路設定の正当性をそれぞれ検証する、請求項５に記載の制御方法。
【請求項８】
前記コンピュータは、前記仮想経路表集合の履歴を、各仮想経路表集合が生成された際にシミュレーションの対象となっていた前記順列と対応付けて格納する仮想経路表履歴格納手段を有し、
当該制御方法は、
前記仮想経路表集合の入力を受け付ける仮想経路表集合入力ステップと、
前記仮想経路表集合入力ステップで入力された前記仮想経路表集合に対応する前記順列を、前記仮想経路表履歴格納手段から抽出するテストパケット列抽出ステップと、
を有する請求項５乃至７いずれか一項に記載の制御方法。
【請求項９】
コンピュータに、ホスト、複数のスイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証する機能を持たせるプログラムであって、
前記ホストは、少なくとも１つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信し、
前記スイッチは、
前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、
受信した前記パケットを中継するための中継ルールを示す経路表を保持し、
受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行い、
前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行い、
前記コンピュータは、複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段を有し、
当該プログラムは、前記コンピュータに、
前記ホストと前記スイッチとの接続関係、及び前記スイッチ同士の接続関係を示すトポロジ情報を取得する、トポロジ情報取得機能と
前記経路設定情報を取得する経路設定情報取得機能と、
前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成機能と、
前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成機能と、
前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレート機能と、
シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレート機能と、
前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証機能と、を持たせ、
前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示し、
前記スイッチシミュレート機能は、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする、プログラム。
【請求項１０】
前記経路設定検証機能は、前記仮想経路表集合が更新された場合に、更新後の前記仮想経路表集合によって表される経路設定の正当性を検証する、請求項９に記載のプログラム。
【請求項１１】
前記コンピュータは、前記仮想経路表集合の履歴を格納する仮想経路表履歴格納手段を有し、
前記経路設定検証機能は、前記テストデータに含まれる複数の順列それぞれについてシミュレーションが終わった後に、前記仮想経路表履歴格納手段に格納されている各前記仮想経路表集合それぞれによって表される経路設定の正当性をそれぞれ検証する、請求項９に記載のプログラム。
【請求項１２】
前記コンピュータは、前記仮想経路表集合の履歴を、各仮想経路表集合が生成された際にシミュレーションの対象となっていた前記順列と対応付けて格納する仮想経路表履歴格納手段を有し、
当該プログラムは、前記コンピュータに、
前記仮想経路表集合の入力を受け付ける仮想経路表集合入力機能と、
前記仮想経路表集合機能で入力された前記仮想経路表集合に対応する前記順列を、前記仮想経路表履歴格納手段から抽出するテストパケット列抽出機能と、
を持たせる請求項９乃至１１いずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムにおける経路設定を検証する技術に関する。
【背景技術】
【０００２】
ネットワークを介して接続されたホスト間で情報をやりとりするネットワークシステムでは、ホスト間でパケットの送受信が行われる。ここで、ホストとは、種々の計算機が備えるネットワークインタフェースのことである。また、パケットとは、ネットワークを介して送受信されるデータのことである。そして、ネットワークシステムでは、スイッチによってパケットの中継が行われる。スイッチは、受信したパケットの送信元や送信先などの情報に基づいて、そのパケットを適切なポートから送信したり、パケットを破棄したりなどする。スイッチは、受信したパケットをどのように中継するのかを表すルールの集合である経路表を保持する。そして、スイッチは、この経路表に従ってパケットの中継を行う。ネットワークシステムにおいて、どのパケットがどのように中継されるのかを表す設定を、そのネットワークシステムにおける経路設定と呼ぶ。経路設定は、そのネットワークシステムに含まれる各スイッチの経路表の集合によって定まる。【０００３】
また近年、経路設定を事前に行わず、各スイッチからの要求に応じて、外部の装置（以下、制御装置）が経路設定を動的に行う技術が用いられている。この技術は、SDN (Software-Defined Network）と呼ばれる。例えば、次のような方法で経路設定が行われる。まず、パケットを受信したスイッチは、そのパケットを中継するためのルールが経路表に設定されているか否かを判定する。そして、そのパケットを中継するためのルールが経路表に設定されていない場合、制御装置に対し、経路表の設定等を求める制御要求を送信する。そして、制御要求を受信した制御装置が、そのスイッチに対して経路表の設定などを行う。このような流れにより、ネットワークシステムの経路設定が更新されていく。【０００４】
ネットワークシステムにおいて、経路設定の正当性を検証することは重要である。経路設定が誤っていると、パケットが正しい送信先へ中継されないため、ホスト間で正しく情報をやりとりできないためである。また、上述のように動的に経路設定を行うシステムでは、ネットワークシステムを流れるパケットの内容やパケットが送信される順番などに依存して、経路設定が変化する。そのため、動的に経路設定を行うネットワークシステムにおいては、設定されうる様々な経路設定それぞれについて、正当性を検証する必要がある。【０００５】
例えば非特許文献１は、SDN の一実装である OpenFlow を用いるネットワークシステムにおいて、制御装置が行う処理に誤りがないかを検証する装置を開示している。この装置は、Symbolic Execution と呼ばれる方法を用いて、ネットワークシステムの状態の遷移をシミュレートする。ここで、ネットワークシステムの状態は、各スイッチが保持する経路表の状態やパケットキューの状態などの組み合わせで表される。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Marco Canini、外４名、「A NICE Way to Test OpenFlow Applications」、EPFL Technical Report  EPFL-REPORT-169211、2011 年
【非特許文献２】Peyman Kazemian、外２名、「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
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明者は、動的に経路設定が行われるネットワークシステムにおいて、経路設定の正当性の検証にかかる時間を短くする方法を検討した。非特許文献１が開示している装置は、ネットワークシステムにおいて設定されうる各経路設定を割り出すために、多くの時間を要する。例えばこの装置は、ホストで ping が５回実行されたことをシミュレーションするために３０時間を要する。この原因の１つは、パケットキューの状態など、経路設定の更新に関わらない状態まで考慮しているために、ネットワークシステムがとりうる状態の数が多くなってしまうことが挙げられる。また、Symbolic Execution という、実行に長い時間を要する手法を用いてシミュレーションを行っていることも原因の一つと考えられる。【０００８】
本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、動的に経路設定を行うネットワークシステムにおける経路設定の正当性を、短い時間で検証する技術を提供することである。
【課題を解決するための手段】
【０００９】
本発明が提供する経路設定検証装置は、ホスト、スイッチ、及び制御装置によって構成されるネットワークシステムの経路設定を検証する。前記ホストは、少なくとも１つの前記スイッチと接続されており、接続されている前記スイッチに対してパケットを送信する。前記スイッチは、前記制御装置、及び前記ホスト又は他の前記スイッチと接続されており、受信した前記パケットを中継するための中継ルールを示す経路表を保持し、受信した前記パケットに関する前記中継ルールが前記経路表に含まれていない場合、前記制御装置に対して、前記パケットのヘッダを含む制御要求を送信する中継処理を行う。前記制御装置は、イベントハンドラとそのイベントハンドラが実行される条件である実行条件とを対応付けて示す経路設定情報に基づき、受信した前記制御要求によって示される情報が前記実行条件と一致する場合に、その実行条件に対応する前記イベントハンドラを実行する制御処理を行う。当該経路設定検証装置は、前記ホストと前記スイッチとの接続関係を示すトポロジ情報を取得する、トポロジ情報取得手段と、前記経路設定情報を取得する経路設定情報取得手段と、複数の前記スイッチが保持する各経路表をシミュレートした仮想経路表の集合である仮想経路表集合を格納する、仮想経路表格納手段と、前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成手段と、前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成手段と、前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレート手段と、シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレート手段と、前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証手段と、を有する。また、前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示す。また、前記スイッチシミュレート手段は、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする。【００１０】
本発明が提供する制御方法は、コンピュータによって実行される。この制御方法は、前記コンピュータが、本発明が提供する経路設定検証装置が検証対象としているネットワークシステムにおける経路設定の検証を行う方法である。当該制御方法は、前記ホストと前記スイッチとの接続関係を示すトポロジ情報を取得する、トポロジ情報取得ステップと前記経路設定情報を取得する経路設定情報取得ステップと、前記経路設定情報に示される前記実行条件のうち、前記パケットのヘッダに関する条件を含む前記実行条件を用いて、その実行条件を満たすヘッダであるテストヘッダを生成するテストヘッダ生成ステップと、前記ホストの集合と前記テストヘッダの集合との直積集合であるテストパケット集合を生成し、前記テストパケット集合に含まれる要素全てを順位付けることで生成できる全ての順列の集合であるテストデータを生成する、テストデータ生成ステップと、前記テストデータから前記順列を順次取り出し、前記順列を取り出す度に全ての前記仮想経路表を初期化し、取り出した前記順列から前記要素を順次取り出し、取り出した前記要素が示す前記ホストに接続されている前記スイッチが、その要素が示す前記テストヘッダを有する前記パケットに対して行う前記中継処理をシミュレートする、スイッチシミュレートステップと、シミュレートした前記中継処理が前記制御要求の送信を行う場合に、前記経路設定情報を用いて、その制御要求に対して前記制御装置が行う前記制御処理をシミュレートする、制御装置シミュレートステップと、前記トポロジ情報と前記仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する、経路設定検証ステップと、を有する。また、前記スイッチ同士が接続されている場合、前記トポロジ情報は、そのスイッチ同士の接続関係をさらに示す。また、前記スイッチシミュレートステップは、シミュレートした前記中継処理又は前記制御処理によって他の前記スイッチにパケットが送信される場合に、そのパケットを受信する前記スイッチが行う前記中継処理を再帰的にシミュレートする。【００１１】
本願発明が提供するプログラムは、コンピュータを、本発明が提供する経路設定検証装置として機能させるプログラムである。当該プログラムは、前記コンピュータに、本発明が提供する経路設定検証装置の各機能構成部が有する機能を持たせる。
【発明の効果】
【００１２】
本発明によれば、動的に経路設定を行うネットワークシステムにおける経路設定の正当性を、短い時間で検証する技術が提供される。
【図面の簡単な説明】
【００１３】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１４】
【図１】実施形態１に係る経路設定検証装置を例示するブロック図である。
【図２】検証対象のネットワークシステムを例示するブロック図である。
【図３】テストヘッダの構成を例示する図である。
【図４】テストパケットの構成を例示する図である。
【図５】仮想経路表集合の構成を例示する図である。
【図６】実施形態１に係る経路設定検証装置のハードウエア構成を例示する図である。
【図７】実施形態１の経路設定検証装置によって実行される全体処理の流れを例示するフローチャートである。
【図８】実施形態１の経路設定検証装置によって実行されるパケット処理の流れを例示するフローチャートである。
【図９】実施形態２に係る経路設定検証装置を例示するブロック図である。
【図１０】実施形態３に係る経路設定検証装置を例示するブロック図である。
【図１１】仮想経路表集合の状態遷移を概念的に示す図である。
【図１２】実施例におけるネットワークシステムの構成を示すブロック図である。
【図１３】実施例における経路設定情報が示す実行条件及びイベントハンドラを示す図である。
【図１４】実施例における仮想経路表集合の遷移を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１６】
[実施形態１]
図１は、実施形態１に係る経路設定検証装置２０００を示すブロック図である。図１において、矢印の流れは情報の流れを示している。また、図１において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【００１７】
経路設定検証装置２０００は、図２に示すネットワークシステム４０の経路設定を検証する。ネットワークシステム４０は、ホスト１０、スイッチ２０、及び制御装置３０を含む。経路設定検証装置２０００は、ネットワークシステム４０の経路設定を検証するために、ネットワークシステム４０の動作をシミュレートする。ここで、ネットワークシステム４０における経路設定とは、各スイッチが各パケットをどのように中継するのかを表す設定である。言い換えると、ネットワークシステム４０における経路設定は、各パケットがどの経路を通ってネットワークシステム４０内を流れていくかを示す。
【００１８】
以下、まずは、経路設定検証装置２０００がシミュレートするネットワークシステム４０について説明する。
【００１９】
＜ホスト１０＞
ホスト１０は、PC（Personal Computer）やサーバなどの計算機が備えるネットワークインタフェースである。例えばネットワークインタフェースは、ネットワークインタフェースカード（NIC）である。１つの PC が複数のネットワークインタフェースを備えている場合、それら各ネットワークインタフェースは、それぞれ異なるホスト１０として扱われる。
【００２０】
ホスト１０は、少なくとも１つのスイッチ２０と接続されている。そして、接続されているスイッチ２０に対して、パケットを送信する。ここで、パケットは、ネットワークを介して送信されるデータである。パケットは、各種情報を示すヘッダを含む。ヘッダに示される情報については、後述する。
【００２１】
＜スイッチ２０＞
スイッチ２０は、制御装置３０と接続されている。また、スイッチ２０は、少なくとも１つのホスト１０又は他のスイッチ２０と接続されている。スイッチ２０は、中継ルールを示す経路表を保持する。中継ルールは、受信したパケットを中継するためのルールである。例えば中継ルールは、受信したパケットのヘッダが示す MAC（Media Access Control）アドレスやIP（Internet Protocol ）アドレスに応じた中継方法を示すルールや、パケットを受信した入力ポートに応じた中継方法を示すルールなどである。例えば中継ルールは、「受信したパケットのヘッダが示す宛先 MAC（Media Access Control）アドレスが XX:XX:XX:XX:XX:XX である場合、そのパケットをポート２から出力する」といったルールを示す。
【００２２】
スイッチ２０は、受信したパケットの中継を行う。受信したパケットに関する中継ルールが経路表に含まれている場合、スイッチ２０は、その中継ルールに従ってパケットの送信や破棄を行う。一方、受信したパケットに関する中継ルールが経路表に含まれていない場合、スイッチ２０は、制御装置３０に対して制御要求を送信する。制御要求は、制御装置３０に対して、スイッチ２０が受信したパケットに関する情報を伝え、それに対する制御処理の要求を示す。例えば制御要求は、スイッチ２０が受信したパケットのヘッダに含まれる情報を示す。また例えば、制御要求は、パケットを受信したスイッチ２０のポートの、ポート番号を示す。
【００２３】
＜制御装置３０＞
制御装置３０は、スイッチ２０の動作を制御する装置である。制御装置３０は、スイッチ２０から制御要求を受信し、受信した制御要求に応じて、スイッチ２０が保持する経路表の更新などを行う。
【００２４】
制御装置３０は、経路設定情報に基づいて動作する。経路設定情報は、イベントハンドラと、そのイベントハンドラが実行される条件である実行条件とを対応付ける情報である。例えば経路設定情報は、プログラムの形で表される。制御装置３０は、スイッチ２０から制御要求を受信した場合、その制御要求が示す情報と、経路設定情報が示す実行条件とを比較する。そして、制御装置３０は、制御要求が示す情報が実行条件を満たす場合、その実行条件と対応するイベントハンドラが示す処理を行う。
【００２５】
イベントハンドラが行う処理は、例えばスイッチ２０が保持する経路表の更新である。具体的には、制御装置３０は、イベントハンドラを実行することで、中継ルールをスイッチ２０の経路表に追加する。スイッチ２０の経路表が更新されることにより、ネットワークシステム４０における経路設定が更新される。なおイベントハンドラは、スイッチ２０の経路表を更新する代わりに、スイッチ２０に対して中継ルールの送信を行ってもよい。この場合、中継ルールを受信したスイッチ２０が、自身で経路表の更新を行う。
【００２６】
経路設定検証装置２０００は、上述した特徴を持つネットワークシステム４０における経路設定の検証を行う。そのために、経路設定検証装置２０００は、トポロジ情報取得部２０２０、経路設定情報取得部２０４０、テストヘッダ生成部２０６０、テストデータ生成部２０８０、仮想経路表集合格納部２１００、スイッチシミュレート部２１２０、制御装置シミュレート部２１４０、及び経路設定検証部２１６０を有する。以下、これらの機能構成部について、詳細に説明する。
【００２７】
＜トポロジ情報取得部２０２０＞
トポロジ情報取得部２０２０は、トポロジ情報を取得する。トポロジ情報は、ホスト１０とスイッチ２０との接続関係を示す。トポロジ情報は、ホスト１０が、どのスイッチ２０のどのポートと接続されているのかを示す。また、スイッチ２０同士が接続されている場合、トポロジ情報は、そのスイッチ２０同士の接続関係も示す。この場合、トポロジ情報は、どのスイッチ２０のどのポートが、他のスイッチ２０のどのポートと接続されているかを示す。トポロジ情報はさらに、ホスト１０の MAC アドレスや IP アドレスを示してもよい。
【００２８】
＜経路設定情報取得部２０４０＞
経路設定情報取得部２０４０は、経路設定情報を取得する。これは、経路設定検証装置２０００がシミュレートする対象の制御装置３０が用いる経路設定情報と同内容の情報である。例えば経路設定情報取得部２０４０は、シミュレートする対象の制御装置３０から、経路設定情報を取得する。また、経路設定情報取得部２０４０は、制御装置３０以外の別の装置から経路設定情報を取得してもよいし、人手による経路設定情報の入力を受け付けてもよい。
【００２９】
＜テストヘッダ生成部２０６０＞
テストヘッダ生成部２０６０は、経路設定情報取得部２０４０が取得した経路設定情報を用いて、テストヘッダを生成する。テストヘッダは、経路設定情報が示すいずれかの実行条件を満たす情報を含む。経路設定情報取得部２０４０は、経路設定情報が複数の実行条件を示す場合、それら複数の実行条件それぞれからテストヘッダを生成する。テストヘッダは、シミュレートするパケットのヘッダに含める情報である。
【００３０】
ここで、１つの実行条件を満たす情報が複数ある場合、テストヘッダ生成部２０６０は、そのいずれかの情報を用いてテストヘッダを生成する。例えば、実行条件が、「送信元 IP アドレスが 192.168.0.* である（*はワイルドカード）」のような場合、実行条件を満たす送信元 IP アドレスは複数ある。この場合、テストヘッダ生成部２０６０は、この条件を満たす IP アドレスの中から、適当なものを選択して用いる。例えば、テストヘッダ生成部２０６０は、実行条件を満たす情報の中の一つを、ランダムに選択する。その他にも例えば、テストヘッダ生成部２０６０は、実行条件を満たす情報を、トポロジ情報を用いて決定する。例えば実行条件を満たすための情報が、送信元ホストの IP アドレスであるとする。さらに、トポロジ情報が、ホスト１０の IP アドレスを示しているとする。この場合、実行条件を満たす複数の IP アドレスの中にホスト１０の IP アドレスが含まれていたら、テストヘッダ生成部２０６０は、このホスト１０の IP アドレスを、テストヘッダが示す情報として用いる。
【００３１】
図３は、テストヘッダ生成部２０６０によって生成されるテストヘッダの集合を、テーブル形式で例示した図である。このテーブルを、テストヘッダテーブル２００と表記する。テストヘッダテーブル２００は、ヘッダ ID ２０２及びヘッダ情報２０４を有する。ヘッダ ID ２０２は、テストヘッダの ID である。ヘッダ情報２０４は、テストヘッダが示す情報である。例えば、図３の１行目のレコードは、宛先であるホスト１０の MAC アドレスが XX:XX:XX:XX:XX:XX であることを示している。また、図３の２行目のレコードは、送信元であるホスト１０の IP アドレスが 192.168.0.1 であることを示している。
【００３２】
＜テストデータ生成部２０８０＞
テストデータ生成部２０８０は、テストデータを生成する。テストデータは、ネットワークシステム４０の動作をシミュレートするために利用する、仮想的なパケット群である。
【００３３】
まず、テストデータ生成部２０８０は、ホスト１０の集合と、テストヘッダ生成部２０６０が生成したテストヘッダの集合との、直積集合を生成する。この直積集合を、テストパケット集合と表記する。また、テストパケット集合に含まれる各要素を、テストパケットと表記する。テストパケットは、「ホスト１０、テストヘッダ」の組み合わせである。例えば、テストパケットＡが「ホストＡ、テストヘッダＡ」の組み合わせであるとする。このテストパケットＡは、テストヘッダＡによって示される情報をヘッダに含むパケットが、ホストＡから送信されたことをシミュレートするために用いられる。経路設定検証装置２０００は、「ホスト１０、テストヘッダ」の全ての組み合わせを用いて、ネットワークシステム４０の動作をシミュレートする。具体的には、経路設定情報が示すイベントハンドラのいずれかを実行するパケットが、ホスト１０から送信されたことをシミュレートする。
【００３４】
図４は、テストデータ生成部２０８０によって生成されるテストパケット集合をテーブル形式で例示する図である。このテーブルを、テストパケットテーブル３００と表記する。テストパケットテーブル３００は、パケット ID ３０２、ホスト ID ３０４、及びヘッダ ID ３０６を示す。パケット ID ３０２は、テストパケットの ID を示す。ホスト ID ３０４は、テストパケットが示すホスト１０の ID である。ヘッダ ID ３０６は、テストパケットが示すテストヘッダの ID である。テストパケットテーブルの各レコードが表すテストパケットは、ヘッダ ID ３０６で特定されるテストヘッダが示す情報をヘッダに含むパケットが、ホスト ID ３０４で特定されるホスト１０から送信されたことをシミュレートするために用いられる。
【００３５】
さらに、テストデータ生成部２０８０は、テストパケット集合に含まれる全てのテストパケットを用いて生成できる全ての順列を生成する。この各順列を、テストパケット列と表記する。例えばテストパケット集合にｎ個のテストパケットが含まれているとすると、テストパケット列の個数はｎ！個となる。例えばテストデータ生成部２０８０は、テストパケットの ID を順位付けて並べることで、テストパケット列を生成する。例えば、テストパケット集合が「host1、host2、host3」である場合、テストデータ生成部２０８０は、「host1、host2、host3」、「host1、host3、host2」、「host2、host1、host3」、「host2、host3、host1」、「host3、host1、host2」、及び「host3、host2、host1」という６個のテストパケット列を生成する。例えば、経路設定検証装置２０００がテストパケット列「host1、host2、host3」についてシミュレーションを行う場合、ID がhost1のテストパケット、ID がhost2のテストパケット、ID がhost3のテストパケットという順でテストパケットが送信されたことをシミュレートする。
【００３６】
＜仮想経路表集合格納部２１００＞
経路設定検証装置２０００は、ネットワークシステム４０の動作をシミュレートするために、各スイッチ２０が保持する経路表の変化をシミュレートする。そのために、仮想経路表集合格納部２１００は、経路設定検証装置２０００によってシミュレートされた各経路表の集合を格納する。ここで、経路設定検証装置２０００によってシミュレートされた経路表を、仮想経路表と表記する。仮想経路表は、１つのスイッチ２０と対応付けられる。スイッチ２０と対応付けられた仮想経路表は、そのスイッチ２０が保持する経路表を、経路設定検証装置２０００がシミュレートしたものである。仮想経路表集合格納部２１００が格納する仮想経路表の集合を、仮想経路表集合と表記する。
【００３７】
図５は、仮想経路表集合格納部２１００が格納する仮想経路表集合の構成をテーブル形式で例示する図である。このテーブルを、仮想経路表集合テーブル４００と表記する。仮想経路表集合テーブル４００の各レコードは、スイッチ ID ４０２で特定されるスイッチの仮想経路表が、中継ルール４０４に示す中継ルールを含んでいることを表す。ここで、仮想経路表集合テーブル４００に含まれるレコードのうち、同一のスイッチ ID ４０２を有するレコードのみの集合は、そのスイッチ ID ４０２で特定されるスイッチ２０に対応する仮想経路表を表す。
【００３８】
＜スイッチシミュレート部２１２０＞
スイッチシミュレート部２１２０は、スイッチ２０の動作をシミュレートする。スイッチシミュレート部２１２０は、スイッチ２０の動作をシミュレートするために、そのスイッチ２０に対応する仮想経路表を用いる。
【００３９】
スイッチシミュレート部２１２０は、以下の流れで動作する。まず、スイッチシミュレート部２１２０は、テストデータ生成部２０８０によって生成されたテストデータから、テストパケット列を１つ取り出す。次に、スイッチシミュレート部２１２０は、取り出した１つのテストパケット列から、テストパケットを順次取り出す。ここで、スイッチシミュレート部２１２０は、テストパケットを、テストパケット列の中で順位付けられた順に取り出す。そして、テストパケットそれぞれについて、スイッチ２０の動作を順次シミュレートする。スイッチシミュレート部２１２０は、１つのテストパケット列に含まれる全てのテストパケットについて、スイッチ２０の動作をシミュレートし終えたら、テストデータから次のテストパケット列を取り出す。なお、スイッチシミュレート部２１２０は、１つのテストパケット列に関するシミュレーションを行う前に、仮想経路表集合格納部２１００に格納されている各仮想経路表を初期化する。こうすることで、各テストパケット列について、経路設定が初期状態からどのように遷移していくかをシミュレートする。なお、初期状態における仮想経路表の内容は、初期状態における各スイッチ２０の経路表の内容と同様である。例えば初期状態の経路表は、中継ルールを１つも持たない。その他にも例えば、初期状態の経路表は、運用前に予め与えられた中継ルールを持つ。例えば、「他のいずれの中継ルールにも当てはまらないパケットは破棄する」という中継ルールを運用前に予め設定しておくことで、想定外のパケットを全て破棄するようにしておくことがある。
【００４０】
スイッチシミュレート部２１２０は、以上の動作を全てのテストパケット列について繰り返す。ここで、スイッチシミュレート部２１２０がテストパケット列を取り出す順番は任意である。
【００４１】
次に、スイッチシミュレート部２１２０が１つのテストパケットについて行うスイッチ２０の動作のシミュレートについて説明する。まず、スイッチシミュレート部２１２０は、テストパケットが示すホスト１０と接続されているスイッチ２０を特定する。そして、テストパケットが示すテストヘッダに含まれる情報を有するパケットを、スイッチ２０が受信した場合を想定したシミュレートを行う。具体的には、そのパケットに対するスイッチ２０が行う中継処理をシミュレートする。この中継処理が制御要求の送信を伴う場合、後述する制御装置シミュレート部２１４０が、この制御要求を処理する制御処理をシミュレートする。
【００４２】
＜制御装置シミュレート部２１４０＞
制御装置シミュレート部２１４０は、制御装置によって行われる動作をシミュレートする。具体的には、スイッチシミュレート部２１２０によってシミュレートされた中継処理が制御要求の送信を伴う場合に、制御装置３０がその制御要求に対して行う制御処理をシミュレートする。この制御処理が経路表の更新を伴う場合、制御装置シミュレート部２１４０は、この経路表をシミュレートした仮想経路表の内容を更新する。更新の内容は、制御処理が経路表に加える更新の内容と同等である。
【００４３】
＜経路設定検証部２１６０＞
経路設定検証部２１６０は、トポロジ情報と仮想経路表集合を用いて、その仮想経路表集合によって表される経路設定の正当性を検証する。ここで、経路設定が不正であるとは、例えば、スイッチ２０が中継すべきパケットを中継しない場合や、パケットがネットワークシステム４０の中をループしてしまう場合などがある。例えば、経路設定情報が示す実行条件に誤りがあると、実行されるべきイベントハンドラが実行されない。そのために、スイッチ２０が中継すべきパケットに関する中継ルールがスイッチ２０の経路表に追加されない。その結果、スイッチ２０は、中継すべきパケットを受信しても、そのパケットに関する中継ルールを取得できず、結果としてそのパケットを中継できない。したがって、このパケットは、経路設定が正しくされていれば到達するはずの宛先に到達しないことになる。これは、ホスト間で正しく情報の伝送が行えないことを意味する。
【００４４】
なお、各経路設定が正当であるか否かを判定する方法は周知技術であるため、説明を省略する。この方法は、例えば非特許文献２に開示されている。
【００４５】
＜ハードウエア構成＞
経路設定検証装置２０００が有する各機能構成部は、例えば、個々に又は複数組み合わせられた状態で、少なくとも１つのハードウエア構成要素として実現される。その他にも例えば、各機能構成部は、少なくとも１つのソフトウエア構成要素として実現される。その他にも例えば、各機能構成部は、ハードウエア構成要素とソフトウエア構成要素の組み合わせにより実現される。
【００４６】
図６は、経路設定検証装置２０００のハードウエア構成を例示するブロック図である。図６において、経路設定検証装置２０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、及びストレージ１０８０を有する。
【００４７】
バス１０２０は、プロセッサ１０４０、メモリ１０６０及びストレージ１０８０が、相互にデータを送受信するためのデータ伝送路である。プロセッサ１０４０は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ１０６０は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ１０８０は、例えばメモリカード、ハードディスク、又は SSD (Solid State Drive) などの記憶装置である。また、ストレージ１０８０は、RAM や ROM 等のメモリであってもよい。
【００４８】
トポロジ情報取得モジュール１２２０は、経路設定検証装置２０００に、トポロジ情報取得部２０２０の機能を持たせるためのプログラムである。プロセッサ１０４０は、トポロジ情報取得モジュール１２２０を実行することで、トポロジ情報取得部２０２０の機能を実現する。
【００４９】
経路設定情報取得モジュール１２４０は、経路設定検証装置２０００に、経路設定情報取得部２０４０の機能を持たせるためのプログラムである。プロセッサ１０４０は、経路設定情報取得モジュール１２４０を実行することで、経路設定情報取得部２０４０の機能を実現する。
【００５０】
テストヘッダ生成モジュール１２６０は、経路設定検証装置２０００に、テストヘッダ生成部２０６０の機能を持たせるためのプログラムである。プロセッサ１０４０は、テストヘッダ生成モジュール１２６０を実行することで、テストヘッダ生成部２０６０の機能を実現する。
【００５１】
テストデータ生成モジュール１２８０は、経路設定検証装置２０００に、テストデータ生成部２０８０の機能を持たせるためのプログラムである。プロセッサ１０４０は、テストデータ生成モジュール１２８０を実行することで、テストデータ生成部２０８０の機能を実現する。
【００５２】
スイッチシミュレートモジュール１３２０は、経路設定検証装置２０００に、スイッチシミュレート部２１２０の機能を持たせるためのプログラムである。プロセッサ１０４０は、スイッチシミュレートモジュール１３２０を実行することで、スイッチシミュレート部２１２０の機能を実現する。
【００５３】
制御装置シミュレートモジュール１３４０は、経路設定検証装置２０００に、制御装置シミュレート部２１４０の機能を持たせるためのプログラムである。プロセッサ１０４０は、制御装置シミュレートモジュール１３４０を実行することで、制御装置シミュレート部２１４０の機能を実現する。
【００５４】
経路設定検証モジュール１３６０は、経路設定検証装置２０００に、経路設定検証部２１６０の機能を持たせるためのプログラムである。プロセッサ１０４０は、経路設定検証モジュール１３６０を実行することで、経路設定検証部２１６０の機能を実現する。
【００５５】
例えばプロセッサ１０４０は、上記各モジュールをメモリ１０６０上に読み出して実行する。ただし、プロセッサ１０４０は、上記各モジュールを、メモリ１０６０上に読み出さずに実行してもよい。
【００５６】
ストレージ１０８０は、仮想経路表集合１３００を格納する。こうすることで、ストレージ１０８０は、仮想経路表集合格納部２１００の機能を実現する。また、ストレージ１０８０は、上記各モジュールを格納する。
【００５７】
経路設定検証装置２０００のハードウエア構成は、図６に示した構成に限定されない。例えば、各モジュールはメモリ１０６０に格納されてもよい。この場合、経路設定検証装置２０００は、ストレージ１０８０を備えていなくてもよい。また、経路設定検証装置２０００は、複数の計算機で構成されてもよい。例えば、経路設定検証装置２０００は、ネットワークシステム４０の動作のシミュレートを行うトポロジ情報取得部２０２０、経路設定情報取得部２０４０、テストヘッダ生成部２０６０、テストデータ生成部２０８０、仮想経路表集合格納部２１００、スイッチシミュレート部２１２０、及び制御装置シミュレート部２１４０を備える計算機と、シミュレーションによって生成された各経路設定の正当性を検証する経路設定検証部２１６０を備える別の計算機とで構成される。
【００５８】
＜処理の流れ＞
図７及び図８を用いて、実施形態１の経路設定検証装置２０００によって実行される処理の流れを説明する。図７は、実施形態１の経路設定検証装置２０００が行う処理の全体である全体処理の流れを例示する。図８は、１つのテストパケットに関する処理であるパケット処理の流れを例示する。パケット処理は、全体処理の中で呼び出される。
【００５９】
＜＜全体処理＞＞
まず、図７を用いて、全体処理の流れを説明する。ステップＳ１０２において、トポロジ情報取得部２０２０は、トポロジ情報を取得する。ステップＳ１０４において、経路設定情報取得部２０４０は、経路設定情報を取得する。ステップＳ１０６において、テストヘッダ生成部２０６０は、テストヘッダを生成する。ステップＳ１０８において、テストデータ生成部２０８０は、テストデータを生成する。
【００６０】
ステップＳ１０９〜ステップＳ１１８は、各テストパケット列について実行されるループ処理Ａである。ループ処理Ａで用いるカウンタｉの初期値は０である。また、ループ処理Ａを１回実行する度に、スイッチシミュレート部２１２０は、ｉの値を１増加させる。ステップＳ１０９において、スイッチシミュレート部２１２０は、「ｉ＜テストパケット列の総数」であるか否かを判定する。ここで、「ｉ＝テストパケット列の総数」であることは、既に全てのテストパケット列について、ループ処理Ａが実行されたことを意味する。したがって、「ｉ＜テストパケット列の総数」でない場合、全体処理は終了する。一方、「ｉ＜テストパケット列の総数」である場合、全体処理はステップＳ１１０に進む。以下、ｉ番目のテストパケット列を、テストパケット列ｉと表記する。ステップＳ１１０において、スイッチシミュレート部２１２０は、仮想経路表集合格納部２１００に格納されている全ての仮想経路表を初期化する。
【００６１】
ステップＳ１１２〜ステップＳ１１６は、テストパケット列ｉに含まれる各テストパケットについて実行されるループ処理Ｂである。ループ処理Ｂで用いるカウンタjの初期値は０である。また、ループ処理Ｂを１回実行する度に、スイッチシミュレート部２１２０は、jの値を１増加させる。ステップＳ１１２において、スイッチシミュレート部２１２０は、「j＜テストパケットの総数」であるか否かを判定する。ここで、「j＝テストパケットの総数」であることは、既に、テストパケット列ｉに含まれる全てのテストパケットについて、ループ処理Ｂが実行されたことを意味する。したがって、「j＜テストパケットの総数」でない場合、全体処理はステップＳ１１８に進む。一方、「j＜テストパケットの総数」の場合、全体処理は、ステップＳ１１４に進む。以下、テストパケット列ｉのj番目のパケットを、テストパケットｉ−ｊと表記する。ステップＳ１１４において、スイッチシミュレート部２１２０は、テストパケットｉ−ｊについてパケット処理を行う。パケット処理の具体的な流れについては、後述する。
【００６２】
ステップＳ１１６は、ループ処理Ｂの終端である。そのため、ステップＳ１１６において、全体処理はステップＳ１１２に進む。ステップＳ１１８は、ループ処理Ａの終端である。そのため、ステップＳ１１８において、全体処理はステップＳ１０９に進む。
【００６３】
＜＜パケット処理＞＞
図８を用いて、１つのテストパケットについてシミュレーションを行うパケット処理について説明する。ここで、このパケット処理に対して入力されるテストパケットを、テストパケット P と表記する。ステップＳ１１４で呼び出されるパケット処理におけるテストパケット P は、テストパケットｉ−ｊである。
【００６４】
ステップＳ２０２において、スイッチシミュレート部２１２０は、スイッチ２０による中継処理をシミュレートする。このスイッチ２０、テストパケット P が示す送信元と、他のスイッチ２０を介さずに接続されているスイッチ２０である。また、この中継処理は、テストパケット P が示すテストヘッダによって示される情報をヘッダに含むパケットに対して、スイッチ２０が行う処理である。
【００６５】
ステップＳ２０４において、経路設定検証装置２０００は、ステップＳ２０２の中継処理が制御要求を送信するか否かをチェックする。この中継処理が制御要求を送信する場合、パケット処理はステップＳ２０６に進む。一方、この中継処理が制御要求を送信しない場合、パケット処理はステップＳ２１２に進む。
【００６６】
ステップＳ２０６において、制御装置シミュレート部２１４０は、ステップＳ２０２の中継処理で送信された制御要求に対して制御装置３０が行う制御処理をシミュレートする。
【００６７】
ステップＳ２０８において、経路設定検証装置２０００は、ステップＳ２０６の制御処理に伴って仮想経路表集合が更新される否かを判定する。ステップＳ２０６の制御処理に伴って仮想経路表集合が更新される場合、パケット処理はステップＳ２１０に進む。一方、ステップＳ２０６の制御処理に伴って仮想経路表集合が更新されない場合、パケット処理はステップＳ２１２に進む。
【００６８】
ステップＳ２１０において、経路設定検証部２１６０は、更新された仮想経路表集合によって表される経路設定の正当性を検証する。ここで、経路設定検証部２１６０が、検証対象の仮想経路表集合と同内容の仮想経路表集合について、既に経路設定の正当性を検証していたとする。この場合、経路設定検証部２１６０は、この仮想経路表集合の検証を行わなくてもよい。こうすることで、経路設定検証部２１６０が経路設定の検証を行う回数が少なくなり、結果として経路設定の検証にかかる時間が短くなる。なおこの場合、経路設定検証部２１６０は、これまでに検証を行った仮想経路表集合を特定できる必要がある。そこで、例えば経路設定検証装置２０００は、既に検証を終えた仮想経路表集合を格納する格納部を有する。その他にも例えば、経路設定検証装置２０００は、これまでに生成した仮想経路表集合に対し、既に検証を終えたかどうかを表すフラグを対応付けて格納する格納部を有してもよい。
【００６９】
ここで、２つの仮想経路表集合が同内容であるか否かを判定する際、中継ルールの内容及び各中継ルールが示されている順序が同一である場合のみ、２つの仮想経路表集合が同内容であると判定してもよいし、順序は考慮せずに中継ルールの内容が一致すれば同内容であると判定してもよい。ただし、中継ルールが示されている順序を考慮せずに判定する方が、同内容と判定される仮想経路表集合の数が多くなる。そのため、経路設定検証部２１６０が経路設定の検証を行う回数が少なくなり、結果として経路設定の検証にかかる時間が短くなる。
【００７０】
ステップＳ２１２において、経路設定検証装置２０００は、ステップＳ２０２でシミュレートした中継処理、又はステップＳ２０６でシミュレートした制御処理が、パケットの送信を行うか否かをチェックする。これらの処理がパケットの送信を行う場合、パケット処理はステップＳ２１４に進む。一方、これらの処理がパケットの送信を行わない場合、パケット処理は終了する。
【００７１】
ステップＳ２１４において、経路設定検証装置２０００は、ステップＳ２０２でシミュレートした中継処理によって送信されたパケット、及びステップＳ２０６でシミュレートした制御処理で送信されたパケットそれぞれに基づいて、テストパケットをそれぞれ生成する。このテストパケットが示す送信元は、スイッチシミュレート部２１２０がシミュレートしたスイッチ２０である。このテストパケットが示すテストヘッダは、スイッチシミュレート部２１２０がシミュレートした中継処理や、制御装置シミュレート部２１４０がシミュレートした制御処理の内容に依存する。
【００７２】
ステップＳ２１６において、生成したテストパケットについて、図８で表されるパケット処理を再帰的に実行する。送信されたパケットが複数ある場合、それら複数のパケットにそれぞれ対応するテストパケットについて、パケット処理を再帰的に実行する。
【００７３】
＜作用・効果＞
経路設定検証装置２０００は、ネットワークシステム４０の制御装置３０によって用いられる経路設定情報を用いて、その経路設定情報が示す各イベントハンドラを実行する実行条件を満たすパケットのヘッダ（テストヘッダ）を生成する。そして、ネットワークシステム４０に含まれるホストとテストヘッダとの全ての組み合わせに含まれる要素（テストパケット）を任意の順序で並べた順列（テストパケット列）について、ネットワークシステム４０の挙動をシミュレートする。このように、本実施形態の経路設定検証装置２０００によれば、Symbolic Execution のような実行に長い時間を要する手法を用いず、制御装置３０によって利用される経路設定情報から、シミュレートするパケットのヘッダに示す値を抽出する。この方法により、Symbolic Execution を用いる場合と比較し、シミュレーションにかかる時間が短くなる。そのため、既存技術と比較し、シミュレーションにかかる時間が短い。これにより、ネットワークシステム４０の経路設定の検証にかかる時間が短くなる。
【００７４】
また、経路設定検証装置２０００は、ネットワークシステム４０の状態のうち、スイッチ２０が有するパケットキューの状態など、経路設定の遷移に影響を及ぼさない情報をシミュレートしない。そのため、既存技術と比較し、シミュレーションにかかる時間が短い。これにより、ネットワークシステム４０の経路設定の検証にかかる時間がさらに短くなる。
【００７５】
[実施形態２]
図９は、実施形態２に係る経路設定検証装置２０００を示すブロック図である。図９において、矢印の流れは情報の流れを示している。また、図９において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【００７６】
実施形態２の経路設定検証装置２０００は、ネットワークシステム４０の動作をシミュレートする際に生成される仮想経路表集合の履歴を格納する仮想経路表集合履歴格納部２１８０を有する点で、実施形態１の経路設定検証装置２０００と異なる。以下、具体的に説明する。
【００７７】
＜仮想経路表集合履歴格納部２１８０＞
仮想経路表集合履歴格納部２１８０は、仮想経路表集合の履歴を格納する。例えば、仮想経路表集合格納部２１００は、格納しているいずれかの仮想経路表が更新される場合、その更新前に、格納している全ての仮想経路表（仮想経路表集合）のコピーを仮想経路表集合履歴格納部２１８０へ格納する。こうすることで、経路設定検証装置２０００がネットワークシステム４０の動作をシミュレートする際に生成される各仮想経路表集合が、仮想経路表集合履歴格納部２１８０に格納される。ここで、前述したように、仮想経路表集合は、ネットワークシステム４０における経路設定を表す。そのため、仮想経路表集合履歴格納部２１８０は、ネットワークシステム４０における経路設定の更新履歴を格納しているとも言える。
【００７８】
なお、仮想経路表集合の履歴を格納する方法は、前述した、仮想経路表集合格納部２１００が、格納している仮想経路表をコピーする方法に限定されない。例えば、スイッチシミュレート部２１２０は、シミュレートする中継処理がいずれかの仮想経路表を更新する際、その更新を行う前に、仮想経路表集合格納部２１００に格納されている全ての仮想経路表をコピーして、仮想経路表集合履歴格納部２１８０に格納する。
【００７９】
また、スイッチシミュレート部２１２０や仮想経路表集合格納部２１００は、仮想経路表集合を仮想経路表集合履歴格納部２１８０に格納する際に、既に同じ内容の仮想経路表集合が格納されていたら、その仮想経路表集合を格納しなくてもよい。これにより、仮想経路表集合履歴格納部２１８０が格納する仮想経路表集合のデータサイズが小さくなる。また、これにより、仮想経路表集合履歴格納部２１８０に格納されている仮想経路表を用いて検証を行う経路設定検証部２１６０が、同一の仮想経路表集合に関する検証を重複して行うことを防ぐことができる。したがって、経路設定検証装置２０００による検証の効率が上がる。
【００８０】
なお、２つの仮想経路表集合が同内容であるか否かを判定する際、中継ルールの内容及び各中継ルールが示されている順序が同一である場合のみ、２つの仮想経路表集合が同内容であると判定してもよいし、順序は考慮せずに中継ルールの内容が一致すれば同内容であると判定してもよい。ただし、中継ルールが示されている順序を考慮せずに判定する方が、仮想経路表集合の履歴の数が少なくなる。そのため、経路設定検証部２１６０が経路設定の検証を行う回数が少なくなり、結果として経路設定の検証にかかる時間が短くなる。また、仮想経路表集合履歴格納部２１８０を実現するために要する記憶領域のサイズが小さくなる。
【００８１】
また、仮想経路表集合履歴格納部２１８０は、更新前後の仮想経路表集合を対応付けるように、仮想経路表集合を格納してもよい。こうすることで、仮想経路表集合が遷移する流れが、仮想経路表集合履歴格納部２１８０に格納される。つまり、ネットワークシステム４０における経路設定が変更されていく流れが、仮想経路表集合履歴格納部２１８０に格納される。
【００８２】
＜経路設定検証部２１６０＞
実施形態２の経路設定検証部２１６０は、仮想経路表集合履歴格納部２１８０に格納されている複数の仮想経路表集合それぞれによって表される各経路設定の正当性を検証する。例えば経路設定検証部２１６０は、全てのテストパケット列についてシミュレーションが終わった後に、仮想経路表集合履歴格納部２１８０に格納されている各仮想経路表集合の検証を行う。
【００８３】
＜処理の流れ＞
実施形態２の経路設定検証装置２０００は、図８のパケット処理において、Ｓ２１０の代わりに、更新前の仮想経路表集合を格納する処理を行う。また、実施形態２の経路設定検証装置２０００は、図７の全体処理において、Ｓ１１８の後に、仮想経路表集合履歴格納部２１８０に格納されている各仮想経路表集合によって表される経路設定それぞれの正当性を検証する。
【００８４】
＜作用・効果＞
実施形態２の経路設定検証装置２０００によれば、ネットワークシステム４０のシミュレーションを行った際に生成された全ての仮想経路表集合が、仮想経路表集合履歴格納部２１８０に格納される。また、経路設定検証部２１６０は、仮想経路表集合履歴格納部２１８０に格納されている複数の仮想経路表集合それぞれによって表される各経路設定の正当性を検証する。こうすることで、検証対象の仮想経路表集合が生成される度にその仮想経路表集合の正当性の検証する場合と異なり、ネットワークシステム４０のシミュレーションと、そのシミュレーションによって生成された各経路設定の正当性の検証処理とが、明確に切り分けられる。そのため、経路設定検証装置２０００の設計がよりシンプルになる。例えば、経路設定検証装置２０００を、ネットワークシステム４０のシミュレーションを行う計算機と、経路設定の正当性の検証処理を行う計算機とに、容易に分けることができる。
【００８５】
[実施形態３]
図１０は、実施形態２に係る経路設定検証装置２０００を示すブロック図である。図１０において、矢印の流れは情報の流れを示している。また、図１０において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【００８６】
＜仮想経路表集合履歴格納部２１８０＞
実施形態３の仮想経路表集合履歴格納部２１８０は、仮想経路表集合に、その仮想経路表集合が生成された際のシミュレーションに用いられていたテストパケット列の ID を対応付けて格納する。ここで、仮想経路表集合を仮想経路表集合履歴格納部２１８０に格納する際に、その仮想経路表集合と同内容の仮想経路表集合が既に仮想経路表集合履歴格納部２１８０に格納されていたとする。この場合、仮想経路表集合履歴格納部２１８０に仮想経路表集合を格納する仮想経路表集合格納部２１００やスイッチシミュレート部２１２０は、既に格納されている同内容の仮想経路表集合に対して、現在シミュレートしているテストパケット列のIDをさらに対応付ける。こうすることで、１つの仮想経路表集合について、その仮想経路表集合を生成する各テストパケット列がそれぞれ対応付けられる。なお、実施形態２の場合と同様に、２つの仮想経路表集合が同内容であるか否かを判定する際、中継ルールの内容及び各中継ルールが示されている順序が同一である場合のみ、２つの仮想経路表集合が同内容であると判定してもよいし、順序は考慮せずに中継ルールの内容が一致すれば同内容であると判定してもよい。
【００８７】
図１１は、仮想経路表集合の状態遷移を概念的に示す有向グラフである。Ａ〜Ｅは、各仮想経路表集合の ID である。START は、初期状態の経路表集合を表している。そして、矢印に付されている値は、矢印の方向へ仮想経路表集合の状態が遷移した際にシミュレートされていたテストパケット列の ID である。例えば、仮想経路表集合が初期状態から仮想経路表集合Ａへ更新されるのは、スイッチシミュレート部２１２０が、テストパケット列１についてシミュレーションを行った場合である。したがって、仮想経路表集合履歴格納部２１８０は、仮想経路表集合Ａに対してテストパケット列１を対応付けて格納する。同様に、仮想経路表集合履歴格納部２１８０は、仮想経路表集合Ｂに対してテストパケット列２及び３を、仮想経路表集合Ｃに対してテストパケット列１及び２を、仮想経路表集合Ｄに対してテストパケット列３を、仮想経路表集合Ｅに対してテストパケット列１〜３を対応付けて格納する。このようにすることで、仮想経路表集合履歴格納部２１８０に格納されている情報によって、図１１に示すような仮想経路表集合の遷移を表すことができる。
【００８８】
なお、仮想経路表集合履歴格納部２１８０は、仮想経路表集合に対し、その仮想経路表集合が生成された際にシミュレートされたテストパケットの ID をさらに対応付けてもよい。
【００８９】
＜仮想経路表集合入力部２１９０＞
仮想経路表集合入力部２１９０は、仮想経路表集合の入力を受け付ける。ここで、仮想経路表集合入力部２１９０には、仮想経路表集合の ID が入力されてもよい。この ID は、例えば仮想経路表集合履歴格納部２１８０に格納されている各仮想経路表集合に対して割り振られている ID である。
【００９０】
＜テストパケット列抽出部２２００＞
テストパケット列抽出部２２００は、仮想経路表集合入力部２１９０に入力された仮想経路表集合に対応するテストパケット列を、仮想経路表集合履歴格納部２１８０から抽出する。こうすることで、目的の仮想経路表集合を生成するために必要なテストパケット列が抽出される。目的の仮想経路表集合を生成するために必要なテストパケット列を抽出することで、目的の仮想経路表集合を生成するためには、どのような情報を示すパケットを、どのホストから、どのような順序で送信すればよいかが割り出せる。
【００９１】
また、仮想経路表集合履歴格納部２１８０が仮想経路表集合にテストパケット列及びテストパケットを対応付けて格納している場合、テストパケット列抽出部２２００は、取得した仮想経路表集合に対応するテストパケット列及びテストパケットの組み合わせを抽出してもよい。こうすることで、目的の仮想経路表集合を生成するためには、テストパケット列が示すテストパケットのうち、どのテストパケットが必要かをさらに割り出すことができる。
【００９２】
実施形態３の経路設定検証装置２０００は、仮想経路表集合履歴格納部２１８０に格納されている仮想経路表集合の履歴に基づいて、図１０のような仮想経路表集合の状態遷移図を出力する機能を有していてもよい。例えば経路設定検証装置２０００のユーザは、この状態遷移図を閲覧し、検証したい仮想経路表集合を選択する。仮想経路表集合入力部２１９０は、この選択された仮想経路表集合を入力として受け取る。こうすることで、ユーザは、どの仮想経路表集合について検証を行うかを、容易に決定することができる。
【００９３】
＜作用・効果＞
実施形態３によれば、ネットワークシステム４０の経路設定を目的の経路設定にするために、どのような情報を示すパケットを、どのホストから、どのような順序で送信すればよいかを割り出すことができる。
【００９４】
実施形態３の経路設定検証装置２０００は、例えば、ネットワークシステム４０の経路設定について、特定の正当性を検証したい際に有用である。例えば、ネットワークシステム４０において、各経路表のデータ量が想定外に大きくなってしまうことがある。このことを一般に、経路溢れと呼ぶ。そのため、ネットワークシステム４０の運用前に、ネットワークシステム４０において経路溢れが起こらないことを確認することが有用である。ここで、経路溢れが起こるか否かを確認するためには、各経路表の大きさが最も大きくなる場合の経路設定について検証すればよい。これは、例えば図１１のように仮想経路表集合の遷移を有向グラフで表した場合において、状態遷移の終端にある仮想経路表集合である。図１１の場合は、仮想経路表集合Ｅである。そこで、仮想経路表集合入力部２１９０に対して仮想経路表集合Ｅを入力することで、テストパケット列抽出部２２００から、経路表溢れの検証に必要なテストパケット列を取得することができる。
【００９５】
＜実施例＞
以下、経路設定検証装置２０００の実施例について説明する。以下で説明する実施例では、動的な経路設定に OpenFlow を用いる。そのため、経路設定情報が示すイベントハンドラは、OpenFlow に準拠している命令である flow_mod 命令及び pkt_out 命令のいずれか１つ以上を実行する。flow_mod 命令は、スイッチ２０の経路表に対して中継ルールを追加する命令である。制御装置シミュレート部２１４０は、仮想経路表の更新を行うことで、flow_mod 命令をシミュレートする。pkt_out 命令は、指定したスイッチ２０に対してパケットの送信を行わせる命令である。制御装置シミュレート部２１４０が pkt_out 命令をシミュレートした場合、制御命令に伴ってパケットの送信が行われることになるので、スイッチシミュレート部２１２０は、図８のパケット処理を再帰的に実行する。
【００９６】
図１２は、実施例におけるネットワークシステム４０の構成を示すブロック図である。ネットワークシステム４０は、２つのホスト１０−１及び１０−２、２つのスイッチ２０−１及び２０−２、及び制御装置３０を有する。ホスト１０−１の MAC アドレスは ms であり、ホスト１０−２の MAC アドレスは md である。また、ホスト１０−１は、パケットの送信を行うものの、パケットの受信は行わない。一方、ホスト１０−２は、パケットの受信は行うものの、パケットの送信は行わない。スイッチ２０−１及び２０−１はそれぞれ、スイッチ e1、e2 とも表記される。
【００９７】
ホスト１０−１がスイッチ２０−１に対して送信するパケットは、スイッチ２０−１のポート pa で受信される。スイッチ２０−１のポート pb から送信されたパケットは、スイッチ２０−２のポート pa によって受信される。スイッチ２０−２のポート pb から送信されたパケットは、ホスト１０−２によって受信される。
【００９８】
図１３は、実施例における経路設定情報が示す実行条件及びイベントハンドラを示す図である。実行条件は、図１３（ａ）における５０−１と、図１３（ｂ）における５０−２である。また、イベントハンドラは、図１３（ａ）における６０−１と、図１３（ｂ）における６０−２である。実行条件５０−１と５０−２は同一である。
【００９９】
実行条件５０−１及び５０−２は、「制御要求を送信したスイッチがスイッチ e1 であること」、「スイッチ e1 のポート pa がパケットを受信したこと」、及び「受信したパケットの宛先 MAC アドレスが md であること」という３つの条件の論理積である。つまり、これらの３つの条件全てを満たした場合に、イベントハンドラが実行される。
【０１００】
イベントハンドラ６０−１に含まれる３つの命令は、それぞれ次の意味を持つ。１行目の flow_mod は、スイッチ e2 に対し、「スイッチ e2 のポート pa によって、送信元 MAC アドレスが ms であるパケットが受信されたら、そのパケットを e2 のポート pb から送信する」という中継ルールを設定する命令である。HEADER_NO_CHANGE は、「パケットのヘッダの内容を変更しない」ということを指定するフラグである。次に、２行目の flow_mod は、スイッチ e1 に対し、「スイッチ e1 のポート pa によって、送信元 MAC アドレスが ms であるパケットが受信されたら、そのパケットを e1 のポート pb から送信する」という中継ルールを設定する命令である。３行目の pkt_out は、スイッチ e1 に対し、パケットの送信を指示する命令である。なお、イベントハンドラ６０−２は、イベントハンドラ６０−１において１行目の命令と２行目の命令を入れ替えたものに相当する。
【０１０１】
以上の想定環境において、経路設定検証装置２０００を動作させる。ここで、制御装置３０が図１３（ａ）に示す経路設定情報を用いる場合をケース１、制御装置３０が図１３（ｂ）に示す経路設定情報を用いる場合をケース２とする。
【０１０２】
図１４は、ケース１の場合とケース２の場合それぞれについて経路設定検証装置２０００を動作させた場合における、仮想経路表集合の遷移を示す図である。図１４（ａ）はケース１の場合、図１４（ｂ）はケース２の場合をそれぞれ表す。経路設定検証装置２０００がイベントハンドラ６０−１の１行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合８０−１となる。次に、経路設定検証装置２０００がイベントハンドラ６０−１の２行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合８０−２となる。
【０１０３】
一方、経路設定検証装置２０００がイベントハンドラ６０−２の１行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合８０−３となる。次に、経路設定検証装置２０００がイベントハンドラ６０−１の２行目に記載されている flow_mod 命令をシミュレートすると、仮想経路表集合は、仮想経路表集合８０−４となる。なお、仮想経路表集合８０−２と８０−４は同内容である。
【０１０４】
ここで、ケース１の場合は、全ての経路設定が正しくなる。しかし、ケース２の場合は、仮想経路表集合８０−３で表される経路設定が不正である。以下、ケース２の場合について、経路設定検証装置２０００の動作を詳しく説明する。
【０１０５】
まず、トポロジ情報取得部２０２０は、ホスト１０−１とスイッチ２０−１の接続関係、ホスト１０−２とスイッチ２０−２の接続関係、及びスイッチ２０−１とスイッチ２０−２の接続関係を示すトポロジ情報を取得する。また、トポロジ情報は、ホスト１０−２がパケットの送信を行わないことをさらに示す。経路設定情報取得部２０４０は、図１３（ｂ）に示す経路設定情報を取得する。
【０１０６】
テストヘッダ生成部２０６０は、経路設定情報からテストヘッダを生成する。図１３（ｂ）が示す実行条件５０−２のうち、ヘッダに含まれうる情報は、宛先 MAC アドレス md のみである。そこで、テストヘッダ生成部２０６０は、「ヘッダ ID：header1、宛先 MAC アドレス：md」というテストヘッダを生成する。
【０１０７】
テストデータ生成部２０８０は、ホスト１０の集合とテストヘッダの集合とを用いて、テストパケット集合を生成する。ここで、テストデータ生成部２０８０は、トポロジ情報を参照して、パケットの送信を行うホスト１０のみを、テストパケット集合の生成に用いる。そのため、ホスト１０の集合は、「ms」となる。また、テストヘッダの集合は「header1」である。そのため、テストパケット集合は、「ms、header1」というテストパケット（以下、テストパケット１）のみを持つ集合となる。したがって、テストデータに含まれるテストパケット列は、テストパケット１のみを持つ１つのテストパケット列である。
【０１０８】
スイッチシミュレート部２１２０は、上記テストパケット列についてシミュレーションを行う（図８のパケット処理）。ここで、仮想経路表集合の初期状態は空であるとする。テストパケット１の送信元は ms であるので、スイッチシミュレート部２１２０は、ホスト１０−１と接続されているスイッチ２０−１によって実行される中継処理をシミュレートする（ステップＳ２０２）。スイッチ２０−１が受信するパケットのヘッダに含まれる情報は、テストパケット１のテストヘッダが示す「宛先 MAC アドレス = md」を含む。
【０１０９】
ここで、スイッチ２０−１の経路表は空であるため、このパケットを送信するための中継ルールを持たない。そこで、スイッチ２０−１は、制御装置３０に対して制御要求を送信する。この制御要求は、「この制御要求の送信元がスイッチ２０−１である」という情報、「パケットを受信したポートはポート pa である」という情報、及びテストヘッダの内容などを含んでいる。
【０１１０】
制御装置シミュレート部２１４０は、上記制御要求を受信した制御装置３０の動作をシミュレートする（ステップＳ２０６）。ここで、パケットヘッダが示す情報は、実行条件５０−２を全て満たしている。したがって、制御装置シミュレート部２１４０は、イベントハンドラ６０−２をシミュレートする。前述したとおり、ケース２における仮想経路表集合の状態遷移は、図１４（ｂ）によって表される。
【０１１１】
まず、制御装置シミュレート部２１４０は、イベントハンドラ６０−１の１行目の flow_mod 命令をシミュレートする。これにより、仮想経路表集合は、図１４（ｂ）に示す仮想経路表集合８０−３となる。ここで、仮想経路表が更新されたため、経路設定検証部２１６０は、仮想経路表集合８０−３によって表される経路設定の正当性を検証する（ステップＳ２１０）。
【０１１２】
経路設定が仮想経路表集合８０−３で表される場合において、ホスト１０−１がパケットを送信したとする。このパケットは、送信元 MAC アドレスが ms である。また、このパケットは、スイッチ２０−１のポート pa によって受信される。この時、スイッチ２０−１の経路表は、「送信元 MAC アドレスが ms であり、かつポート pa によって受信されたパケットを、ポート pb から送信する」という中継ルールを保持している。そのため、このパケットは、スイッチ２０−２に対して送信される。
【０１１３】
このパケットを受信したスイッチ２０−２は、このパケットの中継処理を行おうとする。しかし、現在の経路設定は仮想経路表集合８０−３に示す設定であるため、スイッチ２０−２の仮想経路表は、中継ルールを持っていない。そこで、スイッチ２０−２は、制御装置３０に対して制御要求を送信する。しかし、スイッチ２０−２から送信された制御要求は、実行条件５０−２を満たさない。そのため、制御装置３０による制御処理が行われず、仮想経路表集合は更新されない。したがって、スイッチ２０−２は、制御要求を送信しても、受信したパケットに対する中継ルールを取得することができず、このパケットの中継を行えない。したがって、このパケットは不達になる。このように、ケース２の場合、仮想経路表集合が８０−３の状態になる場合に、経路設定が不正と判断される。
【０１１４】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記実施形態の組み合わせ、及び上記実施形態以外の様々な構成を採用することもできる。
【０１１５】
この出願は、２０１３年４月２６日に出願された日本出願特願２０１３−０９４２９６号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2014174720.tif 000003
【図２】
2014174720.tif 000004
【図３】
2014174720.tif 000005
【図４】
2014174720.tif 000006
【図５】
2014174720.tif 000007
【図６】
2014174720.tif 000008
【図７】
2014174720.tif 000009
【図８】
2014174720.tif 000010
【図９】
2014174720.tif 000011
【図１０】
2014174720.tif 000012
【図１１】
2014174720.tif 000013
【図１２】
2014174720.tif 000014
【図１３】
2014174720.tif 000015
【図１４】
2014174720.tif 000016
【国際調査報告】
2014174720.tif 000017
2014174720.tif 000018