図面 (/)

この項目の情報は公開日時点(2016年9月1日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

VMを実行することができるすべてのホストでL3パケット転送するための分散型ルータを提供する。

解決手段

いくつかの実施形態は、いくつかの仮想マシンをホストするためのいくつかのホストマシンと、ホストマシンを相互接続するための物理ネットワークとを含むシステムを提供する。各ホストマシンは、ホストマシン上で動作する仮想マシンのセットとの間のパケットのリンク層転送を実行するための、いくつかのポートを含む管理される物理スイッチング要素(MPSE)を含む。各ポートは、ユニークなメディアアクセス制御(MAC)アドレスと関連付けられる。各ホストマシンは、MPSEのポートからのデータパケットを受信し、第1のネットワークセグメントの第1の仮想マシンから受信したデータパケットを、第2のネットワークセグメントの第2の仮想マシンに転送するために、ネットワーク層ルーティングを実行するための、管理されるルーティング要素(MPRE)を含む。

概要

背景

先願の利益の主張
本出願は、2013年10月13日に出願された米国仮特許出願第61/890,309号の利益を主張する。米国仮特許出願第61/890,309号は、参照により本明細書に組み込まれる。

ネットワーク仮想化環境では、ハイパーバイザ上で展開されるより一般的なアプリケーションの1つは、3階層アプリケーションであり、3階層アプリケーションでは、ウェブ層データベース層、及びアプリケーション層が、異なるL3サブネット上にある。これは、最初にL3ルータ到着し、次に宛先仮想マシン(VM)に転送されるように、1つのサブネット内の1つのVMから、別のサブネット内の別のVMに横断するIPパケットを必要とする。これは、宛先VMが、発信VMと同じホストマシン上でホストされる場合でも、同様である。これは、不要なネットワークトラフィックを発生し、より高いレイテンシとより低いスループットとを引き起こし、ハイパーバイザ上で動作するアプリケーションの性能を著しく低下させる。一般的に言えば、任意の2つのVMが、互いに通信する2つの異なるIPサブネットであるときはいつも、この性能低下が発生する。

図1は、ネットワーク仮想化インフラストラクチャ上に実装された論理ネットワーク100を示し、論理ネットワーク100では、異なるセグメント又はサブネット上の仮想マシン(VM)が、共有ルータ110を介して通信する。図に示すように、VM121〜129は、ホストマシン131〜133上で動作しており、ホストマシン131〜133は、物理ネットワーク105によって通信可能にリンクされた物理マシンである。

VMは、ネットワークの異なるセグメント内にある。具体的にはVM121〜125は、ネットワークのセグメントA内にあり、VM126〜129は、ネットワークのセグメントB内にある。ネットワークの同じセグメント内のVMは、リンク層(L2)プロトコルを用いて互いに通信することができ、ネットワークの異なるセグメント内のVMは、リンク層プロトコルを用いて互いに通信することができず、ネットワーク層(L3)ルータ又はゲートウェイを用いて互いに通信しなければならない。異なるホストマシン内で動作するVMは、それらが、同じネットワークセグメント内にあるか否かにかかわらず、物理ネットワーク105内のネットワークトラフィックを介して互いに通信する。

ホストマシン131〜133は、ソフトウェアスイッチを実装するハイパーバイザを実行しており、同じホストマシン内の同じセグメント内のVMが、物理ネットワーク105を経由せずに、ローカルに互いに通信することを可能にする。しかしながら、異なるセグメントに属するVMは、共有ルータ110のようなL3ルータを経由しなければならず、これは物理ネットワークの後ろでしか到達することができない。これは、同じホストマシン内で動作しているVM間でも同様である。例えば、VM125及びVM126間のトラフィックは、両方ともホストマシン132上で動作しているにもかかわらず、物理ネットワーク105及び共有ルータ110を経由しなければならない。

必要なのは、VMを実行することができるすべてのホストでL3パケットを転送するための分散型ルータである。分散型ルータは、送信元VM及び宛先VM間に正確に1つのホップが存在するように、データパケットをローカルに(すなわち、送信元ハイパーバイザで)転送することができるようにすべきである。

概要

VMを実行することができるすべてのホストでL3パケットを転送するための分散型ルータを提供する。いくつかの実施形態は、いくつかの仮想マシンをホストするためのいくつかのホストマシンと、ホストマシンを相互接続するための物理ネットワークとを含むシステムを提供する。各ホストマシンは、ホストマシン上で動作する仮想マシンのセットとの間のパケットのリンク層転送を実行するための、いくつかのポートを含む管理される物理スイッチング要素(MPSE)を含む。各ポートは、ユニークなメディアアクセス制御(MAC)アドレスと関連付けられる。各ホストマシンは、MPSEのポートからのデータパケットを受信し、第1のネットワークセグメントの第1の仮想マシンから受信したデータパケットを、第2のネットワークセグメントの第2の仮想マシンに転送するために、ネットワーク層ルーティングを実行するための、管理されるルーティング要素(MPRE)を含む。

目的

図3に示す例では、コントローラエージェント340は、コントローラクラスタ360から物理ネットワーク390からの制御プレーンメッセージを受信し、受信した構成データを、MPSE320を経由せずに、制御チャネルを介してMPRE330に提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

複数の仮想マシンをホストする複数のホストマシンと、前記複数のホストマシンを相互接続する物理ネットワークと、を備えるシステムであって、前記ホストマシンのそれぞれは、前記ホストマシン上で動作する仮想マシンのセットへの及び前記仮想マシンのセットからのパケットリンク層での転送を実行するための複数のポートを備え、それぞれのポートは一意媒体アクセス制御(MAC)アドレスに関連づけられている、仮想スイッチと、前記仮想スイッチのポートからのデータパケット受け取り、第1のネットワークセグメントの第1の仮想マシンから受け取ったデータパケットを第2のネットワークセグメントの第2の仮想マシンへと転送するためにネットワーク層でのルーティングを実行する、仮想ルータと、を備えることを特徴とするシステム。

請求項2

ネットワークセグメントがIP(インターネットプロトコルサブネットカプセル化オーバレイネットワークとのうちの1つであることを特徴とする、請求項1に記載のシステム。

請求項3

前記ネットワークセグメントの少なくとも1つがカプセル化オーバレイネットワークであることを特徴とする、請求項1に記載のシステム。

請求項4

前記第1及び第2のネットワークセグメントが、異なるネットワーク識別子を有する異なるカプセル化オーバレイネットワークであることを特徴とする、請求項1に記載のシステム。

請求項5

前記仮想ルータが前記データパケットを受け取る前記ポートが、前記複数のホストマシンのうちの全てのホストマシンに共通な仮想MAC(VMAC)アドレスと関連づけられていることを特徴とする、請求項1に記載のシステム。

請求項6

それぞれのホストマシンには、当該ホストマシンの仮想ルータを他のホストマシンからアドレス指定するための一意の物理MAC(PMAC)アドレスが割り当てられており、異なるホストマシンには異なるPMACが割り当てられることを特徴とする、請求項5に記載のシステム。

請求項7

それぞれのホストマシンは、入ってくるデータパケットが前記仮想スイッチに到達する前に、前記物理ネットワークから入ってくる前記データパケットの前記PMACアドレスを前記VMACアドレスに変換することを特徴とする、請求項6に記載のシステム。

請求項8

それぞれのホストマシンは、出て行くデータパケットが前記仮想スイッチから出た後に、前記物理ネットワークへと出て行く前記データパケットの前記VMACアドレスを前記PMACアドレスに変換することを特徴とする、請求項6に記載のシステム。

請求項9

論理ネットワークにおいてホストマシンとして働くコンピューティングデバイスであって、前記コンピューティングデバイスはコンピュータプログラムを実行し、前記コンピュータプログラムは、前記論理ネットワークの複数の異なるセグメントにある複数の仮想マシンを実行する命令セットと、前記論理ネットワークの異なるセグメント間でデータパケットをルーティングする、管理される物理ルーティング要素(MPRE)を動作させる命令セットと、を含み、前記MPREは複数の論理インタフェースを備え、それぞれの論理インタフェースは前記論理ネットワークの異なるセグメントからデータパケットを受け取るためのものであり、前記論理インタフェースのそれぞれはネットワーク層のアドレスによりアドレス指定可能であり、前記コンピュータプログラムはさらに、宛先アドレスが前記論理インタフェースのうちの1つのネットワークアドレスと一致する場合にアドレス解決プロトコル(ARP)ブロードキャストメッセージを捉える命令セットと、前記ARPブロードキャストメッセージに対するARP応答を作成する命令セットと、を含むことを特徴とする、コンピューティングデバイス。

請求項10

前記ARPブロードキャストメッセージは、前記ホストマシンで動作する仮想マシンによって送られることを特徴とする、請求項9に記載のコンピューティングデバイス。

請求項11

前記ARPブロードキャストメッセージは、ブロードキャスト媒体アクセス制御(MAC)アドレスを含み、前記ブロードキャストMACアドレスを前記MPREの仮想MAC(VMAC)アドレスで置き換えることを含むことを特徴とする、請求項9に記載のコンピューティングデバイス。

請求項12

前記ARP応答の送信元MACアドレスが前記MPREの仮想MAC(VMAC)アドレスに設定され、前記VMACは前記論理ネットワーク内の全てのホストマシンに共通であることを特徴とする、請求項9に記載のコンピューティングデバイス。

請求項13

前記論理ネットワークの前記セグメントのうちの少なくとも1つがオーバレイカプセル化ネットワークであることを特徴とする、請求項9に記載のコンピューティングデバイス。

請求項14

論理ネットワーク内で複数の仮想マシンをホストする複数のホストマシンと、前記論理ネットワーク内で仮想マシンをホストしない物理ホストマシンと、を備えるシステムであって、前記ホストマシンのそれぞれは、前記論理ネットワークの異なるセグメントにある仮想マシン間でデータパケットをルーティングする、管理される物理ルーティング要素(MPRE)を動作させ、前記物理ホストマシンから前記複数のホストマシンによってホストされる前記仮想マシンへのデータパケットに対するネットワーク層でのルーティングを実行するために、特定のホストマシンの特定のMPREが選択されることを特徴とするシステム。

請求項15

前記物理ホストマシンから前記特定のホストマシン以外のホストマシンへのデータパケットが、前記選択されたMPREによってルーティングされることを特徴とする、請求項14に記載のシステム。

請求項16

前記他のホストマシンから前記物理ホストマシンへのデータパケットは前記選択されたMPREによってルーティングされないことを特徴とする、請求項15に記載のシステム。

請求項17

前記特定のホストマシンではないホストマシンは、前記特定のホストマシンからの、前記物理ホストについてのアドレス解決情報を要求することを特徴とする、請求項16に記載のシステム。

請求項18

前記物理ホストマシンから前記複数のホストマシンへのデータパケットは、前記選択されたルータに関連づけられた一意の物理媒体アクセス制御(PMAC)アドレスを宛先アドレスとして用いることを特徴とする、請求項14に記載のシステム。

請求項19

前記複数のホストマシンのそれぞれのホストマシンは、ルーティング前に前記選択されたルータの前記PMACを仮想MAC(VMAC)アドレスで置き換え、前記VMACは前記複数のホストマシンの前記MPREに対して包括的なものであることを特徴とする、請求項18に記載のシステム。

請求項20

それぞれのホストマシンから前記物理ホストマシンへのデータパケットは、それぞれのホストマシン自身の一意のPMACアドレスを送信元アドレスとして用いることを特徴とする、請求項18に記載のシステム。

請求項21

ネットワーク仮想化インフラストラクチャ上で複数の論理ネットワークを動作させる方法であって、管理される物理スイッチング要素(MPSE)を規定する工程を含み、前記MPSEは、複数の仮想マシンへの及び前記複数の仮想マシンからのパケットの転送のための複数のポートを備え、それぞれのポートは一意の媒体アクセス制御(MAC)アドレスに関連づけられており、前記方法はさらに、複数の異なる論理ネットワークについて複数の管理される物理ルーティング要素(MPRE)を規定する工程を含み、それぞれのMPREは前記MPSEの同じポートからデータパケットを受け取るためのものであり、それぞれのMPREは異なる論理ネットワークについて規定されており、かつ前記論理ネットワークの異なるセグメント間でデータパケットをルーティングするためのものであり、前記方法はさらに、前記規定されたMPSE及び前記規定された複数のMPREを構成データとして複数のホストマシンに提供する工程を含むことを特徴とする方法。

請求項22

前記規定されたMPSE及び前記規定された複数のMPREを前記複数のホストマシンに提供する工程は、前記構成データを、前記複数のホストマシンを制御するコントローラクラスタに提供する工程と、前記コントローラのクラスタから構成データのセットを取得するためにそれぞれのホストマシンに命令セットを提供する工程と、を含むことを特徴とする、請求項21に記載の方法。

請求項23

それぞれのMPREについて複数の論理インタフェースを規定する工程をさらに含み、それぞれの論理インタフェースは異なるネットワークセグメントに関連づけられることを特徴とする、請求項21に記載の方法。

請求項24

それぞれの論理インタフェースは異なるインターネットプロトコル(IP)アドレスに関連づけられることを特徴とする、請求項23に記載の方法。

請求項25

前記異なる論理ネットワークは、前記異なる論理インタフェースによって互いに隔離されていることを特徴とする、請求項23に記載の方法。

請求項26

前記ネットワーク仮想化インフラストラクチャは複数の異なるテナントサポートし、それぞれの論理ネットワークは異なるテナントについて規定されることを特徴とする、請求項21に記載の方法。

請求項27

前記提供された構成データは、前記複数の論理ネットワークについての前記複数のMPREをそれぞれのホストマシンが動作させるためのものであることを特徴とする、請求項21に記載の方法。

背景技術

0001

先願の利益の主張
本出願は、2013年10月13日に出願された米国仮特許出願第61/890,309号の利益を主張する。米国仮特許出願第61/890,309号は、参照により本明細書に組み込まれる。

0002

ネットワーク仮想化環境では、ハイパーバイザ上で展開されるより一般的なアプリケーションの1つは、3階層アプリケーションであり、3階層アプリケーションでは、ウェブ層データベース層、及びアプリケーション層が、異なるL3サブネット上にある。これは、最初にL3ルータ到着し、次に宛先仮想マシン(VM)に転送されるように、1つのサブネット内の1つのVMから、別のサブネット内の別のVMに横断するIPパケットを必要とする。これは、宛先VMが、発信VMと同じホストマシン上でホストされる場合でも、同様である。これは、不要なネットワークトラフィックを発生し、より高いレイテンシとより低いスループットとを引き起こし、ハイパーバイザ上で動作するアプリケーションの性能を著しく低下させる。一般的に言えば、任意の2つのVMが、互いに通信する2つの異なるIPサブネットであるときはいつも、この性能低下が発生する。

0003

図1は、ネットワーク仮想化インフラストラクチャ上に実装された論理ネットワーク100を示し、論理ネットワーク100では、異なるセグメント又はサブネット上の仮想マシン(VM)が、共有ルータ110を介して通信する。図に示すように、VM121〜129は、ホストマシン131〜133上で動作しており、ホストマシン131〜133は、物理ネットワーク105によって通信可能にリンクされた物理マシンである。

0004

VMは、ネットワークの異なるセグメント内にある。具体的にはVM121〜125は、ネットワークのセグメントA内にあり、VM126〜129は、ネットワークのセグメントB内にある。ネットワークの同じセグメント内のVMは、リンク層(L2)プロトコルを用いて互いに通信することができ、ネットワークの異なるセグメント内のVMは、リンク層プロトコルを用いて互いに通信することができず、ネットワーク層(L3)ルータ又はゲートウェイを用いて互いに通信しなければならない。異なるホストマシン内で動作するVMは、それらが、同じネットワークセグメント内にあるか否かにかかわらず、物理ネットワーク105内のネットワークトラフィックを介して互いに通信する。

0005

ホストマシン131〜133は、ソフトウェアスイッチを実装するハイパーバイザを実行しており、同じホストマシン内の同じセグメント内のVMが、物理ネットワーク105を経由せずに、ローカルに互いに通信することを可能にする。しかしながら、異なるセグメントに属するVMは、共有ルータ110のようなL3ルータを経由しなければならず、これは物理ネットワークの後ろでしか到達することができない。これは、同じホストマシン内で動作しているVM間でも同様である。例えば、VM125及びVM126間のトラフィックは、両方ともホストマシン132上で動作しているにもかかわらず、物理ネットワーク105及び共有ルータ110を経由しなければならない。

0006

必要なのは、VMを実行することができるすべてのホストでL3パケットを転送するための分散型ルータである。分散型ルータは、送信元VM及び宛先VM間に正確に1つのホップが存在するように、データパケットをローカルに(すなわち、送信元ハイパーバイザで)転送することができるようにすべきである。

0007

仮想化ネットワーク環境内のホストマシン上で動作する論理ネットワークの仮想マシン(VM)間のL3パケット転送を容易にするために、いくつかの実施形態は、論理ネットワークのための論理ルータ又は論理ルーティング要素(LRE)を定義する。いくつかの実施形態では、LREは、仮想分散型ルータ(VDR)として、その論理ネットワークのホストマシン間で分散して動作し、ここで、各ホストマシンは、LREのそれ自体のローカルインスタンスを、そのホスト上で動作するVMのためのL3パケット転送を実行するための管理される物理ルーティング要素(MPRE)として動作する。いくつかの実施形態では、MPREは、同じホストマシン上で動作するVM間のパケットのL3転送が、物理ネットワークを経由する必要なしに、ホストマシンでローカルに実行されることを可能にする。いくつかの実施形態は、異なるテナントのための異なるLREを定義し、ホストマシンは、複数のMPREとして、異なるLREを動作させることができる。いくつかの実施形態では、同じホストマシン上で動作する異なるテナントのための異なるMPREは、管理される物理スイッチング要素(MPSE)上の同じポート及び同じL2MACアドレスを共有する。

0008

いくつかの実施形態では、LREは、1つ又は複数の論理インタフェース(LIF)を含み、LIFの各々は、ネットワークの特定のセグメントへのインタフェースとして機能する。いくつかの実施形態では、各LIFは、自身のIPアドレスによってアドレス指定可能であり、ネットワークのその特定のセグメントのネットワークノード(例えば、VM)のためのデフォルトゲートウェイ又はARPプロキシとして機能する。各ネットワークセグメントは、LREに対する自身の論理インタフェースを有し、各LREは、自身の論理インタフェースのセットを有する。各論理インタフェースは、ネットワーク仮想化インフラストラクチャ内でユニークな自身の識別子(例えば、IPアドレス又はオーバレイネットワーク識別子)を有する。

0009

いくつかの実施形態では、このような論理ルータを用いる論理ネットワークは、異なるホストマシンで動作するMPREを、すべてのVMに同じように見えるようにすることによって、ネットワーク仮想化をさらに強化する。これらの実施形態のいくつかでは、各LREは、システム内のすべてのLREについて同じである仮想MACアドレスVMAC)によって、L2データリンク層でアドレス指定可能である。各ホストマシンは、ユニークな物理MACアドレス(PMAC)に関連付けられる。特定のLREを実装する各MPREは、物理ネットワーク上の他のホストマシンによって、そのホストマシンのユニークなPMACによってユニークにアドレス指定可能である。いくつかの実施形態では、MPREを離れる各パケットは、VMACを送信元アドレスとして有し、ホストマシンは、パケットがPNICに入り、物理ネットワークのホストを離れる前に、送信元アドレスをユニークなPMACに変更することになる。いくつかの実施形態では、MPREに入る各パケットは、VMACを宛先アドレスとして有し、ホストは、宛先アドレスが、ホストに関連付けられたユニークなPMACアドレスである場合、宛先MACアドレスを一般的なVMACに変更することになる。いくつかの実施形態では、ネットワークセグメントのLIFは、そのネットワークセグメント内のVMのためのデフォルトゲートウェイとして機能する。そのLIFの1つのためのARPクエリを受信するMPREは、クエリを他のホストマシンに転送することなく、ローカルにクエリに応答する。

0010

仮想化ソフトウェアを実行しない、又はMPREを動作させない物理ホストマシンのL3層ルーティングを実行するために、いくつかの実施形態は、これらの非VDRホストマシンのそれぞれのための専用ルーティングエージェント(指定されたインスタンス又は指定されたMPRE)として機能するように、ホストマシン上で動作するMPREを指定する。いくつかの実施形態では、仮想マシンから物理ホストへのデータトラフィックは、個々のMPREによって行われ、物理ホストから仮想マシンへのデータトラフィックは、指定されたMPREを経由しなければならない。

0011

いくつかの実施形態では、ホストマシン内の少なくとも1つのMPREは、ブリッジングMPREとして構成され、このようなブリッジは、ルーティングではなくブリッジングのために構成された論理インタフェースを含む。ルーティングのために構成された論理インタフェース(ルーティングLIF)は、L3層ネットワークアドレスをL2MACアドレスに解決することによって、論理ネットワークの異なるセグメント間のL3レベルルーティングを実行する。ブリッジングのために構成された論理インタフェース(ブリッジングLIF)は、MACアドレスをネットワークセグメント識別子(例えば、VNI)又は論理インタフェースと結合することによって、ブリッジングを実行する。

0012

いくつかの実施形態では、上述したようにホストマシン内で動作するLREは、コントローラクラスタによって生成される構成データセットによって構成される。いくつかの実施形態でのコントローラは、異なるテナント又はユーザによって作成及び指定される論理ネットワークに基づいて、これらの構成データセットを生成する。いくつかの実施形態では、ネットワーク仮想化インフラストラクチャのネットワークマネージャは、ユーザが、ネットワーク仮想化インフラストラクチャ上に実装することができる異なる論理ネットワークを生成することを可能にし、次に、コントローラが、LREのための構成データを含むホストマシンの特定の構成データセットを生成することができるように、これらの論理ネットワークのパラメータをコントローラにプッシュする。いくつかの実施形態では、ネットワークマネージャは、LREのための構成データを取得するために、ホストマシンに命令を与える。

0013

いくつかの実施形態は、LREのルーティング情報を動的に収集し、配信する。いくつかの実施形態では、エッジVMは、他のルータからのネットワークルートを学習し、学習したルートを、コントローラのクラスタに送信し、コントローラのクラスタは、学習したルートを、ホストマシンで動作するLREに伝播する。

0014

前述の概要は、本発明のいくつかの実施形態への簡単な導入として役立つことを意図している。それは、この文書に開示されたすべての発明の主題の導入又は概観であることを意味しない。以下の詳細な説明、及び、詳細な説明で参照される図面は、概要に記載された実施形態、並びに他の実施形態をさらに説明することになる。したがって、この文書によって説明されるすべての実施形態を理解するために、概要、詳細な説明、及び図面の完全なレビューが必要とされる。さらに、特許請求された主題は、主題の要旨から逸脱することなく、他の特定の形態で具体化されてよいため、特許請求された主題は、概要、詳細な説明、及び図面の例示的な詳細に限定されるべきではなく、添付の特許請求の範囲によって定義されるべきである。

0015

本発明の新規な特徴は、添付の特許請求の範囲に記載される。しかしながら、説明の目的のため、本発明のいくつかの実施形態は、以下の図面に記載される。

図面の簡単な説明

0016

異なるセグメント又はサブネット上の仮想マシン(VM)が、共有ルータを介して通信する、ネットワーク仮想化インフラストラクチャ上に実装された論理ネットワークを示す。
ホストマシン内でMPREとしてローカルに動作するLREによって実行されるパケット転送動作を示す。
LREのためのMPREを動作させる仮想化ソフトウェアを実行するホストマシンを示す。
MPSEによるL2転送動作を示す。
MPSEと協働するMPREによるL3ルーティング動作を示す。
MPSEと協働するMPREによるL3ルーティング動作を示す。
ホストの外部からのパケットに対してMPREによって実行されるL3ルーティング動作を示す。
ホストの外部からのパケットに対してMPREによって実行されるL3ルーティング動作を示す。
異なるホストマシンにまたがってMPREによって実装されるLREを有する論理ネットワークを概念的に示す。
ネットワーク仮想化インフラストラクチャのホストマシン内のMPREの物理的実装を示す。
異なるセグメントの仮想マシンからのデータパケットが、どのようにホスト内の異なる論理インタフェースに向けられるかを示す。
ホストマシンで動作する例示的なMPREのブロック図を示す。
MPSEからのデータパケットを処理する際にMPREによって実行されるプロセスを概念的に示す。
いくつかの実施形態に関する共通VMAC及びユニークなPMACによってアドレス指定可能なMPREを有する論理ネットワークを示す。
共通VMAC及びユニークなPMACを使用する例示的なルーティングされたL3ネットワークトラフィックを示す。
アップリンクモジュールによって実行される前処理動作のプロセスを概念的に示す。
アップリンクモジュールによって実行される後処理動作のプロセスを概念的に示す。
論理ネットワーク内のLREの論理インタフェースのARPクエリ動作を示す。
いくつかの実施形態に関するMPREが開始するARPクエリを示す。
MPREが解決することができるARP問い合わせに対して応答するためのプロキシとして機能するMPREを示す。
送信者MPREと同じホストマシン内にある仮想マシンに対するARP問い合わせ内のユニークなPMACの使用を示す。
MPREがそれらの解決テーブルを更新した後の、異なるセグメントのVM間のメッセージ受渡し動作を示す。
MPREがそれらの解決テーブルを更新した後の、異なるセグメントのVM間のメッセージ受渡し動作を示す。
MPREを使用することによって着信データパケットのためのアドレス解決を処理するためのプロセスを概念的に示す。
物理ホストとの間のパケットのL3ルーティングを処理するためのMPREを指定する論理ネットワークを示す。
論理ネットワーク内の非VDR物理ホストによって開始されるARP動作を示す。
異なるホスト上の仮想マシンから物理ホストへのパケットのルーティングのための指定されたMPREの使用を示す。
物理ホストから異なるホスト上の仮想マシンへのパケットのルーティングのための指定されたMPREの使用を示す。
物理ホストから異なるホスト上の仮想マシンへのパケットのルーティングのための指定されたMPREの使用を示す。
非VDR物理ホストからのL3層トラフィックを処理するためのプロセスを概念的に示す。
非VDR物理ホストへのL3層トラフィックを処理するためのプロセス2800を概念的に示す。
異なるオーバレイネットワーク間のブリッジとして機能するブリッジLIFを含むLREを示す。
その少なくとも1つが、ブリッジLIFとして構成された論理インタフェースを有するMPREを有するホストマシンである、複数のホストマシンを含む論理ネットワークを示す。
MPREによるMACアドレスの学習を示す。
MPREによって以前に学習されたMAC−VNIペアリングを使用する、2つの異なるオーバレイネットワーク上の2つのVM間のブリッジングを示す。
ブリッジングMPREと同じホストで動作していない2つのVM間のブリッジングを示す。
宛先MACアドレスが、ブリッジングテーブル内に一致するエントリを持たず、MPREが、ペアリングを探すためにネットワークをフラッディングしなければならないブリッジング動作を示す。
フラッディングに対する応答からのMACアドレスペアリングの学習を示す。
MPREでブリッジングを実行するためのプロセスを概念的に示す。
論理ネットワークの仕様が、ホストマシン内のLREの構成に変換される、ネットワーク仮想化インフラストラクチャを示す。
ネットワークマネージャから、個々のホストマシン内で動作するLREへの、構成データの配信を概念的に示す。
個々のホストマシンに配信される構成データセットの構造を示す。
LREのMPREへの動的ルーティング情報の収集及び配信を示す。
本発明のいくつかの実施形態を実装する電子システムを概念的に示す。

実施例

0017

以下の説明では、多くの詳細が、説明の目的のために記載される。しかしながら、当業者は、本発明が、これらの特定の詳細を使用せずに実施され得ることを理解するであろう。他の例では、不必要な詳細で本発明の説明を曖昧にしないために、周知の構造及びデバイスは、ブロック図の形式で示される。

0018

仮想化ネットワーク環境内のホストマシン上で動作する論理ネットワークの仮想マシン(VM)間のL3パケット転送を容易にするために、いくつかの実施形態は、論理ネットワークのための論理ルータ又は論理ルーティング要素(LRE)を定義する。いくつかの実施形態では、LREは、仮想分散型ルータ(VDR)として、その論理ネットワークのホストマシン間で分散して動作し、ここで、各ホストマシンは、LREのそれ自体のローカルインスタンスを、そのホスト上で動作するVMのためのL3パケット転送を実行するための管理される物理ルーティング要素(MPRE)として動作する。いくつかの実施形態では、MPREは、同じホストマシン上で動作するVM間のパケットのL3転送が、物理ネットワークを経由する必要なしに、ホストマシンでローカルに実行されることを可能にする。いくつかの実施形態は、異なるテナントのための異なるLREを定義し、ホストマシンは、複数のMPREとして、異なるLREを動作させることができる。いくつかの実施形態では、同じホストマシン上で動作する異なるテナントのための異なるMPREは、管理される物理スイッチング要素(MPSE)上の同じポート及び同じL2MACアドレスを共有する。

0019

いくつかの実施形態に関して、図2は、ホストマシンでローカルにMPREとして動作するLREによって実行されるパケット転送動作を示す。各ホストマシンは、1つ又は複数のVMをホストするために、仮想化機能を実行し、VMがネットワーク仮想化インフラストラクチャ内で互いに通信できるように、スイッチング機能を実行する。2つのVMが、異なるネットワークセグメントに属する場合であっても、同じホストマシン上の2つのVM間のトラフィックが、常にローカルに行われることになるように、各MPREは、そのホストマシン内でローカルにL3ルーティング動作を実行する。

0020

図2は、VM221〜229間のネットワーク通信のための論理ネットワーク200の実装を示す。論理ネットワーク200は、物理ネットワーク205によって相互接続されるコンピューティング及びストレージリソース集合上に仮想化されるネットワークである。相互接続されるコンピューティング及びストレージリソースのこの集合、並びに物理ネットワークは、ネットワーク仮想化インフラストラクチャを形成する。VM221〜229は、ホストマシン231〜233によってホストされ、ホストマシン231〜233は、物理ネットワーク205によって通信可能にリンクされる。ホストマシン231〜233の各々は、いくつかの実施形態では、VMを作成及びホストすることができるオペレーティングシステム(例えば、Linux(登録商標))によって管理されるコンピューティングデバイスである。VM221〜229は、ネットワークアドレス(例えば、L2のためのMACアドレス、L3のためのIPアドレス、など)のセットがそれぞれ割り当てられ、他のVMのような他のネットワーク要素との間でネットワークデータ送受信することができる仮想マシンである。

0021

VMは、ホストマシン231〜233上で動作する仮想化ソフトウェア(図示せず)によって管理される。仮想化ソフトウェアは、あるいは、仮想マシン技術の分野で「仮想マシンモニタ」、「ハイパーバイザ」、又は仮想化カーネルとして知られる1つ又は複数のソフトウェア構成要素を含む、1つ又は複数のソフトウェア構成要素及び/又は層を含むことができる。仮想化の専門用語は、時間と共に進化してきており、まだ完全には標準化されていないため、これらの用語は、ソフトウェア層と、それらが参照する構成要素との間の明確な区別を、必ずしも提供しない。本明細書で使用される「仮想化ソフトウェア」という用語は、一般的に、仮想マシンとホストプラットフォームとの間に論理的に介在するソフトウェア層又は構成要素を指す。

0022

図2の例では、各VMは、論理ネットワーク200の2つのセグメントのうちの一方で動作する。VM221〜225は、セグメントAで動作し、VM226〜229は、セグメントBで動作する。いくつかの実施形態では、ネットワークセグメントは、ネットワークの一部であり、ネットワーク内では、ネットワーク要素が、IPサブネットのようなリンク層L2プロトコルによって、互いに通信する。いくつかの実施形態では、ネットワークセグメントは、VXLAN又はVLANのようなカプセル化オーバレイネットワークである。

0023

いくつかの実施形態では、ネットワークの同じセグメント内のVMは、リンク層(L2)プロトコルで(例えば、各VMのL2MACアドレスにしたがって)互いに通信することができ、ネットワークの異なるセグメント内のVMは、リンク層プロトコルでは互いに通信することができず、ネットワーク層(L3)ルータ又はゲートウェイを介して互いに通信しなければならない。いくつかの実施形態では、VM間のL2レベルトラフィックは、各ホストマシン内でローカルに動作するMPSE(図示せず)によって処理される。したがって、例えば、VM223からVM224へのネットワークトラフィックは、ホスト231内で動作する第1のMPSEを通過することになり、第1のMPSEは、そのポートの1つからデータを受信し、ホストマシン232で動作する第2のMPSEに、物理ネットワーク205を介してデータを送信し、第2のMPSEは、次に、そのポートの1つを介してVM224にデータを送信することになる。同様に、VM228からVM229への同じセグメントのネットワークトラフィックは、ホスト233で動作する単一のMPSEを通過することになり、単一のMPSEは、ある仮想ポートから別の仮想ポートに、ホスト233内でローカルにトラフィックを転送することになる。

0024

その実装が、異なるネットワークセグメント間のトラフィックを処理する(標準的な物理ルータ、特にルーティング機能を実行するためのVM、などとして実装することができる)外部L3ルータに依存する図1の論理ネットワーク100とは異なり、図2の論理ネットワーク200の実装は、それぞれホストマシン231〜233内でローカルにL3ルーティング機能を実行するために、MPRE241〜243を使用する。異なるホストマシン内のMPREは、論理ネットワーク200内のVMのための論理L3ルータの機能を共同で実行する。いくつかの実施形態では、LREは、それらのMPREとなるように異なるホストマシン間で複製又はインスタンス化されるデータ構造として実装される。図2の例では、LREは、ホストマシン231〜233内で、MPRE241〜243としてインスタンス化される。

0025

図2の例では、VM222から発信され、VM227に宛てられたネットワークトラフィックのL3ルーティングは、MPRE241によって処理され、MPRE241は、VM222をホストするホストマシン231上でローカルに動作するLREインスタンシエイションである。MPRE241は、ルーティングされたデータパケットを、物理ネットワーク205を介してVM227に送信する前に、L3層ルーティング動作(例えば、リンク層アドレス解決)を、ホスト231内でローカルに実行する。これは、外部の共有L3ルータなしで行われる。同様に、VM225から発信される、VM226宛のネットワークトラフィックのL3ルーティングは、MPRE242によって処理され、MPRE242は、VM225をホストするホストマシン232上でローカルに動作するLREインスタンシエイションである。MPRE242は、L3層ルーティング動作を、ホスト232内でローカルに実行し、ルーティングされたデータパケットを、同様にホスト232によってホストされるVM226に直接送信する。したがって、2つのVM225及び226間のトラフィックは、物理ネットワーク205又は外部ルータを介して送信される必要はない。

0026

本発明のいくつかのより詳細な実施形態を、以下に説明する。セクションIは、LREベースのMPREを実装するVDR及びホストのアーキテクチャを説明する。セクションIIは、パケット処理のためのVDRの様々な使用を説明する。セクションIIIは、VDRの制御及び構成を説明する。最後に、セクションIVは、本発明のいくつかの実施形態が実装される電子システムを説明する。

0027

I.VDRのアーキテクチャ

0028

いくつかの実施形態では、LREは、仮想化ソフトウェア(例えば、ハイパーバイザ、仮想マシンモニタ、など)内で動作し、仮想化ソフトウェアは、(例えば、マルチテナントデータセンタ内の)1つ又は複数のVMをホストするホストマシン上で動作する。仮想化ソフトウェアは、VMの動作、並びに、ホストマシンの物理リソース及びネットワークリソースへのそれらのアクセスを管理し、LREのローカルインスタンシエイションは、ホストマシン内で、そのローカルMPREとして動作する。いくつかの実施形態について、図3は、LREのMPREを含む仮想化ソフトウェア305を実行するホストマシン300を示す。ホストマシンは、例えば、物理ネットワーク390を介して他の同様のホストマシンに接続する。この物理ネットワーク390は、いくつかの実施形態では、様々な物理スイッチ及びルータを含むことができる。

0029

図示のように、ホストマシン300は、物理NIC(PNIC)395を介して物理ネットワーク390へのアクセスを有する。ホストマシン300は、また、仮想化ソフトウェア305を実行し、VM311〜314をホストする。仮想化ソフトウェア305は、ホストされるVMと、物理NIC395(並びに、プロセッサ及びメモリのような他の物理リソース)との間のインタフェースとして機能する。VMの各々は、仮想化ソフトウェア305を介してネットワークにアクセスするための仮想NIC(VNIC)を含む。VM内の各VNICは、VM及び仮想化ソフトウェア305間のパケットの交換関与する。いくつかの実施形態では、VNICは、仮想NICエミュレータによって実装される物理NICのソフトウェア抽象化である。

0030

仮想化ソフトウェア305は、VM311〜314の動作を管理し、(いくつかの実施形態では、VMが接続する論理ネットワークを実装することによって)物理ネットワークへのVMのアクセスを管理するためのいくつかの構成要素を含む。図示のように、仮想化ソフトウェアは、MPSE320、MPRE330、コントローラエージェント340、VTEP350、及び、アップリンクパイプライン370のセットを含む、様々な構成要素を含む。

0031

コントローラエージェント340は、コントローラ、又はコントローラのクラスタから、制御プレーンメッセージを受信する。いくつかの実施形態では、これらの制御プレーンメッセージは、(MPSE320及びMPRE330のような)仮想化ソフトウェアの様々な構成要素、並びに/又は仮想マシンを構成するための構成データを含む。図3に示す例では、コントローラエージェント340は、コントローラクラスタ360から物理ネットワーク390からの制御プレーンメッセージを受信し、受信した構成データを、MPSE320を経由せずに、制御チャネルを介してMPRE330に提供する。しかしながら、いくつかの実施形態では、コントローラエージェント340は、物理ネットワーク390とは独立した直接データコンジット(図示せず)から制御プレーンメッセージを受信する。いくつかの他の実施形態では、コントローラエージェントは、MPSE320から制御プレーンメッセージを受信し、構成データを、MPSE320を介してルータ330に転送する。仮想化ソフトウェアのコントローラエージェント及び構成を、以下のセクションIIIでさらに説明する。

0032

VTEP(VXLANトンネルエンドポイント)350は、ホスト300が、論理ネットワークトラフィック(例えば、VXLANトラフィック)のためのトンネルエンドポイントとして機能することを可能にする。VXLANは、オーバレイネットワークカプセル化プロトコルである。VXLANカプセル化によって作成されるオーバレイネットワークは、時には、VXLANネットワーク、又は単にVXLANと呼ばれる。ホスト300上のVMが、同じVXLANネットワーク内だが異なるホスト上の別のVMにデータパケット(例えば、イーサネット(登録商標)フレーム)を送信する場合、VTEPは、パケットを物理ネットワークに送信する前に、VXLANネットワークのVNI及びVTEPのネットワークアドレスを使用して、データパケットをカプセル化することになる。パケットは、物理ネットワークを介して宛先ホストトンネリングされる(すなわち、カプセル化は、介在するネットワーク要素に対して、基になるパケットを透明にする)。宛先ホストでのVTEPは、パケットのカプセル化を解除し、元の内部のデータパケットのみを宛先VMに転送する。いくつかの実施形態では、VTEPモジュールは、VXLANカプセル化のためのコントローラインタフェースとしてのみ機能し、VXLANパケットのカプセル化及びカプセル化解除は、アップリンクモジュール370で成し遂げられる。

0033

MPSE320は、物理ネットワーク390をインタフェースする物理NIC395との間で、ネットワークデータを配信する。MPSEは、また、物理NICをVM311〜314、MPRE330、及びコントローラエージェント340と通信可能に相互接続するいくつかの仮想ポート(vPort)を含む。各仮想ポートは、いくつかの実施形態では、ユニークなL2MACアドレスと関連付けられる。MPSEは、その仮想ポートに接続された任意の2つのネットワーク要素間のL2リンク層パケット転送を実行する。MPSEは、また、その仮想ポートの任意のものに接続された任意のネットワーク要素と、物理ネットワーク390上の到達可能なL2ネットワーク要素(例えば、別のホスト上で動作する別のVM)との間のL2リンク層パケット転送を実行する。いくつかの実施形態では、MPSEは、論理スイッチング要素(LSE)のローカルインスタンシエイションを実装し、LSEは、異なるホストマシン間で動作し、同じホストマシン上又は異なるホストマシン上のVM間のL2パケットスイッチングを実行することができ、又は、MPSEは、いくつかの論理ネットワークのためのいくつかのこのようなLSEを実装する。

0034

MPRE330は、MPSE320上の仮想ポートから受信したデータパケットに、(例えば、L3IPアドレスからL2MACアドレスへの解決を実行することによって)L3ルーティングを実行する。それぞれのルーティングされたデータパケットは、次に、解決されたL2MACアドレスにしたがってその宛先に転送されるように、MPSE320に送り返される。この宛先は、MPSE320の仮想ポートに接続された別のVM、又は、物理ネットワーク390上の到達可能なL2ネットワーク要素(例えば、別のホスト上で動作する別のVM、物理的な非仮想化マシン、など)であってよい。

0035

上述したように、いくつかの実施形態では、MPREは、論理ルーティング要素(LRE)のローカルインスタンシエイションであり、LREは、異なるホストマシン間で動作し、同じホストマシン上又は異なるホストマシン上のVM間のL3パケット転送を実行することができる。いくつかの実施形態では、ホストマシンは、単一のMPSEに接続された複数のMPREを有することができ、ホストマシン内の各MPREは、異なるLREを実装する。MPRE及びMPSEは、MPRE及びMPSEが、いくつかの実施形態ではソフトウェアで実装されているとしても、「論理」ルーティング/スイッチング要素と区別するために、「物理」ルーティング/スイッチング要素と呼ばれる。いくつかの実施形態では、MPREは、「ソフトウェアルータ」と呼ばれ、MPSEは、「ソフトウェアスイッチ」と呼ばれる。いくつかの実施形態では、LRE及びLSEは、総じて、論理転送要素LFE)と呼ばれ、MPRE及びMPSEは、総じて、管理される物理転送要素(MPFE)と呼ばれる。

