(58)【調査した分野】(Int.Cl.,DB名)
前記パケットを前記第2の管理される転送要素に転送する工程が、前記第1及び第2の管理される転送要素の間のトンネルにおいて前記パケットをカプセル化することを含むことを特徴とする、請求項1に記載の方法。
前記第2の論理L2ドメインについて前記論理L2処理を行う工程が、(i)前記第2の論理L2ドメインについて入口ACL動作のセットを行うことと、(ii)前記パケットの宛先アドレスに対応する前記第2の論理L2ドメインの論理出口ポートを特定することと、を含むことを特徴とする、請求項1に記載の方法。
前記第2の論理L2ドメインについて前記論理L2処理を行う工程が、前記第2の論理L2ドメインについて出口ACL動作のセットを行うことをさらに含むことを特徴とする、請求項3に記載の方法。
前記パケットを前記第2の管理される転送要素に転送する工程が、前記論理出口ポートを前記第2の管理される転送要素にマッピングすることを含むことを特徴とする、請求項3に記載の方法。
前記第1の論理L2ドメインについて前記論理L2処理を行う工程が、(i)前記第1の論理L2ドメインへと前記パケットをマッピングすることと、(ii)前記第1の論理L2ドメインについて入口ACL動作のセットを行うことと、(iii)前記論理ルータに対応する前記第1の論理L2ドメインの論理出口ポートを特定することと、(iv)前記第1の論理L2ドメインについて出口ACL動作のセットを行うことと、を含むことを特徴とする、請求項1に記載の方法。
前記特定された論理出口ポートは、前記第2の論理L2ドメインのIPサブネットと関連づけられており、前記パケットは前記IPサブネット内の宛先IPアドレスを有していることを特徴とする、請求項8に記載の方法。
前記第2の管理される転送要素は、前記パケットに格納された前記コンテキスト情報に基づいて、前記第2の論理L2ドメインについて出口ACL動作のセットを行い、及び前記パケットを宛先マシンへと届けることを特徴とする、請求項1に記載の方法。
ネットワークにおいてデータを転送する管理される転送要素(MFE)を管理するためのネットワークコントローラのための、論理L2スイッチング及び論理L3ルーティングを行うように第1及び第2のMFEを構成する方法であって、
前記第1のMFEに直接結合する第1のマシンによって前記第1のMFEへと送られるパケットについて、(i)前記パケットを論理ルータに論理的に転送するための、前記第1のマシンが論理的に接続している第1の論理L2ドメインについての論理L2処理と、(ii)前記パケットの宛先アドレスに関連する第2のマシンが所属している第2の論理L2ドメインへと前記パケットを論理的に転送するための、前記論理ルータについての論理L3処理と、(iii)前記第2の論理L2ドメインについての論理L2処理と、(iv)前記論理L2処理が前記第1のMFEによって行われたことを示す前記パケットに格納されるコンテキスト情報とともに、前記第2のMFEへと前記パケットを転送することと、を実現するように前記第1のMFEを構成するためのデータレコードの第1のセットを生成する工程と、
前記第1のMFEから受け取られ前記第2のマシンへと宛てられたパケットについて、前記パケットに格納された前記コンテキスト情報に基づいて、前記第2のマシンへと前記パケットを届けるための、前記第2の論理L2ドメインについての論理L2処理を実現するように前記第2のMFEを構成するためのデータレコードの第2のセットを生成する工程と、
を含むことを特徴とする方法。
前記第2のMFEによって実現される前記第2の論理L2ドメインについての前記論理L2処理が、前記パケットが前記第2のマシンへと届けられることを許可するか否かを決定するための出口ACL動作のセットを含むことを特徴とする、請求項11に記載の方法。
前記第1のMFEによって実現される前記第2の論理L2ドメインについての前記論理L2処理が、前記第2の論理L2ドメインについて追加の論理L2処理を行うか否かを判定するための入口ACL動作のセットを含むことを特徴とする、請求項11に記載の方法。
ネットワークを管理するネットワークコントローラのための、論理L3ルータと、論理的に複数のマシンに結合する少なくとも1つの論理L2スイッチと、を備える論理ネットワークを実現するために、複数の管理される転送要素(MFE)を構成する方法であって、
前記論理ネットワークを実現し、前記マシンの少なくとも1つに直接結合する前記複数のMFEのうちのそれぞれのMFEについて、前記MFEと直接結合する前記少なくとも1つのマシンによって送られるパケットについて前記論理L2スイッチ及び論理L3ルータを実現するように前記MFEを構成するためのデータレコードの第1のセットを生成する工程と、
前記複数のMFEのうちのそれぞれのMFEについて、前記MFEと直接結合する前記少なくとも1つのマシンによって送られるパケットのサブセットに対するネットワークアドレス変換(NAT)処理を実現するように前記MFEを構成するためのデータレコードの第2のセットを生成する工程と、
を含む方法であって、
前記パケットのサブセットは、前記パケットを前記MFEへと送った前記マシンと同じ論理L2スイッチと論理的に結合していない宛先へと送られるパケットを含む
ことを特徴とする方法。
前記NAT処理が、(i)パケットのオリジナル送信元ネットワークアドレスを新しい送信元ネットワークアドレスに変換する送信元NAT動作と、(ii)前記パケットのオリジナル宛先アドレスを新しい宛先ネットワークアドレスに変換する宛先NAT動作と、のうち少なくとも1つを含むことを特徴とする、請求項15に記載の方法。
特定のMFEについて生成されたデータレコードの前記第2のセットは、前記特定のMFE及び前記MFEへと前記パケットを送った前記マシンと同じ物理ホストマシンで動作するデーモンへとパケットを送るように前記MFEを構成することを特徴とする、請求項15に記載の方法。
前記デーモンは、前記パケットについて新しい送信元ネットワークアドレスと新しい宛先ネットワークアドレスとの一方を特定するNATテーブルを格納することを特徴とする、請求項18に記載の方法。
【発明を実施するための形態】
【0018】
本発明のいくつかの実施形態は、論理データパス(LDP)セット(例えば、論理ネットワーク)が、物理ネットワークのスイッチング要素によって実装されることを可能にするネットワーク制御システムを提供する。LDPセットを実装するために、いくつかの実施形態のネットワーク制御システムは、論理転送プレーンデータから物理制御プレーンデータを生成する。物理制御プレーンデータは、次に、管理されるスイッチング要素にプッシュされ、そこで、典型的には、物理転送プレーンデータに変換され、物理転送プレーンデータは、管理されるスイッチング要素がそれらの転送決定を実行することを可能にする。物理転送データに基づいて、管理されるスイッチング要素は、物理制御プレーンデータ内で指定される論理処理ルールにしたがって、データパケットを処理することができる。
【0019】
単一の論理データパスセットは、物理エンドポイント又は仮想エンドポイントのいずれかに取り付けることができるいくつかの論理ポートを相互接続するために、スイッチングファブリックを提供する。いくつかの実施形態では、このようなLDPセット及び論理ポートの作成及び使用は、仮想ローカルエリアネットワーク(VLAN)に対応する論理サービスモデルを提供する。このモデルは、いくつかの実施形態では、ネットワーク制御システムの動作を、論理L2スイッチング機能のみの定義に制限する。しかしながら、他の実施形態は、ネットワーク制御システムの動作を、論理L2スイッチング機能及び論理L3スイッチング機能の両方に拡張する。
【0020】
いくつかの実施形態のネットワーク制御システムは、以下の論理L3スイッチング機能をサポートする。
・論理ルーティング。パケットのためのL2スイッチングだけを実行する代わりに、いくつかの実施形態のネットワーク制御システムは、また、L2ブロードキャストドメイン(IPサブネット)を横切る場合、インターネットプロトコル(IP)アドレスに基づいてパケットを転送するように、管理されるスイッチング要素に命令するために、物理制御プレーンデータを定義する。このような論理L3ルーティングは、L2ネットワークのスケーラビリティの問題を解決する。
・ゲートウェイ仮想化。純粋なL2インタフェースを使用することによって外部ネットワークとインタフェースする代わりに、いくつかの実施形態のネットワーク制御システムは、外部ネットワークと相互作用するために、IPインタフェースを使用することができる。いくつかの実施形態では、ネットワーク制御システムは、外部ネットワークに対する複数の物理出口ポイント及び入口ポイントが存在する場合でも、単一の論理ゲートウェイを定義することによって、このようなIPインタフェースを定義する。したがって、いくつかの実施形態は、ゲートウェイ仮想化を使用することによって、外部IPネットワークとインタフェースする。
・ネットワークアドレス変換。L3サブネット全体が、変換された(NATされた)ネットワークアドレスであってよい。いくつかの実施形態では、論理ネットワークは、プライベートアドレスを使用し、外部ネットワークのためのNATされたIPアドレスのみを公開する。さらに、いくつかの実施形態では、論理ネットワークのサブネットは、きめ細かいアプリケーションレベルのルーティング決定を実施するために、NATを介して相互接続し、又は、宛先NAT処理を使用する。
・ステートフルフィルタリング。NAT処理と同様に、いくつかの実施形態は、ステートフルアクセス制御リスト(ACL)を使用することによって、サブネットを外部ネットワークから分離する。また、いくつかの実施形態は、ACLを論理サブネット間に配置する。
・負荷分散。いくつかの場合では、サービスを提供するために、論理ネットワークが使用される。これら及び他の場合に関して、ネットワーク制御システムは、アプリケーションクラスタのための仮想IPアドレスを提供する。いくつかの実施形態では、ネットワーク制御システムは、負荷分散動作を指定し、負荷分散動作は、入りアプリケーショントラフィックを論理IPアドレスのセットに対して拡散させることができる。
・DHCP。仮想マシン(VM)は、論理ネットワーク内で動的IPアドレス割り当てサービスを提供するように設定することができるが、サービスプロバイダは、インフラストラクチャレベルでの動的ホスト構成プロトコル(DHCP)サービスのより効率的な実現を好む可能性がある。したがって、いくつかの実施形態のネットワーク制御システムは、インフラストラクチャレベルでのDHCPサービスの効率的な実現を提供する。
【0021】
これらのL3機能のそれぞれに関する設計を以下に説明する。実装に関して、機能は、大部分独立しているため、当業者は、これらの機能が、いくつかの実施形態のネットワーク制御システムによってすべて提供される必要はないことを理解するであろう。さらに機能を説明する前に、いくつかの仮定が言及されるべきである。これらの仮定は、以下の様なものである。
・大規模ネットワーク。複数のL2ネットワークにまたがる論理L3ネットワークは、論理L2ネットワークより大きくなる。いくつかの実施形態は、マップリデュース分散処理技術を使用することによって、10Kサーバと同じくらい大きいサーバクラスタに関する論理L3の問題を解決する。
・物理トラフィック非局所性。データセンタ内の論理サブネットは、データセンタ内でかなりのトラフィックを交換する可能性がある。いくつかの実施形態は、トラフィックの局所性を、これが可能な程度に維持する。上述したマップリデュース例では、トラフィックは、エンドポイントに関して局所性を持たない。
・論理トラフィック局所性。論理サブネット間で交換されるトラフィックになると、局所性は実際に存在する。すなわち、すべての論理ネットワークが、上述したマップリデュースクラスタに関するクライアントを持つわけではない。
・機能の配置。参照により本明細書に組み込まれる米国特許出願第13/177,535号に記載のように、管理されるスイッチング要素は、いくつかの実施形態では、(1)物理ネットワークのエッジスイッチング要素(すなわち、物理ネットワークによって接続された仮想又は物理コンピューティングデバイスとの直接接続を有するスイッチング要素)、並びに、(2)制御されるエッジスイッチング要素の動作を単純に及び/又は容易にするために、管理されるスイッチング要素階層内に挿入される非エッジスイッチング要素である。米国特許出願第13/177,535号にさらに記載のように、エッジスイッチング要素は、いくつかの実施形態では、(1)ネットワークによって接続された仮想又は物理コンピューティングデバイスとの直接接続を有するスイッチング要素、並びに、(2)ネットワークの第1の管理される部分を、ネットワークの第2の管理される部分(例えば、第1の管理される部分と異なる物理的位置内の部分)、又は、ネットワークの管理されない部分(例えば、企業の内部ネットワーク)に接続するインテグレーション要素(エクステンダと呼ばれる)である。いくつかの実施形態は、論理L3ルーティングを、理想的には、第1の管理されるエッジスイッチング要素で、すなわち、最初のホップエッジスイッチング要素で実行し、第1の管理されるエッジスイッチング要素は、物理ネットワークによって相互接続される仮想マシンもホストするハイパーバイザ内で実装されてよい。いくつかの実施形態のネットワーク制御システムは、このとき、非エッジスイッチング要素(内部ネットワーク)を、デバイスを相互接続するファブリックに過ぎないものとして考えることができるため、理想的には、最初のホップスイッチング要素は、L3ルーティングのすべて又は大部分を実行する。
【0022】
以下に記載の実施形態のいくつかは、1つ又は複数の共有転送要素を管理するための1つ又は複数のコントローラ(以下、コントローラインスタンスとも呼ばれる)によって形成される新規の分散ネットワーク制御システムで実施される。いくつかの実施形態での共有転送要素は、仮想若しくは物理ネットワークスイッチ、ソフトウェアスイッチ(例えば、Open vSwitch)、ルータ、及び/又は、他のスイッチングデバイス、並びに、これらのスイッチ、ルータ、及び/又は他のスイッチングデバイス間の接続を確立する任意の他のネットワーク要素(負荷分散装置、などのような)を含むことができる。このような転送要素(例えば、物理スイッチ又はルータ)は、以下、スイッチング要素とも呼ばれる。既製のスイッチとは対照的に、ソフトウェア転送要素は、いくつかの実施形態では、そのスイッチングテーブル(複数可)及び論理を独立デバイス(例えば、独立コンピュータ)のメモリに格納することによって形成されるスイッチであり、他の実施形態では、そのスイッチングテーブル(複数可)及び論理を、ハイパーバイザ、及び、そのハイパーバイザ上の1つ又は複数の仮想マシンも実行するデバイス(例えば、コンピュータ)のメモリに格納することによって形成されるスイッチである。
【0023】
いくつかの実施形態では、コントローラインスタンスは、システムが、ユーザからの論理データパスセットを受け入れ、これらの論理データパスセットを実装するためにスイッチング要素を構成することを可能にする。いくつかの実施形態では、コントローラインスタンスの1つのタイプは、1つ又は複数のモジュールを実行するデバイス(例えば、汎用コンピュータ)であり、1つ又は複数のモジュールは、論理制御プレーンからのユーザ入力を、論理転送プレーンに変換し、次に、論理転送プレーンデータを、物理制御プレーンデータに変換する。いくつかの実施形態でのこれらのモジュールは、制御モジュール及び仮想化モジュールを含む。制御モジュールは、ユーザが、論理データパスセットを指定し、ポピュレートすることを可能にし、仮想化モジュールは、論理データパスセットを物理スイッチングインフラストラクチャ上にマッピングすることによって、指定された論理データパスセットを実装する。いくつかの実施形態では、制御アプリケーション及び仮想化アプリケーションは、2つの別個のアプリケーションであり、他の実施形態では、それらは、同じアプリケーションの一部である。
【0024】
特定の論理データパスセットのための論理転送プレーンデータから、いくつかの実施形態の仮想化モジュールは、ユニバーサル物理制御プレーン(UPCP)データを生成し、UPCPデータは、論理データパスセットを実装する任意の管理されるスイッチング要素の一般的なものである。いくつかの実施形態では、この仮想化モジュールは、特定の論理データパスセットのためのマスタコントローラであるコントローラインスタンスの一部である。このコントローラは、論理コントローラと呼ばれる。
【0025】
いくつかの実施形態では、UPCPデータは、次に、特定の管理されるスイッチング要素のためのマスタ物理コントローラインスタンスであるコントローラインスタンスによって、又は、「Chassis Controller」という表題の、代理人整理番号NCRA.P0081を有する同時出願の米国特許出願
**にさらに記載されるような、特定の管理されるスイッチング要素のためのシャーシコントローラによって、各々の特定の管理されるスイッチング要素のためのカスタマイズされた物理制御プレーン(CPCP)データに変換され、この同時出願の米国特許出願は、参照により本明細書に組み込まれる。シャーシコントローラがCPCPデータを生成する場合、シャーシコントローラは、物理コントローラを介して、論理コントローラの仮想化モジュールからUPCPデータを取得する。
【0026】
物理コントローラ又はシャーシコントローラのいずれがCPCPデータを生成するのかにかかわらず、特定の管理されるスイッチング要素のためのCPCPデータは、管理されるスイッチング要素に伝播される必要がある。いくつかの実施形態では、CPCPデータは、ネットワーク情報ベース(NIB)データ構造を介して伝播され、NIBデータ構造は、いくつかの実施形態では、オブジェクト指向データ構造である。NIBデータ構造を使用することのいくつかの例は、参照により本明細書に組み込まれる米国特許出願第13/177,529号及び第13/177,533号に記載されている。これらの出願に記載のように、NIBデータ構造は、また、異なるコントローラインスタンス間の通信媒体として働くことができるように、そして、論理データパスセット(例えば、論理スイッチング要素)、及び/又は、これらの論理データパスセットを実装する管理されるスイッチング要素に関するデータを格納するように、いくつかの実施形態で使用される。
【0027】
しかしながら、他の実施形態は、CPCPデータを物理コントローラ又はシャーシコントローラから管理されるスイッチング要素に伝播させるために、コントローラインスタンス間で通信するために、並びに、論理データパスセット及び/又は管理されるスイッチング要素に関するデータを格納するために、NIBデータ構造を使用しない。例えば、いくつかの実施形態では、物理コントローラ及び/又はシャーシコントローラは、OpenFlowエントリを介して、管理されるスイッチング要素と通信し、構成プロトコルを介して更新する。また、いくつかの実施形態では、コントローラインスタンスは、データを交換するために、1つ又は複数の直接通信チャネル(例えば、RPCコール)を使用する。加えて、いくつかの実施形態では、コントローラインスタンス(例えば、これらのインスタンスの制御モジュール及び仮想化モジュール)は、リレーショナルデータベースデータ構造に書き込まれる記録に関して論理及び/又は物理データを表現する。いくつかの実施形態では、このリレーショナルデータベースデータ構造は、テーブルマッピングエンジン(nLogと呼ばれる)の入力及び出力テーブルの一部であり、テーブルマッピングエンジンは、コントローラインスタンスの1つ又は複数のモジュールを実装するために使用される。
【0028】
I.論理ルーティング
いくつかの場合のいくつかの実施形態は、論理ルーティングを、L3ドメイン内で動作するLDPSを実装する論理ルータによってL2ドメイン内で動作する2つ以上のLDPセットを相互接続する行為としてモデル化する。論理L2ドメインから別のものに横断するパケットは、いくつかの実施形態では、以下の4つのステップをとることになる。これらの4つのステップは、ネットワーク制御システムが実現する論理処理動作に関して以下に説明される。しかしながら、これらの動作は、ネットワーク制御システムによって生成される物理制御プレーンデータに基づいて、ネットワークの管理されるスイッチング要素によって実行されることを理解すべきである。
【0029】
第1に、パケットは、送信元の論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。パイプラインは、論理ルータの論理ポートに取り付けられた論理ポートに転送されている宛先媒体アクセス制御(MAC)アドレスで終わることになる。
【0030】
第2に、パケットは、再び、それを論理ルータのL3テーブルパイプラインを介して送信することによって、この論理ルータのL3データパスを介して処理されることになる。論理ルータは、ルーティングを必要とするパケットを受信するだけであるため、物理ルータ内の一般的なL2ルックアップステージは、いくつかの実施形態では、ルータのL3データパス内でスキップされる。
【0031】
いくつかの実施形態では、L3転送決定は、論理ルータの論理制御プレーンによって供給されるプレフィックス(転送情報ベース(FIB))エントリを使用することになる。いくつかの実施形態では、論理制御プレーンデータを受信し、このデータを、次にネットワーク制御システムに供給される論理転送プレーンデータに変換するために、制御アプリケーションが使用される。L3転送決定のために、いくつかの実施形態は、最長のプレフィックス一致を実現するために、プレフィックスFIBエントリを使用する。
【0032】
結果として、L3ルータは、パケットを、宛先L2LDPSに「接続」された論理ポートに転送することになる。パケットをさらにそのLDPSに転送する前に、L3ルータは、送信元のMACアドレスを、そのドメインで定義されるものに変更し、同時に、宛先IPアドレスを宛先MACアドレスに解決することになる。解決は、いくつかの実施形態では、L3データパイプラインの最後の「IP出力」ステージによって実行される。同じパイプラインは、TTLを減分し、チェックサムを更新することになる(そして、TTLがゼロになる場合、ICMPで応答する)。
【0033】
いくつかの実施形態は、MACアドレスの書き換えなしでは、次のLDPSで結果として異なる転送決定が生じる可能性があるため、処理されたパケットを次のLDPSに供給する前に、MACアドレスを書き換えることに留意すべきである。従来のルータが、ARPを使用して宛先IPアドレスの解決を実行するとしても、ネクストホップが論理L2データパスである限り、この解決は、仮想化アプリケーション内部のままであるため、いくつかの実施形態は、L3論理ルータ内でこの目的のためにARPを使用しないことにも留意すべきである。
【0034】
第3に、パケットは、宛先論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。宛先L2テーブルパイプラインは、論理出口ポートを決定し、論理出口ポートに沿って、パケットを送信すべきである。未知のMACアドレスの場合、このパイプラインは、何かの分散ルックアップメカニズムに依存することによって、MACアドレス位置を解決することになる。いくつかの実施形態では、管理されるスイッチング要素は、MAC学習アルゴリズムに依存し、例えば、それらは、未知のパケットをフラッドする。これら又は他の実施形態では、MACアドレス位置情報は、他のメカニズム、例えば、アウトオブバンドによって得ることもできる。このようなメカニズムがいくつかの実施形態で利用可能な場合、最後の論理L2テーブルパイプラインは、MACアドレス位置を得るために、このメカニズムを使用する。
【0035】
第4に、パケットは、論理ポートアタッチメントを表す物理ポートに取り付けられた論理ポートに送信される。このステージでは、ポートがポイントツーポイント媒体(例えば、仮想ネットワークインタフェース、VIF)である場合、やり残したものは何もなく、パケットをポートに送信する。しかしながら、最後のLDPSがL3ルータであり、したがって、アタッチメントが物理L3サブネットである場合、アタッチメントポイントは、いくつかの実施形態では、パケットを送出する前に、ARPを使用して宛先IPアドレスを解決する。その場合には、送信元MACアドレスは、出口の指定であり、VIFの場合の論理MACインタフェースアドレスではない。他の実施形態では、ARPを使用して宛先IPアドレスを解決することは、第2のステップ中に、L3論理ルータによって実行される。
【0036】
上記の例では、論理L2データパスと相互接続する単一の論理ルータのみが存在するが、トポロジを制限するものは何もない。当業者は、より多くのLDPセットが、よりリッチなトポロジのために相互接続されてよいことを認識するであろう。
【0037】
いくつかの実施形態では、制御アプリケーションは、L3特有の論理状態が、論理L3パイプラインを指定する1つ又は複数のテーブルに関して定義されることを可能にする。LDPSパイプラインを管理する対応する論理制御プレーンは、静的なルート構成、又は、標準的なルーティングプロトコル上の他のLDPSセットを有するピアに依存することができる。
【0038】
いくつかの実施形態では、仮想化アプリケーションは、上述した4ステップのL2/L3パケット処理の物理制御プレーンデータへの物理的実現を定義し、物理制御プレーンデータは、管理されるスイッチング要素によって物理転送データに変換されると、一連の論理パイプライン実行を実施し、一連のパイプライン実行は、すべて又は主として、最初のホップの管理されるエッジスイッチング要素で実行される。物理トラフィックの局所性を維持するために、最初のホップは、一連のパイプラインを(必要なすべての状態で)実行し、物理ネットワークの最終的な出口位置に向けてトラフィックを直接送信する。ショートカットトンネルが使用される場合、仮想化アプリケーションは、ショートカットトンネルメッシュを、単一のLDPSを超えて、すべての相互接続されたLDPセットのポートの結合に拡張することによって、論理L2データパスを、論理L3データパスと相互接続する。
【0039】
最初のホップですべてが実行されると、最初のホップ要素は、典型的には、パケットが横断する論理ネットワークのすべての状態にアクセスを有する。最初のホップのスイッチング要素での論理パイプラインの実行に関する状態の配布(及び、そのスケーリングの意味)を、以下にさらに説明する。
【0040】
図1は、いくつかの実施形態のネットワークアーキテクチャ100を概念的に示す。具体的には、この図は、論理ルータ105が、2つのLDPセット(例えば、論理ネットワーク)150及び155間でパケットをルーティングすることを示す。図示のように、ネットワークアーキテクチャ100は、論理ルータ105、論理スイッチ110及び115、並びに、マシン120〜145を含む。
【0041】
論理スイッチ110は、米国特許出願第13/177,535号に記載の論理スイッチ(又は、論理スイッチング要素)である。論理スイッチ110は、いくつかの管理されるスイッチング要素(図示せず)にわたって実装される。論理スイッチ110は、L2(レイヤ2)でマシン120〜130間のネットワークトラフィックをルーティングする。すなわち、論理スイッチ110は、論理スイッチ110が有する1つ又は複数の転送テーブル(図示せず)に基づいて、マシン120〜130間で、データリンク層でネットワークデータをルーティングするために、スイッチング決定を行う。論理スイッチ110は、いくつかの他の論理スイッチ(図示せず)と共に、論理ネットワーク150に関するネットワークトラフィックをルーティングする。論理スイッチ115は、別の論理スイッチである。論理スイッチ115は、論理ネットワーク155に関するマシン135〜145間のトラフィックをルーティングする。
【0042】
いくつかの実施形態での論理ルータは、異なる論理ネットワーク間で、L3(レイヤ3−ネットワークレイヤ)でトラフィックをルーティングする。具体的には、論理ルータは、ルーティングテーブルのセットに基づいて、2つ以上の論理スイッチ間でネットワークトラフィックをルーティングする。いくつかの実施形態では、論理ルータは、単一の管理されるスイッチング要素内で実装され、他の実施形態では、論理ルータは、いくつかの異なる管理されるスイッチング要素内で分散的に実装される。これらの異なる実施形態の論理ルータを、以下にさらに詳細に説明する。論理ルータ105は、論理ネットワーク150及び155間で、L3でネットワークトラフィックをルーティングする。具体的には、論理ルータ105は、2つの論理スイッチ110及び115間でネットワークトラフィックをルーティングする。
【0043】
マシン120〜145は、データパケットを交換することができるマシンである。例えば、各マシン120〜145は、マシン120〜145上で実行するアプリケーションが、論理スイッチ110及び115並びに論理ルータ105を介してそれらの間でデータを交換することができるように、ネットワークインタフェースコントローラ(NIC)を有する。
【0044】
論理ネットワーク150及び155は、各ネットワーク内のマシンが、異なるL3アドレスを使用するという点で異なる。例えば、論理ネットワーク150及び155は、企業の2つの異なる部署のための異なるIPサブネットである。
【0045】
動作中、論理スイッチ110及び155並びに論理ルータ105は、スイッチ及びルータのように機能する。例えば、論理スイッチ110は、マシン120〜130の1つから送信され、マシン120〜130の別のものに向かうデータパケットをルーティングする。論理ネットワーク150内の論理スイッチ110は、論理ネットワーク115内のマシン135〜145の1つ行きのデータパケットを受信し、論理スイッチ110は、パケットを論理ルータ105に送信する。論理ルータ105は、次に、パケットのヘッダに含まれる情報に基づいて、パケットを論理スイッチ115にルーティングする。論理スイッチ115は、次に、パケットをマシン135〜145の1つにルーティングする。マシン135〜145の1つから送信されたデータパケットは、同様に、論理スイッチ110及び115並びに論理ルータ105によってルーティングされる。
【0046】
図1は、2つの論理ネットワーク150及び155間でデータをルーティングする単一の論理ルータを示す。当業者は、2つの論理ネットワーク間でパケットをルーティングすることに関与する複数の論理ルータが存在してよいことを認識するであろう。
【0047】
図2は、論理スイッチ及び論理ルータを介してネットワークデータを処理するいくつかの実施形態の処理パイプライン200を概念的に示す。具体的には、処理パイプライン200は、論理スイッチ220、論理ルータ225、及び、次に論理スイッチ230をそれぞれ介してデータパケットを処理する3つのステージ205〜215を含む。この図は、図の上半分に論理ルータ225並びに論理スイッチ220及び230を示し、図の下半分に処理パイプライン200を示す。
【0048】
論理ルータ225は、論理ルータ225が、論理スイッチ220及び220間でデータパケットをルーティングするという点で、
図1を参照して上述した論理ルータ105と同様である。論理スイッチ220及び230は、論理スイッチ110及び115と同様である。論理スイッチ220及び230は、それぞれ、論理ネットワークに関してL2でトラフィックを転送する。
【0049】
論理スイッチ220がパケットを受信すると、論理スイッチ220は、パケットを一方の論理ネットワークで転送するために、論理処理パイプライン200のステージ205(L2処理)を実行する。パケットが別の論理ネットワーク行きである場合、論理スイッチ220は、パケットを論理ルータ225に転送する。論理ルータ225は、次に、L3でデータをルーティングするために、パケットに論理処理パイプライン200のステージ210(L3処理)を実行する。論理ルータ225は、このパケットを別の論理ルータ(図示せず)に送信し、又は、論理ルータ225が論理スイッチ230に結合されている場合、論理ルータ225は、パケットを論理スイッチ230に送信し、論理スイッチ230は、パケットをパケットの宛先マシンに直接送信する。パケットをパケットの宛先に直接送信する論理スイッチ230は、パケットをパケットの宛先に転送するために、論理処理パイプライン200のステージ215(L2処理)を実行する。
【0050】
いくつかの実施形態では、論理スイッチ及び論理ルータは、管理されるスイッチング要素のセット(図示せず)によって実装される。いくつかの実施形態のこれらの管理されるスイッチング要素は、論理処理パイプライン200のような論理処理パイプラインを実行することによって、論理スイッチ及び論理ルータを実装する。いくつかの実施形態の管理されるスイッチング要素は、管理されるスイッチング要素のフローエントリに基づいて論理処理パイプラインを実行する。管理されるスイッチング要素のフローエントリ(図示せず)は、いくつかの実施形態のネットワーク制御システムによって構成される。論理処理パイプライン200のより詳細は、以下でさらに説明する。
【0051】
次の3つの図、
図3、4、及び5は、いくつかの実施形態の論理スイッチ及び論理ルータのいくつかの実装を概念的に示す。
図3及び4は、集中型L3ルーティングの2つの異なる実装を示し、
図5は、分散型L3ルーティングを示す。
【0052】
図3は、ネットワークアーキテクチャ300を概念的に示す。具体的には、
図3は、論理ルータ225が、単一のL3ルータ360(例えば、ハードウェアルータ又はソフトウェアルータ)に実装されることを示す。L3ルータ360は、異なる論理ネットワークに関するパケットをルーティングし、異なる論理ネットワークの各々は、いくつかの異なる管理されるスイッチング要素に実装されるいくつかの論理スイッチを含む。この図は、それぞれ論理的実装及び物理的実装を表す左半分及び右半分に水平方向に分割される。この図は、それぞれレイヤ2及びレイヤ3を表す下半分及び上半分に垂直方向にも分割される。
図3は、L3ルータ360、並びに、管理されるスイッチング要素305、310、315、及び320を含むネットワークアーキテクチャ300を示す。この図は、論理スイッチ220及び230の各々が、3つのVMに論理的に結合されることも示す。
【0053】
L3ルータ360は、論理ルータ225を実装する。L3ルータ360は、論理スイッチ220及び230を含む異なる論理ネットワーク間でパケットをルーティングする。L3ルータ360は、パケットがL3でルーティングされるべき方法を指定するL3エントリ335にしたがってパケットをルーティングする。例えば、いくつかの実施形態のL3エントリは、ルーティングテーブル内のエントリ(例えば、ルート)であり、ルーティングテーブルは、IPアドレスの特定の範囲内の宛先IPアドレスを有するパケットが、論理ルータ225の特定の論理ポートを介して送出されるべきであることを指定する。いくつかの実施形態では、論理ルータ225の論理ポートは、L3ルータのポートにマッピングされ、論理ルータ225は、マッピングに基づいてL3エントリを生成する。論理ルータのポートを、論理ルータを実装するL3ルータにマッピングすることを、以下でさらに説明する。
【0054】
いくつかの実施形態の管理されるスイッチング要素305〜320は、分散的に論理スイッチを実装する。すなわち、これらの実施形態での論理スイッチは、1つ又は複数の管理されるスイッチング要素305〜320にまたがって実装されてよい。例えば、論理スイッチ220は、管理されるスイッチング要素305、310、及び315にまたがって実装されてよく、論理スイッチ230は、管理されるスイッチング要素305、315、及び320にまたがって実装されてよい。論理スイッチ220及び230に論理的に結合される6つのVM362〜374は、図示のように、管理されるスイッチング要素310〜320に結合される。
【0055】
いくつかの実施形態の管理されるスイッチング要素305〜320は、それぞれ、パケットがL2で転送されるべき方法を指定するL2フローエントリにしたがってパケットを転送する。例えば、L2フローエントリは、特定の宛先MACアドレスを有するパケットが、論理スイッチの特定の論理ポートを介して送出されるべきであることを指定することができる。管理されるスイッチング要素305〜320の各々は、L2フローエントリ340のセットを有する(スイッチング要素305〜315のためのフローエントリ340は、単純化のため示されない)。各々の管理されるスイッチング要素のためのL2フローエントリは、コントローラクラスタによって、管理されるスイッチング要素内に構成される。管理されるスイッチング要素のためのL2フローエントリを構成することによって管理されるスイッチング要素を構成することを、以下でさらに詳細に説明する。
【0056】
いくつかの実施形態の管理されるスイッチング要素305は、第2のレベルの管理されるスイッチング要素である。第2のレベルの管理されるスイッチング要素は、管理されるエッジスイッチング要素とは対照的に、マシンとの間でパケットを直接送受信しない、管理される非エッジスイッチング要素である。第2のレベルの管理されるスイッチング要素は、非エッジの管理されるスイッチング要素と、エッジの管理されるスイッチング要素との間のパケット交換を容易にする。米国特許出願第13/177,535号に記載されているプールノード及びエクステンダも、第2のレベルの管理されるスイッチング要素である。いくつかの実施形態の管理されるスイッチング要素305は、エクステンダとして機能する。すなわち、管理されるスイッチング要素305は、1つ又は複数の他のネットワーク(図示せず)によって分離されるリモートの管理されるネットワーク(図示せず)を、通信可能にブリッジする。
【0057】
いくつかの実施形態の管理されるスイッチング要素305は、L3ルータ360に通信可能に結合される。L3でルーティングされる必要があるパケットが存在する場合、管理されるスイッチング要素310〜320は、L3ルータ360がパケットをL3でルーティングするように、管理されるスイッチング要素305にパケットを送信する。L3ルータに実装される集中型の論理ルータについてのさらなる詳細は、
図6〜16を参照して以下でさらに説明する。
【0058】
図4は、ネットワークアーキテクチャ400を概念的に示す。具体的には、
図4は、論理ルータ225が、管理されるスイッチング要素410に実装されることを示す。L3ルータ360がL3でパケットをルーティングするネットワークアーキテクチャ300と対照的に、管理されるスイッチング要素410は、ネットワークアーキテクチャ400で、L3でパケットをルーティングする。この図は、それぞれ論理的実装及び物理的実装を表す左半分及び右半分に水平方向に分割される。この図は、それぞれレイヤ2及びレイヤ3を表す下半分及び上半分に垂直方向にも分割される。
【0059】
ネットワークアーキテクチャ400は、ネットワークアーキテクチャ400がL3ルータ360を含まないことを除いて、ネットワークアーキテクチャ300と同様である。管理されるスイッチング要素410は、論理ルータ225を実装する。すなわち、管理されるスイッチング要素410は、論理スイッチ220及び230を含む異なる論理ネットワーク間でパケットをルーティングする。いくつかの実施形態の管理されるスイッチング要素410は、パケットがL3でルーティングされるべきである方法を指定するL3エントリ405にしたがってパケットをルーティングする。しかしながら、いくつかの実施形態のL3エントリ335とは対照的に、L3エントリ405は、ルーティングテーブルに関するエントリではない。そうではなく、L3エントリ405は、フローエントリである。ルーティングテーブル内のエントリは、パケットの次のホップを見つけるための適切なルックアップテーブルであるが、米国特許出願第13/177,535号に記載のように、フローエントリは、クォリファイア及びアクションを含む。また、L3フローエントリは、ルーティングテーブル(図示せず)内のエントリを生成させる方法を指定することができる。
【0060】
集中型の論理ルータを実装することに加えて、いくつかの実施形態の管理されるスイッチング要素410は、いくつかの管理されるスイッチング要素にまたがって実装される1つ又は複数の論理スイッチを実装する。管理されるスイッチング要素410は、したがって、それ自体のL2フローエントリ340のセット(図示せず)を有する。アーキテクチャ400では、管理されるスイッチング要素410及び310〜320は、一緒に、分散的に論理スイッチ220及び230を実装する。
【0061】
いくつかの実施形態の管理されるスイッチング要素410は、このように、集中型論理ルータ及び論理スイッチの両方を実装する。他の実施形態では、集中型論理ルータ及び論理スイッチの実装は、2つ以上の管理されるスイッチング要素に分割されてよい。例えば、ある管理されるスイッチング要素(図示せず)は、フローエントリを使用して集中型論理ルータを実装することができ、別の管理されるスイッチング要素(図示せず)は、フローエントリに基づいて分散的に論理スイッチを実装することができる。フローエントリに基づいて管理されるスイッチング要素に実装される集中型論理ルータについてのさらなる詳細は、
図17〜24を参照して以下でさらに説明する。
【0062】
図5は、ネットワークアーキテクチャ500を概念的に示す。具体的には、
図5は、論理ルータ225が、いくつかの管理されるスイッチング要素の各々がL3でパケットをルーティングするように、分散的に実装されることを示す。
図5は、ネットワークアーキテクチャ500が、4つの管理されるスイッチング要素505〜520を含むことを示す。
【0063】
管理されるスイッチング要素505〜520は、いくつかの異なる論理ネットワークに関する論理ルータ及びいくつかの論理スイッチを実装する。いくつかの実施形態の管理されるスイッチング要素505〜520の各々は、エッジスイッチング要素である。すなわち、管理されるスイッチング要素は、管理されるスイッチング要素に結合される1つ又は複数のマシンを有する。管理されるスイッチング要素に結合されるマシンは、論理スイッチにも論理的に結合される。管理されるスイッチング要素に結合されるマシンは、同じ論理スイッチには論理的に結合されてもされなくてもよい。
【0064】
管理されるスイッチング要素505〜520の各々は、少なくとも1つの論理ルータ及び少なくとも1つの論理スイッチで実装され、少なくとも1つの論理ルータ及び少なくとも1つの論理スイッチは、管理されるスイッチング要素に結合されたマシンとの間でパケットをルーティング及び転送することになる。すなわち、管理されるスイッチング要素が、管理されるスイッチング要素に結合されたマシンからパケットを受信すると、管理されるスイッチング要素は、論理転送決定及び論理ルーティング決定の両方を行う。管理されるスイッチング要素505〜520の各々は、論理フローエントリ550内のL2エントリ及びL3エントリにしたがって、論理転送及びルーティング決定を行う。論理フローエントリ550は、L2フローエントリ530のセット及びL3フローエントリ535のセットを含む。分散型論理ルータについてのさらなる詳細は、
図25〜30Bを参照して以下でさらに説明する。
【0065】
図6〜16は、ルータに実装された集中型論理ルータを示す。
図6は、
図2を参照して上述した論理処理パイプライン200の例示的な実装を概念的に示す。
図6は、ネットワークアーキテクチャ600を示す。ネットワークアーキテクチャ600では、論理処理パイプライン200は、3つの管理されるスイッチング要素615、620、及び625、並びにL3ルータ635によって実行される。具体的には、L2処理205及びL2処理215は、管理されるスイッチング要素615、620、及び625にまたがって分散的に実行される。L3処理210は、L3ルータ635によって実行される。
図6は、送信元マシン610及び宛先マシン630も示す。
【0066】
管理されるスイッチング要素615は、エッジスイッチング要素に結合されたマシンからパケットを直接受信するエッジスイッチング要素である。管理されるスイッチング要素615は、送信元マシン610からパケットを受信する。管理されるスイッチング要素615が、送信元マシン610からパケットを受信すると、管理されるスイッチング要素615は、パケットを論理的に転送するために、パケットにL2処理205の一部を実行する。
【0067】
管理されるスイッチング要素615と、管理されるスイッチング要素620との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物(例えば、PIF、VIF、など)を有し、ネットワーク構成物には、論理スイッチ220(
図6には示さず)の論理構成物(例えば、論理ポート)がマッピングされる。
【0068】
パケットが、別の論理ネットワーク内にある宛先マシン630に向けられると、パケットは、管理されるスイッチング要素620に転送される。管理されるスイッチング要素620は、次に、L2処理205の残りを実行し、パケットを、集中型論理ルータ(図示せず)を実装するL3ルータ635に送信する。
【0069】
図3を参照して上述したL3ルータ360と同様に、L3ルータ635は、ハードウェアルータ又はソフトウェアルータであり、そのポートは、論理ルータのポートにマッピングされる。L3ルータ635は、パケットを論理的にルーティングするために、パケットにL3処理210を実行する。すなわち、L3ルータ635は、パケットを、別の論理ルータ(図示せず)又は管理されるスイッチング要素620に送信する。
【0070】
管理されるスイッチング要素620は、いくつかの実施形態では、エクステンダとして機能する第2のレベルの管理されるスイッチング要素である。管理されるスイッチング要素620は、L3ルータ635からパケットを受信し、論理処理パイプライン200のL2処理215の実行を開始する。管理されるスイッチング要素620と、管理されるスイッチング要素625との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ230(
図6には示さず)の論理構成物がマッピングされる。
【0071】
この例の管理されるスイッチング要素625は、管理されるスイッチング要素620からパケットを受信する。管理されるスイッチング要素625は、パケットを論理的に転送するために、パケットにL2処理215の残りを実行する。この例では、管理されるスイッチング要素625は、パケットを宛先マシン630に直接送信するスイッチング要素でもある。しかしながら、管理されるスイッチング要素625と、宛先マシン630との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ230(
図6には示さず)の論理構成物がマッピングされる。
【0072】
L2処理205及びL2処理215は、この例では分散的に実行されるが、L2処理205及びL2処理215は、分散的に実行される必要はない。例えば、管理されるスイッチング要素615は、L2処理205全体を実行することができ、管理されるスイッチング要素625は、L2処理215全体を実行することができる。このような場合、管理されるスイッチング要素620は、ちょうど、L3ルータと管理されるスイッチング要素615及び625との間でパケットを中継することになる。
【0073】
図7は、論理スイッチ220、論理ルータ225、及び論理スイッチ230を介してパケットを処理するいくつかの実施形態の論理処理パイプライン200を概念的に示す。具体的には、この図は、
図6を参照して上述したネットワークアーキテクチャ600で実行される場合の論理処理パイプライン200を示す。上述したように、ネットワークアーキテクチャ600では、L2処理205、L3処理210、及びL2処理215は、管理されるスイッチング要素615、620、及び625、並びにL3ルータ635によって実行される。
【0074】
L2処理205は、いくつかの実施形態では、管理されるスイッチング要素615及び620にまたがって実装される論理ネットワーク(図示せず)内の論理スイッチ220(
図7には示さず)を介してパケットを処理する8つのステージ705〜740を含む。いくつかの実施形態では、パケットを受信する管理されるスイッチング要素615は、管理されるスイッチング要素615がパケットを受信すると、L2処理205の一部を実行する。管理されるスイッチング要素620は、次に、L2処理205の残りを実行する。
【0075】
いくつかの実施形態では、パケットは、ヘッダ及びペイロードを含む。ヘッダは、いくつかの実施形態では、フィールドのセットを含み、フィールドのセットは、ネットワークを介してパケットをルーティングするために使用される情報を含む。論理スイッチ及び論理ルータは、ヘッダフィールドに含まれる情報に基づいて、スイッチング/ルーティング決定を決定することができ、いくつかの場合では、ヘッダフィールドの一部又は全部を変更することができる。
【0076】
L2処理205のステージ705では、パケットの論理コンテキストを決定するために、入口コンテキストマッピングがパケットに実行される。いくつかの実施形態では、ステージ705は、論理スイッチ220がパケットを受信すると実行される(例えば、パケットは、管理されるスイッチング要素615によって最初に受信される)。論理コンテキストは、いくつかの実施形態では、論理スイッチに対するパケットの状態を表す。論理コンテキストは、例えば、パケットが属する論理スイッチ、パケットが受信されたときに通過した論理スイッチの論理ポート、パケットが送信されるときに通過する論理スイッチの論理ポート、パケットがいる論理スイッチの論理転送プレーンのステージ、などを指定する。
【0077】
いくつかの実施形態は、パケットの送信元MACアドレス(すなわち、パケットを送信したマシン)に基づいて、パケットの論理コンテキストを決定する。いくつかの実施形態は、パケットの送信元MACアドレス、及び。パケットのインポート(すなわち、入口ポート)(すなわち、パケットが受信されたときに通過した管理されるスイッチング要素615のポート)に基づいて、論理コンテキストルックアップを実行する。他の実施形態は、パケットの論理コンテキストを決定するために、パケットのヘッダ(例えば、MPLSヘッダ、VLAN id、など)内の他のフィールドを使用することができる。
【0078】
第1のステージ705が実行された後、いくつかの実施形態は、論理コンテキストを表す情報を、パケットヘッダの1つ又は複数のフィールドに格納する。これらのフィールドは、論理コンテキストタグ又は論理コンテキストIDと呼ぶこともできる。さらに、論理コンテキストタグは、いくつかの実施形態では、1つ又は複数の既知のヘッダフィールド(例えば、VLAN idフィールド)と一致してよい。このように、これらの実施形態は、ヘッダフィールドが使用されるために定義される方法で、既知のヘッダフィールド又はそれに付随する特徴を利用しない。代わりに、いくつかの実施形態は、論理コンテキストを表す情報を、メタデータとして格納し、メタデータは、(パケット自体に格納される代わりに)パケットに関連付けられ、パケットと共に渡される。
【0079】
いくつかの実施形態では、第2のステージ710は、論理スイッチ220に関して定義される。いくつかのこのような実施形態では、ステージ710は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するとき、論理スイッチへのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチに対して定義された入口ACLに基づいて、パケットは、(例えば、ステージ715によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【0080】
L2処理205の第3のステージ715では、論理スイッチのコンテキストにおいて、パケットにL2転送がパケットに実行される。いくつかの実施形態では、第3のステージ715は、論理スイッチ220に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。
【0081】
さらに、パケットの宛先が別の論理ネットワークである場合(例えば、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ220によって処理される論理ネットワークと異なる場合)、論理スイッチ220は、パケットを論理ルータ225に送信し、論理ルータ225は、次に、パケットを宛先論理ネットワークにルーティングするために、L3処理210を実行することになる。したがって、第3のステージ715では、いくつかの実施形態の管理されるスイッチング要素615は、パケットが、論理ルータ225に関連付けられた論理スイッチの論理ポート(図示せず)を介して論理ルータ225に転送されるべきであると判断する。他の実施形態では、管理されるスイッチング要素615は、パケットが論理ルータ225に転送されるべきであるかどうかを必ずしも判定しない。むしろ、パケットは、論理ルータ225のポートのアドレスを宛先アドレスとして有することになり、管理されるスイッチング要素615は、このパケットを、宛先アドレスにしたがって、論理スイッチの論理ポートを介して転送する。
【0082】
第4のステージ720では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ220の1つ又は複数の論理ポート(例えば、論理出口ポート)から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチ220の特定の論理ポートに対応する1つ又は複数の管理されるスイッチング要素(管理されるスイッチング要素615及び620を含む)の物理ポート(複数可)を識別する。管理されるスイッチング要素615は、前のステージ715で決定された論理ポートがマッピングされる物理ポート(例えば、VIF)が、管理されるスイッチング要素620のポート(図示せず)であると判断する。
【0083】
L2処理205の第5のステージ725は、第4のステージ720で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第4のステージ720で決定された物理ポートに向けてパケットを送信する動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第5のステージ725で決定された物理ポート(複数可)に達するために、パケットを送信するために通過する、L2処理205を実行している管理されるスイッチング要素615のポートのセット(図示せず)の1つ又は複数のポートに関連付けられた1つ又は複数のキュー(図示せず)を決定する。このように、管理されるスイッチング要素は、決定された物理ポート(複数可)にパケットが達するためのネットワーク内の正しい経路に沿って、パケットを転送することができる。
【0084】
図示のように、L2処理205の第6のステージ730は、管理されるスイッチング要素620によって実行される。第6のステージ730は、第1のステージ705と同様である。ステージ730は、管理されるスイッチング要素620がパケットを受信すると実行される。ステージ730では、管理されるスイッチング要素620は、パケットの論理コンテキストをルックアップし、L2出口アクセス制御が、実行されるために残っていると判断する。
【0085】
いくつかの実施形態の第7のステージ735は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第7のステージ735は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後に、論理スイッチ220外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポート外に送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、パケットは、例えば、廃棄されてよい。
【0086】
第8のステージ740は、第5のステージ725と同様である。第8のステージ740では、管理されるスイッチング要素620は、論理スイッチ220の論理出口ポートがマッピングされる管理されるスイッチング要素620の特定の物理ポート(図示せず)を決定する。
【0087】
L3処理210は、L3ルータ635によって実装される論理スイッチ220(
図7には示さず)を介してパケットを処理するための6つのステージ745〜761を含む。上述したように、L3処理は、レイヤ3ネットワークを介してどこにパケットをルーティングするかを決定するための論理ルーティングルックアップのセットを実行することを含む。
【0088】
第1のステージ745は、論理ルータ225がパケットを受信すると(すなわち、論理ルータ225を実装するL3ルータ635がパケットを受信すると)、アクセス制御を決定するための論理入口ACLルックアップを実行する。次のステージ746は、パケットにネットワークアドレス変換(NAT)を実行する。具体的には、ステージ746は、パケットの宛先アドレスを、パケットの送信元マシンから隠されている宛先マシンの実際のアドレスに戻す宛先NAT(DNAT)を実行する。このステージ746は、DNATが有効にされている場合、実行される。
【0089】
次のステージ750は、パケットのL3アドレス(例えば、宛先IPアドレス)及びルーティングテーブル(例えば、L3エントリを含む)に基づいて、レイヤ3ネットワークを介してパケットを送信するために、1つ又は複数の論理ポートを決定するための論理L3ルーティングを実行する。論理ルータ225は、L3ルータ635によって実装されるため、ルーティングテーブルは、L3ルータ635内に構成される。
【0090】
第4のステージ755では、いくつかの実施形態のL3ルータ635は、パケットに送信元NAT(SNAT)も実行する。例えば、L3ルータ635は、送信元NATが有効にされている場合、送信元IPアドレスを隠すために、パケットの送信元IPアドレスを異なるIPアドレスに置き換える。
【0091】
第5のステージ760は、論理ルータ225が、ステージ740で決定されたポートを介してパケットを論理ルータ225の外にルーティングする前に、アクセス制御を決定するための論理L3出口ACLルックアップを実行する。L3出口ACLルックアップは、パケットのL3アドレス(例えば、送信元及び宛先IPアドレス)に基づいて実行される。
【0092】
第6のステージ761は、宛先L3アドレス(例えば、宛先IPアドレス)を宛先L2アドレス(例えば、宛先MACアドレス)に変換するために、アドレス解決を実行する。いくつかの実施形態では、L3ルータ635は、宛先IPアドレスに対応する宛先L2アドレスを見つけるために、(例えば、ARP要求を送信するか、ARPキャッシュをルックアップすることによって)標準的なアドレス解決を使用する。
【0093】
論理ルータ225が宛先論理ネットワークに結合されていない場合、論理スイッチ220は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。論理ルータ225が宛先論理ネットワークに結合されている場合、論理スイッチ220は、宛先論理ネットワーク(すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ)にパケットをルーティングする。
【0094】
L2処理215は、いくつかの実施形態では、管理されるスイッチング要素620及び625にまたがって実装される別の論理ネットワーク(
図7には示さず)内の論理スイッチ230を介してパケットを処理するための8つのステージ765〜798を含む。いくつかの実施形態では、パケットを受信する管理されるネットワーク内の管理されるスイッチング要素625は、管理されるスイッチング要素625が管理されるスイッチング要素620からパケットを受信すると、L2処理215を実行する。ステージ765〜798は、ステージ765〜798が論理スイッチ230によって(すなわち、論理スイッチ230を実装する管理されるスイッチング要素620及び625によって)実行されることを除いて、それぞれ、ステージ705〜740と同様である。すなわち、ステージ765〜798は、L3ルータ635から受信したパケットを、管理されるスイッチング要素620及び625を介して宛先に転送するように実行される。
【0095】
図8は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ800を概念的に示す。具体的には、ネットワークアーキテクチャ800は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、L3ルータ860を示す。下半分には、それぞれ、ホスト890、880、及び885(例えば、Windows(登録商標)及びLinux(登録商標)のようなオペレーティングシステムによって動作されるマシン)で動作している、第2のレベルの管理されるスイッチング要素810、管理されるスイッチング要素815及び820も示される。図は、図の上部及び下部の両方にVM1〜4を示す。
【0096】
この例では、論理スイッチ220は、論理ルータ225、VM1、及びVM2間でデータパケットを転送する。論理スイッチ230は、論理ルータ225、VM3、及びVM4間でデータパケットを転送する。上述したように、論理ルータ225は、論理スイッチ220及び230並びにおそらく他の論理ルータ及びスイッチ(図示せず)間でデータパケットをルーティングする。論理スイッチ220及び230並びに論理ルータ225は、論理ポート(図示せず)を介して論理的に結合され、論理ポートを介してパケットを交換する。これらの論理ポートは、L3ルータ830並びに管理されるスイッチング要素810、815、及び820の物理ポートにマッピングされる。
【0097】
いくつかの実施形態では、論理スイッチ220及び230の各々は、管理されるスイッチング要素815及び820並びにおそらく他の管理されるスイッチング要素(図示せず)にまたがって実装される。いくつかの実施形態では、論理ルータ225は、管理されるスイッチング要素810に通信可能に結合されるL3ルータ860に実装される。
【0098】
この例では、管理されるスイッチング要素810、815、及び820は、それぞれ、ホスト890、880、及び885で実行するソフトウェアスイッチング要素である。管理されるスイッチング要素810、815、及び820は、論理スイッチ220及び230を実装するフローエントリを有する。これらのフローエントリを使用して、管理されるスイッチング要素815及び820は、管理されるスイッチング要素810、815、及び820に結合されるネットワーク内のネットワーク要素間でネットワークデータ(例えば、パケット)をルーティングする。例えば、管理されるスイッチング要素815は、VM1及び3と、第2のレベルの管理されるスイッチング要素810との間でネットワークデータをルーティングする。同様に、管理されるスイッチング要素820は、VM2及び4と、第2のレベルの管理されるスイッチング要素810との間でネットワークデータをルーティングする。図示のように、管理されるスイッチング要素815及び820は、それぞれ、管理されるスイッチング要素815及び820に結合されるネットワーク要素とデータパケットを交換するために介する3つのポート(番号付けされた正方形として示される)を有する。
【0099】
管理されるスイッチング要素810は、管理されるスイッチング要素810が、エクステンダとして機能する第2のレベルの管理されるスイッチング要素であるという点で、
図3を参照して上述した管理されるスイッチング要素305と同様である。管理されるスイッチング要素810は、この例ではソフトウェアルータであるL3ルータ860と同じホストで動作する。
【0100】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、管理されるスイッチング要素810は、図示のように、管理されるスイッチング要素815のポート2で終端するトンネルを介して、ホスト880で動作する管理されるスイッチング要素815に結合される。同様に、管理されるスイッチング要素810は、管理されるスイッチング要素820のポート1で終端するトンネルを介して、管理されるスイッチング要素820に結合される。
【0101】
異なるタイプのトンネリングプロトコルが、異なる実施形態でサポートされる。トンネリングプロトコルの例は、数あるタイプのトンネリングプロトコルの中でも、無線アクセスポイントの制御及びプロビジョニング(CAPWAP)、ジェネリックルーティングカプセル化(GRE)、GREインターネットプロトコルセキュリティ(IPsec)を含む。
【0102】
この例では、ホスト880及び885の各々は、図示のように、管理されるスイッチング要素及びいくつかのVMを含む。VM1〜4は、仮想マシンであり、仮想マシンは、それぞれ、ネットワークアドレス(例えば、L2に関するMACアドレス、L3に関するIPアドレス、など)のセットを有り当てられ、他のネットワーク要素との間でネットワークデータを送受信することができる。VMは、ホスト880及び885上で動作するハイパーバイザ(図示せず)によって管理される。
【0103】
ネットワークアーキテクチャ800を介するいくつかの例示的なデータ交換をここで説明する。論理スイッチ220に結合されたVM1が、同じ論理スイッチ220に結合されたVM2にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素815に送信される。管理されるスイッチング要素815は、VM1からパケットを受信するエッジスイッチング要素であるため、管理されるスイッチング要素815は、次に、パケットにL2処理205を実行する。このパケットへのL2処理205の結果は、パケットが、管理されるスイッチング要素820のポート4を介してVM2に達するように、管理されるスイッチング要素820に送信されるべきであることを示すことになる。VM1及び2は、同じ論理ネットワーク内にあり、したがって、パケットのためのL3ルーティングは、必要ではないため、このパケットにL3処理を実行する必要はない。パケットは、次に、管理されるスイッチング要素815及び管理されるスイッチング要素820間をブリッジしている第2のレベルの管理されるスイッチング要素810を介して、管理されるスイッチング要素820に送信される。パケットは、管理されるスイッチング要素820のポート4を介してVM2に到達する。
【0104】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM3にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素815に送信される。管理されるスイッチング要素815は、パケットにL2処理の一部を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される(すなわち、パケットの論理L3宛先アドレスは、別の論理ネットワークのためのものである)ため、L3処理がこのパケットに実行される必要がある。
【0105】
管理されるスイッチング要素815は、管理されるスイッチング要素810が、L3ルータ860にパケットを転送するために、パケットにL2処理の残りを実行するように、第2のレベルの管理されるスイッチング要素810にパケットを送信する。L3ルータ860で実行されるL3処理の結果は、パケットが、管理されるスイッチング要素810に返送されるべきであることを示すことになる。管理されるスイッチング要素810は、次に、別のL2処理の一部を実行し、L3ルータ860から受信したパケットを管理されるスイッチング要素815に転送し戻す。管理されるスイッチング要素815は、管理されるスイッチング要素810から受信したパケットにL2処理215を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素815のポート5を介してVM3に送信されるべきであることを示すことになる。
【0106】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたV4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素815に送信される。管理されるスイッチング要素815は、パケットにL2処理205を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、L3処理が実行される必要がある。
【0107】
管理されるスイッチング要素815は、L3ルータ860がパケットにL3処理210を実行するように、管理されるスイッチング要素810を介してL3ルータ860にパケットを送信する。L3ルータ860で実行されるL3処理210の結果は、パケットが、管理されるスイッチング要素820に送信されるべきであることを示すことになる。管理されるスイッチング要素810は、次に、管理されるスイッチング要素から受信したパケットにL2処理の一部を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素820を介してVM4に送信されるべきであることを示すことになる。管理されるスイッチング要素820は、パケットが、管理されるスイッチング要素820のポート5を介してVM4に送信されるべきであることを決定するために、L2処理の残りを実行する。
【0108】
図9は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ900を概念的に示す。具体的には、ネットワークアーキテクチャ900は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、L3ルータ860を示す。下半分には、それぞれ、ホスト910、890、880、及び885で動作している、第2のレベルの管理されるスイッチング要素905、第2のレベルの管理されるスイッチング要素810、並びに、管理されるスイッチング要素815及び820も示される。図は、図の上部及び下部の両方にVM1〜4を示す。
【0109】
ネットワークアーキテクチャ900は、ネットワークアーキテクチャ900が、ホスト910で動作する管理されるスイッチング要素905を追加で含むことを除いて、ネットワークアーキテクチャ800と同様である。いくつかの実施形態の管理されるスイッチング要素905は、プールノードとして機能する第2のレベルの管理されるスイッチング要素である。
【0110】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、この例での管理されるスイッチング要素815は、図示のように、管理されるスイッチング要素815のポート1で終端するトンネルを介して、ホスト910で動作する管理されるスイッチング要素905に結合される。同様に、管理されるスイッチング要素820は、管理されるスイッチング要素820のポート2で終端するトンネルを介して、管理されるスイッチング要素905に結合される。また、管理されるスイッチング要素905及び810は、図示のように、トンネルを介して結合される。
【0111】
論理ルータ225並びに論理スイッチ220及び230は、第2のレベルの管理されるスイッチング要素905がデータパケット交換に関わることを除いて、
図8を参照して上述したL3ルータ860及び管理されるスイッチング要素810、815、及び820に実装される。すなわち、管理されるスイッチング要素815及び810は、管理されるスイッチング要素905を介してパケットを交換する。
【0112】
図10は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ1000を概念的に示す。ネットワークアーキテクチャ1000は、管理されるスイッチング要素810及び管理されるスイッチング要素820間にトンネルが存在することを除いて、ネットワークアーキテクチャ800と同様である。この図は、いくつかの実施形態のネットワークアーキテクチャ1000が、ネットワークアーキテクチャ800及びネットワークアーキテクチャ900の混合物であることを示す。すなわち、いくつかの管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素とのトンネルを有し、他の管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素とパケットを交換するために、プールノードとして機能する第2のレベルの管理されるスイッチング要素を通過しなければならない。
【0113】
図11は、管理されるスイッチング要素810及びL3ルータ860(図示せず)を含むいくつかの実施形態のホスト890の例示的なアーキテクチャを概念的に示す。具体的には、この図は、L3ルータ860が、ホスト890の名前空間1120に構成されることを示す。ホスト890は、いくつかの実施形態では、名前空間及び仮想マシンを作成することができるオペレーティングシステム(例えば、Linux(登録商標))によって管理されるマシンである。図示のように、この例でのホスト890は、管理されるスイッチング要素810、名前空間1120、及びNIC845を含む。この図は、コントローラクラスタ1105も示す。
【0114】
コントローラクラスタ1105は、管理されるスイッチング要素810を含むネットワーク要素を管理するネットワークコントローラ又はコントローラインスタンスのセットである。この例での管理されるスイッチング要素810は、ユーザ空間1112及びカーネル1110を含むホスト890に実装されるソフトウェアスイッチング要素である。管理されるスイッチング要素810は、ユーザ空間1115で動作している制御デーモン1115、並びに、カーネル1110で動作しているコントローラパッチ1130及びブリッジ1135を含む。ユーザ空間1115及びカーネル1110は、いくつかの実施形態では、ホスト890のためのオペレーティングシステムのものであり、他の実施形態では、ユーザ空間1115及びカーネル1110は、ホスト890上で動作している仮想マシンのものである。
【0115】
いくつかの実施形態では、コントローラクラスタ1105は、制御デーモン1115と(例えば、オープンフロープロトコル又は別の通信プロトコルを使用することによって)通信し、制御デーモン1115は、いくつかの実施形態では、ユーザ空間1112のバックグラウンドで動作しているアプリケーションである。制御デーモン1115は、管理されるスイッチング要素810が受信するパケットを処理し、ルーティングするために、コントローラクラスタ1105と通信する。具体的には、制御デーモン1115は、いくつかの実施形態では、コントローラクラスタ1105から構成情報を受信し、コントローラパッチ1130を構成する。例えば、制御デーモン1115は、管理されるスイッチング要素810が受信するパケットを処理し、ルーティングするための動作に関して、コントローラクラスタ1105からコマンドを受信する。
【0116】
制御デーモン1115は、論理ルータが、ルーティングテーブル及び他のテーブルに適切なエントリをポピュレートするために、名前空間1120に実装された論理ルータ(図示せず)と接続するポート(図示せず)を設定するために、コントローラパッチ1130のための構成情報も受信する。
【0117】
コントローラパッチ1130は、カーネル1110内で動作するモジュールである。いくつかの実施形態では、制御デーモン1115は、コントローラパッチ1113を構成する。構成されると、コントローラパッチ1113は、受信するパケットの処理及び転送に関するルール(例えば、フローエントリ)を含む。いくつかの実施形態のコントローラパッチ1130は、また、パケットを名前空間1120と交換するために、ポート(例えば、VIF)のセットを作成する。
【0118】
コントローラパッチ1130は、カーネル1110のネットワークスタック1150から、又は、ブリッジ1135からパケットを受信する。コントローラパッチ1130は、パケットの処理及びルーティングに関するルールに基づいて、どの名前空間にパケットを送信するのかを決定する。コントローラパッチ1130は、また、名前空間1120からパケットを受信し、ルールに基づいて、ネットワークスタック1150又はブリッジ1135にパケットを送信する。管理されるスイッチング要素のアーキテクチャについてのさらなる詳細は、米国特許出願第13/177,535号に記載されている。
【0119】
名前空間1120(例えば、Linux(登録商標)名前空間)は、ホスト890で作成されるコンテナである。名前空間1120は、ネットワークスタック、ネットワークデバイス、ネットワークアドレス、ルーティングテーブル、ネットワークアドレス変換テーブル、ネットワークキャシュ、など(これらのすべてが、
図11に示されているというわけではない)を実装することができる。名前空間1120は、したがって、名前空間が、論理送信元又は宛先アドレスを有するパケットを処理するように構成されている場合、論理ルータを実装することができる。名前空間1120は、例えば、名前空間のルーティングテーブル1155を構成することによって、このようなパケットを処理するように構成されてよい。いくつかの実施形態では、名前空間1120は、名前空間1120が管理されるスイッチング要素810に接続し、パケットを交換する(すなわち、動的ルーティング)につれて、ルーティングテーブル1155をポピュレートする。他の実施形態では、コントローラクラスタ1105は、ルーティングテーブル1155にルートをポピュレートすることによって、ルーティングテーブル1155を直接構成することができる。
【0120】
さらに、名前空間は、いくつかの実施形態では、名前空間がルーティングするパケットにネットワークアドレス変換(NAT)も実行する。例えば、名前空間が、受信したパケットの送信元ネットワークアドレスを別のネットワークアドレスに変更する(すなわち、送信元NATを実行する)場合である。
【0121】
ブリッジ1135は、ネットワークスタック1150と、ホストの外部のネットワークホストとの間で、ネットワークデータ(すなわち、NIC1145を介して受信したネットワークデータ)をルーティングする。図示のように、ブリッジ1135は、ネットワークスタック1150及びNIC1145間、並びに、コントローラパッチ1130及びNIC1145間でネットワークデータをルーティングする。いくつかの実施形態のブリッジ1135は、標準的なL2パケット学習及びルーティングを実行する。
【0122】
ネットワークスタック1150は、NIC1145を介して、管理されるスイッチング要素810の外部のネットワークホストからパケットを受信することができる。ネットワークスタック1150は、次に、コントローラパッチ1130にパケットを送信する。いくつかの場合では、パケットは、トンネルを介して、管理されるスイッチング要素の外部のネットワークホストから受信される。いくつかの実施形態では、トンネルは、ネットワークスタック1150で終端する。したがって、ネットワークスタック1150が、トンネルを介してパケットを受信すると、ネットワークスタック1150は、トンネルヘッダをアンラップし(すなわち、ペイロードをデカプセルし)、アンラップされたパケットをコントローラパッチ1130に送信する。
【0123】
ここで、管理されるスイッチング要素810及び名前空間1120の例示的な動作を説明する。この例では、トンネルが、ホスト890の外部の管理されるスイッチング要素810及び管理されるスイッチング要素815及び820(
図11には示さず)間に確立される。すなわち、管理されるスイッチング要素810、815、及び820は、
図8に示すようなトンネルを介して接続される。トンネルは、ネットワークスタック1150で終端する。
【0124】
管理されるスイッチング要素815は、VM1〜VM4によって送信されたパケットを、管理されるスイッチング要素810に送信する。パケットは、NIC1145によって受信され、次に、ブリッジ1135に送信される。パケットヘッダ内の情報に基づいて、ブリッジ1135は、パケットは、確立されたトンネルを介して送信されると判断し、パケットをネットワークスタック1150に送信する。ネットワークスタック1150は、トンネルヘッダをアンラップし、アンラップされたパケットをコントローラパッチ1130に送信する。
【0125】
パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、コントローラパッチ1130が有するルールにしたがって、コントローラパッチ1130は、パケットを名前空間1120に送信する。例えば、ルールは、特定の宛先MACアドレスを有するパケットは、名前空間1120に送信されるべきであると指示することができる。いくつかの場合では、コントローラパッチ1130は、パケットを名前空間に送信する前に、パケットから論理的コンテキストを除去する。次に、名前空間1120は、2つの論理ネットワーク間でパケットをルーティングするために、パケットにL3処理を実行する。
【0126】
L3処理を実行することによって、名前空間1120は、宛先ネットワークレイヤアドレスが、宛先論理ネットワークに属する論理スイッチに行くべきであるため、パケットがコントローラパッチ1130に送信されるべきであると判断する。コントローラパッチ1130は、宛先論理ネットワークに属する論理スイッチを実装する管理されるスイッチング要素820へのトンネルを越えて、ネットワークスタック1150、ブリッジ1135、及び、NIC1145を介して、パケットを受信し、パケットを送信する。
【0127】
上述したように、いくつかの実施形態は、L3ルータ860を名前空間1120に実装する。しかしながら、他の実施形態は、L3ルータ860を、ホスト890上で動作するVMに実装する。
【0128】
図12は、管理されるスイッチング要素内の論理スイッチ及び論理ルータ、並びにL3ルータの例示的な実装を概念的に示す。具体的には、この図は、ホスト890内の論理ルータ225,並びに論理スイッチ220及び230の実装を示し、ホスト890は、第2のレベルの管理されるスイッチング要素810及びL3ルータ860、並びに管理されるスイッチング要素815及び820を含む。図は、図の左半分に、論理ルータ225、並びに論理スイッチ220及び230を示す。この図は、図の右半分に、第2のレベルの管理されるスイッチング要素810、並びに管理されるスイッチング要素815及び820を示す。図は、右及び左半分の両方に、VM1〜4を示す。簡単にするために、この図は、管理されるスイッチング要素のすべての構成要素、例えば、ネットワークスタック1150を示さない。
【0129】
論理スイッチ220及び230、並びに論理ルータ225は、論理ポートを介して論理的に結合される。図示のように、論理スイッチ220の論理ポートXは、論理ルータ225の論理ポート1に結合される。同様に、論理スイッチ230の論理ポートYは、論理ルータ225の論理ポート2に結合される。論理スイッチ220及び230は、これらの論理ポートを介して、論理ルータ225とデータパケットを交換する。また、この例では、論理スイッチ220は、論理ルータ225の論理ポート1のMACアドレスであるMACアドレス01:01:01:01:01:01を、論理ポートXと関連付ける。論理スイッチ220が、L3処理を必要とするパケットを受信すると、論理スイッチ220は、ポートXを介して論理ルータ225にパケットを送出する。同様に、論理スイッチ230は、論理ルータ225の論理ポート2のMACアドレスであるMACアドレス01:01:01:01:01:02を、論理ポートYと関連付ける。論理スイッチ230が、L3処理を必要とするパケットを受信すると、論理スイッチ230は、ポートYを介して論理ルータ225にパケットを送出する。
【0130】
この例では、コントローラクラスタ(
図12には示さず)は、管理されるスイッチング要素810のポート1が、論理スイッチ220のポートXと関連付けられた同じMACアドレス、01:01:01:01:01:01と関連付けられるように、管理されるスイッチング要素810を構成する。したがって、管理されるスイッチング要素810が、このMACアドレスを宛先MACアドレスとして有するパケットを受信すると、管理されるスイッチング要素810は、管理されるスイッチング要素810のポート1を介して、(名前空間1120内に構成された)L3ルータ860にパケットを送出する。このように、論理スイッチ220のポートXは、管理されるスイッチング要素810のポート1にマッピングされる。
【0131】
同様に、管理されるスイッチング要素810のポート2は、論理スイッチ230のポートYと関連付けられた同じMACアドレス、01:01:01:01:01:02と関連付けられる。したがって、管理されるスイッチング要素810が、このMACアドレスを宛先MACアドレスとして有するパケットを受信すると、管理されるスイッチング要素810は、管理されるスイッチング要素810のポート2を介して、L3ルータ860にパケットを送出する。このように、論理スイッチ230のポートYは、管理されるスイッチング要素810のポート2にマッピングされる。
【0132】
この例では、論理ルータ225は、論理ポート1及び2、並びに他の論理ポート(図示せず)を有する。論理ルータ225のポート1は、ポート1の背後にあるサブセットを表すIPアドレス1.1.1.1/24と関連付けられる。すなわち、論理ルータ225が、ルーティングするためにパケットを受信し、パケットが宛先IPアドレス、例えば、1.1.1.10を有する場合、論理ルータ225は、このパケットを、ポート1を介して宛先論理ネットワーク(例えば、論理サブネット)に向けて送信する。
【0133】
同様に、この例の論理ルータ225のポート2は、ポート2の背後にあるサブセットを表すIPアドレス1.1.2.1/24と関連付けられる。論理ルータ225は、宛先IPアドレス、例えば、1.1.2.10を有するパケットを、ポート2を介して宛先論理ネットワークに送信する。
【0134】
この例では、L3ルータ860は、L3ルータ860のルーティングテーブル(図示せず)にルートをポピュレートすることによって、論理ルータ225を実装する。いくつかの実施形態では、L3ルータ860は、管理されるスイッチング要素810が、L3ルータ860との接続を確立し、パケットを送信するときに、そのルーティングテーブルをポピュレートする。例えば、L3ルータが、管理されるスイッチング要素から最初のパケットを受信すると、L3ルータ860は、最初のパケットの送信元アドレスを宛先アドレスとして有するパケットが、管理されるスイッチング要素810に送信されるべきであることを知る。L3ルータは、最初のパケットがどこに送信されるのかを知るために、(例えば、ARP要求を送信することによって)標準的なアドレス解決を実行することもできる。L3ルータ860は、これらの「ルート」をルーティングテーブルに格納し、その後にL3ルータが受信するパケットのルーティング決定を行う際に、これらのテーブルをルックアップすることになる。他のL3ルータ(図示せず)は、これらのルーティングテーブルを同様にポピュレートすることができる。
【0135】
他の実施形態では、コントローラクラスタは、L3ルータ860のポート1が、論理ルータ225のポート1に関連付けられた同じIPアドレスと関連付けられるように、L3ルータ860のルーティングテーブルを構成する。同様に、L3ルータ860のポート2は、論理ルータ225のポート2と関連付けられた同じIPアドレスと関連付けられる。
同様の方法で、別の論理スイッチ(図示せず)が、管理されるスイッチング要素の別のL3ルータ(図示せず)に実装されてよい。これらの実施形態のいくつかでは、制御クラスタは、L3ルータを構成するために、1つ又は複数のルーティングプロトコルを用いることができる。
【0136】
図13A〜13Cは、
図12を参照して上述した管理されるスイッチング要素810、815、及び820、並びにL3ルータ860に実装された、論理スイッチ220及び230、並びに論理ルータ225の例示的な動作を概念的に示す。具体的には、
図13A〜13Cは、VM1〜VM4から送信されたパケットがどのようにVM4に達するかを示す。
【0137】
論理スイッチ220に結合されるVM1が、論理スイッチ230に結合されるVM4にパケット1330を送信すると、パケットは、最初に、管理されるスイッチング要素815のポート4を介して、管理されるスイッチング要素815に送信される。管理されるスイッチング要素815は、パケットにL2処理を実行する。
【0138】
図13Aの上半分に示すように、管理されるスイッチング要素815は、パケット1330を処理し、転送するためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素815が、管理されるスイッチング要素815のポート4を介してVM1からパケット1330を受信すると、管理されるスイッチング要素815は、管理されるスイッチング要素815の転送テーブルに基づいて、パケット1330の処理を開始する。この例では、パケット1330は、VM4のIPアドレスである、1.1.2.10の宛先IPアドレスを有する。パケット1330の送信元IPアドレスは、1.1.1.10である。パケット1330は、また、VM1のMACアドレスを送信元MACアドレスとして有し、論理ルータ225の論理ポート1のMACアドレス(すなわち、01:01:01:01:01:01)を宛先MACアドレスとして有する。
【0139】
管理されるスイッチング要素815は、ステージ1340のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、VM1からパケット1330を受信するポート4である入口ポートに基づいて、パケット1330の論理コンテキストを識別する。加えて、いくつかの実施形態では、レコード1は、管理されるスイッチング要素815が、パケット1330の論理コンテキストを、パケット1330のヘッダのフィールドのセット(例えば、VLAN idフィールド)に格納することを指定する。他の実施形態では、管理されるスイッチング要素815は、論理コンテキスト(すなわち、パケットが属する論理スイッチ、並びに、その論理スイッチの論理入口ポート)を、パケットではなく、スイッチのレジスタ、又はメタフィールドに格納する。レコード1は、また、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。ディスパッチポートは、米国特許出願第13/177,535号に記載されている。
【0140】
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素815は、ステージ1342の入口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2と呼ぶ」)を識別する。この例では、レコード2は、パケット1330がさらに処理されることを可能にし(例えば、パケット1330は、論理スイッチ220の入口ポートを通り抜けることができる)、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素815が、パケット1330の論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300の第2のステージ1342によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
【0141】
次に、管理されるスイッチング要素815は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1344の論理L2転送を実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、論理ルータ225の論理ポート1のMACアドレスを宛先MACアドレスとして有するパケットが、論理スイッチ220の論理ポートXに送信されるべきであることを指定する。
【0142】
レコード3は、また、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード3は、管理されるスイッチング要素815が、論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300の第3のステージ1344によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
【0143】
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素815は、ステージ1346のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。この例では、レコード4は、L3ルータ860のポート1が結合される管理されるスイッチング要素810のポート1を、パケット1330が転送されるべき論理スイッチ220の論理ポートXに対応するポートとして識別する。レコード4は、加えて、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0144】
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素815は、次に、ステージ1348の物理マッピングを実装する転送テーブル内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。レコード5は、パケット1330が、管理されるスイッチング要素810に到達するために、パケット1330が、管理されるスイッチング要素815のポート1を介して送信されるべきであることを指定する。この場合では、管理されるスイッチング要素815は、パケット1330を、管理されるスイッチング要素810に結合される管理されるスイッチング要素815のポート1から送出することになる。
【0145】
図13Aの下半分に示すように、管理されるスイッチング要素810は、パケット1330を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素810が、管理されるスイッチング要素815からパケット1330を受信すると、管理されるスイッチング要素810は、管理されるスイッチング要素810の転送テーブルに基づいて、パケット1330の処理を開始する。管理されるスイッチング要素810は、ステージ1350のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット1330のヘッダに格納された論理コンテキストに基づいて、パケット1330の論理コンテキストを識別する。論理コンテキストは、パケット1330が、管理されるスイッチング要素815によって実行された第2及び第3のステージ1342及び1344によって処理されていることを指定する。このように、レコード1は、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0146】
次に、管理されるスイッチング要素810は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1352の出口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット1330がさらに処理されることを可能にし(例えば、パケット1330は、論理スイッチ220のポート「X」を介して論理スイッチ220から出ることができる)、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素810が、パケット1330の論理コンテキスト(例えば、パケット1330は、処理パイプライン1300のステージ1352によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
【0147】
次に、管理されるスイッチング要素810は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1354の物理マッピングを実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、パケット1330がL3ルータ860に到達するために、パケット1330が送信されるべき管理されるスイッチング要素810のポートを指定する。この場合では、管理されるスイッチング要素810は、パケット1330を、L3ルータ860のポート1に結合される管理されるスイッチング要素810のポート1から送出することになる。いくつかの実施形態では、管理されるスイッチング要素810は、パケットをL3ルータ860に送信する前に、パケット1330から論理コンテキストを除去する。
【0148】
図13Bの上半分に示すように、L3ルータ860は、入口ACLテーブル、ルーティングテーブル、及び出口ACLテーブルを含み、出口ACLテーブルは、パケット1330を処理し、ルーティングするためのエントリを含む。L3ルータ860が、管理されるスイッチング要素810からパケット1330を受信すると、L3ルータ860は、L3ルータ860のこれらのテーブルに基づいて、パケット1330の処理を開始する。L3ルータ860は、入口ACLテーブル内の丸で囲まれた1によって示されるエントリ(「エントリ1」と呼ぶ)を識別し、入口ACLテーブルは、L3ルータ860が、パケット1330のヘッダ内の情報に基づいてパケットを受け入れるべきであることを指定することによって、L3入口ACLを実装する。L3ルータ860は、次に、ルーティングテーブル内の丸で囲まれた2によって示されるエントリ(「エントリ2」と呼ぶ)を識別し、ルーティングテーブルは、その宛先IPアドレス(すなわち、1.1.2.10)を有するパケット1330が、論理ルータ225のポート2を介して論理スイッチ230に送信されるべきであることを指定することによって、L3ルーティング558を実装する。L3ルータ860は、次に、出口ACLテーブル内の丸で囲まれた3によって示されるエントリ(「エントリ3」と呼ぶ)を識別し、出口ACLテーブルは、L3ルータ860が、パケット1330のヘッダ内の情報に基づいて、論理ルータ225のポート2を介してパケットを送信することができることを指定することによって、L3出口ACLを実装する。また、L3ルータ860はパケット1330のための送信元MACアドレスをL3ルータ860のポート2のMACアドレス(すなわち、01:01:01:01:01:02)に書き換える。
【0149】
L3ルータ860は、次に、宛先IPアドレスを宛先MACアドレスに変換するために、アドレス解決を実行する。この例では、L3ルータ860は、宛先IPアドレスがマッピングされる宛先MACアドレスを見つけるために、ARPキャッシュをルックアップする。L3ルータ860は、ARPキャッシュが、宛先IPアドレスのための対応するMACアドレスを持っていない場合、ARP要求を送信することができる。宛先IPアドレスは、VM4のMACアドレスに解決されることになる。L3ルータ860は、次に、宛先IPアドレスが解決されたMACアドレスを使用して、パケット1330の宛先MACを書き換える。L3ルータ860は、パケット1330を、新しい宛先MACアドレスに基づいて、L3ルータ860の論理ポート2を介して論理スイッチ230に送信することになる。
【0150】
図13Bの下半分に示すように、管理されるスイッチング要素810は、パケット1330を処理し、転送するためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素810が、管理されるスイッチング要素810のポート2を介してL3ルータ860からパケット1330を受信すると、管理されるスイッチング要素810は、管理されるスイッチング要素810の転送テーブルに基づいて、パケット1330の処理を開始する。管理されるスイッチング要素810は、ステージ1362のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。レコード4は、パケット1330がL3ルータ860から受信されるポート2である入口ポートに基づいて、パケット1330の論理コンテキストを識別する。加えて、レコード4は、管理されるスイッチング要素810が、パケット1330の論理コンテキストを、パケット1330のヘッダのフィールドのセット(例えば、VLAN idフィールド)に格納することを指定する。レコード4は、また、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0151】
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素810は、次に、ステージ1364の入口ACLを実装する転送テーブル内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。この例では、レコード5は、パケット1330がさらに処理されることを可能にし、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード5は、管理されるスイッチング要素810が、パケット1330の論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300のステージ1362によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
【0152】
次に、管理されるスイッチング要素810は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1366の論理L2転送を実装する転送テーブル内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。レコード6は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、論理スイッチ230の論理ポート(図示せず)を介して転送されるべきであることを指定する。
【0153】
レコード6は、また、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード6は、管理されるスイッチング要素810が、論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300のステージ1366によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
【0154】
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素810は、ステージ1368のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた7によって示されるレコード(「レコード7」と呼ぶ)を識別する。この例では、レコード7は、VM4が結合される管理されるスイッチング要素820のポート5を、パケット1330が転送されるべき論理スイッチ230の論理ポート(ステージ1366で決定される)に対応するポートとして識別する。レコード7は、加えて、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0155】
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素810は、次に、ステージ1370の物理マッピングを実装する転送テーブル内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。レコード8は、パケット1330が、管理されるスイッチング要素820に到達するために、パケット1330が送信されるべき管理されるスイッチング要素810のポート(図示せず)を指定する。この場合では、管理されるスイッチング要素810は、パケット1330を、管理されるスイッチング要素820に結合される管理されるスイッチング要素810のポートから送出することになる。
【0156】
図13Cに示すように、管理されるスイッチング要素820は、パケット1330を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素820が、管理されるスイッチング要素810からパケット1330を受信すると、管理されるスイッチング要素820は、管理されるスイッチング要素820の転送テーブルに基づいて、パケット1330の処理を開始する。管理されるスイッチング要素820は、ステージ1372のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。レコード4は、パケット1330のヘッダに格納された論理コンテキストに基づいて、パケット1330の論理コンテキストを識別する。論理コンテキストは、パケット1330が、管理されるスイッチング要素810によって実行されたステージ1364及び1366によって処理されていることを指定する。このように、レコード4は、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0157】
次に、管理されるスイッチング要素820は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1374の出口ACLを実装する転送テーブル内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。この例では、レコード5は、パケット1330がさらに処理されることを可能にし、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード5は、管理されるスイッチング要素820が、パケット1330の論理コンテキスト(例えば、パケット1330は、処理パイプライン1300のステージ1374によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
【0158】
次に、管理されるスイッチング要素820は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1376の物理マッピングを実装する転送テーブル内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。レコード6は、パケット1330がVM4に到達するために、パケット1330が送信されるべき管理されるスイッチング要素820のポート5を指定する。この場合では、管理されるスイッチング要素820は、VM4に結合される管理されるスイッチング要素820のポート5からパケット1330を送出することになる。いくつかの実施形態では、管理されるスイッチング要素820は、パケットをVM4に送信する前に、パケット1330から論理コンテキストを除去する。
【0159】
図14は、どの管理されるスイッチング要素にパケットを送信するかを決定するために、パケットを転送するためにいくつかの実施形態が実行するプロセス1400を概念的に示す。プロセス1400は、いくつかの実施形態では、パケットを受信し、別の管理されるスイッチング要素、又はパケットの宛先マシンにパケットを送信する管理されるスイッチング要素によって実行される。
【0160】
プロセス1400は、(1405で)送信元マシンからパケットを受信することによって開始する。プロセス1400は、次に、(1410で)L2処理の一部を実行する。プロセスがL2処理を実行するにしたがって、プロセス1400は、(1415で)パケットが、パケットのさらなる処理のために第2のレベルの管理されるスイッチング要素に送信される必要があるかどうかを判定する。いくつかの実施形態では、プロセスは、パケットの宛先L2アドレスに基づいてこの判定を行う。プロセスは、宛先L2アドレスを見て、宛先L2アドレスと関連付けられたポートを介してパケットを送出する。例えば、パケットの宛先L2アドレスが、L3ルータのL2アドレスである場合、プロセスは、L3ルータと関連付けられた管理されるスイッチング要素と関連付けられたポートからパケットを送出する。パケットの宛先L2アドレスが、宛先マシンのL2アドレスである場合、プロセスは、宛先マシン、又は、宛先マシンへのルート中でより近い管理されるスイッチング要素に直接接続された管理されるスイッチング要素にパケットを送信する。
【0161】
プロセス1400が、(1415で)パケットが第2のレベルの管理されるスイッチング要素に送信される必要があると判定すると、プロセス1400は、(1420で)論理ルータを実装するL3ルータに通信可能に結合された第2のレベルの管理されるスイッチング要素にパケットを送信する。そうでなければ、プロセス1400は、(1425で)宛先マシン、又は別の管理されるスイッチング要素にパケットを送信する。次に、プロセスは、終了する。
【0162】
図15は、上述したホスト890を概念的に示す。具体的には、管理されるスイッチング要素810が、L3ルータからパケットを受信し、パケットが、同じホスト890に実装された別のL3ルータに向けられている場合、管理されるスイッチング要素810は、フローエントリに基づいて、2つのL3ルータを直接ブリッジする。
【0163】
図示のように、管理されるスイッチング要素810は、2つのL3ルータ1及び2に結合される。管理されるスイッチング要素810が含むフローエントリは、図の右側に示されている。フローエントリは、一方のL3ルータから別のL3ルータにアドレスされるトラフィックが、他のL3ルータに直接行くべきであることを示す。
【0164】
また、この図は、追加のネットワークトラフィックをルーティングするために、より多くの管理されるスイッチング要素が設けられ、既存のL3ルータに依存する場合、追加のルーティングリソースを提供するために、追加のルータが、ホスト890に設けられてよいことを示す。
【0165】
図16は、第1及び第2のL3ルータが同じホストに実装されている場合、第1のL3ルータから第2のL3ルータにパケットを直接転送するためにいくつかの実施形態が使用するプロセス1600を概念的に示す。プロセス1600は、いくつかの実施形態では、上述した管理されるスイッチング要素810のような管理されるスイッチング要素によって実行され、管理されるスイッチング要素は、単一のホストに実装される2つ以上のL3ルータとパケットを交換する。
【0166】
プロセス1600は、(1605で)第1のL3ルータからパケットを受信することによって開始する。プロセス1600は、次に、(1610で)パケットが、第1のL3ルータが実装されているのと同じホストに実装されている第2のL3ルータにアドレスされているかどうかを判定する。プロセス1600は、これを、パケットのヘッダ内の情報(例えば、宛先MACアドレス)を調べることによって判定する。
【0167】
プロセス1600が、(1610で)パケットが第2のL3ルータに向けられていると判定した場合、プロセス1600は、パケットを第2のL3ルータに送信する。そうでなければ、プロセス1600は、パケットの宛先(例えば、別の管理されるスイッチング要素又は宛先マシン)に向けてパケットを送信する。次に、プロセス1600は、終了する。
【0168】
図17〜24は、管理されるスイッチング要素のフローエントリに基づいて、管理されるスイッチング要素に実装される集中型論理ルータを示す。
図17は、
図2を参照して上述した論理処理パイプライン200の例示的な実装を概念的に示す。
図17は、ネットワークアーキテクチャ1700を示す。ネットワークアーキテクチャ1700では、論理処理パイプライン200は、3つの管理されるスイッチング要素1715、1720、及び1725によって実行される。具体的には、L2処理205及びL2処理215は、管理されるスイッチング要素1715、1720、及び1725にまたがって分散的に実行される。L3処理210は、管理されるスイッチング要素1720のフローエントリに基づいて、管理されるスイッチング要素1720によって実行される。
図17は、送信元マシン1710及び宛先マシン1730も示す。
【0169】
管理されるスイッチング要素1715は、管理されるスイッチング要素1715も、エッジスイッチング要素に結合されたマシンからパケットを直接受信するエッジスイッチング要素であるという点で、
図6を参照して上述した管理されるスイッチング要素615と同様である。管理されるスイッチング要素1715は、送信元マシン1710からパケットを受信する。管理されるスイッチング要素1715が、送信元マシン1710からパケットを受信すると、管理されるスイッチング要素1715は、パケットを論理的に転送するために、パケットにL2処理205の一部を実行する。パケットが、別の論理ネットワークにある宛先マシン1730に向けられている場合、パケットは、管理されるスイッチング要素1720に転送される。
【0170】
管理されるスイッチング要素1715と、管理されるスイッチング要素1720との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物(例えば、PIF、VIF、など)を有し、ネットワーク構成物には、論理スイッチ220(
図17には示さず)の論理構成物(例えば、論理ポート)がマッピングされる。
【0171】
管理されるスイッチング要素1720は、いくつかの実施形態ではエクステンダとして機能する第2のレベルの管理されるスイッチング要素である。管理されるスイッチング要素1720は、L2処理205の残りを実行し、L3処理210も実行する。管理されるスイッチング要素1720は、また、論理処理パイプライン200のL2処理215の一部を実行する。管理されるスイッチング要素1720は、次に、管理されるスイッチング要素1725にパケットを送信する。
【0172】
管理されるスイッチング要素1720と、管理されるスイッチング要素1725との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ220(
図17には示さず)の論理構成物がマッピングされる。
【0173】
この例の管理されるスイッチング要素1725は、管理されるスイッチング要素1720からパケットを受信する。管理されるスイッチング要素1725は、パケットを論理的に転送するために、パケットにL2処理215の残りを実行する。この例では、管理されるスイッチング要素1725は、パケットを宛先マシン1730に直接送信するスイッチング要素でもある。しかしながら、管理されるスイッチング要素1725と、宛先マシン1130との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ230(
図17には示さず)の論理構成物がマッピングされる。
【0174】
L2処理205及びL2処理215は、この例では分散的に実行されるが、L2処理205及びL2処理215は、分散的に実行される必要はない。例えば、管理されるスイッチング要素1715は、L2処理205全体を実行することができ、管理されるスイッチング要素1725は、L2処理215全体を実行することができる。このような場合、管理されるスイッチング要素1720は、論理処理パイプライン200のL3処理210のみを実行することになる。
【0175】
図18は、論理スイッチ220、論理ルータ225、及び論理スイッチ230を介してパケットを処理するいくつかの実施形態の論理処理パイプライン200を概念的に示す。具体的には、この図は、
図17を参照して上述したネットワークアーキテクチャ1700で実行される場合の論理処理パイプライン200を示す。上述したように、ネットワークアーキテクチャ1700では、L2処理205、L3処理210、及びL2処理215は、管理されるスイッチング要素1715、1720、及び1725によって実行される。
【0176】
L2処理205は、いくつかの実施形態では、管理されるスイッチング要素1715及び1720にまたがって実装される論理ネットワーク(図示せず)内の論理スイッチ220(
図18には示さず)を介してパケットを処理する7つのステージ1805〜1835を含む。いくつかの実施形態では、パケットを受信する管理されるスイッチング要素1715は、管理されるスイッチング要素1715がパケットを受信すると、L2処理205の一部を実行する。管理されるスイッチング要素1720は、次に、L2処理205の残りを実行する。
【0177】
最初の5つのステージ1805〜1825は、
図7を参照して上述した最初の5つのステージ705〜725と同様である。L2処理205のステージ1805では、パケットの論理コンテキストを決定するために、パケットに入口コンテキストマッピングが実行される。いくつかの実施形態では、ステージ1805は、論理スイッチ220がパケットを受信する(例えば、パケットが、管理されるスイッチング要素1715によって受信される)と実行される。第1のステージ1805が実行された後、いくつかの実施形態は、論理コンテキストを表す情報を、パケットのヘッダの1つ又は複数のフィールドに格納する。
【0178】
いくつかの実施形態では、第2のステージ1810は、論理スイッチ220のために定義される。いくつかのこのような実施形態では、ステージ1810は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するとき、論理スイッチへのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチに対して定義された入口ACLに基づいて、パケットは、(例えば、ステージ1815によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【0179】
L2処理205の第3のステージ1815では、論理スイッチのコンテキストにおいて、パケットにL2転送が実行される。いくつかの実施形態では、第3のステージ1815は、論理スイッチ220に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。さらに、パケットの宛先が別の論理ネットワークである場合(例えば、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ220によって処理される論理ネットワークと異なる場合)、論理スイッチ220は、パケットを論理ルータ225に送信し、論理ルータ225は、次に、パケットを宛先論理ネットワークにルーティングするために、L3処理210を実行することになる。したがって、第3のステージ1815では、管理されるスイッチング要素1715は、パケットが、論理ルータ225に関連付けられた論理スイッチの論理ポート(図示せず)を介して論理ルータ225に転送されるべきであると判断する。
【0180】
第4のステージ1820では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ220の1つ又は複数の論理ポート(例えば、論理出口ポート)から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチ220の特定の論理ポートに対応する1つ又は複数の管理されるスイッチング要素(管理されるスイッチング要素1715及び1720を含む)の物理ポート(複数可)を特定する。管理されるスイッチング要素1715は、前のステージ1815で決定された論理ポートがマッピングされる物理ポート(例えば、VIF)が、管理されるスイッチング要素1720のポート(図示せず)であると判断する。
【0181】
L2処理205の第5のステージ1825は、第4のステージ1820で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第4のステージ1820で決定された物理ポートに向けてパケットを送信する動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第4のステージ1820で決定された物理ポート(複数可)に達するために、パケットを送信するために通過する、L2処理205を実行している管理されるスイッチング要素1715のポートのセット(図示せず)の1つ又は複数のポートに関連付けられた1つ又は複数のキュー(図示せず)を決定する。このように、管理されるスイッチング要素は、決定された物理ポート(複数可)にパケットが達するためのネットワーク内の正しい経路に沿って、パケットを転送することができる。
【0182】
図示のように、L2処理205の第6のステージ1830は、管理されるスイッチング要素1720によって実行される。第6のステージ1830は、第1のステージ1805と同様である。ステージ1830は、管理されるスイッチング要素1720がパケットを受信すると実行される。ステージ1830では、管理されるスイッチング要素1720は、パケットの論理コンテキストをルックアップし、L2出口アクセス制御が、実行されるために残っていると判断する。
【0183】
いくつかの実施形態の第7のステージ1835は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第7のステージ1835は、論理スイッチ220に対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後に、論理スイッチ220外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポート外に送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、パケットは、例えば、廃棄されてよい。
【0184】
L3処理210は、論理スイッチ220(
図18には示さず)を介してパケットを処理するための6つのステージ1840〜1856を含み、論理スイッチ220は、管理されるスイッチング要素1720のL3フローエントリに基づいて、管理されるスイッチング要素1720に実装される。上述したように、L3処理は、レイヤ3ネットワークを介してどこにパケットをルーティングするか決定するための論理ルーティングルックアップのセットを実行することを含む。
【0185】
第1のステージ1840は、論理ルータ225がパケットを受信すると(すなわち、論理ルータ225を実装する管理されるスイッチング要素1720がパケットを受信すると)、アクセス制御を決定するための論理入口ACLルックアップを実行する。次のステージ1841は、パケットの宛先アドレスを、パケットの送信元マシンから隠されている宛先マシンの実際のアドレスに戻すために、DNATを実行する。このステージ1841は、DNATが有効にされている場合、実行される。
【0186】
次のステージ1845は、パケットL3アドレス(例えば、宛先IPアドレス)及びルーティングテーブル(例えば、L3エントリを含む)に基づいて、レイヤ3ネットワークを介してパケットを送信するための1つ又は複数の論理ポートを決定するための論理L3ルーティングを実行する。論理ルータ225は、管理されるスイッチング要素1720によって実装されるため、L3フローエントリは、管理されるスイッチング要素1720内に構成される。
【0187】
第4のステージ1850では、いくつかの実施形態の管理されるスイッチング要素1720は、パケットにSNATも実行する。例えば、管理されるスイッチング要素1720は、送信元NATが有効にされている場合、送信元IPアドレスを隠すために、パケットの送信元IPアドレスを異なるIPアドレスに置き換える。また、以下にさらに説明するように、管理されるスイッチング要素は、ネットワークアドレスを変換するためのフローエントリを受信するために、NATデーモンを使用することができる。NATデーモンは、
図31を参照してさらに後述される。
【0188】
第5のステージ1855は、論理ルータ225が、ステージ1845で決定されたポートを介してパケットを論理ルータ225の外にルーティングする前に、アクセス制御を決定するための論理L3出口ACLルックアップを実行する。L3出口ACLルックアップは、パケットのL3アドレス(例えば、送信元及び宛先IPアドレス)に基づいて実行される。
【0189】
第6のステージ1856は、宛先L3アドレス(例えば、宛先IPアドレス)を宛先L2アドレス(例えば、宛先MACアドレス)に変換するために、アドレス解決を実行する。いくつかの実施形態では、管理されるスイッチング要素1720は、宛先IPアドレスに対応する宛先L2アドレスを見つけるために、(例えば、ARP要求を送信するか、ARPキャッシュをルックアップすることによって)標準的なアドレス解決を使用する。また、以下にさらに説明するように、いくつかの実施形態の管理されるスイッチング要素1720は、L3アドレスをL2アドレスに解決するためのフローエントリを受信するために、L3デーモンを使用することができる。L3デーモンは、
図48〜50を参照してさらに後述される。
【0190】
論理ルータ225が宛先論理ネットワークに結合されていない場合、論理スイッチ220は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。論理ルータ225が宛先論理ネットワークに結合されている場合、論理スイッチ220は、宛先論理ネットワーク(すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ)にパケットをルーティングする。
【0191】
L2処理215は、いくつかの実施形態では、管理されるスイッチング要素1720及び1725(図示せず)にまたがって実装される別の論理ネットワーク(
図18には示さず)内の論理スイッチ230を介してパケットを処理するための7つのステージ1860〜1890を含む。ステージ1860〜1890は、ステージ1860〜1890が、論理スイッチ230によって(すなわち、論理スイッチ230を実装する管理されるスイッチング要素1720及び1725によって)実行される点を除いて、それぞれ、ステージ1805〜1835と同様である。
【0192】
図19は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ1900を概念的に示す。具体的には、ネットワークアーキテクチャ1900は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、それぞれ、ホスト1990、1980、及び1985(例えば、Windows(登録商標)及びLinux(登録商標)のようなオペレーティングシステムによって動作されるマシン)で動作している、第2のレベルの管理されるスイッチング要素1910、管理されるスイッチング要素1915及び1920を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
【0193】
この例では、論理スイッチ220は、論理ルータ225、VM1、及びVM2間でデータパケットを転送する。論理スイッチ230は、論理ルータ225、VM3、及びVM4間でデータパケットを転送する。上述したように、論理ルータ225は、論理スイッチ220及び230並びにおそらく他の論理ルータ及びスイッチ(図示せず)間でデータパケットをルーティングする。論理スイッチ220及び230並びに論理ルータ225は、論理ポート(図示せず)を介して論理的に結合され、論理ポートを介してパケットを交換する。これらの論理ポートは、L3ルータ1960並びに管理されるスイッチング要素1910、1915、及び1920の物理ポートにマッピングされる。
【0194】
いくつかの実施形態では、論理スイッチ220及び230の各々は、管理されるスイッチング要素1915及び1920並びにおそらく他の管理されるスイッチング要素(図示せず)にまたがって実装される。いくつかの実施形態では、論理ルータ225は、管理されるスイッチング要素1910に通信可能に結合されるL3ルータ1960に実装される。
【0195】
この例では、管理されるスイッチング要素1910、1915、及び1920は、それぞれ、ホスト1990、1980、及び1985で実行するソフトウェアスイッチング要素である。管理されるスイッチング要素1910、1915、及び1920は、論理スイッチ220及び230を実装するフローエントリを有する。これらのフローエントリを使用して、管理されるスイッチング要素1915及び1920は、管理されるスイッチング要素1910、1915、及び1920に結合されるネットワーク内のネットワーク要素間でネットワークデータ(例えば、パケット)を転送する。例えば、管理されるスイッチング要素1915は、VM1及び3と、第2のレベルの管理されるスイッチング要素1910との間でネットワークデータをルーティングする。同様に、管理されるスイッチング要素1920は、VM2及び4と、第2のレベルの管理されるスイッチング要素1910との間でネットワークデータをルーティングする。図示のように、管理されるスイッチング要素1915及び1920は、それぞれ、管理されるスイッチング要素1915及び1920に結合されるネットワーク要素とデータパケットを交換するために介する3つのポート(番号付けされた正方形として示される)を有する。
【0196】
管理されるスイッチング要素1910は、管理されるスイッチング要素1910が、エクステンダとして機能する第2のレベルの管理されるスイッチング要素であるという点で、
図4を参照して上述した管理されるスイッチング要素305と同様である。管理されるスイッチング要素560は、また、フローエントリに基づいて論理ルータ225を実装する。これらのフローエントリを使用して、管理されるスイッチング要素1910は、L3でパケットをルーティングする。この例では、管理されるスイッチング要素1910に実装される論理ルータ225は、管理されるスイッチング要素1910及び1915にまたがって実装される論理スイッチ220と、管理されるスイッチング要素1910及び1920にまたがって実装される論理スイッチ230との間でパケットをルーティングする。
【0197】
この例では、図示のように、管理されるスイッチング要素1910は、ホスト1980で動作する管理されるスイッチング要素1915に、管理されるスイッチング要素1915のポート2で終端するトンネルを介して結合される。同様に、管理されるスイッチング要素1910は、管理されるスイッチング要素1920に、管理されるスイッチング要素1920のポート1で終端するトンネルを介して結合される。
【0198】
この例では、図示のように、ホスト1980及び1985の各々は、管理されるスイッチング要素及びいくつかのVMを含む。VM1〜VM4は、それぞれネットワークアドレス(例えば、L2のためのMACアドレス、L3のためのIPアドレス、など)のセットが割り当てられた仮想マシンであり、他のネットワーク要素との間でネットワークデータを送受信することができる。VMは、ホスト1980及び1985で動作するハイパーバイザ(図示せず)によって管理される。
【0199】
ネットワークアーキテクチャ1900を介するいくつかの例示的なデータ交換を、ここで説明する。論理スイッチ220に結合されたVM1が、同じ論理スイッチ220に結合されたVM2にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素1915に送信される。管理されるスイッチング要素1915は、VM1からパケットを受信するエッジスイッチング要素であるため、管理されるスイッチング要素1915は、次に、パケットにL2処理205を実行する。このパケットへのL2処理205の結果は、パケットが、管理されるスイッチング要素1920のポート4を介してVM2に達するために、管理されるスイッチング要素1920に送信されるべきであることを示す。VM1及び2は、同じ論理ネットワーク内にあり、したがって、パケットのためのL3ルーティングは必要ないため、L3処理は、このパケットに実行される必要はない。パケットは、次に、管理されるスイッチング要素1915及び管理されるスイッチング要素1920間をブリッジしている第2のレベルの管理されるスイッチング要素1910を介して、管理されるスイッチング要素1920に送信される。パケットは、管理されるスイッチング要素1920のポート4を介して、VM2に到達する。
【0200】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM3にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素1915に送信される。管理されるスイッチング要素1915は、パケットにL2処理の一部を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される(すなわち、パケットの論理L3宛先アドレスは、別の論理ネットワークのためのものである)ため、L3処理がこのパケットに実行される必要がある。
【0201】
管理されるスイッチング要素1915は、管理されるスイッチング要素1910が、パケットにL2処理の残り及びL3処理210を実行するように、第2のレベルの管理されるスイッチング要素1910にパケットを送信する。管理されるスイッチング要素1910は、次に、別のL2処理の一部を実行し、管理されるスイッチング要素1920にパケットを転送する。管理されるスイッチング要素1915は、管理されるスイッチング要素1910から受信したパケットにL2処理215を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素1915のポート5を介してVM3に送信されるべきであることを示すことになる。
【0202】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素1915に送信される。管理されるスイッチング要素1915は、パケットにL2処理205を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、L3処理が実行される必要がある。
【0203】
管理されるスイッチング要素1915は、管理されるスイッチング要素1910が、パケットにL2処理205の残り及びL3処理210を実行するように、管理されるスイッチング要素1910にパケットを送信する。管理されるスイッチング要素1910で実行されるL3処理210の結果は、パケットが、管理されるスイッチング要素1915に送信されるべきであることを示す。管理されるスイッチング要素1910は、次に、パケットにL2処理の一部を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素1920を介してVM4に送信されるべきであることを示す。管理されるスイッチング要素1920は、パケットが、管理されるスイッチング要素1920のポート5を介してVM4に送信されるべきであることを決定するために、L2処理の残りを実行する。
【0204】
図20は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2000を概念的に示す。具体的には、ネットワークアーキテクチャ2000は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、それぞれ、ホスト1990、1980、及び1985で動作している、第2のレベルの管理されるスイッチング要素1910、管理されるスイッチング要素1915及び1920を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
【0205】
ネットワークアーキテクチャ2000は、ネットワークアーキテクチャ2000が、ホスト2010で動作する管理されるスイッチング要素2005を追加で含むことを除いて、ネットワークアーキテクチャ1900と同様である。いくつかの実施形態の管理されるスイッチング要素2005は、プールノードとして機能する第2のレベルの管理されるスイッチング要素である。
【0206】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、図示のように、この例での管理されるスイッチング要素1915は、ホスト2010で動作する管理されるスイッチング要素2005に、管理されるスイッチング要素1915のポート1で終端するトンネルを介して結合される。同様に、管理されるスイッチング要素1920は、スイッチング要素2005に、管理されるスイッチング要素1920のポート2で終端するトンネルを介して結合される。また、図示のように、管理されるスイッチング要素2005及び1910は、トンネルを介して結合される。
【0207】
論理ルータ225並びに論理スイッチ220及び230は、第2のレベルの管理されるスイッチング要素2005が、データパケット交換に関係することを除いて、
図19を参照して上述した管理されるスイッチング要素1910、1915、及び1920において実装される。すなわち、管理されるスイッチング要素1915及び1910は、管理されるスイッチング要素2005を介してパケットを交換する。管理されるスイッチング要素1920及び1910は、管理されるスイッチング要素2005を介してパケットを交換する。
【0208】
図21は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2100を概念的に示す。ネットワークアーキテクチャ2100は、管理されるスイッチング要素1910及び管理されるスイッチング要素1920間に確立されたトンネルが存在することを除いて、ネットワークアーキテクチャ1900と同様である。この図は、いくつかの実施形態のネットワークアーキテクチャ2100が、ネットワークアーキテクチャ1900及びネットワークアーキテクチャ2000の混合物であることを示す。すなわち、いくつかの管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素へのトンネルを有し、他の管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素とパケットを交換するために、プールノードとして機能する第2のレベルの管理されるスイッチング要素を介さなければならない。
【0209】
図22は、フローエントリに基づいて論理ルータを実装する管理されるスイッチング要素1910を含むいくつかの実施形態のホスト1990の例示的なアーキテクチャを概念的に示す。ホスト1990は、いくつかの実施形態では、仮想マシンを作成することができるオペレーティングシステム(例えば、Linux(登録商標))によって管理されるマシンである。図示のように、この例でのホスト1990は、管理されるスイッチング要素1910及びNIC2245を含む。この図は、コントローラクラスタ2205も示す。
【0210】
コントローラクラスタ2205は、管理されるスイッチング要素1910を含むネットワーク要素を管理するネットワークコントローラ又はコントローラインスタンスのセットである。この例での管理されるスイッチング要素1910は、ユーザ空間2212及びカーネル2210を含むホスト1990に実装されるソフトウェアスイッチング要素である。管理されるスイッチング要素1910は、ユーザ空間2212で動作している制御デーモン2215、並びに、カーネル2210で動作しているコントローラパッチ2230及びブリッジ2235を含む。さらに後述するNATデーモン2250も、ユーザ空間2212で動作している。ユーザ空間2212及びカーネル2210は、いくつかの実施形態では、ホスト1990のためのオペレーティングシステムのものであり、他の実施形態では、ユーザ空間2212及びカーネル2210は、ホスト1990上で動作している仮想マシンのものである。
【0211】
いくつかの実施形態では、コントローラクラスタ2205は、制御デーモン2215と(例えば、オープンフロープロトコル又はいくつかの他の通信プロトコルを使用することによって)通信し、制御デーモン2215は、いくつかの実施形態では、ユーザ空間2212のバックグラウンドで動作しているアプリケーションである。制御デーモン2215は、管理されるスイッチング要素1910が受信するパケットを処理し、ルーティングするために、コントローラクラスタ2205と通信する。具体的には、制御デーモン2215は、いくつかの実施形態では、コントローラクラスタ2205から構成情報を受信し、コントローラパッチ2230を構成する。例えば、制御デーモン2215は、管理されるスイッチング要素1910が受信するパケットを、L2及びL3で処理し、ルーティングするための動作に関して、コントローラクラスタ2205からコマンドを受信する。
【0212】
コントローラパッチ2230は、カーネル2210で動作するモジュールである。いくつかの実施形態では、制御デーモン2215が、コントローラパッチ2230を構成する。構成されると、コントローラパッチ2230は、受信するパケットの処理、転送、及びルーティングに関するルール(例えば、フローエントリ)を含む。コントローラパッチ2230は、論理スイッチ及び論理ルータの両方を実装する。
【0213】
いくつかの実施形態では、コントローラパッチ2230は、ネットワークアドレス変換のためのNATデーモンを使用する。さらに後述するように、NATデーモン2250は、ネットワークアドレス変換に関するフローエントリを生成し、フローエントリを、使用する管理されるスイッチング要素1910に送り返す。NATデーモンは、さらに後述される。
【0214】
コントローラパッチ2230は、カーネル2210のネットワークスタック2250から、又は、ブリッジ2235からパケットを受信する。ブリッジ2235は、ネットワークスタック2250、及び、ホストの外部のネットワークホスト間で、ネットワークデータ(例えば、NIC2245を介して受信されたネットワークデータ)をルーティングする。図示のように、ブリッジ2235は、ネットワークスタック2250及びNIC2245間、並びに、ネットワークスタック2250及びNIC2245間で、ネットワークデータをルーティングする。いくつかの実施形態のブリッジ2235は、標準的なL2パケット学習及びルーティングを実行する。
【0215】
ネットワークスタック2250は、NIC2245を介して、管理されるスイッチング要素1910の外部のネットワークホストからパケットを受信することができる。ネットワークスタック2250は、次に、コントローラパッチ2230にパケットを送信する。いくつかの場合では、パケットは、トンネルを介して、管理されるスイッチング要素の外部のネットワークホストから受信される。いくつかの実施形態では、トンネルは、ネットワークスタック2250で終端する。したがって、ネットワークスタック2250が、トンネルを介してパケットを受信すると、ネットワークスタック2250は、トンネルヘッダをアンラップし(すなわち、ペイロードをデカプセルし)、アンラップされたパケットをコントローラパッチ2230に送信する。
【0216】
管理されるスイッチング要素1910の例示的な動作をここで説明する。この例では、トンネルは、管理されるスイッチング要素1910と、ホスト1990の外部の管理されるスイッチング要素1915及び1920(
図22には示さず)との間に確立される。すなわち、管理されるスイッチング要素1910、1915、及び1920は、
図19に示すように、トンネルを介して接続される。トンネルは、ネットワークスタック2250で終端する。
【0217】
管理されるスイッチング要素1915は、VM1〜VM4によって送信されたパケットを、管理されるスイッチング要素1910に送信する。パケットは、NIC2245によって受信され、次に、ブリッジ2235に送信される。パケットヘッダ内の情報に基づいて、ブリッジ2235は、パケットが、確立されたトンネルを介して送信されると判断し、ネットワークスタック2250にパケットを送信する。ネットワークスタック2250は、トンネルヘッダをアンラップし、アンラップされたパケットをコントローラパッチ2230に送信する。
【0218】
パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、コントローラパッチ2230が有するフローエントリにしたがって、コントローラパッチ2230は、パケットにL3処理を実行しパケットをルーティングする。L3処理及びいくらかのL2処理を実行することによって、管理されるスイッチング要素1910は、宛先ネットワークレイヤアドレスが、宛先論理ネットワークに属する論理スイッチに行くべきであるため、パケットが、管理されるスイッチング要素1920に送信されるべきであると判断する。コントローラパッチ2230は、トンネルを介して、ネットワークスタック2250、ブリッジ2235、及びNIC2245を介して、管理されるスイッチング要素1920にパケットを送信し、管理されるスイッチング要素1920は、宛先論理ネットワークに属する論理スイッチを実装する。
【0219】
図23は、管理されるスイッチング要素内の論理スイッチ及び論理ルータの例示的な実装を概念的に示す。具体的には、この図は、第2のレベルの管理されるスイッチング要素1910並びに管理されるスイッチング要素1915及び1920内の論理ルータ225並びに論理スイッチ220及び230の実装を示す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素1910〜1920を示す。図は、図の上半分及び下半分の両方にVM1〜4を示す。
【0220】
論理スイッチ220及び230並びに論理ルータ225は、論理ポートを介して論理的に結合される。論理スイッチ220及び230のこの特定の構成は、
図12を参照して上述した例で示した構成と同じである。
【0221】
図23の例では、コントローラクラスタ2205(
図23には示さず)は、管理されるスイッチング要素が、フローエントリに基づいて論理ルータ225を実装するように、管理されるスイッチング要素1910にフローエントリを供給することによって、管理されるスイッチング要素1910を構成する。
【0222】
図24は、
図23を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに、管理されるスイッチング要素1910、1915、及び1920の例示的な動作を概念的に示す。具体的には、
図24は、論理ルータ225を実装する管理されるスイッチング要素1910の動作を示す。管理されるスイッチング要素1915及び1920が実行する論理処理パイプラインの一部は、簡単化のため、
図24には示されない。論理処理パイプラインのこれらの部分は、
図13A及び
図13Bの上半分に示した例での、管理されるスイッチング要素815及び820によって実行される論理処理の部分と同様である。すなわち、
図24の例を例示するために、
図24は、
図13A及び
図13Bの下半分を置き換える。
【0223】
図24の下半分に示すように、管理されるスイッチング要素1910は、L2エントリ2405及び2415並びにL3エントリ2410を含む。これらのエントリは、コントローラクラスタ2205(図示せず)が、管理されるスイッチング要素1910に供給するフローエントリである。これらのエントリは、3つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【0224】
管理されるスイッチング要素1910が、VM1からVM4に送信されるパケット2430を、管理されるスイッチング要素1915から受信すると、管理されるスイッチング要素1910は、管理されるスイッチング要素1910のフローエントリ2405に基づいて、パケット2430の処理を開始する。管理されるスイッチング要素1910は、ステージ1830のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット2430のヘッダに格納された論理コンテキストに基づいて、パケット2430の論理コンテキストを識別する。論理コンテキストは、パケット2430が、管理されるスイッチング要素1915によって実行された論理処理の一部(例えば、L2入口ACL、L2転送)によって処理されていることを指定する。このように、レコード1は、パケット2430が、転送テーブルによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0225】
次に、管理されるスイッチング要素1910は、パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1835の出口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット2430がさらに処理されることを可能にし(例えば、パケット2430は、論理スイッチ220のポート「X」を介して論理スイッチ220から出ることができる)、したがって、パケット2430が、管理されるスイッチング要素1910のフローエントリによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素1910が、パケット2430の論理コンテキスト(例えば、パケット2430は、処理パイプライン2400のステージ2452によって処理されている)を、パケット2430のヘッダのフィールドのセットに格納することを指定する。(すべてのレコードは、論理処理を実行する管理されるスイッチング要素が、レコードに基づいて論理処理の一部を実行するたびに、フィールドのセット内の論理コンテキストストアを更新することを指定することに注意すべきである。)
【0226】
管理されるスイッチング要素1910は、フローエントリに基づいてパケット2430の処理を続ける。管理されるスイッチング要素1910は、パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910がパケット2430のヘッダ内の情報に基づいて論理ルータ225の論理ポート1を介してパケットを受け入れるべきであることを指定することによってL3入口ACLを実装するL3エントリ2410内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。
【0227】
管理されるスイッチング要素1910は、次に、その宛先IPアドレス(例えば、1.1.2.10)を有するパケット2430が論理ルータ225のポート2から出ることを許可されるべきであることを指定することによってL3ルーティング1845を実装するL3エントリ2410内の丸で囲まれた4によって示されるフローエントリ(「レコード4」と呼ぶ)を識別する。また、レコード4(又は、図示しないルーティングテーブル内の別のレコード)は、パケット2430の送信元MACアドレスが、論理ルータ225のポート2のMACアドレス(すなわち、01:01:01:01:01:02)に書き換えられるべきであることを示す。管理されるスイッチング要素1910は、次に、管理されるスイッチング要素1910がパケット2430のヘッダ内の情報(例えば、送信元IPアドレス)に基づいて論理ルータ225のポート2を介してパケットを送出することができることを指定することによってL3出口ACLを実装するL3エントリ2410内の丸で囲まれた5によって示されるフローエントリ(「レコード5」と呼ぶ)を識別する。
【0228】
パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910は、ステージ1860の入口ACLを実装するL2エントリ2415内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。この例では、レコード6は、パケット2430がさらに処理されることを可能にし、したがって、パケット2430が、管理されるスイッチング要素1910によって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード6は、管理されるスイッチング要素1910が、パケット2430の論理コンテキスト(例えば、パケット2430は、処理パイプライン2400のステージ2462によって処理されている)を、パケット2430のヘッダのフィールドのセットに格納することを指定する。
【0229】
次に、管理されるスイッチング要素1910は、パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1865の論理L2転送を実装する転送テーブル内の丸で囲まれた7によって示されるレコード(「レコード7」と呼ぶ)を識別する。レコード7は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、VM4に接続された論理スイッチ230の論理ポート(図示せず)を介して転送されるべきであることを指定する。
【0230】
レコード7は、また、パケット2430が、転送テーブルによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード7は、管理されるスイッチング要素1910が、論理コンテキスト(例えば、パケット2430は、処理パイプライン2400のステージ1865によって処理されている)を、パケット2430のヘッダのフィールドのセットに格納することを指定する。
【0231】
パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910は、ステージ1870のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。この例では、レコード8は、VM4が結合される管理されるスイッチング要素1920のポート5を、パケット2430が転送されるべき論理スイッチ230の論理ポート(ステージ1865で決定される)に対応するポートとして識別する。レコード8は、加えて、パケット2430が、転送テーブルによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0232】
パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910は、次に、ステージ1875の物理マッピングを実装するL2エントリ2415内の丸で囲まれた9によって示されるレコード(「レコード9」と呼ぶ)を識別する。レコード9は、パケット2430が管理されるスイッチング要素1920に到達するために、パケット2430が送信されるべき管理されるスイッチング要素1910のポート(図示せず)を指定する。この場合では、管理されるスイッチング要素1910は、パケット2430を、管理されるスイッチング要素1920に結合される管理されるスイッチング要素1910のポートから送出することになる。
【0233】
図25〜30Bは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素に実装される分散型論理ルータを示す。具体的には、
図25〜30Bは、送信元L2処理、L3ルーティング、及び宛先L2処理を含む論理処理パイプライン全体が、最初のホップの管理されるスイッチング要素(すなわち、マシンから直接パケットを受信するスイッチング要素)によって実行されることを示す。
【0234】
図25は、
図2を参照して上述した論理処理パイプライン200の例示的な実装を概念的に示す。具体的には、
図25は、L3処理210が、送信元マシンからパケットを直接受信する任意の管理されるスイッチング要素によって実行され得ることを示す。
図25は、ネットワークアーキテクチャ2500を示す。ネットワークアーキテクチャ2500では、論理処理パイプライン200は、管理されるスイッチング要素2505によって実行される。この例では、L3処理210は、管理されるスイッチング要素2505のフローエントリに基づいて、管理されるスイッチング要素2505によって実行される。
図25は、送信元マシン2515及び宛先マシン2520も示す。
【0235】
管理されるスイッチング要素2505は、エッジスイッチング要素に結合されたマシンから直接パケットを受信するエッジスイッチング要素である。管理されるスイッチング要素2505は、送信元マシン2515からパケットを受信する。管理されるスイッチング要素2505が、送信元マシン2515からパケットを受信すると、管理されるスイッチング要素805は、いくつかの実施形態では、パケットを論理的に転送及びルーティングするために、パケットに論理処理パイプライン200の全体を実行する。
【0236】
受信されたパケットが、この例では別の論理ネットワークにある宛先マシン2520に向けられている場合、管理されるスイッチング要素2505は、送信元マシン2515が属する論理ネットワークにある論理スイッチ、宛先マシン2520が属する論理ネットワークにある論理スイッチ、及び、これら2つの論理スイッチ間でパケットをルーティングする論理ルータとして機能する。論理処理パイプライン200の実行の結果に基づいて、管理されるスイッチング要素2505は、宛先マシン2520がパケットを受信する管理されるスイッチング要素2510にパケットを転送する。
【0237】
図26は、論理スイッチ220、論理ルータ225、及び論理スイッチ230を介してパケットを処理するいくつかの実施形態の論理処理パイプライン200を概念的に示す。具体的には、この図は、
図25を参照して上述したネットワークアーキテクチャ2500で実行される場合の論理処理パイプライン200を示す。上述したように、ネットワークアーキテクチャ2500では、L2処理205、L3処理210、及びL2処理215が、マシンからパケットを受信するエッジスイッチング要素である単一の管理されるスイッチング要素2505によって実行される。したがって、これらの実施形態では、最初のホップのスイッチング要素が、論理処理パイプライン200の全体を実行する。
【0238】
L2処理205は、いくつかの実施形態では、論理スイッチ220(
図26には示さず)を介してパケットを処理する4つのステージ2605〜2620を含む。ステージ2605では、パケットの論理コンテキストを決定するために、入口コンテキストマッピングがパケットに実行される。いくつかの実施形態では、ステージ2605は、論理スイッチ220がパケットを受信する(例えば、パケットが、最初に、管理されるスイッチング要素2505によって受信される)と、実行される。
【0239】
いくつかの実施形態では、第2のステージ2610は、論理スイッチ220のために定義される。いくつかのこのような実施形態では、ステージ2610は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するときに、論理スイッチへのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチのために定義された入口ACLに基づいて、パケットは、(例えば、ステージ2165によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【0240】
L2処理205の第3のステージ2615では、論理スイッチのコンテキストでL2転送がパケットに実行される。いくつかの実施形態では、第3のステージ2615は、論理スイッチ220に対してパケットを処理及び転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。
【0241】
いくつかの実施形態の第4のステージ2620は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第4のステージ2620は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後、論理スイッチ220のパケットの外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポートから送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、例えば、破棄されてよい。
【0242】
パケットの宛先が、別の論理ネットワークにある場合(すなわち、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ220によって処理される論理ネットワークと異なる場合)、論理スイッチ220は、パケットを論理ルータ225に送信し、論理ルータ225は、次に、宛先論理ネットワークにパケットをルーティングするために、ステージ210のL3処理を実行する。L3処理210は、管理されるスイッチング要素2505(
図26には示さず)によって実装される論理ルータ225(
図26には示さず)を介してパケットを処理する6つのステージ2635〜2651を含む。上述したように、L3処理は、レイヤ3ネットワークを介してパケットをどこにルーティングするのかを決定するための論理ルーティングルックアップのセットを実行することを含む。
【0243】
第1のステージ2635は、論理ルータ225がパケットを受信すると(すなわち、論理ルータ225を実装する管理されるスイッチング要素2505がパケットを受信すると)、アクセス制御を決定するための論理入口ACLルックアップを実行する。いくつかの実施形態では、ステージ2635は、論理ルータ225に対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。次のステージ2636は、パケットの宛先アドレスを、パケットの送信元マシンから隠された宛先マシンの実際のアドレスに戻すために、DNATを実行する。このステージ2636は、DNATが有効にされている場合、実行される。
【0244】
次のステージ2640は、パケットのL3アドレス(例えば、宛先IPアドレス)、L3フローエントリを含む転送テーブル、及び、パケットの論理コンテキストに基づいて、レイヤ3ネットワークを介してパケットを送信するために、1つ又は複数の論理ポートを決定するための論理L3ルーティングを実行する。
【0245】
いくつかの実施形態の第4のステージ2645は、パケットにSNATを実行する。例えば、管理されるスイッチング要素2505は、SNATが有効にされている場合、送信元IPアドレスを隠すために、パケットの送信元IPアドレスを異なるIPアドレスに置き換える。また、さらに後述するように、管理されるスイッチング要素は、ネットワークアドレスを変換するためのフローエントリを受信するために、NATデーモンを使用することができる。NATデーモンは、
図31を参照してさらに後述される。
【0246】
第5のステージ2650は、論理ルータ225が、ステージ2640で決定されたポートを介して論理ルータ225の外へパケットをルーティングする前に、アクセス制御を決定するための論理出口ACLルックアップを実行する。出口ACLルックアップは、パケットのL3アドレス(例えば、送信元及び宛先IPアドレス)に基づいて実行される。いくつかの実施形態では、ステージ2650は、論理ルータ225に対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。
【0247】
第6のステージ2651は、宛先L3アドレス(例えば、宛先IPアドレス)を宛先L2アドレス(例えば、宛先MACアドレス)に変換するために、アドレス解決を実行する。いくつかの実施形態では、管理されるスイッチング要素2505は、宛先IPアドレスに対応する宛先L2アドレスを見つけるために、(例えば、ARP要求を送信するか、ARPキャッシュをルックアップすることによって)標準的なアドレス解決を使用する。また、さらに後述するように、いくつかの実施形態の管理されるスイッチング要素2505は、L3アドレスをL2アドレスに解決するためのフローエントリを受信するために、L3デーモンを使用することができる。L3デーモンは、
図48〜50を参照してさらに後述される。
【0248】
論理ルータ225が宛先論理ネットワークに結合されていない場合、論理スイッチ220は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。また、他の論理ルータの動作に対応する論理処理の一部は、管理されるスイッチング要素2505に実装されることになる。論理ルータ225が宛先論理ネットワークに結合されている場合、論理スイッチ220は、宛先論理ネットワーク(すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ)にパケットをルーティングする。
【0249】
L2処理215は、いくつかの実施形態では、論理スイッチ225(
図26には示さず)を介してパケットを処理するための5つのステージ2660〜2680を含む。いくつかの実施形態では、第1のステージ2660は、論理スイッチ225のために定義される。いくつかのこのような実施形態では、ステージ2660は、論理スイッチ230に対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチ230が論理ルータ225からパケットを受信するときに、論理スイッチ230へのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチのために定義された入口ACLに基づいて、パケットは、(例えば、ステージ2665によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
【0250】
L2処理パイプライン215の第2のステージ2665では、論理スイッチのコンテキストでL2転送がパケットに実行される。いくつかの実施形態では、第3のステージ2665は、論理スイッチ220に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。
【0251】
いくつかの実施形態の第3のステージ2670は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第3のステージ2670は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後、論理スイッチ230のパケットの外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポートから送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、パケットは、例えば、破棄されてよい。
【0252】
第4のステージ2675では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ230の1つ又は複数の論理ポート(例えば、論理出口ポート)から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチの特定の論理ポートに対応する1つ又は複数の管理されるスイッチング要素(管理されるスイッチング要素2505を含む)の物理ポート(複数可)を識別する。
【0253】
L2処理205の第5のステージ2680は、第4のステージ2675で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第4のステージ2675で決定された物理ポートにパケットを転送するための動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第4のステージ2675で決定された物理ポート(複数可)に達するために、パケットを送信するために通過する、管理されるスイッチング要素2505のポートのセット(図示せず)の1つ又は複数のポートに関連付けられた1つ又は複数のキュー(図示せず)を決定する。このように、管理されるスイッチング要素は、決定された物理ポート(複数可)にパケットが達するためのネットワーク内の正しい経路に沿って、パケットをルーティングすることができる。また、いくつかの実施形態は、論理処理パイプライン2600がパケットに実行される前に、パケットをその元の状態に戻すために、第5のステージ2680の後に論理コンテキストを除去する。
【0254】
図27は、論理ルータ225並びに論理スイッチ220及び論理スイッチ230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2700を概念的に示す。具体的には、ネットワークアーキテクチャ2700は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素2505及び2510を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
【0255】
この例では、論理スイッチ220は、論理ルータ225、VM1、及びVM2間でデータパケットを転送する。論理スイッチ230は、論理ルータ225、VM3、及びVM4間でデータパケットを転送する。上述したように、論理ルータ225は、論理スイッチ220及び230並びに他の論理ルータ及びスイッチ(図示せず)間でデータパケットをルーティングする。論理スイッチ220及び230並びに論理ルータ225は、論理ポート(図示せず)を介して論理的に結合され、論理ポートを介してデータパケットを交換する。これらの論理ポートは、管理されるスイッチング要素2505及び2510の物理ポートにマッピング又は取り付けられる。
【0256】
いくつかの実施形態では、論理ルータは、管理されるネットワーク内の各々の管理されるスイッチング要素に実装される。管理されるスイッチング要素が、管理されるスイッチング要素に結合されたマシンからパケットを受信すると、管理されるスイッチング要素は、論理ルーティングを実行する。すなわち、パケットに対する最初のホップのスイッチング要素であるこれらの実施形態の管理されるスイッチング要素は、L3処理210を実行する。
【0257】
この例では、管理されるスイッチング要素2505及び2510は、それぞれ、ホスト2525及び2530で動作するソフトウェアスイッチング要素である。管理されるスイッチング要素2505及び2510は、管理されるスイッチング要素2505及び2510がVM1〜4から受信するパケットを転送及びルーティングするために論理スイッチ220及び230を実装するフローエントリを有する。フローエントリは、論理ルータ225も実装する。これらのフローエントリを使用して、管理されるスイッチング要素2505及び2510は、管理されるスイッチング要素2505及び2510に結合されるネットワーク内のネットワーク要素間でパケットを転送及びルーティングすることができる。図示のように、管理されるスイッチング要素2505及び2510は、それぞれ、管理されるスイッチング要素2505及び2510に結合されたネットワーク要素とデータパケットを交換するための3つのポート(例えば、VIF)を有する。いくつかの場合では、これらの実施形態でのデータパケットは、管理されるスイッチング要素2505及び2510間に確立されるトンネル(例えば、管理されるスイッチング要素2505のポート3及び管理されるスイッチング要素2510のポート3で終端するトンネル)を介して移動することになる。
【0258】
この例では、図示のように、ホスト2525及び2530の各々は、管理されるスイッチング要素及びいくつかのVMを含む。VM1〜4は、ネットワークアドレス(例えば、L2のためのMACアドレス、L3のためのIPアドレス、など)のセットがそれぞれ割り当てられ、他のネットワーク要素との間でネットワークデータを送受信することができる仮想マシンである。VMは、ホスト2525及び2530で動作するハイパーバイザ(図示せず)によって管理される。
【0259】
ネットワークアーキテクチャ2700を介するいくつかの例示的なデータ交換をここで説明する。論理スイッチ220に結合されたVM1が、同じ論理スイッチ220に結合されたVM2にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、次に、パケットにL2処理205を実行する。このパケットへのL2処理の結果は、パケットが、管理されるスイッチング要素2505及び2510間に確立されたトンネルを介して管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート4を介してVM2に達するべきであることを示すことになる。VM1及び2は、同じ論理ネットワーク内にあるため、管理されるスイッチング要素2505は、L3処理210及びL2処理215を実行しない。
【0260】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM3にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、パケットにL2処理205を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される(すなわち、パケットの論理L3宛先アドレスは、別の論理ネットワークのためのものである)ため、L3処理210がこのパケットに実行される必要がある。管理されるスイッチング要素2505は、L2処理215も実行する。すなわち、パケットを受信する最初のホップのスイッチング要素としての管理されるスイッチング要素2505は、パケットに論理処理パイプライン200の全体を実行する。論理処理パイプライン200の実行の結果は、パケットが、管理されるスイッチング要素2505のポート5を介してVM3に送信されるべきであることを示すことになる。したがって、パケットは、2つの論理スイッチ及び論理ルータを介して進んだが、別の管理されるスイッチング要素に進む必要はなかった。
【0261】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。パケットに関する最初のホップのスイッチング要素としての管理されるスイッチング要素2505は、パケットに論理処理パイプライン200の全体を実行する。このパケットへの論理処理パイプライン200の実行の結果は、パケットが、管理されるスイッチング要素2505及び2510間に確立されたトンネルを介して管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート5を介してVM4に達するべきであることを示すことになる。
【0262】
図28は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2800を概念的に示す。具体的には、ネットワークアーキテクチャ2800は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素2505及び2510を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
【0263】
ネットワークアーキテクチャ2800は、ネットワークアーキテクチャ2800が、管理されるスイッチング要素2805を追加で含むことを除いて、ネットワークアーキテクチャ2700と同様である。いくつかの実施形態の管理されるスイッチング要素2805は、プールノードとして機能する第2のレベルの管理されるスイッチング要素である。
【0264】
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、この例での管理されるスイッチング要素2505は、図示のように、管理されるスイッチング要素2505のポート1で終端するトンネルを介して、ホスト2810で動作する管理されるスイッチング要素2805に結合される。同様に、管理されるスイッチング要素2510は、管理されるスイッチング要素2510のポート2で終端するトンネルを介して、管理されるスイッチング要素2805に結合される。上記
図27に示す例示的なアーキテクチャ2700と対照的に、管理されるスイッチング要素2505及び2510間にトンネルは確立されない。
【0265】
論理ルータ225並びに論理スイッチ220及び230は、管理されるスイッチング要素2505に実装され、第2のレベルの管理されるスイッチング要素2805が、データパケット交換に関与する。すなわち、管理されるスイッチング要素2505及び2510は、管理されるスイッチング要素2805を介してパケットを交換する。
【0266】
図29は、転送及びルーティングするために、受信されたパケットにL2及びL3処理のすべてを実行する最初のホップのスイッチング要素の一例を概念的に示す。
図29は、管理されるスイッチング要素2505及び2510による論理ルータ225並びに論理スイッチ220及び230の実装を示す。図示のように、管理されるスイッチング要素2505が最初のホップのスイッチング要素である場合、管理されるスイッチング要素2505によって、論理処理パイプライン200のすべてが実行される。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素2505及び2510を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
【0267】
論理スイッチ220に結合されたVM1が、同じ論理スイッチ220に結合されたVM2にパケットを送信すると、パケットが論理スイッチ220に入る論理スイッチ220の論理ポート1は、管理されるスイッチング要素2505のポート4に取り付けられる、又はマッピングされるため、パケットは、最初に、管理されるスイッチング要素2505のポート4を介して、管理されるスイッチング要素2502に送信される。
【0268】
管理されるスイッチング要素2505は、次に、パケットにL2処理205を実行する。具体的には、管理されるスイッチング要素2505は、最初に、パケットのヘッダフィールドに含まれる情報に基づいて、パケットの論理コンテキストを決定するために、論理コンテキストルックアップを実行する。この例では、パケットの送信元MACアドレスは、VM1のMACアドレスであり、パケットの送信元IPアドレスは、VM1のIPアドレスである。パケットの宛先MACアドレスは、VM2のMACアドレスであり、パケットの宛先IPアドレスは、VM2のIPアドレスである。この例では、論理コンテキストは、論理スイッチ220が、パケットを転送することになる論理スイッチであることを指定し、論理スイッチ220の論理ポート1が、パケットが受信されたポートであることを指定する。論理コンテキストは、また、ポート2は、VM2のMACアドレスと関連付けられているため、論理スイッチ220のポート2が、パケットをVM2に送出することになるポートであることを指定する。
【0269】
管理されるスイッチング要素2505は、次に、パケットの決定された論理コンテキストに基づいて、論理転送ルックアップを実行する。管理されるスイッチング要素2505は、パケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、論理スイッチ220のポート1を通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、また、論理コンテキストから、論理スイッチ220のポート2が、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素2505は、論理スイッチ220のポート2に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、論理スイッチ220のポート2を介してパケットを送信させなくさせることになるネットワークアドレスを持っていないことを判断する。
【0270】
管理されるスイッチング要素2505は、次に、論理スイッチ220の論理ポート2がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ220の論理ポート2が、管理されるスイッチング要素2510のポート4にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2505及び2510間に確立されるトンネルを介して管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート4を介してVM2に達するべきであると判断する。VM1及びVM2は、同じ論理ネットワーク内にあるため、管理されるスイッチング要素2505は、L3処理を実行しない。管理されるスイッチング要素2510は、どのような論理処理もパケットに実行せず、管理されるスイッチング要素2510のポート4を介してVM2にパケットを転送するだけである。
【0271】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM3にパケットを送信する場合(すなわち、VM1及びVM3が異なる論理ネットワーク内にある場合)、パケットは、最初に、管理されるスイッチング要素2505のポート4を介して、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、L2処理205をパケットに実行する。具体的には、管理されるスイッチング要素2505は、最初に、パケットのヘッダフィールドに含まれた情報に基づいて、パケットの論理コンテキストを決定するために、論理コンテキストルックアップを実行する。この例では、パケットの送信元MACアドレスは、VM1のMACアドレスであり、パケットの送信元IPアドレスは、VM1のIPアドレスである。パケットは、VM1から、別の論理ネットワーク内にあるVM3に送信されるため、パケットは、ポートXと関連付けられたMACアドレスを、宛先MACアドレス(すなわち、この例では、01:01:01:01:01:01)として有する。パケットの宛先IPアドレスは、VM3のIPアドレス(例えば、1.1.2.10)である。この例では、論理コンテキストは、論理スイッチ220が、パケットを転送することになる論理スイッチであり、論理スイッチ220の論理ポート1が、パケットが受信されたポートであることを指定する。論理コンテキストは、また、ポートXは、論理ルータ225のポート1のMACアドレスと関連付けられているため、論理スイッチ220のポートXが、パケットを論理ルータ225の外に送信するためのポートであることを指定する。
【0272】
管理されるスイッチング要素2505は、次に、パケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、論理スイッチ220のポート1を通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、また、論理コンテキストから、論理スイッチ220のポートXが、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素2505は、ポートXに対するパケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、ポートXを介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【0273】
管理されるスイッチング要素2505は、次に、パケットの宛先IPアドレス、1.1.2.10が、別の論理ネットワークのためのものであるため(すなわち、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ220によって処理される論理ネットワークと異なる場合)、パケットにL3処理210を実行する。管理されるスイッチング要素2505は、L3でのパケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理ルータ225に、論理ルータ225の論理ポート1を通ってきたパケットを拒絶させることになるネットワークアドレスを持っていないことを判断する。管理されるスイッチング要素2505は、また、L3フローエントリをルックアップし、パケットの宛先IPアドレス、1.1.2.10が、論理ルータ225の論理ポート2と関連付けられた1.1.2.1/24のサブネットアドレスに属するため、パケットが、論理ルータ225の論理ポート2に送信されるべきであることを決定する。さらに、管理されるスイッチング要素2505は、論理ルータ225の論理ポート2に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、論理ポート2を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【0274】
管理されるスイッチング要素2505は、L3処理210を実行する一方で、パケットの論理コンテキスト又はパケット自体を変更する。例えば、管理されるスイッチング要素2505は、パケットの論理送信元MACアドレスを、論理ルータ225の論理ポート2のMACアドレス(すなわち、この例では、01:01:01:01:01:02)になるように変更する。管理されるスイッチング要素2505は、また、パケットの宛先MACアドレスを、VM3のMACアドレスになるように変更する。
【0275】
管理されるスイッチング要素2505は、次に、L2処理215を実行する。具体的には、管理されるスイッチング要素2505は、パケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポートYを通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、次に、論理スイッチ230のポート1が、パケットを宛先VM3に送出するためのポートであると判断する。さらに、管理されるスイッチング要素2505は、論理スイッチ230のポート1に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポート1を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【0276】
管理されるスイッチング要素2505は、次に、論理スイッチ230の論理ポート1がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ230の論理ポート1が、管理されるスイッチング要素2505のポート5にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2505のポート5を介してVM3に送信されるべきであると判断する。この例での管理されるスイッチング要素2505は、パケットをVM3に送信する前に、パケットから論理コンテキストを除去する。したがって、パケットは、2つの論理スイッチ及び論理ルータを介して進んだが、別の管理されるスイッチング要素に進む必要はなかった。
【0277】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、VM4に向かうパケットが、管理されるスイッチング要素2505及び2510間に確立されたトンネルを介して、管理されるスイッチング要素2505から管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート5を介してVM4に達することを除いて、パケットは、VM1から送信されたパケットがVM3に送信されるのと同様に、VM4に送信される。
【0278】
図30A〜30Bは、
図29を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに、管理されるスイッチング要素2505及び2510の例示的な動作を概念的に示す。具体的には、
図30Aは、論理スイッチ220及び230並びに論理ルータ225を実装する管理されるスイッチング要素2505の動作を示す。
図30Bは、管理されるスイッチング要素2505の動作を示す。
【0279】
図30Aの下半分に示すように、管理されるスイッチング要素2505は、L2エントリ3005及び3015、並びにL3エントリ3010を含む。これらのエントリは、コントローラクラスタ(図示せず)が管理されるスイッチング要素2505に供給するフローエントリである。これらのエントリは、3つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【0280】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケット3030を送信すると、パケットは、最初に、管理されるスイッチング要素2505のポート4を介して、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、管理されるスイッチング要素2505の転送テーブル3005〜3015に基づいて、パケットにL2処理を実行する。この例では、パケット3030は、VM4のIPアドレスである、1.1.2.10の宛先IPアドレスを有する。パケット3030の送信元IPアドレスは、1.1.1.10である。パケット3030は、また、VM1のMACアドレスを、送信元MACアドレスとして有し、論理ルータ225の論理ポート1のMACアドレス(例えば、01:01:01:01:01:01)を、宛先MACアドレスとして有する。
【0281】
管理されるスイッチング要素2505は、ステージ2605のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、VM1からパケット3030を受信するポート4である入口ポートに基づいて、パケット3030の論理コンテキストを識別する。加えて、レコード1は、管理されるスイッチング要素2505が、パケット3030の論理コンテキストを、パケット3030のヘッダのフィールドのセット(例えば、VLAN idフィールド)に格納することを指定する。レコード1は、また、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。ディスパッチポートは、米国特許出願第13/177,535号に記載されている。
【0282】
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、ステージ2610の入口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット3030がさらに処理されることを可能にし(例えば、パケット3030は、論理スイッチ220の入口ポートを通り抜けることができる)、したがって、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(すなわち、パケット3030は、処理パイプライン3000の第2のステージ3042によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
【0283】
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2615の論理L2転送を実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、論理ルータ225の論理ポート1のMACアドレスを宛先MACアドレスとして有するパケットが、論理スイッチ220の論理ポートXに送信されるべきであることを指定する。
【0284】
レコード3は、また、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード3は、管理されるスイッチング要素2505が、論理コンテキスト(すなわち、パケット3030は、処理パイプライン3000の第3のステージ2615によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
【0285】
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2620の出口ACLを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。この例では、レコード4は、パケット3030がさらに処理されることを可能にし(例えば、パケット3030は、論理スイッチ220のポート「X」を介して論理スイッチ220から出ることができる)、したがって、パケット3030が、管理されるスイッチング要素2505のフローエントリによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード4は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(すなわち、パケット3030は、処理パイプライン3000のステージ2620によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。(すべてのレコードは、論理処理を実行する管理されるスイッチング要素が、レコードに基づいて論理処理の一部を実行するたびに、フィールドのセット内の論理コンテキストストアを更新することを指定することに注意すべきである。)
【0286】
管理されるスイッチング要素2505は、フローエントリに基づいてパケット3030の処理を続ける。管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505がパケット3030のヘッダ内の情報に基づいて論理ルータ225の論理ポート1を介してパケットを受け入れるべきであることを指定することによってL3入口ACLを実装するL3エントリ3010内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。
【0287】
管理されるスイッチング要素2505は、次に、その宛先IPアドレス(例えば、1.1.2.10)を有するパケット3030が論理ルータ225のポート2から出るべきであることを指定することによってL3ルーティング2640を実装するL3エントリ3010内の丸で囲まれた6によって示されるフローエントリ(「レコード6」と呼ぶ)を識別する。また、レコード6(又は、図示しないルーティングテーブル内の別のレコード)は、パケット3030の送信元MACアドレスが、論理ルータ225のポート2のMACアドレス(すなわち、01:01:01:01:01:02)に書き換えられるべきであることを示す。
【0288】
管理されるスイッチング要素2505は、次に、管理されるスイッチング要素2505がパケット3030のヘッダ内の情報(例えば、送信元IPアドレス)に基づいて論理ルータ225のポート2を介してパケットが出ることを可能にすることを指定することによってL3出口ACLを実装するL3エントリ3010内の丸で囲まれた7によって示されるフローエントリ(「レコード7」と呼ぶ)を識別する。
【0289】
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、ステージ2660の入口ACLを実装するL2エントリ3015内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。この例では、レコード8は、パケット3030が、管理されるスイッチング要素2505によって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード8は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(例えば、パケット3030は、処理パイプライン3000のステージ2660によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
【0290】
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2665の論理L2転送を実装するL2エントリ3015内の丸で囲まれた9によって示されるレコード(「レコード9」と呼ぶ)を識別する。レコード9は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、VM4に接続された論理スイッチ230の論理ポート(図示せず)を介して転送されるべきであることを指定する。
【0291】
レコード9は、また、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード9は、管理されるスイッチング要素2505が、論理コンテキスト(例えば、パケット3030は、処理パイプライン3000のステージ2665によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
【0292】
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2670の出口ACLを実装する転送テーブル内の丸で囲まれた10によって示されるレコード(「レコード10」と呼ぶ)を識別する。この例では、レコード10は、パケット3030が、VM4に接続する論理ポート(図示せず)を介して出ることを可能にし、したがって、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード10は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(例えば、パケット3030は、処理パイプライン3000のステージ2670によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
【0293】
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、ステージ2675のコンテキストマッピングを実装するL2エントリ3015内の丸で囲まれた11によって示されるレコード(「レコード11」と呼ぶ)を識別する。この例では、レコード11は、VM4が結合される管理されるスイッチング要素2510のポート5を、パケット3030が転送されるべき論理スイッチ230の論理ポート(ステージ2665で決定される)に対応するポートとして識別する。レコード11は、加えて、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0294】
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ3015内の丸で囲まれた12によって示されるレコード(「レコード12」と呼ぶ)を識別する。レコード12は、パケット3030が管理されるスイッチング要素2510に到達するために、パケット3030が通って送信されるべきポートとして、管理されるスイッチング要素2505のポート3を指定する。この場合では、管理されるスイッチング要素2505は、パケット3030を、管理されるスイッチング要素2510に結合される管理されるスイッチング要素2505のポート3から送出することになる。
【0295】
図30Bに示すように、管理されるスイッチング要素2510は、パケット3030を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素2510が、管理されるスイッチング要素2505からパケット3030を受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2510の転送テーブルに基づいて、パケット3030の処理を開始する。管理されるスイッチング要素2510は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット3030のヘッダに格納された論理コンテキストに基づいて、パケット3030の論理コンテキストを識別する。論理コンテキストは、パケット3030が、管理されるスイッチング要素2505によって実行された論理処理200の全体によって処理されていることを指定する。このように、レコード4は、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0296】
次に、管理されるスイッチング要素2510は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。レコード2は、パケット3030がVM4に到達するために、パケット3030が通って送信されるべき管理されるスイッチング要素2510のポート5を指定する。この場合では、管理されるスイッチング要素2510は、パケット3030を、VM4に結合される管理されるスイッチング要素2510のポート5から送出することになる。いくつかの実施形態では、管理されるスイッチング要素2510は、パケットをVM4に送信する前に、パケット3030から論理コンテキストを除去する。
【0297】
図31は、管理されるスイッチング要素が動作するホストの例示的なソフトウェアアーキテクチャを概念的に示す。具体的には、この図は、パケットを論理的に転送及びルーティングするために論理処理パイプラインを実行する管理されるスイッチング要素が、ネットワークアドレスを変換するためのNATデーモンを使用することを示す。この図は、ホスト3100、管理されるスイッチング要素3105、転送テーブル3120、NATデーモン3110、及びNATテーブル3115を、図の上半分に示す。この図は、フローエントリ3125及び3130を示す。
【0298】
フローエントリ3125及び3130は、それぞれ、クォリファイア及びアクションを有するフローエントリである。フローエントリ3125及び3130として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。いくつかの実施形態では、フローエントリは、優先順位を有し、管理されるスイッチング要素は、2つ以上のフローエントリのクォリファイアが満たされる場合、最も高い優先順位でフローエントリのアクションを行う。
【0299】
ホスト3100は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム(例えば、Windows(登録商標)及びLinux(登録商標))によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素3105は、ホスト3100で実行するソフトウェアスイッチング要素(例えば、Open vSwitch)である。上述したように、コントローラクラスタ(図示せず)は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素3105は、それ自体はフローエントリを生成しない。
【0300】
いくつかの実施形態の管理されるスイッチング要素3105は、上述した論理処理パイプライン200の全部又は一部を実行する。具体的には、管理されるスイッチング要素3105は、転送テーブル3120内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするためにL3処理210を実行する、管理されるスイッチング要素(例えば、管理されるスイッチング要素1720又は2505)である。いくつかの実施形態では、管理されるスイッチング要素3105は、管理されるスイッチング要素に結合されたマシン(図示せず)からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、1つ又は複数の仮想マシン(図示せず)が、ホスト3100で動作しており、管理されるスイッチング要素3105に結合される。他の実施形態では、管理されるスイッチング要素は、第2のレベルの管理されるスイッチング要素である。
【0301】
管理されるスイッチング要素3105が、ネットワークアドレス変換(NAT)を実行するように構成されている場合、いくつかの実施形態の管理されるスイッチング要素3105は、パケットにNATを実行するためのNATデーモン3110を使用する。いくつかの実施形態では、管理されるスイッチング要素3105は、所定のアドレスから変換するアドレスを見つけるためのルックアップテーブルを保持しない。代わりに、管理されるスイッチング要素3105は、NATデーモン3110にアドレスを要求する。
【0302】
いくつかの実施形態のNATデーモン3110は、ホスト3100で動作するソフトウェアアプリケーションである。NATデーモン3110は、アドレスの対を含むテーブル3115を保持し、各対は、互いに変換される2つのアドレスを含む。管理されるスイッチング要素3105が、所定のアドレスから変換するアドレスを要求すると、NATデーモンは、所定のアドレスを変換すべきアドレスを見つけるために、テーブル3115をルックアップする。
【0303】
異なる実施形態の管理されるスイッチング要素3105及びNATデーモン3110は、アドレスを要求し、供給するために異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素3105は、元のアドレスを有するが、変換されたアドレスを持たないパケットを、NATデーモンに送信する。これらの実施形態のNATデーモン3110は、元のアドレスを、変換されたアドレスに変換する。NATデーモン3110は、管理されるスイッチング要素3105にパケットを送信し戻し、管理されるスイッチング要素3105は、パケットを宛先マシンに向けて送信するために、論理転送及び/又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素3105は、最初に、解決する元のアドレスを含むパケットと共にNATデーモン3110にメタデータを送信する。このメタデータは、管理されるスイッチング要素3105が、NATデーモン3110から戻るパケットを受信するとき、管理されるスイッチング要素3105が、論理処理パイプラインの実行を再開するために使用する情報(例えば、レジスタ値、論理パイプライン状態、など)を含む。
【0304】
他の実施形態では、いくつかの実施形態の管理されるスイッチング要素3105は、フローテンプレートをNATデーモン3110に送信することによってアドレスを要求し、フローテンプレートは、アドレスについての実際の値を持たないフローエントリである。NATデーモンは、テーブル3115をルックアップすることによって、フローテンプレートに記入するアドレスを見つけ出す。NATデーモン3110は、次に、記入されたフローテンプレートを転送テーブル3120に入れることによって、実際のアドレスが記入されたフローテンプレートを、管理されるスイッチング要素3110に送信し戻す。いくつかの実施形態では、NATデーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。さらに、NATデーモン3110が、変換されたアドレスを見つけるのに失敗した場合、NATデーモンは、パケットを破棄するようにフローテンプレートで指定する。
【0305】
ここで、管理されるスイッチング要素3105及びNATデーモン3110の例示的な動作を、3つの異なるステージ1〜3(丸で囲まれた1〜3)に関して説明する。この例では、管理されるスイッチング要素3105は、マシン(図示せず)から転送及びルーティングするためにパケットを受信する管理されるエッジスイッチング要素である。管理されるスイッチング要素3105は、パケットを受信し、転送テーブル3120内のフローエントリに基づいてL3処理210を実行する。
【0306】
パケットにL3処理210を実行しながら、管理されるスイッチング要素3105は、(ステージ1で)フローエントリ3125を識別し、フローエントリ3125で指定されるアクションを実行する。図示のように、フローエントリ3125は、Xに変換されるべきIPアドレス1.1.1.10を有するフローテンプレートが、NATデーモン3110に送信されるべきであることを示す。この例では、フローエントリ3125は、いくつかの実施形態では番号である優先順位の値Nを有する。
【0307】
ステージ2では、NATデーモン3110は、フローテンプレートを受信し、NATテーブル3115をルックアップすることによって、1.1.1.10が2.1.1.10に変換されるべきであることを知る。NATデーモンは、フローテンプレートに記入し、記入されたテンプレート(ここでは、フローエントリ3130)を転送テーブル3120に挿入する。この例では、NATデーモンは、N+1の優先順位を、記入されたテンプレートに割り当てる。
【0308】
ステージ3では、管理されるスイッチング要素3110は、パケットのアドレスを変更するために、フローエントリ3130を使用する。また、管理されるスイッチング要素3105がその後に処理するパケットのために、管理されるスイッチング要素3105は、パケットが1.1.1.10の送信元IPアドレスを有する場合、フローエントリ3125の上のフローエントリ3130を使用する。
【0309】
いくつかの実施形態では、NATデーモン3110及び管理されるスイッチング要素は、ホスト3100で動作している同じ仮想マシンで動作し、又は、ホスト3100で動作している異なる仮想マシンで動作する。NATデーモン及び管理されるスイッチング要素は、別々のホストで動作することもできる。
【0310】
図32は、いくつかの実施形態がネットワークアドレスを変換するために実行するプロセス3200を概念的に示す。いくつかの実施形態では、プロセス3200は、L3でパケットをルーティングするためにL3処理210を実行する、管理されるスイッチング要素(例えば、管理されるスイッチング要素1720、2505、又は3105)によって実行される。プロセス3200は、いくつかの実施形態では、プロセスがL3で論理的にルーティングされるべきパケットを受信すると開始する。
【0311】
プロセス3200は、(3205で)パケットがネットワークアドレス変換(NAT)を必要とするかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、パケットがNATを必要とするかどうかを、フローエントリに基づいて判定する。クォリファイアがパケットのヘッダに格納された情報又は論理コンテキストと一致するフローエントリは、パケットがNATを必要とすることを指定する。上述したように、NATは、SNAT又はDNATであってよい。フローエントリは、また、どのNATがパケットに実行されるべきかを指定することになる。
【0312】
プロセス3200が、(3205で)パケットがNATを必要としないと判定すると、プロセスは終了する。そうでなければ、プロセス3200は、(3210で)プロセス3200が、NATデーモンからのパケットのアドレス(例えば、送信元IPアドレス)を変換する先のアドレスを要求する必要があるかどうかを判定する。いくつかの実施形態では、プロセス3200は、フローエントリに基づいて、プロセスがNATデーモンに要求する必要があるかどうかを判定する。例えば、フローエントリは、パケットのアドレスを変換する先のアドレスが、NATデーモンからのアドレスを要求することによって得られるべきであることを指定することができる。いくつかの実施形態では、プロセスは、フローエントリが、変換されたアドレスのための空のフィールド、又は、変換されたアドレスがNATデーモンから得られるべきであることを示すフィールド内のなにか他の値を有するフローテンプレートである場合、NATデーモンが、変換されたアドレスを提供するべきであると判定する。
【0313】
プロセスが、(3210で)プロセスがNATデーモンからのアドレスを要求する必要がないと判定した場合、処理は、(3220で)変換されたアドレスをフローエントリから得る。例えば、フローエントリは、変換されたアドレスを提供することになる。プロセスは、次に、さらに後述する3225に進む。プロセスが、(3210で)プロセスがNATデーモンからのアドレスを要求する必要があると判定した場合、プロセス3200は、3215で、NATデーモンからの変換されたアドレスを要求し、取得する。いくつかの実施形態では、プロセス3200は、フローテンプレートをNATデーモンに送信することによって、変換されたアドレスを要求する。NATデーモンは、フローテンプレートに変換されたアドレスを記入し、記入されたテンプレートを、プロセスが使用する転送テーブル(図示せず)内に配置することになる。
【0314】
次に、プロセス3200は、(3225で)パケットを変換されたアドレスで変更する。いくつかの実施形態では、プロセスは、パケットのヘッダ内のアドレスフィールドを変更する。代わりに又は結合的に、プロセスは、パケットのアドレスを変換されたアドレスに置き換えるために、論理コンテキストを変更する。プロセスは、次に、終了する。
【0315】
本出願で、上記及び下記で使用するMACアドレス、IPアドレス、及び他のネットワークアドレスは、例示目的のための例であり、特に断らない限り、許容範囲内の値を持たなくてよいことに注意すべきである。
【0316】
II.ネクストホップの仮想化
外部ネットワークとインタフェースする論理ネットワークは、ネクストホップのルータと相互作用する必要がある。異なる実施形態の仮想化アプリケーションは、ネクストホップのルータを介して論理L3ネットワークアドレスを外部ネットワークとインタフェースするために、異なるモデルを使用する。
【0317】
第1に、固定アタッチメントモデルでは、物理インフラストラクチャは、管理される統合要素のセットと相互作用し、管理される統合要素のセットは、所定のIPプレフィックスに関するすべての入口トラフィックを受信し、すべての出口トラフィックを物理ネットワークに送信し戻すことになる。このモデルでは、論理的抽象化すると、管理される統合要素の所定のセットごとにある、論理L3ルータについての単一の論理アップリンクポートとなりうる。いくつかの実施形態では、複数の統合クラスタが存在する可能性がある。制御アプリケーションによって提供される論理制御プレーンは、アップリンク(複数可)に向かう出口トラフィックをアウトバウンドにルーティングする役割を果す。いくつかの実施形態では、管理される統合要素の例は、米国特許出願第13/177,535号に記載されている、エクステンダとして機能する第2のレベルの管理されるスイッチング要素を含む。管理される統合要素の例は、
図8、9、及び10を参照して上述した管理されるスイッチング要素も含む。
【0318】
第2に、分散型アタッチメントモデルでは、仮想化アプリケーションは、アタッチメントを、接続する管理されるエッジスイッチング要素の全体に渡って分散させる。これを行うために、管理されるエッジスイッチング要素は、物理ルーティングインフラストラクチャに統合しなければならない。すなわち、各々の管理されるエッジスイッチング要素は、管理されるスイッチング要素のグループの外部の物理ルーティングインフラストラクチャと通信することができなければならない。いくつかの実施形態では、これらのスイッチング要素は、物理スイッチング要素(例えば、物理ルータ)と通信するために、IGPプロトコル(又は、他のルーティングプロトコル)を使用し、物理スイッチング要素は、パケットを(管理されるスイッチング要素によって実装された)論理ネットワーク内に送信し、論理ネットワークからパケットを受信する。このプロトコルを使用して、いくつかの実施形態の管理されるエッジスイッチング要素は、入口トラフィックをその適切な場所に直接引き付けるために、ホストルート(/32)を広告することができる。いくつかの実施形態では、入口及び出口トラフィックは、管理されるスイッチング要素の全体に渡って完全に分散されるため、集中型のトラフィックのホットスポットは存在しないが、論理的抽象化すると、依然として、論理L3ルータについての単一の論理アップリンクポートとなり、論理制御プレーンは、トラフィックをアップリンクにルーティングする役割を果たす。制御プレーンにとって有益ならば、複数のアップリンクポートを論理制御プレーンに露出ささせることを妨げるものではない。しかしながら、アップリンクポートの数は、このモデルではアタッチメントポイントの数と一致する必要はない。
【0319】
第3に、制御プレーン駆動モデルでは、論理制御プレーンは、外部ネットワークと統合する役割を果す。制御プレーンは、1対1のルーティング統合で露出され、例えば、物理ネットワーク内のすべてのアタッチメントポイントに対して、論理ポートが存在する。論理制御プレーンは、ルーティングプロトコルレベルでネクストホップルータとピアリングする役割を有する。
【0320】
3つのモデルは、すべて異なる設計トレードオフにぶつかり、固定アタッチメントモデルは、最適でない物理トラフィックルートを伴うが、物理インフラストラクチャとの統合をあまり必要としない。分散モデルの中でも、完全に分散されたモデルのスケールがベストであり、いくつかの実施形態では、論理制御プレーンは、極端では、数千のピアリングセッションである可能性があるすべてのピアリングトラフィックについて役割を果たさない。しかしながら、制御プレーン駆動モデルは、論理制御プレーンに対する最大の制御を与える。最適な物理ルートが望まれる場合、出口ポートは、入口ポートに依存しなければならないため、最大の制御は、ポリシールーティングを必要とする。
【0321】
III.ステートフルパケット動作
ステートフルパケット動作は、ルーティングされるトラフィックのための論理L3データパスにNATを配置する。論理パイプラインでは、ネットワークアドレス変換は、実際の標準的なL3パイプラインの前又は後で、外部のNATステージで行われる。すなわち、ネットワークアドレス変換は、ルーティングの前又は後でパケットに加えられる。いくつかの実施形態では、NAT構成は、実際のアドレス変換エントリを作成するフローテンプレートを介して行われる。フローテンプレートは、さらに後述される。
【0322】
NAT機能を配置することは、最初のホップで論理パケット処理の全部又は大部分を実行するアプローチから外れる1つの特徴である。最初のホップで動作の大部分又は全部を実行する基本的なモデルは、いくつかの実施形態では、逆方向に流れるパケットの処理を、異なる最初のホップのスイッチング要素に配置し、所定のトランスポートレベルのフローに関して、ある方向のパケットは、一方の端部で論理パイプラインを介して送信されることになり、逆方向のパケットは、他方の端部でパイプラインを介して送信されることになる。残念ながら、フローごとのNAT状態は、非常に豊富である可能性があり(特に、NATが、より高いレベルのアプリケーションプロトコルをサポートしている場合)、状態は、所定のトランスポートフローに関して、方向間で共有されなければならない。
【0323】
したがって、いくつかの実施形態は、論理ポートの最初のホップのスイッチング要素に、両方向への論理パイプラインを実行するために、トランスポートフローのオープニングパケットを受信させる。例えば、VM Aが、VM BへのTCP接続をオープンした場合、VM Aのハイパーバイザ(ハイパーバイザとして同じマシンで動作することができる)に接続されたエッジスイッチング要素は、両方向への論理パイプラインを介してパケットを送信する役割を果すようになる。これは、純粋に分散されたNAT機能に関するだけでなく、論理ネットワークトポロジで複数のNATを有することを可能にする。最初のホップのスイッチング要素は、どれくらい多く存在するのかにかかわらず、すべての必要なNAT変換を実行することになり、ネットワークアドレス変換は、単に、(そのスイッチング要素内で)パケットが通過するLDPSパイプライン内の特別なステップになる。
【0324】
しかしながら、論理パイプラインを介して逆方向に送信されるパケットの供給を配置することは、追加の手段を必要とし、逆方向パケットのための最初のホップのスイッチング要素は、(局所的に利用可能なNAT状態を有することを除く)処理を実行することになる。この目的のために、いくつかの実施形態は、(上記VM Aの)送信元エッジスイッチング要素から宛先エッジスイッチング要素(上記VM Bの)に送信される最初のパケットが、特別な「ヒント状態」を確立することを可能にし、ヒント状態は、宛先スイッチング要素に、そのトランスポートフローの逆方向パケットを、処理せずに送信元スイッチング要素に直接送信させる。送信元スイッチング要素は、次に、逆方向でパイプラインを実行することになり、逆方向パケットのためにローカルNAT状態を使用してNAT動作を逆転させる。いくつかの実施形態は、コントローラが、フローごとの動作に関与する必要がないように、宛先スイッチング要素でこの逆方向ヒント状態を確立するために、(後述される)フローテンプレートを使用する。
【0325】
次の2つの図、
図33及び34は、NAT機能及びヒント状態の配置を示す。
図33は、いくつかの実施形態の最初のホップのスイッチング要素が、NAT動作2645を含む論理処理パイプライン200の全体を実行することを概念的に示す。
図33は、論理処理パイプライン200が、NAT動作2645が実行されることを示すために、L3処理220内に示されるNAT動作2645を含むことを除いて、
図29と同じである。
【0326】
論理ルータを実装するいくつかの実施形態の管理されるスイッチング要素は、パケットが論理ルータによってルーティングされた後、パケットにNAT動作を実行する。例えば、論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、管理されるスイッチング要素2505は、パケットを管理されるスイッチング要素2510に送出する前に、パケットの送信元IPアドレス(例えば、1.1.1.10)を異なるIPアドレス(例えば、3.1.1.10)に変換する。管理されるスイッチング要素2505は、管理されるスイッチング要素2505を管理するコントローラクラスタ(図示せず)によって管理されるスイッチング要素2505に構成されたNATルール(例えば、フローエントリ)のセットに基づいて、NAT動作2645を実行する。
【0327】
VM4が受信するパケットは、変換されたIPアドレス3.1.1.10を、パケットの送信元IPアドレスとして有する。VM4からVM1への戻りパケットは、この変換されたアドレスを、パケットの宛先IPアドレスとして有することになる。したがって、変換されたIPアドレスは、このパケットがVM1に達するために、VM1のIPアドレスに変換し戻されなければならない。しかしながらNAT動作を実行するためのNATルールは、管理されるスイッチング要素2505内のみであり、管理されるスイッチング要素2510内にはないため、いくつかの実施形態の管理されるスイッチング要素2510は、戻りパケットのためのVM1のIPアドレスを回復するために、NAT動作2645を実行しないことになる。このように、NATルール及び状態は、すべての潜在的な管理されるスイッチング要素によって共有される必要はない。
【0328】
図34は、このような実施形態の一例を概念的に示す。具体的には、
図34は、管理されるスイッチング要素2510が、戻りパケットを管理されるスイッチング要素2505に送信するとき、論理処理パイプラインを実行しないことを示す。この図は、また、管理されるスイッチング要素2505が、管理されるスイッチング要素2510からの戻りパケットの受信に応じて、管理されるスイッチング要素2505が、この戻りパケットに対する最初のホップスイッチング要素であるかのように、論理処理パイプライン200を実行することを示す。
図34は、論理処理パイプラインが反対方向に(左を指す矢印で)描かれていることを除いて、
図33と同じである。
図34は、ルール3400及び転送テーブル3405も示す。
【0329】
ルール3400は、いくつかの実施形態では、管理されるスイッチング要素2510を管理するコントローラクラスタ(図示せず)によって構成される転送テーブル3405内のフローエントリである。ルール3400は、管理されるスイッチング要素2510が、管理されるスイッチング要素2505由来のパケットを受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2505への戻りパケットに論理処理パイプラインを実行すべきではないことを指定する(又は、「ヒント」を与える)。
【0330】
管理されるスイッチング要素2510が、管理されるスイッチング要素2505から、管理されるスイッチング要素2505がNAT動作を実行しているパケットを受信すると、管理されるスイッチング要素2510は、パケットのヘッダ(例えば、論理コンテキスト)に含まれる情報に基づいて、ルール3400を見つける。また、管理されるスイッチング要素2510は、いくつかの実施形態では、送信元マシン(例えば、VM1)に向かう受信されたパケットの宛先マシン(例えば、VM4)からのパケットに、論理処理パイプラインを実行すべきではないことを示すために、1つ又は複数の他のフローエントリを変更する。
【0331】
管理されるスイッチング要素2510は、次に、このパケットを宛先マシン、例えば、VM4に転送する。管理されるスイッチング要素2510が、VM4からVM1に向かう戻りパケットを受信する場合、管理されるスイッチング要素2510は、このパケットに論理処理パイプラインを実行しないことになる。すなわち、管理されるスイッチング要素2510は、L2での論理転送又はL3での論理ルーティングを実行しないことになる。管理されるスイッチング要素2510は、単に、論理処理がパケットに実行されていないことを、このパケットの論理コンテキストで示すことになる。
【0332】
管理されるスイッチング要素2505が、管理されるスイッチング要素2510からこのパケットを受信すると、管理されるスイッチング要素2505は、論理処理パイプライン200を実行する。具体的には、管理されるスイッチング要素2505は、最初に、パケットのヘッダフィールドに含まれる情報に基づいて、パケットの論理コンテキストを決定するために、論理コンテキストルックアップを実行する。この例では、パケットの送信元MACアドレスは、VM4のMACアドレスであり、パケットの送信元IPアドレスは、VM4のIPアドレスである。パケットは、VM4から、異なる論理ネットワーク内にあるVM1に送信されるため、パケットは、論理スイッチ230のポートYと関連付けられたMACアドレス(すなわち、この例では、01:01:01:01:01:02)を、宛先MACアドレスとして有する。パケットの宛先IPアドレスは、VM1のNATされたIPアドレス(すなわち、3.1.1.10)である。
【0333】
管理されるスイッチング要素2505は、次に、論理スイッチ230に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポート2を通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、また、論理コンテキストから、論理スイッチ230のポートYが、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素2505は、ポートYに対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、ポートYを介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
【0334】
次に、管理されるスイッチング要素2505は、宛先IPアドレスをVM1のIPアドレスに変換し戻すために、パケットにNAT動作2645を実行する。すなわち、この例での管理されるスイッチング要素2505は、NATルールに基づいて、3.1.1.10を1.1.1.10に置き換える。管理されるスイッチング要素2505は、次に、ここでは1.1.1.10であるパケットの宛先IPアドレスが、別の論理ネットワークのためのものであるため、パケットにL3処理を実行する。管理されるスイッチング要素2505は、論理ルータ225のポート2に対するL3でのパケットの入口アクセス制御を決定する。管理されるスイッチング要素2505は、また、フローエントリをルックアップし、パケットの宛先IPアドレス、1.1.1.10が、論理ルータ225の論理ポート1と関連付けられた1.1.1.1/24のサブネットアドレスに属するため、パケットが、論理ルータ225の論理ポート1に送信されるべきであることを決定する。さらに、管理されるスイッチング要素2505は、論理ルータ225の論理ポート1に対するパケットの出口アクセス制御を決定する。管理されるスイッチング要素2505は、また、パケットの宛先MACアドレスを、VM1のMACアドレスになるように変更する。
【0335】
管理されるスイッチング要素2505は、次に、L2処理215を実行する。この例では、パケットの送信元MACアドレスは、ここでは、論理ルータ225の論理ポート1のMACアドレスであり、パケットの送信元IPアドレスは、VM4のIPアドレスのままである。パケットの宛先IPアドレスは、VM1のIPアドレス(すなわち、1.1.1.10)である。この例では、論理コンテキストは、論理スイッチ220が、パケットを転送することになる論理スイッチであり、論理スイッチ220の論理ポートXが、パケットが受信されたポートであることを指定する。論理コンテキストは、また、ポート1が、VM1のMACアドレスと関連付けられているため、論理スイッチ220のポート1が、パケットを宛先、VM1に送出することになるポートであることを指定する。
【0336】
管理されるスイッチング要素2505は、次に、パケットの論理コンテキストに基づいて、それぞれ論理スイッチ220のポートX及びポート1に対する入口及び出口アクセス制御を決定することを含む論理転送ルックアップを実行する。管理されるスイッチング要素2505は、論理スイッチ220の論理ポート1がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ220の論理ポート1が、管理されるスイッチング要素2505のポート4にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2505のポート4を介してVM1に送信されるべきであると判定する。
【0337】
図35は、いくつかの実施形態が、パケットを、そのアドレスがNATされた宛先マシンに送信するために実行するプロセス3500を概念的に示す。プロセス3500は、いくつかの実施形態では、パケットを送信元マシンから直接受信する管理されるスイッチング要素によって実行される。
【0338】
プロセス3500は、(3505で)送信元マシンからパケットを受信することによって開始する。プロセスは、次に、(3510で)パケットが、そのアドレスがNATされている宛先マシンに向けられているかどうかを判定する。いくつかの実施形態では、プロセスは、パケットのヘッダに含まれる情報(例えば、宛先IPアドレス)と一致するフローエントリをルックアップすることによって、パケットがこのような宛先マシンに向けられているかどうかを判定する。1つ又は複数のフローエントリは、パケットが、そのアドレスがNATされている宛先マシンにアドレスされている場合、論理処理(例えば、L2での論理転送又はL3での論理ルーティング)がこのパケットに実行されるべきでないことを指定する。他のフローエントリは、パケットが、そのアドレスがNATされていない宛先マシンにアドレスされている場合、論理処理が実行されるべきであることを指定する。
【0339】
プロセス3500が、(3510で)パケットが、そのアドレスがNATされている宛先マシンに向けられていると判定すると、プロセス3515は、さらに後述する3520に進む。プロセス3500が、(3510で)パケットが、そのアドレスがNATされていない宛先マシンに向けられていると判定すると、プロセス3500は、パケットに論理処理(例えば、L2での論理転送又はL3での論理ルーティング)を実行する。
【0340】
プロセス3500は、次に、(3520で)パケットを、宛先マシンへのルート内のネクストホップの管理されるスイッチング要素に送信する。プロセス3500は、次に終了する。
【0341】
上記で、コントローラは、パケットごとの動作に関与しないことに注意されたい。論理制御プレーンは、なにがネットワークアドレス変換されるべきかを識別するFIBルールを単に供給する。すべてのフローごとの状態は、データパス(Open vSwitch)によって確立される。
【0342】
上述した実施形態は、送信元NATを利用する。しかしながら、いくつかの実施形態は、同じラインに沿った宛先NAT(DNAT)を使用する。DNATの場合では、すべての処理は、送信元の管理されるエッジスイッチング要素で行われてよい。
【0343】
さらに、NAT機能を外部及び論理ネットワーク間に配置する場合、動作は、上述したものと異ならない。この場合、外部ネットワークから来るフローに対して、NAT状態は、両方向について(この場合、最初のホップの管理されるエッジスイッチング要素となる)エクステンダに保持されることになる。他方では、外部ネットワークに向けて開始されたトランスポートフローに対して、状態は、送信元ホスト/VMに取り付けられた管理されるエッジスイッチング要素で保持されることになる。
【0344】
ネットワークアドレス変換のためのこの純粋な分散型アプローチでは、VMモビリティサポートは、VMで確立されたNAT状態を、新しいハイパーバイザに移行する必要がある。NAT状態の移行なしでは、トランスポート接続は、中断することになる。このような状況に対して、いくつかの実施形態は、閉じられた/存在しないTCPフローに送られたパケットにTCPリセットで応答するために、NATを期待するように設計される。より高度な実装は、NAT状態の移行をVMと共に促進させるVM管理システムと統合し、この場合、トランスポート接続は、中断する必要はない。
【0345】
図36は、VMが第1のホストから第2のホストに移行するときの、第1のホストから第2のホストへのNAT状態の移行の一例を示す。具体的には、この図は、第1のホストのハイパーバイザを使用して、VM、及びVMに関連するNAT状態を移行することを示す。この図は、2つのホスト3600及び3630を示す。
【0346】
図示のように、この例でのホスト3600は、送信元ホストであり、送信元ホストから、VM3625は、ホスト3630に移行している。ホスト3600では、NATデーモン3610及び管理されるスイッチング要素3605が動作している。NATデーモン3610は、
図31を参照して上述したNATデーモン3110と同様である。NATデーモン3610は、元のアドレス及び変換されたアドレスのマッピングを含むNATテーブル3115を保持する。管理されるスイッチング要素3605は、変換されたアドレスを得るために、NATデーモン3610を使用する。管理されるスイッチング要素は、いくつかの実施形態では、上述したように、元のアドレスを送信し、変換されたアドレスを得るために、NATデーモン3610にフローテンプレートを送信する。
【0347】
ハイパーバイザ3680は、ホスト3600で動作するVMを作成し、管理する。いくつかの実施形態では、ハイパーバイザ3680は、VMが別のホストに移行する前に、管理されるスイッチング要素3605及び/又はNATデーモン3610に、ホスト3600で動作するVMのホスト3600外への移行を通知する。管理されるスイッチング要素3605及び/又はNATデーモン3610は、いくつかの実施形態では、VM移行のイベントの際、コールバックを登録することによって、このような通知を取得する。
【0348】
いくつかのこのような実施形態では、管理されるスイッチング要素3605は、NATデーモンに、移行するVMに関連するNAT状態(例えば、VMのためのアドレスマッピング、及びプロトコル情報、など)を取得し、NAT状態をハイパーバイザ3680に提供するように要求する。いくつかの実施形態では、NATデーモン3610は、NAT3610が、直接ハイパーバイザ3680によって移行を通知されると、移行するVMに関連するNAT状態を、ハイパーバイザ3680に提供する。ハイパーバイザ3680は、次に、NAT状態を、移行するVMと一緒に宛先ホストに移行する。
【0349】
いくつかの実施形態では、NATデーモン3610は、移行するVMに関連するNAT状態を、直接、宛先ホストで動作するNATデーモンに送信する。これらの実施形態では、NATデーモン3610及び/又は管理されるスイッチング要素3605は、ハイパーバイザ3680が、宛先ホストへのVMの移行を開始することができるように、NAT状態の移行の完了をハイパーバイザ3680に通知する。
【0350】
いくつかの実施形態では、管理されるスイッチング要素3605は、また、移行するVMに関連するフローエントリを、ハイパーバイザ3680に、又は、宛先ホストで動作する管理されるスイッチング要素に提供する。ハイパーバイザ3680にフローエントリが提供されると、ハイパーバイザ3680は、フローエントリを、宛先ホストで動作する管理されるスイッチング要素のフローテーブルに送信する。NAT状態単独で、宛先ホストで動作する管理されるスイッチング要素が、移行するVMの変換されたアドレスを取得することを可能にするため、宛先ホストへのフローエントリの移行は、任意である。
【0351】
送信元ホスト3600の動作の一例をここで説明する。ハイパーバイザ3680が、(例えば、コントローラクラスタからの1つ又は複数のユーザ入力毎に)VM3625を移行する場合、ハイパーバイザ3680は、管理されるスイッチング要素3605に通知する。この例での管理されるスイッチング要素3605は、次に、NATデーモン3610に、VM3625に関連するNAT状態を取得し、取得した状態をハイパーバイザ3680に送信するように要求する。
【0352】
ハイパーバイザ3680は、次に、VMのデータを移動することによって、VM3625を宛先ホスト3630に移行する。いくつかの実施形態では、ハイパーバイザ3680は、VM3625の実行状態を取り込み、状態をVM3625に送信することによって、ライブマイグレーションが可能である。ハイパーバイザ3680は、また、ホスト363
0で動作する管理されるスイッチング要素3635が、ちょうどホスト3630に移行されたVM3625に関するNATデーモン3640から、変換されたアドレスを取得することができるように、取得したNAT状態を、ホスト3630のNATテーブル3645に移動する。
【0353】
図37は、VMが第1のホストから第2のホストに移行するときの、第1のホストから第2のホストへのNAT状態の移行の別の例を示す。具体的には、この図は、第1のホストのハイパーバイザに、移行するVMに関連するNAT状態を取得し、NAT状態を第2のホストに送信するように要求するために、制御クラスタを使用することを示す。図は、2つのホスト3600及び3630を示す。しかしながら、この例ではホスト3600で動作するハイパーバイザ3680は、送信元ホストで動作する管理されるスイッチング要素又はNATデーモンへの通知をサポートしない。
【0354】
いくつかの実施形態のハイパーバイザ3680は、管理されるスイッチング要素又はNATデーモンに、VMの宛先ホストへの移行を通知しないため、移行するVMに関連するNAT状態は、ハイパーバイザ3680が、VMの宛先ホストへの移行を開始又は完了した後、宛先ホストに送信される。具体的には、管理されるスイッチング要素3635は、いくつかの実施形態では、例えば、管理されるスイッチング要素3635にとって新しい3625のMACアドレスを検出することによって、VM3625の移行を検出することになる。管理されるスイッチング要素3625は、制御クラスタ3705に、VM3625の追加(したがって、VM3625のための管理されるスイッチング要素3625の新しいポート)を通知する。
【0355】
制御クラスタ3705は、上述した制御クラスタ1105及び2205と同様である。VMの追加の管理されるスイッチング要素3635からの通知の受信に応じて、制御クラスタ3705は、送信元ホスト3600で動作するハイパーバイザ3680に、移行されたVM3625に関連するNAT状態を取得し、NATテーブル3645を取得したNAT状態で更新するように要求する。いくつかの実施形態では、制御クラスタ3705は、加えて、移行されたVM3625に関連するフローエントリを取得し、これらのフローエントリを、宛先ホスト3630のフローテーブル3650に入れるように要求する。
【0356】
いくつかの実施形態では、制御クラスタ3705は、NATテーブル3645及び/又は3650が、移行されたVM3625に関連するNAT状態及び/又はフローエントリで更新されるように、管理されるスイッチング要素及び/又はNATデーモン3610に、NAT状態及び/又はフローエントリをNATデーモン3640及び/又は管理されるスイッチング要素3635に送信するように、直接要求することができる。
【0357】
送信元ホスト3600、宛先ホスト3630、及び制御クラスタ3705の例示的な動作をここで説明する。ハイパーバイザ3680が、(例えば、制御クラスタからの1つ又は複数のユーザ入力ごとに)VM3625に移行する場合、ハイパーバイザ3680は、VM3625の構成データ又は実行状態をホスト3630に移動することによって、VM3625に移行する。ここではホスト3630で動作するVM3625は、管理されるスイッチング要素3635にパケットを送信する。この例での管理されるスイッチング要素3635は、パケットの送信元MACアドレスが、管理されるスイッチング要素3635にとって新しいことを認識することによって、ホスト3630へのVM3625の移行を検出する。この例での管理されるスイッチング要素3605は、次に、VM3625の追加(又は、VM3625のための新しいポートの作成)を、制御クラスタ3705に通知する。
【0358】
制御クラスタ3705は、次に、ハイパーバイザ3680に、VM3625に関連するNAT状態を取得し、NAT状態を宛先ホスト3630に送信するように要求する。宛先ホスト3630で動作する管理されるスイッチング要素3635は、NATデーモン3640から、ちょうどホスト3630に移行されたVM3625のための変換されたアドレスを取得することができる。
【0359】
IV.負荷分散
いくつかの実施形態は、L3パイプラインの特別なステップとして負荷分散を実装する。例えば、いくつかの実施形態は、宛先ネットワークアドレス変換が後に続く論理バンドルベースの負荷分散ステップを実装する。いくつかの実施形態では、(負荷分散サービスを提供する)論理ルータは、仮想IPアドレスをホストし、したがって、仮想IPアドレス(VIP)に送信されたARP要求に応答することになる。これにより、トラフィックが、クラスタメンバが存在する同じL2ドメインからVIPに送信されたとしても、仮想IPは、機能し続けることになる。
【0360】
図38は、負荷分散を実行する論理スイッチ及び論理ルータの例示的な物理的実装を示す。具体的には、この図は、論理ルータが、フローエントリに基づいてL3ルータ又は管理されるスイッチング要素によって実装される、集中型のL3ルーティングモデルを示す。この図は、管理されるスイッチング要素3805〜3825、及びVM3830〜3850を示す。この図は、また、L2処理3855、DNAT及び負荷分散3860、L3ルーティング3865、並びに、L2処理3870及び3875を含む論理処理パイプラインを示す。
【0361】
いくつかの実施形態の管理されるスイッチング要素3805は、エクステンダとして機能する第2のレベルの管理されるスイッチング要素である。いくつかのこのような実施形態での管理されるスイッチング要素3805は、管理されるスイッチング要素3805が、フローエントリ(図示せず)に基づいて論理ルータ(図示せず)を実装し、又は、論理ルータを実装するL3ルータが動作している同じホストで動作している点で、上述した管理されるスイッチング要素810及び1910と同様である。加えて、管理されるスイッチング要素3805は、宛先アドレスを別のアドレスに変換し、同じサービス(例えば、ウェブサービス)を提供する異なるマシン(例えば、VM)間で負荷を分散するために、DNAT及び負荷分散3860を実行する。
【0362】
管理されるスイッチング要素3805〜3825は、VM3830〜3850が接続される論理スイッチ(図示せず)を実装する。この例でのVM3840及び3850は、同じサービスを提供する。すなわち、VM3840及び3850は、いくつかの実施形態では、同じサービスを提供するサーバとして集合的に動作する。しかしながら、VM3840及び3850は、異なるIPアドレスを有する別々のVMである。管理されるスイッチング要素3805、又は、管理されるスイッチング要素3805によって使用されるL3ルータ(図示せず)は、VM3840及び3850間でワークロードを分散するために、負荷分散を実行する。
【0363】
いくつかの実施形態では、負荷分散は、サービスを要求するパケットの宛先アドレスを、サービスを提供するVMの異なるアドレスに変換することによって達成される。具体的には、管理されるスイッチング要素3805、又は、管理されるスイッチング要素3805によって使用されるL3ルータ(図示せず)は、VMのうちの特定のVMが、他のVMが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのVM3840及び3850のアドレスに変換する。サービス提供VMの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
【0364】
いくつかの実施形態では、管理されるスイッチング要素3805又はL3ルータは、論理処理パイプラインのDNAT及び負荷分散3860を実行した後、L3ルーティング3865を実行する。したがって、管理されるスイッチング要素3805又はL3ルータは、これらの実施形態では、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素3820及び3825は、エッジスイッチング要素であり、したがって、VM3840及び3850との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素3805又はL3ルータは、論理処理パイプラインのDNAT及び負荷分散3860を実行する前に、L3ルーティング3865を実行する。
【0365】
管理されるスイッチング要素3805の例示的な動作をここで説明する。管理されるスイッチング要素3810は、VM3840及び3850によって集合的に提供されるサービスを要求するパケットを受信する。このパケットは、VM3830の1つから、具体的には、特定のプロトコルを使用するアプリケーションから来る。この例でのパケットは、特定のプロトコルを識別するプロトコル番号を含む。パケットは、また、サービスを提供するサーバを表すIPアドレスを、宛先IPアドレスとして含む。このパケットへの送信元L2処理3855の実行の詳細は、上記又は下記の送信元L2処理の例と同様であるため、説明を簡単にするために省略される。
【0366】
その後、送信元L2処理3855が、L3ルーティング3865を含むL3処理を実行するための管理されるスイッチング要素3805にパケットをルーティングするために実行される。この例では、管理されるスイッチング要素3805は、パケットにDNAT及び負荷分散3860を実行する。すなわち、管理されるスイッチング要素3805は、パケットの宛先IPアドレスを、サービスを提供するVMのうちの1つのIPアドレスに変換する。この例では、管理されるスイッチング要素3805は、VM3840〜3850間で最少のワークロードを有するVM3840〜3850のうちの1つを選択する。管理されるスイッチング要素3805は、新しい宛先IPアドレスに基づいて、パケットにL3ルーティング3865を実行する(すなわち、パケットをルーティングする)。
【0367】
管理されるスイッチング要素3820は、宛先IPアドレスがVM3840のうちの1つのものであるため、パケットを受信し、この宛先IPは、VMのMACアドレスに解決される。管理されるスイッチング要素3820は、パケットをVMに転送する。このVMは、元々サービスを要求したアプリケーションにパケットを返すことになる。これらの戻りパケットは、管理されるスイッチング要素3805に達することになり、管理されるスイッチング要素3805は、NATを実行し、アプリケーションがこれらのパケットの宛先であることを識別することになる。
【0368】
図39は、負荷分散を実行する論理スイッチ及び論理ルータの別の例示的な物理的実装を示す。具体的には、この図は、論理ルータが、送信元及び宛先L2処理も実行する管理されるスイッチング要素によって実装される、分散型のL3ルーティングモデルを示す。すなわち、この管理されるスイッチング要素は、論理処理パイプライン全体を実行する。この図は、管理されるスイッチング要素3905及び3820〜3825、並びに、VM3910及び3840〜3850を示す。この図は、また、L2処理3855、DNAT及び負荷分散3860、L3ルーティング3865、並びに、L2処理3870〜3875を含む論理処理パイプラインを示す。
【0369】
いくつかの実施形態の管理されるスイッチング要素3905は、管理されるスイッチング要素3905が、論理処理パイプライン全体を実装する点で、
図29を参照して上述した管理されるスイッチング要素2505と同様である。すなわち、管理されるスイッチング要素3905は、論理ルータ及び論理スイッチを実装する。加えて、管理されるスイッチング要素3905は、宛先アドレスを別のアドレスに変換し、同じサービス(例えば、ウェブサービス)を提供する異なるマシン(例えば、VM)間で負荷を分散するために、DNAT及び負荷分散3860を実行する。
【0370】
上述したように、管理されるスイッチング要素3905は、VM3910及び3840〜3850が接続される論理スイッチ(図示せず)を実装する。管理されるスイッチング要素3905は、また、ワークロードをVM3840及び3850間で分散するために、負荷分散を実行する。具体的には、管理されるスイッチング要素3905は、VMのうちの特定のVMが、他のVMが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのVM3840及び3850のアドレスに変換する。サービス提供VMの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
【0371】
いくつかの実施形態では、管理されるスイッチング要素3905は、論理処理パイプラインのDNAT及び負荷分散3860を実行した後、L3ルーティング3865を実行する。したがって、管理されるスイッチング要素3905は、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素3820及び3825は、エッジスイッチング要素であり、したがって、VM3840及び3850との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素3905は、論理処理パイプラインのDNAT及び負荷分散3860を実行する前に、L3ルーティング3865を実行する。
【0372】
管理されるスイッチング要素3905の動作は、管理されるスイッチング要素3905が、DNAT及び負荷分散3860を含む論理処理パイプライン全体を実行することを除いて、
図38を参照して上述した例示的動作と同様である。
【0373】
図40は、負荷分散を実行する論理スイッチ及び論理ルータのさらに別の例示的な物理的実装を示す。具体的には、この図は、論理ルータが、送信元L2処理も実行する管理されるスイッチング要素によって実装される、分散型のL3ルーティングモデルを示す。すなわち、最初のホップの管理されるスイッチング要素としてのこの管理されるスイッチング要素は、送信元L2処理及びL3処理を実行する。宛先L2処理は、最後のホップの管理されるスイッチング要素である別の管理されるスイッチング要素によって実行される。この図は、管理されるスイッチング要素4005及び3820〜3825、並びに、VM4010及び3840〜3850を示す。この図は、また、L2処理3855、DNAT及び負荷分散3860、L3ルーティング3865、並びに、L2処理3870〜3875を含む論理処理パイプラインを示す。
【0374】
いくつかの実施形態の管理されるスイッチング要素4005は、管理されるスイッチング要素4005が、論理処理パイプラインの送信元L2処理及びL3処理を実行する点で、
図46を参照して上述した管理されるスイッチング要素2505と同様である。すなわち、管理されるスイッチング要素4005は、送信元マシンに接続された論理ルータ及び論理スイッチを実装する。加えて、管理されるスイッチング要素4005は、宛先アドレスを別のアドレスに変換し、同じサービス(例えば、ウェブサービス)を提供する異なるマシン(例えば、VM)間で負荷を分散するために、DNAT及び負荷分散3860を実行する。
【0375】
上述したように、管理されるスイッチング要素4005は、1つ又は複数のVM4010が接続される論理スイッチ(図示せず)を実装する。管理されるスイッチング要素4005は、また、ワークロードをVM3840及び3850間で分散するために、負荷分散を実行する。具体的には、管理されるスイッチング要素4005は、VMのうちの特定のVMが、他のVMが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのVM3840及び3850のアドレスに変換する。サービス提供VMの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
【0376】
いくつかの実施形態では、管理されるスイッチング要素4005は、論理処理パイプラインのDNAT及び負荷分散3860を実行した後、L3ルーティング3865を実行する。したがって、管理されるスイッチング要素4005は、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素3820及び3825は、エッジスイッチング要素であり、したがって、VM3840及び3850との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素4005は、論理処理パイプラインのDNAT及び負荷分散3860を実行する前に、L3ルーティング3865を実行する。
【0377】
管理されるスイッチング要素4005の動作は、異なる管理されるスイッチング要素が、論理処理パイプラインの異なる部分を実行することを除いて、
図38を参照して上述した例示的動作と同様である。
【0378】
図41は、サービス(例えば、ウェブサービス)を集合的に提供するマシン間で負荷を分散する負荷分散デーモンを概念的に示す。具体的には、この図は、パケットを論理的に転送及びルーティングするために論理処理パイプラインを実行する管理されるスイッチング要素が、サービスを提供するマシン間でワークロードを分散するための負荷分散デーモンを使用することを示す。この図は、ホスト4100、管理されるスイッチング要素4105、転送テーブル4120、負荷分散デーモン4110、及び接続テーブル4115を、図の上半分に示す。この図は、フローエントリ4125及び4130を示す。
【0379】
フローエントリ4125及び4130は、それぞれ、クォリファイア及びアクションを有する。フローエントリ4125及び4130として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。ホスト4100は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム(例えば、Windows(登録商標)及びLinux(登録商標))によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素4105は、ホスト4100で実行するソフトウェアスイッチング要素(例えば、Open vSwitch)である。上述したように、コントローラクラスタ(図示せず)は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素4105は、それ自体はフローエントリを生成しない。
【0380】
いくつかの実施形態の管理されるスイッチング要素4105は、
図38〜40を参照して上述した論理処理パイプラインの全部又は一部を実行する。具体的には、管理されるスイッチング要素4105は、転送テーブル4120内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするために、L3処理を実行する。いくつかの実施形態では、管理されるスイッチング要素4105は、管理されるスイッチング要素に結合されたマシン(図示せず)からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、1つ又は複数の仮想マシン(図示せず)が、ホスト4100で動作しており、管理されるスイッチング要素4105に結合される。
【0381】
管理されるスイッチング要素4105が、負荷分散を実行するように構成されている場合、いくつかの実施形態の管理されるスイッチング要素4105は、パケットに負荷分散を実行するための負荷分散デーモン4110を使用する。負荷分散デーモン4110は、負荷分散デーモン4110が、変換された宛先アドレス(例えば、宛先IPアドレス)を提供する点で、NATデーモン3110と同様である。加えて、負荷分散デーモン4110は、そのIPアドレスがテーブル4115に含まれるマシンの現在の負荷に基づいて、元の宛先アドレスを変換する先の宛先を選択する。
【0382】
いくつかの実施形態の負荷分散デーモン4110は、ホスト4100上で動作するソフトウェアアプリケーションである。負荷分散デーモン4110は、接続テーブル4115を保持し、接続テーブル4115は、接続識別子と、サービスを提供するマシンの利用可能なアドレスとのペアリングを含む。図示していないが、いくつかの実施形態の接続テーブル4115は、アドレスに関連するマシンについて定量化された現在のワークロードを含むこともできる。いくつかの実施形態では、負荷分散デーモン4110は、VMへの現在のワークロードを含むVMの更新された状態を取得するために、サービスを提供するVMと定期的に通信する。
【0383】
管理されるスイッチング要素4105が、接続識別子に基づいて選択するアドレスを要求すると、負荷分散デーモンは、いくつかの実施形態では、所定の宛先アドレスが変換されるべき先のアドレスを見つけるために、テーブル4115をルックアップする。いくつかの実施形態では、負荷分散デーモンは、負荷をいくつかのVM間で分散するために、サーバVMを識別するためにスケジューリング方法を実行する。このようなスケジューリングアルゴリズムは、アドレスに関連するマシンへの現在の負荷を考慮する。負荷分散方法のさらなる詳細及び例は、参照により本明細書に組み込まれる米国仮特許出願第61/560,279号に記載されている。
【0384】
接続識別子は、マシンから戻るパケットが、要求側まで正確に中継され得るように、サービスの要求側(すなわち、パケットの起点又は送信元)と、要求されたサービスを提供することになるマシンとの間の接続を一意的に特定する。これらの戻りパケットの送信元IPアドレスは、サービスを提供するサーバを表すIPアドレス(「仮想IPアドレス」と呼ばれる)に変換し戻されることになる。これらの接続識別子間のマッピングは、送信元からその後に送信されるパケットにも使用されることになる。いくつかの実施形態では、接続識別子は、送信元ポート、宛先ポート、送信元IPアドレス、宛先IPアドレス、プロトコル識別子、などを含む。送信元ポートは、パケットが送信されたポート(例えば、TCPポート)である。宛先ポートは、パケットを送信すべき先のポートである。プロトコル識別子は、パケットをフォーマットするために使用されるプロトコルのタイプ(例えば、TCP、UDP、など)を識別する。
【0385】
異なる実施形態の管理されるスイッチング要素4105及び負荷分散デーモン4110は、アドレスを要求し、供給するために、異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素4105は、元のアドレスを有するが、変換されたアドレスを持たないパケットを、負荷分散デーモンに送信する。これらの実施形態の負荷分散デーモン4110は、元のアドレスを、変換されたアドレスに変換する。負荷分散デーモン4110は、管理されるスイッチング要素4105にパケットを送信し戻し、管理されるスイッチング要素4105は、パケットを宛先マシンに向けて送信するために、論理転送及び/又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素4105は、最初に、解決する元のアドレスを含むパケットと共に負荷分散デーモン4110にメタデータを送信する。このメタデータは、管理されるスイッチング要素4105が、負荷分散デーモン4110から戻るパケットを受信するとき、管理されるスイッチング要素4105が、論理処理パイプラインの実行を再開するために使用する情報(例えば、レジスタ値、論理パイプライン状態、など)を含む。
【0386】
他の実施形態では、いくつかの実施形態の管理されるスイッチング要素4105は、フローテンプレートを負荷分散デーモン4110に送信することによってアドレスを要求し、フローテンプレートは、アドレスについての実際の値を持たないフローエントリである。負荷分散デーモンは、テーブル4115をルックアップすることによって、フローテンプレートに記入するアドレスを見つけ出す。負荷分散デーモン4110は、次に、記入されたフローテンプレートを転送テーブル4120に入れることによって、実際のアドレスが記入されたフローテンプレートを、管理されるスイッチング要素4110に送信し戻す。いくつかの実施形態では、負荷分散デーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。さらに、負荷分散デーモン4110が、変換されたアドレスを見つけるのに失敗した場合、負荷分散デーモンは、パケットを破棄するようにフローテンプレートで指定する。
【0387】
ここで、管理されるスイッチング要素4105及び負荷分散デーモン4110の例示的な動作を、3つの異なるステージ1〜3(丸で囲まれた1〜3)に関して説明する。この例では、管理されるスイッチング要素4115は、マシン(図示せず)から転送及びルーティングするためにパケットを受信する管理されるエッジスイッチング要素である。具体的には、この例でのパケットは、サービスの要求である。パケットは、要求されたサービスを提供するサーバを表すIPアドレスを有する。
【0388】
管理されるスイッチング要素4105は、このパケットを受信し、転送テーブル4120内のフローエントリに基づいてL3処理を実行する。パケットにL3処理210を実行すると同時に、管理されるスイッチング要素4105は、(ステージ1で)フローエントリ4125を識別し、フローエントリ4125で指定されるアクションを実行する。図示のように、フローエントリ4125は、負荷分散デーモン4110に新しい宛先IPアドレスを提供させるために、接続識別子を有するフローテンプレートが負荷分散デーモン4110に送信されるべきであることを示す。この例では、フローエントリ4125は、いくつかの実施形態では番号である優先順位の値Nを有する。
【0389】
ステージ2では、負荷分散デーモン4110は、フローテンプレートを受信し、接続テーブル4115をルックアップし、スケジューリングアルゴリズムを実行することによって、指定された接続IDを有するパケットの宛先IPアドレスが2.1.1.10に変換されるべきであることを知る。負荷分散デーモンは、フローテンプレートに記入し、記入されたテンプレート(ここでは、フローエントリ4130)を転送テーブル4130に挿入する。この例では、負荷分散デーモンは、N+1の優先順位を、記入されたテンプレートに割り当てる。
【0390】
ステージ3では、管理されるスイッチング要素4110は、パケットの宛先IPアドレスを変更するために、フローエントリ4130を使用する。また、管理されるスイッチング要素4110がその後に処理するパケットのために、管理されるスイッチング要素4105は、パケットが指定された接続識別子を有する場合、フローエントリ4125の上のフローエントリ4130を使用する。
【0391】
いくつかの実施形態では、負荷分散デーモン4110及び管理されるスイッチング要素は、ホスト4100で動作している同じ仮想マシンで動作し、又は、ホスト4100で動作している異なる仮想マシンで動作する。負荷分散デーモン4110及び管理されるスイッチング要素は、別々のホストで動作することもできる。
【0392】
V.DHCP
仮想化アプリケーションは、いくつかの実施形態では、共有ホストで動作しているDHCPデーモンにDHCP要求をルーティングする転送ルールを定義する。この機能のために共有ホストを使用することは、顧客ごとのDHCPデーモンを実行する余分なコストを避ける。
【0393】
図42は、異なるユーザのための異なる論理ネットワークにDHCPサービスを提供するDHCPデーモンを示す。この図は、図の左半分に、それぞれ異なる2つのユーザA及びBのための例示的な論理ネットワーク4201及び4202の実装を示す。論理ネットワーク4201及び4202の例示的な物理的実装は、図の右半分に示される。
【0394】
図の左半分に示すように、論理ネットワーク4201は、論理ルータ4205、並びに2つの論理スイッチ4210及び4215を含む。VM4220及びVM4225が、論理スイッチ4210に接続される。すなわち、VM4220及びVM4225は、論理スイッチ4210によって転送されたパケットを送受信する。VM4230が、論理スイッチ4215に接続される。論理ルータ4205は、論理スイッチ4210及び4215間でパケットをルーティングする。論理ルータ4205は、DHCPデーモン4206にも接続され、DHCPデーモン4206は、ユーザAのVMである論理ネットワーク4201内のVMにDHCPサービスを提供する。
【0395】
ユーザBのための論理ネットワーク4202は、論理ルータ4235、並びに2つの論理スイッチ4240及び4245を含む。VM4250及びVM4255が、論理スイッチ4240に接続される。VM4260が、論理スイッチ4245に接続される。論理ルータ4235は、論理スイッチ4240及び4245間でパケットをルーティングする。論理ルータ4235は、DHCPデーモン4236にも接続され、DHCPデーモン4236は、ユーザBのVMである論理ネットワーク4202内のVMにDHCPサービスを提供する。
【0396】
図の左半分に示す論理的実装では、ユーザのための各論理ネットワークは、それ自体のDHCPデーモンを有する。いくつかの実施形態では、DHCPデーモン4206及び4236は、異なるホスト又はVMで動作する別々のDHCPデーモンとして物理的に実装される。すなわち、各ユーザは、ユーザのマシンのみのための別々のDHCPデーモンを有することになる。
【0397】
他の実施形態では、異なるユーザのためのDHCPデーモンは、DHCPサービスを異なるユーザのVMに提供する単一のDHCPデーモンとして物理的に実装されてよい。すなわち、異なるユーザは、同じDHCPデーモンを共有する。DHCPデーモン4270は、ユーザA及びユーザB両方のVMのために働く共有DHCPデーモンである。図の右半分に示すように、ユーザA及びBのための論理ルータ4205及び4235並びに論理スイッチ4210、4215、4240、及び4245を実装する管理されるスイッチング要素4275〜4285は、単一のDHCPデーモン4270を使用する。したがって、ユーザA及びBのVM4220〜4260は、アドレス(例えば、IPアドレス)を動的に取得するために、DHCPデーモン4270を使用する。
【0398】
異なる実施形態のDHCPデーモン4270は、異なるホストで動作してよい。例えば、いくつかの実施形態のDHCPデーモン4270は、管理されるスイッチング要素4275〜4285の1つが動作している同じホスト(図示せず)で動作する。他の実施形態では、DHCPデーモン4270は、管理されるスイッチング要素が動作しているホストでは動作せず、代わりに、管理されるスイッチング要素によってアクセス可能な別のホストで動作する。
【0399】
図43は、中央のDHCPデーモン、及びいくつかのローカルのDHCPデーモンを示す。中央のDHCPデーモンは、ローカルのDHCPデーモンを介して、異なるユーザのVMにDHCPサービスを提供する。各ローカルのDHCPデーモンは、中央のDHCPデーモンのサービスをローカルのDHCPデーモンにオフロードするために、アドレスのバッチを維持し、管理する。この図は、中央のデーモン4320、並びに、2つのローカルのDHCPデーモン4330及び4350を含む例示的なアーキテクチャを示す。
【0400】
図示のように、中央のDHCPデーモン4320は、管理されるスイッチング要素4306も動作するホスト4305で動作する。いくつかの実施形態の管理されるスイッチング要素4306は、管理されるスイッチング要素4340及び4360のためのプールノードとして機能する第2のレベルの管理されるスイッチング要素である。中央のDHCPデーモン4320は、異なるユーザの異なるVM4345及び4365にDHCPサービスを提供する。いくつかの実施形態では、中央のDHCPデーモン4320は、DHCPサービスをこれらのローカルのDHCPデーモンにオフロードするために、アドレスのバッチで利用可能なアドレス(例えば、IPアドレス)4325を、ローカルのDHCPデーモン4330及び4350を含む異なるローカルのDHCPデーモンに分配する。中央のDHCPデーモン4320は、ローカルのDHCPデーモンが、それ自体のアドレスのバッチ内の割り当てるために利用可能なアドレスを使い果たした場合、このローカルのDHCPデーモンにより多くのアドレスを提供する。
【0401】
ローカルのDHCPデーモン4330は、管理されるスイッチング要素4340も動作するホスト4310で動作する。管理されるスイッチング要素4340は、VM4345との間で直接パケットを送受信するエッジスイッチング要素である。管理されるスイッチング要素4340は、異なるユーザの1つ又は複数の論理スイッチ及び論理ルータを実装する。すなわち、VM4345は、異なるユーザに属する可能性がある。ローカルのDHCPデーモン4330は、ローカルのDHCPデーモン4330が中央のDHCPデーモン4320から取得するアドレスのバッチ4335を使用して、VM4345にDHCPサービスを提供する。ローカルのDHCPデーモン4330は、ローカルのDHCPデーモン4330がアドレスのバッチ4335内の割り当てるための利用可能なアドレスを使い果たした場合、中央のDHCPデーモン4320に訴える。いくつかの実施形態では、ローカルのDHCPデーモン4330は、管理されるスイッチング要素4340及び4306を介して、中央のDHCPデーモン4320と通信する。管理されるスイッチング要素4340及び4306は、いくつかの実施形態では、これらの間に確立されるトンネルを有する。
【0402】
同様に、ローカルのDHCPデーモン4350は、管理されるスイッチング要素4360も動作するホスト4315で動作する。管理されるスイッチング要素4360は、VM4365との間で直接パケットを送受信するエッジスイッチング要素である。管理されるスイッチング要素4360は、異なるユーザの1つ又は複数の論理スイッチ及び論理ルータを実装する。ローカルのDHCPデーモン4350は、ローカルのDHCPデーモン4350が中央のDHCPデーモン4320から取得するアドレスのバッチ4355を使用して、VM4365にDHCPサービスを提供する。いくつかの実施形態では、アドレスのバッチ4355は、ホスト4310で動作するローカルのDHCPデーモンに割り当てられたアドレスのバッチ4335内にあるアドレスを含まない。ローカルのDHCPデーモン4350も、ローカルのDHCPデーモン4350がアドレスのバッチ4355中の利用可能な割り当てるためのアドレスを使い果たした場合、中央のDHCPデーモン4320に訴える。いくつかの実施形態では、ローカルのDHCPデーモン4350は、管理されるスイッチング要素4360及び4306を介して、中央のDHCPデーモン4320と通信する。管理されるスイッチング要素4360及び4306は、いくつかの実施形態では、これらの間に確立されるトンネルを有する。
【0403】
VI.介在するサービスVM
上記の説明では、いくつかの実施形態の仮想化アプリケーションによって提供される様々なL3サービスが記載されている。ネットワーク制御システムの柔軟性を最大化するために、いくつかの実施形態は、ユーザが物理ネットワークで今日使用している「ミドルボックス」によって提供されるものと同様の機能を提供するサービスマシンを介在させる。
【0404】
したがって、いくつかの実施形態のネットワーク制御システムは、論理ネットワークのLDPSに取り付けられる少なくとも1つの「ミドルボックス」VMを含む。次に、LDPセットのパイプライン状態は、関連するパケットが、このVMの論理ポートに転送されるように、(論理制御プレーンをポピュレートする)制御アプリケーションによってプログラムされる。VMがパケットを処理した後、パケットは、その転送が論理ネットワークを介して続くように、論理ネットワークに送り返される。いくつかの実施形態では、ネットワーク制御システムは、多くのこのような「ミドルボックス」VMを利用する。このように介在されるミドルボックスVMは、非常にステートフルであり、この文書に記載されたL3サービスを超えた機能を実装することができる。
【0405】
VII.スケーラビリティ
3つの局面に沿ったいくつかの実施形態の論理L3スイッチング設計のスケーラビリティの意味は、以下のように対処される。これらの3つの局面は、(1)論理状態、(2)物理的なトンネリング状態、及び(3)分散型結合ルックアップである。論理パイプライン処理の大部分が、第1のホップで発生する。これは、すべての相互接続されたLDPセットのすべての論理(テーブル)状態が、いくつかの実施形態では、パイプラインの実行を行うことができるネットワーク内のどこにでも配布されることを意味する。すなわち、すべての相互接続されたLDPセットの結合された論理状態が、いくつかの実施形態では、これらのLDPセットのいずれかに取り付けられたすべての管理されるエッジスイッチング要素に配布される。しかしながら、いくつかの実施形態では、論理トポロジの「メッシュ性(meshiness)」が、論理状態の配布負荷を増加させない。
【0406】
状態の配布を制限するために、いくつかの実施形態は、最後のLDPSパイプラインが第1のホップではなく最後のホップで実行されることになるように、送信元及び宛先デバイス間でパイプラインの実行を分散させる。しかしながら、いくつかの場合では、これは、結果として、最後のLDPSの論理転送決定を行うために、すべての管理されるスイッチング要素について状態を十分に配布せず、この状態なしでは、送信元の管理されるスイッチング要素は、宛先の管理されるスイッチング要素にパケットを配信することさえできない可能性がある。したがって、いくつかの実施形態は、送信元及び宛先デバイスにパイプラインの実行を分散するために、一般的なLDPSモデルを制限することになる。
【0407】
いくつかの実施形態では、今日使用される物理制御プレーンをまねるために、論理制御プレーンが設計されているように、論理状態自体は、多くてもO(N)エントリ(Nは、相互接続されているLDPセット内の論理ポートの総数である)より多くのエントリをおそらく含まず、物理制御プレーンは、既存のハードウェアスイッチングチップセットの能力によって制限される。したがって、論理状態の配布は、システムの主要なボトルネックではない可能性があるが、論理制御プレーンの設計が大きくなると、最終的には、1つのボトルネックになる可能性がある。
【0408】
いくつかの実施形態は、ネットワークの管理されるスイッチング要素を、より高いレベルの集合体スイッチング要素によって相互接続されたクリークに分割する。「すべてが最初のホップ上」モデルで論理状態を減少させるために、分割を実装する代わりに、いくつかの実施形態は、後述するように、トンネル状態を減少させるように分割する。クリークの例は、上述の米国特許出願13/177,535号に記載されている。この出願は、最初のホップの管理されるスイッチング要素で論理データ処理のすべて又は大部分を実行する様々な実施形態も記載している。
【0409】
システム全体で維持される物理トンネル状態は、O(N
2)であり、ここで、Nは、相互接続されたLDPセット全体内の論理ポートの数である。これは、論理ポートを有するどのような管理されるエッジスイッチング要素も、宛先の管理されるエッジスイッチング要素にトラフィックを直接送信することができなければならないためである。したがって、O(N
2)負荷を任意の集中型制御要素にかけることなく、効率的にトンネル状態を維持することは、純粋なL2LDPセットでより重要にさえなる。集合体スイッチング要素は、いくつかの実施形態では、ネットワークをクリークにスライスするために使用される。これらの実施形態のいくつかでは、パケットは、依然として、ずっと送信元の管理されるエッジスイッチング要素で論理的にルーティングされるが、パケットを、宛先のエッジスイッチング要素に直接トンネリングする代わりに、プールノードに送信し、プールノードは、宛先MACアドレスに基づいて宛先に向けてパケットをルーティングする。本質的には、最後のL2LDPSは、複数のクリークにまたがり、プールノードは、そのL2ドメインの部分を縫い合わせるために使用される。
【0410】
図44〜45Bは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素で実装される分散型論理ルータを示す。具体的には、
図44〜45Bは、宛先L2処理の一部が、最後のホップの管理されるスイッチング要素(すなわち、パケットを直接宛先マシンに送信するスイッチング要素)によって実行されることを示す。
【0411】
図44は、最後のホップのスイッチング要素で一部の論理的処理を実行する一例を概念的に示す。具体的には、
図44は、パケットの送信元マシンに結合された管理されるスイッチング要素2505が、論理処理パイプライン200の大部分を実行し、宛先マシンに結合された管理されるスイッチング要素2510が、論理処理パイプライン200の一部を実行することを示す。図は、図の左半分に論理ルータ225並びに論理スイッチ220及び230を示す。図は、図の右半分に管理されるスイッチング要素2505及び2510を示す。図は、図の右半部及び左半分の両方にVM1〜4を示す。
【0412】
いくつかの実施形態では、管理されるスイッチング要素は、論理処理パイプライン200の全体を実行するために、すべての情報(例えば、ルックアップテーブル内のフローエントリ)を保持しない。例えば、これらの実施形態の管理されるスイッチング要素は、パケットをパケットの宛先マシンに送信するために介する宛先論理ネットワークの論理ポートに対するアクセス制御を決定するための情報を保持しない。
【0413】
管理されるスイッチング要素2505及び2510に沿った例示的なパケットフローをここで説明する。論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、次に、L2処理205及びL3処理210をパケットに実行する。
【0414】
管理されるスイッチング要素2505は、次に、L2処理215の一部を実行する。具体的には、管理されるスイッチング要素2505は、パケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポートYを通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、次に、論理スイッチ230のポート1が、宛先であるVM4にパケットを送出するポートであることを判断する。しかしながら、管理されるスイッチング要素2505は、いくつかの実施形態では、出口ACL2670を実行するための情報(例えば、フローエントリ)を持たないため、管理されるスイッチング要素2505は、論理スイッチ230のポート1に対するパケットのアクセス制御を決定しない。
【0415】
管理されるスイッチング要素2505は、次に、論理スイッチ230の論理ポート1がマッピングされる先の物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ230の論理ポート1が、管理されるスイッチング要素2510のポート5にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2510のポート5を介してVM4に送信されるべきであると判断する。この例での管理されるスイッチング要素2505は、パケットの論理コンテキストを、パケットと共にVM4に送信する前に変更する。
【0416】
管理されるスイッチング要素2505は、管理されるスイッチング要素2510にパケットを送信する。いくつかの場合、管理されるスイッチング要素2505は、管理されるスイッチング要素2505及び2510間に確立されるトンネル(例えば、管理されるスイッチング要素2505のポート3及び管理されるスイッチング要素2510のポート3で終端するトンネル)を介してパケットを送信する。トンネルを利用できない場合、管理されるスイッチング要素2505は、パケットが管理されるスイッチング要素2510に到達することができるように、プールノード(図示せず)にパケットを送信する。
【0417】
管理されるスイッチング要素2510がパケットを受信すると、管理されるスイッチング要素2510は、パケットの論理コンテキストに基づいて(論理コンテキストは、出口ACL2670が、パケットに実行されるために残っていることを示すことになる)、出口ACL2670をパケットに実行する。例えば、管理されるスイッチング要素2510は、パケットが、論理スイッチ230に、論理スイッチ230のポート1を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。管理されるスイッチング要素2510は、次に、L2処理215を実行した管理されるスイッチング要素2505によって決定されたように、管理されるスイッチング要素2510のポート5を介してVM4にパケットを送信する。
【0418】
図45A〜45Bは、
図44を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに管理されるスイッチング要素2505及び2510の例示的な動作を概念的に示す。具体的には、
図45Aは、論理ルータ225、論理スイッチ220、及び、論理ルータ230の一部を実装する管理されるスイッチング要素2505の動作を示す。
図45Bは、論理スイッチ230の一部を実装する管理されるスイッチング要素2510の動作を示す。
【0419】
図45Aの下半分に示すように、管理されるスイッチング要素2505は、L2エントリ4505及び4515、並びにL3エントリ4510を含む。これらのエントリは、コントローラクラスタ(図示せず)が管理されるスイッチング要素2505に供給するフローエントリである。これらのエントリは、3つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【0420】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケット4530を送信すると、パケットは、最初に、管理されるスイッチング要素2505のポート4を介して、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、管理されるスイッチング要素2505の転送テーブル4505〜4515に基づいて、パケットにL2処理を実行する。この例では、パケット4530は、VM4のIPアドレスである、1.1.2.10の宛先IPアドレスを有する。パケット4530の送信元IPアドレスは、1.1.1.10である。パケット4530は、また、VM1のMACアドレスを、送信元MACアドレスとして有し、論理ルータ225の論理ポート1のMACアドレス(例えば、01:01:01:01:01:01)を、宛先MACアドレスとして有する。
【0421】
管理されるスイッチング要素2505の動作は、
図45Aの例での管理されるスイッチング要素2505がパケット4530に実行されることを除いて、管理されるスイッチング要素が、丸で囲まれた9を識別し、L2論理処理2665を実行するまでは、
図30Aの例での管理されるスイッチング要素2505の動作と同様である。
【0422】
パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2675のコンテキストマッピングを実装するL2エントリ4515内の丸で囲まれた10によって示されるレコード(「レコード10」と呼ぶ)を識別する。この例では、レコード10は、VM4が結合される管理されるスイッチング要素2510のポート5を、パケット4530が転送されるべき論理スイッチ230の論理ポート(ステージ2665で決定される)に対応するポートとして識別する。レコード10は、加えて、パケット4530が、転送テーブルによって(例えば、パケット4530をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0423】
パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ4515内の丸で囲まれた11によって示されるレコード(「レコード11」と呼ぶ)を識別する。レコード11は、パケット4530が管理されるスイッチング要素2510に到達するために、パケット4530が送信されるべきポートとして、管理されるスイッチング要素2505のポート3を指定する。この場合では、管理されるスイッチング要素2505は、パケット4530を、管理されるスイッチング要素2510に結合される管理されるスイッチング要素2505のポート3から送出することになる。
【0424】
図45Bに示すように、管理されるスイッチング要素2510は、パケット4530を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素2510が、管理されるスイッチング要素805からパケット4530を受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2510の転送テーブルに基づいて、パケット4530の処理を開始する。管理されるスイッチング要素2510は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット4530のヘッダに格納された論理コンテキストに基づいて、パケット4530の論理コンテキストを識別する。論理コンテキストは、パケット4530が、管理されるスイッチング要素805によってステージ2665まで処理されていることを指定する。このように、レコード1は、パケット4530が、転送テーブルによって(例えば、パケット4530をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0425】
次に、管理されるスイッチング要素2510は、パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、出口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット4530がさらに処理されることを可能にし、したがって、パケット4530が、転送テーブルによって(例えば、パケット4530をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素2510が、パケット4530の論理コンテキスト(すなわち、パケット4530は、論理スイッチ230のL2出口ACLについて処理されている)を、パケット4530のヘッダのフィールドのセットに格納することを指定する。
【0426】
次に、管理されるスイッチング要素2510は、パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、パケット4530がVM4に到達するために、パケット4530が通って送信されるべき管理されるスイッチング要素2510のポート5を指定する。この場合では、管理されるスイッチング要素2510は、パケット4530を、VM4に結合される管理されるスイッチング要素2510のポート5から送出することになる。いくつかの実施形態では、管理されるスイッチング要素2510は、パケットをVM4に送信する前に、パケット4530から論理コンテキストを除去する。
【0427】
図46〜47Bは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素で実装される分散型論理ルータを示す。具体的には、
図46〜47Bは、送信元L2処理205及びL3処理210が、最初のホップの管理されるスイッチング要素(すなわち、送信元マシンからパケットを直接受信するスイッチング要素)によって実行され、宛先L2処理215全体が、最後のホップの管理されるスイッチング要素(すなわち、パケットを直接宛先マシンに送信するスイッチング要素)によって実行されることを示す。
【0428】
図46は、最後のホップのスイッチング要素で一部の論理的処理を実行する一例を概念的に示す。具体的には、
図46は、パケットの送信元マシンに結合された管理されるスイッチング要素2505が、L2処理205及びL3処理210を実行し、宛先マシンに結合された管理されるスイッチング要素2510が、L2処理215を実行することを示す。すなわち、管理されるスイッチング要素2505は、送信元論理ネットワークに関するL2転送、及びL3ルーティングを実行し、宛先論理ネットワークに関するL2転送は、管理されるスイッチング要素2510によって実行される。図は、図の左半分に論理ルータ225並びに論理スイッチ220及び230を示す。図は、図の右半分に管理されるスイッチング要素2505及び2510を示す。図は、図の右半部及び左半分の両方にVM1〜4を示す。
【0429】
いくつかの実施形態では、管理されるスイッチング要素は、論理処理パイプライン200の全体を実行するために、すべての情報(例えば、ルックアップテーブル内のフローエントリ)を保持しない。例えば、これらの実施形態の管理されるスイッチング要素は、宛先論理ネットワークに関する論理転送をパケットに実行するための情報を保持しない。
【0430】
管理されるスイッチング要素2505及び2510に沿った例示的なパケットフローをここで説明する。論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、次に、L2処理205及びL3処理210をパケットに実行する。
【0431】
管理されるスイッチング要素2505は、次に、管理されるスイッチング要素2510にパケットを送信する。いくつかの場合、管理されるスイッチング要素2505は、管理されるスイッチング要素2505及び2510間に確立されるトンネル(例えば、管理されるスイッチング要素2505のポート3及び管理されるスイッチング要素2510のポート3で終端するトンネル)を介してパケットを送信する。トンネルを利用できない場合、管理されるスイッチング要素2505は、パケットが管理されるスイッチング要素2510に到達することができるように、プールノード(図示せず)にパケットを送信する。
【0432】
管理されるスイッチング要素2510がパケットを受信すると、管理されるスイッチング要素2510は、パケットの論理コンテキストに基づいて(論理コンテキストは、パケットに実行されるために残っているのが、L2処理215全体であることを示すことになる)、L2処理215をパケットに実行する。管理されるスイッチング要素2510は、次に、管理されるスイッチング要素2510のポート5を介してVM4にパケットを送信する。
【0433】
図47A〜47Bは、
図46を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに管理されるスイッチング要素2505及び2510の例示的な動作を概念的に示す。具体的には、
図47Aは、論理スイッチ220及び論理ルータ225を実装する管理されるスイッチング要素2505の動作を示す。
図47Bは、論理スイッチ230を実装する管理されるスイッチング要素2505の動作を示す。
【0434】
図47Aの下半分に示すように、管理されるスイッチング要素2505は、L2エントリ4705及びL3エントリ4710を含む。これらのエントリは、コントローラクラスタ(図示せず)が管理されるスイッチング要素2505に供給するフローエントリである。これらのエントリは、2つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
【0435】
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケット4730を送信すると、パケットは、最初に、管理されるスイッチング要素2505のポート4を介して、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、管理されるスイッチング要素2505の転送テーブル4705〜4710に基づいて、パケットにL2処理を実行する。この例では、パケット4730は、VM4のIPアドレスである、1.1.2.10の宛先IPアドレスを有する。パケット4730の送信元IPアドレスは、1.1.1.10である。パケット4730は、また、VM1のMACアドレスを、送信元MACアドレスとして有し、論理ルータ225の論理ポート1のMACアドレス(例えば、01:01:01:01:01:01)を、宛先MACアドレスとして有する。
【0436】
管理されるスイッチング要素2505の動作は、管理されるスイッチング要素が、丸で囲まれた7を識別し、論理ルータ225のポート2に対してL3出口ACLを実行するまで、
図47Aの例での管理されるスイッチング要素2505がパケット4730に実行されることを除いて、
図47Aの例での管理されるスイッチング要素2505の動作と同様である。
【0437】
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ4710内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。レコード8は、論理スイッチ230が、管理されるスイッチング要素2510に実装され、パケットが、管理されるスイッチング要素2510に送信されるべきであることを指定する。
【0438】
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ4715内の丸で囲まれた9によって示されるレコード(「レコード9」と呼ぶ)を識別する。レコード9は、パケット4730が管理されるスイッチング要素2510に到達するために、パケット4730が通って送信されるべきポートとして、管理されるスイッチング要素2505のポート3を指定する。この場合では、管理されるスイッチング要素2505は、パケット4730を、管理されるスイッチング要素2510に結合される管理されるスイッチング要素2505のポート3から送出することになる。
【0439】
図47Bに示すように、管理されるスイッチング要素2510は、パケット4730を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素2510が、管理されるスイッチング要素2510からパケット4730を受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2510の転送テーブルに基づいて、パケット4730の処理を開始する。管理されるスイッチング要素2510は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット4730のヘッダに格納された論理コンテキストに基づいて、パケット4730の論理コンテキストを識別する。論理コンテキストは、L2処理205及びL3処理210が、管理されるスイッチング要素810によってパケット4730に実行されていることを指定する。レコード1は、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0440】
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2510は、L2入口ACLを実装するL2転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット4730が、論理スイッチ230(図示せず)の論理ポートYを通ってくることを可能にし、したがって、パケット4730が、管理されるスイッチング要素2510によって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素2510が、パケット4730の論理コンテキスト(すなわち、パケット4730は、処理パイプライン4700のステージ4762によって処理されている)を、パケット4730のヘッダのフィールドのセットに格納することを指定する。
【0441】
次に、管理されるスイッチング要素2510は、パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、論理L2転送を実装するL2転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、VM4に接続された論理スイッチ230の論理ポート2を介して転送されるべきであることを指定する。
【0442】
レコード3は、また、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード3は、管理されるスイッチング要素2510が、論理コンテキスト(すなわち、パケット4730は、処理パイプライン4700のステージ4766によって処理されている)を、パケットのフィールドのセットに格納することを指定する。
【0443】
次に、管理されるスイッチング要素2510は、パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、出口ACLを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。この例では、レコード4は、パケット4730がさらに処理されることを可能にし、したがって、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード4は、管理されるスイッチング要素2510が、パケット4730の論理コンテキスト(すなわち、パケット4730は、論理スイッチ230のL2出口ACLについて処理されている)を、パケット4730のヘッダのフィールドのセットに格納することを指定する。
【0444】
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、コンテキストマッピングを実装するL2エントリ4715内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。この例では、レコード5は、VM4が結合される管理されるスイッチング要素2510のポート5を、パケット4730が転送されるべき論理スイッチ230の論理ポート2に対応するポートとして識別する。レコード5は、加えて、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。
【0445】
次に、管理されるスイッチング要素2510は、パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。レコード6は、パケット4730がVM4に到達するために、パケット4730が通って送信されるべき管理されるスイッチング要素2510のポート5を指定する。この場合では、管理されるスイッチング要素2510は、パケット4730を、VM4に結合される管理されるスイッチング要素2510のポート5から送出することになる。いくつかの実施形態では、管理されるスイッチング要素2510は、パケットをVM4に送信する前に、パケット4730から論理コンテキストを除去する。
【0446】
パケットの論理パス上のすべてのパイプラインの実行は、分散ルックアップ、すなわち、ARP及び学習に意味を有する。ここで、ルックアップは、論理ネットワークに取り付けられた論理ポートを有する任意のエッジスイッチング要素によって実行することができるため、ルックアップの総量は、同様の物理トポロジ上で実行されるルックアップを超えることになり、パケットが、同じポートに向かうにも関わらず、ルックアップは、異なる管理されるエッジスイッチング要素上で開始されることになるため、異なる送信元は、キャッシュされたルックアップ状態を共有することができない。したがって、フラッディングの問題は、論理トポロジによって増幅され、ルックアップのためのユニキャストマッピングベースのアプローチが、実際には好ましい。
【0447】
マッピングサーバ(例えば、プール又はルートノード)のクラウドに向けて、特別なルックアップパケットを送信することによって、送信元エッジスイッチング要素は、フラッディングに頼ることなく、必要なルックアップを行うことができる。いくつかの実施形態では、マッピングサーバは、大量のトラフィック集合の局所性(したがって、クライアント側の良好なキャッシュヒット率)からだけでなく、結果として優れたスループットをもたらすデータパスのみの実装から利益を得る。
【0448】
図48は、管理されるスイッチング要素が動作するホスト4800の例示的なソフトウェアアーキテクチャを概念的に示す。具体的には、この図は、ホスト4800が、L3デーモンも実行し、L3デーモンは、L3デーモンが管理されるスイッチング要素から受信するパケットのために、L3アドレス(例えば、IPアドレス)をL2アドレス(例えば、MACアドレス)に解決することを示す。この図は、ホスト4800が、管理されるスイッチング要素4805、転送テーブル4820、L3デーモン4810、及びマッピングテーブル4815を含むことを、図の上半分に示す。この図は、フローエントリ4825及び4830も示す。
【0449】
フローエントリ4825及び4830は、それぞれ、クォリファイア及びアクションを有する。フローエントリ4825及び4830として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。いくつかの実施形態では、フローエントリは、優先順位を有し、管理されるスイッチング要素は、2つ以上のフローエントリのクォリファイアが満たされる場合、最も高い優先順位でフローエントリのアクションを行う。
【0450】
ホスト4800は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム(例えば、Windows(登録商標)及びLinux(登録商標))によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素4805は、ホスト4800で実行するソフトウェアスイッチング要素(例えば、Open vSwitch)である。上述したように、コントローラクラスタ(図示せず)は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素4805は、それ自体はフローエントリ及びARP要求を生成しない。
【0451】
いくつかの実施形態の管理されるスイッチング要素4805は、上述した論理処理パイプライン200の全部又は一部を実行する。具体的には、管理されるスイッチング要素4805は、転送テーブル4820内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするために、L3処理210を実行する管理されるスイッチング要素(例えば、管理されるスイッチング要素1720又は2505)である。いくつかの実施形態では、管理されるスイッチング要素4805は、管理されるスイッチング要素に結合されたマシン(図示せず)からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、1つ又は複数の仮想マシン(図示せず)が、ホスト4800で動作しており、管理されるスイッチング要素4805に結合される。他の実施形態では、管理されるスイッチング要素は、第2のレベルの管理されるスイッチング要素である。
【0452】
管理されるスイッチング要素4805が、別の論理ネットワーク内にある宛先マシンに送信されている初めてのパケットであるパケットを受信する(又は、パケット自体が、ARP要求である)場合、これらの実施形態の管理されるスイッチング要素4805は、宛先マシンのMACアドレスをまだ知らないことになる。すなわち、管理されるスイッチング要素4805は、ネクストホップIPアドレス及び宛先MACアドレス間のマッピングを知らないことになる。ネクストホップIPアドレスを宛先MACアドレスに解決するために、いくつかの実施形態の管理されるスイッチング要素4805は、L3デーモン4810からのパケットの宛先MACアドレスを要求する。
【0453】
いくつかの実施形態のL3デーモン4810は、ホスト4800上で動作するソフトウェアアプリケーションである。L3デーモン4810は、IP及びMACアドレスのマッピングを含むテーブル4815を保持する。管理されるスイッチング要素4805が、ネクストホップIPアドレスに対応する宛先MACアドレスを要求すると、L3デーモンは、送信元IPアドレスがマッピングされる宛先MACアドレスを見つけるために、マッピングテーブル4815をルックアップする。(いくつかの場合、送信元IPアドレスがマッピングされる宛先MACアドレスは、ネクストホップ論理ルータのMACアドレスである。)
【0454】
異なる実施形態の管理されるスイッチング要素4805及びL3デーモン4810は、アドレスを要求し、供給するために異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素4805は、宛先IPアドレスを有するが、宛先MACアドレスを持たないパケットを、L3デーモンに送信する。これらの実施形態のL3デーモン4810は、IPアドレスを、宛先MACアドレスに解決する。L3デーモン4810は、管理されるスイッチング要素4805にパケットを送信し戻し、管理されるスイッチング要素4805は、パケットを宛先マシンに向けて送信するために、論理転送及び/又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素4805は、最初に、メタデータを、解決する宛先IPアドレスを含むパケットと共にL3デーモン4810に送信する。このメタデータは、管理されるスイッチング要素4805が、L3デーモン4810から戻るパケットを受信するとき、管理されるスイッチング要素4805が、論理処理パイプラインの実行を再開するために使用する情報(例えば、レジスタ値、論理パイプライン状態、など)を含む。
【0455】
他の実施形態では、管理されるスイッチング要素4805は、フローテンプレートをL3デーモン4810に送信することによって宛先アドレスを要求し、フローテンプレートは、宛先MACアドレスについての実際の値を持たないフローエントリである。L3デーモン4810は、マッピングテーブル4815をルックアップすることによって、フローテンプレートに記入する宛先MACアドレスを見つけ出す。L3デーモン4810は、次に、記入されたフローテンプレートを転送テーブル4820に入れることによって、実際の宛先MACアドレスが記入されたフローテンプレートを、管理されるスイッチング要素4810に送信し戻す。いくつかの実施形態では、L3デーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。
【0456】
マッピングテーブル4815が、宛先IPアドレスのためのエントリを有し、エントリが、宛先IPアドレスにマッピングされた宛先MACアドレスを有する場合、L3デーモン4810は、パケットに書き込む、又はフローテンプレートに記入するために、宛先MACアドレスを使用する。このようなエントリがない場合、L3デーモンは、ARP要求を生成し、L3デーモンを実行する他のホスト又はVMに、ARPパケットを同時通信する。具体的には、いくつかの実施形態のL3デーモンは、ネクストホップ論理L3ルータが取り付けられ得るこれらのホスト又はVMにARP要求を送信するだけである。L3デーモンは、ARPパケットに対する応答を受信し、応答は、ARPパケットを受信したホスト又はVMの1つからの宛先MACアドレスを含む。L3デーモン4810は、宛先IPアドレスを宛先MACアドレスにマッピングし、このマッピングをマッピングテーブル4815に追加する。いくつかの実施形態では、L3デーモン4810は、宛先MACアドレスの有効性をチェックするために、ARP要求に応答する別のL3デーモンに、ユニキャストパケットを定期的に送信する。このようにして、L3デーモン4810は、IP及びMACアドレスマッピングを最新に保つ。
【0457】
いくつかの実施形態では、L3デーモン4810が、フローエントリをルックアップし、ARP要求を別のL3デーモンインスタンスに送信した後、解決されたアドレスを見つけるのに依然として失敗する場合、L3デーモンは、フローテンプレートで、パケットを破棄するように指定し、又は、L3デーモン自体が、パケットを破棄することになる。
【0458】
管理されるスイッチング要素4805が、別のホスト又はVMからARPパケットを受信すると、いくつかの実施形態の管理されるスイッチング要素4805は、管理されるスイッチング要素に結合されたマシンにARPパケットを転送しない。これらの実施形態の管理されるスイッチング要素4800は、ARPパケットをL3デーモンに送信する。L3デーモンは、局所的に利用可能なIPアドレス及びMACアドレス(例えば、管理されるスイッチング要素4805に結合されたマシンのIPアドレス及びMACアドレス)間をマッピングするマッピングテーブル4815を保持する。マッピングテーブル4815が、受信されたARPパケットのIPアドレスのためのエントリを有し、エントリが、管理されるスイッチング要素4805に結合されたVMのMACアドレスを有する場合、L3デーモンは、ARPパケットに応じて、ARPパケットが由来するホスト又はVM(すなわち、ホスト又はVMのL3デーモン)にMACアドレスを送信する。
【0459】
ここで、管理されるスイッチング要素4805及びL3デーモン4810の例示的な動作を、3つの異なるステージ1〜3(丸で囲まれた1〜3)に関して説明する。この例では、管理されるスイッチング要素4805は、転送及びルーティングするパケットをマシン(図示せず)から受信する管理されるエッジスイッチング要素である。管理されるスイッチング要素4805は、パケットを受信し、転送テーブル4820内のフローエントリに基づいて、論理処理200を実行する。
【0460】
パケットが、宛先マシンのIPアドレスを持つ最初のパケットである場合、又は、パケットが、送信元マシンからのARP要求である場合、管理されるスイッチング要素4820は、(ステージ1で)フローエントリ4825を識別し、フローエントリ4825で指定されるアクションを実行する。図示のように、フローエントリ4825は、宛先MAC Xに解決されるべき宛先IPアドレス1.1.2.10を有するフローテンプレートが、L3デーモン4810に送信されるべきであることを示す。この例では、フローエントリ4825は、いくつかの実施形態では番号である優先順位の値Nを有する。
【0461】
ステージ2では、L3デーモン4810は、フローテンプレートを受信し、マッピングテーブル4815をルックアップすることによって、1.1.2.10が01:01:01:01:01:09に解決されるべきであることを知る。L3デーモンは、フローテンプレートに記入し、記入されたテンプレート(ここでは、フローエントリ4830)を転送テーブル4830に挿入する。この例では、L3デーモンは、N+1の優先順位を、記入されたテンプレートに割り当てる。
【0462】
ステージ3では、管理されるスイッチング要素4810は、いくつかの実施形態では、パケットの宛先MACアドレスを設定するために、フローエントリ4830を使用する。また、管理されるスイッチング要素4810がその後に処理するパケットのために、管理されるスイッチング要素4805は、パケットが1.1.2.10の宛先IPアドレスを有する場合、フローエントリ4825の上のフローエントリ4830を使用する。
【0463】
いくつかの実施形態では、L3デーモン4810及び管理されるスイッチング要素は、ホスト4800で動作している同じ仮想マシンで動作し、又は、ホスト4800で動作している異なる仮想マシンで動作する。いくつかの実施形態では、L3デーモン4810は仮想マシンのユーザ空間で動作する。L3デーモン4810及び管理されるスイッチング要素は、別々のホストで動作することもできる。
【0464】
いくつかの実施形態では、管理されるスイッチング要素4805は、アドレスを解決するために、L3デーモン4810に依存しない。いくつかのこのような実施形態では、制御クラスタ(
図48には示さず)は、フローエントリ4820が、IPアドレスと、ARPコール(すなわち、入力)又はDHCPを介して得られたMACアドレスとの間のマッピングを含むように、フローエントリ4820を静的に構成することができる。
【0465】
図49は、ネットワークアドレスを解決するためにいくつかの実施形態が実行するプロセス4900を概念的に示す。いくつかの実施形態では、プロセス4900は、L3でパケットをルーティングするためにL3処理210を実行する管理されるスイッチング要素(例えば、管理されるスイッチング要素1720、2505、又は3105)によって実行される。プロセス4900は、いくつかの実施形態では、プロセスが、L3で論理的にルーティングされるべきパケットを受信すると、開始する。
【0466】
プロセス4900は、(4905で)パケットがアドレス解決(例えば、宛先IPアドレスを宛先MACアドレスに解決する)を必要とするかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、パケットがL3処理を必要とするかどうかを、フローエントリに基づいて判定する。そのクォリファイアがパケットのヘッダに格納された情報又は論理コンテキストと一致するフローエントリは、パケットがアドレス解決を必要とすることを指定する。
【0467】
プロセス4900が、(4905で)パケットがアドレス解決を必要としないと判定すると、プロセスは終了する。そうでなければ、プロセス4900は、(4910で)プロセス4900が、L3デーモンからのパケットのアドレス(例えば、宛先IPアドレス)を解決する先のアドレスを要求する必要があるかどうかを判定する。いくつかの実施形態では、プロセス4900は、フローエントリに基づいて、プロセスがL3デーモンに要求する必要があるかどうかを判定する。例えば、フローエントリは、パケットのアドレスを解決する先のアドレスが、L3デーモンからの解決されたアドレスを要求することによって得られるべきであることを指定することができる。いくつかの実施形態では、プロセスは、フローエントリが、解決されたアドレスのための空のフィールド、又は、解決されたアドレスがL3デーモンから得られるべきであることを示すフィールド内のなにか他の値を有するフローテンプレートである場合、L3デーモンが、解決されたアドレスを提供するべきであると判定する。
【0468】
プロセスが、(4910で)プロセスがL3デーモンからのアドレスを要求する必要がないと判定した場合、プロセスは、(4920で)解決されたアドレスをフローエントリから得る。例えば、フローエントリは、変換されたアドレスを提供することになる。プロセスは、次に、さらに後述する4925に進む。プロセスが、(4910で)プロセスがL3デーモンからのアドレスを要求する必要があると判定した場合、プロセス4900は、4915で、L3デーモンからの解決されたアドレスを要求し、取得する。いくつかの実施形態では、プロセス4900は、フローテンプレートをL3デーモンに送信することによって、解決されたアドレスを要求する。L3デーモンは、フローテンプレートに解決されたアドレスを記入し、記入されたテンプレートを、プロセスが使用する転送テーブル(図示せず)内に配置することになる。
【0469】
次に、プロセス4900は、パケットを解決されたアドレスで変更する。いくつかの実施形態では、プロセスは、パケットのヘッダ内のアドレスフィールドを変更する。代わりに又は結合的に、プロセスは、パケットのアドレスを解決されたアドレスに置き換えるために、論理コンテキストを変更する。プロセスは、次に、終了する。
【0470】
図50は、いくつかの実施形態のネットワークアーキテクチャ5000を示す。具体的には、この図は、それぞれがL3デーモンを実行するいくつかのホスト(又は、VM)が、ARP要求の同時通信を回避することを可能にするマップサーバを示す。この図は、5005、5010、5015を含むホスト(又は、VM)のセットを示す。
【0471】
ホスト5010及び5015は、ホスト5010及び5015のそれぞれが、L3デーモン、管理されるスイッチング要素、及び、1つ又は複数のVMを実行する点で、
図48を参照して上述したホスト4805と同様である。
【0472】
ホスト5005は、マップサーバを実行する。いくつかの実施形態のマップサーバ5005は、グローバルマッピングテーブル5020を保持し、グローバルマッピングテーブル5020は、管理されるエッジスイッチング要素を実行するネットワーク内のすべてのホストで動作するL3デーモンによって保持されるすべてのマッピングテーブルのすべてのエントリを含む。いくつかの実施形態では、ネットワーク内のL3デーモンは、局所的に利用可能なIPアドレス及びMACアドレスのマッピング間のマッピングのエントリを送信する。ホストの管理されるスイッチング要素に結合されたマシンへの変更があった場合はいつでも(例えば、VMが、故障する、又は、管理されるスイッチング要素に結合される、若しくは、管理されるスイッチング要素から分離される場合)、ホストのL3デーモンは、個々のローカルマッピングテーブルを適宜に更新し、また、マップサーバ5005が、変更によって更新されたグローバルマッピングテーブル5005を保持するように、更新を(例えば、更新を含む特別な「公開」パケットを送信することによって)マップサーバ5005に送信する。
【0473】
いくつかの実施形態では、管理されるエッジスイッチング要素を実行する各ホストで動作するL3デーモンは、ローカルマッピングが、解決する宛先IPアドレスのためのエントリを持たない場合、ARPパケットを同時通信しない。代わりに、L3デーモンは、宛先IPアドレスを宛先MACアドレスに解決するために、マップサーバ5005に相談する。マップサーバ5005は、グローバルマッピングテーブル5020をルックアップすることによって、宛先IPアドレスを宛先MACアドレスに解決する。マップサーバ5005が、IPアドレスを解決することができない場合(例えば、グローバルマッピングテーブル5020が、IPアドレスのためのエントリを持たない、又は、マップサーバ5005が、故障した場合)、L3デーモンは、管理されるエッジスイッチング要素を実行する他のホストにARPパケットを同時通信することに頼ることになる。いくつかの実施形態では、マップサーバ5005は、第2のレベルの管理されるスイッチング要素(例えば、プールノード)が実装される同じホスト又はVMに実装される。
【0474】
図51は、IP及びMACアドレスのマッピングを含むマッピングテーブルを維持するためにいくつかの実施形態が実行するプロセス5100を示す。いくつかの実施形態では、プロセス5100は、マッピングサーバからの解決されたアドレスを要求するL3デーモンによって実行される。これらの実施形態でのマッピングサーバは、管理されるスイッチング要素のセットのためのIP及びMACアドレスのマッピングを含むグローバルマッピングテーブルを保持する。プロセス5100は、いくつかの実施形態では、プロセスが、管理されるスイッチング要素から解決する特定のアドレスを受信すると、開始する。
【0475】
プロセスは、(5105で)プロセスが、管理されるスイッチング要素から受信した特定のアドレスのための解決されたアドレスを持っているかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、プロセスが、特定のアドレスのための解決されたアドレスを持っているかどうかを判定するために、IP及びMACアドレスのマッピングを含むローカルマッピングテーブルをルックアップする。
【0476】
プロセス5100が、プロセスが解決されたアドレスを持つと判定すると、プロセスは、さらに後述する5120に進む。そうでなければ、プロセス5100は、マップサーバからの解決されたアドレスを要求し、取得する。プロセス5100は、次に、(5115で)ローカルマッピングテーブルを、マッピングサーバから取得した解決されたアドレスで変更する。いくつかの実施形態では、プロセス5100は、解決されたアドレス及び特定のアドレスの新しいマッピングを、ローカルマッピングテーブルに挿入する。
【0477】
プロセス5100は、次に、解決されたアドレスを、管理されるスイッチング要素に送信する。いくつかの実施形態では、プロセス5100は、特定のアドレスを有するパケットを変更する。他の実施形態では、プロセス5100は、解決されたアドレスの要求として管理されるスイッチング要素が送信したフローテンプレートを変更する。プロセスは、次に、終了する。
【0478】
図52は、IP及びMACアドレスのマッピングを含むマッピングテーブルを維持するためにいくつかの実施形態が実行するプロセス5200を示す。いくつかの実施形態では、プロセス5200は、ローカルマッピングテーブルを保持し、更新をマッピングサーバに送信するL3デーモンによって実行される。これらの実施形態でのマッピングサーバは、管理されるスイッチング要素のセットのためのIP及びMACアドレスのマッピングを含むグローバルマッピングテーブルを保持する。プロセス5200は、いくつかの実施形態では、L3デーモンが動作を開始すると、開始する。
【0479】
プロセス5200は、(5205で)管理されるスイッチング要素のセットを監視することによって開始する。具体的には、プロセス5200は、管理されるスイッチング要素との間でのマシンの結合及び分離、又は、管理されるスイッチング要素に結合されたマシンに関する任意のアドレスの変更について監視する。いくつかの実施形態では、管理されるスイッチング要素のセットは、L3デーモンが動作する同じホスト又は仮想マシンで動作しているこれらの管理されるスイッチング要素を含む。
【0480】
次に、プロセス5200は、(5210で)プロセスが監視する管理されるスイッチング要素へのこのような変更があったかどうかを判定する。プロセスが、(5210で)変更がなかったと判定した場合、プロセス5200は、管理されるスイッチング要素のセットの監視を続けるために、5205にループバックする。そうでなければ、プロセスは、(5215で)ローカルマッピングテーブル内の対応するエントリを変更する。例えば、VMが移行し、セット内の管理されるスイッチング要素の1つに結合された場合、プロセスは、移行したVMのIPアドレス及びMACアドレスのマッピングを、ローカルマッピングテーブルに挿入する。
【0481】
プロセス5200は、次に、マップサーバが、グローバルマッピングテーブルを、IPアドレス及びMACアドレスの新しい及び/又は変更されたマッピングで更新することができるように、更新されたマッピングをマップサーバに送信する。プロセスは、次に、終了する。
【0482】
VIII.フロー生成及びフロー処理
上述したように、いくつかの実施形態の管理されるスイッチング要素は、いくつかの実施形態のコントローラクラスタ(1つ又は複数のコントローラインスタンス)によって、管理されるスイッチング要素に供給されるフローテーブルに基づいて、論理スイッチ及び論理ルータを実装する。いくつかの実施形態では、コントローラクラスタは、コントローラクラスタが検出する入力又はネットワークイベントに基づいて、テーブルマッピング動作を実行することによって、これらのフローエントリを生成する。これらのコントローラクラスタ及びその動作の詳細は、米国特許出願第13/177,533号、及び、「Chassis Controller」という表題の、代理人整理番号NCRA.P0081を有する、上記の組み込まれた同時出願の米国特許出願
**に記載されている。
【0483】
この同時出願の米国特許出願で言及されているように、いくつかの実施形態のネットワーク制御システムは、いくつかのコントローラインスタンスを含む分散型制御システムであり、いくつかのコントローラインスタンスは、システムが、ユーザからの論理データパスセットを受け入れ、これらの論理データパスセットを実装するために、スイッチング要素を構成することを可能にする。いくつかの実施形態では、コントローラインスタンスの1つのタイプは、1つ又は複数のモジュールを実行するデバイス(例えば、汎用コンピュータ)であり、1つ又は複数のモジュールは、論理制御プレーンからのユーザ入力を論理転送プレーンに変換し、次に、論理転送プレーンデータを物理制御プレーンデータに変換する。いくつかの実施形態のこれらのモジュールは、制御モジュール及び仮想化モジュールを含む。制御モジュールは、ユーザが、論理データパスセットを指定し、ポピュレートすることを可能にし、仮想化モジュールは、論理データパスセットを物理的なスイッチングインフラストラクチャにマッピングすることによって、指定された論理データパスセットを実装する。いくつかの実施形態では、制御及び仮想化アプリケーションは、2つの別々のアプリケーションであり、他の実施形態では、これらは、同じアプリケーションの一部である。
【0484】
特定の論理データパスセットに関する論理転送プレーンデータから、いくつかの実施形態の仮想化モジュールは、論理データパスセットを実装する任意の管理されるスイッチング要素に一般的なユニバーサル物理制御プレーン(UPCP)データを生成する。いくつかの実施形態では、この仮想化モジュールは、特定の論理データパスセットのためのマスタコントローラであるコントローラインスタンスの一部である。このコントローラは、論理コントローラと呼ばれる。
【0485】
いくつかの実施形態では、UPCPデータは、次に、特定の管理されるスイッチング要素のためのマスタ物理コントローラインスタンスであるコントローラインスタンスによって、又は、「Chassis Controller」という表題の、代理人整理番号NCRA.P0081を有する、同時出願の米国特許出願
**にさらに記載のように、特定の管理されるスイッチング要素のためのシャーシコントローラによって、各々の特定の管理されるスイッチング要素のためのカスタマイズされた物理制御プレーン(CPCP)データに変換される。シャーシコントローラが、CPCPデータを生成すると、シャーシコントローラは、物理コントローラを介して論理コントローラの仮想化モジュールからUPCPデータを取得する。
【0486】
物理コントローラ又はシャーシコントローラのどちらがCPCPデータを生成するのかにかかわりなく、特定の管理されるスイッチング要素のためのCPCPデータは、管理されるスイッチング要素に伝播される必要がある。いくつかの実施形態では、CPCPデータは、ネットワーク情報ベース(NIB)データ構造を介して伝播され、NIBデータ構造は、いくつかの実施形態では、オブジェクト指向データ構造である。NIBデータ構造を使用するいくつかの例は、参照により本明細書に組み込まれる米国特許出願第13/177,529号及び第13/177,533号に記載されている。これらの出願に記載のように、NIBデータ構造は、いくつかの実施形態では、異なるコントローラインスタンス間の通信媒体として用いることができるようにするために、並びに、論理データパスセット(例えば、論理スイッチング要素)、及び/又は、これらの論理データパスセットを実装する管理されるスイッチング要素に関するデータを格納するためにも使用される。
【0487】
しかしながら、他の実施形態は、コントローラインスタンス間で通信するため、並びに、論理データパスセット及び/又は管理されるスイッチング要素に関するデータを格納するために、物理コントローラ又はシャーシコントローラからのCPCPデータを管理されるスイッチング要素に伝播させるために、NIBデータ構造を使用しない。例えば、いくつかの実施形態では、物理コントローラ及び/又はシャーシコントローラは、オープンフローエントリを介して管理されるスイッチング要素と通信し、構成プロトコルを介して更新する。また、いくつかの実施形態では、コントローラインスタンスは、データを交換するために、1つ又は複数の直接通信チャネル(例えば、RPCコール)を使用する。加えて、いくつかの実施形態では、コントローラインスタンス(例えば、これらのインスタンスの制御及び仮想化モジュール)は、論理及び/又は物理データを、リレーショナルデータベースデータ構造に書き込まれたレコードで表現する。いくつかの実施形態では、このリレーショナルデータベース構造は、コントローラインスタンスの1つ又は複数のモジュールを実装するために使用されるテーブルマッピングエンジン(nLogと呼ばれる)の入力及び出力テーブルの一部である。
【0488】
図53は、いくつかの実施形態のコントローラクラスタの3つのコントローラインスタンスを概念的に示す。これらの3つのコントローラインスタンスは、APIコールとして受信された論理制御プレーン(LCP)データからUPCPデータを生成するための論理コントローラ5300、並びに、それぞれ、管理されるスイッチング要素5320及び5325に特定のUPCPデータをカスタマイズするための物理コントローラ5390及び5330を含む。具体的には、いくつかの実施形態の論理コントローラ5300は、nLogのようなテーブルマッピングプロセッサ(図示せず)を使用して、テーブルにテーブルマッピング動作を実行することによって、ユニバーサルフローを生成する。nLogエンジンは、米国特許出願第13/177,533号に記載されている。この図は、ユーザ5325、並びに、管理されるスイッチング要素5320及び5325も示す。
【0489】
図示のように、論理コントローラ5300は、制御アプリケーション5305及び仮想化アプリケーション5310を含む。いくつかの実施形態では、制御アプリケーション5305は、論理制御プレーンデータを受信し、このデータを、仮想化アプリケーション5310に供給される論理転送プレーンデータに変換するために、使用される。仮想化アプリケーション5310は、論理転送プレーンデータから、ユニバーサル物理制御プレーンデータを生成する。
【0490】
いくつかの実施形態では、論理制御転プレーンデータの一部は、入力から変換される。いくつかの実施形態では、論理コントローラ5300は、APIコールのセットをサポートする。論理コントローラは、APIコールのセットをLCPデータに変換する入力変換アプリケーション(図示せず)を有する。APIコールを使用して、ユーザは、ユーザが物理スイッチング要素及びルータを構成しているかのように、論理スイッチ及び論理ルータを構成することができる。
【0491】
物理コントローラ5390及び5330は、それぞれ、管理されるスイッチング要素5320及び5325のマスタである。いくつかの実施形態の物理コントローラ5390及び5330は、論理コントローラ5300からUPCPデータを受信し、UPCPデータを、管理されるスイッチング要素5320及び5325のためのCPCPデータに変換する。物理コントローラ5390は、次に、管理されるスイッチング要素5320のためのCPCPデータを、管理されるスイッチング要素5320に送信する。物理コントローラ5330は、管理されるスイッチング要素5325のためのCPCPデータを、管理されるスイッチング要素5325に送信する。管理されるスイッチング要素5320及び5325のためのCPCPデータは、フローエントリの形態をしている。管理されるスイッチング要素5320及び5325は、次に、フローエントリに基づいて、パケットの転送及びルーティングを実行する。米国特許出願第13/177,533号に記載のように、LCPデータの、LFPデータへ、及び次にCPCPデータへのこの変換は、nLogエンジンを使用することによって実行される。
【0492】
図53は、UPCPデータから2つの異なる管理されるスイッチング要素のためのCPCPデータを生成する2つの物理コントローラを示しているが、当業者は、他の実施形態では、物理コントローラが、UPCPデータを各スイッチング要素のシャーシコントローラに単に中継するように機能し、シャーシコントローラが、そのスイッチング要素のCPCPデータを生成し、このデータをそのスイッチング要素にプッシュすることを理解するであろう。
【0493】
図54は、例示的なアーキテクチャ5400及びユーザインタフェース5405を示す。具体的には、この図は、ユーザが、論理スイッチ及びルータを希望通りに構成するために、コントローラアプリケーションに送信することを示す。この図は、4つのステージ5406〜5409のユーザインタフェース(UI)5405を、図の左半分に示す。この図は、また、論理ルータ5425並びに2つの論理スイッチ5420及び5430を含むアーキテクチャ5400を、図の右半分に示す。
【0494】
UI5405は、例示的なインタフェースであり、このインタフェースを介して、ユーザは、論理スイッチ及びルータを管理するために、入力を入力し、コントローラインスタンスから応答を受信することができる。いくつかの実施形態では、UI5405は、ウェブアプリケーションとして提供され、したがって、ウェブブラウザで開くことができる。代わりに、又は結合的に、いくつかの実施形態の制御アプリケーションは、ユーザが、コマンドラインインタフェースを介して入力を入力及び受信することを可能にすることができる。
【0495】
図の左半分は、ユーザが、コントローラインスタンスが管理するネットワークの管理されるスイッチング要素のセットによって実装されるべき論理スイッチ及び論理ルータ内の論理ポートをセットアップするために、入力を入力することを示す。具体的には、ユーザは、(ステージ5406で)ポート及びネットマスク「255.255.255.0」を関連付けるために、ポートの識別子「RP1」、及び「1.1.1.253」のIPアドレスをを供給することによって、論理ルータLRに論理ポートを追加する。ユーザは、また、(5407で)ポート識別子「SP1」を供給し、ポートが論理ルータの論理ポートRP1に接続されるべきであることを指定することによって、論理スイッチLS1に論理ポートを追加する。ユーザは、また、(ステージ5408で)ポート及びネットマスク「255.255.255.0」を関連付けるために、ポートの識別子「RP2」、及び「1.1.2.253」のIPアドレスを供給することによって、論理ルータLRに別の論理ポートを追加する。ユーザは、また、(5409で)ポート識別子「SP2」を供給し、ポートが論理ルータの論理ポートRP2に接続されるべきであることを指定することによって、論理スイッチLS2に別の論理ポートを追加する。図の右半分は、論理ルータ及び論理スイッチに追加されたポートを示す。
【0496】
図55〜62は、制御アプリケーション5305の例示的な動作を概念的に示す。これらの図は、制御アプリケーション5305が、管理されるスイッチング要素に供給されるフローエントリを生成するために使用し、変更するテーブルのセットを示す。具体的には、管理されるスイッチング要素(図示せず)は、
図54を参照して上述した入力に基づいて、論理スイッチ5420及び5430並びに論理ルータ5400に追加される論理ポートを実装する。この図は、制御アプリケーション5305、仮想化アプリケーション5310、及び物理コントローラ5330を示す。
【0497】
図示のような制御アプリケーション5305は、入力変換5505、入力テーブル5510、ルールエンジン5515、出力テーブル5520、エクスポータ5525を含む。
【0498】
入力変換5505は、いくつかの実施形態では、管理ツールと対話し、管理ツールにより、ユーザは、論理ネットワーク状態を見る及び/又は変更することができる。異なる実施形態は、異なる管理ツールをユーザに提供する。例えば、入力変換5505は、いくつかの実施形態では、
図54を参照して上述したUI5405のようなグラフィカルツールを提供する。グラフィカルツールの代わりに、又は結合的に、他の実施形態は、ユーザに、コマンドラインツール、又は任意の他のタイプの管理ツールを提供することができる。入力変換5505は、管理ツールを介してユーザからの入力を受信し、1つ又は複数の入力テーブル5510の作成、ポピュレート、及び/又は変更するために、受信した入力を処理する。
【0499】
入力テーブル5510は、参照により本明細書に組み込まれる米国特許出願第13/288,908号に記載の入力テーブルと同様である。いくつかの場合の入力テーブルは、ユーザが管理している論理スイッチ及び論理ルータの状態を表現する。例えば、入力テーブル5530は、論理スイッチの論理ポートに関連するIPアドレスをクラスレスインタードメインルーティング(CIDR)フォーマットで格納するテーブルである。制御アプリケーションは、制御アプリケーションが管理ツールを介して受信する入力で、又は、制御アプリケーションが検出する任意のネットワークイベントで、入力テーブルを変更する。制御アプリケーション5305が入力テーブルを変更した後、制御アプリケーション5305は、変更した入力テーブルを処理するため、ルールエンジン5515を使用する。
【0500】
異なる実施形態のルールエンジン5515は、出力テーブル5520の異なるセットをポピュレート及び/又は変更するために、入力テーブルの異なるセットに、データベース動作の異なる組み合わせを実行する。例えば、ルールエンジン5515は、論理ルータの論理ポートが作成されたことを示すために入力テーブル5530が変更されると、MACアドレスを論理ルータの論理ポートと関連付けるために、テーブル5535を変更する。出力テーブル5565は、ルーティング/転送されているネットワークデータに実行するために、論理スイッチ及び論理ルータを実装する管理されるスイッチング要素のためのアクションを指定するフローエントリを含む。テーブル5530〜5560に加えて、ルールエンジン5515は、ルールエンジン5515のテーブルマッピング動作を容易にするために、他の入力テーブル、コンテンツテーブル、及び機能テーブルを使用することができる。
【0501】
出力テーブルは、ルールエンジン5515に対する入力テーブルとして使用されてもよい。すなわち、出力テーブル内の変更は、ルールエンジン5515によって実行されるべき別のテーブルマッピング動作をトリガすることができる。したがって、テーブル5530〜5560内のエントリは、テーブルマッピング動作を実行することから生じてよく、テーブルマッピング動作の別のセットのためのルールエンジン5515に入力を提供することもできる。このように、入力テーブル及び出力テーブルは、この図では、テーブルが入力及び/又は出力テーブルであることを示すために、単一の点線ボックスで示されている。
【0502】
テーブル5535は、論理ルータの論理ポート及び関連するMACアドレスのペアリングを格納するためのものである。テーブル5540は、パケットをルーティングするときに使用する論理ルータのための論理ルーティングテーブルである。いくつかの実施形態では、テーブル5540は、論理ルータを実装する管理されるスイッチング要素に送信されることになる。テーブル5550は、ネクストホップ識別子、及び論理ルータの論理ポートのIPアドレスを格納するためのものである。テーブル5555は、論理スイッチの論理ポート及び論理ルータの論理ポート間の接続を格納するためのものである。エクスポータ5525は、出力テーブル5520内の変更された出力テーブルを、仮想化アプリケーション5310に発行又は送信する。
【0503】
図55は、
図54を参照して上述したステージ5406の前のテーブル5530〜5565を示す。テーブル内のエントリは、これらのテーブル内にいくつかの既存のエントリがあることを示すために、点として示される。
【0504】
図56は、ステージ5406の後のテーブル5530〜5565を示す。すなわち、この図は、ユーザが、「LR」として識別される論理ルータ5425に論理ポートを追加するために、ポート及びネットマスク「255.255.255.0」に関連付けるために、論理ポートの識別子「RP1」、「1.1.1.253」のIPアドレスを供給した後の、テーブル5530〜5565を示す。ここで、テーブル5530は、入力変換5505によって新しいエントリで更新される。新しいエントリ(又は、行)5601は、「RP1」として識別される論理ポートが追加され、このポートに関連するIPアドレスが、IPアドレス1.1.1.253、プレフィックス長24、及びネットマスク255.255.255.0によって指定されることを示す。
【0505】
ルールエンジン5515は、テーブル5530へのこの更新を検出し、テーブル5535及び5540を更新するために、テーブルマッピング動作のセットを実行する。
図57は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル5535が、新しい行5701を有することを示し、行5701は、論理ポートRP1が、ここではMACアドレス01:01:01:01:01:01に関連付けられていることを示す。このMACアドレスは、他のテーブル又は機能(図示せず)を使用するテーブルマッピング動作を実行しながら、ルールエンジン5515によって生成される。
【0506】
図57は、テーブル5540が新しい行5702を有することも示し、行5702は、論理ルータ5425のためのルーティングテーブル内のエントリである。論理ルータ5425(論理ルータ5425を実装する管理されるスイッチング要素)は、ルーティング決定を行うために、このテーブル5540をルックアップすることになる。行5702は、論理ポートRP1のネクストホップが、固有の識別子「NH1」を有することを指定する。行5702は、また、ルーティングテーブル内のこの行に割り当てられた優先順位を含む。この優先順位は、ルーティングテーブル内の複数のマッチングする行が存在する場合、ルーティング決定を行うためにどの行が使用されるべきかを判定するために使用される。いくつかの実施形態では、エントリ内の行の優先順位の値は、プレフィックス長プラス基本優先順位値「BP」である。
【0507】
ルールエンジン5515は、テーブル5550を更新するために、テーブル5540に対する更新を検出し、テーブルマッピング動作のセットを実行する。
図58は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル5550が、新しい行5801を有することを示し、行5801は、論理ルータ5425の論理ポートRP1のネクストホップのIPアドレスが、所与のパケットの宛先IPアドレスであることを示す。(この行内の「0」は、ネクストホップのIPアドレスが、論理ルータのRP1を介してルーティングされることになる所与のパケットの宛先であることを意味する。)
【0508】
図59は、
図54を参照して上述したステージ5407の後のテーブル5530〜5560を示す。すなわち、この図は、ユーザが、論理スイッチ5420(LS1)に論理ポートを追加するために、論理ポートの識別子「SP1」を供給し、このポートを、論理ルータ5425の論理ポートRP1にリンクした後の、テーブル5530〜5565を示す。ここで、テーブル5555は、入力変換5505によって2つの新しい行で更新される。新しい行5901は、(論理スイッチ5420の)「SP1」として識別される論理ポートが、(論理ルータ5425の)論理ポートRP1に取り付けられることを示す。また、新しい行5902は、論理ポートRP1が、論理ポートSP1に取り付けられることを示す。このリンクは、上述した論理処理パイプライン200のL2処理及びL3処理部分を接続する。
【0509】
ルールエンジン5515は、テーブル5535を更新するために、テーブル5555に対する更新を検出し、テーブルマッピング動作のセットを実行する。
図60は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル5535が、新しい行6001を有し、新しい行6001は、SP1及びRP1がここではリンクされているため、論理ポートSP1が、ここではMACアドレス01:01:01:01:01:01に関連付けられていることを示す。
【0510】
ルールエンジン5515は、テーブル5560を更新するために、テーブル5555に対する更新を検出し、テーブルマッピング動作のセットを実行する。
図61は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル5550が、4つの新しい行(フローエントリ)6101〜6104を有することを示す。行6101は、その宛先MACアドレス01:01:01:01:01:01であるパケットが、(論理スイッチ5420の)論理ポートSP1に送信されるべきであることを示すフローエントリである。行6102は、論理ポートSP1に搬送されるどのパケットも、論理ポートRP1に送信されるべきであることを示すフローエントリである。行6103は、論理ポートRP1に搬送されるどのパケットも、論理ポートSP1に送信されるべきであることを示すフローエントリである。行6104は、1.1.1.253/24によって指定されるIPアドレスの範囲内のIPアドレスを有するパケットが、L3デーモンに依頼することによって、MACアドレスを要求すべきであることを示すフローエントリである。
【0511】
図62は、上述したステージ5408及び5409の後のテーブルのいくつかに追加された新しい行6201〜6209を示す。説明を簡単にするために、ルールエンジン5515によるテーブル更新の中間の例示は、省略する。
【0512】
新しい行6201は、「RP2」として識別される論理ポートが追加され、このポートに関連するIPアドレスが、IPアドレス1.1.2.253、プレフィックス長24、及びネットマスク255.255.255.0によって指定されることを示す。新しい行6202は、論理ポートRP2が、ここではMACアドレス01:01:01:01:01:02に関連付けられていることを示す。新しい行6203は、論理ポートSP2が、ここではMACアドレス01:01:01:01:01:02に関連付けられていることを示す。新しい行6204は、論理ルータ5430のためのルーティングテーブル内のエントリである。行6204は、論理ポートRP2のネクストホップが、固有の識別子「NH2」を有することを指定する。行6204は、また、ルーティングテーブル内のこの行に割り当てられた優先順位を含む。
【0513】
新しい行6205は、論理ルータ5425の論理ポートRP2のネクストホップのIPアドレスが、所与のパケットの宛先IPアドレスであることを示す。新しい行6206は、(論理スイッチ5430の)「SP2」として識別される論理ポートが、(論理ルータ5425の)論理ポートRP2に取り付けられることを示す。また、新しい行6207は、論理ポートRP2が、論理ポートSP2に取り付けられることを示す。
【0514】
行6208は、その宛先MACアドレス01:01:01:01:01:02のパケットが、(論理スイッチ5430の)論理ポートSP2に送信されるべきであることを示すフローエントリである。行6209は、論理ポートSP2に搬送されるどのパケットも、論理ポートRP2に送信されるべきであることを示すフローエントリである。行6210は、論理ポートRP2に搬送されるどのパケットも、論理ポートSP2に送信されるべきであることを示すフローエントリである。行6211は、1.1.2.253/24によって指定されるIPアドレスの範囲内のIPアドレスを有するパケットが、L3デーモンに依頼することによって、MACアドレスを要求すべきであることを示すフローエントリである。
【0515】
図62に示すこれらのフローエントリは、LFPデータである。このLFPデータは、仮想化アプリケーション5310に送信されることになり、仮想化アプリケーション5310は、LFPデータからUPCPデータを生成することになる。次に、UPCPデータは、物理コントローラ5330に送信されることになり、物理コントローラ5330は、管理されるスイッチング要素5325(
図62には示さず)のためにUPCPデータをカスタマイズすることになる。最後に、物理コントローラ5330は、CPCPデータを、管理されるスイッチング要素5325に送信することになる。
【0516】
図63は、制御アプリケーション5305が、
図55〜62を参照して上述したテーブルマッピング動作を実行することによって論理データを生成した後のアーキテクチャ5400を示す。
図63に示すように、ポートRP1及びRP2は、それぞれ、1.1.1.253/24及び1.1.2.253/24によって指定されるIPアドレスの範囲と関連付けられる。また、ポートSP1及びSP2は、それぞれ、MACアドレス01:01:01:01:01:01及び01:01:01:01:01:02と関連付けられる。この図は、また、論理スイッチ5420に結合されたVM1、及び、論理スイッチ5430に結合されたVM2を示す。
【0517】
ここで、論理スイッチ5420及び5430、論理ルータ5425、並びにVM及び2の例示的な動作を説明する。この例は、論理ルータ5425並びに論理スイッチ5420及び5430を実装する管理されるスイッチング要素のセットが、フローエントリ6101〜6104及び6208〜6211のすべてを有することを仮定する。この例は、また、制御アプリケーション5305によって生成される論理データが、仮想化アプリケーション5310によって物理制御プレーンデータに変換されること、及び、物理制御プレーンデータが、管理されるスイッチング要素によって受信され、物理転送データに変換されることを仮定する。
【0518】
VM1が、パケットをVM4に送信するつもりである場合、VM1は、最初に、論理ルータ5425のMACアドレスを解決するために、ARP要求を同時通信する。このARPパケットは、この例では1.1.1.10であるVM1の送信元IPアドレスと、この例では1.1.2.10であるVM4の宛先IPアドレスとを有する。この同時通信パケットは、同時通信MACアドレスff:ff:ff:ff:ff:ffを宛先MACアドレスとして有し、パケットのターゲットプロトコルアドレスは、1.1.1.253である。この同時通信パケット(ARP要求)は、論理ポートSP1を含む論理スイッチ5320のすべてのポートに複製される。次に、フローエントリ6102に基づいて、このパケットは、論理ルータ5325のRP1に送信される。パケットは、次に、宛先IPアドレス1.1.2.10が、1.1.2.253/24によって指定されるIPアドレスの範囲内であるため(すなわち、ターゲットプロトコルアドレスが、1.1.1.253であるため)、フローエントリ6104にしたがって、L3デーモン(図示せず)に送信される。L3デーモンは、宛先IPアドレスを、RP1のMACアドレスであるMACアドレス01:01:01:01:01:01に解決する。L3デーモンは、このMACアドレスを有するARP応答を、VM1に送り返す。
【0519】
VM1は、次に、パケットをVM4に送信する。このパケットは、VM1のMACアドレスを送信元MACアドレスとして有し、RP1のMACアドレス(01:01:01:01:01:01)を宛先MACアドレスとして有し、VM1のIPアドレス(1.1.1.10)を送信元IPアドレスとして有し、VM4のIPアドレス(1.1.2.10)を宛先IPアドレスとして有する。
【0520】
論理スイッチ5420は、次に、01:01:01:01:01:01の宛先MACアドレスを有するパケットが、SP1に送信されるべきであることを示すフローエントリ6101にしたがって、このパケットをSP1に転送する。パケットがSP1に達すると、パケットは、次に、SP1に搬送されるどのパケットもRP1に送信されるべきであることを示すフローエントリ6102にしたがって、RP1に送信される。
【0521】
このパケットは、次に、論理ルータ5425の入口ACLステージに送られ、入口ACLステージは、この例では、パケットがRP1を介して進むことを可能にする。次に、論理ルータ5425は、エントリ6204にしたがって、パケットをネクストホップのNH2にルーティングする。このルーティング決定は、次に、(論理ルータ5425を実装する管理されるスイッチング要素の)レジスタにロードされる。このパケットは、次に、ネクストホップルックアッププロセスに供給され、ネクストホップルックアッププロセスは、ネクストホップのIPアドレス、及びパケットが送信されるべきポートを決定するために、ネクストホップのID、NH2を使用する。この例では、ネクストホップは、行6205に基づいて決定され、行6205は、NH2のアドレスがパケットの宛先IPアドレスであり、パケットが送信されるべきポートがRP2であることを示す。
【0522】
パケットは、次に、宛先IPアドレス(1.1.2.10)をVM4のMACアドレスに解決するために、MACアドレス解決プロセスに供給される。L3デーモンは、MACアドレスを解決し、新しいフローエントリを(例えば、フローテンプレートに解決されたMACアドレスを記入することによって)、論理ルータ5425を実装する管理されるスイッチング要素内に戻す。この新しいフローにしたがって、パケットは、ここでは、VM4のMACアドレスを宛先MACアドレスとして有し、論理ルータ5425のRP2のMACアドレス(01:01:01:01:01:02)を有する。
【0523】
パケットは、次に、論理ルータ5425の出口ACLステージを通過し、出口ACLステージは、この例では、パケットがRP2を通って出ることを可能にする。パケットは、次に、RP2に搬送されるどのパケットもSP2に送信されるべきであることを示すフローエントリ6210にしたがって、SP2に送信される。次に、論理スイッチ5330のためのL2処理は、パケットをVM4に送信することになる。
【0524】
IX.管理されるエッジスイッチング要素の実装に対する変形例
すべてのLDPS処理は、管理されるエッジスイッチング要素にプッシュされるが、いくつかの実施形態では、実際の取り付けられた物理ポート統合に対するインタフェースのみが、相互運用性の問題に対処する。これらのインタフェースは、いくつかの実施形態では、ホストIP/イーサネット(登録商標)スタックのための標準的なL2/L3インタフェースを実装する。論理スイッチ及び論理ルータ間のインタフェースは、仮想化アプリケーションの内部のままであり、したがって、情報を交換するために、今日のルータとまったく同じプロトコルを実装する必要はない。
【0525】
仮想化アプリケーションは、いくつかの実施形態では、最初のホップのルータのIPアドレスに送信されたARP要求に応答する責任を有する。論理ルータのMAC/IPアドレスバインディングは、静的であるため、これは、スケーリング問題をもたらさない。最後のホップの論理ルータは、いくつかの実施形態では、同様の厳格な要件をもたず、取り付けられたポートのMAC及びIPアドレス(複数可)が、仮想化アプリケーションに知らされている限り、エンドポイントにさらされておらず、論理パイプラインの実行によってのみ使用される内部ルックアップサービスに、これらのアドレスを公開することができる。取り付けられたポートにARP要求を送信する絶対の必要はない。
【0526】
いくつかの実施形態は、要求されたL3機能を、Open vSwitchの次に動作する外部デーモンとして実装する。いくつかの実施形態では、デーモンは、以下の動作を担当する。
・ARP要求に対する応答。いくつかの実施形態では、Open vSwitchは、ARP要求をデーモンに供給し、デーモンは、応答を作成する。代わりに、いくつかの実施形態は、管理されるエッジスイッチング要素内の追加のフローエントリを作成するために、フローテンプレートを使用する。フローテンプレートは、受信したパケットに基づいて動的に一連のフローエントリを生成するための、ルールのセットの使用である。いくつかのこのような実施形態では、応答は、Open vSwitch自体によって処理される。
・フロー状態ごとの任意のステートフル(NAT、ACL、負荷分散)の確立。再び、フローテンプレートが、十分に柔軟であれば、Open vSwitchが処理するために、より多くを移動させることができる。
・分散ルックアップの開始。その論理パイプラインの配列を介してトラフィックを供給する場合、必要に応じて、分散ルックアップ(例えば、ARP、学習)が、マッピングサービスに開始される。これは、いくつかの実施形態では、IPパケットのキューイングを伴うことになる。
【0527】
外部の物理ネットワークと統合するときにARP要求を生成するために、いくつかの実施形態は、パケットは、オープンフローのローカル出力ポートを使用することによって、ローカルIPスタックへと破棄されてよいと仮定する。
【0528】
マッピングサービス自体は、いくつかの実施形態では、Open vSwitchのデータパス機能に頼ることによって実装され、管理されるエッジスイッチング要素のデーモンは、特別な「公開」パケットをマッピングサービスノードに送信することによって、MAC及びIPアドレスバインディングを公開し、マッピングサービスノードは、次に、フローテンプレートを使用してフローエントリを作成することになる。管理されるエッジスイッチング要素からの「クエリ」パケットは、次に、これらのFIBエントリによって応答されることになり、これらのFIBエントリは、クエリパケットを、十分に応答パケットになるように変更した後、パケットを特別なIN_PORTに送信することになる。
【0529】
X.論理スイッチング環境
上記及び下記のいくつかの実施形態は、論理転送空間(すなわち、論理制御及び転送プレーン)を物理転送空間(すなわち、物理制御及び転送プレーン)から完全に分離するネットワーク制御システムを提供する。これらの制御システムは、論理転送空間データを物理転送空間データにマッピングするために、マッピングエンジンを使用することによって、このような分離を達成する。論理空間を物理空間から完全に分離することによって、これらの実施形態の制御システムは、物理転送空間に変更が行われている(例えば、仮想マシンが移行される、物理スイッチ又はルータが追加される、など)間、論理転送要素の論理ビューが、変化しないままでいることを可能にする。
【0530】
より具体的には、いくつかの実施形態の制御システムは、ネットワークを管理し、ネットワークを介して、複数の異なるユーザ(すなわち、複数のホストコンピュータ、及び、複数の異なる関連する又は関連しないユーザによって共有される管理される転送要素を有するプライベート又はパブリックホスト環境内の複数の異なるユーザ)に属するマシン(例えば、仮想マシン)は、別々のLDPセットのためのデータパケットを交換することができる。すなわち、特定のユーザに属するマシンは、そのユーザのためのLDPSを介して、同じユーザに属する他のマシンとデータを交換することができ、異なるユーザに属するマシンは、同じ物理的な管理されるネットワーク上に実装された異なるLDPSを介して、相互にデータを交換することができる。いくつかの実施形態では、LDPS(論理転送要素(例えば、論理スイッチ、論理ルータ)、又は、いくつかの場合では、論理ネットワークとも呼ばれる)は、いくつかの論理ポートを相互接続するために、スイッチングファブリックを提供する論理構成物であり、論理ポートには、特定のユーザの(物理的又は仮想的)マシンを取り付けることができる。
【0531】
いくつかの実施形態では、このようなLDPセット及び論理ポートの作成及び使用は、素人目には、仮想ローカルエリアネットワーク(VLAN)の使用と同様に見えるかもしれない、論理サービスモデルを提供する。しかしながら、ネットワークをセグメント化するためのVLANサービスモデルとは、様々な重要な違いが存在する。本明細書に記載の論理サービスモデルでは、物理ネットワークは、ネットワークのユーザの論理ビューには何の影響もなく、変更することができる(例えば、管理されるスイッチング要素の追加、又は、ある場所から別の場所へのVMの移動は、論理転送要素のユーザのビューに影響を与えない)。当業者は、以下に記載の違いのすべてが、特定の管理されるネットワークには当てはまらない可能性があることを理解するであろう。いくつかの管理されるネットワークは、このセクションに記載の特徴のすべてを含むことができ、他の管理されるネットワークは、これらの特徴の異なるサブセットを含むことになる。
【0532】
いくつかの実施形態の管理されるネットワーク内の管理される転送要素が、パケットが属するLDPSを識別することができるように、ネットワークコントローラクラスタは、LDPセットを定義するユーザ入力にしたがって、物理的な管理される転送要素のためのフローエントリを自動化的に生成する。特定のLDPS上のマシンからのパケットが、管理されるネットワーク上に送信されると、管理される転送要素は、パケットの論理コンテキスト(すなわち、パケットが属するLDPS、並びに、パケットが向かう論理ポート)を識別するために、これらのフローエントリを使用し、論理コンテキストにしたがってパケットを転送する。
【0533】
いくつかの実施形態では、パケットは、論理コンテキストIDの何の並べ替えもなしに、その送信元マシン(及び、その送信元マシンのネットワークインタフェース)を出る。代わりに、パケットは、送信元及び宛先マシンのアドレス(例えば、MACアドレス、IPアドレス、など)のみを含む。論理コンテキスト情報のすべては、ネットワークの管理される転送要素で、追加も除去もされる。第1の管理される転送要素が、送信元マシンから直接パケットを受信すると、転送要素は、パケットの論理コンテキストを識別し、この情報をパケットに付加するために、パケット内の情報、並びに、パケットを受信した物理ポートを使用する。同様に、宛先マシンの前の最後の管理される転送要素は、パケットをその宛先に転送する前に、論理コンテキストを除去する。加えて、パケットに付加された論理コンテキストは、いくつかの実施形態では、途中の中間の管理される転送要素によって変更されてよい。このように、エンドマシン(及び、エンドマシンのネットワークインタフェース)は、パケットが送信される論理ネットワークを意識する必要はない。結果として、エンドマシン及びそのネットワークインタフェースは、論理ネットワークに適応するように構成される必要はない。代わりに、ネットワークコントローラは、管理される転送要素のみを構成する。加えて、転送処理の大部分は、エッジ転送要素で実行されるため、ネットワークのための転送リソースの全体は、より多くのマシンが追加されるにつれて(各々の物理エッジ転送要素は、そのように多くのマシンが取り付けられておくことができるだけであるため)、自動的にスケーリングすることになる。
【0534】
パケットに付加された(例えば、プリペンドされた)論理コンテキストでは、いくつかの実施形態は、論理出口ポートを含むだけである。すなわち、パケットをカプセル化する論理コンテキストは、明示的なユーザIDを含まない。代わりに、論理コンテキストは、最初のホップで行われた論理転送決定(すなわち、宛先論理ポートについての決定)を取り込む。これから、ユーザID(すなわち、パケットが属するLDPS)を、より後の転送要素で、論理出口ポートを調べることによって(論理出口ポートが、特定のLDPSの一部であるとして)、非明示的に決定することができる。これは、結果として、管理される転送要素が、ID内の情報の複数の部分を決定するためにコンテキストIDをスライスする必要がないことを意味する、フラットなコンテキスト識別子をもたらす。
【0535】
いくつかの実施形態では、出口ポートは、32ビットIDである。しかしながら、いくつかの実施形態での論理コンテキストを処理する管理される転送要素のためのソフトウェア転送要素の使用は、論理コンテキストのサイズを(例えば、64ビット以上に)変更するために、システムがいつでも変更されることを可能にするが、ハードウェア転送要素は、コンテキスト識別子のための特定のビット数を使用することに、より制約される傾向がある。加えて、本明細書に記載のような論理コンテキスト識別子を使用することは、論理データ(すなわち、出口コンテキストID)及び送信元/宛先アドレスデータ(すなわち、MACアドレス)間の明示的な分離を結果としてもたらす。送信元及び宛先アドレスは、論理入口及び出口ポートにマッピングされるが、情報は、パケット内に別々に格納される。したがって、ネットワーク内の管理されるスイッチング要素では、パケットを、物理アドレス情報へのいかなる追加のルックアップもなしに、パケットをカプセル化する論理データ(すなわち、論理出口情報)に完全に基づいて転送することができる。
【0536】
いくつかの実施形態では、管理される転送要素内のパケット処理は、パケットをディスパッチポートに繰り返し送信し、パケットを効率的にスイッチング要素に再提出することを伴う。いくつかの実施形態では、ソフトウェアスイッチング要素を使用することは、このようなパケットの再提出を実行する能力を提供する。ハードウェア転送要素は、一般に、(部分的に、処理を実行するためのASICの使用により)固定されたパイプラインを伴うが、いくつかの実施形態のソフトウェア転送要素は、再提出を実行するまでの遅延はたいしたことがないため、パケット処理パイプラインを必要な限り拡張することができる。
【0537】
加えて、いくつかの実施形態は、関連するパケットの単一のセット(例えば、単一のTCP/UDPフロー)内の後続のパケットのための複数のルックアップの最適化を可能にする。最初のパケットが到着すると、管理される転送要素は、ルックアップのすべてを実行し、パケットを完全に処理するために再提出する。転送要素は、次に、決定の結果(例えば、パケットへの出口コンテキストの追加、及び、特定のトンネルを介する転送要素の特定のポートからのネクストホップの転送決定)を、すべての他の関連するパケットで共有されることになるパケットの固有の識別子(すなわち、TCP/UDPフローの固有の識別子)と共にキャッシュする。いくつかの実施形態は、キャッシュされた結果を、追加の最適化のための転送要素のカーネルにプッシュする。固有の識別子を共有する追加のパケット(すなわち、同じフロー内の追加のパケット)のために、転送要素は、パケットに実行するアクションのすべてを特定する単一のキャッシュルックアップを使用することができる。パケットのフローが完了したら(例えば、識別子に一致するパケットがない特定の長さの時間後)、いくつかの実施形態では、転送要素は、キャッシュをフラッシュする。この複数ルックアップの使用は、いくつかの実施形態では、物理空間(例えば、物理ポートのMACアドレス)から論理空間(例えば、論理スイッチの論理ポートに対する論理転送決定)へ、次に、物理空間(例えば、スイッチング要素の物理出力ポートへの論理出口コンテキストのマッピング)へと戻るパケットのマッピングを伴う。
【0538】
物理及び論理アドレスの明示的な分離を提供するためにカプセル化を使用するこのような論理ネットワークは、VLANのようなネットワーク仮想化に対する他のアプローチを上回る重要な利点を提供する。例えば、タグ付け技術(例えば、VLAN)は、タグに関連付けられたルールのみをパケットに適用するために、転送テーブルをセグメント化するために、パケットに配置されたタグを使用する。これは、新しい空間を導入するのではなく、既存のアドレス空間をセグメント化するだけである。結果として、アドレスは、仮想及び物理領域の両方の中のエンティティに使用されるため、それらは、物理転送テーブルにさらされなければならない。このように、階層的なアドレスマッピングからくる集約の特性を利用することができない。加えて、タグ付けによって新しいアドレス空間は導入されないため、仮想コンテキストのすべては、同じアドレス指定モデルを使用しなければならず、仮想アドレス空間は、物理アドレス空間と同じであるように制限される。タグ付け技術のさらなる欠点は、アドレス再マッピングによる移動性の利点を得ることができないことである。
【0539】
XI.電子システム
図64は、本発明のいくつかの実施形態を実現する電子システム6400を概念的に示す。電子システム6400は、上述した制御、仮想化、又はオペレーティングシステムアプリケーションのいずれかを実行するために使用されてよい。電子システム6400は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータ、など)、電話、PDA、又は任意の他の種類の電子デバイスであってよい。このような電子システムは、様々なタイプのコンピュータ可読媒体、及び、様々な他のタイプのコンピュータ可読媒体のためのインタフェースを含む。電子システム6400は、バス6405、処理ユニット(複数可)6410、システムメモリ6425、読み取り専用メモリ6430、永久記憶デバイス6435、入力デバイス6440、及び出力デバイス6445を含む。
【0540】
バス6405は、すべてのシステム、周辺機器、及びチップセットバスを集合的に表し、チップセットバスは、電子システム6400の多数の内部デバイスを通信可能に接続する。例えば、バス6405は、読み取り専用メモリ6430を有する処理ユニット(複数可)6410、システムメモリ6425、及び永久記憶デバイス6435を通信可能に接続する。
【0541】
これらの様々なメモリユニットから、処理ユニット(複数可)6410は、本発明の処理を実行するために、実行する命令、及び処理するデータを取り出す。処理ユニット(複数可)は、異なる実施形態では、単一のプロセッサ又はマルチコアプロセッサであってよい。
【0542】
読み取り専用メモリ(ROM)6430は、処理ユニット(複数可)6410、及び電子システムの他のモジュールによって必要とされる静的データ、及び命令を格納する。他方では、永久記憶デバイス6435は、読み書きメモリデバイスである。このデバイスは、電子システム6400がオフの場合でも、命令及びデータを格納する、不揮発性メモリユニットである。本発明のいくつかの実施形態は、(磁気又は光ディスク、及びその対応ディスクドライブのような)大容量記憶デバイスを、永久記憶デバイス6435として使用する。
【0543】
他の実施形態は、(フロッピー(登録商標)ディスク、フラッシュドライブ、などのような)リムーバブル記憶デバイスを、永久記憶デバイスとして使用する。永久記憶デバイス6435と同様に、システムメモリ6425は、読み書きメモリデバイスである。しかしながら、しかしながら、永久記憶デバイス6435とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み書きメモリである。システムメモリは、プロセッサが実行時に必要とする命令の一部及びデータを格納する。いくつかの実施形態では、本発明のプロセスは、システムメモリ6425、永久記憶デバイス6435、及び/又は読み取り専用メモリ6430に格納される。これらの様々なメモリユニットから、処理ユニット(複数可)6410は、いくつかの実施形態のプロセスを実行するために、実行する命令及び処理するデータを取り出す。
【0544】
バス6405は、入力及び出力デバイス6440及び6445にも接続する。入力デバイスは、ユーザが、電子システムに情報を通信し、コマンドを選択することを可能にする。入力デバイス6440は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス6445は、電子システムが生成した画像を表示する。出力デバイスは、プリンタ、及び、陰極線管(CRT)又は液晶ディスプレイ(LCD)のような表示デバイスを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【0545】
最後に、
図64に示すように、バス6405は、また、電子システム6400を、ネットワークアダプタ(図示せず)を介してネットワーク6465に結合する。このように、コンピュータは、(ローカルエリアネットワーク(「LAN」)のような)コンピュータのネットワーク、ワイドエリアネットワーク(「WAN」)、若しくはインターネット、又は、インターネットのようなネットワークのネットワークの一部であってよい。電子システム6400のいずれか又はすべての構成要素は、本発明と共に使用されてよい。
【0546】
いくつかの実施形態は、コンピュータプログラム命令を、機械可読又はコンピュータ可読媒体(代わりに、コンピュータ可読記憶媒体、機械可読媒体、又は機械可読記憶媒体とも呼ばれる)に格納する、マイクロプロセッサ、ストレージ、及びメモリのような電子構成要素を含む。このようなコンピュータ可読媒体のいくつかの例は、RAM、ROM、読み取り専用コンパクトディスク(CD−ROM)、追記型コンパクトディスク(CD−R)、書き換え可能コンパクトディスク(CD−RW)、読み取り専用デジタル多用途ディスク(例えば、DVD−ROM、二層DVD−ROM)、様々な追記型/書き換え可能DVD(例えば、DVD−RAM、DVD−RW、DVD+RW、など)、フラッシュメモリ(例えば、SDカード、mini−SDカード、micro−SDカード、など)、磁気及び/又は固体ハードドライブ、読み取り専用及び記録可能ブルーレイディスク(登録商標)、超高密度光ディスク、任意の他の光又は磁気媒体、並びにフロッピー(登録商標)ディスクを含む。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能で、様々な動作を実行する命令のセットを含むコンピュータプログラムを格納することができる。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されるような機械コード、及び、インタプリタを使用するコンピュータ、電子構成要素、又はマイクロプロセッサによって実行される、より高いレベルのコードを含むファイルを含む。
【0547】
上記の説明は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサに言及しているが、いくつかの実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)のような、1つ又は複数の集積回路によって実行される。いくつかの実施形態では、このような集積回路は、回路自体に格納された命令を実行する。
【0548】
本明細書で使用される「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」という用語は、すべて、電子的又は他の技術的デバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書の目的のために、表示又は表示するという用語は、電子デバイス上での表示を意味する。本明細書で使用される「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「機械可読媒体」という用語は、コンピュータによって読み取り可能な形式で情報を格納する有形の物理的物体に完全に限定される。これらの用語は、いかなる無線信号、有線のダウンロード信号、及びいかなる他の一時的な信号も除外する。
【0549】
本発明を、多数の特定の詳細を参照して説明してきたが、当業者は、本発明が、本発明の要旨から逸脱することなく、他の特定な形態で具体化されてよいことを認識するであろう。加えて、(
図14、16、32、35、49、51、及び52を含む)多数の図面は、プロセスを概念的に示す。これらのプロセスの特定の動作は、図示及び説明された正確な順序で実行されなくてよい。特定の動作は、ひと続きの動作で実行されなくてよく、異なる特定の動作が、異なる実施形態で実施されてよい。さらに、プロセスは、いくつかのサブプロセスを使用して、又は、より大きいマクロプロセスの一部として実施されてよい。したがって、当業者は、本発明が、上記の例示的な詳細によって限定されず、添付の特許請求の範囲によって定義されるべきであることを理解するであろう。