(57)【特許請求の範囲】
【請求項１】
ネットワークを制御する制御装置であって、
前記ネットワークを制御するための制御情報を格納するデータベースと、
所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールと接続可能であり、前記モジュールが発行するデータベース操作コマンドに従って前記制御情報を操作するインターフェース部と、
前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する制御部と、
を含み、
前記インターフェース部は、前記モジュールが発行する前記データベース操作コマンドにより予め設定された条件を参照し、前記制御情報の更新内容が前記条件に合致する場合に、前記制御情報の更新を前記モジュールに通知する制御装置。
【請求項２】
前記インターフェース部は、前記複数のモジュールで共通のデータベース操作コマンドに従って前記制御情報を操作する
ことを特徴とする請求項１の制御装置。
【請求項３】
前記インターフェース部は、前記モジュール毎に異なる前記アルゴリズムに応じた制御情報を前記データベースに構築可能である
ことを特徴とする請求項１または２の制御装置。
【請求項４】
ネットワークを制御する制御装置であって、
前記ネットワークを制御するための制御情報を格納するデータベースと、
所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールと接続可能であり、前記モジュールが発行するデータベース操作コマンドに従って前記制御情報を操作するインターフェース部と、
前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する制御部と、
を含み、
前記インターフェース部は、前記モジュールの組合せに応じた制御情報を前記データベースに構築可能である制御装置。
【請求項５】
前記データベースは、前記ネットワークのトポロジに関する第一の情報と、前記ネットワークにおけるパケットの処理方法に関する第二の情報とを含む
ことを特徴とする請求項１乃至４のいずれかの制御装置。
【請求項６】
前記データベースは、前記制御装置が前記ネットワークから受信したパケットを管理するための第三の情報と、前記制御装置から前記ネットワークへ送信するパケットを管理するための第四の情報とを含む
ことを特徴とする請求項１乃至５のいずれかの制御装置。
【請求項７】
前記インターフェース部は、通信端末間の経路計算、ネットワークトポロジの管理、ネットワークトポロジのアグリゲーション、ネットワークの分割、ネットワークの結合の少なくとも１つを実行する前記モジュールと接続可能である
ことを特徴とする請求項１乃至６のいずれかの制御装置。
【請求項８】
ネットワークを制御する制御装置の制御方法であって、
データベースに、前記ネットワークを制御するための制御情報を格納し、
所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールの各々により発行されるデータベース操作コマンドに従って、前記制御情報を操作し、
前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する制御方法であって、
前記モジュールが発行する前記データベース操作コマンドにより予め設定された条件を参照し、前記制御情報の更新内容が前記条件に合致する場合に、前記制御情報の更新を前記モジュールに通知する制御方法。。
【請求項９】
前記複数のモジュールで共通の操作コマンドに従って前記制御情報を操作する
ことを特徴とする請求項８の制御方法。
【請求項１０】
前記モジュール毎に異なる前記所定のアルゴリズムに応じた制御情報を前記データベースに構築する
ことを特徴とする請求項８または９の制御方法。
【請求項１１】
ネットワークを制御する制御装置の制御方法であって、
データベースに、前記ネットワークを制御するための制御情報を格納し、
所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールの各々により発行されるデータベース操作コマンドに従って、前記制御情報を操作し、
前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する制御方法であって、
前記モジュールの組合せに応じた制御情報を前記データベースに構築する制御方法。
【請求項１２】
前記データベースに含まれる、前記ネットワークのトポロジに関する第一の情報と、前記ネットワークにおけるパケットの処理方法に関する第二の情報とを操作する
ことを特徴とする請求項８乃至１１のいずれかの制御方法。
【請求項１３】
前記データベースは、前記制御装置が前記ネットワークから受信したパケットを管理するための第三の情報と、前記制御装置から前記ネットワークへ送信するパケットを管理するための第四の情報とを含み、
前記パケットを処理するための前記モジュールから発行された前記データベース操作コマンドに従って、前記第三の情報を操作する
ことを特徴とする請求項８乃至１２のいずれかの制御方法。
【請求項１４】
通信端末間の経路計算、ネットワークトポロジの管理、ネットワークトポロジのアグリゲーション、ネットワークの分割、ネットワークの結合の少なくとも１つを実行する前記モジュールにより前記制御情報を操作する
ことを特徴とする請求項８乃至１３のいずれかの制御方法。
【請求項１５】
ネットワークを制御する制御装置を含む通信システムであって、
前記制御装置は、
前記ネットワークを制御するための制御情報を格納するデータベースと、
所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールと接続可能であり、前記モジュールが発行するデータベース操作コマンドに従って前記制御情報を操作するインターフェース部と、
前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する制御部と、
を含み、
前記モジュールが発行する前記データベース操作コマンドにより予め設定された条件を参照し、前記制御情報の更新内容が前記条件に合致する場合に、前記制御情報の更新を前記モジュールに通知する通信システム。
【請求項１６】
ネットワークを制御する制御装置に、
データベースに、前記ネットワークを制御するための制御情報を格納させる処理と、
所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールの各々により発行されるデータベース操作コマンドに従って、前記制御情報を操作する処理と、
前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する処理と、
前記モジュールが発行する前記データベース操作コマンドにより予め設定された条件を参照し、前記制御情報の更新内容が前記条件に合致する場合に、前記制御情報の更新を前記モジュールに通知する処理と、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、日本国特許出願：特願２０１２−２０２１１３号（２０１２年９月１３日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ネットワーク制御装置、ネットワーク制御装置の設定方法及びプログラムに関し、特に、配下のスイッチ群を集中制御するネットワーク制御装置、ネットワーク制御装置の設定方法及びプログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（非特許文献１、２参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。非特許文献２に仕様化されているオープンフロースイッチは、オープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチ条件（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、処理内容を定義したインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）と、の組が定義される（非特許文献２の「４．１  Ｆｌｏｗ  Ｔａｂｌｅ」の項参照）。
【０００３】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチ条件（非特許文献２の「４．３  Ｍａｔｃｈ  Ｆｉｅｌｄｓ」参照）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（カウンタ）を更新するとともに、受信パケットに対して、当該エントリのインストラクションフィールドに記述された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。一方、検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対してエントリ設定の要求、即ち、受信パケットを処理するための制御情報の送信要求（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する。オープンフロースイッチは、処理内容が定められたフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを制御情報として用いてパケット転送を行う。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２４（２０１２）年７月１３日検索］、インターネット〈ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｗｐ−ｌａｔｅｓｔ．ｐｄｆ〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．０．０  Ｉｍｐｌｅｍｅｎｔｅｄ  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）、［ｏｎｌｉｎｅ］、［平成２４（２０１２）年７月１３日検索］、インターネット〈ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ〉
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以下の分析は、本発明によって与えられたものである。上記非特許文献１、２のオープンフローに代表される集中制御型のネットワークにおいてはきめ細かな制御を行うことが可能となっている。その一方で、上記非特許文献１、２のオープンフローコントローラに相当する制御装置に、意図した動作を行わせるためには、オペレータがコントローラの制御動作をプログラムすることが求められる。コントローラのプログラミングには、非特許文献２の基本仕様のほか、ネットワーク構成の管理、プログラミングやテスト環境の構築等の高度な知識やスキルが要求される。
【０００６】
例えば、非特許文献２のオープンフローコントローラの構築する場合を例にとってみても、個々のスイッチと制御チャネルの関連付け、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）によるトポロジー探索、経路計算、経路上の複数スイッチへのフローエントリ設定、スイッチ毎の入出力パケットの管理といった事項を設定し、プログラミングする必要が生じる。プログラミングを実行するためには、例えば、トポロジ管理や経路計算に関するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）、ＡＰＩに関する多くの関数、それら関数に与えるべき引数等に関する非常に膨大な知識とスキルが要求される。
【０００７】
このため、集中制御型ネットワークの機器を導入しても、その制御柔軟性を充分に活用できないユーザも発生しうる。
【０００８】
本発明の目的は、集中制御型ネットワークの制御柔軟性を損なうことなく、その設定容易性（構築容易性）の向上に貢献できるようにしたネットワーク制御装置、ネットワーク制御装置の設定方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
第１の視点によれば、ネットワークを制御する制御装置であって、前記ネットワークを制御するための制御情報を格納するデータベースと、所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールと接続可能であり、前記モジュールが発行するデータベース操作コマンドに従って前記制御情報を操作するインターフェース部と、前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する制御部と、を含む制御装置が提供される。
【００１０】
第２の視点によれば、ネットワークを制御する制御装置の制御方法であって、データベースに、前記ネットワークを制御するための制御情報を格納し、所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールの各々により発行されるデータベース操作コマンドに従って、前記制御情報を操作し、前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する、制御方法が提供される。本方法は、前記データベース及びモジュールを用いてネットワークの制御を行う制御装置という、特定の機械に結びつけられている。
【００１１】
第３の視点によれば、ネットワークを制御する制御装置を含む通信システムであって、前記制御装置は、前記ネットワークを制御するための制御情報を格納するデータベースと、所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールと接続可能であり、前記モジュールが発行するデータベース操作コマンドに従って前記制御情報を操作するインターフェース部と、前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する制御部と、を含む通信システムが提供される。
【００１２】
第４の視点によれば、ネットワークを制御する制御装置に、データベースに、前記ネットワークを制御するための制御情報を格納させる処理と、所定のアルゴリズムに基づいて前記制御情報を操作する複数のモジュールの各々により発行されるデータベース操作コマンドに従って、前記制御情報を操作する処理と、前記モジュールの操作により構築された前記制御情報に基づいて、前記ネットワークでのパケット処理を制御する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１３】
本発明によれば、集中制御型ネットワークの制御柔軟性を損なうことなく、その設定容易性（構築容易性）の向上に貢献することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態のシステム構成の例を示す図である。
【図２】本発明の第１の実施形態の制御装置の構成例を示す図である。
【図３】本発明の第１の実施形態のネットワークＤＢの構成例を示す図である。
【図４】本発明の第１の実施形態の動作例を示すシーケンス図である。
【図５】本発明の第１の実施形態の動作例を示すシーケンス図である。
【図６】本発明の第１の実施形態の動作例を示すシーケンス図である。
【図７】本発明の第２の実施形態のネットワークＤＢの構成例を示す図である。
【図８】本発明の第２の実施形態のネットワークＤＢの構成例を示す図である。
【図９】本発明の第２の実施形態のネットワークＤＢの構成例を示す図である。
【図１０】本発明の第２の実施形態で用いるデータベース操作コマンド（ＤＢ操作コマンド）を説明するための図である。
【図１１】本発明の第２の実施形態で用いるデータベース操作コマンド（ＤＢ操作コマンド）を説明するための図である。
【図１２】本発明の第３の実施形態のシステム構成の例を示す図である。
【図１３】本発明の第３の実施形態のＯｐｅｎＦｌｏｗ制御部の構成の例を示す図である。
【図１４】本発明の第３の実施形態のトポロジ処理部によるネットワークＤＢの操作の流れを説明するための図である。
【図１５】本発明の第３の実施形態のフロー処理部によるネットワークＤＢの操作の流れを説明するための図である。
【図１６】本発明の第３の実施形態のパケット処理部によるネットワークＤＢの操作の流れを説明するための図である。
【図１７】本発明の第３の実施形態の動作例を示すシーケンス図である。
【図１８】本発明の第３の実施形態の動作例を示すシーケンス図である。
【図１９】本発明の第３の実施形態の動作例を示すシーケンス図である。
【図２０】本発明の第３の実施形態の動作例を示すシーケンス図である。
【図２１】本発明の第４の実施形態のシステム構成の例を示す図である。
【図２２】本発明の第４の実施形態におけるネットワークトポロジのグラフィック表示例である。
【図２３】本発明の第４の実施形態におけるパケット処理情報のグラフィック表示例である。
【図２４】本発明の第４の実施形態におけるパケット入出力情報のグラフィック表示例である。
【図２５】本発明の第５の実施形態のシステム構成の例を示す図である。
【図２６】本発明の第６の実施形態のシステム構成の例を示す図である。
【図２７】本発明の第７の実施形態のシステム構成の例を示す図である。
【図２８】本発明の第７の実施形態のアグリゲーションロジック部によるネットワークＤＢの操作を説明するための図である。
【図２９】本発明の第７の実施形態のアグリゲーションロジック部によるネットワークＤＢの操作を説明するための図である。
【図３０】本発明の第７の実施形態のアグリゲーションロジック部によるネットワークＤＢの操作を説明するための図である。
【図３１】本発明の第８の実施形態のシステム構成の例を示す図である。
【図３２】本発明の第８の実施形態の結合ロジック部によるネットワークＤＢの操作を説明するための図である。
【図３３】本発明の第８の実施形態の結合ロジック部によるネットワークＤＢの操作を説明するための図である。
【図３４】本発明の第９の実施形態のシステム構成の例を示す図である。
【図３５】本発明の第９の実施形態の制御装置のコンポーネントマネージャの構成例を示す。
【図３６】本発明の第１０の実施形態のシステム構成の例を示す図である。
【図３７】本発明の第１０の実施形態の表示部に表示される画面の例である。
【図３８】本発明の第１０の実施形態におけるユーザの操作内容と、制御装置の構成との対応関係を説明するための図である。
【図３９】本発明の第１０の実施形態におけるユーザの操作内容と、制御装置の構成との対応関係を説明するための図である。
【図４０】本発明の第１０の実施形態におけるユーザの操作内容と、制御装置の構成との対応関係を説明するための図である。
【図４１】本発明の第１０の実施形態におけるユーザの操作内容と、制御装置の構成との対応関係を説明するための図である。
【図４２】本発明の第１０の実施形態におけるユーザの操作内容と、制御装置の構成との対応関係を説明するための図である。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
本発明の第１の実施形態において、制御装置は、ネットワークの構成や、ネットワークにおけるパケットの処理方法等の制御情報を記憶するＤＢ（Ｄａｔａｂａｓｅ）の操作により、ネットワークを集中制御することが可能である。ＤＢは、例えば、Ｋｅｙ−Ｖａｌｕｅストアにより構成され、ＤＢ操作用の所定のコマンドにより操作される。ＤＢの操作は、ＤＢへの情報入出力に関するコマンドやＤＢの情報を削除するコマンド等、シンプルな操作コマンドにより実行可能である。第１の実施形態では、操作コマンドによりＤＢを操作するモジュールを組み合わせることにより、制御装置を構築できる。よって、第１の実施形態の制御装置は、ＡＰＩやそれに関する多数の関数を用いることなく、ＤＢ操作用のシンプルなコマンドによりプログラミングすることが可能になる。
【００１６】
以下、図を参照し、第１の実施形態の詳細を説明する。図１は、本発明の第１の実施形態に関する通信システムの構成例を示す。図１を参照すると、通信システムは、制御装置１、ネットワークＤＢ２、複数のノード３を含むネットワーク４により構成される。
【００１７】
制御装置１は、ネットワークＤＢ２を操作することにより、ネットワーク４を集中制御する。
【００１８】
ネットワーク４の各ノード３は、制御装置１に従ってパケットを処理する。
【００１９】
ネットワークＤＢ２は、例えば、Ｋｅｙ−Ｖａｌｕｅストアで構成されるデータベースである。ネットワークＤＢ２は、例えば、データベースに保存されるデータ（Ｖａｌｕｅ）に対し、そのデータ（Ｖａｌｕｅ）に対応する識別情報（Ｋｅｙ）を設定し、識別情報（Ｋｅｙ）とデータ（Ｖａｌｕｅ）のペアを格納する。
【００２０】
図２は、制御装置１の構成例を示す。図２を参照すると、制御装置１は、ＤＢ操作ロジック部１１、ネットワーク制御部１２を有し、ＤＢインタフェース部１０を有するネットワークＤＢ２と接続する。
【００２１】
ＤＢインタフェース部１０は、ＤＢ操作ロジック部１１が発行した、ＤＢ操作に関する所定のコマンドにより、ネットワークＤＢ２を操作する機能を有する。なお、制御装置１は、複数のＤＢ操作ロジック部１１を組み合わせて構成可能である。よって、ＤＢインタフェース部１０は、複数のＤＢ操作ロジック部１１（図２で破線で示した部分）と接続可能である。ＤＢインタフェース部１０は、複数のＤＢ操作ロジック部１１から発行されたコマンドにより、ネットワークＤＢ２を操作することが可能である。ＤＢインタフェース部１０は、複数のＤＢ操作ロジック部１１の組合せに応じた情報をネットワークＤＢ２に構築できる。つまり、オペレータは、ＤＢインタフェース部１０に接続するＤＢ操作ロジック部１１の組合せを変更することで容易にネットワークＤＢ２の構成を変更できる。よって、オペレータは、ネットワーク４の種類や、ネットワーク４で用いられる通信プロトコルに応じた制御装置１を容易に構築することが可能となる。
【００２２】
ネットワークＤＢ２を操作するコマンドは、例えば、以下のコマンドが挙げられる。なお、以下に列挙されたコマンドは例示であり、本発明におけるＤＢ操作コマンドは以下の例に限定されない。
・情報入出力コマンド
・情報削除コマンド
・通知予約コマンド
【００２３】
情報入出力コマンドは、ネットワークＤＢ２に対して情報を入力するために用いられるコマンドである。また、情報入出力コマンドは、ネットワークＤＢ２から情報を取得するために用いられるコマンドである。例えば、ＤＢインタフェース部１０は、“ｇｅｔ（ｋｅｙ）”というコマンドにより、識別情報（ｋｅｙ）に対応するデータ（Ｖａｌｕｅ）を、ネットワークＤＢ２から取得する。また、ＤＢインタフェース部１０は、“ｐｕｔ（ｋｅｙ，  ｖａｌｕｅ）”というコマンドにより、識別情報（Ｋｅｙ）に対応するデータ（ｖａｌｕｅ）を、ネットワークＤＢ２に入力する。なお、データ（Ｖａｌｕｅ）がリストの場合、ＤＢインタフェース部１０は、“ｐｕｓｈ（ｋｅｙ，  ｖａｌｕｅ）”コマンドや“ｐｏｐ（ｋｅｙ）”コマンドにより、データ（Ｖａｌｕｅ）の入力・出力を実行してもよく、データをキューやスタックのようにして使うことができる。
【００２４】
情報削除コマンドは、ネットワークＤＢ２から情報を削除するために用いられるコマンドである。例えば、ＤＢインタフェース部１０は、”ｄｅｌｅｔｅ（ｋｅｙ）”というコマンドにより、識別情報（ｋｅｙ）に対応するデータ（ｖａｌｕｅ）を、ネットワークＤＢ２から削除する。
【００２５】
通知予約コマンドは、例えば、ネットワークＤＢ２に対して指定した識別情報（ｋｅｙ）に対する操作が実行された場合に、ネットワークＤＢ２から識別情報（ｋｅｙ）に対応するデータ（ｖａｌｕｅ）の通知を受信することを予約するためのコマンドである。ＤＢインタフェース部１０は、例えば、“ｓｕｂｓｃｒｉｂｅ（ｋｅｙ）”というコマンドをネットワークＤＢ２に送信することで、識別情報（ｋｅｙ）に対する操作が実行された場合に、ネットワークＤＢ２から当該識別情報（ｋｅｙ）に対応するデータ（ｖａｌｕｅ）を受信する。なお、識別情報にはワイルドカードや正規表現といったｋｅｙのパターンを用いても良い。ネットワークＤＢ２は、ＤＢインタフェース部１０に識別情報に対応するデータ（ｖａｌｕｅ）を通知する場合、例えば、“ｐｕｂｌｉｓｈ（ｋｅｙ，  ｖａｌｕｅ，ｏｐ）”というコマンドにより情報を通知する。なお”ｏｐ”は、そのキーに対する操作（ｐｕｔ／ｇｅｔ／ｄｅｌｅｔｅを含む）を含めることができ、通知を受けたＤＢ操作ロジック部１１は、識別情報に対応するキーが追加されたとき、取得されたとき、削除されたときなどを識別できる。
【００２６】
ＤＢ操作コマンドは、複数のＤＢ操作ロジック部１１で共通のコマンドであってもよい。複数のＤＢ操作ロジック部１１が共通のコマンドによりネットワークＤＢ２を操作可能とすることで、ネットワークオペレータは、ＤＢ操作ロジック部１１の拡張が容易に実行できる。つまり、新たな機能を有するＤＢ操作ロジック部１１を制御装置１に追加する場合に、オペレータは、ＤＢ操作ロジック部１１とネットワークＤＢ２とのインタフェースを新たに設計しなくてもよい。
【００２７】
ＤＢ操作ロジック部１１は、ＤＢ操作ロジック部１１の種類に応じて定められた所定のアルゴリズムに基づいて、ネットワークＤＢ２に格納された情報を操作する機能を有する。例えば、ＤＢ操作ロジック部１１は、ネットワーク４から取得された情報を、ＤＢインタフェース部１０を介してネットワークＤＢ２に情報を入力する機能を有する。
【００２８】
ネットワーク制御部１２は、ＤＢ操作ロジック部１１の操作により構築されたネットワークＤＢ２に基づいて、ネットワーク４を制御する機能を有する。ネットワーク制御部１２は、例えば、ネットワーク４で用いられる通信プロトコルに応じて、ネットワーク４に対する制御方法を変更することが可能である。
【００２９】
図３は、ネットワークＤＢ２の構成例を示す。なお、図３に示された構成は例示であり、ネットワークＤＢ２の構成は、図３に示された構成に限定されない。
【００３０】
ネットワークＤＢ２は、例えば、ネットワーク４のトポロジに関する情報（トポロジ情報；第１の情報）と、パケットの処理方法に関する情報（パケット処理情報；第２の情報）と、パケットに関する情報（パケット情報；第３、第４の情報）とを有する。
【００３１】
トポロジ情報は、例えば、ネットワーク４に存在するそれぞれのノード３に関する情報（ノード情報）と、各ノード間のリンクに関する情報（リンク情報）とを有する。ノード情報は、例えば、ノード３の識別子、ノード３が有する通信ポートに関する情報等を含む。リンク情報は、例えば、リンクの識別子、リンクに接続されたノード３の識別子と、当該ノード３においてリンクと接続している通信ポートの識別子を含む。
【００３２】
パケット処理情報は、フロー情報を含む。フロー情報は、パケットが属するフローに関する情報である。フローとは、所定の属性（通信の宛先や送信元等に基づいて識別される属性）を有する一連の通信パケット群を意味する。フロー情報は、例えば、マッチング条件、Ｐａｔｈ情報、処理情報を含む。マッチング条件は、例えば、フロー情報に対応するパケットを識別するための条件を表す。Ｐａｔｈ情報は、例えば、マッチング条件に対応するフローに属するパケットが経由する経路を表す。処理情報は、例えば、Ｐａｔｈ情報に対応する経路を経由したパケットに対して実行されるべき処理（例えば、ヘッダ情報の書き換え等）を表す。
【００３３】
パケット情報は、入力パケット情報と、出力パケット情報を含む。入力パケット情報は、ネットワーク４において受信したパケットのうち、どのフロー情報のマッチング条件にも適合しないパケットである。出力パケット情報は、ネットワーク４から出力すべきパケットである。
【００３４】
ネットワークＤＢ２に格納されるトポロジ情報、パケット処理情報、入力パケット情報は、例えば、所定のフォーマットで標準化されてもよい。ネットワークＤＢ２に格納される情報を標準化することで、ネットワークＤＢ２は、様々なプロトコルに準拠するネットワークとの互換性を有する。
【００３５】
図４、図５及び図６は、第１の実施形態の動作例を示す。なお、図４、図５及び図６に示された動作は例であり、本発明の動作がこれらの図面に示された動作に限定されない。
【００３６】
図４、図５及び図６は、ネットワークＤＢ２が、複数のＤＢ操作ロジック部１１（以下、「ＤＢ操作ロジック部１１−１、１１−２」と記す。）により操作される例を示す。ＤＢ操作ロジック部１１−１は、ネットワークＤＢ２を操作し、トポロジに関する情報を入力・出力する機能を有する。ＤＢ操作ロジック部１１−２は、ネットワークＤＢ２に格納された情報に基づいて、パケット処理情報を生成する機能を有する。
【００３７】
図４は、ネットワークＤＢ２を操作することにより、ネットワーク４のトポロジを管理する動作例を示す。
【００３８】
制御装置１のＤＢ操作ロジック部１１−１は、ネットワーク制御部１２を介して、ネットワーク４からトポロジに関する情報を収集する（Ｓ１０）。トポロジに関する情報は、例えば、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）を用いて収集される。ＬＬＤＰは、ネットワーク上の装置が、隣接機器との間で情報を交換し、装置の各通信ポートに接続している隣接機器に関する情報を収集するプロトコルである。ネットワーク制御部１２は、例えば、ネットワーク４の各ノード３がＬＬＤＰにより収集した情報を、各ノード３から収集する。
【００３９】
ＤＢ操作ロジック部１１−１は、例えば、ネットワーク制御部１２を介して収集された情報に基づいて、ネットワークＤＢ２に対応する所定のフォーマットのトポロジ情報を生成する（Ｓ１１）。
【００４０】
ＤＢ操作ロジック部１１−１は、ＤＢインタフェース部１０を介して、ＤＢ操作コマンド（情報入出力コマンド）により、生成したトポロジ情報をネットワークＤＢ２に格納する（Ｓ１２）。
【００４１】
図５は、ネットワークＤＢ２を操作することにより、ネットワーク４を流れるパケットの処理方法に関する情報を生成する動作例を示す。
【００４２】
制御装置１のＤＢ操作ロジック部１１−２は、ＤＢインタフェース部１０を介して、ＤＢ操作コマンド（情報入出力コマンド）により、ネットワークＤＢ２からトポロジ情報を取得する（Ｓ１３）。
【００４３】
ＤＢ操作ロジック部１１−２は、通知予約コマンドを用いて、トポロジ情報が変更された場合にトポロジ情報をＤＢ操作ロジック部１１−２に通知することを、ネットワークＤＢ２に予約してもよい。ネットワークＤＢ２は、トポロジ情報が変更された際に、ＤＢインタフェース部１０を介して、ＤＢ操作ロジック部１１−２にトポロジ情報の変更を通知する。
【００４４】
ＤＢ操作ロジック部１１−２は、ネットワークＤＢ２から取得したトポロジ情報に基づいて、ネットワークＤＢ２に対応する所定のフォーマットで、パケット処理情報を生成する（Ｓ１４）。ＤＢ操作ロジック部１１−２は、例えば、パケットの転送経路（図３の“Ｐａｔｈ情報”）を計算し、パケット処理情報に計算した転送経路を格納する。ＤＢ操作ロジック部１１−２は、例えば、所定の計算ロジックを利用して転送経路を計算する。ＤＢ操作ロジック部１１−２は、例えば、送信元から宛先に至る最短経路を、パケットの転送経路とする。
【００４５】
ＤＢ操作ロジック部１１−２は、パケットのマッチング条件や処理情報（ヘッダの書き換え等）を、パケット処理情報にさらに格納する。
【００４６】
ＤＢ操作ロジック部１１−２は、ＤＢインタフェース部１０を介して、ＤＢ操作コマンド（情報入出力コマンド）により、生成したパケット処理情報をネットワークＤＢ２に格納する（Ｓ１５）。
【００４７】
図６は、制御装置１が、ネットワークＤＢ２を操作することにより、ネットワーク４のノード３を制御する動作を示す。
【００４８】
制御装置１のＤＢ操作ロジック部１１−１は、ＤＢインタフェース部１０を介して、ＤＢ操作コマンド（情報入出力コマンド）により、ネットワークＤＢ２からパケット処理情報を取得する（Ｓ１６）。
【００４９】
ＤＢ操作ロジック部１１−１は、通知予約コマンドを用いて、パケット処理情報が変更された場合にパケット処理情報をＤＢ操作ロジック部１１−１に通知することを、ネットワークＤＢ２に予約してもよい。ＤＢ操作ロジック部１１−１は、例えば、通知予約コマンドにより、ネットワークＤＢ２の更新を通知するための通知条件を、ネットワークＤＢ２に設定する。ネットワークＤＢ２は、予め設定された通知条件に合致する更新が実行されたことに応じて、ネットワークＤＢ２の更新内容を、ＤＢ操作ロジック部１１−１に通知する。例えば、ネットワークＤＢ２は、パケット処理情報が変更された際に、ＤＢインタフェース部１０を介して、ＤＢ操作ロジック部１１−１にパケット処理情報の変更を通知する。
【００５０】
ＤＢ操作ロジック部１１−１は、パケット処理情報に基づいて、ネットワーク４のノード３に設定すべき処理命令（ノード３によるパケットの処理方法を規定した情報）を生成し、ネットワーク制御部１２を介してノード３に設定する（Ｓ１７）。
【００５１】
ＤＢ操作ロジック部１１−１は、例えば、パケット処理情報のＰａｔｈ情報を参照し、Ｐａｔｈ情報に対応する転送経路上のノード３に処理命令を設定する。ＤＢ操作ロジック部１１−１は、例えば、パケットがＰａｔｈ情報に対応する転送経路を経由するように、各ノード３に、転送経路に対応する通信ポートからパケットを転送することを規定した処理命令を設定する。
【００５２】
以上の図４、図５および図６に示された動作により、制御装置１は、ネットワークＤＢ２を操作することで、ネットワーク４でのパケット処理を集中制御できる。
【００５３】
上述のように、制御装置１は、ネットワークＤＢ２をＤＢ操作コマンドにより操作することで、ネットワーク４を制御することが可能である。従って、ネットワーク４のオペレータは、ネットワークＤＢ２のＤＢ操作コマンドを組み合わせることにより、制御装置１をプログラミングすることが可能となる。ＤＢ操作コマンドは、ＡＰＩやそれに関する関数よりも、数が大幅に少ない。よって、ネットワーク４のオペレータは、高度な知識やスキルを習得することなく、簡易に制御装置１のプログラミングが可能となる。
【００５４】
［第２の実施形態］
続いて、本発明の第２の実施形態について説明する。第２の実施形態では、ネットワークＤＢ２の構成例と、ＤＢ操作コマンドの例を詳細に説明する。
【００５５】
図７、図８及び図９に、ネットワークＤＢ２の構成の例を示す。なお、図７、８および９に示された構成は例であり、ネットワークＤＢ２の構成はこれら図面に示された構成に限定されない。
【００５６】
また、第２の実施形態では、ネットワークＤＢ２は、Ｋｅｙ−Ｖａｌｕｅストアにより構成される例を示すが、ネットワークＤＢ２はＫｅｙ−Ｖａｌｕｅストア以外で構成されてもよい。
【００５７】
図７は、ネットワークＤＢ２に格納されるトポロジ情報の例を示す。トポロジ情報は、ネットワーク４のノード３に関連する識別情報（Ｋｅｙ）と、ノード３間のリンクに関連する識別情報（Ｋｅｙ）とで構成される。各識別情報（Ｋｅｙ）には、データ（Ｖａｌｕｅ）が対応付けられている。
【００５８】
識別情報“／ｎｏｄｅｓ”に対応するデータ（Ｖａｌｕｅ）は、例えば、ネットワーク４に存在するそれぞれのノード３の識別子（ノードＩＤ）である。図７に示された“｛１，２，３，４、．．．｝”は、ノードの識別子のリストを表す。
【００５９】
識別情報“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”の“［ｎｏｄｅ＿ｉｄ］”は、ネットワーク４に存在するノード３のいずれかの識別子である。識別情報“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”に対応するデータ（Ｖａｌｕｅ）は、例えば、制御装置１がネットワーク４のノード３を制御する際に用いる識別子や、ノード３の製造ベンダに関する情報等である。制御装置１がネットワーク４のノード３を制御する際に用いる識別子は、上述した識別情報“／ｎｏｄｅｓ”に対応付けられた識別子とは異なる。制御装置１がネットワーク４のノード３を制御する際に用いる識別子は、オープンフロープロトコルでは、例えば、ＤＰＩＤ（ＤａｔａＰａｔｈ  ＩＤ）と呼ばれる。
【００６０】
識別情報“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］／ｐｏｒｔｓ”に対応するデータ（Ｖａｌｕｅ）は、例えば、“［ｎｏｄｅ＿ｉｄ］”に対応するノード３が有する通信ポートの識別子のリストである。図７に示された“｛１，２，３，４、．．．｝”は、通信ポートの識別子のリストを表す。
【００６１】
識別情報“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］／ｐｏｒｔｓ／［ｐｏｒｔ＿ｉｄ］”の”［ｐｏｒｔ＿ｉｄ］”は、”［ｎｏｄｅ＿ｉｄ］”に対応するノード３が有する通信ポートのいずれかを示す識別子である。識別情報“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］／ｐｏｒｔｓ／［ｐｏｒｔ＿ｉｄ］”に対応するデータ（Ｖａｌｕｅ）は、例えば、ポートのステータス（例えば、リンクアップ状態又はリンクダウン状態）、ポートの通信帯域等を含む。
【００６２】
識別情報“／ｌｉｎｋｓ”に対応するデータ（Ｖａｌｕｅ）は、例えば、ネットワーク４に存在するノード３間のリンクの識別子である。図７に示された“｛１，２，３，４、．．．｝”は、リンクの識別子のリストを表す。
【００６３】
識別情報“／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］”の“［ｌｉｎｋ＿ｉｄ］”は、ネットワーク４に存在するノード間リンクのいずれかの識別子である。識別情報“／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］”に対応するデータ（Ｖａｌｕｅ）は、例えば、リンクの両端のノードと、それらのノードの通信ポートに関する情報を含む。例えば、図７の例では、リンクにおいてパケットの送信元となるノードの識別子（“ｓｒｃ＿ｎｏｄｅ＿ｉｄ”）と、リンクにおいてパケットの宛先となるノードの識別子（“ｄｓｔ＿ｎｏｄｅ＿ｉｄ”）を含む。図７の例で、“ｓｒｃ＿ｐｏｒｔ＿ｉｄ”は、“ｓｒｃ＿ｎｏｄｅ＿ｉｄ”に対応するノードの通信ポートのうち、リンクに対応するポートの識別子を表す。図７の例で、“ｄｓｔ＿ｐｏｒｔ＿ｉｄ”は、“ｄｓｔ＿ｎｏｄｅ＿ｉｄ”に対応するノードの通信ポートのうち、リンクに対応するポートの識別子を表す。
【００６４】
ネットワークＤＢ２は、図７で例示されたデータベースエントリにより、ネットワーク４のトポロジを管理する。ＤＢ操作ロジック部１１は、ＤＢ操作コマンドを用いて図７で例示されたエントリを操作することにより、ネットワーク４のトポロジに関する管理や操作を実行できる。
【００６５】
図８は、ネットワークＤＢ２に格納されるパケット処理情報の例を示す。パケット処理情報は、例えば、パケット処理情報に対応するパケットを識別するためのマッチング条件（Ｆｉｌｔｅｒ）、マッチング条件に適合するパケットの転送経路（Ｐａｔｈ）、マッチング条件に適合するパケットに適用すべき所定の処理（Ａｃｔｉｏｎ）を含む。
【００６６】
識別情報（“／ｆｌｏｗｓ”）に対応するデータ（Ｖａｌｕｅ）は、パケット処理情報の識別子である。図８に示された“｛１，２，３，４、．．．｝”は、パケット処理情報の識別子のリストを表す。
【００６７】
識別情報（“／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］”）の“［ｆｌｏｗ＿ｉｄ］”は、パケット処理情報のいずれかの識別子である。識別情報“／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］”に対応するデータ（Ｖａｌｕｅ）は、例えば、“［ｆｌｏｗ＿ｉｄ］”に対応するパケット処理情報に対応するパケットを識別するためのマッチング条件を含む。制御装置１のＤＢ操作ロジック部１１は、例えば、処理方法が不明のパケットを受信した場合、そのパケットに対応するマッチング条件を有するパケット処理情報を、ＤＢ操作コマンドにより、ネットワークＤＢ２から検索する。ネットワークＤＢ２は、パケットの情報（例えば、ヘッダ情報）を参照し、パケットに対応するマッチング条件を有するパケット処理情報をＤＢ操作ロジック部１１に通知する。ＤＢ操作ロジック部１１は、通知されたパケット処理情報に基づいて、ネットワーク４のノード３に、パケットの処理に関する指示を実行する。
【００６８】
ネットワークＤＢ２が、パケットの情報（例えば、ヘッダ情報）を参照して、パケットに対応するマッチング条件を有するパケット処理情報を検索するＤＢ操作コマンドを持たない場合は、制御装置１のＤＢ操作ロジック部１１は、あらかじめＤＢ操作コマンドにより必要なパケット処理情報をネットワークＤＢ２から読み取って保持しておくことで、ＤＢ操作ロジック部１１内の処理のみでパケットの情報を参照して対応するパケット処理情報を特定できるようにし、特定されたパケット処理情報に基づいて、ネットワーク４のノード３に、パケットの処理に関する指示を実行する。
【００６９】
識別情報“／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］”に対応するデータ（Ｖａｌｕｅ）は、マッチング条件に適合するパケットの転送経路（“Ｐａｔｈ”）と、マッチング条件に適合するパケットに対して実行すべき処理（“Ａｃｔｉｏｎ”）を含む。ＤＢ操作ロジック部１１は、パケットがパケット処理情報で規定された転送経路を経由するように、ネットワーク４のノード３にパケットの転送指示を通知する。また、パケットに対して実行すべき処理（“Ａｃｔｉｏｎ”）がある場合、ＤＢ操作ロジック部１１は、その処理の実行を、ネットワーク４のノード３に指示する。
【００７０】
図９は、処理方法が未定のパケットとして制御装置１に転送されたパケットに関するデータベースエントリの例を示す。ネットワークＤＢ２は、処理方法が未定のパケットに関する情報を、データベースエントリとして管理することができる。
【００７１】
識別情報“／ｐａｃｋｅｔｓ／ｉｎ”に対応するデータ（Ｖａｌｕｅ）は、パケットの処理方法が未定のパケットとして制御装置１に転送されたパケットの識別子のリストである。識別子のリストは、例えば、リストの末尾に追加する“ｐｕｓｈ＿ｔａｉｌ”ＤＢ操作コマンドとリストの先頭から取り出す“ｐｏｐ＿ｈｅａｄ”ＤＢ操作コマンドを用いて、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）のキューとして利用する。
【００７２】
識別情報“／ｐａｃｋｅｔｓ／ｉｎ／［ｐａｃｋｅｔ＿ｉｄ］”に対応するデータ（Ｖａｌｕｅ）は、例えば、パケットの識別子、パケットの受信時刻、パケットを受信したノード３の識別子、そのノード３がパケットを受信した通信ポートの識別子等を含む。
【００７３】
ＤＢ操作ロジック部１１は、例えば、制御装置１にパケットが転送された場合に、ＤＢ操作コマンドにより、ネットワークＤＢ２に、パケットに関する情報を格納する。
【００７４】
識別情報“／ｐａｃｋｅｔｓ／ｏｕｔ”に対応するデータ（Ｖａｌｕｅ）は、処理方法が決定され、制御装置１からネットワーク４に戻されるべきパケットの識別子のリストである。例えば、“／ｐａｃｋｅｔｓ／ｉｎ”に対応するキューに格納されたパケットのうち、処理方法が決定されたパケットが、”／ｐａｃｋｅｔｓ／ｏｕｔ”に対応するキューに格納される。“／ｐａｃｋｅｔｓ／ｏｕｔ”に対応するデータ（Ｖａｌｕｅ）は、例えば、リストであって、ＦＩＦＯ型のキューとして利用する。
【００７５】
識別情報“／ｐａｃｋｅｔｓ／ｏｕｔ／［ｐａｃｋｅｔ＿ｉｄ］”に対応するデータ（Ｖａｌｕｅ）は、例えば、制御装置１からパケットが返還されるノードの識別子、そのノードの通信ポートのうち、パケットが返還されるポートの識別子、およびパケットに格納されているテータ（つまり、パケットそのもの）を含む。
【００７６】
ＤＢ操作ロジック部１１は、例えば、“／ｐａｃｋｅｔｓ／ｏｕｔ”に対応するキューにパケットが格納された場合に、“／ｐａｃｋｅｔｓ／ｏｕｔ”のキーに対して操作があった場合に通知するように、通知予約コマンドによりネットワークＤＢ２を操作する。ネットワークＤＢ２は、キューにパケットが格納された場合（即ち、“／ｐａｃｋｅｔｓ／ｏｕｔ”と“／ｐａｃｋｅｔｓ／ｏｕｔ／［ｐａｃｋｅｔ＿ｉｄ］”に対応するエントリが更新された場合）、ＤＢ操作ロジック部１１に“／ｐａｃｋｅｔｓ／ｏｕｔ／［ｐａｃｋｅｔ＿ｉｄ］”に対応するデータの更新を通知する。
【００７７】
識別情報“／ｐａｃｋｅｔｓ／ｏｕｔ／”および“／ｐａｃｋｅｔｓ／ｏｕｔ／［ｐａｃｋｅｔ＿ｉｄ］”に格納されるパケットは、“／ｐａｃｋｅｔｓ／ｉｎ”に対応するキューに格納されたパケットと対応していなくても良い。これにより、制御装置１は、能動的にパケットを出力する制御を行うことができる。
【００７８】
図１０及び図１１は、ＤＢ操作ロジック部１１がネットワークＤＢ２を操作するときに用いるＤＢ操作コマンドの例である。図１０及び図１１に示したように、ｐｕｓｈコマンド、ｐｏｐコマンドを用いることにより、リストの任意の位置からのデータの挿入、取得といった操作が可能となっている。また例えば、データベースの特定のキーを持つエントリに変化が生じた際に通知を受けるためには、ｓｕｂｓｃｒｉｂｅコマンドが用いられる。また例えば、上述したノード、リンク、フロー、パケットの詳細情報や値を取得、設定、削除する場合には、ｇｅｔ、ｐｕｔ、ｄｅｌｅｔｅといったコマンドが用いられる。
【００７９】
ＤＢ操作ロジック部１１は、図７、図８及び図９に例示された構成のネットワークＤＢ２を、図１０及び図１１に例示されたＤＢ操作コマンドで操作することにより、ネットワーク４を集中制御できる。よって、オペレータは、ＤＢ操作コマンドによるネットワークＤＢ２の操作指示を組み合わせることにより、制御装置１をプログラミングすることが可能となる。ＤＢ操作コマンドは、一般的なプログラミングで使用されるＡＰＩやＡＰＩに関連する関数に比べて、圧倒的に数が少ない。よって、オペレータは、一般的なプログラミングに比べて、極めて容易に制御装置１のプログラミングすることが可能となる。
【００８０】
［第３の実施形態］
続いて、本発明の第３の実施形態について説明する。ＤＢ操作ロジック部１１は、様々な機能を有するモジュールにより実施することが可能である。第３の実施形態では、ＤＢ操作ロジック部１１として、ＯｐｅｎＦｌｏｗ制御部１１Ａが設けられている。
【００８１】
図１２は、第３の実施形態のシステムの構成例を示す。ＯｐｅｎＦｌｏｗ制御部１１Ａは、オープンフロープロトコルに基づいてネットワーク４を制御する機能を有する。なお、第３の実施形態では、ネットワーク４は、オープンフロープロトコルに対応したノード３により構成されるものとする。以下、第３の実施形態において、ネットワーク４を、オープンフローネットワークと呼ぶ場合がある。
【００８２】
図１３は、ＯｐｅｎＦｌｏｗ制御部１１Ａの構成の例を示す。ＯｐｅｎＦｌｏｗ制御部１１Ａは、トポロジ処理部１１０、フロー処理部１１１、パケット処理部１１２を含む。
【００８３】
トポロジ処理部１１０は、ＤＢインタフェース部１０を介して、ネットワークＤＢ２をＤＢ操作コマンドで操作する。トポロジ処理部１１０は、例えば、ネットワークＤＢ２を操作し、トポロジ情報をネットワークＤＢ２に設定する。また、トポロジ処理部１１０は、例えば、ネットワークＤＢ２を操作し、トポロジ情報をネットワークＤＢ２から取得する。
【００８４】
図１４は、トポロジ処理部１１０がネットワークＤＢ２を操作する動作例を示す。トポロジ処理部１１０は、“ｐｕｓｈ＿ｔａｉｌ（／ｎｏｄｅｓ）”コマンドにより、”／ｎｏｄｅｓ”エントリのリストの末尾に、オープンフローネットワークに追加されたノードの識別子を追加する。また、トポロジ処理部１１０は、“ｐｕｔ（／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］，  ＜ｎｏｄｅ＿ｉｎｆｏ＞）”コマンドにより、“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”エントリ（［ｎｏｄｅ＿ｉｄ］は、／ｎｏｄｅｓエントリに追加されたノードの識別子）に、コマンドの引数である“＜ｎｏｄｅ＿ｉｎｆｏ＞”に対応する情報を追加する。トポロジ処理部１１０は、例えば、第１の実施形態で説明された情報を、“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”エントリに追加する。
【００８５】
上記の“ｐｕｓｈ＿ｔａｉｌ（／ｎｏｄｅｓ）”の代わりに“ｐｕｓｈ＿ｔａｉｌ（／ｎｏｄｅｓ，  ＜ｎｏｄｅ＿ｉｎｆｏ＞）”コマンドを使うと、上記の一連の操作を一括して行うことができる。この場合、“ｐｕｔ（／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］，  ＜ｎｏｄｅ＿ｉｎｆｏ＞）”コマンドの実行を省略することができる。
【００８６】
トポロジ処理部１１０は、“ｐｕｓｈ＿ｔａｉｌ（／ｌｉｎｋｓ）”コマンドにより、“／ｌｉｎｋｓ”エントリのリストの末尾に、オープンフローネットワークに追加されたノード間リンクの識別子を追加する。また、トポロジ処理部１１０は、“ｐｕｔ（／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］，  ＜ｌｉｎｋ＿ｉｎｆｏ＞）”コマンドにより、“／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］”エントリ（  ［ｌｉｎｋ＿ｉｄ］は、／ｌｉｎｋｓエントリに追加されたリンクの識別子  ）に、コマンドの引数である”＜ｌｉｎｋ＿ｉｎｆｏ＞”に対応する情報を追加する。トポロジ処理部１１０は、例えば、第１の実施形態で説明された情報を、“／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］”エントリに追加する。
【００８７】
上記の“ｐｕｓｈ＿ｔａｉｌ（／ｌｉｎｋｓ）”の代わりに“ｐｕｓｈ＿ｔａｉｌ（／ｌｉｎｋｓ，  ＜ｌｉｎｋ＿ｉｎｆｏ＞）”コマンドを使うと、上記の一連の操作を一括して行うことができる。この場合、“ｐｕｔ（／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］，  ＜ｌｉｎｋ＿ｉｎｆｏ＞）”コマンドの実行を省略することもできる。
【００８８】
トポロジ処理部１１０は、オープンフローネットワークからノードやリンクが削除された場合、“ｐｏｐ＿ａｔ”コマンドにより、ノードやリンクのリストから、削除されたノードやリンクの識別子を削除する。トポロジ処理部１１０は、オープンフローネットワークからノードやリンクが削除された場合、“ｄｅｌｅｔｅ”コマンドにより、削除されたノードやリンクに対応するエントリを、ネットワークＤＢ２から削除する。
【００８９】
“ｐｏｐ＿ａｔ”コマンドは、上記の一連の操作を一括して行うこともできる。そのため、“ｄｅｌｅｔｅ”コマンドの実行を省略することもできる。
【００９０】
トポロジ処理部１１０は、“ｇｅｔ”コマンドにより、指定した識別情報（ｋｅｙ）に対応するデータ（ｖａｌｕｅ）を取得する。
【００９１】
フロー処理部１１１は、ＤＢインタフェース部１０を介して、ネットワークＤＢ２をＤＢ操作コマンドで操作する。フロー処理部１１１は、例えば、ネットワークＤＢ２を操作し、パケット処理情報をネットワークＤＢ２に設定する。また、フロー処理部１１１は、例えば、ネットワークＤＢ２を操作し、処理方法が未知のパケットに対応するパケット処理情報をネットワークＤＢ２から検索する。
【００９２】
図１５は、フロー処理部１１１がネットワークＤＢ２を操作する動作例を示す。制御装置１がオープンフローネットワークから、処理方法が未知のパケットを受信した場合、フロー処理部１１１は、パケット処理部１１２から、当該パケットの処理方法の検索依頼を受信する。パケット処理部１１２は、例えば、“ｇｅｔ＿ｍａｔｃｈｉｎｇ＿ｆｌｏｗ（＜ｐａｃｋｅｔ＿ｉｎｆｏ＞）”コマンドで、フロー処理部１１１に、パケットの処理方法の検索を依頼する。コマンドの引数である“＜ｐａｃｋｅｔ＿ｉｎｆｏ＞”は、処理方法が未知のパケットに関する情報（例えば、ヘッダ情報や、パケット自体）である。
【００９３】
フロー処理部１１１は、パケット処理部１１２からの依頼に基づき、ネットワークＤＢ２から、“＜ｐａｃｋｅｔ＿ｉｎｆｏ＞”に対応するマッチング条件を有するパケット処理情報を検索する。フロー処理部１１１は、ネットワークＤＢ２から、検索されたパケット処理情報の識別子（“ｆｌｏｗ＿ｉｄ”）を受信する。フロー処理部１１１は、例えば、受信した識別子に基づいて、”ｇｅｔ（／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］）”コマンドにより、パケット処理情報を取得する。フロー処理部１１１は、パケット処理部１１２へパケット処理情報を回答する。検索にマッチするパケット処理情報が存在しない場合も、その旨を回答する。
【００９４】
ネットワークＤＢ２が、“＜ｐａｃｋｅｔ＿ｉｎｆｏ＞”に対応するマッチング条件を有するパケット処理情報を検索するコマンドを持たない場合、フロー処理部１１１は、あらかじめＤＢ操作コマンドにより必要なパケット処理情報をネットワークＤＢ２から読み取って保持しておくことで、パケットの情報を参照して対応するパケット処理情報を特定できるようにする。
【００９５】
パケット処理部１１２は、対応するパケット処理情報が存在しなかった場合、“ｐｕｓｈ＿ｔａｉｌ（／ｐａｃｋｅｔｓ／ｉｎ，  ＜ｐａｃｋｅｔ＿ｉｎｆｏ＞）”コマンドで受信したパケットをネットワークＤＢ２へ追加する。
【００９６】
パケット処理部１１２は、対応するパケット処理情報が存在した場合、そのパケットの処理をフロー処理部１１１へ依頼する。
【００９７】
フロー処理部１１１は、取得したパケット処理情報に基づいて、オープンフローネットワークのノード３に、パケットの処理規則を設定するのと同時に、受け取ったパケットをパケット処理情報に基づいて適切なノードの通信ポートから出力する。
【００９８】
パケットの処理規則は、例えば、オープンフロープロトコルに基づいて定められた形式の情報であり、ノード３にパケットの処理を実行させるために用いられる。処理規則は、ノード３が受信したパケットを識別するための識別条件と、識別条件に合致するパケットの処理方法とを含む。フロー処理部１１１は、ノード３に処理規則を設定し、ノード３は、設定された処理規則をメモリに記憶する。ノード３は、受信したパケットに合致する識別条件を有する処理規則を、メモリから検索する。ノード３は、受信パケットに合致する識別条件を有する処理規則が検索された場合、検索された処理規則に基づいて受信パケットを処理（処理規則により指定された通信ポートからパケットを転送する、等）する。
【００９９】
フロー処理部１１１は、例えば、パケット処理情報に含まれるマッチング条件に基づいて、処理規則の識別条件を設定する。
【０１００】
フロー処理部１１１は、パケット処理情報に含まれる経路情報（Ｐａｔｈ）に基づいて、オープンフローネットワークでのパケットの転送経路を認識する。フロー処理部１１１は、パケットの転送経路に対応するノード３に、処理規則を通知する。フロー処理部１１１は、処理規則により、パケット処理情報に対応する転送経路に沿ってパケットを転送することを、転送経路上のそれぞれのノード３に指示することができる。つまり、フロー処理部１１１がノード３にパケットの転送を指示する場合、各ノード３に設定された処理規則は、転送経路に対応する通信ポートからパケットを転送することを示す処理方法を含む。
【０１０１】
フロー処理部１１１は、パケット処理情報に、パケットに対して実行すべき所定の処理（Ａｃｔｉｏｎ）が含まれている場合、例えば、所定の処理（Ａｃｔｉｏｎ）を実行すべきノード３を特定する。フロー処理部１１１は、特定したノード３に、所定の処理として定められた処理（例えば、ヘッダの書き換えや、カプセル化／デカプセル化）を規定した処理規則を設定する。
【０１０２】
フロー処理部１１１は、例えば、“ｓｕｂｓｃｒｉｂｅ”コマンドにより、ネットワークＤＢ２に所定の更新（パケット処理情報の更新や、リンク情報の更新）があった場合に、更新に関連する情報を通知することをネットワークＤＢ２に予約する。ネットワークＤＢ２は、“ｓｕｂｓｃｒｉｂｅ”コマンドで指定された情報が更新された場合に、“ｐｕｂｌｉｓｈ”コマンドにより、フロー処理部１１１に情報を通知する。フロー処理部１１１は、例えば、“ｐｕｂｌｉｓｈ”コマンドで通知された情報に基づき、オープンフローネットワークのノード３に設定済みの処理規則の変更要否を判断する。処理規則の変更が必要な場合、フロー処理部１１１は、新たな処理規則を生成し、ノード３に設定する。
【０１０３】
フロー処理部１１１は、オープンフローネットワークにおいてリンクやノードが削除された場合、例えば、削除されたリンクやノードに対応するパケット処理情報をネットワークＤＢ２から削除する。フロー処理部１１１は、例えば、削除されたリンクやノードを転送経路に含むパケット処理情報を、ネットワークＤＢ２から削除する。
【０１０４】
フロー処理部１１１は、“ｐｏｐ＿ａｔ”コマンドにより、パケット処理情報のリストから、削除すべきパケット処理情報に対応する識別子を削除する。フロー処理部１１１は、“ｄｅｌｅｔｅ”コマンドにより、パケット処理情報に対応するエントリ（“／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］”）を削除する。フロー処理部１１１は、例えば、削除したパケット処理情報に代わる新たなパケット処理情報を生成し、生成したパケット処理情報を“ｐｕｓｈ＿ａｔ”コマンドでネットワークＤＢ２に格納する。
【０１０５】
“ｐｏｐ＿ａｔ”コマンドは、上記の一連の操作を一括して行うこともできる。そのため、“ｄｅｌｅｔｅ”コマンドの実行を省略することもできる。
【０１０６】
パケット処理部１１２は、ＤＢインタフェース部１０を介して、ネットワークＤＢ２をＤＢ操作コマンドで操作する。パケット処理部１１２は、例えば、ネットワークＤＢ２を操作し、パケットに関する情報をネットワークＤＢ２に設定する。
【０１０７】
図１６は、パケット処理部１１２がネットワークＤＢ２を操作する動作例を示す。パケット処理部１１２は、例えば、オープンフローネットワークから処理方法が未知のパケットを受信した場合、当該パケットに対応する処理方法をフロー処理部１１１に要求する。上述の通り、パケット処理部１１２は、例えば、“ｇｅｔ＿ｍａｔｃｈｉｎｇ＿ｆｌｏｗ（＜ｐａｃｋｅｔ＿ｉｎｆｏ＞）”コマンドで、フロー処理部１１１に、パケットの処理方法の検索を依頼する。
【０１０８】
パケット処理部１１２は、フロー処理部１１１からパケットに対応するパケット処理情報が存在しないことを示す通知を受信した場合、ネットワークＤＢ２に、パケット情報を登録する。パケット処理部１１２は、例えば、“ｐｕｓｈ＿ｔａｉｌ（／ｐａｃｋｅｔｓ／ｉｎ）”コマンドにより、“／ｐａｃｋｅｔｓ／ｉｎ”エントリのリストの末尾に、パケットの識別子を登録する。また、パケット処理部１１２は、“ｐｕｔ（／ｐａｃｋｅｔｓ／ｉｎ／［ｐａｃｋｅｔ＿ｉｄ］，  ＜ｐａｃｋｅｔ＿ｉｎｆｏ＞）”コマンドにより、“／ｐａｃｋｅｔｓ／ｉｎ／［ｐａｃｋｅｔ＿ｉｄ］”エントリ（  ［ｐａｃｋｅｔ＿ｉｄ］は、／ｐａｃｋｅｔｓ／ｉｎエントリに追加されたパケットの識別子  ）に、コマンドの引数である“＜ｐａｃｋｅｔ＿ｉｎｆｏ＞”に対応する情報を追加する。
【０１０９】
上記の“ｐｕｓｈ＿ｔａｉｌ（／ｐａｃｋｅｔｓ／ｉｎ）”の代わりに“ｐｕｓｈ＿ｔａｉｌ（／ｐａｃｋｅｔｓ／ｉｎ，  ＜ｎｏｄｅ＿ｉｎｆｏ＞）”コマンドを使うと、上記の一連の操作を一括して行うことができる。この場合、“ｐｕｔ（／ｐａｃｋｅｔｓ／ｉｎ／［ｎｏｄｅ＿ｉｄ］，  ＜ｐａｃｋｅｔ＿ｉｎｆｏ＞）”コマンドの実行を省略することができる。
【０１１０】
“／ｐａｃｋｅｔｓ／ｉｎ”エントリに追加されたパケットに対応するパケット処理情報が生成された場合、当該パケットは“／ｐａｃｋｅｔｓ／ｏｕｔ”エントリに追加される。パケット処理部１１２は、例えば、“ｓｕｂｓｃｒｉｂｅ”コマンドにより、“／ｐａｃｋｅｔｓ／ｏｕｔ”エントリにパケットが追加された場合に、“／ｐａｃｋｅｔｓ／ｏｕｔ”エントリの更新に関する情報の更新を通知することをネットワークＤＢ２に予約する。パケット処理部１１２は、“／ｐａｃｋｅｔｓ／ｏｕｔ”エントリが更新された場合、例えば、“ｐｕｂｌｉｓｈ”コマンドにより、変更されたキーをネットワークＤＢ２から受信することで、“／ｐａｃｋｅｔｓ／ｏｕｔ”エントリに登録されたパケットの識別子を知ることができる。パケット処理部１１２は、例えば、フロー処理部１１１によりオープンフローネットワークのノードに処理規則が設定されたことに応じて、受信した識別子に対応するパケットをオープンフローネットワークに送信する。また、パケット処理部１１２は、“ｐｏｐ＿ａｔ（／ｐａｃｋｅｔｓ／ｏｕｔ，  ＜ｐａｃｋｅｔ＿ｉｄ＞）”コマンドにより、受信した識別子を“／ｐａｃｋｅｔｓ／ｏｕｔ”エントリから削除し、“ｄｅｌｅｔｅ”コマンドにより“／ｐａｃｋｅｔｓ／ｏｕｔ／［ｐａｃｋｅｔ＿ｉｄ］”エントリを削除する。
【０１１１】
上記の“ｐｏｐ＿ａｔ”コマンドの代わりに、“ｐｏｐ＿ｈｅａｄ（／ｐａｃｋｅｔｓ／ｏｕｔ）”コマンドを使うと、“／ｐａｃｋｅｔｓ＿ｏｕｔ”の先頭からパケット情報を受信するとともに“／ｐａｃｋｅｔｓ／ｏｕｔ／［ｐａｃｋｅｔ＿ｉｄ］”エントリを削除することができる。そのため、上記の“ｄｅｌｅｔｅ”コマンドの実行を省略することもできる。
【０１１２】
図１７、図１８、図１９及び図２０は、第３の実施形態の動作例を示すシーケンス図である。
【０１１３】
図１７は、ネットワーク４にノードが追加された場合の動作例を示す。トポロジ処理部１１０は、オープンフローネットワークにノードが追加されたことを検出し、追加されたノードに関する情報を収集する。
【０１１４】
トポロジ処理部１１０は、例えば、“ｐｕｓｈ＿ｔａｉｌ（／ｎｏｄｅｓ）”コマンドにより、ネットワークＤＢ２の“／ｎｏｄｅｓ”エントリのリストにノードを追加する。リストにノードが追加されたことに伴い、トポロジ処理部１１０はネットワークＤＢ２から、ネットワークＤＢ２におけるノードの識別子である“ｎｏｄｅ＿ｉｄ”を受信する。
【０１１５】
トポロジ処理部１１０は、例えば、“ｐｕｔ”コマンドにより、ネットワークＤＢ２のエントリにノード情報を追加する。追加されるノード情報は、例えば、ノードに関する情報、ノードの通信ポートに関する情報である。
【０１１６】
図１８は、ネットワーク４からノードが削除された場合の動作例を示す。トポロジ処理部１１０は、オープンフローネットワークからノードが削除されたことを検出し、削除されたノードに関する情報を収集する。
【０１１７】
トポロジ処理部１１０は、例えば、“ｐｏｐ＿ａｔ”コマンドにより、“／ｎｏｄｅｓ”エントリのリストから、削除されたノードに対応する識別子を削除する。また、トポロジ処理部１１０は、“ｐｏｐ＿ａｔ”コマンドにより、“／ｌｉｎｋｓ”エントリのリストから、削除されたノードに関連するリンクの識別子を削除する。
【０１１８】
トポロジ処理部１１０は、例えば、“ｄｅｌｅｔｅ”コマンドにより、オープンフローネットワークから削除されたノードに関する情報と、削除されたノードに関連するリンクの情報を削除する。
【０１１９】
図１９は、ネットワーク４にリンクが追加された場合、および、ネットワーク４からリンクが削除された場合の動作例を示す。トポロジ処理部１１０は、オープンフローネットワークにリンクが追加されたことを検出し、追加されたリンクに関する情報を収集する。
【０１２０】
トポロジ処理部１１０は、例えば、“ｐｕｓｈ＿ｔａｉｌ”コマンドにより、“／ｌｉｎｋｓ”エントリのリストにリンクを追加する。“／ｌｉｎｋｓ”エントリのリストにリンクが追加されたことに応じて、トポロジ処理部１１０は、ネットワークＤＢ２から、リストに追加されたリンクの識別子を受信する。トポロジ処理部１１０は、受信した識別子に基づいて、“ｐｕｔ”コマンドにより、“／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］”エントリに、オープンフローネットワークに追加されたリンクの情報を登録する。
【０１２１】
トポロジ処理部１１０は、オープンフローネットワークからリンクが削除されたことを検出し、削除されたリンクに関する情報を収集する。
【０１２２】
トポロジ処理部１１０は、例えば、“ｄｅｌｅｔｅ”コマンドにより、削除されたリンクのエントリ“／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］”を、ネットワークＤＢ２から削除する。また、トポロジ処理部１１０は、例えば、“ｐｏｐ＿ａｔ”コマンドにより、“／ｌｉｎｋｓ”エントリのリストから、削除されたリンクの識別子を削除する。
【０１２３】
図２０は、ＯｐｅｎＦｌｏｗ制御部１１Ａが、ネットワークＤＢ２が有するパケット処理情報に基づいて、オープンフローネットワークを制御する動作例を示すシーケンス図である。パケット処理部１１２は、パケットの処理方法が未知のパケットを、オープンフローネットワークから受信する（図中の“ｐａｃｋｅｔ＿ｉｎ”）。パケット処理部１１２は、例えば、“ｇｅｔ＿ｍａｔｃｈｉｎｇ＿ｆｌｏｗ（＜ｐａｃｋｅｔ＿ｉｎｆｏ＞）”コマンドにより、フロー処理部１１１に、受信したパケットに対応するパケット処理情報を問合せる。
【０１２４】
フロー処理部１１１は、例えば、“ｇｅｔ＿ｍａｔｃｈｉｎｇ＿ｆｌｏｗ（＜ｐａｃｋｅｔ＿ｉｎｆｏ＞）”に含まれるパケット情報（“ｐａｃｋｅｔ＿ｉｎｆｏ”）に合致するマッチング条件を有するエントリ（“／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］”）を、ネットワークＤＢ２から検索する。
【０１２５】
フロー処理部１１１は、パケット処理部１１２が受信したパケットに合致するパケット処理情報が検索された場合、例えば、ネットワーク４のノード３に設定する処理規則を生成し、パケット処理部１１２を介して、ノード３に通知する。パケット処理部１１２は、処理規則を通知するとともに、ネットワーク４から受信したパケットを、ネットワーク４に返還する（図中の“ｐａｃｋｅｔ＿ｏｕｔ”）。
【０１２６】
フロー処理部１１１は、パケット処理部１１２が受信したパケットに合致するパケット処理情報が検索されなかった場合、“ｐｕｓｈ＿ｔａｉｌ”コマンドにより、“／ｐａｃｋｅｔｓ／ｉｎ”エントリに、パケット処理部１１２が受信したパケットを追加する。フロー処理部１１１は、“／ｐａｃｋｅｔｓ／ｉｎ”エントリにパケットが追加されたことに応じて、ネットワークＤＢ２から、エントリに追加したパケットの識別子（図中の“ｐａｃｋｅｔ＿ｉｄ”）を受信する。フロー処理部１１１は、受信した識別子に基づいて、“ｐｕｔ”コマンドにより、“／ｐａｃｋｅｔｓ／ｉｎ／［ｐａｃｋｅｔ＿ｉｄ］”エントリに、パケット処理部１１２が受信したパケットに関する情報を追加する。
【０１２７】
［第４の実施形態］
続いて、本発明の第４の実施形態について説明する。第４の実施形態では、制御装置１が、可視化ＤＢ操作ロジック部１１ＢによりネットワークＤＢ２を操作する例を説明する。
【０１２８】
可視化ＤＢ操作ロジック部１１Ｂは、制御装置１によりネットワーク４を管理するオペレータを補助するため、ネットワークＤＢ２に記憶された情報の少なくとも一部をグラフィックにより視覚的に把握できるよう表示する機能を有する。
【０１２９】
図２１は、第４の実施形態の構成例を示す。図２１の可視化ＤＢ操作ロジック部１１Ｂは、ネットワークＤＢ２からトポロジ情報を取得し、表示装置へノード、リンクの接続関係を表示する。可視化ＤＢ操作ロジック部１１Ｂは、例えば、図２２に示される例のように、ネットワークトポロジのグラフィックを表示する。各ノードに付与された数字は、それぞれのノードの識別子を表す。また、各リンクに付与された数字は、それぞれのリンクの識別子を表す。可視化ＤＢ操作ロジック部１１Ｂは、ネットワークＤＢ２からトポロジ情報に変化が生じたことを通知されると、この通知に基づいて、ネットワークＤＢ２からノードやリンクの情報を取得し、表示中のノード、リンクの接続関係を変更する。
【０１３０】
以上のように、ネットワークＤＢ２に、図２１の可視化ＤＢ操作ロジック部１１Ｂを接続することで、管理するネットワークの構成を視覚的な情報として得ることが可能となる。また、可視化ＤＢ操作ロジック部１１Ｂは、ネットワークＤＢ２のパケット処理情報に関するグラフィック表示することも可能である。例えば、可視化ＤＢ操作ロジック部１１Ｂは、“／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］”エントリに含まれる経路情報（Ｐａｔｈ）を、グラフィックにより表示したトポロジと重ねて表示する。図２３に、グラフィックにより表示されたパケット処理情報の例を示す。図２３には、識別子が“１０”である“／ｆｌｏｗｓ／１０”エントリが、グラフィックにより表示されている。パケットが経由するノードとリンク、パケットが転送される方向などの情報が、グラフィックにより表示される。
【０１３１】
可視化ＤＢ操作ロジック部１１Ｂは、図２４に示すように、“／ｐａｃｋｅｔｓ／ｉｎ／［ｐａｃｋｅｔ＿ｉｄ］”エントリや、”／ｐａｃｋｅｔｓ／ｏｕｔ／［ｐａｃｋｅｔ＿ｉｄ］”エントリのグラフィックを表示することも可能である。
【０１３２】
［第５の実施形態］
続いて、本発明の第５の実施形態について説明する。第５の実施形態では、制御装置１が、スライスロジック部１１Ｃにより、ネットワークＤＢ２を操作する例を示す。
【０１３３】
図２５は、第５の実施形態の構成例を示す。図２５のスライスロジック部１１Ｃは、ネットワークＤＢ２の複製し、ネットワークのスライス（仮想分割）を行う機能を有する。スライスロジック部１１Ｃは、一つのネットワークＤＢ２の状態や変化を、複数のネットワークＤＢ２Ａ、２Ｂへ展開し、その複数のネットワークＤＢ２Ａ、２Ｂの状態や変化をオリジナルのネットワークＤＢ２へフィードバックするといった処理を行う。なお、図２５の例では、２つのネットワークＤＢインタフェース部１０−１、１０−２を設けた構成としているが、ネットワークＤＢ毎にネットワークＤＢインタフェース部を設けた構成でもよいし、１つのネットワークＤＢインタフェース部が複数のネットワークＤＢ２に接続されている構成でもよい。
【０１３４】
以上のように、任意のネットワークＤＢ２にスライスロジック部１１Ｃを接続することで、複数のネットワーク運用者（ネットワークユーザ）に、それぞれ専用ネットワークとしてスライスされたネットワークの管理させることが可能となる。例えば、上位のネットワーク運用者が、ネットワークＤＢ２を管理し、上位のネットワーク運用者から許可を得た下位のネットワーク運用者が、ネットワークＤＢ２Ａ、２Ｂを管理する、といった運用を行うことが可能となる。
【０１３５】
［第６の実施形態］
続いて、本発明の第６の実施形態について説明する。第６の実施形態では、制御装置１が、最短経路ロジック部１１Ｄにより、ネットワークＤＢ２を操作する例を示す。最短経路ロジック部１１Ｄは、ネットワーク４で転送されるパケットの送信元から宛先までの経路のうち、最短の経路を計算する機能を有する。
【０１３６】
図２６は、第６の実施形態の構成例を示す。図２６の最短経路ロジック部１１Ｄは、ネットワークＤＢ２から取得したトポロジ情報と、ホスト情報記憶部２１から読み出したホスト情報に基づいて、任意のホスト間の最短転送経路を計算し、最短経路記憶部２０に記憶しておく。
【０１３７】
最短経路ロジック部１１Ｄは、ネットワークＤＢ２からトポロジ関連エントリの更新通知を受けると、その内容に応じて、最短経路を再計算し、最短経路記憶部２０の内容を更新する。最短経路ロジック部１１Ｄは、例えば、“ｓｕｂｓｃｒｉｂｅ”コマンドを用いて、“／ｎｏｄｅｓ”エントリや、“／ｌｉｎｋｓ”エントリが更新された場合に更新された情報を通知するように、ネットワークＤＢ２に予約する。
【０１３８】
ネットワークＤＢ２は、“ｓｕｂｓｃｒｉｂｅ”コマンドで指定されたエントリが更新された場合、そのエントリに関する情報を、“ｐｕｂｌｉｓｈ”コマンドで、最短経路ロジック部１１Ｄに通知する。最短経路ロジック部１１Ｄは、トポロジ情報の更新に関する通知をネットワークＤＢ２から受信した場合、新たなトポロジ情報に対応する最短経路を再計算し、最短経路記憶部２０に記憶する。最短経路ロジック部１１Ｄは、最短経路を再計算したことにより、パケット処理情報を更新してもよい。最短経路が再計算されることにより、例えば、パケット処理情報に含まれる経路情報（“Ｐａｔｈ情報”）が更新される。最短経路ロジック部１１Ｄは、例えば、“ｐｕｔ”コマンドにより、“／ｆｌｏｗｓ／［ｆｌｏｗ＿ｉｄ］”エントリに、更新したパケット処理情報をネットワークＤＢ２に格納する。
【０１３９】
以上のように、ネットワークＤＢ２に図２６の最短経路ロジック部１１Ｄを有する制御装置１を接続することで、制御装置１に、最短経路の計算機能と、この最短経路に対応するパケット処理情報の更新機能とが追加される。
【０１４０】
［第７の実施形態］
続いて、本発明の第７の実施形態について説明する。第７の実施形態では、制御装置１が、アグリゲーションロジック部１１Ｅにより、ネットワークＤＢ２を操作する例を示す。アグリゲーションロジック部１１Ｅは、複数のノードや、複数のリンクをまとめて、ネットワークトポロジを抽象化する機能を有する。
【０１４１】
図２７は、第７の実施形態の構成例を示す。図２７のアグリゲーションロジック部１１Ｅは、例えば、ネットワークＤＢ２に格納されたトポロジ情報を抽象化し、抽象化したトポロジ情報をネットワークＤＢ２Ｃに格納する。
【０１４２】
アグリゲーションロジック部１１Ｅは、例えば、ネットワークＤＢ２、ネットワークＤＢ２Ｃを、それぞれ、ＤＢインタフェース部１０−３、ＤＢインタフェース部１０−４を介して操作する。
【０１４３】
図２８は、アグリゲーションロジック部１１Ｅが、ネットワークＤＢ２のトポロジ情報を抽象化し、抽象化したトポロジ情報をネットワークＤＢ２Ｃに格納する動作例の概要を示す。アグリゲーションロジック部１１Ｅは、例えば、オペレータによる操作に従って、トポロジ情報を抽象化する。図２８の例では、アグリゲーションロジック部１１Ｅは、ネットワークＤＢ２に格納されたトポロジ情報のうち、ノード１とノード２をアグリゲートして抽象化し、ノード３とノード４をアグリゲートして抽象化する。ノード１とノード２をアグリゲートして生成された新たなノードは、ネットワークＤＢ２Ｃに格納されるノート１に対応する。ノード３とノード４をアグリゲートして生成された新たなノードは、ネットワークＤＢ２Ｃに格納されるノード２に対応する。
【０１４４】
図２９と図３０は、それぞれ、ネットワークＤＢ２とネットワークＤＢ２Ｃのエントリの例を示す。アグリゲーションロジック部１１Ｅは、図２９の例において、“／ｎｏｄｅｓ／１”のエントリと、“／ｎｏｄｅｓ／２”のエントリとをアグリゲートする。また、アグリゲーションロジック部１１Ｅは、図２９の例において、“／ｎｏｄｅｓ／３”のエントリと、“／ｎｏｄｅｓ／４”のエントリとをアグリゲートする。アグリゲーションにより、ネットワークＤＢ２Ｃに格納すべきノードの数は“３”に抽象化される。
【０１４５】
アグリゲーションロジック部１１Ｅは、例えば、“ｐｕｓｈ”コマンドにより、ネットワークＤＢ２Ｃの“／ｎｏｄｅｓ”エントリに、抽象化された３つのノードを追加する。この操作により、図３０に示されるように、ネットワークＤＢ２Ｃの“／ｎｏｄｅｓ”エントリのデータ（Ｖａｌｕｅ）は、“｛１，２，３｝”となる。アグリゲーションロジック部１１Ｅは、例えば、“ｐｕｔ”コマンドにより、ネットワークＤＢ２Ｃの“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”エントリに、抽象化されたそれぞれのノードに関する情報を格納する。アグリゲーションロジック部１１Ｅは、例えば、制御装置１がノードを制御する際に用いるＩＤ（図２９、３０の“ノードＩＤ”）を、“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”エントリに登録する。また、アグリゲーションロジック部１１Ｅは、“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”エントリに登録するノードが抽象化されたノードの場合、抽象化される前のＩＤ（図３０の“ｏｒｉｇｉｎａｌ”）を“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”エントリに登録する。
【０１４６】
図３０の例では、抽象化により生成された２つのノードのＩＤは、それぞれ、“ノードＩＤ（ａ）”と“ノードＩＤ（ｂ）”が割り当てられている。また、ネットワークＤＢ２のエントリ“／ｎｏｄｅｓ／５”に対応するノードは、ネットワークＤＢ２Ｃでは、“／ｎｏｄｅｓ／３”に登録される。ネットワークＤＢ２Ｃのエントリ“／ｎｏｄｅｓ／３”のノードＩＤは、“ノードＩＤ（ｃ）”が割り当てられている。
【０１４７】
アグリゲーションロジック部１１Ｅは、例えば、ノードをアグリゲートすることにより、対応するリンクもアグリゲートする。例えば、図２９と３０の例では、アグリゲーションロジック部１１Ｅは、図２９の“／ｌｉｎｋｓ／２”と“／ｌｉｎｋｓ／４”に対応するリンクは、図３０の“／ｌｉｎｋｓ／１”にアグリゲートされる。例えば、アグリゲーションロジック部１１Ｅは、“ｐｕｔ”コマンドにより、ネットワークＤＢ２Ｃのエントリ“／ｌｉｎｋｓ／１”に、図２９の“／ｌｉｎｋｓ／２”と“／ｌｉｎｋｓ／４”に対応するデータ（Ｖａｌｕｅ）を格納する。また、アグリゲーションロジック部１１Ｅは、図２９の“／ｎｏｄｅｓ／１”と“／ｎｏｄｅｓ／２”をアグリゲートすることにより不要となったリンク（図２９の“／ｌｉｎｋｓ／１”）は、ネットワークＤＢ２Ｃには登録しない。なお、例えば、図２９で、“｛ｓｒｃ＿ｎｏｄｅ：  Ａ，  ｄｓｔ＿ｎｏｄｅ：  Ｂ｝”は、パケットがノードＩＤ（Ａ）のノードからノードＩＤ（Ｂ）のノードに対して転送されるリンクであることを表す。
【０１４８】
以上のように、アグリゲーションロジック部１１Ｅにより、トポロジを抽象化することができる。よって、オペレータは、管理対象のネットワークを抽象化されたトポロジに基づいて制御することが可能となり、ネットワークの管理が容易となる。
【０１４９】
［第８の実施形態］
続いて、本発明の第８の実施形態について説明する。第８の実施形態では、制御装置１が、結合ロジック部１１Ｆにより、ネットワークＤＢ２を操作する例を示す。結合ロジック部１１Ｆは、複数のネットワークＤＢが有するトポロジ情報を結合する機能を有する。
【０１５０】
図３１は、第８の実施形態の構成例を示す。図３１の結合ロジック部１１Ｆは、ネットワークＤＢ  ２ＤとネットワークＤＢ  ２Ｅがそれぞれ有するトポロジ情報を結合し、ネットワークＤＢ  ２Ｆに格納する。
【０１５１】
図３２は、ネットワークＤＢ  ２Ｄと、ネットワークＤＢ  ２Ｅのそれぞれに格納されているトポロジ情報の例を示す。ネットワークＤＢ  ２Ｄは、３つのノード（ノード１−３）と、３つのリンク（リンク１−３）で構成されるトポロジ情報を有する。ネットワークＤＢ  ２Ｅは、３つのノード（ノード１−３）と、３つのリンク（リンク１−３）で構成されるトポロジ情報を有する。
【０１５２】
図３３は、ネットワークＤＢ２ＤとネットワークＤＢ２Ｅのそれぞれのトポロジ情報を結合して生成された新たなトポロジ情報の例を示す。
【０１５３】
２つのトポロジを結合することにより、図３２および図３３の例では、ネットワークＤＢ２Ｆに格納されるノートの数は“６”となる。結合ロジック部１１Ｆは、例えば、“ｐｕｓｈ”コマンドにより、“／ｎｏｄｅｓ”エントリにノードのリストを格納する。結合ロジック部１１Ｆが“ｐｕｓｈ”コマンドによりネットワークＤＢ２Ｆを操作することにより、“／ｎｏｄｅｓ”エントリに、結合後のノードのリスト（“｛１，２，３，４，５，６｝”）が格納される。また、結合ロジック部１１Ｆは、例えば、“ｐｕｔ”コマンドにより、エントリ“／ｎｏｄｅｓ／［ｎｏｄｅ＿ｉｄ］”に、ノードに関する情報を格納する。
【０１５４】
２つのトポロジを結合することにより、図３２および図３３の例では、ネットワークＤＢ２Ｆに格納されるリンクの数は“７”となる。結合ロジック部１１Ｆは、例えば、“ｐｕｓｈ”コマンドにより、“／ｌｉｎｋｓ”エントリにリンクのリストを格納する。結合ロジック部１１Ｆが“ｐｕｓｈ”コマンドによりネットワークＤＢ２Ｆを操作することにより、“／ｌｉｎｋｓ”エントリに、結合後のノードのリスト（“｛１，２，３，４，５，６，７｝”）が格納される。また、結合ロジック部１１Ｆは、例えば、“ｐｕｔ”コマンドにより、エントリ“／ｌｉｎｋｓ／［ｌｉｎｋ＿ｉｄ］”に、リンクに関する情報を格納する。
【０１５５】
［第９の実施形態］
続いて、本発明の第９の実施形態について説明する。オペレータは、ネットワークＤＢ２やＤＢ操作ロジック部１１（若しくは、第３−第８の実施形態に示された要素１１Ａ−１１Ｆ）を、コンポーネントマネージャ３０の機能を利用して管理することが可能となる。第９の実施形態では、コンポーネントマネージャ３０について説明する。
【０１５６】
図３４は、第９の実施形態のシステム構成の例を示す。オペレータは、コンポーネントマネージャ３０が有する機能を利用することで、ネットワークＤＢ２やＤＢ操作ロジック部１１を管理する。また、図３４の例に示されるように、ネットワークＤＢ２やＤＢ操作ロジック部１１が複数のサーバ（サーバ２００−サーバ４００）に跨っている場合でも、コンポーネントマネージャ３０により、統合管理が可能である。なお、図３４の例では、複数のサーバに跨って構成されるネットワークＤＢ２やＤＢ操作ロジック部１１により、制御装置１が構成されるものとする。
【０１５７】
図３５は、コンポーネントマネージャ３０の構成例を示す。図３５を参照すると、コンポーネントマネージャ３０は、コンポーネント情報保持部３１と、コンポーネント管理部３２と、外部制御インタフェース部３３と、コンポーネント制御インタフェース部３４と、を含む。
【０１５８】
コンポーネント情報保持部３１は、上述の実施形態に示されたネットワークＤＢやＤＢ操作ロジック部１１（例えば、第３−第８の実施形態に示された要素１１Ａ−１１Ｆ）の構成や接続関係を記憶する。
【０１５９】
コンポーネント制御インタフェース部３４は、ネットワークＤＢ２、ＤＢ操作ロジック部１１等との接続インタフェースとしての機能を有する。コンポーネントマネージャ３０は、コンポーネント制御インタフェース部３４を介して、ネットワークＤＢ２やＤＢ操作ロジック部１１にアクセスする。
【０１６０】
コンポーネント管理部３２は、オペレータからの操作に応じて、ネットワークＤＢ２の生成・削除、ＤＢ操作ロジック部１１の起動・終了を行う起動・終了機能３２０を有する。コンポーネント管理部３２は、オペレータからの操作に応じてコンポーネント制御インタフェース部３４を介してコンポーネント間を接続する接続機能３２１を有する。コンポーネント管理部３２は、ＤＢ操作ロジック部１１が正常に動作しているか否かを監視するための死活監視機能３２２を備えている。また、コンポーネント管理部３２は、オペレータからの操作内容に応じて、コンポーネント情報保持部３１の内容を更新する。
【０１６１】
図３４のプロセス管理部９は、コンポーネント制御インタフェース部３４に接続されている。プロセス管理部９は、例えば、図３４に示すように、複数のサーバ上にＤＢ操作ロジック部１１が構成されている場合に、これら各サーバ上で動作するＤＢ操作ロジック部１１の起動・終了・監視を含む管理を、コンポーネント管理部３２からの指示に基づき行う。また、図３４に示すように、複数のＤＢ操作ロジック部１１がそれぞれ異なるネットワーク（例えば、オープンフローネットワークや、ＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）ネットワーク）に接続されていてもよい。
【０１６２】
［第１０の実施形態］
続いて、本発明の第１０の実施形態について説明する。図３６は、本発明の第１０の実施形態のシステム構成の例を示す図である。以下、図３６のユーザインタフェース４０について図面を参照して説明する。
【０１６３】
図３６に示されたサーバ４００は、オペレータによるユーザインタフェース４０の操作に応じて、制御装置１を構築する機能を有する。
【０１６４】
サーバ４００は、表示部４０１、管理部４０２を有する。表示部４０１は、ネットワークＤＢ２やＤＢ操作ロジック部１１に対応するアイコンを、ユーザインタフェース４０（例えば、ディスプレイ等に表示される画面）に表示する機能を有する。管理部４０２は、オペレータの操作によるアイコンの接続関係に基づいて、制御装置１を構築する機能を有する。
【０１６５】
図３７は、表示部４０１によって表示される画面の例である。図３７の例では、上述したネットワークＤＢ２やＤＢ操作ロジック部１１（例えば、第３−第８の実施形態に示された要素１１Ａ−１１Ｆ）に対応する雛型となるアイコンを表示するテンプレート表示領域と、作業領域とを設けた画面レイアウトとなっている。
【０１６６】
例えば、オペレータが図３７のテンプレート表示領域から、必要なネットワークＤＢ２やＤＢ操作ロジック部１１、最短経路ロジック部１１Ｄに対応する雛型をドラッグアンドドロップすると、作業領域に対応するアイコンが表示される。そして、オペレータが、作業領域に表示されたアイコン同士を接続する操作を行うと、作業領域のアイコン間に接続線が表示される。表示部４０１は、例えば、オペレータから表示要求を受け付けた際に、ポップアップウインドウなどを利用したオブジェクト表示領域に、ネットワークＤＢ２や、ＤＢ操作ロジック部１１の詳細情報や、可視化ＤＢ操作ロジック部１１Ｂにより生成されたネットワークトポロジが表示される。例えば、表示部４０１は、作業領域のアイコンに対するクリック等（表示要求）を検出すると、ポップアップウインドウなどを利用したオブジェクト表示領域に、ネットワークＤＢ２や、ＤＢ操作ロジック部１１の詳細情報や、可視化ＤＢ操作ロジック部１１Ｂにより生成されたネットワークトポロジが表示される。
【０１６７】
図３８は、ユーザインタフェース４０における操作内容と、管理部４０２による制御装置１の構成とを対応付けて表した図である。なお、管理部４０２は、コンポーネントマネージャ３０により構成することも可能である。
【０１６８】
表示部４０１は、例えば、ＤＢ操作ロジック部１１によるネットワークＤＢ２の操作の結果を表示してもよい。例えば、表示部４０１は、ＤＢ操作ロジック部１１に対応するアイコンと、ネットワークＤＢ２に対応するアイコンとが接続されたことに応じて、ＤＢ操作ロジック部１１によるネットワークＤＢ２の操作結果を表示する。
【０１６９】
テンプレート表示領域からアイコン（ＮＷ−ＤＢ；ネットワークＤＢ２に対応）ＴＰ１と、アイコン（ＯＦ−ＮＷ；ＯｐｅｎＦｌｏｗ制御部１１Ａに対応）ＴＰ２と、アイコン（最短経路；最短経路ロジック部１１Ｄに対応）ＴＰ３とを選択して作業領域に配置し、これらを接続した状態を示している。これにより、制御装置１にネットワークＤＢ２と、ＯｐｅｎＦｌｏｗ制御部１１Ａと、最短経路ロジック部１１Ｄが追加され、接続される。ネットワークＤＢ２に対応するネットワーク４は、オープンフロープロトコルにより制御され、かつ、最短経路による制御が行われることになる。
【０１７０】
図３９は、図３８のアイコン（ＮＷ−ＤＢ；ネットワークＤＢ２に対応）ＴＰ１に、アイコン（可視化；可視化ＤＢ操作ロジック部１１Ｂに対応）ＴＰ４を接続した状態を示している。これにより、制御装置１に、グラフ等によるネットワークトポロジの表示機能が追加される。
【０１７１】
図４０は、アイコン（ＯＦ−ＮＷ）ＴＰ２が接続されたアイコン（ＮＷ−ＤＢ）ＴＰ１に、さらに、アイコン（アグリゲーション；アグリゲーションロジック部１１Ｅ）ＴＰ５を接続した状態を示す。アイコン（アグリゲーション）ＴＰ５に対応するアグリゲーションロジック部１１Ｅは、ネットワークＤＢのトポロジ情報をアグリゲートして抽象化し、他のネットワークＤＢ２に格納する。それぞれのネットワークＤＢ２に、アイコン（可視化）ＴＰ５が接続される。図４０の例により、複雑なネットワークトポロジと、抽象化されたネットワークトポロジとの双方をグラフ表示することが可能となる。
【０１７２】
図４１は、アイコン（ＯＦ−ＮＷ）ＴＰ２が接続されたアイコン（ＮＷ−ＤＢ）ＴＰ１に、さらに、アイコン（スライス；スライスロジック部１１Ｃに対応）ＴＰ６を接続して論理的に分割されたネットワークＤＢを生成した状態を示している。このようにすることで、一つのネットワークを、複数の仮想ネットワークにスライスされる。そして、これらのスライスされたネットワークＤＢを表わすアイコン（ＮＷ−ＤＢ；ネットワークＤＢ）に、テンプレート表示領域の各種アイコンを接続することで、スライスしたネットワークを個々に制御、利用することが可能となる。
【０１７３】
図４２は、アイコン（ＯＦ−ＮＷ）ＴＰ２が接続された複数のアイコン（ＮＷ−ＤＢ）ＴＰ１に、アイコン（結合；結合ロジック部１１Ｆに対応）を接続して、これらのネットワークをまとめたネットワークＤＢを生成した状態を示している。このようにすることで、複数のネットワークを、一つのネットワークとして制御、利用することが可能となる。
【０１７４】
以上のように、本実施形態のユーザインタフェースを用いることで、高度な知識やスキルを持たなくとも、ネットワーク制御装置の初期設定や機能のカスタマイズを行うことが可能となる。また、このユーザインタフェース４０を介して、個々のネットワークの設定や、ネットワークＤＢのエントリの参照、エントリの操作をすることもできるようにしてもよい。例えば、図３７に示したオブジェクト表示領域の各フィールドにカーソルを合わせて、設定値の修正や制御（フロー）関連エントリの追加、変更、削除等を行えるようにすることも好ましい。
【０１７５】
以上、本発明の実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成や要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【０１７６】
また例えば、上記した実施形態で挙げたＤＢ操作ロジック部１１のバリエーションのほかにも、ネットワークの切り出しを行うロジックを搭載した構成も考えられる。このような構成によれば、一つのネットワークＤＢのトポロジを部分的に抽出して、別のネットワークＤＢへ展開し、そのネットワークＤＢのフローを元のネットワークＤＢのフローへ展開することができる。このように２つのネットワークＤＢ間を接続することにより、ネットワーク制御装置に、ネットワークを部分的に制御する機能が追加される。例えば、ネットワークのある部分の運用だけを他のネットワーク運用者に任せたり、その部分だけルーティングアルゴリズムを変更したりする等の利用が考えられる。
【０１７７】
また、上記した実施形態では実在するネットワークの制御を行うものとして説明したが、ＮＳ３（Ｎｅｔｗｏｒｋ  Ｓｉｍｕｌａｔｏｒ  ｖｅｒｓｉｏｎ３）等に代表されるネットワークシミュレータとリンクするネットワーク制御部を設けてもよい。これにより、ネットワーク制御装置の制御対象を実際の物理ネットワークではなく、シミュレータ上のネットワークに置き換えることが可能となる。従って、ネットワーク運用者は自らが作成したネットワーク制御装置を、実際の物理ネットワークへ適用をする前に、その動作や性能をシミュレータ上で検証することが可能となる。
【０１７８】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による制御装置参照）
［第２の形態］
第１の形態の制御装置において、
前記インターフェース部は、前記複数のモジュールで共通のデータベース操作コマンドに従って前記制御情報を操作する制御装置。
［第３の形態］
第１又は第２の形態の制御装置において、
前記インターフェース部は、前記モジュール毎に異なる前記アルゴリズムに応じた制御情報を前記データベースに構築可能である制御装置。
［第４の形態］
第１から第３いずれか一の形態の制御装置において、
前記インターフェース部は、前記モジュールが発行する前記データベース操作コマンドにより予め設定された条件を参照し、前記制御情報の更新内容が前記条件に合致する場合に、前記制御情報の更新を前記モジュールに通知する制御装置。
［第５の形態］
第１から第４いずれか一の形態の制御装置において、
前記インターフェース部は、前記モジュールの組合せに応じた制御情報を前記データベースに構築可能である制御装置。
［第６の形態］
第１から第５いずれか一の形態の制御装置において、
前記データベースは、前記ネットワークのトポロジに関する第一の情報と、前記ネットワークにおけるパケットの処理方法に関する第二の情報とを含む制御装置。
［第７の形態］
第１から第６いずれか一の形態の制御装置において、
前記データベースは、前記制御装置が前記ネットワークから受信したパケットを管理するための第三の情報と、前記制御装置から前記ネットワークへ送信するパケットを管理するための第四の情報とを含む制御装置。
［第８の形態］
第１から第７いずれか一の形態の制御装置において、
前記インターフェース部は、通信端末間の経路計算、ネットワークトポロジの管理、ネットワークトポロジのアグリゲーション、ネットワークの分割、ネットワークの結合の少なくとも１つを実行する前記モジュールと接続可能である制御装置。
［第９の形態］
（上記第２の視点による制御方法参照）
［第１０の形態］
第９の形態の制御方法において、
前記複数のモジュールで共通の操作コマンドに従って前記制御情報を操作する制御方法。
［第１１の形態］
第９又は第１０の形態の制御方法において、
前記モジュール毎に異なる前記所定のアルゴリズムに応じた制御情報を前記データベースに構築する制御方法。
［第１２の形態］
第９から第１１いずれか一の形態の制御方法において、
前記モジュールが発行する前記データベース操作コマンドにより予め設定された条件を参照し、前記制御情報の更新内容が前記条件に合致する場合に、前記制御情報の更新を前記モジュールに通知する制御方法。
［第１３の形態］
第９から第１２いずれか一の形態の制御方法において、
前記モジュールの組合せに応じた制御情報を前記データベースに構築する制御方法。
［第１４の形態］
第９から第１３いずれか一の形態の制御方法において、
前記データベースに含まれる、前記ネットワークのトポロジに関する第一の情報と、前記ネットワークにおけるパケットの処理方法に関する第二の情報とを操作する制御方法。
［第１５の形態］
第９から第１４いずれか一の形態の制御方法において、
前記データベースは、前記制御装置が前記ネットワークから受信したパケットを管理するための第三の情報と、前記制御装置から前記ネットワークへ送信するパケットを管理するための第四の情報とを含み、
前記パケットを処理するための前記モジュールから発行された前記データベース操作コマンドに従って、前記第三の情報を操作する制御方法。
［第１６の形態］
第９から第１５いずれか一の形態の制御方法において、
通信端末間の経路計算、ネットワークトポロジの管理、ネットワークトポロジのアグリゲーション、ネットワークの分割、ネットワークの結合の少なくとも１つを実行する前記モジュールにより前記制御情報を操作する制御方法。
［第１７の形態］
（上記第３の視点による通信システム参照）
［第１８の形態］
（上記第４の視点によるプログラム参照）
【０１７９】
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１８０】
１  制御装置
２、２Ａ〜２Ｆ  ネットワークデータベース（ネットワークＤＢ）
３  ノード
４  ネットワーク
４Ａ  管理ネットワーク
９  プロセス管理部
１０、１０−１〜１０−６  ＤＢインタフェース部
１１、１１−１、１１−２  ＤＢ操作ロジック部
１２  ネットワーク制御部
１１Ａ  ＯｐｅｎＦｌｏｗ制御部
１１Ｂ  可視化ＤＢ操作ロジック部
１１Ｃ  スライスロジック部
１１Ｄ  最短経路ロジック部
１１Ｅ  アグリゲーションロジック部
１１Ｆ  結合ロジック部
２０  最短経路記憶部
２１  ホスト情報記憶部
３０  コンポーネントマネージャ（構成管理部）
３１  コンポーネント情報保持部
３２  コンポーネント管理部
３３  外部制御インタフェース部
３４  コンポーネント制御インタフェース部
４０  ユーザインタフェース
１００、２００、３００、４００  サーバ
１１０  トポロジ処理部
１１１  フロー処理部
１１２  パケット処理部
３２０  起動・終了機能
３２１  接続機能
３２２  死活監視機能
４０１  表示部
４０２  管理部
ＴＰ１〜ＴＰ６  アイコン
【図１】
0006299754.tif 000002
【図２】
0006299754.tif 000003
【図３】
0006299754.tif 000004
【図４】
0006299754.tif 000005
【図５】
0006299754.tif 000006
【図６】
0006299754.tif 000007
【図７】
0006299754.tif 000008
【図８】
0006299754.tif 000009
【図９】
0006299754.tif 000010
【図１０】
0006299754.tif 000011
【図１１】
0006299754.tif 000012
【図１２】
0006299754.tif 000013
【図１３】
0006299754.tif 000014
【図１４】
0006299754.tif 000015
【図１５】
0006299754.tif 000016
【図１６】
0006299754.tif 000017
【図１７】
0006299754.tif 000018
【図１８】
0006299754.tif 000019
【図１９】
0006299754.tif 000020
【図２０】
0006299754.tif 000021
【図２１】
0006299754.tif 000022
【図２２】
0006299754.tif 000023
【図２３】
0006299754.tif 000024
【図２４】
0006299754.tif 000025
【図２５】
0006299754.tif 000026
【図２６】
0006299754.tif 000027
【図２７】
0006299754.tif 000028
【図２８】
0006299754.tif 000029
【図２９】
0006299754.tif 000030
【図３０】
0006299754.tif 000031
【図３１】
0006299754.tif 000032
【図３２】
0006299754.tif 000033
【図３３】
0006299754.tif 000034
【図３４】
0006299754.tif 000035
【図３５】
0006299754.tif 000036
【図３６】
0006299754.tif 000037
【図３７】
0006299754.tif 000038
【図３８】
0006299754.tif 000039
【図３９】
0006299754.tif 000040
【図４０】
0006299754.tif 000041
【図４１】
0006299754.tif 000042
【図４２】
0006299754.tif 000043