0036

いくつかの実施形態では、MPRE330は、1つ又は複数の論理インタフェース(LIF)を含み、各LIFは、ネットワークの特定のセグメントに対するインタフェースとして機能する。いくつかの実施形態では、各LIFは、それ自体のIPアドレスによってアドレス指定可能であり、ネットワークのその特定のセグメントのネットワークノード(例えば、VM)のためのデフォルトゲートウェイ又はARPプロキシとして機能する。以下に詳細に説明するように、いくつかの実施形態では、異なるホストマシン内のMPREのすべては、同じ「仮想」MACアドレスによってアドレス指定可能であり、各MPREには、どのホストマシンでMPRE動作を行うのかを示すために、「物理」MACアドレスも割り当てられる。

0037

アップリンクモジュール370は、MPSE320及び物理NIC395間でデータを中継する。アップリンクモジュール370は、それぞれ動作のいくつかを実行する出口チェーン及び入口チェーンを含む。これらの動作のいくつかは、MPRE330のための前処理及び/又は後処理動作である。アップリンクモジュール370の動作を、図14〜15を参照して以下にさらに説明する。

0038

図3によって示すように、仮想化ソフトウェア305は、複数の異なるLREからの複数のMPREを有する。マルチテナント環境では、ホストマシンは、複数の異なるユーザ又はテナントからの(すなわち、異なる論理ネットワークに接続された)仮想マシンを動作させることができる。いくつかの実施形態では、各ユーザ又はテナントは、そのL3ルーティングを処理するための、ホスト内の対応するMPREインスタンシエイションを有する。いくつかの実施形態では、異なるMPREが、異なるテナントに属するにもかかわらず、それらは、すべて、MPSE320上の同じvPort、したがって同じL2MACアドレスを共有する。いくつかの他の実施形態では、異なるテナントに属するそれぞれの異なるMPREは、MPSEに対するそれ自体のポートを有する。

