(57)【特許請求の範囲】
【請求項１】
ネットワークを管理するネットワークコントローラのための、第１の論理ドメインと第２の論理ドメインとの間で論理的にパケットをルーティングするように、前記ネットワーク内の複数のネットワーク要素を構成する方法であって、
前記第１の論理ドメインについての論理スイッチングを行うように第１の複数の管理されるエッジスイッチング要素を構成し、前記第２の論理ドメインについての論理スイッチングを行うように第２の複数の管理されるエッジスイッチング要素を構成する工程と、
前記第１又は第２の複数の管理されるエッジスイッチング要素の何れにも含まれず、特定の物理マシンにおいて第２レベルの管理されるスイッチング要素として動作する、特定の管理されるスイッチング要素を、前記第１及び第２の論理ドメインについての論理スイッチングを行うように構成する工程と、
前記特定の物理マシンのコンテナを、前記第１及び第２の論理ドメインのうちの一方から前記第１及び第２の論理ドメインのうちの他方へと送られるパケットについてのルータとして動作するように構成する工程と、を含み、
前記第２レベルの管理されるスイッチング要素は、前記第１及び第２の論理ドメインの間で送られるパケットを前記コンテナへと転送するように構成されており、
前記コンテナは、前記第２レベルの管理されるスイッチング要素から受け取られたパケットをルーティングし、前記ルーティングされたパケットを前記第２レベルの管理されるスイッチング要素へと返すように構成されている
ことを特徴とする方法。
【請求項２】
前記コンテナは名前空間であることを特徴とする、請求項１に記載の方法。
【請求項３】
前記名前空間をルータとして動作するように構成することは、前記名前空間のルーティングテーブルを構成することを含むことを特徴とする、請求項２に記載の方法。
【請求項４】
前記特定の管理されるスイッチング要素と、前記第１及び第２の管理される複数のエッジスイッチング要素のうちの管理されるエッジスイッチング要素と、の間のトンネルを確立するように、前記特定の管理されるスイッチング要素を構成する工程をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項５】
前記特定の管理されるスイッチング要素が前記トンネルを確立する前記管理されるエッジスイッチング要素は、前記第１及び第２の論理ドメインに所属する仮想マシンを伴うホストマシンで実行されるソフトウェアスイッチであることを特徴とする、請求項４に記載の方法。
【請求項６】
ルーティングするようにネットワークトラフィックを管理するホストとして構成されたコンピュータであって、
処理ユニットのセットと、
機械読み取り可能な媒体のセットとを備え、
前記機械読み取り可能な媒体のセットは、
前記処理ユニットのセットのうちの少なくとも１つの処理ユニットによって実行され、特定の論理ドメインのセットについてのルータを実装するルーティングテーブルを格納するコンテナと、
前記処理ユニットのセットのうちの少なくとも１つの処理ユニットによって実行され、前記コンテナとは別に前記コンピュータ上で動作する、管理されるソフトウェアスイッチング要素と、を備え、
前記管理されるソフトウェアスイッチング要素は、パケットの送信元及び宛先と直接パケットを交換する複数の管理されるエッジスイッチング要素と通信可能に結合され、
前記管理されるソフトウェアスイッチング要素は、前記パケットの前記送信元及び宛先と直接パケットを交換せず、
前記管理されるソフトウェアスイッチング要素は、前記管理されるエッジスイッチング要素と前記ルータを実装する前記コンテナとの間でのパケット転送を容易にするように構成された転送テーブルのセットを格納している
ことを特徴とするコンピュータ。
【請求項７】
前記ソフトウェアスイッチング要素は、ネットワークを通るトンネルを介して、前記エッジスイッチング要素のうちの少なくとも１つと通信可能に結合されていることを特徴とする、請求項６に記載のコンピュータ。
【請求項８】
前記エッジスイッチング要素のうちの少なくとも２以上もまたソフトウェアスイッチング要素であることを特徴とする、請求項６に記載のコンピュータ。
【請求項９】
前記コンテナは第１のルータを実装する第１のコンテナであり、
前記機械読み取り可能な媒体のセットはさらに、前記処理ユニットのセットに含まれる少なくとも１つの処理ユニットによって実行される第２のコンテナを格納しており、前記第２のコンテナは第２のルータを実装するための第２のルーティングテーブルを格納している
ことを特徴とする、請求項６に記載のコンピュータ。
【請求項１０】
前記ソフトウェアスイッチング要素によって格納される前記転送テーブルのセットは、前記第１及び第２のルータの間で、トラフィックが前記コンピュータから出ることなく、当該トラフィックを転送するように構成されていることを特徴とする、請求項９に記載のコンピュータ。
【請求項１１】
前記ルーティングテーブルは、前記ルータを介するデータフローを制御するためのエントリを格納する構成可能なテーブルであることを特徴とする、請求項６に記載のコンピュータ。
【請求項１２】
論理Ｌ２スイッチング及びＬ３ルーティングを実行するように複数の管理された転送要素（ＭＦＥ）を構成するために、少なくとも１つの処理ユニットによって実行されるプログラムであって、
前記プログラムは、
（ｉ）第１のＭＦＥがファーストホップＭＦＥである第１のマシンによって送られたパケットに対する、第１の論理スイッチング要素についての論理Ｌ２処理と、論理ルーティング要素についての論理Ｌ３ルーティングと、第２の論理スイッチング要素についての論理Ｌ２入口処理、及び（ｉｉ）前記第１のマシンへと送られるパケットに対する第１の論理スイッチング要素についての論理Ｌ２出口処理を実装するように前記第１のＭＦＥを構成するための、データレコードの第１のセットを生成し、
（ｉ）第２のＭＦＥがファーストホップＭＦＥである第２のマシンによって送られたパケットに対する、前記第２の論理スイッチング要素についての論理Ｌ２処理と、前記論理ルーティング要素についての論理Ｌ３ルーティングと、前記第１の論理スイッチング要素についての論理Ｌ２入口処理、及び（ｉｉ）前記第２のマシンに送られるパケットに対する前記第２の論理スイッチング要素についての論理Ｌ２出口処理を実装するように前記第２のＭＦＥを構成するための、データレコードの第２のセットを生成する
ための命令セットを備えることを特徴とするプログラム。
【請求項１３】
パケットを交換するためのトンネルを確立するように前記第１及び第２のＭＦＥを構成するための命令セットをさらに備えることを特徴とする、請求項１２に記載のプログラム。
【請求項１４】
前記トンネルを確立するように前記第１及び第２のＭＦＥを構成するための前記命令セットが、前記第２のマシンに対応する宛先アドレスを有するパケットを前記トンネルを介して前記第２のＭＦＥへと送るように前記第１のＭＦＥを構成するためのデータレコードの第３のセットを生成するための命令セットを備えることを特徴とする、請求項１３に記載のプログラム。
【請求項１５】
前記データレコードの第１のセットは、前記第１のマシンによって送られたパケットに対する前記第１の論理スイッチング要素についての前記論理Ｌ２処理の一部として、論理Ｌ２入口アクセス制御リスト（ＡＣＬ）動作を実行するように前記第１のＭＦＥを構成するためのものであることを特徴とする、請求項１２に記載のプログラム。
【請求項１６】
前記データレコードの第２のセットは、さらに、前記第２のマシンへと送られるパケットに対する前記第２の論理スイッチング要素についての前記論理Ｌ２出口処理の一部として、論理Ｌ２出口アクセス制御リスト（ＡＣＬ）動作を実行するように前記第２のＭＦＥを構成するためのものであることを特徴とする、請求項１２に記載のプログラム。
【請求項１７】
論理Ｌ２スイッチング及びＬ３ルーティングを実行するように複数の管理された転送要素（ＭＦＥ）を構成するための方法であって、
（ｉ）第１のＭＦＥがファーストホップＭＦＥである第１のマシンによって送られたパケットに対する、第１の論理スイッチング要素についての論理Ｌ２処理と、論理ルーティング要素についての論理Ｌ３ルーティングと、第２の論理スイッチング要素についての論理Ｌ２入口処理、及び（ｉｉ）前記第１のマシンへと送られるパケットに対する前記第１の論理スイッチング要素についての論理Ｌ２出口処理を実装するように、前記第１のＭＦＥを構成するためのデータレコードの第１のセットを生成し、
（ｉ）第２のＭＦＥがファーストホップＭＦＥである第２のマシンによって送られたパケットに対する、前記第２の論理スイッチング要素についての論理Ｌ２処理と、前記論理ルーティング要素についての論理Ｌ３ルーティングと、前記第１の論理スイッチング要素についての論理Ｌ２入口処理、及び（ｉｉ）前記第２のマシンへと送られるパケットに対する前記第２の論理スイッチング要素についての論理Ｌ２出口処理を実装するように、前記第２のＭＦＥを構成するためのデータレコードの第２のセットを生成する
工程を含むことを特徴とする方法。
【請求項１８】
前記第１の論理スイッチング要素は、前記第１のマシンを含むが前記第２のマシンを含まないマシンの第１のセットに結合し、前記第２の論理スイッチング要素は、前記第２のマシンを含むが前記第１のマシンを含まないマシンの第２のセットに結合し、前記論理ルーティング要素は前記第１及び第２の論理スイッチング要素に結合することを特徴とする、請求項１７に記載の方法。
【請求項１９】
前記第１のマシンによって送られた特定のパケットについて前記第１のＭＦＥによって実行される前記第１の論理スイッチング要素についての前記論理Ｌ２処理は、入口処理と、前記特定のパケットの宛先ＭＡＣアドレスに基づく論理スイッチングと、論理出口処理とを含むことを特徴とする、請求項１７に記載の方法。
【請求項２０】
前記データレコードの第１のセットは、さらに、前記第１のマシンによって送られた特定のパケットについて前記第２の論理スイッチング要素についての論理スイッチングを実行するように、前記第１のＭＦＥを構成するためのものであることを特徴とする、請求項１７に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
現在の多くの企業は、様々な接続、アプリケーション、及びシステムをサポートする、スイッチ、ハブ、ルータ、サーバ、ワークステーション、及び他のネットワークデバイスを含む、大規模で洗練されたネットワークを有する。仮想マシン移行（ｍｉｇｒａｔｉｏｎ）、動的ワークロード、マルチテナント機能、並びに、サービス及びセキュリティ構成の顧客に特有の品質を含む、コンピュータネットワーキングの増加する洗練度は、ネットワーク制御のためのより優れたパラダイムを必要とする。ネットワークは、伝統的に、個々の構成要素の低レベルの構成を介して管理されてきた。ネットワーク構成は、しばしば、基礎となるネットワークに依存し、例えば、アクセス制御リスト（「ＡＣＬ」）エントリによりユーザのアクセスをブロックすることは、ユーザの現在のＩＰアドレスを知ることを必要とする。より複雑なタスクは、より広範囲なネットワーク知識を必要とし、ゲストユーザのポート８０トラフィックに、ＨＴＴＰプロキシを通過することを強制することは、現在のネットワークトポロジ、及び、各ゲストの位置を知ることを必要とする。このプロセスは、ネットワークスイッチング要素が複数のユーザ間で共有される困難さを増加させるものである。
【０００２】
それに応じて、ソフトウェア定義ネットワーク（ＳＤＮ）と呼ばれる新しいネットワーク制御パラダイムに向けて成長している動きが存在する。ＳＤＮパラダイムでは、ネットワーク内の１つ又は複数のサーバ上で動作するネットワークコントローラが、共有されるネットワークスイッチング要素の転送動作をユーザごとに管理する制御論理を、制御し、維持し、実装する。ネットワーク管理上の決定を行うことは、しばしば、ネットワーク状態の知識を必要とする。管理意思決定を容易にするために、ネットワークコントローラは、ネットワーク状態のビューを作成及び維持し、アプリケーションプログラミングインタフェースを提供し、アプリケーションプログラミングインタフェース上で、管理アプリケーションは、ネットワーク状態のビューにアクセスすることができる。
【０００３】
（データセンタ及び企業ネットワークの両方を含む）大規模なネットワークを維持することの主な目標のいくつかは、スケーラビリティ、モビリティ、及びマルチテナント機能である。これらの目標の１つに対処するためにとられた多くのアプローチは、結果として、他の目標の少なくとも１つを妨げた。例えば、Ｌ２ドメイン内の仮想マシンのネットワークモビリティを容易に提供することができるが、Ｌ２ドメインは、大きなサイズに拡張することができない。さらに、ユーザの分離を維持することは、モビリティを複雑にする。このように、スケーラビリティ、モビリティ、及びマルチテナント機能を満足することができる改善された解決法が必要である。
【発明の概要】
【０００４】
いくつかの場合のいくつかの実施形態は、論理ルーティングを、Ｌ３ドメイン内で動作する論理データパスセット（ＬＤＰＳ）を実装する論理ルータによってＬ２ドメイン内で動作する２つ以上の論理データパス（ＬＤＰ）セットを相互接続する行為としてモデル化する。論理Ｌ２ドメインから別のものに横断するパケットは、いくつかの実施形態では、以下の４つのステップをとることになる。これらの４つのステップは、ネットワーク制御システムが実現する論理処理動作に関して以下に説明される。しかしながら、これらの動作は、ネットワーク制御システムによって生成される物理制御プレーンデータに基づいて、ネットワークの管理されるスイッチング要素によって実行されることを理解すべきである。
【０００５】
第１に、パケットは、送信元の論理Ｌ２ドメインのＬ２テーブルパイプラインを介して処理されることになる。パイプラインは、論理ルータの論理ポートに取り付けられた論理ポートに転送されている宛先媒体アクセス制御（ＭＡＣ）アドレスで終わることになる。
【０００６】
第２に、パケットは、再び、それを論理ルータのＬ３テーブルパイプラインを介して送信することによって、この論理ルータのＬ３データパスを介して処理されることになる。論理ルータは、ルーティングを必要とするパケットを受信するだけであるため、物理ルータ内の一般的なＬ２ルックアップステージは、いくつかの実施形態では、ルータのＬ３データパス内でスキップされる。
【０００７】
いくつかの実施形態では、Ｌ３転送決定は、論理ルータの論理制御プレーンによって供給されるプレフィックス（転送情報ベース（ＦＩＢ））エントリを使用することになる。いくつかの実施形態では、論理制御プレーンデータを受信し、このデータを、次にネットワーク制御システムに供給される論理転送プレーンデータに変換するために、制御アプリケーションが使用される。Ｌ３転送決定のために、いくつかの実施形態は、最長のプレフィックス一致を実現するために、プレフィックスＦＩＢエントリを使用する。
【０００８】
結果として、Ｌ３ルータは、パケットを、宛先Ｌ２ＬＤＰＳに「接続」された論理ポートに転送することになる。パケットをさらにそのＬＤＰＳに転送する前に、Ｌ３ルータは、送信元のＭＡＣアドレスを、そのドメインで定義されるものに変更し、同時に、宛先ＩＰアドレスを宛先ＭＡＣアドレスに解決することになる。解決は、いくつかの実施形態では、Ｌ３データパイプラインの最後の「ＩＰ出力」ステージによって実行される。同じパイプラインは、ＴＴＬを減分し、チェックサムを更新することになる（そして、ＴＴＬがゼロになる場合、ＩＣＭＰで応答する）。
【０００９】
いくつかの実施形態は、ＭＡＣアドレスの書き換えなしでは、異なる転送決定が、次のＬＤＰＳで結果として生じる可能性があるため、処理されたパケットを次のＬＤＰＳに供給する前に、ＭＡＣアドレスを書き換えることに留意すべきである。従来のルータが、ＡＲＰを使用して宛先ＩＰアドレスの解決を実行するとしても、ネクストホップが論理Ｌ２データパスである限り、この解決は、仮想化アプリケーション内部のままであるため、いくつかの実施形態は、Ｌ３論理ルータ内でこの目的のためにＡＲＰを使用しないことにも留意すべきである。
【００１０】
第３に、パケットは、宛先論理Ｌ２ドメインのＬ２テーブルパイプラインを介して処理されることになる。宛先Ｌ２テーブルパイプラインは、論理出口ポートを決定し、論理出口ポートに沿って、パケットを送信すべきである。未知のＭＡＣアドレスの場合、このパイプラインは、何かの分散ルックアップメカニズムに依存することによって、ＭＡＣアドレス位置を解決することになる。いくつかの実施形態では、管理されるスイッチング要素は、ＭＡＣ学習アルゴリズムに依存し、例えば、それらは、未知のパケットをフラッドする。これら又は他の実施形態では、ＭＡＣアドレス位置情報は、他のメカニズム、例えば、アウトオブバンドによって得ることもできる。このようなメカニズムがいくつかの実施形態で利用可能な場合、最後の論理Ｌ２テーブルパイプラインは、ＭＡＣアドレス位置を得るために、このメカニズムを使用する。
【００１１】
第４に、パケットは、論理ポートアタッチメントを表す物理ポートに取り付けられた論理ポートに送信される。このステージでは、ポートがポイントツーポイント媒体（例えば、仮想ネットワークインタフェース、ＶＩＦ）である場合、やり残したものは何もなく、パケットをポートに送信する。しかしながら、最後のＬＤＰＳがＬ３ルータであり、したがって、アタッチメントが物理Ｌ３サブネットである場合、アタッチメントポイントは、いくつかの実施形態では、パケットを送信する前に、ＡＲＰを使用して宛先ＩＰアドレスを解決する。その場合には、送信元ＭＡＣアドレスは、出口の指定であり、ＶＩＦの場合の論理ＭＡＣインタフェースアドレスではない。他の実施形態では、ＡＲＰを使用して宛先ＩＰアドレスを解決することは、第２のステップ中に、Ｌ３論理ルータによって実行される。
【００１２】
上記の例では、論理Ｌ２データパスと相互接続する単一の論理ルータのみが存在するが、トポロジを制限するものは何もない。当業者は、より多くのＬＤＰセットが、よりリッチなトポロジのために相互接続されてよいことを認識するであろう。
【００１３】
いくつかの実施形態では、制御アプリケーションは、Ｌ３特有の論理状態が、論理Ｌ３パイプラインを指定する１つ又は複数のテーブルに関して定義されることを可能にする。ＬＤＰＳパイプラインを管理する対応する論理制御プレーンは、静的なルート構成、又は、標準的なルーティングプロトコル上の他のＬＤＰＳセットを有するピアに依存することができる。
【００１４】
いくつかの実施形態では、仮想化アプリケーションは、上述した４ステップのＬ２／Ｌ３パケット処理の物理制御プレーンデータへの物理的実現を定義し、物理制御プレーンデータは、管理されるスイッチング要素によって物理転送データに変換されると、一連の論理パイプライン実行を実施し、一連のパイプライン実行は、すべて又は主として、最初のホップの管理されるエッジスイッチング要素で実行される。物理トラフィックの局所性を維持するために、最初のホップは、一連のパイプラインを（必要なすべての状態で）実行し、物理ネットワークの最終的な出口位置に向けてトラフィックを直接送信する。ショートカットトンネルが使用される場合、仮想化アプリケーションは、ショートカットトンネルメッシュを、単一のＬＤＰＳを超えて、すべての相互接続されたＬＤＰセットのポートの結合に拡張することによって、論理Ｌ２データパスを論理Ｌ３データパスと相互接続する。最初のホップですべてが実行される場合、最初のホップ要素は、典型的には、パケットが横断する論理ネットワークのすべての状態にアクセスを有する。
【００１５】
前述の概要は、本発明のいくつかの実施形態への簡単な導入として役立つことを意図している。それは、本文献で開示されたすべての発明の主題の導入又は概観であることを意味しない。以下の詳細な説明、及び、詳細な説明で参照される図面は、概要に記載された実施形態、並びに、他の実施形態をさらに説明することになる。したがって、本文献によって説明されるすべての実施形態を理解するために、概要、詳細な説明、及び図面の完全な検討が必要とされる。さらに、特許請求された主題は、主題の要旨から逸脱することなく、他の特定の形態で具体化されてよいため、特許請求された主題は、概要、詳細な説明、及び図面の例示的な詳細によって限定されるべきではなく、添付の特許請求の範囲によって定義されるべきである。
【００１６】
本発明の新規な特徴は、添付の特許請求の範囲に記載される。しかしながら、説明の目的のため、本発明のいくつかの実施形態は、以下の図面に記載される。
【図面の簡単な説明】
【００１７】
【図１】いくつかの実施形態のネットワークアーキテクチャを概念的に示す図である。
【図２】論理スイッチ及び論理ルータを介してネットワークデータを処理するいくつかの実施形態の処理パイプラインを概念的に示す図である。
【図３】論理ルータが単一のＬ３ルータで実装されるネットワークアーキテクチャを概念的に示す図である。
【図４】論理ルータが管理されるスイッチング要素で実装されるネットワークアーキテクチャを概念的に示す図である。
【図５】いくつかの管理されるスイッチング要素の各々がＬ３でパケットをルーティングするように、ルータが分散的に実装されるネットワークアーキテクチャを概念的に示す図である。
【図６】図２を参照して上述した論理処理パイプラインの例示的な実装を概念的に示す図である。
【図７】論理スイッチ、論理ルータ、及び論理スイッチを介してパケットを処理するいくつかの実施形態の論理処理パイプラインを概念的に示す図である。
【図８】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図９】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図１０】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図１１】管理されるスイッチング要素及びＬ３を含むいくつかの実施形態のホストの例示的なアーキテクチャを概念的に示す図である。
【図１２】管理されるスイッチング要素内の論理スイッチ及び論理ルータ、並びにＬ３ルータの例示的な実装を概念的に示す図である。
【図１３Ａ】図１２を参照して上述した管理されるスイッチング要素内に実装されている論理スイッチ、論理ルータ、及びＬ３ルータの例示的な動作を概念的に示す図である。
【図１３Ｂ】図１２を参照して上述した管理されるスイッチング要素内に実装されている論理スイッチ、論理ルータ、及びＬ３ルータの例示的な動作を概念的に示す図である。
【図１３Ｃ】図１２を参照して上述した管理されるスイッチング要素内に実装されている論理スイッチ、論理ルータ、及びＬ３ルータの例示的な動作を概念的に示す図である。
【図１４】いくつかの実施形態が、どの管理されるスイッチング要素にパケットを送信するかを決定するために、パケットを転送するために実行するプロセスを概念的に示す図である。
【図１５】図８を参照して上述したホストを概念的に示す図である。
【図１６】第１及び第２のＬ３ルータが同じホスト内に実装されている場合、いくつかの実施形態が、第１のＬ３ルータから第２のＬ３ルータにパケットを直接転送するために使用するプロセスを概念的に示す図である。
【図１７】図２を参照して上述した論理処理パイプラインの例示的な実装を概念的に示す図である。
【図１８】論理スイッチ、論理ルータ、及び別の論理スイッチを介してパケットを処理するいくつかの実施形態の論理処理パイプラインを概念的に示す図である。
【図１９】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図２０】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図２１】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図２２】論理ルータをフローエントリに基づいて実装する管理されるスイッチング要素を含むいくつかの実施形態のホストの例示的なアーキテクチャを概念的に示す図である。
【図２３】管理されるスイッチング要素内の論理スイッチ及び論理ルータの例示的な実装を概念的に示す図である。
【図２４】図２３を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
【図２５】図２を参照して上述した論理処理パイプラインの例示的な実装を概念的に示す図である。
【図２６】論理スイッチ、論理ルータ、及び別の論理スイッチを介してパケットを処理するいくつかの実施形態の論理処理パイプラインを概念的に示す図である。
【図２７】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図２８】論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
【図２９】転送及びルーティングするために、受信されたパケットへのＬ２及びＬ３のすべての処理を実行する最初のホップのスイッチング要素の一例を概念的に示す図である。
【図３０Ａ】図２９を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
【図３０Ｂ】図２９を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
【図３１】管理されるスイッチング要素が動作するホストの例示的なソフトウェアアーキテクチャを概念的に示す図である。
【図３２】いくつかの実施形態がネットワークアドレスを変換するために実行するプロセスを概念的に示す図である。
【図３３】いくつかの実施形態の最初のホップのスイッチング要素が、ＮＡＴ動作を含む論理処理パイプライン全体を実行することを概念的に示す図である。
【図３４】帰ってくるパケットを管理されるスイッチング要素に送信する場合、管理されるスイッチング要素は、論理処理パイプラインを実行しない例を概念的に示す図である。
【図３５】アドレスがＮＡＴされる宛先マシンにパケットを送信するためにいくつかの実施形態が実行するプロセスを概念的に示す図である。
【図３６】第１のホストから第２のホストへのＶＭ移行として、第１のホストから第２のホストへＮＡＴ状態を移行する一例を示す図である。
【図３７】第１のホストから第２のホストへのＶＭ移行として、第１のホストから第２のホストへＮＡＴ状態を移行する別の例を示す図である。
【図３８】負荷分散を実行する論理スイッチ及び論理ルータの例示的な物理的実装を示す図である。
【図３９】負荷分散を実行する論理スイッチ及び論理ルータの別の例示的な物理的実装を示す図である。
【図４０】負荷分散を実行する論理スイッチ及び論理ルータのさらに別の例示的な物理的実装を示す図である。
【図４１】サービス（例えば、ウェブサービス）を集合的に提供するマシン間で負荷を分散する負荷分散デーモンを概念的に示す図である。
【図４２】異なるユーザのための異なる論理ネットワークにＤＨＣＰサービスを提供するＤＨＣＰデーモンを示す図である。
【図４３】中央のＤＨＣＰデーモン、及び、いくつかのローカルのＤＨＣＰデーモンを示す図である。
【図４４】最後のホップのスイッチング要素でいくつかの論理処理を実行する一例を概念的に示す図である。
【図４５Ａ】図４４を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
【図４５Ｂ】図４４を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
【図４６】最後のホップのスイッチング要素でいくつかの論理処理を実行する一例を概念的に示す図である。
【図４７Ａ】図４６を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
【図４７Ｂ】図４６を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
【図４８】管理されるスイッチング要素が動作するホストの例示的なソフトウェアアーキテクチャを概念的に示す図である。
【図４９】いくつかの実施形態がネットワークアドレスを解決するために実行するプロセスを概念的に示す図である。
【図５０】それぞれがＬ３デーモンを実行するいくつかのホスト（又はＶＭ）が、ＡＲＰ要求のブロードキャスティングを回避することを可能にするマップサーバを示す図である。
【図５１】いくつかの実施形態が、ＩＰ及びＭＡＣアドレスのマッピングを含むマッピングテーブルを維持するために実行するプロセスを示す図である。
【図５２】いくつかの実施形態が、ＩＰ及びＭＡＣアドレスのマッピングを含むマッピングテーブルを維持するために実行するプロセスを示す図である。
【図５３】いくつかの実施形態のコントローラインスタンスが、ｎＬｏｇのようなテーブルマッピングプロセッサ（図示せず）を使用してテーブル上のテーブルマッピング動作を実行することによって、フローを生成することを概念的に示す図である。
【図５４】例示的なアーキテクチャ及びユーザインタフェースを示す図である。
【図５５】図５４を参照して上述したステージの前のテーブルを示す図である。
【図５６】ユーザが、論理ポートを論理ルータに加えるために、論理ポートの識別子、ポートに関連付けるＩＰアドレス、及び、ネットマスクを供給した後のテーブルを示す図である。
【図５７】テーブルマッピング動作のセットの結果を示す図である。
【図５８】テーブルマッピング動作のセットの結果を示す図である。
【図５９】図５４を参照して上述したステージの後のテーブルを示す図である。
【図６０】テーブルマッピング動作のセットの結果を示す図である。
【図６１】テーブルマッピング動作のセットの結果を示す図である。
【図６２】図６１を参照して上述したステージの後のテーブルのいくつかに追加された新しい行を示す図である。
【図６３】図５５〜６２を参照して上述したテーブルマッピング動作を実行することによって、制御アプリケーションが論理データを生成した後のアーキテクチャを示す図である。
【図６４】本発明のいくつかの実施形態が実装されるのに用いられる電子システムを概念的に示す図である。
【発明を実施するための形態】
【００１８】
本発明のいくつかの実施形態は、論理データパス（ＬＤＰ）セット（例えば、論理ネットワーク）が、物理ネットワークのスイッチング要素によって実装されることを可能にするネットワーク制御システムを提供する。ＬＤＰセットを実装するために、いくつかの実施形態のネットワーク制御システムは、論理転送プレーンデータから物理制御プレーンデータを生成する。物理制御プレーンデータは、次に、管理されるスイッチング要素にプッシュされ、そこで、典型的には、物理転送プレーンデータに変換され、物理転送プレーンデータは、管理されるスイッチング要素がそれらの転送決定を実行することを可能にする。物理転送データに基づいて、管理されるスイッチング要素は、物理制御プレーンデータ内で指定される論理処理ルールにしたがって、データパケットを処理することができる。
【００１９】
単一の論理データパスセットは、物理エンドポイント又は仮想エンドポイントのいずれかに取り付けることができるいくつかの論理ポートを相互接続するために、スイッチングファブリックを提供する。いくつかの実施形態では、このようなＬＤＰセット及び論理ポートの作成及び使用は、仮想ローカルエリアネットワーク（ＶＬＡＮ）に対応する論理サービスモデルを提供する。このモデルは、いくつかの実施形態では、ネットワーク制御システムの動作を、論理Ｌ２スイッチング機能のみの定義に制限する。しかしながら、他の実施形態は、ネットワーク制御システムの動作を、論理Ｌ２スイッチング機能及び論理Ｌ３スイッチング機能の両方に拡張する。
【００２０】
いくつかの実施形態のネットワーク制御システムは、以下の論理Ｌ３スイッチング機能をサポートする。
・論理ルーティング。パケットのためのＬ２スイッチングだけを実行する代わりに、いくつかの実施形態のネットワーク制御システムは、また、Ｌ２ブロードキャストドメイン（ＩＰサブネット）を横切る場合、インターネットプロトコル（ＩＰ）アドレスに基づいてパケットを転送するように、管理されるスイッチング要素に命令するために、物理制御プレーンデータを定義する。このような論理Ｌ３ルーティングは、Ｌ２ネットワークのスケーラビリティの問題を解決する。
・ゲートウェイ仮想化。純粋なＬ２インタフェースを使用することによって外部ネットワークとインタフェースする代わりに、いくつかの実施形態のネットワーク制御システムは、外部ネットワークと相互作用するために、ＩＰインタフェースを使用することができる。いくつかの実施形態では、ネットワーク制御システムは、外部ネットワークに対する複数の物理出口ポイント及び入口ポイントが存在する場合でも、単一の論理ゲートウェイを定義することによって、このようなＩＰインタフェースを定義する。したがって、いくつかの実施形態は、ゲートウェイ仮想化を使用することによって、外部ＩＰネットワークとインタフェースする。
・ネットワークアドレス変換。Ｌ３サブネット全体が、変換された（ＮＡＴされた）ネットワークアドレスであってよい。いくつかの実施形態では、論理ネットワークは、プライベートアドレスを使用し、外部ネットワークのためのＮＡＴされたＩＰアドレスのみを公開する。さらに、いくつかの実施形態では、論理ネットワークのサブネットは、きめ細かいアプリケーションレベルのルーティング決定を実施するために、ＮＡＴを介して相互接続し、又は、宛先ＮＡＴ処理を使用する。
・ステートフルフィルタリング。ＮＡＴ処理と同様に、いくつかの実施形態は、ステートフルアクセス制御リスト（ＡＣＬ）を使用することによって、サブネットを外部ネットワークから分離する。また、いくつかの実施形態は、ＡＣＬを論理サブネット間に配置する。
・負荷分散。いくつかの場合では、サービスを提供するために、論理ネットワークが使用される。これら及び他の場合に関して、ネットワーク制御システムは、アプリケーションクラスタのための仮想ＩＰアドレスを提供する。いくつかの実施形態では、ネットワーク制御システムは、負荷分散動作を指定し、負荷分散動作は、入りアプリケーショントラフィックを論理ＩＰアドレスのセットに対して拡散させることができる。
・ＤＨＣＰ。仮想マシン（ＶＭ）は、論理ネットワーク内で動的ＩＰアドレス割り当てサービスを提供するように設定することができるが、サービスプロバイダは、インフラストラクチャレベルでの動的ホスト構成プロトコル（ＤＨＣＰ）サービスのより効率的な実現を好む可能性がある。したがって、いくつかの実施形態のネットワーク制御システムは、インフラストラクチャレベルでのＤＨＣＰサービスの効率的な実現を提供する。
【００２１】
これらのＬ３機能のそれぞれに関する設計を以下に説明する。実装に関して、機能は、大部分独立しているため、当業者は、これらの機能が、いくつかの実施形態のネットワーク制御システムによってすべて提供される必要はないことを理解するであろう。さらに機能を説明する前に、いくつかの仮定が言及されるべきである。これらの仮定は、以下の様なものである。
・大規模ネットワーク。複数のＬ２ネットワークにまたがる論理Ｌ３ネットワークは、論理Ｌ２ネットワークより大きくなる。いくつかの実施形態は、マップリデュース分散処理技術を使用することによって、１０Ｋサーバと同じくらい大きいサーバクラスタに関する論理Ｌ３の問題を解決する。
・物理トラフィック非局所性。データセンタ内の論理サブネットは、データセンタ内でかなりのトラフィックを交換する可能性がある。いくつかの実施形態は、トラフィックの局所性を、これが可能な程度に維持する。上述したマップリデュース例では、トラフィックは、エンドポイントに関して局所性を持たない。
・論理トラフィック局所性。論理サブネット間で交換されるトラフィックになると、局所性は実際に存在する。すなわち、すべての論理ネットワークが、上述したマップリデュースクラスタに関するクライアントを持つわけではない。
・機能の配置。参照により本明細書に組み込まれる米国特許出願第１３／１７７，５３５号に記載のように、管理されるスイッチング要素は、いくつかの実施形態では、（１）物理ネットワークのエッジスイッチング要素（すなわち、物理ネットワークによって接続された仮想又は物理コンピューティングデバイスとの直接接続を有するスイッチング要素）、並びに、（２）制御されるエッジスイッチング要素の動作を単純に及び／又は容易にするために、管理されるスイッチング要素階層内に挿入される非エッジスイッチング要素である。米国特許出願第１３／１７７，５３５号にさらに記載のように、エッジスイッチング要素は、いくつかの実施形態では、（１）ネットワークによって接続された仮想又は物理コンピューティングデバイスとの直接接続を有するスイッチング要素、並びに、（２）ネットワークの第１の管理される部分を、ネットワークの第２の管理される部分（例えば、第１の管理される部分と異なる物理的位置内の部分）、又は、ネットワークの管理されない部分（例えば、企業の内部ネットワーク）に接続するインテグレーション要素（エクステンダと呼ばれる）である。いくつかの実施形態は、論理Ｌ３ルーティングを、理想的には、第１の管理されるエッジスイッチング要素で、すなわち、最初のホップエッジスイッチング要素で実行し、第１の管理されるエッジスイッチング要素は、物理ネットワークによって相互接続される仮想マシンもホストするハイパーバイザ内で実装されてよい。いくつかの実施形態のネットワーク制御システムは、このとき、非エッジスイッチング要素（内部ネットワーク）を、デバイスを相互接続するファブリックに過ぎないものとして考えることができるため、理想的には、最初のホップスイッチング要素は、Ｌ３ルーティングのすべて又は大部分を実行する。
【００２２】
以下に記載の実施形態のいくつかは、１つ又は複数の共有転送要素を管理するための１つ又は複数のコントローラ（以下、コントローラインスタンスとも呼ばれる）によって形成される新規の分散ネットワーク制御システムで実施される。いくつかの実施形態での共有転送要素は、仮想若しくは物理ネットワークスイッチ、ソフトウェアスイッチ（例えば、Ｏｐｅｎ  ｖＳｗｉｔｃｈ）、ルータ、及び／又は、他のスイッチングデバイス、並びに、これらのスイッチ、ルータ、及び／又は他のスイッチングデバイス間の接続を確立する任意の他のネットワーク要素（負荷分散装置、などのような）を含むことができる。このような転送要素（例えば、物理スイッチ又はルータ）は、以下、スイッチング要素とも呼ばれる。既製のスイッチとは対照的に、ソフトウェア転送要素は、いくつかの実施形態では、そのスイッチングテーブル（複数可）及び論理を独立デバイス（例えば、独立コンピュータ）のメモリに格納することによって形成されるスイッチであり、他の実施形態では、そのスイッチングテーブル（複数可）及び論理を、ハイパーバイザ、及び、そのハイパーバイザ上の１つ又は複数の仮想マシンも実行するデバイス（例えば、コンピュータ）のメモリに格納することによって形成されるスイッチである。
【００２３】
いくつかの実施形態では、コントローラインスタンスは、システムが、ユーザからの論理データパスセットを受け入れ、これらの論理データパスセットを実装するためにスイッチング要素を構成することを可能にする。いくつかの実施形態では、コントローラインスタンスの１つのタイプは、１つ又は複数のモジュールを実行するデバイス（例えば、汎用コンピュータ）であり、１つ又は複数のモジュールは、論理制御プレーンからのユーザ入力を、論理転送プレーンに変換し、次に、論理転送プレーンデータを、物理制御プレーンデータに変換する。いくつかの実施形態でのこれらのモジュールは、制御モジュール及び仮想化モジュールを含む。制御モジュールは、ユーザが、論理データパスセットを指定し、ポピュレートすることを可能にし、仮想化モジュールは、論理データパスセットを物理スイッチングインフラストラクチャ上にマッピングすることによって、指定された論理データパスセットを実装する。いくつかの実施形態では、制御アプリケーション及び仮想化アプリケーションは、２つの別個のアプリケーションであり、他の実施形態では、それらは、同じアプリケーションの一部である。
【００２４】
特定の論理データパスセットのための論理転送プレーンデータから、いくつかの実施形態の仮想化モジュールは、ユニバーサル物理制御プレーン（ＵＰＣＰ）データを生成し、ＵＰＣＰデータは、論理データパスセットを実装する任意の管理されるスイッチング要素の一般的なものである。いくつかの実施形態では、この仮想化モジュールは、特定の論理データパスセットのためのマスタコントローラであるコントローラインスタンスの一部である。このコントローラは、論理コントローラと呼ばれる。
【００２５】
いくつかの実施形態では、ＵＰＣＰデータは、次に、特定の管理されるスイッチング要素のためのマスタ物理コントローラインスタンスであるコントローラインスタンスによって、又は、「Ｃｈａｓｓｉｓ  Ｃｏｎｔｒｏｌｌｅｒ」という表題の、代理人整理番号ＮＣＲＡ．Ｐ００８１を有する同時出願の米国特許出願＊＊にさらに記載されるような、特定の管理されるスイッチング要素のためのシャーシコントローラによって、各々の特定の管理されるスイッチング要素のためのカスタマイズされた物理制御プレーン（ＣＰＣＰ）データに変換され、この同時出願の米国特許出願は、参照により本明細書に組み込まれる。シャーシコントローラがＣＰＣＰデータを生成する場合、シャーシコントローラは、物理コントローラを介して、論理コントローラの仮想化モジュールからＵＰＣＰデータを取得する。
【００２６】
物理コントローラ又はシャーシコントローラのいずれがＣＰＣＰデータを生成するのかにかかわらず、特定の管理されるスイッチング要素のためのＣＰＣＰデータは、管理されるスイッチング要素に伝播される必要がある。いくつかの実施形態では、ＣＰＣＰデータは、ネットワーク情報ベース（ＮＩＢ）データ構造を介して伝播され、ＮＩＢデータ構造は、いくつかの実施形態では、オブジェクト指向データ構造である。ＮＩＢデータ構造を使用することのいくつかの例は、参照により本明細書に組み込まれる米国特許出願第１３／１７７，５２９号及び第１３／１７７，５３３号に記載されている。これらの出願に記載のように、ＮＩＢデータ構造は、また、異なるコントローラインスタンス間の通信媒体として働くことができるように、そして、論理データパスセット（例えば、論理スイッチング要素）、及び／又は、これらの論理データパスセットを実装する管理されるスイッチング要素に関するデータを格納するように、いくつかの実施形態で使用される。
【００２７】
しかしながら、他の実施形態は、ＣＰＣＰデータを物理コントローラ又はシャーシコントローラから管理されるスイッチング要素に伝播させるために、コントローラインスタンス間で通信するために、並びに、論理データパスセット及び／又は管理されるスイッチング要素に関するデータを格納するために、ＮＩＢデータ構造を使用しない。例えば、いくつかの実施形態では、物理コントローラ及び／又はシャーシコントローラは、ＯｐｅｎＦｌｏｗエントリを介して、管理されるスイッチング要素と通信し、構成プロトコルを介して更新する。また、いくつかの実施形態では、コントローラインスタンスは、データを交換するために、１つ又は複数の直接通信チャネル（例えば、ＲＰＣコール）を使用する。加えて、いくつかの実施形態では、コントローラインスタンス（例えば、これらのインスタンスの制御モジュール及び仮想化モジュール）は、リレーショナルデータベースデータ構造に書き込まれる記録に関して論理及び／又は物理データを表現する。いくつかの実施形態では、このリレーショナルデータベースデータ構造は、テーブルマッピングエンジン（ｎＬｏｇと呼ばれる）の入力及び出力テーブルの一部であり、テーブルマッピングエンジンは、コントローラインスタンスの１つ又は複数のモジュールを実装するために使用される。
【００２８】
Ｉ．論理ルーティング
いくつかの場合のいくつかの実施形態は、論理ルーティングを、Ｌ３ドメイン内で動作するＬＤＰＳを実装する論理ルータによってＬ２ドメイン内で動作する２つ以上のＬＤＰセットを相互接続する行為としてモデル化する。論理Ｌ２ドメインから別のものに横断するパケットは、いくつかの実施形態では、以下の４つのステップをとることになる。これらの４つのステップは、ネットワーク制御システムが実現する論理処理動作に関して以下に説明される。しかしながら、これらの動作は、ネットワーク制御システムによって生成される物理制御プレーンデータに基づいて、ネットワークの管理されるスイッチング要素によって実行されることを理解すべきである。
【００２９】
第１に、パケットは、送信元の論理Ｌ２ドメインのＬ２テーブルパイプラインを介して処理されることになる。パイプラインは、論理ルータの論理ポートに取り付けられた論理ポートに転送されている宛先媒体アクセス制御（ＭＡＣ）アドレスで終わることになる。
【００３０】
第２に、パケットは、再び、それを論理ルータのＬ３テーブルパイプラインを介して送信することによって、この論理ルータのＬ３データパスを介して処理されることになる。論理ルータは、ルーティングを必要とするパケットを受信するだけであるため、物理ルータ内の一般的なＬ２ルックアップステージは、いくつかの実施形態では、ルータのＬ３データパス内でスキップされる。
【００３１】
いくつかの実施形態では、Ｌ３転送決定は、論理ルータの論理制御プレーンによって供給されるプレフィックス（転送情報ベース（ＦＩＢ））エントリを使用することになる。いくつかの実施形態では、論理制御プレーンデータを受信し、このデータを、次にネットワーク制御システムに供給される論理転送プレーンデータに変換するために、制御アプリケーションが使用される。Ｌ３転送決定のために、いくつかの実施形態は、最長のプレフィックス一致を実現するために、プレフィックスＦＩＢエントリを使用する。
【００３２】
結果として、Ｌ３ルータは、パケットを、宛先Ｌ２ＬＤＰＳに「接続」された論理ポートに転送することになる。パケットをさらにそのＬＤＰＳに転送する前に、Ｌ３ルータは、送信元のＭＡＣアドレスを、そのドメインで定義されるものに変更し、同時に、宛先ＩＰアドレスを宛先ＭＡＣアドレスに解決することになる。解決は、いくつかの実施形態では、Ｌ３データパイプラインの最後の「ＩＰ出力」ステージによって実行される。同じパイプラインは、ＴＴＬを減分し、チェックサムを更新することになる（そして、ＴＴＬがゼロになる場合、ＩＣＭＰで応答する）。
【００３３】
いくつかの実施形態は、ＭＡＣアドレスの書き換えなしでは、次のＬＤＰＳで結果として異なる転送決定が生じる可能性があるため、処理されたパケットを次のＬＤＰＳに供給する前に、ＭＡＣアドレスを書き換えることに留意すべきである。従来のルータが、ＡＲＰを使用して宛先ＩＰアドレスの解決を実行するとしても、ネクストホップが論理Ｌ２データパスである限り、この解決は、仮想化アプリケーション内部のままであるため、いくつかの実施形態は、Ｌ３論理ルータ内でこの目的のためにＡＲＰを使用しないことにも留意すべきである。
【００３４】
第３に、パケットは、宛先論理Ｌ２ドメインのＬ２テーブルパイプラインを介して処理されることになる。宛先Ｌ２テーブルパイプラインは、論理出口ポートを決定し、論理出口ポートに沿って、パケットを送信すべきである。未知のＭＡＣアドレスの場合、このパイプラインは、何かの分散ルックアップメカニズムに依存することによって、ＭＡＣアドレス位置を解決することになる。いくつかの実施形態では、管理されるスイッチング要素は、ＭＡＣ学習アルゴリズムに依存し、例えば、それらは、未知のパケットをフラッドする。これら又は他の実施形態では、ＭＡＣアドレス位置情報は、他のメカニズム、例えば、アウトオブバンドによって得ることもできる。このようなメカニズムがいくつかの実施形態で利用可能な場合、最後の論理Ｌ２テーブルパイプラインは、ＭＡＣアドレス位置を得るために、このメカニズムを使用する。
【００３５】
第４に、パケットは、論理ポートアタッチメントを表す物理ポートに取り付けられた論理ポートに送信される。このステージでは、ポートがポイントツーポイント媒体（例えば、仮想ネットワークインタフェース、ＶＩＦ）である場合、やり残したものは何もなく、パケットをポートに送信する。しかしながら、最後のＬＤＰＳがＬ３ルータであり、したがって、アタッチメントが物理Ｌ３サブネットである場合、アタッチメントポイントは、いくつかの実施形態では、パケットを送出する前に、ＡＲＰを使用して宛先ＩＰアドレスを解決する。その場合には、送信元ＭＡＣアドレスは、出口の指定であり、ＶＩＦの場合の論理ＭＡＣインタフェースアドレスではない。他の実施形態では、ＡＲＰを使用して宛先ＩＰアドレスを解決することは、第２のステップ中に、Ｌ３論理ルータによって実行される。
【００３６】
上記の例では、論理Ｌ２データパスと相互接続する単一の論理ルータのみが存在するが、トポロジを制限するものは何もない。当業者は、より多くのＬＤＰセットが、よりリッチなトポロジのために相互接続されてよいことを認識するであろう。
【００３７】
いくつかの実施形態では、制御アプリケーションは、Ｌ３特有の論理状態が、論理Ｌ３パイプラインを指定する１つ又は複数のテーブルに関して定義されることを可能にする。ＬＤＰＳパイプラインを管理する対応する論理制御プレーンは、静的なルート構成、又は、標準的なルーティングプロトコル上の他のＬＤＰＳセットを有するピアに依存することができる。
【００３８】
いくつかの実施形態では、仮想化アプリケーションは、上述した４ステップのＬ２／Ｌ３パケット処理の物理制御プレーンデータへの物理的実現を定義し、物理制御プレーンデータは、管理されるスイッチング要素によって物理転送データに変換されると、一連の論理パイプライン実行を実施し、一連のパイプライン実行は、すべて又は主として、最初のホップの管理されるエッジスイッチング要素で実行される。物理トラフィックの局所性を維持するために、最初のホップは、一連のパイプラインを（必要なすべての状態で）実行し、物理ネットワークの最終的な出口位置に向けてトラフィックを直接送信する。ショートカットトンネルが使用される場合、仮想化アプリケーションは、ショートカットトンネルメッシュを、単一のＬＤＰＳを超えて、すべての相互接続されたＬＤＰセットのポートの結合に拡張することによって、論理Ｌ２データパスを、論理Ｌ３データパスと相互接続する。
【００３９】
最初のホップですべてが実行されると、最初のホップ要素は、典型的には、パケットが横断する論理ネットワークのすべての状態にアクセスを有する。最初のホップのスイッチング要素での論理パイプラインの実行に関する状態の配布（及び、そのスケーリングの意味）を、以下にさらに説明する。
【００４０】
図１は、いくつかの実施形態のネットワークアーキテクチャ１００を概念的に示す。具体的には、この図は、論理ルータ１０５が、２つのＬＤＰセット（例えば、論理ネットワーク）１５０及び１５５間でパケットをルーティングすることを示す。図示のように、ネットワークアーキテクチャ１００は、論理ルータ１０５、論理スイッチ１１０及び１１５、並びに、マシン１２０〜１４５を含む。
【００４１】
論理スイッチ１１０は、米国特許出願第１３／１７７，５３５号に記載の論理スイッチ（又は、論理スイッチング要素）である。論理スイッチ１１０は、いくつかの管理されるスイッチング要素（図示せず）にわたって実装される。論理スイッチ１１０は、Ｌ２（レイヤ２）でマシン１２０〜１３０間のネットワークトラフィックをルーティングする。すなわち、論理スイッチ１１０は、論理スイッチ１１０が有する１つ又は複数の転送テーブル（図示せず）に基づいて、マシン１２０〜１３０間で、データリンク層でネットワークデータをルーティングするために、スイッチング決定を行う。論理スイッチ１１０は、いくつかの他の論理スイッチ（図示せず）と共に、論理ネットワーク１５０に関するネットワークトラフィックをルーティングする。論理スイッチ１１５は、別の論理スイッチである。論理スイッチ１１５は、論理ネットワーク１５５に関するマシン１３５〜１４５間のトラフィックをルーティングする。
【００４２】
いくつかの実施形態での論理ルータは、異なる論理ネットワーク間で、Ｌ３（レイヤ３−ネットワークレイヤ）でトラフィックをルーティングする。具体的には、論理ルータは、ルーティングテーブルのセットに基づいて、２つ以上の論理スイッチ間でネットワークトラフィックをルーティングする。いくつかの実施形態では、論理ルータは、単一の管理されるスイッチング要素内で実装され、他の実施形態では、論理ルータは、いくつかの異なる管理されるスイッチング要素内で分散的に実装される。これらの異なる実施形態の論理ルータを、以下にさらに詳細に説明する。論理ルータ１０５は、論理ネットワーク１５０及び１５５間で、Ｌ３でネットワークトラフィックをルーティングする。具体的には、論理ルータ１０５は、２つの論理スイッチ１１０及び１１５間でネットワークトラフィックをルーティングする。
【００４３】
マシン１２０〜１４５は、データパケットを交換することができるマシンである。例えば、各マシン１２０〜１４５は、マシン１２０〜１４５上で実行するアプリケーションが、論理スイッチ１１０及び１１５並びに論理ルータ１０５を介してそれらの間でデータを交換することができるように、ネットワークインタフェースコントローラ（ＮＩＣ）を有する。
【００４４】
論理ネットワーク１５０及び１５５は、各ネットワーク内のマシンが、異なるＬ３アドレスを使用するという点で異なる。例えば、論理ネットワーク１５０及び１５５は、企業の２つの異なる部署のための異なるＩＰサブネットである。
【００４５】
動作中、論理スイッチ１１０及び１５５並びに論理ルータ１０５は、スイッチ及びルータのように機能する。例えば、論理スイッチ１１０は、マシン１２０〜１３０の１つから送信され、マシン１２０〜１３０の別のものに向かうデータパケットをルーティングする。論理ネットワーク１５０内の論理スイッチ１１０は、論理ネットワーク１１５内のマシン１３５〜１４５の１つ行きのデータパケットを受信し、論理スイッチ１１０は、パケットを論理ルータ１０５に送信する。論理ルータ１０５は、次に、パケットのヘッダに含まれる情報に基づいて、パケットを論理スイッチ１１５にルーティングする。論理スイッチ１１５は、次に、パケットをマシン１３５〜１４５の１つにルーティングする。マシン１３５〜１４５の１つから送信されたデータパケットは、同様に、論理スイッチ１１０及び１１５並びに論理ルータ１０５によってルーティングされる。
【００４６】
図１は、２つの論理ネットワーク１５０及び１５５間でデータをルーティングする単一の論理ルータを示す。当業者は、２つの論理ネットワーク間でパケットをルーティングすることに関与する複数の論理ルータが存在してよいことを認識するであろう。
【００４７】
図２は、論理スイッチ及び論理ルータを介してネットワークデータを処理するいくつかの実施形態の処理パイプライン２００を概念的に示す。具体的には、処理パイプライン２００は、論理スイッチ２２０、論理ルータ２２５、及び、次に論理スイッチ２３０をそれぞれ介してデータパケットを処理する３つのステージ２０５〜２１５を含む。この図は、図の上半分に論理ルータ２２５並びに論理スイッチ２２０及び２３０を示し、図の下半分に処理パイプライン２００を示す。
【００４８】
論理ルータ２２５は、論理ルータ２２５が、論理スイッチ２２０及び２２０間でデータパケットをルーティングするという点で、図１を参照して上述した論理ルータ１０５と同様である。論理スイッチ２２０及び２３０は、論理スイッチ１１０及び１１５と同様である。論理スイッチ２２０及び２３０は、それぞれ、論理ネットワークに関してＬ２でトラフィックを転送する。
【００４９】
論理スイッチ２２０がパケットを受信すると、論理スイッチ２２０は、パケットを一方の論理ネットワークで転送するために、論理処理パイプライン２００のステージ２０５（Ｌ２処理）を実行する。パケットが別の論理ネットワーク行きである場合、論理スイッチ２２０は、パケットを論理ルータ２２５に転送する。論理ルータ２２５は、次に、Ｌ３でデータをルーティングするために、パケットに論理処理パイプライン２００のステージ２１０（Ｌ３処理）を実行する。論理ルータ２２５は、このパケットを別の論理ルータ（図示せず）に送信し、又は、論理ルータ２２５が論理スイッチ２３０に結合されている場合、論理ルータ２２５は、パケットを論理スイッチ２３０に送信し、論理スイッチ２３０は、パケットをパケットの宛先マシンに直接送信する。パケットをパケットの宛先に直接送信する論理スイッチ２３０は、パケットをパケットの宛先に転送するために、論理処理パイプライン２００のステージ２１５（Ｌ２処理）を実行する。
【００５０】
いくつかの実施形態では、論理スイッチ及び論理ルータは、管理されるスイッチング要素のセット（図示せず）によって実装される。いくつかの実施形態のこれらの管理されるスイッチング要素は、論理処理パイプライン２００のような論理処理パイプラインを実行することによって、論理スイッチ及び論理ルータを実装する。いくつかの実施形態の管理されるスイッチング要素は、管理されるスイッチング要素のフローエントリに基づいて論理処理パイプラインを実行する。管理されるスイッチング要素のフローエントリ（図示せず）は、いくつかの実施形態のネットワーク制御システムによって構成される。論理処理パイプライン２００のより詳細は、以下でさらに説明する。
【００５１】
次の３つの図、図３、４、及び５は、いくつかの実施形態の論理スイッチ及び論理ルータのいくつかの実装を概念的に示す。図３及び４は、集中型Ｌ３ルーティングの２つの異なる実装を示し、図５は、分散型Ｌ３ルーティングを示す。
【００５２】
図３は、ネットワークアーキテクチャ３００を概念的に示す。具体的には、図３は、論理ルータ２２５が、単一のＬ３ルータ３６０（例えば、ハードウェアルータ又はソフトウェアルータ）に実装されることを示す。Ｌ３ルータ３６０は、異なる論理ネットワークに関するパケットをルーティングし、異なる論理ネットワークの各々は、いくつかの異なる管理されるスイッチング要素に実装されるいくつかの論理スイッチを含む。この図は、それぞれ論理的実装及び物理的実装を表す左半分及び右半分に水平方向に分割される。この図は、それぞれレイヤ２及びレイヤ３を表す下半分及び上半分に垂直方向にも分割される。図３は、Ｌ３ルータ３６０、並びに、管理されるスイッチング要素３０５、３１０、３１５、及び３２０を含むネットワークアーキテクチャ３００を示す。この図は、論理スイッチ２２０及び２３０の各々が、３つのＶＭに論理的に結合されることも示す。
【００５３】
Ｌ３ルータ３６０は、論理ルータ２２５を実装する。Ｌ３ルータ３６０は、論理スイッチ２２０及び２３０を含む異なる論理ネットワーク間でパケットをルーティングする。Ｌ３ルータ３６０は、パケットがＬ３でルーティングされるべき方法を指定するＬ３エントリ３３５にしたがってパケットをルーティングする。例えば、いくつかの実施形態のＬ３エントリは、ルーティングテーブル内のエントリ（例えば、ルート）であり、ルーティングテーブルは、ＩＰアドレスの特定の範囲内の宛先ＩＰアドレスを有するパケットが、論理ルータ２２５の特定の論理ポートを介して送出されるべきであることを指定する。いくつかの実施形態では、論理ルータ２２５の論理ポートは、Ｌ３ルータのポートにマッピングされ、論理ルータ２２５は、マッピングに基づいてＬ３エントリを生成する。論理ルータのポートを、論理ルータを実装するＬ３ルータにマッピングすることを、以下でさらに説明する。
【００５４】
いくつかの実施形態の管理されるスイッチング要素３０５〜３２０は、分散的に論理スイッチを実装する。すなわち、これらの実施形態での論理スイッチは、１つ又は複数の管理されるスイッチング要素３０５〜３２０にまたがって実装されてよい。例えば、論理スイッチ２２０は、管理されるスイッチング要素３０５、３１０、及び３１５にまたがって実装されてよく、論理スイッチ２３０は、管理されるスイッチング要素３０５、３１５、及び３２０にまたがって実装されてよい。論理スイッチ２２０及び２３０に論理的に結合される６つのＶＭ３６２〜３７４は、図示のように、管理されるスイッチング要素３１０〜３２０に結合される。
【００５５】
いくつかの実施形態の管理されるスイッチング要素３０５〜３２０は、それぞれ、パケットがＬ２で転送されるべき方法を指定するＬ２フローエントリにしたがってパケットを転送する。例えば、Ｌ２フローエントリは、特定の宛先ＭＡＣアドレスを有するパケットが、論理スイッチの特定の論理ポートを介して送出されるべきであることを指定することができる。管理されるスイッチング要素３０５〜３２０の各々は、Ｌ２フローエントリ３４０のセットを有する（スイッチング要素３０５〜３１５のためのフローエントリ３４０は、単純化のため示されない）。各々の管理されるスイッチング要素のためのＬ２フローエントリは、コントローラクラスタによって、管理されるスイッチング要素内に構成される。管理されるスイッチング要素のためのＬ２フローエントリを構成することによって管理されるスイッチング要素を構成することを、以下でさらに詳細に説明する。
【００５６】
いくつかの実施形態の管理されるスイッチング要素３０５は、第２のレベルの管理されるスイッチング要素である。第２のレベルの管理されるスイッチング要素は、管理されるエッジスイッチング要素とは対照的に、マシンとの間でパケットを直接送受信しない、管理される非エッジスイッチング要素である。第２のレベルの管理されるスイッチング要素は、非エッジの管理されるスイッチング要素と、エッジの管理されるスイッチング要素との間のパケット交換を容易にする。米国特許出願第１３／１７７，５３５号に記載されているプールノード及びエクステンダも、第２のレベルの管理されるスイッチング要素である。いくつかの実施形態の管理されるスイッチング要素３０５は、エクステンダとして機能する。すなわち、管理されるスイッチング要素３０５は、１つ又は複数の他のネットワーク（図示せず）によって分離されるリモートの管理されるネットワーク（図示せず）を、通信可能にブリッジする。
【００５７】
いくつかの実施形態の管理されるスイッチング要素３０５は、Ｌ３ルータ３６０に通信可能に結合される。Ｌ３でルーティングされる必要があるパケットが存在する場合、管理されるスイッチング要素３１０〜３２０は、Ｌ３ルータ３６０がパケットをＬ３でルーティングするように、管理されるスイッチング要素３０５にパケットを送信する。Ｌ３ルータに実装される集中型の論理ルータについてのさらなる詳細は、図６〜１６を参照して以下でさらに説明する。
【００５８】
図４は、ネットワークアーキテクチャ４００を概念的に示す。具体的には、図４は、論理ルータ２２５が、管理されるスイッチング要素４１０に実装されることを示す。Ｌ３ルータ３６０がＬ３でパケットをルーティングするネットワークアーキテクチャ３００と対照的に、管理されるスイッチング要素４１０は、ネットワークアーキテクチャ４００で、Ｌ３でパケットをルーティングする。この図は、それぞれ論理的実装及び物理的実装を表す左半分及び右半分に水平方向に分割される。この図は、それぞれレイヤ２及びレイヤ３を表す下半分及び上半分に垂直方向にも分割される。
【００５９】
ネットワークアーキテクチャ４００は、ネットワークアーキテクチャ４００がＬ３ルータ３６０を含まないことを除いて、ネットワークアーキテクチャ３００と同様である。管理されるスイッチング要素４１０は、論理ルータ２２５を実装する。すなわち、管理されるスイッチング要素４１０は、論理スイッチ２２０及び２３０を含む異なる論理ネットワーク間でパケットをルーティングする。いくつかの実施形態の管理されるスイッチング要素４１０は、パケットがＬ３でルーティングされるべきである方法を指定するＬ３エントリ４０５にしたがってパケットをルーティングする。しかしながら、いくつかの実施形態のＬ３エントリ３３５とは対照的に、Ｌ３エントリ４０５は、ルーティングテーブルに関するエントリではない。そうではなく、Ｌ３エントリ４０５は、フローエントリである。ルーティングテーブル内のエントリは、パケットの次のホップを見つけるための適切なルックアップテーブルであるが、米国特許出願第１３／１７７，５３５号に記載のように、フローエントリは、クォリファイア及びアクションを含む。また、Ｌ３フローエントリは、ルーティングテーブル（図示せず）内のエントリを生成させる方法を指定することができる。
【００６０】
集中型の論理ルータを実装することに加えて、いくつかの実施形態の管理されるスイッチング要素４１０は、いくつかの管理されるスイッチング要素にまたがって実装される１つ又は複数の論理スイッチを実装する。管理されるスイッチング要素４１０は、したがって、それ自体のＬ２フローエントリ３４０のセット（図示せず）を有する。アーキテクチャ４００では、管理されるスイッチング要素４１０及び３１０〜３２０は、一緒に、分散的に論理スイッチ２２０及び２３０を実装する。
【００６１】
いくつかの実施形態の管理されるスイッチング要素４１０は、このように、集中型論理ルータ及び論理スイッチの両方を実装する。他の実施形態では、集中型論理ルータ及び論理スイッチの実装は、２つ以上の管理されるスイッチング要素に分割されてよい。例えば、ある管理されるスイッチング要素（図示せず）は、フローエントリを使用して集中型論理ルータを実装することができ、別の管理されるスイッチング要素（図示せず）は、フローエントリに基づいて分散的に論理スイッチを実装することができる。フローエントリに基づいて管理されるスイッチング要素に実装される集中型論理ルータについてのさらなる詳細は、図１７〜２４を参照して以下でさらに説明する。
【００６２】
図５は、ネットワークアーキテクチャ５００を概念的に示す。具体的には、図５は、論理ルータ２２５が、いくつかの管理されるスイッチング要素の各々がＬ３でパケットをルーティングするように、分散的に実装されることを示す。図５は、ネットワークアーキテクチャ５００が、４つの管理されるスイッチング要素５０５〜５２０を含むことを示す。
【００６３】
管理されるスイッチング要素５０５〜５２０は、いくつかの異なる論理ネットワークに関する論理ルータ及びいくつかの論理スイッチを実装する。いくつかの実施形態の管理されるスイッチング要素５０５〜５２０の各々は、エッジスイッチング要素である。すなわち、管理されるスイッチング要素は、管理されるスイッチング要素に結合される１つ又は複数のマシンを有する。管理されるスイッチング要素に結合されるマシンは、論理スイッチにも論理的に結合される。管理されるスイッチング要素に結合されるマシンは、同じ論理スイッチには論理的に結合されてもされなくてもよい。
【００６４】
管理されるスイッチング要素５０５〜５２０の各々は、少なくとも１つの論理ルータ及び少なくとも１つの論理スイッチで実装され、少なくとも１つの論理ルータ及び少なくとも１つの論理スイッチは、管理されるスイッチング要素に結合されたマシンとの間でパケットをルーティング及び転送することになる。すなわち、管理されるスイッチング要素が、管理されるスイッチング要素に結合されたマシンからパケットを受信すると、管理されるスイッチング要素は、論理転送決定及び論理ルーティング決定の両方を行う。管理されるスイッチング要素５０５〜５２０の各々は、論理フローエントリ５５０内のＬ２エントリ及びＬ３エントリにしたがって、論理転送及びルーティング決定を行う。論理フローエントリ５５０は、Ｌ２フローエントリ５３０のセット及びＬ３フローエントリ５３５のセットを含む。分散型論理ルータについてのさらなる詳細は、図２５〜３０Ｂを参照して以下でさらに説明する。
【００６５】
図６〜１６は、ルータに実装された集中型論理ルータを示す。図６は、図２を参照して上述した論理処理パイプライン２００の例示的な実装を概念的に示す。図６は、ネットワークアーキテクチャ６００を示す。ネットワークアーキテクチャ６００では、論理処理パイプライン２００は、３つの管理されるスイッチング要素６１５、６２０、及び６２５、並びにＬ３ルータ６３５によって実行される。具体的には、Ｌ２処理２０５及びＬ２処理２１５は、管理されるスイッチング要素６１５、６２０、及び６２５にまたがって分散的に実行される。Ｌ３処理２１０は、Ｌ３ルータ６３５によって実行される。図６は、送信元マシン６１０及び宛先マシン６３０も示す。
【００６６】
管理されるスイッチング要素６１５は、エッジスイッチング要素に結合されたマシンからパケットを直接受信するエッジスイッチング要素である。管理されるスイッチング要素６１５は、送信元マシン６１０からパケットを受信する。管理されるスイッチング要素６１５が、送信元マシン６１０からパケットを受信すると、管理されるスイッチング要素６１５は、パケットを論理的に転送するために、パケットにＬ２処理２０５の一部を実行する。
【００６７】
管理されるスイッチング要素６１５と、管理されるスイッチング要素６２０との間に、１つ又は複数の管理されるスイッチング要素（図示せず）が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物（例えば、ＰＩＦ、ＶＩＦ、など）を有し、ネットワーク構成物には、論理スイッチ２２０（図６には示さず）の論理構成物（例えば、論理ポート）がマッピングされる。
【００６８】
パケットが、別の論理ネットワーク内にある宛先マシン６３０に向けられると、パケットは、管理されるスイッチング要素６２０に転送される。管理されるスイッチング要素６２０は、次に、Ｌ２処理２０５の残りを実行し、パケットを、集中型論理ルータ（図示せず）を実装するＬ３ルータ６３５に送信する。
【００６９】
図３を参照して上述したＬ３ルータ３６０と同様に、Ｌ３ルータ６３５は、ハードウェアルータ又はソフトウェアルータであり、そのポートは、論理ルータのポートにマッピングされる。Ｌ３ルータ６３５は、パケットを論理的にルーティングするために、パケットにＬ３処理２１０を実行する。すなわち、Ｌ３ルータ６３５は、パケットを、別の論理ルータ（図示せず）又は管理されるスイッチング要素６２０に送信する。
【００７０】
管理されるスイッチング要素６２０は、いくつかの実施形態では、エクステンダとして機能する第２のレベルの管理されるスイッチング要素である。管理されるスイッチング要素６２０は、Ｌ３ルータ６３５からパケットを受信し、論理処理パイプライン２００のＬ２処理２１５の実行を開始する。管理されるスイッチング要素６２０と、管理されるスイッチング要素６２５との間に、１つ又は複数の管理されるスイッチング要素（図示せず）が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ２３０（図６には示さず）の論理構成物がマッピングされる。
【００７１】
この例の管理されるスイッチング要素６２５は、管理されるスイッチング要素６２０からパケットを受信する。管理されるスイッチング要素６２５は、パケットを論理的に転送するために、パケットにＬ２処理２１５の残りを実行する。この例では、管理されるスイッチング要素６２５は、パケットを宛先マシン６３０に直接送信するスイッチング要素でもある。しかしながら、管理されるスイッチング要素６２５と、宛先マシン６３０との間に、１つ又は複数の管理されるスイッチング要素（図示せず）が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ２３０（図６には示さず）の論理構成物がマッピングされる。
【００７２】
Ｌ２処理２０５及びＬ２処理２１５は、この例では分散的に実行されるが、Ｌ２処理２０５及びＬ２処理２１５は、分散的に実行される必要はない。例えば、管理されるスイッチング要素６１５は、Ｌ２処理２０５全体を実行することができ、管理されるスイッチング要素６２５は、Ｌ２処理２１５全体を実行することができる。このような場合、管理されるスイッチング要素６２０は、ちょうど、Ｌ３ルータと管理されるスイッチング要素６１５及び６２５との間でパケットを中継することになる。
【００７３】
図７は、論理スイッチ２２０、論理ルータ２２５、及び論理スイッチ２３０を介してパケットを処理するいくつかの実施形態の論理処理パイプライン２００を概念的に示す。具体的には、この図は、図６を参照して上述したネットワークアーキテクチャ６００で実行される場合の論理処理パイプライン２００を示す。上述したように、ネットワークアーキテクチャ６００では、Ｌ２処理２０５、Ｌ３処理２１０、及びＬ２処理２１５は、管理されるスイッチング要素６１５、６２０、及び６２５、並びにＬ３ルータ６３５によって実行される。
【００７４】
Ｌ２処理２０５は、いくつかの実施形態では、管理されるスイッチング要素６１５及び６２０にまたがって実装される論理ネットワーク（図示せず）内の論理スイッチ２２０（図７には示さず）を介してパケットを処理する８つのステージ７０５〜７４０を含む。いくつかの実施形態では、パケットを受信する管理されるスイッチング要素６１５は、管理されるスイッチング要素６１５がパケットを受信すると、Ｌ２処理２０５の一部を実行する。管理されるスイッチング要素６２０は、次に、Ｌ２処理２０５の残りを実行する。
【００７５】
いくつかの実施形態では、パケットは、ヘッダ及びペイロードを含む。ヘッダは、いくつかの実施形態では、フィールドのセットを含み、フィールドのセットは、ネットワークを介してパケットをルーティングするために使用される情報を含む。論理スイッチ及び論理ルータは、ヘッダフィールドに含まれる情報に基づいて、スイッチング／ルーティング決定を決定することができ、いくつかの場合では、ヘッダフィールドの一部又は全部を変更することができる。
【００７６】
Ｌ２処理２０５のステージ７０５では、パケットの論理コンテキストを決定するために、入口コンテキストマッピングがパケットに実行される。いくつかの実施形態では、ステージ７０５は、論理スイッチ２２０がパケットを受信すると実行される（例えば、パケットは、管理されるスイッチング要素６１５によって最初に受信される）。論理コンテキストは、いくつかの実施形態では、論理スイッチに対するパケットの状態を表す。論理コンテキストは、例えば、パケットが属する論理スイッチ、パケットが受信されたときに通過した論理スイッチの論理ポート、パケットが送信されるときに通過する論理スイッチの論理ポート、パケットがいる論理スイッチの論理転送プレーンのステージ、などを指定する。
【００７７】
いくつかの実施形態は、パケットの送信元ＭＡＣアドレス（すなわち、パケットを送信したマシン）に基づいて、パケットの論理コンテキストを決定する。いくつかの実施形態は、パケットの送信元ＭＡＣアドレス、及び。パケットのインポート（すなわち、入口ポート）（すなわち、パケットが受信されたときに通過した管理されるスイッチング要素６１５のポート）に基づいて、論理コンテキストルックアップを実行する。他の実施形態は、パケットの論理コンテキストを決定するために、パケットのヘッダ（例えば、ＭＰＬＳヘッダ、ＶＬＡＮ  ｉｄ、など）内の他のフィールドを使用することができる。
【００７８】
第１のステージ７０５が実行された後、いくつかの実施形態は、論理コンテキストを表す情報を、パケットヘッダの１つ又は複数のフィールドに格納する。これらのフィールドは、論理コンテキストタグ又は論理コンテキストＩＤと呼ぶこともできる。さらに、論理コンテキストタグは、いくつかの実施形態では、１つ又は複数の既知のヘッダフィールド（例えば、ＶＬＡＮ  ｉｄフィールド）と一致してよい。このように、これらの実施形態は、ヘッダフィールドが使用されるために定義される方法で、既知のヘッダフィールド又はそれに付随する特徴を利用しない。代わりに、いくつかの実施形態は、論理コンテキストを表す情報を、メタデータとして格納し、メタデータは、（パケット自体に格納される代わりに）パケットに関連付けられ、パケットと共に渡される。
【００７９】
いくつかの実施形態では、第２のステージ７１０は、論理スイッチ２２０に関して定義される。いくつかのこのような実施形態では、ステージ７１０は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するとき、論理スイッチへのパケットのアクセスを制御するために、入口ＡＣＬがパケットに適用される。論理スイッチに対して定義された入口ＡＣＬに基づいて、パケットは、（例えば、ステージ７１５によって）さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【００８０】
Ｌ２処理２０５の第３のステージ７１５では、論理スイッチのコンテキストにおいて、パケットにＬ２転送がパケットに実行される。いくつかの実施形態では、第３のステージ７１５は、論理スイッチ２２０に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ２でパケットを処理するためのＬ２転送テーブル又はＬ２転送エントリを定義する。
【００８１】
さらに、パケットの宛先が別の論理ネットワークである場合（例えば、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ２２０によって処理される論理ネットワークと異なる場合）、論理スイッチ２２０は、パケットを論理ルータ２２５に送信し、論理ルータ２２５は、次に、パケットを宛先論理ネットワークにルーティングするために、Ｌ３処理２１０を実行することになる。したがって、第３のステージ７１５では、いくつかの実施形態の管理されるスイッチング要素６１５は、パケットが、論理ルータ２２５に関連付けられた論理スイッチの論理ポート（図示せず）を介して論理ルータ２２５に転送されるべきであると判断する。他の実施形態では、管理されるスイッチング要素６１５は、パケットが論理ルータ２２５に転送されるべきであるかどうかを必ずしも判定しない。むしろ、パケットは、論理ルータ２２５のポートのアドレスを宛先アドレスとして有することになり、管理されるスイッチング要素６１５は、このパケットを、宛先アドレスにしたがって、論理スイッチの論理ポートを介して転送する。
【００８２】
第４のステージ７２０では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ２２０の１つ又は複数の論理ポート（例えば、論理出口ポート）から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチ２２０の特定の論理ポートに対応する１つ又は複数の管理されるスイッチング要素（管理されるスイッチング要素６１５及び６２０を含む）の物理ポート（複数可）を識別する。管理されるスイッチング要素６１５は、前のステージ７１５で決定された論理ポートがマッピングされる物理ポート（例えば、ＶＩＦ）が、管理されるスイッチング要素６２０のポート（図示せず）であると判断する。
【００８３】
Ｌ２処理２０５の第５のステージ７２５は、第４のステージ７２０で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第４のステージ７２０で決定された物理ポートに向けてパケットを送信する動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第５のステージ７２５で決定された物理ポート（複数可）に達するために、パケットを送信するために通過する、Ｌ２処理２０５を実行している管理されるスイッチング要素６１５のポートのセット（図示せず）の１つ又は複数のポートに関連付けられた１つ又は複数のキュー（図示せず）を決定する。このように、管理されるスイッチング要素は、決定された物理ポート（複数可）にパケットが達するためのネットワーク内の正しい経路に沿って、パケットを転送することができる。
【００８４】
図示のように、Ｌ２処理２０５の第６のステージ７３０は、管理されるスイッチング要素６２０によって実行される。第６のステージ７３０は、第１のステージ７０５と同様である。ステージ７３０は、管理されるスイッチング要素６２０がパケットを受信すると実行される。ステージ７３０では、管理されるスイッチング要素６２０は、パケットの論理コンテキストをルックアップし、Ｌ２出口アクセス制御が、実行されるために残っていると判断する。
【００８５】
いくつかの実施形態の第７のステージ７３５は、論理スイッチ２２０のために定義される。いくつかのこのような実施形態の第７のステージ７３５は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後に、論理スイッチ２２０外へのパケットのアクセスを制御するために、出口ＡＣＬがパケットに適用されてよい。論理スイッチのために定義された出口ＡＣＬに基づいて、パケットは、さらに処理されてよく（例えば、論理スイッチの論理ポート外に送出される、若しくは、さらなる処理のためにディスパッチポートに送信される）、又は、パケットは、例えば、廃棄されてよい。
【００８６】
第８のステージ７４０は、第５のステージ７２５と同様である。第８のステージ７４０では、管理されるスイッチング要素６２０は、論理スイッチ２２０の論理出口ポートがマッピングされる管理されるスイッチング要素６２０の特定の物理ポート（図示せず）を決定する。
【００８７】
Ｌ３処理２１０は、Ｌ３ルータ６３５によって実装される論理スイッチ２２０（図７には示さず）を介してパケットを処理するための６つのステージ７４５〜７６１を含む。上述したように、Ｌ３処理は、レイヤ３ネットワークを介してどこにパケットをルーティングするかを決定するための論理ルーティングルックアップのセットを実行することを含む。
【００８８】
第１のステージ７４５は、論理ルータ２２５がパケットを受信すると（すなわち、論理ルータ２２５を実装するＬ３ルータ６３５がパケットを受信すると）、アクセス制御を決定するための論理入口ＡＣＬルックアップを実行する。次のステージ７４６は、パケットにネットワークアドレス変換（ＮＡＴ）を実行する。具体的には、ステージ７４６は、パケットの宛先アドレスを、パケットの送信元マシンから隠されている宛先マシンの実際のアドレスに戻す宛先ＮＡＴ（ＤＮＡＴ）を実行する。このステージ７４６は、ＤＮＡＴが有効にされている場合、実行される。
【００８９】
次のステージ７５０は、パケットのＬ３アドレス（例えば、宛先ＩＰアドレス）及びルーティングテーブル（例えば、Ｌ３エントリを含む）に基づいて、レイヤ３ネットワークを介してパケットを送信するために、１つ又は複数の論理ポートを決定するための論理Ｌ３ルーティングを実行する。論理ルータ２２５は、Ｌ３ルータ６３５によって実装されるため、ルーティングテーブルは、Ｌ３ルータ６３５内に構成される。
【００９０】
第４のステージ７５５では、いくつかの実施形態のＬ３ルータ６３５は、パケットに送信元ＮＡＴ（ＳＮＡＴ）も実行する。例えば、Ｌ３ルータ６３５は、送信元ＮＡＴが有効にされている場合、送信元ＩＰアドレスを隠すために、パケットの送信元ＩＰアドレスを異なるＩＰアドレスに置き換える。
【００９１】
第５のステージ７６０は、論理ルータ２２５が、ステージ７４０で決定されたポートを介してパケットを論理ルータ２２５の外にルーティングする前に、アクセス制御を決定するための論理Ｌ３出口ＡＣＬルックアップを実行する。Ｌ３出口ＡＣＬルックアップは、パケットのＬ３アドレス（例えば、送信元及び宛先ＩＰアドレス）に基づいて実行される。
【００９２】
第６のステージ７６１は、宛先Ｌ３アドレス（例えば、宛先ＩＰアドレス）を宛先Ｌ２アドレス（例えば、宛先ＭＡＣアドレス）に変換するために、アドレス解決を実行する。いくつかの実施形態では、Ｌ３ルータ６３５は、宛先ＩＰアドレスに対応する宛先Ｌ２アドレスを見つけるために、（例えば、ＡＲＰ要求を送信するか、ＡＲＰキャッシュをルックアップすることによって）標準的なアドレス解決を使用する。
【００９３】
論理ルータ２２５が宛先論理ネットワークに結合されていない場合、論理スイッチ２２０は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。論理ルータ２２５が宛先論理ネットワークに結合されている場合、論理スイッチ２２０は、宛先論理ネットワーク（すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ）にパケットをルーティングする。
【００９４】
Ｌ２処理２１５は、いくつかの実施形態では、管理されるスイッチング要素６２０及び６２５にまたがって実装される別の論理ネットワーク（図７には示さず）内の論理スイッチ２３０を介してパケットを処理するための８つのステージ７６５〜７９８を含む。いくつかの実施形態では、パケットを受信する管理されるネットワーク内の管理されるスイッチング要素６２５は、管理されるスイッチング要素６２５が管理されるスイッチング要素６２０からパケットを受信すると、Ｌ２処理２１５を実行する。ステージ７６５〜７９８は、ステージ７６５〜７９８が論理スイッチ２３０によって（すなわち、論理スイッチ２３０を実装する管理されるスイッチング要素６２０及び６２５によって）実行されることを除いて、それぞれ、ステージ７０５〜７４０と同様である。すなわち、ステージ７６５〜７９８は、Ｌ３ルータ６３５から受信したパケットを、管理されるスイッチング要素６２０及び６２５を介して宛先に転送するように実行される。
【００９５】
図８は、論理ルータ２２５並びに論理スイッチ２２０及び２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ８００を概念的に示す。具体的には、ネットワークアーキテクチャ８００は、そのデータパケットが論理ルータ２２５並びに論理スイッチ２２０及び２３０によって切り替えられる及び／又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、Ｌ３ルータ８６０を示す。下半分には、それぞれ、ホスト８９０、８８０、及び８８５（例えば、Ｗｉｎｄｏｗｓ（登録商標）及びＬｉｎｕｘ（登録商標）のようなオペレーティングシステムによって動作されるマシン）で動作している、第２のレベルの管理されるスイッチング要素８１０、管理されるスイッチング要素８１５及び８２０も示される。図は、図の上部及び下部の両方にＶＭ１〜４を示す。
【００９６】
この例では、論理スイッチ２２０は、論理ルータ２２５、ＶＭ１、及びＶＭ２間でデータパケットを転送する。論理スイッチ２３０は、論理ルータ２２５、ＶＭ３、及びＶＭ４間でデータパケットを転送する。上述したように、論理ルータ２２５は、論理スイッチ２２０及び２３０並びにおそらく他の論理ルータ及びスイッチ（図示せず）間でデータパケットをルーティングする。論理スイッチ２２０及び２３０並びに論理ルータ２２５は、論理ポート（図示せず）を介して論理的に結合され、論理ポートを介してパケットを交換する。これらの論理ポートは、Ｌ３ルータ８３０並びに管理されるスイッチング要素８１０、８１５、及び８２０の物理ポートにマッピングされる。
【００９７】
いくつかの実施形態では、論理スイッチ２２０及び２３０の各々は、管理されるスイッチング要素８１５及び８２０並びにおそらく他の管理されるスイッチング要素（図示せず）にまたがって実装される。いくつかの実施形態では、論理ルータ２２５は、管理されるスイッチング要素８１０に通信可能に結合されるＬ３ルータ８６０に実装される。
【００９８】
この例では、管理されるスイッチング要素８１０、８１５、及び８２０は、それぞれ、ホスト８９０、８８０、及び８８５で実行するソフトウェアスイッチング要素である。管理されるスイッチング要素８１０、８１５、及び８２０は、論理スイッチ２２０及び２３０を実装するフローエントリを有する。これらのフローエントリを使用して、管理されるスイッチング要素８１５及び８２０は、管理されるスイッチング要素８１０、８１５、及び８２０に結合されるネットワーク内のネットワーク要素間でネットワークデータ（例えば、パケット）をルーティングする。例えば、管理されるスイッチング要素８１５は、ＶＭ１及び３と、第２のレベルの管理されるスイッチング要素８１０との間でネットワークデータをルーティングする。同様に、管理されるスイッチング要素８２０は、ＶＭ２及び４と、第２のレベルの管理されるスイッチング要素８１０との間でネットワークデータをルーティングする。図示のように、管理されるスイッチング要素８１５及び８２０は、それぞれ、管理されるスイッチング要素８１５及び８２０に結合されるネットワーク要素とデータパケットを交換するために介する３つのポート（番号付けされた正方形として示される）を有する。
【００９９】
管理されるスイッチング要素８１０は、管理されるスイッチング要素８１０が、エクステンダとして機能する第２のレベルの管理されるスイッチング要素であるという点で、図３を参照して上述した管理されるスイッチング要素３０５と同様である。管理されるスイッチング要素８１０は、この例ではソフトウェアルータであるＬ３ルータ８６０と同じホストで動作する。
【０１００】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム（図示せず）によってトンネルが確立される。例えば、管理されるスイッチング要素８１０は、図示のように、管理されるスイッチング要素８１５のポート２で終端するトンネルを介して、ホスト８８０で動作する管理されるスイッチング要素８１５に結合される。同様に、管理されるスイッチング要素８１０は、管理されるスイッチング要素８２０のポート１で終端するトンネルを介して、管理されるスイッチング要素８２０に結合される。
【０１０１】
異なるタイプのトンネリングプロトコルが、異なる実施形態でサポートされる。トンネリングプロトコルの例は、数あるタイプのトンネリングプロトコルの中でも、無線アクセスポイントの制御及びプロビジョニング（ＣＡＰＷＡＰ）、ジェネリックルーティングカプセル化（ＧＲＥ）、ＧＲＥインターネットプロトコルセキュリティ（ＩＰｓｅｃ）を含む。
【０１０２】
この例では、ホスト８８０及び８８５の各々は、図示のように、管理されるスイッチング要素及びいくつかのＶＭを含む。ＶＭ１〜４は、仮想マシンであり、仮想マシンは、それぞれ、ネットワークアドレス（例えば、Ｌ２に関するＭＡＣアドレス、Ｌ３に関するＩＰアドレス、など）のセットを有り当てられ、他のネットワーク要素との間でネットワークデータを送受信することができる。ＶＭは、ホスト８８０及び８８５上で動作するハイパーバイザ（図示せず）によって管理される。
【０１０３】
ネットワークアーキテクチャ８００を介するいくつかの例示的なデータ交換をここで説明する。論理スイッチ２２０に結合されたＶＭ１が、同じ論理スイッチ２２０に結合されたＶＭ２にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素８１５に送信される。管理されるスイッチング要素８１５は、ＶＭ１からパケットを受信するエッジスイッチング要素であるため、管理されるスイッチング要素８１５は、次に、パケットにＬ２処理２０５を実行する。このパケットへのＬ２処理２０５の結果は、パケットが、管理されるスイッチング要素８２０のポート４を介してＶＭ２に達するように、管理されるスイッチング要素８２０に送信されるべきであることを示すことになる。ＶＭ１及び２は、同じ論理ネットワーク内にあり、したがって、パケットのためのＬ３ルーティングは、必要ではないため、このパケットにＬ３処理を実行する必要はない。パケットは、次に、管理されるスイッチング要素８１５及び管理されるスイッチング要素８２０間をブリッジしている第２のレベルの管理されるスイッチング要素８１０を介して、管理されるスイッチング要素８２０に送信される。パケットは、管理されるスイッチング要素８２０のポート４を介してＶＭ２に到達する。
【０１０４】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ３にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素８１５に送信される。管理されるスイッチング要素８１５は、パケットにＬ２処理の一部を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される（すなわち、パケットの論理Ｌ３宛先アドレスは、別の論理ネットワークのためのものである）ため、Ｌ３処理がこのパケットに実行される必要がある。
【０１０５】
管理されるスイッチング要素８１５は、管理されるスイッチング要素８１０が、Ｌ３ルータ８６０にパケットを転送するために、パケットにＬ２処理の残りを実行するように、第２のレベルの管理されるスイッチング要素８１０にパケットを送信する。Ｌ３ルータ８６０で実行されるＬ３処理の結果は、パケットが、管理されるスイッチング要素８１０に返送されるべきであることを示すことになる。管理されるスイッチング要素８１０は、次に、別のＬ２処理の一部を実行し、Ｌ３ルータ８６０から受信したパケットを管理されるスイッチング要素８１５に転送し戻す。管理されるスイッチング要素８１５は、管理されるスイッチング要素８１０から受信したパケットにＬ２処理２１５を実行し、このＬ２処理の結果は、パケットが、管理されるスイッチング要素８１５のポート５を介してＶＭ３に送信されるべきであることを示すことになる。
【０１０６】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶ４にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素８１５に送信される。管理されるスイッチング要素８１５は、パケットにＬ２処理２０５を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、Ｌ３処理が実行される必要がある。
【０１０７】
管理されるスイッチング要素８１５は、Ｌ３ルータ８６０がパケットにＬ３処理２１０を実行するように、管理されるスイッチング要素８１０を介してＬ３ルータ８６０にパケットを送信する。Ｌ３ルータ８６０で実行されるＬ３処理２１０の結果は、パケットが、管理されるスイッチング要素８２０に送信されるべきであることを示すことになる。管理されるスイッチング要素８１０は、次に、管理されるスイッチング要素から受信したパケットにＬ２処理の一部を実行し、このＬ２処理の結果は、パケットが、管理されるスイッチング要素８２０を介してＶＭ４に送信されるべきであることを示すことになる。管理されるスイッチング要素８２０は、パケットが、管理されるスイッチング要素８２０のポート５を介してＶＭ４に送信されるべきであることを決定するために、Ｌ２処理の残りを実行する。
【０１０８】
図９は、論理ルータ２２５並びに論理スイッチ２２０及び２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ９００を概念的に示す。具体的には、ネットワークアーキテクチャ９００は、そのデータパケットが論理ルータ２２５並びに論理スイッチ２２０及び２３０によって切り替えられる及び／又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、Ｌ３ルータ８６０を示す。下半分には、それぞれ、ホスト９１０、８９０、８８０、及び８８５で動作している、第２のレベルの管理されるスイッチング要素９０５、第２のレベルの管理されるスイッチング要素８１０、並びに、管理されるスイッチング要素８１５及び８２０も示される。図は、図の上部及び下部の両方にＶＭ１〜４を示す。
【０１０９】
ネットワークアーキテクチャ９００は、ネットワークアーキテクチャ９００が、ホスト９１０で動作する管理されるスイッチング要素９０５を追加で含むことを除いて、ネットワークアーキテクチャ８００と同様である。いくつかの実施形態の管理されるスイッチング要素９０５は、プールノードとして機能する第２のレベルの管理されるスイッチング要素である。
【０１１０】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム（図示せず）によってトンネルが確立される。例えば、この例での管理されるスイッチング要素８１５は、図示のように、管理されるスイッチング要素８１５のポート１で終端するトンネルを介して、ホスト９１０で動作する管理されるスイッチング要素９０５に結合される。同様に、管理されるスイッチング要素８２０は、管理されるスイッチング要素８２０のポート２で終端するトンネルを介して、管理されるスイッチング要素９０５に結合される。また、管理されるスイッチング要素９０５及び８１０は、図示のように、トンネルを介して結合される。
【０１１１】
論理ルータ２２５並びに論理スイッチ２２０及び２３０は、第２のレベルの管理されるスイッチング要素９０５がデータパケット交換に関わることを除いて、図８を参照して上述したＬ３ルータ８６０及び管理されるスイッチング要素８１０、８１５、及び８２０に実装される。すなわち、管理されるスイッチング要素８１５及び８１０は、管理されるスイッチング要素９０５を介してパケットを交換する。
【０１１２】
図１０は、論理ルータ２２５並びに論理スイッチ２２０及び２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ１０００を概念的に示す。ネットワークアーキテクチャ１０００は、管理されるスイッチング要素８１０及び管理されるスイッチング要素８２０間にトンネルが存在することを除いて、ネットワークアーキテクチャ８００と同様である。この図は、いくつかの実施形態のネットワークアーキテクチャ１０００が、ネットワークアーキテクチャ８００及びネットワークアーキテクチャ９００の混合物であることを示す。すなわち、いくつかの管理されるエッジスイッチング要素は、集中型Ｌ３ルータに結合された第２のレベルの管理されるスイッチング要素とのトンネルを有し、他の管理されるエッジスイッチング要素は、集中型Ｌ３ルータに結合された第２のレベルの管理されるスイッチング要素とパケットを交換するために、プールノードとして機能する第２のレベルの管理されるスイッチング要素を通過しなければならない。
【０１１３】
図１１は、管理されるスイッチング要素８１０及びＬ３ルータ８６０（図示せず）を含むいくつかの実施形態のホスト８９０の例示的なアーキテクチャを概念的に示す。具体的には、この図は、Ｌ３ルータ８６０が、ホスト８９０の名前空間１１２０に構成されることを示す。ホスト８９０は、いくつかの実施形態では、名前空間及び仮想マシンを作成することができるオペレーティングシステム（例えば、Ｌｉｎｕｘ（登録商標））によって管理されるマシンである。図示のように、この例でのホスト８９０は、管理されるスイッチング要素８１０、名前空間１１２０、及びＮＩＣ８４５を含む。この図は、コントローラクラスタ１１０５も示す。
【０１１４】
コントローラクラスタ１１０５は、管理されるスイッチング要素８１０を含むネットワーク要素を管理するネットワークコントローラ又はコントローラインスタンスのセットである。この例での管理されるスイッチング要素８１０は、ユーザ空間１１１２及びカーネル１１１０を含むホスト８９０に実装されるソフトウェアスイッチング要素である。管理されるスイッチング要素８１０は、ユーザ空間１１１５で動作している制御デーモン１１１５、並びに、カーネル１１１０で動作しているコントローラパッチ１１３０及びブリッジ１１３５を含む。ユーザ空間１１１５及びカーネル１１１０は、いくつかの実施形態では、ホスト８９０のためのオペレーティングシステムのものであり、他の実施形態では、ユーザ空間１１１５及びカーネル１１１０は、ホスト８９０上で動作している仮想マシンのものである。
【０１１５】
いくつかの実施形態では、コントローラクラスタ１１０５は、制御デーモン１１１５と（例えば、オープンフロープロトコル又は別の通信プロトコルを使用することによって）通信し、制御デーモン１１１５は、いくつかの実施形態では、ユーザ空間１１１２のバックグラウンドで動作しているアプリケーションである。制御デーモン１１１５は、管理されるスイッチング要素８１０が受信するパケットを処理し、ルーティングするために、コントローラクラスタ１１０５と通信する。具体的には、制御デーモン１１１５は、いくつかの実施形態では、コントローラクラスタ１１０５から構成情報を受信し、コントローラパッチ１１３０を構成する。例えば、制御デーモン１１１５は、管理されるスイッチング要素８１０が受信するパケットを処理し、ルーティングするための動作に関して、コントローラクラスタ１１０５からコマンドを受信する。
【０１１６】
制御デーモン１１１５は、論理ルータが、ルーティングテーブル及び他のテーブルに適切なエントリをポピュレートするために、名前空間１１２０に実装された論理ルータ（図示せず）と接続するポート（図示せず）を設定するために、コントローラパッチ１１３０のための構成情報も受信する。
【０１１７】
コントローラパッチ１１３０は、カーネル１１１０内で動作するモジュールである。いくつかの実施形態では、制御デーモン１１１５は、コントローラパッチ１１１３を構成する。構成されると、コントローラパッチ１１１３は、受信するパケットの処理及び転送に関するルール（例えば、フローエントリ）を含む。いくつかの実施形態のコントローラパッチ１１３０は、また、パケットを名前空間１１２０と交換するために、ポート（例えば、ＶＩＦ）のセットを作成する。
【０１１８】
コントローラパッチ１１３０は、カーネル１１１０のネットワークスタック１１５０から、又は、ブリッジ１１３５からパケットを受信する。コントローラパッチ１１３０は、パケットの処理及びルーティングに関するルールに基づいて、どの名前空間にパケットを送信するのかを決定する。コントローラパッチ１１３０は、また、名前空間１１２０からパケットを受信し、ルールに基づいて、ネットワークスタック１１５０又はブリッジ１１３５にパケットを送信する。管理されるスイッチング要素のアーキテクチャについてのさらなる詳細は、米国特許出願第１３／１７７，５３５号に記載されている。
【０１１９】
名前空間１１２０（例えば、Ｌｉｎｕｘ（登録商標）名前空間）は、ホスト８９０で作成されるコンテナである。名前空間１１２０は、ネットワークスタック、ネットワークデバイス、ネットワークアドレス、ルーティングテーブル、ネットワークアドレス変換テーブル、ネットワークキャシュ、など（これらのすべてが、図１１に示されているというわけではない）を実装することができる。名前空間１１２０は、したがって、名前空間が、論理送信元又は宛先アドレスを有するパケットを処理するように構成されている場合、論理ルータを実装することができる。名前空間１１２０は、例えば、名前空間のルーティングテーブル１１５５を構成することによって、このようなパケットを処理するように構成されてよい。いくつかの実施形態では、名前空間１１２０は、名前空間１１２０が管理されるスイッチング要素８１０に接続し、パケットを交換する（すなわち、動的ルーティング）につれて、ルーティングテーブル１１５５をポピュレートする。他の実施形態では、コントローラクラスタ１１０５は、ルーティングテーブル１１５５にルートをポピュレートすることによって、ルーティングテーブル１１５５を直接構成することができる。
【０１２０】
さらに、名前空間は、いくつかの実施形態では、名前空間がルーティングするパケットにネットワークアドレス変換（ＮＡＴ）も実行する。例えば、名前空間が、受信したパケットの送信元ネットワークアドレスを別のネットワークアドレスに変更する（すなわち、送信元ＮＡＴを実行する）場合である。
【０１２１】
ブリッジ１１３５は、ネットワークスタック１１５０と、ホストの外部のネットワークホストとの間で、ネットワークデータ（すなわち、ＮＩＣ１１４５を介して受信したネットワークデータ）をルーティングする。図示のように、ブリッジ１１３５は、ネットワークスタック１１５０及びＮＩＣ１１４５間、並びに、コントローラパッチ１１３０及びＮＩＣ１１４５間でネットワークデータをルーティングする。いくつかの実施形態のブリッジ１１３５は、標準的なＬ２パケット学習及びルーティングを実行する。
【０１２２】
ネットワークスタック１１５０は、ＮＩＣ１１４５を介して、管理されるスイッチング要素８１０の外部のネットワークホストからパケットを受信することができる。ネットワークスタック１１５０は、次に、コントローラパッチ１１３０にパケットを送信する。いくつかの場合では、パケットは、トンネルを介して、管理されるスイッチング要素の外部のネットワークホストから受信される。いくつかの実施形態では、トンネルは、ネットワークスタック１１５０で終端する。したがって、ネットワークスタック１１５０が、トンネルを介してパケットを受信すると、ネットワークスタック１１５０は、トンネルヘッダをアンラップし（すなわち、ペイロードをデカプセルし）、アンラップされたパケットをコントローラパッチ１１３０に送信する。
【０１２３】
ここで、管理されるスイッチング要素８１０及び名前空間１１２０の例示的な動作を説明する。この例では、トンネルが、ホスト８９０の外部の管理されるスイッチング要素８１０及び管理されるスイッチング要素８１５及び８２０（図１１には示さず）間に確立される。すなわち、管理されるスイッチング要素８１０、８１５、及び８２０は、図８に示すようなトンネルを介して接続される。トンネルは、ネットワークスタック１１５０で終端する。
【０１２４】
管理されるスイッチング要素８１５は、ＶＭ１〜ＶＭ４によって送信されたパケットを、管理されるスイッチング要素８１０に送信する。パケットは、ＮＩＣ１１４５によって受信され、次に、ブリッジ１１３５に送信される。パケットヘッダ内の情報に基づいて、ブリッジ１１３５は、パケットは、確立されたトンネルを介して送信されると判断し、パケットをネットワークスタック１１５０に送信する。ネットワークスタック１１５０は、トンネルヘッダをアンラップし、アンラップされたパケットをコントローラパッチ１１３０に送信する。
【０１２５】
パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、コントローラパッチ１１３０が有するルールにしたがって、コントローラパッチ１１３０は、パケットを名前空間１１２０に送信する。例えば、ルールは、特定の宛先ＭＡＣアドレスを有するパケットは、名前空間１１２０に送信されるべきであると指示することができる。いくつかの場合では、コントローラパッチ１１３０は、パケットを名前空間に送信する前に、パケットから論理的コンテキストを除去する。次に、名前空間１１２０は、２つの論理ネットワーク間でパケットをルーティングするために、パケットにＬ３処理を実行する。
【０１２６】
Ｌ３処理を実行することによって、名前空間１１２０は、宛先ネットワークレイヤアドレスが、宛先論理ネットワークに属する論理スイッチに行くべきであるため、パケットがコントローラパッチ１１３０に送信されるべきであると判断する。コントローラパッチ１１３０は、宛先論理ネットワークに属する論理スイッチを実装する管理されるスイッチング要素８２０へのトンネルを越えて、ネットワークスタック１１５０、ブリッジ１１３５、及び、ＮＩＣ１１４５を介して、パケットを受信し、パケットを送信する。
【０１２７】
上述したように、いくつかの実施形態は、Ｌ３ルータ８６０を名前空間１１２０に実装する。しかしながら、他の実施形態は、Ｌ３ルータ８６０を、ホスト８９０上で動作するＶＭに実装する。
【０１２８】
図１２は、管理されるスイッチング要素内の論理スイッチ及び論理ルータ、並びにＬ３ルータの例示的な実装を概念的に示す。具体的には、この図は、ホスト８９０内の論理ルータ２２５，並びに論理スイッチ２２０及び２３０の実装を示し、ホスト８９０は、第２のレベルの管理されるスイッチング要素８１０及びＬ３ルータ８６０、並びに管理されるスイッチング要素８１５及び８２０を含む。図は、図の左半分に、論理ルータ２２５、並びに論理スイッチ２２０及び２３０を示す。この図は、図の右半分に、第２のレベルの管理されるスイッチング要素８１０、並びに管理されるスイッチング要素８１５及び８２０を示す。図は、右及び左半分の両方に、ＶＭ１〜４を示す。簡単にするために、この図は、管理されるスイッチング要素のすべての構成要素、例えば、ネットワークスタック１１５０を示さない。
【０１２９】
論理スイッチ２２０及び２３０、並びに論理ルータ２２５は、論理ポートを介して論理的に結合される。図示のように、論理スイッチ２２０の論理ポートＸは、論理ルータ２２５の論理ポート１に結合される。同様に、論理スイッチ２３０の論理ポートＹは、論理ルータ２２５の論理ポート２に結合される。論理スイッチ２２０及び２３０は、これらの論理ポートを介して、論理ルータ２２５とデータパケットを交換する。また、この例では、論理スイッチ２２０は、論理ルータ２２５の論理ポート１のＭＡＣアドレスであるＭＡＣアドレス０１：０１：０１：０１：０１：０１を、論理ポートＸと関連付ける。論理スイッチ２２０が、Ｌ３処理を必要とするパケットを受信すると、論理スイッチ２２０は、ポートＸを介して論理ルータ２２５にパケットを送出する。同様に、論理スイッチ２３０は、論理ルータ２２５の論理ポート２のＭＡＣアドレスであるＭＡＣアドレス０１：０１：０１：０１：０１：０２を、論理ポートＹと関連付ける。論理スイッチ２３０が、Ｌ３処理を必要とするパケットを受信すると、論理スイッチ２３０は、ポートＹを介して論理ルータ２２５にパケットを送出する。
【０１３０】
この例では、コントローラクラスタ（図１２には示さず）は、管理されるスイッチング要素８１０のポート１が、論理スイッチ２２０のポートＸと関連付けられた同じＭＡＣアドレス、０１：０１：０１：０１：０１：０１と関連付けられるように、管理されるスイッチング要素８１０を構成する。したがって、管理されるスイッチング要素８１０が、このＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットを受信すると、管理されるスイッチング要素８１０は、管理されるスイッチング要素８１０のポート１を介して、（名前空間１１２０内に構成された）Ｌ３ルータ８６０にパケットを送出する。このように、論理スイッチ２２０のポートＸは、管理されるスイッチング要素８１０のポート１にマッピングされる。
【０１３１】
同様に、管理されるスイッチング要素８１０のポート２は、論理スイッチ２３０のポートＹと関連付けられた同じＭＡＣアドレス、０１：０１：０１：０１：０１：０２と関連付けられる。したがって、管理されるスイッチング要素８１０が、このＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットを受信すると、管理されるスイッチング要素８１０は、管理されるスイッチング要素８１０のポート２を介して、Ｌ３ルータ８６０にパケットを送出する。このように、論理スイッチ２３０のポートＹは、管理されるスイッチング要素８１０のポート２にマッピングされる。
【０１３２】
この例では、論理ルータ２２５は、論理ポート１及び２、並びに他の論理ポート（図示せず）を有する。論理ルータ２２５のポート１は、ポート１の背後にあるサブセットを表すＩＰアドレス１．１．１．１／２４と関連付けられる。すなわち、論理ルータ２２５が、ルーティングするためにパケットを受信し、パケットが宛先ＩＰアドレス、例えば、１．１．１．１０を有する場合、論理ルータ２２５は、このパケットを、ポート１を介して宛先論理ネットワーク（例えば、論理サブネット）に向けて送信する。
【０１３３】
同様に、この例の論理ルータ２２５のポート２は、ポート２の背後にあるサブセットを表すＩＰアドレス１．１．２．１／２４と関連付けられる。論理ルータ２２５は、宛先ＩＰアドレス、例えば、１．１．２．１０を有するパケットを、ポート２を介して宛先論理ネットワークに送信する。
【０１３４】
この例では、Ｌ３ルータ８６０は、Ｌ３ルータ８６０のルーティングテーブル（図示せず）にルートをポピュレートすることによって、論理ルータ２２５を実装する。いくつかの実施形態では、Ｌ３ルータ８６０は、管理されるスイッチング要素８１０が、Ｌ３ルータ８６０との接続を確立し、パケットを送信するときに、そのルーティングテーブルをポピュレートする。例えば、Ｌ３ルータが、管理されるスイッチング要素から最初のパケットを受信すると、Ｌ３ルータ８６０は、最初のパケットの送信元アドレスを宛先アドレスとして有するパケットが、管理されるスイッチング要素８１０に送信されるべきであることを知る。Ｌ３ルータは、最初のパケットがどこに送信されるのかを知るために、（例えば、ＡＲＰ要求を送信することによって）標準的なアドレス解決を実行することもできる。Ｌ３ルータ８６０は、これらの「ルート」をルーティングテーブルに格納し、その後にＬ３ルータが受信するパケットのルーティング決定を行う際に、これらのテーブルをルックアップすることになる。他のＬ３ルータ（図示せず）は、これらのルーティングテーブルを同様にポピュレートすることができる。
【０１３５】
他の実施形態では、コントローラクラスタは、Ｌ３ルータ８６０のポート１が、論理ルータ２２５のポート１に関連付けられた同じＩＰアドレスと関連付けられるように、Ｌ３ルータ８６０のルーティングテーブルを構成する。同様に、Ｌ３ルータ８６０のポート２は、論理ルータ２２５のポート２と関連付けられた同じＩＰアドレスと関連付けられる。
同様の方法で、別の論理スイッチ（図示せず）が、管理されるスイッチング要素の別のＬ３ルータ（図示せず）に実装されてよい。これらの実施形態のいくつかでは、制御クラスタは、Ｌ３ルータを構成するために、１つ又は複数のルーティングプロトコルを用いることができる。
【０１３６】
図１３Ａ〜１３Ｃは、図１２を参照して上述した管理されるスイッチング要素８１０、８１５、及び８２０、並びにＬ３ルータ８６０に実装された、論理スイッチ２２０及び２３０、並びに論理ルータ２２５の例示的な動作を概念的に示す。具体的には、図１３Ａ〜１３Ｃは、ＶＭ１〜ＶＭ４から送信されたパケットがどのようにＶＭ４に達するかを示す。
【０１３７】
論理スイッチ２２０に結合されるＶＭ１が、論理スイッチ２３０に結合されるＶＭ４にパケット１３３０を送信すると、パケットは、最初に、管理されるスイッチング要素８１５のポート４を介して、管理されるスイッチング要素８１５に送信される。管理されるスイッチング要素８１５は、パケットにＬ２処理を実行する。
【０１３８】
図１３Ａの上半分に示すように、管理されるスイッチング要素８１５は、パケット１３３０を処理し、転送するためのルール（例えば、フローエントリ）を含む転送テーブルを含む。管理されるスイッチング要素８１５が、管理されるスイッチング要素８１５のポート４を介してＶＭ１からパケット１３３０を受信すると、管理されるスイッチング要素８１５は、管理されるスイッチング要素８１５の転送テーブルに基づいて、パケット１３３０の処理を開始する。この例では、パケット１３３０は、ＶＭ４のＩＰアドレスである、１．１．２．１０の宛先ＩＰアドレスを有する。パケット１３３０の送信元ＩＰアドレスは、１．１．１．１０である。パケット１３３０は、また、ＶＭ１のＭＡＣアドレスを送信元ＭＡＣアドレスとして有し、論理ルータ２２５の論理ポート１のＭＡＣアドレス（すなわち、０１：０１：０１：０１：０１：０１）を宛先ＭＡＣアドレスとして有する。
【０１３９】
管理されるスイッチング要素８１５は、ステージ１３４０のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた１によって示されるレコード（「レコード１」と呼ぶ）を識別する。レコード１は、ＶＭ１からパケット１３３０を受信するポート４である入口ポートに基づいて、パケット１３３０の論理コンテキストを識別する。加えて、いくつかの実施形態では、レコード１は、管理されるスイッチング要素８１５が、パケット１３３０の論理コンテキストを、パケット１３３０のヘッダのフィールドのセット（例えば、ＶＬＡＮ  ｉｄフィールド）に格納することを指定する。他の実施形態では、管理されるスイッチング要素８１５は、論理コンテキスト（すなわち、パケットが属する論理スイッチ、並びに、その論理スイッチの論理入口ポート）を、パケットではなく、スイッチのレジスタ、又はメタフィールドに格納する。レコード１は、また、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。ディスパッチポートは、米国特許出願第１３／１７７，５３５号に記載されている。
【０１４０】
パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素８１５は、ステージ１３４２の入口ＡＣＬを実装する転送テーブル内の丸で囲まれた２によって示されるレコード（「レコード２と呼ぶ」）を識別する。この例では、レコード２は、パケット１３３０がさらに処理されることを可能にし（例えば、パケット１３３０は、論理スイッチ２２０の入口ポートを通り抜けることができる）、したがって、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード２は、管理されるスイッチング要素８１５が、パケット１３３０の論理コンテキスト（すなわち、パケット１３３０は、処理パイプライン１３００の第２のステージ１３４２によって処理されている）を、パケット１３３０のヘッダのフィールドのセットに格納することを指定する。
【０１４１】
次に、管理されるスイッチング要素８１５は、パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１３４４の論理Ｌ２転送を実装する転送テーブル内の丸で囲まれた３によって示されるレコード（「レコード３」と呼ぶ）を識別する。レコード３は、論理ルータ２２５の論理ポート１のＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットが、論理スイッチ２２０の論理ポートＸに送信されるべきであることを指定する。
【０１４２】
レコード３は、また、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。また、レコード３は、管理されるスイッチング要素８１５が、論理コンテキスト（すなわち、パケット１３３０は、処理パイプライン１３００の第３のステージ１３４４によって処理されている）を、パケット１３３０のヘッダのフィールドのセットに格納することを指定する。
【０１４３】
パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素８１５は、ステージ１３４６のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた４によって示されるレコード（「レコード４」と呼ぶ）を識別する。この例では、レコード４は、Ｌ３ルータ８６０のポート１が結合される管理されるスイッチング要素８１０のポート１を、パケット１３３０が転送されるべき論理スイッチ２２０の論理ポートＸに対応するポートとして識別する。レコード４は、加えて、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０１４４】
パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素８１５は、次に、ステージ１３４８の物理マッピングを実装する転送テーブル内の丸で囲まれた５によって示されるレコード（「レコード５」と呼ぶ）を識別する。レコード５は、パケット１３３０が、管理されるスイッチング要素８１０に到達するために、パケット１３３０が、管理されるスイッチング要素８１５のポート１を介して送信されるべきであることを指定する。この場合では、管理されるスイッチング要素８１５は、パケット１３３０を、管理されるスイッチング要素８１０に結合される管理されるスイッチング要素８１５のポート１から送出することになる。
【０１４５】
図１３Ａの下半分に示すように、管理されるスイッチング要素８１０は、パケット１３３０を処理し、ルーティングするためのルール（例えば、フローエントリ）を含む転送テーブルを含む。管理されるスイッチング要素８１０が、管理されるスイッチング要素８１５からパケット１３３０を受信すると、管理されるスイッチング要素８１０は、管理されるスイッチング要素８１０の転送テーブルに基づいて、パケット１３３０の処理を開始する。管理されるスイッチング要素８１０は、ステージ１３５０のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた１によって示されるレコード（「レコード１」と呼ぶ）を識別する。レコード１は、パケット１３３０のヘッダに格納された論理コンテキストに基づいて、パケット１３３０の論理コンテキストを識別する。論理コンテキストは、パケット１３３０が、管理されるスイッチング要素８１５によって実行された第２及び第３のステージ１３４２及び１３４４によって処理されていることを指定する。このように、レコード１は、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０１４６】
次に、管理されるスイッチング要素８１０は、パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１３５２の出口ＡＣＬを実装する転送テーブル内の丸で囲まれた２によって示されるレコード（「レコード２」と呼ぶ）を識別する。この例では、レコード２は、パケット１３３０がさらに処理されることを可能にし（例えば、パケット１３３０は、論理スイッチ２２０のポート「Ｘ」を介して論理スイッチ２２０から出ることができる）、したがって、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード２は、管理されるスイッチング要素８１０が、パケット１３３０の論理コンテキスト（例えば、パケット１３３０は、処理パイプライン１３００のステージ１３５２によって処理されている）を、パケット１３３０のヘッダのフィールドのセットに格納することを指定する。
【０１４７】
次に、管理されるスイッチング要素８１０は、パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１３５４の物理マッピングを実装する転送テーブル内の丸で囲まれた３によって示されるレコード（「レコード３」と呼ぶ）を識別する。レコード３は、パケット１３３０がＬ３ルータ８６０に到達するために、パケット１３３０が送信されるべき管理されるスイッチング要素８１０のポートを指定する。この場合では、管理されるスイッチング要素８１０は、パケット１３３０を、Ｌ３ルータ８６０のポート１に結合される管理されるスイッチング要素８１０のポート１から送出することになる。いくつかの実施形態では、管理されるスイッチング要素８１０は、パケットをＬ３ルータ８６０に送信する前に、パケット１３３０から論理コンテキストを除去する。
【０１４８】
図１３Ｂの上半分に示すように、Ｌ３ルータ８６０は、入口ＡＣＬテーブル、ルーティングテーブル、及び出口ＡＣＬテーブルを含み、出口ＡＣＬテーブルは、パケット１３３０を処理し、ルーティングするためのエントリを含む。Ｌ３ルータ８６０が、管理されるスイッチング要素８１０からパケット１３３０を受信すると、Ｌ３ルータ８６０は、Ｌ３ルータ８６０のこれらのテーブルに基づいて、パケット１３３０の処理を開始する。Ｌ３ルータ８６０は、入口ＡＣＬテーブル内の丸で囲まれた１によって示されるエントリ（「エントリ１」と呼ぶ）を識別し、入口ＡＣＬテーブルは、Ｌ３ルータ８６０が、パケット１３３０のヘッダ内の情報に基づいてパケットを受け入れるべきであることを指定することによって、Ｌ３入口ＡＣＬを実装する。Ｌ３ルータ８６０は、次に、ルーティングテーブル内の丸で囲まれた２によって示されるエントリ（「エントリ２」と呼ぶ）を識別し、ルーティングテーブルは、その宛先ＩＰアドレス（すなわち、１．１．２．１０）を有するパケット１３３０が、論理ルータ２２５のポート２を介して論理スイッチ２３０に送信されるべきであることを指定することによって、Ｌ３ルーティング５５８を実装する。Ｌ３ルータ８６０は、次に、出口ＡＣＬテーブル内の丸で囲まれた３によって示されるエントリ（「エントリ３」と呼ぶ）を識別し、出口ＡＣＬテーブルは、Ｌ３ルータ８６０が、パケット１３３０のヘッダ内の情報に基づいて、論理ルータ２２５のポート２を介してパケットを送信することができることを指定することによって、Ｌ３出口ＡＣＬを実装する。また、Ｌ３ルータ８６０はパケット１３３０のための送信元ＭＡＣアドレスをＬ３ルータ８６０のポート２のＭＡＣアドレス（すなわち、０１：０１：０１：０１：０１：０２）に書き換える。
【０１４９】
Ｌ３ルータ８６０は、次に、宛先ＩＰアドレスを宛先ＭＡＣアドレスに変換するために、アドレス解決を実行する。この例では、Ｌ３ルータ８６０は、宛先ＩＰアドレスがマッピングされる宛先ＭＡＣアドレスを見つけるために、ＡＲＰキャッシュをルックアップする。Ｌ３ルータ８６０は、ＡＲＰキャッシュが、宛先ＩＰアドレスのための対応するＭＡＣアドレスを持っていない場合、ＡＲＰ要求を送信することができる。宛先ＩＰアドレスは、ＶＭ４のＭＡＣアドレスに解決されることになる。Ｌ３ルータ８６０は、次に、宛先ＩＰアドレスが解決されたＭＡＣアドレスを使用して、パケット１３３０の宛先ＭＡＣを書き換える。Ｌ３ルータ８６０は、パケット１３３０を、新しい宛先ＭＡＣアドレスに基づいて、Ｌ３ルータ８６０の論理ポート２を介して論理スイッチ２３０に送信することになる。
【０１５０】
図１３Ｂの下半分に示すように、管理されるスイッチング要素８１０は、パケット１３３０を処理し、転送するためのルール（例えば、フローエントリ）を含む転送テーブルを含む。管理されるスイッチング要素８１０が、管理されるスイッチング要素８１０のポート２を介してＬ３ルータ８６０からパケット１３３０を受信すると、管理されるスイッチング要素８１０は、管理されるスイッチング要素８１０の転送テーブルに基づいて、パケット１３３０の処理を開始する。管理されるスイッチング要素８１０は、ステージ１３６２のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた４によって示されるレコード（「レコード４」と呼ぶ）を識別する。レコード４は、パケット１３３０がＬ３ルータ８６０から受信されるポート２である入口ポートに基づいて、パケット１３３０の論理コンテキストを識別する。加えて、レコード４は、管理されるスイッチング要素８１０が、パケット１３３０の論理コンテキストを、パケット１３３０のヘッダのフィールドのセット（例えば、ＶＬＡＮ  ｉｄフィールド）に格納することを指定する。レコード４は、また、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０１５１】
パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素８１０は、次に、ステージ１３６４の入口ＡＣＬを実装する転送テーブル内の丸で囲まれた５によって示されるレコード（「レコード５」と呼ぶ）を識別する。この例では、レコード５は、パケット１３３０がさらに処理されることを可能にし、したがって、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード５は、管理されるスイッチング要素８１０が、パケット１３３０の論理コンテキスト（すなわち、パケット１３３０は、処理パイプライン１３００のステージ１３６２によって処理されている）を、パケット１３３０のヘッダのフィールドのセットに格納することを指定する。
【０１５２】
次に、管理されるスイッチング要素８１０は、パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１３６６の論理Ｌ２転送を実装する転送テーブル内の丸で囲まれた６によって示されるレコード（「レコード６」と呼ぶ）を識別する。レコード６は、ＶＭ４のＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットが、論理スイッチ２３０の論理ポート（図示せず）を介して転送されるべきであることを指定する。
【０１５３】
レコード６は、また、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。また、レコード６は、管理されるスイッチング要素８１０が、論理コンテキスト（すなわち、パケット１３３０は、処理パイプライン１３００のステージ１３６６によって処理されている）を、パケット１３３０のヘッダのフィールドのセットに格納することを指定する。
【０１５４】
パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素８１０は、ステージ１３６８のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた７によって示されるレコード（「レコード７」と呼ぶ）を識別する。この例では、レコード７は、ＶＭ４が結合される管理されるスイッチング要素８２０のポート５を、パケット１３３０が転送されるべき論理スイッチ２３０の論理ポート（ステージ１３６６で決定される）に対応するポートとして識別する。レコード７は、加えて、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０１５５】
パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素８１０は、次に、ステージ１３７０の物理マッピングを実装する転送テーブル内の丸で囲まれた８によって示されるレコード（「レコード８」と呼ぶ）を識別する。レコード８は、パケット１３３０が、管理されるスイッチング要素８２０に到達するために、パケット１３３０が送信されるべき管理されるスイッチング要素８１０のポート（図示せず）を指定する。この場合では、管理されるスイッチング要素８１０は、パケット１３３０を、管理されるスイッチング要素８２０に結合される管理されるスイッチング要素８１０のポートから送出することになる。
【０１５６】
図１３Ｃに示すように、管理されるスイッチング要素８２０は、パケット１３３０を処理し、ルーティングするためのルール（例えば、フローエントリ）を含む転送テーブルを含む。管理されるスイッチング要素８２０が、管理されるスイッチング要素８１０からパケット１３３０を受信すると、管理されるスイッチング要素８２０は、管理されるスイッチング要素８２０の転送テーブルに基づいて、パケット１３３０の処理を開始する。管理されるスイッチング要素８２０は、ステージ１３７２のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた４によって示されるレコード（「レコード４」と呼ぶ）を識別する。レコード４は、パケット１３３０のヘッダに格納された論理コンテキストに基づいて、パケット１３３０の論理コンテキストを識別する。論理コンテキストは、パケット１３３０が、管理されるスイッチング要素８１０によって実行されたステージ１３６４及び１３６６によって処理されていることを指定する。このように、レコード４は、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０１５７】
次に、管理されるスイッチング要素８２０は、パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１３７４の出口ＡＣＬを実装する転送テーブル内の丸で囲まれた５によって示されるレコード（「レコード５」と呼ぶ）を識別する。この例では、レコード５は、パケット１３３０がさらに処理されることを可能にし、したがって、パケット１３３０が、転送テーブルによって（例えば、パケット１３３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード５は、管理されるスイッチング要素８２０が、パケット１３３０の論理コンテキスト（例えば、パケット１３３０は、処理パイプライン１３００のステージ１３７４によって処理されている）を、パケット１３３０のヘッダのフィールドのセットに格納することを指定する。
【０１５８】
次に、管理されるスイッチング要素８２０は、パケット１３３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１３７６の物理マッピングを実装する転送テーブル内の丸で囲まれた６によって示されるレコード（「レコード６」と呼ぶ）を識別する。レコード６は、パケット１３３０がＶＭ４に到達するために、パケット１３３０が送信されるべき管理されるスイッチング要素８２０のポート５を指定する。この場合では、管理されるスイッチング要素８２０は、ＶＭ４に結合される管理されるスイッチング要素８２０のポート５からパケット１３３０を送出することになる。いくつかの実施形態では、管理されるスイッチング要素８２０は、パケットをＶＭ４に送信する前に、パケット１３３０から論理コンテキストを除去する。
【０１５９】
図１４は、どの管理されるスイッチング要素にパケットを送信するかを決定するために、パケットを転送するためにいくつかの実施形態が実行するプロセス１４００を概念的に示す。プロセス１４００は、いくつかの実施形態では、パケットを受信し、別の管理されるスイッチング要素、又はパケットの宛先マシンにパケットを送信する管理されるスイッチング要素によって実行される。
【０１６０】
プロセス１４００は、（１４０５で）送信元マシンからパケットを受信することによって開始する。プロセス１４００は、次に、（１４１０で）Ｌ２処理の一部を実行する。プロセスがＬ２処理を実行するにしたがって、プロセス１４００は、（１４１５で）パケットが、パケットのさらなる処理のために第２のレベルの管理されるスイッチング要素に送信される必要があるかどうかを判定する。いくつかの実施形態では、プロセスは、パケットの宛先Ｌ２アドレスに基づいてこの判定を行う。プロセスは、宛先Ｌ２アドレスを見て、宛先Ｌ２アドレスと関連付けられたポートを介してパケットを送出する。例えば、パケットの宛先Ｌ２アドレスが、Ｌ３ルータのＬ２アドレスである場合、プロセスは、Ｌ３ルータと関連付けられた管理されるスイッチング要素と関連付けられたポートからパケットを送出する。パケットの宛先Ｌ２アドレスが、宛先マシンのＬ２アドレスである場合、プロセスは、宛先マシン、又は、宛先マシンへのルート中でより近い管理されるスイッチング要素に直接接続された管理されるスイッチング要素にパケットを送信する。
【０１６１】
プロセス１４００が、（１４１５で）パケットが第２のレベルの管理されるスイッチング要素に送信される必要があると判定すると、プロセス１４００は、（１４２０で）論理ルータを実装するＬ３ルータに通信可能に結合された第２のレベルの管理されるスイッチング要素にパケットを送信する。そうでなければ、プロセス１４００は、（１４２５で）宛先マシン、又は別の管理されるスイッチング要素にパケットを送信する。次に、プロセスは、終了する。
【０１６２】
図１５は、上述したホスト８９０を概念的に示す。具体的には、管理されるスイッチング要素８１０が、Ｌ３ルータからパケットを受信し、パケットが、同じホスト８９０に実装された別のＬ３ルータに向けられている場合、管理されるスイッチング要素８１０は、フローエントリに基づいて、２つのＬ３ルータを直接ブリッジする。
【０１６３】
図示のように、管理されるスイッチング要素８１０は、２つのＬ３ルータ１及び２に結合される。管理されるスイッチング要素８１０が含むフローエントリは、図の右側に示されている。フローエントリは、一方のＬ３ルータから別のＬ３ルータにアドレスされるトラフィックが、他のＬ３ルータに直接行くべきであることを示す。
【０１６４】
また、この図は、追加のネットワークトラフィックをルーティングするために、より多くの管理されるスイッチング要素が設けられ、既存のＬ３ルータに依存する場合、追加のルーティングリソースを提供するために、追加のルータが、ホスト８９０に設けられてよいことを示す。
【０１６５】
図１６は、第１及び第２のＬ３ルータが同じホストに実装されている場合、第１のＬ３ルータから第２のＬ３ルータにパケットを直接転送するためにいくつかの実施形態が使用するプロセス１６００を概念的に示す。プロセス１６００は、いくつかの実施形態では、上述した管理されるスイッチング要素８１０のような管理されるスイッチング要素によって実行され、管理されるスイッチング要素は、単一のホストに実装される２つ以上のＬ３ルータとパケットを交換する。
【０１６６】
プロセス１６００は、（１６０５で）第１のＬ３ルータからパケットを受信することによって開始する。プロセス１６００は、次に、（１６１０で）パケットが、第１のＬ３ルータが実装されているのと同じホストに実装されている第２のＬ３ルータにアドレスされているかどうかを判定する。プロセス１６００は、これを、パケットのヘッダ内の情報（例えば、宛先ＭＡＣアドレス）を調べることによって判定する。
【０１６７】
プロセス１６００が、（１６１０で）パケットが第２のＬ３ルータに向けられていると判定した場合、プロセス１６００は、パケットを第２のＬ３ルータに送信する。そうでなければ、プロセス１６００は、パケットの宛先（例えば、別の管理されるスイッチング要素又は宛先マシン）に向けてパケットを送信する。次に、プロセス１６００は、終了する。
【０１６８】
図１７〜２４は、管理されるスイッチング要素のフローエントリに基づいて、管理されるスイッチング要素に実装される集中型論理ルータを示す。図１７は、図２を参照して上述した論理処理パイプライン２００の例示的な実装を概念的に示す。図１７は、ネットワークアーキテクチャ１７００を示す。ネットワークアーキテクチャ１７００では、論理処理パイプライン２００は、３つの管理されるスイッチング要素１７１５、１７２０、及び１７２５によって実行される。具体的には、Ｌ２処理２０５及びＬ２処理２１５は、管理されるスイッチング要素１７１５、１７２０、及び１７２５にまたがって分散的に実行される。Ｌ３処理２１０は、管理されるスイッチング要素１７２０のフローエントリに基づいて、管理されるスイッチング要素１７２０によって実行される。図１７は、送信元マシン１７１０及び宛先マシン１７３０も示す。
【０１６９】
管理されるスイッチング要素１７１５は、管理されるスイッチング要素１７１５も、エッジスイッチング要素に結合されたマシンからパケットを直接受信するエッジスイッチング要素であるという点で、図６を参照して上述した管理されるスイッチング要素６１５と同様である。管理されるスイッチング要素１７１５は、送信元マシン１７１０からパケットを受信する。管理されるスイッチング要素１７１５が、送信元マシン１７１０からパケットを受信すると、管理されるスイッチング要素１７１５は、パケットを論理的に転送するために、パケットにＬ２処理２０５の一部を実行する。パケットが、別の論理ネットワークにある宛先マシン１７３０に向けられている場合、パケットは、管理されるスイッチング要素１７２０に転送される。
【０１７０】
管理されるスイッチング要素１７１５と、管理されるスイッチング要素１７２０との間に、１つ又は複数の管理されるスイッチング要素（図示せず）が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物（例えば、ＰＩＦ、ＶＩＦ、など）を有し、ネットワーク構成物には、論理スイッチ２２０（図１７には示さず）の論理構成物（例えば、論理ポート）がマッピングされる。
【０１７１】
管理されるスイッチング要素１７２０は、いくつかの実施形態ではエクステンダとして機能する第２のレベルの管理されるスイッチング要素である。管理されるスイッチング要素１７２０は、Ｌ２処理２０５の残りを実行し、Ｌ３処理２１０も実行する。管理されるスイッチング要素１７２０は、また、論理処理パイプライン２００のＬ２処理２１５の一部を実行する。管理されるスイッチング要素１７２０は、次に、管理されるスイッチング要素１７２５にパケットを送信する。
【０１７２】
管理されるスイッチング要素１７２０と、管理されるスイッチング要素１７２５との間に、１つ又は複数の管理されるスイッチング要素（図示せず）が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ２２０（図１７には示さず）の論理構成物がマッピングされる。
【０１７３】
この例の管理されるスイッチング要素１７２５は、管理されるスイッチング要素１７２０からパケットを受信する。管理されるスイッチング要素１７２５は、パケットを論理的に転送するために、パケットにＬ２処理２１５の残りを実行する。この例では、管理されるスイッチング要素１７２５は、パケットを宛先マシン１７３０に直接送信するスイッチング要素でもある。しかしながら、管理されるスイッチング要素１７２５と、宛先マシン１１３０との間に、１つ又は複数の管理されるスイッチング要素（図示せず）が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ２３０（図１７には示さず）の論理構成物がマッピングされる。
【０１７４】
Ｌ２処理２０５及びＬ２処理２１５は、この例では分散的に実行されるが、Ｌ２処理２０５及びＬ２処理２１５は、分散的に実行される必要はない。例えば、管理されるスイッチング要素１７１５は、Ｌ２処理２０５全体を実行することができ、管理されるスイッチング要素１７２５は、Ｌ２処理２１５全体を実行することができる。このような場合、管理されるスイッチング要素１７２０は、論理処理パイプライン２００のＬ３処理２１０のみを実行することになる。
【０１７５】
図１８は、論理スイッチ２２０、論理ルータ２２５、及び論理スイッチ２３０を介してパケットを処理するいくつかの実施形態の論理処理パイプライン２００を概念的に示す。具体的には、この図は、図１７を参照して上述したネットワークアーキテクチャ１７００で実行される場合の論理処理パイプライン２００を示す。上述したように、ネットワークアーキテクチャ１７００では、Ｌ２処理２０５、Ｌ３処理２１０、及びＬ２処理２１５は、管理されるスイッチング要素１７１５、１７２０、及び１７２５によって実行される。
【０１７６】
Ｌ２処理２０５は、いくつかの実施形態では、管理されるスイッチング要素１７１５及び１７２０にまたがって実装される論理ネットワーク（図示せず）内の論理スイッチ２２０（図１８には示さず）を介してパケットを処理する７つのステージ１８０５〜１８３５を含む。いくつかの実施形態では、パケットを受信する管理されるスイッチング要素１７１５は、管理されるスイッチング要素１７１５がパケットを受信すると、Ｌ２処理２０５の一部を実行する。管理されるスイッチング要素１７２０は、次に、Ｌ２処理２０５の残りを実行する。
【０１７７】
最初の５つのステージ１８０５〜１８２５は、図７を参照して上述した最初の５つのステージ７０５〜７２５と同様である。Ｌ２処理２０５のステージ１８０５では、パケットの論理コンテキストを決定するために、パケットに入口コンテキストマッピングが実行される。いくつかの実施形態では、ステージ１８０５は、論理スイッチ２２０がパケットを受信する（例えば、パケットが、管理されるスイッチング要素１７１５によって受信される）と実行される。第１のステージ１８０５が実行された後、いくつかの実施形態は、論理コンテキストを表す情報を、パケットのヘッダの１つ又は複数のフィールドに格納する。
【０１７８】
いくつかの実施形態では、第２のステージ１８１０は、論理スイッチ２２０のために定義される。いくつかのこのような実施形態では、ステージ１８１０は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するとき、論理スイッチへのパケットのアクセスを制御するために、入口ＡＣＬがパケットに適用される。論理スイッチに対して定義された入口ＡＣＬに基づいて、パケットは、（例えば、ステージ１８１５によって）さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【０１７９】
Ｌ２処理２０５の第３のステージ１８１５では、論理スイッチのコンテキストにおいて、パケットにＬ２転送が実行される。いくつかの実施形態では、第３のステージ１８１５は、論理スイッチ２２０に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ２でパケットを処理するためのＬ２転送テーブル又はＬ２転送エントリを定義する。さらに、パケットの宛先が別の論理ネットワークである場合（例えば、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ２２０によって処理される論理ネットワークと異なる場合）、論理スイッチ２２０は、パケットを論理ルータ２２５に送信し、論理ルータ２２５は、次に、パケットを宛先論理ネットワークにルーティングするために、Ｌ３処理２１０を実行することになる。したがって、第３のステージ１８１５では、管理されるスイッチング要素１７１５は、パケットが、論理ルータ２２５に関連付けられた論理スイッチの論理ポート（図示せず）を介して論理ルータ２２５に転送されるべきであると判断する。
【０１８０】
第４のステージ１８２０では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ２２０の１つ又は複数の論理ポート（例えば、論理出口ポート）から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチ２２０の特定の論理ポートに対応する１つ又は複数の管理されるスイッチング要素（管理されるスイッチング要素１７１５及び１７２０を含む）の物理ポート（複数可）を特定する。管理されるスイッチング要素１７１５は、前のステージ１８１５で決定された論理ポートがマッピングされる物理ポート（例えば、ＶＩＦ）が、管理されるスイッチング要素１７２０のポート（図示せず）であると判断する。
【０１８１】
Ｌ２処理２０５の第５のステージ１８２５は、第４のステージ１８２０で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第４のステージ１８２０で決定された物理ポートに向けてパケットを送信する動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第４のステージ１８２０で決定された物理ポート（複数可）に達するために、パケットを送信するために通過する、Ｌ２処理２０５を実行している管理されるスイッチング要素１７１５のポートのセット（図示せず）の１つ又は複数のポートに関連付けられた１つ又は複数のキュー（図示せず）を決定する。このように、管理されるスイッチング要素は、決定された物理ポート（複数可）にパケットが達するためのネットワーク内の正しい経路に沿って、パケットを転送することができる。
【０１８２】
図示のように、Ｌ２処理２０５の第６のステージ１８３０は、管理されるスイッチング要素１７２０によって実行される。第６のステージ１８３０は、第１のステージ１８０５と同様である。ステージ１８３０は、管理されるスイッチング要素１７２０がパケットを受信すると実行される。ステージ１８３０では、管理されるスイッチング要素１７２０は、パケットの論理コンテキストをルックアップし、Ｌ２出口アクセス制御が、実行されるために残っていると判断する。
【０１８３】
いくつかの実施形態の第７のステージ１８３５は、論理スイッチ２２０のために定義される。いくつかのこのような実施形態の第７のステージ１８３５は、論理スイッチ２２０に対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後に、論理スイッチ２２０外へのパケットのアクセスを制御するために、出口ＡＣＬがパケットに適用されてよい。論理スイッチのために定義された出口ＡＣＬに基づいて、パケットは、さらに処理されてよく（例えば、論理スイッチの論理ポート外に送出される、若しくは、さらなる処理のためにディスパッチポートに送信される）、又は、パケットは、例えば、廃棄されてよい。
【０１８４】
Ｌ３処理２１０は、論理スイッチ２２０（図１８には示さず）を介してパケットを処理するための６つのステージ１８４０〜１８５６を含み、論理スイッチ２２０は、管理されるスイッチング要素１７２０のＬ３フローエントリに基づいて、管理されるスイッチング要素１７２０に実装される。上述したように、Ｌ３処理は、レイヤ３ネットワークを介してどこにパケットをルーティングするか決定するための論理ルーティングルックアップのセットを実行することを含む。
【０１８５】
第１のステージ１８４０は、論理ルータ２２５がパケットを受信すると（すなわち、論理ルータ２２５を実装する管理されるスイッチング要素１７２０がパケットを受信すると）、アクセス制御を決定するための論理入口ＡＣＬルックアップを実行する。次のステージ１８４１は、パケットの宛先アドレスを、パケットの送信元マシンから隠されている宛先マシンの実際のアドレスに戻すために、ＤＮＡＴを実行する。このステージ１８４１は、ＤＮＡＴが有効にされている場合、実行される。
【０１８６】
次のステージ１８４５は、パケットＬ３アドレス（例えば、宛先ＩＰアドレス）及びルーティングテーブル（例えば、Ｌ３エントリを含む）に基づいて、レイヤ３ネットワークを介してパケットを送信するための１つ又は複数の論理ポートを決定するための論理Ｌ３ルーティングを実行する。論理ルータ２２５は、管理されるスイッチング要素１７２０によって実装されるため、Ｌ３フローエントリは、管理されるスイッチング要素１７２０内に構成される。
【０１８７】
第４のステージ１８５０では、いくつかの実施形態の管理されるスイッチング要素１７２０は、パケットにＳＮＡＴも実行する。例えば、管理されるスイッチング要素１７２０は、送信元ＮＡＴが有効にされている場合、送信元ＩＰアドレスを隠すために、パケットの送信元ＩＰアドレスを異なるＩＰアドレスに置き換える。また、以下にさらに説明するように、管理されるスイッチング要素は、ネットワークアドレスを変換するためのフローエントリを受信するために、ＮＡＴデーモンを使用することができる。ＮＡＴデーモンは、図３１を参照してさらに後述される。
【０１８８】
第５のステージ１８５５は、論理ルータ２２５が、ステージ１８４５で決定されたポートを介してパケットを論理ルータ２２５の外にルーティングする前に、アクセス制御を決定するための論理Ｌ３出口ＡＣＬルックアップを実行する。Ｌ３出口ＡＣＬルックアップは、パケットのＬ３アドレス（例えば、送信元及び宛先ＩＰアドレス）に基づいて実行される。
【０１８９】
第６のステージ１８５６は、宛先Ｌ３アドレス（例えば、宛先ＩＰアドレス）を宛先Ｌ２アドレス（例えば、宛先ＭＡＣアドレス）に変換するために、アドレス解決を実行する。いくつかの実施形態では、管理されるスイッチング要素１７２０は、宛先ＩＰアドレスに対応する宛先Ｌ２アドレスを見つけるために、（例えば、ＡＲＰ要求を送信するか、ＡＲＰキャッシュをルックアップすることによって）標準的なアドレス解決を使用する。また、以下にさらに説明するように、いくつかの実施形態の管理されるスイッチング要素１７２０は、Ｌ３アドレスをＬ２アドレスに解決するためのフローエントリを受信するために、Ｌ３デーモンを使用することができる。Ｌ３デーモンは、図４８〜５０を参照してさらに後述される。
【０１９０】
論理ルータ２２５が宛先論理ネットワークに結合されていない場合、論理スイッチ２２０は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。論理ルータ２２５が宛先論理ネットワークに結合されている場合、論理スイッチ２２０は、宛先論理ネットワーク（すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ）にパケットをルーティングする。
【０１９１】
Ｌ２処理２１５は、いくつかの実施形態では、管理されるスイッチング要素１７２０及び１７２５（図示せず）にまたがって実装される別の論理ネットワーク（図１８には示さず）内の論理スイッチ２３０を介してパケットを処理するための７つのステージ１８６０〜１８９０を含む。ステージ１８６０〜１８９０は、ステージ１８６０〜１８９０が、論理スイッチ２３０によって（すなわち、論理スイッチ２３０を実装する管理されるスイッチング要素１７２０及び１７２５によって）実行される点を除いて、それぞれ、ステージ１８０５〜１８３５と同様である。
【０１９２】
図１９は、論理ルータ２２５並びに論理スイッチ２２０及び２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ１９００を概念的に示す。具体的には、ネットワークアーキテクチャ１９００は、そのデータパケットが論理ルータ２２５並びに論理スイッチ２２０及び２３０によって切り替えられる及び／又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、それぞれ、ホスト１９９０、１９８０、及び１９８５（例えば、Ｗｉｎｄｏｗｓ（登録商標）及びＬｉｎｕｘ（登録商標）のようなオペレーティングシステムによって動作されるマシン）で動作している、第２のレベルの管理されるスイッチング要素１９１０、管理されるスイッチング要素１９１５及び１９２０を示す。図は、図の上部及び下部の両方にＶＭ１〜４を示す。
【０１９３】
この例では、論理スイッチ２２０は、論理ルータ２２５、ＶＭ１、及びＶＭ２間でデータパケットを転送する。論理スイッチ２３０は、論理ルータ２２５、ＶＭ３、及びＶＭ４間でデータパケットを転送する。上述したように、論理ルータ２２５は、論理スイッチ２２０及び２３０並びにおそらく他の論理ルータ及びスイッチ（図示せず）間でデータパケットをルーティングする。論理スイッチ２２０及び２３０並びに論理ルータ２２５は、論理ポート（図示せず）を介して論理的に結合され、論理ポートを介してパケットを交換する。これらの論理ポートは、Ｌ３ルータ１９６０並びに管理されるスイッチング要素１９１０、１９１５、及び１９２０の物理ポートにマッピングされる。
【０１９４】
いくつかの実施形態では、論理スイッチ２２０及び２３０の各々は、管理されるスイッチング要素１９１５及び１９２０並びにおそらく他の管理されるスイッチング要素（図示せず）にまたがって実装される。いくつかの実施形態では、論理ルータ２２５は、管理されるスイッチング要素１９１０に通信可能に結合されるＬ３ルータ１９６０に実装される。
【０１９５】
この例では、管理されるスイッチング要素１９１０、１９１５、及び１９２０は、それぞれ、ホスト１９９０、１９８０、及び１９８５で実行するソフトウェアスイッチング要素である。管理されるスイッチング要素１９１０、１９１５、及び１９２０は、論理スイッチ２２０及び２３０を実装するフローエントリを有する。これらのフローエントリを使用して、管理されるスイッチング要素１９１５及び１９２０は、管理されるスイッチング要素１９１０、１９１５、及び１９２０に結合されるネットワーク内のネットワーク要素間でネットワークデータ（例えば、パケット）を転送する。例えば、管理されるスイッチング要素１９１５は、ＶＭ１及び３と、第２のレベルの管理されるスイッチング要素１９１０との間でネットワークデータをルーティングする。同様に、管理されるスイッチング要素１９２０は、ＶＭ２及び４と、第２のレベルの管理されるスイッチング要素１９１０との間でネットワークデータをルーティングする。図示のように、管理されるスイッチング要素１９１５及び１９２０は、それぞれ、管理されるスイッチング要素１９１５及び１９２０に結合されるネットワーク要素とデータパケットを交換するために介する３つのポート（番号付けされた正方形として示される）を有する。
【０１９６】
管理されるスイッチング要素１９１０は、管理されるスイッチング要素１９１０が、エクステンダとして機能する第２のレベルの管理されるスイッチング要素であるという点で、図４を参照して上述した管理されるスイッチング要素３０５と同様である。管理されるスイッチング要素５６０は、また、フローエントリに基づいて論理ルータ２２５を実装する。これらのフローエントリを使用して、管理されるスイッチング要素１９１０は、Ｌ３でパケットをルーティングする。この例では、管理されるスイッチング要素１９１０に実装される論理ルータ２２５は、管理されるスイッチング要素１９１０及び１９１５にまたがって実装される論理スイッチ２２０と、管理されるスイッチング要素１９１０及び１９２０にまたがって実装される論理スイッチ２３０との間でパケットをルーティングする。
【０１９７】
この例では、図示のように、管理されるスイッチング要素１９１０は、ホスト１９８０で動作する管理されるスイッチング要素１９１５に、管理されるスイッチング要素１９１５のポート２で終端するトンネルを介して結合される。同様に、管理されるスイッチング要素１９１０は、管理されるスイッチング要素１９２０に、管理されるスイッチング要素１９２０のポート１で終端するトンネルを介して結合される。
【０１９８】
この例では、図示のように、ホスト１９８０及び１９８５の各々は、管理されるスイッチング要素及びいくつかのＶＭを含む。ＶＭ１〜ＶＭ４は、それぞれネットワークアドレス（例えば、Ｌ２のためのＭＡＣアドレス、Ｌ３のためのＩＰアドレス、など）のセットが割り当てられた仮想マシンであり、他のネットワーク要素との間でネットワークデータを送受信することができる。ＶＭは、ホスト１９８０及び１９８５で動作するハイパーバイザ（図示せず）によって管理される。
【０１９９】
ネットワークアーキテクチャ１９００を介するいくつかの例示的なデータ交換を、ここで説明する。論理スイッチ２２０に結合されたＶＭ１が、同じ論理スイッチ２２０に結合されたＶＭ２にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素１９１５に送信される。管理されるスイッチング要素１９１５は、ＶＭ１からパケットを受信するエッジスイッチング要素であるため、管理されるスイッチング要素１９１５は、次に、パケットにＬ２処理２０５を実行する。このパケットへのＬ２処理２０５の結果は、パケットが、管理されるスイッチング要素１９２０のポート４を介してＶＭ２に達するために、管理されるスイッチング要素１９２０に送信されるべきであることを示す。ＶＭ１及び２は、同じ論理ネットワーク内にあり、したがって、パケットのためのＬ３ルーティングは必要ないため、Ｌ３処理は、このパケットに実行される必要はない。パケットは、次に、管理されるスイッチング要素１９１５及び管理されるスイッチング要素１９２０間をブリッジしている第２のレベルの管理されるスイッチング要素１９１０を介して、管理されるスイッチング要素１９２０に送信される。パケットは、管理されるスイッチング要素１９２０のポート４を介して、ＶＭ２に到達する。
【０２００】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ３にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素１９１５に送信される。管理されるスイッチング要素１９１５は、パケットにＬ２処理の一部を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される（すなわち、パケットの論理Ｌ３宛先アドレスは、別の論理ネットワークのためのものである）ため、Ｌ３処理がこのパケットに実行される必要がある。
【０２０１】
管理されるスイッチング要素１９１５は、管理されるスイッチング要素１９１０が、パケットにＬ２処理の残り及びＬ３処理２１０を実行するように、第２のレベルの管理されるスイッチング要素１９１０にパケットを送信する。管理されるスイッチング要素１９１０は、次に、別のＬ２処理の一部を実行し、管理されるスイッチング要素１９２０にパケットを転送する。管理されるスイッチング要素１９１５は、管理されるスイッチング要素１９１０から受信したパケットにＬ２処理２１５を実行し、このＬ２処理の結果は、パケットが、管理されるスイッチング要素１９１５のポート５を介してＶＭ３に送信されるべきであることを示すことになる。
【０２０２】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素１９１５に送信される。管理されるスイッチング要素１９１５は、パケットにＬ２処理２０５を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、Ｌ３処理が実行される必要がある。
【０２０３】
管理されるスイッチング要素１９１５は、管理されるスイッチング要素１９１０が、パケットにＬ２処理２０５の残り及びＬ３処理２１０を実行するように、管理されるスイッチング要素１９１０にパケットを送信する。管理されるスイッチング要素１９１０で実行されるＬ３処理２１０の結果は、パケットが、管理されるスイッチング要素１９１５に送信されるべきであることを示す。管理されるスイッチング要素１９１０は、次に、パケットにＬ２処理の一部を実行し、このＬ２処理の結果は、パケットが、管理されるスイッチング要素１９２０を介してＶＭ４に送信されるべきであることを示す。管理されるスイッチング要素１９２０は、パケットが、管理されるスイッチング要素１９２０のポート５を介してＶＭ４に送信されるべきであることを決定するために、Ｌ２処理の残りを実行する。
【０２０４】
図２０は、論理ルータ２２５並びに論理スイッチ２２０及び２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ２０００を概念的に示す。具体的には、ネットワークアーキテクチャ２０００は、そのデータパケットが論理ルータ２２５並びに論理スイッチ２２０及び２３０によって切り替えられる及び／又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、それぞれ、ホスト１９９０、１９８０、及び１９８５で動作している、第２のレベルの管理されるスイッチング要素１９１０、管理されるスイッチング要素１９１５及び１９２０を示す。図は、図の上部及び下部の両方にＶＭ１〜４を示す。
【０２０５】
ネットワークアーキテクチャ２０００は、ネットワークアーキテクチャ２０００が、ホスト２０１０で動作する管理されるスイッチング要素２００５を追加で含むことを除いて、ネットワークアーキテクチャ１９００と同様である。いくつかの実施形態の管理されるスイッチング要素２００５は、プールノードとして機能する第２のレベルの管理されるスイッチング要素である。
【０２０６】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム（図示せず）によってトンネルが確立される。例えば、図示のように、この例での管理されるスイッチング要素１９１５は、ホスト２０１０で動作する管理されるスイッチング要素２００５に、管理されるスイッチング要素１９１５のポート１で終端するトンネルを介して結合される。同様に、管理されるスイッチング要素１９２０は、スイッチング要素２００５に、管理されるスイッチング要素１９２０のポート２で終端するトンネルを介して結合される。また、図示のように、管理されるスイッチング要素２００５及び１９１０は、トンネルを介して結合される。
【０２０７】
論理ルータ２２５並びに論理スイッチ２２０及び２３０は、第２のレベルの管理されるスイッチング要素２００５が、データパケット交換に関係することを除いて、図１９を参照して上述した管理されるスイッチング要素１９１０、１９１５、及び１９２０において実装される。すなわち、管理されるスイッチング要素１９１５及び１９１０は、管理されるスイッチング要素２００５を介してパケットを交換する。管理されるスイッチング要素１９２０及び１９１０は、管理されるスイッチング要素２００５を介してパケットを交換する。
【０２０８】
図２１は、論理ルータ２２５並びに論理スイッチ２２０及び２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ２１００を概念的に示す。ネットワークアーキテクチャ２１００は、管理されるスイッチング要素１９１０及び管理されるスイッチング要素１９２０間に確立されたトンネルが存在することを除いて、ネットワークアーキテクチャ１９００と同様である。この図は、いくつかの実施形態のネットワークアーキテクチャ２１００が、ネットワークアーキテクチャ１９００及びネットワークアーキテクチャ２０００の混合物であることを示す。すなわち、いくつかの管理されるエッジスイッチング要素は、集中型Ｌ３ルータに結合された第２のレベルの管理されるスイッチング要素へのトンネルを有し、他の管理されるエッジスイッチング要素は、集中型Ｌ３ルータに結合された第２のレベルの管理されるスイッチング要素とパケットを交換するために、プールノードとして機能する第２のレベルの管理されるスイッチング要素を介さなければならない。
【０２０９】
図２２は、フローエントリに基づいて論理ルータを実装する管理されるスイッチング要素１９１０を含むいくつかの実施形態のホスト１９９０の例示的なアーキテクチャを概念的に示す。ホスト１９９０は、いくつかの実施形態では、仮想マシンを作成することができるオペレーティングシステム（例えば、Ｌｉｎｕｘ（登録商標））によって管理されるマシンである。図示のように、この例でのホスト１９９０は、管理されるスイッチング要素１９１０及びＮＩＣ２２４５を含む。この図は、コントローラクラスタ２２０５も示す。
【０２１０】
コントローラクラスタ２２０５は、管理されるスイッチング要素１９１０を含むネットワーク要素を管理するネットワークコントローラ又はコントローラインスタンスのセットである。この例での管理されるスイッチング要素１９１０は、ユーザ空間２２１２及びカーネル２２１０を含むホスト１９９０に実装されるソフトウェアスイッチング要素である。管理されるスイッチング要素１９１０は、ユーザ空間２２１２で動作している制御デーモン２２１５、並びに、カーネル２２１０で動作しているコントローラパッチ２２３０及びブリッジ２２３５を含む。さらに後述するＮＡＴデーモン２２５０も、ユーザ空間２２１２で動作している。ユーザ空間２２１２及びカーネル２２１０は、いくつかの実施形態では、ホスト１９９０のためのオペレーティングシステムのものであり、他の実施形態では、ユーザ空間２２１２及びカーネル２２１０は、ホスト１９９０上で動作している仮想マシンのものである。
【０２１１】
いくつかの実施形態では、コントローラクラスタ２２０５は、制御デーモン２２１５と（例えば、オープンフロープロトコル又はいくつかの他の通信プロトコルを使用することによって）通信し、制御デーモン２２１５は、いくつかの実施形態では、ユーザ空間２２１２のバックグラウンドで動作しているアプリケーションである。制御デーモン２２１５は、管理されるスイッチング要素１９１０が受信するパケットを処理し、ルーティングするために、コントローラクラスタ２２０５と通信する。具体的には、制御デーモン２２１５は、いくつかの実施形態では、コントローラクラスタ２２０５から構成情報を受信し、コントローラパッチ２２３０を構成する。例えば、制御デーモン２２１５は、管理されるスイッチング要素１９１０が受信するパケットを、Ｌ２及びＬ３で処理し、ルーティングするための動作に関して、コントローラクラスタ２２０５からコマンドを受信する。
【０２１２】
コントローラパッチ２２３０は、カーネル２２１０で動作するモジュールである。いくつかの実施形態では、制御デーモン２２１５が、コントローラパッチ２２３０を構成する。構成されると、コントローラパッチ２２３０は、受信するパケットの処理、転送、及びルーティングに関するルール（例えば、フローエントリ）を含む。コントローラパッチ２２３０は、論理スイッチ及び論理ルータの両方を実装する。
【０２１３】
いくつかの実施形態では、コントローラパッチ２２３０は、ネットワークアドレス変換のためのＮＡＴデーモンを使用する。さらに後述するように、ＮＡＴデーモン２２５０は、ネットワークアドレス変換に関するフローエントリを生成し、フローエントリを、使用する管理されるスイッチング要素１９１０に送り返す。ＮＡＴデーモンは、さらに後述される。
【０２１４】
コントローラパッチ２２３０は、カーネル２２１０のネットワークスタック２２５０から、又は、ブリッジ２２３５からパケットを受信する。ブリッジ２２３５は、ネットワークスタック２２５０、及び、ホストの外部のネットワークホスト間で、ネットワークデータ（例えば、ＮＩＣ２２４５を介して受信されたネットワークデータ）をルーティングする。図示のように、ブリッジ２２３５は、ネットワークスタック２２５０及びＮＩＣ２２４５間、並びに、ネットワークスタック２２５０及びＮＩＣ２２４５間で、ネットワークデータをルーティングする。いくつかの実施形態のブリッジ２２３５は、標準的なＬ２パケット学習及びルーティングを実行する。
【０２１５】
ネットワークスタック２２５０は、ＮＩＣ２２４５を介して、管理されるスイッチング要素１９１０の外部のネットワークホストからパケットを受信することができる。ネットワークスタック２２５０は、次に、コントローラパッチ２２３０にパケットを送信する。いくつかの場合では、パケットは、トンネルを介して、管理されるスイッチング要素の外部のネットワークホストから受信される。いくつかの実施形態では、トンネルは、ネットワークスタック２２５０で終端する。したがって、ネットワークスタック２２５０が、トンネルを介してパケットを受信すると、ネットワークスタック２２５０は、トンネルヘッダをアンラップし（すなわち、ペイロードをデカプセルし）、アンラップされたパケットをコントローラパッチ２２３０に送信する。
【０２１６】
管理されるスイッチング要素１９１０の例示的な動作をここで説明する。この例では、トンネルは、管理されるスイッチング要素１９１０と、ホスト１９９０の外部の管理されるスイッチング要素１９１５及び１９２０（図２２には示さず）との間に確立される。すなわち、管理されるスイッチング要素１９１０、１９１５、及び１９２０は、図１９に示すように、トンネルを介して接続される。トンネルは、ネットワークスタック２２５０で終端する。
【０２１７】
管理されるスイッチング要素１９１５は、ＶＭ１〜ＶＭ４によって送信されたパケットを、管理されるスイッチング要素１９１０に送信する。パケットは、ＮＩＣ２２４５によって受信され、次に、ブリッジ２２３５に送信される。パケットヘッダ内の情報に基づいて、ブリッジ２２３５は、パケットが、確立されたトンネルを介して送信されると判断し、ネットワークスタック２２５０にパケットを送信する。ネットワークスタック２２５０は、トンネルヘッダをアンラップし、アンラップされたパケットをコントローラパッチ２２３０に送信する。
【０２１８】
パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、コントローラパッチ２２３０が有するフローエントリにしたがって、コントローラパッチ２２３０は、パケットにＬ３処理を実行しパケットをルーティングする。Ｌ３処理及びいくらかのＬ２処理を実行することによって、管理されるスイッチング要素１９１０は、宛先ネットワークレイヤアドレスが、宛先論理ネットワークに属する論理スイッチに行くべきであるため、パケットが、管理されるスイッチング要素１９２０に送信されるべきであると判断する。コントローラパッチ２２３０は、トンネルを介して、ネットワークスタック２２５０、ブリッジ２２３５、及びＮＩＣ２２４５を介して、管理されるスイッチング要素１９２０にパケットを送信し、管理されるスイッチング要素１９２０は、宛先論理ネットワークに属する論理スイッチを実装する。
【０２１９】
図２３は、管理されるスイッチング要素内の論理スイッチ及び論理ルータの例示的な実装を概念的に示す。具体的には、この図は、第２のレベルの管理されるスイッチング要素１９１０並びに管理されるスイッチング要素１９１５及び１９２０内の論理ルータ２２５並びに論理スイッチ２２０及び２３０の実装を示す。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、管理されるスイッチング要素１９１０〜１９２０を示す。図は、図の上半分及び下半分の両方にＶＭ１〜４を示す。
【０２２０】
論理スイッチ２２０及び２３０並びに論理ルータ２２５は、論理ポートを介して論理的に結合される。論理スイッチ２２０及び２３０のこの特定の構成は、図１２を参照して上述した例で示した構成と同じである。
【０２２１】
図２３の例では、コントローラクラスタ２２０５（図２３には示さず）は、管理されるスイッチング要素が、フローエントリに基づいて論理ルータ２２５を実装するように、管理されるスイッチング要素１９１０にフローエントリを供給することによって、管理されるスイッチング要素１９１０を構成する。
【０２２２】
図２４は、図２３を参照して上述した論理スイッチ２２０及び２３０、論理ルータ２２５、並びに、管理されるスイッチング要素１９１０、１９１５、及び１９２０の例示的な動作を概念的に示す。具体的には、図２４は、論理ルータ２２５を実装する管理されるスイッチング要素１９１０の動作を示す。管理されるスイッチング要素１９１５及び１９２０が実行する論理処理パイプラインの一部は、簡単化のため、図２４には示されない。論理処理パイプラインのこれらの部分は、図１３Ａ及び図１３Ｂの上半分に示した例での、管理されるスイッチング要素８１５及び８２０によって実行される論理処理の部分と同様である。すなわち、図２４の例を例示するために、図２４は、図１３Ａ及び図１３Ｂの下半分を置き換える。
【０２２３】
図２４の下半分に示すように、管理されるスイッチング要素１９１０は、Ｌ２エントリ２４０５及び２４１５並びにＬ３エントリ２４１０を含む。これらのエントリは、コントローラクラスタ２２０５（図示せず）が、管理されるスイッチング要素１９１０に供給するフローエントリである。これらのエントリは、３つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【０２２４】
管理されるスイッチング要素１９１０が、ＶＭ１からＶＭ４に送信されるパケット２４３０を、管理されるスイッチング要素１９１５から受信すると、管理されるスイッチング要素１９１０は、管理されるスイッチング要素１９１０のフローエントリ２４０５に基づいて、パケット２４３０の処理を開始する。管理されるスイッチング要素１９１０は、ステージ１８３０のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた１によって示されるレコード（「レコード１」と呼ぶ）を識別する。レコード１は、パケット２４３０のヘッダに格納された論理コンテキストに基づいて、パケット２４３０の論理コンテキストを識別する。論理コンテキストは、パケット２４３０が、管理されるスイッチング要素１９１５によって実行された論理処理の一部（例えば、Ｌ２入口ＡＣＬ、Ｌ２転送）によって処理されていることを指定する。このように、レコード１は、パケット２４３０が、転送テーブルによって（例えば、パケット２４３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０２２５】
次に、管理されるスイッチング要素１９１０は、パケット２４３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１８３５の出口ＡＣＬを実装する転送テーブル内の丸で囲まれた２によって示されるレコード（「レコード２」と呼ぶ）を識別する。この例では、レコード２は、パケット２４３０がさらに処理されることを可能にし（例えば、パケット２４３０は、論理スイッチ２２０のポート「Ｘ」を介して論理スイッチ２２０から出ることができる）、したがって、パケット２４３０が、管理されるスイッチング要素１９１０のフローエントリによって（例えば、パケット２４３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード２は、管理されるスイッチング要素１９１０が、パケット２４３０の論理コンテキスト（例えば、パケット２４３０は、処理パイプライン２４００のステージ２４５２によって処理されている）を、パケット２４３０のヘッダのフィールドのセットに格納することを指定する。（すべてのレコードは、論理処理を実行する管理されるスイッチング要素が、レコードに基づいて論理処理の一部を実行するたびに、フィールドのセット内の論理コンテキストストアを更新することを指定することに注意すべきである。）
【０２２６】
管理されるスイッチング要素１９１０は、フローエントリに基づいてパケット２４３０の処理を続ける。管理されるスイッチング要素１９１０は、パケット２４３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素１９１０がパケット２４３０のヘッダ内の情報に基づいて論理ルータ２２５の論理ポート１を介してパケットを受け入れるべきであることを指定することによってＬ３入口ＡＣＬを実装するＬ３エントリ２４１０内の丸で囲まれた３によって示されるレコード（「レコード３」と呼ぶ）を識別する。
【０２２７】
管理されるスイッチング要素１９１０は、次に、その宛先ＩＰアドレス（例えば、１．１．２．１０）を有するパケット２４３０が論理ルータ２２５のポート２から出ることを許可されるべきであることを指定することによってＬ３ルーティング１８４５を実装するＬ３エントリ２４１０内の丸で囲まれた４によって示されるフローエントリ（「レコード４」と呼ぶ）を識別する。また、レコード４（又は、図示しないルーティングテーブル内の別のレコード）は、パケット２４３０の送信元ＭＡＣアドレスが、論理ルータ２２５のポート２のＭＡＣアドレス（すなわち、０１：０１：０１：０１：０１：０２）に書き換えられるべきであることを示す。管理されるスイッチング要素１９１０は、次に、管理されるスイッチング要素１９１０がパケット２４３０のヘッダ内の情報（例えば、送信元ＩＰアドレス）に基づいて論理ルータ２２５のポート２を介してパケットを送出することができることを指定することによってＬ３出口ＡＣＬを実装するＬ３エントリ２４１０内の丸で囲まれた５によって示されるフローエントリ（「レコード５」と呼ぶ）を識別する。
【０２２８】
パケット２４３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素１９１０は、ステージ１８６０の入口ＡＣＬを実装するＬ２エントリ２４１５内の丸で囲まれた６によって示されるレコード（「レコード６」と呼ぶ）を識別する。この例では、レコード６は、パケット２４３０がさらに処理されることを可能にし、したがって、パケット２４３０が、管理されるスイッチング要素１９１０によって（例えば、パケット２４３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード６は、管理されるスイッチング要素１９１０が、パケット２４３０の論理コンテキスト（例えば、パケット２４３０は、処理パイプライン２４００のステージ２４６２によって処理されている）を、パケット２４３０のヘッダのフィールドのセットに格納することを指定する。
【０２２９】
次に、管理されるスイッチング要素１９１０は、パケット２４３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ１８６５の論理Ｌ２転送を実装する転送テーブル内の丸で囲まれた７によって示されるレコード（「レコード７」と呼ぶ）を識別する。レコード７は、ＶＭ４のＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットが、ＶＭ４に接続された論理スイッチ２３０の論理ポート（図示せず）を介して転送されるべきであることを指定する。
【０２３０】
レコード７は、また、パケット２４３０が、転送テーブルによって（例えば、パケット２４３０をディスパッチポートに送信することによって）さらに処理されることを指定する。また、レコード７は、管理されるスイッチング要素１９１０が、論理コンテキスト（例えば、パケット２４３０は、処理パイプライン２４００のステージ１８６５によって処理されている）を、パケット２４３０のヘッダのフィールドのセットに格納することを指定する。
【０２３１】
パケット２４３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素１９１０は、ステージ１８７０のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた８によって示されるレコード（「レコード８」と呼ぶ）を識別する。この例では、レコード８は、ＶＭ４が結合される管理されるスイッチング要素１９２０のポート５を、パケット２４３０が転送されるべき論理スイッチ２３０の論理ポート（ステージ１８６５で決定される）に対応するポートとして識別する。レコード８は、加えて、パケット２４３０が、転送テーブルによって（例えば、パケット２４３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０２３２】
パケット２４３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素１９１０は、次に、ステージ１８７５の物理マッピングを実装するＬ２エントリ２４１５内の丸で囲まれた９によって示されるレコード（「レコード９」と呼ぶ）を識別する。レコード９は、パケット２４３０が管理されるスイッチング要素１９２０に到達するために、パケット２４３０が送信されるべき管理されるスイッチング要素１９１０のポート（図示せず）を指定する。この場合では、管理されるスイッチング要素１９１０は、パケット２４３０を、管理されるスイッチング要素１９２０に結合される管理されるスイッチング要素１９１０のポートから送出することになる。
【０２３３】
図２５〜３０Ｂは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素に実装される分散型論理ルータを示す。具体的には、図２５〜３０Ｂは、送信元Ｌ２処理、Ｌ３ルーティング、及び宛先Ｌ２処理を含む論理処理パイプライン全体が、最初のホップの管理されるスイッチング要素（すなわち、マシンから直接パケットを受信するスイッチング要素）によって実行されることを示す。
【０２３４】
図２５は、図２を参照して上述した論理処理パイプライン２００の例示的な実装を概念的に示す。具体的には、図２５は、Ｌ３処理２１０が、送信元マシンからパケットを直接受信する任意の管理されるスイッチング要素によって実行され得ることを示す。図２５は、ネットワークアーキテクチャ２５００を示す。ネットワークアーキテクチャ２５００では、論理処理パイプライン２００は、管理されるスイッチング要素２５０５によって実行される。この例では、Ｌ３処理２１０は、管理されるスイッチング要素２５０５のフローエントリに基づいて、管理されるスイッチング要素２５０５によって実行される。図２５は、送信元マシン２５１５及び宛先マシン２５２０も示す。
【０２３５】
管理されるスイッチング要素２５０５は、エッジスイッチング要素に結合されたマシンから直接パケットを受信するエッジスイッチング要素である。管理されるスイッチング要素２５０５は、送信元マシン２５１５からパケットを受信する。管理されるスイッチング要素２５０５が、送信元マシン２５１５からパケットを受信すると、管理されるスイッチング要素８０５は、いくつかの実施形態では、パケットを論理的に転送及びルーティングするために、パケットに論理処理パイプライン２００の全体を実行する。
【０２３６】
受信されたパケットが、この例では別の論理ネットワークにある宛先マシン２５２０に向けられている場合、管理されるスイッチング要素２５０５は、送信元マシン２５１５が属する論理ネットワークにある論理スイッチ、宛先マシン２５２０が属する論理ネットワークにある論理スイッチ、及び、これら２つの論理スイッチ間でパケットをルーティングする論理ルータとして機能する。論理処理パイプライン２００の実行の結果に基づいて、管理されるスイッチング要素２５０５は、宛先マシン２５２０がパケットを受信する管理されるスイッチング要素２５１０にパケットを転送する。
【０２３７】
図２６は、論理スイッチ２２０、論理ルータ２２５、及び論理スイッチ２３０を介してパケットを処理するいくつかの実施形態の論理処理パイプライン２００を概念的に示す。具体的には、この図は、図２５を参照して上述したネットワークアーキテクチャ２５００で実行される場合の論理処理パイプライン２００を示す。上述したように、ネットワークアーキテクチャ２５００では、Ｌ２処理２０５、Ｌ３処理２１０、及びＬ２処理２１５が、マシンからパケットを受信するエッジスイッチング要素である単一の管理されるスイッチング要素２５０５によって実行される。したがって、これらの実施形態では、最初のホップのスイッチング要素が、論理処理パイプライン２００の全体を実行する。
【０２３８】
Ｌ２処理２０５は、いくつかの実施形態では、論理スイッチ２２０（図２６には示さず）を介してパケットを処理する４つのステージ２６０５〜２６２０を含む。ステージ２６０５では、パケットの論理コンテキストを決定するために、入口コンテキストマッピングがパケットに実行される。いくつかの実施形態では、ステージ２６０５は、論理スイッチ２２０がパケットを受信する（例えば、パケットが、最初に、管理されるスイッチング要素２５０５によって受信される）と、実行される。
【０２３９】
いくつかの実施形態では、第２のステージ２６１０は、論理スイッチ２２０のために定義される。いくつかのこのような実施形態では、ステージ２６１０は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するときに、論理スイッチへのパケットのアクセスを制御するために、入口ＡＣＬがパケットに適用される。論理スイッチのために定義された入口ＡＣＬに基づいて、パケットは、（例えば、ステージ２１６５によって）さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【０２４０】
Ｌ２処理２０５の第３のステージ２６１５では、論理スイッチのコンテキストでＬ２転送がパケットに実行される。いくつかの実施形態では、第３のステージ２６１５は、論理スイッチ２２０に対してパケットを処理及び転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ２でパケットを処理するためのＬ２転送テーブル又はＬ２転送エントリを定義する。
【０２４１】
いくつかの実施形態の第４のステージ２６２０は、論理スイッチ２２０のために定義される。いくつかのこのような実施形態の第４のステージ２６２０は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後、論理スイッチ２２０のパケットの外へのパケットのアクセスを制御するために、出口ＡＣＬがパケットに適用されてよい。論理スイッチのために定義された出口ＡＣＬに基づいて、パケットは、さらに処理されてよく（例えば、論理スイッチの論理ポートから送出される、若しくは、さらなる処理のためにディスパッチポートに送信される）、又は、例えば、破棄されてよい。
【０２４２】
パケットの宛先が、別の論理ネットワークにある場合（すなわち、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ２２０によって処理される論理ネットワークと異なる場合）、論理スイッチ２２０は、パケットを論理ルータ２２５に送信し、論理ルータ２２５は、次に、宛先論理ネットワークにパケットをルーティングするために、ステージ２１０のＬ３処理を実行する。Ｌ３処理２１０は、管理されるスイッチング要素２５０５（図２６には示さず）によって実装される論理ルータ２２５（図２６には示さず）を介してパケットを処理する６つのステージ２６３５〜２６５１を含む。上述したように、Ｌ３処理は、レイヤ３ネットワークを介してパケットをどこにルーティングするのかを決定するための論理ルーティングルックアップのセットを実行することを含む。
【０２４３】
第１のステージ２６３５は、論理ルータ２２５がパケットを受信すると（すなわち、論理ルータ２２５を実装する管理されるスイッチング要素２５０５がパケットを受信すると）、アクセス制御を決定するための論理入口ＡＣＬルックアップを実行する。いくつかの実施形態では、ステージ２６３５は、論理ルータ２２５に対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。次のステージ２６３６は、パケットの宛先アドレスを、パケットの送信元マシンから隠された宛先マシンの実際のアドレスに戻すために、ＤＮＡＴを実行する。このステージ２６３６は、ＤＮＡＴが有効にされている場合、実行される。
【０２４４】
次のステージ２６４０は、パケットのＬ３アドレス（例えば、宛先ＩＰアドレス）、Ｌ３フローエントリを含む転送テーブル、及び、パケットの論理コンテキストに基づいて、レイヤ３ネットワークを介してパケットを送信するために、１つ又は複数の論理ポートを決定するための論理Ｌ３ルーティングを実行する。
【０２４５】
いくつかの実施形態の第４のステージ２６４５は、パケットにＳＮＡＴを実行する。例えば、管理されるスイッチング要素２５０５は、ＳＮＡＴが有効にされている場合、送信元ＩＰアドレスを隠すために、パケットの送信元ＩＰアドレスを異なるＩＰアドレスに置き換える。また、さらに後述するように、管理されるスイッチング要素は、ネットワークアドレスを変換するためのフローエントリを受信するために、ＮＡＴデーモンを使用することができる。ＮＡＴデーモンは、図３１を参照してさらに後述される。
【０２４６】
第５のステージ２６５０は、論理ルータ２２５が、ステージ２６４０で決定されたポートを介して論理ルータ２２５の外へパケットをルーティングする前に、アクセス制御を決定するための論理出口ＡＣＬルックアップを実行する。出口ＡＣＬルックアップは、パケットのＬ３アドレス（例えば、送信元及び宛先ＩＰアドレス）に基づいて実行される。いくつかの実施形態では、ステージ２６５０は、論理ルータ２２５に対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。
【０２４７】
第６のステージ２６５１は、宛先Ｌ３アドレス（例えば、宛先ＩＰアドレス）を宛先Ｌ２アドレス（例えば、宛先ＭＡＣアドレス）に変換するために、アドレス解決を実行する。いくつかの実施形態では、管理されるスイッチング要素２５０５は、宛先ＩＰアドレスに対応する宛先Ｌ２アドレスを見つけるために、（例えば、ＡＲＰ要求を送信するか、ＡＲＰキャッシュをルックアップすることによって）標準的なアドレス解決を使用する。また、さらに後述するように、いくつかの実施形態の管理されるスイッチング要素２５０５は、Ｌ３アドレスをＬ２アドレスに解決するためのフローエントリを受信するために、Ｌ３デーモンを使用することができる。Ｌ３デーモンは、図４８〜５０を参照してさらに後述される。
【０２４８】
論理ルータ２２５が宛先論理ネットワークに結合されていない場合、論理スイッチ２２０は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。また、他の論理ルータの動作に対応する論理処理の一部は、管理されるスイッチング要素２５０５に実装されることになる。論理ルータ２２５が宛先論理ネットワークに結合されている場合、論理スイッチ２２０は、宛先論理ネットワーク（すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ）にパケットをルーティングする。
【０２４９】
Ｌ２処理２１５は、いくつかの実施形態では、論理スイッチ２２５（図２６には示さず）を介してパケットを処理するための５つのステージ２６６０〜２６８０を含む。いくつかの実施形態では、第１のステージ２６６０は、論理スイッチ２２５のために定義される。いくつかのこのような実施形態では、ステージ２６６０は、論理スイッチ２３０に対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチ２３０が論理ルータ２２５からパケットを受信するときに、論理スイッチ２３０へのパケットのアクセスを制御するために、入口ＡＣＬがパケットに適用される。論理スイッチのために定義された入口ＡＣＬに基づいて、パケットは、（例えば、ステージ２６６５によって）さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【０２５０】
Ｌ２処理パイプライン２１５の第２のステージ２６６５では、論理スイッチのコンテキストでＬ２転送がパケットに実行される。いくつかの実施形態では、第３のステージ２６６５は、論理スイッチ２２０に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ２でパケットを処理するためのＬ２転送テーブル又はＬ２転送エントリを定義する。
【０２５１】
いくつかの実施形態の第３のステージ２６７０は、論理スイッチ２２０のために定義される。いくつかのこのような実施形態の第３のステージ２６７０は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後、論理スイッチ２３０のパケットの外へのパケットのアクセスを制御するために、出口ＡＣＬがパケットに適用されてよい。論理スイッチのために定義された出口ＡＣＬに基づいて、パケットは、さらに処理されてよく（例えば、論理スイッチの論理ポートから送出される、若しくは、さらなる処理のためにディスパッチポートに送信される）、又は、パケットは、例えば、破棄されてよい。
【０２５２】
第４のステージ２６７５では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ２３０の１つ又は複数の論理ポート（例えば、論理出口ポート）から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチの特定の論理ポートに対応する１つ又は複数の管理されるスイッチング要素（管理されるスイッチング要素２５０５を含む）の物理ポート（複数可）を識別する。
【０２５３】
Ｌ２処理２０５の第５のステージ２６８０は、第４のステージ２６７５で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第４のステージ２６７５で決定された物理ポートにパケットを転送するための動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第４のステージ２６７５で決定された物理ポート（複数可）に達するために、パケットを送信するために通過する、管理されるスイッチング要素２５０５のポートのセット（図示せず）の１つ又は複数のポートに関連付けられた１つ又は複数のキュー（図示せず）を決定する。このように、管理されるスイッチング要素は、決定された物理ポート（複数可）にパケットが達するためのネットワーク内の正しい経路に沿って、パケットをルーティングすることができる。また、いくつかの実施形態は、論理処理パイプライン２６００がパケットに実行される前に、パケットをその元の状態に戻すために、第５のステージ２６８０の後に論理コンテキストを除去する。
【０２５４】
図２７は、論理ルータ２２５並びに論理スイッチ２２０及び論理スイッチ２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ２７００を概念的に示す。具体的には、ネットワークアーキテクチャ２７００は、そのデータパケットが論理ルータ２２５並びに論理スイッチ２２０及び２３０によって切り替えられる及び／又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、管理されるスイッチング要素２５０５及び２５１０を示す。図は、図の上部及び下部の両方にＶＭ１〜４を示す。
【０２５５】
この例では、論理スイッチ２２０は、論理ルータ２２５、ＶＭ１、及びＶＭ２間でデータパケットを転送する。論理スイッチ２３０は、論理ルータ２２５、ＶＭ３、及びＶＭ４間でデータパケットを転送する。上述したように、論理ルータ２２５は、論理スイッチ２２０及び２３０並びに他の論理ルータ及びスイッチ（図示せず）間でデータパケットをルーティングする。論理スイッチ２２０及び２３０並びに論理ルータ２２５は、論理ポート（図示せず）を介して論理的に結合され、論理ポートを介してデータパケットを交換する。これらの論理ポートは、管理されるスイッチング要素２５０５及び２５１０の物理ポートにマッピング又は取り付けられる。
【０２５６】
いくつかの実施形態では、論理ルータは、管理されるネットワーク内の各々の管理されるスイッチング要素に実装される。管理されるスイッチング要素が、管理されるスイッチング要素に結合されたマシンからパケットを受信すると、管理されるスイッチング要素は、論理ルーティングを実行する。すなわち、パケットに対する最初のホップのスイッチング要素であるこれらの実施形態の管理されるスイッチング要素は、Ｌ３処理２１０を実行する。
【０２５７】
この例では、管理されるスイッチング要素２５０５及び２５１０は、それぞれ、ホスト２５２５及び２５３０で動作するソフトウェアスイッチング要素である。管理されるスイッチング要素２５０５及び２５１０は、管理されるスイッチング要素２５０５及び２５１０がＶＭ１〜４から受信するパケットを転送及びルーティングするために論理スイッチ２２０及び２３０を実装するフローエントリを有する。フローエントリは、論理ルータ２２５も実装する。これらのフローエントリを使用して、管理されるスイッチング要素２５０５及び２５１０は、管理されるスイッチング要素２５０５及び２５１０に結合されるネットワーク内のネットワーク要素間でパケットを転送及びルーティングすることができる。図示のように、管理されるスイッチング要素２５０５及び２５１０は、それぞれ、管理されるスイッチング要素２５０５及び２５１０に結合されたネットワーク要素とデータパケットを交換するための３つのポート（例えば、ＶＩＦ）を有する。いくつかの場合では、これらの実施形態でのデータパケットは、管理されるスイッチング要素２５０５及び２５１０間に確立されるトンネル（例えば、管理されるスイッチング要素２５０５のポート３及び管理されるスイッチング要素２５１０のポート３で終端するトンネル）を介して移動することになる。
【０２５８】
この例では、図示のように、ホスト２５２５及び２５３０の各々は、管理されるスイッチング要素及びいくつかのＶＭを含む。ＶＭ１〜４は、ネットワークアドレス（例えば、Ｌ２のためのＭＡＣアドレス、Ｌ３のためのＩＰアドレス、など）のセットがそれぞれ割り当てられ、他のネットワーク要素との間でネットワークデータを送受信することができる仮想マシンである。ＶＭは、ホスト２５２５及び２５３０で動作するハイパーバイザ（図示せず）によって管理される。
【０２５９】
ネットワークアーキテクチャ２７００を介するいくつかの例示的なデータ交換をここで説明する。論理スイッチ２２０に結合されたＶＭ１が、同じ論理スイッチ２２０に結合されたＶＭ２にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、次に、パケットにＬ２処理２０５を実行する。このパケットへのＬ２処理の結果は、パケットが、管理されるスイッチング要素２５０５及び２５１０間に確立されたトンネルを介して管理されるスイッチング要素２５１０に送信され、管理されるスイッチング要素２５１０のポート４を介してＶＭ２に達するべきであることを示すことになる。ＶＭ１及び２は、同じ論理ネットワーク内にあるため、管理されるスイッチング要素２５０５は、Ｌ３処理２１０及びＬ２処理２１５を実行しない。
【０２６０】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ３にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、パケットにＬ２処理２０５を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される（すなわち、パケットの論理Ｌ３宛先アドレスは、別の論理ネットワークのためのものである）ため、Ｌ３処理２１０がこのパケットに実行される必要がある。管理されるスイッチング要素２５０５は、Ｌ２処理２１５も実行する。すなわち、パケットを受信する最初のホップのスイッチング要素としての管理されるスイッチング要素２５０５は、パケットに論理処理パイプライン２００の全体を実行する。論理処理パイプライン２００の実行の結果は、パケットが、管理されるスイッチング要素２５０５のポート５を介してＶＭ３に送信されるべきであることを示すことになる。したがって、パケットは、２つの論理スイッチ及び論理ルータを介して進んだが、別の管理されるスイッチング要素に進む必要はなかった。
【０２６１】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素２５０５に送信される。パケットに関する最初のホップのスイッチング要素としての管理されるスイッチング要素２５０５は、パケットに論理処理パイプライン２００の全体を実行する。このパケットへの論理処理パイプライン２００の実行の結果は、パケットが、管理されるスイッチング要素２５０５及び２５１０間に確立されたトンネルを介して管理されるスイッチング要素２５１０に送信され、管理されるスイッチング要素２５１０のポート５を介してＶＭ４に達するべきであることを示すことになる。
【０２６２】
図２８は、論理ルータ２２５並びに論理スイッチ２２０及び２３０を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ２８００を概念的に示す。具体的には、ネットワークアーキテクチャ２８００は、そのデータパケットが論理ルータ２２５並びに論理スイッチ２２０及び２３０によって切り替えられる及び／又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、管理されるスイッチング要素２５０５及び２５１０を示す。図は、図の上部及び下部の両方にＶＭ１〜４を示す。
【０２６３】
ネットワークアーキテクチャ２８００は、ネットワークアーキテクチャ２８００が、管理されるスイッチング要素２８０５を追加で含むことを除いて、ネットワークアーキテクチャ２７００と同様である。いくつかの実施形態の管理されるスイッチング要素２８０５は、プールノードとして機能する第２のレベルの管理されるスイッチング要素である。
【０２６４】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム（図示せず）によってトンネルが確立される。例えば、この例での管理されるスイッチング要素２５０５は、図示のように、管理されるスイッチング要素２５０５のポート１で終端するトンネルを介して、ホスト２８１０で動作する管理されるスイッチング要素２８０５に結合される。同様に、管理されるスイッチング要素２５１０は、管理されるスイッチング要素２５１０のポート２で終端するトンネルを介して、管理されるスイッチング要素２８０５に結合される。上記図２７に示す例示的なアーキテクチャ２７００と対照的に、管理されるスイッチング要素２５０５及び２５１０間にトンネルは確立されない。
【０２６５】
論理ルータ２２５並びに論理スイッチ２２０及び２３０は、管理されるスイッチング要素２５０５に実装され、第２のレベルの管理されるスイッチング要素２８０５が、データパケット交換に関与する。すなわち、管理されるスイッチング要素２５０５及び２５１０は、管理されるスイッチング要素２８０５を介してパケットを交換する。
【０２６６】
図２９は、転送及びルーティングするために、受信されたパケットにＬ２及びＬ３処理のすべてを実行する最初のホップのスイッチング要素の一例を概念的に示す。図２９は、管理されるスイッチング要素２５０５及び２５１０による論理ルータ２２５並びに論理スイッチ２２０及び２３０の実装を示す。図示のように、管理されるスイッチング要素２５０５が最初のホップのスイッチング要素である場合、管理されるスイッチング要素２５０５によって、論理処理パイプライン２００のすべてが実行される。図は、図の上半分に、論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。この図は、図の下半分に、管理されるスイッチング要素２５０５及び２５１０を示す。図は、図の上部及び下部の両方にＶＭ１〜４を示す。
【０２６７】
論理スイッチ２２０に結合されたＶＭ１が、同じ論理スイッチ２２０に結合されたＶＭ２にパケットを送信すると、パケットが論理スイッチ２２０に入る論理スイッチ２２０の論理ポート１は、管理されるスイッチング要素２５０５のポート４に取り付けられる、又はマッピングされるため、パケットは、最初に、管理されるスイッチング要素２５０５のポート４を介して、管理されるスイッチング要素２５０２に送信される。
【０２６８】
管理されるスイッチング要素２５０５は、次に、パケットにＬ２処理２０５を実行する。具体的には、管理されるスイッチング要素２５０５は、最初に、パケットのヘッダフィールドに含まれる情報に基づいて、パケットの論理コンテキストを決定するために、論理コンテキストルックアップを実行する。この例では、パケットの送信元ＭＡＣアドレスは、ＶＭ１のＭＡＣアドレスであり、パケットの送信元ＩＰアドレスは、ＶＭ１のＩＰアドレスである。パケットの宛先ＭＡＣアドレスは、ＶＭ２のＭＡＣアドレスであり、パケットの宛先ＩＰアドレスは、ＶＭ２のＩＰアドレスである。この例では、論理コンテキストは、論理スイッチ２２０が、パケットを転送することになる論理スイッチであることを指定し、論理スイッチ２２０の論理ポート１が、パケットが受信されたポートであることを指定する。論理コンテキストは、また、ポート２は、ＶＭ２のＭＡＣアドレスと関連付けられているため、論理スイッチ２２０のポート２が、パケットをＶＭ２に送出することになるポートであることを指定する。
【０２６９】
管理されるスイッチング要素２５０５は、次に、パケットの決定された論理コンテキストに基づいて、論理転送ルックアップを実行する。管理されるスイッチング要素２５０５は、パケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２２０に、論理スイッチ２２０のポート１を通ってきたパケットを拒絶させることになるネットワークアドレス（例えば、送信元／宛先ＭＡＣ／ＩＰアドレス、など）を持っていないことを判断する。管理されるスイッチング要素２５０５は、また、論理コンテキストから、論理スイッチ２２０のポート２が、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素２５０５は、論理スイッチ２２０のポート２に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２２０に、論理スイッチ２２０のポート２を介してパケットを送信させなくさせることになるネットワークアドレスを持っていないことを判断する。
【０２７０】
管理されるスイッチング要素２５０５は、次に、論理スイッチ２２０の論理ポート２がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、論理スイッチ２２０の論理ポート２が、管理されるスイッチング要素２５１０のポート４にマッピングされると判定する。管理されるスイッチング要素２５０５は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、パケットが、管理されるスイッチング要素２５０５及び２５１０間に確立されるトンネルを介して管理されるスイッチング要素２５１０に送信され、管理されるスイッチング要素２５１０のポート４を介してＶＭ２に達するべきであると判断する。ＶＭ１及びＶＭ２は、同じ論理ネットワーク内にあるため、管理されるスイッチング要素２５０５は、Ｌ３処理を実行しない。管理されるスイッチング要素２５１０は、どのような論理処理もパケットに実行せず、管理されるスイッチング要素２５１０のポート４を介してＶＭ２にパケットを転送するだけである。
【０２７１】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ３にパケットを送信する場合（すなわち、ＶＭ１及びＶＭ３が異なる論理ネットワーク内にある場合）、パケットは、最初に、管理されるスイッチング要素２５０５のポート４を介して、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、Ｌ２処理２０５をパケットに実行する。具体的には、管理されるスイッチング要素２５０５は、最初に、パケットのヘッダフィールドに含まれた情報に基づいて、パケットの論理コンテキストを決定するために、論理コンテキストルックアップを実行する。この例では、パケットの送信元ＭＡＣアドレスは、ＶＭ１のＭＡＣアドレスであり、パケットの送信元ＩＰアドレスは、ＶＭ１のＩＰアドレスである。パケットは、ＶＭ１から、別の論理ネットワーク内にあるＶＭ３に送信されるため、パケットは、ポートＸと関連付けられたＭＡＣアドレスを、宛先ＭＡＣアドレス（すなわち、この例では、０１：０１：０１：０１：０１：０１）として有する。パケットの宛先ＩＰアドレスは、ＶＭ３のＩＰアドレス（例えば、１．１．２．１０）である。この例では、論理コンテキストは、論理スイッチ２２０が、パケットを転送することになる論理スイッチであり、論理スイッチ２２０の論理ポート１が、パケットが受信されたポートであることを指定する。論理コンテキストは、また、ポートＸは、論理ルータ２２５のポート１のＭＡＣアドレスと関連付けられているため、論理スイッチ２２０のポートＸが、パケットを論理ルータ２２５の外に送信するためのポートであることを指定する。
【０２７２】
管理されるスイッチング要素２５０５は、次に、パケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２２０に、論理スイッチ２２０のポート１を通ってきたパケットを拒絶させることになるネットワークアドレス（例えば、送信元／宛先ＭＡＣ／ＩＰアドレス、など）を持っていないことを判断する。管理されるスイッチング要素２５０５は、また、論理コンテキストから、論理スイッチ２２０のポートＸが、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素２５０５は、ポートＸに対するパケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２２０に、ポートＸを介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【０２７３】
管理されるスイッチング要素２５０５は、次に、パケットの宛先ＩＰアドレス、１．１．２．１０が、別の論理ネットワークのためのものであるため（すなわち、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ２２０によって処理される論理ネットワークと異なる場合）、パケットにＬ３処理２１０を実行する。管理されるスイッチング要素２５０５は、Ｌ３でのパケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理ルータ２２５に、論理ルータ２２５の論理ポート１を通ってきたパケットを拒絶させることになるネットワークアドレスを持っていないことを判断する。管理されるスイッチング要素２５０５は、また、Ｌ３フローエントリをルックアップし、パケットの宛先ＩＰアドレス、１．１．２．１０が、論理ルータ２２５の論理ポート２と関連付けられた１．１．２．１／２４のサブネットアドレスに属するため、パケットが、論理ルータ２２５の論理ポート２に送信されるべきであることを決定する。さらに、管理されるスイッチング要素２５０５は、論理ルータ２２５の論理ポート２に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２２０に、論理ポート２を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【０２７４】
管理されるスイッチング要素２５０５は、Ｌ３処理２１０を実行する一方で、パケットの論理コンテキスト又はパケット自体を変更する。例えば、管理されるスイッチング要素２５０５は、パケットの論理送信元ＭＡＣアドレスを、論理ルータ２２５の論理ポート２のＭＡＣアドレス（すなわち、この例では、０１：０１：０１：０１：０１：０２）になるように変更する。管理されるスイッチング要素２５０５は、また、パケットの宛先ＭＡＣアドレスを、ＶＭ３のＭＡＣアドレスになるように変更する。
【０２７５】
管理されるスイッチング要素２５０５は、次に、Ｌ２処理２１５を実行する。具体的には、管理されるスイッチング要素２５０５は、パケットのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２３０に、論理スイッチ２３０のポートＹを通ってきたパケットを拒絶させることになるネットワークアドレス（例えば、送信元／宛先ＭＡＣ／ＩＰアドレス、など）を持っていないことを判断する。管理されるスイッチング要素２５０５は、次に、論理スイッチ２３０のポート１が、パケットを宛先ＶＭ３に送出するためのポートであると判断する。さらに、管理されるスイッチング要素２５０５は、論理スイッチ２３０のポート１に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２３０に、論理スイッチ２３０のポート１を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【０２７６】
管理されるスイッチング要素２５０５は、次に、論理スイッチ２３０の論理ポート１がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、論理スイッチ２３０の論理ポート１が、管理されるスイッチング要素２５０５のポート５にマッピングされると判定する。管理されるスイッチング要素２５０５は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、パケットが、管理されるスイッチング要素２５０５のポート５を介してＶＭ３に送信されるべきであると判断する。この例での管理されるスイッチング要素２５０５は、パケットをＶＭ３に送信する前に、パケットから論理コンテキストを除去する。したがって、パケットは、２つの論理スイッチ及び論理ルータを介して進んだが、別の管理されるスイッチング要素に進む必要はなかった。
【０２７７】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケットを送信すると、ＶＭ４に向かうパケットが、管理されるスイッチング要素２５０５及び２５１０間に確立されたトンネルを介して、管理されるスイッチング要素２５０５から管理されるスイッチング要素２５１０に送信され、管理されるスイッチング要素２５１０のポート５を介してＶＭ４に達することを除いて、パケットは、ＶＭ１から送信されたパケットがＶＭ３に送信されるのと同様に、ＶＭ４に送信される。
【０２７８】
図３０Ａ〜３０Ｂは、図２９を参照して上述した論理スイッチ２２０及び２３０、論理ルータ２２５、並びに、管理されるスイッチング要素２５０５及び２５１０の例示的な動作を概念的に示す。具体的には、図３０Ａは、論理スイッチ２２０及び２３０並びに論理ルータ２２５を実装する管理されるスイッチング要素２５０５の動作を示す。図３０Ｂは、管理されるスイッチング要素２５０５の動作を示す。
【０２７９】
図３０Ａの下半分に示すように、管理されるスイッチング要素２５０５は、Ｌ２エントリ３００５及び３０１５、並びにＬ３エントリ３０１０を含む。これらのエントリは、コントローラクラスタ（図示せず）が管理されるスイッチング要素２５０５に供給するフローエントリである。これらのエントリは、３つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【０２８０】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケット３０３０を送信すると、パケットは、最初に、管理されるスイッチング要素２５０５のポート４を介して、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、管理されるスイッチング要素２５０５の転送テーブル３００５〜３０１５に基づいて、パケットにＬ２処理を実行する。この例では、パケット３０３０は、ＶＭ４のＩＰアドレスである、１．１．２．１０の宛先ＩＰアドレスを有する。パケット３０３０の送信元ＩＰアドレスは、１．１．１．１０である。パケット３０３０は、また、ＶＭ１のＭＡＣアドレスを、送信元ＭＡＣアドレスとして有し、論理ルータ２２５の論理ポート１のＭＡＣアドレス（例えば、０１：０１：０１：０１：０１：０１）を、宛先ＭＡＣアドレスとして有する。
【０２８１】
管理されるスイッチング要素２５０５は、ステージ２６０５のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた１によって示されるレコード（「レコード１」と呼ぶ）を識別する。レコード１は、ＶＭ１からパケット３０３０を受信するポート４である入口ポートに基づいて、パケット３０３０の論理コンテキストを識別する。加えて、レコード１は、管理されるスイッチング要素２５０５が、パケット３０３０の論理コンテキストを、パケット３０３０のヘッダのフィールドのセット（例えば、ＶＬＡＮ  ｉｄフィールド）に格納することを指定する。レコード１は、また、パケット３０３０が、転送テーブルによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。ディスパッチポートは、米国特許出願第１３／１７７，５３５号に記載されている。
【０２８２】
パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、ステージ２６１０の入口ＡＣＬを実装する転送テーブル内の丸で囲まれた２によって示されるレコード（「レコード２」と呼ぶ）を識別する。この例では、レコード２は、パケット３０３０がさらに処理されることを可能にし（例えば、パケット３０３０は、論理スイッチ２２０の入口ポートを通り抜けることができる）、したがって、パケット３０３０が、転送テーブルによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード２は、管理されるスイッチング要素２５０５が、パケット３０３０の論理コンテキスト（すなわち、パケット３０３０は、処理パイプライン３０００の第２のステージ３０４２によって処理されている）を、パケット３０３０のヘッダのフィールドのセットに格納することを指定する。
【０２８３】
次に、管理されるスイッチング要素２５０５は、パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ２６１５の論理Ｌ２転送を実装する転送テーブル内の丸で囲まれた３によって示されるレコード（「レコード３」と呼ぶ）を識別する。レコード３は、論理ルータ２２５の論理ポート１のＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットが、論理スイッチ２２０の論理ポートＸに送信されるべきであることを指定する。
【０２８４】
レコード３は、また、パケット３０３０が、転送テーブルによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。また、レコード３は、管理されるスイッチング要素２５０５が、論理コンテキスト（すなわち、パケット３０３０は、処理パイプライン３０００の第３のステージ２６１５によって処理されている）を、パケット３０３０のヘッダのフィールドのセットに格納することを指定する。
【０２８５】
次に、管理されるスイッチング要素２５０５は、パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ２６２０の出口ＡＣＬを実装する転送テーブル内の丸で囲まれた４によって示されるレコード（「レコード４」と呼ぶ）を識別する。この例では、レコード４は、パケット３０３０がさらに処理されることを可能にし（例えば、パケット３０３０は、論理スイッチ２２０のポート「Ｘ」を介して論理スイッチ２２０から出ることができる）、したがって、パケット３０３０が、管理されるスイッチング要素２５０５のフローエントリによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード４は、管理されるスイッチング要素２５０５が、パケット３０３０の論理コンテキスト（すなわち、パケット３０３０は、処理パイプライン３０００のステージ２６２０によって処理されている）を、パケット３０３０のヘッダのフィールドのセットに格納することを指定する。（すべてのレコードは、論理処理を実行する管理されるスイッチング要素が、レコードに基づいて論理処理の一部を実行するたびに、フィールドのセット内の論理コンテキストストアを更新することを指定することに注意すべきである。）
【０２８６】
管理されるスイッチング要素２５０５は、フローエントリに基づいてパケット３０３０の処理を続ける。管理されるスイッチング要素２５０５は、パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５がパケット３０３０のヘッダ内の情報に基づいて論理ルータ２２５の論理ポート１を介してパケットを受け入れるべきであることを指定することによってＬ３入口ＡＣＬを実装するＬ３エントリ３０１０内の丸で囲まれた５によって示されるレコード（「レコード５」と呼ぶ）を識別する。
【０２８７】
管理されるスイッチング要素２５０５は、次に、その宛先ＩＰアドレス（例えば、１．１．２．１０）を有するパケット３０３０が論理ルータ２２５のポート２から出るべきであることを指定することによってＬ３ルーティング２６４０を実装するＬ３エントリ３０１０内の丸で囲まれた６によって示されるフローエントリ（「レコード６」と呼ぶ）を識別する。また、レコード６（又は、図示しないルーティングテーブル内の別のレコード）は、パケット３０３０の送信元ＭＡＣアドレスが、論理ルータ２２５のポート２のＭＡＣアドレス（すなわち、０１：０１：０１：０１：０１：０２）に書き換えられるべきであることを示す。
【０２８８】
管理されるスイッチング要素２５０５は、次に、管理されるスイッチング要素２５０５がパケット３０３０のヘッダ内の情報（例えば、送信元ＩＰアドレス）に基づいて論理ルータ２２５のポート２を介してパケットが出ることを可能にすることを指定することによってＬ３出口ＡＣＬを実装するＬ３エントリ３０１０内の丸で囲まれた７によって示されるフローエントリ（「レコード７」と呼ぶ）を識別する。
【０２８９】
パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、ステージ２６６０の入口ＡＣＬを実装するＬ２エントリ３０１５内の丸で囲まれた８によって示されるレコード（「レコード８」と呼ぶ）を識別する。この例では、レコード８は、パケット３０３０が、管理されるスイッチング要素２５０５によって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード８は、管理されるスイッチング要素２５０５が、パケット３０３０の論理コンテキスト（例えば、パケット３０３０は、処理パイプライン３０００のステージ２６６０によって処理されている）を、パケット３０３０のヘッダのフィールドのセットに格納することを指定する。
【０２９０】
次に、管理されるスイッチング要素２５０５は、パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ２６６５の論理Ｌ２転送を実装するＬ２エントリ３０１５内の丸で囲まれた９によって示されるレコード（「レコード９」と呼ぶ）を識別する。レコード９は、ＶＭ４のＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットが、ＶＭ４に接続された論理スイッチ２３０の論理ポート（図示せず）を介して転送されるべきであることを指定する。
【０２９１】
レコード９は、また、パケット３０３０が、転送テーブルによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。また、レコード９は、管理されるスイッチング要素２５０５が、論理コンテキスト（例えば、パケット３０３０は、処理パイプライン３０００のステージ２６６５によって処理されている）を、パケット３０３０のヘッダのフィールドのセットに格納することを指定する。
【０２９２】
次に、管理されるスイッチング要素２５０５は、パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、ステージ２６７０の出口ＡＣＬを実装する転送テーブル内の丸で囲まれた１０によって示されるレコード（「レコード１０」と呼ぶ）を識別する。この例では、レコード１０は、パケット３０３０が、ＶＭ４に接続する論理ポート（図示せず）を介して出ることを可能にし、したがって、パケット３０３０が、転送テーブルによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード１０は、管理されるスイッチング要素２５０５が、パケット３０３０の論理コンテキスト（例えば、パケット３０３０は、処理パイプライン３０００のステージ２６７０によって処理されている）を、パケット３０３０のヘッダのフィールドのセットに格納することを指定する。
【０２９３】
パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、ステージ２６７５のコンテキストマッピングを実装するＬ２エントリ３０１５内の丸で囲まれた１１によって示されるレコード（「レコード１１」と呼ぶ）を識別する。この例では、レコード１１は、ＶＭ４が結合される管理されるスイッチング要素２５１０のポート５を、パケット３０３０が転送されるべき論理スイッチ２３０の論理ポート（ステージ２６６５で決定される）に対応するポートとして識別する。レコード１１は、加えて、パケット３０３０が、転送テーブルによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０２９４】
パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、次に、ステージ２６８０の物理マッピングを実装するＬ２エントリ３０１５内の丸で囲まれた１２によって示されるレコード（「レコード１２」と呼ぶ）を識別する。レコード１２は、パケット３０３０が管理されるスイッチング要素２５１０に到達するために、パケット３０３０が通って送信されるべきポートとして、管理されるスイッチング要素２５０５のポート３を指定する。この場合では、管理されるスイッチング要素２５０５は、パケット３０３０を、管理されるスイッチング要素２５１０に結合される管理されるスイッチング要素２５０５のポート３から送出することになる。
【０２９５】
図３０Ｂに示すように、管理されるスイッチング要素２５１０は、パケット３０３０を処理し、ルーティングするためのルール（例えば、フローエントリ）を含む転送テーブルを含む。管理されるスイッチング要素２５１０が、管理されるスイッチング要素２５０５からパケット３０３０を受信すると、管理されるスイッチング要素２５１０は、管理されるスイッチング要素２５１０の転送テーブルに基づいて、パケット３０３０の処理を開始する。管理されるスイッチング要素２５１０は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた１によって示されるレコード（「レコード１」と呼ぶ）を識別する。レコード１は、パケット３０３０のヘッダに格納された論理コンテキストに基づいて、パケット３０３０の論理コンテキストを識別する。論理コンテキストは、パケット３０３０が、管理されるスイッチング要素２５０５によって実行された論理処理２００の全体によって処理されていることを指定する。このように、レコード４は、パケット３０３０が、転送テーブルによって（例えば、パケット３０３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０２９６】
次に、管理されるスイッチング要素２５１０は、パケット３０３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた２によって示されるレコード（「レコード２」と呼ぶ）を識別する。レコード２は、パケット３０３０がＶＭ４に到達するために、パケット３０３０が通って送信されるべき管理されるスイッチング要素２５１０のポート５を指定する。この場合では、管理されるスイッチング要素２５１０は、パケット３０３０を、ＶＭ４に結合される管理されるスイッチング要素２５１０のポート５から送出することになる。いくつかの実施形態では、管理されるスイッチング要素２５１０は、パケットをＶＭ４に送信する前に、パケット３０３０から論理コンテキストを除去する。
【０２９７】
図３１は、管理されるスイッチング要素が動作するホストの例示的なソフトウェアアーキテクチャを概念的に示す。具体的には、この図は、パケットを論理的に転送及びルーティングするために論理処理パイプラインを実行する管理されるスイッチング要素が、ネットワークアドレスを変換するためのＮＡＴデーモンを使用することを示す。この図は、ホスト３１００、管理されるスイッチング要素３１０５、転送テーブル３１２０、ＮＡＴデーモン３１１０、及びＮＡＴテーブル３１１５を、図の上半分に示す。この図は、フローエントリ３１２５及び３１３０を示す。
【０２９８】
フローエントリ３１２５及び３１３０は、それぞれ、クォリファイア及びアクションを有するフローエントリである。フローエントリ３１２５及び３１３０として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。いくつかの実施形態では、フローエントリは、優先順位を有し、管理されるスイッチング要素は、２つ以上のフローエントリのクォリファイアが満たされる場合、最も高い優先順位でフローエントリのアクションを行う。
【０２９９】
ホスト３１００は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム（例えば、Ｗｉｎｄｏｗｓ（登録商標）及びＬｉｎｕｘ（登録商標））によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素３１０５は、ホスト３１００で実行するソフトウェアスイッチング要素（例えば、Ｏｐｅｎ  ｖＳｗｉｔｃｈ）である。上述したように、コントローラクラスタ（図示せず）は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素３１０５は、それ自体はフローエントリを生成しない。
【０３００】
いくつかの実施形態の管理されるスイッチング要素３１０５は、上述した論理処理パイプライン２００の全部又は一部を実行する。具体的には、管理されるスイッチング要素３１０５は、転送テーブル３１２０内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするためにＬ３処理２１０を実行する、管理されるスイッチング要素（例えば、管理されるスイッチング要素１７２０又は２５０５）である。いくつかの実施形態では、管理されるスイッチング要素３１０５は、管理されるスイッチング要素に結合されたマシン（図示せず）からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、１つ又は複数の仮想マシン（図示せず）が、ホスト３１００で動作しており、管理されるスイッチング要素３１０５に結合される。他の実施形態では、管理されるスイッチング要素は、第２のレベルの管理されるスイッチング要素である。
【０３０１】
管理されるスイッチング要素３１０５が、ネットワークアドレス変換（ＮＡＴ）を実行するように構成されている場合、いくつかの実施形態の管理されるスイッチング要素３１０５は、パケットにＮＡＴを実行するためのＮＡＴデーモン３１１０を使用する。いくつかの実施形態では、管理されるスイッチング要素３１０５は、所定のアドレスから変換するアドレスを見つけるためのルックアップテーブルを保持しない。代わりに、管理されるスイッチング要素３１０５は、ＮＡＴデーモン３１１０にアドレスを要求する。
【０３０２】
いくつかの実施形態のＮＡＴデーモン３１１０は、ホスト３１００で動作するソフトウェアアプリケーションである。ＮＡＴデーモン３１１０は、アドレスの対を含むテーブル３１１５を保持し、各対は、互いに変換される２つのアドレスを含む。管理されるスイッチング要素３１０５が、所定のアドレスから変換するアドレスを要求すると、ＮＡＴデーモンは、所定のアドレスを変換すべきアドレスを見つけるために、テーブル３１１５をルックアップする。
【０３０３】
異なる実施形態の管理されるスイッチング要素３１０５及びＮＡＴデーモン３１１０は、アドレスを要求し、供給するために異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素３１０５は、元のアドレスを有するが、変換されたアドレスを持たないパケットを、ＮＡＴデーモンに送信する。これらの実施形態のＮＡＴデーモン３１１０は、元のアドレスを、変換されたアドレスに変換する。ＮＡＴデーモン３１１０は、管理されるスイッチング要素３１０５にパケットを送信し戻し、管理されるスイッチング要素３１０５は、パケットを宛先マシンに向けて送信するために、論理転送及び／又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素３１０５は、最初に、解決する元のアドレスを含むパケットと共にＮＡＴデーモン３１１０にメタデータを送信する。このメタデータは、管理されるスイッチング要素３１０５が、ＮＡＴデーモン３１１０から戻るパケットを受信するとき、管理されるスイッチング要素３１０５が、論理処理パイプラインの実行を再開するために使用する情報（例えば、レジスタ値、論理パイプライン状態、など）を含む。
【０３０４】
他の実施形態では、いくつかの実施形態の管理されるスイッチング要素３１０５は、フローテンプレートをＮＡＴデーモン３１１０に送信することによってアドレスを要求し、フローテンプレートは、アドレスについての実際の値を持たないフローエントリである。ＮＡＴデーモンは、テーブル３１１５をルックアップすることによって、フローテンプレートに記入するアドレスを見つけ出す。ＮＡＴデーモン３１１０は、次に、記入されたフローテンプレートを転送テーブル３１２０に入れることによって、実際のアドレスが記入されたフローテンプレートを、管理されるスイッチング要素３１１０に送信し戻す。いくつかの実施形態では、ＮＡＴデーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。さらに、ＮＡＴデーモン３１１０が、変換されたアドレスを見つけるのに失敗した場合、ＮＡＴデーモンは、パケットを破棄するようにフローテンプレートで指定する。
【０３０５】
ここで、管理されるスイッチング要素３１０５及びＮＡＴデーモン３１１０の例示的な動作を、３つの異なるステージ１〜３（丸で囲まれた１〜３）に関して説明する。この例では、管理されるスイッチング要素３１０５は、マシン（図示せず）から転送及びルーティングするためにパケットを受信する管理されるエッジスイッチング要素である。管理されるスイッチング要素３１０５は、パケットを受信し、転送テーブル３１２０内のフローエントリに基づいてＬ３処理２１０を実行する。
【０３０６】
パケットにＬ３処理２１０を実行しながら、管理されるスイッチング要素３１０５は、（ステージ１で）フローエントリ３１２５を識別し、フローエントリ３１２５で指定されるアクションを実行する。図示のように、フローエントリ３１２５は、Ｘに変換されるべきＩＰアドレス１．１．１．１０を有するフローテンプレートが、ＮＡＴデーモン３１１０に送信されるべきであることを示す。この例では、フローエントリ３１２５は、いくつかの実施形態では番号である優先順位の値Ｎを有する。
【０３０７】
ステージ２では、ＮＡＴデーモン３１１０は、フローテンプレートを受信し、ＮＡＴテーブル３１１５をルックアップすることによって、１．１．１．１０が２．１．１．１０に変換されるべきであることを知る。ＮＡＴデーモンは、フローテンプレートに記入し、記入されたテンプレート（ここでは、フローエントリ３１３０）を転送テーブル３１２０に挿入する。この例では、ＮＡＴデーモンは、Ｎ＋１の優先順位を、記入されたテンプレートに割り当てる。
【０３０８】
ステージ３では、管理されるスイッチング要素３１１０は、パケットのアドレスを変更するために、フローエントリ３１３０を使用する。また、管理されるスイッチング要素３１０５がその後に処理するパケットのために、管理されるスイッチング要素３１０５は、パケットが１．１．１．１０の送信元ＩＰアドレスを有する場合、フローエントリ３１２５の上のフローエントリ３１３０を使用する。
【０３０９】
いくつかの実施形態では、ＮＡＴデーモン３１１０及び管理されるスイッチング要素は、ホスト３１００で動作している同じ仮想マシンで動作し、又は、ホスト３１００で動作している異なる仮想マシンで動作する。ＮＡＴデーモン及び管理されるスイッチング要素は、別々のホストで動作することもできる。
【０３１０】
図３２は、いくつかの実施形態がネットワークアドレスを変換するために実行するプロセス３２００を概念的に示す。いくつかの実施形態では、プロセス３２００は、Ｌ３でパケットをルーティングするためにＬ３処理２１０を実行する、管理されるスイッチング要素（例えば、管理されるスイッチング要素１７２０、２５０５、又は３１０５）によって実行される。プロセス３２００は、いくつかの実施形態では、プロセスがＬ３で論理的にルーティングされるべきパケットを受信すると開始する。
【０３１１】
プロセス３２００は、（３２０５で）パケットがネットワークアドレス変換（ＮＡＴ）を必要とするかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、パケットがＮＡＴを必要とするかどうかを、フローエントリに基づいて判定する。クォリファイアがパケットのヘッダに格納された情報又は論理コンテキストと一致するフローエントリは、パケットがＮＡＴを必要とすることを指定する。上述したように、ＮＡＴは、ＳＮＡＴ又はＤＮＡＴであってよい。フローエントリは、また、どのＮＡＴがパケットに実行されるべきかを指定することになる。
【０３１２】
プロセス３２００が、（３２０５で）パケットがＮＡＴを必要としないと判定すると、プロセスは終了する。そうでなければ、プロセス３２００は、（３２１０で）プロセス３２００が、ＮＡＴデーモンからのパケットのアドレス（例えば、送信元ＩＰアドレス）を変換する先のアドレスを要求する必要があるかどうかを判定する。いくつかの実施形態では、プロセス３２００は、フローエントリに基づいて、プロセスがＮＡＴデーモンに要求する必要があるかどうかを判定する。例えば、フローエントリは、パケットのアドレスを変換する先のアドレスが、ＮＡＴデーモンからのアドレスを要求することによって得られるべきであることを指定することができる。いくつかの実施形態では、プロセスは、フローエントリが、変換されたアドレスのための空のフィールド、又は、変換されたアドレスがＮＡＴデーモンから得られるべきであることを示すフィールド内のなにか他の値を有するフローテンプレートである場合、ＮＡＴデーモンが、変換されたアドレスを提供するべきであると判定する。
【０３１３】
プロセスが、（３２１０で）プロセスがＮＡＴデーモンからのアドレスを要求する必要がないと判定した場合、処理は、（３２２０で）変換されたアドレスをフローエントリから得る。例えば、フローエントリは、変換されたアドレスを提供することになる。プロセスは、次に、さらに後述する３２２５に進む。プロセスが、（３２１０で）プロセスがＮＡＴデーモンからのアドレスを要求する必要があると判定した場合、プロセス３２００は、３２１５で、ＮＡＴデーモンからの変換されたアドレスを要求し、取得する。いくつかの実施形態では、プロセス３２００は、フローテンプレートをＮＡＴデーモンに送信することによって、変換されたアドレスを要求する。ＮＡＴデーモンは、フローテンプレートに変換されたアドレスを記入し、記入されたテンプレートを、プロセスが使用する転送テーブル（図示せず）内に配置することになる。
【０３１４】
次に、プロセス３２００は、（３２２５で）パケットを変換されたアドレスで変更する。いくつかの実施形態では、プロセスは、パケットのヘッダ内のアドレスフィールドを変更する。代わりに又は結合的に、プロセスは、パケットのアドレスを変換されたアドレスに置き換えるために、論理コンテキストを変更する。プロセスは、次に、終了する。
【０３１５】
本出願で、上記及び下記で使用するＭＡＣアドレス、ＩＰアドレス、及び他のネットワークアドレスは、例示目的のための例であり、特に断らない限り、許容範囲内の値を持たなくてよいことに注意すべきである。
【０３１６】
ＩＩ．ネクストホップの仮想化
外部ネットワークとインタフェースする論理ネットワークは、ネクストホップのルータと相互作用する必要がある。異なる実施形態の仮想化アプリケーションは、ネクストホップのルータを介して論理Ｌ３ネットワークアドレスを外部ネットワークとインタフェースするために、異なるモデルを使用する。
【０３１７】
第１に、固定アタッチメントモデルでは、物理インフラストラクチャは、管理される統合要素のセットと相互作用し、管理される統合要素のセットは、所定のＩＰプレフィックスに関するすべての入口トラフィックを受信し、すべての出口トラフィックを物理ネットワークに送信し戻すことになる。このモデルでは、論理的抽象化すると、管理される統合要素の所定のセットごとにある、論理Ｌ３ルータについての単一の論理アップリンクポートとなりうる。いくつかの実施形態では、複数の統合クラスタが存在する可能性がある。制御アプリケーションによって提供される論理制御プレーンは、アップリンク（複数可）に向かう出口トラフィックをアウトバウンドにルーティングする役割を果す。いくつかの実施形態では、管理される統合要素の例は、米国特許出願第１３／１７７，５３５号に記載されている、エクステンダとして機能する第２のレベルの管理されるスイッチング要素を含む。管理される統合要素の例は、図８、９、及び１０を参照して上述した管理されるスイッチング要素も含む。
【０３１８】
第２に、分散型アタッチメントモデルでは、仮想化アプリケーションは、アタッチメントを、接続する管理されるエッジスイッチング要素の全体に渡って分散させる。これを行うために、管理されるエッジスイッチング要素は、物理ルーティングインフラストラクチャに統合しなければならない。すなわち、各々の管理されるエッジスイッチング要素は、管理されるスイッチング要素のグループの外部の物理ルーティングインフラストラクチャと通信することができなければならない。いくつかの実施形態では、これらのスイッチング要素は、物理スイッチング要素（例えば、物理ルータ）と通信するために、ＩＧＰプロトコル（又は、他のルーティングプロトコル）を使用し、物理スイッチング要素は、パケットを（管理されるスイッチング要素によって実装された）論理ネットワーク内に送信し、論理ネットワークからパケットを受信する。このプロトコルを使用して、いくつかの実施形態の管理されるエッジスイッチング要素は、入口トラフィックをその適切な場所に直接引き付けるために、ホストルート（／３２）を広告することができる。いくつかの実施形態では、入口及び出口トラフィックは、管理されるスイッチング要素の全体に渡って完全に分散されるため、集中型のトラフィックのホットスポットは存在しないが、論理的抽象化すると、依然として、論理Ｌ３ルータについての単一の論理アップリンクポートとなり、論理制御プレーンは、トラフィックをアップリンクにルーティングする役割を果たす。制御プレーンにとって有益ならば、複数のアップリンクポートを論理制御プレーンに露出ささせることを妨げるものではない。しかしながら、アップリンクポートの数は、このモデルではアタッチメントポイントの数と一致する必要はない。
【０３１９】
第３に、制御プレーン駆動モデルでは、論理制御プレーンは、外部ネットワークと統合する役割を果す。制御プレーンは、１対１のルーティング統合で露出され、例えば、物理ネットワーク内のすべてのアタッチメントポイントに対して、論理ポートが存在する。論理制御プレーンは、ルーティングプロトコルレベルでネクストホップルータとピアリングする役割を有する。
【０３２０】
３つのモデルは、すべて異なる設計トレードオフにぶつかり、固定アタッチメントモデルは、最適でない物理トラフィックルートを伴うが、物理インフラストラクチャとの統合をあまり必要としない。分散モデルの中でも、完全に分散されたモデルのスケールがベストであり、いくつかの実施形態では、論理制御プレーンは、極端では、数千のピアリングセッションである可能性があるすべてのピアリングトラフィックについて役割を果たさない。しかしながら、制御プレーン駆動モデルは、論理制御プレーンに対する最大の制御を与える。最適な物理ルートが望まれる場合、出口ポートは、入口ポートに依存しなければならないため、最大の制御は、ポリシールーティングを必要とする。
【０３２１】
ＩＩＩ．ステートフルパケット動作
ステートフルパケット動作は、ルーティングされるトラフィックのための論理Ｌ３データパスにＮＡＴを配置する。論理パイプラインでは、ネットワークアドレス変換は、実際の標準的なＬ３パイプラインの前又は後で、外部のＮＡＴステージで行われる。すなわち、ネットワークアドレス変換は、ルーティングの前又は後でパケットに加えられる。いくつかの実施形態では、ＮＡＴ構成は、実際のアドレス変換エントリを作成するフローテンプレートを介して行われる。フローテンプレートは、さらに後述される。
【０３２２】
ＮＡＴ機能を配置することは、最初のホップで論理パケット処理の全部又は大部分を実行するアプローチから外れる１つの特徴である。最初のホップで動作の大部分又は全部を実行する基本的なモデルは、いくつかの実施形態では、逆方向に流れるパケットの処理を、異なる最初のホップのスイッチング要素に配置し、所定のトランスポートレベルのフローに関して、ある方向のパケットは、一方の端部で論理パイプラインを介して送信されることになり、逆方向のパケットは、他方の端部でパイプラインを介して送信されることになる。残念ながら、フローごとのＮＡＴ状態は、非常に豊富である可能性があり（特に、ＮＡＴが、より高いレベルのアプリケーションプロトコルをサポートしている場合）、状態は、所定のトランスポートフローに関して、方向間で共有されなければならない。
【０３２３】
したがって、いくつかの実施形態は、論理ポートの最初のホップのスイッチング要素に、両方向への論理パイプラインを実行するために、トランスポートフローのオープニングパケットを受信させる。例えば、ＶＭ  Ａが、ＶＭ  ＢへのＴＣＰ接続をオープンした場合、ＶＭ  Ａのハイパーバイザ（ハイパーバイザとして同じマシンで動作することができる）に接続されたエッジスイッチング要素は、両方向への論理パイプラインを介してパケットを送信する役割を果すようになる。これは、純粋に分散されたＮＡＴ機能に関するだけでなく、論理ネットワークトポロジで複数のＮＡＴを有することを可能にする。最初のホップのスイッチング要素は、どれくらい多く存在するのかにかかわらず、すべての必要なＮＡＴ変換を実行することになり、ネットワークアドレス変換は、単に、（そのスイッチング要素内で）パケットが通過するＬＤＰＳパイプライン内の特別なステップになる。
【０３２４】
しかしながら、論理パイプラインを介して逆方向に送信されるパケットの供給を配置することは、追加の手段を必要とし、逆方向パケットのための最初のホップのスイッチング要素は、（局所的に利用可能なＮＡＴ状態を有することを除く）処理を実行することになる。この目的のために、いくつかの実施形態は、（上記ＶＭ  Ａの）送信元エッジスイッチング要素から宛先エッジスイッチング要素（上記ＶＭ  Ｂの）に送信される最初のパケットが、特別な「ヒント状態」を確立することを可能にし、ヒント状態は、宛先スイッチング要素に、そのトランスポートフローの逆方向パケットを、処理せずに送信元スイッチング要素に直接送信させる。送信元スイッチング要素は、次に、逆方向でパイプラインを実行することになり、逆方向パケットのためにローカルＮＡＴ状態を使用してＮＡＴ動作を逆転させる。いくつかの実施形態は、コントローラが、フローごとの動作に関与する必要がないように、宛先スイッチング要素でこの逆方向ヒント状態を確立するために、（後述される）フローテンプレートを使用する。
【０３２５】
次の２つの図、図３３及び３４は、ＮＡＴ機能及びヒント状態の配置を示す。図３３は、いくつかの実施形態の最初のホップのスイッチング要素が、ＮＡＴ動作２６４５を含む論理処理パイプライン２００の全体を実行することを概念的に示す。図３３は、論理処理パイプライン２００が、ＮＡＴ動作２６４５が実行されることを示すために、Ｌ３処理２２０内に示されるＮＡＴ動作２６４５を含むことを除いて、図２９と同じである。
【０３２６】
論理ルータを実装するいくつかの実施形態の管理されるスイッチング要素は、パケットが論理ルータによってルーティングされた後、パケットにＮＡＴ動作を実行する。例えば、論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケットを送信すると、管理されるスイッチング要素２５０５は、パケットを管理されるスイッチング要素２５１０に送出する前に、パケットの送信元ＩＰアドレス（例えば、１．１．１．１０）を異なるＩＰアドレス（例えば、３．１．１．１０）に変換する。管理されるスイッチング要素２５０５は、管理されるスイッチング要素２５０５を管理するコントローラクラスタ（図示せず）によって管理されるスイッチング要素２５０５に構成されたＮＡＴルール（例えば、フローエントリ）のセットに基づいて、ＮＡＴ動作２６４５を実行する。
【０３２７】
ＶＭ４が受信するパケットは、変換されたＩＰアドレス３．１．１．１０を、パケットの送信元ＩＰアドレスとして有する。ＶＭ４からＶＭ１への戻りパケットは、この変換されたアドレスを、パケットの宛先ＩＰアドレスとして有することになる。したがって、変換されたＩＰアドレスは、このパケットがＶＭ１に達するために、ＶＭ１のＩＰアドレスに変換し戻されなければならない。しかしながらＮＡＴ動作を実行するためのＮＡＴルールは、管理されるスイッチング要素２５０５内のみであり、管理されるスイッチング要素２５１０内にはないため、いくつかの実施形態の管理されるスイッチング要素２５１０は、戻りパケットのためのＶＭ１のＩＰアドレスを回復するために、ＮＡＴ動作２６４５を実行しないことになる。このように、ＮＡＴルール及び状態は、すべての潜在的な管理されるスイッチング要素によって共有される必要はない。
【０３２８】
図３４は、このような実施形態の一例を概念的に示す。具体的には、図３４は、管理されるスイッチング要素２５１０が、戻りパケットを管理されるスイッチング要素２５０５に送信するとき、論理処理パイプラインを実行しないことを示す。この図は、また、管理されるスイッチング要素２５０５が、管理されるスイッチング要素２５１０からの戻りパケットの受信に応じて、管理されるスイッチング要素２５０５が、この戻りパケットに対する最初のホップスイッチング要素であるかのように、論理処理パイプライン２００を実行することを示す。図３４は、論理処理パイプラインが反対方向に（左を指す矢印で）描かれていることを除いて、図３３と同じである。図３４は、ルール３４００及び転送テーブル３４０５も示す。
【０３２９】
ルール３４００は、いくつかの実施形態では、管理されるスイッチング要素２５１０を管理するコントローラクラスタ（図示せず）によって構成される転送テーブル３４０５内のフローエントリである。ルール３４００は、管理されるスイッチング要素２５１０が、管理されるスイッチング要素２５０５由来のパケットを受信すると、管理されるスイッチング要素２５１０は、管理されるスイッチング要素２５０５への戻りパケットに論理処理パイプラインを実行すべきではないことを指定する（又は、「ヒント」を与える）。
【０３３０】
管理されるスイッチング要素２５１０が、管理されるスイッチング要素２５０５から、管理されるスイッチング要素２５０５がＮＡＴ動作を実行しているパケットを受信すると、管理されるスイッチング要素２５１０は、パケットのヘッダ（例えば、論理コンテキスト）に含まれる情報に基づいて、ルール３４００を見つける。また、管理されるスイッチング要素２５１０は、いくつかの実施形態では、送信元マシン（例えば、ＶＭ１）に向かう受信されたパケットの宛先マシン（例えば、ＶＭ４）からのパケットに、論理処理パイプラインを実行すべきではないことを示すために、１つ又は複数の他のフローエントリを変更する。
【０３３１】
管理されるスイッチング要素２５１０は、次に、このパケットを宛先マシン、例えば、ＶＭ４に転送する。管理されるスイッチング要素２５１０が、ＶＭ４からＶＭ１に向かう戻りパケットを受信する場合、管理されるスイッチング要素２５１０は、このパケットに論理処理パイプラインを実行しないことになる。すなわち、管理されるスイッチング要素２５１０は、Ｌ２での論理転送又はＬ３での論理ルーティングを実行しないことになる。管理されるスイッチング要素２５１０は、単に、論理処理がパケットに実行されていないことを、このパケットの論理コンテキストで示すことになる。
【０３３２】
管理されるスイッチング要素２５０５が、管理されるスイッチング要素２５１０からこのパケットを受信すると、管理されるスイッチング要素２５０５は、論理処理パイプライン２００を実行する。具体的には、管理されるスイッチング要素２５０５は、最初に、パケットのヘッダフィールドに含まれる情報に基づいて、パケットの論理コンテキストを決定するために、論理コンテキストルックアップを実行する。この例では、パケットの送信元ＭＡＣアドレスは、ＶＭ４のＭＡＣアドレスであり、パケットの送信元ＩＰアドレスは、ＶＭ４のＩＰアドレスである。パケットは、ＶＭ４から、異なる論理ネットワーク内にあるＶＭ１に送信されるため、パケットは、論理スイッチ２３０のポートＹと関連付けられたＭＡＣアドレス（すなわち、この例では、０１：０１：０１：０１：０１：０２）を、宛先ＭＡＣアドレスとして有する。パケットの宛先ＩＰアドレスは、ＶＭ１のＮＡＴされたＩＰアドレス（すなわち、３．１．１．１０）である。
【０３３３】
管理されるスイッチング要素２５０５は、次に、論理スイッチ２３０に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２３０に、論理スイッチ２３０のポート２を通ってきたパケットを拒絶させることになるネットワークアドレス（例えば、送信元／宛先ＭＡＣ／ＩＰアドレス、など）を持っていないことを判断する。管理されるスイッチング要素２５０５は、また、論理コンテキストから、論理スイッチ２３０のポートＹが、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素２５０５は、ポートＹに対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２３０に、ポートＹを介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【０３３４】
次に、管理されるスイッチング要素２５０５は、宛先ＩＰアドレスをＶＭ１のＩＰアドレスに変換し戻すために、パケットにＮＡＴ動作２６４５を実行する。すなわち、この例での管理されるスイッチング要素２５０５は、ＮＡＴルールに基づいて、３．１．１．１０を１．１．１．１０に置き換える。管理されるスイッチング要素２５０５は、次に、ここでは１．１．１．１０であるパケットの宛先ＩＰアドレスが、別の論理ネットワークのためのものであるため、パケットにＬ３処理を実行する。管理されるスイッチング要素２５０５は、論理ルータ２２５のポート２に対するＬ３でのパケットの入口アクセス制御を決定する。管理されるスイッチング要素２５０５は、また、フローエントリをルックアップし、パケットの宛先ＩＰアドレス、１．１．１．１０が、論理ルータ２２５の論理ポート１と関連付けられた１．１．１．１／２４のサブネットアドレスに属するため、パケットが、論理ルータ２２５の論理ポート１に送信されるべきであることを決定する。さらに、管理されるスイッチング要素２５０５は、論理ルータ２２５の論理ポート１に対するパケットの出口アクセス制御を決定する。管理されるスイッチング要素２５０５は、また、パケットの宛先ＭＡＣアドレスを、ＶＭ１のＭＡＣアドレスになるように変更する。
【０３３５】
管理されるスイッチング要素２５０５は、次に、Ｌ２処理２１５を実行する。この例では、パケットの送信元ＭＡＣアドレスは、ここでは、論理ルータ２２５の論理ポート１のＭＡＣアドレスであり、パケットの送信元ＩＰアドレスは、ＶＭ４のＩＰアドレスのままである。パケットの宛先ＩＰアドレスは、ＶＭ１のＩＰアドレス（すなわち、１．１．１．１０）である。この例では、論理コンテキストは、論理スイッチ２２０が、パケットを転送することになる論理スイッチであり、論理スイッチ２２０の論理ポートＸが、パケットが受信されたポートであることを指定する。論理コンテキストは、また、ポート１が、ＶＭ１のＭＡＣアドレスと関連付けられているため、論理スイッチ２２０のポート１が、パケットを宛先、ＶＭ１に送出することになるポートであることを指定する。
【０３３６】
管理されるスイッチング要素２５０５は、次に、パケットの論理コンテキストに基づいて、それぞれ論理スイッチ２２０のポートＸ及びポート１に対する入口及び出口アクセス制御を決定することを含む論理転送ルックアップを実行する。管理されるスイッチング要素２５０５は、論理スイッチ２２０の論理ポート１がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、論理スイッチ２２０の論理ポート１が、管理されるスイッチング要素２５０５のポート４にマッピングされると判定する。管理されるスイッチング要素２５０５は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、パケットが、管理されるスイッチング要素２５０５のポート４を介してＶＭ１に送信されるべきであると判定する。
【０３３７】
図３５は、いくつかの実施形態が、パケットを、そのアドレスがＮＡＴされた宛先マシンに送信するために実行するプロセス３５００を概念的に示す。プロセス３５００は、いくつかの実施形態では、パケットを送信元マシンから直接受信する管理されるスイッチング要素によって実行される。
【０３３８】
プロセス３５００は、（３５０５で）送信元マシンからパケットを受信することによって開始する。プロセスは、次に、（３５１０で）パケットが、そのアドレスがＮＡＴされている宛先マシンに向けられているかどうかを判定する。いくつかの実施形態では、プロセスは、パケットのヘッダに含まれる情報（例えば、宛先ＩＰアドレス）と一致するフローエントリをルックアップすることによって、パケットがこのような宛先マシンに向けられているかどうかを判定する。１つ又は複数のフローエントリは、パケットが、そのアドレスがＮＡＴされている宛先マシンにアドレスされている場合、論理処理（例えば、Ｌ２での論理転送又はＬ３での論理ルーティング）がこのパケットに実行されるべきでないことを指定する。他のフローエントリは、パケットが、そのアドレスがＮＡＴされていない宛先マシンにアドレスされている場合、論理処理が実行されるべきであることを指定する。
【０３３９】
プロセス３５００が、（３５１０で）パケットが、そのアドレスがＮＡＴされている宛先マシンに向けられていると判定すると、プロセス３５１５は、さらに後述する３５２０に進む。プロセス３５００が、（３５１０で）パケットが、そのアドレスがＮＡＴされていない宛先マシンに向けられていると判定すると、プロセス３５００は、パケットに論理処理（例えば、Ｌ２での論理転送又はＬ３での論理ルーティング）を実行する。
【０３４０】
プロセス３５００は、次に、（３５２０で）パケットを、宛先マシンへのルート内のネクストホップの管理されるスイッチング要素に送信する。プロセス３５００は、次に終了する。
【０３４１】
上記で、コントローラは、パケットごとの動作に関与しないことに注意されたい。論理制御プレーンは、なにがネットワークアドレス変換されるべきかを識別するＦＩＢルールを単に供給する。すべてのフローごとの状態は、データパス（Ｏｐｅｎ  ｖＳｗｉｔｃｈ）によって確立される。
【０３４２】
上述した実施形態は、送信元ＮＡＴを利用する。しかしながら、いくつかの実施形態は、同じラインに沿った宛先ＮＡＴ（ＤＮＡＴ）を使用する。ＤＮＡＴの場合では、すべての処理は、送信元の管理されるエッジスイッチング要素で行われてよい。
【０３４３】
さらに、ＮＡＴ機能を外部及び論理ネットワーク間に配置する場合、動作は、上述したものと異ならない。この場合、外部ネットワークから来るフローに対して、ＮＡＴ状態は、両方向について（この場合、最初のホップの管理されるエッジスイッチング要素となる）エクステンダに保持されることになる。他方では、外部ネットワークに向けて開始されたトランスポートフローに対して、状態は、送信元ホスト／ＶＭに取り付けられた管理されるエッジスイッチング要素で保持されることになる。
【０３４４】
ネットワークアドレス変換のためのこの純粋な分散型アプローチでは、ＶＭモビリティサポートは、ＶＭで確立されたＮＡＴ状態を、新しいハイパーバイザに移行する必要がある。ＮＡＴ状態の移行なしでは、トランスポート接続は、中断することになる。このような状況に対して、いくつかの実施形態は、閉じられた／存在しないＴＣＰフローに送られたパケットにＴＣＰリセットで応答するために、ＮＡＴを期待するように設計される。より高度な実装は、ＮＡＴ状態の移行をＶＭと共に促進させるＶＭ管理システムと統合し、この場合、トランスポート接続は、中断する必要はない。
【０３４５】
図３６は、ＶＭが第１のホストから第２のホストに移行するときの、第１のホストから第２のホストへのＮＡＴ状態の移行の一例を示す。具体的には、この図は、第１のホストのハイパーバイザを使用して、ＶＭ、及びＶＭに関連するＮＡＴ状態を移行することを示す。この図は、２つのホスト３６００及び３６３０を示す。
【０３４６】
図示のように、この例でのホスト３６００は、送信元ホストであり、送信元ホストから、ＶＭ３６２５は、ホスト３６３０に移行している。ホスト３６００では、ＮＡＴデーモン３６１０及び管理されるスイッチング要素３６０５が動作している。ＮＡＴデーモン３６１０は、図３１を参照して上述したＮＡＴデーモン３１１０と同様である。ＮＡＴデーモン３６１０は、元のアドレス及び変換されたアドレスのマッピングを含むＮＡＴテーブル３１１５を保持する。管理されるスイッチング要素３６０５は、変換されたアドレスを得るために、ＮＡＴデーモン３６１０を使用する。管理されるスイッチング要素は、いくつかの実施形態では、上述したように、元のアドレスを送信し、変換されたアドレスを得るために、ＮＡＴデーモン３６１０にフローテンプレートを送信する。
【０３４７】
ハイパーバイザ３６８０は、ホスト３６００で動作するＶＭを作成し、管理する。いくつかの実施形態では、ハイパーバイザ３６８０は、ＶＭが別のホストに移行する前に、管理されるスイッチング要素３６０５及び／又はＮＡＴデーモン３６１０に、ホスト３６００で動作するＶＭのホスト３６００外への移行を通知する。管理されるスイッチング要素３６０５及び／又はＮＡＴデーモン３６１０は、いくつかの実施形態では、ＶＭ移行のイベントの際、コールバックを登録することによって、このような通知を取得する。
【０３４８】
いくつかのこのような実施形態では、管理されるスイッチング要素３６０５は、ＮＡＴデーモンに、移行するＶＭに関連するＮＡＴ状態（例えば、ＶＭのためのアドレスマッピング、及びプロトコル情報、など）を取得し、ＮＡＴ状態をハイパーバイザ３６８０に提供するように要求する。いくつかの実施形態では、ＮＡＴデーモン３６１０は、ＮＡＴ３６１０が、直接ハイパーバイザ３６８０によって移行を通知されると、移行するＶＭに関連するＮＡＴ状態を、ハイパーバイザ３６８０に提供する。ハイパーバイザ３６８０は、次に、ＮＡＴ状態を、移行するＶＭと一緒に宛先ホストに移行する。
【０３４９】
いくつかの実施形態では、ＮＡＴデーモン３６１０は、移行するＶＭに関連するＮＡＴ状態を、直接、宛先ホストで動作するＮＡＴデーモンに送信する。これらの実施形態では、ＮＡＴデーモン３６１０及び／又は管理されるスイッチング要素３６０５は、ハイパーバイザ３６８０が、宛先ホストへのＶＭの移行を開始することができるように、ＮＡＴ状態の移行の完了をハイパーバイザ３６８０に通知する。
【０３５０】
いくつかの実施形態では、管理されるスイッチング要素３６０５は、また、移行するＶＭに関連するフローエントリを、ハイパーバイザ３６８０に、又は、宛先ホストで動作する管理されるスイッチング要素に提供する。ハイパーバイザ３６８０にフローエントリが提供されると、ハイパーバイザ３６８０は、フローエントリを、宛先ホストで動作する管理されるスイッチング要素のフローテーブルに送信する。ＮＡＴ状態単独で、宛先ホストで動作する管理されるスイッチング要素が、移行するＶＭの変換されたアドレスを取得することを可能にするため、宛先ホストへのフローエントリの移行は、任意である。
【０３５１】
送信元ホスト３６００の動作の一例をここで説明する。ハイパーバイザ３６８０が、（例えば、コントローラクラスタからの１つ又は複数のユーザ入力毎に）ＶＭ３６２５を移行する場合、ハイパーバイザ３６８０は、管理されるスイッチング要素３６０５に通知する。この例での管理されるスイッチング要素３６０５は、次に、ＮＡＴデーモン３６１０に、ＶＭ３６２５に関連するＮＡＴ状態を取得し、取得した状態をハイパーバイザ３６８０に送信するように要求する。
【０３５２】
ハイパーバイザ３６８０は、次に、ＶＭのデータを移動することによって、ＶＭ３６２５を宛先ホスト３６３０に移行する。いくつかの実施形態では、ハイパーバイザ３６８０は、ＶＭ３６２５の実行状態を取り込み、状態をＶＭ３６２５に送信することによって、ライブマイグレーションが可能である。ハイパーバイザ３６８０は、また、ホスト３６３
０で動作する管理されるスイッチング要素３６３５が、ちょうどホスト３６３０に移行されたＶＭ３６２５に関するＮＡＴデーモン３６４０から、変換されたアドレスを取得することができるように、取得したＮＡＴ状態を、ホスト３６３０のＮＡＴテーブル３６４５に移動する。
【０３５３】
図３７は、ＶＭが第１のホストから第２のホストに移行するときの、第１のホストから第２のホストへのＮＡＴ状態の移行の別の例を示す。具体的には、この図は、第１のホストのハイパーバイザに、移行するＶＭに関連するＮＡＴ状態を取得し、ＮＡＴ状態を第２のホストに送信するように要求するために、制御クラスタを使用することを示す。図は、２つのホスト３６００及び３６３０を示す。しかしながら、この例ではホスト３６００で動作するハイパーバイザ３６８０は、送信元ホストで動作する管理されるスイッチング要素又はＮＡＴデーモンへの通知をサポートしない。
【０３５４】
いくつかの実施形態のハイパーバイザ３６８０は、管理されるスイッチング要素又はＮＡＴデーモンに、ＶＭの宛先ホストへの移行を通知しないため、移行するＶＭに関連するＮＡＴ状態は、ハイパーバイザ３６８０が、ＶＭの宛先ホストへの移行を開始又は完了した後、宛先ホストに送信される。具体的には、管理されるスイッチング要素３６３５は、いくつかの実施形態では、例えば、管理されるスイッチング要素３６３５にとって新しい３６２５のＭＡＣアドレスを検出することによって、ＶＭ３６２５の移行を検出することになる。管理されるスイッチング要素３６２５は、制御クラスタ３７０５に、ＶＭ３６２５の追加（したがって、ＶＭ３６２５のための管理されるスイッチング要素３６２５の新しいポート）を通知する。
【０３５５】
制御クラスタ３７０５は、上述した制御クラスタ１１０５及び２２０５と同様である。ＶＭの追加の管理されるスイッチング要素３６３５からの通知の受信に応じて、制御クラスタ３７０５は、送信元ホスト３６００で動作するハイパーバイザ３６８０に、移行されたＶＭ３６２５に関連するＮＡＴ状態を取得し、ＮＡＴテーブル３６４５を取得したＮＡＴ状態で更新するように要求する。いくつかの実施形態では、制御クラスタ３７０５は、加えて、移行されたＶＭ３６２５に関連するフローエントリを取得し、これらのフローエントリを、宛先ホスト３６３０のフローテーブル３６５０に入れるように要求する。
【０３５６】
いくつかの実施形態では、制御クラスタ３７０５は、ＮＡＴテーブル３６４５及び／又は３６５０が、移行されたＶＭ３６２５に関連するＮＡＴ状態及び／又はフローエントリで更新されるように、管理されるスイッチング要素及び／又はＮＡＴデーモン３６１０に、ＮＡＴ状態及び／又はフローエントリをＮＡＴデーモン３６４０及び／又は管理されるスイッチング要素３６３５に送信するように、直接要求することができる。
【０３５７】
送信元ホスト３６００、宛先ホスト３６３０、及び制御クラスタ３７０５の例示的な動作をここで説明する。ハイパーバイザ３６８０が、（例えば、制御クラスタからの１つ又は複数のユーザ入力ごとに）ＶＭ３６２５に移行する場合、ハイパーバイザ３６８０は、ＶＭ３６２５の構成データ又は実行状態をホスト３６３０に移動することによって、ＶＭ３６２５に移行する。ここではホスト３６３０で動作するＶＭ３６２５は、管理されるスイッチング要素３６３５にパケットを送信する。この例での管理されるスイッチング要素３６３５は、パケットの送信元ＭＡＣアドレスが、管理されるスイッチング要素３６３５にとって新しいことを認識することによって、ホスト３６３０へのＶＭ３６２５の移行を検出する。この例での管理されるスイッチング要素３６０５は、次に、ＶＭ３６２５の追加（又は、ＶＭ３６２５のための新しいポートの作成）を、制御クラスタ３７０５に通知する。
【０３５８】
制御クラスタ３７０５は、次に、ハイパーバイザ３６８０に、ＶＭ３６２５に関連するＮＡＴ状態を取得し、ＮＡＴ状態を宛先ホスト３６３０に送信するように要求する。宛先ホスト３６３０で動作する管理されるスイッチング要素３６３５は、ＮＡＴデーモン３６４０から、ちょうどホスト３６３０に移行されたＶＭ３６２５のための変換されたアドレスを取得することができる。
【０３５９】
ＩＶ．負荷分散
いくつかの実施形態は、Ｌ３パイプラインの特別なステップとして負荷分散を実装する。例えば、いくつかの実施形態は、宛先ネットワークアドレス変換が後に続く論理バンドルベースの負荷分散ステップを実装する。いくつかの実施形態では、（負荷分散サービスを提供する）論理ルータは、仮想ＩＰアドレスをホストし、したがって、仮想ＩＰアドレス（ＶＩＰ）に送信されたＡＲＰ要求に応答することになる。これにより、トラフィックが、クラスタメンバが存在する同じＬ２ドメインからＶＩＰに送信されたとしても、仮想ＩＰは、機能し続けることになる。
【０３６０】
図３８は、負荷分散を実行する論理スイッチ及び論理ルータの例示的な物理的実装を示す。具体的には、この図は、論理ルータが、フローエントリに基づいてＬ３ルータ又は管理されるスイッチング要素によって実装される、集中型のＬ３ルーティングモデルを示す。この図は、管理されるスイッチング要素３８０５〜３８２５、及びＶＭ３８３０〜３８５０を示す。この図は、また、Ｌ２処理３８５５、ＤＮＡＴ及び負荷分散３８６０、Ｌ３ルーティング３８６５、並びに、Ｌ２処理３８７０及び３８７５を含む論理処理パイプラインを示す。
【０３６１】
いくつかの実施形態の管理されるスイッチング要素３８０５は、エクステンダとして機能する第２のレベルの管理されるスイッチング要素である。いくつかのこのような実施形態での管理されるスイッチング要素３８０５は、管理されるスイッチング要素３８０５が、フローエントリ（図示せず）に基づいて論理ルータ（図示せず）を実装し、又は、論理ルータを実装するＬ３ルータが動作している同じホストで動作している点で、上述した管理されるスイッチング要素８１０及び１９１０と同様である。加えて、管理されるスイッチング要素３８０５は、宛先アドレスを別のアドレスに変換し、同じサービス（例えば、ウェブサービス）を提供する異なるマシン（例えば、ＶＭ）間で負荷を分散するために、ＤＮＡＴ及び負荷分散３８６０を実行する。
【０３６２】
管理されるスイッチング要素３８０５〜３８２５は、ＶＭ３８３０〜３８５０が接続される論理スイッチ（図示せず）を実装する。この例でのＶＭ３８４０及び３８５０は、同じサービスを提供する。すなわち、ＶＭ３８４０及び３８５０は、いくつかの実施形態では、同じサービスを提供するサーバとして集合的に動作する。しかしながら、ＶＭ３８４０及び３８５０は、異なるＩＰアドレスを有する別々のＶＭである。管理されるスイッチング要素３８０５、又は、管理されるスイッチング要素３８０５によって使用されるＬ３ルータ（図示せず）は、ＶＭ３８４０及び３８５０間でワークロードを分散するために、負荷分散を実行する。
【０３６３】
いくつかの実施形態では、負荷分散は、サービスを要求するパケットの宛先アドレスを、サービスを提供するＶＭの異なるアドレスに変換することによって達成される。具体的には、管理されるスイッチング要素３８０５、又は、管理されるスイッチング要素３８０５によって使用されるＬ３ルータ（図示せず）は、ＶＭのうちの特定のＶＭが、他のＶＭが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのＶＭ３８４０及び３８５０のアドレスに変換する。サービス提供ＶＭの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
【０３６４】
いくつかの実施形態では、管理されるスイッチング要素３８０５又はＬ３ルータは、論理処理パイプラインのＤＮＡＴ及び負荷分散３８６０を実行した後、Ｌ３ルーティング３８６５を実行する。したがって、管理されるスイッチング要素３８０５又はＬ３ルータは、これらの実施形態では、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素３８２０及び３８２５は、エッジスイッチング要素であり、したがって、ＶＭ３８４０及び３８５０との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素３８０５又はＬ３ルータは、論理処理パイプラインのＤＮＡＴ及び負荷分散３８６０を実行する前に、Ｌ３ルーティング３８６５を実行する。
【０３６５】
管理されるスイッチング要素３８０５の例示的な動作をここで説明する。管理されるスイッチング要素３８１０は、ＶＭ３８４０及び３８５０によって集合的に提供されるサービスを要求するパケットを受信する。このパケットは、ＶＭ３８３０の１つから、具体的には、特定のプロトコルを使用するアプリケーションから来る。この例でのパケットは、特定のプロトコルを識別するプロトコル番号を含む。パケットは、また、サービスを提供するサーバを表すＩＰアドレスを、宛先ＩＰアドレスとして含む。このパケットへの送信元Ｌ２処理３８５５の実行の詳細は、上記又は下記の送信元Ｌ２処理の例と同様であるため、説明を簡単にするために省略される。
【０３６６】
その後、送信元Ｌ２処理３８５５が、Ｌ３ルーティング３８６５を含むＬ３処理を実行するための管理されるスイッチング要素３８０５にパケットをルーティングするために実行される。この例では、管理されるスイッチング要素３８０５は、パケットにＤＮＡＴ及び負荷分散３８６０を実行する。すなわち、管理されるスイッチング要素３８０５は、パケットの宛先ＩＰアドレスを、サービスを提供するＶＭのうちの１つのＩＰアドレスに変換する。この例では、管理されるスイッチング要素３８０５は、ＶＭ３８４０〜３８５０間で最少のワークロードを有するＶＭ３８４０〜３８５０のうちの１つを選択する。管理されるスイッチング要素３８０５は、新しい宛先ＩＰアドレスに基づいて、パケットにＬ３ルーティング３８６５を実行する（すなわち、パケットをルーティングする）。
【０３６７】
管理されるスイッチング要素３８２０は、宛先ＩＰアドレスがＶＭ３８４０のうちの１つのものであるため、パケットを受信し、この宛先ＩＰは、ＶＭのＭＡＣアドレスに解決される。管理されるスイッチング要素３８２０は、パケットをＶＭに転送する。このＶＭは、元々サービスを要求したアプリケーションにパケットを返すことになる。これらの戻りパケットは、管理されるスイッチング要素３８０５に達することになり、管理されるスイッチング要素３８０５は、ＮＡＴを実行し、アプリケーションがこれらのパケットの宛先であることを識別することになる。
【０３６８】
図３９は、負荷分散を実行する論理スイッチ及び論理ルータの別の例示的な物理的実装を示す。具体的には、この図は、論理ルータが、送信元及び宛先Ｌ２処理も実行する管理されるスイッチング要素によって実装される、分散型のＬ３ルーティングモデルを示す。すなわち、この管理されるスイッチング要素は、論理処理パイプライン全体を実行する。この図は、管理されるスイッチング要素３９０５及び３８２０〜３８２５、並びに、ＶＭ３９１０及び３８４０〜３８５０を示す。この図は、また、Ｌ２処理３８５５、ＤＮＡＴ及び負荷分散３８６０、Ｌ３ルーティング３８６５、並びに、Ｌ２処理３８７０〜３８７５を含む論理処理パイプラインを示す。
【０３６９】
いくつかの実施形態の管理されるスイッチング要素３９０５は、管理されるスイッチング要素３９０５が、論理処理パイプライン全体を実装する点で、図２９を参照して上述した管理されるスイッチング要素２５０５と同様である。すなわち、管理されるスイッチング要素３９０５は、論理ルータ及び論理スイッチを実装する。加えて、管理されるスイッチング要素３９０５は、宛先アドレスを別のアドレスに変換し、同じサービス（例えば、ウェブサービス）を提供する異なるマシン（例えば、ＶＭ）間で負荷を分散するために、ＤＮＡＴ及び負荷分散３８６０を実行する。
【０３７０】
上述したように、管理されるスイッチング要素３９０５は、ＶＭ３９１０及び３８４０〜３８５０が接続される論理スイッチ（図示せず）を実装する。管理されるスイッチング要素３９０５は、また、ワークロードをＶＭ３８４０及び３８５０間で分散するために、負荷分散を実行する。具体的には、管理されるスイッチング要素３９０５は、ＶＭのうちの特定のＶＭが、他のＶＭが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのＶＭ３８４０及び３８５０のアドレスに変換する。サービス提供ＶＭの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
【０３７１】
いくつかの実施形態では、管理されるスイッチング要素３９０５は、論理処理パイプラインのＤＮＡＴ及び負荷分散３８６０を実行した後、Ｌ３ルーティング３８６５を実行する。したがって、管理されるスイッチング要素３９０５は、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素３８２０及び３８２５は、エッジスイッチング要素であり、したがって、ＶＭ３８４０及び３８５０との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素３９０５は、論理処理パイプラインのＤＮＡＴ及び負荷分散３８６０を実行する前に、Ｌ３ルーティング３８６５を実行する。
【０３７２】
管理されるスイッチング要素３９０５の動作は、管理されるスイッチング要素３９０５が、ＤＮＡＴ及び負荷分散３８６０を含む論理処理パイプライン全体を実行することを除いて、図３８を参照して上述した例示的動作と同様である。
【０３７３】
図４０は、負荷分散を実行する論理スイッチ及び論理ルータのさらに別の例示的な物理的実装を示す。具体的には、この図は、論理ルータが、送信元Ｌ２処理も実行する管理されるスイッチング要素によって実装される、分散型のＬ３ルーティングモデルを示す。すなわち、最初のホップの管理されるスイッチング要素としてのこの管理されるスイッチング要素は、送信元Ｌ２処理及びＬ３処理を実行する。宛先Ｌ２処理は、最後のホップの管理されるスイッチング要素である別の管理されるスイッチング要素によって実行される。この図は、管理されるスイッチング要素４００５及び３８２０〜３８２５、並びに、ＶＭ４０１０及び３８４０〜３８５０を示す。この図は、また、Ｌ２処理３８５５、ＤＮＡＴ及び負荷分散３８６０、Ｌ３ルーティング３８６５、並びに、Ｌ２処理３８７０〜３８７５を含む論理処理パイプラインを示す。
【０３７４】
いくつかの実施形態の管理されるスイッチング要素４００５は、管理されるスイッチング要素４００５が、論理処理パイプラインの送信元Ｌ２処理及びＬ３処理を実行する点で、図４６を参照して上述した管理されるスイッチング要素２５０５と同様である。すなわち、管理されるスイッチング要素４００５は、送信元マシンに接続された論理ルータ及び論理スイッチを実装する。加えて、管理されるスイッチング要素４００５は、宛先アドレスを別のアドレスに変換し、同じサービス（例えば、ウェブサービス）を提供する異なるマシン（例えば、ＶＭ）間で負荷を分散するために、ＤＮＡＴ及び負荷分散３８６０を実行する。
【０３７５】
上述したように、管理されるスイッチング要素４００５は、１つ又は複数のＶＭ４０１０が接続される論理スイッチ（図示せず）を実装する。管理されるスイッチング要素４００５は、また、ワークロードをＶＭ３８４０及び３８５０間で分散するために、負荷分散を実行する。具体的には、管理されるスイッチング要素４００５は、ＶＭのうちの特定のＶＭが、他のＶＭが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのＶＭ３８４０及び３８５０のアドレスに変換する。サービス提供ＶＭの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
【０３７６】
いくつかの実施形態では、管理されるスイッチング要素４００５は、論理処理パイプラインのＤＮＡＴ及び負荷分散３８６０を実行した後、Ｌ３ルーティング３８６５を実行する。したがって、管理されるスイッチング要素４００５は、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素３８２０及び３８２５は、エッジスイッチング要素であり、したがって、ＶＭ３８４０及び３８５０との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素４００５は、論理処理パイプラインのＤＮＡＴ及び負荷分散３８６０を実行する前に、Ｌ３ルーティング３８６５を実行する。
【０３７７】
管理されるスイッチング要素４００５の動作は、異なる管理されるスイッチング要素が、論理処理パイプラインの異なる部分を実行することを除いて、図３８を参照して上述した例示的動作と同様である。
【０３７８】
図４１は、サービス（例えば、ウェブサービス）を集合的に提供するマシン間で負荷を分散する負荷分散デーモンを概念的に示す。具体的には、この図は、パケットを論理的に転送及びルーティングするために論理処理パイプラインを実行する管理されるスイッチング要素が、サービスを提供するマシン間でワークロードを分散するための負荷分散デーモンを使用することを示す。この図は、ホスト４１００、管理されるスイッチング要素４１０５、転送テーブル４１２０、負荷分散デーモン４１１０、及び接続テーブル４１１５を、図の上半分に示す。この図は、フローエントリ４１２５及び４１３０を示す。
【０３７９】
フローエントリ４１２５及び４１３０は、それぞれ、クォリファイア及びアクションを有する。フローエントリ４１２５及び４１３０として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。ホスト４１００は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム（例えば、Ｗｉｎｄｏｗｓ（登録商標）及びＬｉｎｕｘ（登録商標））によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素４１０５は、ホスト４１００で実行するソフトウェアスイッチング要素（例えば、Ｏｐｅｎ  ｖＳｗｉｔｃｈ）である。上述したように、コントローラクラスタ（図示せず）は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素４１０５は、それ自体はフローエントリを生成しない。
【０３８０】
いくつかの実施形態の管理されるスイッチング要素４１０５は、図３８〜４０を参照して上述した論理処理パイプラインの全部又は一部を実行する。具体的には、管理されるスイッチング要素４１０５は、転送テーブル４１２０内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするために、Ｌ３処理を実行する。いくつかの実施形態では、管理されるスイッチング要素４１０５は、管理されるスイッチング要素に結合されたマシン（図示せず）からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、１つ又は複数の仮想マシン（図示せず）が、ホスト４１００で動作しており、管理されるスイッチング要素４１０５に結合される。
【０３８１】
管理されるスイッチング要素４１０５が、負荷分散を実行するように構成されている場合、いくつかの実施形態の管理されるスイッチング要素４１０５は、パケットに負荷分散を実行するための負荷分散デーモン４１１０を使用する。負荷分散デーモン４１１０は、負荷分散デーモン４１１０が、変換された宛先アドレス（例えば、宛先ＩＰアドレス）を提供する点で、ＮＡＴデーモン３１１０と同様である。加えて、負荷分散デーモン４１１０は、そのＩＰアドレスがテーブル４１１５に含まれるマシンの現在の負荷に基づいて、元の宛先アドレスを変換する先の宛先を選択する。
【０３８２】
いくつかの実施形態の負荷分散デーモン４１１０は、ホスト４１００上で動作するソフトウェアアプリケーションである。負荷分散デーモン４１１０は、接続テーブル４１１５を保持し、接続テーブル４１１５は、接続識別子と、サービスを提供するマシンの利用可能なアドレスとのペアリングを含む。図示していないが、いくつかの実施形態の接続テーブル４１１５は、アドレスに関連するマシンについて定量化された現在のワークロードを含むこともできる。いくつかの実施形態では、負荷分散デーモン４１１０は、ＶＭへの現在のワークロードを含むＶＭの更新された状態を取得するために、サービスを提供するＶＭと定期的に通信する。
【０３８３】
管理されるスイッチング要素４１０５が、接続識別子に基づいて選択するアドレスを要求すると、負荷分散デーモンは、いくつかの実施形態では、所定の宛先アドレスが変換されるべき先のアドレスを見つけるために、テーブル４１１５をルックアップする。いくつかの実施形態では、負荷分散デーモンは、負荷をいくつかのＶＭ間で分散するために、サーバＶＭを識別するためにスケジューリング方法を実行する。このようなスケジューリングアルゴリズムは、アドレスに関連するマシンへの現在の負荷を考慮する。負荷分散方法のさらなる詳細及び例は、参照により本明細書に組み込まれる米国仮特許出願第６１／５６０，２７９号に記載されている。
【０３８４】
接続識別子は、マシンから戻るパケットが、要求側まで正確に中継され得るように、サービスの要求側（すなわち、パケットの起点又は送信元）と、要求されたサービスを提供することになるマシンとの間の接続を一意的に特定する。これらの戻りパケットの送信元ＩＰアドレスは、サービスを提供するサーバを表すＩＰアドレス（「仮想ＩＰアドレス」と呼ばれる）に変換し戻されることになる。これらの接続識別子間のマッピングは、送信元からその後に送信されるパケットにも使用されることになる。いくつかの実施形態では、接続識別子は、送信元ポート、宛先ポート、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル識別子、などを含む。送信元ポートは、パケットが送信されたポート（例えば、ＴＣＰポート）である。宛先ポートは、パケットを送信すべき先のポートである。プロトコル識別子は、パケットをフォーマットするために使用されるプロトコルのタイプ（例えば、ＴＣＰ、ＵＤＰ、など）を識別する。
【０３８５】
異なる実施形態の管理されるスイッチング要素４１０５及び負荷分散デーモン４１１０は、アドレスを要求し、供給するために、異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素４１０５は、元のアドレスを有するが、変換されたアドレスを持たないパケットを、負荷分散デーモンに送信する。これらの実施形態の負荷分散デーモン４１１０は、元のアドレスを、変換されたアドレスに変換する。負荷分散デーモン４１１０は、管理されるスイッチング要素４１０５にパケットを送信し戻し、管理されるスイッチング要素４１０５は、パケットを宛先マシンに向けて送信するために、論理転送及び／又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素４１０５は、最初に、解決する元のアドレスを含むパケットと共に負荷分散デーモン４１１０にメタデータを送信する。このメタデータは、管理されるスイッチング要素４１０５が、負荷分散デーモン４１１０から戻るパケットを受信するとき、管理されるスイッチング要素４１０５が、論理処理パイプラインの実行を再開するために使用する情報（例えば、レジスタ値、論理パイプライン状態、など）を含む。
【０３８６】
他の実施形態では、いくつかの実施形態の管理されるスイッチング要素４１０５は、フローテンプレートを負荷分散デーモン４１１０に送信することによってアドレスを要求し、フローテンプレートは、アドレスについての実際の値を持たないフローエントリである。負荷分散デーモンは、テーブル４１１５をルックアップすることによって、フローテンプレートに記入するアドレスを見つけ出す。負荷分散デーモン４１１０は、次に、記入されたフローテンプレートを転送テーブル４１２０に入れることによって、実際のアドレスが記入されたフローテンプレートを、管理されるスイッチング要素４１１０に送信し戻す。いくつかの実施形態では、負荷分散デーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。さらに、負荷分散デーモン４１１０が、変換されたアドレスを見つけるのに失敗した場合、負荷分散デーモンは、パケットを破棄するようにフローテンプレートで指定する。
【０３８７】
ここで、管理されるスイッチング要素４１０５及び負荷分散デーモン４１１０の例示的な動作を、３つの異なるステージ１〜３（丸で囲まれた１〜３）に関して説明する。この例では、管理されるスイッチング要素４１１５は、マシン（図示せず）から転送及びルーティングするためにパケットを受信する管理されるエッジスイッチング要素である。具体的には、この例でのパケットは、サービスの要求である。パケットは、要求されたサービスを提供するサーバを表すＩＰアドレスを有する。
【０３８８】
管理されるスイッチング要素４１０５は、このパケットを受信し、転送テーブル４１２０内のフローエントリに基づいてＬ３処理を実行する。パケットにＬ３処理２１０を実行すると同時に、管理されるスイッチング要素４１０５は、（ステージ１で）フローエントリ４１２５を識別し、フローエントリ４１２５で指定されるアクションを実行する。図示のように、フローエントリ４１２５は、負荷分散デーモン４１１０に新しい宛先ＩＰアドレスを提供させるために、接続識別子を有するフローテンプレートが負荷分散デーモン４１１０に送信されるべきであることを示す。この例では、フローエントリ４１２５は、いくつかの実施形態では番号である優先順位の値Ｎを有する。
【０３８９】
ステージ２では、負荷分散デーモン４１１０は、フローテンプレートを受信し、接続テーブル４１１５をルックアップし、スケジューリングアルゴリズムを実行することによって、指定された接続ＩＤを有するパケットの宛先ＩＰアドレスが２．１．１．１０に変換されるべきであることを知る。負荷分散デーモンは、フローテンプレートに記入し、記入されたテンプレート（ここでは、フローエントリ４１３０）を転送テーブル４１３０に挿入する。この例では、負荷分散デーモンは、Ｎ＋１の優先順位を、記入されたテンプレートに割り当てる。
【０３９０】
ステージ３では、管理されるスイッチング要素４１１０は、パケットの宛先ＩＰアドレスを変更するために、フローエントリ４１３０を使用する。また、管理されるスイッチング要素４１１０がその後に処理するパケットのために、管理されるスイッチング要素４１０５は、パケットが指定された接続識別子を有する場合、フローエントリ４１２５の上のフローエントリ４１３０を使用する。
【０３９１】
いくつかの実施形態では、負荷分散デーモン４１１０及び管理されるスイッチング要素は、ホスト４１００で動作している同じ仮想マシンで動作し、又は、ホスト４１００で動作している異なる仮想マシンで動作する。負荷分散デーモン４１１０及び管理されるスイッチング要素は、別々のホストで動作することもできる。
【０３９２】
Ｖ．ＤＨＣＰ
仮想化アプリケーションは、いくつかの実施形態では、共有ホストで動作しているＤＨＣＰデーモンにＤＨＣＰ要求をルーティングする転送ルールを定義する。この機能のために共有ホストを使用することは、顧客ごとのＤＨＣＰデーモンを実行する余分なコストを避ける。
【０３９３】
図４２は、異なるユーザのための異なる論理ネットワークにＤＨＣＰサービスを提供するＤＨＣＰデーモンを示す。この図は、図の左半分に、それぞれ異なる２つのユーザＡ及びＢのための例示的な論理ネットワーク４２０１及び４２０２の実装を示す。論理ネットワーク４２０１及び４２０２の例示的な物理的実装は、図の右半分に示される。
【０３９４】
図の左半分に示すように、論理ネットワーク４２０１は、論理ルータ４２０５、並びに２つの論理スイッチ４２１０及び４２１５を含む。ＶＭ４２２０及びＶＭ４２２５が、論理スイッチ４２１０に接続される。すなわち、ＶＭ４２２０及びＶＭ４２２５は、論理スイッチ４２１０によって転送されたパケットを送受信する。ＶＭ４２３０が、論理スイッチ４２１５に接続される。論理ルータ４２０５は、論理スイッチ４２１０及び４２１５間でパケットをルーティングする。論理ルータ４２０５は、ＤＨＣＰデーモン４２０６にも接続され、ＤＨＣＰデーモン４２０６は、ユーザＡのＶＭである論理ネットワーク４２０１内のＶＭにＤＨＣＰサービスを提供する。
【０３９５】
ユーザＢのための論理ネットワーク４２０２は、論理ルータ４２３５、並びに２つの論理スイッチ４２４０及び４２４５を含む。ＶＭ４２５０及びＶＭ４２５５が、論理スイッチ４２４０に接続される。ＶＭ４２６０が、論理スイッチ４２４５に接続される。論理ルータ４２３５は、論理スイッチ４２４０及び４２４５間でパケットをルーティングする。論理ルータ４２３５は、ＤＨＣＰデーモン４２３６にも接続され、ＤＨＣＰデーモン４２３６は、ユーザＢのＶＭである論理ネットワーク４２０２内のＶＭにＤＨＣＰサービスを提供する。
【０３９６】
図の左半分に示す論理的実装では、ユーザのための各論理ネットワークは、それ自体のＤＨＣＰデーモンを有する。いくつかの実施形態では、ＤＨＣＰデーモン４２０６及び４２３６は、異なるホスト又はＶＭで動作する別々のＤＨＣＰデーモンとして物理的に実装される。すなわち、各ユーザは、ユーザのマシンのみのための別々のＤＨＣＰデーモンを有することになる。
【０３９７】
他の実施形態では、異なるユーザのためのＤＨＣＰデーモンは、ＤＨＣＰサービスを異なるユーザのＶＭに提供する単一のＤＨＣＰデーモンとして物理的に実装されてよい。すなわち、異なるユーザは、同じＤＨＣＰデーモンを共有する。ＤＨＣＰデーモン４２７０は、ユーザＡ及びユーザＢ両方のＶＭのために働く共有ＤＨＣＰデーモンである。図の右半分に示すように、ユーザＡ及びＢのための論理ルータ４２０５及び４２３５並びに論理スイッチ４２１０、４２１５、４２４０、及び４２４５を実装する管理されるスイッチング要素４２７５〜４２８５は、単一のＤＨＣＰデーモン４２７０を使用する。したがって、ユーザＡ及びＢのＶＭ４２２０〜４２６０は、アドレス（例えば、ＩＰアドレス）を動的に取得するために、ＤＨＣＰデーモン４２７０を使用する。
【０３９８】
異なる実施形態のＤＨＣＰデーモン４２７０は、異なるホストで動作してよい。例えば、いくつかの実施形態のＤＨＣＰデーモン４２７０は、管理されるスイッチング要素４２７５〜４２８５の１つが動作している同じホスト（図示せず）で動作する。他の実施形態では、ＤＨＣＰデーモン４２７０は、管理されるスイッチング要素が動作しているホストでは動作せず、代わりに、管理されるスイッチング要素によってアクセス可能な別のホストで動作する。
【０３９９】
図４３は、中央のＤＨＣＰデーモン、及びいくつかのローカルのＤＨＣＰデーモンを示す。中央のＤＨＣＰデーモンは、ローカルのＤＨＣＰデーモンを介して、異なるユーザのＶＭにＤＨＣＰサービスを提供する。各ローカルのＤＨＣＰデーモンは、中央のＤＨＣＰデーモンのサービスをローカルのＤＨＣＰデーモンにオフロードするために、アドレスのバッチを維持し、管理する。この図は、中央のデーモン４３２０、並びに、２つのローカルのＤＨＣＰデーモン４３３０及び４３５０を含む例示的なアーキテクチャを示す。
【０４００】
図示のように、中央のＤＨＣＰデーモン４３２０は、管理されるスイッチング要素４３０６も動作するホスト４３０５で動作する。いくつかの実施形態の管理されるスイッチング要素４３０６は、管理されるスイッチング要素４３４０及び４３６０のためのプールノードとして機能する第２のレベルの管理されるスイッチング要素である。中央のＤＨＣＰデーモン４３２０は、異なるユーザの異なるＶＭ４３４５及び４３６５にＤＨＣＰサービスを提供する。いくつかの実施形態では、中央のＤＨＣＰデーモン４３２０は、ＤＨＣＰサービスをこれらのローカルのＤＨＣＰデーモンにオフロードするために、アドレスのバッチで利用可能なアドレス（例えば、ＩＰアドレス）４３２５を、ローカルのＤＨＣＰデーモン４３３０及び４３５０を含む異なるローカルのＤＨＣＰデーモンに分配する。中央のＤＨＣＰデーモン４３２０は、ローカルのＤＨＣＰデーモンが、それ自体のアドレスのバッチ内の割り当てるために利用可能なアドレスを使い果たした場合、このローカルのＤＨＣＰデーモンにより多くのアドレスを提供する。
【０４０１】
ローカルのＤＨＣＰデーモン４３３０は、管理されるスイッチング要素４３４０も動作するホスト４３１０で動作する。管理されるスイッチング要素４３４０は、ＶＭ４３４５との間で直接パケットを送受信するエッジスイッチング要素である。管理されるスイッチング要素４３４０は、異なるユーザの１つ又は複数の論理スイッチ及び論理ルータを実装する。すなわち、ＶＭ４３４５は、異なるユーザに属する可能性がある。ローカルのＤＨＣＰデーモン４３３０は、ローカルのＤＨＣＰデーモン４３３０が中央のＤＨＣＰデーモン４３２０から取得するアドレスのバッチ４３３５を使用して、ＶＭ４３４５にＤＨＣＰサービスを提供する。ローカルのＤＨＣＰデーモン４３３０は、ローカルのＤＨＣＰデーモン４３３０がアドレスのバッチ４３３５内の割り当てるための利用可能なアドレスを使い果たした場合、中央のＤＨＣＰデーモン４３２０に訴える。いくつかの実施形態では、ローカルのＤＨＣＰデーモン４３３０は、管理されるスイッチング要素４３４０及び４３０６を介して、中央のＤＨＣＰデーモン４３２０と通信する。管理されるスイッチング要素４３４０及び４３０６は、いくつかの実施形態では、これらの間に確立されるトンネルを有する。
【０４０２】
同様に、ローカルのＤＨＣＰデーモン４３５０は、管理されるスイッチング要素４３６０も動作するホスト４３１５で動作する。管理されるスイッチング要素４３６０は、ＶＭ４３６５との間で直接パケットを送受信するエッジスイッチング要素である。管理されるスイッチング要素４３６０は、異なるユーザの１つ又は複数の論理スイッチ及び論理ルータを実装する。ローカルのＤＨＣＰデーモン４３５０は、ローカルのＤＨＣＰデーモン４３５０が中央のＤＨＣＰデーモン４３２０から取得するアドレスのバッチ４３５５を使用して、ＶＭ４３６５にＤＨＣＰサービスを提供する。いくつかの実施形態では、アドレスのバッチ４３５５は、ホスト４３１０で動作するローカルのＤＨＣＰデーモンに割り当てられたアドレスのバッチ４３３５内にあるアドレスを含まない。ローカルのＤＨＣＰデーモン４３５０も、ローカルのＤＨＣＰデーモン４３５０がアドレスのバッチ４３５５中の利用可能な割り当てるためのアドレスを使い果たした場合、中央のＤＨＣＰデーモン４３２０に訴える。いくつかの実施形態では、ローカルのＤＨＣＰデーモン４３５０は、管理されるスイッチング要素４３６０及び４３０６を介して、中央のＤＨＣＰデーモン４３２０と通信する。管理されるスイッチング要素４３６０及び４３０６は、いくつかの実施形態では、これらの間に確立されるトンネルを有する。
【０４０３】
ＶＩ．介在するサービスＶＭ
上記の説明では、いくつかの実施形態の仮想化アプリケーションによって提供される様々なＬ３サービスが記載されている。ネットワーク制御システムの柔軟性を最大化するために、いくつかの実施形態は、ユーザが物理ネットワークで今日使用している「ミドルボックス」によって提供されるものと同様の機能を提供するサービスマシンを介在させる。
【０４０４】
したがって、いくつかの実施形態のネットワーク制御システムは、論理ネットワークのＬＤＰＳに取り付けられる少なくとも１つの「ミドルボックス」ＶＭを含む。次に、ＬＤＰセットのパイプライン状態は、関連するパケットが、このＶＭの論理ポートに転送されるように、（論理制御プレーンをポピュレートする）制御アプリケーションによってプログラムされる。ＶＭがパケットを処理した後、パケットは、その転送が論理ネットワークを介して続くように、論理ネットワークに送り返される。いくつかの実施形態では、ネットワーク制御システムは、多くのこのような「ミドルボックス」ＶＭを利用する。このように介在されるミドルボックスＶＭは、非常にステートフルであり、この文書に記載されたＬ３サービスを超えた機能を実装することができる。
【０４０５】
ＶＩＩ．スケーラビリティ
３つの局面に沿ったいくつかの実施形態の論理Ｌ３スイッチング設計のスケーラビリティの意味は、以下のように対処される。これらの３つの局面は、（１）論理状態、（２）物理的なトンネリング状態、及び（３）分散型結合ルックアップである。論理パイプライン処理の大部分が、第１のホップで発生する。これは、すべての相互接続されたＬＤＰセットのすべての論理（テーブル）状態が、いくつかの実施形態では、パイプラインの実行を行うことができるネットワーク内のどこにでも配布されることを意味する。すなわち、すべての相互接続されたＬＤＰセットの結合された論理状態が、いくつかの実施形態では、これらのＬＤＰセットのいずれかに取り付けられたすべての管理されるエッジスイッチング要素に配布される。しかしながら、いくつかの実施形態では、論理トポロジの「メッシュ性（ｍｅｓｈｉｎｅｓｓ）」が、論理状態の配布負荷を増加させない。
【０４０６】
状態の配布を制限するために、いくつかの実施形態は、最後のＬＤＰＳパイプラインが第１のホップではなく最後のホップで実行されることになるように、送信元及び宛先デバイス間でパイプラインの実行を分散させる。しかしながら、いくつかの場合では、これは、結果として、最後のＬＤＰＳの論理転送決定を行うために、すべての管理されるスイッチング要素について状態を十分に配布せず、この状態なしでは、送信元の管理されるスイッチング要素は、宛先の管理されるスイッチング要素にパケットを配信することさえできない可能性がある。したがって、いくつかの実施形態は、送信元及び宛先デバイスにパイプラインの実行を分散するために、一般的なＬＤＰＳモデルを制限することになる。
【０４０７】
いくつかの実施形態では、今日使用される物理制御プレーンをまねるために、論理制御プレーンが設計されているように、論理状態自体は、多くてもＯ（Ｎ）エントリ（Ｎは、相互接続されているＬＤＰセット内の論理ポートの総数である）より多くのエントリをおそらく含まず、物理制御プレーンは、既存のハードウェアスイッチングチップセットの能力によって制限される。したがって、論理状態の配布は、システムの主要なボトルネックではない可能性があるが、論理制御プレーンの設計が大きくなると、最終的には、１つのボトルネックになる可能性がある。
【０４０８】
いくつかの実施形態は、ネットワークの管理されるスイッチング要素を、より高いレベルの集合体スイッチング要素によって相互接続されたクリークに分割する。「すべてが最初のホップ上」モデルで論理状態を減少させるために、分割を実装する代わりに、いくつかの実施形態は、後述するように、トンネル状態を減少させるように分割する。クリークの例は、上述の米国特許出願１３／１７７，５３５号に記載されている。この出願は、最初のホップの管理されるスイッチング要素で論理データ処理のすべて又は大部分を実行する様々な実施形態も記載している。
【０４０９】
システム全体で維持される物理トンネル状態は、Ｏ（Ｎ２）であり、ここで、Ｎは、相互接続されたＬＤＰセット全体内の論理ポートの数である。これは、論理ポートを有するどのような管理されるエッジスイッチング要素も、宛先の管理されるエッジスイッチング要素にトラフィックを直接送信することができなければならないためである。したがって、Ｏ（Ｎ２）負荷を任意の集中型制御要素にかけることなく、効率的にトンネル状態を維持することは、純粋なＬ２ＬＤＰセットでより重要にさえなる。集合体スイッチング要素は、いくつかの実施形態では、ネットワークをクリークにスライスするために使用される。これらの実施形態のいくつかでは、パケットは、依然として、ずっと送信元の管理されるエッジスイッチング要素で論理的にルーティングされるが、パケットを、宛先のエッジスイッチング要素に直接トンネリングする代わりに、プールノードに送信し、プールノードは、宛先ＭＡＣアドレスに基づいて宛先に向けてパケットをルーティングする。本質的には、最後のＬ２ＬＤＰＳは、複数のクリークにまたがり、プールノードは、そのＬ２ドメインの部分を縫い合わせるために使用される。
【０４１０】
図４４〜４５Ｂは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素で実装される分散型論理ルータを示す。具体的には、図４４〜４５Ｂは、宛先Ｌ２処理の一部が、最後のホップの管理されるスイッチング要素（すなわち、パケットを直接宛先マシンに送信するスイッチング要素）によって実行されることを示す。
【０４１１】
図４４は、最後のホップのスイッチング要素で一部の論理的処理を実行する一例を概念的に示す。具体的には、図４４は、パケットの送信元マシンに結合された管理されるスイッチング要素２５０５が、論理処理パイプライン２００の大部分を実行し、宛先マシンに結合された管理されるスイッチング要素２５１０が、論理処理パイプライン２００の一部を実行することを示す。図は、図の左半分に論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。図は、図の右半分に管理されるスイッチング要素２５０５及び２５１０を示す。図は、図の右半部及び左半分の両方にＶＭ１〜４を示す。
【０４１２】
いくつかの実施形態では、管理されるスイッチング要素は、論理処理パイプライン２００の全体を実行するために、すべての情報（例えば、ルックアップテーブル内のフローエントリ）を保持しない。例えば、これらの実施形態の管理されるスイッチング要素は、パケットをパケットの宛先マシンに送信するために介する宛先論理ネットワークの論理ポートに対するアクセス制御を決定するための情報を保持しない。
【０４１３】
管理されるスイッチング要素２５０５及び２５１０に沿った例示的なパケットフローをここで説明する。論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、次に、Ｌ２処理２０５及びＬ３処理２１０をパケットに実行する。
【０４１４】
管理されるスイッチング要素２５０５は、次に、Ｌ２処理２１５の一部を実行する。具体的には、管理されるスイッチング要素２５０５は、パケットのアクセス制御を決定する。例えば、管理されるスイッチング要素２５０５は、パケットが、論理スイッチ２３０に、論理スイッチ２３０のポートＹを通ってきたパケットを拒絶させることになるネットワークアドレス（例えば、送信元／宛先ＭＡＣ／ＩＰアドレス、など）を持っていないことを判断する。管理されるスイッチング要素２５０５は、次に、論理スイッチ２３０のポート１が、宛先であるＶＭ４にパケットを送出するポートであることを判断する。しかしながら、管理されるスイッチング要素２５０５は、いくつかの実施形態では、出口ＡＣＬ２６７０を実行するための情報（例えば、フローエントリ）を持たないため、管理されるスイッチング要素２５０５は、論理スイッチ２３０のポート１に対するパケットのアクセス制御を決定しない。
【０４１５】
管理されるスイッチング要素２５０５は、次に、論理スイッチ２３０の論理ポート１がマッピングされる先の物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、論理スイッチ２３０の論理ポート１が、管理されるスイッチング要素２５１０のポート５にマッピングされると判定する。管理されるスイッチング要素２５０５は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素２５０５は、パケットが、管理されるスイッチング要素２５１０のポート５を介してＶＭ４に送信されるべきであると判断する。この例での管理されるスイッチング要素２５０５は、パケットの論理コンテキストを、パケットと共にＶＭ４に送信する前に変更する。
【０４１６】
管理されるスイッチング要素２５０５は、管理されるスイッチング要素２５１０にパケットを送信する。いくつかの場合、管理されるスイッチング要素２５０５は、管理されるスイッチング要素２５０５及び２５１０間に確立されるトンネル（例えば、管理されるスイッチング要素２５０５のポート３及び管理されるスイッチング要素２５１０のポート３で終端するトンネル）を介してパケットを送信する。トンネルを利用できない場合、管理されるスイッチング要素２５０５は、パケットが管理されるスイッチング要素２５１０に到達することができるように、プールノード（図示せず）にパケットを送信する。
【０４１７】
管理されるスイッチング要素２５１０がパケットを受信すると、管理されるスイッチング要素２５１０は、パケットの論理コンテキストに基づいて（論理コンテキストは、出口ＡＣＬ２６７０が、パケットに実行されるために残っていることを示すことになる）、出口ＡＣＬ２６７０をパケットに実行する。例えば、管理されるスイッチング要素２５１０は、パケットが、論理スイッチ２３０に、論理スイッチ２３０のポート１を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。管理されるスイッチング要素２５１０は、次に、Ｌ２処理２１５を実行した管理されるスイッチング要素２５０５によって決定されたように、管理されるスイッチング要素２５１０のポート５を介してＶＭ４にパケットを送信する。
【０４１８】
図４５Ａ〜４５Ｂは、図４４を参照して上述した論理スイッチ２２０及び２３０、論理ルータ２２５、並びに管理されるスイッチング要素２５０５及び２５１０の例示的な動作を概念的に示す。具体的には、図４５Ａは、論理ルータ２２５、論理スイッチ２２０、及び、論理ルータ２３０の一部を実装する管理されるスイッチング要素２５０５の動作を示す。図４５Ｂは、論理スイッチ２３０の一部を実装する管理されるスイッチング要素２５１０の動作を示す。
【０４１９】
図４５Ａの下半分に示すように、管理されるスイッチング要素２５０５は、Ｌ２エントリ４５０５及び４５１５、並びにＬ３エントリ４５１０を含む。これらのエントリは、コントローラクラスタ（図示せず）が管理されるスイッチング要素２５０５に供給するフローエントリである。これらのエントリは、３つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【０４２０】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケット４５３０を送信すると、パケットは、最初に、管理されるスイッチング要素２５０５のポート４を介して、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、管理されるスイッチング要素２５０５の転送テーブル４５０５〜４５１５に基づいて、パケットにＬ２処理を実行する。この例では、パケット４５３０は、ＶＭ４のＩＰアドレスである、１．１．２．１０の宛先ＩＰアドレスを有する。パケット４５３０の送信元ＩＰアドレスは、１．１．１．１０である。パケット４５３０は、また、ＶＭ１のＭＡＣアドレスを、送信元ＭＡＣアドレスとして有し、論理ルータ２２５の論理ポート１のＭＡＣアドレス（例えば、０１：０１：０１：０１：０１：０１）を、宛先ＭＡＣアドレスとして有する。
【０４２１】
管理されるスイッチング要素２５０５の動作は、図４５Ａの例での管理されるスイッチング要素２５０５がパケット４５３０に実行されることを除いて、管理されるスイッチング要素が、丸で囲まれた９を識別し、Ｌ２論理処理２６６５を実行するまでは、図３０Ａの例での管理されるスイッチング要素２５０５の動作と同様である。
【０４２２】
パケット４５３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、次に、ステージ２６７５のコンテキストマッピングを実装するＬ２エントリ４５１５内の丸で囲まれた１０によって示されるレコード（「レコード１０」と呼ぶ）を識別する。この例では、レコード１０は、ＶＭ４が結合される管理されるスイッチング要素２５１０のポート５を、パケット４５３０が転送されるべき論理スイッチ２３０の論理ポート（ステージ２６６５で決定される）に対応するポートとして識別する。レコード１０は、加えて、パケット４５３０が、転送テーブルによって（例えば、パケット４５３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０４２３】
パケット４５３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、次に、ステージ２６８０の物理マッピングを実装するＬ２エントリ４５１５内の丸で囲まれた１１によって示されるレコード（「レコード１１」と呼ぶ）を識別する。レコード１１は、パケット４５３０が管理されるスイッチング要素２５１０に到達するために、パケット４５３０が送信されるべきポートとして、管理されるスイッチング要素２５０５のポート３を指定する。この場合では、管理されるスイッチング要素２５０５は、パケット４５３０を、管理されるスイッチング要素２５１０に結合される管理されるスイッチング要素２５０５のポート３から送出することになる。
【０４２４】
図４５Ｂに示すように、管理されるスイッチング要素２５１０は、パケット４５３０を処理し、ルーティングするためのルール（例えば、フローエントリ）を含む転送テーブルを含む。管理されるスイッチング要素２５１０が、管理されるスイッチング要素８０５からパケット４５３０を受信すると、管理されるスイッチング要素２５１０は、管理されるスイッチング要素２５１０の転送テーブルに基づいて、パケット４５３０の処理を開始する。管理されるスイッチング要素２５１０は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた１によって示されるレコード（「レコード１」と呼ぶ）を識別する。レコード１は、パケット４５３０のヘッダに格納された論理コンテキストに基づいて、パケット４５３０の論理コンテキストを識別する。論理コンテキストは、パケット４５３０が、管理されるスイッチング要素８０５によってステージ２６６５まで処理されていることを指定する。このように、レコード１は、パケット４５３０が、転送テーブルによって（例えば、パケット４５３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０４２５】
次に、管理されるスイッチング要素２５１０は、パケット４５３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、出口ＡＣＬを実装する転送テーブル内の丸で囲まれた２によって示されるレコード（「レコード２」と呼ぶ）を識別する。この例では、レコード２は、パケット４５３０がさらに処理されることを可能にし、したがって、パケット４５３０が、転送テーブルによって（例えば、パケット４５３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード２は、管理されるスイッチング要素２５１０が、パケット４５３０の論理コンテキスト（すなわち、パケット４５３０は、論理スイッチ２３０のＬ２出口ＡＣＬについて処理されている）を、パケット４５３０のヘッダのフィールドのセットに格納することを指定する。
【０４２６】
次に、管理されるスイッチング要素２５１０は、パケット４５３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた３によって示されるレコード（「レコード３」と呼ぶ）を識別する。レコード３は、パケット４５３０がＶＭ４に到達するために、パケット４５３０が通って送信されるべき管理されるスイッチング要素２５１０のポート５を指定する。この場合では、管理されるスイッチング要素２５１０は、パケット４５３０を、ＶＭ４に結合される管理されるスイッチング要素２５１０のポート５から送出することになる。いくつかの実施形態では、管理されるスイッチング要素２５１０は、パケットをＶＭ４に送信する前に、パケット４５３０から論理コンテキストを除去する。
【０４２７】
図４６〜４７Ｂは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素で実装される分散型論理ルータを示す。具体的には、図４６〜４７Ｂは、送信元Ｌ２処理２０５及びＬ３処理２１０が、最初のホップの管理されるスイッチング要素（すなわち、送信元マシンからパケットを直接受信するスイッチング要素）によって実行され、宛先Ｌ２処理２１５全体が、最後のホップの管理されるスイッチング要素（すなわち、パケットを直接宛先マシンに送信するスイッチング要素）によって実行されることを示す。
【０４２８】
図４６は、最後のホップのスイッチング要素で一部の論理的処理を実行する一例を概念的に示す。具体的には、図４６は、パケットの送信元マシンに結合された管理されるスイッチング要素２５０５が、Ｌ２処理２０５及びＬ３処理２１０を実行し、宛先マシンに結合された管理されるスイッチング要素２５１０が、Ｌ２処理２１５を実行することを示す。すなわち、管理されるスイッチング要素２５０５は、送信元論理ネットワークに関するＬ２転送、及びＬ３ルーティングを実行し、宛先論理ネットワークに関するＬ２転送は、管理されるスイッチング要素２５１０によって実行される。図は、図の左半分に論理ルータ２２５並びに論理スイッチ２２０及び２３０を示す。図は、図の右半分に管理されるスイッチング要素２５０５及び２５１０を示す。図は、図の右半部及び左半分の両方にＶＭ１〜４を示す。
【０４２９】
いくつかの実施形態では、管理されるスイッチング要素は、論理処理パイプライン２００の全体を実行するために、すべての情報（例えば、ルックアップテーブル内のフローエントリ）を保持しない。例えば、これらの実施形態の管理されるスイッチング要素は、宛先論理ネットワークに関する論理転送をパケットに実行するための情報を保持しない。
【０４３０】
管理されるスイッチング要素２５０５及び２５１０に沿った例示的なパケットフローをここで説明する。論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、次に、Ｌ２処理２０５及びＬ３処理２１０をパケットに実行する。
【０４３１】
管理されるスイッチング要素２５０５は、次に、管理されるスイッチング要素２５１０にパケットを送信する。いくつかの場合、管理されるスイッチング要素２５０５は、管理されるスイッチング要素２５０５及び２５１０間に確立されるトンネル（例えば、管理されるスイッチング要素２５０５のポート３及び管理されるスイッチング要素２５１０のポート３で終端するトンネル）を介してパケットを送信する。トンネルを利用できない場合、管理されるスイッチング要素２５０５は、パケットが管理されるスイッチング要素２５１０に到達することができるように、プールノード（図示せず）にパケットを送信する。
【０４３２】
管理されるスイッチング要素２５１０がパケットを受信すると、管理されるスイッチング要素２５１０は、パケットの論理コンテキストに基づいて（論理コンテキストは、パケットに実行されるために残っているのが、Ｌ２処理２１５全体であることを示すことになる）、Ｌ２処理２１５をパケットに実行する。管理されるスイッチング要素２５１０は、次に、管理されるスイッチング要素２５１０のポート５を介してＶＭ４にパケットを送信する。
【０４３３】
図４７Ａ〜４７Ｂは、図４６を参照して上述した論理スイッチ２２０及び２３０、論理ルータ２２５、並びに管理されるスイッチング要素２５０５及び２５１０の例示的な動作を概念的に示す。具体的には、図４７Ａは、論理スイッチ２２０及び論理ルータ２２５を実装する管理されるスイッチング要素２５０５の動作を示す。図４７Ｂは、論理スイッチ２３０を実装する管理されるスイッチング要素２５０５の動作を示す。
【０４３４】
図４７Ａの下半分に示すように、管理されるスイッチング要素２５０５は、Ｌ２エントリ４７０５及びＬ３エントリ４７１０を含む。これらのエントリは、コントローラクラスタ（図示せず）が管理されるスイッチング要素２５０５に供給するフローエントリである。これらのエントリは、２つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【０４３５】
論理スイッチ２２０に結合されたＶＭ１が、論理スイッチ２３０に結合されたＶＭ４にパケット４７３０を送信すると、パケットは、最初に、管理されるスイッチング要素２５０５のポート４を介して、管理されるスイッチング要素２５０５に送信される。管理されるスイッチング要素２５０５は、管理されるスイッチング要素２５０５の転送テーブル４７０５〜４７１０に基づいて、パケットにＬ２処理を実行する。この例では、パケット４７３０は、ＶＭ４のＩＰアドレスである、１．１．２．１０の宛先ＩＰアドレスを有する。パケット４７３０の送信元ＩＰアドレスは、１．１．１．１０である。パケット４７３０は、また、ＶＭ１のＭＡＣアドレスを、送信元ＭＡＣアドレスとして有し、論理ルータ２２５の論理ポート１のＭＡＣアドレス（例えば、０１：０１：０１：０１：０１：０１）を、宛先ＭＡＣアドレスとして有する。
【０４３６】
管理されるスイッチング要素２５０５の動作は、管理されるスイッチング要素が、丸で囲まれた７を識別し、論理ルータ２２５のポート２に対してＬ３出口ＡＣＬを実行するまで、図４７Ａの例での管理されるスイッチング要素２５０５がパケット４７３０に実行されることを除いて、図４７Ａの例での管理されるスイッチング要素２５０５の動作と同様である。
【０４３７】
パケット４７３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、次に、ステージ２６８０の物理マッピングを実装するＬ２エントリ４７１０内の丸で囲まれた８によって示されるレコード（「レコード８」と呼ぶ）を識別する。レコード８は、論理スイッチ２３０が、管理されるスイッチング要素２５１０に実装され、パケットが、管理されるスイッチング要素２５１０に送信されるべきであることを指定する。
【０４３８】
パケット４７３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、次に、ステージ２６８０の物理マッピングを実装するＬ２エントリ４７１５内の丸で囲まれた９によって示されるレコード（「レコード９」と呼ぶ）を識別する。レコード９は、パケット４７３０が管理されるスイッチング要素２５１０に到達するために、パケット４７３０が通って送信されるべきポートとして、管理されるスイッチング要素２５０５のポート３を指定する。この場合では、管理されるスイッチング要素２５０５は、パケット４７３０を、管理されるスイッチング要素２５１０に結合される管理されるスイッチング要素２５０５のポート３から送出することになる。
【０４３９】
図４７Ｂに示すように、管理されるスイッチング要素２５１０は、パケット４７３０を処理し、ルーティングするためのルール（例えば、フローエントリ）を含む転送テーブルを含む。管理されるスイッチング要素２５１０が、管理されるスイッチング要素２５１０からパケット４７３０を受信すると、管理されるスイッチング要素２５１０は、管理されるスイッチング要素２５１０の転送テーブルに基づいて、パケット４７３０の処理を開始する。管理されるスイッチング要素２５１０は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた１によって示されるレコード（「レコード１」と呼ぶ）を識別する。レコード１は、パケット４７３０のヘッダに格納された論理コンテキストに基づいて、パケット４７３０の論理コンテキストを識別する。論理コンテキストは、Ｌ２処理２０５及びＬ３処理２１０が、管理されるスイッチング要素８１０によってパケット４７３０に実行されていることを指定する。レコード１は、パケット４７３０が、転送テーブルによって（例えば、パケット４７３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０４４０】
パケット４７３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５１０は、Ｌ２入口ＡＣＬを実装するＬ２転送テーブル内の丸で囲まれた２によって示されるレコード（「レコード２」と呼ぶ）を識別する。この例では、レコード２は、パケット４７３０が、論理スイッチ２３０（図示せず）の論理ポートＹを通ってくることを可能にし、したがって、パケット４７３０が、管理されるスイッチング要素２５１０によって（例えば、パケット４７３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード２は、管理されるスイッチング要素２５１０が、パケット４７３０の論理コンテキスト（すなわち、パケット４７３０は、処理パイプライン４７００のステージ４７６２によって処理されている）を、パケット４７３０のヘッダのフィールドのセットに格納することを指定する。
【０４４１】
次に、管理されるスイッチング要素２５１０は、パケット４７３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、論理Ｌ２転送を実装するＬ２転送テーブル内の丸で囲まれた３によって示されるレコード（「レコード３」と呼ぶ）を識別する。レコード３は、ＶＭ４のＭＡＣアドレスを宛先ＭＡＣアドレスとして有するパケットが、ＶＭ４に接続された論理スイッチ２３０の論理ポート２を介して転送されるべきであることを指定する。
【０４４２】
レコード３は、また、パケット４７３０が、転送テーブルによって（例えば、パケット４７３０をディスパッチポートに送信することによって）さらに処理されることを指定する。また、レコード３は、管理されるスイッチング要素２５１０が、論理コンテキスト（すなわち、パケット４７３０は、処理パイプライン４７００のステージ４７６６によって処理されている）を、パケットのフィールドのセットに格納することを指定する。
【０４４３】
次に、管理されるスイッチング要素２５１０は、パケット４７３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、出口ＡＣＬを実装する転送テーブル内の丸で囲まれた４によって示されるレコード（「レコード４」と呼ぶ）を識別する。この例では、レコード４は、パケット４７３０がさらに処理されることを可能にし、したがって、パケット４７３０が、転送テーブルによって（例えば、パケット４７３０をディスパッチポートに送信することによって）さらに処理されることを指定する。加えて、レコード４は、管理されるスイッチング要素２５１０が、パケット４７３０の論理コンテキスト（すなわち、パケット４７３０は、論理スイッチ２３０のＬ２出口ＡＣＬについて処理されている）を、パケット４７３０のヘッダのフィールドのセットに格納することを指定する。
【０４４４】
パケット４７３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、管理されるスイッチング要素２５０５は、次に、コンテキストマッピングを実装するＬ２エントリ４７１５内の丸で囲まれた５によって示されるレコード（「レコード５」と呼ぶ）を識別する。この例では、レコード５は、ＶＭ４が結合される管理されるスイッチング要素２５１０のポート５を、パケット４７３０が転送されるべき論理スイッチ２３０の論理ポート２に対応するポートとして識別する。レコード５は、加えて、パケット４７３０が、転送テーブルによって（例えば、パケット４７３０をディスパッチポートに送信することによって）さらに処理されることを指定する。
【０４４５】
次に、管理されるスイッチング要素２５１０は、パケット４７３０のヘッダに格納された論理コンテキスト及び／又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた６によって示されるレコード（「レコード６」と呼ぶ）を識別する。レコード６は、パケット４７３０がＶＭ４に到達するために、パケット４７３０が通って送信されるべき管理されるスイッチング要素２５１０のポート５を指定する。この場合では、管理されるスイッチング要素２５１０は、パケット４７３０を、ＶＭ４に結合される管理されるスイッチング要素２５１０のポート５から送出することになる。いくつかの実施形態では、管理されるスイッチング要素２５１０は、パケットをＶＭ４に送信する前に、パケット４７３０から論理コンテキストを除去する。
【０４４６】
パケットの論理パス上のすべてのパイプラインの実行は、分散ルックアップ、すなわち、ＡＲＰ及び学習に意味を有する。ここで、ルックアップは、論理ネットワークに取り付けられた論理ポートを有する任意のエッジスイッチング要素によって実行することができるため、ルックアップの総量は、同様の物理トポロジ上で実行されるルックアップを超えることになり、パケットが、同じポートに向かうにも関わらず、ルックアップは、異なる管理されるエッジスイッチング要素上で開始されることになるため、異なる送信元は、キャッシュされたルックアップ状態を共有することができない。したがって、フラッディングの問題は、論理トポロジによって増幅され、ルックアップのためのユニキャストマッピングベースのアプローチが、実際には好ましい。
【０４４７】
マッピングサーバ（例えば、プール又はルートノード）のクラウドに向けて、特別なルックアップパケットを送信することによって、送信元エッジスイッチング要素は、フラッディングに頼ることなく、必要なルックアップを行うことができる。いくつかの実施形態では、マッピングサーバは、大量のトラフィック集合の局所性（したがって、クライアント側の良好なキャッシュヒット率）からだけでなく、結果として優れたスループットをもたらすデータパスのみの実装から利益を得る。
【０４４８】
図４８は、管理されるスイッチング要素が動作するホスト４８００の例示的なソフトウェアアーキテクチャを概念的に示す。具体的には、この図は、ホスト４８００が、Ｌ３デーモンも実行し、Ｌ３デーモンは、Ｌ３デーモンが管理されるスイッチング要素から受信するパケットのために、Ｌ３アドレス（例えば、ＩＰアドレス）をＬ２アドレス（例えば、ＭＡＣアドレス）に解決することを示す。この図は、ホスト４８００が、管理されるスイッチング要素４８０５、転送テーブル４８２０、Ｌ３デーモン４８１０、及びマッピングテーブル４８１５を含むことを、図の上半分に示す。この図は、フローエントリ４８２５及び４８３０も示す。
【０４４９】
フローエントリ４８２５及び４８３０は、それぞれ、クォリファイア及びアクションを有する。フローエントリ４８２５及び４８３０として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。いくつかの実施形態では、フローエントリは、優先順位を有し、管理されるスイッチング要素は、２つ以上のフローエントリのクォリファイアが満たされる場合、最も高い優先順位でフローエントリのアクションを行う。
【０４５０】
ホスト４８００は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム（例えば、Ｗｉｎｄｏｗｓ（登録商標）及びＬｉｎｕｘ（登録商標））によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素４８０５は、ホスト４８００で実行するソフトウェアスイッチング要素（例えば、Ｏｐｅｎ  ｖＳｗｉｔｃｈ）である。上述したように、コントローラクラスタ（図示せず）は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素４８０５は、それ自体はフローエントリ及びＡＲＰ要求を生成しない。
【０４５１】
いくつかの実施形態の管理されるスイッチング要素４８０５は、上述した論理処理パイプライン２００の全部又は一部を実行する。具体的には、管理されるスイッチング要素４８０５は、転送テーブル４８２０内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするために、Ｌ３処理２１０を実行する管理されるスイッチング要素（例えば、管理されるスイッチング要素１７２０又は２５０５）である。いくつかの実施形態では、管理されるスイッチング要素４８０５は、管理されるスイッチング要素に結合されたマシン（図示せず）からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、１つ又は複数の仮想マシン（図示せず）が、ホスト４８００で動作しており、管理されるスイッチング要素４８０５に結合される。他の実施形態では、管理されるスイッチング要素は、第２のレベルの管理されるスイッチング要素である。
【０４５２】
管理されるスイッチング要素４８０５が、別の論理ネットワーク内にある宛先マシンに送信されている初めてのパケットであるパケットを受信する（又は、パケット自体が、ＡＲＰ要求である）場合、これらの実施形態の管理されるスイッチング要素４８０５は、宛先マシンのＭＡＣアドレスをまだ知らないことになる。すなわち、管理されるスイッチング要素４８０５は、ネクストホップＩＰアドレス及び宛先ＭＡＣアドレス間のマッピングを知らないことになる。ネクストホップＩＰアドレスを宛先ＭＡＣアドレスに解決するために、いくつかの実施形態の管理されるスイッチング要素４８０５は、Ｌ３デーモン４８１０からのパケットの宛先ＭＡＣアドレスを要求する。
【０４５３】
いくつかの実施形態のＬ３デーモン４８１０は、ホスト４８００上で動作するソフトウェアアプリケーションである。Ｌ３デーモン４８１０は、ＩＰ及びＭＡＣアドレスのマッピングを含むテーブル４８１５を保持する。管理されるスイッチング要素４８０５が、ネクストホップＩＰアドレスに対応する宛先ＭＡＣアドレスを要求すると、Ｌ３デーモンは、送信元ＩＰアドレスがマッピングされる宛先ＭＡＣアドレスを見つけるために、マッピングテーブル４８１５をルックアップする。（いくつかの場合、送信元ＩＰアドレスがマッピングされる宛先ＭＡＣアドレスは、ネクストホップ論理ルータのＭＡＣアドレスである。）
【０４５４】
異なる実施形態の管理されるスイッチング要素４８０５及びＬ３デーモン４８１０は、アドレスを要求し、供給するために異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素４８０５は、宛先ＩＰアドレスを有するが、宛先ＭＡＣアドレスを持たないパケットを、Ｌ３デーモンに送信する。これらの実施形態のＬ３デーモン４８１０は、ＩＰアドレスを、宛先ＭＡＣアドレスに解決する。Ｌ３デーモン４８１０は、管理されるスイッチング要素４８０５にパケットを送信し戻し、管理されるスイッチング要素４８０５は、パケットを宛先マシンに向けて送信するために、論理転送及び／又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素４８０５は、最初に、メタデータを、解決する宛先ＩＰアドレスを含むパケットと共にＬ３デーモン４８１０に送信する。このメタデータは、管理されるスイッチング要素４８０５が、Ｌ３デーモン４８１０から戻るパケットを受信するとき、管理されるスイッチング要素４８０５が、論理処理パイプラインの実行を再開するために使用する情報（例えば、レジスタ値、論理パイプライン状態、など）を含む。
【０４５５】
他の実施形態では、管理されるスイッチング要素４８０５は、フローテンプレートをＬ３デーモン４８１０に送信することによって宛先アドレスを要求し、フローテンプレートは、宛先ＭＡＣアドレスについての実際の値を持たないフローエントリである。Ｌ３デーモン４８１０は、マッピングテーブル４８１５をルックアップすることによって、フローテンプレートに記入する宛先ＭＡＣアドレスを見つけ出す。Ｌ３デーモン４８１０は、次に、記入されたフローテンプレートを転送テーブル４８２０に入れることによって、実際の宛先ＭＡＣアドレスが記入されたフローテンプレートを、管理されるスイッチング要素４８１０に送信し戻す。いくつかの実施形態では、Ｌ３デーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。
【０４５６】
マッピングテーブル４８１５が、宛先ＩＰアドレスのためのエントリを有し、エントリが、宛先ＩＰアドレスにマッピングされた宛先ＭＡＣアドレスを有する場合、Ｌ３デーモン４８１０は、パケットに書き込む、又はフローテンプレートに記入するために、宛先ＭＡＣアドレスを使用する。このようなエントリがない場合、Ｌ３デーモンは、ＡＲＰ要求を生成し、Ｌ３デーモンを実行する他のホスト又はＶＭに、ＡＲＰパケットを同時通信する。具体的には、いくつかの実施形態のＬ３デーモンは、ネクストホップ論理Ｌ３ルータが取り付けられ得るこれらのホスト又はＶＭにＡＲＰ要求を送信するだけである。Ｌ３デーモンは、ＡＲＰパケットに対する応答を受信し、応答は、ＡＲＰパケットを受信したホスト又はＶＭの１つからの宛先ＭＡＣアドレスを含む。Ｌ３デーモン４８１０は、宛先ＩＰアドレスを宛先ＭＡＣアドレスにマッピングし、このマッピングをマッピングテーブル４８１５に追加する。いくつかの実施形態では、Ｌ３デーモン４８１０は、宛先ＭＡＣアドレスの有効性をチェックするために、ＡＲＰ要求に応答する別のＬ３デーモンに、ユニキャストパケットを定期的に送信する。このようにして、Ｌ３デーモン４８１０は、ＩＰ及びＭＡＣアドレスマッピングを最新に保つ。
【０４５７】
いくつかの実施形態では、Ｌ３デーモン４８１０が、フローエントリをルックアップし、ＡＲＰ要求を別のＬ３デーモンインスタンスに送信した後、解決されたアドレスを見つけるのに依然として失敗する場合、Ｌ３デーモンは、フローテンプレートで、パケットを破棄するように指定し、又は、Ｌ３デーモン自体が、パケットを破棄することになる。
【０４５８】
管理されるスイッチング要素４８０５が、別のホスト又はＶＭからＡＲＰパケットを受信すると、いくつかの実施形態の管理されるスイッチング要素４８０５は、管理されるスイッチング要素に結合されたマシンにＡＲＰパケットを転送しない。これらの実施形態の管理されるスイッチング要素４８００は、ＡＲＰパケットをＬ３デーモンに送信する。Ｌ３デーモンは、局所的に利用可能なＩＰアドレス及びＭＡＣアドレス（例えば、管理されるスイッチング要素４８０５に結合されたマシンのＩＰアドレス及びＭＡＣアドレス）間をマッピングするマッピングテーブル４８１５を保持する。マッピングテーブル４８１５が、受信されたＡＲＰパケットのＩＰアドレスのためのエントリを有し、エントリが、管理されるスイッチング要素４８０５に結合されたＶＭのＭＡＣアドレスを有する場合、Ｌ３デーモンは、ＡＲＰパケットに応じて、ＡＲＰパケットが由来するホスト又はＶＭ（すなわち、ホスト又はＶＭのＬ３デーモン）にＭＡＣアドレスを送信する。
【０４５９】
ここで、管理されるスイッチング要素４８０５及びＬ３デーモン４８１０の例示的な動作を、３つの異なるステージ１〜３（丸で囲まれた１〜３）に関して説明する。この例では、管理されるスイッチング要素４８０５は、転送及びルーティングするパケットをマシン（図示せず）から受信する管理されるエッジスイッチング要素である。管理されるスイッチング要素４８０５は、パケットを受信し、転送テーブル４８２０内のフローエントリに基づいて、論理処理２００を実行する。
【０４６０】
パケットが、宛先マシンのＩＰアドレスを持つ最初のパケットである場合、又は、パケットが、送信元マシンからのＡＲＰ要求である場合、管理されるスイッチング要素４８２０は、（ステージ１で）フローエントリ４８２５を識別し、フローエントリ４８２５で指定されるアクションを実行する。図示のように、フローエントリ４８２５は、宛先ＭＡＣ  Ｘに解決されるべき宛先ＩＰアドレス１．１．２．１０を有するフローテンプレートが、Ｌ３デーモン４８１０に送信されるべきであることを示す。この例では、フローエントリ４８２５は、いくつかの実施形態では番号である優先順位の値Ｎを有する。
【０４６１】
ステージ２では、Ｌ３デーモン４８１０は、フローテンプレートを受信し、マッピングテーブル４８１５をルックアップすることによって、１．１．２．１０が０１：０１：０１：０１：０１：０９に解決されるべきであることを知る。Ｌ３デーモンは、フローテンプレートに記入し、記入されたテンプレート（ここでは、フローエントリ４８３０）を転送テーブル４８３０に挿入する。この例では、Ｌ３デーモンは、Ｎ＋１の優先順位を、記入されたテンプレートに割り当てる。
【０４６２】
ステージ３では、管理されるスイッチング要素４８１０は、いくつかの実施形態では、パケットの宛先ＭＡＣアドレスを設定するために、フローエントリ４８３０を使用する。また、管理されるスイッチング要素４８１０がその後に処理するパケットのために、管理されるスイッチング要素４８０５は、パケットが１．１．２．１０の宛先ＩＰアドレスを有する場合、フローエントリ４８２５の上のフローエントリ４８３０を使用する。
【０４６３】
いくつかの実施形態では、Ｌ３デーモン４８１０及び管理されるスイッチング要素は、ホスト４８００で動作している同じ仮想マシンで動作し、又は、ホスト４８００で動作している異なる仮想マシンで動作する。いくつかの実施形態では、Ｌ３デーモン４８１０は仮想マシンのユーザ空間で動作する。Ｌ３デーモン４８１０及び管理されるスイッチング要素は、別々のホストで動作することもできる。
【０４６４】
いくつかの実施形態では、管理されるスイッチング要素４８０５は、アドレスを解決するために、Ｌ３デーモン４８１０に依存しない。いくつかのこのような実施形態では、制御クラスタ（図４８には示さず）は、フローエントリ４８２０が、ＩＰアドレスと、ＡＲＰコール（すなわち、入力）又はＤＨＣＰを介して得られたＭＡＣアドレスとの間のマッピングを含むように、フローエントリ４８２０を静的に構成することができる。
【０４６５】
図４９は、ネットワークアドレスを解決するためにいくつかの実施形態が実行するプロセス４９００を概念的に示す。いくつかの実施形態では、プロセス４９００は、Ｌ３でパケットをルーティングするためにＬ３処理２１０を実行する管理されるスイッチング要素（例えば、管理されるスイッチング要素１７２０、２５０５、又は３１０５）によって実行される。プロセス４９００は、いくつかの実施形態では、プロセスが、Ｌ３で論理的にルーティングされるべきパケットを受信すると、開始する。
【０４６６】
プロセス４９００は、（４９０５で）パケットがアドレス解決（例えば、宛先ＩＰアドレスを宛先ＭＡＣアドレスに解決する）を必要とするかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、パケットがＬ３処理を必要とするかどうかを、フローエントリに基づいて判定する。そのクォリファイアがパケットのヘッダに格納された情報又は論理コンテキストと一致するフローエントリは、パケットがアドレス解決を必要とすることを指定する。
【０４６７】
プロセス４９００が、（４９０５で）パケットがアドレス解決を必要としないと判定すると、プロセスは終了する。そうでなければ、プロセス４９００は、（４９１０で）プロセス４９００が、Ｌ３デーモンからのパケットのアドレス（例えば、宛先ＩＰアドレス）を解決する先のアドレスを要求する必要があるかどうかを判定する。いくつかの実施形態では、プロセス４９００は、フローエントリに基づいて、プロセスがＬ３デーモンに要求する必要があるかどうかを判定する。例えば、フローエントリは、パケットのアドレスを解決する先のアドレスが、Ｌ３デーモンからの解決されたアドレスを要求することによって得られるべきであることを指定することができる。いくつかの実施形態では、プロセスは、フローエントリが、解決されたアドレスのための空のフィールド、又は、解決されたアドレスがＬ３デーモンから得られるべきであることを示すフィールド内のなにか他の値を有するフローテンプレートである場合、Ｌ３デーモンが、解決されたアドレスを提供するべきであると判定する。
【０４６８】
プロセスが、（４９１０で）プロセスがＬ３デーモンからのアドレスを要求する必要がないと判定した場合、プロセスは、（４９２０で）解決されたアドレスをフローエントリから得る。例えば、フローエントリは、変換されたアドレスを提供することになる。プロセスは、次に、さらに後述する４９２５に進む。プロセスが、（４９１０で）プロセスがＬ３デーモンからのアドレスを要求する必要があると判定した場合、プロセス４９００は、４９１５で、Ｌ３デーモンからの解決されたアドレスを要求し、取得する。いくつかの実施形態では、プロセス４９００は、フローテンプレートをＬ３デーモンに送信することによって、解決されたアドレスを要求する。Ｌ３デーモンは、フローテンプレートに解決されたアドレスを記入し、記入されたテンプレートを、プロセスが使用する転送テーブル（図示せず）内に配置することになる。
【０４６９】
次に、プロセス４９００は、パケットを解決されたアドレスで変更する。いくつかの実施形態では、プロセスは、パケットのヘッダ内のアドレスフィールドを変更する。代わりに又は結合的に、プロセスは、パケットのアドレスを解決されたアドレスに置き換えるために、論理コンテキストを変更する。プロセスは、次に、終了する。
【０４７０】
図５０は、いくつかの実施形態のネットワークアーキテクチャ５０００を示す。具体的には、この図は、それぞれがＬ３デーモンを実行するいくつかのホスト（又は、ＶＭ）が、ＡＲＰ要求の同時通信を回避することを可能にするマップサーバを示す。この図は、５００５、５０１０、５０１５を含むホスト（又は、ＶＭ）のセットを示す。
【０４７１】
ホスト５０１０及び５０１５は、ホスト５０１０及び５０１５のそれぞれが、Ｌ３デーモン、管理されるスイッチング要素、及び、１つ又は複数のＶＭを実行する点で、図４８を参照して上述したホスト４８０５と同様である。
【０４７２】
ホスト５００５は、マップサーバを実行する。いくつかの実施形態のマップサーバ５００５は、グローバルマッピングテーブル５０２０を保持し、グローバルマッピングテーブル５０２０は、管理されるエッジスイッチング要素を実行するネットワーク内のすべてのホストで動作するＬ３デーモンによって保持されるすべてのマッピングテーブルのすべてのエントリを含む。いくつかの実施形態では、ネットワーク内のＬ３デーモンは、局所的に利用可能なＩＰアドレス及びＭＡＣアドレスのマッピング間のマッピングのエントリを送信する。ホストの管理されるスイッチング要素に結合されたマシンへの変更があった場合はいつでも（例えば、ＶＭが、故障する、又は、管理されるスイッチング要素に結合される、若しくは、管理されるスイッチング要素から分離される場合）、ホストのＬ３デーモンは、個々のローカルマッピングテーブルを適宜に更新し、また、マップサーバ５００５が、変更によって更新されたグローバルマッピングテーブル５００５を保持するように、更新を（例えば、更新を含む特別な「公開」パケットを送信することによって）マップサーバ５００５に送信する。
【０４７３】
いくつかの実施形態では、管理されるエッジスイッチング要素を実行する各ホストで動作するＬ３デーモンは、ローカルマッピングが、解決する宛先ＩＰアドレスのためのエントリを持たない場合、ＡＲＰパケットを同時通信しない。代わりに、Ｌ３デーモンは、宛先ＩＰアドレスを宛先ＭＡＣアドレスに解決するために、マップサーバ５００５に相談する。マップサーバ５００５は、グローバルマッピングテーブル５０２０をルックアップすることによって、宛先ＩＰアドレスを宛先ＭＡＣアドレスに解決する。マップサーバ５００５が、ＩＰアドレスを解決することができない場合（例えば、グローバルマッピングテーブル５０２０が、ＩＰアドレスのためのエントリを持たない、又は、マップサーバ５００５が、故障した場合）、Ｌ３デーモンは、管理されるエッジスイッチング要素を実行する他のホストにＡＲＰパケットを同時通信することに頼ることになる。いくつかの実施形態では、マップサーバ５００５は、第２のレベルの管理されるスイッチング要素（例えば、プールノード）が実装される同じホスト又はＶＭに実装される。
【０４７４】
図５１は、ＩＰ及びＭＡＣアドレスのマッピングを含むマッピングテーブルを維持するためにいくつかの実施形態が実行するプロセス５１００を示す。いくつかの実施形態では、プロセス５１００は、マッピングサーバからの解決されたアドレスを要求するＬ３デーモンによって実行される。これらの実施形態でのマッピングサーバは、管理されるスイッチング要素のセットのためのＩＰ及びＭＡＣアドレスのマッピングを含むグローバルマッピングテーブルを保持する。プロセス５１００は、いくつかの実施形態では、プロセスが、管理されるスイッチング要素から解決する特定のアドレスを受信すると、開始する。
【０４７５】
プロセスは、（５１０５で）プロセスが、管理されるスイッチング要素から受信した特定のアドレスのための解決されたアドレスを持っているかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、プロセスが、特定のアドレスのための解決されたアドレスを持っているかどうかを判定するために、ＩＰ及びＭＡＣアドレスのマッピングを含むローカルマッピングテーブルをルックアップする。
【０４７６】
プロセス５１００が、プロセスが解決されたアドレスを持つと判定すると、プロセスは、さらに後述する５１２０に進む。そうでなければ、プロセス５１００は、マップサーバからの解決されたアドレスを要求し、取得する。プロセス５１００は、次に、（５１１５で）ローカルマッピングテーブルを、マッピングサーバから取得した解決されたアドレスで変更する。いくつかの実施形態では、プロセス５１００は、解決されたアドレス及び特定のアドレスの新しいマッピングを、ローカルマッピングテーブルに挿入する。
【０４７７】
プロセス５１００は、次に、解決されたアドレスを、管理されるスイッチング要素に送信する。いくつかの実施形態では、プロセス５１００は、特定のアドレスを有するパケットを変更する。他の実施形態では、プロセス５１００は、解決されたアドレスの要求として管理されるスイッチング要素が送信したフローテンプレートを変更する。プロセスは、次に、終了する。
【０４７８】
図５２は、ＩＰ及びＭＡＣアドレスのマッピングを含むマッピングテーブルを維持するためにいくつかの実施形態が実行するプロセス５２００を示す。いくつかの実施形態では、プロセス５２００は、ローカルマッピングテーブルを保持し、更新をマッピングサーバに送信するＬ３デーモンによって実行される。これらの実施形態でのマッピングサーバは、管理されるスイッチング要素のセットのためのＩＰ及びＭＡＣアドレスのマッピングを含むグローバルマッピングテーブルを保持する。プロセス５２００は、いくつかの実施形態では、Ｌ３デーモンが動作を開始すると、開始する。
【０４７９】
プロセス５２００は、（５２０５で）管理されるスイッチング要素のセットを監視することによって開始する。具体的には、プロセス５２００は、管理されるスイッチング要素との間でのマシンの結合及び分離、又は、管理されるスイッチング要素に結合されたマシンに関する任意のアドレスの変更について監視する。いくつかの実施形態では、管理されるスイッチング要素のセットは、Ｌ３デーモンが動作する同じホスト又は仮想マシンで動作しているこれらの管理されるスイッチング要素を含む。
【０４８０】
次に、プロセス５２００は、（５２１０で）プロセスが監視する管理されるスイッチング要素へのこのような変更があったかどうかを判定する。プロセスが、（５２１０で）変更がなかったと判定した場合、プロセス５２００は、管理されるスイッチング要素のセットの監視を続けるために、５２０５にループバックする。そうでなければ、プロセスは、（５２１５で）ローカルマッピングテーブル内の対応するエントリを変更する。例えば、ＶＭが移行し、セット内の管理されるスイッチング要素の１つに結合された場合、プロセスは、移行したＶＭのＩＰアドレス及びＭＡＣアドレスのマッピングを、ローカルマッピングテーブルに挿入する。
【０４８１】
プロセス５２００は、次に、マップサーバが、グローバルマッピングテーブルを、ＩＰアドレス及びＭＡＣアドレスの新しい及び／又は変更されたマッピングで更新することができるように、更新されたマッピングをマップサーバに送信する。プロセスは、次に、終了する。
【０４８２】
ＶＩＩＩ．フロー生成及びフロー処理
上述したように、いくつかの実施形態の管理されるスイッチング要素は、いくつかの実施形態のコントローラクラスタ（１つ又は複数のコントローラインスタンス）によって、管理されるスイッチング要素に供給されるフローテーブルに基づいて、論理スイッチ及び論理ルータを実装する。いくつかの実施形態では、コントローラクラスタは、コントローラクラスタが検出する入力又はネットワークイベントに基づいて、テーブルマッピング動作を実行することによって、これらのフローエントリを生成する。これらのコントローラクラスタ及びその動作の詳細は、米国特許出願第１３／１７７，５３３号、及び、「Ｃｈａｓｓｉｓ  Ｃｏｎｔｒｏｌｌｅｒ」という表題の、代理人整理番号ＮＣＲＡ．Ｐ００８１を有する、上記の組み込まれた同時出願の米国特許出願＊＊に記載されている。
【０４８３】
この同時出願の米国特許出願で言及されているように、いくつかの実施形態のネットワーク制御システムは、いくつかのコントローラインスタンスを含む分散型制御システムであり、いくつかのコントローラインスタンスは、システムが、ユーザからの論理データパスセットを受け入れ、これらの論理データパスセットを実装するために、スイッチング要素を構成することを可能にする。いくつかの実施形態では、コントローラインスタンスの１つのタイプは、１つ又は複数のモジュールを実行するデバイス（例えば、汎用コンピュータ）であり、１つ又は複数のモジュールは、論理制御プレーンからのユーザ入力を論理転送プレーンに変換し、次に、論理転送プレーンデータを物理制御プレーンデータに変換する。いくつかの実施形態のこれらのモジュールは、制御モジュール及び仮想化モジュールを含む。制御モジュールは、ユーザが、論理データパスセットを指定し、ポピュレートすることを可能にし、仮想化モジュールは、論理データパスセットを物理的なスイッチングインフラストラクチャにマッピングすることによって、指定された論理データパスセットを実装する。いくつかの実施形態では、制御及び仮想化アプリケーションは、２つの別々のアプリケーションであり、他の実施形態では、これらは、同じアプリケーションの一部である。
【０４８４】
特定の論理データパスセットに関する論理転送プレーンデータから、いくつかの実施形態の仮想化モジュールは、論理データパスセットを実装する任意の管理されるスイッチング要素に一般的なユニバーサル物理制御プレーン（ＵＰＣＰ）データを生成する。いくつかの実施形態では、この仮想化モジュールは、特定の論理データパスセットのためのマスタコントローラであるコントローラインスタンスの一部である。このコントローラは、論理コントローラと呼ばれる。
【０４８５】
いくつかの実施形態では、ＵＰＣＰデータは、次に、特定の管理されるスイッチング要素のためのマスタ物理コントローラインスタンスであるコントローラインスタンスによって、又は、「Ｃｈａｓｓｉｓ  Ｃｏｎｔｒｏｌｌｅｒ」という表題の、代理人整理番号ＮＣＲＡ．Ｐ００８１を有する、同時出願の米国特許出願＊＊にさらに記載のように、特定の管理されるスイッチング要素のためのシャーシコントローラによって、各々の特定の管理されるスイッチング要素のためのカスタマイズされた物理制御プレーン（ＣＰＣＰ）データに変換される。シャーシコントローラが、ＣＰＣＰデータを生成すると、シャーシコントローラは、物理コントローラを介して論理コントローラの仮想化モジュールからＵＰＣＰデータを取得する。
【０４８６】
物理コントローラ又はシャーシコントローラのどちらがＣＰＣＰデータを生成するのかにかかわりなく、特定の管理されるスイッチング要素のためのＣＰＣＰデータは、管理されるスイッチング要素に伝播される必要がある。いくつかの実施形態では、ＣＰＣＰデータは、ネットワーク情報ベース（ＮＩＢ）データ構造を介して伝播され、ＮＩＢデータ構造は、いくつかの実施形態では、オブジェクト指向データ構造である。ＮＩＢデータ構造を使用するいくつかの例は、参照により本明細書に組み込まれる米国特許出願第１３／１７７，５２９号及び第１３／１７７，５３３号に記載されている。これらの出願に記載のように、ＮＩＢデータ構造は、いくつかの実施形態では、異なるコントローラインスタンス間の通信媒体として用いることができるようにするために、並びに、論理データパスセット（例えば、論理スイッチング要素）、及び／又は、これらの論理データパスセットを実装する管理されるスイッチング要素に関するデータを格納するためにも使用される。
【０４８７】
しかしながら、他の実施形態は、コントローラインスタンス間で通信するため、並びに、論理データパスセット及び／又は管理されるスイッチング要素に関するデータを格納するために、物理コントローラ又はシャーシコントローラからのＣＰＣＰデータを管理されるスイッチング要素に伝播させるために、ＮＩＢデータ構造を使用しない。例えば、いくつかの実施形態では、物理コントローラ及び／又はシャーシコントローラは、オープンフローエントリを介して管理されるスイッチング要素と通信し、構成プロトコルを介して更新する。また、いくつかの実施形態では、コントローラインスタンスは、データを交換するために、１つ又は複数の直接通信チャネル（例えば、ＲＰＣコール）を使用する。加えて、いくつかの実施形態では、コントローラインスタンス（例えば、これらのインスタンスの制御及び仮想化モジュール）は、論理及び／又は物理データを、リレーショナルデータベースデータ構造に書き込まれたレコードで表現する。いくつかの実施形態では、このリレーショナルデータベース構造は、コントローラインスタンスの１つ又は複数のモジュールを実装するために使用されるテーブルマッピングエンジン（ｎＬｏｇと呼ばれる）の入力及び出力テーブルの一部である。
【０４８８】
図５３は、いくつかの実施形態のコントローラクラスタの３つのコントローラインスタンスを概念的に示す。これらの３つのコントローラインスタンスは、ＡＰＩコールとして受信された論理制御プレーン（ＬＣＰ）データからＵＰＣＰデータを生成するための論理コントローラ５３００、並びに、それぞれ、管理されるスイッチング要素５３２０及び５３２５に特定のＵＰＣＰデータをカスタマイズするための物理コントローラ５３９０及び５３３０を含む。具体的には、いくつかの実施形態の論理コントローラ５３００は、ｎＬｏｇのようなテーブルマッピングプロセッサ（図示せず）を使用して、テーブルにテーブルマッピング動作を実行することによって、ユニバーサルフローを生成する。ｎＬｏｇエンジンは、米国特許出願第１３／１７７，５３３号に記載されている。この図は、ユーザ５３２５、並びに、管理されるスイッチング要素５３２０及び５３２５も示す。
【０４８９】
図示のように、論理コントローラ５３００は、制御アプリケーション５３０５及び仮想化アプリケーション５３１０を含む。いくつかの実施形態では、制御アプリケーション５３０５は、論理制御プレーンデータを受信し、このデータを、仮想化アプリケーション５３１０に供給される論理転送プレーンデータに変換するために、使用される。仮想化アプリケーション５３１０は、論理転送プレーンデータから、ユニバーサル物理制御プレーンデータを生成する。
【０４９０】
いくつかの実施形態では、論理制御転プレーンデータの一部は、入力から変換される。いくつかの実施形態では、論理コントローラ５３００は、ＡＰＩコールのセットをサポートする。論理コントローラは、ＡＰＩコールのセットをＬＣＰデータに変換する入力変換アプリケーション（図示せず）を有する。ＡＰＩコールを使用して、ユーザは、ユーザが物理スイッチング要素及びルータを構成しているかのように、論理スイッチ及び論理ルータを構成することができる。
【０４９１】
物理コントローラ５３９０及び５３３０は、それぞれ、管理されるスイッチング要素５３２０及び５３２５のマスタである。いくつかの実施形態の物理コントローラ５３９０及び５３３０は、論理コントローラ５３００からＵＰＣＰデータを受信し、ＵＰＣＰデータを、管理されるスイッチング要素５３２０及び５３２５のためのＣＰＣＰデータに変換する。物理コントローラ５３９０は、次に、管理されるスイッチング要素５３２０のためのＣＰＣＰデータを、管理されるスイッチング要素５３２０に送信する。物理コントローラ５３３０は、管理されるスイッチング要素５３２５のためのＣＰＣＰデータを、管理されるスイッチング要素５３２５に送信する。管理されるスイッチング要素５３２０及び５３２５のためのＣＰＣＰデータは、フローエントリの形態をしている。管理されるスイッチング要素５３２０及び５３２５は、次に、フローエントリに基づいて、パケットの転送及びルーティングを実行する。米国特許出願第１３／１７７，５３３号に記載のように、ＬＣＰデータの、ＬＦＰデータへ、及び次にＣＰＣＰデータへのこの変換は、ｎＬｏｇエンジンを使用することによって実行される。
【０４９２】
図５３は、ＵＰＣＰデータから２つの異なる管理されるスイッチング要素のためのＣＰＣＰデータを生成する２つの物理コントローラを示しているが、当業者は、他の実施形態では、物理コントローラが、ＵＰＣＰデータを各スイッチング要素のシャーシコントローラに単に中継するように機能し、シャーシコントローラが、そのスイッチング要素のＣＰＣＰデータを生成し、このデータをそのスイッチング要素にプッシュすることを理解するであろう。
【０４９３】
図５４は、例示的なアーキテクチャ５４００及びユーザインタフェース５４０５を示す。具体的には、この図は、ユーザが、論理スイッチ及びルータを希望通りに構成するために、コントローラアプリケーションに送信することを示す。この図は、４つのステージ５４０６〜５４０９のユーザインタフェース（ＵＩ）５４０５を、図の左半分に示す。この図は、また、論理ルータ５４２５並びに２つの論理スイッチ５４２０及び５４３０を含むアーキテクチャ５４００を、図の右半分に示す。
【０４９４】
ＵＩ５４０５は、例示的なインタフェースであり、このインタフェースを介して、ユーザは、論理スイッチ及びルータを管理するために、入力を入力し、コントローラインスタンスから応答を受信することができる。いくつかの実施形態では、ＵＩ５４０５は、ウェブアプリケーションとして提供され、したがって、ウェブブラウザで開くことができる。代わりに、又は結合的に、いくつかの実施形態の制御アプリケーションは、ユーザが、コマンドラインインタフェースを介して入力を入力及び受信することを可能にすることができる。
【０４９５】
図の左半分は、ユーザが、コントローラインスタンスが管理するネットワークの管理されるスイッチング要素のセットによって実装されるべき論理スイッチ及び論理ルータ内の論理ポートをセットアップするために、入力を入力することを示す。具体的には、ユーザは、（ステージ５４０６で）ポート及びネットマスク「２５５．２５５．２５５．０」を関連付けるために、ポートの識別子「ＲＰ１」、及び「１．１．１．２５３」のＩＰアドレスをを供給することによって、論理ルータＬＲに論理ポートを追加する。ユーザは、また、（５４０７で）ポート識別子「ＳＰ１」を供給し、ポートが論理ルータの論理ポートＲＰ１に接続されるべきであることを指定することによって、論理スイッチＬＳ１に論理ポートを追加する。ユーザは、また、（ステージ５４０８で）ポート及びネットマスク「２５５．２５５．２５５．０」を関連付けるために、ポートの識別子「ＲＰ２」、及び「１．１．２．２５３」のＩＰアドレスを供給することによって、論理ルータＬＲに別の論理ポートを追加する。ユーザは、また、（５４０９で）ポート識別子「ＳＰ２」を供給し、ポートが論理ルータの論理ポートＲＰ２に接続されるべきであることを指定することによって、論理スイッチＬＳ２に別の論理ポートを追加する。図の右半分は、論理ルータ及び論理スイッチに追加されたポートを示す。
【０４９６】
図５５〜６２は、制御アプリケーション５３０５の例示的な動作を概念的に示す。これらの図は、制御アプリケーション５３０５が、管理されるスイッチング要素に供給されるフローエントリを生成するために使用し、変更するテーブルのセットを示す。具体的には、管理されるスイッチング要素（図示せず）は、図５４を参照して上述した入力に基づいて、論理スイッチ５４２０及び５４３０並びに論理ルータ５４００に追加される論理ポートを実装する。この図は、制御アプリケーション５３０５、仮想化アプリケーション５３１０、及び物理コントローラ５３３０を示す。
【０４９７】
図示のような制御アプリケーション５３０５は、入力変換５５０５、入力テーブル５５１０、ルールエンジン５５１５、出力テーブル５５２０、エクスポータ５５２５を含む。
【０４９８】
入力変換５５０５は、いくつかの実施形態では、管理ツールと対話し、管理ツールにより、ユーザは、論理ネットワーク状態を見る及び／又は変更することができる。異なる実施形態は、異なる管理ツールをユーザに提供する。例えば、入力変換５５０５は、いくつかの実施形態では、図５４を参照して上述したＵＩ５４０５のようなグラフィカルツールを提供する。グラフィカルツールの代わりに、又は結合的に、他の実施形態は、ユーザに、コマンドラインツール、又は任意の他のタイプの管理ツールを提供することができる。入力変換５５０５は、管理ツールを介してユーザからの入力を受信し、１つ又は複数の入力テーブル５５１０の作成、ポピュレート、及び／又は変更するために、受信した入力を処理する。
【０４９９】
入力テーブル５５１０は、参照により本明細書に組み込まれる米国特許出願第１３／２８８，９０８号に記載の入力テーブルと同様である。いくつかの場合の入力テーブルは、ユーザが管理している論理スイッチ及び論理ルータの状態を表現する。例えば、入力テーブル５５３０は、論理スイッチの論理ポートに関連するＩＰアドレスをクラスレスインタードメインルーティング（ＣＩＤＲ）フォーマットで格納するテーブルである。制御アプリケーションは、制御アプリケーションが管理ツールを介して受信する入力で、又は、制御アプリケーションが検出する任意のネットワークイベントで、入力テーブルを変更する。制御アプリケーション５３０５が入力テーブルを変更した後、制御アプリケーション５３０５は、変更した入力テーブルを処理するため、ルールエンジン５５１５を使用する。
【０５００】
異なる実施形態のルールエンジン５５１５は、出力テーブル５５２０の異なるセットをポピュレート及び／又は変更するために、入力テーブルの異なるセットに、データベース動作の異なる組み合わせを実行する。例えば、ルールエンジン５５１５は、論理ルータの論理ポートが作成されたことを示すために入力テーブル５５３０が変更されると、ＭＡＣアドレスを論理ルータの論理ポートと関連付けるために、テーブル５５３５を変更する。出力テーブル５５６５は、ルーティング／転送されているネットワークデータに実行するために、論理スイッチ及び論理ルータを実装する管理されるスイッチング要素のためのアクションを指定するフローエントリを含む。テーブル５５３０〜５５６０に加えて、ルールエンジン５５１５は、ルールエンジン５５１５のテーブルマッピング動作を容易にするために、他の入力テーブル、コンテンツテーブル、及び機能テーブルを使用することができる。
【０５０１】
出力テーブルは、ルールエンジン５５１５に対する入力テーブルとして使用されてもよい。すなわち、出力テーブル内の変更は、ルールエンジン５５１５によって実行されるべき別のテーブルマッピング動作をトリガすることができる。したがって、テーブル５５３０〜５５６０内のエントリは、テーブルマッピング動作を実行することから生じてよく、テーブルマッピング動作の別のセットのためのルールエンジン５５１５に入力を提供することもできる。このように、入力テーブル及び出力テーブルは、この図では、テーブルが入力及び／又は出力テーブルであることを示すために、単一の点線ボックスで示されている。
【０５０２】
テーブル５５３５は、論理ルータの論理ポート及び関連するＭＡＣアドレスのペアリングを格納するためのものである。テーブル５５４０は、パケットをルーティングするときに使用する論理ルータのための論理ルーティングテーブルである。いくつかの実施形態では、テーブル５５４０は、論理ルータを実装する管理されるスイッチング要素に送信されることになる。テーブル５５５０は、ネクストホップ識別子、及び論理ルータの論理ポートのＩＰアドレスを格納するためのものである。テーブル５５５５は、論理スイッチの論理ポート及び論理ルータの論理ポート間の接続を格納するためのものである。エクスポータ５５２５は、出力テーブル５５２０内の変更された出力テーブルを、仮想化アプリケーション５３１０に発行又は送信する。
【０５０３】
図５５は、図５４を参照して上述したステージ５４０６の前のテーブル５５３０〜５５６５を示す。テーブル内のエントリは、これらのテーブル内にいくつかの既存のエントリがあることを示すために、点として示される。
【０５０４】
図５６は、ステージ５４０６の後のテーブル５５３０〜５５６５を示す。すなわち、この図は、ユーザが、「ＬＲ」として識別される論理ルータ５４２５に論理ポートを追加するために、ポート及びネットマスク「２５５．２５５．２５５．０」に関連付けるために、論理ポートの識別子「ＲＰ１」、「１．１．１．２５３」のＩＰアドレスを供給した後の、テーブル５５３０〜５５６５を示す。ここで、テーブル５５３０は、入力変換５５０５によって新しいエントリで更新される。新しいエントリ（又は、行）５６０１は、「ＲＰ１」として識別される論理ポートが追加され、このポートに関連するＩＰアドレスが、ＩＰアドレス１．１．１．２５３、プレフィックス長２４、及びネットマスク２５５．２５５．２５５．０によって指定されることを示す。
【０５０５】
ルールエンジン５５１５は、テーブル５５３０へのこの更新を検出し、テーブル５５３５及び５５４０を更新するために、テーブルマッピング動作のセットを実行する。図５７は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル５５３５が、新しい行５７０１を有することを示し、行５７０１は、論理ポートＲＰ１が、ここではＭＡＣアドレス０１：０１：０１：０１：０１：０１に関連付けられていることを示す。このＭＡＣアドレスは、他のテーブル又は機能（図示せず）を使用するテーブルマッピング動作を実行しながら、ルールエンジン５５１５によって生成される。
【０５０６】
図５７は、テーブル５５４０が新しい行５７０２を有することも示し、行５７０２は、論理ルータ５４２５のためのルーティングテーブル内のエントリである。論理ルータ５４２５（論理ルータ５４２５を実装する管理されるスイッチング要素）は、ルーティング決定を行うために、このテーブル５５４０をルックアップすることになる。行５７０２は、論理ポートＲＰ１のネクストホップが、固有の識別子「ＮＨ１」を有することを指定する。行５７０２は、また、ルーティングテーブル内のこの行に割り当てられた優先順位を含む。この優先順位は、ルーティングテーブル内の複数のマッチングする行が存在する場合、ルーティング決定を行うためにどの行が使用されるべきかを判定するために使用される。いくつかの実施形態では、エントリ内の行の優先順位の値は、プレフィックス長プラス基本優先順位値「ＢＰ」である。
【０５０７】
ルールエンジン５５１５は、テーブル５５５０を更新するために、テーブル５５４０に対する更新を検出し、テーブルマッピング動作のセットを実行する。図５８は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル５５５０が、新しい行５８０１を有することを示し、行５８０１は、論理ルータ５４２５の論理ポートＲＰ１のネクストホップのＩＰアドレスが、所与のパケットの宛先ＩＰアドレスであることを示す。（この行内の「０」は、ネクストホップのＩＰアドレスが、論理ルータのＲＰ１を介してルーティングされることになる所与のパケットの宛先であることを意味する。）
【０５０８】
図５９は、図５４を参照して上述したステージ５４０７の後のテーブル５５３０〜５５６０を示す。すなわち、この図は、ユーザが、論理スイッチ５４２０（ＬＳ１）に論理ポートを追加するために、論理ポートの識別子「ＳＰ１」を供給し、このポートを、論理ルータ５４２５の論理ポートＲＰ１にリンクした後の、テーブル５５３０〜５５６５を示す。ここで、テーブル５５５５は、入力変換５５０５によって２つの新しい行で更新される。新しい行５９０１は、（論理スイッチ５４２０の）「ＳＰ１」として識別される論理ポートが、（論理ルータ５４２５の）論理ポートＲＰ１に取り付けられることを示す。また、新しい行５９０２は、論理ポートＲＰ１が、論理ポートＳＰ１に取り付けられることを示す。このリンクは、上述した論理処理パイプライン２００のＬ２処理及びＬ３処理部分を接続する。
【０５０９】
ルールエンジン５５１５は、テーブル５５３５を更新するために、テーブル５５５５に対する更新を検出し、テーブルマッピング動作のセットを実行する。図６０は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル５５３５が、新しい行６００１を有し、新しい行６００１は、ＳＰ１及びＲＰ１がここではリンクされているため、論理ポートＳＰ１が、ここではＭＡＣアドレス０１：０１：０１：０１：０１：０１に関連付けられていることを示す。
【０５１０】
ルールエンジン５５１５は、テーブル５５６０を更新するために、テーブル５５５５に対する更新を検出し、テーブルマッピング動作のセットを実行する。図６１は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル５５５０が、４つの新しい行（フローエントリ）６１０１〜６１０４を有することを示す。行６１０１は、その宛先ＭＡＣアドレス０１：０１：０１：０１：０１：０１であるパケットが、（論理スイッチ５４２０の）論理ポートＳＰ１に送信されるべきであることを示すフローエントリである。行６１０２は、論理ポートＳＰ１に搬送されるどのパケットも、論理ポートＲＰ１に送信されるべきであることを示すフローエントリである。行６１０３は、論理ポートＲＰ１に搬送されるどのパケットも、論理ポートＳＰ１に送信されるべきであることを示すフローエントリである。行６１０４は、１．１．１．２５３／２４によって指定されるＩＰアドレスの範囲内のＩＰアドレスを有するパケットが、Ｌ３デーモンに依頼することによって、ＭＡＣアドレスを要求すべきであることを示すフローエントリである。
【０５１１】
図６２は、上述したステージ５４０８及び５４０９の後のテーブルのいくつかに追加された新しい行６２０１〜６２０９を示す。説明を簡単にするために、ルールエンジン５５１５によるテーブル更新の中間の例示は、省略する。
【０５１２】
新しい行６２０１は、「ＲＰ２」として識別される論理ポートが追加され、このポートに関連するＩＰアドレスが、ＩＰアドレス１．１．２．２５３、プレフィックス長２４、及びネットマスク２５５．２５５．２５５．０によって指定されることを示す。新しい行６２０２は、論理ポートＲＰ２が、ここではＭＡＣアドレス０１：０１：０１：０１：０１：０２に関連付けられていることを示す。新しい行６２０３は、論理ポートＳＰ２が、ここではＭＡＣアドレス０１：０１：０１：０１：０１：０２に関連付けられていることを示す。新しい行６２０４は、論理ルータ５４３０のためのルーティングテーブル内のエントリである。行６２０４は、論理ポートＲＰ２のネクストホップが、固有の識別子「ＮＨ２」を有することを指定する。行６２０４は、また、ルーティングテーブル内のこの行に割り当てられた優先順位を含む。
【０５１３】
新しい行６２０５は、論理ルータ５４２５の論理ポートＲＰ２のネクストホップのＩＰアドレスが、所与のパケットの宛先ＩＰアドレスであることを示す。新しい行６２０６は、（論理スイッチ５４３０の）「ＳＰ２」として識別される論理ポートが、（論理ルータ５４２５の）論理ポートＲＰ２に取り付けられることを示す。また、新しい行６２０７は、論理ポートＲＰ２が、論理ポートＳＰ２に取り付けられることを示す。
【０５１４】
行６２０８は、その宛先ＭＡＣアドレス０１：０１：０１：０１：０１：０２のパケットが、（論理スイッチ５４３０の）論理ポートＳＰ２に送信されるべきであることを示すフローエントリである。行６２０９は、論理ポートＳＰ２に搬送されるどのパケットも、論理ポートＲＰ２に送信されるべきであることを示すフローエントリである。行６２１０は、論理ポートＲＰ２に搬送されるどのパケットも、論理ポートＳＰ２に送信されるべきであることを示すフローエントリである。行６２１１は、１．１．２．２５３／２４によって指定されるＩＰアドレスの範囲内のＩＰアドレスを有するパケットが、Ｌ３デーモンに依頼することによって、ＭＡＣアドレスを要求すべきであることを示すフローエントリである。
【０５１５】
図６２に示すこれらのフローエントリは、ＬＦＰデータである。このＬＦＰデータは、仮想化アプリケーション５３１０に送信されることになり、仮想化アプリケーション５３１０は、ＬＦＰデータからＵＰＣＰデータを生成することになる。次に、ＵＰＣＰデータは、物理コントローラ５３３０に送信されることになり、物理コントローラ５３３０は、管理されるスイッチング要素５３２５（図６２には示さず）のためにＵＰＣＰデータをカスタマイズすることになる。最後に、物理コントローラ５３３０は、ＣＰＣＰデータを、管理されるスイッチング要素５３２５に送信することになる。
【０５１６】
図６３は、制御アプリケーション５３０５が、図５５〜６２を参照して上述したテーブルマッピング動作を実行することによって論理データを生成した後のアーキテクチャ５４００を示す。図６３に示すように、ポートＲＰ１及びＲＰ２は、それぞれ、１．１．１．２５３／２４及び１．１．２．２５３／２４によって指定されるＩＰアドレスの範囲と関連付けられる。また、ポートＳＰ１及びＳＰ２は、それぞれ、ＭＡＣアドレス０１：０１：０１：０１：０１：０１及び０１：０１：０１：０１：０１：０２と関連付けられる。この図は、また、論理スイッチ５４２０に結合されたＶＭ１、及び、論理スイッチ５４３０に結合されたＶＭ２を示す。
【０５１７】
ここで、論理スイッチ５４２０及び５４３０、論理ルータ５４２５、並びにＶＭ及び２の例示的な動作を説明する。この例は、論理ルータ５４２５並びに論理スイッチ５４２０及び５４３０を実装する管理されるスイッチング要素のセットが、フローエントリ６１０１〜６１０４及び６２０８〜６２１１のすべてを有することを仮定する。この例は、また、制御アプリケーション５３０５によって生成される論理データが、仮想化アプリケーション５３１０によって物理制御プレーンデータに変換されること、及び、物理制御プレーンデータが、管理されるスイッチング要素によって受信され、物理転送データに変換されることを仮定する。
【０５１８】
ＶＭ１が、パケットをＶＭ４に送信するつもりである場合、ＶＭ１は、最初に、論理ルータ５４２５のＭＡＣアドレスを解決するために、ＡＲＰ要求を同時通信する。このＡＲＰパケットは、この例では１．１．１．１０であるＶＭ１の送信元ＩＰアドレスと、この例では１．１．２．１０であるＶＭ４の宛先ＩＰアドレスとを有する。この同時通信パケットは、同時通信ＭＡＣアドレスｆｆ：ｆｆ：ｆｆ：ｆｆ：ｆｆ：ｆｆを宛先ＭＡＣアドレスとして有し、パケットのターゲットプロトコルアドレスは、１．１．１．２５３である。この同時通信パケット（ＡＲＰ要求）は、論理ポートＳＰ１を含む論理スイッチ５３２０のすべてのポートに複製される。次に、フローエントリ６１０２に基づいて、このパケットは、論理ルータ５３２５のＲＰ１に送信される。パケットは、次に、宛先ＩＰアドレス１．１．２．１０が、１．１．２．２５３／２４によって指定されるＩＰアドレスの範囲内であるため（すなわち、ターゲットプロトコルアドレスが、１．１．１．２５３であるため）、フローエントリ６１０４にしたがって、Ｌ３デーモン（図示せず）に送信される。Ｌ３デーモンは、宛先ＩＰアドレスを、ＲＰ１のＭＡＣアドレスであるＭＡＣアドレス０１：０１：０１：０１：０１：０１に解決する。Ｌ３デーモンは、このＭＡＣアドレスを有するＡＲＰ応答を、ＶＭ１に送り返す。
【０５１９】
ＶＭ１は、次に、パケットをＶＭ４に送信する。このパケットは、ＶＭ１のＭＡＣアドレスを送信元ＭＡＣアドレスとして有し、ＲＰ１のＭＡＣアドレス（０１：０１：０１：０１：０１：０１）を宛先ＭＡＣアドレスとして有し、ＶＭ１のＩＰアドレス（１．１．１．１０）を送信元ＩＰアドレスとして有し、ＶＭ４のＩＰアドレス（１．１．２．１０）を宛先ＩＰアドレスとして有する。
【０５２０】
論理スイッチ５４２０は、次に、０１：０１：０１：０１：０１：０１の宛先ＭＡＣアドレスを有するパケットが、ＳＰ１に送信されるべきであることを示すフローエントリ６１０１にしたがって、このパケットをＳＰ１に転送する。パケットがＳＰ１に達すると、パケットは、次に、ＳＰ１に搬送されるどのパケットもＲＰ１に送信されるべきであることを示すフローエントリ６１０２にしたがって、ＲＰ１に送信される。
【０５２１】
このパケットは、次に、論理ルータ５４２５の入口ＡＣＬステージに送られ、入口ＡＣＬステージは、この例では、パケットがＲＰ１を介して進むことを可能にする。次に、論理ルータ５４２５は、エントリ６２０４にしたがって、パケットをネクストホップのＮＨ２にルーティングする。このルーティング決定は、次に、（論理ルータ５４２５を実装する管理されるスイッチング要素の）レジスタにロードされる。このパケットは、次に、ネクストホップルックアッププロセスに供給され、ネクストホップルックアッププロセスは、ネクストホップのＩＰアドレス、及びパケットが送信されるべきポートを決定するために、ネクストホップのＩＤ、ＮＨ２を使用する。この例では、ネクストホップは、行６２０５に基づいて決定され、行６２０５は、ＮＨ２のアドレスがパケットの宛先ＩＰアドレスであり、パケットが送信されるべきポートがＲＰ２であることを示す。
【０５２２】
パケットは、次に、宛先ＩＰアドレス（１．１．２．１０）をＶＭ４のＭＡＣアドレスに解決するために、ＭＡＣアドレス解決プロセスに供給される。Ｌ３デーモンは、ＭＡＣアドレスを解決し、新しいフローエントリを（例えば、フローテンプレートに解決されたＭＡＣアドレスを記入することによって）、論理ルータ５４２５を実装する管理されるスイッチング要素内に戻す。この新しいフローにしたがって、パケットは、ここでは、ＶＭ４のＭＡＣアドレスを宛先ＭＡＣアドレスとして有し、論理ルータ５４２５のＲＰ２のＭＡＣアドレス（０１：０１：０１：０１：０１：０２）を有する。
【０５２３】
パケットは、次に、論理ルータ５４２５の出口ＡＣＬステージを通過し、出口ＡＣＬステージは、この例では、パケットがＲＰ２を通って出ることを可能にする。パケットは、次に、ＲＰ２に搬送されるどのパケットもＳＰ２に送信されるべきであることを示すフローエントリ６２１０にしたがって、ＳＰ２に送信される。次に、論理スイッチ５３３０のためのＬ２処理は、パケットをＶＭ４に送信することになる。
【０５２４】
ＩＸ．管理されるエッジスイッチング要素の実装に対する変形例
すべてのＬＤＰＳ処理は、管理されるエッジスイッチング要素にプッシュされるが、いくつかの実施形態では、実際の取り付けられた物理ポート統合に対するインタフェースのみが、相互運用性の問題に対処する。これらのインタフェースは、いくつかの実施形態では、ホストＩＰ／イーサネット（登録商標）スタックのための標準的なＬ２／Ｌ３インタフェースを実装する。論理スイッチ及び論理ルータ間のインタフェースは、仮想化アプリケーションの内部のままであり、したがって、情報を交換するために、今日のルータとまったく同じプロトコルを実装する必要はない。
【０５２５】
仮想化アプリケーションは、いくつかの実施形態では、最初のホップのルータのＩＰアドレスに送信されたＡＲＰ要求に応答する責任を有する。論理ルータのＭＡＣ／ＩＰアドレスバインディングは、静的であるため、これは、スケーリング問題をもたらさない。最後のホップの論理ルータは、いくつかの実施形態では、同様の厳格な要件をもたず、取り付けられたポートのＭＡＣ及びＩＰアドレス（複数可）が、仮想化アプリケーションに知らされている限り、エンドポイントにさらされておらず、論理パイプラインの実行によってのみ使用される内部ルックアップサービスに、これらのアドレスを公開することができる。取り付けられたポートにＡＲＰ要求を送信する絶対の必要はない。
【０５２６】
いくつかの実施形態は、要求されたＬ３機能を、Ｏｐｅｎ  ｖＳｗｉｔｃｈの次に動作する外部デーモンとして実装する。いくつかの実施形態では、デーモンは、以下の動作を担当する。
・ＡＲＰ要求に対する応答。いくつかの実施形態では、Ｏｐｅｎ  ｖＳｗｉｔｃｈは、ＡＲＰ要求をデーモンに供給し、デーモンは、応答を作成する。代わりに、いくつかの実施形態は、管理されるエッジスイッチング要素内の追加のフローエントリを作成するために、フローテンプレートを使用する。フローテンプレートは、受信したパケットに基づいて動的に一連のフローエントリを生成するための、ルールのセットの使用である。いくつかのこのような実施形態では、応答は、Ｏｐｅｎ  ｖＳｗｉｔｃｈ自体によって処理される。
・フロー状態ごとの任意のステートフル（ＮＡＴ、ＡＣＬ、負荷分散）の確立。再び、フローテンプレートが、十分に柔軟であれば、Ｏｐｅｎ  ｖＳｗｉｔｃｈが処理するために、より多くを移動させることができる。
・分散ルックアップの開始。その論理パイプラインの配列を介してトラフィックを供給する場合、必要に応じて、分散ルックアップ（例えば、ＡＲＰ、学習）が、マッピングサービスに開始される。これは、いくつかの実施形態では、ＩＰパケットのキューイングを伴うことになる。
【０５２７】
外部の物理ネットワークと統合するときにＡＲＰ要求を生成するために、いくつかの実施形態は、パケットは、オープンフローのローカル出力ポートを使用することによって、ローカルＩＰスタックへと破棄されてよいと仮定する。
【０５２８】
マッピングサービス自体は、いくつかの実施形態では、Ｏｐｅｎ  ｖＳｗｉｔｃｈのデータパス機能に頼ることによって実装され、管理されるエッジスイッチング要素のデーモンは、特別な「公開」パケットをマッピングサービスノードに送信することによって、ＭＡＣ及びＩＰアドレスバインディングを公開し、マッピングサービスノードは、次に、フローテンプレートを使用してフローエントリを作成することになる。管理されるエッジスイッチング要素からの「クエリ」パケットは、次に、これらのＦＩＢエントリによって応答されることになり、これらのＦＩＢエントリは、クエリパケットを、十分に応答パケットになるように変更した後、パケットを特別なＩＮ＿ＰＯＲＴに送信することになる。
【０５２９】
Ｘ．論理スイッチング環境
上記及び下記のいくつかの実施形態は、論理転送空間（すなわち、論理制御及び転送プレーン）を物理転送空間（すなわち、物理制御及び転送プレーン）から完全に分離するネットワーク制御システムを提供する。これらの制御システムは、論理転送空間データを物理転送空間データにマッピングするために、マッピングエンジンを使用することによって、このような分離を達成する。論理空間を物理空間から完全に分離することによって、これらの実施形態の制御システムは、物理転送空間に変更が行われている（例えば、仮想マシンが移行される、物理スイッチ又はルータが追加される、など）間、論理転送要素の論理ビューが、変化しないままでいることを可能にする。
【０５３０】
より具体的には、いくつかの実施形態の制御システムは、ネットワークを管理し、ネットワークを介して、複数の異なるユーザ（すなわち、複数のホストコンピュータ、及び、複数の異なる関連する又は関連しないユーザによって共有される管理される転送要素を有するプライベート又はパブリックホスト環境内の複数の異なるユーザ）に属するマシン（例えば、仮想マシン）は、別々のＬＤＰセットのためのデータパケットを交換することができる。すなわち、特定のユーザに属するマシンは、そのユーザのためのＬＤＰＳを介して、同じユーザに属する他のマシンとデータを交換することができ、異なるユーザに属するマシンは、同じ物理的な管理されるネットワーク上に実装された異なるＬＤＰＳを介して、相互にデータを交換することができる。いくつかの実施形態では、ＬＤＰＳ（論理転送要素（例えば、論理スイッチ、論理ルータ）、又は、いくつかの場合では、論理ネットワークとも呼ばれる）は、いくつかの論理ポートを相互接続するために、スイッチングファブリックを提供する論理構成物であり、論理ポートには、特定のユーザの（物理的又は仮想的）マシンを取り付けることができる。
【０５３１】
いくつかの実施形態では、このようなＬＤＰセット及び論理ポートの作成及び使用は、素人目には、仮想ローカルエリアネットワーク（ＶＬＡＮ）の使用と同様に見えるかもしれない、論理サービスモデルを提供する。しかしながら、ネットワークをセグメント化するためのＶＬＡＮサービスモデルとは、様々な重要な違いが存在する。本明細書に記載の論理サービスモデルでは、物理ネットワークは、ネットワークのユーザの論理ビューには何の影響もなく、変更することができる（例えば、管理されるスイッチング要素の追加、又は、ある場所から別の場所へのＶＭの移動は、論理転送要素のユーザのビューに影響を与えない）。当業者は、以下に記載の違いのすべてが、特定の管理されるネットワークには当てはまらない可能性があることを理解するであろう。いくつかの管理されるネットワークは、このセクションに記載の特徴のすべてを含むことができ、他の管理されるネットワークは、これらの特徴の異なるサブセットを含むことになる。
【０５３２】
いくつかの実施形態の管理されるネットワーク内の管理される転送要素が、パケットが属するＬＤＰＳを識別することができるように、ネットワークコントローラクラスタは、ＬＤＰセットを定義するユーザ入力にしたがって、物理的な管理される転送要素のためのフローエントリを自動化的に生成する。特定のＬＤＰＳ上のマシンからのパケットが、管理されるネットワーク上に送信されると、管理される転送要素は、パケットの論理コンテキスト（すなわち、パケットが属するＬＤＰＳ、並びに、パケットが向かう論理ポート）を識別するために、これらのフローエントリを使用し、論理コンテキストにしたがってパケットを転送する。
【０５３３】
いくつかの実施形態では、パケットは、論理コンテキストＩＤの何の並べ替えもなしに、その送信元マシン（及び、その送信元マシンのネットワークインタフェース）を出る。代わりに、パケットは、送信元及び宛先マシンのアドレス（例えば、ＭＡＣアドレス、ＩＰアドレス、など）のみを含む。論理コンテキスト情報のすべては、ネットワークの管理される転送要素で、追加も除去もされる。第１の管理される転送要素が、送信元マシンから直接パケットを受信すると、転送要素は、パケットの論理コンテキストを識別し、この情報をパケットに付加するために、パケット内の情報、並びに、パケットを受信した物理ポートを使用する。同様に、宛先マシンの前の最後の管理される転送要素は、パケットをその宛先に転送する前に、論理コンテキストを除去する。加えて、パケットに付加された論理コンテキストは、いくつかの実施形態では、途中の中間の管理される転送要素によって変更されてよい。このように、エンドマシン（及び、エンドマシンのネットワークインタフェース）は、パケットが送信される論理ネットワークを意識する必要はない。結果として、エンドマシン及びそのネットワークインタフェースは、論理ネットワークに適応するように構成される必要はない。代わりに、ネットワークコントローラは、管理される転送要素のみを構成する。加えて、転送処理の大部分は、エッジ転送要素で実行されるため、ネットワークのための転送リソースの全体は、より多くのマシンが追加されるにつれて（各々の物理エッジ転送要素は、そのように多くのマシンが取り付けられておくことができるだけであるため）、自動的にスケーリングすることになる。
【０５３４】
パケットに付加された（例えば、プリペンドされた）論理コンテキストでは、いくつかの実施形態は、論理出口ポートを含むだけである。すなわち、パケットをカプセル化する論理コンテキストは、明示的なユーザＩＤを含まない。代わりに、論理コンテキストは、最初のホップで行われた論理転送決定（すなわち、宛先論理ポートについての決定）を取り込む。これから、ユーザＩＤ（すなわち、パケットが属するＬＤＰＳ）を、より後の転送要素で、論理出口ポートを調べることによって（論理出口ポートが、特定のＬＤＰＳの一部であるとして）、非明示的に決定することができる。これは、結果として、管理される転送要素が、ＩＤ内の情報の複数の部分を決定するためにコンテキストＩＤをスライスする必要がないことを意味する、フラットなコンテキスト識別子をもたらす。
【０５３５】
いくつかの実施形態では、出口ポートは、３２ビットＩＤである。しかしながら、いくつかの実施形態での論理コンテキストを処理する管理される転送要素のためのソフトウェア転送要素の使用は、論理コンテキストのサイズを（例えば、６４ビット以上に）変更するために、システムがいつでも変更されることを可能にするが、ハードウェア転送要素は、コンテキスト識別子のための特定のビット数を使用することに、より制約される傾向がある。加えて、本明細書に記載のような論理コンテキスト識別子を使用することは、論理データ（すなわち、出口コンテキストＩＤ）及び送信元／宛先アドレスデータ（すなわち、ＭＡＣアドレス）間の明示的な分離を結果としてもたらす。送信元及び宛先アドレスは、論理入口及び出口ポートにマッピングされるが、情報は、パケット内に別々に格納される。したがって、ネットワーク内の管理されるスイッチング要素では、パケットを、物理アドレス情報へのいかなる追加のルックアップもなしに、パケットをカプセル化する論理データ（すなわち、論理出口情報）に完全に基づいて転送することができる。
【０５３６】
いくつかの実施形態では、管理される転送要素内のパケット処理は、パケットをディスパッチポートに繰り返し送信し、パケットを効率的にスイッチング要素に再提出することを伴う。いくつかの実施形態では、ソフトウェアスイッチング要素を使用することは、このようなパケットの再提出を実行する能力を提供する。ハードウェア転送要素は、一般に、（部分的に、処理を実行するためのＡＳＩＣの使用により）固定されたパイプラインを伴うが、いくつかの実施形態のソフトウェア転送要素は、再提出を実行するまでの遅延はたいしたことがないため、パケット処理パイプラインを必要な限り拡張することができる。
【０５３７】
加えて、いくつかの実施形態は、関連するパケットの単一のセット（例えば、単一のＴＣＰ／ＵＤＰフロー）内の後続のパケットのための複数のルックアップの最適化を可能にする。最初のパケットが到着すると、管理される転送要素は、ルックアップのすべてを実行し、パケットを完全に処理するために再提出する。転送要素は、次に、決定の結果（例えば、パケットへの出口コンテキストの追加、及び、特定のトンネルを介する転送要素の特定のポートからのネクストホップの転送決定）を、すべての他の関連するパケットで共有されることになるパケットの固有の識別子（すなわち、ＴＣＰ／ＵＤＰフローの固有の識別子）と共にキャッシュする。いくつかの実施形態は、キャッシュされた結果を、追加の最適化のための転送要素のカーネルにプッシュする。固有の識別子を共有する追加のパケット（すなわち、同じフロー内の追加のパケット）のために、転送要素は、パケットに実行するアクションのすべてを特定する単一のキャッシュルックアップを使用することができる。パケットのフローが完了したら（例えば、識別子に一致するパケットがない特定の長さの時間後）、いくつかの実施形態では、転送要素は、キャッシュをフラッシュする。この複数ルックアップの使用は、いくつかの実施形態では、物理空間（例えば、物理ポートのＭＡＣアドレス）から論理空間（例えば、論理スイッチの論理ポートに対する論理転送決定）へ、次に、物理空間（例えば、スイッチング要素の物理出力ポートへの論理出口コンテキストのマッピング）へと戻るパケットのマッピングを伴う。
【０５３８】
物理及び論理アドレスの明示的な分離を提供するためにカプセル化を使用するこのような論理ネットワークは、ＶＬＡＮのようなネットワーク仮想化に対する他のアプローチを上回る重要な利点を提供する。例えば、タグ付け技術（例えば、ＶＬＡＮ）は、タグに関連付けられたルールのみをパケットに適用するために、転送テーブルをセグメント化するために、パケットに配置されたタグを使用する。これは、新しい空間を導入するのではなく、既存のアドレス空間をセグメント化するだけである。結果として、アドレスは、仮想及び物理領域の両方の中のエンティティに使用されるため、それらは、物理転送テーブルにさらされなければならない。このように、階層的なアドレスマッピングからくる集約の特性を利用することができない。加えて、タグ付けによって新しいアドレス空間は導入されないため、仮想コンテキストのすべては、同じアドレス指定モデルを使用しなければならず、仮想アドレス空間は、物理アドレス空間と同じであるように制限される。タグ付け技術のさらなる欠点は、アドレス再マッピングによる移動性の利点を得ることができないことである。
【０５３９】
ＸＩ．電子システム
図６４は、本発明のいくつかの実施形態を実現する電子システム６４００を概念的に示す。電子システム６４００は、上述した制御、仮想化、又はオペレーティングシステムアプリケーションのいずれかを実行するために使用されてよい。電子システム６４００は、コンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータ、など）、電話、ＰＤＡ、又は任意の他の種類の電子デバイスであってよい。このような電子システムは、様々なタイプのコンピュータ可読媒体、及び、様々な他のタイプのコンピュータ可読媒体のためのインタフェースを含む。電子システム６４００は、バス６４０５、処理ユニット（複数可）６４１０、システムメモリ６４２５、読み取り専用メモリ６４３０、永久記憶デバイス６４３５、入力デバイス６４４０、及び出力デバイス６４４５を含む。
【０５４０】
バス６４０５は、すべてのシステム、周辺機器、及びチップセットバスを集合的に表し、チップセットバスは、電子システム６４００の多数の内部デバイスを通信可能に接続する。例えば、バス６４０５は、読み取り専用メモリ６４３０を有する処理ユニット（複数可）６４１０、システムメモリ６４２５、及び永久記憶デバイス６４３５を通信可能に接続する。
【０５４１】
これらの様々なメモリユニットから、処理ユニット（複数可）６４１０は、本発明の処理を実行するために、実行する命令、及び処理するデータを取り出す。処理ユニット（複数可）は、異なる実施形態では、単一のプロセッサ又はマルチコアプロセッサであってよい。
【０５４２】
読み取り専用メモリ（ＲＯＭ）６４３０は、処理ユニット（複数可）６４１０、及び電子システムの他のモジュールによって必要とされる静的データ、及び命令を格納する。他方では、永久記憶デバイス６４３５は、読み書きメモリデバイスである。このデバイスは、電子システム６４００がオフの場合でも、命令及びデータを格納する、不揮発性メモリユニットである。本発明のいくつかの実施形態は、（磁気又は光ディスク、及びその対応ディスクドライブのような）大容量記憶デバイスを、永久記憶デバイス６４３５として使用する。
【０５４３】
他の実施形態は、（フロッピー（登録商標）ディスク、フラッシュドライブ、などのような）リムーバブル記憶デバイスを、永久記憶デバイスとして使用する。永久記憶デバイス６４３５と同様に、システムメモリ６４２５は、読み書きメモリデバイスである。しかしながら、しかしながら、永久記憶デバイス６４３５とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み書きメモリである。システムメモリは、プロセッサが実行時に必要とする命令の一部及びデータを格納する。いくつかの実施形態では、本発明のプロセスは、システムメモリ６４２５、永久記憶デバイス６４３５、及び／又は読み取り専用メモリ６４３０に格納される。これらの様々なメモリユニットから、処理ユニット（複数可）６４１０は、いくつかの実施形態のプロセスを実行するために、実行する命令及び処理するデータを取り出す。
【０５４４】
バス６４０５は、入力及び出力デバイス６４４０及び６４４５にも接続する。入力デバイスは、ユーザが、電子システムに情報を通信し、コマンドを選択することを可能にする。入力デバイス６４４０は、英数字キーボード及びポインティングデバイス（「カーソル制御デバイス」とも呼ばれる）を含む。出力デバイス６４４５は、電子システムが生成した画像を表示する。出力デバイスは、プリンタ、及び、陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）のような表示デバイスを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【０５４５】
最後に、図６４に示すように、バス６４０５は、また、電子システム６４００を、ネットワークアダプタ（図示せず）を介してネットワーク６４６５に結合する。このように、コンピュータは、（ローカルエリアネットワーク（「ＬＡＮ」）のような）コンピュータのネットワーク、ワイドエリアネットワーク（「ＷＡＮ」）、若しくはインターネット、又は、インターネットのようなネットワークのネットワークの一部であってよい。電子システム６４００のいずれか又はすべての構成要素は、本発明と共に使用されてよい。
【０５４６】
いくつかの実施形態は、コンピュータプログラム命令を、機械可読又はコンピュータ可読媒体（代わりに、コンピュータ可読記憶媒体、機械可読媒体、又は機械可読記憶媒体とも呼ばれる）に格納する、マイクロプロセッサ、ストレージ、及びメモリのような電子構成要素を含む。このようなコンピュータ可読媒体のいくつかの例は、ＲＡＭ、ＲＯＭ、読み取り専用コンパクトディスク（ＣＤ−ＲＯＭ）、追記型コンパクトディスク（ＣＤ−Ｒ）、書き換え可能コンパクトディスク（ＣＤ−ＲＷ）、読み取り専用デジタル多用途ディスク（例えば、ＤＶＤ−ＲＯＭ、二層ＤＶＤ−ＲＯＭ）、様々な追記型／書き換え可能ＤＶＤ（例えば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、など）、フラッシュメモリ（例えば、ＳＤカード、ｍｉｎｉ−ＳＤカード、ｍｉｃｒｏ−ＳＤカード、など）、磁気及び／又は固体ハードドライブ、読み取り専用及び記録可能ブルーレイディスク（登録商標）、超高密度光ディスク、任意の他の光又は磁気媒体、並びにフロッピー（登録商標）ディスクを含む。コンピュータ可読媒体は、少なくとも１つの処理ユニットによって実行可能で、様々な動作を実行する命令のセットを含むコンピュータプログラムを格納することができる。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されるような機械コード、及び、インタプリタを使用するコンピュータ、電子構成要素、又はマイクロプロセッサによって実行される、より高いレベルのコードを含むファイルを含む。
【０５４７】
上記の説明は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサに言及しているが、いくつかの実施形態は、特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような、１つ又は複数の集積回路によって実行される。いくつかの実施形態では、このような集積回路は、回路自体に格納された命令を実行する。
【０５４８】
本明細書で使用される「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」という用語は、すべて、電子的又は他の技術的デバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書の目的のために、表示又は表示するという用語は、電子デバイス上での表示を意味する。本明細書で使用される「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「機械可読媒体」という用語は、コンピュータによって読み取り可能な形式で情報を格納する有形の物理的物体に完全に限定される。これらの用語は、いかなる無線信号、有線のダウンロード信号、及びいかなる他の一時的な信号も除外する。
【０５４９】
本発明を、多数の特定の詳細を参照して説明してきたが、当業者は、本発明が、本発明の要旨から逸脱することなく、他の特定な形態で具体化されてよいことを認識するであろう。加えて、（図１４、１６、３２、３５、４９、５１、及び５２を含む）多数の図面は、プロセスを概念的に示す。これらのプロセスの特定の動作は、図示及び説明された正確な順序で実行されなくてよい。特定の動作は、ひと続きの動作で実行されなくてよく、異なる特定の動作が、異なる実施形態で実施されてよい。さらに、プロセスは、いくつかのサブプロセスを使用して、又は、より大きいマクロプロセスの一部として実施されてよい。したがって、当業者は、本発明が、上記の例示的な詳細によって限定されず、添付の特許請求の範囲によって定義されるべきであることを理解するであろう。
【図１】
0005870192.tif 000002
【図２】
0005870192.tif 000003
【図３】
0005870192.tif 000004
【図４】
0005870192.tif 000005
【図５】
0005870192.tif 000006
【図６】
0005870192.tif 000007
【図７】
0005870192.tif 000008
【図８】
0005870192.tif 000009
【図９】
0005870192.tif 000010
【図１０】
0005870192.tif 000011
【図１１】
0005870192.tif 000012
【図１２】
0005870192.tif 000013
【図１３Ａ】
0005870192.tif 000014
【図１３Ｂ】
0005870192.tif 000015
【図１３Ｃ】
0005870192.tif 000016
【図１４】
0005870192.tif 000017
【図１５】
0005870192.tif 000018
【図１６】
0005870192.tif 000019
【図１７】
0005870192.tif 000020
【図１８】
0005870192.tif 000021
【図１９】
0005870192.tif 000022
【図２０】
0005870192.tif 000023
【図２１】
0005870192.tif 000024
【図２２】
0005870192.tif 000025
【図２３】
0005870192.tif 000026
【図２４】
0005870192.tif 000027
【図２５】
0005870192.tif 000028
【図２６】
0005870192.tif 000029
【図２７】
0005870192.tif 000030
【図２８】
0005870192.tif 000031
【図２９】
0005870192.tif 000032
【図３０Ａ】
0005870192.tif 000033
【図３０Ｂ】
0005870192.tif 000034
【図３１】
0005870192.tif 000035
【図３２】
0005870192.tif 000036
【図３３】
0005870192.tif 000037
【図３４】
0005870192.tif 000038
【図３５】
0005870192.tif 000039
【図３６】
0005870192.tif 000040
【図３７】
0005870192.tif 000041
【図３８】
0005870192.tif 000042
【図３９】
0005870192.tif 000043
【図４０】
0005870192.tif 000044
【図４１】
0005870192.tif 000045
【図４２】
0005870192.tif 000046
【図４３】
0005870192.tif 000047
【図４４】
0005870192.tif 000048
【図４５Ａ】
0005870192.tif 000049
【図４５Ｂ】
0005870192.tif 000050
【図４６】
0005870192.tif 000051
【図４７Ａ】
0005870192.tif 000052
【図４７Ｂ】
0005870192.tif 000053
【図４８】
0005870192.tif 000054
【図４９】
0005870192.tif 000055
【図５０】
0005870192.tif 000056
【図５１】
0005870192.tif 000057
【図５２】
0005870192.tif 000058
【図５３】
0005870192.tif 000059
【図５４】
0005870192.tif 000060
【図５５】
0005870192.tif 000061
【図５６】
0005870192.tif 000062
【図５７】
0005870192.tif 000063
【図５８】
0005870192.tif 000064
【図５９】
0005870192.tif 000065
【図６０】
0005870192.tif 000066
【図６１】
0005870192.tif 000067
【図６２】
0005870192.tif 000068
【図６３】
0005870192.tif 000069
【図６４】
0005870192.tif 000070