JP2018050306A - 分散論理l3ルーティング - Google Patents

分散論理l3ルーティング Download PDF

Info

Publication number
JP2018050306A
JP2018050306A JP2017202850A JP2017202850A JP2018050306A JP 2018050306 A JP2018050306 A JP 2018050306A JP 2017202850 A JP2017202850 A JP 2017202850A JP 2017202850 A JP2017202850 A JP 2017202850A JP 2018050306 A JP2018050306 A JP 2018050306A
Authority
JP
Japan
Prior art keywords
logical
packet
switching element
managed switching
router
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017202850A
Other languages
English (en)
Other versions
JP6483781B2 (ja
Inventor
テーム コポネン,
Koponen Teemu
テーム コポネン,
ロンフア チャン,
Ronghua Zhang
ロンフア チャン,
マーティン カサド,
Casado Martin
マーティン カサド,
パンカジ タッカー,
Thakkar Pankaj
パンカジ タッカー,
フォース, ジェシー イー. グロス
E Gross Jesse Iv
フォース, ジェシー イー. グロス
ダニエル ジェイ. ウェンドラント,
J Wendlandt Daniel
ダニエル ジェイ. ウェンドラント,
メハク マハジャン,
Mahajan Mehak
メハク マハジャン,
ジャスティン ペティット,
Pettit Justin
ジャスティン ペティット,
キース イー. アミドン,
E Amidon Keith
キース イー. アミドン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nicira Inc
Original Assignee
Nicira Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nicira Inc filed Critical Nicira Inc
Publication of JP2018050306A publication Critical patent/JP2018050306A/ja
Application granted granted Critical
Publication of JP6483781B2 publication Critical patent/JP6483781B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2592Translation of Internet protocol [IP] addresses using tunnelling or encapsulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】第1の論理ドメイン内にある送信元マシンと、第2の論理ドメイン内にある宛先マシンとの間で、パケットを論理的にルーティングする新規の方法を提供する。
【解決手段】方法は、管理されるスイッチング要素を、第2のレベルの管理されるスイッチング要素として構成する。方法は、第2のレベルの管理されるスイッチング要素を含むホスト内のルータを構成する。方法は、第2のレベルの管理されるスイッチング要素とルータを通信可能に結合する。方法は、ルータが、第2の論理ドメインにアドレスされたパケットを第1の論理ドメインから受信すると、ルータにパケットをルーティングさせる。
【選択図】図1

Description

現在の多くの企業は、様々な接続、アプリケーション、及びシステムをサポートする、スイッチ、ハブ、ルータ、サーバ、ワークステーション、及び他のネットワークデバイスを含む、大規模で洗練されたネットワークを有する。仮想マシン移行(migration)、動的ワークロード、マルチテナント機能、並びに、サービス及びセキュリティ構成の顧客に特有の品質を含む、コンピュータネットワーキングの増加する洗練度は、ネットワーク制御のためのより優れたパラダイムを必要とする。ネットワークは、伝統的に、個々の構成要素の低レベルの構成を介して管理されてきた。ネットワーク構成は、しばしば、基礎となるネットワークに依存し、例えば、アクセス制御リスト(「ACL」)エントリによりユーザのアクセスをブロックすることは、ユーザの現在のIPアドレスを知ることを必要とする。より複雑なタスクは、より広範囲なネットワーク知識を必要とし、ゲストユーザのポート80トラフィックに、HTTPプロキシを通過することを強制することは、現在のネットワークトポロジ、及び、各ゲストの位置を知ることを必要とする。このプロセスは、ネットワークスイッチング要素が複数のユーザ間で共有される困難さを増加させるものである。
それに応じて、ソフトウェア定義ネットワーク(SDN)と呼ばれる新しいネットワーク制御パラダイムに向けて成長している動きが存在する。SDNパラダイムでは、ネットワーク内の1つ又は複数のサーバ上で動作するネットワークコントローラが、共有されるネットワークスイッチング要素の転送動作をユーザごとに管理する制御論理を、制御し、維持し、実装する。ネットワーク管理上の決定を行うことは、しばしば、ネットワーク状態の知識を必要とする。管理意思決定を容易にするために、ネットワークコントローラは、ネットワーク状態のビューを作成及び維持し、アプリケーションプログラミングインタフェースを提供し、アプリケーションプログラミングインタフェース上で、管理アプリケーションは、ネットワーク状態のビューにアクセスすることができる。
(データセンタ及び企業ネットワークの両方を含む)大規模なネットワークを維持することの主な目標のいくつかは、スケーラビリティ、モビリティ、及びマルチテナント機能である。これらの目標の1つに対処するためにとられた多くのアプローチは、結果として、他の目標の少なくとも1つを妨げた。例えば、L2ドメイン内の仮想マシンのネットワークモビリティを容易に提供することができるが、L2ドメインは、大きなサイズに拡張することができない。さらに、ユーザの分離を維持することは、モビリティを複雑にする。このように、スケーラビリティ、モビリティ、及びマルチテナント機能を満足することができる改善された解決法が必要である。
いくつかの場合のいくつかの実施形態は、論理ルーティングを、L3ドメイン内で動作する論理データパスセット(LDPS)を実装する論理ルータによってL2ドメイン内で動作する2つ以上の論理データパス(LDP)セットを相互接続する行為としてモデル化する。論理L2ドメインから別のものに横断するパケットは、いくつかの実施形態では、以下の4つのステップをとることになる。これらの4つのステップは、ネットワーク制御システムが実現する論理処理動作に関して以下に説明される。しかしながら、これらの動作は、ネットワーク制御システムによって生成される物理制御プレーンデータに基づいて、ネットワークの管理されるスイッチング要素によって実行されることを理解すべきである。
第1に、パケットは、送信元の論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。パイプラインは、論理ルータの論理ポートに取り付けられた論理ポートに転送されている宛先媒体アクセス制御(MAC)アドレスで終わることになる。
第2に、パケットは、再び、それを論理ルータのL3テーブルパイプラインを介して送信することによって、この論理ルータのL3データパスを介して処理されることになる。論理ルータは、ルーティングを必要とするパケットを受信するだけであるため、物理ルータ内の一般的なL2ルックアップステージは、いくつかの実施形態では、ルータのL3データパス内でスキップされる。
いくつかの実施形態では、L3転送決定は、論理ルータの論理制御プレーンによって供給されるプレフィックス(転送情報ベース(FIB))エントリを使用することになる。いくつかの実施形態では、論理制御プレーンデータを受信し、このデータを、次にネットワーク制御システムに供給される論理転送プレーンデータに変換するために、制御アプリケーションが使用される。L3転送決定のために、いくつかの実施形態は、最長のプレフィックス一致を実現するために、プレフィックスFIBエントリを使用する。
結果として、L3ルータは、パケットを、宛先L2LDPSに「接続」された論理ポートに転送することになる。パケットをさらにそのLDPSに転送する前に、L3ルータは、送信元のMACアドレスを、そのドメインで定義されるものに変更し、同時に、宛先IPアドレスを宛先MACアドレスに解決することになる。解決は、いくつかの実施形態では、L3データパイプラインの最後の「IP出力」ステージによって実行される。同じパイプラインは、TTLを減分し、チェックサムを更新することになる(そして、TTLがゼロになる場合、ICMPで応答する)。
いくつかの実施形態は、MACアドレスの書き換えなしでは、異なる転送決定が、次のLDPSで結果として生じる可能性があるため、処理されたパケットを次のLDPSに供給する前に、MACアドレスを書き換えることに留意すべきである。従来のルータが、ARPを使用して宛先IPアドレスの解決を実行するとしても、ネクストホップが論理L2データパスである限り、この解決は、仮想化アプリケーション内部のままであるため、いくつかの実施形態は、L3論理ルータ内でこの目的のためにARPを使用しないことにも留意すべきである。
第3に、パケットは、宛先論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。宛先L2テーブルパイプラインは、論理出口ポートを決定し、論理出口ポートに沿って、パケットを送信すべきである。未知のMACアドレスの場合、このパイプラインは、何かの分散ルックアップメカニズムに依存することによって、MACアドレス位置を解決することになる。いくつかの実施形態では、管理されるスイッチング要素は、MAC学習アルゴリズムに依存し、例えば、それらは、未知のパケットをフラッドする。これら又は他の実施形態では、MACアドレス位置情報は、他のメカニズム、例えば、アウトオブバンドによって得ることもできる。このようなメカニズムがいくつかの実施形態で利用可能な場合、最後の論理L2テーブルパイプラインは、MACアドレス位置を得るために、このメカニズムを使用する。
第4に、パケットは、論理ポートアタッチメントを表す物理ポートに取り付けられた論理ポートに送信される。このステージでは、ポートがポイントツーポイント媒体(例えば、仮想ネットワークインタフェース、VIF)である場合、やり残したものは何もなく、パケットをポートに送信する。しかしながら、最後のLDPSがL3ルータであり、したがって、アタッチメントが物理L3サブネットである場合、アタッチメントポイントは、いくつかの実施形態では、パケットを送信する前に、ARPを使用して宛先IPアドレスを解決する。その場合には、送信元MACアドレスは、出口の指定であり、VIFの場合の論理MACインタフェースアドレスではない。他の実施形態では、ARPを使用して宛先IPアドレスを解決することは、第2のステップ中に、L3論理ルータによって実行される。
上記の例では、論理L2データパスと相互接続する単一の論理ルータのみが存在するが、トポロジを制限するものは何もない。当業者は、より多くのLDPセットが、よりリッチなトポロジのために相互接続されてよいことを認識するであろう。
いくつかの実施形態では、制御アプリケーションは、L3特有の論理状態が、論理L3パイプラインを指定する1つ又は複数のテーブルに関して定義されることを可能にする。LDPSパイプラインを管理する対応する論理制御プレーンは、静的なルート構成、又は、標準的なルーティングプロトコル上の他のLDPSセットを有するピアに依存することができる。
いくつかの実施形態では、仮想化アプリケーションは、上述した4ステップのL2/L3パケット処理の物理制御プレーンデータへの物理的実現を定義し、物理制御プレーンデータは、管理されるスイッチング要素によって物理転送データに変換されると、一連の論理パイプライン実行を実施し、一連のパイプライン実行は、すべて又は主として、最初のホップの管理されるエッジスイッチング要素で実行される。物理トラフィックの局所性を維持するために、最初のホップは、一連のパイプラインを(必要なすべての状態で)実行し、物理ネットワークの最終的な出口位置に向けてトラフィックを直接送信する。ショートカットトンネルが使用される場合、仮想化アプリケーションは、ショートカットトンネルメッシュを、単一のLDPSを超えて、すべての相互接続されたLDPセットのポートの結合に拡張することによって、論理L2データパスを論理L3データパスと相互接続する。最初のホップですべてが実行される場合、最初のホップ要素は、典型的には、パケットが横断する論理ネットワークのすべての状態にアクセスを有する。
前述の概要は、本発明のいくつかの実施形態への簡単な導入として役立つことを意図している。それは、本文献で開示されたすべての発明の主題の導入又は概観であることを意味しない。以下の詳細な説明、及び、詳細な説明で参照される図面は、概要に記載された実施形態、並びに、他の実施形態をさらに説明することになる。したがって、本文献によって説明されるすべての実施形態を理解するために、概要、詳細な説明、及び図面の完全な検討が必要とされる。さらに、特許請求された主題は、主題の要旨から逸脱することなく、他の特定の形態で具体化されてよいため、特許請求された主題は、概要、詳細な説明、及び図面の例示的な詳細によって限定されるべきではなく、添付の特許請求の範囲によって定義されるべきである。
本発明の新規な特徴は、添付の特許請求の範囲に記載される。しかしながら、説明の目的のため、本発明のいくつかの実施形態は、以下の図面に記載される。
いくつかの実施形態のネットワークアーキテクチャを概念的に示す図である。 論理スイッチ及び論理ルータを介してネットワークデータを処理するいくつかの実施形態の処理パイプラインを概念的に示す図である。 論理ルータが単一の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を参照して上述したテーブルマッピング動作を実行することによって、制御アプリケーションが論理データを生成した後のアーキテクチャを示す図である。 本発明のいくつかの実施形態が実装されるのに用いられる電子システムを概念的に示す図である。
本発明のいくつかの実施形態は、論理データパス(LDP)セット(例えば、論理ネットワーク)が、物理ネットワークのスイッチング要素によって実装されることを可能にするネットワーク制御システムを提供する。LDPセットを実装するために、いくつかの実施形態のネットワーク制御システムは、論理転送プレーンデータから物理制御プレーンデータを生成する。物理制御プレーンデータは、次に、管理されるスイッチング要素にプッシュされ、そこで、典型的には、物理転送プレーンデータに変換され、物理転送プレーンデータは、管理されるスイッチング要素がそれらの転送決定を実行することを可能にする。物理転送データに基づいて、管理されるスイッチング要素は、物理制御プレーンデータ内で指定される論理処理ルールにしたがって、データパケットを処理することができる。
単一の論理データパスセットは、物理エンドポイント又は仮想エンドポイントのいずれかに取り付けることができるいくつかの論理ポートを相互接続するために、スイッチングファブリックを提供する。いくつかの実施形態では、このようなLDPセット及び論理ポートの作成及び使用は、仮想ローカルエリアネットワーク(VLAN)に対応する論理サービスモデルを提供する。このモデルは、いくつかの実施形態では、ネットワーク制御システムの動作を、論理L2スイッチング機能のみの定義に制限する。しかしながら、他の実施形態は、ネットワーク制御システムの動作を、論理L2スイッチング機能及び論理L3スイッチング機能の両方に拡張する。
いくつかの実施形態のネットワーク制御システムは、以下の論理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サービスの効率的な実現を提供する。
これらのL3機能のそれぞれに関する設計を以下に説明する。実装に関して、機能は、大部分独立しているため、当業者は、これらの機能が、いくつかの実施形態のネットワーク制御システムによってすべて提供される必要はないことを理解するであろう。さらに機能を説明する前に、いくつかの仮定が言及されるべきである。これらの仮定は、以下の様なものである。
・大規模ネットワーク。複数のL2ネットワークにまたがる論理L3ネットワークは、論理L2ネットワークより大きくなる。いくつかの実施形態は、マップリデュース分散処理技術を使用することによって、10Kサーバと同じくらい大きいサーバクラスタに関する論理L3の問題を解決する。
・物理トラフィック非局所性。データセンタ内の論理サブネットは、データセンタ内でかなりのトラフィックを交換する可能性がある。いくつかの実施形態は、トラフィックの局所性を、これが可能な程度に維持する。上述したマップリデュース例では、トラフィックは、エンドポイントに関して局所性を持たない。
・論理トラフィック局所性。論理サブネット間で交換されるトラフィックになると、局所性は実際に存在する。すなわち、すべての論理ネットワークが、上述したマップリデュースクラスタに関するクライアントを持つわけではない。
・機能の配置。参照により本明細書に組み込まれる米国特許出願第13/177,535号に記載のように、管理されるスイッチング要素は、いくつかの実施形態では、(1)物理ネットワークのエッジスイッチング要素(すなわち、物理ネットワークによって接続された仮想又は物理コンピューティングデバイスとの直接接続を有するスイッチング要素)、並びに、(2)制御されるエッジスイッチング要素の動作を単純に及び/又は容易にするために、管理されるスイッチング要素階層内に挿入される非エッジスイッチング要素である。米国特許出願第13/177,535号にさらに記載のように、エッジスイッチング要素は、いくつかの実施形態では、(1)ネットワークによって接続された仮想又は物理コンピューティングデバイスとの直接接続を有するスイッチング要素、並びに、(2)ネットワークの第1の管理される部分を、ネットワークの第2の管理される部分(例えば、第1の管理される部分と異なる物理的位置内の部分)、又は、ネットワークの管理されない部分(例えば、企業の内部ネットワーク)に接続するインテグレーション要素(エクステンダと呼ばれる)である。いくつかの実施形態は、論理L3ルーティングを、理想的には、第1の管理されるエッジスイッチング要素で、すなわち、最初のホップエッジスイッチング要素で実行し、第1の管理されるエッジスイッチング要素は、物理ネットワークによって相互接続される仮想マシンもホストするハイパーバイザ内で実装されてよい。いくつかの実施形態のネットワーク制御システムは、このとき、非エッジスイッチング要素(内部ネットワーク)を、デバイスを相互接続するファブリックに過ぎないものとして考えることができるため、理想的には、最初のホップスイッチング要素は、L3ルーティングのすべて又は大部分を実行する。
以下に記載の実施形態のいくつかは、1つ又は複数の共有転送要素を管理するための1つ又は複数のコントローラ(以下、コントローラインスタンスとも呼ばれる)によって形成される新規の分散ネットワーク制御システムで実施される。いくつかの実施形態での共有転送要素は、仮想若しくは物理ネットワークスイッチ、ソフトウェアスイッチ(例えば、Open vSwitch)、ルータ、及び/又は、他のスイッチングデバイス、並びに、これらのスイッチ、ルータ、及び/又は他のスイッチングデバイス間の接続を確立する任意の他のネットワーク要素(負荷分散装置、などのような)を含むことができる。このような転送要素(例えば、物理スイッチ又はルータ)は、以下、スイッチング要素とも呼ばれる。既製のスイッチとは対照的に、ソフトウェア転送要素は、いくつかの実施形態では、そのスイッチングテーブル(複数可)及び論理を独立デバイス(例えば、独立コンピュータ)のメモリに格納することによって形成されるスイッチであり、他の実施形態では、そのスイッチングテーブル(複数可)及び論理を、ハイパーバイザ、及び、そのハイパーバイザ上の1つ又は複数の仮想マシンも実行するデバイス(例えば、コンピュータ)のメモリに格納することによって形成されるスイッチである。
いくつかの実施形態では、コントローラインスタンスは、システムが、ユーザからの論理データパスセットを受け入れ、これらの論理データパスセットを実装するためにスイッチング要素を構成することを可能にする。いくつかの実施形態では、コントローラインスタンスの1つのタイプは、1つ又は複数のモジュールを実行するデバイス(例えば、汎用コンピュータ)であり、1つ又は複数のモジュールは、論理制御プレーンからのユーザ入力を、論理転送プレーンに変換し、次に、論理転送プレーンデータを、物理制御プレーンデータに変換する。いくつかの実施形態でのこれらのモジュールは、制御モジュール及び仮想化モジュールを含む。制御モジュールは、ユーザが、論理データパスセットを指定し、ポピュレートすることを可能にし、仮想化モジュールは、論理データパスセットを物理スイッチングインフラストラクチャ上にマッピングすることによって、指定された論理データパスセットを実装する。いくつかの実施形態では、制御アプリケーション及び仮想化アプリケーションは、2つの別個のアプリケーションであり、他の実施形態では、それらは、同じアプリケーションの一部である。
特定の論理データパスセットのための論理転送プレーンデータから、いくつかの実施形態の仮想化モジュールは、ユニバーサル物理制御プレーン(UPCP)データを生成し、UPCPデータは、論理データパスセットを実装する任意の管理されるスイッチング要素の一般的なものである。いくつかの実施形態では、この仮想化モジュールは、特定の論理データパスセットのためのマスタコントローラであるコントローラインスタンスの一部である。このコントローラは、論理コントローラと呼ばれる。
いくつかの実施形態では、UPCPデータは、次に、特定の管理されるスイッチング要素のためのマスタ物理コントローラインスタンスであるコントローラインスタンスによって、又は、「Chassis Controller」という表題の、代理人整理番号NCRA.P0081を有する同時出願の米国特許出願**にさらに記載されるような、特定の管理されるスイッチング要素のためのシャーシコントローラによって、各々の特定の管理されるスイッチング要素のためのカスタマイズされた物理制御プレーン(CPCP)データに変換され、この同時出願の米国特許出願は、参照により本明細書に組み込まれる。シャーシコントローラがCPCPデータを生成する場合、シャーシコントローラは、物理コントローラを介して、論理コントローラの仮想化モジュールからUPCPデータを取得する。
物理コントローラ又はシャーシコントローラのいずれがCPCPデータを生成するのかにかかわらず、特定の管理されるスイッチング要素のためのCPCPデータは、管理されるスイッチング要素に伝播される必要がある。いくつかの実施形態では、CPCPデータは、ネットワーク情報ベース(NIB)データ構造を介して伝播され、NIBデータ構造は、いくつかの実施形態では、オブジェクト指向データ構造である。NIBデータ構造を使用することのいくつかの例は、参照により本明細書に組み込まれる米国特許出願第13/177,529号及び第13/177,533号に記載されている。これらの出願に記載のように、NIBデータ構造は、また、異なるコントローラインスタンス間の通信媒体として働くことができるように、そして、論理データパスセット(例えば、論理スイッチング要素)、及び/又は、これらの論理データパスセットを実装する管理されるスイッチング要素に関するデータを格納するように、いくつかの実施形態で使用される。
しかしながら、他の実施形態は、CPCPデータを物理コントローラ又はシャーシコントローラから管理されるスイッチング要素に伝播させるために、コントローラインスタンス間で通信するために、並びに、論理データパスセット及び/又は管理されるスイッチング要素に関するデータを格納するために、NIBデータ構造を使用しない。例えば、いくつかの実施形態では、物理コントローラ及び/又はシャーシコントローラは、OpenFlowエントリを介して、管理されるスイッチング要素と通信し、構成プロトコルを介して更新する。また、いくつかの実施形態では、コントローラインスタンスは、データを交換するために、1つ又は複数の直接通信チャネル(例えば、RPCコール)を使用する。加えて、いくつかの実施形態では、コントローラインスタンス(例えば、これらのインスタンスの制御モジュール及び仮想化モジュール)は、リレーショナルデータベースデータ構造に書き込まれる記録に関して論理及び/又は物理データを表現する。いくつかの実施形態では、このリレーショナルデータベースデータ構造は、テーブルマッピングエンジン(nLogと呼ばれる)の入力及び出力テーブルの一部であり、テーブルマッピングエンジンは、コントローラインスタンスの1つ又は複数のモジュールを実装するために使用される。
I.論理ルーティング
いくつかの場合のいくつかの実施形態は、論理ルーティングを、L3ドメイン内で動作するLDPSを実装する論理ルータによってL2ドメイン内で動作する2つ以上のLDPセットを相互接続する行為としてモデル化する。論理L2ドメインから別のものに横断するパケットは、いくつかの実施形態では、以下の4つのステップをとることになる。これらの4つのステップは、ネットワーク制御システムが実現する論理処理動作に関して以下に説明される。しかしながら、これらの動作は、ネットワーク制御システムによって生成される物理制御プレーンデータに基づいて、ネットワークの管理されるスイッチング要素によって実行されることを理解すべきである。
第1に、パケットは、送信元の論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。パイプラインは、論理ルータの論理ポートに取り付けられた論理ポートに転送されている宛先媒体アクセス制御(MAC)アドレスで終わることになる。
第2に、パケットは、再び、それを論理ルータのL3テーブルパイプラインを介して送信することによって、この論理ルータのL3データパスを介して処理されることになる。論理ルータは、ルーティングを必要とするパケットを受信するだけであるため、物理ルータ内の一般的なL2ルックアップステージは、いくつかの実施形態では、ルータのL3データパス内でスキップされる。
いくつかの実施形態では、L3転送決定は、論理ルータの論理制御プレーンによって供給されるプレフィックス(転送情報ベース(FIB))エントリを使用することになる。いくつかの実施形態では、論理制御プレーンデータを受信し、このデータを、次にネットワーク制御システムに供給される論理転送プレーンデータに変換するために、制御アプリケーションが使用される。L3転送決定のために、いくつかの実施形態は、最長のプレフィックス一致を実現するために、プレフィックスFIBエントリを使用する。
結果として、L3ルータは、パケットを、宛先L2LDPSに「接続」された論理ポートに転送することになる。パケットをさらにそのLDPSに転送する前に、L3ルータは、送信元のMACアドレスを、そのドメインで定義されるものに変更し、同時に、宛先IPアドレスを宛先MACアドレスに解決することになる。解決は、いくつかの実施形態では、L3データパイプラインの最後の「IP出力」ステージによって実行される。同じパイプラインは、TTLを減分し、チェックサムを更新することになる(そして、TTLがゼロになる場合、ICMPで応答する)。
いくつかの実施形態は、MACアドレスの書き換えなしでは、次のLDPSで結果として異なる転送決定が生じる可能性があるため、処理されたパケットを次のLDPSに供給する前に、MACアドレスを書き換えることに留意すべきである。従来のルータが、ARPを使用して宛先IPアドレスの解決を実行するとしても、ネクストホップが論理L2データパスである限り、この解決は、仮想化アプリケーション内部のままであるため、いくつかの実施形態は、L3論理ルータ内でこの目的のためにARPを使用しないことにも留意すべきである。
第3に、パケットは、宛先論理L2ドメインのL2テーブルパイプラインを介して処理されることになる。宛先L2テーブルパイプラインは、論理出口ポートを決定し、論理出口ポートに沿って、パケットを送信すべきである。未知のMACアドレスの場合、このパイプラインは、何かの分散ルックアップメカニズムに依存することによって、MACアドレス位置を解決することになる。いくつかの実施形態では、管理されるスイッチング要素は、MAC学習アルゴリズムに依存し、例えば、それらは、未知のパケットをフラッドする。これら又は他の実施形態では、MACアドレス位置情報は、他のメカニズム、例えば、アウトオブバンドによって得ることもできる。このようなメカニズムがいくつかの実施形態で利用可能な場合、最後の論理L2テーブルパイプラインは、MACアドレス位置を得るために、このメカニズムを使用する。
第4に、パケットは、論理ポートアタッチメントを表す物理ポートに取り付けられた論理ポートに送信される。このステージでは、ポートがポイントツーポイント媒体(例えば、仮想ネットワークインタフェース、VIF)である場合、やり残したものは何もなく、パケットをポートに送信する。しかしながら、最後のLDPSがL3ルータであり、したがって、アタッチメントが物理L3サブネットである場合、アタッチメントポイントは、いくつかの実施形態では、パケットを送出する前に、ARPを使用して宛先IPアドレスを解決する。その場合には、送信元MACアドレスは、出口の指定であり、VIFの場合の論理MACインタフェースアドレスではない。他の実施形態では、ARPを使用して宛先IPアドレスを解決することは、第2のステップ中に、L3論理ルータによって実行される。
上記の例では、論理L2データパスと相互接続する単一の論理ルータのみが存在するが、トポロジを制限するものは何もない。当業者は、より多くのLDPセットが、よりリッチなトポロジのために相互接続されてよいことを認識するであろう。
いくつかの実施形態では、制御アプリケーションは、L3特有の論理状態が、論理L3パイプラインを指定する1つ又は複数のテーブルに関して定義されることを可能にする。LDPSパイプラインを管理する対応する論理制御プレーンは、静的なルート構成、又は、標準的なルーティングプロトコル上の他のLDPSセットを有するピアに依存することができる。
いくつかの実施形態では、仮想化アプリケーションは、上述した4ステップのL2/L3パケット処理の物理制御プレーンデータへの物理的実現を定義し、物理制御プレーンデータは、管理されるスイッチング要素によって物理転送データに変換されると、一連の論理パイプライン実行を実施し、一連のパイプライン実行は、すべて又は主として、最初のホップの管理されるエッジスイッチング要素で実行される。物理トラフィックの局所性を維持するために、最初のホップは、一連のパイプラインを(必要なすべての状態で)実行し、物理ネットワークの最終的な出口位置に向けてトラフィックを直接送信する。ショートカットトンネルが使用される場合、仮想化アプリケーションは、ショートカットトンネルメッシュを、単一のLDPSを超えて、すべての相互接続されたLDPセットのポートの結合に拡張することによって、論理L2データパスを、論理L3データパスと相互接続する。
最初のホップですべてが実行されると、最初のホップ要素は、典型的には、パケットが横断する論理ネットワークのすべての状態にアクセスを有する。最初のホップのスイッチング要素での論理パイプラインの実行に関する状態の配布(及び、そのスケーリングの意味)を、以下にさらに説明する。
図1は、いくつかの実施形態のネットワークアーキテクチャ100を概念的に示す。具体的には、この図は、論理ルータ105が、2つのLDPセット(例えば、論理ネットワーク)150及び155間でパケットをルーティングすることを示す。図示のように、ネットワークアーキテクチャ100は、論理ルータ105、論理スイッチ110及び115、並びに、マシン120〜145を含む。
論理スイッチ110は、米国特許出願第13/177,535号に記載の論理スイッチ(又は、論理スイッチング要素)である。論理スイッチ110は、いくつかの管理されるスイッチング要素(図示せず)にわたって実装される。論理スイッチ110は、L2(レイヤ2)でマシン120〜130間のネットワークトラフィックをルーティングする。すなわち、論理スイッチ110は、論理スイッチ110が有する1つ又は複数の転送テーブル(図示せず)に基づいて、マシン120〜130間で、データリンク層でネットワークデータをルーティングするために、スイッチング決定を行う。論理スイッチ110は、いくつかの他の論理スイッチ(図示せず)と共に、論理ネットワーク150に関するネットワークトラフィックをルーティングする。論理スイッチ115は、別の論理スイッチである。論理スイッチ115は、論理ネットワーク155に関するマシン135〜145間のトラフィックをルーティングする。
いくつかの実施形態での論理ルータは、異なる論理ネットワーク間で、L3(レイヤ3−ネットワークレイヤ)でトラフィックをルーティングする。具体的には、論理ルータは、ルーティングテーブルのセットに基づいて、2つ以上の論理スイッチ間でネットワークトラフィックをルーティングする。いくつかの実施形態では、論理ルータは、単一の管理されるスイッチング要素内で実装され、他の実施形態では、論理ルータは、いくつかの異なる管理されるスイッチング要素内で分散的に実装される。これらの異なる実施形態の論理ルータを、以下にさらに詳細に説明する。論理ルータ105は、論理ネットワーク150及び155間で、L3でネットワークトラフィックをルーティングする。具体的には、論理ルータ105は、2つの論理スイッチ110及び115間でネットワークトラフィックをルーティングする。
マシン120〜145は、データパケットを交換することができるマシンである。例えば、各マシン120〜145は、マシン120〜145上で実行するアプリケーションが、論理スイッチ110及び115並びに論理ルータ105を介してそれらの間でデータを交換することができるように、ネットワークインタフェースコントローラ(NIC)を有する。
論理ネットワーク150及び155は、各ネットワーク内のマシンが、異なるL3アドレスを使用するという点で異なる。例えば、論理ネットワーク150及び155は、企業の2つの異なる部署のための異なるIPサブネットである。
動作中、論理スイッチ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によってルーティングされる。
図1は、2つの論理ネットワーク150及び155間でデータをルーティングする単一の論理ルータを示す。当業者は、2つの論理ネットワーク間でパケットをルーティングすることに関与する複数の論理ルータが存在してよいことを認識するであろう。
図2は、論理スイッチ及び論理ルータを介してネットワークデータを処理するいくつかの実施形態の処理パイプライン200を概念的に示す。具体的には、処理パイプライン200は、論理スイッチ220、論理ルータ225、及び、次に論理スイッチ230をそれぞれ介してデータパケットを処理する3つのステージ205〜215を含む。この図は、図の上半分に論理ルータ225並びに論理スイッチ220及び230を示し、図の下半分に処理パイプライン200を示す。
論理ルータ225は、論理ルータ225が、論理スイッチ220及び220間でデータパケットをルーティングするという点で、図1を参照して上述した論理ルータ105と同様である。論理スイッチ220及び230は、論理スイッチ110及び115と同様である。論理スイッチ220及び230は、それぞれ、論理ネットワークに関してL2でトラフィックを転送する。
論理スイッチ220がパケットを受信すると、論理スイッチ220は、パケットを一方の論理ネットワークで転送するために、論理処理パイプライン200のステージ205(L2処理)を実行する。パケットが別の論理ネットワーク行きである場合、論理スイッチ220は、パケットを論理ルータ225に転送する。論理ルータ225は、次に、L3でデータをルーティングするために、パケットに論理処理パイプライン200のステージ210(L3処理)を実行する。論理ルータ225は、このパケットを別の論理ルータ(図示せず)に送信し、又は、論理ルータ225が論理スイッチ230に結合されている場合、論理ルータ225は、パケットを論理スイッチ230に送信し、論理スイッチ230は、パケットをパケットの宛先マシンに直接送信する。パケットをパケットの宛先に直接送信する論理スイッチ230は、パケットをパケットの宛先に転送するために、論理処理パイプライン200のステージ215(L2処理)を実行する。
いくつかの実施形態では、論理スイッチ及び論理ルータは、管理されるスイッチング要素のセット(図示せず)によって実装される。いくつかの実施形態のこれらの管理されるスイッチング要素は、論理処理パイプライン200のような論理処理パイプラインを実行することによって、論理スイッチ及び論理ルータを実装する。いくつかの実施形態の管理されるスイッチング要素は、管理されるスイッチング要素のフローエントリに基づいて論理処理パイプラインを実行する。管理されるスイッチング要素のフローエントリ(図示せず)は、いくつかの実施形態のネットワーク制御システムによって構成される。論理処理パイプライン200のより詳細は、以下でさらに説明する。
次の3つの図、図3、4、及び5は、いくつかの実施形態の論理スイッチ及び論理ルータのいくつかの実装を概念的に示す。図3及び4は、集中型L3ルーティングの2つの異なる実装を示し、図5は、分散型L3ルーティングを示す。
図3は、ネットワークアーキテクチャ300を概念的に示す。具体的には、図3は、論理ルータ225が、単一のL3ルータ360(例えば、ハードウェアルータ又はソフトウェアルータ)に実装されることを示す。L3ルータ360は、異なる論理ネットワークに関するパケットをルーティングし、異なる論理ネットワークの各々は、いくつかの異なる管理されるスイッチング要素に実装されるいくつかの論理スイッチを含む。この図は、それぞれ論理的実装及び物理的実装を表す左半分及び右半分に水平方向に分割される。この図は、それぞれレイヤ2及びレイヤ3を表す下半分及び上半分に垂直方向にも分割される。図3は、L3ルータ360、並びに、管理されるスイッチング要素305、310、315、及び320を含むネットワークアーキテクチャ300を示す。この図は、論理スイッチ220及び230の各々が、3つのVMに論理的に結合されることも示す。
L3ルータ360は、論理ルータ225を実装する。L3ルータ360は、論理スイッチ220及び230を含む異なる論理ネットワーク間でパケットをルーティングする。L3ルータ360は、パケットがL3でルーティングされるべき方法を指定するL3エントリ335にしたがってパケットをルーティングする。例えば、いくつかの実施形態のL3エントリは、ルーティングテーブル内のエントリ(例えば、ルート)であり、ルーティングテーブルは、IPアドレスの特定の範囲内の宛先IPアドレスを有するパケットが、論理ルータ225の特定の論理ポートを介して送出されるべきであることを指定する。いくつかの実施形態では、論理ルータ225の論理ポートは、L3ルータのポートにマッピングされ、論理ルータ225は、マッピングに基づいてL3エントリを生成する。論理ルータのポートを、論理ルータを実装するL3ルータにマッピングすることを、以下でさらに説明する。
いくつかの実施形態の管理されるスイッチング要素305〜320は、分散的に論理スイッチを実装する。すなわち、これらの実施形態での論理スイッチは、1つ又は複数の管理されるスイッチング要素305〜320にまたがって実装されてよい。例えば、論理スイッチ220は、管理されるスイッチング要素305、310、及び315にまたがって実装されてよく、論理スイッチ230は、管理されるスイッチング要素305、315、及び320にまたがって実装されてよい。論理スイッチ220及び230に論理的に結合される6つのVM362〜374は、図示のように、管理されるスイッチング要素310〜320に結合される。
いくつかの実施形態の管理されるスイッチング要素305〜320は、それぞれ、パケットがL2で転送されるべき方法を指定するL2フローエントリにしたがってパケットを転送する。例えば、L2フローエントリは、特定の宛先MACアドレスを有するパケットが、論理スイッチの特定の論理ポートを介して送出されるべきであることを指定することができる。管理されるスイッチング要素305〜320の各々は、L2フローエントリ340のセットを有する(スイッチング要素305〜315のためのフローエントリ340は、単純化のため示されない)。各々の管理されるスイッチング要素のためのL2フローエントリは、コントローラクラスタによって、管理されるスイッチング要素内に構成される。管理されるスイッチング要素のためのL2フローエントリを構成することによって管理されるスイッチング要素を構成することを、以下でさらに詳細に説明する。
いくつかの実施形態の管理されるスイッチング要素305は、第2のレベルの管理されるスイッチング要素である。第2のレベルの管理されるスイッチング要素は、管理されるエッジスイッチング要素とは対照的に、マシンとの間でパケットを直接送受信しない、管理される非エッジスイッチング要素である。第2のレベルの管理されるスイッチング要素は、非エッジの管理されるスイッチング要素と、エッジの管理されるスイッチング要素との間のパケット交換を容易にする。米国特許出願第13/177,535号に記載されているプールノード及びエクステンダも、第2のレベルの管理されるスイッチング要素である。いくつかの実施形態の管理されるスイッチング要素305は、エクステンダとして機能する。すなわち、管理されるスイッチング要素305は、1つ又は複数の他のネットワーク(図示せず)によって分離されるリモートの管理されるネットワーク(図示せず)を、通信可能にブリッジする。
いくつかの実施形態の管理されるスイッチング要素305は、L3ルータ360に通信可能に結合される。L3でルーティングされる必要があるパケットが存在する場合、管理されるスイッチング要素310〜320は、L3ルータ360がパケットをL3でルーティングするように、管理されるスイッチング要素305にパケットを送信する。L3ルータに実装される集中型の論理ルータについてのさらなる詳細は、図6〜16を参照して以下でさらに説明する。
図4は、ネットワークアーキテクチャ400を概念的に示す。具体的には、図4は、論理ルータ225が、管理されるスイッチング要素410に実装されることを示す。L3ルータ360がL3でパケットをルーティングするネットワークアーキテクチャ300と対照的に、管理されるスイッチング要素410は、ネットワークアーキテクチャ400で、L3でパケットをルーティングする。この図は、それぞれ論理的実装及び物理的実装を表す左半分及び右半分に水平方向に分割される。この図は、それぞれレイヤ2及びレイヤ3を表す下半分及び上半分に垂直方向にも分割される。
ネットワークアーキテクチャ400は、ネットワークアーキテクチャ400がL3ルータ360を含まないことを除いて、ネットワークアーキテクチャ300と同様である。管理されるスイッチング要素410は、論理ルータ225を実装する。すなわち、管理されるスイッチング要素410は、論理スイッチ220及び230を含む異なる論理ネットワーク間でパケットをルーティングする。いくつかの実施形態の管理されるスイッチング要素410は、パケットがL3でルーティングされるべきである方法を指定するL3エントリ405にしたがってパケットをルーティングする。しかしながら、いくつかの実施形態のL3エントリ335とは対照的に、L3エントリ405は、ルーティングテーブルに関するエントリではない。そうではなく、L3エントリ405は、フローエントリである。ルーティングテーブル内のエントリは、パケットの次のホップを見つけるための適切なルックアップテーブルであるが、米国特許出願第13/177,535号に記載のように、フローエントリは、クォリファイア及びアクションを含む。また、L3フローエントリは、ルーティングテーブル(図示せず)内のエントリを生成させる方法を指定することができる。
集中型の論理ルータを実装することに加えて、いくつかの実施形態の管理されるスイッチング要素410は、いくつかの管理されるスイッチング要素にまたがって実装される1つ又は複数の論理スイッチを実装する。管理されるスイッチング要素410は、したがって、それ自体のL2フローエントリ340のセット(図示せず)を有する。アーキテクチャ400では、管理されるスイッチング要素410及び310〜320は、一緒に、分散的に論理スイッチ220及び230を実装する。
いくつかの実施形態の管理されるスイッチング要素410は、このように、集中型論理ルータ及び論理スイッチの両方を実装する。他の実施形態では、集中型論理ルータ及び論理スイッチの実装は、2つ以上の管理されるスイッチング要素に分割されてよい。例えば、ある管理されるスイッチング要素(図示せず)は、フローエントリを使用して集中型論理ルータを実装することができ、別の管理されるスイッチング要素(図示せず)は、フローエントリに基づいて分散的に論理スイッチを実装することができる。フローエントリに基づいて管理されるスイッチング要素に実装される集中型論理ルータについてのさらなる詳細は、図17〜24を参照して以下でさらに説明する。
図5は、ネットワークアーキテクチャ500を概念的に示す。具体的には、図5は、論理ルータ225が、いくつかの管理されるスイッチング要素の各々がL3でパケットをルーティングするように、分散的に実装されることを示す。図5は、ネットワークアーキテクチャ500が、4つの管理されるスイッチング要素505〜520を含むことを示す。
管理されるスイッチング要素505〜520は、いくつかの異なる論理ネットワークに関する論理ルータ及びいくつかの論理スイッチを実装する。いくつかの実施形態の管理されるスイッチング要素505〜520の各々は、エッジスイッチング要素である。すなわち、管理されるスイッチング要素は、管理されるスイッチング要素に結合される1つ又は複数のマシンを有する。管理されるスイッチング要素に結合されるマシンは、論理スイッチにも論理的に結合される。管理されるスイッチング要素に結合されるマシンは、同じ論理スイッチには論理的に結合されてもされなくてもよい。
管理されるスイッチング要素505〜520の各々は、少なくとも1つの論理ルータ及び少なくとも1つの論理スイッチで実装され、少なくとも1つの論理ルータ及び少なくとも1つの論理スイッチは、管理されるスイッチング要素に結合されたマシンとの間でパケットをルーティング及び転送することになる。すなわち、管理されるスイッチング要素が、管理されるスイッチング要素に結合されたマシンからパケットを受信すると、管理されるスイッチング要素は、論理転送決定及び論理ルーティング決定の両方を行う。管理されるスイッチング要素505〜520の各々は、論理フローエントリ550内のL2エントリ及びL3エントリにしたがって、論理転送及びルーティング決定を行う。論理フローエントリ550は、L2フローエントリ530のセット及びL3フローエントリ535のセットを含む。分散型論理ルータについてのさらなる詳細は、図25〜30Bを参照して以下でさらに説明する。
図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も示す。
管理されるスイッチング要素615は、エッジスイッチング要素に結合されたマシンからパケットを直接受信するエッジスイッチング要素である。管理されるスイッチング要素615は、送信元マシン610からパケットを受信する。管理されるスイッチング要素615が、送信元マシン610からパケットを受信すると、管理されるスイッチング要素615は、パケットを論理的に転送するために、パケットにL2処理205の一部を実行する。
管理されるスイッチング要素615と、管理されるスイッチング要素620との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物(例えば、PIF、VIF、など)を有し、ネットワーク構成物には、論理スイッチ220(図6には示さず)の論理構成物(例えば、論理ポート)がマッピングされる。
パケットが、別の論理ネットワーク内にある宛先マシン630に向けられると、パケットは、管理されるスイッチング要素620に転送される。管理されるスイッチング要素620は、次に、L2処理205の残りを実行し、パケットを、集中型論理ルータ(図示せず)を実装するL3ルータ635に送信する。
図3を参照して上述したL3ルータ360と同様に、L3ルータ635は、ハードウェアルータ又はソフトウェアルータであり、そのポートは、論理ルータのポートにマッピングされる。L3ルータ635は、パケットを論理的にルーティングするために、パケットにL3処理210を実行する。すなわち、L3ルータ635は、パケットを、別の論理ルータ(図示せず)又は管理されるスイッチング要素620に送信する。
管理されるスイッチング要素620は、いくつかの実施形態では、エクステンダとして機能する第2のレベルの管理されるスイッチング要素である。管理されるスイッチング要素620は、L3ルータ635からパケットを受信し、論理処理パイプライン200のL2処理215の実行を開始する。管理されるスイッチング要素620と、管理されるスイッチング要素625との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ230(図6には示さず)の論理構成物がマッピングされる。
この例の管理されるスイッチング要素625は、管理されるスイッチング要素620からパケットを受信する。管理されるスイッチング要素625は、パケットを論理的に転送するために、パケットにL2処理215の残りを実行する。この例では、管理されるスイッチング要素625は、パケットを宛先マシン630に直接送信するスイッチング要素でもある。しかしながら、管理されるスイッチング要素625と、宛先マシン630との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ230(図6には示さず)の論理構成物がマッピングされる。
L2処理205及びL2処理215は、この例では分散的に実行されるが、L2処理205及びL2処理215は、分散的に実行される必要はない。例えば、管理されるスイッチング要素615は、L2処理205全体を実行することができ、管理されるスイッチング要素625は、L2処理215全体を実行することができる。このような場合、管理されるスイッチング要素620は、ちょうど、L3ルータと管理されるスイッチング要素615及び625との間でパケットを中継することになる。
図7は、論理スイッチ220、論理ルータ225、及び論理スイッチ230を介してパケットを処理するいくつかの実施形態の論理処理パイプライン200を概念的に示す。具体的には、この図は、図6を参照して上述したネットワークアーキテクチャ600で実行される場合の論理処理パイプライン200を示す。上述したように、ネットワークアーキテクチャ600では、L2処理205、L3処理210、及びL2処理215は、管理されるスイッチング要素615、620、及び625、並びにL3ルータ635によって実行される。
L2処理205は、いくつかの実施形態では、管理されるスイッチング要素615及び620にまたがって実装される論理ネットワーク(図示せず)内の論理スイッチ220(図7には示さず)を介してパケットを処理する8つのステージ705〜740を含む。いくつかの実施形態では、パケットを受信する管理されるスイッチング要素615は、管理されるスイッチング要素615がパケットを受信すると、L2処理205の一部を実行する。管理されるスイッチング要素620は、次に、L2処理205の残りを実行する。
いくつかの実施形態では、パケットは、ヘッダ及びペイロードを含む。ヘッダは、いくつかの実施形態では、フィールドのセットを含み、フィールドのセットは、ネットワークを介してパケットをルーティングするために使用される情報を含む。論理スイッチ及び論理ルータは、ヘッダフィールドに含まれる情報に基づいて、スイッチング/ルーティング決定を決定することができ、いくつかの場合では、ヘッダフィールドの一部又は全部を変更することができる。
L2処理205のステージ705では、パケットの論理コンテキストを決定するために、入口コンテキストマッピングがパケットに実行される。いくつかの実施形態では、ステージ705は、論理スイッチ220がパケットを受信すると実行される(例えば、パケットは、管理されるスイッチング要素615によって最初に受信される)。論理コンテキストは、いくつかの実施形態では、論理スイッチに対するパケットの状態を表す。論理コンテキストは、例えば、パケットが属する論理スイッチ、パケットが受信されたときに通過した論理スイッチの論理ポート、パケットが送信されるときに通過する論理スイッチの論理ポート、パケットがいる論理スイッチの論理転送プレーンのステージ、などを指定する。
いくつかの実施形態は、パケットの送信元MACアドレス(すなわち、パケットを送信したマシン)に基づいて、パケットの論理コンテキストを決定する。いくつかの実施形態は、パケットの送信元MACアドレス、及び。パケットのインポート(すなわち、入口ポート)(すなわち、パケットが受信されたときに通過した管理されるスイッチング要素615のポート)に基づいて、論理コンテキストルックアップを実行する。他の実施形態は、パケットの論理コンテキストを決定するために、パケットのヘッダ(例えば、MPLSヘッダ、VLAN id、など)内の他のフィールドを使用することができる。
第1のステージ705が実行された後、いくつかの実施形態は、論理コンテキストを表す情報を、パケットヘッダの1つ又は複数のフィールドに格納する。これらのフィールドは、論理コンテキストタグ又は論理コンテキストIDと呼ぶこともできる。さらに、論理コンテキストタグは、いくつかの実施形態では、1つ又は複数の既知のヘッダフィールド(例えば、VLAN idフィールド)と一致してよい。このように、これらの実施形態は、ヘッダフィールドが使用されるために定義される方法で、既知のヘッダフィールド又はそれに付随する特徴を利用しない。代わりに、いくつかの実施形態は、論理コンテキストを表す情報を、メタデータとして格納し、メタデータは、(パケット自体に格納される代わりに)パケットに関連付けられ、パケットと共に渡される。
いくつかの実施形態では、第2のステージ710は、論理スイッチ220に関して定義される。いくつかのこのような実施形態では、ステージ710は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するとき、論理スイッチへのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチに対して定義された入口ACLに基づいて、パケットは、(例えば、ステージ715によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
L2処理205の第3のステージ715では、論理スイッチのコンテキストにおいて、パケットにL2転送がパケットに実行される。いくつかの実施形態では、第3のステージ715は、論理スイッチ220に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。
さらに、パケットの宛先が別の論理ネットワークである場合(例えば、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ220によって処理される論理ネットワークと異なる場合)、論理スイッチ220は、パケットを論理ルータ225に送信し、論理ルータ225は、次に、パケットを宛先論理ネットワークにルーティングするために、L3処理210を実行することになる。したがって、第3のステージ715では、いくつかの実施形態の管理されるスイッチング要素615は、パケットが、論理ルータ225に関連付けられた論理スイッチの論理ポート(図示せず)を介して論理ルータ225に転送されるべきであると判断する。他の実施形態では、管理されるスイッチング要素615は、パケットが論理ルータ225に転送されるべきであるかどうかを必ずしも判定しない。むしろ、パケットは、論理ルータ225のポートのアドレスを宛先アドレスとして有することになり、管理されるスイッチング要素615は、このパケットを、宛先アドレスにしたがって、論理スイッチの論理ポートを介して転送する。
第4のステージ720では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ220の1つ又は複数の論理ポート(例えば、論理出口ポート)から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチ220の特定の論理ポートに対応する1つ又は複数の管理されるスイッチング要素(管理されるスイッチング要素615及び620を含む)の物理ポート(複数可)を識別する。管理されるスイッチング要素615は、前のステージ715で決定された論理ポートがマッピングされる物理ポート(例えば、VIF)が、管理されるスイッチング要素620のポート(図示せず)であると判断する。
L2処理205の第5のステージ725は、第4のステージ720で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第4のステージ720で決定された物理ポートに向けてパケットを送信する動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第5のステージ725で決定された物理ポート(複数可)に達するために、パケットを送信するために通過する、L2処理205を実行している管理されるスイッチング要素615のポートのセット(図示せず)の1つ又は複数のポートに関連付けられた1つ又は複数のキュー(図示せず)を決定する。このように、管理されるスイッチング要素は、決定された物理ポート(複数可)にパケットが達するためのネットワーク内の正しい経路に沿って、パケットを転送することができる。
図示のように、L2処理205の第6のステージ730は、管理されるスイッチング要素620によって実行される。第6のステージ730は、第1のステージ705と同様である。ステージ730は、管理されるスイッチング要素620がパケットを受信すると実行される。ステージ730では、管理されるスイッチング要素620は、パケットの論理コンテキストをルックアップし、L2出口アクセス制御が、実行されるために残っていると判断する。
いくつかの実施形態の第7のステージ735は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第7のステージ735は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後に、論理スイッチ220外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポート外に送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、パケットは、例えば、廃棄されてよい。
第8のステージ740は、第5のステージ725と同様である。第8のステージ740では、管理されるスイッチング要素620は、論理スイッチ220の論理出口ポートがマッピングされる管理されるスイッチング要素620の特定の物理ポート(図示せず)を決定する。
L3処理210は、L3ルータ635によって実装される論理スイッチ220(図7には示さず)を介してパケットを処理するための6つのステージ745〜761を含む。上述したように、L3処理は、レイヤ3ネットワークを介してどこにパケットをルーティングするかを決定するための論理ルーティングルックアップのセットを実行することを含む。
第1のステージ745は、論理ルータ225がパケットを受信すると(すなわち、論理ルータ225を実装するL3ルータ635がパケットを受信すると)、アクセス制御を決定するための論理入口ACLルックアップを実行する。次のステージ746は、パケットにネットワークアドレス変換(NAT)を実行する。具体的には、ステージ746は、パケットの宛先アドレスを、パケットの送信元マシンから隠されている宛先マシンの実際のアドレスに戻す宛先NAT(DNAT)を実行する。このステージ746は、DNATが有効にされている場合、実行される。
次のステージ750は、パケットのL3アドレス(例えば、宛先IPアドレス)及びルーティングテーブル(例えば、L3エントリを含む)に基づいて、レイヤ3ネットワークを介してパケットを送信するために、1つ又は複数の論理ポートを決定するための論理L3ルーティングを実行する。論理ルータ225は、L3ルータ635によって実装されるため、ルーティングテーブルは、L3ルータ635内に構成される。
第4のステージ755では、いくつかの実施形態のL3ルータ635は、パケットに送信元NAT(SNAT)も実行する。例えば、L3ルータ635は、送信元NATが有効にされている場合、送信元IPアドレスを隠すために、パケットの送信元IPアドレスを異なるIPアドレスに置き換える。
第5のステージ760は、論理ルータ225が、ステージ740で決定されたポートを介してパケットを論理ルータ225の外にルーティングする前に、アクセス制御を決定するための論理L3出口ACLルックアップを実行する。L3出口ACLルックアップは、パケットのL3アドレス(例えば、送信元及び宛先IPアドレス)に基づいて実行される。
第6のステージ761は、宛先L3アドレス(例えば、宛先IPアドレス)を宛先L2アドレス(例えば、宛先MACアドレス)に変換するために、アドレス解決を実行する。いくつかの実施形態では、L3ルータ635は、宛先IPアドレスに対応する宛先L2アドレスを見つけるために、(例えば、ARP要求を送信するか、ARPキャッシュをルックアップすることによって)標準的なアドレス解決を使用する。
論理ルータ225が宛先論理ネットワークに結合されていない場合、論理スイッチ220は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。論理ルータ225が宛先論理ネットワークに結合されている場合、論理スイッチ220は、宛先論理ネットワーク(すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ)にパケットをルーティングする。
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を介して宛先に転送するように実行される。
図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を示す。
この例では、論理スイッチ220は、論理ルータ225、VM1、及びVM2間でデータパケットを転送する。論理スイッチ230は、論理ルータ225、VM3、及びVM4間でデータパケットを転送する。上述したように、論理ルータ225は、論理スイッチ220及び230並びにおそらく他の論理ルータ及びスイッチ(図示せず)間でデータパケットをルーティングする。論理スイッチ220及び230並びに論理ルータ225は、論理ポート(図示せず)を介して論理的に結合され、論理ポートを介してパケットを交換する。これらの論理ポートは、L3ルータ830並びに管理されるスイッチング要素810、815、及び820の物理ポートにマッピングされる。
いくつかの実施形態では、論理スイッチ220及び230の各々は、管理されるスイッチング要素815及び820並びにおそらく他の管理されるスイッチング要素(図示せず)にまたがって実装される。いくつかの実施形態では、論理ルータ225は、管理されるスイッチング要素810に通信可能に結合されるL3ルータ860に実装される。
この例では、管理されるスイッチング要素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つのポート(番号付けされた正方形として示される)を有する。
管理されるスイッチング要素810は、管理されるスイッチング要素810が、エクステンダとして機能する第2のレベルの管理されるスイッチング要素であるという点で、図3を参照して上述した管理されるスイッチング要素305と同様である。管理されるスイッチング要素810は、この例ではソフトウェアルータであるL3ルータ860と同じホストで動作する。
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、管理されるスイッチング要素810は、図示のように、管理されるスイッチング要素815のポート2で終端するトンネルを介して、ホスト880で動作する管理されるスイッチング要素815に結合される。同様に、管理されるスイッチング要素810は、管理されるスイッチング要素820のポート1で終端するトンネルを介して、管理されるスイッチング要素820に結合される。
異なるタイプのトンネリングプロトコルが、異なる実施形態でサポートされる。トンネリングプロトコルの例は、数あるタイプのトンネリングプロトコルの中でも、無線アクセスポイントの制御及びプロビジョニング(CAPWAP)、ジェネリックルーティングカプセル化(GRE)、GREインターネットプロトコルセキュリティ(IPsec)を含む。
この例では、ホスト880及び885の各々は、図示のように、管理されるスイッチング要素及びいくつかのVMを含む。VM1〜4は、仮想マシンであり、仮想マシンは、それぞれ、ネットワークアドレス(例えば、L2に関するMACアドレス、L3に関するIPアドレス、など)のセットを有り当てられ、他のネットワーク要素との間でネットワークデータを送受信することができる。VMは、ホスト880及び885上で動作するハイパーバイザ(図示せず)によって管理される。
ネットワークアーキテクチャ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に到達する。
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM3にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素815に送信される。管理されるスイッチング要素815は、パケットにL2処理の一部を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される(すなわち、パケットの論理L3宛先アドレスは、別の論理ネットワークのためのものである)ため、L3処理がこのパケットに実行される必要がある。
管理されるスイッチング要素815は、管理されるスイッチング要素810が、L3ルータ860にパケットを転送するために、パケットにL2処理の残りを実行するように、第2のレベルの管理されるスイッチング要素810にパケットを送信する。L3ルータ860で実行されるL3処理の結果は、パケットが、管理されるスイッチング要素810に返送されるべきであることを示すことになる。管理されるスイッチング要素810は、次に、別のL2処理の一部を実行し、L3ルータ860から受信したパケットを管理されるスイッチング要素815に転送し戻す。管理されるスイッチング要素815は、管理されるスイッチング要素810から受信したパケットにL2処理215を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素815のポート5を介してVM3に送信されるべきであることを示すことになる。
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたV4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素815に送信される。管理されるスイッチング要素815は、パケットにL2処理205を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、L3処理が実行される必要がある。
管理されるスイッチング要素815は、L3ルータ860がパケットにL3処理210を実行するように、管理されるスイッチング要素810を介してL3ルータ860にパケットを送信する。L3ルータ860で実行されるL3処理210の結果は、パケットが、管理されるスイッチング要素820に送信されるべきであることを示すことになる。管理されるスイッチング要素810は、次に、管理されるスイッチング要素から受信したパケットにL2処理の一部を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素820を介してVM4に送信されるべきであることを示すことになる。管理されるスイッチング要素820は、パケットが、管理されるスイッチング要素820のポート5を介してVM4に送信されるべきであることを決定するために、L2処理の残りを実行する。
図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を示す。
ネットワークアーキテクチャ900は、ネットワークアーキテクチャ900が、ホスト910で動作する管理されるスイッチング要素905を追加で含むことを除いて、ネットワークアーキテクチャ800と同様である。いくつかの実施形態の管理されるスイッチング要素905は、プールノードとして機能する第2のレベルの管理されるスイッチング要素である。
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、この例での管理されるスイッチング要素815は、図示のように、管理されるスイッチング要素815のポート1で終端するトンネルを介して、ホスト910で動作する管理されるスイッチング要素905に結合される。同様に、管理されるスイッチング要素820は、管理されるスイッチング要素820のポート2で終端するトンネルを介して、管理されるスイッチング要素905に結合される。また、管理されるスイッチング要素905及び810は、図示のように、トンネルを介して結合される。
論理ルータ225並びに論理スイッチ220及び230は、第2のレベルの管理されるスイッチング要素905がデータパケット交換に関わることを除いて、図8を参照して上述したL3ルータ860及び管理されるスイッチング要素810、815、及び820に実装される。すなわち、管理されるスイッチング要素815及び810は、管理されるスイッチング要素905を介してパケットを交換する。
図10は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ1000を概念的に示す。ネットワークアーキテクチャ1000は、管理されるスイッチング要素810及び管理されるスイッチング要素820間にトンネルが存在することを除いて、ネットワークアーキテクチャ800と同様である。この図は、いくつかの実施形態のネットワークアーキテクチャ1000が、ネットワークアーキテクチャ800及びネットワークアーキテクチャ900の混合物であることを示す。すなわち、いくつかの管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素とのトンネルを有し、他の管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素とパケットを交換するために、プールノードとして機能する第2のレベルの管理されるスイッチング要素を通過しなければならない。
図11は、管理されるスイッチング要素810及びL3ルータ860(図示せず)を含むいくつかの実施形態のホスト890の例示的なアーキテクチャを概念的に示す。具体的には、この図は、L3ルータ860が、ホスト890の名前空間1120に構成されることを示す。ホスト890は、いくつかの実施形態では、名前空間及び仮想マシンを作成することができるオペレーティングシステム(例えば、Linux(登録商標))によって管理されるマシンである。図示のように、この例でのホスト890は、管理されるスイッチング要素810、名前空間1120、及びNIC845を含む。この図は、コントローラクラスタ1105も示す。
コントローラクラスタ1105は、管理されるスイッチング要素810を含むネットワーク要素を管理するネットワークコントローラ又はコントローラインスタンスのセットである。この例での管理されるスイッチング要素810は、ユーザ空間1112及びカーネル1110を含むホスト890に実装されるソフトウェアスイッチング要素である。管理されるスイッチング要素810は、ユーザ空間1115で動作している制御デーモン1115、並びに、カーネル1110で動作しているコントローラパッチ1130及びブリッジ1135を含む。ユーザ空間1115及びカーネル1110は、いくつかの実施形態では、ホスト890のためのオペレーティングシステムのものであり、他の実施形態では、ユーザ空間1115及びカーネル1110は、ホスト890上で動作している仮想マシンのものである。
いくつかの実施形態では、コントローラクラスタ1105は、制御デーモン1115と(例えば、オープンフロープロトコル又は別の通信プロトコルを使用することによって)通信し、制御デーモン1115は、いくつかの実施形態では、ユーザ空間1112のバックグラウンドで動作しているアプリケーションである。制御デーモン1115は、管理されるスイッチング要素810が受信するパケットを処理し、ルーティングするために、コントローラクラスタ1105と通信する。具体的には、制御デーモン1115は、いくつかの実施形態では、コントローラクラスタ1105から構成情報を受信し、コントローラパッチ1130を構成する。例えば、制御デーモン1115は、管理されるスイッチング要素810が受信するパケットを処理し、ルーティングするための動作に関して、コントローラクラスタ1105からコマンドを受信する。
制御デーモン1115は、論理ルータが、ルーティングテーブル及び他のテーブルに適切なエントリをポピュレートするために、名前空間1120に実装された論理ルータ(図示せず)と接続するポート(図示せず)を設定するために、コントローラパッチ1130のための構成情報も受信する。
コントローラパッチ1130は、カーネル1110内で動作するモジュールである。いくつかの実施形態では、制御デーモン1115は、コントローラパッチ1113を構成する。構成されると、コントローラパッチ1113は、受信するパケットの処理及び転送に関するルール(例えば、フローエントリ)を含む。いくつかの実施形態のコントローラパッチ1130は、また、パケットを名前空間1120と交換するために、ポート(例えば、VIF)のセットを作成する。
コントローラパッチ1130は、カーネル1110のネットワークスタック1150から、又は、ブリッジ1135からパケットを受信する。コントローラパッチ1130は、パケットの処理及びルーティングに関するルールに基づいて、どの名前空間にパケットを送信するのかを決定する。コントローラパッチ1130は、また、名前空間1120からパケットを受信し、ルールに基づいて、ネットワークスタック1150又はブリッジ1135にパケットを送信する。管理されるスイッチング要素のアーキテクチャについてのさらなる詳細は、米国特許出願第13/177,535号に記載されている。
名前空間1120(例えば、Linux(登録商標)名前空間)は、ホスト890で作成されるコンテナである。名前空間1120は、ネットワークスタック、ネットワークデバイス、ネットワークアドレス、ルーティングテーブル、ネットワークアドレス変換テーブル、ネットワークキャシュ、など(これらのすべてが、図11に示されているというわけではない)を実装することができる。名前空間1120は、したがって、名前空間が、論理送信元又は宛先アドレスを有するパケットを処理するように構成されている場合、論理ルータを実装することができる。名前空間1120は、例えば、名前空間のルーティングテーブル1155を構成することによって、このようなパケットを処理するように構成されてよい。いくつかの実施形態では、名前空間1120は、名前空間1120が管理されるスイッチング要素810に接続し、パケットを交換する(すなわち、動的ルーティング)につれて、ルーティングテーブル1155をポピュレートする。他の実施形態では、コントローラクラスタ1105は、ルーティングテーブル1155にルートをポピュレートすることによって、ルーティングテーブル1155を直接構成することができる。
さらに、名前空間は、いくつかの実施形態では、名前空間がルーティングするパケットにネットワークアドレス変換(NAT)も実行する。例えば、名前空間が、受信したパケットの送信元ネットワークアドレスを別のネットワークアドレスに変更する(すなわち、送信元NATを実行する)場合である。
ブリッジ1135は、ネットワークスタック1150と、ホストの外部のネットワークホストとの間で、ネットワークデータ(すなわち、NIC1145を介して受信したネットワークデータ)をルーティングする。図示のように、ブリッジ1135は、ネットワークスタック1150及びNIC1145間、並びに、コントローラパッチ1130及びNIC1145間でネットワークデータをルーティングする。いくつかの実施形態のブリッジ1135は、標準的なL2パケット学習及びルーティングを実行する。
ネットワークスタック1150は、NIC1145を介して、管理されるスイッチング要素810の外部のネットワークホストからパケットを受信することができる。ネットワークスタック1150は、次に、コントローラパッチ1130にパケットを送信する。いくつかの場合では、パケットは、トンネルを介して、管理されるスイッチング要素の外部のネットワークホストから受信される。いくつかの実施形態では、トンネルは、ネットワークスタック1150で終端する。したがって、ネットワークスタック1150が、トンネルを介してパケットを受信すると、ネットワークスタック1150は、トンネルヘッダをアンラップし(すなわち、ペイロードをデカプセルし)、アンラップされたパケットをコントローラパッチ1130に送信する。
ここで、管理されるスイッチング要素810及び名前空間1120の例示的な動作を説明する。この例では、トンネルが、ホスト890の外部の管理されるスイッチング要素810及び管理されるスイッチング要素815及び820(図11には示さず)間に確立される。すなわち、管理されるスイッチング要素810、815、及び820は、図8に示すようなトンネルを介して接続される。トンネルは、ネットワークスタック1150で終端する。
管理されるスイッチング要素815は、VM1〜VM4によって送信されたパケットを、管理されるスイッチング要素810に送信する。パケットは、NIC1145によって受信され、次に、ブリッジ1135に送信される。パケットヘッダ内の情報に基づいて、ブリッジ1135は、パケットは、確立されたトンネルを介して送信されると判断し、パケットをネットワークスタック1150に送信する。ネットワークスタック1150は、トンネルヘッダをアンラップし、アンラップされたパケットをコントローラパッチ1130に送信する。
パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、コントローラパッチ1130が有するルールにしたがって、コントローラパッチ1130は、パケットを名前空間1120に送信する。例えば、ルールは、特定の宛先MACアドレスを有するパケットは、名前空間1120に送信されるべきであると指示することができる。いくつかの場合では、コントローラパッチ1130は、パケットを名前空間に送信する前に、パケットから論理的コンテキストを除去する。次に、名前空間1120は、2つの論理ネットワーク間でパケットをルーティングするために、パケットにL3処理を実行する。
L3処理を実行することによって、名前空間1120は、宛先ネットワークレイヤアドレスが、宛先論理ネットワークに属する論理スイッチに行くべきであるため、パケットがコントローラパッチ1130に送信されるべきであると判断する。コントローラパッチ1130は、宛先論理ネットワークに属する論理スイッチを実装する管理されるスイッチング要素820へのトンネルを越えて、ネットワークスタック1150、ブリッジ1135、及び、NIC1145を介して、パケットを受信し、パケットを送信する。
上述したように、いくつかの実施形態は、L3ルータ860を名前空間1120に実装する。しかしながら、他の実施形態は、L3ルータ860を、ホスト890上で動作するVMに実装する。
図12は、管理されるスイッチング要素内の論理スイッチ及び論理ルータ、並びにL3ルータの例示的な実装を概念的に示す。具体的には、この図は、ホスト890内の論理ルータ225,並びに論理スイッチ220及び230の実装を示し、ホスト890は、第2のレベルの管理されるスイッチング要素810及びL3ルータ860、並びに管理されるスイッチング要素815及び820を含む。図は、図の左半分に、論理ルータ225、並びに論理スイッチ220及び230を示す。この図は、図の右半分に、第2のレベルの管理されるスイッチング要素810、並びに管理されるスイッチング要素815及び820を示す。図は、右及び左半分の両方に、VM1〜4を示す。簡単にするために、この図は、管理されるスイッチング要素のすべての構成要素、例えば、ネットワークスタック1150を示さない。
論理スイッチ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にパケットを送出する。
この例では、コントローラクラスタ(図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にマッピングされる。
同様に、管理されるスイッチング要素810のポート2は、論理スイッチ230のポートYと関連付けられた同じMACアドレス、01:01:01:01:01:02と関連付けられる。したがって、管理されるスイッチング要素810が、このMACアドレスを宛先MACアドレスとして有するパケットを受信すると、管理されるスイッチング要素810は、管理されるスイッチング要素810のポート2を介して、L3ルータ860にパケットを送出する。このように、論理スイッチ230のポートYは、管理されるスイッチング要素810のポート2にマッピングされる。
この例では、論理ルータ225は、論理ポート1及び2、並びに他の論理ポート(図示せず)を有する。論理ルータ225のポート1は、ポート1の背後にあるサブセットを表すIPアドレス1.1.1.1/24と関連付けられる。すなわち、論理ルータ225が、ルーティングするためにパケットを受信し、パケットが宛先IPアドレス、例えば、1.1.1.10を有する場合、論理ルータ225は、このパケットを、ポート1を介して宛先論理ネットワーク(例えば、論理サブネット)に向けて送信する。
同様に、この例の論理ルータ225のポート2は、ポート2の背後にあるサブセットを表すIPアドレス1.1.2.1/24と関連付けられる。論理ルータ225は、宛先IPアドレス、例えば、1.1.2.10を有するパケットを、ポート2を介して宛先論理ネットワークに送信する。
この例では、L3ルータ860は、L3ルータ860のルーティングテーブル(図示せず)にルートをポピュレートすることによって、論理ルータ225を実装する。いくつかの実施形態では、L3ルータ860は、管理されるスイッチング要素810が、L3ルータ860との接続を確立し、パケットを送信するときに、そのルーティングテーブルをポピュレートする。例えば、L3ルータが、管理されるスイッチング要素から最初のパケットを受信すると、L3ルータ860は、最初のパケットの送信元アドレスを宛先アドレスとして有するパケットが、管理されるスイッチング要素810に送信されるべきであることを知る。L3ルータは、最初のパケットがどこに送信されるのかを知るために、(例えば、ARP要求を送信することによって)標準的なアドレス解決を実行することもできる。L3ルータ860は、これらの「ルート」をルーティングテーブルに格納し、その後にL3ルータが受信するパケットのルーティング決定を行う際に、これらのテーブルをルックアップすることになる。他のL3ルータ(図示せず)は、これらのルーティングテーブルを同様にポピュレートすることができる。
他の実施形態では、コントローラクラスタは、L3ルータ860のポート1が、論理ルータ225のポート1に関連付けられた同じIPアドレスと関連付けられるように、L3ルータ860のルーティングテーブルを構成する。同様に、L3ルータ860のポート2は、論理ルータ225のポート2と関連付けられた同じIPアドレスと関連付けられる。
同様の方法で、別の論理スイッチ(図示せず)が、管理されるスイッチング要素の別のL3ルータ(図示せず)に実装されてよい。これらの実施形態のいくつかでは、制御クラスタは、L3ルータを構成するために、1つ又は複数のルーティングプロトコルを用いることができる。
図13A〜13Cは、図12を参照して上述した管理されるスイッチング要素810、815、及び820、並びにL3ルータ860に実装された、論理スイッチ220及び230、並びに論理ルータ225の例示的な動作を概念的に示す。具体的には、図13A〜13Cは、VM1〜VM4から送信されたパケットがどのようにVM4に達するかを示す。
論理スイッチ220に結合されるVM1が、論理スイッチ230に結合されるVM4にパケット1330を送信すると、パケットは、最初に、管理されるスイッチング要素815のポート4を介して、管理されるスイッチング要素815に送信される。管理されるスイッチング要素815は、パケットにL2処理を実行する。
図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アドレスとして有する。
管理されるスイッチング要素815は、ステージ1340のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、VM1からパケット1330を受信するポート4である入口ポートに基づいて、パケット1330の論理コンテキストを識別する。加えて、いくつかの実施形態では、レコード1は、管理されるスイッチング要素815が、パケット1330の論理コンテキストを、パケット1330のヘッダのフィールドのセット(例えば、VLAN idフィールド)に格納することを指定する。他の実施形態では、管理されるスイッチング要素815は、論理コンテキスト(すなわち、パケットが属する論理スイッチ、並びに、その論理スイッチの論理入口ポート)を、パケットではなく、スイッチのレジスタ、又はメタフィールドに格納する。レコード1は、また、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。ディスパッチポートは、米国特許出願第13/177,535号に記載されている。
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素815は、ステージ1342の入口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2と呼ぶ」)を識別する。この例では、レコード2は、パケット1330がさらに処理されることを可能にし(例えば、パケット1330は、論理スイッチ220の入口ポートを通り抜けることができる)、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素815が、パケット1330の論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300の第2のステージ1342によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素815は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1344の論理L2転送を実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、論理ルータ225の論理ポート1のMACアドレスを宛先MACアドレスとして有するパケットが、論理スイッチ220の論理ポートXに送信されるべきであることを指定する。
レコード3は、また、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード3は、管理されるスイッチング要素815が、論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300の第3のステージ1344によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素815は、ステージ1346のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。この例では、レコード4は、L3ルータ860のポート1が結合される管理されるスイッチング要素810のポート1を、パケット1330が転送されるべき論理スイッチ220の論理ポートXに対応するポートとして識別する。レコード4は、加えて、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素815は、次に、ステージ1348の物理マッピングを実装する転送テーブル内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。レコード5は、パケット1330が、管理されるスイッチング要素810に到達するために、パケット1330が、管理されるスイッチング要素815のポート1を介して送信されるべきであることを指定する。この場合では、管理されるスイッチング要素815は、パケット1330を、管理されるスイッチング要素810に結合される管理されるスイッチング要素815のポート1から送出することになる。
図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をディスパッチポートに送信することによって)さらに処理されることを指定する。
次に、管理されるスイッチング要素810は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1352の出口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット1330がさらに処理されることを可能にし(例えば、パケット1330は、論理スイッチ220のポート「X」を介して論理スイッチ220から出ることができる)、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素810が、パケット1330の論理コンテキスト(例えば、パケット1330は、処理パイプライン1300のステージ1352によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素810は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1354の物理マッピングを実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、パケット1330がL3ルータ860に到達するために、パケット1330が送信されるべき管理されるスイッチング要素810のポートを指定する。この場合では、管理されるスイッチング要素810は、パケット1330を、L3ルータ860のポート1に結合される管理されるスイッチング要素810のポート1から送出することになる。いくつかの実施形態では、管理されるスイッチング要素810は、パケットをL3ルータ860に送信する前に、パケット1330から論理コンテキストを除去する。
図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)に書き換える。
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に送信することになる。
図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をディスパッチポートに送信することによって)さらに処理されることを指定する。
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素810は、次に、ステージ1364の入口ACLを実装する転送テーブル内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。この例では、レコード5は、パケット1330がさらに処理されることを可能にし、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード5は、管理されるスイッチング要素810が、パケット1330の論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300のステージ1362によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素810は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1366の論理L2転送を実装する転送テーブル内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。レコード6は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、論理スイッチ230の論理ポート(図示せず)を介して転送されるべきであることを指定する。
レコード6は、また、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード6は、管理されるスイッチング要素810が、論理コンテキスト(すなわち、パケット1330は、処理パイプライン1300のステージ1366によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素810は、ステージ1368のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた7によって示されるレコード(「レコード7」と呼ぶ)を識別する。この例では、レコード7は、VM4が結合される管理されるスイッチング要素820のポート5を、パケット1330が転送されるべき論理スイッチ230の論理ポート(ステージ1366で決定される)に対応するポートとして識別する。レコード7は、加えて、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素810は、次に、ステージ1370の物理マッピングを実装する転送テーブル内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。レコード8は、パケット1330が、管理されるスイッチング要素820に到達するために、パケット1330が送信されるべき管理されるスイッチング要素810のポート(図示せず)を指定する。この場合では、管理されるスイッチング要素810は、パケット1330を、管理されるスイッチング要素820に結合される管理されるスイッチング要素810のポートから送出することになる。
図13Cに示すように、管理されるスイッチング要素820は、パケット1330を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素820が、管理されるスイッチング要素810からパケット1330を受信すると、管理されるスイッチング要素820は、管理されるスイッチング要素820の転送テーブルに基づいて、パケット1330の処理を開始する。管理されるスイッチング要素820は、ステージ1372のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。レコード4は、パケット1330のヘッダに格納された論理コンテキストに基づいて、パケット1330の論理コンテキストを識別する。論理コンテキストは、パケット1330が、管理されるスイッチング要素810によって実行されたステージ1364及び1366によって処理されていることを指定する。このように、レコード4は、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。
次に、管理されるスイッチング要素820は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1374の出口ACLを実装する転送テーブル内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。この例では、レコード5は、パケット1330がさらに処理されることを可能にし、したがって、パケット1330が、転送テーブルによって(例えば、パケット1330をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード5は、管理されるスイッチング要素820が、パケット1330の論理コンテキスト(例えば、パケット1330は、処理パイプライン1300のステージ1374によって処理されている)を、パケット1330のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素820は、パケット1330のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1376の物理マッピングを実装する転送テーブル内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。レコード6は、パケット1330がVM4に到達するために、パケット1330が送信されるべき管理されるスイッチング要素820のポート5を指定する。この場合では、管理されるスイッチング要素820は、VM4に結合される管理されるスイッチング要素820のポート5からパケット1330を送出することになる。いくつかの実施形態では、管理されるスイッチング要素820は、パケットをVM4に送信する前に、パケット1330から論理コンテキストを除去する。
図14は、どの管理されるスイッチング要素にパケットを送信するかを決定するために、パケットを転送するためにいくつかの実施形態が実行するプロセス1400を概念的に示す。プロセス1400は、いくつかの実施形態では、パケットを受信し、別の管理されるスイッチング要素、又はパケットの宛先マシンにパケットを送信する管理されるスイッチング要素によって実行される。
プロセス1400は、(1405で)送信元マシンからパケットを受信することによって開始する。プロセス1400は、次に、(1410で)L2処理の一部を実行する。プロセスがL2処理を実行するにしたがって、プロセス1400は、(1415で)パケットが、パケットのさらなる処理のために第2のレベルの管理されるスイッチング要素に送信される必要があるかどうかを判定する。いくつかの実施形態では、プロセスは、パケットの宛先L2アドレスに基づいてこの判定を行う。プロセスは、宛先L2アドレスを見て、宛先L2アドレスと関連付けられたポートを介してパケットを送出する。例えば、パケットの宛先L2アドレスが、L3ルータのL2アドレスである場合、プロセスは、L3ルータと関連付けられた管理されるスイッチング要素と関連付けられたポートからパケットを送出する。パケットの宛先L2アドレスが、宛先マシンのL2アドレスである場合、プロセスは、宛先マシン、又は、宛先マシンへのルート中でより近い管理されるスイッチング要素に直接接続された管理されるスイッチング要素にパケットを送信する。
プロセス1400が、(1415で)パケットが第2のレベルの管理されるスイッチング要素に送信される必要があると判定すると、プロセス1400は、(1420で)論理ルータを実装するL3ルータに通信可能に結合された第2のレベルの管理されるスイッチング要素にパケットを送信する。そうでなければ、プロセス1400は、(1425で)宛先マシン、又は別の管理されるスイッチング要素にパケットを送信する。次に、プロセスは、終了する。
図15は、上述したホスト890を概念的に示す。具体的には、管理されるスイッチング要素810が、L3ルータからパケットを受信し、パケットが、同じホスト890に実装された別のL3ルータに向けられている場合、管理されるスイッチング要素810は、フローエントリに基づいて、2つのL3ルータを直接ブリッジする。
図示のように、管理されるスイッチング要素810は、2つのL3ルータ1及び2に結合される。管理されるスイッチング要素810が含むフローエントリは、図の右側に示されている。フローエントリは、一方のL3ルータから別のL3ルータにアドレスされるトラフィックが、他のL3ルータに直接行くべきであることを示す。
また、この図は、追加のネットワークトラフィックをルーティングするために、より多くの管理されるスイッチング要素が設けられ、既存のL3ルータに依存する場合、追加のルーティングリソースを提供するために、追加のルータが、ホスト890に設けられてよいことを示す。
図16は、第1及び第2のL3ルータが同じホストに実装されている場合、第1のL3ルータから第2のL3ルータにパケットを直接転送するためにいくつかの実施形態が使用するプロセス1600を概念的に示す。プロセス1600は、いくつかの実施形態では、上述した管理されるスイッチング要素810のような管理されるスイッチング要素によって実行され、管理されるスイッチング要素は、単一のホストに実装される2つ以上のL3ルータとパケットを交換する。
プロセス1600は、(1605で)第1のL3ルータからパケットを受信することによって開始する。プロセス1600は、次に、(1610で)パケットが、第1のL3ルータが実装されているのと同じホストに実装されている第2のL3ルータにアドレスされているかどうかを判定する。プロセス1600は、これを、パケットのヘッダ内の情報(例えば、宛先MACアドレス)を調べることによって判定する。
プロセス1600が、(1610で)パケットが第2のL3ルータに向けられていると判定した場合、プロセス1600は、パケットを第2のL3ルータに送信する。そうでなければ、プロセス1600は、パケットの宛先(例えば、別の管理されるスイッチング要素又は宛先マシン)に向けてパケットを送信する。次に、プロセス1600は、終了する。
図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も示す。
管理されるスイッチング要素1715は、管理されるスイッチング要素1715も、エッジスイッチング要素に結合されたマシンからパケットを直接受信するエッジスイッチング要素であるという点で、図6を参照して上述した管理されるスイッチング要素615と同様である。管理されるスイッチング要素1715は、送信元マシン1710からパケットを受信する。管理されるスイッチング要素1715が、送信元マシン1710からパケットを受信すると、管理されるスイッチング要素1715は、パケットを論理的に転送するために、パケットにL2処理205の一部を実行する。パケットが、別の論理ネットワークにある宛先マシン1730に向けられている場合、パケットは、管理されるスイッチング要素1720に転送される。
管理されるスイッチング要素1715と、管理されるスイッチング要素1720との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物(例えば、PIF、VIF、など)を有し、ネットワーク構成物には、論理スイッチ220(図17には示さず)の論理構成物(例えば、論理ポート)がマッピングされる。
管理されるスイッチング要素1720は、いくつかの実施形態ではエクステンダとして機能する第2のレベルの管理されるスイッチング要素である。管理されるスイッチング要素1720は、L2処理205の残りを実行し、L3処理210も実行する。管理されるスイッチング要素1720は、また、論理処理パイプライン200のL2処理215の一部を実行する。管理されるスイッチング要素1720は、次に、管理されるスイッチング要素1725にパケットを送信する。
管理されるスイッチング要素1720と、管理されるスイッチング要素1725との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ220(図17には示さず)の論理構成物がマッピングされる。
この例の管理されるスイッチング要素1725は、管理されるスイッチング要素1720からパケットを受信する。管理されるスイッチング要素1725は、パケットを論理的に転送するために、パケットにL2処理215の残りを実行する。この例では、管理されるスイッチング要素1725は、パケットを宛先マシン1730に直接送信するスイッチング要素でもある。しかしながら、管理されるスイッチング要素1725と、宛先マシン1130との間に、1つ又は複数の管理されるスイッチング要素(図示せず)が存在してよい。これらの管理されるスイッチング要素は、ネットワーク構成物を有し、ネットワーク構成物には、論理スイッチ230(図17には示さず)の論理構成物がマッピングされる。
L2処理205及びL2処理215は、この例では分散的に実行されるが、L2処理205及びL2処理215は、分散的に実行される必要はない。例えば、管理されるスイッチング要素1715は、L2処理205全体を実行することができ、管理されるスイッチング要素1725は、L2処理215全体を実行することができる。このような場合、管理されるスイッチング要素1720は、論理処理パイプライン200のL3処理210のみを実行することになる。
図18は、論理スイッチ220、論理ルータ225、及び論理スイッチ230を介してパケットを処理するいくつかの実施形態の論理処理パイプライン200を概念的に示す。具体的には、この図は、図17を参照して上述したネットワークアーキテクチャ1700で実行される場合の論理処理パイプライン200を示す。上述したように、ネットワークアーキテクチャ1700では、L2処理205、L3処理210、及びL2処理215は、管理されるスイッチング要素1715、1720、及び1725によって実行される。
L2処理205は、いくつかの実施形態では、管理されるスイッチング要素1715及び1720にまたがって実装される論理ネットワーク(図示せず)内の論理スイッチ220(図18には示さず)を介してパケットを処理する7つのステージ1805〜1835を含む。いくつかの実施形態では、パケットを受信する管理されるスイッチング要素1715は、管理されるスイッチング要素1715がパケットを受信すると、L2処理205の一部を実行する。管理されるスイッチング要素1720は、次に、L2処理205の残りを実行する。
最初の5つのステージ1805〜1825は、図7を参照して上述した最初の5つのステージ705〜725と同様である。L2処理205のステージ1805では、パケットの論理コンテキストを決定するために、パケットに入口コンテキストマッピングが実行される。いくつかの実施形態では、ステージ1805は、論理スイッチ220がパケットを受信する(例えば、パケットが、管理されるスイッチング要素1715によって受信される)と実行される。第1のステージ1805が実行された後、いくつかの実施形態は、論理コンテキストを表す情報を、パケットのヘッダの1つ又は複数のフィールドに格納する。
いくつかの実施形態では、第2のステージ1810は、論理スイッチ220のために定義される。いくつかのこのような実施形態では、ステージ1810は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するとき、論理スイッチへのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチに対して定義された入口ACLに基づいて、パケットは、(例えば、ステージ1815によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
L2処理205の第3のステージ1815では、論理スイッチのコンテキストにおいて、パケットにL2転送が実行される。いくつかの実施形態では、第3のステージ1815は、論理スイッチ220に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。さらに、パケットの宛先が別の論理ネットワークである場合(例えば、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ220によって処理される論理ネットワークと異なる場合)、論理スイッチ220は、パケットを論理ルータ225に送信し、論理ルータ225は、次に、パケットを宛先論理ネットワークにルーティングするために、L3処理210を実行することになる。したがって、第3のステージ1815では、管理されるスイッチング要素1715は、パケットが、論理ルータ225に関連付けられた論理スイッチの論理ポート(図示せず)を介して論理ルータ225に転送されるべきであると判断する。
第4のステージ1820では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ220の1つ又は複数の論理ポート(例えば、論理出口ポート)から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチ220の特定の論理ポートに対応する1つ又は複数の管理されるスイッチング要素(管理されるスイッチング要素1715及び1720を含む)の物理ポート(複数可)を特定する。管理されるスイッチング要素1715は、前のステージ1815で決定された論理ポートがマッピングされる物理ポート(例えば、VIF)が、管理されるスイッチング要素1720のポート(図示せず)であると判断する。
L2処理205の第5のステージ1825は、第4のステージ1820で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第4のステージ1820で決定された物理ポートに向けてパケットを送信する動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第4のステージ1820で決定された物理ポート(複数可)に達するために、パケットを送信するために通過する、L2処理205を実行している管理されるスイッチング要素1715のポートのセット(図示せず)の1つ又は複数のポートに関連付けられた1つ又は複数のキュー(図示せず)を決定する。このように、管理されるスイッチング要素は、決定された物理ポート(複数可)にパケットが達するためのネットワーク内の正しい経路に沿って、パケットを転送することができる。
図示のように、L2処理205の第6のステージ1830は、管理されるスイッチング要素1720によって実行される。第6のステージ1830は、第1のステージ1805と同様である。ステージ1830は、管理されるスイッチング要素1720がパケットを受信すると実行される。ステージ1830では、管理されるスイッチング要素1720は、パケットの論理コンテキストをルックアップし、L2出口アクセス制御が、実行されるために残っていると判断する。
いくつかの実施形態の第7のステージ1835は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第7のステージ1835は、論理スイッチ220に対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後に、論理スイッチ220外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポート外に送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、パケットは、例えば、廃棄されてよい。
L3処理210は、論理スイッチ220(図18には示さず)を介してパケットを処理するための6つのステージ1840〜1856を含み、論理スイッチ220は、管理されるスイッチング要素1720のL3フローエントリに基づいて、管理されるスイッチング要素1720に実装される。上述したように、L3処理は、レイヤ3ネットワークを介してどこにパケットをルーティングするか決定するための論理ルーティングルックアップのセットを実行することを含む。
第1のステージ1840は、論理ルータ225がパケットを受信すると(すなわち、論理ルータ225を実装する管理されるスイッチング要素1720がパケットを受信すると)、アクセス制御を決定するための論理入口ACLルックアップを実行する。次のステージ1841は、パケットの宛先アドレスを、パケットの送信元マシンから隠されている宛先マシンの実際のアドレスに戻すために、DNATを実行する。このステージ1841は、DNATが有効にされている場合、実行される。
次のステージ1845は、パケットL3アドレス(例えば、宛先IPアドレス)及びルーティングテーブル(例えば、L3エントリを含む)に基づいて、レイヤ3ネットワークを介してパケットを送信するための1つ又は複数の論理ポートを決定するための論理L3ルーティングを実行する。論理ルータ225は、管理されるスイッチング要素1720によって実装されるため、L3フローエントリは、管理されるスイッチング要素1720内に構成される。
第4のステージ1850では、いくつかの実施形態の管理されるスイッチング要素1720は、パケットにSNATも実行する。例えば、管理されるスイッチング要素1720は、送信元NATが有効にされている場合、送信元IPアドレスを隠すために、パケットの送信元IPアドレスを異なるIPアドレスに置き換える。また、以下にさらに説明するように、管理されるスイッチング要素は、ネットワークアドレスを変換するためのフローエントリを受信するために、NATデーモンを使用することができる。NATデーモンは、図31を参照してさらに後述される。
第5のステージ1855は、論理ルータ225が、ステージ1845で決定されたポートを介してパケットを論理ルータ225の外にルーティングする前に、アクセス制御を決定するための論理L3出口ACLルックアップを実行する。L3出口ACLルックアップは、パケットのL3アドレス(例えば、送信元及び宛先IPアドレス)に基づいて実行される。
第6のステージ1856は、宛先L3アドレス(例えば、宛先IPアドレス)を宛先L2アドレス(例えば、宛先MACアドレス)に変換するために、アドレス解決を実行する。いくつかの実施形態では、管理されるスイッチング要素1720は、宛先IPアドレスに対応する宛先L2アドレスを見つけるために、(例えば、ARP要求を送信するか、ARPキャッシュをルックアップすることによって)標準的なアドレス解決を使用する。また、以下にさらに説明するように、いくつかの実施形態の管理されるスイッチング要素1720は、L3アドレスをL2アドレスに解決するためのフローエントリを受信するために、L3デーモンを使用することができる。L3デーモンは、図48〜50を参照してさらに後述される。
論理ルータ225が宛先論理ネットワークに結合されていない場合、論理スイッチ220は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。論理ルータ225が宛先論理ネットワークに結合されている場合、論理スイッチ220は、宛先論理ネットワーク(すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ)にパケットをルーティングする。
L2処理215は、いくつかの実施形態では、管理されるスイッチング要素1720及び1725(図示せず)にまたがって実装される別の論理ネットワーク(図18には示さず)内の論理スイッチ230を介してパケットを処理するための7つのステージ1860〜1890を含む。ステージ1860〜1890は、ステージ1860〜1890が、論理スイッチ230によって(すなわち、論理スイッチ230を実装する管理されるスイッチング要素1720及び1725によって)実行される点を除いて、それぞれ、ステージ1805〜1835と同様である。
図19は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ1900を概念的に示す。具体的には、ネットワークアーキテクチャ1900は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、それぞれ、ホスト1990、1980、及び1985(例えば、Windows(登録商標)及びLinux(登録商標)のようなオペレーティングシステムによって動作されるマシン)で動作している、第2のレベルの管理されるスイッチング要素1910、管理されるスイッチング要素1915及び1920を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
この例では、論理スイッチ220は、論理ルータ225、VM1、及びVM2間でデータパケットを転送する。論理スイッチ230は、論理ルータ225、VM3、及びVM4間でデータパケットを転送する。上述したように、論理ルータ225は、論理スイッチ220及び230並びにおそらく他の論理ルータ及びスイッチ(図示せず)間でデータパケットをルーティングする。論理スイッチ220及び230並びに論理ルータ225は、論理ポート(図示せず)を介して論理的に結合され、論理ポートを介してパケットを交換する。これらの論理ポートは、L3ルータ1960並びに管理されるスイッチング要素1910、1915、及び1920の物理ポートにマッピングされる。
いくつかの実施形態では、論理スイッチ220及び230の各々は、管理されるスイッチング要素1915及び1920並びにおそらく他の管理されるスイッチング要素(図示せず)にまたがって実装される。いくつかの実施形態では、論理ルータ225は、管理されるスイッチング要素1910に通信可能に結合されるL3ルータ1960に実装される。
この例では、管理されるスイッチング要素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つのポート(番号付けされた正方形として示される)を有する。
管理されるスイッチング要素1910は、管理されるスイッチング要素1910が、エクステンダとして機能する第2のレベルの管理されるスイッチング要素であるという点で、図4を参照して上述した管理されるスイッチング要素305と同様である。管理されるスイッチング要素560は、また、フローエントリに基づいて論理ルータ225を実装する。これらのフローエントリを使用して、管理されるスイッチング要素1910は、L3でパケットをルーティングする。この例では、管理されるスイッチング要素1910に実装される論理ルータ225は、管理されるスイッチング要素1910及び1915にまたがって実装される論理スイッチ220と、管理されるスイッチング要素1910及び1920にまたがって実装される論理スイッチ230との間でパケットをルーティングする。
この例では、図示のように、管理されるスイッチング要素1910は、ホスト1980で動作する管理されるスイッチング要素1915に、管理されるスイッチング要素1915のポート2で終端するトンネルを介して結合される。同様に、管理されるスイッチング要素1910は、管理されるスイッチング要素1920に、管理されるスイッチング要素1920のポート1で終端するトンネルを介して結合される。
この例では、図示のように、ホスト1980及び1985の各々は、管理されるスイッチング要素及びいくつかのVMを含む。VM1〜VM4は、それぞれネットワークアドレス(例えば、L2のためのMACアドレス、L3のためのIPアドレス、など)のセットが割り当てられた仮想マシンであり、他のネットワーク要素との間でネットワークデータを送受信することができる。VMは、ホスト1980及び1985で動作するハイパーバイザ(図示せず)によって管理される。
ネットワークアーキテクチャ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に到達する。
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM3にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素1915に送信される。管理されるスイッチング要素1915は、パケットにL2処理の一部を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される(すなわち、パケットの論理L3宛先アドレスは、別の論理ネットワークのためのものである)ため、L3処理がこのパケットに実行される必要がある。
管理されるスイッチング要素1915は、管理されるスイッチング要素1910が、パケットにL2処理の残り及びL3処理210を実行するように、第2のレベルの管理されるスイッチング要素1910にパケットを送信する。管理されるスイッチング要素1910は、次に、別のL2処理の一部を実行し、管理されるスイッチング要素1920にパケットを転送する。管理されるスイッチング要素1915は、管理されるスイッチング要素1910から受信したパケットにL2処理215を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素1915のポート5を介してVM3に送信されるべきであることを示すことになる。
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信する場合、パケットは、最初に、管理されるスイッチング要素1915に送信される。管理されるスイッチング要素1915は、パケットにL2処理205を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、L3処理が実行される必要がある。
管理されるスイッチング要素1915は、管理されるスイッチング要素1910が、パケットにL2処理205の残り及びL3処理210を実行するように、管理されるスイッチング要素1910にパケットを送信する。管理されるスイッチング要素1910で実行されるL3処理210の結果は、パケットが、管理されるスイッチング要素1915に送信されるべきであることを示す。管理されるスイッチング要素1910は、次に、パケットにL2処理の一部を実行し、このL2処理の結果は、パケットが、管理されるスイッチング要素1920を介してVM4に送信されるべきであることを示す。管理されるスイッチング要素1920は、パケットが、管理されるスイッチング要素1920のポート5を介してVM4に送信されるべきであることを決定するために、L2処理の残りを実行する。
図20は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2000を概念的に示す。具体的には、ネットワークアーキテクチャ2000は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、それぞれ、ホスト1990、1980、及び1985で動作している、第2のレベルの管理されるスイッチング要素1910、管理されるスイッチング要素1915及び1920を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
ネットワークアーキテクチャ2000は、ネットワークアーキテクチャ2000が、ホスト2010で動作する管理されるスイッチング要素2005を追加で含むことを除いて、ネットワークアーキテクチャ1900と同様である。いくつかの実施形態の管理されるスイッチング要素2005は、プールノードとして機能する第2のレベルの管理されるスイッチング要素である。
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、図示のように、この例での管理されるスイッチング要素1915は、ホスト2010で動作する管理されるスイッチング要素2005に、管理されるスイッチング要素1915のポート1で終端するトンネルを介して結合される。同様に、管理されるスイッチング要素1920は、スイッチング要素2005に、管理されるスイッチング要素1920のポート2で終端するトンネルを介して結合される。また、図示のように、管理されるスイッチング要素2005及び1910は、トンネルを介して結合される。
論理ルータ225並びに論理スイッチ220及び230は、第2のレベルの管理されるスイッチング要素2005が、データパケット交換に関係することを除いて、図19を参照して上述した管理されるスイッチング要素1910、1915、及び1920において実装される。すなわち、管理されるスイッチング要素1915及び1910は、管理されるスイッチング要素2005を介してパケットを交換する。管理されるスイッチング要素1920及び1910は、管理されるスイッチング要素2005を介してパケットを交換する。
図21は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2100を概念的に示す。ネットワークアーキテクチャ2100は、管理されるスイッチング要素1910及び管理されるスイッチング要素1920間に確立されたトンネルが存在することを除いて、ネットワークアーキテクチャ1900と同様である。この図は、いくつかの実施形態のネットワークアーキテクチャ2100が、ネットワークアーキテクチャ1900及びネットワークアーキテクチャ2000の混合物であることを示す。すなわち、いくつかの管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素へのトンネルを有し、他の管理されるエッジスイッチング要素は、集中型L3ルータに結合された第2のレベルの管理されるスイッチング要素とパケットを交換するために、プールノードとして機能する第2のレベルの管理されるスイッチング要素を介さなければならない。
図22は、フローエントリに基づいて論理ルータを実装する管理されるスイッチング要素1910を含むいくつかの実施形態のホスト1990の例示的なアーキテクチャを概念的に示す。ホスト1990は、いくつかの実施形態では、仮想マシンを作成することができるオペレーティングシステム(例えば、Linux(登録商標))によって管理されるマシンである。図示のように、この例でのホスト1990は、管理されるスイッチング要素1910及びNIC2245を含む。この図は、コントローラクラスタ2205も示す。
コントローラクラスタ2205は、管理されるスイッチング要素1910を含むネットワーク要素を管理するネットワークコントローラ又はコントローラインスタンスのセットである。この例での管理されるスイッチング要素1910は、ユーザ空間2212及びカーネル2210を含むホスト1990に実装されるソフトウェアスイッチング要素である。管理されるスイッチング要素1910は、ユーザ空間2212で動作している制御デーモン2215、並びに、カーネル2210で動作しているコントローラパッチ2230及びブリッジ2235を含む。さらに後述するNATデーモン2250も、ユーザ空間2212で動作している。ユーザ空間2212及びカーネル2210は、いくつかの実施形態では、ホスト1990のためのオペレーティングシステムのものであり、他の実施形態では、ユーザ空間2212及びカーネル2210は、ホスト1990上で動作している仮想マシンのものである。
いくつかの実施形態では、コントローラクラスタ2205は、制御デーモン2215と(例えば、オープンフロープロトコル又はいくつかの他の通信プロトコルを使用することによって)通信し、制御デーモン2215は、いくつかの実施形態では、ユーザ空間2212のバックグラウンドで動作しているアプリケーションである。制御デーモン2215は、管理されるスイッチング要素1910が受信するパケットを処理し、ルーティングするために、コントローラクラスタ2205と通信する。具体的には、制御デーモン2215は、いくつかの実施形態では、コントローラクラスタ2205から構成情報を受信し、コントローラパッチ2230を構成する。例えば、制御デーモン2215は、管理されるスイッチング要素1910が受信するパケットを、L2及びL3で処理し、ルーティングするための動作に関して、コントローラクラスタ2205からコマンドを受信する。
コントローラパッチ2230は、カーネル2210で動作するモジュールである。いくつかの実施形態では、制御デーモン2215が、コントローラパッチ2230を構成する。構成されると、コントローラパッチ2230は、受信するパケットの処理、転送、及びルーティングに関するルール(例えば、フローエントリ)を含む。コントローラパッチ2230は、論理スイッチ及び論理ルータの両方を実装する。
いくつかの実施形態では、コントローラパッチ2230は、ネットワークアドレス変換のためのNATデーモンを使用する。さらに後述するように、NATデーモン2250は、ネットワークアドレス変換に関するフローエントリを生成し、フローエントリを、使用する管理されるスイッチング要素1910に送り返す。NATデーモンは、さらに後述される。
コントローラパッチ2230は、カーネル2210のネットワークスタック2250から、又は、ブリッジ2235からパケットを受信する。ブリッジ2235は、ネットワークスタック2250、及び、ホストの外部のネットワークホスト間で、ネットワークデータ(例えば、NIC2245を介して受信されたネットワークデータ)をルーティングする。図示のように、ブリッジ2235は、ネットワークスタック2250及びNIC2245間、並びに、ネットワークスタック2250及びNIC2245間で、ネットワークデータをルーティングする。いくつかの実施形態のブリッジ2235は、標準的なL2パケット学習及びルーティングを実行する。
ネットワークスタック2250は、NIC2245を介して、管理されるスイッチング要素1910の外部のネットワークホストからパケットを受信することができる。ネットワークスタック2250は、次に、コントローラパッチ2230にパケットを送信する。いくつかの場合では、パケットは、トンネルを介して、管理されるスイッチング要素の外部のネットワークホストから受信される。いくつかの実施形態では、トンネルは、ネットワークスタック2250で終端する。したがって、ネットワークスタック2250が、トンネルを介してパケットを受信すると、ネットワークスタック2250は、トンネルヘッダをアンラップし(すなわち、ペイロードをデカプセルし)、アンラップされたパケットをコントローラパッチ2230に送信する。
管理されるスイッチング要素1910の例示的な動作をここで説明する。この例では、トンネルは、管理されるスイッチング要素1910と、ホスト1990の外部の管理されるスイッチング要素1915及び1920(図22には示さず)との間に確立される。すなわち、管理されるスイッチング要素1910、1915、及び1920は、図19に示すように、トンネルを介して接続される。トンネルは、ネットワークスタック2250で終端する。
管理されるスイッチング要素1915は、VM1〜VM4によって送信されたパケットを、管理されるスイッチング要素1910に送信する。パケットは、NIC2245によって受信され、次に、ブリッジ2235に送信される。パケットヘッダ内の情報に基づいて、ブリッジ2235は、パケットが、確立されたトンネルを介して送信されると判断し、ネットワークスタック2250にパケットを送信する。ネットワークスタック2250は、トンネルヘッダをアンラップし、アンラップされたパケットをコントローラパッチ2230に送信する。
パケットは、ある論理ネットワークから別の論理ネットワークに送信されるため、コントローラパッチ2230が有するフローエントリにしたがって、コントローラパッチ2230は、パケットにL3処理を実行しパケットをルーティングする。L3処理及びいくらかのL2処理を実行することによって、管理されるスイッチング要素1910は、宛先ネットワークレイヤアドレスが、宛先論理ネットワークに属する論理スイッチに行くべきであるため、パケットが、管理されるスイッチング要素1920に送信されるべきであると判断する。コントローラパッチ2230は、トンネルを介して、ネットワークスタック2250、ブリッジ2235、及びNIC2245を介して、管理されるスイッチング要素1920にパケットを送信し、管理されるスイッチング要素1920は、宛先論理ネットワークに属する論理スイッチを実装する。
図23は、管理されるスイッチング要素内の論理スイッチ及び論理ルータの例示的な実装を概念的に示す。具体的には、この図は、第2のレベルの管理されるスイッチング要素1910並びに管理されるスイッチング要素1915及び1920内の論理ルータ225並びに論理スイッチ220及び230の実装を示す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素1910〜1920を示す。図は、図の上半分及び下半分の両方にVM1〜4を示す。
論理スイッチ220及び230並びに論理ルータ225は、論理ポートを介して論理的に結合される。論理スイッチ220及び230のこの特定の構成は、図12を参照して上述した例で示した構成と同じである。
図23の例では、コントローラクラスタ2205(図23には示さず)は、管理されるスイッチング要素が、フローエントリに基づいて論理ルータ225を実装するように、管理されるスイッチング要素1910にフローエントリを供給することによって、管理されるスイッチング要素1910を構成する。
図24は、図23を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに、管理されるスイッチング要素1910、1915、及び1920の例示的な動作を概念的に示す。具体的には、図24は、論理ルータ225を実装する管理されるスイッチング要素1910の動作を示す。管理されるスイッチング要素1915及び1920が実行する論理処理パイプラインの一部は、簡単化のため、図24には示されない。論理処理パイプラインのこれらの部分は、図13A及び図13Bの上半分に示した例での、管理されるスイッチング要素815及び820によって実行される論理処理の部分と同様である。すなわち、図24の例を例示するために、図24は、図13A及び図13Bの下半分を置き換える。
図24の下半分に示すように、管理されるスイッチング要素1910は、L2エントリ2405及び2415並びにL3エントリ2410を含む。これらのエントリは、コントローラクラスタ2205(図示せず)が、管理されるスイッチング要素1910に供給するフローエントリである。これらのエントリは、3つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
管理されるスイッチング要素1910が、VM1からVM4に送信されるパケット2430を、管理されるスイッチング要素1915から受信すると、管理されるスイッチング要素1910は、管理されるスイッチング要素1910のフローエントリ2405に基づいて、パケット2430の処理を開始する。管理されるスイッチング要素1910は、ステージ1830のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット2430のヘッダに格納された論理コンテキストに基づいて、パケット2430の論理コンテキストを識別する。論理コンテキストは、パケット2430が、管理されるスイッチング要素1915によって実行された論理処理の一部(例えば、L2入口ACL、L2転送)によって処理されていることを指定する。このように、レコード1は、パケット2430が、転送テーブルによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。
次に、管理されるスイッチング要素1910は、パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1835の出口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット2430がさらに処理されることを可能にし(例えば、パケット2430は、論理スイッチ220のポート「X」を介して論理スイッチ220から出ることができる)、したがって、パケット2430が、管理されるスイッチング要素1910のフローエントリによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素1910が、パケット2430の論理コンテキスト(例えば、パケット2430は、処理パイプライン2400のステージ2452によって処理されている)を、パケット2430のヘッダのフィールドのセットに格納することを指定する。(すべてのレコードは、論理処理を実行する管理されるスイッチング要素が、レコードに基づいて論理処理の一部を実行するたびに、フィールドのセット内の論理コンテキストストアを更新することを指定することに注意すべきである。)
管理されるスイッチング要素1910は、フローエントリに基づいてパケット2430の処理を続ける。管理されるスイッチング要素1910は、パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910がパケット2430のヘッダ内の情報に基づいて論理ルータ225の論理ポート1を介してパケットを受け入れるべきであることを指定することによってL3入口ACLを実装するL3エントリ2410内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。
管理されるスイッチング要素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」と呼ぶ)を識別する。
パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910は、ステージ1860の入口ACLを実装するL2エントリ2415内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。この例では、レコード6は、パケット2430がさらに処理されることを可能にし、したがって、パケット2430が、管理されるスイッチング要素1910によって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード6は、管理されるスイッチング要素1910が、パケット2430の論理コンテキスト(例えば、パケット2430は、処理パイプライン2400のステージ2462によって処理されている)を、パケット2430のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素1910は、パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ1865の論理L2転送を実装する転送テーブル内の丸で囲まれた7によって示されるレコード(「レコード7」と呼ぶ)を識別する。レコード7は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、VM4に接続された論理スイッチ230の論理ポート(図示せず)を介して転送されるべきであることを指定する。
レコード7は、また、パケット2430が、転送テーブルによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード7は、管理されるスイッチング要素1910が、論理コンテキスト(例えば、パケット2430は、処理パイプライン2400のステージ1865によって処理されている)を、パケット2430のヘッダのフィールドのセットに格納することを指定する。
パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910は、ステージ1870のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。この例では、レコード8は、VM4が結合される管理されるスイッチング要素1920のポート5を、パケット2430が転送されるべき論理スイッチ230の論理ポート(ステージ1865で決定される)に対応するポートとして識別する。レコード8は、加えて、パケット2430が、転送テーブルによって(例えば、パケット2430をディスパッチポートに送信することによって)さらに処理されることを指定する。
パケット2430のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素1910は、次に、ステージ1875の物理マッピングを実装するL2エントリ2415内の丸で囲まれた9によって示されるレコード(「レコード9」と呼ぶ)を識別する。レコード9は、パケット2430が管理されるスイッチング要素1920に到達するために、パケット2430が送信されるべき管理されるスイッチング要素1910のポート(図示せず)を指定する。この場合では、管理されるスイッチング要素1910は、パケット2430を、管理されるスイッチング要素1920に結合される管理されるスイッチング要素1910のポートから送出することになる。
図25〜30Bは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素に実装される分散型論理ルータを示す。具体的には、図25〜30Bは、送信元L2処理、L3ルーティング、及び宛先L2処理を含む論理処理パイプライン全体が、最初のホップの管理されるスイッチング要素(すなわち、マシンから直接パケットを受信するスイッチング要素)によって実行されることを示す。
図25は、図2を参照して上述した論理処理パイプライン200の例示的な実装を概念的に示す。具体的には、図25は、L3処理210が、送信元マシンからパケットを直接受信する任意の管理されるスイッチング要素によって実行され得ることを示す。図25は、ネットワークアーキテクチャ2500を示す。ネットワークアーキテクチャ2500では、論理処理パイプライン200は、管理されるスイッチング要素2505によって実行される。この例では、L3処理210は、管理されるスイッチング要素2505のフローエントリに基づいて、管理されるスイッチング要素2505によって実行される。図25は、送信元マシン2515及び宛先マシン2520も示す。
管理されるスイッチング要素2505は、エッジスイッチング要素に結合されたマシンから直接パケットを受信するエッジスイッチング要素である。管理されるスイッチング要素2505は、送信元マシン2515からパケットを受信する。管理されるスイッチング要素2505が、送信元マシン2515からパケットを受信すると、管理されるスイッチング要素805は、いくつかの実施形態では、パケットを論理的に転送及びルーティングするために、パケットに論理処理パイプライン200の全体を実行する。
受信されたパケットが、この例では別の論理ネットワークにある宛先マシン2520に向けられている場合、管理されるスイッチング要素2505は、送信元マシン2515が属する論理ネットワークにある論理スイッチ、宛先マシン2520が属する論理ネットワークにある論理スイッチ、及び、これら2つの論理スイッチ間でパケットをルーティングする論理ルータとして機能する。論理処理パイプライン200の実行の結果に基づいて、管理されるスイッチング要素2505は、宛先マシン2520がパケットを受信する管理されるスイッチング要素2510にパケットを転送する。
図26は、論理スイッチ220、論理ルータ225、及び論理スイッチ230を介してパケットを処理するいくつかの実施形態の論理処理パイプライン200を概念的に示す。具体的には、この図は、図25を参照して上述したネットワークアーキテクチャ2500で実行される場合の論理処理パイプライン200を示す。上述したように、ネットワークアーキテクチャ2500では、L2処理205、L3処理210、及びL2処理215が、マシンからパケットを受信するエッジスイッチング要素である単一の管理されるスイッチング要素2505によって実行される。したがって、これらの実施形態では、最初のホップのスイッチング要素が、論理処理パイプライン200の全体を実行する。
L2処理205は、いくつかの実施形態では、論理スイッチ220(図26には示さず)を介してパケットを処理する4つのステージ2605〜2620を含む。ステージ2605では、パケットの論理コンテキストを決定するために、入口コンテキストマッピングがパケットに実行される。いくつかの実施形態では、ステージ2605は、論理スイッチ220がパケットを受信する(例えば、パケットが、最初に、管理されるスイッチング要素2505によって受信される)と、実行される。
いくつかの実施形態では、第2のステージ2610は、論理スイッチ220のために定義される。いくつかのこのような実施形態では、ステージ2610は、論理スイッチに対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチがパケットを受信するときに、論理スイッチへのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチのために定義された入口ACLに基づいて、パケットは、(例えば、ステージ2165によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
L2処理205の第3のステージ2615では、論理スイッチのコンテキストでL2転送がパケットに実行される。いくつかの実施形態では、第3のステージ2615は、論理スイッチ220に対してパケットを処理及び転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。
いくつかの実施形態の第4のステージ2620は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第4のステージ2620は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後、論理スイッチ220のパケットの外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポートから送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、例えば、破棄されてよい。
パケットの宛先が、別の論理ネットワークにある場合(すなわち、パケットの宛先論理ネットワークが、そのトラフィックが論理スイッチ220によって処理される論理ネットワークと異なる場合)、論理スイッチ220は、パケットを論理ルータ225に送信し、論理ルータ225は、次に、宛先論理ネットワークにパケットをルーティングするために、ステージ210のL3処理を実行する。L3処理210は、管理されるスイッチング要素2505(図26には示さず)によって実装される論理ルータ225(図26には示さず)を介してパケットを処理する6つのステージ2635〜2651を含む。上述したように、L3処理は、レイヤ3ネットワークを介してパケットをどこにルーティングするのかを決定するための論理ルーティングルックアップのセットを実行することを含む。
第1のステージ2635は、論理ルータ225がパケットを受信すると(すなわち、論理ルータ225を実装する管理されるスイッチング要素2505がパケットを受信すると)、アクセス制御を決定するための論理入口ACLルックアップを実行する。いくつかの実施形態では、ステージ2635は、論理ルータ225に対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。次のステージ2636は、パケットの宛先アドレスを、パケットの送信元マシンから隠された宛先マシンの実際のアドレスに戻すために、DNATを実行する。このステージ2636は、DNATが有効にされている場合、実行される。
次のステージ2640は、パケットのL3アドレス(例えば、宛先IPアドレス)、L3フローエントリを含む転送テーブル、及び、パケットの論理コンテキストに基づいて、レイヤ3ネットワークを介してパケットを送信するために、1つ又は複数の論理ポートを決定するための論理L3ルーティングを実行する。
いくつかの実施形態の第4のステージ2645は、パケットにSNATを実行する。例えば、管理されるスイッチング要素2505は、SNATが有効にされている場合、送信元IPアドレスを隠すために、パケットの送信元IPアドレスを異なるIPアドレスに置き換える。また、さらに後述するように、管理されるスイッチング要素は、ネットワークアドレスを変換するためのフローエントリを受信するために、NATデーモンを使用することができる。NATデーモンは、図31を参照してさらに後述される。
第5のステージ2650は、論理ルータ225が、ステージ2640で決定されたポートを介して論理ルータ225の外へパケットをルーティングする前に、アクセス制御を決定するための論理出口ACLルックアップを実行する。出口ACLルックアップは、パケットのL3アドレス(例えば、送信元及び宛先IPアドレス)に基づいて実行される。いくつかの実施形態では、ステージ2650は、論理ルータ225に対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。
第6のステージ2651は、宛先L3アドレス(例えば、宛先IPアドレス)を宛先L2アドレス(例えば、宛先MACアドレス)に変換するために、アドレス解決を実行する。いくつかの実施形態では、管理されるスイッチング要素2505は、宛先IPアドレスに対応する宛先L2アドレスを見つけるために、(例えば、ARP要求を送信するか、ARPキャッシュをルックアップすることによって)標準的なアドレス解決を使用する。また、さらに後述するように、いくつかの実施形態の管理されるスイッチング要素2505は、L3アドレスをL2アドレスに解決するためのフローエントリを受信するために、L3デーモンを使用することができる。L3デーモンは、図48〜50を参照してさらに後述される。
論理ルータ225が宛先論理ネットワークに結合されていない場合、論理スイッチ220は、宛先論理ネットワークに向かう別の論理ルータネットワークにパケットを送信する。また、他の論理ルータの動作に対応する論理処理の一部は、管理されるスイッチング要素2505に実装されることになる。論理ルータ225が宛先論理ネットワークに結合されている場合、論理スイッチ220は、宛先論理ネットワーク(すなわち、宛先論理ネットワークにパケットを転送する論理スイッチ)にパケットをルーティングする。
L2処理215は、いくつかの実施形態では、論理スイッチ225(図26には示さず)を介してパケットを処理するための5つのステージ2660〜2680を含む。いくつかの実施形態では、第1のステージ2660は、論理スイッチ225のために定義される。いくつかのこのような実施形態では、ステージ2660は、論理スイッチ230に対するパケットの入口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理スイッチ230が論理ルータ225からパケットを受信するときに、論理スイッチ230へのパケットのアクセスを制御するために、入口ACLがパケットに適用される。論理スイッチのために定義された入口ACLに基づいて、パケットは、(例えば、ステージ2665によって)さらに処理されてよく、又は、パケットは、例えば、破棄されてよい。
L2処理パイプライン215の第2のステージ2665では、論理スイッチのコンテキストでL2転送がパケットに実行される。いくつかの実施形態では、第3のステージ2665は、論理スイッチ220に対してパケットを処理し、転送するために、パケットの論理コンテキストに関して動作する。例えば、いくつかの実施形態は、レイヤ2でパケットを処理するためのL2転送テーブル又はL2転送エントリを定義する。
いくつかの実施形態の第3のステージ2670は、論理スイッチ220のために定義される。いくつかのこのような実施形態の第3のステージ2670は、論理スイッチに対するパケットの出口アクセス制御を決定するために、パケットの論理コンテキストに関して動作する。例えば、論理転送がパケットに実行された後、論理スイッチ230のパケットの外へのパケットのアクセスを制御するために、出口ACLがパケットに適用されてよい。論理スイッチのために定義された出口ACLに基づいて、パケットは、さらに処理されてよく(例えば、論理スイッチの論理ポートから送出される、若しくは、さらなる処理のためにディスパッチポートに送信される)、又は、パケットは、例えば、破棄されてよい。
第4のステージ2675では、パケットの論理的転送の結果に対応する物理的結果を識別するために、出口コンテキストマッピングが実行される。例えば、パケットの論理的な処理は、パケットが論理スイッチ230の1つ又は複数の論理ポート(例えば、論理出口ポート)から送出されるべきであることを指定することができる。このように、出口コンテキストマッピング動作は、論理スイッチの特定の論理ポートに対応する1つ又は複数の管理されるスイッチング要素(管理されるスイッチング要素2505を含む)の物理ポート(複数可)を識別する。
L2処理205の第5のステージ2680は、第4のステージ2675で実行された出口コンテキストマッピングに基づいて物理マッピングを実行する。いくつかの実施形態では、物理マッピングは、第4のステージ2675で決定された物理ポートにパケットを転送するための動作を決定する。例えば、いくつかの実施形態の物理マッピングは、パケットが第4のステージ2675で決定された物理ポート(複数可)に達するために、パケットを送信するために通過する、管理されるスイッチング要素2505のポートのセット(図示せず)の1つ又は複数のポートに関連付けられた1つ又は複数のキュー(図示せず)を決定する。このように、管理されるスイッチング要素は、決定された物理ポート(複数可)にパケットが達するためのネットワーク内の正しい経路に沿って、パケットをルーティングすることができる。また、いくつかの実施形態は、論理処理パイプライン2600がパケットに実行される前に、パケットをその元の状態に戻すために、第5のステージ2680の後に論理コンテキストを除去する。
図27は、論理ルータ225並びに論理スイッチ220及び論理スイッチ230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2700を概念的に示す。具体的には、ネットワークアーキテクチャ2700は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素2505及び2510を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
この例では、論理スイッチ220は、論理ルータ225、VM1、及びVM2間でデータパケットを転送する。論理スイッチ230は、論理ルータ225、VM3、及びVM4間でデータパケットを転送する。上述したように、論理ルータ225は、論理スイッチ220及び230並びに他の論理ルータ及びスイッチ(図示せず)間でデータパケットをルーティングする。論理スイッチ220及び230並びに論理ルータ225は、論理ポート(図示せず)を介して論理的に結合され、論理ポートを介してデータパケットを交換する。これらの論理ポートは、管理されるスイッチング要素2505及び2510の物理ポートにマッピング又は取り付けられる。
いくつかの実施形態では、論理ルータは、管理されるネットワーク内の各々の管理されるスイッチング要素に実装される。管理されるスイッチング要素が、管理されるスイッチング要素に結合されたマシンからパケットを受信すると、管理されるスイッチング要素は、論理ルーティングを実行する。すなわち、パケットに対する最初のホップのスイッチング要素であるこれらの実施形態の管理されるスイッチング要素は、L3処理210を実行する。
この例では、管理されるスイッチング要素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で終端するトンネル)を介して移動することになる。
この例では、図示のように、ホスト2525及び2530の各々は、管理されるスイッチング要素及びいくつかのVMを含む。VM1〜4は、ネットワークアドレス(例えば、L2のためのMACアドレス、L3のためのIPアドレス、など)のセットがそれぞれ割り当てられ、他のネットワーク要素との間でネットワークデータを送受信することができる仮想マシンである。VMは、ホスト2525及び2530で動作するハイパーバイザ(図示せず)によって管理される。
ネットワークアーキテクチャ2700を介するいくつかの例示的なデータ交換をここで説明する。論理スイッチ220に結合されたVM1が、同じ論理スイッチ220に結合されたVM2にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、次に、パケットにL2処理205を実行する。このパケットへのL2処理の結果は、パケットが、管理されるスイッチング要素2505及び2510間に確立されたトンネルを介して管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート4を介してVM2に達するべきであることを示すことになる。VM1及び2は、同じ論理ネットワーク内にあるため、管理されるスイッチング要素2505は、L3処理210及びL2処理215を実行しない。
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM3にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、パケットにL2処理205を実行する。しかしながら、パケットは、ある論理ネットワークから別の論理ネットワークに送信される(すなわち、パケットの論理L3宛先アドレスは、別の論理ネットワークのためのものである)ため、L3処理210がこのパケットに実行される必要がある。管理されるスイッチング要素2505は、L2処理215も実行する。すなわち、パケットを受信する最初のホップのスイッチング要素としての管理されるスイッチング要素2505は、パケットに論理処理パイプライン200の全体を実行する。論理処理パイプライン200の実行の結果は、パケットが、管理されるスイッチング要素2505のポート5を介してVM3に送信されるべきであることを示すことになる。したがって、パケットは、2つの論理スイッチ及び論理ルータを介して進んだが、別の管理されるスイッチング要素に進む必要はなかった。
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。パケットに関する最初のホップのスイッチング要素としての管理されるスイッチング要素2505は、パケットに論理処理パイプライン200の全体を実行する。このパケットへの論理処理パイプライン200の実行の結果は、パケットが、管理されるスイッチング要素2505及び2510間に確立されたトンネルを介して管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート5を介してVM4に達するべきであることを示すことになる。
図28は、論理ルータ225並びに論理スイッチ220及び230を実装するいくつかの実施形態の例示的なネットワークアーキテクチャ2800を概念的に示す。具体的には、ネットワークアーキテクチャ2800は、そのデータパケットが論理ルータ225並びに論理スイッチ220及び230によって切り替えられる及び/又はルーティングされる論理ネットワークを実現する物理ネットワークを表す。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素2505及び2510を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
ネットワークアーキテクチャ2800は、ネットワークアーキテクチャ2800が、管理されるスイッチング要素2805を追加で含むことを除いて、ネットワークアーキテクチャ2700と同様である。いくつかの実施形態の管理されるスイッチング要素2805は、プールノードとして機能する第2のレベルの管理されるスイッチング要素である。
いくつかの実施形態では、ネットワーク要素間の通信を容易にするために、ネットワーク制御システム(図示せず)によってトンネルが確立される。例えば、この例での管理されるスイッチング要素2505は、図示のように、管理されるスイッチング要素2505のポート1で終端するトンネルを介して、ホスト2810で動作する管理されるスイッチング要素2805に結合される。同様に、管理されるスイッチング要素2510は、管理されるスイッチング要素2510のポート2で終端するトンネルを介して、管理されるスイッチング要素2805に結合される。上記図27に示す例示的なアーキテクチャ2700と対照的に、管理されるスイッチング要素2505及び2510間にトンネルは確立されない。
論理ルータ225並びに論理スイッチ220及び230は、管理されるスイッチング要素2505に実装され、第2のレベルの管理されるスイッチング要素2805が、データパケット交換に関与する。すなわち、管理されるスイッチング要素2505及び2510は、管理されるスイッチング要素2805を介してパケットを交換する。
図29は、転送及びルーティングするために、受信されたパケットにL2及びL3処理のすべてを実行する最初のホップのスイッチング要素の一例を概念的に示す。図29は、管理されるスイッチング要素2505及び2510による論理ルータ225並びに論理スイッチ220及び230の実装を示す。図示のように、管理されるスイッチング要素2505が最初のホップのスイッチング要素である場合、管理されるスイッチング要素2505によって、論理処理パイプライン200のすべてが実行される。図は、図の上半分に、論理ルータ225並びに論理スイッチ220及び230を示す。この図は、図の下半分に、管理されるスイッチング要素2505及び2510を示す。図は、図の上部及び下部の両方にVM1〜4を示す。
論理スイッチ220に結合されたVM1が、同じ論理スイッチ220に結合されたVM2にパケットを送信すると、パケットが論理スイッチ220に入る論理スイッチ220の論理ポート1は、管理されるスイッチング要素2505のポート4に取り付けられる、又はマッピングされるため、パケットは、最初に、管理されるスイッチング要素2505のポート4を介して、管理されるスイッチング要素2502に送信される。
管理されるスイッチング要素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に送出することになるポートであることを指定する。
管理されるスイッチング要素2505は、次に、パケットの決定された論理コンテキストに基づいて、論理転送ルックアップを実行する。管理されるスイッチング要素2505は、パケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、論理スイッチ220のポート1を通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、また、論理コンテキストから、論理スイッチ220のポート2が、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素2505は、論理スイッチ220のポート2に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、論理スイッチ220のポート2を介してパケットを送信させなくさせることになるネットワークアドレスを持っていないことを判断する。
管理されるスイッチング要素2505は、次に、論理スイッチ220の論理ポート2がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ220の論理ポート2が、管理されるスイッチング要素2510のポート4にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2505及び2510間に確立されるトンネルを介して管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート4を介してVM2に達するべきであると判断する。VM1及びVM2は、同じ論理ネットワーク内にあるため、管理されるスイッチング要素2505は、L3処理を実行しない。管理されるスイッチング要素2510は、どのような論理処理もパケットに実行せず、管理されるスイッチング要素2510のポート4を介してVM2にパケットを転送するだけである。
論理スイッチ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の外に送信するためのポートであることを指定する。
管理されるスイッチング要素2505は、次に、パケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、論理スイッチ220のポート1を通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、また、論理コンテキストから、論理スイッチ220のポートXが、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素2505は、ポートXに対するパケットのためのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ220に、ポートXを介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
管理されるスイッチング要素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を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
管理されるスイッチング要素2505は、L3処理210を実行する一方で、パケットの論理コンテキスト又はパケット自体を変更する。例えば、管理されるスイッチング要素2505は、パケットの論理送信元MACアドレスを、論理ルータ225の論理ポート2のMACアドレス(すなわち、この例では、01:01:01:01:01:02)になるように変更する。管理されるスイッチング要素2505は、また、パケットの宛先MACアドレスを、VM3のMACアドレスになるように変更する。
管理されるスイッチング要素2505は、次に、L2処理215を実行する。具体的には、管理されるスイッチング要素2505は、パケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポートYを通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、次に、論理スイッチ230のポート1が、パケットを宛先VM3に送出するためのポートであると判断する。さらに、管理されるスイッチング要素2505は、論理スイッチ230のポート1に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポート1を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
管理されるスイッチング要素2505は、次に、論理スイッチ230の論理ポート1がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ230の論理ポート1が、管理されるスイッチング要素2505のポート5にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2505のポート5を介してVM3に送信されるべきであると判断する。この例での管理されるスイッチング要素2505は、パケットをVM3に送信する前に、パケットから論理コンテキストを除去する。したがって、パケットは、2つの論理スイッチ及び論理ルータを介して進んだが、別の管理されるスイッチング要素に進む必要はなかった。
論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、VM4に向かうパケットが、管理されるスイッチング要素2505及び2510間に確立されたトンネルを介して、管理されるスイッチング要素2505から管理されるスイッチング要素2510に送信され、管理されるスイッチング要素2510のポート5を介してVM4に達することを除いて、パケットは、VM1から送信されたパケットがVM3に送信されるのと同様に、VM4に送信される。
図30A〜30Bは、図29を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに、管理されるスイッチング要素2505及び2510の例示的な動作を概念的に示す。具体的には、図30Aは、論理スイッチ220及び230並びに論理ルータ225を実装する管理されるスイッチング要素2505の動作を示す。図30Bは、管理されるスイッチング要素2505の動作を示す。
図30Aの下半分に示すように、管理されるスイッチング要素2505は、L2エントリ3005及び3015、並びにL3エントリ3010を含む。これらのエントリは、コントローラクラスタ(図示せず)が管理されるスイッチング要素2505に供給するフローエントリである。これらのエントリは、3つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
論理スイッチ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アドレスとして有する。
管理されるスイッチング要素2505は、ステージ2605のコンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、VM1からパケット3030を受信するポート4である入口ポートに基づいて、パケット3030の論理コンテキストを識別する。加えて、レコード1は、管理されるスイッチング要素2505が、パケット3030の論理コンテキストを、パケット3030のヘッダのフィールドのセット(例えば、VLAN idフィールド)に格納することを指定する。レコード1は、また、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。ディスパッチポートは、米国特許出願第13/177,535号に記載されている。
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、ステージ2610の入口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット3030がさらに処理されることを可能にし(例えば、パケット3030は、論理スイッチ220の入口ポートを通り抜けることができる)、したがって、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(すなわち、パケット3030は、処理パイプライン3000の第2のステージ3042によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2615の論理L2転送を実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、論理ルータ225の論理ポート1のMACアドレスを宛先MACアドレスとして有するパケットが、論理スイッチ220の論理ポートXに送信されるべきであることを指定する。
レコード3は、また、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード3は、管理されるスイッチング要素2505が、論理コンテキスト(すなわち、パケット3030は、処理パイプライン3000の第3のステージ2615によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2620の出口ACLを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。この例では、レコード4は、パケット3030がさらに処理されることを可能にし(例えば、パケット3030は、論理スイッチ220のポート「X」を介して論理スイッチ220から出ることができる)、したがって、パケット3030が、管理されるスイッチング要素2505のフローエントリによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード4は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(すなわち、パケット3030は、処理パイプライン3000のステージ2620によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。(すべてのレコードは、論理処理を実行する管理されるスイッチング要素が、レコードに基づいて論理処理の一部を実行するたびに、フィールドのセット内の論理コンテキストストアを更新することを指定することに注意すべきである。)
管理されるスイッチング要素2505は、フローエントリに基づいてパケット3030の処理を続ける。管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505がパケット3030のヘッダ内の情報に基づいて論理ルータ225の論理ポート1を介してパケットを受け入れるべきであることを指定することによってL3入口ACLを実装するL3エントリ3010内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。
管理されるスイッチング要素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)に書き換えられるべきであることを示す。
管理されるスイッチング要素2505は、次に、管理されるスイッチング要素2505がパケット3030のヘッダ内の情報(例えば、送信元IPアドレス)に基づいて論理ルータ225のポート2を介してパケットが出ることを可能にすることを指定することによってL3出口ACLを実装するL3エントリ3010内の丸で囲まれた7によって示されるフローエントリ(「レコード7」と呼ぶ)を識別する。
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、ステージ2660の入口ACLを実装するL2エントリ3015内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。この例では、レコード8は、パケット3030が、管理されるスイッチング要素2505によって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード8は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(例えば、パケット3030は、処理パイプライン3000のステージ2660によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2665の論理L2転送を実装するL2エントリ3015内の丸で囲まれた9によって示されるレコード(「レコード9」と呼ぶ)を識別する。レコード9は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、VM4に接続された論理スイッチ230の論理ポート(図示せず)を介して転送されるべきであることを指定する。
レコード9は、また、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード9は、管理されるスイッチング要素2505が、論理コンテキスト(例えば、パケット3030は、処理パイプライン3000のステージ2665によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素2505は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、ステージ2670の出口ACLを実装する転送テーブル内の丸で囲まれた10によって示されるレコード(「レコード10」と呼ぶ)を識別する。この例では、レコード10は、パケット3030が、VM4に接続する論理ポート(図示せず)を介して出ることを可能にし、したがって、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード10は、管理されるスイッチング要素2505が、パケット3030の論理コンテキスト(例えば、パケット3030は、処理パイプライン3000のステージ2670によって処理されている)を、パケット3030のヘッダのフィールドのセットに格納することを指定する。
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、ステージ2675のコンテキストマッピングを実装するL2エントリ3015内の丸で囲まれた11によって示されるレコード(「レコード11」と呼ぶ)を識別する。この例では、レコード11は、VM4が結合される管理されるスイッチング要素2510のポート5を、パケット3030が転送されるべき論理スイッチ230の論理ポート(ステージ2665で決定される)に対応するポートとして識別する。レコード11は、加えて、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。
パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ3015内の丸で囲まれた12によって示されるレコード(「レコード12」と呼ぶ)を識別する。レコード12は、パケット3030が管理されるスイッチング要素2510に到達するために、パケット3030が通って送信されるべきポートとして、管理されるスイッチング要素2505のポート3を指定する。この場合では、管理されるスイッチング要素2505は、パケット3030を、管理されるスイッチング要素2510に結合される管理されるスイッチング要素2505のポート3から送出することになる。
図30Bに示すように、管理されるスイッチング要素2510は、パケット3030を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素2510が、管理されるスイッチング要素2505からパケット3030を受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2510の転送テーブルに基づいて、パケット3030の処理を開始する。管理されるスイッチング要素2510は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット3030のヘッダに格納された論理コンテキストに基づいて、パケット3030の論理コンテキストを識別する。論理コンテキストは、パケット3030が、管理されるスイッチング要素2505によって実行された論理処理200の全体によって処理されていることを指定する。このように、レコード4は、パケット3030が、転送テーブルによって(例えば、パケット3030をディスパッチポートに送信することによって)さらに処理されることを指定する。
次に、管理されるスイッチング要素2510は、パケット3030のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。レコード2は、パケット3030がVM4に到達するために、パケット3030が通って送信されるべき管理されるスイッチング要素2510のポート5を指定する。この場合では、管理されるスイッチング要素2510は、パケット3030を、VM4に結合される管理されるスイッチング要素2510のポート5から送出することになる。いくつかの実施形態では、管理されるスイッチング要素2510は、パケットをVM4に送信する前に、パケット3030から論理コンテキストを除去する。
図31は、管理されるスイッチング要素が動作するホストの例示的なソフトウェアアーキテクチャを概念的に示す。具体的には、この図は、パケットを論理的に転送及びルーティングするために論理処理パイプラインを実行する管理されるスイッチング要素が、ネットワークアドレスを変換するためのNATデーモンを使用することを示す。この図は、ホスト3100、管理されるスイッチング要素3105、転送テーブル3120、NATデーモン3110、及びNATテーブル3115を、図の上半分に示す。この図は、フローエントリ3125及び3130を示す。
フローエントリ3125及び3130は、それぞれ、クォリファイア及びアクションを有するフローエントリである。フローエントリ3125及び3130として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。いくつかの実施形態では、フローエントリは、優先順位を有し、管理されるスイッチング要素は、2つ以上のフローエントリのクォリファイアが満たされる場合、最も高い優先順位でフローエントリのアクションを行う。
ホスト3100は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム(例えば、Windows(登録商標)及びLinux(登録商標))によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素3105は、ホスト3100で実行するソフトウェアスイッチング要素(例えば、Open vSwitch)である。上述したように、コントローラクラスタ(図示せず)は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素3105は、それ自体はフローエントリを生成しない。
いくつかの実施形態の管理されるスイッチング要素3105は、上述した論理処理パイプライン200の全部又は一部を実行する。具体的には、管理されるスイッチング要素3105は、転送テーブル3120内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするためにL3処理210を実行する、管理されるスイッチング要素(例えば、管理されるスイッチング要素1720又は2505)である。いくつかの実施形態では、管理されるスイッチング要素3105は、管理されるスイッチング要素に結合されたマシン(図示せず)からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、1つ又は複数の仮想マシン(図示せず)が、ホスト3100で動作しており、管理されるスイッチング要素3105に結合される。他の実施形態では、管理されるスイッチング要素は、第2のレベルの管理されるスイッチング要素である。
管理されるスイッチング要素3105が、ネットワークアドレス変換(NAT)を実行するように構成されている場合、いくつかの実施形態の管理されるスイッチング要素3105は、パケットにNATを実行するためのNATデーモン3110を使用する。いくつかの実施形態では、管理されるスイッチング要素3105は、所定のアドレスから変換するアドレスを見つけるためのルックアップテーブルを保持しない。代わりに、管理されるスイッチング要素3105は、NATデーモン3110にアドレスを要求する。
いくつかの実施形態のNATデーモン3110は、ホスト3100で動作するソフトウェアアプリケーションである。NATデーモン3110は、アドレスの対を含むテーブル3115を保持し、各対は、互いに変換される2つのアドレスを含む。管理されるスイッチング要素3105が、所定のアドレスから変換するアドレスを要求すると、NATデーモンは、所定のアドレスを変換すべきアドレスを見つけるために、テーブル3115をルックアップする。
異なる実施形態の管理されるスイッチング要素3105及びNATデーモン3110は、アドレスを要求し、供給するために異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素3105は、元のアドレスを有するが、変換されたアドレスを持たないパケットを、NATデーモンに送信する。これらの実施形態のNATデーモン3110は、元のアドレスを、変換されたアドレスに変換する。NATデーモン3110は、管理されるスイッチング要素3105にパケットを送信し戻し、管理されるスイッチング要素3105は、パケットを宛先マシンに向けて送信するために、論理転送及び/又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素3105は、最初に、解決する元のアドレスを含むパケットと共にNATデーモン3110にメタデータを送信する。このメタデータは、管理されるスイッチング要素3105が、NATデーモン3110から戻るパケットを受信するとき、管理されるスイッチング要素3105が、論理処理パイプラインの実行を再開するために使用する情報(例えば、レジスタ値、論理パイプライン状態、など)を含む。
他の実施形態では、いくつかの実施形態の管理されるスイッチング要素3105は、フローテンプレートをNATデーモン3110に送信することによってアドレスを要求し、フローテンプレートは、アドレスについての実際の値を持たないフローエントリである。NATデーモンは、テーブル3115をルックアップすることによって、フローテンプレートに記入するアドレスを見つけ出す。NATデーモン3110は、次に、記入されたフローテンプレートを転送テーブル3120に入れることによって、実際のアドレスが記入されたフローテンプレートを、管理されるスイッチング要素3110に送信し戻す。いくつかの実施形態では、NATデーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。さらに、NATデーモン3110が、変換されたアドレスを見つけるのに失敗した場合、NATデーモンは、パケットを破棄するようにフローテンプレートで指定する。
ここで、管理されるスイッチング要素3105及びNATデーモン3110の例示的な動作を、3つの異なるステージ1〜3(丸で囲まれた1〜3)に関して説明する。この例では、管理されるスイッチング要素3105は、マシン(図示せず)から転送及びルーティングするためにパケットを受信する管理されるエッジスイッチング要素である。管理されるスイッチング要素3105は、パケットを受信し、転送テーブル3120内のフローエントリに基づいてL3処理210を実行する。
パケットにL3処理210を実行しながら、管理されるスイッチング要素3105は、(ステージ1で)フローエントリ3125を識別し、フローエントリ3125で指定されるアクションを実行する。図示のように、フローエントリ3125は、Xに変換されるべきIPアドレス1.1.1.10を有するフローテンプレートが、NATデーモン3110に送信されるべきであることを示す。この例では、フローエントリ3125は、いくつかの実施形態では番号である優先順位の値Nを有する。
ステージ2では、NATデーモン3110は、フローテンプレートを受信し、NATテーブル3115をルックアップすることによって、1.1.1.10が2.1.1.10に変換されるべきであることを知る。NATデーモンは、フローテンプレートに記入し、記入されたテンプレート(ここでは、フローエントリ3130)を転送テーブル3120に挿入する。この例では、NATデーモンは、N+1の優先順位を、記入されたテンプレートに割り当てる。
ステージ3では、管理されるスイッチング要素3110は、パケットのアドレスを変更するために、フローエントリ3130を使用する。また、管理されるスイッチング要素3105がその後に処理するパケットのために、管理されるスイッチング要素3105は、パケットが1.1.1.10の送信元IPアドレスを有する場合、フローエントリ3125の上のフローエントリ3130を使用する。
いくつかの実施形態では、NATデーモン3110及び管理されるスイッチング要素は、ホスト3100で動作している同じ仮想マシンで動作し、又は、ホスト3100で動作している異なる仮想マシンで動作する。NATデーモン及び管理されるスイッチング要素は、別々のホストで動作することもできる。
図32は、いくつかの実施形態がネットワークアドレスを変換するために実行するプロセス3200を概念的に示す。いくつかの実施形態では、プロセス3200は、L3でパケットをルーティングするためにL3処理210を実行する、管理されるスイッチング要素(例えば、管理されるスイッチング要素1720、2505、又は3105)によって実行される。プロセス3200は、いくつかの実施形態では、プロセスがL3で論理的にルーティングされるべきパケットを受信すると開始する。
プロセス3200は、(3205で)パケットがネットワークアドレス変換(NAT)を必要とするかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、パケットがNATを必要とするかどうかを、フローエントリに基づいて判定する。クォリファイアがパケットのヘッダに格納された情報又は論理コンテキストと一致するフローエントリは、パケットがNATを必要とすることを指定する。上述したように、NATは、SNAT又はDNATであってよい。フローエントリは、また、どのNATがパケットに実行されるべきかを指定することになる。
プロセス3200が、(3205で)パケットがNATを必要としないと判定すると、プロセスは終了する。そうでなければ、プロセス3200は、(3210で)プロセス3200が、NATデーモンからのパケットのアドレス(例えば、送信元IPアドレス)を変換する先のアドレスを要求する必要があるかどうかを判定する。いくつかの実施形態では、プロセス3200は、フローエントリに基づいて、プロセスがNATデーモンに要求する必要があるかどうかを判定する。例えば、フローエントリは、パケットのアドレスを変換する先のアドレスが、NATデーモンからのアドレスを要求することによって得られるべきであることを指定することができる。いくつかの実施形態では、プロセスは、フローエントリが、変換されたアドレスのための空のフィールド、又は、変換されたアドレスがNATデーモンから得られるべきであることを示すフィールド内のなにか他の値を有するフローテンプレートである場合、NATデーモンが、変換されたアドレスを提供するべきであると判定する。
プロセスが、(3210で)プロセスがNATデーモンからのアドレスを要求する必要がないと判定した場合、処理は、(3220で)変換されたアドレスをフローエントリから得る。例えば、フローエントリは、変換されたアドレスを提供することになる。プロセスは、次に、さらに後述する3225に進む。プロセスが、(3210で)プロセスがNATデーモンからのアドレスを要求する必要があると判定した場合、プロセス3200は、3215で、NATデーモンからの変換されたアドレスを要求し、取得する。いくつかの実施形態では、プロセス3200は、フローテンプレートをNATデーモンに送信することによって、変換されたアドレスを要求する。NATデーモンは、フローテンプレートに変換されたアドレスを記入し、記入されたテンプレートを、プロセスが使用する転送テーブル(図示せず)内に配置することになる。
次に、プロセス3200は、(3225で)パケットを変換されたアドレスで変更する。いくつかの実施形態では、プロセスは、パケットのヘッダ内のアドレスフィールドを変更する。代わりに又は結合的に、プロセスは、パケットのアドレスを変換されたアドレスに置き換えるために、論理コンテキストを変更する。プロセスは、次に、終了する。
本出願で、上記及び下記で使用するMACアドレス、IPアドレス、及び他のネットワークアドレスは、例示目的のための例であり、特に断らない限り、許容範囲内の値を持たなくてよいことに注意すべきである。
II.ネクストホップの仮想化
外部ネットワークとインタフェースする論理ネットワークは、ネクストホップのルータと相互作用する必要がある。異なる実施形態の仮想化アプリケーションは、ネクストホップのルータを介して論理L3ネットワークアドレスを外部ネットワークとインタフェースするために、異なるモデルを使用する。
第1に、固定アタッチメントモデルでは、物理インフラストラクチャは、管理される統合要素のセットと相互作用し、管理される統合要素のセットは、所定のIPプレフィックスに関するすべての入口トラフィックを受信し、すべての出口トラフィックを物理ネットワークに送信し戻すことになる。このモデルでは、論理的抽象化すると、管理される統合要素の所定のセットごとにある、論理L3ルータについての単一の論理アップリンクポートとなりうる。いくつかの実施形態では、複数の統合クラスタが存在する可能性がある。制御アプリケーションによって提供される論理制御プレーンは、アップリンク(複数可)に向かう出口トラフィックをアウトバウンドにルーティングする役割を果す。いくつかの実施形態では、管理される統合要素の例は、米国特許出願第13/177,535号に記載されている、エクステンダとして機能する第2のレベルの管理されるスイッチング要素を含む。管理される統合要素の例は、図8、9、及び10を参照して上述した管理されるスイッチング要素も含む。
第2に、分散型アタッチメントモデルでは、仮想化アプリケーションは、アタッチメントを、接続する管理されるエッジスイッチング要素の全体に渡って分散させる。これを行うために、管理されるエッジスイッチング要素は、物理ルーティングインフラストラクチャに統合しなければならない。すなわち、各々の管理されるエッジスイッチング要素は、管理されるスイッチング要素のグループの外部の物理ルーティングインフラストラクチャと通信することができなければならない。いくつかの実施形態では、これらのスイッチング要素は、物理スイッチング要素(例えば、物理ルータ)と通信するために、IGPプロトコル(又は、他のルーティングプロトコル)を使用し、物理スイッチング要素は、パケットを(管理されるスイッチング要素によって実装された)論理ネットワーク内に送信し、論理ネットワークからパケットを受信する。このプロトコルを使用して、いくつかの実施形態の管理されるエッジスイッチング要素は、入口トラフィックをその適切な場所に直接引き付けるために、ホストルート(/32)を広告することができる。いくつかの実施形態では、入口及び出口トラフィックは、管理されるスイッチング要素の全体に渡って完全に分散されるため、集中型のトラフィックのホットスポットは存在しないが、論理的抽象化すると、依然として、論理L3ルータについての単一の論理アップリンクポートとなり、論理制御プレーンは、トラフィックをアップリンクにルーティングする役割を果たす。制御プレーンにとって有益ならば、複数のアップリンクポートを論理制御プレーンに露出ささせることを妨げるものではない。しかしながら、アップリンクポートの数は、このモデルではアタッチメントポイントの数と一致する必要はない。
第3に、制御プレーン駆動モデルでは、論理制御プレーンは、外部ネットワークと統合する役割を果す。制御プレーンは、1対1のルーティング統合で露出され、例えば、物理ネットワーク内のすべてのアタッチメントポイントに対して、論理ポートが存在する。論理制御プレーンは、ルーティングプロトコルレベルでネクストホップルータとピアリングする役割を有する。
3つのモデルは、すべて異なる設計トレードオフにぶつかり、固定アタッチメントモデルは、最適でない物理トラフィックルートを伴うが、物理インフラストラクチャとの統合をあまり必要としない。分散モデルの中でも、完全に分散されたモデルのスケールがベストであり、いくつかの実施形態では、論理制御プレーンは、極端では、数千のピアリングセッションである可能性があるすべてのピアリングトラフィックについて役割を果たさない。しかしながら、制御プレーン駆動モデルは、論理制御プレーンに対する最大の制御を与える。最適な物理ルートが望まれる場合、出口ポートは、入口ポートに依存しなければならないため、最大の制御は、ポリシールーティングを必要とする。
III.ステートフルパケット動作
ステートフルパケット動作は、ルーティングされるトラフィックのための論理L3データパスにNATを配置する。論理パイプラインでは、ネットワークアドレス変換は、実際の標準的なL3パイプラインの前又は後で、外部のNATステージで行われる。すなわち、ネットワークアドレス変換は、ルーティングの前又は後でパケットに加えられる。いくつかの実施形態では、NAT構成は、実際のアドレス変換エントリを作成するフローテンプレートを介して行われる。フローテンプレートは、さらに後述される。
NAT機能を配置することは、最初のホップで論理パケット処理の全部又は大部分を実行するアプローチから外れる1つの特徴である。最初のホップで動作の大部分又は全部を実行する基本的なモデルは、いくつかの実施形態では、逆方向に流れるパケットの処理を、異なる最初のホップのスイッチング要素に配置し、所定のトランスポートレベルのフローに関して、ある方向のパケットは、一方の端部で論理パイプラインを介して送信されることになり、逆方向のパケットは、他方の端部でパイプラインを介して送信されることになる。残念ながら、フローごとのNAT状態は、非常に豊富である可能性があり(特に、NATが、より高いレベルのアプリケーションプロトコルをサポートしている場合)、状態は、所定のトランスポートフローに関して、方向間で共有されなければならない。
したがって、いくつかの実施形態は、論理ポートの最初のホップのスイッチング要素に、両方向への論理パイプラインを実行するために、トランスポートフローのオープニングパケットを受信させる。例えば、VM Aが、VM BへのTCP接続をオープンした場合、VM Aのハイパーバイザ(ハイパーバイザとして同じマシンで動作することができる)に接続されたエッジスイッチング要素は、両方向への論理パイプラインを介してパケットを送信する役割を果すようになる。これは、純粋に分散されたNAT機能に関するだけでなく、論理ネットワークトポロジで複数のNATを有することを可能にする。最初のホップのスイッチング要素は、どれくらい多く存在するのかにかかわらず、すべての必要なNAT変換を実行することになり、ネットワークアドレス変換は、単に、(そのスイッチング要素内で)パケットが通過するLDPSパイプライン内の特別なステップになる。
しかしながら、論理パイプラインを介して逆方向に送信されるパケットの供給を配置することは、追加の手段を必要とし、逆方向パケットのための最初のホップのスイッチング要素は、(局所的に利用可能なNAT状態を有することを除く)処理を実行することになる。この目的のために、いくつかの実施形態は、(上記VM Aの)送信元エッジスイッチング要素から宛先エッジスイッチング要素(上記VM Bの)に送信される最初のパケットが、特別な「ヒント状態」を確立することを可能にし、ヒント状態は、宛先スイッチング要素に、そのトランスポートフローの逆方向パケットを、処理せずに送信元スイッチング要素に直接送信させる。送信元スイッチング要素は、次に、逆方向でパイプラインを実行することになり、逆方向パケットのためにローカルNAT状態を使用してNAT動作を逆転させる。いくつかの実施形態は、コントローラが、フローごとの動作に関与する必要がないように、宛先スイッチング要素でこの逆方向ヒント状態を確立するために、(後述される)フローテンプレートを使用する。
次の2つの図、図33及び34は、NAT機能及びヒント状態の配置を示す。図33は、いくつかの実施形態の最初のホップのスイッチング要素が、NAT動作2645を含む論理処理パイプライン200の全体を実行することを概念的に示す。図33は、論理処理パイプライン200が、NAT動作2645が実行されることを示すために、L3処理220内に示されるNAT動作2645を含むことを除いて、図29と同じである。
論理ルータを実装するいくつかの実施形態の管理されるスイッチング要素は、パケットが論理ルータによってルーティングされた後、パケットにNAT動作を実行する。例えば、論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、管理されるスイッチング要素2505は、パケットを管理されるスイッチング要素2510に送出する前に、パケットの送信元IPアドレス(例えば、1.1.1.10)を異なるIPアドレス(例えば、3.1.1.10)に変換する。管理されるスイッチング要素2505は、管理されるスイッチング要素2505を管理するコントローラクラスタ(図示せず)によって管理されるスイッチング要素2505に構成されたNATルール(例えば、フローエントリ)のセットに基づいて、NAT動作2645を実行する。
VM4が受信するパケットは、変換されたIPアドレス3.1.1.10を、パケットの送信元IPアドレスとして有する。VM4からVM1への戻りパケットは、この変換されたアドレスを、パケットの宛先IPアドレスとして有することになる。したがって、変換されたIPアドレスは、このパケットがVM1に達するために、VM1のIPアドレスに変換し戻されなければならない。しかしながらNAT動作を実行するためのNATルールは、管理されるスイッチング要素2505内のみであり、管理されるスイッチング要素2510内にはないため、いくつかの実施形態の管理されるスイッチング要素2510は、戻りパケットのためのVM1のIPアドレスを回復するために、NAT動作2645を実行しないことになる。このように、NATルール及び状態は、すべての潜在的な管理されるスイッチング要素によって共有される必要はない。
図34は、このような実施形態の一例を概念的に示す。具体的には、図34は、管理されるスイッチング要素2510が、戻りパケットを管理されるスイッチング要素2505に送信するとき、論理処理パイプラインを実行しないことを示す。この図は、また、管理されるスイッチング要素2505が、管理されるスイッチング要素2510からの戻りパケットの受信に応じて、管理されるスイッチング要素2505が、この戻りパケットに対する最初のホップスイッチング要素であるかのように、論理処理パイプライン200を実行することを示す。図34は、論理処理パイプラインが反対方向に(左を指す矢印で)描かれていることを除いて、図33と同じである。図34は、ルール3400及び転送テーブル3405も示す。
ルール3400は、いくつかの実施形態では、管理されるスイッチング要素2510を管理するコントローラクラスタ(図示せず)によって構成される転送テーブル3405内のフローエントリである。ルール3400は、管理されるスイッチング要素2510が、管理されるスイッチング要素2505由来のパケットを受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2505への戻りパケットに論理処理パイプラインを実行すべきではないことを指定する(又は、「ヒント」を与える)。
管理されるスイッチング要素2510が、管理されるスイッチング要素2505から、管理されるスイッチング要素2505がNAT動作を実行しているパケットを受信すると、管理されるスイッチング要素2510は、パケットのヘッダ(例えば、論理コンテキスト)に含まれる情報に基づいて、ルール3400を見つける。また、管理されるスイッチング要素2510は、いくつかの実施形態では、送信元マシン(例えば、VM1)に向かう受信されたパケットの宛先マシン(例えば、VM4)からのパケットに、論理処理パイプラインを実行すべきではないことを示すために、1つ又は複数の他のフローエントリを変更する。
管理されるスイッチング要素2510は、次に、このパケットを宛先マシン、例えば、VM4に転送する。管理されるスイッチング要素2510が、VM4からVM1に向かう戻りパケットを受信する場合、管理されるスイッチング要素2510は、このパケットに論理処理パイプラインを実行しないことになる。すなわち、管理されるスイッチング要素2510は、L2での論理転送又はL3での論理ルーティングを実行しないことになる。管理されるスイッチング要素2510は、単に、論理処理がパケットに実行されていないことを、このパケットの論理コンテキストで示すことになる。
管理されるスイッチング要素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)である。
管理されるスイッチング要素2505は、次に、論理スイッチ230に対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポート2を通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、また、論理コンテキストから、論理スイッチ230のポートYが、パケットを送出するポートであることを識別する。さらに、管理されるスイッチング要素2505は、ポートYに対するパケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、ポートYを介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。
次に、管理されるスイッチング要素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アドレスになるように変更する。
管理されるスイッチング要素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に送出することになるポートであることを指定する。
管理されるスイッチング要素2505は、次に、パケットの論理コンテキストに基づいて、それぞれ論理スイッチ220のポートX及びポート1に対する入口及び出口アクセス制御を決定することを含む論理転送ルックアップを実行する。管理されるスイッチング要素2505は、論理スイッチ220の論理ポート1がマッピングされる物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ220の論理ポート1が、管理されるスイッチング要素2505のポート4にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2505のポート4を介してVM1に送信されるべきであると判定する。
図35は、いくつかの実施形態が、パケットを、そのアドレスがNATされた宛先マシンに送信するために実行するプロセス3500を概念的に示す。プロセス3500は、いくつかの実施形態では、パケットを送信元マシンから直接受信する管理されるスイッチング要素によって実行される。
プロセス3500は、(3505で)送信元マシンからパケットを受信することによって開始する。プロセスは、次に、(3510で)パケットが、そのアドレスがNATされている宛先マシンに向けられているかどうかを判定する。いくつかの実施形態では、プロセスは、パケットのヘッダに含まれる情報(例えば、宛先IPアドレス)と一致するフローエントリをルックアップすることによって、パケットがこのような宛先マシンに向けられているかどうかを判定する。1つ又は複数のフローエントリは、パケットが、そのアドレスがNATされている宛先マシンにアドレスされている場合、論理処理(例えば、L2での論理転送又はL3での論理ルーティング)がこのパケットに実行されるべきでないことを指定する。他のフローエントリは、パケットが、そのアドレスがNATされていない宛先マシンにアドレスされている場合、論理処理が実行されるべきであることを指定する。
プロセス3500が、(3510で)パケットが、そのアドレスがNATされている宛先マシンに向けられていると判定すると、プロセス3515は、さらに後述する3520に進む。プロセス3500が、(3510で)パケットが、そのアドレスがNATされていない宛先マシンに向けられていると判定すると、プロセス3500は、パケットに論理処理(例えば、L2での論理転送又はL3での論理ルーティング)を実行する。
プロセス3500は、次に、(3520で)パケットを、宛先マシンへのルート内のネクストホップの管理されるスイッチング要素に送信する。プロセス3500は、次に終了する。
上記で、コントローラは、パケットごとの動作に関与しないことに注意されたい。論理制御プレーンは、なにがネットワークアドレス変換されるべきかを識別するFIBルールを単に供給する。すべてのフローごとの状態は、データパス(Open vSwitch)によって確立される。
上述した実施形態は、送信元NATを利用する。しかしながら、いくつかの実施形態は、同じラインに沿った宛先NAT(DNAT)を使用する。DNATの場合では、すべての処理は、送信元の管理されるエッジスイッチング要素で行われてよい。
さらに、NAT機能を外部及び論理ネットワーク間に配置する場合、動作は、上述したものと異ならない。この場合、外部ネットワークから来るフローに対して、NAT状態は、両方向について(この場合、最初のホップの管理されるエッジスイッチング要素となる)エクステンダに保持されることになる。他方では、外部ネットワークに向けて開始されたトランスポートフローに対して、状態は、送信元ホスト/VMに取り付けられた管理されるエッジスイッチング要素で保持されることになる。
ネットワークアドレス変換のためのこの純粋な分散型アプローチでは、VMモビリティサポートは、VMで確立されたNAT状態を、新しいハイパーバイザに移行する必要がある。NAT状態の移行なしでは、トランスポート接続は、中断することになる。このような状況に対して、いくつかの実施形態は、閉じられた/存在しないTCPフローに送られたパケットにTCPリセットで応答するために、NATを期待するように設計される。より高度な実装は、NAT状態の移行をVMと共に促進させるVM管理システムと統合し、この場合、トランスポート接続は、中断する必要はない。
図36は、VMが第1のホストから第2のホストに移行するときの、第1のホストから第2のホストへのNAT状態の移行の一例を示す。具体的には、この図は、第1のホストのハイパーバイザを使用して、VM、及びVMに関連するNAT状態を移行することを示す。この図は、2つのホスト3600及び3630を示す。
図示のように、この例でのホスト3600は、送信元ホストであり、送信元ホストから、VM3625は、ホスト3630に移行している。ホスト3600では、NATデーモン3610及び管理されるスイッチング要素3605が動作している。NATデーモン3610は、図31を参照して上述したNATデーモン3110と同様である。NATデーモン3610は、元のアドレス及び変換されたアドレスのマッピングを含むNATテーブル3115を保持する。管理されるスイッチング要素3605は、変換されたアドレスを得るために、NATデーモン3610を使用する。管理されるスイッチング要素は、いくつかの実施形態では、上述したように、元のアドレスを送信し、変換されたアドレスを得るために、NATデーモン3610にフローテンプレートを送信する。
ハイパーバイザ3680は、ホスト3600で動作するVMを作成し、管理する。いくつかの実施形態では、ハイパーバイザ3680は、VMが別のホストに移行する前に、管理されるスイッチング要素3605及び/又はNATデーモン3610に、ホスト3600で動作するVMのホスト3600外への移行を通知する。管理されるスイッチング要素3605及び/又はNATデーモン3610は、いくつかの実施形態では、VM移行のイベントの際、コールバックを登録することによって、このような通知を取得する。
いくつかのこのような実施形態では、管理されるスイッチング要素3605は、NATデーモンに、移行するVMに関連するNAT状態(例えば、VMのためのアドレスマッピング、及びプロトコル情報、など)を取得し、NAT状態をハイパーバイザ3680に提供するように要求する。いくつかの実施形態では、NATデーモン3610は、NAT3610が、直接ハイパーバイザ3680によって移行を通知されると、移行するVMに関連するNAT状態を、ハイパーバイザ3680に提供する。ハイパーバイザ3680は、次に、NAT状態を、移行するVMと一緒に宛先ホストに移行する。
いくつかの実施形態では、NATデーモン3610は、移行するVMに関連するNAT状態を、直接、宛先ホストで動作するNATデーモンに送信する。これらの実施形態では、NATデーモン3610及び/又は管理されるスイッチング要素3605は、ハイパーバイザ3680が、宛先ホストへのVMの移行を開始することができるように、NAT状態の移行の完了をハイパーバイザ3680に通知する。
いくつかの実施形態では、管理されるスイッチング要素3605は、また、移行するVMに関連するフローエントリを、ハイパーバイザ3680に、又は、宛先ホストで動作する管理されるスイッチング要素に提供する。ハイパーバイザ3680にフローエントリが提供されると、ハイパーバイザ3680は、フローエントリを、宛先ホストで動作する管理されるスイッチング要素のフローテーブルに送信する。NAT状態単独で、宛先ホストで動作する管理されるスイッチング要素が、移行するVMの変換されたアドレスを取得することを可能にするため、宛先ホストへのフローエントリの移行は、任意である。
送信元ホスト3600の動作の一例をここで説明する。ハイパーバイザ3680が、(例えば、コントローラクラスタからの1つ又は複数のユーザ入力毎に)VM3625を移行する場合、ハイパーバイザ3680は、管理されるスイッチング要素3605に通知する。この例での管理されるスイッチング要素3605は、次に、NATデーモン3610に、VM3625に関連するNAT状態を取得し、取得した状態をハイパーバイザ3680に送信するように要求する。
ハイパーバイザ3680は、次に、VMのデータを移動することによって、VM3625を宛先ホスト3630に移行する。いくつかの実施形態では、ハイパーバイザ3680は、VM3625の実行状態を取り込み、状態をVM3625に送信することによって、ライブマイグレーションが可能である。ハイパーバイザ3680は、また、ホスト363
0で動作する管理されるスイッチング要素3635が、ちょうどホスト3630に移行されたVM3625に関するNATデーモン3640から、変換されたアドレスを取得することができるように、取得したNAT状態を、ホスト3630のNATテーブル3645に移動する。
図37は、VMが第1のホストから第2のホストに移行するときの、第1のホストから第2のホストへのNAT状態の移行の別の例を示す。具体的には、この図は、第1のホストのハイパーバイザに、移行するVMに関連するNAT状態を取得し、NAT状態を第2のホストに送信するように要求するために、制御クラスタを使用することを示す。図は、2つのホスト3600及び3630を示す。しかしながら、この例ではホスト3600で動作するハイパーバイザ3680は、送信元ホストで動作する管理されるスイッチング要素又はNATデーモンへの通知をサポートしない。
いくつかの実施形態のハイパーバイザ3680は、管理されるスイッチング要素又はNATデーモンに、VMの宛先ホストへの移行を通知しないため、移行するVMに関連するNAT状態は、ハイパーバイザ3680が、VMの宛先ホストへの移行を開始又は完了した後、宛先ホストに送信される。具体的には、管理されるスイッチング要素3635は、いくつかの実施形態では、例えば、管理されるスイッチング要素3635にとって新しい3625のMACアドレスを検出することによって、VM3625の移行を検出することになる。管理されるスイッチング要素3625は、制御クラスタ3705に、VM3625の追加(したがって、VM3625のための管理されるスイッチング要素3625の新しいポート)を通知する。
制御クラスタ3705は、上述した制御クラスタ1105及び2205と同様である。VMの追加の管理されるスイッチング要素3635からの通知の受信に応じて、制御クラスタ3705は、送信元ホスト3600で動作するハイパーバイザ3680に、移行されたVM3625に関連するNAT状態を取得し、NATテーブル3645を取得したNAT状態で更新するように要求する。いくつかの実施形態では、制御クラスタ3705は、加えて、移行されたVM3625に関連するフローエントリを取得し、これらのフローエントリを、宛先ホスト3630のフローテーブル3650に入れるように要求する。
いくつかの実施形態では、制御クラスタ3705は、NATテーブル3645及び/又は3650が、移行されたVM3625に関連するNAT状態及び/又はフローエントリで更新されるように、管理されるスイッチング要素及び/又はNATデーモン3610に、NAT状態及び/又はフローエントリをNATデーモン3640及び/又は管理されるスイッチング要素3635に送信するように、直接要求することができる。
送信元ホスト3600、宛先ホスト3630、及び制御クラスタ3705の例示的な動作をここで説明する。ハイパーバイザ3680が、(例えば、制御クラスタからの1つ又は複数のユーザ入力ごとに)VM3625に移行する場合、ハイパーバイザ3680は、VM3625の構成データ又は実行状態をホスト3630に移動することによって、VM3625に移行する。ここではホスト3630で動作するVM3625は、管理されるスイッチング要素3635にパケットを送信する。この例での管理されるスイッチング要素3635は、パケットの送信元MACアドレスが、管理されるスイッチング要素3635にとって新しいことを認識することによって、ホスト3630へのVM3625の移行を検出する。この例での管理されるスイッチング要素3605は、次に、VM3625の追加(又は、VM3625のための新しいポートの作成)を、制御クラスタ3705に通知する。
制御クラスタ3705は、次に、ハイパーバイザ3680に、VM3625に関連するNAT状態を取得し、NAT状態を宛先ホスト3630に送信するように要求する。宛先ホスト3630で動作する管理されるスイッチング要素3635は、NATデーモン3640から、ちょうどホスト3630に移行されたVM3625のための変換されたアドレスを取得することができる。
IV.負荷分散
いくつかの実施形態は、L3パイプラインの特別なステップとして負荷分散を実装する。例えば、いくつかの実施形態は、宛先ネットワークアドレス変換が後に続く論理バンドルベースの負荷分散ステップを実装する。いくつかの実施形態では、(負荷分散サービスを提供する)論理ルータは、仮想IPアドレスをホストし、したがって、仮想IPアドレス(VIP)に送信されたARP要求に応答することになる。これにより、トラフィックが、クラスタメンバが存在する同じL2ドメインからVIPに送信されたとしても、仮想IPは、機能し続けることになる。
図38は、負荷分散を実行する論理スイッチ及び論理ルータの例示的な物理的実装を示す。具体的には、この図は、論理ルータが、フローエントリに基づいてL3ルータ又は管理されるスイッチング要素によって実装される、集中型のL3ルーティングモデルを示す。この図は、管理されるスイッチング要素3805〜3825、及びVM3830〜3850を示す。この図は、また、L2処理3855、DNAT及び負荷分散3860、L3ルーティング3865、並びに、L2処理3870及び3875を含む論理処理パイプラインを示す。
いくつかの実施形態の管理されるスイッチング要素3805は、エクステンダとして機能する第2のレベルの管理されるスイッチング要素である。いくつかのこのような実施形態での管理されるスイッチング要素3805は、管理されるスイッチング要素3805が、フローエントリ(図示せず)に基づいて論理ルータ(図示せず)を実装し、又は、論理ルータを実装するL3ルータが動作している同じホストで動作している点で、上述した管理されるスイッチング要素810及び1910と同様である。加えて、管理されるスイッチング要素3805は、宛先アドレスを別のアドレスに変換し、同じサービス(例えば、ウェブサービス)を提供する異なるマシン(例えば、VM)間で負荷を分散するために、DNAT及び負荷分散3860を実行する。
管理されるスイッチング要素3805〜3825は、VM3830〜3850が接続される論理スイッチ(図示せず)を実装する。この例でのVM3840及び3850は、同じサービスを提供する。すなわち、VM3840及び3850は、いくつかの実施形態では、同じサービスを提供するサーバとして集合的に動作する。しかしながら、VM3840及び3850は、異なるIPアドレスを有する別々のVMである。管理されるスイッチング要素3805、又は、管理されるスイッチング要素3805によって使用されるL3ルータ(図示せず)は、VM3840及び3850間でワークロードを分散するために、負荷分散を実行する。
いくつかの実施形態では、負荷分散は、サービスを要求するパケットの宛先アドレスを、サービスを提供するVMの異なるアドレスに変換することによって達成される。具体的には、管理されるスイッチング要素3805、又は、管理されるスイッチング要素3805によって使用されるL3ルータ(図示せず)は、VMのうちの特定のVMが、他のVMが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのVM3840及び3850のアドレスに変換する。サービス提供VMの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
いくつかの実施形態では、管理されるスイッチング要素3805又はL3ルータは、論理処理パイプラインのDNAT及び負荷分散3860を実行した後、L3ルーティング3865を実行する。したがって、管理されるスイッチング要素3805又はL3ルータは、これらの実施形態では、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素3820及び3825は、エッジスイッチング要素であり、したがって、VM3840及び3850との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素3805又はL3ルータは、論理処理パイプラインのDNAT及び負荷分散3860を実行する前に、L3ルーティング3865を実行する。
管理されるスイッチング要素3805の例示的な動作をここで説明する。管理されるスイッチング要素3810は、VM3840及び3850によって集合的に提供されるサービスを要求するパケットを受信する。このパケットは、VM3830の1つから、具体的には、特定のプロトコルを使用するアプリケーションから来る。この例でのパケットは、特定のプロトコルを識別するプロトコル番号を含む。パケットは、また、サービスを提供するサーバを表すIPアドレスを、宛先IPアドレスとして含む。このパケットへの送信元L2処理3855の実行の詳細は、上記又は下記の送信元L2処理の例と同様であるため、説明を簡単にするために省略される。
その後、送信元L2処理3855が、L3ルーティング3865を含むL3処理を実行するための管理されるスイッチング要素3805にパケットをルーティングするために実行される。この例では、管理されるスイッチング要素3805は、パケットにDNAT及び負荷分散3860を実行する。すなわち、管理されるスイッチング要素3805は、パケットの宛先IPアドレスを、サービスを提供するVMのうちの1つのIPアドレスに変換する。この例では、管理されるスイッチング要素3805は、VM3840〜3850間で最少のワークロードを有するVM3840〜3850のうちの1つを選択する。管理されるスイッチング要素3805は、新しい宛先IPアドレスに基づいて、パケットにL3ルーティング3865を実行する(すなわち、パケットをルーティングする)。
管理されるスイッチング要素3820は、宛先IPアドレスがVM3840のうちの1つのものであるため、パケットを受信し、この宛先IPは、VMのMACアドレスに解決される。管理されるスイッチング要素3820は、パケットをVMに転送する。このVMは、元々サービスを要求したアプリケーションにパケットを返すことになる。これらの戻りパケットは、管理されるスイッチング要素3805に達することになり、管理されるスイッチング要素3805は、NATを実行し、アプリケーションがこれらのパケットの宛先であることを識別することになる。
図39は、負荷分散を実行する論理スイッチ及び論理ルータの別の例示的な物理的実装を示す。具体的には、この図は、論理ルータが、送信元及び宛先L2処理も実行する管理されるスイッチング要素によって実装される、分散型のL3ルーティングモデルを示す。すなわち、この管理されるスイッチング要素は、論理処理パイプライン全体を実行する。この図は、管理されるスイッチング要素3905及び3820〜3825、並びに、VM3910及び3840〜3850を示す。この図は、また、L2処理3855、DNAT及び負荷分散3860、L3ルーティング3865、並びに、L2処理3870〜3875を含む論理処理パイプラインを示す。
いくつかの実施形態の管理されるスイッチング要素3905は、管理されるスイッチング要素3905が、論理処理パイプライン全体を実装する点で、図29を参照して上述した管理されるスイッチング要素2505と同様である。すなわち、管理されるスイッチング要素3905は、論理ルータ及び論理スイッチを実装する。加えて、管理されるスイッチング要素3905は、宛先アドレスを別のアドレスに変換し、同じサービス(例えば、ウェブサービス)を提供する異なるマシン(例えば、VM)間で負荷を分散するために、DNAT及び負荷分散3860を実行する。
上述したように、管理されるスイッチング要素3905は、VM3910及び3840〜3850が接続される論理スイッチ(図示せず)を実装する。管理されるスイッチング要素3905は、また、ワークロードをVM3840及び3850間で分散するために、負荷分散を実行する。具体的には、管理されるスイッチング要素3905は、VMのうちの特定のVMが、他のVMが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのVM3840及び3850のアドレスに変換する。サービス提供VMの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
いくつかの実施形態では、管理されるスイッチング要素3905は、論理処理パイプラインのDNAT及び負荷分散3860を実行した後、L3ルーティング3865を実行する。したがって、管理されるスイッチング要素3905は、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素3820及び3825は、エッジスイッチング要素であり、したがって、VM3840及び3850との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素3905は、論理処理パイプラインのDNAT及び負荷分散3860を実行する前に、L3ルーティング3865を実行する。
管理されるスイッチング要素3905の動作は、管理されるスイッチング要素3905が、DNAT及び負荷分散3860を含む論理処理パイプライン全体を実行することを除いて、図38を参照して上述した例示的動作と同様である。
図40は、負荷分散を実行する論理スイッチ及び論理ルータのさらに別の例示的な物理的実装を示す。具体的には、この図は、論理ルータが、送信元L2処理も実行する管理されるスイッチング要素によって実装される、分散型のL3ルーティングモデルを示す。すなわち、最初のホップの管理されるスイッチング要素としてのこの管理されるスイッチング要素は、送信元L2処理及びL3処理を実行する。宛先L2処理は、最後のホップの管理されるスイッチング要素である別の管理されるスイッチング要素によって実行される。この図は、管理されるスイッチング要素4005及び3820〜3825、並びに、VM4010及び3840〜3850を示す。この図は、また、L2処理3855、DNAT及び負荷分散3860、L3ルーティング3865、並びに、L2処理3870〜3875を含む論理処理パイプラインを示す。
いくつかの実施形態の管理されるスイッチング要素4005は、管理されるスイッチング要素4005が、論理処理パイプラインの送信元L2処理及びL3処理を実行する点で、図46を参照して上述した管理されるスイッチング要素2505と同様である。すなわち、管理されるスイッチング要素4005は、送信元マシンに接続された論理ルータ及び論理スイッチを実装する。加えて、管理されるスイッチング要素4005は、宛先アドレスを別のアドレスに変換し、同じサービス(例えば、ウェブサービス)を提供する異なるマシン(例えば、VM)間で負荷を分散するために、DNAT及び負荷分散3860を実行する。
上述したように、管理されるスイッチング要素4005は、1つ又は複数のVM4010が接続される論理スイッチ(図示せず)を実装する。管理されるスイッチング要素4005は、また、ワークロードをVM3840及び3850間で分散するために、負荷分散を実行する。具体的には、管理されるスイッチング要素4005は、VMのうちの特定のVMが、他のVMが得るよりもはるかに多いワークロードを得ないように、要求パケットの宛先アドレスを、いくつかのVM3840及び3850のアドレスに変換する。サービス提供VMの現在のワークロードを求めることについてのさらなる詳細は、以下でさらに説明される。
いくつかの実施形態では、管理されるスイッチング要素4005は、論理処理パイプラインのDNAT及び負荷分散3860を実行した後、L3ルーティング3865を実行する。したがって、管理されるスイッチング要素4005は、変換された宛先アドレスに基づいて、異なる管理されるスイッチング要素にパケットをルーティングする。管理されるスイッチング要素3820及び3825は、エッジスイッチング要素であり、したがって、VM3840及び3850との間でパケットを直接送受信する。他の実施形態では、管理されるスイッチング要素4005は、論理処理パイプラインのDNAT及び負荷分散3860を実行する前に、L3ルーティング3865を実行する。
管理されるスイッチング要素4005の動作は、異なる管理されるスイッチング要素が、論理処理パイプラインの異なる部分を実行することを除いて、図38を参照して上述した例示的動作と同様である。
図41は、サービス(例えば、ウェブサービス)を集合的に提供するマシン間で負荷を分散する負荷分散デーモンを概念的に示す。具体的には、この図は、パケットを論理的に転送及びルーティングするために論理処理パイプラインを実行する管理されるスイッチング要素が、サービスを提供するマシン間でワークロードを分散するための負荷分散デーモンを使用することを示す。この図は、ホスト4100、管理されるスイッチング要素4105、転送テーブル4120、負荷分散デーモン4110、及び接続テーブル4115を、図の上半分に示す。この図は、フローエントリ4125及び4130を示す。
フローエントリ4125及び4130は、それぞれ、クォリファイア及びアクションを有する。フローエントリ4125及び4130として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。ホスト4100は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム(例えば、Windows(登録商標)及びLinux(登録商標))によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素4105は、ホスト4100で実行するソフトウェアスイッチング要素(例えば、Open vSwitch)である。上述したように、コントローラクラスタ(図示せず)は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素4105は、それ自体はフローエントリを生成しない。
いくつかの実施形態の管理されるスイッチング要素4105は、図38〜40を参照して上述した論理処理パイプラインの全部又は一部を実行する。具体的には、管理されるスイッチング要素4105は、転送テーブル4120内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするために、L3処理を実行する。いくつかの実施形態では、管理されるスイッチング要素4105は、管理されるスイッチング要素に結合されたマシン(図示せず)からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、1つ又は複数の仮想マシン(図示せず)が、ホスト4100で動作しており、管理されるスイッチング要素4105に結合される。
管理されるスイッチング要素4105が、負荷分散を実行するように構成されている場合、いくつかの実施形態の管理されるスイッチング要素4105は、パケットに負荷分散を実行するための負荷分散デーモン4110を使用する。負荷分散デーモン4110は、負荷分散デーモン4110が、変換された宛先アドレス(例えば、宛先IPアドレス)を提供する点で、NATデーモン3110と同様である。加えて、負荷分散デーモン4110は、そのIPアドレスがテーブル4115に含まれるマシンの現在の負荷に基づいて、元の宛先アドレスを変換する先の宛先を選択する。
いくつかの実施形態の負荷分散デーモン4110は、ホスト4100上で動作するソフトウェアアプリケーションである。負荷分散デーモン4110は、接続テーブル4115を保持し、接続テーブル4115は、接続識別子と、サービスを提供するマシンの利用可能なアドレスとのペアリングを含む。図示していないが、いくつかの実施形態の接続テーブル4115は、アドレスに関連するマシンについて定量化された現在のワークロードを含むこともできる。いくつかの実施形態では、負荷分散デーモン4110は、VMへの現在のワークロードを含むVMの更新された状態を取得するために、サービスを提供するVMと定期的に通信する。
管理されるスイッチング要素4105が、接続識別子に基づいて選択するアドレスを要求すると、負荷分散デーモンは、いくつかの実施形態では、所定の宛先アドレスが変換されるべき先のアドレスを見つけるために、テーブル4115をルックアップする。いくつかの実施形態では、負荷分散デーモンは、負荷をいくつかのVM間で分散するために、サーバVMを識別するためにスケジューリング方法を実行する。このようなスケジューリングアルゴリズムは、アドレスに関連するマシンへの現在の負荷を考慮する。負荷分散方法のさらなる詳細及び例は、参照により本明細書に組み込まれる米国仮特許出願第61/560,279号に記載されている。
接続識別子は、マシンから戻るパケットが、要求側まで正確に中継され得るように、サービスの要求側(すなわち、パケットの起点又は送信元)と、要求されたサービスを提供することになるマシンとの間の接続を一意的に特定する。これらの戻りパケットの送信元IPアドレスは、サービスを提供するサーバを表すIPアドレス(「仮想IPアドレス」と呼ばれる)に変換し戻されることになる。これらの接続識別子間のマッピングは、送信元からその後に送信されるパケットにも使用されることになる。いくつかの実施形態では、接続識別子は、送信元ポート、宛先ポート、送信元IPアドレス、宛先IPアドレス、プロトコル識別子、などを含む。送信元ポートは、パケットが送信されたポート(例えば、TCPポート)である。宛先ポートは、パケットを送信すべき先のポートである。プロトコル識別子は、パケットをフォーマットするために使用されるプロトコルのタイプ(例えば、TCP、UDP、など)を識別する。
異なる実施形態の管理されるスイッチング要素4105及び負荷分散デーモン4110は、アドレスを要求し、供給するために、異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素4105は、元のアドレスを有するが、変換されたアドレスを持たないパケットを、負荷分散デーモンに送信する。これらの実施形態の負荷分散デーモン4110は、元のアドレスを、変換されたアドレスに変換する。負荷分散デーモン4110は、管理されるスイッチング要素4105にパケットを送信し戻し、管理されるスイッチング要素4105は、パケットを宛先マシンに向けて送信するために、論理転送及び/又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素4105は、最初に、解決する元のアドレスを含むパケットと共に負荷分散デーモン4110にメタデータを送信する。このメタデータは、管理されるスイッチング要素4105が、負荷分散デーモン4110から戻るパケットを受信するとき、管理されるスイッチング要素4105が、論理処理パイプラインの実行を再開するために使用する情報(例えば、レジスタ値、論理パイプライン状態、など)を含む。
他の実施形態では、いくつかの実施形態の管理されるスイッチング要素4105は、フローテンプレートを負荷分散デーモン4110に送信することによってアドレスを要求し、フローテンプレートは、アドレスについての実際の値を持たないフローエントリである。負荷分散デーモンは、テーブル4115をルックアップすることによって、フローテンプレートに記入するアドレスを見つけ出す。負荷分散デーモン4110は、次に、記入されたフローテンプレートを転送テーブル4120に入れることによって、実際のアドレスが記入されたフローテンプレートを、管理されるスイッチング要素4110に送信し戻す。いくつかの実施形態では、負荷分散デーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。さらに、負荷分散デーモン4110が、変換されたアドレスを見つけるのに失敗した場合、負荷分散デーモンは、パケットを破棄するようにフローテンプレートで指定する。
ここで、管理されるスイッチング要素4105及び負荷分散デーモン4110の例示的な動作を、3つの異なるステージ1〜3(丸で囲まれた1〜3)に関して説明する。この例では、管理されるスイッチング要素4115は、マシン(図示せず)から転送及びルーティングするためにパケットを受信する管理されるエッジスイッチング要素である。具体的には、この例でのパケットは、サービスの要求である。パケットは、要求されたサービスを提供するサーバを表すIPアドレスを有する。
管理されるスイッチング要素4105は、このパケットを受信し、転送テーブル4120内のフローエントリに基づいてL3処理を実行する。パケットにL3処理210を実行すると同時に、管理されるスイッチング要素4105は、(ステージ1で)フローエントリ4125を識別し、フローエントリ4125で指定されるアクションを実行する。図示のように、フローエントリ4125は、負荷分散デーモン4110に新しい宛先IPアドレスを提供させるために、接続識別子を有するフローテンプレートが負荷分散デーモン4110に送信されるべきであることを示す。この例では、フローエントリ4125は、いくつかの実施形態では番号である優先順位の値Nを有する。
ステージ2では、負荷分散デーモン4110は、フローテンプレートを受信し、接続テーブル4115をルックアップし、スケジューリングアルゴリズムを実行することによって、指定された接続IDを有するパケットの宛先IPアドレスが2.1.1.10に変換されるべきであることを知る。負荷分散デーモンは、フローテンプレートに記入し、記入されたテンプレート(ここでは、フローエントリ4130)を転送テーブル4130に挿入する。この例では、負荷分散デーモンは、N+1の優先順位を、記入されたテンプレートに割り当てる。
ステージ3では、管理されるスイッチング要素4110は、パケットの宛先IPアドレスを変更するために、フローエントリ4130を使用する。また、管理されるスイッチング要素4110がその後に処理するパケットのために、管理されるスイッチング要素4105は、パケットが指定された接続識別子を有する場合、フローエントリ4125の上のフローエントリ4130を使用する。
いくつかの実施形態では、負荷分散デーモン4110及び管理されるスイッチング要素は、ホスト4100で動作している同じ仮想マシンで動作し、又は、ホスト4100で動作している異なる仮想マシンで動作する。負荷分散デーモン4110及び管理されるスイッチング要素は、別々のホストで動作することもできる。
V.DHCP
仮想化アプリケーションは、いくつかの実施形態では、共有ホストで動作しているDHCPデーモンにDHCP要求をルーティングする転送ルールを定義する。この機能のために共有ホストを使用することは、顧客ごとのDHCPデーモンを実行する余分なコストを避ける。
図42は、異なるユーザのための異なる論理ネットワークにDHCPサービスを提供するDHCPデーモンを示す。この図は、図の左半分に、それぞれ異なる2つのユーザA及びBのための例示的な論理ネットワーク4201及び4202の実装を示す。論理ネットワーク4201及び4202の例示的な物理的実装は、図の右半分に示される。
図の左半分に示すように、論理ネットワーク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サービスを提供する。
ユーザBのための論理ネットワーク4202は、論理ルータ4235、並びに2つの論理スイッチ4240及び4245を含む。VM4250及びVM4255が、論理スイッチ4240に接続される。VM4260が、論理スイッチ4245に接続される。論理ルータ4235は、論理スイッチ4240及び4245間でパケットをルーティングする。論理ルータ4235は、DHCPデーモン4236にも接続され、DHCPデーモン4236は、ユーザBのVMである論理ネットワーク4202内のVMにDHCPサービスを提供する。
図の左半分に示す論理的実装では、ユーザのための各論理ネットワークは、それ自体のDHCPデーモンを有する。いくつかの実施形態では、DHCPデーモン4206及び4236は、異なるホスト又はVMで動作する別々のDHCPデーモンとして物理的に実装される。すなわち、各ユーザは、ユーザのマシンのみのための別々のDHCPデーモンを有することになる。
他の実施形態では、異なるユーザのための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を使用する。
異なる実施形態のDHCPデーモン4270は、異なるホストで動作してよい。例えば、いくつかの実施形態のDHCPデーモン4270は、管理されるスイッチング要素4275〜4285の1つが動作している同じホスト(図示せず)で動作する。他の実施形態では、DHCPデーモン4270は、管理されるスイッチング要素が動作しているホストでは動作せず、代わりに、管理されるスイッチング要素によってアクセス可能な別のホストで動作する。
図43は、中央のDHCPデーモン、及びいくつかのローカルのDHCPデーモンを示す。中央のDHCPデーモンは、ローカルのDHCPデーモンを介して、異なるユーザのVMにDHCPサービスを提供する。各ローカルのDHCPデーモンは、中央のDHCPデーモンのサービスをローカルのDHCPデーモンにオフロードするために、アドレスのバッチを維持し、管理する。この図は、中央のデーモン4320、並びに、2つのローカルのDHCPデーモン4330及び4350を含む例示的なアーキテクチャを示す。
図示のように、中央の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デーモンにより多くのアドレスを提供する。
ローカルの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は、いくつかの実施形態では、これらの間に確立されるトンネルを有する。
同様に、ローカルの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は、いくつかの実施形態では、これらの間に確立されるトンネルを有する。
VI.介在するサービスVM
上記の説明では、いくつかの実施形態の仮想化アプリケーションによって提供される様々なL3サービスが記載されている。ネットワーク制御システムの柔軟性を最大化するために、いくつかの実施形態は、ユーザが物理ネットワークで今日使用している「ミドルボックス」によって提供されるものと同様の機能を提供するサービスマシンを介在させる。
したがって、いくつかの実施形態のネットワーク制御システムは、論理ネットワークのLDPSに取り付けられる少なくとも1つの「ミドルボックス」VMを含む。次に、LDPセットのパイプライン状態は、関連するパケットが、このVMの論理ポートに転送されるように、(論理制御プレーンをポピュレートする)制御アプリケーションによってプログラムされる。VMがパケットを処理した後、パケットは、その転送が論理ネットワークを介して続くように、論理ネットワークに送り返される。いくつかの実施形態では、ネットワーク制御システムは、多くのこのような「ミドルボックス」VMを利用する。このように介在されるミドルボックスVMは、非常にステートフルであり、この文書に記載されたL3サービスを超えた機能を実装することができる。
VII.スケーラビリティ
3つの局面に沿ったいくつかの実施形態の論理L3スイッチング設計のスケーラビリティの意味は、以下のように対処される。これらの3つの局面は、(1)論理状態、(2)物理的なトンネリング状態、及び(3)分散型結合ルックアップである。論理パイプライン処理の大部分が、第1のホップで発生する。これは、すべての相互接続されたLDPセットのすべての論理(テーブル)状態が、いくつかの実施形態では、パイプラインの実行を行うことができるネットワーク内のどこにでも配布されることを意味する。すなわち、すべての相互接続されたLDPセットの結合された論理状態が、いくつかの実施形態では、これらのLDPセットのいずれかに取り付けられたすべての管理されるエッジスイッチング要素に配布される。しかしながら、いくつかの実施形態では、論理トポロジの「メッシュ性(meshiness)」が、論理状態の配布負荷を増加させない。
状態の配布を制限するために、いくつかの実施形態は、最後のLDPSパイプラインが第1のホップではなく最後のホップで実行されることになるように、送信元及び宛先デバイス間でパイプラインの実行を分散させる。しかしながら、いくつかの場合では、これは、結果として、最後のLDPSの論理転送決定を行うために、すべての管理されるスイッチング要素について状態を十分に配布せず、この状態なしでは、送信元の管理されるスイッチング要素は、宛先の管理されるスイッチング要素にパケットを配信することさえできない可能性がある。したがって、いくつかの実施形態は、送信元及び宛先デバイスにパイプラインの実行を分散するために、一般的なLDPSモデルを制限することになる。
いくつかの実施形態では、今日使用される物理制御プレーンをまねるために、論理制御プレーンが設計されているように、論理状態自体は、多くてもO(N)エントリ(Nは、相互接続されているLDPセット内の論理ポートの総数である)より多くのエントリをおそらく含まず、物理制御プレーンは、既存のハードウェアスイッチングチップセットの能力によって制限される。したがって、論理状態の配布は、システムの主要なボトルネックではない可能性があるが、論理制御プレーンの設計が大きくなると、最終的には、1つのボトルネックになる可能性がある。
いくつかの実施形態は、ネットワークの管理されるスイッチング要素を、より高いレベルの集合体スイッチング要素によって相互接続されたクリークに分割する。「すべてが最初のホップ上」モデルで論理状態を減少させるために、分割を実装する代わりに、いくつかの実施形態は、後述するように、トンネル状態を減少させるように分割する。クリークの例は、上述の米国特許出願13/177,535号に記載されている。この出願は、最初のホップの管理されるスイッチング要素で論理データ処理のすべて又は大部分を実行する様々な実施形態も記載している。
システム全体で維持される物理トンネル状態は、O(N)であり、ここで、Nは、相互接続されたLDPセット全体内の論理ポートの数である。これは、論理ポートを有するどのような管理されるエッジスイッチング要素も、宛先の管理されるエッジスイッチング要素にトラフィックを直接送信することができなければならないためである。したがって、O(N)負荷を任意の集中型制御要素にかけることなく、効率的にトンネル状態を維持することは、純粋なL2LDPセットでより重要にさえなる。集合体スイッチング要素は、いくつかの実施形態では、ネットワークをクリークにスライスするために使用される。これらの実施形態のいくつかでは、パケットは、依然として、ずっと送信元の管理されるエッジスイッチング要素で論理的にルーティングされるが、パケットを、宛先のエッジスイッチング要素に直接トンネリングする代わりに、プールノードに送信し、プールノードは、宛先MACアドレスに基づいて宛先に向けてパケットをルーティングする。本質的には、最後のL2LDPSは、複数のクリークにまたがり、プールノードは、そのL2ドメインの部分を縫い合わせるために使用される。
図44〜45Bは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素で実装される分散型論理ルータを示す。具体的には、図44〜45Bは、宛先L2処理の一部が、最後のホップの管理されるスイッチング要素(すなわち、パケットを直接宛先マシンに送信するスイッチング要素)によって実行されることを示す。
図44は、最後のホップのスイッチング要素で一部の論理的処理を実行する一例を概念的に示す。具体的には、図44は、パケットの送信元マシンに結合された管理されるスイッチング要素2505が、論理処理パイプライン200の大部分を実行し、宛先マシンに結合された管理されるスイッチング要素2510が、論理処理パイプライン200の一部を実行することを示す。図は、図の左半分に論理ルータ225並びに論理スイッチ220及び230を示す。図は、図の右半分に管理されるスイッチング要素2505及び2510を示す。図は、図の右半部及び左半分の両方にVM1〜4を示す。
いくつかの実施形態では、管理されるスイッチング要素は、論理処理パイプライン200の全体を実行するために、すべての情報(例えば、ルックアップテーブル内のフローエントリ)を保持しない。例えば、これらの実施形態の管理されるスイッチング要素は、パケットをパケットの宛先マシンに送信するために介する宛先論理ネットワークの論理ポートに対するアクセス制御を決定するための情報を保持しない。
管理されるスイッチング要素2505及び2510に沿った例示的なパケットフローをここで説明する。論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、次に、L2処理205及びL3処理210をパケットに実行する。
管理されるスイッチング要素2505は、次に、L2処理215の一部を実行する。具体的には、管理されるスイッチング要素2505は、パケットのアクセス制御を決定する。例えば、管理されるスイッチング要素2505は、パケットが、論理スイッチ230に、論理スイッチ230のポートYを通ってきたパケットを拒絶させることになるネットワークアドレス(例えば、送信元/宛先MAC/IPアドレス、など)を持っていないことを判断する。管理されるスイッチング要素2505は、次に、論理スイッチ230のポート1が、宛先であるVM4にパケットを送出するポートであることを判断する。しかしながら、管理されるスイッチング要素2505は、いくつかの実施形態では、出口ACL2670を実行するための情報(例えば、フローエントリ)を持たないため、管理されるスイッチング要素2505は、論理スイッチ230のポート1に対するパケットのアクセス制御を決定しない。
管理されるスイッチング要素2505は、次に、論理スイッチ230の論理ポート1がマッピングされる先の物理ポートを決定するために、マッピングルックアップを実行する。この例では、管理されるスイッチング要素2505は、論理スイッチ230の論理ポート1が、管理されるスイッチング要素2510のポート5にマッピングされると判定する。管理されるスイッチング要素2505は、次に、パケットを物理ポートに転送するための動作を決定するために、物理的ルックアップを実行する。この例では、管理されるスイッチング要素2505は、パケットが、管理されるスイッチング要素2510のポート5を介してVM4に送信されるべきであると判断する。この例での管理されるスイッチング要素2505は、パケットの論理コンテキストを、パケットと共にVM4に送信する前に変更する。
管理されるスイッチング要素2505は、管理されるスイッチング要素2510にパケットを送信する。いくつかの場合、管理されるスイッチング要素2505は、管理されるスイッチング要素2505及び2510間に確立されるトンネル(例えば、管理されるスイッチング要素2505のポート3及び管理されるスイッチング要素2510のポート3で終端するトンネル)を介してパケットを送信する。トンネルを利用できない場合、管理されるスイッチング要素2505は、パケットが管理されるスイッチング要素2510に到達することができるように、プールノード(図示せず)にパケットを送信する。
管理されるスイッチング要素2510がパケットを受信すると、管理されるスイッチング要素2510は、パケットの論理コンテキストに基づいて(論理コンテキストは、出口ACL2670が、パケットに実行されるために残っていることを示すことになる)、出口ACL2670をパケットに実行する。例えば、管理されるスイッチング要素2510は、パケットが、論理スイッチ230に、論理スイッチ230のポート1を介してパケットを送信させなくすることになるネットワークアドレスを持っていないことを判断する。管理されるスイッチング要素2510は、次に、L2処理215を実行した管理されるスイッチング要素2505によって決定されたように、管理されるスイッチング要素2510のポート5を介してVM4にパケットを送信する。
図45A〜45Bは、図44を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに管理されるスイッチング要素2505及び2510の例示的な動作を概念的に示す。具体的には、図45Aは、論理ルータ225、論理スイッチ220、及び、論理ルータ230の一部を実装する管理されるスイッチング要素2505の動作を示す。図45Bは、論理スイッチ230の一部を実装する管理されるスイッチング要素2510の動作を示す。
図45Aの下半分に示すように、管理されるスイッチング要素2505は、L2エントリ4505及び4515、並びにL3エントリ4510を含む。これらのエントリは、コントローラクラスタ(図示せず)が管理されるスイッチング要素2505に供給するフローエントリである。これらのエントリは、3つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
論理スイッチ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アドレスとして有する。
管理されるスイッチング要素2505の動作は、図45Aの例での管理されるスイッチング要素2505がパケット4530に実行されることを除いて、管理されるスイッチング要素が、丸で囲まれた9を識別し、L2論理処理2665を実行するまでは、図30Aの例での管理されるスイッチング要素2505の動作と同様である。
パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2675のコンテキストマッピングを実装するL2エントリ4515内の丸で囲まれた10によって示されるレコード(「レコード10」と呼ぶ)を識別する。この例では、レコード10は、VM4が結合される管理されるスイッチング要素2510のポート5を、パケット4530が転送されるべき論理スイッチ230の論理ポート(ステージ2665で決定される)に対応するポートとして識別する。レコード10は、加えて、パケット4530が、転送テーブルによって(例えば、パケット4530をディスパッチポートに送信することによって)さらに処理されることを指定する。
パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ4515内の丸で囲まれた11によって示されるレコード(「レコード11」と呼ぶ)を識別する。レコード11は、パケット4530が管理されるスイッチング要素2510に到達するために、パケット4530が送信されるべきポートとして、管理されるスイッチング要素2505のポート3を指定する。この場合では、管理されるスイッチング要素2505は、パケット4530を、管理されるスイッチング要素2510に結合される管理されるスイッチング要素2505のポート3から送出することになる。
図45Bに示すように、管理されるスイッチング要素2510は、パケット4530を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素2510が、管理されるスイッチング要素805からパケット4530を受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2510の転送テーブルに基づいて、パケット4530の処理を開始する。管理されるスイッチング要素2510は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット4530のヘッダに格納された論理コンテキストに基づいて、パケット4530の論理コンテキストを識別する。論理コンテキストは、パケット4530が、管理されるスイッチング要素805によってステージ2665まで処理されていることを指定する。このように、レコード1は、パケット4530が、転送テーブルによって(例えば、パケット4530をディスパッチポートに送信することによって)さらに処理されることを指定する。
次に、管理されるスイッチング要素2510は、パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、出口ACLを実装する転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット4530がさらに処理されることを可能にし、したがって、パケット4530が、転送テーブルによって(例えば、パケット4530をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素2510が、パケット4530の論理コンテキスト(すなわち、パケット4530は、論理スイッチ230のL2出口ACLについて処理されている)を、パケット4530のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素2510は、パケット4530のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、パケット4530がVM4に到達するために、パケット4530が通って送信されるべき管理されるスイッチング要素2510のポート5を指定する。この場合では、管理されるスイッチング要素2510は、パケット4530を、VM4に結合される管理されるスイッチング要素2510のポート5から送出することになる。いくつかの実施形態では、管理されるスイッチング要素2510は、パケットをVM4に送信する前に、パケット4530から論理コンテキストを除去する。
図46〜47Bは、管理されるスイッチング要素のフローエントリに基づいていくつかの管理されるスイッチング要素で実装される分散型論理ルータを示す。具体的には、図46〜47Bは、送信元L2処理205及びL3処理210が、最初のホップの管理されるスイッチング要素(すなわち、送信元マシンからパケットを直接受信するスイッチング要素)によって実行され、宛先L2処理215全体が、最後のホップの管理されるスイッチング要素(すなわち、パケットを直接宛先マシンに送信するスイッチング要素)によって実行されることを示す。
図46は、最後のホップのスイッチング要素で一部の論理的処理を実行する一例を概念的に示す。具体的には、図46は、パケットの送信元マシンに結合された管理されるスイッチング要素2505が、L2処理205及びL3処理210を実行し、宛先マシンに結合された管理されるスイッチング要素2510が、L2処理215を実行することを示す。すなわち、管理されるスイッチング要素2505は、送信元論理ネットワークに関するL2転送、及びL3ルーティングを実行し、宛先論理ネットワークに関するL2転送は、管理されるスイッチング要素2510によって実行される。図は、図の左半分に論理ルータ225並びに論理スイッチ220及び230を示す。図は、図の右半分に管理されるスイッチング要素2505及び2510を示す。図は、図の右半部及び左半分の両方にVM1〜4を示す。
いくつかの実施形態では、管理されるスイッチング要素は、論理処理パイプライン200の全体を実行するために、すべての情報(例えば、ルックアップテーブル内のフローエントリ)を保持しない。例えば、これらの実施形態の管理されるスイッチング要素は、宛先論理ネットワークに関する論理転送をパケットに実行するための情報を保持しない。
管理されるスイッチング要素2505及び2510に沿った例示的なパケットフローをここで説明する。論理スイッチ220に結合されたVM1が、論理スイッチ230に結合されたVM4にパケットを送信すると、パケットは、最初に、管理されるスイッチング要素2505に送信される。管理されるスイッチング要素2505は、次に、L2処理205及びL3処理210をパケットに実行する。
管理されるスイッチング要素2505は、次に、管理されるスイッチング要素2510にパケットを送信する。いくつかの場合、管理されるスイッチング要素2505は、管理されるスイッチング要素2505及び2510間に確立されるトンネル(例えば、管理されるスイッチング要素2505のポート3及び管理されるスイッチング要素2510のポート3で終端するトンネル)を介してパケットを送信する。トンネルを利用できない場合、管理されるスイッチング要素2505は、パケットが管理されるスイッチング要素2510に到達することができるように、プールノード(図示せず)にパケットを送信する。
管理されるスイッチング要素2510がパケットを受信すると、管理されるスイッチング要素2510は、パケットの論理コンテキストに基づいて(論理コンテキストは、パケットに実行されるために残っているのが、L2処理215全体であることを示すことになる)、L2処理215をパケットに実行する。管理されるスイッチング要素2510は、次に、管理されるスイッチング要素2510のポート5を介してVM4にパケットを送信する。
図47A〜47Bは、図46を参照して上述した論理スイッチ220及び230、論理ルータ225、並びに管理されるスイッチング要素2505及び2510の例示的な動作を概念的に示す。具体的には、図47Aは、論理スイッチ220及び論理ルータ225を実装する管理されるスイッチング要素2505の動作を示す。図47Bは、論理スイッチ230を実装する管理されるスイッチング要素2505の動作を示す。
図47Aの下半分に示すように、管理されるスイッチング要素2505は、L2エントリ4705及びL3エントリ4710を含む。これらのエントリは、コントローラクラスタ(図示せず)が管理されるスイッチング要素2505に供給するフローエントリである。これらのエントリは、2つの別々のテーブルとして示されているが、テーブルは、必ずしも別々のテーブルである必要はない。すなわち、単一のテーブルが、すべてのこれらのフローエントリを含んでもよい。
論理スイッチ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アドレスとして有する。
管理されるスイッチング要素2505の動作は、管理されるスイッチング要素が、丸で囲まれた7を識別し、論理ルータ225のポート2に対してL3出口ACLを実行するまで、図47Aの例での管理されるスイッチング要素2505がパケット4730に実行されることを除いて、図47Aの例での管理されるスイッチング要素2505の動作と同様である。
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ4710内の丸で囲まれた8によって示されるレコード(「レコード8」と呼ぶ)を識別する。レコード8は、論理スイッチ230が、管理されるスイッチング要素2510に実装され、パケットが、管理されるスイッチング要素2510に送信されるべきであることを指定する。
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、ステージ2680の物理マッピングを実装するL2エントリ4715内の丸で囲まれた9によって示されるレコード(「レコード9」と呼ぶ)を識別する。レコード9は、パケット4730が管理されるスイッチング要素2510に到達するために、パケット4730が通って送信されるべきポートとして、管理されるスイッチング要素2505のポート3を指定する。この場合では、管理されるスイッチング要素2505は、パケット4730を、管理されるスイッチング要素2510に結合される管理されるスイッチング要素2505のポート3から送出することになる。
図47Bに示すように、管理されるスイッチング要素2510は、パケット4730を処理し、ルーティングするためのルール(例えば、フローエントリ)を含む転送テーブルを含む。管理されるスイッチング要素2510が、管理されるスイッチング要素2510からパケット4730を受信すると、管理されるスイッチング要素2510は、管理されるスイッチング要素2510の転送テーブルに基づいて、パケット4730の処理を開始する。管理されるスイッチング要素2510は、コンテキストマッピングを実装する転送テーブル内の丸で囲まれた1によって示されるレコード(「レコード1」と呼ぶ)を識別する。レコード1は、パケット4730のヘッダに格納された論理コンテキストに基づいて、パケット4730の論理コンテキストを識別する。論理コンテキストは、L2処理205及びL3処理210が、管理されるスイッチング要素810によってパケット4730に実行されていることを指定する。レコード1は、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2510は、L2入口ACLを実装するL2転送テーブル内の丸で囲まれた2によって示されるレコード(「レコード2」と呼ぶ)を識別する。この例では、レコード2は、パケット4730が、論理スイッチ230(図示せず)の論理ポートYを通ってくることを可能にし、したがって、パケット4730が、管理されるスイッチング要素2510によって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード2は、管理されるスイッチング要素2510が、パケット4730の論理コンテキスト(すなわち、パケット4730は、処理パイプライン4700のステージ4762によって処理されている)を、パケット4730のヘッダのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素2510は、パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、論理L2転送を実装するL2転送テーブル内の丸で囲まれた3によって示されるレコード(「レコード3」と呼ぶ)を識別する。レコード3は、VM4のMACアドレスを宛先MACアドレスとして有するパケットが、VM4に接続された論理スイッチ230の論理ポート2を介して転送されるべきであることを指定する。
レコード3は、また、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。また、レコード3は、管理されるスイッチング要素2510が、論理コンテキスト(すなわち、パケット4730は、処理パイプライン4700のステージ4766によって処理されている)を、パケットのフィールドのセットに格納することを指定する。
次に、管理されるスイッチング要素2510は、パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、出口ACLを実装する転送テーブル内の丸で囲まれた4によって示されるレコード(「レコード4」と呼ぶ)を識別する。この例では、レコード4は、パケット4730がさらに処理されることを可能にし、したがって、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。加えて、レコード4は、管理されるスイッチング要素2510が、パケット4730の論理コンテキスト(すなわち、パケット4730は、論理スイッチ230のL2出口ACLについて処理されている)を、パケット4730のヘッダのフィールドのセットに格納することを指定する。
パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、管理されるスイッチング要素2505は、次に、コンテキストマッピングを実装するL2エントリ4715内の丸で囲まれた5によって示されるレコード(「レコード5」と呼ぶ)を識別する。この例では、レコード5は、VM4が結合される管理されるスイッチング要素2510のポート5を、パケット4730が転送されるべき論理スイッチ230の論理ポート2に対応するポートとして識別する。レコード5は、加えて、パケット4730が、転送テーブルによって(例えば、パケット4730をディスパッチポートに送信することによって)さらに処理されることを指定する。
次に、管理されるスイッチング要素2510は、パケット4730のヘッダに格納された論理コンテキスト及び/又は他のフィールドに基づいて、物理マッピングを実装する転送テーブル内の丸で囲まれた6によって示されるレコード(「レコード6」と呼ぶ)を識別する。レコード6は、パケット4730がVM4に到達するために、パケット4730が通って送信されるべき管理されるスイッチング要素2510のポート5を指定する。この場合では、管理されるスイッチング要素2510は、パケット4730を、VM4に結合される管理されるスイッチング要素2510のポート5から送出することになる。いくつかの実施形態では、管理されるスイッチング要素2510は、パケットをVM4に送信する前に、パケット4730から論理コンテキストを除去する。
パケットの論理パス上のすべてのパイプラインの実行は、分散ルックアップ、すなわち、ARP及び学習に意味を有する。ここで、ルックアップは、論理ネットワークに取り付けられた論理ポートを有する任意のエッジスイッチング要素によって実行することができるため、ルックアップの総量は、同様の物理トポロジ上で実行されるルックアップを超えることになり、パケットが、同じポートに向かうにも関わらず、ルックアップは、異なる管理されるエッジスイッチング要素上で開始されることになるため、異なる送信元は、キャッシュされたルックアップ状態を共有することができない。したがって、フラッディングの問題は、論理トポロジによって増幅され、ルックアップのためのユニキャストマッピングベースのアプローチが、実際には好ましい。
マッピングサーバ(例えば、プール又はルートノード)のクラウドに向けて、特別なルックアップパケットを送信することによって、送信元エッジスイッチング要素は、フラッディングに頼ることなく、必要なルックアップを行うことができる。いくつかの実施形態では、マッピングサーバは、大量のトラフィック集合の局所性(したがって、クライアント側の良好なキャッシュヒット率)からだけでなく、結果として優れたスループットをもたらすデータパスのみの実装から利益を得る。
図48は、管理されるスイッチング要素が動作するホスト4800の例示的なソフトウェアアーキテクチャを概念的に示す。具体的には、この図は、ホスト4800が、L3デーモンも実行し、L3デーモンは、L3デーモンが管理されるスイッチング要素から受信するパケットのために、L3アドレス(例えば、IPアドレス)をL2アドレス(例えば、MACアドレス)に解決することを示す。この図は、ホスト4800が、管理されるスイッチング要素4805、転送テーブル4820、L3デーモン4810、及びマッピングテーブル4815を含むことを、図の上半分に示す。この図は、フローエントリ4825及び4830も示す。
フローエントリ4825及び4830は、それぞれ、クォリファイア及びアクションを有する。フローエントリ4825及び4830として示されるテキストは、実際の形式でない場合がある。むしろ、テキストは、クォリファイア及びアクションの対の概念的な例示に過ぎない。いくつかの実施形態では、フローエントリは、優先順位を有し、管理されるスイッチング要素は、2つ以上のフローエントリのクォリファイアが満たされる場合、最も高い優先順位でフローエントリのアクションを行う。
ホスト4800は、いくつかの実施形態では、ソフトウェアアプリケーションのセットを実行することができるオペレーティングシステム(例えば、Windows(登録商標)及びLinux(登録商標))によって動作するマシンである。いくつかの実施形態の管理されるスイッチング要素4805は、ホスト4800で実行するソフトウェアスイッチング要素(例えば、Open vSwitch)である。上述したように、コントローラクラスタ(図示せず)は、管理されるスイッチング要素の機能を指定するフローエントリを供給することによって、管理されるスイッチング要素を構成する。いくつかの実施形態の管理されるスイッチング要素4805は、それ自体はフローエントリ及びARP要求を生成しない。
いくつかの実施形態の管理されるスイッチング要素4805は、上述した論理処理パイプライン200の全部又は一部を実行する。具体的には、管理されるスイッチング要素4805は、転送テーブル4820内のフローエントリに基づいて、必要に応じて、マシンから受信したパケットをルーティングするために、L3処理210を実行する管理されるスイッチング要素(例えば、管理されるスイッチング要素1720又は2505)である。いくつかの実施形態では、管理されるスイッチング要素4805は、管理されるスイッチング要素に結合されたマシン(図示せず)からパケットを受信するエッジスイッチング要素である。いくつかのこのような実施形態では、1つ又は複数の仮想マシン(図示せず)が、ホスト4800で動作しており、管理されるスイッチング要素4805に結合される。他の実施形態では、管理されるスイッチング要素は、第2のレベルの管理されるスイッチング要素である。
管理されるスイッチング要素4805が、別の論理ネットワーク内にある宛先マシンに送信されている初めてのパケットであるパケットを受信する(又は、パケット自体が、ARP要求である)場合、これらの実施形態の管理されるスイッチング要素4805は、宛先マシンのMACアドレスをまだ知らないことになる。すなわち、管理されるスイッチング要素4805は、ネクストホップIPアドレス及び宛先MACアドレス間のマッピングを知らないことになる。ネクストホップIPアドレスを宛先MACアドレスに解決するために、いくつかの実施形態の管理されるスイッチング要素4805は、L3デーモン4810からのパケットの宛先MACアドレスを要求する。
いくつかの実施形態のL3デーモン4810は、ホスト4800上で動作するソフトウェアアプリケーションである。L3デーモン4810は、IP及びMACアドレスのマッピングを含むテーブル4815を保持する。管理されるスイッチング要素4805が、ネクストホップIPアドレスに対応する宛先MACアドレスを要求すると、L3デーモンは、送信元IPアドレスがマッピングされる宛先MACアドレスを見つけるために、マッピングテーブル4815をルックアップする。(いくつかの場合、送信元IPアドレスがマッピングされる宛先MACアドレスは、ネクストホップ論理ルータのMACアドレスである。)
異なる実施形態の管理されるスイッチング要素4805及びL3デーモン4810は、アドレスを要求し、供給するために異なる技術を使用する。例えば、いくつかの実施形態の管理されるスイッチング要素4805は、宛先IPアドレスを有するが、宛先MACアドレスを持たないパケットを、L3デーモンに送信する。これらの実施形態のL3デーモン4810は、IPアドレスを、宛先MACアドレスに解決する。L3デーモン4810は、管理されるスイッチング要素4805にパケットを送信し戻し、管理されるスイッチング要素4805は、パケットを宛先マシンに向けて送信するために、論理転送及び/又はルーティングを実行することになる。いくつかの実施形態では、管理されるスイッチング要素4805は、最初に、メタデータを、解決する宛先IPアドレスを含むパケットと共にL3デーモン4810に送信する。このメタデータは、管理されるスイッチング要素4805が、L3デーモン4810から戻るパケットを受信するとき、管理されるスイッチング要素4805が、論理処理パイプラインの実行を再開するために使用する情報(例えば、レジスタ値、論理パイプライン状態、など)を含む。
他の実施形態では、管理されるスイッチング要素4805は、フローテンプレートをL3デーモン4810に送信することによって宛先アドレスを要求し、フローテンプレートは、宛先MACアドレスについての実際の値を持たないフローエントリである。L3デーモン4810は、マッピングテーブル4815をルックアップすることによって、フローテンプレートに記入する宛先MACアドレスを見つけ出す。L3デーモン4810は、次に、記入されたフローテンプレートを転送テーブル4820に入れることによって、実際の宛先MACアドレスが記入されたフローテンプレートを、管理されるスイッチング要素4810に送信し戻す。いくつかの実施形態では、L3デーモンは、記入されていないフローテンプレートの優先順位の値より高い優先順位の値を、記入されたフローテンプレートに割り当てる。
マッピングテーブル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アドレスマッピングを最新に保つ。
いくつかの実施形態では、L3デーモン4810が、フローエントリをルックアップし、ARP要求を別のL3デーモンインスタンスに送信した後、解決されたアドレスを見つけるのに依然として失敗する場合、L3デーモンは、フローテンプレートで、パケットを破棄するように指定し、又は、L3デーモン自体が、パケットを破棄することになる。
管理されるスイッチング要素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アドレスを送信する。
ここで、管理されるスイッチング要素4805及びL3デーモン4810の例示的な動作を、3つの異なるステージ1〜3(丸で囲まれた1〜3)に関して説明する。この例では、管理されるスイッチング要素4805は、転送及びルーティングするパケットをマシン(図示せず)から受信する管理されるエッジスイッチング要素である。管理されるスイッチング要素4805は、パケットを受信し、転送テーブル4820内のフローエントリに基づいて、論理処理200を実行する。
パケットが、宛先マシンのIPアドレスを持つ最初のパケットである場合、又は、パケットが、送信元マシンからのARP要求である場合、管理されるスイッチング要素4820は、(ステージ1で)フローエントリ4825を識別し、フローエントリ4825で指定されるアクションを実行する。図示のように、フローエントリ4825は、宛先MAC Xに解決されるべき宛先IPアドレス1.1.2.10を有するフローテンプレートが、L3デーモン4810に送信されるべきであることを示す。この例では、フローエントリ4825は、いくつかの実施形態では番号である優先順位の値Nを有する。
ステージ2では、L3デーモン4810は、フローテンプレートを受信し、マッピングテーブル4815をルックアップすることによって、1.1.2.10が01:01:01:01:01:09に解決されるべきであることを知る。L3デーモンは、フローテンプレートに記入し、記入されたテンプレート(ここでは、フローエントリ4830)を転送テーブル4830に挿入する。この例では、L3デーモンは、N+1の優先順位を、記入されたテンプレートに割り当てる。
ステージ3では、管理されるスイッチング要素4810は、いくつかの実施形態では、パケットの宛先MACアドレスを設定するために、フローエントリ4830を使用する。また、管理されるスイッチング要素4810がその後に処理するパケットのために、管理されるスイッチング要素4805は、パケットが1.1.2.10の宛先IPアドレスを有する場合、フローエントリ4825の上のフローエントリ4830を使用する。
いくつかの実施形態では、L3デーモン4810及び管理されるスイッチング要素は、ホスト4800で動作している同じ仮想マシンで動作し、又は、ホスト4800で動作している異なる仮想マシンで動作する。いくつかの実施形態では、L3デーモン4810は仮想マシンのユーザ空間で動作する。L3デーモン4810及び管理されるスイッチング要素は、別々のホストで動作することもできる。
いくつかの実施形態では、管理されるスイッチング要素4805は、アドレスを解決するために、L3デーモン4810に依存しない。いくつかのこのような実施形態では、制御クラスタ(図48には示さず)は、フローエントリ4820が、IPアドレスと、ARPコール(すなわち、入力)又はDHCPを介して得られたMACアドレスとの間のマッピングを含むように、フローエントリ4820を静的に構成することができる。
図49は、ネットワークアドレスを解決するためにいくつかの実施形態が実行するプロセス4900を概念的に示す。いくつかの実施形態では、プロセス4900は、L3でパケットをルーティングするためにL3処理210を実行する管理されるスイッチング要素(例えば、管理されるスイッチング要素1720、2505、又は3105)によって実行される。プロセス4900は、いくつかの実施形態では、プロセスが、L3で論理的にルーティングされるべきパケットを受信すると、開始する。
プロセス4900は、(4905で)パケットがアドレス解決(例えば、宛先IPアドレスを宛先MACアドレスに解決する)を必要とするかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、パケットがL3処理を必要とするかどうかを、フローエントリに基づいて判定する。そのクォリファイアがパケットのヘッダに格納された情報又は論理コンテキストと一致するフローエントリは、パケットがアドレス解決を必要とすることを指定する。
プロセス4900が、(4905で)パケットがアドレス解決を必要としないと判定すると、プロセスは終了する。そうでなければ、プロセス4900は、(4910で)プロセス4900が、L3デーモンからのパケットのアドレス(例えば、宛先IPアドレス)を解決する先のアドレスを要求する必要があるかどうかを判定する。いくつかの実施形態では、プロセス4900は、フローエントリに基づいて、プロセスがL3デーモンに要求する必要があるかどうかを判定する。例えば、フローエントリは、パケットのアドレスを解決する先のアドレスが、L3デーモンからの解決されたアドレスを要求することによって得られるべきであることを指定することができる。いくつかの実施形態では、プロセスは、フローエントリが、解決されたアドレスのための空のフィールド、又は、解決されたアドレスがL3デーモンから得られるべきであることを示すフィールド内のなにか他の値を有するフローテンプレートである場合、L3デーモンが、解決されたアドレスを提供するべきであると判定する。
プロセスが、(4910で)プロセスがL3デーモンからのアドレスを要求する必要がないと判定した場合、プロセスは、(4920で)解決されたアドレスをフローエントリから得る。例えば、フローエントリは、変換されたアドレスを提供することになる。プロセスは、次に、さらに後述する4925に進む。プロセスが、(4910で)プロセスがL3デーモンからのアドレスを要求する必要があると判定した場合、プロセス4900は、4915で、L3デーモンからの解決されたアドレスを要求し、取得する。いくつかの実施形態では、プロセス4900は、フローテンプレートをL3デーモンに送信することによって、解決されたアドレスを要求する。L3デーモンは、フローテンプレートに解決されたアドレスを記入し、記入されたテンプレートを、プロセスが使用する転送テーブル(図示せず)内に配置することになる。
次に、プロセス4900は、パケットを解決されたアドレスで変更する。いくつかの実施形態では、プロセスは、パケットのヘッダ内のアドレスフィールドを変更する。代わりに又は結合的に、プロセスは、パケットのアドレスを解決されたアドレスに置き換えるために、論理コンテキストを変更する。プロセスは、次に、終了する。
図50は、いくつかの実施形態のネットワークアーキテクチャ5000を示す。具体的には、この図は、それぞれがL3デーモンを実行するいくつかのホスト(又は、VM)が、ARP要求の同時通信を回避することを可能にするマップサーバを示す。この図は、5005、5010、5015を含むホスト(又は、VM)のセットを示す。
ホスト5010及び5015は、ホスト5010及び5015のそれぞれが、L3デーモン、管理されるスイッチング要素、及び、1つ又は複数のVMを実行する点で、図48を参照して上述したホスト4805と同様である。
ホスト5005は、マップサーバを実行する。いくつかの実施形態のマップサーバ5005は、グローバルマッピングテーブル5020を保持し、グローバルマッピングテーブル5020は、管理されるエッジスイッチング要素を実行するネットワーク内のすべてのホストで動作するL3デーモンによって保持されるすべてのマッピングテーブルのすべてのエントリを含む。いくつかの実施形態では、ネットワーク内のL3デーモンは、局所的に利用可能なIPアドレス及びMACアドレスのマッピング間のマッピングのエントリを送信する。ホストの管理されるスイッチング要素に結合されたマシンへの変更があった場合はいつでも(例えば、VMが、故障する、又は、管理されるスイッチング要素に結合される、若しくは、管理されるスイッチング要素から分離される場合)、ホストのL3デーモンは、個々のローカルマッピングテーブルを適宜に更新し、また、マップサーバ5005が、変更によって更新されたグローバルマッピングテーブル5005を保持するように、更新を(例えば、更新を含む特別な「公開」パケットを送信することによって)マップサーバ5005に送信する。
いくつかの実施形態では、管理されるエッジスイッチング要素を実行する各ホストで動作するL3デーモンは、ローカルマッピングが、解決する宛先IPアドレスのためのエントリを持たない場合、ARPパケットを同時通信しない。代わりに、L3デーモンは、宛先IPアドレスを宛先MACアドレスに解決するために、マップサーバ5005に相談する。マップサーバ5005は、グローバルマッピングテーブル5020をルックアップすることによって、宛先IPアドレスを宛先MACアドレスに解決する。マップサーバ5005が、IPアドレスを解決することができない場合(例えば、グローバルマッピングテーブル5020が、IPアドレスのためのエントリを持たない、又は、マップサーバ5005が、故障した場合)、L3デーモンは、管理されるエッジスイッチング要素を実行する他のホストにARPパケットを同時通信することに頼ることになる。いくつかの実施形態では、マップサーバ5005は、第2のレベルの管理されるスイッチング要素(例えば、プールノード)が実装される同じホスト又はVMに実装される。
図51は、IP及びMACアドレスのマッピングを含むマッピングテーブルを維持するためにいくつかの実施形態が実行するプロセス5100を示す。いくつかの実施形態では、プロセス5100は、マッピングサーバからの解決されたアドレスを要求するL3デーモンによって実行される。これらの実施形態でのマッピングサーバは、管理されるスイッチング要素のセットのためのIP及びMACアドレスのマッピングを含むグローバルマッピングテーブルを保持する。プロセス5100は、いくつかの実施形態では、プロセスが、管理されるスイッチング要素から解決する特定のアドレスを受信すると、開始する。
プロセスは、(5105で)プロセスが、管理されるスイッチング要素から受信した特定のアドレスのための解決されたアドレスを持っているかどうかを判定することによって開始する。いくつかの実施形態では、プロセスは、プロセスが、特定のアドレスのための解決されたアドレスを持っているかどうかを判定するために、IP及びMACアドレスのマッピングを含むローカルマッピングテーブルをルックアップする。
プロセス5100が、プロセスが解決されたアドレスを持つと判定すると、プロセスは、さらに後述する5120に進む。そうでなければ、プロセス5100は、マップサーバからの解決されたアドレスを要求し、取得する。プロセス5100は、次に、(5115で)ローカルマッピングテーブルを、マッピングサーバから取得した解決されたアドレスで変更する。いくつかの実施形態では、プロセス5100は、解決されたアドレス及び特定のアドレスの新しいマッピングを、ローカルマッピングテーブルに挿入する。
プロセス5100は、次に、解決されたアドレスを、管理されるスイッチング要素に送信する。いくつかの実施形態では、プロセス5100は、特定のアドレスを有するパケットを変更する。他の実施形態では、プロセス5100は、解決されたアドレスの要求として管理されるスイッチング要素が送信したフローテンプレートを変更する。プロセスは、次に、終了する。
図52は、IP及びMACアドレスのマッピングを含むマッピングテーブルを維持するためにいくつかの実施形態が実行するプロセス5200を示す。いくつかの実施形態では、プロセス5200は、ローカルマッピングテーブルを保持し、更新をマッピングサーバに送信するL3デーモンによって実行される。これらの実施形態でのマッピングサーバは、管理されるスイッチング要素のセットのためのIP及びMACアドレスのマッピングを含むグローバルマッピングテーブルを保持する。プロセス5200は、いくつかの実施形態では、L3デーモンが動作を開始すると、開始する。
プロセス5200は、(5205で)管理されるスイッチング要素のセットを監視することによって開始する。具体的には、プロセス5200は、管理されるスイッチング要素との間でのマシンの結合及び分離、又は、管理されるスイッチング要素に結合されたマシンに関する任意のアドレスの変更について監視する。いくつかの実施形態では、管理されるスイッチング要素のセットは、L3デーモンが動作する同じホスト又は仮想マシンで動作しているこれらの管理されるスイッチング要素を含む。
次に、プロセス5200は、(5210で)プロセスが監視する管理されるスイッチング要素へのこのような変更があったかどうかを判定する。プロセスが、(5210で)変更がなかったと判定した場合、プロセス5200は、管理されるスイッチング要素のセットの監視を続けるために、5205にループバックする。そうでなければ、プロセスは、(5215で)ローカルマッピングテーブル内の対応するエントリを変更する。例えば、VMが移行し、セット内の管理されるスイッチング要素の1つに結合された場合、プロセスは、移行したVMのIPアドレス及びMACアドレスのマッピングを、ローカルマッピングテーブルに挿入する。
プロセス5200は、次に、マップサーバが、グローバルマッピングテーブルを、IPアドレス及びMACアドレスの新しい及び/又は変更されたマッピングで更新することができるように、更新されたマッピングをマップサーバに送信する。プロセスは、次に、終了する。
VIII.フロー生成及びフロー処理
上述したように、いくつかの実施形態の管理されるスイッチング要素は、いくつかの実施形態のコントローラクラスタ(1つ又は複数のコントローラインスタンス)によって、管理されるスイッチング要素に供給されるフローテーブルに基づいて、論理スイッチ及び論理ルータを実装する。いくつかの実施形態では、コントローラクラスタは、コントローラクラスタが検出する入力又はネットワークイベントに基づいて、テーブルマッピング動作を実行することによって、これらのフローエントリを生成する。これらのコントローラクラスタ及びその動作の詳細は、米国特許出願第13/177,533号、及び、「Chassis Controller」という表題の、代理人整理番号NCRA.P0081を有する、上記の組み込まれた同時出願の米国特許出願**に記載されている。
この同時出願の米国特許出願で言及されているように、いくつかの実施形態のネットワーク制御システムは、いくつかのコントローラインスタンスを含む分散型制御システムであり、いくつかのコントローラインスタンスは、システムが、ユーザからの論理データパスセットを受け入れ、これらの論理データパスセットを実装するために、スイッチング要素を構成することを可能にする。いくつかの実施形態では、コントローラインスタンスの1つのタイプは、1つ又は複数のモジュールを実行するデバイス(例えば、汎用コンピュータ)であり、1つ又は複数のモジュールは、論理制御プレーンからのユーザ入力を論理転送プレーンに変換し、次に、論理転送プレーンデータを物理制御プレーンデータに変換する。いくつかの実施形態のこれらのモジュールは、制御モジュール及び仮想化モジュールを含む。制御モジュールは、ユーザが、論理データパスセットを指定し、ポピュレートすることを可能にし、仮想化モジュールは、論理データパスセットを物理的なスイッチングインフラストラクチャにマッピングすることによって、指定された論理データパスセットを実装する。いくつかの実施形態では、制御及び仮想化アプリケーションは、2つの別々のアプリケーションであり、他の実施形態では、これらは、同じアプリケーションの一部である。
特定の論理データパスセットに関する論理転送プレーンデータから、いくつかの実施形態の仮想化モジュールは、論理データパスセットを実装する任意の管理されるスイッチング要素に一般的なユニバーサル物理制御プレーン(UPCP)データを生成する。いくつかの実施形態では、この仮想化モジュールは、特定の論理データパスセットのためのマスタコントローラであるコントローラインスタンスの一部である。このコントローラは、論理コントローラと呼ばれる。
いくつかの実施形態では、UPCPデータは、次に、特定の管理されるスイッチング要素のためのマスタ物理コントローラインスタンスであるコントローラインスタンスによって、又は、「Chassis Controller」という表題の、代理人整理番号NCRA.P0081を有する、同時出願の米国特許出願**にさらに記載のように、特定の管理されるスイッチング要素のためのシャーシコントローラによって、各々の特定の管理されるスイッチング要素のためのカスタマイズされた物理制御プレーン(CPCP)データに変換される。シャーシコントローラが、CPCPデータを生成すると、シャーシコントローラは、物理コントローラを介して論理コントローラの仮想化モジュールからUPCPデータを取得する。
物理コントローラ又はシャーシコントローラのどちらがCPCPデータを生成するのかにかかわりなく、特定の管理されるスイッチング要素のためのCPCPデータは、管理されるスイッチング要素に伝播される必要がある。いくつかの実施形態では、CPCPデータは、ネットワーク情報ベース(NIB)データ構造を介して伝播され、NIBデータ構造は、いくつかの実施形態では、オブジェクト指向データ構造である。NIBデータ構造を使用するいくつかの例は、参照により本明細書に組み込まれる米国特許出願第13/177,529号及び第13/177,533号に記載されている。これらの出願に記載のように、NIBデータ構造は、いくつかの実施形態では、異なるコントローラインスタンス間の通信媒体として用いることができるようにするために、並びに、論理データパスセット(例えば、論理スイッチング要素)、及び/又は、これらの論理データパスセットを実装する管理されるスイッチング要素に関するデータを格納するためにも使用される。
しかしながら、他の実施形態は、コントローラインスタンス間で通信するため、並びに、論理データパスセット及び/又は管理されるスイッチング要素に関するデータを格納するために、物理コントローラ又はシャーシコントローラからのCPCPデータを管理されるスイッチング要素に伝播させるために、NIBデータ構造を使用しない。例えば、いくつかの実施形態では、物理コントローラ及び/又はシャーシコントローラは、オープンフローエントリを介して管理されるスイッチング要素と通信し、構成プロトコルを介して更新する。また、いくつかの実施形態では、コントローラインスタンスは、データを交換するために、1つ又は複数の直接通信チャネル(例えば、RPCコール)を使用する。加えて、いくつかの実施形態では、コントローラインスタンス(例えば、これらのインスタンスの制御及び仮想化モジュール)は、論理及び/又は物理データを、リレーショナルデータベースデータ構造に書き込まれたレコードで表現する。いくつかの実施形態では、このリレーショナルデータベース構造は、コントローラインスタンスの1つ又は複数のモジュールを実装するために使用されるテーブルマッピングエンジン(nLogと呼ばれる)の入力及び出力テーブルの一部である。
図53は、いくつかの実施形態のコントローラクラスタの3つのコントローラインスタンスを概念的に示す。これらの3つのコントローラインスタンスは、APIコールとして受信された論理制御プレーン(LCP)データからUPCPデータを生成するための論理コントローラ5300、並びに、それぞれ、管理されるスイッチング要素5320及び5325に特定のUPCPデータをカスタマイズするための物理コントローラ5390及び5330を含む。具体的には、いくつかの実施形態の論理コントローラ5300は、nLogのようなテーブルマッピングプロセッサ(図示せず)を使用して、テーブルにテーブルマッピング動作を実行することによって、ユニバーサルフローを生成する。nLogエンジンは、米国特許出願第13/177,533号に記載されている。この図は、ユーザ5325、並びに、管理されるスイッチング要素5320及び5325も示す。
図示のように、論理コントローラ5300は、制御アプリケーション5305及び仮想化アプリケーション5310を含む。いくつかの実施形態では、制御アプリケーション5305は、論理制御プレーンデータを受信し、このデータを、仮想化アプリケーション5310に供給される論理転送プレーンデータに変換するために、使用される。仮想化アプリケーション5310は、論理転送プレーンデータから、ユニバーサル物理制御プレーンデータを生成する。
いくつかの実施形態では、論理制御転プレーンデータの一部は、入力から変換される。いくつかの実施形態では、論理コントローラ5300は、APIコールのセットをサポートする。論理コントローラは、APIコールのセットをLCPデータに変換する入力変換アプリケーション(図示せず)を有する。APIコールを使用して、ユーザは、ユーザが物理スイッチング要素及びルータを構成しているかのように、論理スイッチ及び論理ルータを構成することができる。
物理コントローラ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エンジンを使用することによって実行される。
図53は、UPCPデータから2つの異なる管理されるスイッチング要素のためのCPCPデータを生成する2つの物理コントローラを示しているが、当業者は、他の実施形態では、物理コントローラが、UPCPデータを各スイッチング要素のシャーシコントローラに単に中継するように機能し、シャーシコントローラが、そのスイッチング要素のCPCPデータを生成し、このデータをそのスイッチング要素にプッシュすることを理解するであろう。
図54は、例示的なアーキテクチャ5400及びユーザインタフェース5405を示す。具体的には、この図は、ユーザが、論理スイッチ及びルータを希望通りに構成するために、コントローラアプリケーションに送信することを示す。この図は、4つのステージ5406〜5409のユーザインタフェース(UI)5405を、図の左半分に示す。この図は、また、論理ルータ5425並びに2つの論理スイッチ5420及び5430を含むアーキテクチャ5400を、図の右半分に示す。
UI5405は、例示的なインタフェースであり、このインタフェースを介して、ユーザは、論理スイッチ及びルータを管理するために、入力を入力し、コントローラインスタンスから応答を受信することができる。いくつかの実施形態では、UI5405は、ウェブアプリケーションとして提供され、したがって、ウェブブラウザで開くことができる。代わりに、又は結合的に、いくつかの実施形態の制御アプリケーションは、ユーザが、コマンドラインインタフェースを介して入力を入力及び受信することを可能にすることができる。
図の左半分は、ユーザが、コントローラインスタンスが管理するネットワークの管理されるスイッチング要素のセットによって実装されるべき論理スイッチ及び論理ルータ内の論理ポートをセットアップするために、入力を入力することを示す。具体的には、ユーザは、(ステージ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に別の論理ポートを追加する。図の右半分は、論理ルータ及び論理スイッチに追加されたポートを示す。
図55〜62は、制御アプリケーション5305の例示的な動作を概念的に示す。これらの図は、制御アプリケーション5305が、管理されるスイッチング要素に供給されるフローエントリを生成するために使用し、変更するテーブルのセットを示す。具体的には、管理されるスイッチング要素(図示せず)は、図54を参照して上述した入力に基づいて、論理スイッチ5420及び5430並びに論理ルータ5400に追加される論理ポートを実装する。この図は、制御アプリケーション5305、仮想化アプリケーション5310、及び物理コントローラ5330を示す。
図示のような制御アプリケーション5305は、入力変換5505、入力テーブル5510、ルールエンジン5515、出力テーブル5520、エクスポータ5525を含む。
入力変換5505は、いくつかの実施形態では、管理ツールと対話し、管理ツールにより、ユーザは、論理ネットワーク状態を見る及び/又は変更することができる。異なる実施形態は、異なる管理ツールをユーザに提供する。例えば、入力変換5505は、いくつかの実施形態では、図54を参照して上述したUI5405のようなグラフィカルツールを提供する。グラフィカルツールの代わりに、又は結合的に、他の実施形態は、ユーザに、コマンドラインツール、又は任意の他のタイプの管理ツールを提供することができる。入力変換5505は、管理ツールを介してユーザからの入力を受信し、1つ又は複数の入力テーブル5510の作成、ポピュレート、及び/又は変更するために、受信した入力を処理する。
入力テーブル5510は、参照により本明細書に組み込まれる米国特許出願第13/288,908号に記載の入力テーブルと同様である。いくつかの場合の入力テーブルは、ユーザが管理している論理スイッチ及び論理ルータの状態を表現する。例えば、入力テーブル5530は、論理スイッチの論理ポートに関連するIPアドレスをクラスレスインタードメインルーティング(CIDR)フォーマットで格納するテーブルである。制御アプリケーションは、制御アプリケーションが管理ツールを介して受信する入力で、又は、制御アプリケーションが検出する任意のネットワークイベントで、入力テーブルを変更する。制御アプリケーション5305が入力テーブルを変更した後、制御アプリケーション5305は、変更した入力テーブルを処理するため、ルールエンジン5515を使用する。
異なる実施形態のルールエンジン5515は、出力テーブル5520の異なるセットをポピュレート及び/又は変更するために、入力テーブルの異なるセットに、データベース動作の異なる組み合わせを実行する。例えば、ルールエンジン5515は、論理ルータの論理ポートが作成されたことを示すために入力テーブル5530が変更されると、MACアドレスを論理ルータの論理ポートと関連付けるために、テーブル5535を変更する。出力テーブル5565は、ルーティング/転送されているネットワークデータに実行するために、論理スイッチ及び論理ルータを実装する管理されるスイッチング要素のためのアクションを指定するフローエントリを含む。テーブル5530〜5560に加えて、ルールエンジン5515は、ルールエンジン5515のテーブルマッピング動作を容易にするために、他の入力テーブル、コンテンツテーブル、及び機能テーブルを使用することができる。
出力テーブルは、ルールエンジン5515に対する入力テーブルとして使用されてもよい。すなわち、出力テーブル内の変更は、ルールエンジン5515によって実行されるべき別のテーブルマッピング動作をトリガすることができる。したがって、テーブル5530〜5560内のエントリは、テーブルマッピング動作を実行することから生じてよく、テーブルマッピング動作の別のセットのためのルールエンジン5515に入力を提供することもできる。このように、入力テーブル及び出力テーブルは、この図では、テーブルが入力及び/又は出力テーブルであることを示すために、単一の点線ボックスで示されている。
テーブル5535は、論理ルータの論理ポート及び関連するMACアドレスのペアリングを格納するためのものである。テーブル5540は、パケットをルーティングするときに使用する論理ルータのための論理ルーティングテーブルである。いくつかの実施形態では、テーブル5540は、論理ルータを実装する管理されるスイッチング要素に送信されることになる。テーブル5550は、ネクストホップ識別子、及び論理ルータの論理ポートのIPアドレスを格納するためのものである。テーブル5555は、論理スイッチの論理ポート及び論理ルータの論理ポート間の接続を格納するためのものである。エクスポータ5525は、出力テーブル5520内の変更された出力テーブルを、仮想化アプリケーション5310に発行又は送信する。
図55は、図54を参照して上述したステージ5406の前のテーブル5530〜5565を示す。テーブル内のエントリは、これらのテーブル内にいくつかの既存のエントリがあることを示すために、点として示される。
図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によって指定されることを示す。
ルールエンジン5515は、テーブル5530へのこの更新を検出し、テーブル5535及び5540を更新するために、テーブルマッピング動作のセットを実行する。図57は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル5535が、新しい行5701を有することを示し、行5701は、論理ポートRP1が、ここではMACアドレス01:01:01:01:01:01に関連付けられていることを示す。このMACアドレスは、他のテーブル又は機能(図示せず)を使用するテーブルマッピング動作を実行しながら、ルールエンジン5515によって生成される。
図57は、テーブル5540が新しい行5702を有することも示し、行5702は、論理ルータ5425のためのルーティングテーブル内のエントリである。論理ルータ5425(論理ルータ5425を実装する管理されるスイッチング要素)は、ルーティング決定を行うために、このテーブル5540をルックアップすることになる。行5702は、論理ポートRP1のネクストホップが、固有の識別子「NH1」を有することを指定する。行5702は、また、ルーティングテーブル内のこの行に割り当てられた優先順位を含む。この優先順位は、ルーティングテーブル内の複数のマッチングする行が存在する場合、ルーティング決定を行うためにどの行が使用されるべきかを判定するために使用される。いくつかの実施形態では、エントリ内の行の優先順位の値は、プレフィックス長プラス基本優先順位値「BP」である。
ルールエンジン5515は、テーブル5550を更新するために、テーブル5540に対する更新を検出し、テーブルマッピング動作のセットを実行する。図58は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル5550が、新しい行5801を有することを示し、行5801は、論理ルータ5425の論理ポートRP1のネクストホップのIPアドレスが、所与のパケットの宛先IPアドレスであることを示す。(この行内の「0」は、ネクストホップのIPアドレスが、論理ルータのRP1を介してルーティングされることになる所与のパケットの宛先であることを意味する。)
図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処理部分を接続する。
ルールエンジン5515は、テーブル5535を更新するために、テーブル5555に対する更新を検出し、テーブルマッピング動作のセットを実行する。図60は、テーブルマッピング動作のこのセットの結果を示す。具体的には、この図は、テーブル5535が、新しい行6001を有し、新しい行6001は、SP1及びRP1がここではリンクされているため、論理ポートSP1が、ここではMACアドレス01:01:01:01:01:01に関連付けられていることを示す。
ルールエンジン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アドレスを要求すべきであることを示すフローエントリである。
図62は、上述したステージ5408及び5409の後のテーブルのいくつかに追加された新しい行6201〜6209を示す。説明を簡単にするために、ルールエンジン5515によるテーブル更新の中間の例示は、省略する。
新しい行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は、また、ルーティングテーブル内のこの行に割り当てられた優先順位を含む。
新しい行6205は、論理ルータ5425の論理ポートRP2のネクストホップのIPアドレスが、所与のパケットの宛先IPアドレスであることを示す。新しい行6206は、(論理スイッチ5430の)「SP2」として識別される論理ポートが、(論理ルータ5425の)論理ポートRP2に取り付けられることを示す。また、新しい行6207は、論理ポートRP2が、論理ポートSP2に取り付けられることを示す。
行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アドレスを要求すべきであることを示すフローエントリである。
図62に示すこれらのフローエントリは、LFPデータである。このLFPデータは、仮想化アプリケーション5310に送信されることになり、仮想化アプリケーション5310は、LFPデータからUPCPデータを生成することになる。次に、UPCPデータは、物理コントローラ5330に送信されることになり、物理コントローラ5330は、管理されるスイッチング要素5325(図62には示さず)のためにUPCPデータをカスタマイズすることになる。最後に、物理コントローラ5330は、CPCPデータを、管理されるスイッチング要素5325に送信することになる。
図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を示す。
ここで、論理スイッチ5420及び5430、論理ルータ5425、並びにVM及び2の例示的な動作を説明する。この例は、論理ルータ5425並びに論理スイッチ5420及び5430を実装する管理されるスイッチング要素のセットが、フローエントリ6101〜6104及び6208〜6211のすべてを有することを仮定する。この例は、また、制御アプリケーション5305によって生成される論理データが、仮想化アプリケーション5310によって物理制御プレーンデータに変換されること、及び、物理制御プレーンデータが、管理されるスイッチング要素によって受信され、物理転送データに変換されることを仮定する。
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に送り返す。
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アドレスとして有する。
論理スイッチ5420は、次に、01:01:01:01:01:01の宛先MACアドレスを有するパケットが、SP1に送信されるべきであることを示すフローエントリ6101にしたがって、このパケットをSP1に転送する。パケットがSP1に達すると、パケットは、次に、SP1に搬送されるどのパケットもRP1に送信されるべきであることを示すフローエントリ6102にしたがって、RP1に送信される。
このパケットは、次に、論理ルータ5425の入口ACLステージに送られ、入口ACLステージは、この例では、パケットがRP1を介して進むことを可能にする。次に、論理ルータ5425は、エントリ6204にしたがって、パケットをネクストホップのNH2にルーティングする。このルーティング決定は、次に、(論理ルータ5425を実装する管理されるスイッチング要素の)レジスタにロードされる。このパケットは、次に、ネクストホップルックアッププロセスに供給され、ネクストホップルックアッププロセスは、ネクストホップのIPアドレス、及びパケットが送信されるべきポートを決定するために、ネクストホップのID、NH2を使用する。この例では、ネクストホップは、行6205に基づいて決定され、行6205は、NH2のアドレスがパケットの宛先IPアドレスであり、パケットが送信されるべきポートがRP2であることを示す。
パケットは、次に、宛先IPアドレス(1.1.2.10)をVM4のMACアドレスに解決するために、MACアドレス解決プロセスに供給される。L3デーモンは、MACアドレスを解決し、新しいフローエントリを(例えば、フローテンプレートに解決されたMACアドレスを記入することによって)、論理ルータ5425を実装する管理されるスイッチング要素内に戻す。この新しいフローにしたがって、パケットは、ここでは、VM4のMACアドレスを宛先MACアドレスとして有し、論理ルータ5425のRP2のMACアドレス(01:01:01:01:01:02)を有する。
パケットは、次に、論理ルータ5425の出口ACLステージを通過し、出口ACLステージは、この例では、パケットがRP2を通って出ることを可能にする。パケットは、次に、RP2に搬送されるどのパケットもSP2に送信されるべきであることを示すフローエントリ6210にしたがって、SP2に送信される。次に、論理スイッチ5330のためのL2処理は、パケットをVM4に送信することになる。
IX.管理されるエッジスイッチング要素の実装に対する変形例
すべてのLDPS処理は、管理されるエッジスイッチング要素にプッシュされるが、いくつかの実施形態では、実際の取り付けられた物理ポート統合に対するインタフェースのみが、相互運用性の問題に対処する。これらのインタフェースは、いくつかの実施形態では、ホストIP/イーサネット(登録商標)スタックのための標準的なL2/L3インタフェースを実装する。論理スイッチ及び論理ルータ間のインタフェースは、仮想化アプリケーションの内部のままであり、したがって、情報を交換するために、今日のルータとまったく同じプロトコルを実装する必要はない。
仮想化アプリケーションは、いくつかの実施形態では、最初のホップのルータのIPアドレスに送信されたARP要求に応答する責任を有する。論理ルータのMAC/IPアドレスバインディングは、静的であるため、これは、スケーリング問題をもたらさない。最後のホップの論理ルータは、いくつかの実施形態では、同様の厳格な要件をもたず、取り付けられたポートのMAC及びIPアドレス(複数可)が、仮想化アプリケーションに知らされている限り、エンドポイントにさらされておらず、論理パイプラインの実行によってのみ使用される内部ルックアップサービスに、これらのアドレスを公開することができる。取り付けられたポートにARP要求を送信する絶対の必要はない。
いくつかの実施形態は、要求されたL3機能を、Open vSwitchの次に動作する外部デーモンとして実装する。いくつかの実施形態では、デーモンは、以下の動作を担当する。
・ARP要求に対する応答。いくつかの実施形態では、Open vSwitchは、ARP要求をデーモンに供給し、デーモンは、応答を作成する。代わりに、いくつかの実施形態は、管理されるエッジスイッチング要素内の追加のフローエントリを作成するために、フローテンプレートを使用する。フローテンプレートは、受信したパケットに基づいて動的に一連のフローエントリを生成するための、ルールのセットの使用である。いくつかのこのような実施形態では、応答は、Open vSwitch自体によって処理される。
・フロー状態ごとの任意のステートフル(NAT、ACL、負荷分散)の確立。再び、フローテンプレートが、十分に柔軟であれば、Open vSwitchが処理するために、より多くを移動させることができる。
・分散ルックアップの開始。その論理パイプラインの配列を介してトラフィックを供給する場合、必要に応じて、分散ルックアップ(例えば、ARP、学習)が、マッピングサービスに開始される。これは、いくつかの実施形態では、IPパケットのキューイングを伴うことになる。
外部の物理ネットワークと統合するときにARP要求を生成するために、いくつかの実施形態は、パケットは、オープンフローのローカル出力ポートを使用することによって、ローカルIPスタックへと破棄されてよいと仮定する。
マッピングサービス自体は、いくつかの実施形態では、Open vSwitchのデータパス機能に頼ることによって実装され、管理されるエッジスイッチング要素のデーモンは、特別な「公開」パケットをマッピングサービスノードに送信することによって、MAC及びIPアドレスバインディングを公開し、マッピングサービスノードは、次に、フローテンプレートを使用してフローエントリを作成することになる。管理されるエッジスイッチング要素からの「クエリ」パケットは、次に、これらのFIBエントリによって応答されることになり、これらのFIBエントリは、クエリパケットを、十分に応答パケットになるように変更した後、パケットを特別なIN_PORTに送信することになる。
X.論理スイッチング環境
上記及び下記のいくつかの実施形態は、論理転送空間(すなわち、論理制御及び転送プレーン)を物理転送空間(すなわち、物理制御及び転送プレーン)から完全に分離するネットワーク制御システムを提供する。これらの制御システムは、論理転送空間データを物理転送空間データにマッピングするために、マッピングエンジンを使用することによって、このような分離を達成する。論理空間を物理空間から完全に分離することによって、これらの実施形態の制御システムは、物理転送空間に変更が行われている(例えば、仮想マシンが移行される、物理スイッチ又はルータが追加される、など)間、論理転送要素の論理ビューが、変化しないままでいることを可能にする。
より具体的には、いくつかの実施形態の制御システムは、ネットワークを管理し、ネットワークを介して、複数の異なるユーザ(すなわち、複数のホストコンピュータ、及び、複数の異なる関連する又は関連しないユーザによって共有される管理される転送要素を有するプライベート又はパブリックホスト環境内の複数の異なるユーザ)に属するマシン(例えば、仮想マシン)は、別々のLDPセットのためのデータパケットを交換することができる。すなわち、特定のユーザに属するマシンは、そのユーザのためのLDPSを介して、同じユーザに属する他のマシンとデータを交換することができ、異なるユーザに属するマシンは、同じ物理的な管理されるネットワーク上に実装された異なるLDPSを介して、相互にデータを交換することができる。いくつかの実施形態では、LDPS(論理転送要素(例えば、論理スイッチ、論理ルータ)、又は、いくつかの場合では、論理ネットワークとも呼ばれる)は、いくつかの論理ポートを相互接続するために、スイッチングファブリックを提供する論理構成物であり、論理ポートには、特定のユーザの(物理的又は仮想的)マシンを取り付けることができる。
いくつかの実施形態では、このようなLDPセット及び論理ポートの作成及び使用は、素人目には、仮想ローカルエリアネットワーク(VLAN)の使用と同様に見えるかもしれない、論理サービスモデルを提供する。しかしながら、ネットワークをセグメント化するためのVLANサービスモデルとは、様々な重要な違いが存在する。本明細書に記載の論理サービスモデルでは、物理ネットワークは、ネットワークのユーザの論理ビューには何の影響もなく、変更することができる(例えば、管理されるスイッチング要素の追加、又は、ある場所から別の場所へのVMの移動は、論理転送要素のユーザのビューに影響を与えない)。当業者は、以下に記載の違いのすべてが、特定の管理されるネットワークには当てはまらない可能性があることを理解するであろう。いくつかの管理されるネットワークは、このセクションに記載の特徴のすべてを含むことができ、他の管理されるネットワークは、これらの特徴の異なるサブセットを含むことになる。
いくつかの実施形態の管理されるネットワーク内の管理される転送要素が、パケットが属するLDPSを識別することができるように、ネットワークコントローラクラスタは、LDPセットを定義するユーザ入力にしたがって、物理的な管理される転送要素のためのフローエントリを自動化的に生成する。特定のLDPS上のマシンからのパケットが、管理されるネットワーク上に送信されると、管理される転送要素は、パケットの論理コンテキスト(すなわち、パケットが属するLDPS、並びに、パケットが向かう論理ポート)を識別するために、これらのフローエントリを使用し、論理コンテキストにしたがってパケットを転送する。
いくつかの実施形態では、パケットは、論理コンテキストIDの何の並べ替えもなしに、その送信元マシン(及び、その送信元マシンのネットワークインタフェース)を出る。代わりに、パケットは、送信元及び宛先マシンのアドレス(例えば、MACアドレス、IPアドレス、など)のみを含む。論理コンテキスト情報のすべては、ネットワークの管理される転送要素で、追加も除去もされる。第1の管理される転送要素が、送信元マシンから直接パケットを受信すると、転送要素は、パケットの論理コンテキストを識別し、この情報をパケットに付加するために、パケット内の情報、並びに、パケットを受信した物理ポートを使用する。同様に、宛先マシンの前の最後の管理される転送要素は、パケットをその宛先に転送する前に、論理コンテキストを除去する。加えて、パケットに付加された論理コンテキストは、いくつかの実施形態では、途中の中間の管理される転送要素によって変更されてよい。このように、エンドマシン(及び、エンドマシンのネットワークインタフェース)は、パケットが送信される論理ネットワークを意識する必要はない。結果として、エンドマシン及びそのネットワークインタフェースは、論理ネットワークに適応するように構成される必要はない。代わりに、ネットワークコントローラは、管理される転送要素のみを構成する。加えて、転送処理の大部分は、エッジ転送要素で実行されるため、ネットワークのための転送リソースの全体は、より多くのマシンが追加されるにつれて(各々の物理エッジ転送要素は、そのように多くのマシンが取り付けられておくことができるだけであるため)、自動的にスケーリングすることになる。
パケットに付加された(例えば、プリペンドされた)論理コンテキストでは、いくつかの実施形態は、論理出口ポートを含むだけである。すなわち、パケットをカプセル化する論理コンテキストは、明示的なユーザIDを含まない。代わりに、論理コンテキストは、最初のホップで行われた論理転送決定(すなわち、宛先論理ポートについての決定)を取り込む。これから、ユーザID(すなわち、パケットが属するLDPS)を、より後の転送要素で、論理出口ポートを調べることによって(論理出口ポートが、特定のLDPSの一部であるとして)、非明示的に決定することができる。これは、結果として、管理される転送要素が、ID内の情報の複数の部分を決定するためにコンテキストIDをスライスする必要がないことを意味する、フラットなコンテキスト識別子をもたらす。
いくつかの実施形態では、出口ポートは、32ビットIDである。しかしながら、いくつかの実施形態での論理コンテキストを処理する管理される転送要素のためのソフトウェア転送要素の使用は、論理コンテキストのサイズを(例えば、64ビット以上に)変更するために、システムがいつでも変更されることを可能にするが、ハードウェア転送要素は、コンテキスト識別子のための特定のビット数を使用することに、より制約される傾向がある。加えて、本明細書に記載のような論理コンテキスト識別子を使用することは、論理データ(すなわち、出口コンテキストID)及び送信元/宛先アドレスデータ(すなわち、MACアドレス)間の明示的な分離を結果としてもたらす。送信元及び宛先アドレスは、論理入口及び出口ポートにマッピングされるが、情報は、パケット内に別々に格納される。したがって、ネットワーク内の管理されるスイッチング要素では、パケットを、物理アドレス情報へのいかなる追加のルックアップもなしに、パケットをカプセル化する論理データ(すなわち、論理出口情報)に完全に基づいて転送することができる。
いくつかの実施形態では、管理される転送要素内のパケット処理は、パケットをディスパッチポートに繰り返し送信し、パケットを効率的にスイッチング要素に再提出することを伴う。いくつかの実施形態では、ソフトウェアスイッチング要素を使用することは、このようなパケットの再提出を実行する能力を提供する。ハードウェア転送要素は、一般に、(部分的に、処理を実行するためのASICの使用により)固定されたパイプラインを伴うが、いくつかの実施形態のソフトウェア転送要素は、再提出を実行するまでの遅延はたいしたことがないため、パケット処理パイプラインを必要な限り拡張することができる。
加えて、いくつかの実施形態は、関連するパケットの単一のセット(例えば、単一のTCP/UDPフロー)内の後続のパケットのための複数のルックアップの最適化を可能にする。最初のパケットが到着すると、管理される転送要素は、ルックアップのすべてを実行し、パケットを完全に処理するために再提出する。転送要素は、次に、決定の結果(例えば、パケットへの出口コンテキストの追加、及び、特定のトンネルを介する転送要素の特定のポートからのネクストホップの転送決定)を、すべての他の関連するパケットで共有されることになるパケットの固有の識別子(すなわち、TCP/UDPフローの固有の識別子)と共にキャッシュする。いくつかの実施形態は、キャッシュされた結果を、追加の最適化のための転送要素のカーネルにプッシュする。固有の識別子を共有する追加のパケット(すなわち、同じフロー内の追加のパケット)のために、転送要素は、パケットに実行するアクションのすべてを特定する単一のキャッシュルックアップを使用することができる。パケットのフローが完了したら(例えば、識別子に一致するパケットがない特定の長さの時間後)、いくつかの実施形態では、転送要素は、キャッシュをフラッシュする。この複数ルックアップの使用は、いくつかの実施形態では、物理空間(例えば、物理ポートのMACアドレス)から論理空間(例えば、論理スイッチの論理ポートに対する論理転送決定)へ、次に、物理空間(例えば、スイッチング要素の物理出力ポートへの論理出口コンテキストのマッピング)へと戻るパケットのマッピングを伴う。
物理及び論理アドレスの明示的な分離を提供するためにカプセル化を使用するこのような論理ネットワークは、VLANのようなネットワーク仮想化に対する他のアプローチを上回る重要な利点を提供する。例えば、タグ付け技術(例えば、VLAN)は、タグに関連付けられたルールのみをパケットに適用するために、転送テーブルをセグメント化するために、パケットに配置されたタグを使用する。これは、新しい空間を導入するのではなく、既存のアドレス空間をセグメント化するだけである。結果として、アドレスは、仮想及び物理領域の両方の中のエンティティに使用されるため、それらは、物理転送テーブルにさらされなければならない。このように、階層的なアドレスマッピングからくる集約の特性を利用することができない。加えて、タグ付けによって新しいアドレス空間は導入されないため、仮想コンテキストのすべては、同じアドレス指定モデルを使用しなければならず、仮想アドレス空間は、物理アドレス空間と同じであるように制限される。タグ付け技術のさらなる欠点は、アドレス再マッピングによる移動性の利点を得ることができないことである。
XI.電子システム
図64は、本発明のいくつかの実施形態を実現する電子システム6400を概念的に示す。電子システム6400は、上述した制御、仮想化、又はオペレーティングシステムアプリケーションのいずれかを実行するために使用されてよい。電子システム6400は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータ、など)、電話、PDA、又は任意の他の種類の電子デバイスであってよい。このような電子システムは、様々なタイプのコンピュータ可読媒体、及び、様々な他のタイプのコンピュータ可読媒体のためのインタフェースを含む。電子システム6400は、バス6405、処理ユニット(複数可)6410、システムメモリ6425、読み取り専用メモリ6430、永久記憶デバイス6435、入力デバイス6440、及び出力デバイス6445を含む。
バス6405は、すべてのシステム、周辺機器、及びチップセットバスを集合的に表し、チップセットバスは、電子システム6400の多数の内部デバイスを通信可能に接続する。例えば、バス6405は、読み取り専用メモリ6430を有する処理ユニット(複数可)6410、システムメモリ6425、及び永久記憶デバイス6435を通信可能に接続する。
これらの様々なメモリユニットから、処理ユニット(複数可)6410は、本発明の処理を実行するために、実行する命令、及び処理するデータを取り出す。処理ユニット(複数可)は、異なる実施形態では、単一のプロセッサ又はマルチコアプロセッサであってよい。
読み取り専用メモリ(ROM)6430は、処理ユニット(複数可)6410、及び電子システムの他のモジュールによって必要とされる静的データ、及び命令を格納する。他方では、永久記憶デバイス6435は、読み書きメモリデバイスである。このデバイスは、電子システム6400がオフの場合でも、命令及びデータを格納する、不揮発性メモリユニットである。本発明のいくつかの実施形態は、(磁気又は光ディスク、及びその対応ディスクドライブのような)大容量記憶デバイスを、永久記憶デバイス6435として使用する。
他の実施形態は、(フロッピー(登録商標)ディスク、フラッシュドライブ、などのような)リムーバブル記憶デバイスを、永久記憶デバイスとして使用する。永久記憶デバイス6435と同様に、システムメモリ6425は、読み書きメモリデバイスである。しかしながら、しかしながら、永久記憶デバイス6435とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み書きメモリである。システムメモリは、プロセッサが実行時に必要とする命令の一部及びデータを格納する。いくつかの実施形態では、本発明のプロセスは、システムメモリ6425、永久記憶デバイス6435、及び/又は読み取り専用メモリ6430に格納される。これらの様々なメモリユニットから、処理ユニット(複数可)6410は、いくつかの実施形態のプロセスを実行するために、実行する命令及び処理するデータを取り出す。
バス6405は、入力及び出力デバイス6440及び6445にも接続する。入力デバイスは、ユーザが、電子システムに情報を通信し、コマンドを選択することを可能にする。入力デバイス6440は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス6445は、電子システムが生成した画像を表示する。出力デバイスは、プリンタ、及び、陰極線管(CRT)又は液晶ディスプレイ(LCD)のような表示デバイスを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
最後に、図64に示すように、バス6405は、また、電子システム6400を、ネットワークアダプタ(図示せず)を介してネットワーク6465に結合する。このように、コンピュータは、(ローカルエリアネットワーク(「LAN」)のような)コンピュータのネットワーク、ワイドエリアネットワーク(「WAN」)、若しくはインターネット、又は、インターネットのようなネットワークのネットワークの一部であってよい。電子システム6400のいずれか又はすべての構成要素は、本発明と共に使用されてよい。
いくつかの実施形態は、コンピュータプログラム命令を、機械可読又はコンピュータ可読媒体(代わりに、コンピュータ可読記憶媒体、機械可読媒体、又は機械可読記憶媒体とも呼ばれる)に格納する、マイクロプロセッサ、ストレージ、及びメモリのような電子構成要素を含む。このようなコンピュータ可読媒体のいくつかの例は、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つの処理ユニットによって実行可能で、様々な動作を実行する命令のセットを含むコンピュータプログラムを格納することができる。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されるような機械コード、及び、インタプリタを使用するコンピュータ、電子構成要素、又はマイクロプロセッサによって実行される、より高いレベルのコードを含むファイルを含む。
上記の説明は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサに言及しているが、いくつかの実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)のような、1つ又は複数の集積回路によって実行される。いくつかの実施形態では、このような集積回路は、回路自体に格納された命令を実行する。
本明細書で使用される「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」という用語は、すべて、電子的又は他の技術的デバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書の目的のために、表示又は表示するという用語は、電子デバイス上での表示を意味する。本明細書で使用される「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「機械可読媒体」という用語は、コンピュータによって読み取り可能な形式で情報を格納する有形の物理的物体に完全に限定される。これらの用語は、いかなる無線信号、有線のダウンロード信号、及びいかなる他の一時的な信号も除外する。
本発明を、多数の特定の詳細を参照して説明してきたが、当業者は、本発明が、本発明の要旨から逸脱することなく、他の特定な形態で具体化されてよいことを認識するであろう。加えて、(図14、16、32、35、49、51、及び52を含む)多数の図面は、プロセスを概念的に示す。これらのプロセスの特定の動作は、図示及び説明された正確な順序で実行されなくてよい。特定の動作は、ひと続きの動作で実行されなくてよく、異なる特定の動作が、異なる実施形態で実施されてよい。さらに、プロセスは、いくつかのサブプロセスを使用して、又は、より大きいマクロプロセスの一部として実施されてよい。したがって、当業者は、本発明が、上記の例示的な詳細によって限定されず、添付の特許請求の範囲によって定義されるべきであることを理解するであろう。

Claims (27)

  1. 論理的にパケットをルーティングする方法であって、
    第1の論理L2ドメインにおいてパケットを転送する第1の論理転送要素を実装するように、管理されるスイッチング要素の第1のセットを構成する工程と、
    第2の論理L2ドメインにおいてパケットを転送する第2の論理転送要素を実装するように、管理されるスイッチング要素の第2のセットを構成する工程と、を含み、
    少なくとも特定の管理されるスイッチング要素が、管理されるスイッチング要素の前記第1のセットと前記第2のセットとの双方に含まれており、
    前記方法はさらに、前記特定の管理されるスイッチング要素が構成されるホスト内にルータを構成する工程を含み、
    前記ルータは、論理L3ドメインにおいて、前記第1の論理L2ドメインと前記第2の論理L2ドメインとの間でパケットを転送する
    ことを特徴とする方法。
  2. 前記ホスト内に前記ルータを構成する工程は、前記ホストの名前空間内に前記ルータを構成する工程を含むことを特徴とする、請求項1に記載の方法。
  3. 前記名前空間は、前記ホスト内に仮想化されたマシンであることを特徴とする、請求項2に記載の方法。
  4. 前記特定の管理されるスイッチング要素と、管理されるスイッチング要素の前記第1のセットに含まれる管理されるスイッチング要素と、の間のトンネルを確立するように、前記特定の管理されるスイッチング要素を構成する工程をさらに含むことを特徴とする、請求項1に記載の方法。
  5. 前記特定の管理されるスイッチング要素が前記トンネルを確立するように構成されている前記管理されるスイッチング要素は、仮想マシンのセットを伴う他のホストで実行されるソフトウェアであることを特徴とする、請求項4に記載の方法。
  6. ルーティングするようにネットワークトラフィックを管理するホストとして構成されたコンピュータであって、
    処理ユニットのセットと、
    前記処理ユニットのセットのうちの少なくとも1つの処理ユニットによって実行されるソフトウェアルータと、
    前記処理ユニットのセットのうちの少なくとも1つの処理ユニットによって実行されるソフトウェアスイッチング要素と、を備え、
    前記ソフトウェアスイッチング要素は、パケットの送信元及び宛先と直接パケットを交換する複数のエッジスイッチング要素と通信可能に結合され、
    前記ソフトウェアスイッチング要素は、パケットの送信元及び宛先と直接パケットを交換しない非エッジスイッチング要素であり、
    前記ソフトウェアスイッチング要素は、前記エッジスイッチング要素と前記ソフトウェアルータとの間でのパケット転送を容易にするように構成されたテーブルを有する
    ことを特徴とするコンピュータ。
  7. 前記コンピュータの前記ソフトウェアスイッチング要素は、トンネルを介して、前記エッジスイッチング要素のうちの少なくとも1つと通信可能に結合されていることを特徴とする、請求項6に記載のコンピュータ。
  8. 前記エッジスイッチング要素のうちの少なくとも2以上は、他のホストに構成された他のソフトウェアスイッチング要素であることを特徴とする、請求項6に記載のコンピュータ。
  9. 前記ソフトウェアルータは第1のソフトウェアルータであり、
    前記コンピュータはさらに、前記ソフトウェアスイッチング要素と通信可能に結合された追加のエッジスイッチング要素のための追加のルーティングリソースを提供する第2のソフトウェアルータを備える
    ことを特徴とする、請求項6に記載のコンピュータ。
  10. 前記第1のソフトウェアルータと前記第2のソフトウェアルータとの間でルーティングされるトラフィックは、前記コンピュータから出る必要はないことを特徴とする、請求項9に記載のコンピュータ。
  11. 前記ソフトウェアルータは、前記ソフトウェアルータを介するデータフローを制御するためのエントリを格納する構成可能なテーブルを備えることを特徴とする、請求項6に記載のコンピュータ。
  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に記載の機械読み取り可能な媒体。
JP2017202850A 2011-08-17 2017-10-19 分散論理l3ルーティング Active JP6483781B2 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201161524754P 2011-08-17 2011-08-17
US61/524,754 2011-08-17
US201261643339P 2012-05-06 2012-05-06
US61/643,339 2012-05-06
US201261654121P 2012-06-01 2012-06-01
US61/654,121 2012-06-01
US201261666876P 2012-07-01 2012-07-01
US61/666,876 2012-07-01

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016002793A Division JP6231586B2 (ja) 2011-08-17 2016-01-08 分散論理l3ルーティング

Publications (2)

Publication Number Publication Date
JP2018050306A true JP2018050306A (ja) 2018-03-29
JP6483781B2 JP6483781B2 (ja) 2019-03-13

Family

ID=47712585

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2014526268A Active JP5870192B2 (ja) 2011-08-17 2012-08-17 論理l3ルーティング
JP2016002793A Active JP6231586B2 (ja) 2011-08-17 2016-01-08 分散論理l3ルーティング
JP2017202850A Active JP6483781B2 (ja) 2011-08-17 2017-10-19 分散論理l3ルーティング

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2014526268A Active JP5870192B2 (ja) 2011-08-17 2012-08-17 論理l3ルーティング
JP2016002793A Active JP6231586B2 (ja) 2011-08-17 2016-01-08 分散論理l3ルーティング

Country Status (6)

Country Link
US (14) US8958298B2 (ja)
EP (3) EP3605969B1 (ja)
JP (3) JP5870192B2 (ja)
CN (6) CN107071086B (ja)
AU (1) AU2012296329B2 (ja)
WO (1) WO2013026049A1 (ja)

Families Citing this family (485)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560634B2 (en) * 2007-10-17 2013-10-15 Dispersive Networks, Inc. Apparatus, systems and methods utilizing dispersive networking
US8755283B2 (en) 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
US8743885B2 (en) 2011-05-03 2014-06-03 Cisco Technology, Inc. Mobile service routing in a network environment
US9736065B2 (en) 2011-06-24 2017-08-15 Cisco Technology, Inc. Level of hierarchy in MST for traffic localization and load balancing
US8681802B2 (en) * 2011-08-15 2014-03-25 Cisco Technology, Inc. Proxy FHRP for anycast routing service
US9124538B2 (en) * 2011-08-17 2015-09-01 Nicira, Inc. Dynamic generation of flow entries for last-hop processing
US9602404B2 (en) 2011-08-17 2017-03-21 Nicira, Inc. Last-hop processing for reverse direction packets
EP3605969B1 (en) 2011-08-17 2021-05-26 Nicira Inc. Distributed logical l3 routing
US9712599B2 (en) * 2011-10-03 2017-07-18 International Business Machines Corporation Application peak load processing
US9178833B2 (en) * 2011-10-25 2015-11-03 Nicira, Inc. Chassis controller
EP2748714B1 (en) 2011-11-15 2021-01-13 Nicira, Inc. Connection identifier assignment and source network address translation
DE112011105911T5 (de) * 2011-12-01 2014-09-11 Intel Corporation Server mit Switch-Schaltungen
US9363225B2 (en) * 2012-01-12 2016-06-07 Cisco Technology, Inc. Connecting layer-2 domains over layer-3 networks
CN102438331B (zh) * 2012-01-12 2016-04-13 惠州Tcl移动通信有限公司 一种移动终端通过手机上网的方法及系统
US8908698B2 (en) 2012-01-13 2014-12-09 Cisco Technology, Inc. System and method for managing site-to-site VPNs of a cloud managed network
EP2823618A4 (en) * 2012-03-08 2015-11-11 Hewlett Packard Development Co Modification of Virtual Machine Communication
US9231864B2 (en) * 2012-03-19 2016-01-05 Intel Corporation Techniques for packet management in an input/output virtualization system
US9331938B2 (en) * 2012-04-13 2016-05-03 Nicira, Inc. Extension of logical networks across layer 3 virtual private networks
EP2748706B1 (en) * 2012-04-18 2020-01-22 Nicira Inc. Exchange of network state information between forwarding elements
US9515920B2 (en) * 2012-04-20 2016-12-06 Futurewei Technologies, Inc. Name-based neighbor discovery and multi-hop service discovery in information-centric networks
CN103379185B (zh) * 2012-04-26 2016-08-03 华为技术有限公司 一种网络地址转换的方法、设备和系统
US9055006B2 (en) 2012-06-11 2015-06-09 Radware, Ltd. Techniques for traffic diversion in software defined networks for mitigating denial of service attacks
US10177957B1 (en) * 2012-07-06 2019-01-08 Cradlepoint, Inc. Connecting a cloud network to the internet
US8805990B2 (en) * 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
WO2014010724A1 (ja) * 2012-07-13 2014-01-16 日本電気株式会社 制御装置、通信システム、通信方法及びプログラム
US9049114B2 (en) * 2012-08-31 2015-06-02 Cisco Technology, Inc. Network access device and method for automatically establishing connection to a wide area network
US9104492B2 (en) * 2012-09-04 2015-08-11 Wisconsin Alumni Research Foundation Cloud-based middlebox management system
US9038151B1 (en) 2012-09-20 2015-05-19 Wiretap Ventures, LLC Authentication for software defined networks
US9300541B2 (en) * 2012-09-28 2016-03-29 Time Warner Cable Enterprises Llc System and method for automatically learning and maintaining IP address allocation topology
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US10367914B2 (en) 2016-01-12 2019-07-30 Cisco Technology, Inc. Attaching service level agreements to application containers and enabling service assurance
US10044671B2 (en) * 2012-11-27 2018-08-07 Nec Corporation Control apparatus, communication system, communication method, and program
US9826056B2 (en) 2012-12-09 2017-11-21 Facebook, Inc. Displaying news ticker content based on diversity in a social networking system
US10168853B2 (en) 2012-12-09 2019-01-01 Facebook, Inc. Displaying news ticker content based on value in a social networking system
US8953439B1 (en) 2012-12-31 2015-02-10 Juniper Networks, Inc. Separation of control plane functions using virtual machines in network device
CN103974380B (zh) * 2013-01-24 2018-05-15 新华三技术有限公司 一种终端接入位置保活的方法及装置
US10616049B2 (en) 2013-01-25 2020-04-07 Dell Products, L.P. System and method for determining the configuration of switches in virtual link trunking environments
US9407500B2 (en) * 2013-01-25 2016-08-02 Dell Products L.P. System and method for determining the configuration of switches in virtual link trunking environments
US9634940B2 (en) 2013-01-31 2017-04-25 Mellanox Technologies, Ltd. Adaptive routing using inter-switch notifications
FR3001849B1 (fr) * 2013-02-05 2016-06-24 Byo Networks Procede pour router des donnees, programme d'ordinateur, controleur de reseau et reseaux associes
US9930066B2 (en) 2013-02-12 2018-03-27 Nicira, Inc. Infrastructure level LAN security
US9043439B2 (en) 2013-03-14 2015-05-26 Cisco Technology, Inc. Method for streaming packet captures from network access devices to a cloud server over HTTP
US9300627B2 (en) 2013-03-14 2016-03-29 Time Warner Cable Enterprises Llc System and method for automatic routing of dynamic host configuration protocol (DHCP) traffic
US9571338B2 (en) * 2013-03-14 2017-02-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Scalable distributed control plane for network switching systems
US9967111B2 (en) * 2013-03-15 2018-05-08 Rackspace Us, Inc. Software-defined multinetwork bridge
US9374302B2 (en) 2013-04-26 2016-06-21 Brocade Communications Systems, Inc. Distributed methodology for peer-to-peer transmission of stateful packet flows
US9794379B2 (en) 2013-04-26 2017-10-17 Cisco Technology, Inc. High-efficiency service chaining with agentless service nodes
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
CN104243337B (zh) * 2013-06-09 2017-09-01 新华三技术有限公司 一种跨集群负载均衡的方法及装置
EP3014442A2 (en) * 2013-06-26 2016-05-04 Amazon Technologies Inc. Managing client access to a plurality of computing systems
US9843631B2 (en) 2013-06-26 2017-12-12 Amazon Technologies, Inc. Producer system selection
US9515924B2 (en) 2013-07-03 2016-12-06 Avaya Inc. Method and apparatus providing single-tier routing in a shortest path bridging (SPB) network
US9467366B2 (en) 2013-07-03 2016-10-11 Avaya Inc. Method and apparatus providing single-tier routing in a shortest path bridging (SPB) network
US9559870B2 (en) 2013-07-08 2017-01-31 Nicira, Inc. Managing forwarding of logical network traffic between physical domains
US9571386B2 (en) * 2013-07-08 2017-02-14 Nicira, Inc. Hybrid packet processing
CN109921973A (zh) * 2013-07-10 2019-06-21 华为技术有限公司 Gre隧道实现方法、接入点和网关
US10749711B2 (en) 2013-07-10 2020-08-18 Nicira, Inc. Network-link method useful for a last-mile connectivity in an edge-gateway multipath system
US10454714B2 (en) 2013-07-10 2019-10-22 Nicira, Inc. Method and system of overlay flow control
EP3021528B1 (en) 2013-07-12 2019-09-25 Huawei Technologies Co., Ltd. Gre tunnel implementation method, access device and convergence gateway
US9282019B2 (en) 2013-07-12 2016-03-08 Nicira, Inc. Tracing logical network packets through physical network
US9344349B2 (en) 2013-07-12 2016-05-17 Nicira, Inc. Tracing network packets by a cluster of network controllers
CN103581018B (zh) * 2013-07-26 2017-08-11 北京华为数字技术有限公司 报文发送方法、路由器以及业务交换器
US10355932B2 (en) 2013-08-02 2019-07-16 Telefonaktiebolaget L M Ericsson (Publ) Configuration of forwarding rules using the address resolution protocol
US9952885B2 (en) 2013-08-14 2018-04-24 Nicira, Inc. Generation of configuration files for a DHCP module executing within a virtualized container
US9887960B2 (en) 2013-08-14 2018-02-06 Nicira, Inc. Providing services for logical networks
CN104378298A (zh) * 2013-08-16 2015-02-25 中兴通讯股份有限公司 一种流表条目生成方法及相应设备
US9325609B2 (en) 2013-08-23 2016-04-26 Futurewei Technologies, Inc. Segmented source routing in a network
US9548965B2 (en) 2013-08-26 2017-01-17 Nicira, Inc. Proxy methods for suppressing broadcast traffic in a network
US9374308B2 (en) 2013-08-30 2016-06-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Openflow switch mode transition processing
US9654390B2 (en) 2013-09-03 2017-05-16 Cisco Technology, Inc. Method and apparatus for improving cloud routing service performance
US9503371B2 (en) 2013-09-04 2016-11-22 Nicira, Inc. High availability L3 gateways for logical networks
US9577845B2 (en) 2013-09-04 2017-02-21 Nicira, Inc. Multiple active L3 gateways for logical networks
US20150085870A1 (en) * 2013-09-25 2015-03-26 Cisco Technology, Inc. Co-operative load sharing and redundancy in distributed service chains in a network environment
US10033693B2 (en) 2013-10-01 2018-07-24 Nicira, Inc. Distributed identity-based firewalls
JP2015092652A (ja) * 2013-10-03 2015-05-14 キヤノン株式会社 通信装置およびその制御方法
US9455901B2 (en) 2013-10-04 2016-09-27 Nicira, Inc. Managing software and hardware forwarding elements to define virtual networks
US9548960B2 (en) 2013-10-06 2017-01-17 Mellanox Technologies Ltd. Simplified packet routing
US10063458B2 (en) 2013-10-13 2018-08-28 Nicira, Inc. Asymmetric connection with external networks
US9785455B2 (en) * 2013-10-13 2017-10-10 Nicira, Inc. Logical router
US9998530B2 (en) 2013-10-15 2018-06-12 Nicira, Inc. Distributed global load-balancing system for software-defined data centers
US9363180B2 (en) * 2013-11-04 2016-06-07 Telefonkatiebolaget L M Ericsson (Publ) Service chaining in a cloud environment using Software Defined Networking
JP2015095784A (ja) * 2013-11-12 2015-05-18 富士通株式会社 情報処理システム、情報処理システムの制御方法及び情報処理装置の制御プログラム
US9749290B2 (en) * 2013-11-14 2017-08-29 Verizon Patent And Licensing Inc. Distributing and virtualizing a network address translation (NAT)
US9300585B2 (en) 2013-11-15 2016-03-29 Cisco Technology, Inc. Shortening of service paths in service chains in a communications network
EP3059909B1 (en) * 2013-11-22 2018-03-21 Huawei Technologies Co., Ltd. Method, apparatus and system for controlling forwarding of service data in virtual network
US9253043B2 (en) * 2013-11-30 2016-02-02 At&T Intellectual Property I, L.P. Methods and apparatus to convert router configuration data
WO2015081551A1 (zh) * 2013-12-06 2015-06-11 华为技术有限公司 一种网络中实现报文路由的方法、设备和系统
US9197569B2 (en) * 2013-12-06 2015-11-24 Algoblu Holdings Limited Hierarchical control in software-defined network (SDN)
US20150180769A1 (en) * 2013-12-20 2015-06-25 Alcatel-Lucent Usa Inc. Scale-up of sdn control plane using virtual switch based overlay
US9391884B2 (en) 2014-01-31 2016-07-12 Google Inc. Consistent hashing using exact matching with application to hardware load balancing
US9225597B2 (en) 2014-03-14 2015-12-29 Nicira, Inc. Managed gateways peering with external router to attract ingress packets
EP3117561B1 (en) * 2014-03-14 2018-10-17 Nicira Inc. Route advertisement by managed gateways
US9419855B2 (en) * 2014-03-14 2016-08-16 Nicira, Inc. Static routes for logical routers
US9590901B2 (en) 2014-03-14 2017-03-07 Nicira, Inc. Route advertisement by managed gateways
US9313129B2 (en) * 2014-03-14 2016-04-12 Nicira, Inc. Logical router processing by network controller
WO2015142404A1 (en) * 2014-03-21 2015-09-24 Nicira, Inc. Dynamic routing for logical routers
US9647883B2 (en) * 2014-03-21 2017-05-09 Nicria, Inc. Multiple levels of logical routers
US9503321B2 (en) 2014-03-21 2016-11-22 Nicira, Inc. Dynamic routing for logical routers
WO2015147780A1 (en) * 2014-03-24 2015-10-01 Hewlett-Packard Development Company, L.P. Client-based port filter table
CN104954274B (zh) 2014-03-25 2018-03-16 华为技术有限公司 生成转发信息的方法、控制器和业务转发实体
US9338091B2 (en) 2014-03-27 2016-05-10 Nicira, Inc. Procedures for efficient cloud service access in a system with multiple tenant logical networks
US9413644B2 (en) 2014-03-27 2016-08-09 Nicira, Inc. Ingress ECMP in virtual distributed routing environment
US9794186B2 (en) * 2014-03-27 2017-10-17 Nicira, Inc. Distributed network address translation for efficient cloud service access
US9893988B2 (en) 2014-03-27 2018-02-13 Nicira, Inc. Address resolution using multiple designated instances of a logical router
US9825854B2 (en) 2014-03-27 2017-11-21 Nicira, Inc. Host architecture for efficient cloud service access
US10177936B2 (en) * 2014-03-28 2019-01-08 International Business Machines Corporation Quality of service (QoS) for multi-tenant-aware overlay virtual networks
WO2015152435A1 (ko) 2014-03-31 2015-10-08 쿨클라우드㈜ Sdn 기반의 분할 계층적 네트워크 시스템
US9906494B2 (en) 2014-03-31 2018-02-27 Nicira, Inc. Configuring interactions with a firewall service virtual machine
US9215210B2 (en) 2014-03-31 2015-12-15 Nicira, Inc. Migrating firewall connection state for a firewall service virtual machine
US9794079B2 (en) * 2014-03-31 2017-10-17 Nicira, Inc. Replicating broadcast, unknown-unicast, and multicast traffic in overlay logical networks bridged with physical networks
EP3127365B1 (en) * 2014-04-04 2022-06-08 Telefonaktiebolaget LM Ericsson (publ) Mobile network handling of unattended traffic
US9755858B2 (en) 2014-04-15 2017-09-05 Cisco Technology, Inc. Programmable infrastructure gateway for enabling hybrid cloud services in a network environment
TWI531908B (zh) * 2014-04-24 2016-05-01 A method of supporting virtual machine migration with Software Defined Network (SDN)
US9923799B2 (en) * 2014-04-25 2018-03-20 Metaswitch Networks Ltd. Data processing
US10164894B2 (en) 2014-05-05 2018-12-25 Nicira, Inc. Buffered subscriber tables for maintaining a consistent network state
US9473365B2 (en) 2014-05-08 2016-10-18 Cisco Technology, Inc. Collaborative inter-service scheduling of logical resources in cloud platforms
US10313225B1 (en) * 2014-05-09 2019-06-04 Amazon Technologies, Inc. Scalable routing service
US9379931B2 (en) 2014-05-16 2016-06-28 Cisco Technology, Inc. System and method for transporting information to services in a network environment
US9479443B2 (en) 2014-05-16 2016-10-25 Cisco Technology, Inc. System and method for transporting information to services in a network environment
US9648121B2 (en) 2014-05-27 2017-05-09 Ravello Systems Ltd. Source-destination network address translation (SDNAT) proxy and method thereof
US10205648B1 (en) * 2014-05-30 2019-02-12 EMC IP Holding Company LLC Network monitoring using traffic mirroring and encapsulated tunnel in virtualized information processing system
US9413659B2 (en) 2014-06-11 2016-08-09 Cisco Technology, Inc. Distributed network address and port translation for migrating flows between service chains in a network environment
US9641429B2 (en) 2014-06-18 2017-05-02 Radware, Ltd. Predictive traffic steering over software defined networks
US9729473B2 (en) 2014-06-23 2017-08-08 Mellanox Technologies, Ltd. Network high availability using temporary re-routing
US9806994B2 (en) * 2014-06-24 2017-10-31 Mellanox Technologies, Ltd. Routing via multiple paths with efficient traffic distribution
CN105338125B (zh) * 2014-06-25 2019-11-05 华为技术有限公司 报文处理方法及装置
US10747888B2 (en) * 2014-06-30 2020-08-18 Nicira, Inc. Method and apparatus for differently encrypting data messages for different logical networks
US10122605B2 (en) 2014-07-09 2018-11-06 Cisco Technology, Inc Annotation of network activity through different phases of execution
US9313044B2 (en) * 2014-07-17 2016-04-12 Cisco Technology, Inc. Multiple mobility domains with VLAN translation in a multi-tenant network environment
US9699067B2 (en) 2014-07-22 2017-07-04 Mellanox Technologies, Ltd. Dragonfly plus: communication over bipartite node groups connected by a mesh network
US9923827B2 (en) 2014-09-05 2018-03-20 At&T Intellectual Property I, L.P. Load balancing and migration of transport connections
US9825878B2 (en) 2014-09-26 2017-11-21 Cisco Technology, Inc. Distributed application framework for prioritizing network traffic using application priority awareness
US9935827B2 (en) 2014-09-30 2018-04-03 Nicira, Inc. Method and apparatus for distributing load among a plurality of service nodes
US10511458B2 (en) 2014-09-30 2019-12-17 Nicira, Inc. Virtual distributed bridging
US10250443B2 (en) 2014-09-30 2019-04-02 Nicira, Inc. Using physical location to modify behavior of a distributed virtual network element
US10135737B2 (en) 2014-09-30 2018-11-20 Nicira, Inc. Distributed load balancing systems
US9768980B2 (en) 2014-09-30 2017-09-19 Nicira, Inc. Virtual distributed bridging
US11296930B2 (en) 2014-09-30 2022-04-05 Nicira, Inc. Tunnel-enabled elastic service model
US10020960B2 (en) 2014-09-30 2018-07-10 Nicira, Inc. Virtual distributed bridging
US9762508B2 (en) * 2014-10-02 2017-09-12 Microsoft Technology Licensing, Llc Relay optimization using software defined networking
US10469342B2 (en) 2014-10-10 2019-11-05 Nicira, Inc. Logical network traffic analysis
US20160105534A1 (en) * 2014-10-13 2016-04-14 Futurewei Technologies, Inc. Physical switch initialization using representational state transfer services
US10348621B2 (en) * 2014-10-30 2019-07-09 AT&T Intellectual Property I. L. P. Universal customer premise equipment
CN105634959A (zh) * 2014-10-31 2016-06-01 杭州华三通信技术有限公司 一种软件定义网络中的流表项分发方法和装置
WO2016077948A1 (zh) * 2014-11-17 2016-05-26 华为技术有限公司 交换机端口控制方法、装置及系统
US10417025B2 (en) 2014-11-18 2019-09-17 Cisco Technology, Inc. System and method to chain distributed applications in a network environment
US9954775B2 (en) * 2014-11-25 2018-04-24 Electronics And Telecommunications Research Institute Software-defined network (SDN) system using host abstraction, and method for implementing the same
USRE48131E1 (en) 2014-12-11 2020-07-28 Cisco Technology, Inc. Metadata augmentation in a service function chain
WO2016094825A1 (en) 2014-12-11 2016-06-16 Brocade Communications Systems, Inc. Multilayered distributed router architecture
US9660909B2 (en) 2014-12-11 2017-05-23 Cisco Technology, Inc. Network service header metadata for load balancing
US10129180B2 (en) * 2015-01-30 2018-11-13 Nicira, Inc. Transit logical switch within logical router
US10050862B2 (en) 2015-02-09 2018-08-14 Cisco Technology, Inc. Distributed application framework that uses network and application awareness for placing data
US9866427B2 (en) 2015-02-16 2018-01-09 Juniper Networks, Inc. Multi-stage switch fabric fault detection and handling
US10708342B2 (en) 2015-02-27 2020-07-07 Cisco Technology, Inc. Dynamic troubleshooting workspaces for cloud and network management systems
US9680731B2 (en) 2015-02-27 2017-06-13 International Business Machines Corporation Adaptive software defined networking controller
US10037617B2 (en) 2015-02-27 2018-07-31 Cisco Technology, Inc. Enhanced user interface systems including dynamic context selection for cloud-based networks
CN105991430B (zh) 2015-03-05 2022-01-14 李明 跨多个自治网络系统的数据路由
US9935834B1 (en) 2015-03-13 2018-04-03 Cisco Technology, Inc. Automated configuration of virtual port channels
US9733968B2 (en) 2015-03-16 2017-08-15 Oracle International Corporation Virtual machine (VM) migration from switched fabric based computing system to external systems
US11023265B2 (en) * 2015-03-20 2021-06-01 Intel Corporation Techniques for improving output-packet-similarity between primary and secondary virtual machines
US9894005B2 (en) 2015-03-31 2018-02-13 Mellanox Technologies, Ltd. Adaptive routing controlled by source node
US9954783B1 (en) 2015-03-31 2018-04-24 Cisco Technology, Inc. System and method for minimizing disruption from failed service nodes
US10110668B1 (en) 2015-03-31 2018-10-23 Cisco Technology, Inc. System and method for monitoring service nodes
US10305816B1 (en) 2015-03-31 2019-05-28 Cisco Technology, Inc. Adjustable bit mask for high-speed native load balancing on a switch
US10079725B1 (en) 2015-04-01 2018-09-18 Cisco Technology, Inc. Route map policies for network switches
US10103995B1 (en) 2015-04-01 2018-10-16 Cisco Technology, Inc. System and method for automated policy-based routing
US9985894B1 (en) 2015-04-01 2018-05-29 Cisco Technology, Inc. Exclude filter for load balancing switch
WO2016160043A1 (en) * 2015-04-03 2016-10-06 Hewlett Packard Enterprise Development Lp Address cache for tunnel endpoint associated with an overlay network
US10609091B2 (en) 2015-04-03 2020-03-31 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US10382534B1 (en) 2015-04-04 2019-08-13 Cisco Technology, Inc. Selective load balancing of network traffic
US10038628B2 (en) 2015-04-04 2018-07-31 Nicira, Inc. Route server mode for dynamic routing between logical and physical networks
US9967134B2 (en) 2015-04-06 2018-05-08 Nicira, Inc. Reduction of network churn based on differences in input state
US10798048B2 (en) * 2015-04-07 2020-10-06 Nicira, Inc. Address resolution protocol suppression using a flow-based forwarding element
US10498652B2 (en) 2015-04-13 2019-12-03 Nicira, Inc. Method and system of application-aware routing with crowdsourcing
US10135789B2 (en) 2015-04-13 2018-11-20 Nicira, Inc. Method and system of establishing a virtual private network in a cloud service for branch networking
US10425382B2 (en) * 2015-04-13 2019-09-24 Nicira, Inc. Method and system of a cloud-based multipath routing protocol
US9942058B2 (en) 2015-04-17 2018-04-10 Nicira, Inc. Managing tunnel endpoints for facilitating creation of logical networks
US9825902B1 (en) 2015-04-22 2017-11-21 Cisco Technology, Inc. Route advertisement for native hardware-based virtual IP address (“VIP”) on layer 2/layer 3 switch
US10033631B1 (en) 2015-04-23 2018-07-24 Cisco Technology, Inc. Route distribution for service appliances
US10469389B1 (en) 2015-04-23 2019-11-05 Cisco Technology, Inc. TCAM-based load balancing on a switch
US10075377B1 (en) 2015-04-23 2018-09-11 Cisco Technology, Inc. Statistical collection in a network switch natively configured as a load balancer
US10554547B2 (en) * 2015-05-07 2020-02-04 Cisco Technology, Inc. Scalable network address translation at high speed in a network environment
US9935882B2 (en) 2015-05-13 2018-04-03 Cisco Technology, Inc. Configuration of network elements for automated policy-based routing
US10476982B2 (en) 2015-05-15 2019-11-12 Cisco Technology, Inc. Multi-datacenter message queue
US9971624B2 (en) 2015-05-17 2018-05-15 Nicira, Inc. Logical processing for containers
US9762402B2 (en) 2015-05-20 2017-09-12 Cisco Technology, Inc. System and method to facilitate the assignment of service functions for service chains in a network environment
US10554484B2 (en) 2015-06-26 2020-02-04 Nicira, Inc. Control plane integration with hardware switches
US10243848B2 (en) 2015-06-27 2019-03-26 Nicira, Inc. Provisioning logical entities in a multi-datacenter environment
US10225184B2 (en) 2015-06-30 2019-03-05 Nicira, Inc. Redirecting traffic in a virtual distributed router environment
US10225105B2 (en) * 2015-07-08 2019-03-05 Openvpn Technologies, Inc. Network address translation
US10034201B2 (en) 2015-07-09 2018-07-24 Cisco Technology, Inc. Stateless load-balancing across multiple tunnels
US10243914B2 (en) * 2015-07-15 2019-03-26 Nicira, Inc. Managing link aggregation traffic in edge nodes
US9985837B2 (en) 2015-07-23 2018-05-29 Cisco Technology, Inc. Refresh of the binding tables between data-link-layer and network-layer addresses on mobility in a data center environment
US10038632B2 (en) * 2015-07-23 2018-07-31 Netscout Systems, Inc. AIA enhancements to support L2 connected networks
US9847938B2 (en) 2015-07-31 2017-12-19 Nicira, Inc. Configuring logical routers on hardware switches
US9967182B2 (en) 2015-07-31 2018-05-08 Nicira, Inc. Enabling hardware switches to perform logical routing functionalities
US9819581B2 (en) * 2015-07-31 2017-11-14 Nicira, Inc. Configuring a hardware switch as an edge node for a logical router
US10129142B2 (en) 2015-08-11 2018-11-13 Nicira, Inc. Route configuration for logical router
US10075363B2 (en) 2015-08-31 2018-09-11 Nicira, Inc. Authorization for advertised routes among logical routers
US10313186B2 (en) 2015-08-31 2019-06-04 Nicira, Inc. Scalable controller for hardware VTEPS
JP6574906B2 (ja) * 2015-09-29 2019-09-11 華為技術有限公司Huawei Technologies Co.,Ltd. マスター・スレーブ・ネットワークのためのipアドレス割り当て方法、装置、およびシステム
US10230576B2 (en) 2015-09-30 2019-03-12 Nicira, Inc. Managing administrative statuses of hardware VTEPs
US10204122B2 (en) 2015-09-30 2019-02-12 Nicira, Inc. Implementing an interface between tuple and message-driven control entities
US9948577B2 (en) * 2015-09-30 2018-04-17 Nicira, Inc. IP aliases in logical networks with hardware switches
US10263828B2 (en) 2015-09-30 2019-04-16 Nicira, Inc. Preventing concurrent distribution of network data to a hardware switch by multiple controllers
US9998324B2 (en) * 2015-09-30 2018-06-12 Nicira, Inc. Logical L3 processing for L2 hardware switches
US10067780B2 (en) 2015-10-06 2018-09-04 Cisco Technology, Inc. Performance-based public cloud selection for a hybrid cloud environment
US11005682B2 (en) 2015-10-06 2021-05-11 Cisco Technology, Inc. Policy-driven switch overlay bypass in a hybrid cloud network environment
US10462136B2 (en) 2015-10-13 2019-10-29 Cisco Technology, Inc. Hybrid cloud security groups
CN106612200A (zh) * 2015-10-27 2017-05-03 成都鼎桥通信技术有限公司 分布式网络架构及其调度方法
US10095535B2 (en) * 2015-10-31 2018-10-09 Nicira, Inc. Static route types for logical routers
US10078527B2 (en) 2015-11-01 2018-09-18 Nicira, Inc. Securing a managed forwarding element that operates within a data compute node
US10250553B2 (en) 2015-11-03 2019-04-02 Nicira, Inc. ARP offloading for managed hardware forwarding elements
US10680998B2 (en) 2015-11-10 2020-06-09 International Business Machines Corporation Method, system, and computer program product for a network device in switchless networks
US10523657B2 (en) 2015-11-16 2019-12-31 Cisco Technology, Inc. Endpoint privacy preservation with cloud conferencing
US10205677B2 (en) 2015-11-24 2019-02-12 Cisco Technology, Inc. Cloud resource placement optimization and migration execution in federated clouds
US10719341B2 (en) 2015-12-02 2020-07-21 Nicira, Inc. Learning of tunnel endpoint selections
US10069646B2 (en) * 2015-12-02 2018-09-04 Nicira, Inc. Distribution of tunnel endpoint mapping information
CN108432189B (zh) * 2015-12-02 2021-04-20 Nicira股份有限公司 多个隧道端点上的负载平衡
US9912616B2 (en) * 2015-12-02 2018-03-06 Nicira, Inc. Grouping tunnel endpoints of a bridge cluster
US10164885B2 (en) 2015-12-02 2018-12-25 Nicira, Inc. Load balancing over multiple tunnel endpoints
US10084703B2 (en) 2015-12-04 2018-09-25 Cisco Technology, Inc. Infrastructure-exclusive service forwarding
US9998375B2 (en) 2015-12-15 2018-06-12 Nicira, Inc. Transactional controls for supplying control plane data to managed hardware forwarding elements
US10225149B2 (en) 2015-12-15 2019-03-05 Nicira, Inc. Method and tool for diagnosing logical networks
US9917799B2 (en) 2015-12-15 2018-03-13 Nicira, Inc. Transactional controls for supplying control plane data to managed hardware forwarding elements
US9992112B2 (en) 2015-12-15 2018-06-05 Nicira, Inc. Transactional controls for supplying control plane data to managed hardware forwarding elements
US9973435B2 (en) 2015-12-16 2018-05-15 Mellanox Technologies Tlv Ltd. Loopback-free adaptive routing
US9998371B2 (en) 2015-12-16 2018-06-12 Nicira, Inc. Packet communication between container data compute nodes and a managed forwarding element
US10063469B2 (en) 2015-12-16 2018-08-28 Nicira, Inc. Forwarding element implementation for containers
US10305858B2 (en) 2015-12-18 2019-05-28 Nicira, Inc. Datapath processing of service rules with qualifiers defined in terms of dynamic groups
US10148696B2 (en) * 2015-12-18 2018-12-04 Nicira, Inc. Service rule console for creating, viewing and updating template based service rules
US10341297B2 (en) 2015-12-18 2019-07-02 Nicira, Inc. Datapath processing of service rules with qualifiers defined in terms of template identifiers and/or template matching criteria
WO2017113231A1 (zh) * 2015-12-30 2017-07-06 华为技术有限公司 一种报文传输的方法、装置和系统
US10063468B2 (en) 2016-01-15 2018-08-28 Cisco Technology, Inc. Leaking routes in a service chain
US11044203B2 (en) 2016-01-19 2021-06-22 Cisco Technology, Inc. System and method for hosting mobile packet core and value-added services using a software defined network and service chains
US10819621B2 (en) 2016-02-23 2020-10-27 Mellanox Technologies Tlv Ltd. Unicast forwarding of adaptive-routing notifications
US10241820B2 (en) 2016-03-14 2019-03-26 Nicira, Inc. Determining the realization status of logical entities in logical networks
US10243797B2 (en) 2016-03-14 2019-03-26 Nicira, Inc. Identifying the realization status of logical entities based on a global realization number
US10187306B2 (en) 2016-03-24 2019-01-22 Cisco Technology, Inc. System and method for improved service chaining
CN106059881B (zh) * 2016-03-28 2017-11-14 北京智梵网络科技有限公司 一种sdn网络及其流量导入导出方法
US10142231B2 (en) * 2016-03-31 2018-11-27 Intel Corporation Technologies for network I/O access
US10237142B2 (en) 2016-04-04 2019-03-19 Nicira, Inc. Troubleshooting virtual network reachability
US10574741B2 (en) * 2016-04-18 2020-02-25 Nokia Technologies Oy Multi-level load balancing
US10931793B2 (en) 2016-04-26 2021-02-23 Cisco Technology, Inc. System and method for automated rendering of service chaining
US10333849B2 (en) 2016-04-28 2019-06-25 Nicira, Inc. Automatic configuration of logical routers on edge nodes
US10841273B2 (en) 2016-04-29 2020-11-17 Nicira, Inc. Implementing logical DHCP servers in logical networks
US10484515B2 (en) 2016-04-29 2019-11-19 Nicira, Inc. Implementing logical metadata proxy servers in logical networks
US11019167B2 (en) 2016-04-29 2021-05-25 Nicira, Inc. Management of update queues for network controller
US10547588B2 (en) * 2016-04-30 2020-01-28 Nicira, Inc. Method of translating a logical switch into a set of network addresses
US10091161B2 (en) 2016-04-30 2018-10-02 Nicira, Inc. Assignment of router ID for logical routers
CA2966897A1 (en) * 2016-05-10 2017-11-10 Carbon Engineering Limited Partnership High temperature hydrator
US10178029B2 (en) 2016-05-11 2019-01-08 Mellanox Technologies Tlv Ltd. Forwarding of adaptive routing notifications
EP3459225B1 (en) * 2016-05-17 2020-09-23 Telefonaktiebolaget LM Ericsson (PUBL) Methods and apparatus for enabling live virtual machine (vm) migration in software-defined networking networks
US10129177B2 (en) 2016-05-23 2018-11-13 Cisco Technology, Inc. Inter-cloud broker for hybrid cloud networks
US10153973B2 (en) 2016-06-29 2018-12-11 Nicira, Inc. Installation of routing tables for logical router in route server mode
US10560320B2 (en) 2016-06-29 2020-02-11 Nicira, Inc. Ranking of gateways in cluster
US10200343B2 (en) * 2016-06-29 2019-02-05 Nicira, Inc. Implementing logical network security on a hardware switch
US10419550B2 (en) 2016-07-06 2019-09-17 Cisco Technology, Inc. Automatic service function validation in a virtual network environment
US10659283B2 (en) 2016-07-08 2020-05-19 Cisco Technology, Inc. Reducing ARP/ND flooding in cloud environment
WO2018013437A1 (en) * 2016-07-11 2018-01-18 Harmonic, Inc. Namespace routing
US10432532B2 (en) 2016-07-12 2019-10-01 Cisco Technology, Inc. Dynamically pinning micro-service to uplink port
US10382597B2 (en) 2016-07-20 2019-08-13 Cisco Technology, Inc. System and method for transport-layer level identification and isolation of container traffic
US10263898B2 (en) 2016-07-20 2019-04-16 Cisco Technology, Inc. System and method for implementing universal cloud classification (UCC) as a service (UCCaaS)
US10320664B2 (en) 2016-07-21 2019-06-11 Cisco Technology, Inc. Cloud overlay for operations administration and management
US10218616B2 (en) 2016-07-21 2019-02-26 Cisco Technology, Inc. Link selection for communication with a service function cluster
US10142346B2 (en) 2016-07-28 2018-11-27 Cisco Technology, Inc. Extension of a private cloud end-point group to a public cloud
US10225270B2 (en) 2016-08-02 2019-03-05 Cisco Technology, Inc. Steering of cloned traffic in a service function chain
US10218593B2 (en) 2016-08-23 2019-02-26 Cisco Technology, Inc. Identifying sources of packet drops in a service function chain environment
US10567344B2 (en) 2016-08-23 2020-02-18 Cisco Technology, Inc. Automatic firewall configuration based on aggregated cloud managed information
US10798073B2 (en) 2016-08-26 2020-10-06 Nicira, Inc. Secure key management protocol for distributed network encryption
US10341371B2 (en) 2016-08-31 2019-07-02 Nicira, Inc. Identifying and handling threats to data compute nodes in public cloud
US10193749B2 (en) 2016-08-27 2019-01-29 Nicira, Inc. Managed forwarding element executing in public cloud data compute node without overlay network
US10361969B2 (en) 2016-08-30 2019-07-23 Cisco Technology, Inc. System and method for managing chained services in a network environment
US10454758B2 (en) 2016-08-31 2019-10-22 Nicira, Inc. Edge node cluster network redundancy and fast convergence using an underlay anycast VTEP IP
CN107809387B (zh) * 2016-09-08 2020-11-06 华为技术有限公司 一种报文传输的方法、设备及网络系统
US10341236B2 (en) 2016-09-30 2019-07-02 Nicira, Inc. Anycast edge service gateways
US11895177B2 (en) 2016-09-30 2024-02-06 Wisconsin Alumni Research Foundation State extractor for middlebox management system
US10523592B2 (en) 2016-10-10 2019-12-31 Cisco Technology, Inc. Orchestration system for migrating user data and services based on user information
US10419394B2 (en) * 2016-10-24 2019-09-17 Nubeva, Inc. Providing scalable cloud-based security services
US10009801B1 (en) 2016-12-05 2018-06-26 Motorola Solutions, Inc. Systems and methods for forming an incident area network
US10609160B2 (en) * 2016-12-06 2020-03-31 Nicira, Inc. Performing context-rich attribute-based services on a host
US11044162B2 (en) 2016-12-06 2021-06-22 Cisco Technology, Inc. Orchestration of cloud and fog interactions
US10965621B2 (en) 2016-12-15 2021-03-30 At&T Intellectual Property I, L.P. Application-based multiple radio access technology and platform control using SDN
US10848432B2 (en) 2016-12-18 2020-11-24 Cisco Technology, Inc. Switch fabric based load balancing
US10326817B2 (en) 2016-12-20 2019-06-18 Cisco Technology, Inc. System and method for quality-aware recording in large scale collaborate clouds
US10212071B2 (en) 2016-12-21 2019-02-19 Nicira, Inc. Bypassing a load balancer in a return path of network traffic
US10742746B2 (en) 2016-12-21 2020-08-11 Nicira, Inc. Bypassing a load balancer in a return path of network traffic
US10237123B2 (en) 2016-12-21 2019-03-19 Nicira, Inc. Dynamic recovery from a split-brain failure in edge nodes
US10616045B2 (en) 2016-12-22 2020-04-07 Nicira, Inc. Migration of centralized routing components of logical router
US10200294B2 (en) 2016-12-22 2019-02-05 Mellanox Technologies Tlv Ltd. Adaptive routing based on flow-control credits
US10334029B2 (en) 2017-01-10 2019-06-25 Cisco Technology, Inc. Forming neighborhood groups from disperse cloud providers
US10552191B2 (en) 2017-01-26 2020-02-04 Cisco Technology, Inc. Distributed hybrid cloud orchestration model
US10320683B2 (en) 2017-01-30 2019-06-11 Cisco Technology, Inc. Reliable load-balancer using segment routing and real-time application monitoring
US11252079B2 (en) 2017-01-31 2022-02-15 Vmware, Inc. High performance software-defined core network
US10992558B1 (en) 2017-11-06 2021-04-27 Vmware, Inc. Method and apparatus for distributed data network traffic optimization
US10992568B2 (en) 2017-01-31 2021-04-27 Vmware, Inc. High performance software-defined core network
US10671571B2 (en) 2017-01-31 2020-06-02 Cisco Technology, Inc. Fast network performance in containerized environments for network function virtualization
US11706127B2 (en) 2017-01-31 2023-07-18 Vmware, Inc. High performance software-defined core network
US11121962B2 (en) 2017-01-31 2021-09-14 Vmware, Inc. High performance software-defined core network
US10673706B2 (en) * 2017-01-31 2020-06-02 Ca Technologies, Inc. Integrated infrastructure and application performance monitoring
US20200036624A1 (en) 2017-01-31 2020-01-30 The Mode Group High performance software-defined core network
US20180219765A1 (en) 2017-01-31 2018-08-02 Waltz Networks Method and Apparatus for Network Traffic Control Optimization
US10778528B2 (en) 2017-02-11 2020-09-15 Nicira, Inc. Method and system of connecting to a multipath hub in a cluster
US10574528B2 (en) 2017-02-11 2020-02-25 Nicira, Inc. Network multi-source inbound quality of service methods and systems
US10805239B2 (en) 2017-03-07 2020-10-13 Nicira, Inc. Visualization of path between logical network endpoints
US10225187B2 (en) 2017-03-22 2019-03-05 Cisco Technology, Inc. System and method for providing a bit indexed service chain
US10277535B2 (en) 2017-03-31 2019-04-30 Hewlett Packard Enterprise Development Lp Network switch systems including logical switches
US11005731B2 (en) 2017-04-05 2021-05-11 Cisco Technology, Inc. Estimating model parameters for automatic deployment of scalable micro services
US10257033B2 (en) 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
US10884807B2 (en) 2017-04-12 2021-01-05 Cisco Technology, Inc. Serverless computing and task scheduling
US10333855B2 (en) 2017-04-19 2019-06-25 Cisco Technology, Inc. Latency reduction in service function paths
US10554689B2 (en) 2017-04-28 2020-02-04 Cisco Technology, Inc. Secure communication session resumption in a service function chain
JP6585656B2 (ja) 2017-05-10 2019-10-02 株式会社ソニー・インタラクティブエンタテインメント 製造ライン用コンピュータシステム及びそのネットワーク設定方法
US10708138B2 (en) 2017-06-09 2020-07-07 Datera, Inc. System and method for an improved placement of storage resources on nodes in network
US10735275B2 (en) 2017-06-16 2020-08-04 Cisco Technology, Inc. Releasing and retaining resources for use in a NFV environment
US10798187B2 (en) 2017-06-19 2020-10-06 Cisco Technology, Inc. Secure service chaining
US10523539B2 (en) 2017-06-22 2019-12-31 Nicira, Inc. Method and system of resiliency in cloud-delivered SD-WAN
US10439877B2 (en) 2017-06-26 2019-10-08 Cisco Technology, Inc. Systems and methods for enabling wide area multicast domain name system
US10382274B2 (en) 2017-06-26 2019-08-13 Cisco Technology, Inc. System and method for wide area zero-configuration network auto configuration
US10546018B2 (en) * 2017-06-29 2020-01-28 Arista Networks, Inc. System and method of coalescing writes to a hardware table in a non-disruptive fashion
US10637800B2 (en) 2017-06-30 2020-04-28 Nicira, Inc Replacement of logical network addresses with physical network addresses
US10681000B2 (en) 2017-06-30 2020-06-09 Nicira, Inc. Assignment of unique physical network addresses for logical network addresses
US10397271B2 (en) 2017-07-11 2019-08-27 Cisco Technology, Inc. Distributed denial of service mitigation for web conferencing
US10432513B2 (en) 2017-07-14 2019-10-01 Nicira, Inc. Asymmetric network elements sharing an anycast address
US10873473B2 (en) 2017-07-17 2020-12-22 Nicira, Inc. Distributed multicast logical router
EP3656099B1 (en) * 2017-07-17 2022-12-28 Nicira Inc. Distributed multicast logical router
US10892940B2 (en) 2017-07-21 2021-01-12 Cisco Technology, Inc. Scalable statistics and analytics mechanisms in cloud networking
US10673698B2 (en) 2017-07-21 2020-06-02 Cisco Technology, Inc. Service function chain optimization using live testing
US10425288B2 (en) 2017-07-21 2019-09-24 Cisco Technology, Inc. Container telemetry in data center environments with blade servers and switches
US10601693B2 (en) 2017-07-24 2020-03-24 Cisco Technology, Inc. System and method for providing scalable flow monitoring in a data center fabric
US10541866B2 (en) 2017-07-25 2020-01-21 Cisco Technology, Inc. Detecting and resolving multicast traffic performance issues
US11165863B1 (en) 2017-08-04 2021-11-02 128 Technology, Inc. Network neighborhoods for establishing communication relationships between communication interfaces in an administrative domain
US11063856B2 (en) 2017-08-24 2021-07-13 Cisco Technology, Inc. Virtual network function monitoring in a network function virtualization deployment
US10491516B2 (en) 2017-08-24 2019-11-26 Nicira, Inc. Packet communication between logical networks and public cloud service providers native networks using a single network interface and a single routing table
US10567482B2 (en) 2017-08-24 2020-02-18 Nicira, Inc. Accessing endpoints in logical networks and public cloud service providers native networks using a single network interface and a single routing table
EP3673627B1 (en) 2017-08-27 2023-09-13 Nicira, Inc. Performing in-line service in public cloud
US10791065B2 (en) 2017-09-19 2020-09-29 Cisco Technology, Inc. Systems and methods for providing container attributes as part of OAM techniques
US11533290B2 (en) 2017-09-28 2022-12-20 Nicira, Inc. Systems and methods for providing multi-tenant dynamic host configuration protocol services
US10992636B2 (en) 2017-09-29 2021-04-27 Cisco Technology, Inc. Mitigating network/hardware address explosion in network devices
US10805114B2 (en) 2017-10-02 2020-10-13 Vmware, Inc. Processing data messages of a virtual network that are sent to and received from external service machines
US10959098B2 (en) 2017-10-02 2021-03-23 Vmware, Inc. Dynamically specifying multiple public cloud edge nodes to connect to an external multi-computer node
US10999165B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Three tiers of SaaS providers for deploying compute and network infrastructure in the public cloud
US11115480B2 (en) 2017-10-02 2021-09-07 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US11089111B2 (en) 2017-10-02 2021-08-10 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US10999100B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider
US10965598B1 (en) 2017-10-04 2021-03-30 Cisco Technology, Inc. Load balancing in a service chain
US11082312B2 (en) 2017-10-04 2021-08-03 Cisco Technology, Inc. Service chaining segmentation analytics
US10965596B2 (en) 2017-10-04 2021-03-30 Cisco Technology, Inc. Hybrid services insertion
US10608887B2 (en) 2017-10-06 2020-03-31 Nicira, Inc. Using packet tracing tool to automatically execute packet capture operations
US11018981B2 (en) 2017-10-13 2021-05-25 Cisco Technology, Inc. System and method for replication container performance and policy validation using real time network traffic
US10353800B2 (en) 2017-10-18 2019-07-16 Cisco Technology, Inc. System and method for graph based monitoring and management of distributed systems
US10541893B2 (en) 2017-10-25 2020-01-21 Cisco Technology, Inc. System and method for obtaining micro-service telemetry data
US10805181B2 (en) 2017-10-29 2020-10-13 Nicira, Inc. Service operation chaining
US10587507B2 (en) 2017-11-09 2020-03-10 International Business Machines Corporation Routing between software defined networks and physical networks
US11223514B2 (en) 2017-11-09 2022-01-11 Nicira, Inc. Method and system of a dynamic high-availability mode based on current wide area network connectivity
CN109787877B (zh) * 2017-11-10 2020-12-25 智邦科技股份有限公司 箱型交换机、网络接口卡、及封包转送的管理方法
CN108011825B (zh) * 2017-11-10 2020-07-28 深圳市泰信通信息技术有限公司 一种基于软件定义网络的多网络设备互联现实方法及系统
US11481362B2 (en) 2017-11-13 2022-10-25 Cisco Technology, Inc. Using persistent memory to enable restartability of bulk load transactions in cloud databases
US10511459B2 (en) 2017-11-14 2019-12-17 Nicira, Inc. Selection of managed forwarding element for bridge spanning multiple datacenters
US10374827B2 (en) 2017-11-14 2019-08-06 Nicira, Inc. Identifier that maps to different networks at different datacenters
US11012420B2 (en) 2017-11-15 2021-05-18 Nicira, Inc. Third-party service chaining using packet encapsulation in a flow-based forwarding element
US10601705B2 (en) 2017-12-04 2020-03-24 Nicira, Inc. Failover of centralized routers in public cloud logical networks
US10862753B2 (en) 2017-12-04 2020-12-08 Nicira, Inc. High availability for stateful services in public cloud logical networks
EP3913861B1 (en) * 2017-12-05 2023-04-19 Google LLC Automated network change system
US10705882B2 (en) 2017-12-21 2020-07-07 Cisco Technology, Inc. System and method for resource placement across clouds for data intensive workloads
US11595474B2 (en) 2017-12-28 2023-02-28 Cisco Technology, Inc. Accelerating data replication using multicast and non-volatile memory enabled nodes
US10659252B2 (en) 2018-01-26 2020-05-19 Nicira, Inc Specifying and utilizing paths through a network
US10797910B2 (en) 2018-01-26 2020-10-06 Nicira, Inc. Specifying and utilizing paths through a network
US10904202B2 (en) 2018-02-09 2021-01-26 Red Hat, Inc. Packet routing using a network device
US10644995B2 (en) 2018-02-14 2020-05-05 Mellanox Technologies Tlv Ltd. Adaptive routing in a box
US10454824B2 (en) 2018-03-01 2019-10-22 Nicira, Inc. Generic communication channel for information exchange between a hypervisor and a virtual machine
CN108494835B (zh) * 2018-03-08 2020-11-03 浪潮云信息技术股份公司 基于Raft算法的分布式动态路由的实现方法及系统
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US10728174B2 (en) 2018-03-27 2020-07-28 Nicira, Inc. Incorporating layer 2 service between two interfaces of gateway device
US10511534B2 (en) 2018-04-06 2019-12-17 Cisco Technology, Inc. Stateless distributed load-balancing
US10728361B2 (en) 2018-05-29 2020-07-28 Cisco Technology, Inc. System for association of customer information across subscribers
US10666612B2 (en) 2018-06-06 2020-05-26 Cisco Technology, Inc. Service chains for inter-cloud traffic
US10904322B2 (en) 2018-06-15 2021-01-26 Cisco Technology, Inc. Systems and methods for scaling down cloud-based servers handling secure connections
US10764266B2 (en) 2018-06-19 2020-09-01 Cisco Technology, Inc. Distributed authentication and authorization for rapid scaling of containerized services
US11019083B2 (en) 2018-06-20 2021-05-25 Cisco Technology, Inc. System for coordinating distributed website analysis
US11343229B2 (en) 2018-06-28 2022-05-24 Vmware, Inc. Managed forwarding element detecting invalid packet addresses
US10819571B2 (en) 2018-06-29 2020-10-27 Cisco Technology, Inc. Network traffic optimization using in-situ notification system
US10819677B2 (en) * 2018-07-16 2020-10-27 Amazon Technologies, Inc. Address migration service
US10904342B2 (en) 2018-07-30 2021-01-26 Cisco Technology, Inc. Container networking using communication tunnels
US10491466B1 (en) 2018-08-24 2019-11-26 Vmware, Inc. Intelligent use of peering in public cloud
US11196591B2 (en) 2018-08-24 2021-12-07 Vmware, Inc. Centralized overlay gateway in public cloud
US11374794B2 (en) 2018-08-24 2022-06-28 Vmware, Inc. Transitive routing in public cloud
US10742686B2 (en) 2018-08-29 2020-08-11 Cisco Technology, Inc. Enforcing network endpoint policies in a cloud-based environment using a covert namespace
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US10944673B2 (en) 2018-09-02 2021-03-09 Vmware, Inc. Redirection of data messages at logical network gateway
CN109343974A (zh) * 2018-09-14 2019-02-15 珠海国芯云科技有限公司 基于容器的虚拟桌面的进程间通信方法及装置
US10644895B1 (en) * 2018-10-26 2020-05-05 Cisco Technology, Inc. Recovering multicast data traffic during spine reload in software defined networks
US12106132B2 (en) 2018-11-20 2024-10-01 Amazon Technologies, Inc. Provider network service extensions
US10833949B2 (en) * 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US10931560B2 (en) 2018-11-23 2021-02-23 Vmware, Inc. Using route type to determine routing protocol behavior
KR20210095890A (ko) * 2018-11-26 2021-08-03 아르쿠스 인크. 세분화된 네트워크 엘리먼트를 포함하는 로직 라우터
US10797998B2 (en) 2018-12-05 2020-10-06 Vmware, Inc. Route server for distributed routers using hierarchical routing protocol
US10938788B2 (en) 2018-12-12 2021-03-02 Vmware, Inc. Static routes for policy-based VPN
US10951527B2 (en) 2018-12-28 2021-03-16 Juniper Networks, Inc. Switch fabric packet flow reordering
US10848345B2 (en) * 2018-12-31 2020-11-24 Hughes Network Systems, Llc Multi-protocol encapsulation traffic acceleration and optimization
US11005724B1 (en) 2019-01-06 2021-05-11 Mellanox Technologies, Ltd. Network topology having minimal number of long connections among groups of network elements
CN109558367B (zh) * 2019-01-10 2022-10-28 西南电子技术研究所(中国电子科技集团公司第十研究所) 多总线处理器mhal路由方法
US11042397B2 (en) 2019-02-22 2021-06-22 Vmware, Inc. Providing services with guest VM mobility
CN111726299B (zh) * 2019-03-18 2023-05-09 华为技术有限公司 流量均衡方法及装置
US11310170B2 (en) 2019-08-27 2022-04-19 Vmware, Inc. Configuring edge nodes outside of public clouds to use routes defined through the public clouds
US11159343B2 (en) 2019-08-30 2021-10-26 Vmware, Inc. Configuring traffic optimization using distributed edge services
US10855644B1 (en) 2019-09-09 2020-12-01 Vmware, Inc. Address resolution protocol entry verification
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11044190B2 (en) 2019-10-28 2021-06-22 Vmware, Inc. Managing forwarding elements at edge nodes connected to a virtual network
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
US11870692B2 (en) * 2019-11-20 2024-01-09 Arris Enterprises Llc Dynamic port forwarding
US11394640B2 (en) 2019-12-12 2022-07-19 Vmware, Inc. Collecting and analyzing data regarding flows associated with DPI parameters
US11489783B2 (en) 2019-12-12 2022-11-01 Vmware, Inc. Performing deep packet inspection in a software defined wide area network
US11539718B2 (en) 2020-01-10 2022-12-27 Vmware, Inc. Efficiently performing intrusion detection
US11223494B2 (en) 2020-01-13 2022-01-11 Vmware, Inc. Service insertion for multicast traffic at boundary
US11283699B2 (en) 2020-01-17 2022-03-22 Vmware, Inc. Practical overlay network latency measurement in datacenter
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11153406B2 (en) 2020-01-20 2021-10-19 Vmware, Inc. Method of network performance visualization of service function chains
US11689959B2 (en) 2020-01-24 2023-06-27 Vmware, Inc. Generating path usability state for different sub-paths offered by a network link
WO2021157079A1 (ja) * 2020-02-07 2021-08-12 日本電信電話株式会社 信号転送システム、末端機能装置、代理転送エージェント装置、及び、信号転送方法
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
US11303557B2 (en) 2020-04-06 2022-04-12 Vmware, Inc. Tunnel endpoint group records for inter-datacenter traffic
US11088902B1 (en) 2020-04-06 2021-08-10 Vmware, Inc. Synchronization of logical network state between global and local managers
US11777793B2 (en) 2020-04-06 2023-10-03 Vmware, Inc. Location criteria for security groups
US11496437B2 (en) * 2020-04-06 2022-11-08 Vmware, Inc. Selective ARP proxy
US11799726B2 (en) 2020-04-06 2023-10-24 Vmware, Inc. Multi-site security groups
US11088919B1 (en) 2020-04-06 2021-08-10 Vmware, Inc. Data structure for defining multi-site logical network
US11212356B2 (en) 2020-04-06 2021-12-28 Vmware, Inc. Providing services at the edge of a network using selected virtual tunnel interfaces
US11258713B2 (en) 2020-04-06 2022-02-22 Vmware, Inc. Policy-based proximity routing
US11689455B2 (en) 2020-05-28 2023-06-27 Oracle International Corporation Loop prevention in virtual layer 2 networks
US11245641B2 (en) 2020-07-02 2022-02-08 Vmware, Inc. Methods and apparatus for application aware hub clustering techniques for a hyper scale SD-WAN
CN116235482A (zh) * 2020-07-14 2023-06-06 甲骨文国际公司 虚拟层2网络
US11606294B2 (en) 2020-07-16 2023-03-14 Vmware, Inc. Host computer configured to facilitate distributed SNAT service
US11616755B2 (en) * 2020-07-16 2023-03-28 Vmware, Inc. Facilitating distributed SNAT service
US11611613B2 (en) 2020-07-24 2023-03-21 Vmware, Inc. Policy-based forwarding to a load balancer of a load balancing cluster
US11451413B2 (en) 2020-07-28 2022-09-20 Vmware, Inc. Method for advertising availability of distributed gateway service and machines at host computer
US11902050B2 (en) 2020-07-28 2024-02-13 VMware LLC Method for providing distributed gateway service at host computer
US11570090B2 (en) 2020-07-29 2023-01-31 Vmware, Inc. Flow tracing operation in container cluster
US11558426B2 (en) 2020-07-29 2023-01-17 Vmware, Inc. Connection tracking for container cluster
US11196628B1 (en) 2020-07-29 2021-12-07 Vmware, Inc. Monitoring container clusters
US11709710B2 (en) 2020-07-30 2023-07-25 Vmware, Inc. Memory allocator for I/O operations
US11575594B2 (en) 2020-09-10 2023-02-07 Mellanox Technologies, Ltd. Deadlock-free rerouting for resolving local link failures using detour paths
US11601474B2 (en) 2020-09-28 2023-03-07 Vmware, Inc. Network virtualization infrastructure with divided user responsibilities
US11411911B2 (en) 2020-10-26 2022-08-09 Mellanox Technologies, Ltd. Routing across multiple subnetworks using address mapping
US11444865B2 (en) 2020-11-17 2022-09-13 Vmware, Inc. Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN
US11575600B2 (en) 2020-11-24 2023-02-07 Vmware, Inc. Tunnel-less SD-WAN
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11601356B2 (en) 2020-12-29 2023-03-07 Vmware, Inc. Emulating packet flows to assess network links for SD-WAN
WO2022146585A1 (en) * 2020-12-30 2022-07-07 Oracle International Corporation Layer-2 networking using access control lists in a virtualized cloud environment
US11757773B2 (en) 2020-12-30 2023-09-12 Oracle International Corporation Layer-2 networking storm control in a virtualized cloud environment
US11736436B2 (en) 2020-12-31 2023-08-22 Vmware, Inc. Identifying routes with indirect addressing in a datacenter
US11336533B1 (en) 2021-01-08 2022-05-17 Vmware, Inc. Network visualization of correlations between logical elements and associated physical elements
US11792127B2 (en) 2021-01-18 2023-10-17 Vmware, Inc. Network-aware load balancing
US11979325B2 (en) 2021-01-28 2024-05-07 VMware LLC Dynamic SD-WAN hub cluster scaling with machine learning
US11671355B2 (en) 2021-02-05 2023-06-06 Oracle International Corporation Packet flow control in a header of a packet
US11777897B2 (en) 2021-02-13 2023-10-03 Oracle International Corporation Cloud infrastructure resources for connecting a service provider private network to a customer private network
US11805101B2 (en) 2021-04-06 2023-10-31 Vmware, Inc. Secured suppression of address discovery messages
US11582144B2 (en) 2021-05-03 2023-02-14 Vmware, Inc. Routing mesh to provide alternate routes through SD-WAN edge forwarding nodes based on degraded operational states of SD-WAN hubs
US12009987B2 (en) 2021-05-03 2024-06-11 VMware LLC Methods to support dynamic transit paths through hub clustering across branches in SD-WAN
US11729065B2 (en) 2021-05-06 2023-08-15 Vmware, Inc. Methods for application defined virtual network service among multiple transport in SD-WAN
US11489720B1 (en) 2021-06-18 2022-11-01 Vmware, Inc. Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics
US12015536B2 (en) 2021-06-18 2024-06-18 VMware LLC Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds
US11870682B2 (en) 2021-06-22 2024-01-09 Mellanox Technologies, Ltd. Deadlock-free local rerouting for handling multiple local link failures in hierarchical network topologies
US11895010B2 (en) 2021-06-29 2024-02-06 VMware LLC Active-active support of multicast streams in virtualized environment
US11595296B2 (en) 2021-06-29 2023-02-28 Vmware, Inc. Active-active support of multicast streams in virtualized environment
US11687210B2 (en) 2021-07-05 2023-06-27 Vmware, Inc. Criteria-based expansion of group nodes in a network topology visualization
US12047282B2 (en) 2021-07-22 2024-07-23 VMware LLC Methods for smart bandwidth aggregation based dynamic overlay selection among preferred exits in SD-WAN
US11375005B1 (en) 2021-07-24 2022-06-28 Vmware, Inc. High availability solutions for a secure access service edge application
US11711278B2 (en) 2021-07-24 2023-07-25 Vmware, Inc. Visualization of flow trace operation across multiple sites
US11706109B2 (en) 2021-09-17 2023-07-18 Vmware, Inc. Performance of traffic monitoring actions
US11943146B2 (en) 2021-10-01 2024-03-26 VMware LLC Traffic prioritization in SD-WAN
US11784926B2 (en) 2021-11-22 2023-10-10 Vmware, Inc. Optimized processing of multicast data messages in a host
US11765103B2 (en) 2021-12-01 2023-09-19 Mellanox Technologies, Ltd. Large-scale network with high port utilization
US20230262464A1 (en) * 2022-02-16 2023-08-17 Cisco Technology, Inc. Client mac source address randomization by mesh nodes in wireless mesh networks
CN114629790B (zh) * 2022-03-11 2023-06-06 苏州浪潮智能科技有限公司 一种服务器网络集群配置方法及系统
US11909815B2 (en) 2022-06-06 2024-02-20 VMware LLC Routing based on geolocation costs
US11711339B1 (en) 2022-06-22 2023-07-25 International Business Machines Corporation Network plugin for multiple network interfaces
US12107722B2 (en) 2022-07-20 2024-10-01 VMware LLC Sharing network manager between multiple tenants
US11743191B1 (en) 2022-07-25 2023-08-29 Vmware, Inc. Load balancing over tunnel endpoint groups
CN115426313B (zh) * 2022-08-31 2023-08-18 中电云数智科技有限公司 一种基于ovn虚机网络的nat优化装置和方法
US12057993B1 (en) 2023-03-27 2024-08-06 VMware LLC Identifying and remediating anomalies in a self-healing network
US12034587B1 (en) 2023-03-27 2024-07-09 VMware LLC Identifying and remediating anomalies in a self-healing network

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010115060A2 (en) * 2009-04-01 2010-10-07 Nicira Networks Method and apparatus for implementing and managing virtual switches
WO2011043379A1 (ja) * 2009-10-06 2011-04-14 日本電気株式会社 ネットワークシステムとコントローラと方法とプログラム
WO2011043416A1 (ja) * 2009-10-07 2011-04-14 日本電気株式会社 情報システム、制御サーバ、仮想ネットワーク管理方法およびプログラム
JP2011081588A (ja) * 2009-10-07 2011-04-21 Nec Corp コンピュータシステム、及びコンピュータシステムのメンテナンス方法
WO2011093228A1 (ja) * 2010-01-29 2011-08-04 日本電気株式会社 フロントエンドシステム、フロントエンド処理方法

Family Cites Families (378)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06501118A (ja) 1990-09-17 1994-01-27 ケーブルトロン・システムス・インコーポレーテッド モデル準拠のインテリジェンスを使用するネットワーク管理システム
JPH06250869A (ja) 1993-03-01 1994-09-09 Hitachi Ltd 分散制御システム
JPH0779233A (ja) 1993-06-29 1995-03-20 Synoptics Commun Inc トポロジを確定する装置及びトポロジ情報を通信する方法及び装置
SE9402059D0 (sv) 1994-06-13 1994-06-13 Ellemtel Utvecklings Ab Sätt och anordning vid telekommunikation
US5751967A (en) 1994-07-25 1998-05-12 Bay Networks Group, Inc. Method and apparatus for automatically configuring a network device to support a virtual network
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US6035105A (en) 1996-01-02 2000-03-07 Cisco Technology, Inc. Multiple VLAN architecture system
JP3684262B2 (ja) * 1996-01-17 2005-08-17 富士通株式会社 ネットワークシステム及び集線装置
US6108304A (en) 1996-03-08 2000-08-22 Abe; Hajime Packet switching network, packet switching equipment, and network management equipment
JPH09307587A (ja) 1996-05-09 1997-11-28 Fujitsu Ltd 交換機
CA2213984A1 (en) * 1996-08-22 1998-02-22 Norand Corporation Enhanced mobility and address resolution in a wireless premises based network
US6295299B1 (en) 1997-08-29 2001-09-25 Extreme Networks, Inc. Data path architecture for a LAN switch
DE69837872T2 (de) 1997-09-19 2008-04-10 Hitachi, Ltd. Vorrichtung und Verfahren zur Verbindungsvermittlung und -steuerung
US6456624B1 (en) 1997-10-29 2002-09-24 Enterasys Networks, Inc. Network address resolve blocker
JP3609256B2 (ja) 1998-05-19 2005-01-12 株式会社日立製作所 ネットワーク管理装置,ノード装置及びネットワーク管理システム
US6658002B1 (en) * 1998-06-30 2003-12-02 Cisco Technology, Inc. Logical operation unit for packet processing
US6424659B2 (en) 1998-07-17 2002-07-23 Network Equipment Technologies, Inc. Multi-layer switching apparatus and method
US6970913B1 (en) * 1999-07-02 2005-11-29 Cisco Technology, Inc. Load balancing using distributed forwarding agents with application based feedback for different virtual machines
US6650641B1 (en) * 1999-07-02 2003-11-18 Cisco Technology, Inc. Network address translation using a forwarding agent
US6963585B1 (en) 1999-10-21 2005-11-08 International Business Machines Corporation Method and system for establishing a virtual path capability in a frame relay network
US6680934B1 (en) 1999-12-02 2004-01-20 Nortel Networks Limited System, device and method for expediting control flow in a communication system
US20020013858A1 (en) * 2000-02-09 2002-01-31 Anderson Keith R. ARP caching apparatus and method
US6880089B1 (en) 2000-03-31 2005-04-12 Avaya Technology Corp. Firewall clustering for multiple network servers
AU2001271263A1 (en) * 2000-06-30 2002-01-14 Net2Phone System, method, and computer program product for resolving addressing in a network including a network address translator
US20020093952A1 (en) 2000-06-30 2002-07-18 Gonda Rumi Sheryar Method for managing circuits in a multistage cross connect
US6836462B1 (en) * 2000-08-30 2004-12-28 Cisco Technology, Inc. Distributed, rule based packet redirection
CN1592898A (zh) * 2000-09-01 2005-03-09 Tut系统公司 一种为数据通信设备预编译配置信息的方法和系统
US7389358B1 (en) 2000-09-13 2008-06-17 Fortinet, Inc. Distributed virtual system to support managed, network-based services
US7865596B2 (en) * 2000-11-02 2011-01-04 Oracle America, Inc. Switching system for managing storage in digital networks
US8949471B2 (en) * 2000-11-02 2015-02-03 Oracle America, Inc. TCP/UDP acceleration
US6973023B1 (en) 2000-12-30 2005-12-06 Cisco Technology, Inc. Method for routing information over a network employing centralized control
US7260648B2 (en) 2001-01-25 2007-08-21 Ericsson, Inc. Extension of address resolution protocol (ARP) for internet protocol (IP) virtual networks
US6999454B1 (en) 2001-02-09 2006-02-14 Nortel Networks Limited Information routing system and apparatus
US6785843B1 (en) 2001-02-23 2004-08-31 Mcrae Andrew Data plane restart without state change in a control plane of an intermediate network node
US7069337B2 (en) 2001-03-20 2006-06-27 Mci, Inc. Policy-based synchronization of per-class resources between routers in a data network
US7209439B2 (en) 2001-03-20 2007-04-24 Mci, Llc Pool-based resource management in a data network
JP3945297B2 (ja) * 2001-04-24 2007-07-18 株式会社日立製作所 システム及び管理システム
US7240106B2 (en) 2001-04-25 2007-07-03 Hewlett-Packard Development Company, L.P. System and method for remote discovery and configuration of a network device
US20020186698A1 (en) * 2001-06-12 2002-12-12 Glen Ceniza System to map remote lan hosts to local IP addresses
EP1267529B1 (en) * 2001-06-14 2007-11-14 Hitachi Ltd. Data packets acknowledgment system
US7343410B2 (en) 2001-06-28 2008-03-11 Finisar Corporation Automated creation of application data paths in storage area networks
US7126944B2 (en) 2001-07-05 2006-10-24 Intel Corporation Routing packets across multiple forwarding elements
TW576061B (en) * 2001-08-13 2004-02-11 Via Tech Inc Device and method for load balancing of packet switching
JP2003069609A (ja) 2001-08-23 2003-03-07 Fujitsu Ltd 仮想私設網サービスを提供するシステム
US7085827B2 (en) * 2001-09-20 2006-08-01 Hitachi, Ltd. Integrated service management system for remote customer support
JP3879471B2 (ja) 2001-10-10 2007-02-14 株式会社日立製作所 計算機資源割当方法
US7200144B2 (en) 2001-10-18 2007-04-03 Qlogic, Corp. Router and methods using network addresses for virtualization
US7133365B2 (en) 2001-11-02 2006-11-07 Internap Network Services Corporation System and method to provide routing control of information over networks
US7433948B2 (en) 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US6895429B2 (en) 2001-12-28 2005-05-17 Network Appliance, Inc. Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses
US7801155B2 (en) 2002-03-01 2010-09-21 Verizon Business Global Llc Resource allocation in virtual routers
US6941487B1 (en) 2002-03-07 2005-09-06 Riverstone Networks, Inc. Method, system, and computer program product for providing failure protection in a network node
JP3904968B2 (ja) 2002-04-19 2007-04-11 日本電信電話株式会社 Vpnシステムおよびルータ
US7197572B2 (en) 2002-05-06 2007-03-27 Qlogic, Corporation System and method for implementing logical switches in a network system
US7532604B2 (en) * 2002-05-08 2009-05-12 Siemens Canada Limited Local area network with wireless client freedom of movement
US20030223379A1 (en) 2002-05-28 2003-12-04 Xuguang Yang Method and system for inter-domain loop protection using a hierarchy of loop resolving protocols
US7340535B1 (en) * 2002-06-04 2008-03-04 Fortinet, Inc. System and method for controlling routing in a virtual router system
US6907039B2 (en) 2002-07-20 2005-06-14 Redback Networks Inc. Method and apparatus for routing and forwarding between virtual routers within a single network element
US7120728B2 (en) * 2002-07-31 2006-10-10 Brocade Communications Systems, Inc. Hardware-based translating virtualization switch
US7349382B2 (en) * 2002-08-10 2008-03-25 Cisco Technology, Inc. Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base
FR2844415B1 (fr) 2002-09-05 2005-02-11 At & T Corp Systeme pare-feu pour interconnecter deux reseaux ip geres par deux entites administratives differentes
US7680086B2 (en) * 2002-09-09 2010-03-16 Siemens Canada Limited Wireless local area network with clients having extended freedom of movement
US20040131059A1 (en) * 2002-09-19 2004-07-08 Ram Ayyakad Single-pass packet scan
US20040066782A1 (en) * 2002-09-23 2004-04-08 Nassar Ayman Esam System, method and apparatus for sharing and optimizing packet services nodes
JP4444834B2 (ja) * 2002-10-04 2010-03-31 テレフオンアクチーボラゲット エル エム エリクソン(パブル) アクセスネットワークに接続されるホストの分離
US20040073659A1 (en) 2002-10-15 2004-04-15 Carl Rajsic Method and apparatus for managing nodes in a network
US20040098505A1 (en) 2002-11-20 2004-05-20 Clemmensen Daniel G. Forwarding system with multiple logical sub-system functionality
US7224668B1 (en) * 2002-11-27 2007-05-29 Cisco Technology, Inc. Control plane security and traffic flow management
JP2004287811A (ja) * 2003-03-20 2004-10-14 Fujitsu Ltd データ処理回路
JP2004304371A (ja) * 2003-03-28 2004-10-28 Fujitsu Ltd レイヤ2のスイッチング装置
JP4157409B2 (ja) 2003-03-31 2008-10-01 富士通株式会社 仮想パス構築装置および仮想パス構築方法
US7283473B2 (en) 2003-04-10 2007-10-16 International Business Machines Corporation Apparatus, system and method for providing multiple logical channel adapters within a single physical channel adapter in a system area network
US8473620B2 (en) * 2003-04-14 2013-06-25 Riverbed Technology, Inc. Interception of a cloud-based communication connection
US20040210663A1 (en) * 2003-04-15 2004-10-21 Paul Phillips Object-aware transport-layer network processing engine
US7792987B1 (en) 2003-04-21 2010-09-07 Juniper Networks, Inc. Supporting virtual private networks using a first network topology for forwarding and a subset of the first network topology or a smaller topology for signaling
US7710874B2 (en) 2003-06-04 2010-05-04 International Business Machines Corporation System and method for automatic management of many computer data processing system pipes
JP2004364141A (ja) * 2003-06-06 2004-12-24 Hitachi Communication Technologies Ltd Ipアドレス変換装置およびパケット転送装置
US20040252722A1 (en) * 2003-06-13 2004-12-16 Samsung Electronics Co., Ltd. Apparatus and method for implementing VLAN bridging and a VPN in a distributed architecture router
US7715380B2 (en) 2003-06-19 2010-05-11 Cisco Technology, Inc. Apparatus and methods for handling shared services through virtual route forwarding (VRF)-aware-NAT
ATE373913T1 (de) 2003-06-24 2007-10-15 Research In Motion Ltd Serialisierung von eine verteiltenapplikation einer router
US7356818B2 (en) 2003-06-24 2008-04-08 International Business Machines Corporation Virtual machine communicating to external device without going through other virtual machines by using a list of IP addresses managed only by a single virtual machine monitor
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7463579B2 (en) 2003-07-11 2008-12-09 Nortel Networks Limited Routed split multilink trunking
US20050018669A1 (en) 2003-07-25 2005-01-27 International Business Machines Corporation Infiniband subnet management queue pair emulation for multiple logical ports on a single physical port
US7697527B2 (en) 2003-07-30 2010-04-13 Nortel Networks Limited Method and apparatus for direct frame switching using frame contained destination information
US20050047412A1 (en) * 2003-08-25 2005-03-03 Susan Hares Establishment and enforcement of policies in packet-switched networks
US7366181B2 (en) 2003-09-06 2008-04-29 Fujitsu Limited Virtual private network (VPN) with channelized ethernet over sonet (EoS) interface and method
US7342916B2 (en) 2003-09-10 2008-03-11 Intel Corporation Method, apparatus and system for optimizing routing of mobile IP packets
US7424709B2 (en) * 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US7178052B2 (en) * 2003-09-18 2007-02-13 Cisco Technology, Inc. High availability virtual switch
US8009556B2 (en) 2003-10-17 2011-08-30 Ip Infusion, Inc. System and method for providing redundant routing capabilities for a network node
US7555002B2 (en) 2003-11-06 2009-06-30 International Business Machines Corporation Infiniband general services queue pair virtualization for multiple logical ports on a single physical port
US8146148B2 (en) 2003-11-19 2012-03-27 Cisco Technology, Inc. Tunneled security groups
US7672302B2 (en) * 2003-11-21 2010-03-02 Samsung Electronics Co., Ltd. Router using switching-before-routing packet processing and method of operation
US8095640B2 (en) 2003-12-12 2012-01-10 Alcatel Lucent Distributed architecture for real-time flow measurement at the network domain level
US7450598B2 (en) * 2003-12-15 2008-11-11 At&T Intellectual Property I, L.P. System and method to provision MPLS/VPN network
US7478173B1 (en) 2003-12-18 2009-01-13 Wmware, Inc. Method and system for sharing a network connection in a virtual computer system
ES2388667T3 (es) 2003-12-22 2012-10-17 Telefonaktiebolaget Lm Ericsson (Publ) Control de caudales de paquetes de comunicaciones móviles
CN100384172C (zh) * 2004-01-20 2008-04-23 华为技术有限公司 基于网络的虚拟专用网中保证服务质量的系统及其方法
US7391771B2 (en) 2004-01-23 2008-06-24 Metro Packet Systems Inc. Method of sending information through a tree and ring topology of a network system
US7633955B1 (en) * 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
US8838743B2 (en) * 2004-02-13 2014-09-16 Intel Corporation Apparatus and method for a dynamically extensible virtual switch
KR101068368B1 (ko) * 2004-02-23 2011-09-28 엘지에릭슨 주식회사 차세대 네트워크에서의 소프트스위치 다중화 시스템 및다중화 방법
JP4382528B2 (ja) * 2004-02-27 2009-12-16 富士通株式会社 マルチキャストネットワーク装置,マルチキャストネットワークシステムおよびマルチキャスト方法
US20050251856A1 (en) * 2004-03-11 2005-11-10 Aep Networks Network access using multiple authentication realms
US8161270B1 (en) * 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US7822032B1 (en) * 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US8566946B1 (en) * 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US8539582B1 (en) * 2004-04-01 2013-09-17 Fireeye, Inc. Malware containment and security analysis on connection
US20050220096A1 (en) 2004-04-06 2005-10-06 Robert Friskney Traffic engineering in frame-based carrier networks
US7742398B1 (en) 2004-04-12 2010-06-22 Azul Systems, Inc. Information redirection
US7401355B2 (en) * 2004-04-30 2008-07-15 Sun Microsystems Firewall load balancing using a single physical device
CN101411156B (zh) 2004-05-12 2011-04-20 阿尔卡特朗讯 对网络入侵者的自动阻止
US20060031432A1 (en) 2004-05-21 2006-02-09 Bea Systens, Inc. Service oriented architecture with message processing pipelines
CN100512123C (zh) * 2004-06-23 2009-07-08 四川南山之桥微电子有限公司 同一芯片上实现交换、路由、数据过滤及防火墙的方法
US7296092B2 (en) * 2004-06-30 2007-11-13 Nokia, Inc. Apparatus for inter-domain communications including a virtual switch for routing data packets between virtual interfaces of the virtual switch
US7808983B2 (en) * 2004-07-08 2010-10-05 Cisco Technology, Inc. Network device architecture for centralized packet processing
ATE387050T1 (de) 2004-08-02 2008-03-15 Alcatel Lucent Gemeinsam genutzte ressourcen in einer multimanager-umgebung
US7706302B2 (en) 2004-09-14 2010-04-27 Alcatel Lucent Optimization of routing forwarding database in a network processor
US7420728B2 (en) 2004-09-27 2008-09-02 Idc, Llc Methods of fabricating interferometric modulators by selectively removing a material
GB2419701A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructure with dynamic control of mapping
GB2419703A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Isolated virtual overlay infrastructures each having an interface to control interaction with others
US8996722B2 (en) 2004-11-01 2015-03-31 Alcatel Lucent Softrouter feature server
US9014181B2 (en) 2004-11-01 2015-04-21 Alcatel Lucent Softrouter separate control network
US8068408B2 (en) 2004-11-01 2011-11-29 Alcatel Lucent Softrouter protocol disaggregation
US8458467B2 (en) 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
US8285907B2 (en) * 2004-12-10 2012-10-09 Intel Corporation Packet processing in switched fabric networks
DE602004023338D1 (de) 2004-12-21 2009-11-05 Ericsson Telefon Ab L M Anordnung und verfahren in bezug auf den fluss von paketen in kommunikationssystemen
KR20070095374A (ko) 2004-12-31 2007-09-28 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 비연결형 통신 트래픽을 위한 연결형 통신 방법
US20060182118A1 (en) 2005-02-01 2006-08-17 Hong Kong Applied Science and Technology Research Institute Company Limited System And Method For Efficient Traffic Processing
US20070036178A1 (en) * 2005-02-02 2007-02-15 Susan Hares Layer 2 virtual switching environment
US7730486B2 (en) 2005-02-28 2010-06-01 Hewlett-Packard Development Company, L.P. System and method for migrating virtual machines on cluster systems
US7936770B1 (en) 2005-03-08 2011-05-03 Enterasys Networks, Inc. Method and apparatus of virtual class of service and logical queue representation through network traffic distribution over multiple port interfaces
FR2883437B1 (fr) 2005-03-16 2007-08-03 Wavestorm Sarl Dispositif et procede de communication dans un reseau
US7697536B2 (en) 2005-04-01 2010-04-13 International Business Machines Corporation Network communications for operating system partitions
US20060265508A1 (en) * 2005-05-02 2006-11-23 Angel Franklin J System for administering a multiplicity of namespaces containing state information and services
US20060268834A1 (en) * 2005-05-26 2006-11-30 Symbol Technologies, Inc. Method, system and wireless router apparatus supporting multiple subnets for layer 3 roaming in wireless local area networks (WLANs)
DE602005005974T2 (de) * 2005-06-20 2009-06-18 Alcatel Lucent Fehlertolerante Schaltmatrix mit einer Ebene für ein Telekommunikationssystem
US7802000B1 (en) * 2005-08-01 2010-09-21 Vmware Virtual network in server farm
US8149737B2 (en) 2005-08-09 2012-04-03 Motorola Solutions, Inc. Method and system for data transmission in a wireless network
CN1741503B (zh) * 2005-08-18 2010-09-08 杭州华三通信技术有限公司 一种交换设备和交换方法
CN100479417C (zh) * 2005-09-02 2009-04-15 华为技术有限公司 一种防止媒体流迂回的通信方法
US8121146B2 (en) * 2005-09-21 2012-02-21 Intel Corporation Method, apparatus and system for maintaining mobility resistant IP tunnels using a mobile router
US8062221B2 (en) * 2005-09-30 2011-11-22 Nellcor Puritan Bennett Llc Sensor for tissue gas detection and technique for using the same
US7542468B1 (en) * 2005-10-18 2009-06-02 Intuit Inc. Dynamic host configuration protocol with security
US20070101323A1 (en) 2005-10-28 2007-05-03 Microsoft Corporation Automatic virtual machine adjustments to network changes
JP2007135109A (ja) 2005-11-11 2007-05-31 Hitachi Ltd 仮想ネットワーク管理方法、仮想ネットワーク管理プログラム、仮想ネットワーク管理システムおよび仮想ネットワーク管理手段
ATE456890T1 (de) 2005-12-13 2010-02-15 Ibm Verfahren zum betrieb von mehreren virtuellen netzwerken
US20070266433A1 (en) * 2006-03-03 2007-11-15 Hezi Moore System and Method for Securing Information in a Virtual Computing Environment
US7801128B2 (en) 2006-03-31 2010-09-21 Amazon Technologies, Inc. Managing communications between computing nodes
US8838756B2 (en) 2009-07-27 2014-09-16 Vmware, Inc. Management and implementation of enclosed local networks in a virtual lab
US8619771B2 (en) 2009-09-30 2013-12-31 Vmware, Inc. Private allocated networks over shared communications infrastructure
US7839847B2 (en) 2006-05-08 2010-11-23 Cisco Technology, Inc. Methods and apparatus providing VPN traffic matrix construction
CA2547047A1 (en) 2006-05-15 2007-11-15 Embotics Corporation Management of virtual machines using mobile autonomic elements
US7953089B1 (en) * 2006-05-16 2011-05-31 Cisco Technology, Inc. Systems and methods for multicast switching in a private VLAN
US20070271362A1 (en) * 2006-05-18 2007-11-22 Yehuda Bamnolker Implementation of reflexive access control lists on distributed platforms
CA2549285C (en) * 2006-05-26 2017-01-31 Bce Inc Method, system and apparatus for verifying validity of location information in a packet-switched network
US8060875B1 (en) 2006-05-26 2011-11-15 Vmware, Inc. System and method for multiple virtual teams
JP4714081B2 (ja) 2006-06-01 2011-06-29 アラクサラネットワークス株式会社 ネットワーク接続装置
US20070286209A1 (en) * 2006-06-12 2007-12-13 Research In Motion Limited System and method for handling address resolution protocol requests
US7522595B2 (en) * 2006-06-16 2009-04-21 Cisco Technology, Inc. Communicating packets between forwarding contexts using virtual interfaces
US8327008B2 (en) 2006-06-20 2012-12-04 Lenovo (Singapore) Pte. Ltd. Methods and apparatus for maintaining network addresses
US7706303B2 (en) 2006-06-26 2010-04-27 Cisco Technology, Inc. Port pooling
US7643482B2 (en) 2006-06-30 2010-01-05 Sun Microsystems, Inc. System and method for virtual switching in a host
US7761596B2 (en) 2006-06-30 2010-07-20 Telefonaktiebolaget L M Ericsson (Publ) Router and method for server load balancing
JP2008028914A (ja) * 2006-07-25 2008-02-07 Nec Corp 通信負荷低減装置、通信負荷低減方法、及びプログラム
US7525969B2 (en) * 2006-08-25 2009-04-28 Cisco Technology, Inc. NAT processing in a VRF environment
US8204982B2 (en) 2006-09-14 2012-06-19 Quova, Inc. System and method of middlebox detection and characterization
US7643488B2 (en) 2006-09-29 2010-01-05 Nortel Networks Limited Method and apparatus for supporting multiple customer provisioned IPSec VPNs
US7876765B2 (en) * 2006-09-29 2011-01-25 Intel Corporation Method for supporting IP network interconnectivity between partitions in a virtualized environment
JP5244332B2 (ja) 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
US7826482B1 (en) 2006-11-17 2010-11-02 Juniper Networks, Inc. Service-specific forwarding in an LDP-RSVP hybrid network
WO2008071227A1 (en) 2006-12-12 2008-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Ip address distribution in middleboxes
US8223668B2 (en) 2006-12-14 2012-07-17 Rockstar Bidco Lp Method and apparatus for exchanging routing information and the establishment of connectivity across multiple network areas
US7738457B2 (en) * 2006-12-20 2010-06-15 Oracle America, Inc. Method and system for virtual routing using containers
US8190755B1 (en) * 2006-12-27 2012-05-29 Symantec Corporation Method and apparatus for host authentication in a network implementing network access control
US20080159301A1 (en) * 2006-12-29 2008-07-03 De Heer Arjan Arie Enabling virtual private local area network services
CN101212314A (zh) * 2006-12-30 2008-07-02 北京天融信网络安全技术有限公司 单一芯片实现多项网络安全功能的方法
US7550828B2 (en) * 2007-01-03 2009-06-23 Stats Chippac, Inc. Leadframe package for MEMS microphone assembly
US8381209B2 (en) * 2007-01-03 2013-02-19 International Business Machines Corporation Moveable access control list (ACL) mechanisms for hypervisors and virtual machines and virtual port firewalls
US20080175239A1 (en) * 2007-01-23 2008-07-24 Yipes Enterprise Services, Inc Multicast wide-area network for distributing data to selected destinations with limited or no replication
US7856549B2 (en) 2007-01-24 2010-12-21 Hewlett-Packard Development Company, L.P. Regulating power consumption
US20080189769A1 (en) 2007-02-01 2008-08-07 Martin Casado Secure network switching infrastructure
WO2008093174A1 (en) 2007-02-02 2008-08-07 Groupe Des Ecoles Des Telecommuinications (Get) Institut National Des Telecommunications (Int) Autonomic network node system
US20080186990A1 (en) 2007-02-02 2008-08-07 International Business Machines Corporation Translation module, method and computer program product for providing multiple infiniband address support for vm migration using infiniband address translation
IL189514A (en) 2007-02-14 2011-12-29 Marvell Israel Misl Ltd Logical mediation system and method
US7925850B1 (en) 2007-02-16 2011-04-12 Vmware, Inc. Page signature disambiguation for increasing the efficiency of virtual machine migration in shared-page virtualized computer systems
US8050267B2 (en) * 2007-02-19 2011-11-01 Cisco Technology, Inc. Simple virtual private network for small local area networks
US9661112B2 (en) * 2007-02-22 2017-05-23 International Business Machines Corporation System and methods for providing server virtualization assistance
US8055789B2 (en) 2007-03-27 2011-11-08 Amazon Technologies, Inc. Configuring intercommunications between computing nodes
US8111707B2 (en) 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
US8059532B2 (en) * 2007-06-21 2011-11-15 Packeteer, Inc. Data and control plane architecture including server-side triggered flow policy mechanism
US8594085B2 (en) 2007-04-11 2013-11-26 Palo Alto Networks, Inc. L2/L3 multi-mode switch including policy processing
CN101030946A (zh) * 2007-04-12 2007-09-05 华为技术有限公司 一种实现数据业务的方法及系统
WO2008128194A2 (en) 2007-04-12 2008-10-23 Rutgers, The State University Of New Jersey System and method for controlling a file system
US7903655B2 (en) 2007-04-19 2011-03-08 Hewlett-Packard Development Company, L.P. Marked packet forwarding
JP4740897B2 (ja) 2007-05-24 2011-08-03 株式会社日立製作所 仮想ネットワーク構成方法及びネットワークシステム
US7948874B2 (en) 2007-05-24 2011-05-24 World Wide Packets, Inc. Transitioning a virtual interface from one tunnel to another tunnel
US8938489B2 (en) * 2007-06-22 2015-01-20 Red Hat, Inc. Monitoring system performance changes based on configuration modification
US8031633B2 (en) 2007-08-13 2011-10-04 Honeywell International Inc. Virtual network architecture for space data processing
US8671256B2 (en) 2007-08-27 2014-03-11 International Business Machines Corporation Migrating contents of a memory on a virtual machine
US8621573B2 (en) * 2007-08-28 2013-12-31 Cisco Technology, Inc. Highly scalable application network appliances with virtualized services
CN101119208A (zh) * 2007-08-28 2008-02-06 福建星网锐捷网络有限公司 交换机、业务处理单板及交换单板
US8798056B2 (en) 2007-09-24 2014-08-05 Intel Corporation Method and system for virtual port communications
JP5393686B2 (ja) * 2007-09-26 2014-01-22 ニシラ, インコーポレイテッド ネットワークを管理する及び安全にするためのネットワークオペレーティングシステム
EP2201474B1 (en) 2007-10-03 2020-05-06 NTT Global Networks Incorporated Virtualized application acceleration infrastructure
US8848544B2 (en) 2007-11-08 2014-09-30 Cisco Technology, Inc. Event correlation using network data flow simulation over unmanaged network segments
US7801994B2 (en) * 2007-11-29 2010-09-21 Hitachi, Ltd. Method and apparatus for locating candidate data centers for application migration
US7945647B2 (en) 2007-12-10 2011-05-17 Oracle America, Inc. Method and system for creating a virtual network path
US7984123B2 (en) 2007-12-10 2011-07-19 Oracle America, Inc. Method and system for reconfiguring a virtual network path
US8199750B1 (en) 2007-12-18 2012-06-12 World Wide Packets, Inc. Communicating with a control plane using a forwarding information format and control plane processing of packets devoid of a virtual switch identifier
US8194674B1 (en) 2007-12-20 2012-06-05 Quest Software, Inc. System and method for aggregating communications and for translating between overlapping internal network addresses and unique external network addresses
US9432213B2 (en) 2007-12-31 2016-08-30 Rpx Clearinghouse Llc IP forwarding across a link state protocol controlled ethernet network
US9577842B2 (en) * 2008-02-25 2017-02-21 Cisco Technology, Inc. Shared L2 bridging domains for L3 virtual networks
US8625592B2 (en) * 2008-02-26 2014-01-07 Cisco Technology, Inc. Blade switch with scalable interfaces
GB2458157B (en) 2008-03-07 2012-04-25 Hewlett Packard Development Co Virtual machine liveness check
GB2459433B (en) 2008-03-07 2012-06-06 Hewlett Packard Development Co Distributed network connection policy management
GB2458154B (en) 2008-03-07 2012-06-27 Hewlett Packard Development Co Routing across a virtual network
US8155028B2 (en) 2008-03-17 2012-04-10 Alcatel Lucent Method and apparatus for providing full logical connectivity in MPLS networks
CA2659141C (en) * 2008-03-20 2014-07-08 Embotics Corporation Method and system for supporting wake-on-lan in a virtualized environment
US20090249471A1 (en) * 2008-03-27 2009-10-01 Moshe Litvin Reversible firewall policies
US8429739B2 (en) 2008-03-31 2013-04-23 Amazon Technologies, Inc. Authorizing communications between computing nodes
US7865586B2 (en) * 2008-03-31 2011-01-04 Amazon Technologies, Inc. Configuring communications between computing nodes
US8339959B1 (en) 2008-05-20 2012-12-25 Juniper Networks, Inc. Streamlined packet forwarding using dynamic filters for routing and security in a shared forwarding plane
US8195774B2 (en) 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US8004998B2 (en) * 2008-05-23 2011-08-23 Solera Networks, Inc. Capture and regeneration of a network data using a virtual software switch
US8849971B2 (en) 2008-05-28 2014-09-30 Red Hat, Inc. Load balancing in cloud-based networks
US8160063B2 (en) * 2008-06-09 2012-04-17 Microsoft Corporation Data center interconnect and traffic engineering
US8099615B2 (en) 2008-06-30 2012-01-17 Oracle America, Inc. Method and system for power management in a virtual machine environment without disrupting network connectivity
US7941539B2 (en) * 2008-06-30 2011-05-10 Oracle America, Inc. Method and system for creating a virtual router in a blade chassis to maintain connectivity
CN101325551B (zh) * 2008-07-28 2010-09-22 杭州华三通信技术有限公司 一种报文处理方法和报文处理装置
CN101369968B (zh) * 2008-08-18 2011-02-16 中国科学院计算技术研究所 实现端到端通信的可配置nat设备及其数据转发方法
US8300532B1 (en) 2008-09-23 2012-10-30 Juniper Networks, Inc. Forwarding plane configuration for separation of services and forwarding in an integrated services router
US7885276B1 (en) 2008-09-30 2011-02-08 Emc Corporation Isolating network traffic in multi-tenant virtualization environments
JP2010114665A (ja) 2008-11-06 2010-05-20 Toshiba Corp 通信データ制御方法及び計算機システム
US7921197B2 (en) * 2008-11-19 2011-04-05 Vmware, Inc. Dynamic configuration of virtual machines
US7962647B2 (en) 2008-11-24 2011-06-14 Vmware, Inc. Application delivery control module for virtual network switch
US8171124B2 (en) 2008-11-25 2012-05-01 Citrix Systems, Inc. Systems and methods for GSLB remote service monitoring
US8201237B1 (en) 2008-12-10 2012-06-12 Amazon Technologies, Inc. Establishing secure remote access to private computer networks
US8230050B1 (en) 2008-12-10 2012-07-24 Amazon Technologies, Inc. Providing access to configurable private computer networks
US8055770B2 (en) 2008-12-15 2011-11-08 At&T Intellectual Property I, L.P. Method and apparatus for providing network virtualization
US8271775B2 (en) 2008-12-17 2012-09-18 Cisco Technology, Inc. Layer two encryption for data center interconnectivity
WO2010070906A1 (ja) * 2008-12-18 2010-06-24 日本電気株式会社 通信装置、通信システム、通信制御方法及び通信制御プログラム
US20100157821A1 (en) * 2008-12-18 2010-06-24 Morris Robert P Methods, Systems, And Computer Program Products For Sending Data Units Based On A Measure Of Energy
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US8054832B1 (en) 2008-12-30 2011-11-08 Juniper Networks, Inc. Methods and apparatus for routing between virtual resources based on a routing location policy
US8190769B1 (en) * 2008-12-30 2012-05-29 Juniper Networks, Inc. Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification
US8331362B2 (en) 2008-12-30 2012-12-11 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8565118B2 (en) * 2008-12-30 2013-10-22 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US7995483B1 (en) 2009-01-20 2011-08-09 Juniper Networks, Inc. Simultaneously testing connectivity to multiple remote maintenance endpoints of the same maintenance association
US20100192225A1 (en) 2009-01-28 2010-07-29 Juniper Networks, Inc. Efficient application identification with network devices
US7948986B1 (en) 2009-02-02 2011-05-24 Juniper Networks, Inc. Applying services within MPLS networks
WO2010096552A1 (en) 2009-02-19 2010-08-26 Futurewei Technologies, Inc. System and method for point to multipoint inter-domain multiprotocol label switching traffic engineering path calculation
US8213336B2 (en) 2009-02-23 2012-07-03 Cisco Technology, Inc. Distributed data center access switch
JP5544097B2 (ja) * 2009-02-23 2014-07-09 株式会社日立国際電気 ネットワーク間接続装置
WO2010103909A1 (ja) 2009-03-09 2010-09-16 日本電気株式会社 OpenFlow通信システムおよびOpenFlow通信方法
US8130641B2 (en) * 2009-03-13 2012-03-06 Hewlett-Packard Development Company, L.P. Methods and systems for managing network traffic within a virtual network system
US8265075B2 (en) 2009-03-16 2012-09-11 International Business Machines Corporation Method and apparatus for managing, configuring, and controlling an I/O virtualization device through a network switch
US8792490B2 (en) 2009-03-16 2014-07-29 Cisco Technology, Inc. Logically partitioned networking devices
US9106540B2 (en) * 2009-03-30 2015-08-11 Amazon Technologies, Inc. Providing logical networking functionality for managed computer networks
US9817695B2 (en) * 2009-04-01 2017-11-14 Vmware, Inc. Method and system for migrating processes between virtual machines
WO2010121216A1 (en) 2009-04-17 2010-10-21 Viasat, Inc. System, method and apparatus for providing end-to-end layer 2 connectivity
US8589919B2 (en) 2009-04-28 2013-11-19 Cisco Technology, Inc. Traffic forwarding for virtual machines
US8027354B1 (en) 2009-04-29 2011-09-27 Cisco Technology, Inc. Network consolidation for virtualized servers
JP2010263261A (ja) * 2009-04-30 2010-11-18 Nec Corp ネットワーク構成機器、情報通信ネットワーク及びそれらに用いるネットワーク自動構築方法
US8429647B2 (en) * 2009-05-06 2013-04-23 Vmware, Inc. Virtual machine migration across network by publishing routes to the associated virtual networks via virtual router after the start of migration of the virtual machine
US8472443B2 (en) * 2009-05-15 2013-06-25 Cisco Technology Port grouping for association with virtual interfaces
US8538919B1 (en) 2009-05-16 2013-09-17 Eric H. Nielsen System, method, and computer program for real time remote recovery of virtual computing machines
US8867349B2 (en) 2009-05-18 2014-10-21 Cisco Technology, Inc. Regulation of network traffic in virtual private networks
US9497039B2 (en) * 2009-05-28 2016-11-15 Microsoft Technology Licensing, Llc Agile data center network architecture
US20100318609A1 (en) 2009-06-15 2010-12-16 Microsoft Corporation Bridging enterprise networks into cloud
US9210065B2 (en) 2009-06-22 2015-12-08 Alcatel Lucent Providing cloud-based services using dynamic network virtualization
US8644188B1 (en) 2009-06-25 2014-02-04 Amazon Technologies, Inc. Providing virtual networking functionality for managed computer networks
CN101594358B (zh) * 2009-06-29 2012-09-05 北京航空航天大学 三层交换方法、装置、系统和宿主机
US8572609B2 (en) 2009-07-01 2013-10-29 Riverbed Technology, Inc. Configuring bypass functionality of a network device based on the state of one or more hosted virtual machines
US8634437B2 (en) 2009-07-01 2014-01-21 Riverbed Technology, Inc. Extended network protocols for communicating metadata with virtual machines
US8954957B2 (en) 2009-07-01 2015-02-10 Riverbed Technology, Inc. Network traffic processing according to network traffic rule criteria and transferring network traffic metadata in a network device that includes hosted virtual machines
US8990433B2 (en) 2009-07-01 2015-03-24 Riverbed Technology, Inc. Defining network traffic processing flows between virtual machines
US8532116B2 (en) * 2009-07-21 2013-09-10 Cisco Technology, Inc. Extended subnets
US8559333B2 (en) * 2009-07-24 2013-10-15 Broadcom Corporation Method and system for scalable switching architecture
US9270542B2 (en) 2009-07-31 2016-02-23 Ixia Apparatus and methods for forwarding data packets captured from a network
US20110032830A1 (en) 2009-08-06 2011-02-10 Jacobus Van Der Merwe Live Router Migration
US8339994B2 (en) 2009-08-27 2012-12-25 Brocade Communications Systems, Inc. Defining an optimal topology for a group of logical switches
CN104065555B (zh) * 2009-09-24 2018-09-18 日本电气株式会社 虚拟服务器间通信识别系统和虚拟服务器间通信识别方法
US8619779B2 (en) 2009-09-30 2013-12-31 Alcatel Lucent Scalable architecture for enterprise extension in a cloud topology
US8571031B2 (en) 2009-10-07 2013-10-29 Intel Corporation Configurable frame processing pipeline in a packet switch
US8599864B2 (en) * 2009-10-08 2013-12-03 Brocade Communications Systems, Inc. Transit switches in a network of logical switches
US20110085557A1 (en) 2009-10-08 2011-04-14 Brocade Communications Systems, Inc. Partitioning of Switches and Fabrics into Logical Switches and Fabrics
US8369333B2 (en) * 2009-10-21 2013-02-05 Alcatel Lucent Method and apparatus for transparent cloud computing with a virtualized network infrastructure
EP2497234B1 (en) 2009-11-02 2018-09-19 Marvell World Trade Ltd. Network device and method based on virtual interfaces
US8621460B2 (en) * 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US8537860B2 (en) * 2009-11-03 2013-09-17 International Business Machines Corporation Apparatus for switching traffic between virtual machines
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
US8800025B2 (en) * 2009-11-10 2014-08-05 Hei Tao Fung Integrated virtual desktop and security management system
US7937438B1 (en) 2009-12-07 2011-05-03 Amazon Technologies, Inc. Using virtual networking devices to manage external connections
US20110134931A1 (en) 2009-12-08 2011-06-09 Jacobus Van Der Merwe Virtual router migration
US8705513B2 (en) * 2009-12-15 2014-04-22 At&T Intellectual Property I, L.P. Methods and apparatus to communicatively couple virtual private networks to virtual machines within distributive computing networks
US9392080B2 (en) * 2009-12-18 2016-07-12 Microsoft Technology Licensing, Llc IPv4/IPv6 bridge
US7991859B1 (en) 2009-12-28 2011-08-02 Amazon Technologies, Inc. Using virtual networking devices to connect managed computer networks
US7953865B1 (en) 2009-12-28 2011-05-31 Amazon Technologies, Inc. Using virtual networking devices to manage routing communications between connected computer networks
US8224971B1 (en) 2009-12-28 2012-07-17 Amazon Technologies, Inc. Using virtual networking devices and routing information to initiate external actions
WO2011085559A1 (en) * 2010-01-15 2011-07-21 Style Limited Methods of making manufactured eucalyptus wood products
US8874749B1 (en) * 2010-02-03 2014-10-28 Citrix Systems, Inc. Network fragmentation and virtual machine migration in a scalable cloud computing environment
JP5392137B2 (ja) * 2010-02-17 2014-01-22 富士通株式会社 通信処理のためのプログラム、コンピュータ及び方法
US8345688B2 (en) * 2010-02-23 2013-01-01 Google Inc. System and method for managing flow of packets
US8612627B1 (en) 2010-03-03 2013-12-17 Amazon Technologies, Inc. Managing encoded multi-part communications for provided computer networks
CN101771618B (zh) 2010-03-11 2014-04-09 中兴通讯股份有限公司 一种分组传送网络接入环中主机路由可达的方法及系统
US9413649B2 (en) * 2010-03-12 2016-08-09 Force10 Networks, Inc. Virtual network device architecture
US8863144B2 (en) 2010-03-15 2014-10-14 International Business Machines Corporation Method and apparatus for determining resources consumed by tasks
US8654680B2 (en) * 2010-03-16 2014-02-18 Force10 Networks, Inc. Packet forwarding using multiple stacked chassis
JP5644150B2 (ja) * 2010-03-23 2014-12-24 日本電気株式会社 サービス提供システム、仮想マシンサーバ、サービス提供方法及びサービス提供プログラム
US8560658B2 (en) * 2010-03-23 2013-10-15 Juniper Networks, Inc. Managing distributed address pools within network devices
US8259571B1 (en) 2010-03-26 2012-09-04 Zscaler, Inc. Handling overlapping IP addresses in multi-tenant architecture
JP5190084B2 (ja) * 2010-03-30 2013-04-24 株式会社日立製作所 仮想マシンのマイグレーション方法およびシステム
US8224931B1 (en) 2010-03-31 2012-07-17 Amazon Technologies, Inc. Managing use of intermediate destination computing nodes for provided computer networks
US8396946B1 (en) * 2010-03-31 2013-03-12 Amazon Technologies, Inc. Managing integration of external nodes into provided computer networks
US8611352B2 (en) 2010-04-20 2013-12-17 Marvell World Trade Ltd. System and method for adapting a packet processing pipeline
US8566257B2 (en) * 2010-04-26 2013-10-22 International Business Machines Corporation Address data learning and registration within a distributed virtual bridge
US8504718B2 (en) 2010-04-28 2013-08-06 Futurewei Technologies, Inc. System and method for a context layer switch
US8989186B2 (en) 2010-06-08 2015-03-24 Brocade Communication Systems, Inc. Virtual port grouping for virtual cluster switching
US8625616B2 (en) * 2010-05-11 2014-01-07 Brocade Communications Systems, Inc. Converged network extension
US9306849B2 (en) * 2010-05-03 2016-04-05 Pluribus Networks, Inc. Methods and systems for managing distribute media access control address tables
US9769016B2 (en) * 2010-06-07 2017-09-19 Brocade Communications Systems, Inc. Advanced link tracking for virtual cluster switching
US8407366B2 (en) 2010-05-14 2013-03-26 Microsoft Corporation Interconnecting members of a virtual network
BR112012018762B1 (pt) 2010-05-28 2022-06-21 Huawei Technologies Co., Ltd Sistema, componente de rede e método para promover uma comunicação entre uma pluralidade de domínios de acesso
US8989187B2 (en) 2010-06-04 2015-03-24 Coraid, Inc. Method and system of scaling a cloud computing network
US8374183B2 (en) 2010-06-22 2013-02-12 Microsoft Corporation Distributed virtual network gateways
US8396954B2 (en) * 2010-06-24 2013-03-12 Aryaka Networks, Inc. Routing and service performance management in an application acceleration environment
US8688994B2 (en) * 2010-06-25 2014-04-01 Microsoft Corporation Federation among services for supporting virtual-network overlays
WO2012006190A1 (en) 2010-06-29 2012-01-12 Huawei Technologies Co., Ltd. Delegate gateways and proxy for target hosts in large layer 2 and address resolution with duplicated internet protocol addresses
US8239863B2 (en) * 2010-06-29 2012-08-07 Hewlett-Packard Development Company, L.P. Method and system for migrating a virtual machine
CN104396192B (zh) * 2010-06-29 2018-03-06 华为技术有限公司 不对称网络地址封装
US8239572B1 (en) 2010-06-30 2012-08-07 Amazon Technologies, Inc. Custom routing decisions
US8958292B2 (en) * 2010-07-06 2015-02-17 Nicira, Inc. Network control apparatus and method with port security controls
US8456984B2 (en) 2010-07-19 2013-06-04 Ciena Corporation Virtualized shared protection capacity
US8351325B2 (en) 2010-08-18 2013-01-08 Yr20 Method and system for layer-2 pseudo-wire rapid-deployment service over unknown internet protocol networks
JP2012053842A (ja) * 2010-09-03 2012-03-15 Konica Minolta Business Technologies Inc ネットワークに接続された端末装置、当該端末装置が適用された印刷システム、及び当該端末装置の制御方法
JP5476261B2 (ja) 2010-09-14 2014-04-23 株式会社日立製作所 マルチテナント型情報処理システム、管理サーバ及び構成管理方法
US8565108B1 (en) * 2010-09-28 2013-10-22 Amazon Technologies, Inc. Network data transmission analysis
CN102457583B (zh) 2010-10-19 2014-09-10 中兴通讯股份有限公司 一种虚拟机移动性的实现方法及系统
US8391289B1 (en) * 2010-10-29 2013-03-05 Hewlett-Packard Development Company, L.P. Managing a forwarding table in a switch
US8533285B2 (en) * 2010-12-01 2013-09-10 Cisco Technology, Inc. Directing data flows in data centers with clustering services
US8699499B2 (en) * 2010-12-08 2014-04-15 At&T Intellectual Property I, L.P. Methods and apparatus to provision cloud computing network elements
JP5573649B2 (ja) * 2010-12-17 2014-08-20 富士通株式会社 情報処理装置
US9258271B1 (en) * 2011-01-13 2016-02-09 Google Inc. Network address translation for virtual machines
US10142218B2 (en) 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
US8614870B2 (en) * 2011-01-14 2013-12-24 Hamilton Sundstrand Corporation Active transient current control in electronic circuit breakers
US9037633B2 (en) * 2011-01-27 2015-05-19 Wyse Technology L.L.C. Transferring configuration data from a public cloud server and applying onto a mobile client
US9191327B2 (en) * 2011-02-10 2015-11-17 Varmour Networks, Inc. Distributed service processing of network gateways using virtual machines
US9141410B2 (en) * 2011-03-08 2015-09-22 Rackspace Us, Inc. Pluggable allocation in a cloud computing system
US8665739B2 (en) 2011-03-16 2014-03-04 Juniper Networks, Inc. Packet loss measurement at service endpoints of a virtual private LAN service
US8774213B2 (en) * 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
WO2012133290A1 (ja) * 2011-03-31 2012-10-04 日本電気株式会社 コンピュータシステム、及び通信方法
US8848716B2 (en) * 2011-04-11 2014-09-30 Cisco Technology, Inc. Termination of a pseudowires on multiple line cards
US8793685B2 (en) * 2011-05-13 2014-07-29 International Business Machines Corporation Techniques for operating virtual switches in a virtualized computing environment
US8873398B2 (en) * 2011-05-23 2014-10-28 Telefonaktiebolaget L M Ericsson (Publ) Implementing EPC in a cloud computer with openflow data plane
US8798064B2 (en) * 2011-06-06 2014-08-05 Broadcom Corporation Method and system of frame forwarding with link aggregation in distributed ethernet bridges
US9110703B2 (en) * 2011-06-07 2015-08-18 Hewlett-Packard Development Company, L.P. Virtual machine packet processing
US9229867B2 (en) * 2011-06-16 2016-01-05 International Business Machines Corporation Shared network response cache
JP5824911B2 (ja) 2011-06-29 2015-12-02 富士通株式会社 情報処理装置、情報処理プログラムおよび管理方法
US8874955B2 (en) * 2011-07-07 2014-10-28 International Business Machines Corporation Reducing impact of a switch failure in a switch fabric via switch cards
US20130024553A1 (en) * 2011-07-18 2013-01-24 Cisco Technology, Inc. Location independent dynamic IP address assignment
JP6080313B2 (ja) 2011-08-04 2017-02-15 ミドクラ エスエーアールエル 仮想ネットワークを実装及び管理するシステム及び方法
US8813074B2 (en) * 2011-08-05 2014-08-19 Vmware, Inc. Detecting and correcting network interruptions using network address translation
US9274825B2 (en) * 2011-08-16 2016-03-01 Microsoft Technology Licensing, Llc Virtualization gateway between virtualized and non-virtualized networks
AU2015258336B2 (en) 2011-08-17 2017-07-20 Nicira, Inc. Distributed logical L3 routing
EP3605969B1 (en) 2011-08-17 2021-05-26 Nicira Inc. Distributed logical l3 routing
US8762501B2 (en) 2011-08-29 2014-06-24 Telefonaktiebolaget L M Ericsson (Publ) Implementing a 3G packet core in a cloud computer with openflow data and control planes
US8856518B2 (en) 2011-09-07 2014-10-07 Microsoft Corporation Secure and efficient offloading of network policies to network interface cards
US20130074181A1 (en) 2011-09-19 2013-03-21 Cisco Technology, Inc. Auto Migration of Services Within a Virtual Data Center
US20130103834A1 (en) 2011-10-21 2013-04-25 Blue Coat Systems, Inc. Multi-Tenant NATting for Segregating Traffic Through a Cloud Service
US8521905B2 (en) 2011-12-22 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) System for flexible and extensible flow processing in software-defined networks
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US8660129B1 (en) 2012-02-02 2014-02-25 Cisco Technology, Inc. Fully distributed routing over a user-configured on-demand virtual network for infrastructure-as-a-service (IaaS) on hybrid cloud networks
US8923149B2 (en) 2012-04-09 2014-12-30 Futurewei Technologies, Inc. L3 gateway for VXLAN
US9710762B2 (en) 2012-06-06 2017-07-18 Juniper Networks, Inc. Dynamic logging
US9451056B2 (en) 2012-06-29 2016-09-20 Avaya Inc. Method for mapping packets to network virtualization instances
US9094459B2 (en) 2012-07-16 2015-07-28 International Business Machines Corporation Flow based overlay network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010115060A2 (en) * 2009-04-01 2010-10-07 Nicira Networks Method and apparatus for implementing and managing virtual switches
WO2011043379A1 (ja) * 2009-10-06 2011-04-14 日本電気株式会社 ネットワークシステムとコントローラと方法とプログラム
WO2011043416A1 (ja) * 2009-10-07 2011-04-14 日本電気株式会社 情報システム、制御サーバ、仮想ネットワーク管理方法およびプログラム
JP2011081588A (ja) * 2009-10-07 2011-04-21 Nec Corp コンピュータシステム、及びコンピュータシステムのメンテナンス方法
WO2011093228A1 (ja) * 2010-01-29 2011-08-04 日本電気株式会社 フロントエンドシステム、フロントエンド処理方法

Also Published As

Publication number Publication date
EP2745208A1 (en) 2014-06-25
US9059999B2 (en) 2015-06-16
CN107071087A (zh) 2017-08-18
CN106850878A (zh) 2017-06-13
EP3462686A1 (en) 2019-04-03
US20210144090A1 (en) 2021-05-13
US9185069B2 (en) 2015-11-10
EP3605969B1 (en) 2021-05-26
CN107071086A (zh) 2017-08-18
US9369426B2 (en) 2016-06-14
US20130148541A1 (en) 2013-06-13
EP3462686B1 (en) 2019-10-16
US20130148505A1 (en) 2013-06-13
WO2013026049A4 (en) 2013-04-18
US9350696B2 (en) 2016-05-24
US20230353493A1 (en) 2023-11-02
WO2013026049A1 (en) 2013-02-21
JP2014526225A (ja) 2014-10-02
EP3605969A1 (en) 2020-02-05
CN103890751A (zh) 2014-06-25
US20130142048A1 (en) 2013-06-06
JP2016119679A (ja) 2016-06-30
CN106850444B (zh) 2020-10-27
JP6483781B2 (ja) 2019-03-13
US20130044636A1 (en) 2013-02-21
US20130148543A1 (en) 2013-06-13
US20130151676A1 (en) 2013-06-13
JP5870192B2 (ja) 2016-02-24
US10868761B2 (en) 2020-12-15
US9319375B2 (en) 2016-04-19
US9276897B2 (en) 2016-03-01
US9356906B2 (en) 2016-05-31
CN107071086B (zh) 2020-06-05
US20130148656A1 (en) 2013-06-13
US8958298B2 (en) 2015-02-17
JP6231586B2 (ja) 2017-11-15
EP2745208B1 (en) 2018-11-28
CN103890751B (zh) 2017-05-17
US20190028389A1 (en) 2019-01-24
US20130148542A1 (en) 2013-06-13
US11695695B2 (en) 2023-07-04
CN106850878B (zh) 2020-07-14
CN107071088A (zh) 2017-08-18
US20130051399A1 (en) 2013-02-28
US20160373355A1 (en) 2016-12-22
AU2012296329B2 (en) 2015-08-27
US20130151661A1 (en) 2013-06-13
CN107071087B (zh) 2021-01-26
US9407599B2 (en) 2016-08-02
US9461960B2 (en) 2016-10-04
CN107071088B (zh) 2020-06-05
US10027584B2 (en) 2018-07-17
EP2745208A4 (en) 2015-12-09
CN106850444A (zh) 2017-06-13
AU2012296329A1 (en) 2014-03-06

Similar Documents

Publication Publication Date Title
JP6483781B2 (ja) 分散論理l3ルーティング
US10320665B2 (en) Configuration of a logical router for dynamic routing
AU2015258336B2 (en) Distributed logical L3 routing

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190118

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190214

R150 Certificate of patent or registration of utility model

Ref document number: 6483781

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350