0039

MPSE320及びMPRE330は、データパケットが、(異なるテナントのVMとして、同じ論理ネットワークに接続されたVMが、互いに分離される限り)外部の物理ネットワーク390を介して送信されることなく、VM311〜314間で転送されることを可能にする。

0040

図4は、MPSE320によるL2転送動作を示す。「1」とラベル付けされた動作は、完全にホストマシン300内で生じる、VM311とVM312の間のネットワークトラフィックを表す。これは、VM313と、別のホストマシン上の別のVMとの間のネットワークトラフィックを表す、「2」とラベル付けされた動作と対比される。他のホストマシンに到達するために、MPSE320は、NIC395を介して物理ネットワーク390上にパケットを送信する。

0041

図5a〜bは、MPSE320と協働するMPRE330によるL3ルーティング動作を示す。MPRE330は、関連するMACアドレスを有し、VM311〜314の任意のものからL2レベルトラフィックを受信することができる。図5aは、その宛先がMPRE330と同じホスト内のパケットのための第1のL3ルーティング動作を示す。「1」とラベル付けされた動作では、VM312は、MPREのMACアドレスを使用することによって、データパケットをMPRE330に送信する。「2」とラベル付けされた動作では、MPRE330は、その宛先L3レベルIPアドレスをL2レベル宛先MACアドレスに解決することによって、受信したデータパケットにL3ルーティング動作を実行する。これは、以下に詳細に説明するように、アドレス解決プロトコル(ARP)要求を送信することをMPRE330に要求する可能性がある。ルーティングされたパケットは、次に、「3」とラベル付けされた動作でMPSE320に送り返される。宛先MACアドレスは、ホストマシン300内のVM(すなわち、VM311)に対するものであるため、動作「3」でのMPSE320は、ルーティングされたパケットを、パケットが決して物理ネットワーク390に到達することなく、宛先VMに直接転送する。

0042

図5bは、その宛先が、物理ネットワークによってのみ到達することができるリモートホスト内にあるパケットのための第2のL3ルーティング動作を示す。動作「4」及び「5」は、「1」及び「2」の類似の動作であり、その間、VM312は、データパケットをMPRE330に送信し、MPRE330は、受信したデータパケットにL3ルーティング動作(複数可)を実行し、ルーティングされたパケットをMPSE320(再び、ことによると、宛先IPアドレスをMACアドレスに解決するために、ARP要求を送信する)に送り返す。動作「6」の間、MPSE320は、ルーティングされたパケットを、宛先のL2MACアドレスに基づいて、物理NIC395を介して物理ネットワーク外に送信する。

0043

図5a〜bは、MPREと同じホストマシン内のVMのためのL3ルーティング動作を示す。いくつかの実施形態では、MPREは、MPREのホストマシン外のエンティティのためのL3ルーティング動作を実行するためにも使用されてよい。例えば、いくつかの実施形態では、ホストマシンのMPREは、それ自体のMPREを持たない別のホストマシンのためのL3ルーティングを実行するための「指定されたインスタンス」として機能することができる。「指定されたインスタンス」として機能するMPREの例を、以下のセクションII.Cでさらに説明する。

0044

図6a〜bは、物理ネットワーク390からホスト300に入るパケットのための、MPRE330によって実行されるL3ルーティング動作を示す。それ自体のMPREも動作させるホスト上のVMから送信されるパケットは、MPREによってルーティングされていることになるが、パケットは、それ自体はVDR MPREを動作させない他のホストからVM311〜314に送信されてもよい。図6aは、動作「1」〜「3」での、物理ネットワークから受信され、ホスト300内の仮想マシンに送信されるパケットのためのルーティング動作を示す。動作「1」では、外部のエンティティが、MPREのMACアドレスを指定することによって、物理ネットワークを介して、MPRE330へのMPSE320にパケットを送信する。「2」とラベル付けされた動作では、MPRE330は、その宛先L3レベルIPアドレスをL2レベル宛先MACアドレスに解決することによって、受信したデータパケットにL3ルーティング動作を実行する。ルーティングされたパケットは、次に、「3」とラベル付けされた動作で、MPSE320を介して宛先仮想マシンに送信される。

0045

図6bは、動作「4」〜「6」での、外部のエンティティから別の外部のエンティティ(例えば、別のホストマシン内の仮想マシン)に送信されるパケットのためのルーティング動作を示す。動作「4」及び「5」は、「1」及び「2」の類似の動作であり、その間、MPRE330は、物理ネットワーク及びMPSE320からパケットを受信し、受信したデータパケットにL3ルーティング動作を実行する。動作「6」では、MPRE330は、MPSE320にデータパケットを送り返し、MPSE320は、解決されたMACアドレスに基づいて、別のホストマシン内の別の仮想マシンにパケットを送信する。以下に説明するように、これは、MPRE330が、LREを動作させない外部のホストとの通信のためのLREの指定されたインスタンシエイションである場合、生じる可能性がある。

0046

いくつかの実施形態では、ホストマシン300は、論理ネットワークをサポートすることができるネットワーク仮想化インフラストラクチャを形成するための物理ネットワークによって相互接続された多くのホストマシンのうちの1つである。このようなネットワーク仮想化インフラストラクチャは、1つ又は複数のユーザ指定された論理ネットワークを同時に実装することによって、複数のテナントをサポートすることができる。このような論理ネットワークは、仮想マシン間のL3レベルルーティングを実行するための1つ又は複数の論理ルータを含むことができる。いくつかの実施形態では、論理ルータは、複数のホストマシン間でインスタンス化されたMPREによって、集団的に実装される。

0047

図7は、異なるホストマシンにわたってMPREによって実装される論理ルータを有する論理ネットワーク701及び702を概念的に示す。論理ネットワーク701及び702は、物理ネットワークによって相互接続されたいくつかのホストマシンを含むネットワーク仮想化インフラストラクチャ上に同時に実装される。図に示すように、第1の論理ネットワーク701は、テナントXのためのものであり、第2の論理ネットワーク702は、テナントYのためのものである。各テナントの論理ネットワークは、いくつかの仮想マシンを含む。テナントXの仮想マシンは、セグメントA、B、C、及びDに分割される。テナントYの仮想マシンは、セグメントE、F、G、及びHに分割される。いくつかの実施形態では、セグメント内の仮想マシンは、論理スイッチ上のL2リンク層プロトコルを使用して互いに通信することができる。いくつかの実施形態では、少なくともいくつかのセグメントは、VXLANネットワークのようなカプセル化オーバレイネットワークである。いくつかの実施形態では、セグメントの各々は、異なるIPサブネットを形成する。

