特許第6203877号(P6203877)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

6203877エンドポイントにより配布されるマルチキャスト
<>
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000002
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000003
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000004
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000005
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000006
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000007
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000008
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000009
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000010
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000011
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000012
  • 6203877-エンドポイントにより配布されるマルチキャスト 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6203877
(24)【登録日】2017年9月8日
(45)【発行日】2017年9月27日
(54)【発明の名称】エンドポイントにより配布されるマルチキャスト
(51)【国際特許分類】
   H04L 12/761 20130101AFI20170914BHJP
   H04L 12/70 20130101ALI20170914BHJP
【FI】
   H04L12/761
   H04L12/70 D
【請求項の数】21
【外国語出願】
【全頁数】30
(21)【出願番号】特願2016-21197(P2016-21197)
(22)【出願日】2016年2月5日
(62)【分割の表示】特願2014-79691(P2014-79691)の分割
【原出願日】2014年4月8日
(65)【公開番号】特開2016-129362(P2016-129362A)
(43)【公開日】2016年7月14日
【審査請求日】2016年3月8日
(31)【優先権主張番号】61/869,704
(32)【優先日】2013年8月24日
(33)【優先権主張国】US
(31)【優先権主張番号】14/020,369
(32)【優先日】2013年9月6日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】511235548
【氏名又は名称】ニシラ, インコーポレイテッド
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(72)【発明者】
【氏名】シェン, ジェンジュン
(72)【発明者】
【氏名】テスマー, アレクサンダー
(72)【発明者】
【氏名】シング, ラム デュラー
(72)【発明者】
【氏名】ワン, フア
(72)【発明者】
【氏名】ワン, ダ
【審査官】 宮島 郁美
(56)【参考文献】
【文献】 特開2011−171874(JP,A)
【文献】 特開2005−184234(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00−12/26,12/50−12/955
(57)【特許請求の範囲】
【請求項1】
複数の物理ネットワークセグメントを含む物理ネットワーク上で論理ネットワークを運用するための方法であって、
前記物理ネットワークに実装された複数の論理ネットワークを特定し、
前記複数の論理ネットワークに対するブロードキャスト又は未知のユニキャスト又はマルチキャスト(BUM)パケットを、複数のトンネルエンドポイントをプロキシエンドポイントとして用いることで複製し、各論理ネットワークは、物理ネットワークの第一ネットワークセグメント内のそのロキシエンドポイントとして指定された一つのトンネルエンドポイントを有し、前記物理ネットワークの第二のネットワークセグメントから前記論理ネットワークに属するパケットを受信し、前記第一のネットワークセグメント内の他のトンネルエンドポイントに前記パケットを複製し、少なくとも2つの前記論理ネットワークが、受信したパケットを複製するためのプロキシエンドポイントとして前記第一ネットワークセグメント内の別々トンネルエンドポイントを用いることを特徴とする方法。
【請求項2】
トンネルエンドポイントはホストマシンで動作し、前記少なくとも二つの論理ネットワークにより用いられる前記第一のネットワークセグメント内の別々のトンネルエンドポイントは別々のホストマシンで動作することを特徴とする請求項1に記載の方法。
【請求項3】
前記物理ネットワークの前記第一ネットワークセグメントはマルチキャストアイランドであることを特徴とする請求項1に記載の方法。
【請求項4】
ひとつのマルチキャストグループそれぞれの論理ネットワークをマッピングすることを更に含むことを特徴とする請求項1に記載の方法。
【請求項5】
それぞれの論理ネットワークは、オーバーレイ論理ネットワークであることを特徴とする請求項1に記載の方法。
【請求項6】
前記論理ネットワークの少なくとも1つは、VXLANとして動作ることを特徴とする請求項5に記載の方法。
【請求項7】
論理ネットワークのための前記第一ネットワークセグメント内のロキシエンドポイントは、前記物理ネットワークの複数の他のネットワークセグメントからパケットを受信し、前記パケットを前記第一ネットワークセグメント内の他のトンネルエンドポイントに複製するためのものであることを特徴とする請求項1に記載の方法。
【請求項8】
ロキシエンドポイントとして働く各指定トンネルエンドポイントは、前記第一のネットワークセグメント内のトンネルエンドポイントのプールから無作為に選択されることを特徴とする請求項1に記載の方法。
【請求項9】
ロキシエンドポイントとし働く各指定トンネルエンドポイントは、ネットワーク負荷に基づいて選択されることを特徴とする請求項1に記載の方法。
【請求項10】
前記物理ネットワークは、前記第一ネットワークセグメントの外部のネットワークノードから前記第一ネットワークセグメントの内部のネットワークノードへのマルチキャストトラフィックをサポートしないことを特徴とする請求項1に記載の方法。
【請求項11】
複数のネットワークセグメントを含む物理ネットワーク上で論理ネットワークを運用するための方法であって、前記物理ネットワークはマルチキャストトラフィックを各ネットワークセグメント内でサポートするが、異なるネットワークセグメント間ではサポートせず、前記方法は、
複数の論理ネットワークを特定し、特定された各論理ネットワークを、ブロードキャスト又は未知のユニキャスト又はマルチキャスト(BUM)パケットを前記論理ネットワークに属する仮想マシンへ分配するためのマルチキャストグループに関連付け、前記仮想マシンは前記物理ネットワーク内のトンネルエンドポイントとして働くホストマシンで動作しており、
前記複数の論理ネットワーク内の各論理ネットワークについて、特定された前記ネットワークセグメントのそれぞれの中のマルチキャストプロキシとしてエンドポイントを指定し、特定のネットワークセグメント内の特定の論理ネットワークのための前記マルチキャストプロキシとして指定されたエンドポイントは、他のネットワークセグメントから、関連付けられた前記マルチキャストグループのマルチキャストパケットを受信し、受信した前記マルチキャストパケットを前記特定のセグメント内のエンドポイントに複製するためのものであることを特徴とする方法。
【請求項12】
各ホストマシンは前記論理ネットワークのソフトウェアスイッチを動作させていることを特徴とする請求項11に記載の方法。
【請求項13】
前記マルチキャストプロキシとして指定されたエンドポイントは、前記ネットワークセグメント内のエンドポイントのプールから無作為に選択されることを特徴とする請求項12に記載の方法。
【請求項14】
前記マルチキャストプロキシとして指定されたエンドポイントは、ネットワーク負荷に基づいて選択されることを特徴とする請求項12に記載の方法。
【請求項15】
関連付けられた前記マルチキャストグループの前記マルチキャストパケットは、前記他のネットワークセグメントからユニキャストパケットとして受信されることを特徴とする請求項11に記載の方法。
【請求項16】
受信した前記マルチキャストパケットを前記特定のネットワークセグメント内のエンドポイントへ複製することは、前記パケットをマルチキャストにより転送することを含むことを特徴とする請求項11に記載の方法。
【請求項17】
前記ネットワークセグメントの少なくとも1つは、パケットを複数の受信者へ一度に複製することを許すことを特徴とする請求項11に記載の方法。
【請求項18】
前記物理ネットワーク内の前記ネットワークセグメントの少なくとも1つは、パケットを複数の受信者へ一度に複製することを許さないことを特徴とする請求項11に記載の方法。
【請求項19】
前記ネットワークセグメントの少なくとも1つは、マルチキャストアイランドであることを特徴とする請求項11に記載の方法。
【請求項20】
前記マルチキャストグループの少なくとも2つは、前記特定のネットワークセグメント内の指定された別個のマルチキャストプロキシであることを特徴とする請求項11に記載の方法。
【請求項21】
ネットワークセグメント内のマルチキャストグループについてマルチキャストプロキシを指定することは、前記ネットワークセグメントの前記エンドポイントの中からプロキシエンドポイントを選択することを含むことを特徴とする請求項11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
マルチキャストは送信元からの1つの送信で宛先コンピュータのグループへ同時にメッセージまたは情報を伝達することである。メッセージのコピーは他のネットワーク要素によって自動的に複製されて、転送される。マルチキャストパケットの転送及び複製は、通常、ネットワークの中の中間ノードによってされる。スイッチはレイヤ2ネットワークの中でマルチキャスト転送を果たす一方、(マルチキャスト)ルータはレイヤ3ネットワークを横切ってマルチキャストルーティングを果たす。一般に、マルチキャストをサポートするスイッチはIGMP(インターネットグループマネジメントプロトコル)スヌーピングを使う一方、マルチキャストをサポートするルータはルーティングプロトコルとしてPIM(プロトコルインデペンデントマルチキャスト)を使う。
【背景技術】
【0002】
従来、マルチキャストを使うアプリケーションはあまり多くないけれども、多くのIPマルチキャストアプリケーションが、会計ソフトウェア、ビデオサービスなどのように開発され、展開されている。注目する価値がある使用ケースは、提案された重要な技術であるVXLANを用いたオーバレイベースのネットワーク仮想化(レイヤ2トンネルを掘り)である。VXLANは物理IPネットワークの上で多くの論理レイヤ2ネットワークをサポートすることができる。それはMACオーバーUDPカプセル化に基づき、論理ネットワークの内部でBUM(ブロードキャスト、未知のユニキャストおよびマルチキャスト)トラフィックのカプセル化にIPマルチキャストグループが割り当てられることを要求する。結果として、多くのマルチキャストグループが、特に、各テナントが多くの論理ネットワークを構築することができるクラウド環境において消費される可能性がある。これらの構築された論理ネットワークおよび対応するマルチキャストグループは、物理レイヤ3ネットワークおよびデータセンターさえ超えてまたがるかもしれない。
【0003】
あいにく、IPマルチキャストの使用は、それをサポートするためにインフラストラクチャーの不足によって制限される。ローエンドスイッチとルータは通常IGMPとPIMをサポートせず、それらは通常多くのマルチキャストグループをサポートしない。さらに、物理的なネットワークハードウェアが、マルチキャストをサポートする機能を有する場合にさえ、ユーザは一般に、IPマルチキャストの管理可能性と拡張性の複雑さのため、データセンターネットワークの中でマルチキャストを使用可能にすることを避ける。データセンターとプロバイダネットワークにわたるマルチキャストを使用可能にすることはよりいっそう難しい。
【0004】
必要なものは、データセンターまたはプロバイダネットワークを含むかもしれない物理ネットワークを横断して多くのマルチキャストグループを使用可能にするためのネットワークシステムである。そのようなネットワークシステムは、物理ネットワークに内蔵したマルチキャスト能力に依存せずにネットワーク仮想化をサポートすべきであり、一方、それにもかかわらず、物理ネットワーク内でマルチキャストがフルに使用可能とされていない場合でさえ、物理ネットワークによって提供されたマルチキャスト能力に影響を及ぼしてより高い効率を達成する。
【発明の概要】
【0005】
発明のいくつかの実施形態は、ネットワークを横切って選択されたエンドポイントのグループに提供するメッセージの複製を実行するための方法(すなわちマルチキャスト複製)を提供する。このネットワークは、ネットワークからのメッセージを受け取り、ネットワークのためにメッセージを生成する複数のエンドポイントを含む。エンドポイントはネットワークの異なるセグメントに置かれ、各セグメントは1以上のエンドポイントを含む。ネットワークの中で特定の複製グループ(すなわちマルチキャストグループ)に属しているすべてのエンドポイントに特定のメッセージ(例えばデータパケット)を複製する送信元エンドポイントに関して、送信元エンドポイントは、送信元エンドポイント自身のセグメントの中の各エンドポイントと、他のセグメントのそれぞれの中のプロキシエンドポイントに特定のメッセージを複製する。プロキシエンドポイント自身のセグメントの中で特定の複製グループに属しているすべてのエンドポイントに、各プロキシエンドポイントは次々特定のメッセージを複製する。
【0006】
いくつかの実施形態では、エンドポイントによるマルチキャスト複製は3つのステップで実行される。(1)送信元セグメントのローカルな複製(その中で、マルチキャストパケットは送信者と同じセグメントのローカルな受信者エンドポイントに送信される)。(2)セグメント間複製(その中において、パケットが、マルチキャストグループの受信者を有するすべてのリモートセグメントに複製される)。(3)リモートセグメントのローカルな複製(その中において、パケットはリモートセグメントのすべての受信者エンドポイントに送信される)。
【0007】
マルチキャスト複製のための関連情報のすべてを得るように、いくつかの実施形態の中のエンドポイントは情報を互いと交換する。いくつかの実施形態では、互いに制御プレーンプロトコルを使って、エンドポイントは分散された方法で情報を交換する。いくつかの実施形態では、別個のエンティティ(例えば集中化したコントローラ)のセットはエンドポイントからの情報を収集し、エンドポイントがマルチキャスト複製を実行するために必要な物理ネットワークと他のエンドポイントについての情報をエンドポイントに公開する(先を見越してまたはエンドポイントからの問合せに呼応して)。
【0008】
いくつかの実施形態は、リモートセグメントでトラフィック負荷を平衡させる方法でプロキシを選ぶ。いくつかの実施形態では、これは、各マルチキャストグループについて、無作為によってプールからエンドポイントを選ぶことによって遂行される。すでに使用中のエンドポイントを意図的に避けることによって、いくつかの実施形態はプロキシ選択をインテリジェントに実行する。
【0009】
いくつかの実施形態では、マルチキャスト複製は、VXLANなどのオーバレイベースのネットワーク仮想化ソリューションを実施するために使われる。オーバーレイネットワークの中で、論理レイヤ2ネットワークは物理ネットワークの上で構築されてもよく、完全な乱雑にされた(full messed)レイヤ2トンネルが、同じ論理レイヤ2ネットワークに参加するエンドポイントの間で設立され得る。いくつかの実施形態では、論理レイヤ2ネットワークの中の1つのトンネルエンドポイントから発生しているBUMパケットはネットワークの他のすべてのメンバーエンドポイントに複製される。
【0010】
いくつかの実施形態では、VMは論理レイヤ2ネットワークの消費者であり、ハイパーバイザーはトンネルのエンドポイントである。これらの実施形態のいくつかが、論理レイヤ2ネットワークにマルチキャスト複製オペレーション(すなわちマルチキャストグループ)の範囲を、トンネルのエンドポイントにマルチキャストのエンドポイントをマッピングする。そのようなわけで、論理ネットワークの中のBUMパケット複製は物理ネットワークの中のマルチキャストグループにマルチキャスト複製として実施される。すなわち、これらの実施形態の中の論理ネットワークの複製範囲は、マルチキャストグループの受信者エンドポイントだけを含むようにマッピングされる。
【0011】
先述の要約は、発明のいくつかの実施形態の簡潔な紹介の役割を果たすことを意図している。それは、この文書の中で明らかにされたすべての創意に富んだ主題の紹介または概要であることを意図されていない。その後の詳細な説明と詳細な説明において参照される図面はさらに他の実施形態と同様に要約において説明された実施形態を説明するであろう。したがって、この文書によって説明されたすべての実施形態を理解するために、要約および詳細な説明および図面の完全なレビューが必要である。さらに、クレームされた主題は、要約、詳細な説明および図面における例となった詳細によって制限されないが、反対に、クレームされた主題は、主題の精神からかけ離れずに他の特定の形式に具現化されることができるため、添付された特許請求の範囲によって定義される。
【図面の簡単な説明】
【0012】
発明の斬新な機能は添付された特許請求の範囲に記述される。しかし、説明の目的のために、発明のいくつかの実施形態は以下の図に記述される。
図1図1は、ひとつのセグメントのエンドポイントが特定の複製グループのすべてのエンドポイントにデータパケットを複製するネットワークを説明する。
図2図2は、1つのネットワークセグメントから他のネットワークセグメントまでのプロキシの使用によるマルチキャストトラフィックの伝播を説明する。
図3図3は、ローカルなセグメントでマルチキャストを実施するために、エンドポイントによってユニキャスト複製を使うネットワークを説明する。
図4図4は、ネットワークの中の複製/マルチキャストパケットを転送するためのプロセスを概念的に説明する。
図5図5は、複製をマルチキャストするために、適切なエンドポイント情報の収集と配布を説明する。
図6図6は、マルチキャストトラフィックを複製し、転送するためにエンドポイントによって使われるマルチキャスト情報のセットを説明する。
図7a】、
図7b図7a−図7bは、リモートセグメントでマルチキャストプロキシを選択するためのプロセスを概念的に説明する。
図8図8は、物理ネットワーク上における論理ネットワークのネットワーク仮想化を説明する。
図9図9は、複数のネットワークセグメントを横断してマルチキャスト複製/転送を実行することが可能な物理ネットワークの上における複数の論理ネットワークの実装を説明する。
図10図10は、物理ネットワークの中でマルチキャストプロキシを用いた、論理ネットワークの中でのBUMパケットの送信を説明する。
図11図11は、発明のいくつかの実施形態が実装される電子システムを概念的に説明する。
【発明を実施するための形態】
【0013】
以下の説明において、多くの詳細が説明のために記述される。しかし、当業者は、本発明がこれらの特定の詳細を使用することなく実施し得ることに気がつくであろう。他の例において、公知の構造と装置は、不要な詳細によって発明の説明をわかりにくくしないようにブロック図の形式で示される。
【0014】
本発明のいくつかの実施形態は、ネットワークを横断してメッセージの複製を実行するための方法をエンドポイントの選ばれたグループに提供する(すなわちマルチキャスト複製)。ネットワークは、ネットワークからのメッセージを受け取り、ネットワークのためにメッセージを生成する複数のエンドポイントを含む。エンドポイントはネットワークの異なるセグメントに置かれ、各セグメントは1以上のエンドポイントを含む。送信元エンドポイントがネットワークの中で特定の複製グループ(すなわちマルチキャストグループ)に属しているすべてのエンドポイントのために特定のメッセージ(例えばデータパケット)を複製するために、送信元エンドポイントは送信元エンドポイント自身のセグメントの中の各エンドポイントに、そして他のセグメントのそれぞれの中のプロキシエンドポイントに、その特定のメッセージを複製する。各プロキシエンドポイントは、プロキシエンドポイント自身のセグメントの中で特定の複製グループに属しているすべてのエンドポイントに順番に次々とその特定のメッセージを複製する。
【0015】
いくつかの実施形態のために、図1は、エンドポイントが種々のセグメントネットワークを横断する特定の複製グループのすべてのエンドポイントにデータパケットを複製するネットワーク100を説明する。ネットワーク100はセグメントに分けられる。エンドポイントはそれ自身のセグメント中の特定の複製グループのすべてのエンドポイントにデータパケットを複製する。他のセグメントのプロキシはそれから、他のセグメント中のマルチキャストグループの他のエンドポイントにデータパケットを複製する。
【0016】
説明されるように、ネットワーク100は少なくとも4つのセグメント101−104に分けられる。ネットワークセグメント101−104のそれぞれは、ネットワークデータトラフィックを生成し、かつ受信する多くのエンドポイントを含む。特に、セグメント101はエンドポイント111−116を含み、セグメント102はエンドポイント121−126を含み、セグメント103はエンドポイント131−136を含み、セグメント104はエンドポイント141−146を含む。セグメントの間のデータトラフィックはセグメント間ルーティング150を通り抜ける。
【0017】
図1はまた、エンドポイント111によって供給されるデータパケット190の複製を説明する。データパケット190は、特定の複製グループのすべてのメンバーエンドポイントに対して複製されるために指定される。この特定の複製グループのメンバーはエンドポイント111、112、114、115、121、122、123、124、125、126、131、132、135、136、141、144、145、および146を含む。これらのエンドポイントは、図1において影をつけられて図示される。影をつけられて図示されないエンドポイントは特定の複製グループに属していない。いくつかの実施形態では、データパケット190は、複製グループに属していないそれらのエンドポイントに転送されない。セグメントのすべてのエンドポイントが同じ複製グループに属しているわけではないことは注目に値する。例えば、ネットワークセグメント102のすべてのエンドポイントは特定の複製グループに属しているけれども、ネットワークセグメント101ではエンドポイントのいくつかだけが属している(ネットワークセグメント103と104のエンドポイントについても同様である)。いくつかの実施形態では、これらの他のエンドポイントは他の複製グループに属していてもよい。いくつかのエンドポイントは複数の複製グループに属している。
【0018】
送信元エンドポイント111はネットワークセグメント101にあり、エンドポイントはネットワークセグメント101中の複製グループの他のメンバーすなわちエンドポイント112、114、および115にデータパケットを複製する。同じデータパケットはネットワークセグメント102、103、および104のエンドポイントにまた複製される。しかし、送信元エンドポイント111はデータパケット190を直接これらの他のネットワークセグメントのエンドポイントに転送しない。代わりに、送信元エンドポイント111は複製データパケット190をこれらの他のネットワークセグメントのそれぞれの中のプロキシエンドポイントに転送する。特に、送信元エンドポイント111はネットワークセグメント102のためのプロキシとしてのエンドポイント121、ネットワークセグメント103のためのプロキシとしてのエンドポイント131、およびネットワークセグメント104のためのプロキシとしてのエンドポイント141を選択している。これらプロキシの各々は、それぞれのネットワークセグメントの中で特定の複製グループに属しているエンドポイントにデータパケット190を次々と複製し、転送する(例えばプロキシ141はデータパケット190をエンドポイント141、144、145、および146に転送する。)プロキシエンドポイントの選択は下のセクションIIIでさらに説明されるであろう。
【0019】
異なるネットワークセグメント内のプロキシの使用は、送信元エンドポイント111がデータパケット190を、リモートセグメントでエンドポイントに達するためにコンピューティングリソースを浪費せずに、他のネットワークセグメント内のエンドポイントに転送することを可能にする。それはまた、メッセージの複製と転送が各ネットワークセグメントのローカルネットワーク構造を十分に利用することを可能にする(いくつかの実施形態では、そのいくつかが、マルチキャストをサポートするために構成されたハードウェアを有する)。そうすることで、物理ネットワークによって提供されたマルチキャスト能力を活用してより高い効率を達成する一方、最適化された複製と物理ネットワークトポロジに基づいた配送経路とをサポートする。
【0020】
ネットワーク100に接続しているエンティティの間のデータ通信のためにネットワーク100は物理的なインフラストラクチャーを提供する。いくつかの実施形態の中に、ネットワーク100は、通信可能に連結されてネットワーク100を形成している通信経路の、多くの物理的に別個のセットを含む。いくつかの実施形態の中に、通信経路のこれらの物理的に別個のセットの少なくともいくつかは異なるポロジーを有するか、または、異なる通信プロトコルを使うか、あるいはその両方である。いくつかの実施形態では、ネットワーク100は、1つ以上のデータセンターまたは(インターネットサービスの)プロバイダネットワークまたはその両方を横断して広がり、通信経路の物理的に別個のセットの少なくともいくつかはデータセンターまたはプロバイダネットワークの中にある。いくつかの実施形態では、ネットワーク100は、複数の物理レイヤ2(VLAN)、IPサブネットおよび複数のアイランドに分割できる物理IPネットワークである。マルチキャスト転送はマルチキャストアイランドの中でサポートされるけれども、アイランドを横断してサポートされない(または、十分によい性能でサポートできなかった)。いくつかの実施形態では、マルチキャストは全くネットワークによってサポートされない。
【0021】
いくつかの実施形態の中の111などのネットワークエンドポイントは、ネットワーク100上のデータトラフィックを生成し、かつ受信するエンティティである。そのようなエンティティは、コンピューティング装置か、データストレージか、またはネットワークの上のデータトラフィックを提供するかあるいは消費する別のタイプの装置であるかもしれない。
【0022】
複数の受信者(レシーバ)にメッセージを複製し、転送するネットワークエンドポイントは、マルチキャストエンドポイントと称される。いくつかの実施形態では、マルチキャストエンドポイントは、物理的なネットワークトポロジおよびマルチキャスト能力に応じて異なるモードでマルチキャスト複製それ自体を実行する。いくつかの実施形態では、マルチキャストエンドポイントは、ホストマシンの上で動いているその仮想マシン(VM)のために物理ネットワークに(から)マルチキャストトラフィックを送受信するハイパーバイザーであるかもしれない。
【0023】
いくつかの実施形態では、マルチキャストエンドポイントは、マルチキャストトラフィックを生成せず、消費しないネットワークセグメント内のエンティティであるかもしれない。これらのマルチキャストエンドポイントのいくつかがローカルに始められたマルチキャストトラフィックを傍受し、リモートセグメントのマルチキャストエンドポイントに傍受したトラフィックを複製し、リモートセグメントからマルチキャストトラフィックを受信し、受信したトラフィックをローカルなセグメントに注入する。
【0024】
セグメント101−104などのネットワークセグメントは、エンドポイントの集まりを包含するネットワークのサブセットである。いくつかの実施形態では、各ネットワークセグメントは、包含したマルチキャストエンドポイントの間でマルチキャストトラフィックをサポートすることができる。いくつかの実施形態では、ネットワークセグメントの少なくともいくつかはマルチキャストトラフィックをサポートせず、マルチキャストグループにおける各受信者エンドポイントにマルチキャストパケットを複製し、転送するためにユニキャストに頼らなければならない。
【0025】
マルチキャストメッセージは、同じセグメントのエンドポイントの間では、異なるセグメントを横断するエンドポイント間とは違ったふうに複製され転送される。例えば、いくつかの実施形態では、同じセグメントのエンドポイントの間のネットワーク通信のコストは、異なるセグメントのエンドポイントの間より小さい。いくつかの実施形態では、ネットワークは同じセグメントのエンドポイントの間では、異なるセグメントのエンドポイントの間より高い通信帯域幅をサポートする。いくつかの実施形態では、セグメントは物理ネットワークのマルチキャスト能力によって定義される。これらの実施形態のいくつかにおいて、セグメントを横断するマルチキャストトラフィックが物理ネットワークによって全くサポートされないか、あるいはもっと制限された方法でサポートされる一方、セグメントの中のマルチキャストトラフィック(ネットワークトラフィックを複数の受信者に同時に送信する)は確実に物理ネットワークのマルチキャスト能力を利用することができる。
【0026】
いくつかの実施形態では、セグメントはVLAN(仮想のローカルエリアネットワーク)またはVLANの中のIPサブネットであるかもしれない。(いくつかの実施形態で、或るVLANは唯1つのIPサブネットを含んでいる。いくつかの実施形態では、複数のIPサブネットが或るVLAN内に割り当てられる。)いくつかの実施形態で、ネットワークセグメントは、互いの間に高帯域または低価格またはその両方であるリンクを有する隣接したVLANのセットを含む。
【0027】
いくつかの実施形態では、セグメントはマルチキャストアイランドである。いくつかの実施形態では、マルチキャストアイランドは、IPマルチキャストをサポートする物理ネットワークまたはすべてのルータがマルチキャストルーティングプロトコルをサポートする物理ネットワークである。いくつかの実施形態では、セグメントは、マルチキャストルーティングがルータによってサポートされない一方、IGMPスヌーピングはスイッチによってサポートされるVLANであるところのマルチキャストアイランドであり、それゆえマルチキャスト転送は、VLANの中に制限される。いくつかの実施形態で、マルチキャストアイランドは複数のVLANおよびサブネットを含む。いくつかの実施形態の中のそのようなマルチキャストアイランドは、マルチキャストルーティングをサポートする内部ルータ(または、レイヤ3スイッチ)を含むので、マルチキャストトラフィックは内部のVLANの間で発送することができるけれども、アイランドの外部へ、または外部からアイランドの中へ発送することはできない。
【0028】
セグメント間ルーティング150は、異なるネットワークセグメント101−104の間で通信経路を提供するネットワーク100の一部を含む。いくつかの実施形態では、各ネットワークセグメントの中で生じるマルチキャストトラフィックはセグメント間ルーティング150を横断して直接発送することができないか、あるいは、時間や帯域幅、または計算能力に関する追加費用を招くことなく、その上に発送することができない。いくつかの実施形態の中で、セグメント間ルーティング150は、マルチキャストトラフィックを許さないデータセンタまたはプロバイダネットワークを含む。これらの実施形態のいくつかにおいて、1つのセグメントのマルチキャストトラフィックは、特に異なるセグメントのプロキシエンドポイントに、セグメント間ルーティング150を介してユニキャストトラフィックとして伝播することができるだけである。
【0029】
上記の説明は、いくつかの実施形態のエンドポイントによる分散型マルチキャスト複製を導入する。いくつかのより詳細な実施形態は下で説明される。第一にセクションIは、いくつかの実施形態のエンドポイントによるマルチキャスト複製をより詳細に説明する一方、セクションIIは、いくつかの実施形態に従って分散型マルチキャスト複製をサポートするのに必要な情報の収集と交換を説明する。次にセクションIIIは、いくつかの実施形態に従って、プロキシエンドポイントの選択とネットワーク負荷の調和を説明する。セクションIVは、他のセクションの中で説明された分散型マルチキャスト複製に基づいたネットワーク仮想化スキームのいくつかの実施形態を説明する。最後に、セクションVは、発明のいくつかの実施形態が実装される電子システムを説明する。
【0030】
I.エンドポイントによるマルチキャスト複製
いくつかの実施形態の中で、エンドポイントによるマルチキャスト複製は以下の3つのステップを含む。(1)送信元セグメント内のローカル複製(それにおいて、マルチキャストパケットは、送信者(センダ)と同じセグメント内のローカルな受信者(レシーバ)エンドポイントに送信される)。(2)セグメント間複製(それにおいて、パケットは、マルチキャストグループの受信者を有するすべてのリモートセグメントに複製される)。(3)リモートセグメント内のローカル複製(それにおいて、パケットは、リモートセグメント内のすべての受信者エンドポイントに送信される)。
【0031】
ステップ(1)と(2)は送信者エンドポイントによって開始される。ステップ(2)中で、マルチキャストパケットを複製する前に、送信者エンドポイントはすべてのリモート受信者セグメント内で、プロキシとなる1つのエンドポイントを選び、それから、ユニキャストによってすべてのプロキシエンドポイントにパケットを複製する。複製されたパケットを受け取った後に、プロキシはステップ(3)へと複製手順を続けるであろう。
【0032】
図2は、プロキシの使用による1つのネットワークセグメントから他のネットワークセグメントまでのマルチキャストトラフィックの伝播を説明する。特に、図2は、ネットワーク200中の送信元セグメント内のローカル複製と、セグメント間複製と、リモートセグメント内のローカル複製とを説明する。説明されるように、ネットワーク200は4つのセグメント210、220、230、および240と、エンドポイント211−214を有するセグメント210と、エンドポイント221−224を有するセグメント220と、エンドポイント231−234を有するセグメント230と、エンドポイント241−244を有するセグメント240とを含む。さらに、送信元エンドポイント211は、複製するためにプロキシとしてエンドポイント221、231、および241を選び、リモートセグメント220、230、および240宛のマルチキャストメッセージをそれぞれ転送する。説明の簡潔さのために、当業者は、セグメントのいくつかが、同じマルチキャストグループに属していないエンドポイントを含んでもよいと理解するであろうけれども、エンドポイントのすべては、同じ特定のマルチキャストグループに所属することとして説明する。
【0033】
4つの段階201−204において、図2は、送信元エンドポイント211からセグメント210、220、230、および240内の同じマルチキャストグループのすべてのエンドポイントへのマルチキャストメッセージの複製と転送を説明する。各段階で、マルチキャストメッセージ/データを受け取ったエンドポイントは、影付きで図示されている。
【0034】
第1段階201で、送信元エンドポイント211はマルチキャストによるデータパケットを、ローカルネットワークセグメント210(ソースエンドポイントのネットワークセグメントである)中で同じマルチキャストグループに属している他のすべてのエンドポイントに転送した。いくつかの実施形態では、この複製と転送は、ネットワークセグメント210の下にある物理ネットワークのマルチキャスト能力を利用することによって遂行される。
【0035】
第二段202はセグメント間複製を示す(それにおいて、パケットは、マルチキャストグループの受信者エンドポイントを有するすべてのリモートセグメントに複製される)。特に、送信元エンドポイント211は、リモートセグメント220、230、および240にあるプロキシエンドポイント221、231、および241それぞれにデータパケットを複製し、転送している。いくつかの実施形態では、マルチキャストのために構成される物理的な通信経路を超えてセグメント間複製は起こり、使用可能な内蔵のマルチキャスト能力を利用する。しかし、いくつかの実施形態では、マルチキャストのために構成されない物理的な通信経路を超えてこのセグメント間複製は起こる。これらの実施形態のいくつかにおいて、1つのセグメントから別のセグメントまでのマルチキャストパケットの転送はユニキャスト通信プロトコルによって実行される。
【0036】
第3段203はリモートセグメント内でのローカル複製を示す(それにおいて、パケットはリモートセグメント内のすべての受信者エンドポイントに送信される)。特に、この複製はそれらのリモートセグメントそれぞれの中のプロキシエンドポイントによって実行される。すなわちセグメント220のためにプロキシとして選ばれたエンドポイント221は、エンドポイント222−224にパケットを複製し、転送する。同様に、セグメント230のためのプロキシとしてのエンドポイント231は、エンドポイント232−234にパケットを複製し、転送し、セグメント240のためのプロキシとしてのエンドポイント241は、エンドポイント242−244にパケットを複製し、転送する。いくつかの実施形態では、これらのリモートセグメントのいくつかにおけるマルチキャストパケットの複製と転送は、これらのリモート・ネットワーク・セグメントの下にある物理ネットワークのマルチキャスト能力を利用することによって遂行される。4番目の最終段204はデータパケットの複製と転送の完了を示す(それにおいて、マルチキャストグループにおけるすべてのエンドポイントはデータパケットを受信した)。
【0037】
いくつかの実施形態では言及されるように、セグメント内のマルチキャスト複製は、そのセグメントのための潜在的な物理ネットワークによってサポートされたローカルなマルチキャスト複製によって遂行される。いくつかの実施形態では、セグメントがマルチキャストアイランドであり、そのため送信者/プロキシエンドポイントが、ローカルなマルチキャストアイランド内のマルチキャストグループのすべての受信者に、物理ネットワークによって複製されるであろうマルチキャストパケットを送信する場合に、これはそうである。いくつかの実施形態では、マルチキャストアイランドは、マルチキャストパケットがアイランドから出ることを許さず、送信者エンドポイントは、マルチキャストを使わずに(例えば、ユニキャストを使って)アイランドからオリジナルパケットを送信するであろう。いくつかの実施形態は、ルータがマルチキャストをサポートしていたとしてもマルチキャストパケットをドロップすることをルータに強制することによって、マルチキャストパケットがセグメントの外へ転送されることを防止する。
【0038】
いくつかの実施形態では、セグメントの少なくともいくつかがローカルにマルチキャストプロトコルをサポートしない。これらの実施形態のいくつかにおいて、送信者/プロキシエンドポイントはユニキャストを持つすべてのローカルな受信者エンドポイントにオリジナルのマルチキャストパケットを複製する。従って、ローカル受信者各々のために、送信者/プロキシはオリジナルのパケットを複製し、それを受信者エンドポイントへのユニキャストパケットに変換する。図3は、ローカルなセグメントでマルチキャストを実施するために、エンドポイントによるユニキャスト複製を用いるネットワーク300を説明する。
【0039】
説明されるように、ネットワーク300は4つのネットワークセグメント310、320、330、および340を有しており、セグメント310はエンドポイント311−314を、セグメント320はエンドポイント321−324を、セグメント330はエンドポイント331−334を、セグメント340はエンドポイント341−344を有する。送信元エンドポイント311は、リモートセグメント320、330、および340それぞれに対してマルチキャストメッセージを複製し、転送するためのプロキシとしてエンドポイント321、331、および341を選択している。当業者は、セグメントのいくつかが同じマルチキャストグループに属していないエンドポイントを含む可能性があると理解するであろうが、説明の簡潔さのために、エンドポイントのすべては、同じ特定のマルチキャストグループに属することとして説明される。
【0040】
図3は10の段階301−309及び399におけるローカルセグメント内のユニキャスト複製を説明する。第1段階301は、エンドポイント312にユニキャストによるデータパケットを複製し、転送している送信元エンドポイント311を説明する。セグメント310はマルチキャストプロトコルをサポートせず、そのため、セグメント310中の複数のエンドポイントへのマルチキャストトラフィックは同じマルチキャストグループの個々のエンドポイントへのユニキャスト送信によって実装されなければならない。受信者エンドポイントが送信者エンドポイント(またはプロキシ)と同じVLANにあるいくつかの実施形態では、宛先MACアドレスは、受信者エンドポイントのMACアドレスとなるように変更される。
【0041】
セグメント310内のマルチキャストグループの残りのメンバーに対するデータパケットのマルチキャスト複製と転送とを完了するために、送信元エンドポイントはエンドポイント313と314とにユニキャスト転送を実行する。第二段階302と第3段階303はそれぞれエンドポイント313と314とに転送しているユニキャストを説明する。
【0042】
第4段階304は、セグメント310内の送信元エンドポイント311からセグメント320のための選ばれたプロキシエンドポイント321までのセグメント間メッセージ複製/転送を説明する。図3の例は、ユニキャストによって実行されるようなセグメント間転送を説明する。しかし、いくつかの実施形態では、セグメント間通信の下にある物理的な通信経路がマルチキャストをサポートするならば、セグメント間転送は送信元エンドポイントからプロキシのすべてに対してマルチキャストによって実行される。
【0043】
第5段階305は、送信元エンドポイント311からセグメント330のための選ばれたプロキシエンドポイント331までのセグメント間メッセージ複製/転送を説明する。段階305はまた、セグメント320のエンドポイントにプロキシ321によってメッセージ複製/転送の開始を示す。
【0044】
第6段階306は、送信元エンドポイント311からセグメント340のための選ばれたプロキシエンドポイント341までのセグメント間メッセージ複製/転送を説明する。この段階において、プロキシ321は、セグメント320のエンドポイントにユニキャストによるメッセージを複製/転送し続ける一方。プロキシ331は、セグメント330内のエンドポイントに対してユニキャストによるメッセージの複製/転送を開始する。
【0045】
第7段階307で、送信元エンドポイント311は、メッセージをその宛先(すなわち、同じマルチキャストグループのそのローカルセグメント310内のすべてのエンドポイントおよびリモートセグメント内のすべてのプロキシエンドポイント)のすべてに対する送信を完了した一方、プロキシ321と331は、それぞれのネットワークセグメント内の同じマルチキャストグループのエンドポイントへとユニキャストによるデータパケットを複製し、転送し続ける。プロキシ341は、セグメント340内のエンドポイントへのユニキャストによるメッセージの複製/転送を開始する。
【0046】
プロキシによる複製と転送は第8段階308と第9段階309で継続される。第10段階である最終段階399はデータパケットの複製および転送の完了を示し、そこにおいて、マルチキャストグループにおけるすべてのエンドポイントはデータパケットを受信している。
【0047】
図2と3は、マルチキャストメッセージの複製および転送のために、ユニキャスト又はマルチキャストのどちらかを用いるとしてネットワーク全体を説明しているが、いくつかの実施形態では、複製モードは、セグメントごとに、あるいはエンドポイントの粒度あたりのイベントごとに設定できる。例えば、メッセージを転送/複製するために、送信元エンドポイント111がマルチキャストを用いる一方、プロキシエンドポイント131がユニキャストを用いるように、図1のネットワーク100を構成できる。第一のマルチキャストグループ(例えば図1における影をつけられたエンドポイントによって代表されたグループ)がマルチキャストを使う一方、第二のマルチキャストグループ(不図示)がユニキャストを使うように、ネットワーク100をまた構成できる。
【0048】
マルチキャストを実行することによるマルチキャストパケットの複製/転送は、ローカルセグメントの中の物理ネットワークによってサポートされたマルチキャストを必要としている。そうすることは物理ネットワークのマルチキャスト能力を利用し、それによりエンドポイントによるユニキャストに頼るよりも効率的なマルチキャスト転送および複製が可能となる。マルチキャストが利用できない場合は、セグメント内部のパケット転送のコストがセグメント外部の転送コストよりも低い限り、図3において説明されるようなユニキャストによるマルチキャストパケットの複製/転送がまだ有利であり、その上、セグメントを横断して複製されたパケットは、各リモートセグメントのプロキシに対するパケットのひとつのコピーのみを複製することにより減らされる。
【0049】
いくつかの実施形態のために、図4は、ネットワークの中でマルチキャストパケットを複製/転送するときにエンドポイントによって実行されるプロセス400を概念的に説明する。このプロセスは、ネットワーク内での送信のためのデータパケットを(410で)受信するときに始まる。この受信されたデータパケットは、エンドポイントを通してネットワークに接続している、アプリケーションを実行しているコンピュータまたはデータを提供している記憶装置などのエンティティによって生成できる。受信データは、また、エンドポイントがネットワークから受信するデータパケットからであってもよい。
【0050】
このプロセスはそのとき、受信したデータパケットを複製するかどうかを判定する(420で)。ネットワークと接続するためにエンドポイントを用いるエンティティから発したデータを受信するエンドポイントのために、このエンドポイントは、データの送信元で提供された情報から、このデータパケットが複数の受信者に対して宛てられているかどうかを判定することができる。ネットワークからパケットとしてデータを受信するエンドポイントのために、このプロセスは、データパケットが、データパケットの複製および転送のためにエンドポイントをプロキシとして使うマルチキャストグループからのものであるかどうかを判定する必要がある。いくつかの実施形態では、プロキシエンドポイントは、他の通常のユニキャストトラフィックから、ローカルに更なる複製が必要な受信パケットを区別している。受信者/プロキシエンドポイントに送信する前にオリジナルのマルチキャストパケットをカプセル化することによって、いくつかの実施形態はこれを容易にする。受信者/プロキシエンドポイントが、カプセル化されたパケットを受信すると、それは、パケットを脱カプセル化し、オリジナルのマルチキャストパケットを復元する。いくつかの実施形態の中のカプセル化ヘッダーは、パケットのさらにローカルな複製が必要であることをプロキシに告げるフラグを含む。いくつかの実施形態では、送信者/プロキシエンドポイントはオリジナルのマルチキャストパケットをユニキャストパケットに変換し、オリジナルの宛先マルチキャストアドレスを含んでいるIPオプションをパケットに追加する。
【0051】
データパケットがエンドポイントによる更なる複製を必要としているならば、プロセスは430に進む。さもなければ、プロセス400はデータパケットのために受信者を識別し(480で)、データパケットを識別された受信者に送信し(490で)、終了する。
【0052】
430で、プロセス400はデータパケットのためにマルチキャストグループを識別する。いくつかの実施形態では、そのような情報は、受信したデータパケットから引き出されるか取り出される。プロセスはそれから、識別されたマルチキャストグループに属しているデータパケットを受信することになっているエンドポイントを識別する(440で)。いくつかの実施形態では、マルチキャストグループのメンバーエンドポイントを識別するためにエンドポイントに必要な情報は、ネットワークの中でエンドポイントからのそのような情報を収集し、それを配布する中央のエンティティによって提供される。いくつかの実施形態では、ネットワークの中のエンドポイントは前もってそれ自身でそのような情報を交換する。そのような情報の収集と交換はより下のセクションIIで説明する。マルチキャストグループのメンバーシップを識別するためにエンドポイントによって使われた情報の例は下の説明で図6への参照によって説明する。
【0053】
次に、プロセスは、識別された受信者エンドポイントのいくつかがローカルなセグメントにあるかどうかを判定する(450で)。そうならば、ローカルなセグメントのすべての識別された受信者エンドポイント(識別されたマルチキャストグループの)にデータパケットを複製し、転送するために、プロセスは455に進む。いくつかの実施形態では、プロセス400は、ローカルなセグメントがマルチキャストをサポートするかどうかを判定する。もしそうなら、データパケットをローカルなセグメントのマルチキャストグループのすべてのメンバーに送信するために、プロセスはマルチキャストプロトコルを使う。さもなければ、識別された受信者エンドポイント各々にデータパケットを個々に送信するために、プロセスはユニキャストプロトコルを使う。
【0054】
プロセスはそれから、識別された受信者エンドポイントのいくつかがリモートセグメントにあるかどうかを判定する(460)。もしそうなら、それらのリモートセグメントのためにプロキシエンドポイントにデータパケットを複製し、転送するように、プロセスは470に進む。パケットをローカルなセグメントの受信者エンドポイントおよび/または識別されたリモートセグメントのエンドポイントのためのプロキシに送信した後に、プロセス400は終了する。
【0055】
II.情報収集および交換
いくつかの実施形態では、セクションI中で上で説明されるようにマルチキャスト複製および転送を実行しているエンドポイントに、マルチキャストグループのメンバーシップおよび物理ネットワークトポロジについての情報が必要である。マルチキャストグループの送信者エンドポイントは、このグループの受信者を有するすべてのリモートセグメントおよびこれらセグメントの各々の中の少なくともひとつのエンドポイントを知る必要があるので、プロキシとしてリモートセグメントごとのひとつのエンドポイントを選ぶことができる。
【0056】
ユニキャスト複製モードの中で、送信者またはプロキシエンドポイントが、ユニキャスト複製(上記説明で図2への参照によって説明されるような)によってマルチキャストを実行している場合に、送信者またはプロキシエンドポイントは、すべてのマルチキャストグループのローカルな受信者エンドポイントの関連情報(アドレスなどの)を、それらの各々にパケットを複製するために知る必要がある。エンドポイントはもちろんそれ自身のマルチキャストグループメンバーシップを知っている。いくつかの実施形態では、セグメントが、IPサブネットであるか、またはIPプレフィクスから引き出されることができるサブネットのセットである場合に、エンドポイントは、それ自身のセグメントまたは別のエンドポイントのセグメントをIPアドレスから計算することができる。いくつかの実施形態では、互いのセグメントIDを決定するために、ネットワークの中のエンドポイントは発見プロトコルを用いる。いくつかの実施形態では、エンドポイントのセグメントIDはネットワーク管理者によって設定される。
【0057】
マルチキャスト複製のために関連情報のすべてを得るように、いくつかの実施形態のエンドポイントは情報を互いと交換する。いくつかの実施形態では、エンドポイントは、互いに制御プレーンプロトコルを使って、分散型の方法で情報を交換する。いくつかの実施形態では、別個のエンティティ(例えば集中化したコントローラ)のセットがエンドポイントからの情報を収集し、(先を見越してまたはエンドポイントからの問合せに呼応して)エンドポイントがマルチキャスト複製を実行するために必要な物理ネットワークおよび他のエンドポイントについての情報をエンドポイントに公開する。
【0058】
図5は、いくつかの実施形態のためにマルチキャスト複製に関するエンドポイント情報の収集および配布を説明する。特に、特定のマルチキャストグループに参加することを望むエンドポイントは、特定のマルチキャストグループのメンバーシップについての情報を収集する中央の制御エンティティにリポートを提出する。収集された情報はそれから、エンドポイントからの問合せによって、または中央コントローラからの特定のマルチキャストグループの各メンバーへの先を見越したプッシュ配信によって配布される。
【0059】
図5は、ネットワークセグメント510、520、および530を含むネットワーク500を説明する。ネットワークは、マルチキャストグループ100のメンバーであるエンドポイントを含み、それは、メンバーエンドポイント511、512、521、および532(影付きで図示される)を含む。エンドポイント511と512はセグメント510(セグメントAのエンドポイントA1とA3)にあり、エンドポイント521はセグメント520(セグメントBのエンドポイントB2)にあり、エンドポイント532はセグメント530(セグメントCのエンドポイントC1)にある。図5はまた、最初、マルチキャストグループ100にないエンドポイント531を説明する。このエンドポイント531はセグメント530(セグメントCのエンドポイントC5)にある。
【0060】
図5はまた、ネットワークの中でエンドポイントからの、及びエンドポイントへのネットワークに関する情報を収集し、配布するためのエンティティ550を説明する。いくつかの実施形態では、エンティティ550はネットワークのすべてのセグメントのための中央コントローラである。いくつかの実施形態では、エンティティ550は、種々のマルチキャストグループのために個々のエンドポイントから提出された情報を収集し、収集した情報をテーブルまたはディレクトリ560として保存する1つ以上のコンピューティング装置を含む。いくつかの実施形態では、エンティティ550は、ネットワーク500によって提供された物理的なインフラストラクチャーを通してそのような情報を受け取り、配布する。いくつかの実施形態では、エンティティ550は制御プレーンプロトコルを通して個々のエンドポイントと通信する。他の実施形態では、ネットワーク500から独立している通信経路で、中央のエンティティ550と、様々なセグメント内の個々のエンドポイントとの間の通信は行われる。いくつかの実施形態では、中央コントローラとしてのエンティティ550は、それが収集した情報に基づいて、各マルチキャストグループのために各エンドポイントのためのプロキシを選ぶ。いくつかの実施形態では、エンドポイント自身が、それらに対してエンティティ550により配布された情報に基づいて、それら自身のマルチキャストプロキシを選ぶ。
【0061】
図5は、3つのオペレーションでマルチキャストグループ100に参加するエンドポイント531を説明する。いくつかの実施形態において、エンドポイント531などのエンドポイントは、パケットのためのオリジナルの宛先マルチキャストグループIDを含むユニキャストパケットを受信した後に、新しいマルチキャストグループ(いくつかの実施形態では受信者エンドポイントは複数のマルチキャストグループに参加できる)に参加すると決める。いくつかの実施形態では、エンドポイントはその結果、リポートをエンティティ550に提出することによって、受信したマルチキャストグループIDに基づいたマルチキャストグループに参加すると決めるであろう。
【0062】
最初のオペレーション(ラベル'1')の間、エンドポイント531は、それがマルチキャストグループ100に参加したい中央コントローラエンティティ550にリポート562を提出する。いくつかの実施形態の中で、そのようなリポートは、所望のマルチキャストグループのための識別子、エンドポイントのための識別子(例えばそのMACアドレス)、および、ネットワーク中でエンドポイントを見つけるための情報(例えばそのネットワークIPアドレス)を含む。
【0063】
2番目のオペレーション(ラベル'2')の間に、中央コントローラエンティティ550は、マルチキャストグループ100に関するその記録を、受信したリポート562に基づいてエンドポイント531のための情報を含むようにアップデートした。いくつかの実施形態では、中央コントローラエンティティは各マルチキャストグループのためにディレクトリまたはテーブルをメンテナンスする。いくつかの実施形態では、中央コントローラは、個々のエンドポイントによって提出された生の情報を解決し、それらを、マルチキャストグループのメンバーのために最適化されたテーブルまたはディレクトリへとコンパイルする。そのようなディレクトリの例は下で図6へのリファレンスによってさらに説明されるであろう。
【0064】
3番目のオペレーション(ラベル'3')の間、中央コントローラエンティティ550は異なるセグメントのマルチキャストグループのすべてのメンバーエンドポイントにマルチキャストグループ100のためのアップデートされたメンバー情報552を配布する。その結果、既存のメンバー511、512、521、532は、新しいメンバーエンドポイント531がちょうどマルチキャストグループに参加したこと、この新しいメンバーエンドポイントがセグメントC(530)中にあることを知る。新たに参加したエンドポイント531もまた中央コントローラからグループ100についてのメンバーシップ情報を受信する(それによりそのマルチキャストグループの他の既存メンバー及び彼らのネットワークの中の位置(例えばどのセグメント)について知らされる)。
【0065】
図6は、いくつかの実施形態のために550などの中央のコントロールエンティティによって運営されるマルチキャストグループのディレクトリ例610を説明する。ディレクトリ610は複数のテーブルを保守し、その各テーブルは1つのマルチキャストグループのためにメンバーシップ情報を記録している。例えば、テーブル611はマルチキャストグループ"100"のためにメンバーシップ情報を記憶する一方、テーブル612はマルチキャストグループ"200"のためにメンバーシップ情報を記憶する。各テーブルは複数のエントリを含み、各エントリは、マルチキャストグループにおけるエンドポイントと対応している。例えば、テーブル611中の各エントリはマルチキャストグループ"100"内にあるエンドポイントのための識別子を記録する一方、テーブル612中の各エントリは、マルチキャストグループ"200"内にあるエンドポイントのための識別子を記録する。各エントリはまた、エンドポイントが属しているネットワークセグメントを含む。エンドポイントが複数のマルチキャストグループに属することができること、例えば、セグメント'B'のエンドポイント'B3'が両方のテーブル611と612中で出現する場合に、それはマルチキャストグループ100と200の両方に属していることは注目に値する。ディレクトリ例610によると、マルチキャストグループ100は、図5で説明したオペレーション以来、エンドポイント'A4'と'B3'とを追加している。
【0066】
図6はまた、マルチキャストトラフィックを複製し、転送するためにエンドポイントによって使われるマルチキャスト情報のセットを説明する。説明されるように、マルチキャスト情報620のセットは、マルチキャストグループ"100"と"300"に参加するためにエンドポイント591によって使われる。マルチキャスト情報620のセットは、マルチキャストグループ"100"のためのリモートセグメントのプロキシを識別するためのテーブル621、マルチキャストグループ"100"にあるローカルなセグメントの他のエンドポイントを識別するためのテーブル622、マルチキャストグループ"300"のためにリモートセグメントでプロキシを識別するためのテーブル623、およびマルチキャストグループ"300"にあるローカルなセグメントの他のエンドポイントを識別するためのテーブル624を含む。いくつかの実施形態では、エンドポイント591によって使われたマルチキャスト情報620はエンドポイント591自身によってメンテナンスされる。いくつかの実施形態では、マルチキャスト情報はネットワークの中の別のエンティティによってメンテナンスされる。いくつかの実施形態では、エンドポイント591はマルチキャスト情報を記憶する。
【0067】
従って、エンドポイント591(ネットワーク500のセグメントXでエンドポイントXNと識別される、図5においては不図示)が、マルチキャストグループ100にマルチキャストデータパケットを複製し、転送する必要がある場合には、それは、同じセグメントX内のマルチキャストグループ100内にあるすべての他のエンドポイントを識別するためにテーブル622を用いる。同様に、マルチキャストデータパケットがマルチキャストグループ300のためであるならば、エンドポイント591は、同じセグメントX中のマルチキャストグループ300内にあるすべての他のエンドポイントを識別するためにテーブル624を用いる。エンドポイント591はそれから、マルチキャストまたはユニキャストによるデータパケットをセグメントX内のそれら識別されたエンドポイントのそれぞれに送信する。
【0068】
リモートセグメントでマルチキャストトラフィックを複製するためにプロキシを識別するために、エンドポイント591はまたテーブル622と624を使う。テーブル622と624中の各エントリはリモートセグメントと対応しており、エンドポイント591からそのリモートセグメントにマルチキャストトラフィックを複製するためのプロキシとしてエンドポイントを識別する。いくつかの実施形態では、ひとつの同じリモートセグメントについて、ひとつのエンドポイントが、異なるマルチキャストグループのために異なるプロキシを持つことができることは注目に値する。例えば、セグメントBについて、エンドポイント591はマルチキャストグループ"100"のためのプロキシとしてエンドポイントB2を選択し、一方、マルチキャストグループ"300"のためにプロキシとしてエンドポイントB3を選択する。いくつかの実施形態では、すべてのセグメントのすべてのエンドポイントについての情報を保持する代わりに、エンドポイントがリモートセグメントのプロキシだけを把握することはまた注目に値する。いくつかの実施形態では、同じセグメントの2つのエンドポイントが、所与のリモートセグメントにマルチキャストトラフィックを複製するために異なるプロキシを選ぶことができることはさらに注目に値する。
【0069】
いくつかの実施形態では、ネットワーク(すなわちリモートセグメント)のトポロジーを詳説する情報がエンドポイントに必要であるばかりでなく、下層の物理ネットワークの中のスイッチとルータにもまた、マルチキャストグループのマルチキャストパケットをすべての受信者エンドポイントに転送するために、そのマルチキャストグループのローカルな受信者のレコードを発見し、メンテナンスする必要がある。いくつかの実施形態では、IGMPは、エンドポイントが受信者としてマルチキャストグループに参加することを可能にするために使われる。いくつかの実施形態では、受信したIGMPメッセージからマルチキャストグループのメンバーシップを知るためにIGMPスヌーピングを扱うスイッチを用いる。いくつかの実施形態では、マルチキャストグループのメンバーシップ情報を報告するために、受信者エンドポイントまたは下流のスイッチ/ルータを要求するIGMPクエリメッセージを周期的に送信するIGMPクエリ発行者として、ルータ(または、レイヤ3機能付きのスイッチ)は作動する。いくつかの実施形態では、マルチキャストメンバーシップ情報を交換するために、および、レイヤ3ネットワークを横断するマルチキャストパケットの配送経路を定義するために、ルータはマルチキャストルーティングプロトコルを実行する。いくつかの実施形態では、PIM(プロトコルインデペンデントマルチキャスト)、DVMRP、またはMOSPFなどのプロトコルを用いる。
【0070】
いくつかの実施形態では、マルチキャストルーティングがルータによってサポートされない一方、IGMPスヌーピングはスイッチによってサポートされる。これらの実施形態のいくつかにおいて、IGMPクエリの発行者がセグメントに全くいないことがあり得る。この場合に、各受信者エンドポイントは、それが決してIGMPクエリを受け取ることがないとしても、スイッチ内でマルチキャストを転送しているエントリを生かしておくために、それが参加するマルチキャストグループのための物理ネットワークの中へと周期的にIGMPレポートを送ることができる。
【0071】
いくつかの実施形態では、マルチキャストアイランドはツリートポロジーを形成し、ツリー内の各ルータ(またはレイヤ3スイッチ)は、その下流のインタフェースからIGMPとプロキシIGMPを通ってその上流のノードへと、マルチキャストメンバーシップを問い合わせ、また傍受する。これらの実施形態のいくつかにおいて、マルチキャストルーティングプロトコルは異なるセグメントの間で動いていないので、マルチキャストトラフィックはセグメントを横断して発送されることができなかった。いくつかの実施形態では、いくつかの個々のセグメントで分離された、IPネットワーク全体のうちの一部のみにおけるPIMなどのマルチキャストルーティングプロトコルを実行する。
【0072】
III.プロキシ選択と負荷の均衡化
説明したように、いくつかの実施形態の送信者エンドポイントは、マルチキャストパケットを複製するためにすべてのリモート受信セグメントでプロキシを選択する必要がある。各送信者エンドポイントは、異なる戦略に基づいて、独立してプロキシを選択することができる。例えば、いくつかの実施形態の中の送信者エンドポイントは、すべてのマルチキャストトラフィックのためにすべてのセグメント内で固定されたプロキシを選択する。その代わりに、いくつかの実施形態の中の送信者エンドポイントは、すべてのセグメントでマルチキャストグループごとに固定されたプロキシを選択する。いくつかの他の実施形態において、送信者は、すべてのセグメント内で、1つのマルチキャストフロー(例えば<送信元IP,宛先IP,プロトコル>または、UDPに関して<送信元IP,宛先IP,送信元ポート,宛先port>で識別される)ごとに1つの固定されたプロキシを選択する。
【0073】
いくつかの実施形態の中のプロキシ選択のこれらのさまざまな方法は、ひとつのセグメントの異なるエンドポイントの間でネットワークトラフィック負荷を均衡させることができる。いくつかの実施形態では、送信者エンドポイントは、それがプロキシ障害を検出するために選んだプロキシからの「ハートビート」通信を使う。いくつかの実施形態では別々の制御プレーンの実装によってエンドポイント障害を検出する。
【0074】
いくつかの実施形態では、送信者は、リモートセグメントでどのようなエンドポイントでもプロキシであるように選ぶことができる。これらの実施形態のいくつかにおいて、エンドポイントは各特定のマルチキャストグループのためにリモートセグメント内で受信者エンドポイントのうちの1つを選ぶ。そうすることは、1つのマルチキャストグループによる、他のマルチキャストグループおよび他のタイプのネットワークデータトラフィックへの影響を最小化するという利点を有する(これにより、エンドポイントが、そのエンドポイントが受信者ではないマルチキャストグループのためのマルチキャストトラフィックを処理する必要の程度が低くなるので)。それはまた、物理ネットワークのマルチキャスト転送状態への干渉を最小化するという利点を有する。いくつかの実施形態では、プロキシの選択は、制御プレーンの実装(すなわち550などの中央コントローラ)によって決定され、そしてそれは、いくつかの実施形態では、リモートセグメントのすべてのエンドポイントについての情報を提供しないことに決めることができる。これらの実施形態のいくつかにおいては、各エンドポイント自身に決めさせるというより、中央コントローラが特定のプロキシを各エンドポイントに割り当てる。
【0075】
別の実施形態ではプロキシを違ったふうに選ぶ。図7aは個々のエンドポイントによって実行される分散したプロセスを説明する一方、図7bは中央コントローラによって実行される集中化したプロセスを説明する。いくつかの実施形態のために、図7aは概念的に、リモートセグメントでマルチキャストプロキシを選ぶためにエンドポイントによって実行されるプロセス701を説明する。このエンドポイントが属しているすべてのマルチキャストグループのメンバーシップに関するアップデートを受信するとき(710で)に、このプロセスは始まる。いくつかの実施形態では、図5を参照して説明したように、エンドポイントは中央コントローラからの更新された情報を受信する。
【0076】
プロセスはそれから、リモートセグメントのそれぞれのためのプロキシとしての役を果たすように使用可能なエンドポイントのリストまたはプールを更新する(720で)。いくつかの実施形態では、この潜在的なプロキシのリストまたはプールは中央コントローラから受信した情報に基づく。いくつかの実施形態では、このリストはこのエンドポイントと他のエンドポイントとの間で情報(ハートビートなど)の交換に基づく。
【0077】
次に、プロセスは各マルチキャストグループのために各リモートセグメントのためのプロキシを選ぶ(730で)。いくつかの実施形態では、この選択プロセスは、リモートセグメントのネットワークトラフィック負荷を均衡させる方法で実行される。いくつかの実施形態では、これは、各マルチキャストグループのために無作為にプールからエンドポイントを選ぶことによって遂行される。いくつかの実施形態では、(例えば他のマルチキャストグループによるマルチキャストトラフィックまたは他のタイプのネットワークトラフィックにより)すでに使用中のエンドポイントを意図的に避けることによって、プロキシ選択を合理的に実行する。
【0078】
プロセスはそれから、プロキシとして選ばれたエンドポイントを監視し(740で)、(例えばハートビートにより)プロキシ障害があるかどうかを判定する(745で)。もしそうならば、故障したエンドポイントをプールから削除することによってプロキシとして使用可能なエンドポイントのリストを更新し、代用のプロキシを選ぶために、プロセス701は、720に戻る。そうでなければ、選択されたプロキシを監視し続けるために、プロセスは740に戻る。
【0079】
いくつかの実施形態に関して、中央コントローラ(550などの)によって実行されるプロキシ選択のために、図7bは概念的にプロセス702を説明する。セグメントの1つにおいて少なくとも1つのエンドポイントからの更新された情報を受信するとき(760で)に、プロセス702は始まる。
【0080】
プロセスはそれから、プロキシの指定を更新する必要があるかどうかを判定する(770で)。いくつかの実施形態は、ちょうどマルチキャストグループに参加したエンドポイントがある場合(それゆえプロキシとして役目を果たすことができる)、またはエンドポイントが故障している場合に、新たなプロキシの指定を行うものと決定する。トラフィック負荷の不均衡に起因する性能劣化が検出されている場合など、ネットワークの中の他のイベントによってもまた、プロセスは、新たなプロキシの指定を行う。プロキシの指定を更新する必要があるならば、プロセスは780に進む。さもなければ、プロセス702は終了する。
【0081】
780で、プロセスは1つのマルチキャストグループの1つのセグメントのために少なくとも1つのエンドポイントについて新しいプロキシの指定を行う。エンドポイントによって実行されるプロキシ選択の場合においてそうであるように、いくつかの実施形態では中央で実行されるプロキシ選択もまた、負荷均衡化のために、使用可能なエンドポイントのプールからの無作為抽出を用いる。(例えば他のマルチキャストグループのマルチキャストトラフィック、または他のタイプのネットワークトラフィックにより)すでに使用中のエンドポイントを意図的に避けることによって、いくつかの実施形態ではプロキシ選択を理性的に実行する。新棚プロキシのために指定を行った後に、プロセス702は終了する。
【0082】
IV. ネットワーク仮想化
いくつかの実施形態では、上で説明したようなマルチキャスト複製方法は、VXLANなどのオーバレイベースのネットワーク仮想化ソリューションを実施するために使われる。オーバーレイネットワークの中で、論理レイヤ2ネットワークは物理ネットワークの上で構築でき、完全な乱雑にされた(full messed)レイヤ2トンネルが、同じ論理レイヤ2ネットワークに参加するエンドポイントの間で設立することができる。いくつかの実施形態では、論理レイヤ2ネットワークの中の1つのトンネルエンドポイントから生じたBUMパケットは論理ネットワークの他のすべてのメンバーエンドポイントに複製される。
【0083】
いくつかの実施形態では、VMは論理レイヤ2ネットワークの消費者であり、ハイパーバイザーはトンネルエンドポイントである。これらの実施形態のいくつかでは、マルチキャスト複製オペレーションの範囲(すなわちマルチキャストグループ)を論理レイヤ2ネットワークにマッピングし、マルチキャストエンドポイントをトンネルエンドポイントにマッピングする。そのようなものとして、論理ネットワークの中のBUMパケット複製は、物理ネットワークの中のマルチキャストグループへのマルチキャスト複製として実施される。すなわち、これらの実施形態における論理ネットワークの複製の範囲は、マルチキャストグループの受信者エンドポイントだけを含むようにマッピングされる。いくつかの実施形態では、ハイパーバイザーは、転送オペレーションがコントローラによって管理された、被管理ネットワークスイッチを含む。
【0084】
図8は物理ネットワーク805上で論理ネットワーク800のネットワーク仮想化を説明する。論理ネットワーク800はVM811−819の間のデータ通信のためのものであり、それはホストマシンマシン821−825の上で動いているハイパーバイザーを介してそれらホスト上で動いている。ホストマシンは物理ネットワーク805と通信可能に接続される。
【0085】
物理ネットワーク805は図1のネットワーク100に類似しているいくつかの実施形態の中にある。すなわち、物理ネットワーク805は1つ以上のネットワークセグメントを含むことができ、ホストマシン(すなわちそれらのホストマシンの上で動いているハイパーバイザー)は、ネットワークの異なるセグメントに接続しているエンドポイントである。物理ネットワークのいくつかの部分(例えばマルチキャストアイランド)により提供される内蔵マルチキャスト機能を用いることにより、またはマルチキャストをサポートしないネットワークの部分(例えばデータセンタとプロバイダネットワーク)を横断してユニキャストを実行することにより、物理ネットワークは、マルチキャストトラフィックをサポートすることが可能である。物理ネットワークはまた、ゲートウェイ860経由で外部ネットワーク870と通信することができる。
【0086】
図8のネットワーク仮想化は、物理ネットワークの中の配信のためにVMによって生成されたデータパケットをカプセル化することによって遂行される。図示されるように、ホストマシン821上で実行されるVM812はデータパケット880をホストマシン824上で実行されるVM815に送信している。ホストマシン821は、データパケット880に基づいたカプセル化済みパケット890を作成し、物理ネットワーク805はカプセル化済みパケット890をホストマシン824に提供する。ホストマシン824は、次々と受信したパケット890を脱カプセル化し、脱カプセル化済みパケット880を宛先VM815に配信する。
【0087】
いくつかの実施形態では、カプセル化済みデータパケット890はVXLANなどのネットワーク仮想化標準に従って生成される。図8はVXLANに従ってデータパケット890に関する一例であるカプセル化フォーマット895を図示する。VXLANは、物理レイヤ3ネットワーク上で多くの論理レイヤ2ネットワークの迅速な提供をサポートすることができたオーバーレイネットワーク技術である。VXLANはMACオーバーUDP(MAC-over-UDP)ソリューションに基づく。VXLAN論理ネットワークのイーサネット(登録商標)フレームは、物理的な回線上のUDPを使ってカプセル化する。VXLANヘッダーの中には、VXLAN論理レイヤ2ネットワークを一意に識別する24ビットのVNI(VXLANネットワーク識別子)があるので、最高16Mまでの論理ネットワークがサポートされる。
【0088】
VMがVXLANネットワークのユーザである間、VXLANカプセル化は、ハイパーバイザー(またはハイパーバイザー上のvSwitch)であるVTEP(VXLANトンネルエンドポイント)によって行われる。1つのVTEP上のVMが、同じVXLANネットワークの中であるが異なるVTEP上の別のVMにイーサネット(登録商標)フレームを送信する場合に、送信元VTEPは、外側ヘッダー中の送信元IPとなる送信元VTEPのIPアドレスとVXLANネットワークのVNIとを使って、物理ネットワークにフレームを投入する前にそのフレームをカプセル化するであろう。宛先VTEPはパケットを脱カプセル化して、オリジナルの内側のフレームだけを宛先VMへと転送する。通常のユニキャストフレーム(宛先MACは送信元VTEPに知られている)のために、宛先VTEPのIPアドレスは外側の宛先IPとして使われるであろう。VTEPは、そのVMが接続しているVXLANネットワークのVM MAC−VTEP IPのマッピングを、一般的にはトラフィック学習またはいくつかの種類の制御プレーンの実装を通じて、保持するべきである。
【0089】
BUMトラフィックのために、VXLANはIPマルチキャストを利用する。各VXLANネットワークは物理マルチキャストグループを割り当てられる。BUMフレームは、外側の宛先IPであるべきVXLANネットワークのマルチキャストIPを使ってカプセル化される。VTEPは、一般に、物理ネットワークへのIGMPリポートを送ることによって、そこのVXLANネットワークのマルチキャストグループに加わるべきである。
【0090】
いくつかの実施形態のために、図9は、複数のネットワークセグメントを横断してマルチキャスト複製/転送を実行することが可能な物理ネットワーク900上での、複数の論理ネットワーク(例えばVXLAN論理ネットワーク)の実装を説明する。論理ネットワークは、ホストマシン内のハイパーバイザー上で実行されるVMの間のデータ通信のためのものである。これらのハイパーバイザーは物理ネットワーク900のエンドポイントであり、論理ネットワークのトンネルエンドポイントとして機能する。
【0091】
物理ネットワーク900は少なくとも3つのセグメント910、920、および930を有する。セグメント910はハイパーバイザー941−943(ハイパーバイザーA、B、C)を含む。セグメント920はハイパーバイザー944−946(ハイパーバイザーD、E、F)を含む。セグメント930はハイパーバイザー947−949(ハイパーバイザーG、H、I)を含む。ハイパーバイザーAはVM911−913を実行し、ハイパーバイザーBはVM914−916を実行し、ハイパーバイザーCはVM917−919を実行し、ハイパーバイザーDはVM921−923を実行し、ハイパーバイザーEはVM924−926を実行し、ハイパーバイザーFはVM927−929を実行し、ハイパーバイザーGはVM931−933を実行し、ハイパーバイザーHはVM934−936を実行し、ハイパーバイザーIはVM937−939を実行している。
【0092】
ネットワーク仮想化は、物理ネットワーク900が同時に複数の論理ネットワーク901−909をサポートすることを可能にする。VM913、914、919、921、923、925、928、929、932、934、935、および937は、論理ネットワーク901(論理ネットワーク'1')中にある。VM912、916、918、924、927、931、および938は、論理ネットワーク902(論理ネットワーク'2')中にある。VM911、915、917、922、926、933、936、および939は、論理ネットワーク909(論理ネットワーク'n')中にある。論理ネットワーク901−909のそれぞれは物理ネットワーク900中のあるマルチキャストグループにマッピングされる。これらのマッピングされたマルチキャストグループのそれぞれは、対応する論理ネットワークのBUMトラフィックを処理するために利用される。
【0093】
いくつかの実施形態では、ハイパーバイザーは物理ネットワーク900のエンドポイントである。これらの実施形態のいくつかにおいて、マルチキャストパケットを複製し、転送するタスクを実行するのはそのハイパーバイザーであり、他のハイパーバイザーのための異なるネットワークセグメントの様々なマルチキャストグループ(すなわち論理ネットワーク)のためにプロキシとして動作するのはそのハイパーバイザーである。いくつかの実施形態では、論理ネットワークを確立するためにネットワーク900のエンドポイントとしてマルチキャストグループに参加するのはまたそのハイパーバイザーである。これらの実施形態のいくつかにおいて、ハイパーバイザーは、中央コントローラエンティティに報告することによってマルチキャストグループに参加し、マルチキャストグループメンバーシップ情報を受け取り、異なるセグメントにマルチキャストパケットを複製し、転送するためにプロキシを選ぶ。いくつかの実施形態では、ハイパーバイザーのVMの少なくとも1つが、特定のマルチキャストグループを使う論理ネットワークと接続したい場合には、ハイパーバイザーはその特定のマルチキャストグループに参加する。
【0094】
論理ネットワーク901(論理ネットワーク'1')に関して、ハイパーバイザーBが、セグメント910のプロキシとしてハイパーバイザーDによって選ばれ、ハイパーバイザーDはセグメント920のプロキシとしてハイパーバイザーAによって選ばれ、ハイパーバイザーH及びIはセグメント930のプロキシとしてハイパーバイザーA及びDによってそれぞれ選ばれている。論理ネットワーク902(論理ネットワーク'2')に関して、ハイパーバイザーAはセグメント910のプロキシとしてハイパーバイザーDによって選ばれ、ハイパーバイザーEはセグメント920のプロキシとしてハイパーバイザーAによって選ばれ、ハイパーバイザーG及びIはセグメント930のプロキシとしてハイパーバイザーA及びDによってそれぞれ選ばれている。論理ネットワーク909(論理ネットワーク'n')に関して、ハイパーバイザーCはセグメント910のプロキシとしてハイパーバイザーDによって選ばれ、ハイパーバイザーDはセグメント920のプロキシとしてハイパーバイザーAによって選ばれ、ハイパーバイザーG及びHはセグメント930のプロキシとしてハイパーバイザーD及びAによってそれぞれ選ばれている。
【0095】
いくつかの実施形態では、ハイパーバイザーが、異なる論理ネットワークに属している複数のVMをサポートすることができることは注目に値する(例えば論理ネットワーク1、2、およびn内のVMを運営するハイパーバイザーAなど)。さらに、いくつかの実施形態におけるプロキシ選択プロセスは、ネットワークトラフィック負荷を均衡させる方法でプロキシを指定しようとするであろうが、ハイパーバイザーが、同じマルチキャストグループまたは異なるマルチキャストグループ内の複数のハイパーバイザーのためのプロキシであってよい。
【0096】
図10は、物理ネットワークの中のマルチキャストプロキシを使用する論理ネットワークの中のBUMパケットの送信を説明する。この図はVM913からの論理ネットワーク901上のVM925へのブロードキャストパケット1010の配信を説明する。図9を参照して上で説明したように、論理ネットワーク901(すなわち論理ネットワーク1)は、ネットワークセグメント910と920とを含む物理ネットワーク900上に実装される。VM913を実行しているハイパーバイザーA(941)はネットワークセグメント910上にある。VM925を実行しているハイパーバイザーE(945)はネットワークセグメント920上にある。VM913は、VM925を実行しているハイパーバイザーと異なるセグメントの上にあるハイパーバイザーの上で実行されているので、論理ネットワーク901は、マルチキャストプロキシを使ってパケット1010をその宛先に送信するであろう。図9及び図10において説明されるように、ハイパーバイザーAは、論理ネットワーク901(そしてその対応するマルチキャストグループ)のためのセグメント920内のそのプロキシとしてハイパーバイザーD(944)を選択している。
【0097】
図10は、7つのオペレーションでのVM913からVM925へのBUMパケットの送信を示す。最初のオペレーション(ラベル'1')の間に、VM913は論理ネットワーク901のすべてのメンバーのためのブロードキャストパケット1010を生成する。そのようなブロードキャストパケットの例は論理ネットワークの上の他のVMのMACアドレスのためのARP要求である。いくつかの実施形態では、このオリジナルのパケットはVM913に割り当てられたMACアドレスを含む。
【0098】
2番目のオペレーション(ラベル'2')の間に、VMハイパーバイザーはカプセル化済みパケット1020中にブロードキャストパケット1010をカプセル化する。いくつかの実施形態では、このカプセル化は、ハイパーバイザーAにより付加される論理ネットワークのための識別子を含む。いくつかの実施形態では、ハイパーバイザーAは、カプセル化済みパケットの一部としてそれ自身のIPアドレスも付加する。いくつかの実施形態では、このカプセル化は、図8を参照した上で説明したようにVXLANなどのネットワーク仮想化プロトコルによって指定された形式に包含される。
【0099】
3番目のオペレーション(ラベル'3')の間に、ハイパーバイザーAは、ローカルネットワークセグメント910のハイパーバイザー上で動いている他のVMに、論理ネットワーク901のためにカプセル化したパケットを複製し、転送する。例えば、ハイパーバイザーB(942)において動いているVM914がネットワークセグメント910にもあり、それゆえハイパーバイザーAはハイパーバイザーBにカプセル化済みパケット1020を複製し、転送する。4番目のオペレーション(ラベル'4')の中で、ハイパーバイザーBは、パケット1020を次々と脱カプセル化して、オリジナルのブロードキャストパケットをVM914に配信する。いくつかの実施形態では、ハイパーバイザーAなどの送信者エンドポイントは、ネットワークセグメント910によって提供されたIPマルチキャスト能力を利用し、同時に複数の受信者に、ローカルなマルチキャストによってカプセル化済みパケットを複製する。いくつかの実施形態では、マルチキャスト転送が下層の物理ネットワークの中で使用可能でない場合にセグメント内マルチキャスト転送を遂行するために、ハイパーバイザーはユニキャストを使う。
【0100】
5番目のオペレーション(ラベル'5')の間に、ハイパーバイザーAはリモートセグメントにカプセル化済みパケット1020を複製し、転送する。特にリモートセグメント920のために、ハイパーバイザーAはパケット1020を選ばれたプロキシハイパーバイザーD(944)に転送する。プロキシハイパーバイザーDは6番目のオペレーション(ラベル'6')において、同じマルチキャストグループ(すなわち論理ネットワーク901)に属しているセグメント920の他のハイパーバイザーに、ハイパーバイザーAから受信したパケットを次々と複製し、転送する。これらの受信者の1つがハイパーバイザーE(945)である。いくつかの実施形態では、ハイパーバイザーDなどのプロキシエンドポイントはネットワークセグメント910によって提供されたIPマルチキャスト能力を利用して、同時に複数の受信者にローカルなマルチキャストによってカプセル化済みパケットを複製する。いくつかの実施形態では、マルチキャスト転送が下層の物理ネットワークの中で使用可能でない場合には、そのセグメントの中でマルチキャスト転送を遂行するために、プロキシハイパーバイザーはユニキャストを使う。
【0101】
7番目のオペレーション(ラベル'7')の間、ハイパーバイザーEは、受信したパケットを脱カプセル化し、脱カプセル化済みパケット1010をVM925に送信する。この例において、プロキシハイパーバイザーDは、同じ論理ネットワークに属していて、また脱カプセル化済みパケットを受信するであろうそれ自身のVM921を有する。しかしいくつかの実施形態では、特定のマルチキャストグループ/論理ネットワークのためのプロキシとして選ばれたエンドポイントはハイパーバイザーではなくともよいか、またはその特定の論理ネットワークの中で動作するVMを有していないハイパーバイザーであってもよい。これらの例において、プロキシは受信したマルチキャストトラフィック自身を消費しないであろう。
【0102】
V.電子システム
上述した特徴及び応用の多くは、コンピュータ読取り可能記憶媒体(またコンピュータの読取り可能媒体とも称される)に記録された命令セットとして特定されるソフトウェアプロセスとして実装される。これらの命令が1つ以上の処理装置(例えば1つ以上のプロセッサ、プロセッサのコア、または他の処理装置)によって実行される時に、それらは処理装置に、命令において示されたアクションを実行させる。コンピュータ読取り可能媒体の例は、CD−ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROMなどを含むけれども、それらに限られない。コンピュータの読取り可能媒体は、無線で通過する、または有線接続上の搬送波および電子信号を含まない。
【0103】
この明細書の中で、用語「ソフトウェア」は、読取り専用メモリに常駐するファームウェアまたは磁気記憶装置に記憶されたアプリケーションを含むことを意図している(それはプロセッサによる処理のためにメモリに読まれることができる)。また、いくつかの実施形態において、複数のソフトウェア発明を、別個のソフトウェア発明のままとしながら、より大きなプログラムの一部分として実装できる。いくつかの実施形態では、複数のソフトウェア発明はまた別個のプログラムとして実装されることができる。結局、ここで説明したソフトウェア発明をともに実施する別々のプログラムのいかなる組み合わせも、本発明の範囲の中にある。いくつかの実施形態では、ソフトウェアプログラムは、1つ以上の電子システムで動作するようインストールされたときに、ソフトウェアプログラムの動作を実行し、遂行する1つ以上の特定のマシンの実装を定義する。
【0104】
図11は概念的に、発明のいくつかの実施形態が実装される電子のシステム1100を説明する。電子のシステム1100は、上で説明した制御、仮想化、またはオペレーティングシステムのアプリケーションのいずれかでも実行するために使うことができる。電子システム1100はコンピュータ(例えばデスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータなど)、電話、PDA、またはすべての他の種類の電子装置であってもよい。そのような電子システムは、様々なタイプのコンピュータの読取り可能媒体およびさまざまな他のタイプのコンピュータの読取り可能媒体のためのインタフェースを含む。電子システム1100は、バス1105、処理装置1110、システムメモリ1125、読取り専用メモリ1130、パーマネントストレージデバイス1135、入力デバイス1140、および出力デバイス1145を含む。
【0105】
バス1105は、電子システム1100の多くの内部の装置を通信可能に接続するすべてのシステム、周辺装置、およびチップセットバスを集合的に表している。例えば、バス1105は処理装置1110を読取り専用記憶装置1130、システムメモリ1125、およびパーマネントストレージデバイス1135と通信可能に接続する。
【0106】
これらの様々な記憶装置から、処理装置1110は、発明のプロセスを実行するために、実行すべき命令と処理すべきデータとを検索する。処理装置は異なる実施形態では1つのプロセッサまたはマルチコアプロセッサであってよい。
【0107】
読出し専用メモリ(ROM)1130は、処理装置1110および電子システムの他のモジュールに必要な静的なデータと命令を格納する。一方、パーマネントストレージデバイス1135は、読み出しおよび書き込みメモリデバイスである。このデバイスは、電子システム1100がオフであるときにさえ、命令とデータとを記憶する不揮発性メモリユニットである。本発明のいくつかの実施形態はパーマネントストレージデバイス1135として(磁気ディスクまたは光ディスクとその対応するディスクドライブなどの)大容量記憶装置を用いる。
【0108】
他の実施形態では、パーマネントストレージデバイスとして取外し可能の記憶装置(フロッピーディスク(登録商標)、フラッシュドライブなどの)を用いる。パーマネントストレージデバイス1135のように、システムメモリ1125は、読み出しおよび書き込みメモリデバイスである。しかし、記憶装置1135と違って、システムメモリは、たとえばランダムアクセスメモリのような揮発性の読み出しおよび書き込みメモリである。システムメモリは、実行時にプロセッサに必要な命令とデータのいくつかを記憶する。いくつかの実施形態では、発明のプロセスはシステムメモリ1125、パーマネントストレージデバイス1135、および/または読取り専用メモリ1130中に記憶される。これらの様々な記憶装置から、処理装置1110は、いくつかの実施形態のプロセスを実行するために実行すべき命令と処理すべきデータを検索する。
【0109】
バス1105はまた入力デバイス1140と出力装置1145とを接続する。入力デバイスにより、ユーザは情報を伝達し、電子システムに対するコマンドを選択することができる。入力デバイス1140は、アルファニューメリックキーボードとポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)とを含む。出力デバイス1145は、電子システムによって生成された画像を表示する。出力デバイスはプリンタと、陰極線管(CRT)または液晶ディスプレイ(LCD)などの表示装置とを含む。いくつかの実施形態では、入力デバイスと出力デバイスの両方として動作するタッチスクリーンなどのデバイスを含む。
【0110】
結局、図11に例示したように、バス1105はまた、ネットワークアダプタ(不図示)を通して、電子システム1100をネットワーク1165に結合する。この方法では、コンピュータは、ローカルエリアネットワーク("LAN")、または広域ネットワーク("WAN")、またはイントラネット、またはインターネット等のネットワークのネットワークなどといったコンピュータのネットワークの一部であってよい。電子システム1100のどのような構成用紙またはすべての構成要素でも、本発明と連携して使用され得る。
【0111】
いくつかの実施形態は、機械可読またはコンピュータ可読媒体(代わりにコンピュータ可読記憶媒体、機械可読媒体、または機械可読記憶媒体と称される)中にコンピュータプログラム命令を記憶するマイクロプロセッサ、ストレージ、およびメモリなどの電子部品を含む。そのようなコンピュータ可読媒体のいくつかの例は、RAM、ROM、読取り専用コンパクトディスク(CD−ROM)、記録可能なコンパクトディスク(CD−R)、再書き込み可能コンパクトディスク(CD−RW)、読取り専用DVD(たとえばDVD ROM、二層DVD−ROM)、様々な記録可能/再書き込み可能DVD(例えばDVD−RAM、DVD−RW、DVD+RWなど)、フラッシュメモリ(例えばSDカード、小型SDカード、マイクロSDカードなど)、磁気および/またはソリッドステートハードドライブ、読取り専用および記録可能ブルーレイディスク、超高密度光ディスク、その他のあらゆる光または磁気媒体、フロッピーディスク(登録商標)を含む。コンピュータ可読媒体は、少なくとも1つの処理装置によって実行可能であり、様々な動作を実行するための命令セットを含むコンピュータプログラムを記憶できる。コンピュータプログラムまたはコンピュータコードの例は、コンパイラによって作り出されるような機械コードと、インタプリタを用いてコンピュータ、電子部品、またはマイクロプロセッサによって実行されるより高レベルのコードを含むファイルとを含む。
【0112】
上記の検討が第一にソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサを参照する一方、いくつかの実施形態では特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの1つ以上の集積回路によって実行される。いくつかの実施形態では、そのような集積回路は、回路自身に記憶された命令を実行する。
【0113】
本明細書の中で使われるように、用語「コンピュータ」、「サーバ」、「プロセッサ」、および「メモリ」はすべて電子の、または他の技術的なデバイスを指す。これらの用語は人または人のグループを除く。明細書の目的のために、用語表示または表示することは、電子装置の上で表示することを意味している。本明細書の中で使われるように、用語「コンピュータ読取り可能媒体(単数)」、「コンピュータ読取り可能媒体(複数)」、および「機械可読媒体」は、コンピュータによって読取り可能な形式で情報を記憶する、有形の、物理的な物に完全に限定される。これらの用語は、いかなる無線信号、有線ダウンロード信号、およびすべての他の一時的な信号も除く。
【0114】
本発明が多くの特定の細部についてまで説明されたのに対して、当業者は、本発明は、発明の精神からかけ離れずに他の特定の形式に具現化されることができると認めるであろう。さらに、多くの図(図4および図7a−7bを含める)は概念的にプロセスを説明する。これらのプロセスの特定の動作は、図示し説明した正確な順序で実行されなくともよい。特定の動作は、連続した一連の動作において実行されなくともよく、別の特定のオペレーションが別の実施形態では実行されてもよい。さらに、このプロセスは、いくつかのサブプロセスを用いて、またはより大きなマクロプロセスの部分として実施できる。従って、当業者は、本発明が、前述の説明の詳細によって制限されるべきでないこと、むしろ、添付された特許請求の範囲によって定義されるべきであることを理解するであろう。
図1
図2
図3
図4
図5
図6
図7a
図7b
図8
図9
図10
図11