(57)【特許請求の範囲】
【請求項１】
スイッチに結合されたエンドホストを有するネットワーク内の前記スイッチを制御するコントローラの使用方法であって、
所与のネットワークポリシールールを受け取るステップと、
テストパラメータ及び予想テスト結果を含むテストルールを受け取るステップであって、前記予想テスト結果は、ユーザ入力データ及びシミュレーションデータからなるグループから選択されたデータより決定される当該ステップと、
前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップであって、
前記受け取ったテストルールの前記テストパラメータに基づいてテストパケットを生成すること、
前記テストパケットを用いながらトリガされる実際のネットワークポリシールールを生成すること、
無効なネットワークポリシールールを識別するため前記実際のネットワークポリシールールを前記予想テスト結果と比較すること、
を含む当該ステップと、
を含むことを特徴とする方法。
【請求項２】
エンドホストグループから仮想スイッチを生成するステップと、
前記仮想スイッチから仮想ネットワークトポロジを生成するステップと、
をさらに含み、各仮想スイッチは、それぞれのエンドホストに割り当てられた仮想ポートを有し、前記所与のネットワークポリシールールが所与の仮想ポートに対して定められ、前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定する前記テストを行うステップは、前記生成された仮想ネットワークトポロジに基づいて前記テストを行うステップを含む、請求項１に記載の方法。
【請求項３】
前記生成された仮想ネットワークトポロジに基づいて前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定する前記テストを行うステップは、前記仮想ネットワークトポロジの仮想経路を通る前記テストパケットのパケットトラバーサルをシミュレートするステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記コントローラは、前記所与のネットワークポリシールールを含む複数のネットワークポリシールールを実装し、前記方法は、前記仮想ネットワークトポロジの前記パケットトラバーサルのシミュレーション中にトリガされた前記実際のネットワークポリシールールを識別するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記生成された仮想ネットワークトポロジに基づいて前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定する前記テストを行うステップは、前記ネットワークの基本経路を形成する一連のスイッチを前記ネットワークにおいて決定するステップをさらに含み、前記ネットワークの基本経路は、記仮想ネットワークトポロジの仮想経路に対応する、請求項４に記載の方法。
【請求項６】
前記生成された仮想ネットワークトポロジに基づいて前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定する前記テストを行うステップは、前記仮想経路に対応する前記基本経路を実装するフローテーブルエントリを、前記一連のスイッチに提供することなく生成するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記生成された仮想ネットワークトポロジに基づいて前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定する前記テストを行うステップは、前記シミュレートされたパケットトラバーサルの結果を前記予想テスト結果と比較して、前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記テストルールの前記予想テスト結果は、トリガされると予想されるネットワークポリシールールのリストを含み、前記シミュレートされたパケットトラバーサルの結果を前記予想テスト結果と比較して、前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定するステップは、前記ネットワークポリシールールのリストを前記トリガされたネットワークポリシールールと比較するステップを含む、請求項７に記載の方法。
【請求項９】
前記生成された仮想ネットワークトポロジに基づいて前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定する前記テストを行うステップは、
前記テストパケットからタグ付きテストパケットを生成するステップと、
前記タグ付きテストパケットを前記ネットワークに投入するステップと、
前記テストルールの前記予想テスト結果、及び前記スイッチから受け取った前記タグ付きテストパケットに関する情報に基づいて、前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定するステップと、
をさらに含む請求項２に記載の方法。
【請求項１０】
前記生成された仮想ネットワークトポロジに基づいて前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定する前記テストを行うステップは、
前記タグ付きテストパケットに関する情報を前記コントローラに送信するように前記スイッチに指示する、前記スイッチが前記タグ付きテストパケットを該タグ付きテストパケットの宛先エンドホストに転送するのを防ぐフローテーブルエントリを前記スイッチに提供するステップと、
前記スイッチからの前記情報及び前記テストルールの前記予想テスト結果に基づいて前記ネットワークが前記所与のネットワークポリシールールを満たすかどうかを判定するステップと、
をさらに含む請求項９に記載の方法。
【請求項１１】
スイッチに結合されたエンドホストを有するネットワーク内の前記スイッチを制御するコントローラの使用方法であって、
前記ネットワークのためのネットワークトポロジ情報を維持するステップと、
エンドホストグループから仮想スイッチを生成するステップであって、前記ネットワークトポロジ情報は、前記スイッチのためのネットワークトポロジ情報と、前記仮想スイッチのための仮想ネットワークトポロジ情報とを含む当該ステップと、
ユーザが定義したテストルールを受け取るステップと、
前記ユーザが定義したテストルールに基づいてテストパケットを生成するステップと、  前記ネットワークトポロジ情報に基づいて前記テストパケットを処理することにより、前記ユーザが定義したテストルールを前記ネットワークが満たすかどうかを判定するステップであって、前記ユーザが定義したテストルールは、予想結果と、送信元エンドホスト及び宛先エンドホストを識別するテストパラメータとを含み、前記テストパケットは、前記ユーザが定義したテストルールの前記送信元エンドホスト及び前記宛先エンドホストを識別し、前記テストパケットを処理するステップは、前記ネットワークトポロジ情報に基づいて、前記ネットワークを通じた前記送信元エンドホストから前記宛先エンドホストへの前記テストパケットのトラバーサルをシミュレートすることを含む当該ステップと、
を含むことを特徴とする方法。
【請求項１２】
前記ユーザが定義したテストルールを前記ネットワークが満たすかどうかを判定するステップは、前記シミュレートした前記テストパケットのトラバーサルが、前記ユーザが定義したテストルールの前記予想結果に一致するかどうかを判定するステップを含む、請求項１１に記載の方法。
【請求項１３】
ネットワーク内のスイッチを制御するコントローラの使用方法であって、
ユーザが定義したテストルールを受け取るステップと、
前記ユーザが定義したテストルールに基づいてタグ付きテストパケットを生成するステップであって、
テストパケットを生成すること、
前記テストパケットのヘッダフィールドに識別情報を挿入して前記タグ付きテストパケットを生成すること、
を含む当該ステップと、
前記タグ付きテストパケットを前記ネットワークに投入するステップと、
を含むことを特徴とする方法。
【請求項１４】
前記タグ付きテストパケットを受け取ったことに応答して前記テストパケットに関する情報を提供するように前記スイッチを制御するステップと、
前記スイッチによって提供された前記情報に基づいて、前記タグ付きテストパケットがトラバースした経路を識別するステップと、及び、
前記ユーザが定義したテストルールは予想結果を含み、前記識別された経路に基づいて、前記ユーザが定義したテストルールの前記予想結果を前記ネットワークが満たすかどうかを判定するステップと、
をさらに含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照〕
本出願は、２０１３年１１月２０日に出願された米国特許出願公開第１４／０８５，５３８号に対する優先権を主張するものであり、この文献はその全体が引用により本明細書に組み入れられる。
【０００２】
本発明は、通信ネットワークに関し、具体的には、コントローラによって制御されるネットワークスイッチを有する通信ネットワークに関する。
【背景技術】
【０００３】
インターネットなどのパケットベースのネットワーク、及びインターネットに接続されたローカルデータネットワークは、ネットワークスイッチを含む。ネットワークスイッチは、パケットの送信元からパケットの宛先にパケットを転送する際に使用される。パケットは、フレームと呼ばれることもある。
【０００４】
あるベンダの装置を用いて別のベンダのスイッチを制御することは困難又は不可能な場合がある。この理由は、あるベンダのスイッチ装置が別のベンダのスイッチ装置と異なるオペレーティングシステム及び一連の制御手順を使用している可能性があるからである。異なるタイプのスイッチプラットフォームの制御に関連する課題に取り組むために、クロスプラットフォームプロトコルが開発された。これらのプロトコルは、互換性がなかったはずのスイッチの集中制御を可能にする。
【０００５】
ネットワーク内のスイッチに、クロスプラットフォームのコントローラクライアントを含めることができる。コントローラクライアントは、ネットワーク経路を介して対応するコントローラサーバと通信することができる。コントローラクライアントは、様々なスイッチハードウェア上に実装できるので、互換性がなかったはずのスイッチ装置を１つのコントローラで制御することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
コントローラがスイッチのネットワークを効率的に制御することは困難な場合がある。例えば、ネットワーク管理者によって、又は装置の障害に起因してネットワークトポロジが変更されることがある。このシナリオでは、ネットワークの変更によってコントローラの設定が無効になる可能性がある。従って、コントローラの能力を改善することが望ましいと思われる。
【課題を解決するための手段】
【０００７】
コントローラが、ネットワーク内の物理的スイッチ及びソフトウェアスイッチなどのスイッチを制御することができる。このコントローラは、エンドホストグループから仮想スイッチを生成することができる。各仮想スイッチは、それぞれのエンドホストに割り当てられた仮想ポートを有することができる。コントローラは、仮想スイッチから仮想ネットワークトポロジを生成することができる。
【０００８】
コントローラは、スイッチを通じてネットワークトラフィックを管理する１又は２以上のネットワークポリシールールを受け取ることができる。ネットワークポリシールールは、仮想ポートを流れるネットワークトラフィックを管理するように、それぞれの仮想ポートに対して定めることができる。所与のネットワークポリシールールでは、コントローラが、ネットワークがネットワークポリシールールを満たしているかどうかを判定するテストを行うことができる。このテストは、コントローラが（例えば、ユーザから）受け取ったテストルールに基づいて行うことができる。テストルールは、テストパラメータ及び予想テスト結果を識別することができる。コントローラは、テストルールのテストパラメータに基づいてテストパケットを生成することができる。例えば、テストパケットは、送信元及び宛先のエンドホスト情報、又はテストパラメータから特定される他のヘッダフィールドを含むことができる。
【０００９】
コントローラは、仮想ネットワークトポロジの仮想経路をトラバースするテストパケットのパケットトラバーサルをシミュレートすることができる。コントローラは、シミュレーション中にトリガされたネットワークポリシールールを識別することができる。コントローラは、仮想経路の基本経路を形成する一連のスイッチを決定することができる。コントローラは、基本経路を実装するフローテーブルエントリを、（例えば、ネットワークの通常の転送動作がテスト中に変化しないように）一連のスイッチに提供することなく生成することができる。コントローラは、トリガされたネットワークポリシールール、又はテストパケットがトラバースするスイッチなどのシミュレーション結果に基づいて、ネットワークがネットワークポリシールールを満たしているかどうかを判定することができる。
【００１０】
必要であれば、コントローラは、テストパケットにタグ付けし、このタグ付きパケットをネットワークに投入することができる。テストパケットへのタグ付けは、ヘッダフィールドに識別情報を挿入し、又はテストパケットをカプセル化することによって行うことができる。コントローラは、タグ付きテストパケットに関する情報をコントローラに送信するようにスイッチに指示するフローテーブルエントリをスイッチに提供することができる。この情報は、タグ付きテストパケットがどのスイッチポートで受け取られたかを識別することができる。フローテーブルエントリは、コントローラによるネットワークポリシールールのテストによってエンドホストの通常動作が妨げられないことを保証するように、スイッチがタグ付きテストパケットをそのパケットの宛先エンドホストに転送するのを防ぐことができる。コントローラは、スイッチからの情報に基づいて、テストルールの予想結果及び対応するネットワークポリシールールをネットワークが満たしているかどうかを判定することができる。
【００１１】
添付図面及び以下の詳細な説明から、本発明のさらなる特徴、その性質及び様々な利点がさらに明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態による、コントローラ及びパケット転送システムを含む例示的なネットワークを示す図である。
【図２】本発明の実施形態による、ネットワーク接続を介して通信できるコントローラサーバ及びコントローラクライアントを示す図である。
【図３】本発明の実施形態による、パケット処理システムが使用できるタイプの例示的なフローテーブルを示す図である。
【図４】本発明の実施形態による、フローテーブルのフローテーブルエントリに基づいて実行できる３つの例示的なパケット転送タイプを示す、パケット処理システムが使用できるタイプの例示的なフローテーブルを示す図である。
【図５】本発明の実施形態による、パケット処理システムにおけるパケット処理に関連する例示的なステップを示すフローチャートである。
【図６】本発明の実施形態による、コントローラが制御できるスイッチを含む例示的なネットワークを示す図である。
【図７】本発明の実施形態による、コントローラが基本ネットワークから生成できる例示的な仮想ネットワークを示す図である。
【図８】本発明の実施形態による、コントローラが実装できる例示的なアクセス制御リストを示す図である。
【図９】本発明の実施形態による、ネットワークポリシールールを実装する際にコントローラが生成できる第１の例示的なフローテーブルエントリを示す図である。
【図１０】本発明の実施形態による、ネットワークポリシールールを実装する際にコントローラが生成できる第２の例示的なフローテーブルエントリを示す図である。
【図１１】本発明の実施形態による、コントローラが実装できる例示的なネットワークポリシールールを示す図である。
【図１２】本発明の実施形態による、コントローラが仮想ネットワークを変更できるシナリオを示す図である。
【図１３】本発明の実施形態による、ネットワークポリシールールをテストする際にコントローラが使用できる例示的なテストルールを示す図である。
【図１４】本発明の実施形態による、ネットワークポリシールールをテストする際にコントローラが実行できる例示的なステップを示すフローチャートである。
【図１５】本発明の実施形態による、ネットワークポリシールールをテストするためにテストパケットをシミュレートする際にコントローラが実行できる例示的なステップを示すフローチャートである。
【図１６】本発明の実施形態による、コントローラがテストパケットとして生成できる例示的なネットワークパケットを示す図である。
【図１７】本発明の実施形態による、コントローラが生成できる例示的なＰａｃｋｅｔ  Ｉｎメッセージを示す図である。
【図１８】本発明の実施形態による、ネットワークパケットのヘッダフィールドに識別情報を挿入することによって生成できる例示的なタグ付きネットワークパケットを示す図である。
【図１９】本発明の実施形態による、ネットワークパケットをカプセル化することによって生成できる例示的なタグ付きネットワークパケットを示す図である。
【図２０】本発明の実施形態による、タグ付きテストパケットをネットワークに投入することによってネットワークポリシールールをテストする際にコントローラが実行できる例示的なステップを示すフローチャートである。
【発明を実施するための形態】
【００１３】
インターネットなどのネットワーク、並びにインターネットに接続されたローカルネットワーク及び地域ネットワークは、パケットベースのスイッチに依拠する。本明細書ではネットワークスイッチ、パケット処理システム、又はパケット転送システムと呼ぶこともあるこれらのスイッチは、アドレス情報に基づいてパケットを転送することができる。一例として、スイッチは、ルータ、ファイアウォール、ロードバランサ又はその他のパケット転送システムを含むことができる。このようにして、パケットの送信元によって送信されたデータパケットをパケットの宛先に送達することができる。ネットワーク用語では、パケットの送信元及び宛先をエンドホストと呼ぶこともある。エンドホストの例には、パーソナルコンピュータ、サーバ、及び有線又は無線技術を用いてネットワークにアクセスするポータブル電子装置などの他のコンピュータ装置がある。
【００１４】
ネットワークスイッチの能力は、比較的小型のイーサネットスイッチ及び無線アクセスポイントから、複数のラインカード、冗長電源及び監視能力を含む大型のラックベースシステムにまで及ぶ。ネットワークが複数のベンダからの装置を含むことも珍しくない。異なるベンダからのネットワークスイッチを相互接続してパケット転送システムを形成することはできるが、これらのネットワークスイッチを集中的に管理することは、そのオペレーティングシステム及び制御プロトコル間の非互換性に起因して困難な場合がある。
【００１５】
これらの潜在的非互換性は、各ネットワークスイッチに（本明細書ではコントローラクライアントと呼ぶこともある）共通のクロスプラットフォーム制御モジュールを組み込むことによって克服することができる。集中型クロスプラットフォームコントローラサーバは、各コントローラクライアントとそれぞれのネットワークリンクを介して相互作用することができる。クロスプラットフォームコントローラサーバ及び対応するコントローラクライアントを使用することで、潜在的に異なるネットワークスイッチ装置を集中管理できるようになる。
【００１６】
本明細書で一例として説明することもある１つの例示的な構成では、図１のコントローラサーバ１８などの１又は２以上のコントローラサーバによって集中制御が行われる。コントローラサーバ１８は、スタンドアロン型コンピュータ、コンピュータクラスタ、複数箇所に分散された一連のコンピュータ、ネットワークスイッチに埋め込まれたハードウェア、又はその他の好適なコンピュータ装置１２に実装することができる。コントローラサーバ１８は、単一のコンピュータ上の単一のプロセッサとして動作することも、或いは冗長性のために複数のホストにわたって分散することもできる。分散構成の使用は、ネットワーク１０に予期せぬネットワーク分割（例えば、２つのキャンパス間のネットワークリンクが途絶した状況）に対する弾力性を与える役に立つことができる。
【００１７】
分散コントローラ構成では、コントローラノード同士が、コントローラ内プロトコルを用いて情報を交換することができる。例えば、第１のコントローラノードのみに接続されたネットワークハードウェア（例えば、スイッチ）に新たなエンドホストが接続する場合、この第１のコントローラノードは、コントローラ内プロトコルを用いて新たなエンドホストの存在を他のコントローラノードに知らせることができる。必要であれば、スイッチ又は他のネットワークコンポーネントを複数のコントローラノードに接続することもできる。本明細書では、一例として単一のコントローラサーバを用いて関連スイッチのネットワークを制御する構成について説明することもある。
【００１８】
図１のコントローラサーバ１８は、ネットワーク１０のトポロジに関する情報を収集することができる。例えば、コントローラサーバ１８は、ネットワーク１０のトポロジを発見するために、ネットワークを介してリンク層発見プロトコル（ＬＬＤＰ）プローブパケットを送信することができる。コントローラサーバ１８は、ネットワークトポロジに関する情報及びネットワーク装置の能力に関する情報を用いて、ネットワークを流れるパケットに対して適切な経路を決定することができる。適切な経路が識別されると、コントローラサーバ１８は、対応する設定データをネットワーク１０内のハードウェアに送信して、パケットがネットワーク内を望む通りに流れるように保証することができる。このようなネットワーク構成動作は、システムのセットアップ動作中に、バックグラウンドで継続的に、又は新たに送信されるデータパケット（すなわち、既存の経路がまだ確立されていないパケット）の出現に応答して行うことができる。
【００１９】
コントローラサーバ１８を用いて、ネットワーク構成ルール２０を実装することもできる。ルール２０は、様々なネットワークエンティティがどのサービスを利用できるかを指定することができる。一例として、ルール２０は、ネットワーク１０内のどのユーザ（又はユーザタイプ）が特定のサーバにアクセスできるかを指定することができる。ルール２０は、例えばコンピュータ装置１２のデータベース内に維持することができる。
【００２０】
コントローラサーバ１８、及びそれぞれのネットワークスイッチ１４におけるコントローラクライアント３０は、ネットワークプロトコルスタックを用いてネットワークリンク１６を介して通信することができる。
【００２１】
各スイッチ（例えば、各パケット転送システム）１４は、（ネットワークスイッチインターフェイスと呼ばれることもある）入出力ポート３４を有することができる。ケーブルを用いて、装置の一部をポート３４に接続することができる。例えば、ポート３４には、パーソナルコンピュータ、ウェブサーバ及びその他のコンピュータ装置などのエンドホストを接続することができる。ポート３４は、スイッチ１４のうちの１つを他のスイッチ１４に接続するために使用することもできる。
【００２２】
パケット処理回路３２は、ポート３４のうちの１つのポートから別のポートにパケットを転送する際に使用することができ、着信パケットに対して他の好適な動作を実行する際にも使用することができる。パケット処理回路３２は、専用高速スイッチ回路などの１又は２以上の集積回路を用いて実装することができ、ハードウェアデータ経路としての役割を果たすことができる。必要であれば、ソフトウェアデータ経路を実装する際に、制御ユニット２４上で実行中のパケット処理ソフトウェア２６を使用することもできる。
【００２３】
制御ユニット２４は、制御ソフトウェアの記憶及び実行を行う処理及び記憶回路（例えば、１又は２以上のマイクロプロセッサ、メモリチップ、及びその他の制御回路）を含むことができる。例えば、制御ユニット２４は、パケット処理ソフトウェア２６などのソフトウェアを記憶して実行することができ、フローテーブル２８を記憶することができ、コントローラクライアント３０の動作をサポートするために使用することもできる。
【００２４】
コントローラクライアント３０及びコントローラサーバ１８は、ＯｐｅｎＦｌｏｗプロトコル（例えば、ＯｐｅｎＦｌｏｗスイッチ仕様書バージョン１．０．０を参照）などのネットワークスイッチプロトコルに準拠することができる。コントローラクライアント３０のうちの１又は２以上のクライアントは、他のプロトコル（例えば、簡易ネットワーク管理プロトコル）に準拠することもできる。コントローラサーバ１８は、ＯｐｅｎＦｌｏｗプロトコル又は他の好適なプロトコルを用いて、スイッチ１４が入出力ポート３４からの着信パケットをどのように処理すべきかを定めるデータをコントローラクライアント３０に提供することができる。
【００２５】
１つの好適な構成では、コントローラサーバ１８からのフローテーブルデータをフローテーブル２８などのフローテーブルに記憶することができる。フローテーブル２８のエントリは、スイッチ１４（例えば、パケット処理回路３２及び／又はパケット処理ソフトウェア２６の機能）を構成する際に使用することができる。典型的なシナリオでは、フローテーブル２８が、フローテーブルエントリのためのキャッシュストレージとしての役割を果たし、パケット処理回路３２の回路によって維持される設定に、これらのフローテーブルエントリの対応するバージョンが組み込まれる。しかしながら、これは例示にすぎない。フローテーブル２８は、スイッチ１４におけるフローテーブルエントリのための専用ストレージとしての役割を果たすこともでき、或いはパケット処理回路３２内のフローテーブルストレージリソースを選択する場合には省略することもできる。一般に、フローテーブルエントリは、あらゆる好適なデータ構造（例えば、１又は２以上のテーブル、リストなど）を用いて記憶することができる。明確化のために言えば、本明細書では、フローテーブル２８のデータを（制御ユニット２４のデータベース内に維持されるか、それともパケット処理回路３２の構成に組み込まれるかに関わらず）、フローテーブルエントリを形成しているもの（例えば、フローテーブル２８の行）として見なす。
【００２６】
スイッチ１４が着信パケットをどのように処理すべきかを定めるデータを記憶するフローテーブル２８の例は例示にすぎない。必要であれば、フローテーブル２８の代わりに、又はフローテーブル２８に加えて、いずれかのパケット転送決定エンジンを用いて、パケット転送システム１４がネットワークパケットの転送方法を決定する支援を行うこともできる。一例として、パケット転送決定エンジンは、パケット転送システム１４に、ネットワークパケットをその属性に基づいて（例えば、ネットワークプロトコルヘッダに基づいて）所定のポートに転送するように指示することができる。
【００２７】
いずれかの所望のスイッチには、コントローラサーバと通信して制御されるコントローラクライアントを設けることができる。例えば、制御ソフトウェアを実行してパケット処理回路３２を省略する汎用処理プラットフォームを用いてスイッチ１４を実装することができる。別の例として、１又は２以上の高速スイッチ集積回路（「スイッチＩＣ」）に結合された制御回路を用いてスイッチ１４を実装することもできる。さらに別の例として、各々が独自のパケット処理回路を含む複数のラインカードを有するラックベースシステム内のラインカードとしてスイッチ１４を実装することもできる。必要に応じて、コントローラサーバは、このラックベースシステム又は別のラックベースシステム内の１又は２以上のラインカード上、或いはネットワークに結合された他のコンピュータ装置上に実装することができる。
【００２８】
図２に示すように、コントローラサーバ１８及びコントローラクライアント３０は、ネットワークプロトコルスタック５８及びネットワークプロトコルスタック６０などのネットワークプロトコルスタックを用いてネットワーク経路６６を介して通信することができる。スタック５８及び６０は、例えば、（一例として）Ｌｉｎｕｘ  ＴＣＰ／ＩＰスタック、又はＶｘＷｏｒｋｓオペレーティングシステム内のＴＣＰ／ＩＰスタックとすることができる。経路６６は、例えばスイッチ１４と外部装置との間のネットワーク接続をサポートする経路（例えば、図１のネットワーク経路１６）とすることも、或いはラックベースシステム内の基幹経路とすることもできる。本明細書では、一例として経路６６が経路１６などのネットワーク経路である構成について説明することもある。
【００２９】
制御プロトコルスタック５６は、ネットワークプロトコルスタック５８と制御ソフトウェア５４との間のインターフェイスとしての役割を果たす。制御プロトコルスタック６２は、ネットワークプロトコルスタック６０と制御ソフトウェア６４との間のインターフェイスとしての役割を果たす。動作中、制御プロトコルスタック５６は、コントローラサーバ１８がコントローラクライアント３０と通信している時に制御プロトコルメッセージ（例えば、ポートをアクティブにするための、又はフローテーブル２８に特定のフローテーブルエントリを導入するための制御メッセージ）を生成して解析する。図２に示すタイプの構成を使用することにより、コントローラサーバ１８とコントローラクライアント３０との間のリンクを介してネットワーク接続が形成される。コントローラサーバ１８とコントローラクライアント３０は、伝送制御プロトコル（ＴＣＰ）又はユーザデータグラムプロトコル（ＵＤＰ）・オーバ・インターネットプロトコル（ＩＰ）ネットワーク接続を用いて通信することができる。ネットワーク接続を介したコントローラサーバ１８とコントローラクライアント３０との間の通信時に使用できる制御プロトコルの例としては、（一例として）ＳＮＭＰ及びＯｐｅｎＦｌｏｗプロトコルスタック・バージョン１．０．０が挙げられる。
【００３０】
フローテーブル２８は、（ヘッダフィールドと呼ばれることもある）複数のフィールドを有するフローテーブルエントリ（例えば、テーブル内の行）を含む。スイッチ１４によって受け取られたパケット内のフィールドは、フローテーブル内のフィールドと比較することができる。各フローテーブルエントリは、関連する動作を有することができる。パケット内のフィールドとフローテーブルエントリ内のフィールドとが一致した場合、このフローテーブルエントリのための対応する動作を行うことができる。
【００３１】
図３に、例示的なフローテーブルを示す。図３に示すように、テーブル２８は、フローテーブルエントリ（行）６８を有することができる。各フローテーブルエントリは、ヘッダ７０、動作７２及び統計７４に関連することができる。各ヘッダ７０は、複数のヘッダフィールド７６を含むことができる。各フローテーブルエントリ内の動作は、パケット内のフィールドと、このフローテーブルエントリのヘッダ内の対応するフィールドとの間に一致が検出された時に、スイッチ１４がパケットに対してどのような動作を行うべきかを示す。スイッチ１４は、フローテーブル２８の統計部分内に、コントローラサーバ１８がスイッチ１４の性能に関する情報を取得したい時に問い合わせることができる統計データ（カウンタ値）を維持する。
【００３２】
ヘッダ７０内のヘッダフィールド（及び各着信パケット内の対応するフィールド）は、イングレスポート（すなわち、受け取られるパケットが通過するスイッチ１４内の物理ポートの識別子）、イーサネット送信元アドレス、イーサネット宛先アドレス、イーサネットタイプ、（ＶＬＡＮタグと呼ばれることもある）仮想ローカルエリアネットワーク（ＶＬＡＮ）識別、ＶＬＡＮプライオリティ、ＩＰ送信元アドレス、ＩＰ宛先アドレス、ＩＰプロトコル、ＩＰ  ＴｏＳ（サービスタイプ）ビット、（送信元ＴＣＰポートと呼ばれることもある）トランスポート送信元ポート／インターネット制御メッセージプロトコル（ＩＣＭＰ）タイプ、及び（宛先ＴＣＰポートと呼ばれることもある）トランスポート宛先ポート／ＩＣＭＰコードといったフィールドを含むことができる。必要に応じて他のフィールドを使用することもできる。例えば、ネットワークプロトコルフィールド及びプロトコルポートフィールドを使用することができる。
【００３３】
各フローテーブルエントリ（フローエントリ）は、一致するパケットをスイッチがどのように処理するかを示す０又は１以上の動作に関連する。転送動作が存在しない場合、パケットは破棄されることが好ましい。パケットフィールドとフローテーブルエントリ内のヘッダフィールドとの間に一致が検出された時にスイッチ１４が行うことができる動作としては、転送（例えば、着信インターフェイスを除く全てのインターフェイス上でパケットを送出するＡＬＬ、パケットをカプセル化してコントローラサーバに送信するＣＯＮＴＲＯＬＬＥＲ、パケットをスイッチのローカルネットワーキングスタックに送信するＬＯＣＡＬ、フローテーブル２８内の動作を実行するＴＡＢＬＥ、入力ポートからパケットを送出するＩＮ＿ＰＯＲＴ、例えば、従来のレベル２、ＶＬＡＮ及びレベル３処理を使用するスイッチによってサポートされているデフォルトの転送経路でパケットを処理するＮＯＲＭＡＬ、着信インターフェイスを除く最小の転送ツリーに沿ってパケットをフラッディングするＦＬＯＯＤ）を挙げることができる。スイッチ１４が行うことができる追加動作としては、ポートに付随する待ち行列を通じてパケットを転送する待ち行列化動作、及び（例えば、フローテーブルエントリに一致する指定された動作を有していないパケットを破棄する）破棄動作が挙げられる。スイッチ１４は、フィールド変更動作をサポートすることもできる。行うことができるフィールド変更動作の例としては、ＶＬＡＮ  ＩＤの設定（Ｓｅｔ  ＶＬＡＮ  ＩＤ）、ＶＬＡＮプライオリティの設定、ＶＬＡＮヘッダの除去、ＶＬＡＮタグの変更、イーサネット送信元ＭＡＣ（媒体アクセス制御）アドレスの変更、イーサネット宛先ＭＡＣアドレスの変更、ＩＰｖ４送信元アドレスの変更、ＩＰｖ４  ＴｏＳビットの変更、トランスポート宛先ポートの変更が挙げられる。
【００３４】
図４は、３つのフローテーブルエントリを有する例示的なフローテーブルである。これらのエントリは、ワイルドカード（例えば、記号「＊」）のフィールドを含む。特定のフィールドにワイルドカードが存在する場合、着信パケット内の特定のフィールド値に関わらず、全ての着信パケットが、対応するフィールドに対して「一致」を形成すると見なされる。追加のフィールドは、追加のパケット情報（例えば、ネットワークパケットのパケットヘッダ情報）に一致することができる。
【００３５】
図４のテーブルの１行目のエントリは、フローテーブルエントリが機能しているスイッチにイーサネットスイッチングを行うように指示する。具体的には、一致するイーサネット宛先アドレスを有する着信パケットがポート３に転送される。
【００３６】
図４のテーブルの２行目のエントリは、インターネットルーティングを行うためにスイッチをどのように構成できるかを示す（すなわち、パケットがその宛先ＩＰアドレスに基づいて転送される）。
【００３７】
図４のテーブルの３行目は、ファイアウォール機能を実行するためにスイッチをどのように構成できるかを示すエントリを含む。８０という宛先ＩＰポート値を有するパケットが受け取られると、このパケットは破棄される（すなわち、スイッチは、ポート８０のトラフィックをブロックするファイアウォールとして機能するように構成される）。
【００３８】
図４に示すタイプのフローテーブルエントリは、システムのセットアップ動作中にコントローラサーバ１８によってスイッチ１４にロードすることも、或いはコントローラサーバ１８におけるスイッチ１４などのスイッチからのパケットの受信及び処理に応答してコントローラサーバ１８からスイッチ１４にリアルタイムで提供することもできる。多くのスイッチ１４を含むネットワークでは、各スイッチに、ネットワークを介した経路を形成するのに適したフローテーブルエントリを提供することができる。
【００３９】
図５に、入出力ポート３４において受け取られたパケットを処理する際にスイッチ１４が実行できる例示的なステップを示す。ステップ７８において、スイッチ１４が、そのポートのうちの１つ（例えば、図１の入出力ポート３４のうちの１つ）においてパケットを受け取る。
【００４０】
ステップ８０において、スイッチ１４は、受け取ったパケットのフィールドをこのスイッチのフローテーブル２８内のフローテーブルエントリのフィールドと比較して一致が存在するかどうかを判定する。フローテーブルエントリ内のフィールドには、完全な値（例えば、完全なアドレス）を含むものもある。他のフィールドには、ワイルドカード（すなわち、「＊」という「無関係」を示すワイルドカード文字が記されたフィールド）を含むものもある。さらに他のフィールドには、部分的に完全なエントリ（例えば、部分的にワイルドカードになっている部分的なアドレス）を有するものもある。フィールドによっては、（例えば、ＴＣＰポート番号を１〜４０９６の値に制限することによって）範囲を使用し、実質的にこの範囲を用いて一種の部分的ワイルドカードを実装できるものもある。スイッチ１４は、受け取ったパケットとフローテーブルエントリとの間でフィールド毎の比較を行う際に、フローテーブルエントリ内の各フィールドが、一切のワイルドカードを含まない完全な値を含むか否か、ワイルドカードを伴う部分的な値を含むか否か、又はワイルドカード文字（すなわち、完全にワイルドカードになっているフィールド）を含むか否かを考慮することができる。
【００４１】
ステップ８０の動作中に、パケットのフィールドとフローテーブルエントリの対応するフィールドとの間に一致が存在しないと判定された場合、スイッチ１４は、リンク１６を介してコントローラサーバ１８にパケットを送信することができる（ステップ８４）。
【００４２】
ステップ８０の動作中に、パケットとフローテーブルエントリとの間に一致が存在すると判定された場合、スイッチ１４は、このフローテーブルエントリに関連する動作を実行して、このフローテーブルエントリの統計フィールド内のカウンタ値を更新することができる（ステップ８２）。その後、線８６によって示すように、処理はステップ７８に戻ってスイッチ１４が別のパケットを処理することができる。
【００４３】
図６は、コントローラ１８がスイッチを制御できる例示的なネットワーク１００を示す図である。コントローラ１８は、コントローラサーバとすることも、又は複数のコンピュータ装置にわたって実装される分散型コントローラとすることもできる。図６に示すように、ネットワーク１００は、スイッチＳＷ１、ＳＷ２及びＳＷ３を含むことができる。これらのスイッチは、専用スイッチ回路を用いて実装される物理的スイッチとすることも、又はソフトウェアスイッチとすることもできる。ソフトウェアスイッチの例としては、離散コンピュータ装置上（例えば、ラックベースシステム内のサーバ上）のソフトウェアを用いて実装されるハイパーバイザスイッチが挙げられる。このようなソフトウェアスイッチは、ソフトウェアスイッチを実装するコンピュータ装置の専用物理ポートに接続されたケーブルによってネットワークの残り部分に結合される（例えば、各ソフトウェアスイッチは、ソフトウェアスイッチを実装する所与のサーバの物理ポートに制限され拘束される）。
【００４４】
コントローラ１８は、制御経路６６を介してネットワーク１００のスイッチに結合することができる。コントローラ１８は、（例えば、図３のフローテーブルエントリ６８などのフローテーブルエントリを提供することによって）制御経路６６を用いてスイッチを制御することができる。
【００４５】
ネットワーク１００は、ネットワーク１００のスイッチに結合された、エンドホストＥＨ１、ＥＨ２及びＥＨ３などのエンドホストを含むことができる。図６の例では、エンドホストＥＨ１及びＥＨ３がスイッチＳＷ１のポートＰ１及びＰ２に結合され、エンドホストＥＨ２がスイッチＳＷ３のポートＰ２に結合されている。スイッチのポートは、他のスイッチのポートに結合することもできる。例えば、スイッチＳＷ１のポートＰ３は、スイッチＳＷ２のポートＰ１に結合することができ、スイッチＳＷ２のポートＰ２は、スイッチＳＷ３のポートＰ１に結合することができる。スイッチポートにおいて第１のエンドホストから受け取られたパケットは、エンドホスト間に結合されたスイッチによって第２のエンドホストに転送することができる。
【００４６】
ネットワーク管理者などのユーザが所望の動作のためにネットワーク１００を構成することは困難な場合がある。例えば、エンドホストグループ間の通信を分離又は別様に制限することが望ましい場合がある。別の例として、ネットワーク管理者がネットワークの各スイッチ及び各エンドホストについてネットワークポリシー（例えば、ルーティングルール、アクセス制御リスト、その他）を手動で構成することは非効率的な場合もある。コントローラ１８は、基本ネットワークトポロジ（例えば、物理ネットワークトポロジ）上に仮想ルータ及び仮想スイッチの論理ネットワークトポロジを実装するように構成することができる。論理ネットワークトポロジは、ネットワークの構成効率、柔軟性及び能力の改善などの利点をもたらすことができる。図７は、図６の基本ネットワーク１００から仮想ネットワークトポロジ１２０を実装するようにコントローラ１８を構成した実例である。
【００４７】
仮想ネットワークトポロジ１２０は、基本ネットワーク１００の物理的制約内におけるいずれかの所望のトポロジとすることができる（例えば、各仮想経路は、基本ネットワーク内の少なくとも１つの、場合によってはそれ以上の対応する経路を有する）。基本経路は、物理的スイッチ及び／又はソフトウェアベースのスイッチを含むことができる。
【００４８】
図７に示すように、仮想ネットワークトポロジ１２０は、ＶＳＷ１及びＶＳＷ２などの仮想スイッチ、及びＶＲ１などの仮想ルータを含むことができる。仮想スイッチは、ネットワークのエンドホストグループから形成され、エンドホストのいずれかの所望のネットワーク属性によって規定することができる。必要であれば、仮想スイッチに、異なる基本物理スイッチ又はソフトウェアスイッチに結合されたエンドホストを割り当てることもできる。仮想スイッチＶＳＷ１にはエンドホストＥＨ１及びＥＨ２を割り当てることができ、仮想スイッチＶＳＷ２にはエンドホストＥＨ３を割り当てることができる。仮想スイッチは、エンドホストと、仮想ネットワークトポロジ内の他の要素とに結合された仮想ポートを有することができる。例えば、仮想スイッチＶＳＷ１は、エンドホストＥＨ１、エンドホストＥＨ２及び仮想ルータＶＲ１に結合された、仮想ポートＶＰ１、ＶＰ２及びＶＰ３を有することができる。同様に、仮想スイッチＶＳＷ２は、エンドホストＥＨ３及び仮想ルータＶＲ１にそれぞれ結合された、仮想ポートＶＰ１及びＶＰ２を有することができる。
【００４９】
エンドホストを特徴付ける上で使用できるネットワーク属性の例としては、エンドホストが結合された物理又はハイパーバイザスイッチポート、エンドホストのハードウェアアドレス（例えば、ＭＡＣアドレス）、エンドホストのプロトコルアドレス（例えば、ＩＰアドレス）、仮想ローカルエリアネットワーク（ＶＬＡＮ）タグ、及び／又はエンドホストのその他のネットワーク属性が挙げられる。例えば、コントローラ１８は、エンドホストＥＨ１をスイッチＶＳＷ１のポートＰ１に接続されていると識別することができ、エンドホストＥＨ２をＭＡＣアドレスによって識別することができ、エンドホストＥＨ３をＩＰアドレスによって識別することができる。別の例として、スイッチＳＷ３がハイパーバイザスイッチであるシナリオでは、エンドホストＥＨ２を、エンドホストＥＨ２が結合されている論理ハイパーバイザスイッチによって識別することができる。これらの例は例示にすぎない。エンドホストを仮想スイッチに割り当てる際には、ネットワークパケットヘッダフィールド内で使用されるようなあらゆる所望のネットワーク属性、又はネットワーク属性のあらゆる所望の組み合わせを使用することができ、物理及びハイパーバイザスイッチの基本ネットワークからあらゆる所望の数の分散型仮想スイッチを生成することができる。
【００５０】
仮想スイッチは、グループ化して１又は２以上の仮想ルータを形成することができる。図７の例では、仮想スイッチＶＳＷ１及びＶＳＷ２をグループ化して仮想ルータＶＲ１を形成している。換言すれば、仮想スイッチＶＳＷ１及びＶＳＷ２のエンドホストグループは仮想ルータＶＲ１に割り当てられている。各仮想スイッチは、仮想スイッチの全てのエンドホストにブロードキャストネットワークパケットが転送されるそれぞれのブロードキャストドメインを実装する役割を果たす。ブロードキャストネットワークパケットは、ネットワークパケットを、関連するブロードキャストドメインの全てのエンドホストを宛先とするブロードキャストネットワークパケットとして識別するヘッダフィールドを有するネットワークパケットとすることができる。例えば、エンドホストＥＨ２から仮想スイッチＶＳＷ１によって受け取られたブロードキャストネットワークパケットは、仮想スイッチＶＳＷ１によって、仮想スイッチＶＳＷ１に割り当てられている他の各エンドホストに（すなわち、エンドホストＥＨ１に）転送することができる。
【００５１】
仮想ルータは、ネットワークルーティング機能を実行し、仮想スイッチの異なるブロードキャストドメインについては分離を行う。例えば、仮想ルータＶＲ１は、ブロードキャストパケットが仮想スイッチＶＳＷ１によって仮想スイッチＶＳＷ２に（及びこの逆に）転送されるのを防ぐことができる。ブロードキャストドメインは、ＩＰアドレスレンジに関して、所与の仮想ルータの各インターフェイスに異なるそれぞれのＩＰアドレスレンジが割り当てられるように規定することができる。例えば、インターフェイスＩＦ１及び仮想スイッチＶＳＷ１に第１のＩＰアドレスレンジを割り当て、インターフェイスＩＦ２及び仮想スイッチＶＳＷ２に第２のＩＰアドレスレンジを割り当てることができる。図７の例では、仮想ルータとは対照的に、仮想スイッチは、ＩＰドメインに基づくネットワークルーティング機能を全く行わない。しかしながら、必要であれば、仮想ルータを省略して、仮想スイッチが転送及びルーティング機能を実行することもできる。
【００５２】
仮想ルータが実行できるネットワークルーティング機能としては、仮想ルータのインターフェイスにおいて受け取られたネットワークパケットのヘッダを変更することが挙げられる。仮想ルータは、ネットワークパケットのＩＰヘッダの有効期間フィールドを減分することができる。仮想ルータは、送信元及び宛先ＭＡＣアドレスフィールドなどのイーサネットヘッダを、所望のブロードキャストドメインに対応するように変更することができる。例えば、仮想ルータの各インターフェイスに、それぞれのイーサネットアドレスを割り当てることができる。このシナリオでは、仮想ルータが、送信元ＭＡＣアドレスフィールドを仮想ルータのエグレス（送出）インターフェイスに一致するように書き換えることができる。仮想ルータは、宛先ＭＡＣアドレスフィールドをネクストホップアドレスに一致するように書き換えることができる。
【００５３】
コントローラ１８は、仮想ネットワークの論理ポート（例えば、分散型仮想スイッチの仮想ポート又は分散型仮想ルータのインターフェイス）においてネットワークポリシールールを適用して実施するために使用することもできる。ネットワークポリシールールは、エンドホスト間のネットワーク経路を決定するのに役立つネットワークルーティングルールを含むとともに、選択されたネットワークトラフィックを許可又はブロックするアクセス制御リストを含むことができる。ネットワークポリシールールは、ユーザによって提供することができる。図８は、コントローラ１８が実装できる例示的なアクセス制御リストを示す図である。
【００５４】
図８に示すように、アクセス制御リスト１３２は、論理ポート、エンドホスト情報及びプロトコルポートなどのネットワーク属性を識別する。一般に、アクセス制御リスト１３２には、１又は２以上の論理ポート、物理ポート及び／又はパケットヘッダフィールドなどのあらゆる所望のネットワーク属性を含めることができる。パケットヘッダフィールドは、１又は２以上のエンドホスト（例えば、送信元又は宛先エンドホスト）を識別するヘッダフィールドを含むことができる。例えば、アクセス制御リスト１３２は、送信元ＭＡＣアドレス、送信元ＩＰアドレス、宛先ＭＡＣアドレス及び／又は宛先ＩＰアドレスなどのエンドホスト識別フィールドを含むことができる。必要であれば、データベースを用いてエンドホストにマッピングできるエイリアス（例えば、文字列）を通じてエンドホストを識別することもできる。
【００５５】
コントローラ１８は、アクセス制御リスト１３２によって規定されるネットワークポリシールールを実装するフローテーブルエントリを生成することができる。図８の例では、アクセス制御リスト１３２が、仮想スイッチＶＳＷ１の論理ポートＶＰ２、エンドホストＥＨ１のＭＡＣアドレス（ＭＡＣＥＨ１）、及びプロトコルポート８０を識別する。プロトコルポート８０は、伝送制御プロトコル（ＴＣＰ）ポートとすることができる。コントローラ１８は、アクセス制御リスト１３２を処理して、仮想スイッチＶＳＷ１の論理ポートＶＰ２において受け取られた、送信元ＭＡＣアドレスＭＡＣＥＨ１及びＴＣＰプロトコルポート８０を有するネットワークパケットを破棄すべきである（すなわち、制御リスト１３２において識別されるネットワーク属性に一致するパケットを破棄すべきである）と判断することができる。仮想ネットワークトポロジ１２０は、仮想スイッチのあらゆる所望の構成、及び仮想スイッチに対するエンドホストのあらゆる所望の割り当てを有することができるので、仮想スイッチＶＳＷ１のＶＰ２などの論理ポートの使用は、ネットワーク管理者にネットワークを構成する上での柔軟性をもたらすことができる。その後、コントローラ１８は、フローテーブルエントリを生成して、アクセス制御リスト１３２を実装する基本ネットワーク１００の基本物理及び／又はハイパーバイザスイッチに提供することができる。
【００５６】
図９は、アクセス制御リスト１３２を実装する際にコントローラ１８が生成できる例示的なフローテーブルエントリである。図９に示すように、フローテーブルエントリ１４２は、送信元ＭＡＣアドレスフィールド内にエンドホストＥＨ１のＭＡＣアドレスを含み、宛先ＭＡＣアドレスフィールド内にエンドホストＥＨ２のＭＡＣアドレスを含み、ＴＣＰポートフィールド内にポート８０を含むことができる。フローテーブルエントリ１４２は、送信元ＭＡＣアドレスＭＡＣＥＨ１、宛先ＭＡＣアドレスＭＡＣＥＨ２及びＴＣＰポート８０を有する全てのパケットに一致するようにワイルドカードになっている追加の一致フィールド（図示せず）を含むこともできる。
【００５７】
アクセス制御リスト１３２を実装する際には、フローテーブルエントリ１４２を１又は２以上の物理又はハイパーバイザスイッチに提供することができる。例えば、フローテーブルエントリ１４２をスイッチＳＷ３に提供することができる。このシナリオでは、フローテーブルエントリ１４２の動作フィールドから決定されるように、エンドホストＥＨ１（すなわち、ＭＡＣアドレスＭＡＣＥＨ１を有する）からスイッチＳＷ３によって受け取られたエンドホストＥＨ２（すなわち、ＭＡＣアドレスＭＡＣＥＨ２を有する）宛ての、ＴＣＰポートが８０のあらゆるネットワークパケットを破棄することができる。アクセス制御リスト１３２は、エンドホストＥＨ３が割り当てられているＶＳＷ２の論理ポートＶＰ２において規定され、エンドホストＥＨ３は、基本ネットワークのスイッチＳＷ３のポートＰ２に接続されているので、スイッチＳＷ３は、フローテーブルエントリ１４２の好適な受信者とすることができる。しかしながら、仮想スイッチＶＳＷ２は分散型仮想スイッチであるため、コントローラ１８は、フローテーブルエントリを介してアクセス制御リスト１３２を実装するためにあらゆる所望の基本スイッチを選択することができる。例えば、コントローラ１８は、図１０のフローテーブルエントリ１４４を生成してスイッチＳＷ１に提供することができる。
【００５８】
図１０に示すように、フローテーブルエントリ１４４は、（例えば、宛先ＭＡＣアドレスＭＡＣＥＨ２を有する）エンドホストＥＨ２宛ての、ＴＣＰポートが８０の、（スイッチＳＷ１の）ポートＰ１において受け取られたネットワークパケットに一致する。エンドホストＥＨ１はスイッチＳＷ１のポートＰ１に結合されており、従ってエンドホストＥＨ１からのパケットはスイッチＳＷ１によって処理されるので、フローテーブルエントリ１４４は、スイッチＳＷ１への提供に適することができる。フローテーブルエントリ１４４は、スイッチＳＷ１に、（ポートＰ１経由で）エンドホストＥＨ１から受け取られたエンドホストＥＨ２宛てのＴＣＰポート８０上のネットワークパケットを破棄するように指示することができる。フローテーブルエントリ１４４及び１４２の各々は、基本ネットワーク１００の異なるスイッチに提供されるが、エンドホストＥＨ１がＴＣＰポート８０上でエンドホストＥＨ２と通信するのを防ぐ上でネットワークポリシールール１３２を効果的に実装することができる。必要であれば、ネットワークポリシールールを実装する際に、複数のフローテーブルエントリを異なるスイッチに提供することもできる。例えば、コントローラ１８は、アクセス制御リスト１３２を実装する際に、スイッチＳＷ１、ＳＷ２及びＳＷ３のあらゆる所望の組み合わせにフローテーブルエントリを提供することができる。
【００５９】
図１１は、コントローラ１８が実装できるネットワークポリシールールの例示的な図である。図１１に示すように、ネットワークポリシールール１５２は、仮想スイッチＶＳＷ１とＶＳＷ２との間のネットワークトラフィックをブロックすべきである旨を規定する。ネットワークポリシールール１５２は、仮想ルータＶＲ１のためのルーティングルールとして規定することができる。コントローラ１８は、ネットワークポリシールール１５２を処理して、基本ネットワーク１００のスイッチのために、仮想スイッチＶＳＷ１とＶＳＷ２との間のネットワークトラフィックをブロックするフローテーブルエントリを生成することができる。例えば、基本ネットワーク１００の１又は２以上のスイッチに、仮想スイッチＶＳＷ１のエンドホストを識別する送信元エンドホスト情報と、仮想スイッチＶＳＷ２のエンドホストを識別する宛先エンドホスト情報とを含むネットワークパケットに一致するフローテーブルエントリを提供することができる。このシナリオでは、フローテーブルエントリが、このフローテーブルエントリに一致するネットワークパケットを破棄するようにスイッチに指示することができる。
【００６０】
仮想ネットワークトポロジは、必要に応じて再規定することもでき、これによってネットワークの構成及びネットワークポリシーの実施に柔軟性がもたらされる。図１２の例に示すように、仮想ネットワークトポロジ１６２は、図７の仮想ネットワークトポロジ１２０のエンドホストＥＨ２を仮想スイッチＶＳＷ２に再割り当てすることによって生成することができる。エンドホストの再割り当ては、基本ネットワーク１００を変更することなく実行することができる（例えば、エンドホストＥＨ２をスイッチＳＷ３のポートＰ２に接続されたままにしておくことができる）。仮想ネットワークトポロジ１６２では、エンドホストＥＨ２が、仮想スイッチＶＳＷ２の仮想ポートＶＰ３に割り当てられる。
【００６１】
時間と共に変更される仮想ネットワークトポロジに適したネットワークポリシールールを維持することは困難な場合がある。図７の仮想ネットワークトポロジ１２０のコントローラ１８が図９のフローテーブルエントリ１４２を用いて図８のアクセス制御リスト１３２及び図１１のネットワークポリシールール１５２を実装するシナリオについて検討する。このシナリオでは、エンドホストＥＨ２の再割り当てを通じて仮想ネットワークトポロジ１２０を図１２のトポロジ１６２に変更した場合、アクセス制御リスト１３２はもはや有効でなくなる（例えば、アクセス制御リスト１３２は、もはやいずれのエンドホストも割り当てられていない仮想スイッチＶＳＷ１の仮想ポートＶＰ２に対して規定されているからである）。今や、エンドホストＥＨ２は仮想スイッチＶＳＷ２に接続されているので、ＴＣＰポート８０上でエンドホストＥＨ１からエンドホストＥＨ２に送信されるネットワークパケットは、ネットワークポリシールール１５２が仮想スイッチＶＳＷ１とＶＳＷ２との間の全てのネットワークトラフィックをブロックするという理由で依然としてブロックされる。従って、アクセス制御リスト１３２の所望のネットワーク動作はネットワークポリシールール１５２によって実装されるので、アクセス制御リスト１３２が無効であると識別することは困難な場合がある。
【００６２】
コントローラ１８は、数百、数千又はそれ以上ものネットワークポリシールールを実装できるので、時間と共にネットワークが変更されると、相当数のネットワークポリシーが無効になる可能性がある。コントローラ１８は、無効なネットワークポリシールール、ネットワーク変更の識別、又は他の形でのネットワーク機能のテストに役立つと思われるテスト動作を実行することができる。コントローラのテスト動作は、ネットワーク管理者などのユーザがテストルールを用いて定義することができる。図１３は、コントローラ１８に提供できる例示的なテストルール１７２を示す図である。テストルール１７２は、テスト動作を実行する際に使用することができ、従ってテスト用ルールと呼ばれることもある。
【００６３】
テストルール１７２は、テストパラメータ及び実行するテストの予想結果を含むことができる。図１３の例では、テストパラメータが、エンドホストＥＨ１がＴＣＰポート８０上でエンドホストＥＨ２に接続できるどうかをコントローラがテストすべきであることを識別している。一例として、テストパラメータは、送信元エンドホストとしてのエンドホストＥＨ１、宛先エンドホストとしてのエンドホストＥＨ２、及びＴＣＰポート８０を定めることができる。予想結果は、はい又はいいえ（例えば、真／合格又は偽／不合格）とすることができる。必要であれば、予想結果が任意の条件リスト１７４を含むこともできる。任意の条件リスト１７４は、トラバースされるスイッチ、トリガされるネットワークポリシールール、又はテストルール１７２に基づいてテストを行う際に生じる他の情報のリストを含むことができる。
【００６４】
図１４は、図１３のルール１７２などのテストルールによって定められたテストを行う際にコントローラが実行できる例示的なステップのフローチャート１８０である。
【００６５】
ステップ１８２において、コントローラは、ネットワーク構成を受け取ることができる。例えば、このネットワーク構成はユーザが定義することができ、仮想スイッチに対するエンドホストの割り当て、及び仮想ルータに対する仮想スイッチの割り当てを含むことができる。
【００６６】
ステップ１８４において、コントローラは、ネットワーク構成から論理ネットワークトポロジを生成することができる。例えば、図７の仮想ネットワークトポロジ１２０、図１２の仮想ネットワークトポロジ１６２、又はいずれかの所望の仮想ネットワークトポロジを、ネットワーク構成によって定められる通りに生成することができる。
【００６７】
ステップ１８６において、コントローラは、生成された論理ネットワークトポロジの基本トポロジを識別することができる。コントローラは、仮想ネットワークトポロジの基本となるネットワークトポロジを決定する（例えば、基本ネットワークトポロジ内のスイッチ間の接続を識別する）際に、制御経路を介して物理及びハイパーバイザスイッチと通信することができる。
【００６８】
ステップ１８８において、コントローラは、一連のテストルールを受け取ることができる。一般に、一連のテストルールはユーザが定義することができ、各テストルールは、必要に応じて１又は２以上のそれぞれのネットワークポリシーの妥当性をテストするためのテストを定めることができる。例えば、コントローラは、図８のアクセス制御リスト１３２の妥当性をテストする図１３のテストルール１７２を受け取ることができる。
【００６９】
ステップ１９０において、コントローラは、各テストルールについてテストを行うことができる。テストは、論理及び／又は物理ネットワークトポロジに基づいて行うことができる。テストは、コントローラにおけるシミュレーションを通じて、又はネットワーク内へのテストパケットの投入を通じて行うことができる。
【００７０】
図１４の例におけるステップ１８２〜１９０の順序は例示にすぎない。必要であれば、これらのステップをあらゆる所望の順序で実行してネットワークのテストを行うこともできる。例えば、ユーザが定義したテストは、ネットワーク構成中又は通常のネットワーク動作中のあらゆる時点で受け取ることができる。必要であれば、コントローラは、フローチャート１８０のステップを周期的（例えば、５ミリ秒毎、１００ミリ秒毎、１０秒毎など）に実行することもできる。
【００７１】
図１５は、シミュレーションを通じたテストルールのテストを行うためにコントローラが実行できるステップの例示的なフローチャート１９０である。フローチャート１９０のステップは、例えば図１４のステップ１９０において実行することができる。
【００７２】
ステップ１９２において、コントローラは、テストルールのテストパラメータに基づいてテストパケットを生成することができる。例えば、図１３のテストルール１７２の場合、コントローラは、ＴＣＰポート８０を用いてエンドホストＥＨ１からエンドホストＥＨ２に送信されるパケットを模倣したテストパケットを生成することができる。このシナリオでは、送信元パケットヘッダフィールドに送信元エンドホストＥＨ１の情報（例えば、エンドホストＥＨ１のＭＡＣ及び／又はＩＰアドレス）を投入し、宛先パケットヘッダフィールドに宛先エンドホストＥＨ２の情報を投入することができる。ＴＣＰポート８０などの追加のテストパラメータは、テストパケットの対応するヘッダフィールド（例えば、ＴＣＰポートヘッダフィールド）に記憶することができる。
【００７３】
ステップ１９４において、コントローラは、パケットをコントローラに転送するスイッチを刺激したパケットをコントローラ自体に送信することができる。コントローラは、スイッチが含んでいたと思われる（例えば、エンドホストからのパケットを受け取ったスイッチポートを識別する）追加情報を含むＰａｃｋｅｔ  Ｉｎメッセージとしてパケットを送信することができる。この例は例示にすぎない。一般に、ステップ１９４において、コントローラは、典型的なネットワークパケットを処理する際のネットワーク動作をシミュレートすることにより（例えば、生成されたテストパケットの処理を刺激し、又は別様にトリガすることにより）、生成されたテストパケットのテストを開始することができる。
【００７４】
ステップ１９６において、コントローラは、論理ネットワークトポロジ（例えば、図１４のステップ１８４において既にコントローラによって生成されている図７のトポロジ１２０などの論理ネットワークトポロジ）のパケットトラバーサルをシミュレートすることができる。コントローラは、パケットトラバーサルをシミュレートする際に、ネットワークパケットの送信元エンドホストと宛先エンドホストとの間の仮想ネットワークトポロジを通る仮想経路を識別することができる。コントローラは、トリガされたネットワークポリシールール、又は識別された仮想経路と別様に一致するネットワークポリシールールを識別することができる。
【００７５】
ステップ１９８において、コントローラは、物理及び／又はハイパーバイザスイッチの基本ネットワークを通る経路を識別する上で、識別された仮想経路を使用することができる。例えば、コントローラは、基本ネットワークを通る送信元エンドホストから宛先エンドホストへの経路を特定することができる。通常（例えば、コントローラの非テスト的動作中）、基本ネットワークを通る識別された経路内の物理及び／又はハイパーバイザスイッチには、（例えば、ステップ１９６において識別されたネットワークポリシールールを満たすようにパケットを転送又は破棄することによって）識別された経路を生成するようにスイッチに指示するフローテーブルエントリを提供することができる。しかしながら、コントローラは、ステップ１９６においてフローテーブルエントリを生成し、スイッチには提供しない。換言すれば、識別された経路は実装されない。
【００７６】
ステップ２００において、コントローラは、ステップ１９６及び１９８からのシミュレーション結果を予想結果と比較することができる。コントローラが図１３のテストルール１７２を実行するシナリオについて検討する。このシナリオでは、コントローラが、ＴＣＰポート８０を使用するエンドホストＥＨ１からエンドホストＥＨ２へのテストパケットを生成することができる（ステップ１９２）。その後、コントローラは、テストパケットのシミュレーションを開始することができる（ステップ１９４）。コントローラは、図７の論理ネットワークトポロジ１２０を通るテストパケットのトラバーサルをシミュレートして、仮想スイッチＶＳＷ１を通るエンドホストＥＨ１からエンドホストＥＨ２への経路を識別することができる。コントローラは、アクセス制御リスト１３２が仮想スイッチＶＳＷ１の仮想ポートＶＰ２においてテストパケットを破棄すべき旨を規定していると識別することができる（ステップ１９６）。コントローラは、図６の基本ネットワーク１００のスイッチＳＷ１、ＳＷ２及びＳＷ３を通る経路を識別し、図９及び図１０のフローテーブルエントリ１４２又は１４４などのフローテーブルエントリをスイッチに提供することなく生成することができる（ステップ１９８）。ステップ２００において、コントローラは、（例えば、アクセス制御リスト１３２に従ってテストパケットが破棄されるという）シミュレーション結果がテストルール１７２の予想結果（すなわち、エンドホストＥＨ１がＴＣＰポート８０上でエンドホストＥＨ２に接続できないようにすべきである旨）に一致すると判定することができる。
【００７７】
図７の仮想ネットワークトポロジ１２０を図１２の仮想ネットワークトポロジ１６２になるように変更し、コントローラ１８が図８のアクセス制御リスト１３２及び図１１のネットワークポリシールール１５２を実施する別のシナリオについて検討する。このシナリオでは、ステップ１９２〜１９８を以前のシナリオと同様に実行することができるが、シミュレーション結果では、ステップ１９６においてネットワークポリシールール１５２のみがトリガされたことを識別することができる。作成されたレポートを用いて、アクセス制御リスト１３２がもはや有効でない（すなわち、テストパケットはアクセス制御リスト１３２をトリガしないので）ことを識別する支援とすることができる。その後、ネットワークポリシールールの数を低減することによってコントローラ性能の改善を支援するように、アクセス制御リスト１３２を削除することができる。
【００７８】
図１６は、送信元エンドホストから宛先エンドホストに送信できるネットワークパケットの例示的な図である。図１６に示すように、ネットワークパケット２０２は、ヘッダフィールド２０４と、ネットワークを介して送信元エンドホストから宛先エンドホストに運ばれるデータとを含むことができる。ヘッダフィールドは、送信元インターネットプロトコル（ＩＰ）アドレス、宛先ＩＰアドレス、ＴＴＬフィールドなどのレイヤ３（Ｌ３）ヘッダフィールドを含むことができる。ヘッダフィールドは、送信元イーサネットアドレス、宛先イーサネットアドレス及び仮想ローカルエリアネットワーク（ＶＬＡＮ）識別子などのレイヤ２（Ｌ２）ヘッダフィールドを含むこともできる。図１６の例では、ネットワークパケット２０２が、送信元ＭＡＣアドレスとしてのエンドホストＥＨ１のＭＡＣアドレス（ＭＡＣＥＨ１）と、宛先ＭＡＣアドレスとしてのエンドホストＥＨ２のＭＡＣアドレス（ＭＡＣＥＨ２）と、ＴＣＰポート８０とを含む。ネットワークパケット２０２は、送信元エンドホストＥＨ１から宛先エンドホストＥＨ２に送信されるパケットとすることができる。同様に、ネットワークパケット２０２は、（図１５のステップ１９２において）エンドホストＥＨ１からエンドホストＥＨ２に送信されるパケットをシミュレートするようにコントローラによって生成されたテストパケットとすることもできる。
【００７９】
図１７は、コントローラがスイッチ又はコントローラ自体から受け取ることができる例示的なＰａｃｋｅｔ  Ｉｎメッセージ２０６である。Ｐａｃｋｅｔ  Ｉｎメッセージ２０６は、ネットワークパケットと、このＰａｃｋｅｔ  Ｉｎメッセージを送信したスイッチからの追加情報とを含むことができる。図１７の例では、Ｐａｃｋｅｔ  Ｉｎメッセージ２０６が、図１６のネットワークパケット２０２を含み、スイッチＳＷ１の着信スイッチポートＰ１を、ネットワークパケット２０２を受け取ったスイッチポートとして識別する。このシナリオでは、エンドホストＥＨ１からのネットワークパケット２０２がスイッチポートＰ１において受け取られたことに応答して、図６のスイッチＳＷ１がＰａｃｋｅｔ  Ｉｎメッセージ２０６をコントローラ１８に提供することができる。同様に、コントローラ１８は、ネットワークポリシールールテストを行う際に（例えば、図１５のステップ１９４において）Ｐａｃｋｅｔ  Ｉｎメッセージ２０６を生成することもできる。
【００８０】
シナリオによっては、ネットワークをトラバースするテストパケットをコントローラが完全にシミュレートすることが困難な場合もある。図６のスイッチＳＷ２がコントローラ１８によって制御されない非クライアントスイッチである（例えば、スイッチＳＷ２がコントローラクライアントを含まず、制御経路６６によってコントローラ１８に結合されず、従って制御経路を介してコントローラ１８と通信しない）シナリオについて検討する。このシナリオでは、スイッチＳＷ２がコントローラ１８と無関係に動作し、従ってコントローラ１８によるスイッチＳＷ２の動作のシミュレーションが不正確であり、誤ったテスト結果をもたらす可能性がある。ネットワークの一部がコントローラと無関係に動作するようなシナリオでは、コントローラが、テストパケットをネットワークに直接投入し、このテストパケットをスイッチがどのように転送するかを観察することによってネットワークポリシールールのテストを行うことができる。コントローラは、ネットワークに投入されたテストパケットを追跡するために、テストパケットに識別情報をタグ付けすることができる。
【００８１】
図１８は、コントローラがネットワークに投入できる例示的なタグ付きテストパケット２１０である。図１８に示すように、ネットワークパケットのヘッダフィールドにタグ２１２を挿入してタグ付きネットワークパケットパケット２１０を作成することができる。タグ２１２は、あらゆる所望のビット数で形成することができ、元々のネットワークパケットのヘッダフィールドの未使用部分に挿入することができる。例えば、タグ２１２は、ＶＬＡＮヘッダフィールド、ＩＰヘッダフィールド、ＶＬＡＮヘッダフィールド又はいずれかの所望のパケットヘッダフィールドの未使用部分に記憶することができる。
【００８２】
必要であれば、テストネットワークパケットをカプセル化して図１９に示すようなカプセル化パケット２１４を形成することもできる。例えば、ネットワークパケットは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、仮想拡張ＬＡＮ（ＶｘＬＡＮ）、ＭＡＣ−ｉｎ−ＭＡＣ、一般ルーティングのカプセル化（ＧＲＥ）、又はネットワークパケットをカプセル化するいずれかの所望のプロトコルを用いてカプセル化することができる。ネットワークパケットのカプセル化は、元々のネットワークパケットに（例えば、新たな追加のヘッダフィールドに）タグ２１６を加えることによってタグ付きネットワークパケットを生成することを含むことができる。
【００８３】
図２０は、タグ付きネットワークパケットをネットワークに投入することによってネットワークポリシールールテストを行うためにコントローラが実行できる例示的なステップのフローチャート２２０である。
【００８４】
ステップ２２２において、コントローラは、（例えば、図１５のステップ１９２と同様に）テストルールのテストパラメータに基づいてテストパケットを生成することができる。
【００８５】
ステップ２２４において、コントローラは、テストパケットに識別情報をタグ付けすることができる。例えば、コントローラは、テストパケットから、タグ付きネットワークパケット２１０又はタグ付きネットワークパケット２１４を生成することができる。
【００８６】
ステップ２２６において、コントローラは、ネットワークのスイッチに、タグ付きテストパケットがその宛先エンドホストに到達するのを防ぎながら、タグ付きテストパケットを受け取ったことに応答して情報を提供するように命令することができる。例えば、コントローラは、ネットワークパケットを通常通りに宛先エンドホストに転送することに加えて、ネットワークパケットのコピーをＰａｃｋｅｔ  Ｉｎメッセージとしてコントローラに転送するようにスイッチに命令することができる。コントローラは、宛先エンドホストが接続されているスイッチを制御することにより（例えば、タグ付きテストパケットを宛先エンドホストに転送しないようにスイッチに指示することにより）、タグ付きテストパケットがその宛先エンドホストに到達するのを防ぐようにスイッチを制御することができる。一例として、コントローラは、タグ付きネットワークパケットに一致するフローテーブルエントリをスイッチに提供して、タグ付きネットワークパケットに関連する情報を（例えば、Ｐａｃｋｅｔ  Ｉｎメッセージとして）コントローラに転送するようにスイッチに指示することができる。このシナリオでは、フローテーブルエントリが、対応するパケットヘッダフィールドにタグを含むタグ付きネットワークパケットに一致するように、対応するパケットヘッダ一致フィールドにもタグを含むことができる。
【００８７】
ステップ２２８において、コントローラは、タグ付きテストパケットの送信元エンドホストに関連するエントリスイッチ（例えば、送信元エンドホストに接続されたエントリスイッチ、又はネットワークトポロジ内で送信元エンドホストに最も近いクライアントスイッチ）を識別することができる。
【００８８】
ステップ２３０において、コントローラは、エントリスイッチにおいてタグ付きテストパケットを投入することができる。例えば、コントローラは、タグ付きテストパケットと、このタグ付きテストパケットを処理して転送する（例えば、予めコントローラが提供したフローテーブルエントリに基づいてタグ付きテストパケットを処理する）指示とを含むメッセージをエントリスイッチに送信することができる。
【００８９】
ネットワーク内のスイッチは、タグ付きネットワークパケットを転送する際に、（例えば、ステップ２２６においてコントローラから与えられた指示に従って）タグ付きネットワークパケットに関する情報をコントローラに転送することができる。コントローラは、タグ付きネットワークパケットに関する情報をスイッチから受け取り、テスト結果として記憶することができる。コントローラは、スイッチから受け取った情報を処理してテスト結果を生成することもできる。例えば、コントローラは、情報を処理して、タグ付きネットワークパケットがトラバースするスイッチを通じた経路を識別することができる。
【００９０】
ステップ２３４において、コントローラは、テスト結果をテストルール（例えば、図１３のテストルール１７２）の予想結果と比較することができる。コントローラは、テスト結果が予想結果に一致するかどうかを識別するレポートを作成することができる。必要であれば、コントローラは、ネットワークパケットがネットワークを通じてトラバースする経路（例えば、物理及び／又はハイパーバイザスイッチを通る経路）を識別するような情報を含めることもできる。
【００９１】
ある実施形態によれば、スイッチに結合されたエンドホストを有するネットワーク内のスイッチを制御するコントローラの使用方法であって、所与のネットワークポリシールールを受け取るステップと、ネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップと、を含む方法が提供される。
【００９２】
別の実施形態によれば、この方法が、エンドホストグループから仮想スイッチを生成するステップと、仮想スイッチから仮想ネットワークトポロジを生成するステップとをさらに含み、各仮想スイッチは、それぞれのエンドホストに割り当てられた仮想ポートを有し、所与のネットワークポリシールールが所与の仮想ポートに対して定められ、ネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップは、生成された仮想ネットワークトポロジに基づいてテストを行うステップを含む。
【００９３】
別の実施形態によれば、この方法が、テストパラメータと予想テスト結果とを識別するテストルールを受け取るステップをさらに含む。
【００９４】
別の実施形態によれば、生成された仮想ネットワークトポロジに基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップが、受け取ったテストルールのテストパラメータに基づいてテストパケットを生成するステップを含む。
【００９５】
別の実施形態によれば、生成された仮想ネットワークトポロジに基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップが、仮想ネットワークトポロジの仮想経路を通るテストパケットのパケットトラバーサルをシミュレートするステップを含む。
【００９６】
別の実施形態によれば、コントローラが、所与のネットワークポリシールールを含む複数のネットワークポリシールールを実装し、方法が、仮想ネットワークトポロジのパケットトラバーサルのシミュレーション中にトリガされたネットワークポリシールールを識別するステップを含む。
【００９７】
別の実施形態によれば、生成された仮想ネットワークトポロジに基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップが、仮想経路の基本経路を形成する一連のスイッチを決定するステップを含む。
【００９８】
別の実施形態によれば、生成された仮想ネットワークトポロジに基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップが、仮想経路の基本経路を実装するフローテーブルエントリを、一連のスイッチに提供することなく生成するステップを含む。
【００９９】
別の実施形態によれば、生成された仮想ネットワークトポロジに基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップが、シミュレートされたパケットトラバーサルの結果を予想結果と比較して、ネットワークが所与のネットワークポリシールールを満たすかどうかを判定するステップを含む。
【０１００】
別の実施形態によれば、テストルールの予想結果が、トリガされると予想されるネットワークポリシールールのリストを含み、シミュレートされたパケットトラバーサルの結果を予想結果と比較して、ネットワークが所与のネットワークポリシールールを満たすかどうかを判定するステップは、ネットワークポリシールールのリストをトリガされたネットワークポリシールールと比較するステップを含む。
【０１０１】
別の実施形態によれば、生成された仮想ネットワークトポロジに基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップが、テストパケットからタグ付きテストパケットを生成するステップと、タグ付きテストパケットをネットワークに投入するステップと、テストルールの予想結果、及びスイッチから受け取ったタグ付きテストパケットに関する情報に基づいて、ネットワークが所与のネットワークポリシールールを満たすかどうかを判定するステップとを含む。
【０１０２】
別の実施形態によれば、生成された仮想ネットワークトポロジに基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するテストを行うステップが、タグ付きテストパケットに関する情報をコントローラに送信するようにスイッチに指示する、スイッチがタグ付きテストパケットをタグ付きテストパケットの宛先エンドホストに転送するのを防ぐフローテーブルエントリをスイッチに提供するステップと、スイッチからの情報及びテストルールの予想結果に基づいてネットワークが所与のネットワークポリシールールを満たすかどうかを判定するステップとを含む。
【０１０３】
ある実施形態によれば、スイッチに結合されたエンドホストを有するネットワーク内のスイッチを制御するコントローラの使用方法であって、ネットワークのためのネットワークトポロジ情報を維持するステップと、ユーザが定義したテストルールを受け取るステップと、ユーザが定義したテストルールに基づいてテストパケットを生成するステップと、ネットワークトポロジ情報に基づいてテストパケットを処理することにより、ユーザが定義したテストルールをネットワークが満たすかどうかを判定するステップと、を含む方法が提供される。
【０１０４】
別の実施形態によれば、この方法が、エンドホストグループから仮想スイッチを生成するステップをさらに含み、ネットワークトポロジ情報は、スイッチのためのネットワークトポロジ情報と、仮想スイッチのための仮想ネットワークトポロジ情報とを含む。
【０１０５】
別の実施形態によれば、ユーザが定義したテストルールが、予想結果と、送信元エンドホスト及び宛先エンドホストを識別するテストパラメータとを含み、テストパケットは、ユーザが定義したテストルールの送信元エンドホスト及び宛先エンドホストを識別し、テストパケットを処理するステップは、ネットワークトポロジ情報に基づいて、ネットワークを通じた送信元エンドホストから宛先エンドホストへのネットワークパケットのトラバーサルをシミュレートするステップを含む。
【０１０６】
別の実施形態によれば、ユーザが定義したテストルールをネットワークが満たすかどうかを判定するステップが、シミュレートしたネットワークパケットのトラバーサルが、ユーザが定義したテストルールの予想結果に一致するかどうかを判定するステップを含む。
【０１０７】
ある実施形態によれば、ネットワーク内のスイッチを制御するコントローラの使用方法であって、ユーザが定義したテストルールを受け取るステップと、ユーザが定義したテストルールに基づいてタグ付きテストパケットを生成するステップと、タグ付きテストパケットをネットワークに投入するステップと、を含む方法が提供される。
【０１０８】
別の実施形態によれば、タグ付きテストパケットを生成するステップが、テストパケットを生成するステップと、テストパケットのヘッダフィールドに識別情報を挿入してタグ付きテストパケットを生成するステップとを含む。
【０１０９】
別の実施形態によれば、タグ付きテストパケットを生成するステップが、テストパケットを生成するステップと、識別情報を用いてテストパケットをカプセル化してタグ付きテストパケットを生成するステップとを含む。
【０１１０】
別の実施形態によれば、この方法が、タグ付きテストパケットを受け取ったことに応答してテストパケットに関する情報を提供するようにスイッチを制御するステップと、スイッチによって提供された情報に基づいて、タグ付きテストパケットがトラバースした経路を識別するステップとを含む。
【０１１１】
別の実施形態によれば、ユーザが定義したテストルールが予想結果を含み、方法は、識別された経路に基づいて、ユーザが定義したテストルールの予想結果をネットワークが満たすかどうかを判定するステップを含む。
【０１１２】
上記の説明は、本発明の原理を例示したものにすぎず、当業者であれば、本発明の範囲及び思想から逸脱することなく様々な変更を行うことができる。
【符号の説明】
【０１１３】
１９２  テストパラメータに基づいてテストパケットを生成
１９４  Ｐａｃｋｅｔ  Ｉｎメッセージとして自身にパケット送信
１９６  論理ネットワークトポロジのパケットトラバーサルをシミュレートするとともに、シミュレーション中にトリガされるネットワークポリシールールを識別
１９８  仮想経路及び基本ネットワークトポロジから基本経路を識別し、識別された経路を実装しない（例えば、フローテーブルエントリを生成）
２００  シミュレーション結果を予想結果と比較してレポートを作成
【図１】
0006302064.tif 000002
【図２】
0006302064.tif 000003
【図３】
0006302064.tif 000004
【図４】
0006302064.tif 000005
【図５】
0006302064.tif 000006
【図６】
0006302064.tif 000007
【図７】
0006302064.tif 000008
【図８】
0006302064.tif 000009
【図９】
0006302064.tif 000010
【図１０】
0006302064.tif 000011
【図１１】
0006302064.tif 000012
【図１２】
0006302064.tif 000013
【図１３】
0006302064.tif 000014
【図１４】
0006302064.tif 000015
【図１５】
0006302064.tif 000016
【図１６】
0006302064.tif 000017
【図１７】
0006302064.tif 000018
【図１８】
0006302064.tif 000019
【図１９】
0006302064.tif 000020
【図２０】
0006302064.tif 000021