0048

各論理ネットワークは、それ自体の論理ルータを有する。テナントXのための論理ネットワーク701は、セグメントA、B、C、及びD間のルーティングのための論理ルータとして、LRE711を有する。テナントYのための論理ネットワーク702は、セグメントE、F、G、及びH間のルーティングのための論理ルータとして、LRE712を有する。各論理ルータは、異なるホストマシン間でインスタンス化されたMPREによって、ネットワーク仮想化インフラストラクチャ内に実装される。LRE711内のいくつかのMPREインスタンシエイションは、LRE712内のいくつかのMPREインスタンシエイションと同じホストマシンで動作している。

0049

各ネットワークセグメントは、論理ルータに対するそれ自体の論理インタフェースを有し、各論理ルータは、論理インタフェースのそれ自体のセットを有する。図示のように、論理ルータ711は、それぞれセグメントA、B、C、及びDのための論理インタフェースLIF A、LIF B、LIF C、及びLIF Dを有し、論理ルータ712は、それぞれセグメントE、F、G、及びHのための論理インタフェースLIF E、LIF F、LIF G、及びLIF Hを有する。各論理インタフェースは、ネットワーク仮想化インフラストラクチャ内でユニークなそれ自体の識別子(例えば、IPアドレス、又はオーバレイネットワーク識別子)である。結果として、テナントXのネットワークトラフィックを、テナントYのネットワークトラフィックから完全に分離することができる。

0050

図8は、ネットワーク仮想化インフラストラクチャのホストマシン内の論理ルータの物理的実装を示す。具体的には、図は、ホストマシン801及び802内の論理ネットワーク701及び702の(部分的)実装を示す。図示のように、ホストマシン801は、仮想マシン811〜815をホストしており、ホストマシン802は、仮想マシン821〜826をホストしている。これらの中で、仮想マシン811〜812及び821〜823は、テナントXの仮想マシンであり、仮想マシン813〜816及び824〜826は、テナントYの仮想マシンである。

0051

各ホストマシンは、異なる2つのテナントのための2つのMPREを含む。ホストマシン801は、それぞれテナントX及びYのためのMPRE841及び842を有する。ホストマシン802は、それぞれテナントX及びYのためのMPRE843及び844を有する。ホスト801は、仮想マシン811〜816及びMPRE841〜842間のL2層パケット転送を実行するためのMPSE851を動作させ、ホスト801は、仮想マシン821〜826及びMPRE843〜844間のL2層パケット転送を実行するためのMPSE852を動作している。

0052

各MPREは、そのホストマシン上で動作する仮想マシンとインタフェースするための論理インタフェースのセットを有する。MPRE841及び843は、テナントXのためのMPREであり、それらは、テナントXのネットワークセグメント(すなわち、セグメントA、B、C、及びD)のための論理インタフェースのみを有することができ、テナントYのMPRE842及び844は、テナントYのネットワークセグメント(すなわち、セグメントE、F、G、及びH)のための論理インタフェースのみを有することができる。各論理インタフェースは、ネットワークIPアドレスと関連付けられる。MPREに取り付けられた論理インタフェースのIPアドレスは、MPREを、そのローカルホスト上で動作するVMによってアクセス可能にすることを可能にする。例えば、VM811は、ホスト801上で動作するセグメントAの仮想マシンであり、1.1.1.253であるLIF AのIPアドレスを使用することによって、そのL3ルータとしてMPRE841を使用する。いくつかの実施形態では、MPREは、非アクティブであるように構成されたLIFを含むことができる。例えば、MPRE841のLIF Dは、ホスト801が、セグメントD内のどのVMも動作させないため、非アクティブである。すなわち、いくつかの実施形態では、特定のLREのための各MPREは、LREの論理インタフェースのすべてを使用して構成されるが、LREの異なるローカルインスタンシエイション(すなわち、MPRE)は、ローカルLREインスタンシエイションを有するホストマシン上で動作するVMに基づいて非アクティブな異なるLIFを有することができる。

0053

いくつかの実施形態では、同じセグメントのためのLIFが、これらのLIFが異なるホスト内の異なるMPREに取り付けられている場合でも、同じIPアドレスを有することは、注目に値する。例えば、ホスト801上のMPRE842は、セグメントEのための論理インタフェース(LIF E)を有し、ホスト802上のMPRE844もそうである。MPRE842のLIF Eは、MPRE844のLIF Eと同じIPアドレス4.1.1.253を共有する。すなわち、VM814(ホスト801上で動作するセグメントE内のVM)及びVM824(ホスト802上で動作するセグメントE内のVM)の両方は、それらの個々のMPREにアクセスするために、同じIPアドレス4.1.1.253を使用する。

0054

上述したように、いくつかの実施形態では、同じホストマシン上で動作する異なるMPREは、MPSE上の同じポートを共有し、これは、同じホスト上で動作するすべてのMPREが、L2MACアドレスを共有することを意味する。いくつかの実施形態では、データパケットを、異なるテナント及び異なるデータネットワークセグメントから分離するために、論理インタフェースのユニークなIPアドレスが使用される。いくつかの実施形態では、異なるネットワークセグメントからのデータパケットを、異なる論理インタフェースに向けるために、他の識別メカニズムが使用される。いくつかの実施形態は、パケットを異なるセグメントから分離するために、異なるセグメントのためのユニークな識別子を使用する。サブネットであるセグメントについて、いくつかの実施形態は、パケットが正しいサブネットからのものであるかどうかを確認するために、パケット内のIPアドレスを使用する。オーバレイネットワークに対応するセグメントについて、いくつかの実施形態は、データパケットを、その対応する論理インタフェースに向けるために、ネットワークセグメント識別子を使用する。いくつかの実施形態では、ネットワークセグメント識別子は、論理ネットワークのセグメントであるオーバレイネットワークの識別子(例えば、VNI、VXLAN ID、又はVLANタグ若しくはID)である。いくつかの実施形態では、論理ネットワークの各セグメントは、そのタイプに関係なく、セグメントの識別子としてVNIが割り当てられる。

0055

図9は、異なるセグメントの仮想マシンからのデータパケットが、どのように、ホスト801内の異なる論理インタフェースの方に向けられるのかを示す。図示のように、VM811〜816は、MPSE851の異なるポートに接続され、テナントXのMPRE841、及び、テナントYのMPRE842は、MACアドレス「01:23:45:67:89:ab」(この説明のために、「VMAC」と呼ぶ)を有するポートに接続される。セグメントAのVM811からのパケット901、及び、セグメントGのVM815からのパケット902は、MPSE851に送信される。MPSE851は、今度は、パケット901及び902を、両方のパケットのための宛先MACアドレス「VMAC」に基づいて、MPRE841及び842の仮想ポートに向ける。パケット901は、セグメントAのためのVNI(「VNI A」)を担持し、パケット902は、セグメントGのためのVNI(「VNI G」)を担持する。MPRE841の論理インタフェース「LIF A」は、パケット901を、そのネットワークセグメント識別子「VNI A」に基づいて受け入れ、MPRE842の論理インタフェース「LIF G」は、パケット902を、そのネットワークセグメント識別子「VNI G」に基づいて受け入れる。テナントは、同じネットワークセグメントを共有せず、したがって、VNIを共有しないため、異なるテナントからのデータパケットは、互いに安全に分離される。

0056

この図は、パケットを正しい論理ルータ及び論理ルータインターフェイスに分離するために、パケットのVNI(ネットワーク識別子タグ)を使用することを示しているが、異なる実施形態は、他の識別子を使用することができる。例えば、いくつかの実施形態は、(パケットが、送信元VMと同じネットワークプレフィックスを有するLIFを介して送信されることを保証するために)パケットの送信元IPアドレスを使用し、又は、送信元IP及びネットワーク識別子タグの組み合わせを使用する。

0057

いくつかの実施形態について、図10は、ホストマシン内で動作する例示的なMPREインスタンシエイション1000のブロック図を示す。図示のように、MPRE1000は、仮想ポート1053でMPSE1050に接続される。MPSE1050は、MPRE1000と同じホスト内で動作する仮想マシンに接続され、並びに、アップリンクモジュール1070及び物理NIC1090を介して物理ネットワークに接続される。MPRE1000は、データリンクモジュール1010及びルーティングプロセッサ1005、論理インタフェースデータストレージ1035、ルックアップテーブルストレージ1040、並びに、構成データストレージ1045を含む。ルーティングプロセッサ1005は、入口パイプライン1020、出口パイプライン1025、シーケンサ1030を含む。

0058

データリンクモジュール1010は、MPRE1000のためのMPSE1050とのリンク層(L2)インタフェースである。これは、ポート1053に割り当てられたMACアドレス(図示の例では、「01:23:45:67:89:ab」)にアドレスされた入力データパケットを受け入れる。これは、また、出力データパケットをMPSE
1050に送信する。いくつかの実施形態では、データリンクモジュールは、ブロードキャストアドレス(「ff.ff.ff.ff.ff.ff」)及び/又はマルチキャストアドレスを有するデータパケットも受け入れる。

0059

入口パイプライン1020は、入力データパケットを、それらがルーティングシーケンサ1030によって順次に処理される前にキューアップするためのものである。いくつかの実施形態では、入口パイプラインは、入力データパケットに異なる処理動作を実行するいくつかのパイプラインステージも含む。いくつかの実施形態では、これらの入口処理動作は、(アクセス制御リストACLにしたがう)入口アクセス制御、及び、送信元ネットワークアドレス変換(NAT)を含む。いくつかの実施形態では、これらの動作の少なくともいくつかは、ルックアップテーブルストレージ1040及び論理インタフェースデータストレージ1035に格納されたデータに基づくルーティング又はブリッジング動作である。いくつかの実施形態では、入口パイプラインは、入力パケットのためのインバウンドLIFとして識別される論理インタフェースのための指定されたデータにしたがってアクションを実行する。

0060

出口パイプライン1025は、ルーティングシーケンサ1030によって生成された出力データパケットを、それらがデータリンクモジュール1010によって、MPSE1050を介して送出される前にキューアップするためのものである。いくつかの実施形態では、出口パイプラインは、出力データパケットに異なる処理動作を実行するいくつかのパイプラインステージも含む。いくつかの実施形態では、これらの出口処理動作は、(アクセス制御リストACLにしたがう)出口アクセス制御、及び、宛先ネットワークアドレス変換(NAT)を含む。いくつかの実施形態では、これらの動作の少なくともいくつかは、ルックアップテーブルストレージ1040及び論理インタフェースデータストレージ1035に格納されたデータに基づくルーティング又はブリッジング動作である。いくつかの実施形態では、出口パイプラインは、出力パケットのためのアウトバウンドLIFとして識別される論理インタフェースのための指定されたデータにしたがってアクションを実行する。

0061

シーケンサ1030は、入口パイプライン1020及び出口パイプライン1025間の連続した動作を実行する。いくつかの実施形態では、ルーティングシーケンサは、ARP動作及びブリッジング動作のような順次動作を実行する。いくつかの実施形態では、ルーティングシーケンサは、ARPクエリ及び応答を生成するように、必要なときに新しいパケットを作成し、ネットワークに注入する。これは、前処理されたデータパケットを入口パイプライン1020から取得し、後処理のための出口パイクラインに出力パケットを格納する。

0062

いくつかの実施形態のルーティングプロセッサ1005は、最初に入力データパケットを様々な論理インタフェースに分類することによって、そのルーティング決定を行う。ルーティングプロセッサ1005は、また、各論理インタフェースの現在の状態を更新し、論理インタフェースデータストレージ1035に格納する。例えば、ルーティングプロセッサ1005は、データパケットが、第2の論理インタフェースに取り付けられた第2のネットワークセグメント内の第2の仮想マシンから、第3の論理インタフェースに取り付けられた第3のネットワークセグメント内の第3の仮想マシンに進む間、論理インタフェースの現在の状態に基づいて、第1の論理インタフェースに取り付けられた第1のネットワークセグメント内の第1の仮想マシンへのARP応答を生成する。第1、第2、及び第3の論理インタフェースの現在の状態は、次に、それに応じて更新され、論理インタフェースデータストレージ1035に格納される。いくつかの実施形態では、ルーティングプロセッサ1005は、また、特定の論理インタフェースの代わりに、再び、その特定の論理インタフェースの現在の状態に基づいて、(例えば、ARP要求のための)新しいデータパケットを生成する。

0063

ルーティングプロセッサ1005は、また、ルックアップテーブルストレージ1040の内容に基づいて、そのルーティング決定を行う。いくつかの実施形態では、ルックアップテーブルストレージ1040は、(例えば、ネットワーク層IPアドレスからリンク層MACアドレスへの)L3及びL2アドレス解決のための解決テーブル(又は、ARPテーブル)を格納する。いくつかの実施形態では、ルーティングシーケンサは、(例えば、あるIPサブネットから別のIPサブネットへの)L3レベルルーティングを実行するだけでなく、同じIPサブネット内で動作する(VXLANネットワーク及びVLANネットワーク間のような)異なるオーバレイネットワーク間のブリッジングも実行する。これらの実施形態のいくつかでは、ルックアップテーブルストレージ1040は、ネットワークセグメント識別子(VNI)をMACアドレスと結びつけるために必要なブリッジングテーブルを格納する。ルーティングプロセッサ1005は、また、入力パケットから学習することによって、ブリッジングテーブル及びARPテーブル内のエントリを更新する。

0064

MPRE1000は、構成データストレージ1045も含む。ストレージ1045は、MPRE1000の内部の様々なモジュールを構成するためのデータを格納する。例えば、いくつかの実施形態では、ストレージ1045内の構成データは、いくつかの論理インタフェース、並びに、各論理インタフェースの(そのIPアドレス、関連するネットワークセグメント、アクティブ非アクティブ状態、LIFタイプ、などのような)パラメータを指定する。いくつかの実施形態では、構成データは、MPRE1000をアドレス指定するために同じホストマシン内の仮想マシンによって使用される仮想MACアドレス(VMAC)、及び、MPRE1000をアドレス指定するために他のホストマシンによって使用されるその物理MACアドレス(PMAC)のような、他のパラメータも指定する。いくつかの実施形態では、構成データは、ACL、NAT、及び/又はファイアウォール動作のためのデータも含む。いくつかの実施形態では、構成データストレージ1000内のデータは、(図3のコントローラエージェント340のような)ホストマシン内のコントローラエージェントを介して、コントローラクラスタから受信される。構成データ及び制御プレーン動作を、以下のセクションIIIでさらに説明する。

0065

図11は、MPSEからのデータパケットを処理する際にMPREによって実行されるいくつかの実施形態のプロセス1100を概念的に示す。いくつかの実施形態では、プロセス1100は、ルーティングプロセッサ1005によって実行される。プロセス1100は、MPREが、MPSEからデータパケットを受信すると、開始する。プロセスは、(1110で)例えば、ネットワークセグメント識別子(例えば、VNI)に基づいて、インバウンドデータパケットのための論理インタフェース(インバウンドLIF)を識別する。

0066

プロセスは、次に、(1120で)インバウンドLIFが、ブリッジングのための論理インタフェース(ブリッジLIF)、又はL3ルーティングを実行するための論理インタフェース(ルーティングLIFの)のどちらであるかを判定する。いくつかの実施形態では、論理インタフェースは、ルーティングLIF又はブリッジLIFのいずれかとして構成される。識別されたLIFがブリッジLIFである場合、プロセスは、1123に進む。識別されたLIFがルーティングLIFである場合、プロセスは、1135に進む。

0067

1123では、プロセスは、送信元MACと、入力パケットのネットワークセグメント識別子(例えば、VNI)との間のペアリングを学習する。送信元MACは、VNIによって識別されるネットワークセグメント内にあることが確実であるため、この情報は、その宛先アドレスとして同じMACアドレスを有するパケットをブリッジングするために有用である。この情報は、いくつかの実施形態では、このMACアドレスとそのVNIとの間のペアリングを提供するために、ブリッジテーブルに格納される。

0068

次に、プロセスは、(1125で)入力データパケット内の宛先MACが、ブリッジングを必要とするMACであるかどうかを判定する。ブリッジングを必要とする宛先MACは、送信元ネットワークセグメント内の既知の宛先を持たないMACであり、(例えば、送信元VNIと同じIPサブネット上にあるため)ルーティングされることができない。宛先MACがブリッジングを要求する場合、プロセスは1130に進み、そうでない場合、プロセスは終了する。

0069

