図面 (/)
課題
解決手段
概要
背景
現在の多くの企業は、様々な接続、アプリケーション、及びシステムをサポートする、スイッチ、ハブ、ルータ、サーバ、ワークステーション、及び他のネットワークデバイスを含む、大規模で洗練されたネットワークを有する。仮想マシン移行(migration)、動的ワークロード、マルチテナント機能、並びに、サービス及びセキュリティ構成の顧客に特有の品質を含む、コンピュータネットワーキングの増加する洗練度は、ネットワーク制御のためのより優れたパラダイムを必要とする。ネットワークは、伝統的に、個々の構成要素の低レベルの構成を介して管理されてきた。ネットワーク構成は、しばしば、基礎となるネットワークに依存し、例えば、アクセス制御リスト(「ACL」)エントリによりユーザのアクセスをブロックすることは、ユーザの現在のIPアドレスを知ることを必要とする。より複雑なタスクは、より広範囲なネットワーク知識を必要とし、ゲストユーザのポート80トラフィックに、HTTPプロキシを通過することを強制することは、現在のネットワークトポロジ、及び、各ゲストの位置を知ることを必要とする。このプロセスは、ネットワークスイッチング要素が複数のユーザ間で共有される困難さを増加させるものである。
それに応じて、ソフトウェア定義ネットワーク(SDN)と呼ばれる新しいネットワーク制御パラダイムに向けて成長している動きが存在する。SDNパラダイムでは、ネットワーク内の1つ又は複数のサーバ上で動作するネットワークコントローラが、共有されるネットワークスイッチング要素の転送動作をユーザごとに管理する制御論理を、制御し、維持し、実装する。ネットワーク管理上の決定を行うことは、しばしば、ネットワーク状態の知識を必要とする。管理意思決定を容易にするために、ネットワークコントローラは、ネットワーク状態のビューを作成及び維持し、アプリケーションプログラミングインタフェースを提供し、アプリケーションプログラミングインタフェース上で、管理アプリケーションは、ネットワーク状態のビューにアクセスすることができる。
(データセンタ及び企業ネットワークの両方を含む)大規模なネットワークを維持することの主な目標のいくつかは、スケーラビリティ、モビリティ、及びマルチテナント機能である。これらの目標の1つに対処するためにとられた多くのアプローチは、結果として、他の目標の少なくとも1つを妨げた。例えば、L2ドメイン内の仮想マシンのネットワークモビリティを容易に提供することができるが、L2ドメインは、大きなサイズに拡張することができない。さらに、ユーザの分離を維持することは、モビリティを複雑にする。このように、スケーラビリティ、モビリティ、及びマルチテナント機能を満足することができる改善された解決法が必要である。
概要
第1の論理ドメイン内にある送信元マシンと、第2の論理ドメイン内にある宛先マシンとの間で、パケットを論理的にルーティングする新規の方法を提供する。方法は、管理されるスイッチング要素を、第2のレベルの管理されるスイッチング要素として構成する。方法は、第2のレベルの管理されるスイッチング要素を含むホスト内のルータを構成する。方法は、第2のレベルの管理されるスイッチング要素とルータを通信可能に結合する。方法は、ルータが、第2の論理ドメインにアドレスされたパケットを第1の論理ドメインから受信すると、ルータにパケットをルーティングさせる。
目的
例えば、L2ドメイン内の仮想マシンのネットワークモビリティを容易に提供する
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
(分野番号表示ON)※整理標準化データをもとに当社作成
請求項1
論理的にパケットをルーティングする方法であって、第1の論理L2ドメインにおいてパケットを転送する第1の論理転送要素を実装するように、管理されるスイッチング要素の第1のセットを構成する工程と、第2の論理L2ドメインにおいてパケットを転送する第2の論理転送要素を実装するように、管理されるスイッチング要素の第2のセットを構成する工程と、を含み、少なくとも特定の管理されるスイッチング要素が、管理されるスイッチング要素の前記第1のセットと前記第2のセットとの双方に含まれており、前記方法はさらに、前記特定の管理されるスイッチング要素が構成されるホスト内にルータを構成する工程を含み、前記ルータは、論理L3ドメインにおいて、前記第1の論理L2ドメインと前記第2の論理L2ドメインとの間でパケットを転送することを特徴とする方法。
請求項2
前記ホスト内に前記ルータを構成する工程は、前記ホストの名前空間内に前記ルータを構成する工程を含むことを特徴とする、請求項1に記載の方法。
請求項3
請求項4
前記特定の管理されるスイッチング要素と、管理されるスイッチング要素の前記第1のセットに含まれる管理されるスイッチング要素と、の間のトンネルを確立するように、前記特定の管理されるスイッチング要素を構成する工程をさらに含むことを特徴とする、請求項1に記載の方法。
請求項5
前記特定の管理されるスイッチング要素が前記トンネルを確立するように構成されている前記管理されるスイッチング要素は、仮想マシンのセットを伴う他のホストで実行されるソフトウェアであることを特徴とする、請求項4に記載の方法。
請求項6
ルーティングするようにネットワークトラフィックを管理するホストとして構成されたコンピュータであって、処理ユニットのセットと、前記処理ユニットのセットのうちの少なくとも1つの処理ユニットによって実行されるソフトウェアルータと、前記処理ユニットのセットのうちの少なくとも1つの処理ユニットによって実行されるソフトウェアスイッチング要素と、を備え、前記ソフトウェアスイッチング要素は、パケットの送信元及び宛先と直接パケットを交換する複数のエッジスイッチング要素と通信可能に結合され、前記ソフトウェアスイッチング要素は、パケットの送信元及び宛先と直接パケットを交換しない非エッジスイッチング要素であり、前記ソフトウェアスイッチング要素は、前記エッジスイッチング要素と前記ソフトウェアルータとの間でのパケット転送を容易にするように構成されたテーブルを有することを特徴とするコンピュータ。
請求項7
前記コンピュータの前記ソフトウェアスイッチング要素は、トンネルを介して、前記エッジスイッチング要素のうちの少なくとも1つと通信可能に結合されていることを特徴とする、請求項6に記載のコンピュータ。
請求項8
前記エッジスイッチング要素のうちの少なくとも2以上は、他のホストに構成された他のソフトウェアスイッチング要素であることを特徴とする、請求項6に記載のコンピュータ。
請求項9
前記ソフトウェアルータは第1のソフトウェアルータであり、前記コンピュータはさらに、前記ソフトウェアスイッチング要素と通信可能に結合された追加のエッジスイッチング要素のための追加のルーティングリソースを提供する第2のソフトウェアルータを備えることを特徴とする、請求項6に記載のコンピュータ。
請求項10
前記第1のソフトウェアルータと前記第2のソフトウェアルータとの間でルーティングされるトラフィックは、前記コンピュータから出る必要はないことを特徴とする、請求項9に記載のコンピュータ。
請求項11
請求項12
論理的にパケットをルーティングするようにホストを構成するために、少なくとも1つの処理ユニットによって実行されるプログラムを格納する機械読み取り可能な媒体であって、前記プログラムは、第1の論理L2ドメインにおいてパケットを転送する第1の論理転送要素を部分的に実装するように、第1の管理されるスイッチング要素を構成し、第2の論理L2ドメインにおいてパケットを転送する第2の論理転送要素を部分的に実装するように、第2の管理されるスイッチング要素を構成し、前記第1及び第2の論理転送要素を部分的に実装するように、特定のホストに第3の管理されるスイッチング要素を構成し、論理L3ドメインにおいて前記第1の論理ドメインと前記第2の論理L2ドメインとの間で交換されるパケットを転送するように、前記特定のホストにルータを構成するための命令セットを備えることを特徴とする、機械読み取り可能な媒体。
請求項13
前記ホストに前記ルータを構成するための命令セットは、前記ホストの名前空間に前記ルータを構成するための命令セットを備えることを特徴とする、請求項12に記載の機械読み取り可能な媒体。
請求項14
前記プログラムはさらに、前記第3の管理されるスイッチング要素と前記第1の管理されるスイッチング要素との間にトンネルを確立するように前記第3の管理されるスイッチング要素を構成するための命令説とを備えることを特徴とする、請求項12に記載の機械読み取り可能な媒体。
請求項15
ルーティングするようにネットワークトラフィックを管理するホストとして構成されたコンピュータであって、処理ユニットのセットと、前記処理ユニットのセットのうちの少なくとも1つの処理ユニットによって実行されるソフトウェア転送要素とを備え、前記ソフトウェア転送要素は、エッジスイッチング要素間でのパケットのL2及びL3転送を容易とするように前記ソフトウェア転送要素を構成するためのテーブルを有し、前記ソフトウェア転送要素は、複数のトンネルを介して複数のエッジスイッチング要素と通信可能に結合され、前記エッジスイッチング要素はパケットの送信元及び宛先と直接パケットを交換し、前記ソフトウェア転送要素は、パケットの送信元及び宛先と直接パケットを交換しない非エッジスイッチング要素であることを特徴とするコンピュータ。
請求項16
前記エッジスイッチング要素の少なくとも2以上は、他のホストに構成された他のソフトウェアスイッチング要素であることを特徴とする、請求項15に記載のコンピュータ。
請求項17
前記ソフトウェア転送要素は、前記エッジスイッチング要素がL2通信の特定のセットを実行するように構成されていない場合に、前記L2通信の特定のセットを実行することを特徴とする、請求項15に記載のコンピュータ。
請求項18
前記L2通信の特定のセットは広告メッセージ送信を含むことを特徴とする、請求項17に記載のコンピュータ。
請求項19
前記ソフトウェア転送要素及び前記エッジスイッチング要素は同じ論理L2ドメインにあり、前記ソフトウェア転送要素は、前記論理L2ドメインから送出される前記エッジスイッチング要素からのパケットを受け取り、前記コンピュータはさらに、エッジスイッチング要素から前記論理L2ドメインの外の他のデバイスへとパケットを送るための、前記ソフトウェア転送要素のためのポートを備えることを特徴とする、請求項15に記載のコンピュータ。
請求項20
論理L2スイッチング及びL3ルーティングを実行するように第1及び第2の管理された転送要素を構成するために、少なくとも1つの処理ユニットによって実行されるプログラムを格納する機械読み取り可能な媒体であって、前記プログラムは、(i)パケットに対する第1の論理転送要素の論理L2入口処理と、(ii)前記パケットに対する論理ルータの論理L3ルーティング処理と、を実行するように前記第1の管理された転送要素を構成するための、フローエントリの第1のセットを生成し、前記パケットに対する第2の論理転送要素の論理L2出口処理を実行するように前記第2の管理された転送要素を構成するための、フローエントリの第2のセットを生成し、前記第1及び第2の管理された転送要素を構成するために、前記フローエントリの第1及び第2のセットを、前記第1及び第2の管理された転送要素にそれぞれ送信するための命令セットを備え、前記第1の論理転送要素は、ネットワーク要素のセットに接続され、前記ネットワーク要素のセットのうちの少なくとも1つのネットワーク要素は前記第1の管理された転送要素に接続され、前記ネットワーク要素のセットのうちの少なくとも1つのネットワーク要素は第3の管理された転送要素に接続されることを特徴とする機械読み取り可能な媒体。
請求項21
前記フローエントリの第1のセットは、さらに前記第1の管理された転送要素と前記第2の管理された転送要素との間でトンネルを確立するように前記第1の管理された転送要素を構成するためのものであることを特徴とする、請求項20に記載の機械読み取り可能な媒体。
請求項22
前記フローエントリの第2のセットは、さらに、前記第1の管理された転送要素と前記第2の管理された転送要素との間でトンネルを確立するように前記第2の管理された転送要素を構成するためのものであることを特徴とする、請求項20に記載の機械読み取り可能な媒体。
請求項23
前記フローエントリの第1のセットは、さらに、論理L2入口アクセス制御リスト(ACL)動作を実行するように前記第1の管理された転送要素を構成するためのものであることを特徴とする、請求項20に記載の機械読み取り可能な媒体。
請求項24
前記フローエントリの第2のセットは、さらに、論理L2出口アクセス制御リスト(ACL)動作を実行するように前記第2の管理された転送要素を構成するためのものであることを特徴とする、請求項20に記載の機械読み取り可能な媒体。
請求項25
論理L2スイッチング及びL3ルーティングを実行するように第1及び第2の管理された転送要素を構成するために、少なくとも1つの処理ユニットによって実行されるプログラムを格納する機械読み取り可能な媒体であって、前記ブログラムは、(i)物理ドメインから第1の論理L2ドメインへとパケットをマッピングし、(ii)前記第1の論理L2ドメインにおいてパケットを転送する第1の論理転送要素の論理L2入口処理を実行し、(iii)論理L3ドメインにおいてパケットを転送する論理ルータの論理L3ルーティング処理を実行し、及び(iv)第2の論理L2ドメインにおいてパケットを転送する第2の論理転送要素の論理L2出口処理を実行するように、前記第1の管理された転送要素を構成するためのフローエントリの第1のセットを生成し、前記第1の管理される転送要素から受け取ったパケットを、前記第2の論理L2ドメインから前記物理ドメインへとマッピングするように、前記第2の管理される転送要素を構成するためのフローエントリの第2のセットを生成し、前記第1及び第2の管理された転送要素を構成するために、前記フローエントリの第1及び第2のセットを、前記第1及び第2の管理された転送要素にそれぞれ送信するための命令セットを備えることを特徴とする、機械読み取り可能な媒体。
請求項26
前記プログラムはさらに、前記第1の管理される転送要素と前記第2の管理される転送要素との間にトンネルを確立するように、前記第1の管理される転送要素と前記第2の管理される転送要素との一方を構成するための、フローエントリの第3のセットを生成し、前記第1の管理される転送要素と前記第2の管理される転送要素との一方に前記フローエントリの第3のセットを送信するための命令セットを備えることを特徴とする、請求項25に記載の機械読み取り可能な媒体。
請求項27
前記論理L2入口処理は論理L2入口アクセス制御リスト(ACL)動作を含み、前記L2出口処理は論理L2出口ACL動作を含むことを特徴とする、請求項25に記載の機械読み取り可能な媒体。
背景技術
0001
現在の多くの企業は、様々な接続、アプリケーション、及びシステムをサポートする、スイッチ、ハブ、ルータ、サーバ、ワークステーション、及び他のネットワークデバイスを含む、大規模で洗練されたネットワークを有する。仮想マシン移行(migration)、動的ワークロード、マルチテナント機能、並びに、サービス及びセキュリティ構成の顧客に特有の品質を含む、コンピュータネットワーキングの増加する洗練度は、ネットワーク制御のためのより優れたパラダイムを必要とする。ネットワークは、伝統的に、個々の構成要素の低レベルの構成を介して管理されてきた。ネットワーク構成は、しばしば、基礎となるネットワークに依存し、例えば、アクセス制御リスト(「ACL」)エントリによりユーザのアクセスをブロックすることは、ユーザの現在のIPアドレスを知ることを必要とする。より複雑なタスクは、より広範囲なネットワーク知識を必要とし、ゲストユーザのポート80トラフィックに、HTTPプロキシを通過することを強制することは、現在のネットワークトポロジ、及び、各ゲストの位置を知ることを必要とする。このプロセスは、ネットワークスイッチング要素が複数のユーザ間で共有される困難さを増加させるものである。
0002
それに応じて、ソフトウェア定義ネットワーク(SDN)と呼ばれる新しいネットワーク制御パラダイムに向けて成長している動きが存在する。SDNパラダイムでは、ネットワーク内の1つ又は複数のサーバ上で動作するネットワークコントローラが、共有されるネットワークスイッチング要素の転送動作をユーザごとに管理する制御論理を、制御し、維持し、実装する。ネットワーク管理上の決定を行うことは、しばしば、ネットワーク状態の知識を必要とする。管理意思決定を容易にするために、ネットワークコントローラは、ネットワーク状態のビューを作成及び維持し、アプリケーションプログラミングインタフェースを提供し、アプリケーションプログラミングインタフェース上で、管理アプリケーションは、ネットワーク状態のビューにアクセスすることができる。
0003
(データセンタ及び企業ネットワークの両方を含む)大規模なネットワークを維持することの主な目標のいくつかは、スケーラビリティ、モビリティ、及びマルチテナント機能である。これらの目標の1つに対処するためにとられた多くのアプローチは、結果として、他の目標の少なくとも1つを妨げた。例えば、L2ドメイン内の仮想マシンのネットワークモビリティを容易に提供することができるが、L2ドメインは、大きなサイズに拡張することができない。さらに、ユーザの分離を維持することは、モビリティを複雑にする。このように、スケーラビリティ、モビリティ、及びマルチテナント機能を満足することができる改善された解決法が必要である。
0004
いくつかの場合のいくつかの実施形態は、論理ルーティングを、L3ドメイン内で動作する論理データパスセット(LDPS)を実装する論理ルータによってL2ドメイン内で動作する2つ以上の論理データパス(LDP)セットを相互接続する行為としてモデル化する。論理L2ドメインから別のものに横断するパケットは、いくつかの実施形態では、以下の4つのステップをとることになる。これらの4つのステップは、ネットワーク制御システムが実現する論理処理動作に関して以下に説明される。しかしながら、これらの動作は、ネットワーク制御システムによって生成される物理制御プレーンデータに基づいて、ネットワークの管理されるスイッチング要素によって実行されることを理解すべきである。
0005
第1に、パケットは、送信元の論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。パイプラインは、論理ルータの論理ポートに取り付けられた論理ポートに転送されている宛先媒体アクセス制御(MAC)アドレスで終わることになる。
0006
第2に、パケットは、再び、それを論理ルータのL3テーブルパイプラインを介して送信することによって、この論理ルータのL3データパスを介して処理されることになる。論理ルータは、ルーティングを必要とするパケットを受信するだけであるため、物理ルータ内の一般的なL2ルックアップステージは、いくつかの実施形態では、ルータのL3データパス内でスキップされる。
0007
いくつかの実施形態では、L3転送決定は、論理ルータの論理制御プレーンによって供給されるプレフィックス(転送情報ベース(FIB))エントリを使用することになる。いくつかの実施形態では、論理制御プレーンデータを受信し、このデータを、次にネットワーク制御システムに供給される論理転送プレーンデータに変換するために、制御アプリケーションが使用される。L3転送決定のために、いくつかの実施形態は、最長のプレフィックス一致を実現するために、プレフィックスFIBエントリを使用する。
0008
結果として、L3ルータは、パケットを、宛先L2LDPSに「接続」された論理ポートに転送することになる。パケットをさらにそのLDPSに転送する前に、L3ルータは、送信元のMACアドレスを、そのドメインで定義されるものに変更し、同時に、宛先IPアドレスを宛先MACアドレスに解決することになる。解決は、いくつかの実施形態では、L3データパイプラインの最後の「IP出力」ステージによって実行される。同じパイプラインは、TTLを減分し、チェックサムを更新することになる(そして、TTLがゼロになる場合、ICMPで応答する)。
0009
いくつかの実施形態は、MACアドレスの書き換えなしでは、異なる転送決定が、次のLDPSで結果として生じる可能性があるため、処理されたパケットを次のLDPSに供給する前に、MACアドレスを書き換えることに留意すべきである。従来のルータが、ARPを使用して宛先IPアドレスの解決を実行するとしても、ネクストホップが論理L2データパスである限り、この解決は、仮想化アプリケーション内部のままであるため、いくつかの実施形態は、L3論理ルータ内でこの目的のためにARPを使用しないことにも留意すべきである。
0010
第3に、パケットは、宛先論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。宛先L2テーブルパイプラインは、論理出口ポートを決定し、論理出口ポートに沿って、パケットを送信すべきである。未知のMACアドレスの場合、このパイプラインは、何かの分散ルックアップメカニズムに依存することによって、MACアドレス位置を解決することになる。いくつかの実施形態では、管理されるスイッチング要素は、MAC学習アルゴリズムに依存し、例えば、それらは、未知のパケットをフラッドする。これら又は他の実施形態では、MACアドレス位置情報は、他のメカニズム、例えば、アウトオブバンドによって得ることもできる。このようなメカニズムがいくつかの実施形態で利用可能な場合、最後の論理L2テーブルパイプラインは、MACアドレス位置を得るために、このメカニズムを使用する。
0011
第4に、パケットは、論理ポートアタッチメントを表す物理ポートに取り付けられた論理ポートに送信される。このステージでは、ポートがポイントツーポイント媒体(例えば、仮想ネットワークインタフェース、VIF)である場合、やり残したものは何もなく、パケットをポートに送信する。しかしながら、最後のLDPSがL3ルータであり、したがって、アタッチメントが物理L3サブネットである場合、アタッチメントポイントは、いくつかの実施形態では、パケットを送信する前に、ARPを使用して宛先IPアドレスを解決する。その場合には、送信元MACアドレスは、出口の指定であり、VIFの場合の論理MACインタフェースアドレスではない。他の実施形態では、ARPを使用して宛先IPアドレスを解決することは、第2のステップ中に、L3論理ルータによって実行される。
0012
上記の例では、論理L2データパスと相互接続する単一の論理ルータのみが存在するが、トポロジを制限するものは何もない。当業者は、より多くのLDPセットが、よりリッチなトポロジのために相互接続されてよいことを認識するであろう。
0013
いくつかの実施形態では、制御アプリケーションは、L3特有の論理状態が、論理L3パイプラインを指定する1つ又は複数のテーブルに関して定義されることを可能にする。LDPSパイプラインを管理する対応する論理制御プレーンは、静的なルート構成、又は、標準的なルーティングプロトコル上の他のLDPSセットを有するピアに依存することができる。
0014
いくつかの実施形態では、仮想化アプリケーションは、上述した4ステップのL2/L3パケット処理の物理制御プレーンデータへの物理的実現を定義し、物理制御プレーンデータは、管理されるスイッチング要素によって物理転送データに変換されると、一連の論理パイプライン実行を実施し、一連のパイプライン実行は、すべて又は主として、最初のホップの管理されるエッジスイッチング要素で実行される。物理トラフィックの局所性を維持するために、最初のホップは、一連のパイプラインを(必要なすべての状態で)実行し、物理ネットワークの最終的な出口位置に向けてトラフィックを直接送信する。ショートカットトンネルが使用される場合、仮想化アプリケーションは、ショートカットトンネルメッシュを、単一のLDPSを超えて、すべての相互接続されたLDPセットのポートの結合に拡張することによって、論理L2データパスを論理L3データパスと相互接続する。最初のホップですべてが実行される場合、最初のホップ要素は、典型的には、パケットが横断する論理ネットワークのすべての状態にアクセスを有する。
0015
前述の概要は、本発明のいくつかの実施形態への簡単な導入として役立つことを意図している。それは、本文献で開示されたすべての発明の主題の導入又は概観であることを意味しない。以下の詳細な説明、及び、詳細な説明で参照される図面は、概要に記載された実施形態、並びに、他の実施形態をさらに説明することになる。したがって、本文献によって説明されるすべての実施形態を理解するために、概要、詳細な説明、及び図面の完全な検討が必要とされる。さらに、特許請求された主題は、主題の要旨から逸脱することなく、他の特定の形態で具体化されてよいため、特許請求された主題は、概要、詳細な説明、及び図面の例示的な詳細によって限定されるべきではなく、添付の特許請求の範囲によって定義されるべきである。
0016
本発明の新規な特徴は、添付の特許請求の範囲に記載される。しかしながら、説明の目的のため、本発明のいくつかの実施形態は、以下の図面に記載される。
図面の簡単な説明
0017
いくつかの実施形態のネットワークアーキテクチャを概念的に示す図である。
論理スイッチ及び論理ルータを介してネットワークデータを処理するいくつかの実施形態の処理パイプラインを概念的に示す図である。
論理ルータが単一のL3ルータで実装されるネットワークアーキテクチャを概念的に示す図である。
論理ルータが管理されるスイッチング要素で実装されるネットワークアーキテクチャを概念的に示す図である。
いくつかの管理されるスイッチング要素の各々がL3でパケットをルーティングするように、ルータが分散的に実装されるネットワークアーキテクチャを概念的に示す図である。
図2を参照して上述した論理処理パイプラインの例示的な実装を概念的に示す図である。
論理スイッチ、論理ルータ、及び論理スイッチを介してパケットを処理するいくつかの実施形態の論理処理パイプラインを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
管理されるスイッチング要素及びL3を含むいくつかの実施形態のホストの例示的なアーキテクチャを概念的に示す図である。
管理されるスイッチング要素内の論理スイッチ及び論理ルータ、並びにL3ルータの例示的な実装を概念的に示す図である。
図12を参照して上述した管理されるスイッチング要素内に実装されている論理スイッチ、論理ルータ、及びL3ルータの例示的な動作を概念的に示す図である。
図12を参照して上述した管理されるスイッチング要素内に実装されている論理スイッチ、論理ルータ、及びL3ルータの例示的な動作を概念的に示す図である。
図12を参照して上述した管理されるスイッチング要素内に実装されている論理スイッチ、論理ルータ、及びL3ルータの例示的な動作を概念的に示す図である。
いくつかの実施形態が、どの管理されるスイッチング要素にパケットを送信するかを決定するために、パケットを転送するために実行するプロセスを概念的に示す図である。
図8を参照して上述したホストを概念的に示す図である。
第1及び第2のL3ルータが同じホスト内に実装されている場合、いくつかの実施形態が、第1のL3ルータから第2のL3ルータにパケットを直接転送するために使用するプロセスを概念的に示す図である。
図2を参照して上述した論理処理パイプラインの例示的な実装を概念的に示す図である。
論理スイッチ、論理ルータ、及び別の論理スイッチを介してパケットを処理するいくつかの実施形態の論理処理パイプラインを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
論理ルータをフローエントリに基づいて実装する管理されるスイッチング要素を含むいくつかの実施形態のホストの例示的なアーキテクチャを概念的に示す図である。
管理されるスイッチング要素内の論理スイッチ及び論理ルータの例示的な実装を概念的に示す図である。
図23を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
図2を参照して上述した論理処理パイプラインの例示的な実装を概念的に示す図である。
論理スイッチ、論理ルータ、及び別の論理スイッチを介してパケットを処理するいくつかの実施形態の論理処理パイプラインを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
論理ルータ及び論理スイッチを実装するいくつかの実施形態の例示的なネットワークアーキテクチャを概念的に示す図である。
転送及びルーティングするために、受信されたパケットへのL2及びL3のすべての処理を実行する最初のホップのスイッチング要素の一例を概念的に示す図である。
図29を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
図29を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
管理されるスイッチング要素が動作するホストの例示的なソフトウェアアーキテクチャを概念的に示す図である。
いくつかの実施形態がネットワークアドレスを変換するために実行するプロセスを概念的に示す図である。
いくつかの実施形態の最初のホップのスイッチング要素が、NAT動作を含む論理処理パイプライン全体を実行することを概念的に示す図である。
帰ってくるパケットを管理されるスイッチング要素に送信する場合、管理されるスイッチング要素は、論理処理パイプラインを実行しない例を概念的に示す図である。
アドレスがNATされる宛先マシンにパケットを送信するためにいくつかの実施形態が実行するプロセスを概念的に示す図である。
第1のホストから第2のホストへのVM移行として、第1のホストから第2のホストへNAT状態を移行する一例を示す図である。
第1のホストから第2のホストへのVM移行として、第1のホストから第2のホストへNAT状態を移行する別の例を示す図である。
負荷分散を実行する論理スイッチ及び論理ルータの例示的な物理的実装を示す図である。
負荷分散を実行する論理スイッチ及び論理ルータの別の例示的な物理的実装を示す図である。
負荷分散を実行する論理スイッチ及び論理ルータのさらに別の例示的な物理的実装を示す図である。
サービス(例えば、ウェブサービス)を集合的に提供するマシン間で負荷を分散する負荷分散デーモンを概念的に示す図である。
異なるユーザのための異なる論理ネットワークにDHCPサービスを提供するDHCPデーモンを示す図である。
中央のDHCPデーモン、及び、いくつかのローカルのDHCPデーモンを示す図である。
最後のホップのスイッチング要素でいくつかの論理処理を実行する一例を概念的に示す図である。
図44を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
図44を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
最後のホップのスイッチング要素でいくつかの論理処理を実行する一例を概念的に示す図である。
図46を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
図46を参照して上述した論理スイッチ、論理ルータ、及び管理されるスイッチング要素の例示的な動作を概念的に示す図である。
管理されるスイッチング要素が動作するホストの例示的なソフトウェアアーキテクチャを概念的に示す図である。
いくつかの実施形態がネットワークアドレスを解決するために実行するプロセスを概念的に示す図である。
それぞれがL3デーモンを実行するいくつかのホスト(又はVM)が、ARP要求のブロードキャスティングを回避することを可能にするマップサーバを示す図である。
いくつかの実施形態が、IP及びMACアドレスのマッピングを含むマッピングテーブルを維持するために実行するプロセスを示す図である。
いくつかの実施形態が、IP及びMACアドレスのマッピングを含むマッピングテーブルを維持するために実行するプロセスを示す図である。
いくつかの実施形態のコントローラインスタンスが、nLogのようなテーブルマッピングプロセッサ(図示せず)を使用してテーブル上のテーブルマッピング動作を実行することによって、フローを生成することを概念的に示す図である。
例示的なアーキテクチャ及びユーザインタフェースを示す図である。
図54を参照して上述したステージの前のテーブルを示す図である。
ユーザが、論理ポートを論理ルータに加えるために、論理ポートの識別子、ポートに関連付けるIPアドレス、及び、ネットマスクを供給した後のテーブルを示す図である。
テーブルマッピング動作のセットの結果を示す図である。
テーブルマッピング動作のセットの結果を示す図である。
図54を参照して上述したステージの後のテーブルを示す図である。
テーブルマッピング動作のセットの結果を示す図である。
テーブルマッピング動作のセットの結果を示す図である。
図61を参照して上述したステージの後のテーブルのいくつかに追加された新しい行を示す図である。
図55〜62を参照して上述したテーブルマッピング動作を実行することによって、制御アプリケーションが論理データを生成した後のアーキテクチャを示す図である。
本発明のいくつかの実施形態が実装されるのに用いられる電子システムを概念的に示す図である。
実施例
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つのポート(番号付けされた正方形として示される)を有する。