(57)【要約】【課題】少ないパケットでノードの設定ミスを検出できる検証装置および検証方法を提供する。【解決手段】検出部５２は、ネットワークを構成する複数のノードのうち、入力したパケットの出力先を示す経路情報が更新されたノードを検出する。抽出部５３は、検出されたノードを通る通信経路を、複数のノードの更新前後の経路情報から抽出する。検証部５４は、抽出された通信経路に流されたテストパケットの到達性を検証する。【選択図】図４
2017028629.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを構成する複数のノードのうち、入力したパケットの出力先を示す経路情報が更新されたノードを検出する検出部と、
前記検出部により検出されたノードを通る通信経路を、前記複数のノードの更新前後の前記経路情報から抽出する抽出部と、
前記抽出部により抽出された通信経路に流されたテストパケットの到達性を検証する検証部と、
を有することを特徴とする検証装置。
【請求項２】
前記検出部は、前記複数のノードに対して設定情報の書き込みが行われると、前記経路情報が更新されたノードを検出する
ことを特徴とする請求項１に記載の検証装置。
【請求項３】
前記検出部は、前記複数のノードに対する設定情報の書き込みの監視、前記複数のノードからの前記経路情報の周期的な読み出し、前記経路情報が更新されたノードからの通知の何れかにより、前記経路情報が更新されたノードを検出する
ことを特徴とする請求項１または２に記載の検証装置。
【請求項４】
前記経路情報は、パケットの出力先ごとに、確保する通信帯域を記憶し、
前記抽出部は、前記通信経路と共に当該通信経路の通信帯域を抽出し、
前記検証部は、前記ネットワークの抽出された通信経路に抽出された通信帯域が割当てられているかをさらに検証する
ことを特徴とする請求項１または２に記載の検証装置。
【請求項５】
ネットワークを構成する複数のノードのうち、入力したパケットの出力先を示す経路情報が更新されたノードを検出し、
検出されたノードを通る通信経路を、前記複数のノードの更新前後の前記経路情報から抽出し、
抽出された通信経路に流されたテストパケットの到達性を検証する
処理をコンピュータが実行することを特徴とする検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証装置および検証方法に関する。
【背景技術】
【０００２】
近年、ネットワークの通信経路を制御する技術として、ＳＤＮ（Software  defined  networking)が知られている。ＳＤＮは、ネットワークを構成するネットワーク機器などのノードをソフトウェアによって集中的に制御し、ネットワークの構造や構成、設定などを柔軟に、動的に変更可能とする。このようなネットワークを制御する技術を用いて、複数のノードで構成された大規模なネットワークを論理的に分割し、分割した領域を貸し出すネットワークサービスが想定される。例えば、企業の複数の拠点が仮想的なネットワークで結ばれており、拠点間の帯域(デマンド)を指定してネットワークを貸し出すネットワークサービスが想定される。このようにネットワークを制御する場合、ネットワークの通信経路や帯域を論理的に設計する論理設計が行われる。そして、論理設計の結果に破綻がないことの論理的な検証が行われる。検証の結果、論理的に破綻がないことが確認されたネットワークの設計情報が、各ノードの設定情報に変換され、設定情報が各ノードに書き込まれる。ノードでは、書き込まれた設定情報を基に、内部のハードウェアのレジスタ情報を生成して、内部設定が行なわれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−４０１９６号公報
【特許文献２】特開２００７−２４１８６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、論理的に破綻がないことが確認されたネットワークの設計情報から変換された設定情報を各ノードに書き込んでも、ネットワークに設計通りの通信経路や帯域を確保できない場合がある。例えば、ノードでは、レジスタ情報を生成するファームウェアに問題があるなどの理由により、ハードウェアに設定するレジスタがずれて設計通りの通信経路や帯域を確保できない場合がある。
【０００５】
このような場合に対応するため、ネットワークにテストパケットを流して、ネットワークに論理設計どおりの通信経路や帯域を確保できているかを検証する検証手法が考えられる。例えば、論理設計で変化のあった通信経路にのみテストパケットを流す検証手法が考えられる。しかし、ノードでハードウェアに設定するレジスタがずれた場合、他の通信経路の設定が変更されてしまい、論理設計に変更がない通信経路に影響が及ぶ場合がある。このため、論理設計で変化のあった通信経路にのみテストパケットを流すのみでは、ノードの設定ミスの検出漏れが生じる可能性がある。また、例えば、論理的な設計の内容にかかわらず、ネットワークの全ての始点・終点間の全ての通信経路にテストパケットを流す検証手法が考えられる。しかし、全ての通信経路にテストパケットを流す場合、テストパケットのパケット数が多くなり、検証に時間がかかる。
【０００６】
一つの側面では、少ないパケットでノードの設定ミスを検出できる検証装置および検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、検証装置は、検出部と、抽出部と、検証部と、を有する。検出部は、ネットワークを構成する複数のノードのうち、入力したパケットの出力先を示す経路情報が更新されたノードを検出する。抽出部は、検出部により検出されたノードを通る通信経路を、複数のノードの更新前後の経路情報から抽出する。検証部は、抽出部により抽出された通信経路に流されたテストパケットの到達性を検証する。
【発明の効果】
【０００８】
本発明の一の実施態様によれば、少ないパケットでノードの設定ミスを検出できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、ネットワークの設計の流れを模式的に示した図である。
【図２】図２は、論理設計の結果をネットワークに適用する流れを模式的に示した図である。
【図３】図３は、システムの全体の概略構成の一例を示す図である。
【図４】図４は、検証装置の機能的な構成の一例を示す図である。
【図５】図５は、各ノードの経路テーブルのデータ構成の一例を示す図である。
【図６】図６は、各ノードの経路テーブルの変更の一例を示す図である。
【図７】図７は、論理設計において通信経路を変更する流れの一例を示す図である。
【図８】図８は、通信経路に異常が発生している場合の一例を説明する図である。
【図９】図９は、本実施例に係る検証装置によりテストパケットが流れる通信経路の一例を示す図である。
【図１０】図１０は、従来のテストパケットが流れる通信経路の一例を示す図である。
【図１１】図１１は、従来のテストパケットが流れる通信経路の一例を示す図である。
【図１２】図１２は、通信経路の検証の全体的な流れを概略的に示したタイミングチャートである。
【図１３】図１３は、検証処理の手順の一例を示すフローチャートである。
【図１４】図１４は、各ノードの経路テーブルのデータ構成の一例を示す図である。
【図１５】図１５は、検証プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明に係る検証装置および検証方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
［ネットワークの論理設計および論理検証］
最初に、ネットワークの論理設計および論理検証について説明する。近年、ネットワークは、ネットワークを構成するルータやスイッチなどのネットワーク機器をソフトウェアによって集中的に制御することが可能とされている。このようにネットワークの制御に関する技術として、ＳＤＮがある。ＳＤＮは、ネットワークを構成するネットワーク機器などパケットを中継する装置をノードとし、ノードをソフトウェアによって集中的に制御し、ネットワークの構造や構成、設定などを柔軟に、動的に変更可能とする。
【００１２】
ＳＤＮでは、ネットワークを利用する網利用者がソフトウェアによってネットワークを変更することが可能となる。図１は、ネットワークの設計の流れを模式的に示した図である。図１では、ノードＡ〜Ｆで構成されたネットワークの論理設計を行う場合を例に説明する。網利用者は、ネットワークに対するデマンドを入力する。例えば、網利用者は、ネットワークに対する通信経路および帯域の割当てを求めたデマンドを入力する。図１の例では、デマンドとして、通信経路の送信元および送信先に対応させて、通信経路で確保する帯域がマトリクス状に示されている。デマンドの「Ｓｒｃ」の項目は、通信経路の送信元を記憶する領域である。デマンドの「Ｄｓｔ」の項目は、通信経路の宛先を記憶する領域である。図１の例では、送信元および宛先として、ネットワークで末端のノードとなるノードＡ、ノードＢ、ノードＣが設定され、それぞれのノードのアドレスも設定されている。例えば、送信元および宛先には、「ノードＡ：ＩＰ＿ａ」、「ノードＢ：ＩＰ＿ｂ」および「ノードＣ：ＩＰ＿ｃ」が設定されている。デマンドの送信元と宛先に対応する領域には、確保する帯域を示す数値が設定されている。図１の例では、送信元「ノードＡ：ＩＰ＿ａ」と宛先「ノードＢ：ＩＰ＿ｂ」との間で「１００」Ｍｂｐｓの帯域を追加で確保することを示す。また、図１の例では、送信元「ノードＡ：ＩＰ＿ａ」と宛先「ノードＣ：ＩＰ＿ｃ」との間で「５０」Ｍｂｐｓの帯域を追加で確保することを示す。また、図１の例では、送信元「ノードＢ：ＩＰ＿ｂ」と宛先「ノードＣ：ＩＰ＿ｃ」との間の帯域が「１００」Ｍｂｐｓの通信経路を削除することを示す。
【００１３】
論理設計では、デマンドに従い、経路設計が行われる。例えば、論理設計では、実際のネットワークを構成する各ノードに対して、デマンドの通信経路および帯域に応じて経路設計が行われる。図１の例では、「Ａ−Ｄ−Ｂ；１００（追加）」として、ノードＡ、ノードＤ、ノードＢの経路で１００Ｍｂｐｓの通信経路を追加で確保することを示す。また、図１の例では、「Ａ−Ｄ−Ｆ−Ｅ−Ｃ；５０（追加）」として、ノードＡ、ノードＤ、ノードＦ、ノードＥ、ノードＣの経路で５０Ｍｂｐｓの通信経路を追加で確保することを示す。また、図１の例では、「Ｂ−Ｅ−Ｃ；１００（削除）」として、ノードＢ、ノードＥ、ノードＣの経路で１００Ｍｂｐｓの通信経路を削除することを示す。
【００１４】
ネットワークの論理設計では、経路設計に従い、ネットワークの設計情報が生成される。例えば、論理設計では、設計情報として、実際のネットワークを構成するノードごとに、経路テーブルが生成される。そして、論理設計では、設計情報から、各ノードに設定する設定情報が生成される。例えば、論理設計では、設定情報として、経路テーブルのエントリ情報を生成する。
【００１５】
このように、網利用者によってネットワークを変更可能とした場合、ネットワークを提供する網提供者がネットワークを全て一元管理していた場合に比べて、ネットワークの動作に不整合や想定外の事象が起きる可能性が高くなる。例えば、ネットワークでパケットが転送先に転送されなくなる場合や帯域を確保できない場合がある。そこで、生成された経路テーブルを実際のネットワークに適用する前に、生成された経路テーブルの妥当性の論理的な検証をソフトウェア上で行う。例えば、生成された各ノードの経路テーブルが、元のデマンドを満たすか、ミスを含まないかなど、論理設計の結果に破綻がないことの論理的な検証が行われる。検証の結果、論理的に破綻がないことが確認された経路テーブルを実際のネットワークに適用することで、実際のネットワークの動作に不整合や想定外の事象が起きることを抑制している。
【００１６】
［ネットワークへの適用］
次に、論理設計の結果をネットワークに適用する流れについて説明する。図２は、論理設計の結果をネットワークに適用する流れを模式的に示した図である。ＳＤＮでは、ＳＤＮコントローラ１０が設けられる。ＳＤＮコントローラ１０は、実際のネットワークに対して各種の設定を行う装置である。ＳＤＮコントローラ１０は、例えば、ＳＤＮコントローラ用のソフトウェアがインストールされたパーソナルコンピュータやサーバコンピュータなどのコンピュータなどである。
【００１７】
ＳＤＮコントローラ１０には、論理的に破綻がないことが確認された設計情報が入力される。ＳＤＮコントローラ１０は、設計情報に基づき、各ノードの経路テーブルに通信経路を設定する。例えば、ＳＤＮコントローラ１０は、設計情報から、ノードごとに、各ノードの経路テーブルに通信経路の追加、削除を行うエントリ情報を生成し、各ノードの設定保持用のメモリ１１Ａにエントリ情報を格納する。
【００１８】
ノードでは、メモリ１１Ａに書き込まれたエントリ情報に基づき、内部のハードウェアのレジスタ情報を生成し、内部設定が行なわれる。例えば、ノードでは、ファームウェアによってエントリ情報からレジスタ情報が生成され、内部のＣＡＭ（Content  Addressable  Memory：連想メモリ）１１Ｂに記憶された経路テーブルにルーティングの設定の追加や削除が行われる。ノードは、経路テーブルに従い、パケットをルーティングする。しかし、ノードでは、ファームウェアやハードウェアに問題があるなどの理由によりレジスタがずれ、ＣＡＭ１１Ｂの異なる領域に対してデータの登録や削除が行われる場合がある。このようにＣＡＭ１１Ｂの異なる領域に対してデータの登録や削除が行われた場合、異なる領域のデータに対応する経路に影響が及ぶ。これにより、例えば、論理設計を変更していない他の通信経路に影響が及ぶ場合がある。
【００１９】
そこで、ネットワークにテストパケットを流して、ネットワークに論理設計どおりの通信経路や帯域を確保できているかを検証する。
【００２０】
［システム構成］
次に、本実施例に係るシステム２０について説明する。システム２０は、ＳＤＮを適用して、実際のネットワーク２１を構成するノードをソフトウェアによって集中的に制御するシステムである。図３は、システムの全体の概略構成の一例を示す図である。図３の例では、ネットワーク２１は、ノードＡ〜ノードＩを有する。ノードＣは、ポート０によりノードＥに接続されている。ノードＤは、ポート０によりノードＥに接続されている。ノードＥは、ポート１によりノードＣに接続され、ポート２によりノードＤに接続され、ポート０によりノードＦに接続されている。ノードＦは、ポート２によりノードＥに接続され、ポート０によりノードＡに接続され、ポート１によりノードＢに接続されている。ノードＧは、ポート０によりノードＨに接続されている。ノードＨは、ポート１によりノードＧに接続され、ポート０によりノードＩに接続されている。ノードＡ、ノードＢ、ノードＣ、ノードＤ、ノードＧおよびノードＩは、外部と通信を行うエッジノードである。ノードＥ、ノードＦおよびノードＨは、エッジノードからのデータを中継する中継ノードである。
【００２１】
また、ネットワーク２１は、複数のテストパケット送受信装置２２と、検証装置２３とを有する。ネットワーク２１のエッジノードには、それぞれテストパケット送受信装置２２が接続されている。各テストパケット送受信装置２２は、検証装置２３に接続されている。
【００２２】
テストパケット送受信装置２２は、ネットワーク２１との間でテストパケットの送受信を行う装置である。例えば、テストパケット送受信装置２２は、検証装置２３からの指示に応じて、それぞれエッジノードに対して、それぞれテストパケットの送信を行う。また、テストパケット送受信装置２２は、検証装置２３からの指示に応じて、それぞれエッジノードから受信されたテストパケットの受信結果を検証装置２３に通知する。なお、本実施例では、エッジノードにテストパケット送受信装置２２を接続しているが、エッジノードが検証装置２３からの指示によりテストパケットを送受信する機能を有し、テストパケット送受信装置２２として機能してもよい。
【００２３】
検証装置２３は、ネットワーク２１の検証を行う装置である。検証装置２３は、例えば、パーソナルコンピュータやサーバコンピュータなどのコンピュータなどである。検証装置２３には、論理的に破綻がないことが確認された設計情報が入力される。検証装置２３は、設計情報に基づき、テストパケット送受信装置２２を制御して、ネットワーク２１にテストパケットを流して、ネットワーク２１に論理設計どおりの通信経路を確保できているかを検証する。
【００２４】
［検証装置の構成］
次に、本実施例に係る検証装置２３の構成について説明する。図４は、検証装置の機能的な構成の一例を示す図である。図４に示すように、検証装置２３は、通信Ｉ／Ｆ（インタフェース）部３０と、入力部３１と、表示部３２と、記憶部３３と、制御部３４とを有する。なお、検証装置２３は、上記の機器以外の他の機器を有してもよい。
【００２５】
通信Ｉ／Ｆ部３０は、他の装置との間で通信制御を行うインタフェースである。通信Ｉ／Ｆ部３０としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。
【００２６】
通信Ｉ／Ｆ部３０は、不図示のネットワークを介して他の装置と各種情報を送受信する。例えば、通信Ｉ／Ｆ部３０は、論理的に破綻がないことが確認された設計情報や各ノードの経路テーブルを受信する。なお、設計情報は、ＳＤＮコントローラ１０から受信してもよく、論理設計を行った装置から受信してもよい。また、設計情報は、入力部３１から入力されてもよい。各ノードの経路テーブルは、ＳＤＮコントローラ１０から受信してもよく、各ノードから受信してもよく、論理設計を行った装置から受信してもよい。また、各ノードの経路テーブルは、入力部３１から入力されてもよい。
【００２７】
入力部３１は、各種の情報を入力する入力デバイスである。入力部３１としては、マウスやキーボードなどの操作の入力を受け付ける入力デバイスが挙げられる。入力部３１は、各種の情報の入力を受け付ける。例えば、入力部３１は、検証に関する各種の操作入力を受け付ける。入力部３１は、ユーザからの操作入力を受け付け、受け付けた操作内容を示す操作情報を制御部３４に入力する。
【００２８】
表示部３２は、各種情報を表示する表示デバイスである。表示部３２としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスが挙げられる。表示部３２は、各種情報を表示する。例えば、表示部３２は、各種の操作画面や検証結果を示した画面など、検証に関する各種の画面を表示する。
【００２９】
記憶部３３は、各種のデータを記憶する記憶デバイスである。例えば、記憶部３３は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部３３は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。
【００３０】
記憶部３３は、制御部３４で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部３３は、後述する各種の処理を実行するプログラムを含む各種のプログラムを記憶する。さらに、記憶部３３は、制御部３４で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部３３は、変更前経路情報４１と、変更後経路情報４２と、テスト経路情報４３とを記憶する。
【００３１】
変更前経路情報４１は、変更前のネットワーク２１の通信経路に関する情報を記憶したデータである。例えば、変更前経路情報４１には、ネットワーク２１を構成する各ノードの変更前の経路テーブルが記憶されている。
【００３２】
図５は、各ノードの経路テーブルのデータ構成の一例を示す図である。経路テーブル６０は、各ノードのパケットを転送する経路を定義したエントリ情報を記憶したデータである。例えば、経路テーブル６０には、エントリ情報ごとに、パケットの宛先に応じた出力先が記憶されている。
【００３３】
図５には、各ノードに対応づけて経路テーブル６０が示されている。なお、本実施例では、説明を簡易化するため、経路テーブル６０には、エントリ情報として宛先に応じた出力先のみを示している。図５には、ノードＣ、ノードＤ、ノードＥ、ノードＦ、ノードＧおよびノードＨの経路テーブル６０が示されている。
【００３４】
経路テーブル６０は、「テーブル番号」、「宛先ノード」、「出力ポート」の各項目を有する。テーブル番号の項目は、経路テーブル６０に登録されたレコードを識別する識別情報を記憶する領域である。経路テーブル６０のレコードには、登録された順番に識別番号が付与される。テーブル番号の項目には、レコードに付与された識別番号が格納される。宛先ノードの項目は、パケットの宛先を記憶する領域である。出力ポートの項目は、パケットの宛先に対応する出力先を記憶する領域である。経路テーブル６０は、それぞれのレコードがエントリ情報に対応する。例えば、ノードＥのテーブル番号「１」は、宛先ノードが「Ａ」のパケットの出力ポートが「０」であることを示す。また、ノードＥのテーブル番号「２」は、宛先ノードが「Ｂ」のパケットの出力ポートが「０」であることを示す。
【００３５】
図４に戻り、例えば、変更前経路情報４１には、ノードＣ、ノードＤ、ノードＥ、ノードＦ、ノードＧおよびノードＨの経路テーブル６０が記憶されている。
【００３６】
変更後経路情報４２は、変更されたネットワーク２１の通信経路に関する情報を記憶したデータである。例えば、変更後経路情報４２には、論理的に破綻がないことが確認された設計情報が記憶される。なお、変更後経路情報４２には、経路テーブル６０が変更されたノードの変更後の経路テーブル６０を記憶してもよく、通信経路の追加、削除を行うエントリ情報を記憶してもよい。
【００３７】
テスト経路情報４３は、テストを行う通信経路に関する情報を記憶したデータである。
【００３８】
図４に戻り、制御部３４は、検証装置２３を制御するデバイスである。制御部３４としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部３４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部３４は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部３４は、受付部５０と、取得部５１と、検出部５２と、抽出部５３と、検証部５４と、出力部５５とを有する。
【００３９】
受付部５０は、各種の受け付けを行う。例えば、受付部５０は、各種の操作指示を受け付ける。例えば、受付部５０は、検証に関する操作画面を表示部３２に表示させて、入力部３１から、検証開始などの操作指示を受け付ける。なお、本実施例では、入力部３１から検証開始などの操作指示を受けるものとするが、他の装置に操作画面を表示させ、他の装置から遠隔で操作指示を受けてもよい。また、受付部５０は、論理的に破綻がないことが確認された設計情報を取得したことを検証開始の受け付けとしてもよい。
【００４０】
取得部５１は、各種の取得を行う。例えば、取得部５１は、ネットワーク２１の通信経路に関する情報を取得する。例えば、取得部５１は、通信経路に関する情報として、各ノードの経路テーブル６０を取得する。各ノードの経路テーブル６０は、ＳＤＮコントローラ１０から取得してもよく、各ノードから取得してもよい。また、各ノードの経路テーブル６０は、一定期間ごとのタイミングなど周期的なタイミングで取得してもよく、指示されたタイミングで取得してもよい。また、各ノードの経路テーブル６０は、ＳＤＮコントローラ１０や各ノードが自立的に送信してもよく、取得部５１が各ノードに対して送信を要求し、ＳＤＮコントローラ１０や各ノードが要求に応じて送信してもよい。また、各ノードの経路テーブル６０は、入力部３１からの入力により取得してもよい。取得部５１は、各ノードの経路テーブル６０を変更前経路情報４１として、記憶部３３に格納する。
【００４１】
また、例えば、取得部５１は、変更されたネットワーク２１の通信経路に関する情報を取得する。例えば、取得部５１は、論理的に破綻がないことが確認された設計情報を取得する。この設計情報は、論理設計を行った装置から取得してもよく、ＳＤＮコントローラ１０から取得してもよい。また、設計情報は、入力部３１からの入力により取得してもよい。取得部５１は、論理的に破綻がないことが確認された設計情報を変更後経路情報４２として、記憶部３３に格納する。
【００４２】
検出部５２は、各種の検出を行う。例えば、検出部５２は、ネットワーク２１を構成する複数のノードのうち、入力したパケットの出力先を示す経路情報が更新されたノードを検出する。例えば、検出部５２は、取得部５１により設計情報が取得されると、設計情報から経路情報が更新されたノードを検出する。例えば、検出部５２は、設計情報で通信経路の追加、削除が指定されたノードを、経路情報が更新されたノードと検出する。これにより、設計情報が変更されてノードに対して設定情報の書き込みが行われると、検出部５２により、経路情報が更新されたノードが検出される。
【００４３】
抽出部５３は、各種の抽出を行う。例えば、抽出部５３は、経路情報が更新されたノードを通る通信経路を抽出する。例えば、抽出部５３は、変更後経路情報４２と変更前経路情報４１に記憶された各ノードの変更前の経路テーブル６０に基づいて、通信経路を特定する。例えば、抽出部５３は、エッジノードごとに、経路テーブル６０から、パケットの宛先を抽出し、抽出された宛先が設定されたパケットが当該エッジノードから入力した場合に、他のエッジノードに至るまでに転送されるノードを各ノードの変更前の経路テーブル６０を用いて求める。例えば、図５の場合、ノードＣでは、宛先「Ａ」が抽出される。宛先「Ａ」が設定されたパケットは、ノードＣに入力した場合、ノードＣ→ノードＥ→ノードＦ→ノードＡと転送されると通信経路が特定される。また、ノードＤでは、宛先「Ｂ」が抽出される。宛先「Ｂ」が設定されたパケットは、ノードＤに入力した場合、ノードＤ→ノードＥ→ノードＦ→ノードＢと転送されると通信経路が特定される。また、ノードＧでは、宛先「Ｉ」が抽出される。宛先「Ｉ」が設定されたパケットは、ノードＧに入力した場合、ノードＧ→ノードＨ→ノードＩと転送されると通信経路が特定される。抽出部５３は、特定した通信経路のうち、取得部５１により取得した設計情報により、経路テーブル６０が変更されたノードを含んだ通信経路を抽出する。図６は、各ノードの経路テーブルの変更の一例を示す図である。図６の例は、ノードＣ→ノードＥ→ノードＦ→ノードＡの通信経路を削除する場合の例を示している。例えば、ノードＣ→ノードＥ→ノードＦ→ノードＡの通信経路を削除する場合、ノードＣ、ノードＥ、ノードＦでは、経路テーブル６０のテーブル番号１のレコードが削除される。図６の場合、抽出部５３は、削除されたノードＣ→ノードＥ→ノードＦ→ノードＡの通信経路と共に、ノードＥ、ノードＦを通るノードＤ→ノードＥ→ノードＦ→ノードＢの通信経路を抽出する。
【００４４】
ここで、論理設計において通信経路を変更する流れの一例を説明する。図７は、論理設計において通信経路を変更する流れの一例を示す図である。図７の例では、説明を簡略化するため、ネットワーク２１のノードＡ〜Ｆ部分について論理設計を行う場合を例に説明する。
【００４５】
論理設計では、各ノード間のどのポート同士を接続するかどうかのルーティングの情報を生成する。例えば、論理設計では、宛先アドレスと出力ポートをペアにした情報の形で設計情報を生成してＳＤＮコントローラ１０に通知する。ノードでは、設計情報から変換された設定情報に基づき、内部の情報を更新する。このため、設計情報だけでは、ノード内部の状態を知ることはできない。
【００４６】
論理設計では、デマンドの入力による通信経路の追加と削除は、段階的に行なわれる。例えば、デマンドによりノードＣ→ノードＡの経路を追加する場合、一回目に示すように、ノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路を生成する。例えば、一回目の設計情報には、ノードＣがＡ宛てのパケットをポート０へ出力し、ノードＥがＡ宛てのパケットをポート０へ出力し、ノードＦがＡ宛てのパケットをポート１へ出力する通信経路が示されている。また、例えば、デマンドによりノードＤ→ノードＢの経路を追加する場合、二回目に示すように、ノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路を追加する。例えば、二回目の設計情報には、ノードＤがＢ宛てのパケットをポート０へ出力し、ノードＥがＢ宛てのパケットをポート０へ出力し、ノードＦがＢ宛てのパケットをポート２へ出力する通信経路が示されている。また、例えば、デマンドによりノードＣ→ノードＡへ経路を削除する場合、三回目に示すように、二回目からノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路を削除する。例えば、一回目から二回目への変更では、ノードＤ、ノードＥで経路テーブル６０が変更される。このため、抽出部５３は、追加されたノードＤ、ノードＥ、ノードＦの通信経路と共に、ノードＣ、ノードＥ、ノードＦの通信経路も抽出する。また、二回目から三回目への変更では、ノードＤ、ノードＥで経路テーブル６０が変更される。このため、抽出部５３は、削除されたノードＣ、ノードＥ、ノードＦの通信経路と共に、ノードＤ、ノードＥ、ノードＦの通信経路も抽出する。
【００４７】
検証部５４は、各種の検証を行う。例えば、検証部５４は、抽出部５３により抽出された通信経路に流されたテストパケットの到達性を検証する。例えば、検証部５４は、抽出部５３により抽出された通信経路ごとに、通信経路の上流側のエッジノードに接続されたテストパケット送受信装置２２に対して、通信経路に対応した宛先を設定したテストパケットの送信を指示する。そして、検証部５４は、抽出部５３により抽出された通信経路ごとに、通信経路の下流側のエッジノードに接続されたテストパケット送受信装置２２に対して、通信経路に対応した宛先を設定されたテストパケットが受信されたか否かの問い合わせを行う。
【００４８】
テストパケット送受信装置２２は、検証装置２３からの問い合わせに応じて、テストパケットの受信結果を検証装置２３に通知する。
【００４９】
検証部５４は、抽出部５３により抽出された通信経路ごとに、テストパケット送受信装置２２からのパケットの受信結果の通知に応じて、通信経路が正当であるか検証する。例えば、検証部５４は、追加された通信経路で、テストパケットの受信が通知された場合、通信経路が正当であると判定する。一方、検証部５４は、追加された通信経路で、テストパケットの受信が通知されない場合、通信経路に異常が発生していると判定する。また、検証部５４は、削除された通信経路で、テストパケットの受信が通知されない場合、通信経路が正当であると判定する。一方、検証部５４は、削除された通信経路で、テストパケットの受信が通知された場合、通信経路に異常が発生していると判定する。また、検証部５４は、経路情報が更新されたノードを通る、設定が変更されてない既存の通信経路で、テストパケットの受信が通知された場合、通信経路が正当であると判定する。一方、検証部５４は、経路情報が更新されたノードを通る既存の通信経路で、テストパケットの受信が通知されない場合、通信経路に異常が発生していると判定する。
【００５０】
出力部５５は、各種の出力を行う。例えば、出力部５５は、検証部５４の検証の結果の情報をＳＤＮコントローラ１０に出力して検証の結果を通知する。また、例えば、出力部５５は、検証部５４の検証の結果を表示部３２に出力する。
【００５１】
ここで、通信経路に異常が発生している場合の一例を説明する。図８は、通信経路に異常が発生している場合の一例を説明する図である。図８の例では、説明を簡略化するため、ネットワーク２１のノードＡ〜Ｆ部分を用いて説明する。図８の例では、ノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路と、ノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路があり、論理設計でノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路を削除している。この場合、ノードＣ、ノードＥ、ノードＦ、ノードＡの内容が変化するが、以下では、説明を簡略化するため、主にノードＥの経路情報の書き換えについて説明する。
【００５２】
例えば、経路設計では、論理設計の結果として、削除された通信経路に関する差分情報が設計情報として生成される。例えば、ノードＣから宛先Ａのパケットをポート０へ出力するエントリを削除し、ノードＥから宛先Ａのパケットをポート０へ出力するエントリを削除する差分情報が設計情報として、ＳＤＮコントローラ１０に通知される（図８（１））。
【００５３】
ＳＤＮコントローラ１０は、設計情報から、ノードごとに、各ノードの経路テーブル６０に通信経路の追加、削除を行うエントリ情報を生成し、各ノードにエントリ情報を格納する。各ノードでは、エントリ情報に基づき、内部のハードウェアのレジスタ情報を生成し、内部設定が行なわれる。例えば、ノードＡでは、テーブル番号１の宛先ノード「Ａ」、出力ポート「０」のレコードが削除される。一方、ノードＥでは、ファームウェアに問題があるなどの理由により、ハードウェア内部で誤った書き換えが発生し、テーブル番号２の宛先ノード「Ｂ」、出力ポート「０」のレコードが削除される（図８（２））。
【００５４】
検証装置２３は、エントリ情報を取得し、エントリ情報から経路情報が更新されたノードＥを検出する（図８（３））。そして、検証装置２３は、経路情報が更新されたノードを通る通信経路を抽出する（図８（４））。図８の例では、検証装置２３は、削除されたノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路と、既存のノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路を抽出する。
【００５５】
検証装置２３は、ノードＣに接続されたテストパケット送受信装置２２にテストパケットの送信を指示し、削除されたノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路にテストパケットを送信させる。また、検証装置２３は、ノードＤに接続されたテストパケット送受信装置２２にテストパケットの送信を指示し、既存のノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路にテストパケットを送信させる（図８（５））。図８の場合、削除されたノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路では、ノードＣでエントリーが削除されたため、テストパケットが下流側のエッジノードに到達しない。また、既存のノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路では、ノードＥでエントリーが削除されたため、テストパケットが下流側のエッジノードに到達しない。
【００５６】
検証装置２３は、通信経路ごとに、テストパケットの到達の有無から通信経路が正当であるか検証する。図８の場合、ノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路は、削除されているため、テストパケットが到達しないことは正当と判定される。一方、ノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路は、論理設計では変更されていないため、テストパケットが到達しないことは異常と判定される。検証装置２３は、ノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路に問題が発生していることを出力する。
【００５７】
図９は、本実施例に係る検証装置によりテストパケットが流れる通信経路の一例を示す図である。図９の例では、ノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路を削除した際に、ノードＥでファームウェアに問題があるなどの理由によって、既存のノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路に問題が発生しているものとする。
【００５８】
本実施例に係る検証装置２３によれば、ノードＣ、ノードＥ、ノードＦ、ノードＡの通信経路と、ノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路に対してテストパケットを流して検証が行われる。よって、既存のノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路に問題が発生していることを検出できる。
【００５９】
図１０および図１１は、従来のテストパケットが流れる通信経路の一例を示す図である。図１０の例は、削除されたノードＣ、ノードＥ、ノードＦ、ノードＡのみテストパケットを流して検証を行った場合を示している。図１０の例では、既存のノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路に問題が発生していることを検出できない。
【００６０】
図１１の例は、全ての通信経路にテストパケットを流して検証を行った場合を示している。図１１の例では、既存のノードＤ、ノードＥ、ノードＦ、ノードＢの通信経路に問題が発生していることを検出できる。しかし、全ての通信経路にテストパケットを流すため、検証に時間がかかる。例えば、携帯電話会社のキャリアネットワークなど大規模なネットワークは、多数のノードにより構成され、通信経路も多数となる。このため、全ての通信経路にテストパケットを流した場合、パケット数が多くなって検証に時間がかかり、ノードの設定ミスの検出を効率的に行えない。一方、本実施例に係る検証装置２３は、影響が発生する可能性がある通信経路のみテストパケットで検証を行うため、少ないパケットでノードの設定ミスを検出できる。
【００６１】
［処理の流れ］
最初に、本実施例に係るシステム２０が通信経路の検証を行う全体的な流れについて説明する。図１２は、通信経路の検証の全体的な流れを概略的に示したタイミングチャートである。
【００６２】
検証装置２３は、ネットワーク２１の通信経路に関する情報を取得する（Ｓ１０）。
【００６３】
ＳＤＮコントローラ１０は、論理的に破綻がないことが確認された設計情報が入力されると（Ｓ１１）、設計情報に基づいて、各ノードにエントリ情報を格納して、通信経路を設定する（Ｓ１２）。ＳＤＮコントローラ１０は、設定が完了すると、設計情報を検証装置２３に入力し、通信経路の検証を依頼する（Ｓ１３）。
【００６４】
検証装置２３は、通信経路に関する情報と設計情報から、経路情報が更新されたノードを検出し、検出したノードを通る通信経路を抽出する。検証装置２３は、抽出された通信経路ごとに、通信経路の上流側のエッジノードに接続されたテストパケット送受信装置２２に対して、通信経路に対応した宛先を設定したテストパケットの送信を指示する（Ｓ１４）。通信経路の下流側のエッジノードは、テストパケットが受信されたか否かを通知する（Ｓ１５）。検証装置２３は、抽出された通信経路ごとに、テストパケット送受信装置２２からのパケットの受信結果の通知に応じて、通信経路が正当であるか検証し、検証結果をＳＤＮコントローラ１０に出力する（Ｓ１６）。
【００６５】
本実施例に係るシステム２０では、通信経路の追加や削除が行われるごとに、上述のＳ１０〜Ｓ１６が行われる。
【００６６】
次に、実施例１に係る検証装置２３が通信経路を検証する検証処理の流れについて説明する。図１３は、検証処理の手順の一例を示すフローチャートである。この検証処理は、所定のタイミング、例えば、設計情報が入力したタイミングや、入力部３１から検証開始の操作指示を受け付けたタイミングで実行される。
【００６７】
図１３に示すように、検出部５２は、設計情報から経路情報が更新されたノードを検出する（Ｓ５０）。抽出部５３は、経路情報が更新されたノードを通る通信経路を抽出する（Ｓ５１）。
【００６８】
検証部５４は、抽出された通信経路ごとに、通信経路の上流側のエッジノードに接続されたテストパケット送受信装置２２に対して、通信経路に対応した宛先を設定したテストパケットの送信を指示する（Ｓ５２）。検証部５４は、抽出された通信経路ごとに、通信経路の下流側のエッジノードに接続されたテストパケット送受信装置２２に対して、通信経路に対応した宛先を設定されたテストパケットが受信されたか否かの問い合わせを行う（Ｓ５３）。検証部５４は、抽出された通信経路ごとに、テストパケット送受信装置２２からのパケットの受信結果の通知に応じて、通信経路が正当であるか検証する（Ｓ５４）。
【００６９】
出力部５５は、検証結果をＳＤＮコントローラ１０に出力し（Ｓ５５）、処理を終了する。
【００７０】
［効果］
上述してきたように、本実施例に係る検証装置２３は、ネットワーク２１を構成する複数のノードのうち、入力したパケットの出力先を示す経路情報が更新されたノードを検出する。検証装置２３は、検出されたノードを通る通信経路を、複数のノードの更新前後の経路情報から抽出する。検証装置２３は、抽出された通信経路に流されたテストパケットの到達性を検証する。これにより、検証装置２３は、少ないパケットでノードの設定ミスを検出できる。
【００７１】
また、本実施例に係る検証装置２３は、複数のノードに対して設定情報の書き込みが行われると、経路情報が更新されたノードを検出する。これにより、検証装置２３は、設定情報の書き込みが行われると、検証を行ってノードの設定ミスを検出できる。
【実施例２】
【００７２】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００７３】
例えば、上記の実施例では、通信経路を検証する場合について説明したが、開示の装置はこれに限定されない。例えば、通信経路と共に確保する帯域が指定されている場合、通信経路ごとに帯域が確保できるかも検証してもよい。例えば、各ノードの経路テーブル６０には、パケットの出力先ごとに、確保する通信帯域を記憶されているものとする。図１４は、各ノードの経路テーブルのデータ構成の一例を示す図である。各ノードの経路テーブル６０には、エントリ情報ごとに、パケットの宛先に応じた出力先と、確保する通信帯域が記憶されている。検証装置２３では、抽出部５３が、通信経路と共に当該通信経路の通信帯域を抽出する。検証部５４は、ネットワーク２１の抽出された通信経路に抽出された通信帯域が割当てられているかをさらに検証してもよい。例えば、検証部５４は、抽出された通信経路ごとに、通信経路の上流側のエッジノードに接続されたテストパケット送受信装置２２に対して、確保する通信帯域のデータ量でテストパケットの送信を指示する。テストパケット送受信装置２２は、検証装置２３からの指示に応じて、確保する通信帯域のデータ量でテストパケットを通信経路に送信する。検証部５４は、抽出された通信経路ごとに、通信経路の下流側のエッジノードに接続されたテストパケット送受信装置２２に対して、確保する通信帯域のデータ量でテストパケットが受信されたか否かの問い合わせを行う。テストパケット送受信装置２２は、検証装置２３からの問い合わせに応じて、確保する通信帯域のデータ量のテストパケットを受信できたか否かの受信結果を検証装置２３に通知する。検証部５４は、抽出された通信経路ごとに、テストパケット送受信装置２２からの受信結果の通知に応じて、通信経路ごとに、確保する通信帯域が確保できるかを検証する。これにより、検証装置２３は、通信経路ごとに、確保する通信帯域が確保できるかを検証できる。
【００７４】
また、上記の実施例では、変更前経路情報４１として、各ノードの経路テーブル６０を記憶する場合について説明したが、開示の装置はこれに限定されない。変更前経路情報４１は、ネットワーク２１の変更前の通信経路を示す情報であれば、何れのデータ構成であってもよい。例えば、変更前経路情報４１は、図６に示すような通信経路を示す情報であってもよい。
【００７５】
また、上記の実施例では、変更後経路情報４２として、設計情報を記憶する場合について説明したが、開示の装置はこれに限定されない。変更後経路情報４２も、ネットワーク２１の変更後の通信経路を示す情報であれば、何れのデータ構成であってもよい。例えば、変更後経路情報４２は、変更後の各ノードの経路テーブル６０であってもよく、図６に示すような通信経路を示す情報であってもよい。
【００７６】
また、上記の実施例では、検出部５２は、設計情報から経路情報が更新されたノードを検出する場合について説明したが、開示の装置はこれに限定されない。例えば、検出部５２は、各ノードの経路テーブル６０の変化から経路情報が更新されたノードを検出してもよい。この場合、取得部５１は、各ノードの経路テーブル６０に通信経路の追加、削除を行うエントリ情報を取得し、エントリ情報を変更後経路情報４２として、記憶部３３に格納する。このエントリ情報は、ＳＤＮコントローラ１０から取得してもよい。例えば、取得部５１は、ＳＤＮコントローラ１０による各ノードへのエントリ情報の書き込みを監視し、ＳＤＮコントローラ１０から各ノードへ書き込まれたエントリ情報を取得してもよい。また、エントリ情報は、入力部３１からの入力により取得してもよい。また、エントリ情報は、ノードから取得してもよい。例えば、エントリ情報が書き込まれたノードが、書き込まれたエントリ情報を検証装置２３へ送信するように構成して、取得部５１は、ノードからエントリ情報を取得してもよい。検出部５２は、取得部５１によりエントリ情報が取得されると、エントリ情報から経路情報が更新されたノードを検出する。例えば、検出部５２は、エントリ情報が書き込まれたノードを、経路情報が更新されたノードと検出する。例えば、検出部５２は、複数のノードに対する設定情報の書き込みの監視、複数のノードからの経路情報の周期的な読み出し、経路情報が更新されたノードからの通知の何れかにより、経路情報が更新されたノードを検出する。これにより、ノードに対して設定情報の書き込みが行われると、検出部５２により、経路情報が更新されたノードが検出される。
【００７７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、受付部５０、取得部５１、検出部５２、抽出部５３、検証部５４および出力部５５の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７８】
［検証プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図１５は、検証プログラムを実行するコンピュータを示す図である。
【００７９】
図１５に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＨＤＤ（Hard  Disk  Drive）３２０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３００〜３４０の各部は、バス４００を介して接続される。
【００８０】
ＨＤＤ３２０には上記の受付部５０、取得部５１、検出部５２、抽出部５３、検証部５４および出力部５５と同様の機能を発揮する検証プログラム３２０ａが予め記憶される。なお、検証プログラム３２０ａについては、適宜分離しても良い。
【００８１】
また、ＨＤＤ３２０は、各種情報を記憶する。例えば、ＨＤＤ３２０は、ＯＳや分析に用いる各種データを記憶する。
【００８２】
そして、ＣＰＵ３１０が、検証プログラム３２０ａをＨＤＤ３２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、検証プログラム３２０ａは、受付部５０、取得部５１、検出部５２、抽出部５３、検証部５４および出力部５５と同様の動作を実行する。
【００８３】
なお、上記した検証プログラム３２０ａは、必ずしも最初からＨＤＤ３２０に記憶させることを要しない。
【００８４】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００８５】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００８６】
１０  ＳＤＮコントローラ
２０  システム
２１  ネットワーク
２２  テストパケット送受信装置
２３  検証装置
３１  入力部
３２  表示部
３３  記憶部
３４  制御部
４１  変更前経路情報
４２  変更後経路情報
４３  テスト経路情報
５０  受付部
５１  取得部
５２  検出部
５３  抽出部
５４  検証部
５５  出力部
６０  経路テーブル
【図１】
2017028629.tif 000003
【図２】
2017028629.tif 000004
【図３】
2017028629.tif 000005
【図４】
2017028629.tif 000006
【図５】
2017028629.tif 000007
【図６】
2017028629.tif 000008
【図７】
2017028629.tif 000009
【図８】
2017028629.tif 000010
【図９】
2017028629.tif 000011
【図１０】
2017028629.tif 000012
【図１１】
2017028629.tif 000013
【図１２】
2017028629.tif 000014
【図１３】
2017028629.tif 000015
【図１４】
2017028629.tif 000016
【図１５】
2017028629.tif 000017