1130では、プロセスは、ブリッジングテーブルにしたがって、未知の宛先MACをVNIと結びつけることによって、ブリッジング動作を実行する。いくつかの実施形態では、このようなエントリを見つけることができない場合、プロセスは、未知の宛先MACのための一致するVNIを見つけるために、MPREに取り付けられたすべての他のブリッジLIFをフラッディングする。いくつかの実施形態では、プロセスは、ファイアウォールがこのブリッジLIFのために有効になっている場合、ブリッジングを実行しないことになる。ブリッジング動作を、以下のセクションII.Dでさらに説明する。いくつかの実施形態では、動作1130は、シーケンサ1030のようなシーケンシャルモジュールによって実行される一連の動作である。ブリッジングを実行した後、プロセスは、1150に進む。

0070

1135では、プロセスは、入力データパケット内の宛先MACが、MPREにアドレスされているかどうかを判定する。いくつかの実施形態では、すべてのMPREは、宛先としての一般的(包括的、generic)な仮想MACアドレス(VMAC)に応答する。いくつかの実施形態では、MPRE内の個々のLIFは、宛先としてのそれら自身のLIF MAC(LMAC)に応答する。宛先MACアドレスが、MPRE(又は、LIF)のためのものである場合、プロセスは、1140に進む。そうでない場合、プロセス1100は終了する。

0071

1140では、プロセスは、入力データパケット内の宛先IPアドレスを解決する(1140)。いくつかの実施形態では、MPREは、最初に、ARPテーブル内のIPアドレスをルックアップすることによって、IPアドレスをローカルに解決することを試みる。一致するエントリがARPテーブル内に見つからない場合、プロセスは、ARPクエリを開始し、宛先MACアドレスを取得することになる。ARP動作を、以下のセクションII.Bでさらに説明する。いくつかの実施形態では、動作1140は、シーケンサ1030のようなシーケンシャルモジュールによって実行される一連の動作である。

0072

プロセスは、次に、入力パケット(又は、この時点でより適切には、出力パケット)のためのアウトバウンドLIFを識別する(1150)。ブリッジLIFであるインバウンドLIFを通って来るデータパケットに関して、アウトバウンドLIFは、ブリッジ結合によって提供されるVNIによって識別されるブリッジLIFである。ルーティングLIFであるインバウンドLIFを通って来るデータパケットに関して、いくつかの実施形態は、宛先IPアドレスを調べることよって、アウトバウンドLIFを識別する。いくつかの実施形態では、アウトバウンドLIFは、ARP解決テーブルによって提供されるVNIによって識別されるルーティングLIFである。

0073

アウトバウンドLIFを識別した後、プロセスは、アウトバウンドLIFを使用することによって、出力パケットを正しい宛先セグメントに送信する(1160)。いくつかの実施形態では、アウトバウンドLIFは、例えば、出力パケットに、宛先セグメントのネットワークセグメント識別子をタグ付けすることによって、宛先セグメントのためのパケットを準備する。次に、プロセス1100は、終了する。

0074

II.VDRパケット処理動作

0075

A.ローカル及びリモートにMPREにアクセスする

0076

前述のように、セクションIで上述したLREは、仮想分散型ルータ(VDR)である。これは、MPREと異なるホスト内のLREの異なるインスタンシエイション間で、ルーティング動作(L3層ルーティングか、ブリッジングかどうかにかかわらす)を分散する。いくつかの実施形態では、VDRを用いる論理ネットワークは、MPREのすべてを仮想マシンのすべてに同じように見えるようにすることによって、ネットワークの仮想化をさらに強化する。これらの実施形態のいくつかでは、各MPREは、システム内のMPREのすべてについて同じであるMACアドレス(VMAC)によって、L2データリンク層でアドレス指定可能である。これは、本明細書では仮想MACアドレス(VMAC)と呼ばれる。VMACは、特定の論理ネットワーク内のMPREのすべてが、仮想マシン及び論理ネットワークのユーザ(例えば、ネットワーク管理者)に1つの連続した論理ルータのように見られることを可能にする。

0077

しかしながら、いくつかの実施形態では、MPREは、互いに、他のホストマシンと、又は、他のホストマシン内のネットワーク要素(例えば、他のホストマシン内のMPRE及び/又はVM)と通信することを必要とする。これらの実施形態のいくつかでは、VMACに加えて、各MPREは、物理ネットワーク上の他のホストマシンからの物理MACアドレス(PMAC)によってユニークにアドレス指定可能である。いくつかの実施形態では、MPREをアドレス指定するために使用されるこのユニークなPMACアドレスは、MPREを動作させるホストマシンに割り当てられるプロパティである。いくつかの実施形態は、MPREは、そのホストマシンのPMACによって、それ自体の論理ネットワーク内でユニークにアドレス指定可能であるため、ホストマシンのこのユニークなPMACを、MPREのユニークなPMACと呼ぶ。いくつかの実施形態では、異なるテナントのための異なる論理ネットワークは、ホストマシン内で互いに安全に分離されるため、同じホストマシン上で動作する異なるテナントのための異なるMPREは、すべて、(他のホストマシンからアクセス可能となるために)そのホストマシンの同じPMACアドレスを使用することができる。いくつかの実施形態では、各MPREがそのホストマシンのPMACと関連付けられるだけでなく、各論理インタフェースが、LMACと呼ばれるそれ自体のユニークなMACアドレスと関連付けられる。

0078

いくつかの実施形態では、MPREを離れる各パケットは、送信元アドレスとしてMPREのVMACを有するが、ホストマシンは、パケットが、PNICに入り、物理ネットワークのためのホストを離れる前に、送信元アドレスを、ホストマシンのユニークなPMACに変更することになる。いくつかの実施形態では、MPREに入る各パケットは、その宛先アドレスとして、MPREのVMACを持たなければならない。物理ネットワークからホストに到達するパケットについて、ホストは、宛先アドレスがホストマシンのユニークなPMACアドレスである場合、宛先MACアドレスを一般的なVMACに変更することになる。いくつかの実施形態では、ホストマシンのPMACは、そのアップリンクモジュール(例えば、370)のプロパティとして実装され、アップリンクモジュールは、出力パケットの送信元MACアドレスを、一般的なVMACから、そのユニークなPMACに変更し、入力パケットの宛先アドレスを、そのユニークなPMACから、一般的なVMACに変更する。

0079

図12は、いくつかの実施形態に関する、共通VMAC及びユニークなPMACによってアドレス指定可能なMPREを有する論理ネットワーク1200を示す。図示のように、論理ネットワーク1200は、2つの異なるホストマシン1201及び1202を含む。ホストマシン1201は、MPRE1211、MPSE1221、及びいくつかの仮想マシン1231を含む。ホストマシン1202は、MPRE1212、MPSE1222、及びいくつかの仮想マシン1232を含む。2つのホストマシンは、物理ネットワーク1290によって相互接続される。MPSE1222は、PNIC1282及びアップリンクモジュール1242を介して、物理ホストからデータを受信する。

0080

ホスト1201内のMPRE1211は、VMACアドレス12:34:56:78:90:abを使用することによって、VM1231によってアドレス指定可能である。MPRE1211及びMPRE1212が、異なるホストマシン内の(同じLREのための)異なるMPREであっても、ホスト1202内のMPRE1212も、同じVMACアドレス12:34:56:78:90:abを使用することによって、VM1232によってアドレス指定可能である。図示しないが、いくつかの実施形態では、異なるテナントのための異なる論理ネットワーク内のMPREは、同じVMACアドレスを使用することもできる。

0081

MPRE1211及びMPRE1212は、また、他のホストマシン内の他のネットワークエンティティによって、物理ネットワークからのそれ自体のユニークなPMACアドレスによって、それぞれアドレス指定可能である。図示のように、MPRE1211は、それ自体のユニークなPMACアドレス11:11:11:11:11:11(PMAC1)と関連付けられ、MPRE1212は、それ自体のユニークなPMACアドレス22:22:22:22:22:22(PMAC2)と関連付けられる。

0082

図12は、別のホストマシン上のリモートMPREに送信されるデータトラフィックの一例も示す。リモートMPREは、MPREとは異なり、物理ネットワークから入ってくるパケットのための一般的なVMACによって直接アドレスされることができない。リモートホスト内のMPREは、リモートMPREのユニークなPMACアドレスによってのみアドレスされることが可能である。リモートホスト内で動作する仮想化ソフトウェアは、いくつかの実施形態では、L2スイッチングを実行する前に、ユニークなPMACアドレスを一般的なVMACに変更し戻す。

0083

図12は、「1」、「2」、「3」、及び「4」とラベル付けされた4つの動作での、ホスト1201内のMPRE1211からホスト1202内のMPRE1212へのトラフィックを示す。動作「1」では、VM1231は、一般的なVMACアドレスを使用して、パケットをそのMPRE1211に送信する。このパケットは、トラフィックのための意図された宛先に対応する宛先IPアドレス(図示せず)も有することになる。動作「2」では、ホスト1201のMPRE1211は、宛先アドレスとしてMPRE1212のユニークな物理MAC「PMAC2」を使用することによって、ホスト1202のMPRE1212にパケットを送信する。この変換を実行するために、いくつかの実施形態では、MPRE1211は、宛先IPアドレスに対応する宛先MACアドレス(PMAC2)を識別するために、そのARPテーブル内でルックアップしている(又は、ARPを実行している)ことになる。

0084

動作「3」では、データパケットは、その物理NICを介してホスト1202に到達し、アップリンクモジュール1242(ホスト1202上で動作する仮想化ソフトウェアの一部)に到着する。アップリンクモジュール1242は、今度は、MPRE1212のユニークなPMAC(「PMAC2」)を、宛先アドレスとして一般的なVMACに変換する。動作「4」では、データパケットは、MPSE1222に到達し、MPSE1222は、一般的なVMACに基づいて、パケットをMPRE1212に転送する。

0085

図13は、1つのVMから、共通VMAC及びネットワーク1200のためのユニークなPMACを使用する別のVMにルーティングされるL3ネットワークトラフィックの一例を示す。ネットワークトラフィックは、ホストマシン1201内のVM1331から発信される、ホストマシン1202内のVM1332宛のデータパケットである。例示的なルーティングされるL3トラフィックは、「1」〜「4」とラベル付けされた4つの動作に示される。動作「1」の間、リンク層L2アドレス「MAC1」を有するVM1331は、宛先アドレスとしてMPREの共通VMACを使用することによって、データパケットをMPRE1211に送信する。動作「2」の間、MPRE1211は、宛先IPアドレスを、リンク層L2アドレス「MAC2」を有する宛先VMのための宛先MACアドレスに解決することによって、L3レベルルーティングを実行する。MPRE1211は、また、VM1331のMACアドレス「MAC1」を、送信元MACアドレスとしてそれ自体のユニークな物理リンク層アドレス「PMAC1」(11:11:11:11:11:11)に置き換える。動作3では、ルーティングされたパケットは、MPSE1222に到達し、MPSE1222は、宛先MACアドレス「MAC2」にしたがって、データパケットを宛先VM1232に転送する。動作「4」では、データパケットは、宛先仮想マシン1232に到達する。いくつかの実施形態では、VM1332は、標準的な(非ARP)データトラフィックのための送信元MACアドレスを無視するため、ユニークなPMACが送信元アドレスである場合、ユニークなPMAC(この場合、「PMAC1」)を一般的なVMACに変更する必要はない。

0086

上述したように、アップリンクモジュールは、PNICからMPSEへの入力データに前処理を実行し、MPSEからPNICへの出力データに後処理を実行するモジュールである、図14は、(1242のような)アップリンクモジュールによって実行される前処理動作のためのプロセス1400を概念的に示す。いくつかの実施形態では、プロセス1400の動作は、PNICからホストマシンに入る入口パイプラインとして実装される。

0087

プロセスは、(1410で)PNICから(すなわち、外部の物理ネットワークから)パケットを受信すると開始する。プロセスは、データが、VXLAN又はVLANのようなオーバレイネットワークのためのものである場合、(1420で)オーバレイネットワーク処理を実行する。リモートホスト上のVMが、同じVXLANネットワーク内であるがこのホスト上ではないVMにデータパケットを送信する場合、プロセスは、MPSEを介してVMにパケットを転送させる前に、パケットのカプセル化を解除することになる。この動作を実行することによって、アップリンクモジュールは、ホストが、VXLANのためのトンネルエンドポイント(例えば、VTEP)として機能することを可能にする。

0088

次に、プロセスは、(1430で)入力データパケット内の宛先MACが、ユニークな物理MAC(PMAC)であるかどうかを判定する。いくつかの実施形態では、ユニークなPMACアドレスは、特定のホストにデータパケットを導くために使用されるが、(MPSEは、MPREのためのポートを、PMACではなくVMACと関連付けるため)ホストのMPREにパケットを送り込むためには使用され得ない。宛先MACがユニークなPMACである場合、プロセスは1445に進む。そうでない場合、プロセスは1435に進む。

0089

1435では、プロセスは、入力データパケット内の宛先MACが、ブロードキャストMAC(例えば、ff.ff.ff.ff.ff.ff)であるかどうかを判定する。いくつかの実施形態では、ホストは、ブロードキャストMACを受け入れることになるが、いくつかのブロードキャストパケットは、MPSEに接続されたすべてのVMに送信されるのではなく、最初にMPREによって処理されなければならない。宛先MACが、ブロードキャストMACである場合、プロセスは、ブロードキャストパケットがMPREに進む必要があるかどうかを確認するために、1440に進む。そうでない場合、プロセスは、パケットが、宛先MACを変更することなく、MPSEに進むことを可能にするために、1450に進む。

0090

1440では、プロセスは、ブロードキャストMACを有するパケットが、MPREに転送される必要があるかどうかを判定する。いくつかの実施形態では、特定のタイプのブロードキャストメッセージのみが、MPREが関心を持つものであり、これらのタイプのブロードキャストメッセージのみが、そのブロードキャストMACアドレスを一般的なVMACに変更しておく必要がある。例えば、ブロードキャストARPクエリメッセージは、MPREが関心を持つものであり、その宛先MACアドレスをVMACに変更しておくことによって、MPREに転送されることになる。ブロードキャストパケットが、MPREに対する対象である場合、プロセスは1445に進む。そうでない場合、プロセスは1450に進む。

0091

1445では、プロセスは、宛先MAC(PMACか、ブロードキャストかにかかわらず)を一般的なVMACに置き換え、これらの宛先MACを有するパケットがMPREによって処理されることを確実にする。プロセスは、次に、パケットが、変更された宛先MACを有するMPSEに進むことを可能にするために、1450に進む。次に、プロセス1400は終了する。

0092

図15は、アップリンクモジュールによって実行される後処理動作のためのプロセス1500を概念的に示す。いくつかの実施形態では、プロセス1500の動作は、PNICを介してホストマシンから離れるパケットのための出口パイプラインとして実装される。プロセスは、(1510で)MPSEからアップリンクモジュールでパケットを受信すると開始する。プロセスは、次に、(1520で)パケットがリモートホストのためのものであるかどうかを判定する。パケットの宛先アドレスが、ローカルホストマシン内(例えば、MPRE、又はVMの1つ)のポートを示す場合、プロセスは、パケットを無視し、終了する。そうでない場合、プロセスは1530に進む。

0093

1530では、プロセスは、送信元MACアドレスが、一般的なVMACであるかどうか、すなわち、パケットが、MPREからのものであるかどうかを判定する。そうである場合、プロセスは1540に進む。そうでない場合、プロセスは1550に進む。1540では、プロセスは、送信元MACアドレスとして、VMACを、MPREのユニークなPMACに置き換える。これは、パケットの受信側が、そのユニークなPMACアドレスを使用することによって、送信側MPREを正確に識別できることを保証する。

0094

プロセスは、次に、データが、VXLAN又はVLANのようなオーバレイネットワークのためのものである場合、(1550で)オーバレイネットワーク処理を実行する。ホスト上のVMが、同じVXLANネットワーク内だが別のホスト上の別のVMにデータパケットを送信する場合、プロセスは、VXLANネットワークのVNIを使用して物理ネットワークに注入する前に、フエームをカプセル化する。この動作を実行することによって、アップリンクモジュールは、ホストが、VXLANの下のトンネルエンドポイント(VTEP)として機能することを可能にする。次に、プロセスは、(1560で)パケットを物理NICに転送する。次に、プロセス1500は終了する。

0095

B.アドレス解決を実行するためにVDRを使用する

0096

上述したように、各LREは、ネットワークセグメントのそれぞれの中の仮想マシンとインタフェースするための論理インタフェースのセットを有する。いくつかの実施形態では、仮想マシンからみて、ネットワークセグメントの論理インタフェースは、ネットワークセグメント内の仮想マシンのためのデフォルトゲートウェイとしても機能する。LREは各ホストマシン内のMPREを動作させるため、いくつかの実施形態では、(デフォルトゲートウェイのためのARPのような)その論理インタフェースの1つのためのARPクエリを受信するMPREは、クエリを他のホストマシンに転送することなく、クエリにローカルに応答する。

