(57)【特許請求の範囲】
【請求項１】
スイッチのネットワークを介してパケットソースからパケット行先へパケットを転送する方法であって、スイッチはポートを含み、ポートのグループが各バーチャルスイッチを形成し、
コントローラにより、パケット行先及びパケットソースを識別するパケットからの情報から、パケットソースに関連した第１のバーチャルスイッチからパケット行先に関連した第２のバーチャルスイッチへ至る前記バーチャルスイッチを通るバーチャル経路を識別する処理と、
コントローラにより、前記バーチャル経路及びネットワークポリシーに基づいてパケットソースからパケット行先へ至る前記スイッチを通るパケット転送経路を識別する処理と、
コントローラにより、前記パケット転送経路における前記各バーチャルスイッチにコントロールメッセージを送信することによって前記パケット転送経路を生成する処理であって、その結果、前記パケットが前記パケットソースから前記パケット行先へ転送される当該処理と、
を含む方法。
【請求項２】
パケット転送経路を識別する前記処理は、前記ネットワークポリシーに少なくとも一部分基づいてフローテーブルエントリーを発生することを含み、
前記スイッチを通るパケット転送経路となるように前記スイッチを構成するために前記スイッチの少なくとも幾つかに前記フローテーブルエントリーを与える処理を更に含む、請求項１に記載の方法。
【請求項３】
パケット転送経路を識別する前記処理は、前記スイッチの少なくとも所与の１つに関連したネットワークスイッチ能力を識別することを含み、
前記ネットワークスイッチ能力を識別することは、前記スイッチの所与の１つがパケットのフィールドを変更できるかどうか決定することを含む、請求項１に記載の方法。
【請求項４】
前記ネットワークポリシーは、少なくとも幾つかのパケットをドロップすべきであることを明示し、
前記パケット転送経路を生成する処理は、前記スイッチの少なくとも所与の１つに対して、パケットをドロップするようにその所与の１つのスイッチに指令するフローテーブルエントリーを発生することを含む、請求項１に記載の方法。
【請求項５】
前記ネットワークポリシーは、パケットソースからパケット行先へ前記パケット転送経路に沿ってパケットが流れることを許すべきであることを明示し、
前記パケット転送経路を生成する処理は、前記パケット転送経路内のスイッチに対して、パケットソースからパケット行先へパケットを転送するためのフローテーブルエントリーを発生することを含む、請求項１に記載の方法。
【請求項６】
複数のネットワークプロトコルのどれがパケットに関連しているか識別する処理と、
どのプロトコルがパケットに関連していると識別されたかに基づいて複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別する処理と、
を更に含む請求項１に記載の方法。
【請求項７】
複数のネットワークポリシーのどれがパケットソースに関連しているか決定することにより複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別する処理を更に含む、請求項１に記載の方法。
【請求項８】
複数のネットワークポリシーのどれがパケット行先に関連しているか決定することにより複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別することを含む、請求項１に記載の方法。
【請求項９】
前記第１のバーチャルスイッチは、少なくとも２つの前記スイッチからのポートを含む、請求項１に記載の方法。
【請求項１０】
前記第１のバーチャルスイッチは、複数の前記スイッチのうちの所与の１つから、前記ポートの全てではないが幾つかのポートを含み、且つ複数の前記スイッチの付加的な１つからの少なくとも幾つかのポートを含む、請求項１に記載の方法。
【請求項１１】
前記パケットソースは、ネットワークアドレスを有し、
前記ネットワークアドレスに基づき前記第１のバーチャルスイッチに対してポートのグループにどのポートを含ませるか動的に決定する処理を更に含む、請求項１に記載の方法。
【請求項１２】
前記コントローラにより、前記コントローラにより受け取られたユーザ入力に基づいて前記ポートのグループの各々にどのポートを含ませるか決定する処理を更に含む、請求項１に記載の方法。
【請求項１３】
スイッチのネットワークを介してパケットソースからパケット行先へパケットを転送する方法であって、スイッチは、ポートを含み、ポートのグループが各バーチャルスイッチを形成し、
コントローラにより、パケットを受け取る処理と、
コントローラにより、パケットソースを識別するパケットからの情報に基づきバーチャルスイッチの中から進入バーチャルスイッチを識別する処理と、
コントローラにより、パケット行先を識別するパケットからの情報に基づきバーチャルスイッチの中から退出バーチャルスイッチを識別する処理と、
コントローラにより、前記パケットソースから前記パケット行先へ前記パケットが転送されるようにするため複数の前記バーチャルスイッチを制御する処理と、
が実行される方法。
【請求項１４】
前記コントローラにより、前記進入バーチャルスイッチから前記退出バーチャルスイッチへ至るバーチャル経路を識別する処理を更に含む、請求項１３に記載の方法。
【請求項１５】
前記コントローラにより、複数のネットワークポリシーのうちのどのネットワークポリシーを前記バーチャル経路に適用するか識別する処理を更に含む、請求項１４に記載の方法。
【請求項１６】
前記コントローラにより、前記識別されたネットワークポリシー及び前記識別されたバーチャル経路に基づき前記スイッチを通るパケット転送経路を生成する処理を更に含む、請求項１５に記載の方法。
【請求項１７】
前記コントローラにより、前記識別されたネットワークポリシーをパケットに適用すべきところの前記ポートの所与の１つを識別する情報をユーザから受け取る処理を更に含む、請求項１４に記載の方法。
【請求項１８】
スイッチのネットワークを介してパケットソースからパケット行先へパケットを転送する方法であって、スイッチは、ポートを含み、ポートのグループが各バーチャルスイッチを形成し、
コントローラにより、ポートのどのグループが各バーチャルスイッチに関連しているか識別する情報をユーザから受け取る処理と、
コントローラにより、複数のネットワークポリシーを識別する情報をユーザから受け取る処理と、
コントローラにより、パケット行先及びパケットソースを識別するパケットからの情報から、パケットソースに関連した第１のバーチャルスイッチからパケット行先に関連した第２のバーチャルスイッチへ至る前記バーチャルスイッチを通るバーチャル経路を識別する処理と、
コントローラにより、前記バーチャル経路及び前記複数のネットワークポリシーの中からのネットワークポリシーに基づいてパケットソースからパケット行先へ至る前記バーチャルスイッチを通るパケット転送経路を識別する処理と、
コントローラにより、前記パケット転送経路を生成するために複数の前記バーチャルスイッチを制御する処理であって、前記パケットが前記パケットソースから前記パケット行先へ転送される当該処理と、
が実行される方法。
【請求項１９】
パケットの情報から、複数のネットワークプロトコルのどれがパケットに関連しているか識別する処理と、
プロトコルのどれがパケットに関連していると識別されたかに基づき複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別する処理と、
を更に含む請求項１８に記載の方法。
【請求項２０】
複数のプロトコルポートのどれがパケットに関連しているか識別する情報をパケットから得る処理と、
プロトコルポートのどれがパケットに関連しているかに基づき複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別する処理と、
を更に含む請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークに関するもので、より詳細には、通信ネットワークを介してネットワークパケットを転送することに関する。
【０００２】
本出願は、２０１１年９月２０日に出願された米国特許出願第１３／２３７，８０６号の優先権を主張するもので、これは、参考としてここにそのまま援用される。
【背景技術】
【０００３】
インターネット及びインターネットに接続されたローカルデータネットワークのようなパケットベースネットワークは、ネットワークスイッチを備えている。ネットワークスイッチは、パケットソースからパケット行先へパケットを転送するのに使用される。パケットは、時々、フレームとも称される。
【０００４】
ある売主のスイッチを、別の売主の装置を使用してコントロールすることは困難であるか又は不可能である。これは、ある売主のスイッチ装置が、別の売主のスイッチ装置とは異なるオペレーティングシステム、及びコントロール手順セットを使用しているからである。異なる形式のスイッチプラットホームをコントロールすることに関連した課題に対処するため、クロスプラットホームプロトコルが開発された。このプロトコルは、互換性のないスイッチを集中的にコントロールできるようにする。
【０００５】
ネットワークのスイッチにはクロスプラットホームコントローラクライアントが含まれる。コントローラクライアントは、ネットワーク経路を経てそれに対応するコントローラサーバーと通信することができる。コントローラクライアントは、種々のスイッチハードウェアにおいて実施されるので、互換性のないスイッチ装置を単一のコントローラでコントロールすることができる。
【０００６】
コントローラクライアントが実施される各ネットワークスイッチは、そのスイッチによりパケットをどのように転送するか指定するエントリーをもつフローテーブルを含む。コントローラサーバーは、データ経路を生成するようにネットワークスイッチのフローテーブルを変更することによりネットワークを介してトラフィックをルーティングする。例えば、コントローラは、望ましい経路に関連した各ネットワークスイッチと通信して、パケットソースからパケット行先へデータパケットをルーティングする。
【０００７】
コントローラサーバーは、ネットワークを通るネットワークパケットのフローをコントロールするネットワークポリシーを実施する。例えば、コントローラサーバーは、選択されたパケットソースとパケット行先との間のネットワークトラフィックを遮ることができる。多数のスイッチ（例えば、数十、数百、数千又はそれ以上のスイッチ）を含むネットワークではネットワークポリシーを実施することが困難である。というのは、各ネットワークポリシーが多数のネットワークスイッチのフローテーブルに対する変更を必要とするからである。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、通信ネットワークにネットワークポリシーを適用するための改良された構成を提供できることが望まれる。
【課題を解決するための手段】
【０００９】
ネットワーク接続を経て結合されたネットワークスイッチからパケットベースネットワークが形成される。ネットワークスイッチは、コントローラクライアントを含む。コントローラクライアントは、ネットワークを介して流れるパケットのための転送経路を形成するように構成される。１つの適当な構成では、コントローラサーバーを使用して、コントローラクライアントとの通信によりネットワークスイッチを構成する。
【００１０】
ネットワークのスイッチは、バーチャルスイッチを形成するようにグループ化される。例えば、ネットワークアドミニストレータは、各バーチャルスイッチに含ませるポートを識別するユーザ入力をコントローラサーバーに与える。含まれるポートは、ネットワークアドレスのようなエンドホスト識別に基づいて動的に決定される。バーチャルスイッチは、複数のスイッチ又はスイッチの部分から選択されたリソースを含む。例えば、バーチャルスイッチは、複数のスイッチから選択されたポートを含む。バーチャルスイッチは、リソースが指定されるインターフェイスを含む。ネットワークアドミニストレータは、コントローラサーバーを使用して、各バーチャルスイッチ形成のためにどのポートをグループ化するか調整し、ネットワークアドミニストレーションタスクを容易にする。例えば、アドミニストレータは、エンドホストの第１セットに関連したポートのグループを第１のバーチャルスイッチに指定し、そしてエンドホストの第２セットに関連したポートのグループを第２のバーチャルスイッチに指定する。次いで、アドミニストレータは、バーチャルスイッチを通りバーチャル経路に流れるパケットトラフィックに適用すべきネットワークポリシーを定義する。ネットワークポリシーは、バーチャルスイッチの選択されたインターフェイスに適用される。
【００１１】
ネットワークのスイッチによりパケットが受け取られると、コントローラサーバーは、パケットに関連した情報を使用して、どのネットワークポリシーをネットワークパケットに適用すべきか決定する。パケットに関連した情報は、パケットソース及び行先アドレスと、どのプロトコルポートがパケットに関連しているかと、どのネットワークプロトコルがパケットに関連しているかと、他のパケット情報とを含む。ネットワークポリシーは、「パケットのドロップ」、「パケットの許可」、「パケットの変更」、及び他のポリシーのようなポリシーを含む。
【００１２】
コントローラサーバーは、受け取ったパケットに関連したバーチャルスイッチを介してのバーチャル経路を識別する。例えば、コントローラサーバーは、パケットソースからバーチャルスイッチのインターフェイスを介してパケット行先へ至るバーチャル経路を識別する。バーチャル経路は、ネットワークアドミニストレータによりネットワークポリシーが適用されたインターフェイスを含む。コントローラサーバーは、識別されたバーチャル経路及び識別されたバーチャルポリシーに基づいてパケットのための全ネットワークポリシーを定義する。識別されたバーチャル経路及び識別された全ネットワークポリシーに基づいて、コントローラサーバーは、バーチャル経路を、その識別された全ネットワークポリシーを満足する適当なネットワークスイッチを通る対応ネットワークスイッチ転送経路へ変換する。コントローラサーバーは、スイッチがその受け取ったパケットをネットワークスイッチ転送経路に沿って転送できるようにネットワークのスイッチを構成する。例えば、コントローラサーバーは、適当なパケット転送オペレーションを遂行するようにスイッチを構成するフローテーブルー又は他の情報をスイッチに与える。
【００１３】
コントローラサーバーは、バーチャルスイッチを形成するためにユーザによりグループ化されるポートを各々含むスイッチのネットワークを介してパケットソースからパケット行先へパケットを転送するのに使用される。コントローラサーバーは、所与のパケットの情報からの所与のパケットに関連したパケットソース及びパケット行先（例えば、ソースアドレス及び行先アドレス）を識別するのに使用される。パケットソース及び行先に関するこの情報を使用して、コントローラサーバーは、バーチャルスイッチを通るバーチャル経路を識別する。バーチャル経路は、複数のバーチャルスイッチを通過する。例えば、バーチャル経路は、（他の考えられるバーチャルスイッチの中でも）パケットソースに関連した第１のバーチャルスイッチ及びパケット行先に関連した第２のバーチャルスイッチを通る。バーチャル経路を識別した後に、コントローラサーバーは、その識別されたバーチャル経路及びネットワークポリシーを使用して、パケットソースからネットワークのスイッチを介してパケット行先へ至るパケット転送経路を生成する。
【００１４】
パケット転送経路を形成するために、コントローラサーバーは、全ネットワークポリシーを実施するようにネットワークの幾つかのスイッチを選択的に構成する。このように構成されたスイッチは、そのスイッチがパケットを変更できるか又はリダイレクションできるか、等のスイッチ能力に基づいて選択される。
【００１５】
本発明の更に別の特徴、その特性及び種々の効果は、添付図面及び以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態によりコントローラ及びパケット転送システムを備えたネットワークを例示する図である。
【図２】本発明の一実施形態によりパケット処理エンジンを実行するマイクロプロセッサベースの装置を使用してパケット転送システムをどのように実施するか示す図である。
【図３】本発明の一実施形態によるパケット転送システム及びそれに関連したコントローラを示す図で、そのパケット転送システムがコントロールユニット及び関連スイッチング集積回路を含む構成を示す。
【図４】本発明の一実施形態により、パケット転送システムがマスター及びスレーブコントローラを有し、且つコントローラサーバーがリモートコンピューティング装置で実施されるか又はパケット転送システムのラインカードで実施されるネットワークを示す図である。
【図５】本発明の一実施形態によりネットワーク接続を経て通信するコントローラサーバー及びコントローラクライアントを示す図である。
【図６Ａ】本発明の一実施形態により、パケット処理システムにより使用される形式のフローテーブルを例示する図である。
【図６Ｂ】本発明の一実施形態により、パケット処理システムにより使用される形式のフローテーブルを示す図で、フローテーブルのフローテーブルーに基づいて遂行される３つの形式のパケット転送を示す。
【図６Ｃ】本発明の一実施形態により、特定アドレスをもつパケットがスイッチの第３の物理的ポートへ転送されるフローテーブルを例示する図である。
【図６Ｄ】本発明の一実施形態により、特定アドレスをもつパケットがスイッチの第５の物理的ポートへ転送されるフローテーブルを例示する図である。
【図７】本発明の一実施形態によるパケット処理システムにおけるパケット処理に含まれるステップを示すフローチャートである。
【図８】本発明の一実施形態により第１及び第２のエンドホスト間にネットワークスイッチ転送経路を生成するためにコントローラクライアントと通信するコントローラサーバーをもつネットワークを示す図である。
【図９】本発明の一実施形態によりネットワークリソース及びエンドホストのサブセットから各々形成されたバーチャルスイッチをもつバーチャルスイッチネットワークを示す図である。
【図１０Ａ】本発明の一実施形態によりバーチャルスイッチネットワークに適用されるネットワークポリシーを例示する図である。
【図１０Ｂ】本発明の一実施形態によりバーチャルスイッチネットワークに適用されるバーチャルインターフェイスポリシーの第１セットを例示する図である。
【図１０Ｃ】本発明の一実施形態によりバーチャルスイッチネットワークに適用されるバーチャルインターフェイスポリシーの第２セットを例示する図である。
【図１０Ｄ】本発明の一実施形態によりバーチャルインターフェイスポリシーのセットに対応するフローテーブルエントリーを例示する図である。
【図１１】本発明の一実施形態により、バーチャルネットワークを生成し、そしてその生成されたバーチャルネットワークにバーチャルネットワークポリシーを適用するためにコントローラサーバーを使用して遂行されるステップを例示するフローチャートである。
【図１２】本発明の一実施形態により、バーチャルネットワークポリシーをそれに対応する物理的ネットワークに適用するためにコントローラサーバーにより遂行されるステップを例示するフローチャートである。
【図１３】本発明の一実施形態により、フローテーブルエントリーベースのバーチャルインターフェイスポリシーを生成するためにコントローラサーバーを使用して遂行されるステップを例示するフローチャートである。
【図１４】本発明の一実施形態によりネットワークのパケット転送システムに分散されるコントローラを例示する図である。
【発明を実施するための形態】
【００１７】
インターネットや、インターネットに結合されたローカル及び地域ネットワークのようなネットワークは、パケットベーススイッチに依存する。ここでネットワークスイッチとも称されるそれらのスイッチ、パケット処理システム、或いはパケット転送システムは、アドレス情報に基づいてパケットを転送する。このように、パケットソースにより送信されるデータパケットは、パケット行先へ配送される。ネットワークの用語では、パケットソース及び行先は、エンドホストとも称される。エンドホストは、例えば、パーソナルコンピュータ、サーバー、及び他のコンピューティング装置である。
【００１８】
ネットワークスイッチは、その能力の範囲が、比較的小型のイーサネットスイッチ及びワイヤレスアクセスポイントから、複数のラインカード、冗長電源及びスーパーバイザー能力を含む大型のラックベースシステムまでの範囲である。ネットワークが複数の売主からの装置を含むことは一般的でない。異なる売主からのネットワークスイッチは、パケット転送ネットワークを形成するように相互接続できるが、それらのオペレーティングシステムとコントロールプロトコルとの間に互換性がないため集中形態で管理することが困難である。
【００１９】
このように潜在的に互換性がないことは、共通のクロスプラットホームコントロールモジュール（ここではコントローラクライアントとも称される）を各ネットワークスイッチに合体することで克服できる。集中型クロスプラットホームコントローラサーバーは、各ネットワークリンクを経て各コントローラクライアントと相互作用する。クロスプラットホームコントローラサーバー及びそれに対応するコントローラクライアントを使用することで、潜在的に異種のネットワークスイッチ装置を集中管理できるようになる。
【００２０】
一例としてここに説明する１つの例示的な構成では、図１のコントローラサーバー１８のような１つ以上のコントローラサーバーにより集中型コントロールが行われる。コントローラサーバー１８は、スタンドアローンコンピュータ、コンピュータのクラスター、複数の位置間に分散されたコンピュータのセット、ネットワークスイッチ内に埋め込まれたハードウェア、又は他の適当なコンピューティング装置１２において実施される。コントローラサーバー１０は、単一コンピュータ上で単一プロセスとして実行されてもよいし、又は冗長性のために多数のホスト間に分散されてもよい。分散構成の使用は、予期せぬネットワーク分断（例えば、２つのキャンパス間のネットワークリンクが中断する事態）に対する柔軟性をネットワーク１０に与える上で助けとなる。
【００２１】
分散型コントローラ構成では、コントローラノードは、コントローラ内プロトコルを使用して情報を交換する。例えば、新たなエンドホストが、第１のコントローラノードのみに接続されたネットワークハードウェア（例えば、スイッチ）に接続する場合には、その第１のコントローラノードは、コントローラ内プロトコルを使用して、他のコントローラノードに、新たなエンドホストの存在を通知する。必要に応じて、スイッチ又は他のネットワークコンポーネントが多数のコントローラノードに接続される。単一のコントローラサーバーを使用して関連スイッチのネットワークをコントロールする構成が、一例としてここに説明される。
【００２２】
図１のコントローラサーバー１８は、ネットワーク１０のトポロジーに関する情報を収集する。例えば、コントローラサーバー１８は、ネットワーク１０のトポロジーを発見するためにネットワークを介して「リンクレイヤディスカバリープロトコル」（ＬＬＤＰ）プローブパケットを送信する。コントローラサーバー１８は、ネットワークトポロジーに関する情報及びネットワーク装置の能力に関する情報を使用して、ネットワークを介して流れるパケットのための適当な経路を決定する。適当な経路が識別されると、コントローラサーバー１８は、必要に応じてネットワークを介してパケットが流れるよう保証するために、対応する設定データをネットワーク１０のハードウェアへ送信する。このようなネットワーク構成オペレーションは、システム設定オペレーション中に行われてもよいし、バックグランドにおいて連続的に行われてもよい、或いは新たに送信されるデータパケット（即ち、既存の経路が確立されていないパケット）の出現に応答して行われてもよい。
【００２３】
コントローラサーバー１８は、ネットワーク構成ルール２０を実施するために使用される。ルール２０は、種々のネットワークエンティティにどのサービスが利用できるか指定する。一例として、ルール２０は、ネットワーク１０のどのユーザ（又はユーザの形式）が特定のサーバーにアクセスできるか指定する。ルール２０は、例えば、コンピューティング装置１２のデータベースに維持される。
【００２４】
コントローラサーバー１８、及び各ネットワークスイッチ１４のコントローラクライアント３０は、ネットワークリンク１６を経て通信するためにネットワークプロトコルスタックを使用する。
【００２５】
各スイッチ（パケット転送システム）１４は、入力／出力ポート３４を有する。ケーブルを使用して装置の断片をポート３４に接続する。例えば、パーソナルコンピュータ、ウェブサーバー及び他のコンピューティング装置のようなエンドホストがポート３４に差し込まれる。又、ポート３４を使用して、１つのスイッチ１４を他のスイッチ１４に接続することもできる。
【００２６】
パケット処理回路３２は、１つのポート３４から別のポート３４へパケットを転送するのに使用されると共に、到来するパケットに対して他の適当なアクションを遂行するのにも使用される。パケット処理回路３２は、専用高速スイッチ回路のような１つ以上の集積回路を使用して実施され、そしてハードウェアデータ経路として働く。必要に応じて、コントロールユニット２４で実行されるパケット処理ソフトウェア２６は、ソフトウェアデータ経路を実施するのに使用される。
【００２７】
コントロールユニット２４は、コントロールソフトウェアを記憶し及び実行するための処理及びメモリ回路（例えば、１つ以上のマイクロプロセッサ、メモリチップ、及び他のコントロール回路）を備えている。例えば、コントロールユニット２４は、パケット処理ソフトウェア２６のようなソフトウェアを記憶し及び実行し、フローテーブル２８を記憶し、そしてコントローラクライアント３０のオペレーションをサポートするのに使用される。
【００２８】
コントローラクライアント３０及びコントローラサーバー１８は、ＯｐｅｎＦｌｏｗプロトコルのようなネットワークスイッチプロトコルに準拠する（例えば、ＯｐｅｎＦｌｏｗスイッチ仕様書バージョン１.０.０を参照）。コントローラクライアント３０間の１つ以上のクライアントは、他のプロトコル（例えば、簡単なネットワークマネージメントプロトコル）にも準拠する。ＯｐｅｎＦｌｏｗプロトコル又は他の適当なプロトコルを使用して、コントローラサーバー１８は、入力／出力ポート３４からの到来するパケットをスイッチ１４がどのように処理すべきか決定するデータをコントローラクライアント３０に与える。
【００２９】
１つの適当な構成では、コントローラサーバー１８からのフローテーブルデータは、フローテーブル２８のようなフローテーブルに記憶される。フローテーブル２８のエントリーは、スイッチ１４を構成するのに使用される（例えば、パケット処理回路３２及び／又はパケット処理ソフトウェア２６の機能）。典型的なシナリオでは、フローテーブル２８は、フローテーブルエントリーのためのキャッシュ記憶装置として働き、そしてそれらのフローテーブルエントリーの対応するバージョンが、パケット処理回路３２の回路により維持される設定内で埋め込まれる。しかしながら、これは、単なる例示に過ぎない。フローテーブル２８は、スイッチ１４のフローテーブルエントリーのための排他的記憶装置として働くか、又はパケット処理回路３２内のフローテーブル記憶リソースのために省略される。一般的に、フローテーブルエントリーは、適当なデータ構造（例えば、１つ以上のテーブル、リスト、等）を使用して記憶される。明瞭化のために、フローテーブル２８のデータ（コントロールユニット２４のデータベースに維持されるか又はパケット処理回路３２の構成内に埋め込まれる）は、フローテーブル形成エントリー（例えば、フローテーブル２８の行）と称される。
【００３０】
スイッチ１４が到来パケットをどのように処理するか決定するデータを記憶するフローテーブル２８の例は、単なる例示に過ぎない。ネットワークパケットをどのように転送するか判断する上でパケット転送システム１４の助けとなるように、パケット転送判断エンジンが使用される。例えば、パケット転送判断エンジン２８は、ネットワークパケットの属性に基づいて（例えば、ネットワークプロトコルヘッダに基づいて）ネットワークパケットを所定のポートへ転送するようにパケット転送システム１４に指令する。
【００３１】
必要に応じて、スイッチ１４は、コントロールソフトウェアを実行すると共に図２のパケット処理回路３２を省略する汎用処理プラットホームを使用して実施されてもよい。この形式の構成が図２に示されている。図２の例示的構成に示すように、コンピューティング装置１２のコントローラサーバー１８は、ネットワークリンク１６を経てスイッチ（パケット転送システム）１４のコントローラクライアント３０と通信する。コントローラサーバー１８は、例えば、フローテーブル２８に維持されたコントローラクライアント３０へフローテーブルエントリーを搬送する。パケット処理ソフトウェア４０は、ネットワークインターフェイス３８を使用して、パケット（例えば、ポー他３４を使用して送信及び受信されるパケット）を転送し、さもなければ、処理する。ネットワークインターフェイス３８は、（一例として）スイッチ１４のシステムボードへプラグインされる１つ以上のネットワークインターフェイスカードを使用して実施される。
【００３２】
図１のネットワークスイッチ１４のようなネットワークスイッチは、１つ以上の高速スイッチング集積回路（スイッチＩＣ）に結合されたコントロール回路を使用して実施される。この形式の構成が図３に示されている。図３に示すように、コンピューティング装置１２のコントローラサーバー１８は、経路１６を経てネットワークスイッチ１４と通信する。スイッチ１４は、処理回路２４、及びスイッチＩＣ３２−１・・・スイッチＩＣ３２−Ｎのような１つ以上の関連スイッチＩＣ３２を備えている。コントロール回路２４は、例えば、マイクロプロセッサ及びメモリをベースとする。スイッチＩＣ３２−１・・・３２−Ｎは、高速度でパケット処理タスクを取り扱うことのできる専用スイッチング回路である。例えば、コントロール回路２４は、５００ＭＨｚマイクロプロセッサをベースとし、そしてスイッチＩＣ３２−１・・・３２−Ｎは、（一例として）１−１０Ｇｂｐｓの関連データレートを各々有する４８の入力／出力ポート３４からのデータを取り扱うことができる。
【００３３】
図１のネットワークスイッチ１４を実施するのに使用できる別の例示的スイッチアーキテクチャーが図４に示されている。図４の例では、スイッチ（パケット転送システム）１４は、プロセッサ２４−１のようなマスタープロセッサと、スレーブプロセッサ２４−２のような１つ以上の関連スレーブプロセッサとを備えている。スイッチＩＣ３２と、プロセッサ２４−２のようなスレーブプロセッサとは、ラインカード４８のようなラインカードにおいて実施される。ラインカード５０のような１つ以上のラインカードは、処理回路（例えば、マイクロプロセッサ及びメモリ）を含む。ラインカード４８及び５０は、バックプレーン５２を使用して相互接続される。
【００３４】
図４に示す形式の構成では、コントローラサーバーは、ラインカードの処理リソースを使用して実施される。例えば、コントローラサーバーは、図４のコントローラサーバー１８−Ｂで示されたようにラインカード５０において実施される。必要に応じて、コントローラサーバーは、コンピューティング装置１２において（例えば、図４のコントローラサーバー１８−Ａとして）実施されてもよい。コントローラサーバー１８−Ａ又はコントローラサーバー１８−Ｂは、プロセッサ２４−１及び／又は２４−２のようなプロセッサを使用して実施されるコントローラクライアント３０と通信する。コントローラサーバー１８−Ａとコントローラクライアントとの間の通信は、ネットワーク接続１６を経て行われる。コントローラサーバー１８−Ｂとコントローラクライアントとの間の通信は、バックプレーン５２を経て（例えば、ＴＣＰ／ＩＰのようなプロトコルを使用してネットワーク接続を経て）行われる。
【００３５】
図５に示すように、コントローラサーバー１８及びコントローラクライアント３０は、ネットワークプロトコルスタック５８及びネットワークプロトコルスタック６０のようなネットワークプロトコルスタックを使用してネットワーク経路６６を経て通信する。スタック５８及び６０は、例えば、Ｌｉｎｕｘ  ＴＣＰ／ＩＰスタック又はＶｘＷｏｒｋｓオペレーティングシステムにおけるＴＣＰ／ＩＰスタックである（一例として）。経路６６は、例えば、スイッチ１４と外部装置との間のネットワーク接続をサポートする経路（例えば、図１のネットワーク経路１６）であるか、或いは図４に示すように、スイッチ１４のバックプレーン５２においてネットワーク接続をサポートする経路である。ここでは、経路６６が経路１６のようなネットワーク経路である構成を一例として説明する。
【００３６】
コントロールプロトコルスタック５６は、ネットワークプロトコルスタック５８とコントロールソフトウェア５４との間のインターフェイスとして働く。コントロールプロトコルスタック６２は、ネットワークプロトコルスタック６０とコントロールソフトウェア６４との間のインターフェイスとして働く。オペレーション中に、コントローラサーバー１８がコントローラクライアント３０と通信するときに、コントロールプロトコルスタック５６は、コントロールプロトコルメッセージ（例えば、ポートをアクチベートするか又は特定のフローテーブルエントリーをフローテーブル２８へインストールするためのコントロールメッセージ）を発生しそしてパースする。図５に示す形式の構成を使用することにより、コントローラサーバー１８とコントローラクライアント３０との間のリンクにわたってネットワーク接続が形成される。コントローラサーバー１８及びコントローラクライアント３０は、送信コントロールプロトコル（ＴＣＰ）又はユーザデータグラムプロトコル（ＵＤＰ）を使用してインターネットプロトコル（ＩＰ）ネットワーク接続を経て通信することができる。ネットワーク接続を経てコントローラサーバー１８とコントローラクライアント３０との間で通信するときに使用されるコントロールプロトコルは、例えば、ＳＮＭＰ及びＯｐｅｎＦｌｏｗプロトコルスタックバージョン１.０.０を含む（一例として）。
【００３７】
フローテーブル２８は、複数のフィールド（ヘッダフィールドとも称される）を有するフローテーブルエントリー（例えば、テーブルの行）を含む。スイッチ１４により受け取られたパケットのフィールドは、フローテーブルのフィールドと比較される。各フローテーブルエントリーは、それに関連したアクションを有する。パケットのフィールドとフローテーブルエントリーのフィールドとの間に一致があるときには、そのフローテーブルエントリーに対応するアクションが取られる。
【００３８】
例示的フローテーブルが図６に示されている。図６Ａに示すように、テーブル２８は、フローテーブルエントリー（行）６８を有する。各フローテーブルエントリーには、ヘッダ７０、アクション７２及び統計値７４が関連される。ヘッダ７０は、複数のヘッダフィールド７６を各々含む。各フローテーブルエントリーのアクションは、パケットのフィールドと、そのフローテーブルエントリーのヘッダにおける対応フィールドとの間に一致が検出されたときにパケットに対してどんなアクションスイッチ１４を遂行すべきか指示する。スイッチ１４は、スイッチ１４の遂行に関する情報を得ることが望まれるときにコントローラサーバー１８により質問される統計データ（カウンタ値）をフローテーブル２８の統計値部分に維持する。
【００３９】
ヘッダ７０のヘッダフィールド（及び各到来パケットの対応フィールド）は、次のフィールドを含む。進入ポート（即ち、パケットが受け取られるところのスイッチ１４の物理的ポートのアイデンティティ）、イーサネットソースアドレス、イーサネット行先アドレス、イーサネット形式、バーチャルローカルエリアネットワーク（ＶＬＡＮ）ｉｄ、ＶＬＡＮプライオリティ、ＩＰソースアドレス、ＩＰ行先アドレス、ＩＰプロトコル、ＩＰ  ＴｏＳ（サービスの形式）ビット、トランスポートソースポート／インターネットコントロールメッセージプロトコル（ＩＣＭＰ）形式（ソースＴＣＰポートとも称される）、及びトランスポート行先ポート／ＩＣＭＰコード（行先ＴＣＰポートとも称される）。必要に応じて、他のフィールドも使用される。
【００４０】
各フローテーブルエントリー（フローエントリー）には、一致するパケットをスイッチがどのように取り扱うか指令するゼロ以上のアクションが関連される。転送アクションが存在しない場合には、パケットがドロップされるのが好ましい。パケットフィールドとフローテーブルエントリーのヘッダフィールドとの間に一致があるときにスイッチ１４により行われるアクションは、次のアクションを含む。転送（例えば、到来するインターフェイスを含まない全てのインターフェイスを経てパケットを送出するＡＬＬ；パケットをカプセル化してコントローラサーバーへ送るＣＯＮＴＲＯＬＬＥＲ；スイッチのローカルネットワーキングスタックへパケットを送るＬＯＣＡＬ；フローテーブル２８におけるアクションを遂行するＴＡＢＬＥ；入力ポートからパケットを送出するＩＮ＿ＰＯＲＴ；例えば、慣習的なレベル２、ＶＬＡＮ、及びレベル３処理を使用してスイッチによりサポートされるデフォールト転送経路でパケットを処理するＮＯＲＭＡＬ；及び到来するインターフェイスを含まない最小スパンツリーに沿ってパケットを溢れさせるＦＬＯＯＤ）。スイッチ１４により行われる付加的なアクションは、次のものを含む。ポートにアタッチされたキューを介してパケットを転送するエンキューアクション、ドロップアクション（例えば、特定のアクションを伴わずにフローテーブルエントリーに一致するパケットをドロップする）、パケットにより指定されるパケット行先以外のパケット行先へパケットをリダイレクトするリダイレクトアクション。変更フィールドアクションもスイッチ１４によりサポートされる。行われる変更フィールドアクションは、例えば、セットＶＬＡＮ  ＩＤ、セットＶＬＡＮプライオリティ、ストリップＶＬＡＮヘッダ、変更イーサネットソースＭＡＣ（メディアアクセスコントロール）アドレス、変更イーサネット行先ＭＡＣアドレス、変更ＩＰｖ４、変更ＩＰｖ４  ＴｏＳビット、変更トランスポート行先ポートを含む。
【００４１】
図６Ｂは、３つのフローテーブルエントリーを有するフローテーブルを例示するものである。それらエントリーは、ワイルドカード（例えば、“＊”記号）を伴うフィールドを含む。ワイルドカードが特定のフィールドに存在するときには、全ての到来するパケットは、到来するパケットのフィールドの特定値に関わりなく、フィールドに対して「一致」を形成するとみなされる。
【００４２】
図６Ｂのテーブルの第１行のエントリーは、フローテーブルエントリーが動作しているスイッチに、イーサネットスイッチングを遂行するように指令する。特に、一致するイーサネット行先アドレスを伴う到来するパケットは、ポート３へ転送される。
【００４３】
図６Ｂのテーブルの第２行のエントリーは、インターネットルーティングを遂行するためにスイッチをどのように構成するか示す（即ち、パケットは、それらの行先ＩＰアドレスに基づいて転送される）。
【００４４】
図６Ｂのテーブルの第３行は、ファイアウオールを形成するためにスイッチをどのように構成するか示すエントリーを含む。行先ＩＰポート値が８０のパケットが受け取られると、そのパケットはドロップされる（即ち、スイッチは、ポート８０のトラフィックを遮るファイアウオールとして働くように構成される）。
【００４５】
図６Ｂに示す形式のフローテーブルエントリーは、システム設定オペレーション中にコントローラサーバー１８によりスイッチ１４へロードされるか、又はスイッチ１４からコントローラサーバー１８においてパケットを受け取って処理するのに応答してリアルタイムでコントローラサーバー１８からスイッチ１４へ送られる。多数のスイッチ１４を伴うネットワークでは、ネットワークを通る経路を形成するために各スイッチに適当なフローテーブルエントリーが設けられる。
【００４６】
一例として、各エンドホスト間に直列に接続された第１及び第２スイッチを含むネットワークについて考える。第１のエンドホストから第２のエンドホストへトラフィックを送るときには、第１及び第２のスイッチを介してトラフィックをルーティングすることが望ましい。第２のスイッチが第１のスイッチのポート３に接続される場合、第２のエンドホストが第２のスイッチのポート５に接続される場合、及び第２のエンドホストの行先ＩＰアドレスが１７２．１２．３．４である場合には、コントローラサーバー１８は、第１のスイッチに図６Ｃのフローテーブルエントリーを与えると共に、第２のスイッチに図６Ｄのフローテーブルエントリーを与える。行先ＩＰアドレス１７２．１２．３．４をもつパケットが第１のスイッチに受け取られると、それらは、図６Ｃのテーブルの「ポート３へ転送」アクションに基づいて第２のスイッチへ転送される。それらパケットが第２のスイッチに受け取られると、それらは、図６Ｄの「ポート５へ転送」アクションに基づき第２のスイッチのポート５に接続された第２のエンドホストへ転送される。
【００４７】
入力／出力ポート３４を経て受け取られるパケットの処理中にスイッチ１４により遂行される例示的ステップが図７に示されている。ステップ７８において、スイッチ１４は、そのポートの１つ（例えば、図１の入力／出力ポート３４の１つ）でパケットを受け取る。
【００４８】
ステップ８０において、スイッチ１４は、受け取ったパケットのフィールドを、そのスイッチのフローテーブル２８におけるフローテーブルエントリーのフィールドと比較して、一致があるかどうか決定する。フローテーブルエントリーのあるフィールドは、完全な値（即ち、完全なアドレス）を含む。他のフィールドは、ワイルドカードを含む（即ち、“＊”の“don’t care”ワイルドカードキャラクタでマークされたフィールド）。更に別のフィールドは、部分的に完全なエントリー（即ち、部分的にワイルドカード化された部分的アドレス）を有する。あるフィールドは、範囲を使用し（例えば、ＴＣＰポート番号を１と４０９６との間の値に制限することにより）、そして実際にその範囲を使用して、ある形式の部分的ワイルドカード化を実施する。受け取ったパケットとフローテーブルエントリーとの間のフィールドごとの比較を行う際に、スイッチ１４は、フローテーブルエントリーの各フィールドが、ワイルドカード化なしの完全な値を含むか、ワイルドカード化を伴う部分的値を含むか、又はワイルドカードキャラクタ（即ち、完全にワイルドカード化されたフィールド）を含むか、考慮することができる。
【００４９】
ステップ８０の動作中に、パケットのフィールドと、フローテーブルエントリーの対応フィールドとの間に一致がないことが決定された場合には、スイッチ１４は、リンク１６を経てコントローラサーバー１８へパケットを送出する（ステップ８４）。
【００５０】
ステップ８０の動作中に、パケットとフローテーブルエントリーとの間に一致があると決定された場合には、スイッチ１４は、そのフローテーブルエントリーに関連したアクションを遂行し、そしてそのフローテーブルエントリーの統計値フィールドにおけるカウンタ値を更新する（ステップ８２）。次いで、処理は、線８６で示すようにステップ７８へループバックし、スイッチ１４により別のパケットが処理されるようにする。
【００５１】
図８は、コントローラクライアントをもつスイッチ（又は他のパケット転送システム）（例えば、クライアントスイッチＳＷ１、ＳＷ２、ＳＷ３及びＳＷ４）と、経路６６を経てクライアントスイッチをコントロールするコントローラサーバー１８とを備えたネットワークを例示する。クライアントスイッチは、クライアントスイッチのポートを経て他のネットワーク要素に結合される。例えば、クライアントスイッチＳＷ１は、ポートＡを経て第１のエンドホストＥＨ１に結合され、ポートＣを経てクライアントスイッチＳＷ３に結合され、そしてポートＢを経てクライアントスイッチＳＷ２に結合される。
【００５２】
ネットワーク１００は、スイッチＳＷ１に結合されたエンドホストＥＨ１及びスイッチＳＷ４に結合されたエンドホストＥＨ２のようなエンドホストを含む。各エンドホストは、それに対応するネットワークアドレスを有する。例えば、エンドホストＥＨ１は、メディアアクセスコントロール（ＭＡＣ）アドレスが１であり且つインターネットプロトコル（ＩＰ）アドレスが１０.０.０.２であり、そしてエンドホストＥＨ２は、ＭＡＣアドレスが２であり且つインターネットプロトコル（ＩＰ）アドレスが１０.０.０.１である。
【００５３】
エンドホストは、ネットワーク１００のスイッチを介してデータを送信することにより他のエンドホストと通信する。例えば、エンドホストＥＨ１は、スイッチＳＷ４に対して予定されたスイッチＳＷ１へネットワークパケットを送信する。スイッチＳＷ１は、ネットワークスイッチ転送経路（例えば、ネットワークスイッチＳＷ１、ＳＷ３及びＳＷ４を含む転送経路）に沿ってネットワークパケットを転送して、エンドホストＥＨ２がネットワークパケットを受信するようにする。ネットワークスイッチ転送経路は、コントローラサーバー１８により発生される（例えば、エンドホストＥＨ１からエンドホストＥＨ２へネットワークパケットを転送するようにスイッチに指令する適当なフローテーブルエントリーをネットワークスイッチに与えることにより）。
【００５４】
クライアントスイッチのポートのサブセットから及び／又はエンドホストのようなネットワーク要素からグループを形成することが望まれる。例えば、電子支払クライアント（例えば、支払トランザクションを遂行するために電子支払サーバーと通信するのに使用される装置）は、ネットワークのクライアントスイッチにおけるポートの幾つかに結合される。電子支払クライアントから第１グループをそして電子支払サーバーから第２グループを形成して、電子支払クライアントに関連したネットワークトラフィックを便利にコントロールすることが望まれる（例えば、クレジットカード番号のような繊細な支払情報が他の装置へ送信されるのを防止するため、電子支払クライアントに関連したポートから発生するパケットが電子支払サーバー以外の行先に到達するのを防止することが望まれる）。
【００５５】
クライアントスイッチのポートのサブセットから（例えば、ネットワークスイッチポートから）、及びエンドホストのようなネットワーク要素からグループを形成するために、コントローラサーバー１６は、バーチャルスイッチを生成する。一例として、バーチャルスイッチは、電子支払クライアントに対応するネットワーク１００内のポート及びエンドホストのサブセットから形成される。各バーチャルスイッチは、スイッチポートからの１つ以上の各ポート、又は１つ以上の各エンドホストに対応するバーチャルインターフェイスを有する。バーチャルインターフェイスは、バーチャルスイッチの内部のトラフィック（例えば、バーチャルスイッチのバーチャルインターフェイス間のネットワークトラフィック）と、バーチャルスイッチの外部のトラフィック（例えば、バーチャルスイッチに関連しないポート又はエンドホストへ向けられ又はそこから受け取られるトラフィック）との間の境界を表わす。
【００５６】
ネットワーク１００のエンドホスト及び／又はネットワークスイッチポートに関連したバーチャルスイッチを含むバーチャルネットワーク１００Ａが図９に例示されている。このバーチャルネットワーク１００Ａは、第１のバーチャルスイッチＶＳＷ１及び第２のバーチャルスイッチＶＳＷ２を備えている。各バーチャルスイッチは、そのバーチャルスイッチを他のバーチャルスイッチにリンクするか、或いはエンドホスト又はネットワークスイッチポートのようなネットワーク要素にリンクするインターフェイスを含む。バーチャルスイッチＶＳＷ１は、そのバーチャルスイッチＶＳＷ１をエンドホストＥＨ１にリンクするインターフェイスＩＦ１と、そのバーチャルスイッチＶＳＷ１をバーチャルスイッチＶＳＷ２にリンクするインターフェイスＩＦ２とを含む。バーチャルスイッチＶＳＷ２は、そのＶＳＷ２をＶＳＷ１にリンクするインターフェイスＩＦ３と、ＶＳＷ２をエンドホストＥＨ２にリンクするインターフェイスＩＦ４とを含む。
【００５７】
ＩＦ１及びＩＦ２のようなバーチャルスイッチインターフェイスは、静的な物理的インターフェイスに関連されるか、又は対応する物理的ネットワーク（例えば、図８のネットワーク１００）内のエンドホストの位置に基づいて動的に更新される。バーチャルスイッチＶＳＷ１のインターフェイスＩＦ１は、ゼロのメディアアクセスコントロール（ＭＡＣ）アドレスにリンクされる（例えば、インターフェイスＩＦ１は、ＭＡＣアドレスがゼロのエンドホストが結合されたネットワークスイッチポートを表わすように動的に更新される）。バーチャルスイッチＶＳＷ２のインターフェイスＩＦ２は、ネットワークスイッチＳＷ４の物理的ポートＬにリンクされる（例えば、インターフェイスＩＦ２は、ポートＬに静的にリンクされる）。
【００５８】
関連ＭＡＣアドレスに基づいてエンドホストをバーチャルスイッチインターフェイスに指定する例は、単なる例示に過ぎない。必要に応じて、ネットワーク識別タグの組み合わせを使用して、エンドホストをバーチャルスイッチインターフェイスに指定することができる。例えば、エンドホストは、ＭＡＣアドレス、インターネットプロトコル（ＩＰ）アドレス、バーチャルローカルエリアネットワーク（ＶＬＡＮ）識別子、ルックアップテーブルに基づく識別タグ、等の組み合わせを使用して、バーチャルスイッチインターフェイスに指定される。必要に応じて、所与のエンドホストに関連した１つ以上のポートがバーチャルスイッチに指定されてもよい（例えば、所与のエンドホストに結合された物理的ポートがバーチャルスイッチに指定され、そして所与のエンドホストがネットワークに結合される位置を反映するように更新されてもよい）。このようにバーチャルスイッチインターフェイスに指定されたエンドホストのネットワーク位置（例えば、エンドホストが結合されるスイッチ及びスイッチポート）は、ネットワーク内の変化を反映するように動的に更新される。
【００５９】
コントローラサーバー１８は、ネットワーク１００を通るネットワークトラフィックをコントロールするネットワークポリシーを適用するのに使用される。コントローラサーバー１８により適用されるネットワークポリシーは、パケット転送ルール、アクセスコントロールルール、パケットリダイレクションルール、又はネットワーク１００を通るネットワークトラフィックの流れをコントロールする他のポリシーを含む。
【００６０】
図８のＳＷ１、ＳＷ２、ＳＷ３及びＳＷ４のようなネットワークスイッチではなく、図９のＶＳＷ１及びＶＳＷ２のようなバーチャルネットワークスイッチにネットワークポリシーを適用することが望まれる。例えば、ネットワークセキュリティカメラ及びネットワークセキュリティコンピュータ（例えば、ネットワークセキュリティカメラを動作するためにネットワークセキュリティ要員により使用されるコンピュータ）のためのネットワークポリシーを適用する上で助けとなるように、第１のバーチャルスイッチは、ネットワークセキュリティカメラに対応するエンドホストから形成され、そして第２のバーチャルスイッチは、ネットワークセキュリティコンピュータに対応するエンドホストから形成される。このシナリオにおいて、ネットワークアドミニストレータは、コントローラサーバー１８を使用して、ネットワークセキュリティコンピュータがネットワークセキュリティカメラにアクセスするのを許す（例えば、他のエンドホストがネットワークセキュリティカメラにアクセスするのを許すことなく）ネットワークポリシーを実施する。ネットワーク内の各物理的スイッチを個々にコントロールするのではなく、バーチャルスイッチをコントロールすることにより、ネットワークアドミニストレータは、ネットワークポリシーをより効率的に実施することができる（例えば、コントロールすべきバーチャルスイッチが少ないために）。バーチャルネットワークに適用されるネットワークポリシーは、ここでは、バーチャルネットワークポリシーとも称される。
【００６１】
図１０Ａは、（例えば、コントローラサーバー１８を使用して）バーチャルネットワーク１００Ａに適用されるバーチャルネットワークポリシー９２を例示する。バーチャルネットワークポリシー９２は、バーチャルスイッチＶＳＷ１に関連したエンドホストが、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）を使用して、バーチャルスイッチＶＳＷ２に関連したエンドホストにアクセスするのを許すが、バーチャルスイッチＶＳＷ１とバーチャルスイッチＶＳＷ２との間の他の全てのネットワークトラフィックを拒絶することができる。例えば、ネットワークセキュリティコンピュータは、ハイパーテキストトランスポートプロトコルを使用してネットワークセキュリティカメラと通信する。許可されていないネットワーク装置がネットワークセキュリティカメラにアクセスするのを許すことなく、ネットワークセキュリティコンピュータがネットワークセキュリティカメラにアクセスするのを許すために、バーチャルネットワークポリシーは、バーチャルスイッチＶＳＷ１からのハイパーテキストトランスポートプロトコルトラフィックのみがバーチャルスイッチＶＳＷ２へ到達するのを許す（その逆のことも言える）。
【００６２】
バーチャルネットワークポリシー９２を実施するため、コントローラサーバー１８は、それに対応するバーチャルインターフェイスポリシーを、選択されたバーチャルインターフェイスにおいて実施する。バーチャルインターフェイスポリシーは、コントローラサーバー１８に（例えば、テーブル又はデータベースに）記憶される。図１０Ｂは、バーチャルスイッチＶＳＷ２のインターフェイスＩＦ３に適用されるバーチャルインターフェイスポリシーの一例を示す。図１０Ｂの例において、８０の行先トランスポートコントロールプロトコル（ＴＣＰ）ポートをもつ進入ネットワークパケット及び８０のソースＴＣＰポートをもつ退出ネットワークパケットは、バーチャルインターフェイスＩＦ３を通過することが許されるが、他の属性をもつネットワークパケットは、阻止されるか又はドロップされる。このように、ハイパーテキストトランスポートプロトコルを使用して通信するネットワークセキュリティコンピュータ及びネットワークセキュリティカメラは、ＴＣＰポート８０を使用してネットワークパケットを送信及び受信する（一例として）。
【００６３】
バーチャルネットワークポリシーは、望ましいバーチャルインターフェイスにおいて適用することができる。例えば、ネットワークセキュリティコンピュータ（例えば、エンドホストＥＨ１）がネットワークセキュリティカメラ（例えば、エンドホストＥＨ２）にアクセスするのを許すバーチャルネットワークポリシーは、インターフェイスＩＦ１、ＩＦ２、ＩＦ３、ＩＦ４に適用されるか、或いはネットワークセキュリティコンピュータからネットワークセキュリティカメラへのバーチャルネットワーク経路（例えば、望ましい数のバーチャルネットワークスイッチを通るバーチャルネットワーク経路）におけるインターフェイスの組み合わせに適用される。図１０Ｃは、バーチャルネットワークポリシー９２をバーチャルスイッチＶＳＷ１のインターフェイスＩＦ２にどのように適用するか示している。図１０Ｃの例において、８０のソーストランスポートコントロールプロトコル（ＴＣＰ）ポートをもつ進入ネットワークパケット及び８０の行先ＴＣＰポートをもつ退出ネットワークパケットは、バーチャルインターフェイスＩＦ２を通過することが許されるが、他の属性をもつネットワークパケットは、エンドホストＥＨ１とＥＨ２との間の無断ネットワークトラフィックを防止するために阻止されるか又はドロップされる。
【００６４】
エンドホストＥＨ１とＥＨ２との間に単一のバーチャルスイッチ経路しか存在しない図９の例は、単なる例示に過ぎない。必要に応じて、エンドホストＥＨ１からエンドホストＥＨ２への別のバーチャルスイッチ経路を与える付加的なバーチャルスイッチが形成されてもよい。バーチャルネットワークポリシー９２のようなバーチャルネットワークポリシーを実施するため、コントローラサーバー９２を使用して、バーチャルインターフェイスポリシーを、エンドホストＥＨ１とＥＨ２との間の各考えられるバーチャルスイッチ経路における選択されたバーチャルインターフェイスに適用してもよい（例えば、ネットワークパケットがバーチャルネットワークポリシーへの適合を回避できなくするよう保証するために）。
【００６５】
バーチャルネットワークポリシーは、それに対応する物理的ネットワーク（例えば、スイッチ又は他のパケット転送システムの物理的ネットワーク）に適用される。コントローラサーバー１８は、バーチャルネットワークスイッチ間のトラフィックをコントロールするバーチャルネットワークポリシーを、それに対応する物理的ネットワークを通るネットワークトラフィックをコントロールするネットワークスイッチ転送ルールへと変換する。各バーチャルインターフェイスポリシーは、物理的ネットワークのパケット転送システムに与えられるネットワークスイッチ転送ルール（例えば、フローテーブルエントリー）の対応セットへと変換される。
【００６６】
図１０Ｄは、図１０Ａのバーチャルネットワークポリシー９２を実施するために物理的ネットワーク１００のスイッチに与えられるフローテーブルエントリーを例示するものである。図１０Ｄの例では、コントローラサーバー１８は、エンドホストＥＨ１（例えば、ネットワークセキュリティコンピュータ）と、スイッチＳＷ１、ＳＷ３及びＳＷ４を含むエンドホストＥＨ２との間のネットワークスイッチルーティング経路を識別する。コントローラサーバー１８は、フローテーブルエントリー９６ＡをスイッチＳＷ１に与え、フローテーブルエントリー９６ＢをスイッチＳＷ３に与え、そしてフローテーブルエントリー９６ＣをスイッチＳＷ４に与える。フローテーブルエントリーは、ネットワークポリシー９２を実施する間にエンドホストＥＨ１とＥＨ２との間にネットワークパケットを転送する（例えば、フローテーブルエントリーは、ＴＣＰポート８０を使用するエンドホストＥＨ１とＥＨ２との間のネットワークトラフィックしか許さない）。
【００６７】
フローテーブル９６Ａは、物理的入力ポートＡで受け取られたネットワークパケットを行先ＩＰアドレス１０.０.０.１及び行先ＴＣＰポート８０と共にポートＣへ転送するようにスイッチＳＷ１に指令する第１エントリーを含む。又、フローテーブル９６Ａは、物理的入力ポートＣで受け取られたネットワークパケットを行先ＩＰアドレス１０.０.０.２と共にポートＡへ転送するようにスイッチＳＷ１に指令する第２エントリーを含む（例えば、ネットワークパケットの行先ＴＣＰポートに関わりなく）。
【００６８】
フローテーブル９６Ｂは、ネットワークパケットを行先ＩＰアドレス１０.０.０.１と共にポートＩへ転送すると同時に、生存時間（ＴＴＬ）ネットワークパケットヘッダフィールドをデクリメントするようにスイッチＳＷ３に指令する第１エントリーを含む。又、フローテーブル９６Ｂは、ネットワークパケットを行先ＩＰアドレス１０.０.０.２と共にポートＨへ転送すると同時に、生存時間ネットワークパケットヘッダフィールドをデクリメントするようにスイッチＳＷ３に指令する第２エントリーを含む。
【００６９】
生存時間ヘッダフィールドは、ネットワークパケットがネットワークによりドロップされる前に横断するネットワーク要素の数を指示する。例えば、エンドホストＥＨ１は、ネットワークパケットを、ＴＴＬネットワークパケットヘッダフィールドに記憶された所与の生存時間（ＴＴＬ）値（例えば、６４、１２８、２５５、等の値）と共に送信する。生存時間ネットワークパケットヘッダフィールドをデクリメントすることにより、ネットワーク１００のスイッチは、ネットワークパケットが、生存時間ネットワークパケットヘッダフィールドに記憶された元の値より長いネットワークスイッチ転送経路を横断するのを防止する（例えば、生存時間ヘッダフィールドの値がゼロに達したときにネットワークパケットがドロップするので）。
【００７０】
ネットワークパケットの生存時間（ＴＴＬ）ヘッダフィールドをデクリメントするのに使用されるスイッチＳＷ３は、単なる例示に過ぎない。必要に応じて、エンドホストＥＨ１からエンドホストＥＨ２へのネットワーク経路にあるスイッチには、ＴＴＬヘッダフィールドをデクリメントするようにそのスイッチに指令するフローテーブルエントリーが与えられる。必要に応じて、ネットワーク経路にあるスイッチは、他のバーチャルネットワークポリシー（例えば、エンドホストＥＨ２から離れるようにネットワークトラフィックを選択的にリダイレクションするか、又はエンドホストＥＨ１から送られたネットワークトラフィックを変更するポリシー）を実施するのに使用される。例えば、コントローラサーバー１８は、ソースＩＰアドレスフィールドの変更、ＭＡＣアドレスフィールドの変更、ＶＬＡＮヘッダフィールドの変更、等のバーチャルネットワークポリシーを実施するために適当なスイッチ（例えば、適当なスイッチ能力をもつネットワークスイッチ）を選択する。バーチャルネットワークポリシーは、１つ以上のバーチャルスイッチの選択された部分間（例えば、選択されたエンドホスト又は選択された物理的ポート間）のバーチャルルーター又はバーチャルブリッジを実施するバーチャルネットワークポリシーのようなより広いネットワークポリシーの一部分として適用されてもよい。
【００７１】
フローテーブル９６Ｃは、物理的入力ポートＬからのネットワークパケットを行先ＩＰアドレス１０.０.０.２及びソースＴＣＰポート８０と共にポートＪへ転送するようにスイッチＳＷ４に指令する第１エントリーと、物理的入力ポートＪで受信したネットワークパケットを行先ＩＰアドレス１０.０.０.１と共にポートＬへ転送する（例えば、ソースＴＣＰポートに関わらず）ようにスイッチＳＷ４に指令する第２エントリーとを含む。
【００７２】
フローテーブル９６Ａ、９６Ｂ及び９６Ｃのフローテーブルエントリーは、スイッチＳＷ１、ＳＷ３及びＳＷ４を介してエンドホストＥＨ１とＥＨ２との間にネットワークスイッチ転送経路を発生する。バーチャルネットワークポリシー９２は、その発生されたネットワークスイッチ転送経路全体にわたって実施される。例えば、ネットワークポリシーは、スイッチＳＷ１に部分的に適用され（例えば、テーブル９６Ａの第１エントリーは、エンドホストＥＨ１からのネットワークパケットがエンドホストＥＨ２のＴＣＰポート８０に到達することしか許さず）、そしてスイッチＳＷ４に部分的に適用される（例えば、テーブル９６Ｃの第１エントリーは、エンドホストＥＨ２のＴＣＰポート８０からのネットワークパケットがエンドホストＥＨ１に到達することしか許さない）。これは、単なる例示に過ぎない。必要に応じて、バーチャルネットワークポリシーは、エンドホストＥＨ１とＥＨ２との間の識別されたネットワークスイッチ転送経路に沿って望ましいスイッチ（又は他のパケット転送システム）において部分的に実施されてもよい。ネットワークスイッチ転送経路のスイッチは、スイッチ能力に基づいて選択される（例えば、スイッチＳＷ３は、生存時間ヘッダフィールドをデクリメントできる物理的ネットワーク１００の唯一のスイッチであり、それ故、スイッチＳＷ３を含ませるためにネットワークスイッチルーティング経路が要求される）。
【００７３】
図１０Ｄにより発生されるネットワークスイッチ転送経路は、単なる例示に過ぎない。必要に応じて、コントローラサーバー１８は、バーチャルネットワークポリシー９２を、エンドホストＥＨ１とＥＨ２との間の物理的ネットワーク経路のためのフローテーブルエントリーへと変換する。例えば、コントローラサーバー１８は、スイッチＳＷ１、ＳＷ２、ＳＷ３及びＳＷ４、等を通る経路を識別する。
【００７４】
物理的ネットワークの物理的ポート及び／又はエンドホストのサブセットに各々対応するバーチャルスイッチのバーチャルネットワークを生成すると共に、バーチャルネットワークを通るネットワークパケットの転送をコントロールするネットワークポリシーを定義するために、図１１のフローチャート１１０の例示的ステップは、コントローラサーバー１８を使用して遂行される。
【００７５】
ステップ１１２において、コントローラサーバー１８は、バーチャルスイッチを設定する。例えば、コントローラサーバー１８は、バーチャルスイッチのためのバーチャルインターフェイスを発生し、そしてネットワーク要素（例えば、ネットワークスイッチポート）又はエンドホストをバーチャルインターフェイスに指定することにより、バーチャルスイッチを形成する。一例として、コントローラサーバー１８は、バーチャルインターフェイスＩＦ１を生成し、そしてエンドホストＥＨ１をバーチャルインターフェイスＩＦ１に指定することにより（例えば、ＭＡＣアドレス１をもつエンドホストをバーチャルインターフェイスＩＦ１に指定することにより）、図９のバーチャルスイッチＶＳＷ１を設定する。
【００７６】
ステップ１１４において、コントローラサーバー１８は、スイッチ間のネットワーク通信経路を決定するバーチャルトポロジーを設定する。例えば、コントローラサーバー１８は、バーチャルスイッチ間（例えば、バーチャルスイッチのバーチャルインターフェイス間）にバーチャルリンクを確立する。各バーチャルリンクは、少なくともある程度のネットワークトラフィックが、第１の対応するバーチャルインターフェイスと、第２の対応するバーチャルインターフェイスとの間の通過が許されたことを識別する。一例として、コントローラサーバー１８は、バーチャルスイッチＶＳＷ１とバーチャルスイッチＶＳＷ２との間に（例えば、バーチャルインターフェイスＩＦ２とバーチャルインターフェイスＩＦ３との間に）バーチャルリンクを形成することにより、バーチャルネットワーク１００Ａのバーチャルトポロジーを設定する。
【００７７】
ステップ１１６において、コントローラサーバー１８は、バーチャルネットワークのためのバーチャルネットワークポリシーを構成する。例えば、コントローラサーバー１８は、（例えば、ＩＰアドレスに基づいてネットワークトラフィックをルーティングするポリシーを構成することにより）バーチャルルーターを形成し、（例えば、ＭＡＣアドレスに基づいてネットワークトラフィックをルーティングするポリシーを構成することにより）バーチャルブリッジを形成し、ネットワークパケットを選択的に変更し又は置き換えし、（例えば、ネットワークパケットを選択的に阻止することにより）アクセスコントロールリストを実施し、ネットワークパケットを選択的に複写し、ネットワークパケットを選択的にリダイレクションし、（例えば、ネットワークパケットに関連した情報を選択的に記憶することにより）ネットワークパケットをログし、或いは警報を発生するように、バーチャルネットワークポリシーを構成する。各バーチャルネットワークポリシーを実施するために、コントローラサーバー１８は、バーチャルインターフェイスのための対応バーチャルインターフェイスポリシーを決定する。例えば、第１のエンドホストにより送られたネットワークパケットが第２のエンドホストに到達するのを阻止するために、コントローラサーバー１８は、第１及び第２のエンドホスト間のバーチャル経路を識別し、そして各識別されたバーチャル経路に沿った選択されたバーチャルインターフェイスにおけるネットワークパケットを阻止する。
【００７８】
バーチャルネットワークポリシーを、パケット転送システムを備えた対応物理的ネットワークに適用するために、図１２に例示されたステップは、コントローラサーバー１８により遂行される。
【００７９】
ステップ１２２において、コントローラサーバー１８は、ネットワークスイッチ（例えば、クライアントスイッチ又は他のパケット転送システム）からネットワークパケットを受け取る。例えば、ネットワークパケットは、ネットワークスイッチにおいて受け取られる。このシナリオでは、ネットワークスイッチは、ネットワークパケットのための転送経路が存在しないことを識別する（例えば、ネットワークスイッチに対応するフローテーブルにはパケットのためのフローテーブルエントリーが現在存在しないので）。ネットワークスイッチは、受け取ったネットワークパケットのための転送経路が存在しないことを識別するのに応答して、コントローラサーバー１８へネットワークパケットを転送する。
【００８０】
ステップ１２４において、コントローラサーバー１８は、進入及び退出バーチャルスイッチを識別し、そして受け取ったパケットに対する対応する進入及び退出バーチャルインターフェイスを識別する。コントローラサーバー１８は、受け取ったパケットの属性（例えば、ＩＰアドレス、ＭＡＣアドレス、等）、及びバーチャルネットワークトポロジーに基づいて、進入及び退出バーチャルスイッチを識別する。進入及び退出バーチャルスイッチは、パケットソースのエンドホスト及びパケット行先のエンドホストに関連している。例えば、コントローラサーバー１８は、ネットワークパケットが、進入バーチャルスイッチの第１のバーチャルインターフェイス（例えば、進入バーチャルインターフェイス）に関連したパケットソースエンドホストを有することを識別すると共に、ネットワークパケットが、退出バーチャルスイッチの第２のバーチャルインターフェイス（例えば、退出バーチャルインターフェイス）に関連したパケット行先エンドホストを有することを識別する。
【００８１】
ステップ１２８において、コントローラサーバー１８は、進入バーチャルインターフェイスからバーチャルネットワークを介して退出バーチャルインターフェイスへ至るバーチャルネットワーク経路を決定し、そしてそのバーチャルネットワーク経路に関連したバーチャルネットワークポリシーを識別する。バーチャルネットワーク経路は、１つ以上のバーチャルインターフェイスを含む（例えば、その経路は、バーチャルインターフェイス間のバーチャルリンクを含む）。
【００８２】
一例として、図９のエンドホストＥＨ１とエンドホストＥＨ２との間のバーチャルネットワーク経路は、バーチャルインターフェイスＩＦ１、ＩＦ２、ＩＦ３及びＩＦ４を含む。又、バーチャルネットワーク経路は、バーチャルインターフェイスに関連した図１０Ａのネットワークポリシー９２のようなネットワークポリシーを含む。
【００８３】
ステップ１３０において、コントローラサーバー１８は、バーチャルネットワーク経路及びそれに関連したバーチャルネットワークポリシーに基づいてパケット転送システム（例えば、物理的ネットワークスイッチ）のためのネットワーク構成エントリー（例えば、フローテーブルエントリー）を発生する。例えば、コントローラサーバー１８は、バーチャルネットワークポリシーを満足させつつ、ネットワークスイッチ転送経路に沿ってネットワークパケットを転送するようスイッチに指令するフローテーブルエントリーを物理的ネットワーク１００のスイッチに対して発生する。ネットワークスイッチ転送経路は、物理的スイッチの能力に基づいて選択される。バーチャルネットワークポリシーの実施は、ネットワークスイッチ転送経路全体にわたり分散される（例えば、バーチャルネットワークポリシーは、ネットワークスイッチ転送経路の選択されたスイッチにおいてフローテーブルエントリーを経て実施される）。
【００８４】
ステップ１３２において、ネットワークのパケット転送システムは、ステップ１３０において発生されたネットワーク構成エントリーで構成される。例えば、コントローラサーバー１８は、各パケット転送システムに、ステップ１３０で発生された対応するフローテーブルエントリーを与える。次いで、プロセスは、経路１３４を経てステップ１２２へループバックし、パケット転送システムで受け取られたパケットにバーチャルネットワークポリシーを適用する。
【００８５】
図１３は、決定されたバーチャルネットワーク経路に基づいてパケット転送システムのネットワーク構成エントリーを発生するようにコントローラサーバー１８により遂行されるステップを例示する。必要に応じて、図１３のステップは、図１２のステップ１３０の間に遂行されてもよい。
【００８６】
ステップ１４２において、コントローラサーバー１８は、ネットワークパケット（例えば、図１２のステップ１２２で受け取られたネットワークパケット）に関連したバーチャルネットワークポリシーを識別する。例えば、コントローラサーバー１８は、バーチャルスイッチ間のネットワークトラフィックをコントロールするバーチャルインターフェイスポリシーを識別する。
【００８７】
ステップ１４４において、コントローラサーバー１８は、ネットワークパケットのための物理的ネットワーク経路を決定する。この物理的ネットワーク経路は、パケットソースとパケット行先との間のネットワークスイッチ及びネットワークスイッチポートを含む。この物理的ネットワーク経路は、物理的ネットワークトポロジー情報に基づき（例えば、物理的ネットワークスイッチ間の既知のネットワーク接続に基づき及び／又はネットワークスイッチ能力に基づき）決定される。
【００８８】
ステップ１４６において、コントローラサーバー１８は、識別されたバーチャルネットワークポリシーに基づいてネットワーク構成エントリー（例えば、フローテーブルエントリー）を生成する（例えば、識別されたバーチャルネットワークポリシーを満足させながら、物理的ネットワーク経路を介してネットワークパケットをルーティングするフローテーブルエントリー）。ネットワーク構成エントリーは、その決定された物理的ネットワーク経路に関連したパケット転送システムに与えられる。ネットワーク構成エントリーは、コントローラサーバー１８とパケット転送システムとの間のネットワーク接続を経てパケット転送システムに与えられる。
【００８９】
コントローラサーバー１８のような１つ以上の集中型コントローラを使用してネットワークスイッチをコントロールすることは、単なる例示に過ぎない。必要に応じて、パケット転送システムのネットワークをコントロールする任意の形式のコントローラ（例えば、コンピューティング装置において実施されるコントローラ）を使用して、それに対応するパケット転送システムのポートのグループからバーチャルスイッチを形成し、そしてバーチャルネットワークポリシーを適用して、バーチャルスイッチを通るネットワークトラフィックをコントロールすることができる。
【００９０】
図１４は、コントローラ２０２がネットワーク２００全体を通じてスイッチ１４に分散される例を示す。コントローラ２０２は、ネットワークスイッチ１４の幾つか又は全部に分散される。コントローラクライアント３０のようなコントローラクライアントは、ネットワーク通信リンクを経てコントローラ２０２の１つ以上と通信する（例えば、コントローラ２０２は、通信リンクを経てコントローラクライアント３０へインストラクションを送信する）。コントローラ２０２は、スイッチ１４を総体的にコントロールするように互いに通信するか、又はスイッチ１４を個々にコントロールする。
【００９１】
一例として、コントローラ２０２は、互いに通信することによりネットワーク２００を総体的にコントロールして、バーチャルスイッチを形成する。コントローラ２０２は、ネットワークトポロジー、ネットワークトラフィック、スイッチ１４に結合されたエンドホスト、等に関する情報を共有する。ネットワーク情報を共有することにより、コントローラ２０２は、スイッチ１４におけるポートのグループ（例えば、物理的ポート、ポートに結合されたエンドホストの位置、又はエンドホストの属性に基づいて動的に決定されるポートのグループ）からバーチャルスイッチを形成し、そしてそのバーチャルスイッチにバーチャルネットワークポリシーを適用することができる。バーチャルスイッチを形成するのに使用される物理的ポートのグループは、重畳してもよい（例えば、エンドホストは、そのエンドホストから送信されるネットワークトラフィックの形式、そのエンドホストが通信するところのポート、等の基準に基づき、多数の異なるスイッチに指定される）。
【００９２】
必要に応じて、各コントローラ２０２は、他のコントローラ２０２と通信せずに、対応するスイッチ１４を個々にコントロールする。例えば、各コントローラ２０２は、単一の対応する物理的スイッチ１４におけるポートのグループからバーチャルスイッチを形成し、そしてその対応する物理的スイッチ１４から形成されたバーチャルスイッチにネットワークポリシーを適用する。
【００９３】
コントローラは、記憶装置及び処理回路のようなスイッチ１４のリソースを使用して実施される。コントローラ２０２の幾つかは、対応するスイッチ１４の処理能力により限定された能力を有する。このシナリオでは、能力が限定されたコントローラ２０２が、他のコントローラ２０２と通信して、総体的にネットワークポリシーをバーチャルスイッチに適用する。パケット処理能力が限定された第１スイッチ１４に第１のコントローラ２０２が形成され、そしてより複雑なパケット処理能力を有する第２スイッチ１４に第２のコントローラ２０２が形成されるというシナリオを考える。第１及び第２スイッチからのポートから形成されたバーチャルスイッチにネットワークポリシーを適用するために、第１のコントローラ２０２は、ネットワークパケットを第２スイッチ１４へ転送するように第１スイッチ１４に指令する（例えば、第２のコントローラ２０２がネットワークパケットを正しく処理してネットワークポリシーを満足するように）。
【００９４】
一実施形態によれば、スイッチのネットワークを介してパケットソースからパケット行先へパケットを転送する方法が提供される。各スイッチは、ポートを含み、ポートのグループが各バーチャルスイッチを形成する。この方法は、コントローラとで、パケット行先及びパケットソースを識別するパケットからの情報から、パケットソースに関連した第１のバーチャルスイッチからパケット行先に関連した第２のバーチャルスイッチへ至るバーチャルスイッチを通るバーチャル経路を識別することを含む。更に、この方法は、コントローラとで、バーチャル経路及びネットワークポリシーに基づきパケットソースからパケット行先へ至る前記スイッチを通るパケット転送経路を識別することを含む。
【００９５】
別の実施形態によれば、前記パケット転送経路を識別することは、ネットワークポリシーに少なくとも一部分基づいてフローテーブルエントリーを発生することを含む。
【００９６】
別の実施形態によれば、前記方法は、前記スイッチを通るパケット転送経路を形成するように前記スイッチを構成するために前記スイッチの少なくとも幾つかにフローテーブルエントリーを与える段階を含む。
【００９７】
別の実施形態によれば、前記パケット転送経路を識別することは、スイッチの少なくとも所与の１つに関連したネットワークスイッチ能力を識別することを含む。
【００９８】
別の実施形態によれば、前記ネットワークスイッチ能力を識別することは、スイッチの所与の１つがパケットを変更できるかどうか決定することを含む。
【００９９】
別の実施形態によれば、ネットワークポリシーは、少なくとも幾つかのパケットをドロップすべきであることを明示する。
【０１００】
別の実施形態によれば、前記転送経路を発生することは、スイッチの少なくとも所与の１つに対して、パケットをドロップするようにその所与の１つのスイッチに指令するフローテーブルエントリーを発生することを含む。
【０１０１】
別の実施形態によれば、ネットワークポリシーは、パケットソースからパケット行先へ転送経路に沿ってパケットが流れることを許すべきであることを明示する。
【０１０２】
別の実施形態によれば、前記転送経路を発生することは、転送経路のスイッチに対して、パケットソースからパケット行先へパケットを転送するためのフローテーブルエントリーを発生することを含む。
【０１０３】
別の実施形態によれば、前記方法は、複数のネットワークプロトコルのどれがパケットに関連しているか識別することを含む。更に、前記方法は、どのプロトコルがパケットに関連していると識別されたかに基づいて複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別することを含む。
【０１０４】
別の実施形態によれば、前記方法は、複数のネットワークポリシーのどれがパケットソースに関連しているか決定することにより複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別することを含む。
【０１０５】
別の実施形態によれば、前記方法は、複数のネットワークポリシーのどれがパケット行先に関連しているか決定することにより複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別することを含む。
【０１０６】
別の実施形態によれば、第１のバーチャルスイッチは、少なくとも２つのスイッチからからのポートを含む。
【０１０７】
別の実施形態によれば、第１のバーチャルスイッチは、スイッチの所与の１つからのポートのサブセットより多くを含まず、且つスイッチの少なくとも付加的な１つからの少なくとも幾つかのポートを含む。
【０１０８】
別の実施形態によれば、パケットソースは、ネットワークアドレスを有し、そして前記方法は、そのネットワークアドレスに基づき第１のバーチャルスイッチに対してポートのグループにどのポートを含ませるか動的に決定することを含む。
【０１０９】
別の実施形態によれば、前記方法は、コントローラとで、そのコントローラにより受け取られたユーザ入力に基づいてポートのグループの各々にどのポートを含ませるか決定することを含む。
【０１１０】
別の実施形態によれば、スイッチのネットワークを介してパケットソースからパケット行先へパケットを転送する方法であって、スイッチは、ポートを含み、ポートのグループが各バーチャルスイッチを形成する方法が提供される。この方法は、コントローラとで、パケットを受け取ることを含む。この方法は、コントローラとで、パケットソースを識別するパケットからの情報に基づきバーチャルスイッチの中から進入バーチャルスイッチを識別することを含む。この方法は、更に、コントローラとで、パケット行先を識別するパケットからの情報に基づきバーチャルスイッチの中から退出バーチャルスイッチを識別することを含む。
【０１１１】
別の実施形態によれば、前記方法は、コントローラとで、進入バーチャルスイッチから退出バーチャルスイッチへ至るバーチャル経路を識別することを含む。
【０１１２】
別の実施形態によれば、前記方法は、コントローラとで、複数のネットワークポリシーのうちのどのネットワークポリシーをバーチャル経路に適用するか識別することを含む。
【０１１３】
別の実施形態によれば、前記方法は、コントローラとで、識別されたネットワークポリシー及び識別されたバーチャル経路に基づいてスイッチを通る転送経路を発生することを含む。
【０１１４】
別の実施形態によれば、前記方法は、コントローラとで、識別されたネットワークポリシーをパケットに適用すべきところの前記ポートの所与の１つを識別する情報をユーザから受け取ることを含む。
【０１１５】
一実施形態によれば、スイッチのネットワークを介してパケットソースからパケット行先へパケットを転送する方法であって、スイッチは、ポートを含み、ポートのグループが各バーチャルスイッチを形成する方法が提供される。この方法は、コントローラとで、ポートのどのグループが各バーチャルスイッチに関連しているか識別する情報をユーザから受け取ることを含む。この方法は、コントローラとで、複数のネットワークポリシーを識別する情報をユーザから受け取ることを含む。この方法は、コントローラとで、パケット行先及びパケットソースを識別するパケットからの情報から、パケットソースに関連した第１のバーチャルスイッチからパケット行先に関連した第２のバーチャルスイッチへ至るバーチャルスイッチを通るバーチャル経路を識別することを含む。この方法は、コントローラとで、バーチャル経路及び複数のネットワークポリシーの中からのネットワークポリシーに基づいてパケットソースからパケット行先へ至るスイッチを通るパケット転送経路を識別することを含む。
【０１１６】
別の実施形態によれば、前記方法は、パケットの情報から、複数のネットワークプロトコルのどれがパケットに関連しているか識別することを含む。前記方法は、プロトコルのどれがパケットに関連していると識別されたかに基づき複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別することを含む。
【０１１７】
別の実施形態によれば、前記方法は、複数のプロトコルポートのどれがパケットに関連しているか識別する情報をパケットから得ることを含む。前記方法は、プロトコルポートのどれがパケットに関連しているかに基づき複数のネットワークポリシーのどれをネットワークポリシーとして使用するか識別することを含む。
【０１１８】
以上の説明は、本発明の原理を単に例示したものに過ぎず、当業者であれば、本発明の精神及び範囲から逸脱せずに種々の変更がなされ得るであろう。
【符号の説明】
【０１１９】
１０：ネットワーク
１２：コンピューティング装置
１４：ネットワークスイッチ
１６：ネットワークリンク
１８：コントローラサーバー
２０：ルール
２４：コントロールユニット
２６：パケット処理ソフトウェア
２８：フローテーブル
３０：コントローラクライアント
３２：パケット処理回路
３４：入力／出力ポート
３８：ネットワークインターフェイス
４０：パケット処理ソフトウェア
４８、５０：ラインカード
５２：バックプレーン
５４、６４：コントロールソフトウェア
５８、６０：ネットワークプロトコルスタック
５６、６２：コントロールプロトコルスタック
６６：ネットワーク経路
６８：フローテーブルエントリー
７０：ヘッダ
７２：アクション
７４：統計値
７６：ヘッダフィールド
【図１】
0005864758.tif 000002
【図２】
0005864758.tif 000003
【図３】
0005864758.tif 000004
【図４】
0005864758.tif 000005
【図５】
0005864758.tif 000006
【図６Ａ】
0005864758.tif 000007
【図６Ｂ】
0005864758.tif 000008
【図６Ｃ】
0005864758.tif 000009
【図６Ｄ】
0005864758.tif 000010
【図７】
0005864758.tif 000011
【図８】
0005864758.tif 000012
【図９】
0005864758.tif 000013
【図１０Ａ】
0005864758.tif 000014
【図１０Ｂ】
0005864758.tif 000015
【図１０Ｃ】
0005864758.tif 000016
【図１０Ｄ】
0005864758.tif 000017
【図１１】
0005864758.tif 000018
【図１２】
0005864758.tif 000019
【図１３】
0005864758.tif 000020
【図１４】
0005864758.tif 000021