0097

図16は、論理ネットワーク1600内のVDR/LRE MPREの論理インタフェースのためのARPクエリ動作を示す。論理ネットワーク1600は、少なくとも2つのホストマシン1601及び1602間に分散される。ホストマシン1601は、MPRE1611を有し、ホストマシン1602は、MPRE1612を有する。各MPREは、論理ネットワークのセグメントAのための論理インタフェース(LIF A)、及び、セグメントBのための論理インタフェース(LIF B)を有する。(MPRE1611は、LIF A1621及びLIF B1631を有し、MPRE1612は、LIF A1622及びLIF B1632を有する。)ホストマシン1601は、MPRE1611のLIF Aを使用するセグメントA VM1629を有する。ホストマシン1602は、MPRE1612のLIF Bを使用するセグメントB VM1639を有する。

0098

各LIFは、IPアドレスと関連付けられる。しかしながら、図示のように、MPRE1611のLIF A1621、及び、MPRE1612のLIF A1622は、両方とも同じIPアドレス(10.1.1.253)を有する。これは、セグメントA(サブネット10.1.1.x)のデフォルトゲートウェイのIPアドレスである。同様に、MPRE1611のLIF B1631、及び、MPRE1612のLIF B1632は、両方とも同じIPアドレス(10.1.2.253)を有する。これは、セグメントB(サブネット10.1.2.x)のデフォルトゲートウェイのIPアドレスである。

0099

図は、「1」〜「6」とラベル付けされた動作で、VM1629及び1639によって形成される2つのARPクエリを示す。動作「1」では、セグメントAの仮想マシン1629は、そのセグメントのデフォルトゲートウェイのためのARPクエリを作成する。ARPクエリメッセージは、宛先IPアドレスとしてLIF AのIPアドレス(10.1.1.253)を使用し、宛先MACアドレスとしてブロードキャストMACを使用する。動作「2」の間に、LIF A1621は、IPアドレス「10.1.1.253」をすべてのMPREのためのVMACアドレスに解決することによって、ARPクエリに応答する。さらに、LIF A1621は、ARPクエリメッセージを物理ネットワークに渡さない。これは、他のホストマシン内の他のVDR/LRE MPRE上のLIF A(例えば、ホストマシン1602上のLIF A1622)のような、LIF Aと同じIPアドレス「10.1.1.253」を有するネットワーク内の他のエンティティが応答するのを防ぐ。動作「3」では、VM1629は、ARP応答メッセージを受信し、その解決テーブルを更新し、デフォルトゲートウェイのIPアドレスをMACアドレス「VMAC」に解決する。この応答メッセージの宛先MACアドレスは、元の問い合わせ元のMACアドレス(すなわち、VM1629のための「MAC1」)であり、送信元MACアドレスは、MPREの新たに解決されたMACアドレス「VMAC」である。VM1629は、次に、その後に送信するルーティングする必要があるパケットをアドレス指定するために、MPRE1611にその後にアクセスするために、このエントリを、その解決テーブルに格納する。動作「4」、「5」、及び「6」は、動作「1」、「2」、及び「3」の類似した動作であり、MPRE1612のLIF B1632は、ARPクエリメッセージを物理ネットワークに渡すことなく、セグメントB VM1639によるARP要求に応答する。VM1639によるARP要求は、異なるMPRE上の異なるLIFに送信されるが、同じアドレス「VMAC」が、ARP応答で使用される。

0100

仮想マシンが、デフォルトゲートウェイのMACアドレスを一旦知ると、MPREの論理インタフェースをアドレス指定するためにVMACを使用することによって、データパケットを他のネットワークセグメントに送り込むことができる。しかしながら、MPREが、(例えば、宛先仮想マシンのための)宛先IPアドレスが解決される先のリンク層MACアドレスを知らない場合、MPREは、このアドレスを解決する必要がある。いくつかの実施形態では、MPREは、このようなアドレス解決情報を、他のホストマシン内の同じLREの他のMPREから、又は、コントロールクラスタから得ることができる。いくつかの実施形態では、MPREは、そのMACアドレスを決定するために、宛先仮想マシンのネットワークセグメント内で、それ自体のARPクエリを開始することができる。このようなARP要求を行う場合、MPREは、物理ネットワーク上で他のMPREに送信されるパケットのための送信元アドレスとして、一般的なVMACアドレスではなく、それ自体のユニークなPMACアドレスを使用する。

0101

図17は、いくつかの実施形態のMPREが開始したARPクエリを示す。具体的には、図は、MPREが、それ自体のARPクエリを開始するためにそれ自体のPMACアドレスを使用する、論理ネットワーク1700の実装を示す。図示のように、論理ネットワーク1700の実装は、少なくとも2つのホストマシン1701及び1702を含む。ホストマシン1701上にあるのは、セグメントA内のVM1731、セグメントAのための論理インタフェース1721を有するMPRE1711、及び、物理ネットワークからデータを受信するためのアップリンクモジュール1741である。ホストマシン1702上には、セグメントB内のVM1732、セグメントBのための論理インタフェース1722を有するMPRE1712、及び、物理ネットワークからデータを受信するためのアップリンクモジュール1742が存在している。一般的なVMACに加えて、MPRE1711は、ユニークな物理MACアドレス「PMAC1」を有し、MPRE1712は、ユニークな物理MACアドレス「PMAC2」を有する。

0102

「1」〜「8」とラベル付けされた動作では、図は、セグメントB内のVM1732のための、ホストマシン1701からMPRE1711によって開始されたARPクエリを示す。動作「1」の間に、(セグメントA内の)IPアドレス10.1.1.1を有するVM1731は、パケットを、(セグメントB内の)宛先ネットワーク層アドレス10.1.2.1に送信し、宛先ネットワーク層アドレス10.1.2.1は、そのMPRE1711によるL3ルーティングを要求する。VM1731は、そのデフォルトゲートウェイのL2リンク層アドレスが「VMAC」であることを(例えば、以前のARPクエリから)すでに知っており、したがって、宛先IPアドレスが別のセグメント内であるため、VM1731は、VMACを使用することによって、データパケットを直接MPRE1711に送信する。

0103

動作「2」の間に、MPRE1711は、宛先VM1732のためのL2リンク層アドレスを有していないことを(例えば、そのアドレス解決テーブルチェックすることによって)判定し、したがって、宛先IP「10.1.2.1」のためのARPクエリを開始する。このARPクエリは、送信元MACアドレスとして、MPRE1711のユニークな物理MACアドレス(「PMAC1」)を使用し、宛先MACとしてブロードキャストMACアドレスを使用する。MPRE1711は、宛先IP「10.1.2.1」がセグメントB内であることを判定するために、パケットにL3ルーティングも実行しており、したがって、送信元IPを「10.1.2.253」(すなわち、LIF BのIPアドレス)に変更する。ブロードキャストARPメッセージは、ホスト1702に到達するために、物理ネットワークを横断する。いくつかの実施形態では、論理ネットワークが、追加のホスト(すなわち、MPREのような追加のローカルLREインスタンシエイションを有する追加のホスト)にまたがる場合、ARPメッセージは、同様にこれらの他のホストに送信されることになる。

0104

動作「3」の間、ブロードキャストARPクエリは、ホスト1702上で動作するアップリンクモジュール1742に到着し、アップリンクモジュール1742は、ブロードキャストMACアドレス(「ffffffffffff」)を、MPREのすべてに一般的な「VMAC」に置き換え、そのため、ホスト1702内のMPSEは、ARPクエリパケットをMPRE1712に転送することになる。送信元アドレス「PMAC1」は、送信側MACアドレス1711に対してユニークであるが、修正されたARPクエリ内にとどまる。

0105

動作「4」の間、ホスト1702のMPRE1712は、VMACが宛先アドレスであることを理解するため、ARPクエリを受信する。MPRE1712は、宛先IPアドレス10.1.2.1を解決することができず、そこで、VM1732を含むセグメントB上にあるホスト1702の任意のローカルVMへのブロードキャスト(宛先「ffffffffffff」)として、LIF B1722を介してARPクエリを転送する。ARPクエリは、VM1732のための(セグメントBのための)アウトバウンドLIF1722を介して、MPRE1712を出て行く。

0106

動作「5」の間、送信元MACアドレスとして「VMAC」を有するブロードキャストARPクエリは、VM1732に到達し、VM1732は、ARPクエリに対する応答メッセージを、LIF B1722を介してMPRE1712に送信する。応答メッセージでは、VM1732は、L3ネットワーク層アドレス「10.1.2.1」に対応するL2レベルリンクアドレスが、そのアドレス「MAC2」であることを示し、応答が、一般的なMACアドレス「VMAC」を使用して、要求側のMPRE1712に送信されるべきであることを示す。MPRE1712は、また、それ自体のARP解決テーブル1752を、「10.1.2.1」について更新し、そのため、将来的にARPプロキシとして機能することができる。

0107

動作「6」の間、MPRE1712は、応答している(IP10.1.1.253がMAC「PMAC1」に解決することを示している)対象のARPクエリからのMPRE1712によって格納された情報に基づいて、宛先MACアドレスとして「PMAC1」を使用することによって、問い合わせ側MPRE1711に応答パケットを転送する。動作「7」の間、ホスト1702のためのアップリンクモジュール1741は、ホスト1701のMPSEが、パケットをローカルにMPRE1711に転送することになるように、ユニークな「PMAC1」を一般的な「VMAC」に変換する。最終的に、動作「8」では、応答メッセージは、元の問い合わせ側MPRE1711に到達し、MPRE1711は、IPアドレス10.1.2.1のためのアドレス解決(すなわち、「MAC2」)をそれ自体の解決テーブル1751に格納することになり、そのため、VM1731からのパケットをVM1732に転送することができることになる。この時点で、VM1731によって最初に送信されたデータパケットを、VM1732への配信のためにルーティングすることができ、ホスト1702に向けて物理ネットワーク上に送信することができる。

0108

MPRE1712は、VM1732のためのアドレスをそれ自体によって解決することができなかったため、ARP問い合わせを伝達しなければならない。しかしながら、一旦MPRE1712が、VM1732からのARP応答を受信すると、アドレス10.1.2.1に関する後続のARPクエリに対して、それ自体によって、ARP問い合わせを伝達する必要なく、応答することができる。図18は、MPRE1712が解決することができるARP問い合わせに応答するためのプロキシとして機能する、ネットワーク1700内のMPRE1712を示す。

0109

図18は、前の図からのホスト1702、並びに別のホストマシン1703を有するネットワーク1700を示す。ホスト1702内のMPRE1712のARP解決テーブル1752は、VM1732のためのIPアドレス10.1.2.1を解決するためのエントリをすでに有する。ホスト1703上には、論理ネットワークのセグメントD上のVM1733、セグメントDのための論理インタフェース1724を有するMPRE1713、及び、物理ネットワークからのデータを受信するためのアップリンクモジュール1743が存在している。一般的なVMACに加えて、MPRE1713は、ユニークな物理MACアドレス「PMAC3」を有する。「1」〜「6」とラベル付けされた動作では、図は、セグメントB内のVM1732のための、ホストマシン1703からMPRE1713によって開始されたARPクエリを示す。

0110

動作「1」の間、(セグメントD内の)IPアドレス10.1.5.1を有するVM1733は、パケットを(セグメントB内の)宛先ネットワーク層アドレス10.1.2.1に送信し、これは、そのMPRE1713によるL3ルーティングを必要とする。VM1733は、そのデフォルトゲートウェイのL2リンク層アドレスが「VMAC」であることを(例えば、以前のARPクエリから)すでに知っており、したがって、宛先IPアドレスが別のセグメント内であるため、VM1733は、VMACを使用することによって、データパケットを直接MPRE1713に送信する。

0111

動作「2」の間に、MPRE1713は、宛先VM1732のためのL2リンク層アドレスを有していないことを(例えば、そのアドレス解決テーブルをチェックすることによって)認識し、したがって、宛先IP「10.1.2.1」のためのARPクエリを開始する。このARPクエリは、送信元MACアドレスとして、MPRE1713のユニークな物理MACアドレス(「PMAC3」)を使用し、宛先MACとしてブロードキャストMACアドレスを使用する。MPRE1713は、宛先IP「10.1.2.1」がセグメントB内であることを判定するために、パケットにL3ルーティングも実行しており、したがって、送信元IPを「10.1.2.253」(すなわち、LIF BのIPアドレス)に変更する。このブロードキャストARPメッセージは、ホスト1702に到達するために、物理ネットワークを横断する。加えて、図示しないが、ホスト1701は、MPRE1711を有するため、ブロードキャストARPメッセージは、このホスト1701にも到達することになる。

0112

動作「3」の間、ブロードキャストARPクエリは、ホスト1702上で動作するアップリンクモジュール1742に到着し、アップリンクモジュール1742は、ブロードキャストMACアドレス(「ffffffffffff」)を、MPREのすべてに一般的な「VMAC」に置き換え、そのため、ホスト1702内のMPSEは、ARPクエリをMPRE1712に転送することになる。送信元アドレス「PMAC3」は、送信側MPRE1713に対してユニークであるが、修正されたARPクエリ内にとどまる。

0113

動作「4」の間、MPRE1712は、それ自体の解決テーブル1752を調べ、IPアドレス10.1.2.1をMAC2に解決することができることを認識する。MPREは、したがって、ARPクエリをそのセグメントBのすべてのVMに転送するのではなく、物理ネットワークを介して宛先アドレス「PMAC3」にARP応答を送信する。LIF B1722及びVM1732は、この場合では、ARP応答動作に関与しない。

0114

動作「5」の間、ホスト1703のためのアップリンクモジュール1743は、ホスト1703のMPSEが、パケットをローカルにMPRE1713に転送することになるように、ユニークな「PMAC3」を一般的な「VMAC」に変換する。最終的に、動作「6」では、応答メッセージは、元の問い合わせ側MPRE1713に到達し、MPRE1713は、IPアドレス10.1.2.1のためのアドレス解決(すなわち、「MAC2」)をそれ自体の解決テーブル1753に格納することになり、そのため、VM1733からのパケットをVM1732に転送することができることになる。この時点で、VM1733によって最初に送信されたデータパケットを、VM1732への配信のためにルーティングすることができ、ホスト1702に向けて物理ネットワーク上に送信することができる。

0115

図17及び18は、送信側MPREと異なるホストマシン内にある仮想マシンのためのARP問い合わせでのユニークなPMACの使用を示す。しかしながら、いくつかの実施形態では、このARPメカニズムは、送信側MPREと同じホストマシン内で動作している仮想マシンのアドレスを解決するのとちょうど同じように動作する。図19は、送信側MPREと同じホストマシン内にある仮想マシンのためのARP問い合わせでのユニークなPMACの使用を示す。

0116

図19は、図17のネットワーク1700内で行われる別のARP問い合わせを示す。図19に示すように、ホスト1702内には、MPRE1712に加えて、別のセグメントBのVM1734及びセグメントCのVM1735も存在している。MPRE1712は、VM1735のようなセグメントC内のVMとインタフェースするための論理インタフェース1723を有する。図19は、MPRE1712によって開始されるARP動作を示す。このARP動作は、MPRE1712が、両方がホスト1702上に存在するセグメントC内のVM1735からセグメントB内のVM1734にパケットをルーティングシなければならないため、開始される。開始側MPRE1711が、別のホストマシン内のVMに関して問い合わせしている、図17に示すARP動作とは異なり、図19に示すARP動作は、開始側MPRE1712と同じホストマシン内に位置するVMのためのものである。

0117

「1」〜「9」とラベル付けされた動作では、図は、セグメントB内のVM1734のための、MPRE1712によって開始されたARPクエリを示す。動作「1」の間、(セグメントC内の)IPアドレス10.1.3.1を有するVM1731は、パケットを(セグメントB内の)宛先ネットワーク層アドレス10.1.2.2に送信し、これは、そのMPRE1712によるL3ルーティングを必要とする。VM1735は、そのデフォルトゲートウェイのL2リンク層アドレスが「VMAC」であることを(例えば、以前のARPクエリから)すでに知っており、したがって、宛先IPアドレスが別のセグメント内であるため、VM1735は、VMACを使用することによって、データパケットを直接MPRE1712に送信する。

0118

動作「2」の間、MPRE1712は、宛先VM1734のためのL2リンク層アドレスを有していないことを(例えば、そのアドレス解決テーブルをチェックすることによって)判定し、したがって、ネットワークセグメントB内の宛先IP10.1.2.1のためのARPクエリを開始する。ARPクエリは、セグメントB上のホスト1702、並びに、(ホスト1701のような)他のホストのすべてのローカルVMにブロードキャストされることになる。

0119

動作「3」の間、MPRE1712は、ARPクエリを、VM1734を含むすべてのローカルセグメントBのVMに、LIF B1722を介してブロードキャストする。このブロードキャストは、ホスト1702内のローカルであるため、送信元アドレスは、一般的なVMACのままである。動作「4」の間、ホスト1702内の(セグメントBで)ローカルにブロードキャストされたARPクエリは、VM1734に到達し、VM1734は、ARPクエリに対する応答メッセージを送信する。

0120

動作「3」及び「4」と同時に、MPRE1712は、動作「5」の間、ARP要求を他のホストにもブロードキャストする。このブロードキャストメッセージは、その宛先MACとしてブロードキャストMACアドレスを使用し、送信元MACアドレスとして(例えば、物理NICに送信される前にアップリンクによって修正されるような)MPRE1712のユニークなPMAC「PMAC2」を使用する。MPRE1712は、宛先IP「10.1.2.2」がセグメントB内であることを判定するために、パケットにL3ルーティングも実行し、したがって、送信元IPを「10.1.2.253」(すなわち、LIF BのIPアドレス)に変更する。動作「6」で、ブロードキャストARPは、そのアップリンクモジュール1741が宛先MACをそのMPRE1711のための一般的なVMACに変更したホスト1701に到達する。しかしながら、(いくつかの実施形態では、これらのホストが、それらのセグメントBのVMにARPを転送するが)IP10.1.2.2に対応するものがないため、他のホストからのARP応答はない。

0121

動作「7」の間、VM1734は、動作「4」の間に受信したARPクエリに対する応答メッセージを生成する。応答メッセージは、L2アドレス「MAC4」が、要求されたL3ネットワーク層アドレス「10.1.2.2」に対応することを示し、応答が、その一般的なMACアドレス「VMAC」を使用して、要求側のMPREに送信されるべきであることを示す。動作「8」の間、VM1734によって生成されたARP応答は、LIF B1722を介してMPRE1712に入る。最終的に、動作「9」では、VM1735からの(最初に送信されたデータパケットを含む)パケットをVM1734に転送することができるように、MPRE1712は、IPアドレス10.1.2.2のためのアドレス解決(すなわち、「MAC4」)を、それ自体の解決テーブル1752に格納する。

0122

図20及び21は、MPREが、それらの解決テーブルを更新した後の、異なるセグメントのVM間でデータトラフィックを送信するための動作を示す。具体的には、図20及び21は、ホスト1701のMPRE1711、及びMPRE1712が、図17及び19に示すように、以前のARPクエリによってそれらの解決テーブルを更新した後の、VM1731、1732、及び1735間のネットワーク1700に関するデータトラフィックを示す。

0123

図20は、セグメントAのVM1731及びセグメントCのVM1735から、セグメントBのVM1732へのデータパケットのルーティングを示す。ルーティングは、MPRE1711及び1712内で行われ、MPRE1711及び1712は、それぞれ、送信側VM1731及び送信側VM1735のためのMPREである。MPRE1711は、ルーティングルックアップのための解決テーブル1751を使用し、MPRE1712は、ルーティングルックアップのための解決テーブル1752を使用する。

0124

動作「1」〜「3」は、セグメントAのVM1731からセグメントBのVM1732へのデータパケットのルーティングを示す。動作「1」の間、VM1731は、一般的なVMACを使用して、MPRE1711のLIF A1721にパケットを送信する。パケットは、IPアドレス10.1.2.1を宛先とし、IPアドレス10.1.2.1は、VM1731(IPアドレス10.1.1.1)とは異なるネットワークセグメント内であり、したがって、L3層ルーティングを必要とする。動作「2」の間、MPRE1711は、(図17に示す動作によって学習されるように)解決テーブル1751内のエントリを使用することによって、IPアドレス10.1.2.1をL2アドレス「MAC2」及びセグメントBに解決する。MPRE1711は、それ自体のユニークなL2アドレス「PMAC1」を、物理ネットワークに送出されたパケットのための送信元アドレスとして使用する。MPRE1711は、また、LIF B1725をアウトバウンドLIFとして識別しており、(セグメントBのネットワーク識別子をタグ付けされた)物理ネットワークを介してホスト1702にパケットを送信するために、このLIFを使用する。動作「3」の間、ルーティングされたパケットは、物理ネットワークを横断し、L2アドレスが「MAC2」の宛先VM1732に到着している。

0125

動作「4」〜「6」は、データパケットがホスト1702を離れる必要がない、セグメントCのVM1735からセグメントBのVM1732へのデータパケットのルーティングを示す。動作「4」の間、VM1735は、一般的なVMACをパケットの宛先MACとして使用して、MPRE1712のLIF C1723にパケットを送信する。パケットは、IPアドレス10.1.2.1を宛先とし、IPアドレス10.1.2.1は、VM1735(IPアドレス10.1.3.1)とは異なるネットワークセグメント内であり、したがって、L3ルーティングを必要とする。動作「5」の間、MPRE1712は、解決テーブル1752内のエントリを使用することによって、IPアドレス10.1.2.1をL2アドレス「MAC2」に解決する。MPRE1712は、また、このパケットは、物理ネットワークのためのホスト1702を決して離れないため、送信元L2MACアドレスとしてVMACを使用する。MPRE1712は、また、LIF B1722をアウトバウンドLIFとして識別しており、ローカルセグメントBのVM1732にパケットを送信するためにこのLIFを使用する。動作「6」の間、データパケットは、MACアドレスが「MAC2」の宛先VM1732に到着する。

0126

図21は、セグメントBのVM1732からセグメントAのVM1731及びセグメントCのVM1735に送信されたデータパケットのルーティングを示す。ルーティングは、MPRE1712内で行われ、MPRE1712は、送信側VM1732のためのローカルルータインスタンスである。MPRE1712は、上述したように、ルーティングルックアップのために解決テーブル1752に依存する。MPRE1712は、VM1732のようなセグメントB内のVMとインタフェースするための論理インタフェース1722(LIF B)を有する。MPRE1712は、VM1735のようなセグメントC内のVMとインタフェースするための論理インタフェース1723(LIF C)を有する。MPRE1712は、VM1731のようなセグメントA内のVMとインタフェースするための論理インタフェース1725(LIF A)も有する。

0127

動作「1」〜「3」は、セグメントBのVM1732からセグメントAのVM1731へのデータパケットのルーティングを示す。動作「1」の間、VM1732は、一般的なVMACを宛先MACとして使用して、MPRE1712のLIF B1722にパケットを送信する。パケットは、IPアドレス10.1.1.1を宛先とし、IPアドレス10.1.1.1は、VM1732(IPアドレス10.1.2.1)とは異なるネットワークセグメント内であり、したがって、L3層ルーティングを必要とする。データパケットは、LIF B1722をインバウンドLIFとして使用して、MPRE1712に入る。動作「2」の間、MPRE1712は、解決テーブル1752内のエントリを使用することによって、IPアドレス10.1.1.1をL2アドレス「MAC1」に解決する。MPRE1711は、また、LIF A1726をアウトバウンドLIFとして識別しており、(セグメントAのVNIをタグ付けされた)物理ネットワークを介してホスト1701にパケットを送信するために、LIF Aを使用する。いくつかの実施形態では、MPRE1711は、また、送信元MACアドレスとして、一般的な「VMAC」をそれ自体のユニークなL2アドレス「PMAC2」に置き換える。動作「3」の間、ルーティングされたパケットは、MACアドレスが「MAC1」の宛先VM1731に到着する。

0128

動作「4」〜「6」は、セグメントBのVM1732からセグメントCのVM1735へのデータパケットのルーティングを示す。動作「4」の間、VM1732は、一般的なVMACをパケットの宛先MACアドレスとして使用して、MPRE1712のLIF B1722にパケットを送信する。パケットは、IPアドレス10.1.3.1を宛先とし、IPアドレス10.1.3.1は、VM1732(IPアドレス10.1.2.1)とは異なるネットワークセグメント内であり、したがって、L3ルーティングを必要とする。動作「5」の間、MPRE1712は、解決テーブル1752内のエントリを使用することによって、IPアドレス10.1.3.1をL2アドレス「MAC3」に解決する。宛先L2アドレス「MAC3」は、MPRE1712と同じホストマシン(ホスト1702)で動作する仮想マシンを示すため、いくつかの実施形態では、MPREは、物理ネットワークにデータパケットを送信しないことになる。MPRE1712は、また、このパケットは、物理ネットワークのためのホスト1702を決して離れないため、送信元L2MACアドレスとしてVMACを使用する。MPRE1712は、また、LIF C1723をアウトバウンドLIFとして識別しており、ローカルセグメントCのVM1735にパケットを送信するためにこのLIFを使用する。動作「6」の間、パケットは、MACアドレスが「MAC3」の宛先VM1735に到着する。

0129

いくつかの実施形態に関して、図22は、入力データパケットのためのアドレス解決を処理するための、いくつかの実施形態のMPREインスタンシエイションによって実行されるプロセス2200を概念的に示す。プロセス2200は、(2210で)データパケットを(例えば、MPSEから)受信すると開始する。このデータパケットは、転送若しくはルーティングする必要がある通常のデータパケットであってよく、又は、応答を必要とするARPクエリであってよい。次に、プロセスは、(2220で)受信したパケットがARPクエリであるかどうかを判定する。データパケットがARPクエリである場合、プロセスは2225に進む。そうでない場合、プロセスは2235に進む。

0130

2225では、プロセスは、ARPクエリのための宛先アドレスを解決することができるかどうかを判定する。いくつかの実施形態では、プロセスは、パケットのネットワーク層IPアドレスを解決するための対応するエントリが存在するかどうかを判定するために、それ自体のARP解決テーブルを調べる。プロセスがアドレスを解決することができる場合、2260に進む。プロセスがアドレスを解決することができない場合、2230に進む。

0131

2230では、プロセスは、ARPクエリを転送する。ARP要求が、物理ネットワークから来る場合、プロセスは、ARPクエリを、ローカルホストマシン内のVMに転送する。ARP要求が、ローカルホストマシン内のVMから来る場合、プロセスは、要求を、ローカルホストマシン内の他のVMに転送すると共に、他のホストマシン内のMPREによって処理するために、物理ネットワークに転送する。プロセスは、次に、待機し、(2250で)ARP応答を受信し、応答メッセージに基づいて、そのARP解決テーブルを更新する。プロセス2200は、次に、(2260で)ARPクエリメッセージに応答し、終了する。

0132

2235では、プロセスは、入力データパケットのための宛先アドレスを解決することができるかどうかを判定する。プロセスが、(例えば、一致するARP解決テーブルエントリを有する)宛先アドレスを解決することができる場合、プロセスは2245に進む。そうでない場合、プロセスは2240に進む。

0133

2240では、プロセスは、ARPクエリを生成し、リモートホストマシン並びにローカル仮想マシンに、それ自体のアウトバウンドLIFを介してブロードキャストする。プロセスは、次に、(2242で)そのARPクエリのための応答を受信し、そのARPテーブルを更新する。プロセス2200は、次に、(2245で)解決したMACアドレスにしたがってデータパケットを転送し、終了する。

0134

C.非VDRホストマシンのためのルーティングエージェントとしてのVDR

0135

いくつかの実施形態では、基礎的な物理ネットワーク上のネットワークトラフィックを生成し、受け入れるホストマシンのすべてが、仮想化ソフトウェアを実行し、VDRを動作させるというわけではない。いくつかの実施形態では、これらのホストのうちの少なくともいくつかは、仮想化ソフトウェアをまったく実行せず、どのような仮想マシンもホストしない物理ホストマシンである。これらの非VDR物理ホストマシンのいくつかは、基礎的な物理ネットワークに組み込まれた(ファイラ又は別の非ハイパーバイザ/非VMネットワークスタックのような)レガシネットワーク要素であり、L3層ルーティングのための独立型のルータに依存するように使用される。これらの非VDR物理ホストマシンのためのL3層ルーティングを実行するために、いくつかの実施形態は、これらの非VDRホストマシンのための専用ルーティングエージェント(指定されたインスタンス又は指定されたMPRE)として機能するためにホストマシン上で動作するローカルLREインスタンシエイション(すなわち、MPRE)を指定する。いくつかの実施形態では、このような非VDR物理ホストとの間のL2トラフィックは、指定されたMPREを経由する必要なく、ホストマシン内のMPSE(例えば、320)のローカルインスタンスによって処理される。

0136

図23は、物理ホストとの間のパケットのL3ルーティングを処理するためのMPREを指定する論理ネットワーク2300の実装を示す。図示のように、ネットワーク2300は、ホストマシン2301〜2309を含む。ホストマシン2301及び2302は、それぞれ、MPRE2311及び2312を動作させる仮想化ソフトウェアを実行している(MPRE2313〜2318を実行する他のホストマシン2303〜2308は、図示されない)。両方のホストマシン2301及び2302は、いくつかの仮想マシンをホストしており、各ホストマシンは、MPREを動作させている。これらのMPREの各々は、論理ネットワーク2300のセグメントA、B、及びCのための論理インタフェース(LIF A、LIF B、及びLIF C)を有する。すべてのMPREは、それ自体のホスト内の仮想マシンによってアドレスされる場合、一般的な「VMAC」を共有する。両方のMPRE2311及び2312は、それら自体のユニークなPMAC(「PMAC1」及び「PMAC2」)も有する。

0137

ホストマシン2309は、仮想化ソフトウェアを実行せず、L3層ルーティングのためのそれ自体のMPREを持たない物理ホストである。物理ホスト2309は、IPアドレス10.1.2.7と関連付けられ、MACアドレス「MAC7」を有する(すなわち、物理ホスト2309は、ネットワークセグメントB内にある)。物理ホスト2309からのデータを、別のネットワークセグメント上の仮想マシンに送信するために、物理ホストは、データを(物理ネットワーク及びL2スイッチを介して)、物理ホスト2309のための指定されたMPREであるMPRE2312に送信しなければならない。

0138

図24は、論理ネットワーク2300内の非VDR物理ホスト2309によって開始されるARP動作を示す。図示のように、論理ネットワーク2300内のホストマシン2301〜2304の各々は、MPRE(それぞれ、2311〜2314)を有し、各MPREは、ユニークなPMACアドレス(MPRE2313のための「PMAC3」、MPRE2314のための「PMAC4」)を有する。各MPREは、IPアドレス10.1.2.253を有するセグメントBのための論理インタフェース(LIF B)を有する。しかしながら、ホストマシン2302内のMPRE2312のみが、「指定されたインスタンス」であり、それのみが、物理ホスト2309からのARPクエリブロードキャストメッセージに応答することになる。

0139

ARP動作は、動作「1」、「2」、「3」、及び「4」で示される。動作「1」の間、物理ホスト2309は、そのデフォルトゲートウェイ「10.1.2.253」のためのARPクエリメッセージを物理ネットワーク上にブロードキャストする。上述したように、IPアドレス「10.1.2.253」は、MPRE2311〜2314のすべてに存在するLIF Bに関連付けられている。しかしながら、ホスト2302のMPRE2312のみが、物理ホスト2309のための指定されたインスタンスであり、MPRE2312のみが、ARPクエリに応答することになる。いくつかの実施形態では、セクションIIIで後述するように、コントローラ(又は、コントローラのクラスタ)が、特定のセグメントのための指定されたインスタンスとして、MPREの1つを指定する。

0140

動作「2」の間、MPRE2312は、物理ホスト2309からARPクエリメッセージを受信し、将来のルーティングのために物理ホストのMACアドレスを解決テーブル2342に記録する。物理ホスト2309のための指定されたインスタンスではないすべての他のMPRE(2301、2302、及び2303)は、ARPを無視する。いくつかの実施形態では、これらの他のMPREは、それにもかかわらず、物理ホストのMACアドレスをそれら自体の解決テーブルに記録することになる。

0141

動作「3」の間、MPRE2312は、ARP応答メッセージを物理ホスト2309に送信する。非VDR物理ホストへのこの応答では、送信元MACアドレスは、一般的なVMACではなく、MPRE2312自体のユニークな物理MACアドレス(「PMAC2」)である。これは、物理ホスト2309が、他のMPREインスタンシエイションのいずれかではなく、L3ルーティングのためのMPRE2312のみと通信することを知るようにするためである。最終的に、動作「4」では、物理ホスト2309は、そのデフォルトゲートウェイのユニークな物理MACアドレス(「PMAC2」)を、それ自体の解決テーブル2349に記録する。一旦、指定されたインスタンス及び物理ホスト2309が互いのMACアドレスを有すると、物理ホストと、論理ネットワーク2300の残りの部分との間で、メッセージ交換を開始することができる。

0142

図25は、仮想マシン2321及び2322から物理ホスト2309へのパケットのルーティングのための指定されたMPRE2312の使用を示す。図示のように、IPアドレス10.1.1.1(セグメントA)及びMACアドレス「MAC1」を有するVM2321は、ホスト2301上で動作しており、IPアドレス10.1.3.2(セグメントC)及びMACアドレス「MAC4」を有するVM2322は、ホスト2302上で動作している。物理ホスト2309は、IPアドレス10.1.2.7(セグメントB)及びMACアドレス「MAC7」を有する。物理ホスト2309、VM2321、及びVM2322は、すべてネットワークの異なるセグメント内にあるため、VM2321及び2322から物理ホスト2309に横断するデータパケットは、MPREによるL3ルーティングを受けなければならない。VM2322のためのMPREは、物理ホスト2309のための指定されたMPRE(MPRE2312)であり、VM2321のためのMPRE(MPRE2311)ではないことに注意することが重要である。

0143

図25は、「1」、「2」、及び「3」とラベル付けされた3つの動作での、VM2322から物理ホスト2309へのパケットのルーティングを示す。動作「1」の間、セグメントCのVM2322は、そのLIF C2334を介してMPRE2312にパケットを送信する。データパケットは、パケットをMPRE2312に転送するために、ホスト2302上のMPSEのための宛先MACアドレスとして、一般的な「VMAC」を使用する。宛先IPアドレスは、物理ホスト2309のIPアドレスである10.1.2.7である。

0144

動作「2」の間、MPRE2312は、宛先IPアドレス10.1.2.7を、物理ホスト2309のMACアドレス「MAC7」に解決するために、そのアドレス解決テーブル2342のエントリを使用する。データパケットが、ホストマシンから物理ネットワーク上に送信される時、MPRE2312は、また、送信元MACアドレスとして、一般的な「VMAC」とは対照的に、それ自体のユニークな物理MACアドレス「PMAC2」を使用する。動作「3」では、MPRE2312は、セグメントBのためのその論理インタフェース(LIF B2332)を使用してデータパケットを送信する。ルーティングされたデータパケットは、その解決されたL2MACアドレス(すなわち、「MAC7」)を使用して、(物理ネットワーク及びL2スイッチを介して)物理ホスト2309に転送される。パケットが物理ホスト2309に到着すると、送信元MACアドレスは、「PMAC2」、すなわち、指定されたインスタンスのユニークな物理MACのままであることは、注目に値する。いくつかの実施形態では、物理ホストは、一般的な「VMAC」を知らないことになり、代わりに、指定されたMPREの「PMAC2」のみと通信する。

0145

図25は、また、「4」、「5」、及び「6」とラベル付けされた動作での、VM2321から物理ホスト2309へのパケットのルーティングを示す。VM2322とは異なり、VM2321のMPRE(2311)は、指定されたインスタンスではない。それにもかかわらず、いくつかの実施形態では、そのMPREが物理ホストの指定されたインスタンスではない仮想マシンは、ルーティングされたパケットを物理ホストに送信するためのそれ自体のMPREを依然として使用する。

0146

動作「4」の間、セグメントAのVM2321は、そのLIF A2333を介して、MPRE2311にパケットを送信する。データパケットは、パケットをMPRE2311にルーティングするために、仮想ルータのためのMACアドレスとして、一般的な「VMAC」を使用する。宛先IPアドレスは、物理ホスト2309のIPアドレスである10.1.2.7である。

0147

動作「5」の間、MPRE2311は、宛先IPアドレス10.1.2.7が物理ホストのためのものであること、及び、それが物理ホスト2309のための指定されたMPREではないことを判定する。いくつかの実施形態では、各MPREインスタンシエイションは、その論理インタフェースの構成の一部として、各々の特定のLIFのための指定されたインスタンスであるかどうかを認識している。いくつかの実施形態では、構成は、また、どのMPREインスタンシエイションが、指定されたインスタンスであるのかを識別する。結果として、MPRE2311は、指定されたMPRE2312から解決情報を取得しようとすることになる。いくつかの実施形態では、所与の物理ホストのための指定されたインスタンスではないMPREは、指定されたMPREを有するホストにクエリを(例えば、UDPチャネルを介して)送信し、IPアドレスの解決を要求することになる。指定されたインスタンスが解決情報を有する場合、解決情報を問い合わせ元のMPREに(例えば、同じUDPチャネルを介して)送り返すことになる。指定されたMPREが、それ自体の物理ホストのIPアドレスを解決することができない場合、物理ホストのIPのためのARP要求を開始し、解決を問い合わせ元のMPREに送り返すことになる。この例では、MPRE2311は、問い合わせメッセージをホスト2302に(すなわち、MPRE2312に)送信することになり、ホスト2302は、(その解決テーブル2342からの)物理ホスト2309のための解決されたMACアドレスをMPRE2311に送り返すことになる。

0148

動作「6」の間、MPRE2311は、そのLIF B2331を介して物理ホスト2309にデータパケットを送信するために、解決された宛先MACアドレスを使用する。いくつかの実施形態では、MPRE2311は、また、物理ホストのための解決されたアドレスIP10.1.2.7を、そのアドレス解決テーブルに格納する。データパケットのための送信元MACアドレスは、MPRE2311のユニークなPMAC(「PMAC1」)であり、一般的なMACでも、指定されたインスタンスのPMACでもない。これは、ARPパケットではなく、データトラフィックパケットであるため、物理ホストは、セグメントBのVMのためのパケットを送信する先のMACアドレスとして、PMAC1を格納しないことになる。ルーティングされたデータパケットは、その解決されたL2MACアドレス(「MAC7」)を使用して(物理ネットワーク及びL2スイッチを介して)物理ホスト2309に転送される。

0149

図26a〜bは、物理ホスト2309から仮想マシン2321及び2322へのパケットのルーティングのための指定されたMPRE2312の使用を示す。上述したように、(セグメントBのIPアドレス10.1.2.7を有する)物理ホスト2309は、仮想マシン2321及び2322とは異なるセグメント上にあり、そのため、物理ホストからこれらの仮想マシンへのデータパケットは、ネットワーク層でルーティングされなければならない。いくつかの実施形態では、特定の物理ホストのための指定されたMPREは、その特定の物理ホストからのパケットへの、又は、特定のセグメント上のすべてのホストのためのL3ルーティングを実行するために、常に使用される。この例では、MPRE2312は、VM2322のみが、指定されたMPRE2312と同じホストマシン2302内で動作しているにもかかわらず、物理ホスト2309を含むセグメントB上の任意の物理ホストからVM2321及び2322の両方へのデータパケットをルーティングするための指定されたMPREである。

0150

図26aは、「1」、「2」、及び「3」とラベル付けされた3つの動作での、物理ホスト2309からVM2322へのデータパケットのルーティングを示す。動作「1」では、物理ホスト2309は、パケットをホスト2302に送信する。このパケットは、セグメントC内にあるIPアドレス10.1.3.2を有するVM2322を宛先とする。(図24のARP動作によって作成された)その解決テーブル2349内のエントリに基づいて、MPREは、デフォルトゲートウェイのIPアドレス10.1.2.253を、MPRE2312のユニークな物理MACアドレスである「PMAC2」として解決する。パケットは、物理ネットワークを介して、ホスト2302のアップリンクモジュール2352に到着する。

0151

動作「2」では、アップリンクモジュール2352は、ユニークな「PMAC2」を一般的なVMACに変更し、そのため、パケットは、ホスト2302内で一度適切に転送されることが可能である。パケットは、次に、MPRE2312に到着し、MPRE2312のLIF B2332によって処理される。

0152

動作「3」では、MPRE2312は、そのアドレス解決テーブル内の情報を使用して、IPアドレス10.1.3.2をVM2322のための「MAC4」として解決し、データパケットをVM2322に送信する。MPRE2312は、また、物理ホスト2309の送信元MACアドレス「MAC7」を一般的なVMACに置き換える。

0153

図26bは、「4」、「5」、及び「6」とラベル付けされた3つの動作での、物理ホスト2309からVM2321へのデータパケットのルーティングを示す。動作「4」では、物理ホスト2309は、物理ネットワークを介して、パケットを、指定されたMPRE2312を動作させるホスト2302に送信する。このパケットは、セグメントA内にあるIPアドレス10.1.1.1を有するVM2321を宛先とする。パケットは、解決テーブル2349内のエントリに基づいて、指定されたMPRE2312のユニークな物理MACアドレスであるL2MACアドレス「PMAC2」にアドレスされる。宛先VM2321が、それ自体のMPRE2311を有するホストマシン2301上にあることは、注目に値する。しかしながら、MPRE2311ではなくMPRE2312が、物理ホストのための指定されたインスタンスであるため、物理ホスト2309は、依然として最初にMPRE2312にパケットを送信する。パケットは、物理ネットワークを介して、ホスト2302のアップリンクモジュール2352に到着する。

0154

動作「5」では、アップリンクモジュール2352は、ユニークな「PMAC2」を一般的なVMACに変更し、そのため、パケットは、ホスト2302内で一度適切に転送されることが可能である。パケットは、次に、MPRE2312に到着し、MPRE2312のLIF B2332によって処理される。

0155

動作「6」では、MPRE2312は、IPアドレス10.1.1.1を、VM2321のための「MAC1」として解決し、そのLIF A2335を使用して、データパケットをVM2321に送信する。ルーティングされたパケットは、送信元MACアドレスが、指定されたMPRE2312の「PMAC2」であることを示す。MPRE2312及び宛先VM2321は、異なるホストマシン上にあるため、パケットは、実際には、VM2321に到着する前に、ホスト2302上のMPSEを、次に、物理ネットワークを、次に、ホスト2301上のMPSEを介して送信される。

0156

図25及び26を参照して上述したように、仮想マシンから物理ホストへのデータトラフィックのためのルーティングは、個々のMPREによって実行され、物理ホストから仮想マシンへのデータトラフィックは、指定されたMPREを通過しなければならない。すなわち、物理ホストへのネットワークトラフィックは、ポイントツーポイントであり、物理ホストからのネットワークトラフィックは、分散される。図23〜30の論理ネットワーク2300には示されていないが、いくつかの実施形態での論理ネットワークの実装は、複数の非VDR物理ホストを有することができる。いくつかの実施形態では、これらの非VDR物理ホストの各々は、ホストマシンのうちの1つの中の対応する指定されたMPREを有する。いくつかの実施形態では、特定のMPREが、非VDR物理ホストの一部又はすべてのための指定されたインスタンスとして機能することになる。例えば、いくつかの実施形態は、特定のセグメント上のすべての物理ホストのための特定のMPREを指定した。

0157

いくつかの実施形態に関して、図27は、非VDR物理ホストからのL3層トラフィックを処理するためのプロセス2700を概念的に示す。いくつかの実施形態では、プロセス2700は、ホストマシン上で動作する仮想化ソフトウェア内のMPREモジュールによって実行される。いくつかの実施形態では、このプロセスは、図26a〜bに示す動作の間に、MPRE2311及び2312によって実行される。

0158

プロセス2700は、ホストが、L3ルーティングを必要とするデータパケット(すなわち、ネットワークのあるセグメントから来るが、ネットワークの別のセグメントを宛先とするパケット)を受信すると開始する。プロセス2700は、(2710で)パケットが、非MPRE物理ホストからのものであるかどうかを判定する。いくつかの実施形態では、MPREは、この判定を、物理ホスト及びそれらのIPアドレスのリストに対してデータパケット内のIPアドレスを調べることによって行う。いくつかの実施形態では、このようなリストは、ネットワークのコントローラからの構成データのセットの一部である。パケットが既知の物理ホストからのものではない場合、プロセスは2740に進む。

0159

2720では、プロセスは、MPREが、データパケットを送信する物理ホストのための指定されたインスタンスであるかどうかを判定する。いくつかの実施形態では、各MPREは、ネットワークコントローラによって構成され、MPREのいくつかは、物理ホストのための指定されたインスタンスとして構成される。これらの実施形態のいくつかでのMPREは、データパケット内で示されるように、物理ホストのための指定されたインスタンスであるかどうかを確認するために、それ自体の構成データを調べることになる。いくつかの他の実施形態では、各MPREは、物理ホストの又はそれ自体のユニークな識別子(例えば、IPアドレス)をハッシュすることによって、示された物理ホストのための指定されたインスタンスであるかどうかを、ローカルに判定する。MPREが、特定の物理ホストのための指定されたインスタンスではない場合、プロセスは、(2725で)物理ホストからのデータパケットを無視し、終了する。そうでない場合、プロセスは2730に進む。

0160

2730では、プロセスは、入力データパケットがARPクエリであるかどうかを判定する。そうである場合、プロセスは、(例えば、図24内のMPRE2312によって実行されるように)(2735で)MPREのユニークな物理MACを有するARPクエリに応答し、終了する。そうでない場合、プロセスは2740に進む。

0161

2740では、プロセスは、例えば、(ARPクエリを発行することによって、又は、その解決テーブルからの格納されたARP結果を使用することによって)宛先のL3IPアドレスをそのL2MACアドレスに解決することによって、データパケットにL3ルーティングを実行する。プロセスは、次に、(2750で)解決された宛先MACアドレスに基づいて、ルーティングされたデータパケットを宛先仮想マシンに転送する。宛先VMが、MPREと同じホストマシン上にある場合、データパケットは、ホスト上のMPSEを介してVMに転送されることになる。宛先VMが、異なるホスト上にある場合、データパケットは、物理ネットワークを介して他のホストに転送されることになる。パケットを転送した後、プロセス2700は終了する。

0162

いくつかの実施形態に関して、図28は、非VDR物理ホストへの(例えば、プロセスを実行するMPREと同じホスト上のVMから受信した)L3トラフィックを処理するためのプロセス2800を概念的に示す。いくつかの実施形態では、このプロセスは、図25に示す動作の間にMPRE2311及び2312によって実行される。

0163

プロセス2800は、ホストが、L3ルーティングを必要とするデータパケットを受信すると開始する。プロセス2800は、(2810で)パケットが、非VDR物理ホストを宛先とするかどうかを判定する。パケットが、このような物理ホストを宛先としない場合、プロセスは2840に進む。パケットが、このような物理ホストを宛先とする場合、プロセスは2820に進む。

0164

2820では、プロセスは、MPREが、(例えば、物理ホストが属するセグメントに基づいて)データパケットが送信される先の物理ホストのための指定されたインスタンスであるかどうかを判定する。そうである場合、プロセスは2825に進む。MPREが指定されたインスタンスではない場合、プロセスは2830に進む。

0165

2830では、プロセスは、指定されたインスタンスからのアドレス解決情報を要求し、取得する。いくつかの実施形態では、これは、UDPチャネルを介して、指定されたインスタンスに要求メッセージを送信し、応答メッセージ内のアドレス解決情報を受信することによって達成される。いくつかの実施形態では、指定されたインスタンスではないMPREは、物理ホストのためのアドレス解決情報を格納せず、物理ホストに送信される各パケットのために、UDPチャネルを介して要求を送信する。他の実施形態では、アドレス解決情報を受信した後、MPREは、将来のパケットをルーティングする際に使用するためにこの情報を格納する。

0166

2825では、プロセスは、指定されたインスタンスとして、物理ホストのためのアドレスを解決することができるかどうかを判定する。いくつかの実施形態では、プロセスは、物理ホストのための一致するエントリが存在するかどうかを確認するために、それ自体のARPテーブルを調べる。プロセスがアドレスを解決することができる場合、プロセスは2840に進む。そうでない場合、プロセスは、(2735で)物理ホストのアドレスのためのARP要求を実行し、ARP応答に応じてそのARPテーブルを更新する。いくつかの実施形態では、指定されたインスタンスのみが、物理ホストのためのルーティング情報を保持する。プロセスは、次に2840に進む。

0167

2840では、プロセスは、例えば、物理ホストのIPアドレスをそのMACアドレスに解決することによって、データパケットにL3ルーティングを実行する。プロセスは、また、MPREが、データパケット内で示される物理ホストのための指定されたインスタンスであろうとなかろうと、送信元MACアドレスを、MPREのユニークなPMACに設定する。プロセスは、次に、(2850で)解決された宛先MACアドレスに基づいて、ルーティングされたデータパケットを物理ホストに転送する。パケットを転送した後、プロセス2800は終了する。

0168

D.異なるオーバレイネットワーク間のブリッジとしてVDRを使用する

0169

いくつかの実施形態では、ホストマシンでのLRE動作は、(例えば、あるIPサブネットから別のIPサブネットへの)L3ルーティングだけでなく、同じサブネット内の(VXLANネットワーク及びVLANネットワーク間のような)異なるオーバレイネットワーク間のブリッジングも実行する。いくつかの実施形態では、2つの異なるオーバレイネットワークは、同じIPサブネット内にあるVMを有することが可能である。これらの状況では、あるオーバレイネットワークから別のオーバレイネットワークにデータパケットを送信するために、L3ルーティングは使用されない。代わりに、転送は、ブリッジングに依存し、ブリッジングは、ネットワークセグメント識別子(例えば、VNI、又はその関連する論理インタフェース)、及び、リンク層アドレス(例えば、MACアドレス)間の結びつけ又はペアリングに基づく。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