(57)【特許請求の範囲】
【請求項１】
ネットワーク中でマルチキャストを実行する方法であって、
ネットワークの特定のエンドポイントにおいて、特定のマルチキャストグループを指定しているメッセージを受信する工程と、
前記特定のマルチキャストグループに属しているエンドポイントの第１のセットに対して前記メッセージを複製する工程であって、前記エンドポイントの第１のセットは、前記特定のエンドポイントを含む前記ネットワークのローカルセグメントに置かれるところの工程と、
前記メッセージを、前記特定のマルチキャストグループのために選択されたプロキシのセットに複製することで前記特定のマルチキャストグループに属しているエンドポイントの第２のセットにメッセージを複製する工程であって、エンドポイントのセットに前記メッセージを転送するための各プロキシは、前記ネットワークのリモートセグメントで前記特定のマルチキャストグループに属しているところの工程と
を有し、
複数のマルチキャストグループ内の各マルチキャストグループが、前記リモートセグメント内の指定されたプロキシを有し、前記マルチキャストグループの少なくともふたつが、前記リモートセグメント内のそれぞれに異なる指定されたプロキシを有することを特徴とする方法。
【請求項２】
各マルチキャストグループに対する前記指定されたプロキシとして、各リモートセグメントのためのプロキシを選択する工程を更に有することを特徴とする請求項１に記載の方法。
【請求項３】
リモートセグメントのマルチキャストグループの前記プロキシは、前記リモートセグメントのエンドポイントのプールから無作為に選択されることを特徴とする請求項２に記載の方法。
【請求項４】
前記プロキシは、中央コントローラによって選択されることを特徴とする請求項２に記載の方法。
【請求項５】
前記プロキシは、エンドポイントのネットワーク負荷に基づいて選択されることを特徴とする請求項２に記載の方法。
【請求項６】
前記エンドポイントの第１のセットに前記メッセージを複製する前記工程は、複製された前記メッセージを、前記エンドポイントの第１のセット内の各エンドポイントへと、ユニキャストにより転送することを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記エンドポイントの第１のセットに前記メッセージを複製する前記工程は、複製された前記メッセージを、前記エンドポイントの第１のセット内のすべてのエンドポイントへと、マルチキャストにより転送することを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ネットワークは、異なるセグメントの間でマルチキャストトラフィックをサポートしないことを特徴とする請求項１に記載の方法。
【請求項９】
前記ネットワーク中の前記セグメントの少なくとも１つは、メッセージを一度に複数の受信者に複製することを可能ならしめることを特徴とする請求項８に記載の方法。
【請求項１０】
前記ネットワーク中の前記セグメントの少なくとも１つは、メッセージを一度に複数の受信者に複製することを可能ならしめないことを特徴とする請求項８に記載の方法。
【請求項１１】
前記セグメントの少なくとも１つはマルチキャストアイランドであることを特徴とする請求項８に記載の方法。
【請求項１２】
前記リモートセグメントの前記特定のマルチキャストグループに属しているエンドポイントのセットに、リモートセグメント内の前記特定のマルチキャストグループの前記指定されたプロキシがマルチキャストにより前記メッセージを複製することを特徴とする請求項８記載の方法。
【請求項１３】
電子装置であって、
ネットワークのリモートセグメント内の特定のエンドポイントから、特定のマルチキャストグループのマルチキャストデータパケットを受信するためのモジュールであって、複数のマルチキャストグループ内の前記特定のマルチキャストグループが前記ネットワークのローカルセグメント内の指定されたプロキシを有し、前記指定されたプロキシは、前記ローカルセグメント内の他のマルチキャストグループの指定されたプロキシとは異なっており、前記電子装置が、前記ローカルセグメント内の前記特定のマルチキャストグループのための前記プロキシとして指定されているところのモジュールと、
前記電子装置を含む前記ネットワークの前記ローカルセグメント内の複数のエンドポイントに、受信した前記マルチキャストデータパケットを複製し、転送するためのモジュールであって、前記ネットワークは、前記リモートセグメントと前記ローカルセグメントとの間のマルチキャストトラフィックをサポートしないところのモジュールと
を有することを特徴とする電子装置。
【請求項１４】
前記特定のマルチキャストグループに関するメンバーシップ情報を受信するモジュールをさらに有することを特徴とする請求項１３に記載の電子装置。
【請求項１５】
前記電子装置を前記特定のマルチキャストグループに追加するためのモジュールをさらに有することを特徴とする請求項１３に記載の電子装置。
【請求項１６】
前記受信したマルチキャストデータパケットを複製し、転送するための前記モジュールは、前記受信したパケットを、前記ローカルセグメント内の複数のエンドポイントにマルチキャストにより送信することを特徴とする請求項１３に記載の電子装置。
【請求項１７】
前記ローカルセグメントは、物理ネットワークによるマルチキャストをサポートするマルチキャストアイランドであることを特徴とする請求項１６に記載の電子装置。
【請求項１８】
前記受信したマルチキャストデータパケットを複製し、転送するための前記モジュールは、受信したパケットを、前記ローカルセグメント内の複数のエンドポイントの各エンドポイントにユニキャストにより送信することを特徴とする請求項１３に記載の電子装置。
【請求項１９】
前記ローカルセグメントは、物理ネットワークによるマルチキャストをサポートしないことを特徴とする請求項１８に記載の電子装置。
【請求項２０】
少なくとも１つの仮想マシンを操作するためのハイパーバイザーをさらに含むことを特徴とする請求項１３に記載の電子装置。
【請求項２１】
前記ハイパーバイザーは前記ローカルセグメントのエンドポイントであることを特徴とする請求項２０に記載の電子装置。
【請求項２２】
仮想マシンのセットを操作するためのハイパーバイザーを提供する工程と、
前記仮想マシンのセットにおける特定の仮想マシンを物理ネットワークにオーバーレイしている論理ネットワークと接続する工程であって、前記論理ネットワークは前記物理ネットワーク内のマルチキャストグループを割り当てられているところの工程と、
前記特定の仮想マシンからのデータパケットを、前記論理ネットワーク内の複数の受信者に送信する工程であって、前記受信者のうちの少なくとも１つが、前記特定の仮想マシン以外の前記物理ネットワークのリモートセグメント内にあり、前記リモートセグメントは、前記リモートセグメント内の受信者に前記データパケットを複製し、転送するための、前記論理ネットワークに対応するマルチキャストグループに属するプロキシを有し、複数のマルチキャストグループ内の各マルチキャストグループが、前記リモートセグメント内の指定されたプロキシを有するところの工程と
を有することを特徴とする方法。
【請求項２３】
前記物理ネットワークは、異なるセグメントの間のマルチキャストトラフィックを許さないことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記リモートセグメントは、前記物理ネットワークによるマルチキャストトラフィックを許すことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記論理ネットワークは、前記物理ネットワークにオーバーレイしている複数の論理ネットワークのひとつであることを特徴とする請求項２２に記載の方法。
【請求項２６】
各論理ネットワークは、前記物理ネットワーク内のさまざまなマルチキャストグループを割り当てられることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記リモートセグメントの前記プロキシはハイパーバイザーであることを特徴とする請求項２２に記載の方法。
【請求項２８】
前記ハイパーバイザーは、前記論理ネットワークのためのトンネルエンドポイントであることを特徴とする請求項２２に記載の方法。
【請求項２９】
前記ハイパーバイザーは、前記物理ネットワーク内の送信のための論理ネットワークのために識別子により前記データパケットをカプセル化することを特徴とする請求項２２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
マルチキャストは送信元からの１つの送信で宛先コンピュータのグループへ同時にメッセージまたは情報を伝達することである。メッセージのコピーは他のネットワーク要素によって自動的に複製されて、転送される。マルチキャストパケットの転送及び複製は、通常、ネットワークの中の中間ノードによってされる。スイッチはレイヤ２ネットワークの中でマルチキャスト転送を果たす一方、（マルチキャスト）ルータはレイヤ３ネットワークを横切ってマルチキャストルーティングを果たす。一般に、マルチキャストをサポートするスイッチはＩＧＭＰ（インターネットグループマネジメントプロトコル）スヌーピングを使う一方、マルチキャストをサポートするルータはルーティングプロトコルとしてＰＩＭ（プロトコルインデペンデントマルチキャスト）を使う。
【背景技術】
【０００２】
従来、マルチキャストを使うアプリケーションはあまり多くないけれども、多くのＩＰマルチキャストアプリケーションが、会計ソフトウェア、ビデオサービスなどのように開発され、展開されている。注目する価値がある使用ケースは、提案された重要な技術であるＶＸＬＡＮを用いたオーバレイベースのネットワーク仮想化（レイヤ２トンネルを掘り）である。ＶＸＬＡＮは物理ＩＰネットワークの上で多くの論理レイヤ２ネットワークをサポートすることができる。それはＭＡＣオーバーＵＤＰカプセル化に基づき、論理ネットワークの内部でＢＵＭ（ブロードキャスト、未知のユニキャストおよびマルチキャスト）トラフィックのカプセル化にＩＰマルチキャストグループが割り当てられることを要求する。結果として、多くのマルチキャストグループが、特に、各テナントが多くの論理ネットワークを構築することができるクラウド環境において消費される可能性がある。これらの構築された論理ネットワークおよび対応するマルチキャストグループは、物理レイヤ３ネットワークおよびデータセンターさえ超えてまたがるかもしれない。
【０００３】
あいにく、ＩＰマルチキャストの使用は、それをサポートするためにインフラストラクチャーの不足によって制限される。ローエンドスイッチとルータは通常ＩＧＭＰとＰＩＭをサポートせず、それらは通常多くのマルチキャストグループをサポートしない。さらに、物理的なネットワークハードウェアが、マルチキャストをサポートする機能を有する場合にさえ、ユーザは一般に、ＩＰマルチキャストの管理可能性と拡張性の複雑さのため、データセンターネットワークの中でマルチキャストを使用可能にすることを避ける。データセンターとプロバイダネットワークにわたるマルチキャストを使用可能にすることはよりいっそう難しい。
【０００４】
必要なものは、データセンターまたはプロバイダネットワークを含むかもしれない物理ネットワークを横断して多くのマルチキャストグループを使用可能にするためのネットワークシステムである。そのようなネットワークシステムは、物理ネットワークに内蔵したマルチキャスト能力に依存せずにネットワーク仮想化をサポートすべきであり、一方、それにもかかわらず、物理ネットワーク内でマルチキャストがフルに使用可能とされていない場合でさえ、物理ネットワークによって提供されたマルチキャスト能力に影響を及ぼしてより高い効率を達成する。
【発明の概要】
【０００５】
発明のいくつかの実施形態は、ネットワークを横切って選択されたエンドポイントのグループに提供するメッセージの複製を実行するための方法（すなわちマルチキャスト複製）を提供する。このネットワークは、ネットワークからのメッセージを受け取り、ネットワークのためにメッセージを生成する複数のエンドポイントを含む。エンドポイントはネットワークの異なるセグメントに置かれ、各セグメントは１以上のエンドポイントを含む。ネットワークの中で特定の複製グループ（すなわちマルチキャストグループ）に属しているすべてのエンドポイントに特定のメッセージ（例えばデータパケット）を複製する送信元エンドポイントに関して、送信元エンドポイントは、送信元エンドポイント自身のセグメントの中の各エンドポイントと、他のセグメントのそれぞれの中のプロキシエンドポイントに特定のメッセージを複製する。プロキシエンドポイント自身のセグメントの中で特定の複製グループに属しているすべてのエンドポイントに、各プロキシエンドポイントは次々特定のメッセージを複製する。
【０００６】
いくつかの実施形態では、エンドポイントによるマルチキャスト複製は３つのステップで実行される。（１）送信元セグメントのローカルな複製（その中で、マルチキャストパケットは送信者と同じセグメントのローカルな受信者エンドポイントに送信される）。（２）セグメント間複製（その中において、パケットが、マルチキャストグループの受信者を有するすべてのリモートセグメントに複製される）。（３）リモートセグメントのローカルな複製（その中において、パケットはリモートセグメントのすべての受信者エンドポイントに送信される）。
【０００７】
マルチキャスト複製のための関連情報のすべてを得るように、いくつかの実施形態の中のエンドポイントは情報を互いと交換する。いくつかの実施形態では、互いに制御プレーンプロトコルを使って、エンドポイントは分散された方法で情報を交換する。いくつかの実施形態では、別個のエンティティ（例えば集中化したコントローラ）のセットはエンドポイントからの情報を収集し、エンドポイントがマルチキャスト複製を実行するために必要な物理ネットワークと他のエンドポイントについての情報をエンドポイントに公開する（先を見越してまたはエンドポイントからの問合せに呼応して）。
【０００８】
いくつかの実施形態は、リモートセグメントでトラフィック負荷を平衡させる方法でプロキシを選ぶ。いくつかの実施形態では、これは、各マルチキャストグループについて、無作為によってプールからエンドポイントを選ぶことによって遂行される。すでに使用中のエンドポイントを意図的に避けることによって、いくつかの実施形態はプロキシ選択をインテリジェントに実行する。
【０００９】
いくつかの実施形態では、マルチキャスト複製は、ＶＸＬＡＮなどのオーバレイベースのネットワーク仮想化ソリューションを実施するために使われる。オーバーレイネットワークの中で、論理レイヤ２ネットワークは物理ネットワークの上で構築されてもよく、完全な乱雑にされた（full messed）レイヤ２トンネルが、同じ論理レイヤ２ネットワークに参加するエンドポイントの間で設立され得る。いくつかの実施形態では、論理レイヤ２ネットワークの中の１つのトンネルエンドポイントから発生しているＢＵＭパケットはネットワークの他のすべてのメンバーエンドポイントに複製される。
【００１０】
いくつかの実施形態では、ＶＭは論理レイヤ２ネットワークの消費者であり、ハイパーバイザーはトンネルのエンドポイントである。これらの実施形態のいくつかが、論理レイヤ２ネットワークにマルチキャスト複製オペレーション（すなわちマルチキャストグループ）の範囲を、トンネルのエンドポイントにマルチキャストのエンドポイントをマッピングする。そのようなわけで、論理ネットワークの中のＢＵＭパケット複製は物理ネットワークの中のマルチキャストグループにマルチキャスト複製として実施される。すなわち、これらの実施形態の中の論理ネットワークの複製範囲は、マルチキャストグループの受信者エンドポイントだけを含むようにマッピングされる。
【００１１】
先述の要約は、発明のいくつかの実施形態の簡潔な紹介の役割を果たすことを意図している。それは、この文書の中で明らかにされたすべての創意に富んだ主題の紹介または概要であることを意図されていない。その後の詳細な説明と詳細な説明において参照される図面はさらに他の実施形態と同様に要約において説明された実施形態を説明するであろう。したがって、この文書によって説明されたすべての実施形態を理解するために、要約および詳細な説明および図面の完全なレビューが必要である。さらに、クレームされた主題は、要約、詳細な説明および図面における例となった詳細によって制限されないが、反対に、クレームされた主題は、主題の精神からかけ離れずに他の特定の形式に具現化されることができるため、添付された特許請求の範囲によって定義される。
【図面の簡単な説明】
【００１２】
発明の斬新な機能は添付された特許請求の範囲に記述される。しかし、説明の目的のために、発明のいくつかの実施形態は以下の図に記述される。
【図１】図１は、ひとつのセグメントのエンドポイントが特定の複製グループのすべてのエンドポイントにデータパケットを複製するネットワークを説明する。
【図２】図２は、１つのネットワークセグメントから他のネットワークセグメントまでのプロキシの使用によるマルチキャストトラフィックの伝播を説明する。
【図３】図３は、ローカルなセグメントでマルチキャストを実施するために、エンドポイントによってユニキャスト複製を使うネットワークを説明する。
【図４】図４は、ネットワークの中の複製／マルチキャストパケットを転送するためのプロセスを概念的に説明する。
【図５】図５は、複製をマルチキャストするために、適切なエンドポイント情報の収集と配布を説明する。
【図６】図６は、マルチキャストトラフィックを複製し、転送するためにエンドポイントによって使われるマルチキャスト情報のセットを説明する。
【図７ａ】、
【図７ｂ】図７ａ−図７ｂは、リモートセグメントでマルチキャストプロキシを選択するためのプロセスを概念的に説明する。
【図８】図８は、物理ネットワーク上における論理ネットワークのネットワーク仮想化を説明する。
【図９】図９は、複数のネットワークセグメントを横断してマルチキャスト複製／転送を実行することが可能な物理ネットワークの上における複数の論理ネットワークの実装を説明する。
【図１０】図１０は、物理ネットワークの中でマルチキャストプロキシを用いた、論理ネットワークの中でのＢＵＭパケットの送信を説明する。
【図１１】図１１は、発明のいくつかの実施形態が実装される電子システムを概念的に説明する。
【発明を実施するための形態】
【００１３】
以下の説明において、多くの詳細が説明のために記述される。しかし、当業者は、本発明がこれらの特定の詳細を使用することなく実施し得ることに気がつくであろう。他の例において、公知の構造と装置は、不要な詳細によって発明の説明をわかりにくくしないようにブロック図の形式で示される。
【００１４】
本発明のいくつかの実施形態は、ネットワークを横断してメッセージの複製を実行するための方法をエンドポイントの選ばれたグループに提供する（すなわちマルチキャスト複製）。ネットワークは、ネットワークからのメッセージを受け取り、ネットワークのためにメッセージを生成する複数のエンドポイントを含む。エンドポイントはネットワークの異なるセグメントに置かれ、各セグメントは１以上のエンドポイントを含む。送信元エンドポイントがネットワークの中で特定の複製グループ（すなわちマルチキャストグループ）に属しているすべてのエンドポイントのために特定のメッセージ（例えばデータパケット）を複製するために、送信元エンドポイントは送信元エンドポイント自身のセグメントの中の各エンドポイントに、そして他のセグメントのそれぞれの中のプロキシエンドポイントに、その特定のメッセージを複製する。各プロキシエンドポイントは、プロキシエンドポイント自身のセグメントの中で特定の複製グループに属しているすべてのエンドポイントに順番に次々とその特定のメッセージを複製する。
【００１５】
いくつかの実施形態のために、図１は、エンドポイントが種々のセグメントネットワークを横断する特定の複製グループのすべてのエンドポイントにデータパケットを複製するネットワーク１００を説明する。ネットワーク１００はセグメントに分けられる。エンドポイントはそれ自身のセグメント中の特定の複製グループのすべてのエンドポイントにデータパケットを複製する。他のセグメントのプロキシはそれから、他のセグメント中のマルチキャストグループの他のエンドポイントにデータパケットを複製する。
【００１６】
説明されるように、ネットワーク１００は少なくとも４つのセグメント１０１−１０４に分けられる。ネットワークセグメント１０１−１０４のそれぞれは、ネットワークデータトラフィックを生成し、かつ受信する多くのエンドポイントを含む。特に、セグメント１０１はエンドポイント１１１−１１６を含み、セグメント１０２はエンドポイント１２１−１２６を含み、セグメント１０３はエンドポイント１３１−１３６を含み、セグメント１０４はエンドポイント１４１−１４６を含む。セグメントの間のデータトラフィックはセグメント間ルーティング１５０を通り抜ける。
【００１７】
図１はまた、エンドポイント１１１によって供給されるデータパケット１９０の複製を説明する。データパケット１９０は、特定の複製グループのすべてのメンバーエンドポイントに対して複製されるために指定される。この特定の複製グループのメンバーはエンドポイント１１１、１１２、１１４、１１５、１２１、１２２、１２３、１２４、１２５、１２６、１３１、１３２、１３５、１３６、１４１、１４４、１４５、および１４６を含む。これらのエンドポイントは、図１において影をつけられて図示される。影をつけられて図示されないエンドポイントは特定の複製グループに属していない。いくつかの実施形態では、データパケット１９０は、複製グループに属していないそれらのエンドポイントに転送されない。セグメントのすべてのエンドポイントが同じ複製グループに属しているわけではないことは注目に値する。例えば、ネットワークセグメント１０２のすべてのエンドポイントは特定の複製グループに属しているけれども、ネットワークセグメント１０１ではエンドポイントのいくつかだけが属している（ネットワークセグメント１０３と１０４のエンドポイントについても同様である）。いくつかの実施形態では、これらの他のエンドポイントは他の複製グループに属していてもよい。いくつかのエンドポイントは複数の複製グループに属している。
【００１８】
送信元エンドポイント１１１はネットワークセグメント１０１にあり、エンドポイントはネットワークセグメント１０１中の複製グループの他のメンバーすなわちエンドポイント１１２、１１４、および１１５にデータパケットを複製する。同じデータパケットはネットワークセグメント１０２、１０３、および１０４のエンドポイントにまた複製される。しかし、送信元エンドポイント１１１はデータパケット１９０を直接これらの他のネットワークセグメントのエンドポイントに転送しない。代わりに、送信元エンドポイント１１１は複製データパケット１９０をこれらの他のネットワークセグメントのそれぞれの中のプロキシエンドポイントに転送する。特に、送信元エンドポイント１１１はネットワークセグメント１０２のためのプロキシとしてのエンドポイント１２１、ネットワークセグメント１０３のためのプロキシとしてのエンドポイント１３１、およびネットワークセグメント１０４のためのプロキシとしてのエンドポイント１４１を選択している。これらプロキシの各々は、それぞれのネットワークセグメントの中で特定の複製グループに属しているエンドポイントにデータパケット１９０を次々と複製し、転送する（例えばプロキシ１４１はデータパケット１９０をエンドポイント１４１、１４４、１４５、および１４６に転送する。）プロキシエンドポイントの選択は下のセクションＩＩＩでさらに説明されるであろう。
【００１９】
異なるネットワークセグメント内のプロキシの使用は、送信元エンドポイント１１１がデータパケット１９０を、リモートセグメントでエンドポイントに達するためにコンピューティングリソースを浪費せずに、他のネットワークセグメント内のエンドポイントに転送することを可能にする。それはまた、メッセージの複製と転送が各ネットワークセグメントのローカルネットワーク構造を十分に利用することを可能にする（いくつかの実施形態では、そのいくつかが、マルチキャストをサポートするために構成されたハードウェアを有する）。そうすることで、物理ネットワークによって提供されたマルチキャスト能力を活用してより高い効率を達成する一方、最適化された複製と物理ネットワークトポロジに基づいた配送経路とをサポートする。
【００２０】
ネットワーク１００に接続しているエンティティの間のデータ通信のためにネットワーク１００は物理的なインフラストラクチャーを提供する。いくつかの実施形態の中に、ネットワーク１００は、通信可能に連結されてネットワーク１００を形成している通信経路の、多くの物理的に別個のセットを含む。いくつかの実施形態の中に、通信経路のこれらの物理的に別個のセットの少なくともいくつかは異なるポロジーを有するか、または、異なる通信プロトコルを使うか、あるいはその両方である。いくつかの実施形態では、ネットワーク１００は、１つ以上のデータセンターまたは（インターネットサービスの）プロバイダネットワークまたはその両方を横断して広がり、通信経路の物理的に別個のセットの少なくともいくつかはデータセンターまたはプロバイダネットワークの中にある。いくつかの実施形態では、ネットワーク１００は、複数の物理レイヤ２（ＶＬＡＮ）、ＩＰサブネットおよび複数のアイランドに分割できる物理ＩＰネットワークである。マルチキャスト転送はマルチキャストアイランドの中でサポートされるけれども、アイランドを横断してサポートされない（または、十分によい性能でサポートできなかった）。いくつかの実施形態では、マルチキャストは全くネットワークによってサポートされない。
【００２１】
いくつかの実施形態の中の１１１などのネットワークエンドポイントは、ネットワーク１００上のデータトラフィックを生成し、かつ受信するエンティティである。そのようなエンティティは、コンピューティング装置か、データストレージか、またはネットワークの上のデータトラフィックを提供するかあるいは消費する別のタイプの装置であるかもしれない。
【００２２】
複数の受信者（レシーバ）にメッセージを複製し、転送するネットワークエンドポイントは、マルチキャストエンドポイントと称される。いくつかの実施形態では、マルチキャストエンドポイントは、物理的なネットワークトポロジおよびマルチキャスト能力に応じて異なるモードでマルチキャスト複製それ自体を実行する。いくつかの実施形態では、マルチキャストエンドポイントは、ホストマシンの上で動いているその仮想マシン（ＶＭ）のために物理ネットワークに（から）マルチキャストトラフィックを送受信するハイパーバイザーであるかもしれない。
【００２３】
いくつかの実施形態では、マルチキャストエンドポイントは、マルチキャストトラフィックを生成せず、消費しないネットワークセグメント内のエンティティであるかもしれない。これらのマルチキャストエンドポイントのいくつかがローカルに始められたマルチキャストトラフィックを傍受し、リモートセグメントのマルチキャストエンドポイントに傍受したトラフィックを複製し、リモートセグメントからマルチキャストトラフィックを受信し、受信したトラフィックをローカルなセグメントに注入する。
【００２４】
セグメント１０１−１０４などのネットワークセグメントは、エンドポイントの集まりを包含するネットワークのサブセットである。いくつかの実施形態では、各ネットワークセグメントは、包含したマルチキャストエンドポイントの間でマルチキャストトラフィックをサポートすることができる。いくつかの実施形態では、ネットワークセグメントの少なくともいくつかはマルチキャストトラフィックをサポートせず、マルチキャストグループにおける各受信者エンドポイントにマルチキャストパケットを複製し、転送するためにユニキャストに頼らなければならない。
【００２５】
マルチキャストメッセージは、同じセグメントのエンドポイントの間では、異なるセグメントを横断するエンドポイント間とは違ったふうに複製され転送される。例えば、いくつかの実施形態では、同じセグメントのエンドポイントの間のネットワーク通信のコストは、異なるセグメントのエンドポイントの間より小さい。いくつかの実施形態では、ネットワークは同じセグメントのエンドポイントの間では、異なるセグメントのエンドポイントの間より高い通信帯域幅をサポートする。いくつかの実施形態では、セグメントは物理ネットワークのマルチキャスト能力によって定義される。これらの実施形態のいくつかにおいて、セグメントを横断するマルチキャストトラフィックが物理ネットワークによって全くサポートされないか、あるいはもっと制限された方法でサポートされる一方、セグメントの中のマルチキャストトラフィック（ネットワークトラフィックを複数の受信者に同時に送信する）は確実に物理ネットワークのマルチキャスト能力を利用することができる。
【００２６】
いくつかの実施形態では、セグメントはＶＬＡＮ（仮想のローカルエリアネットワーク）またはＶＬＡＮの中のＩＰサブネットであるかもしれない。（いくつかの実施形態で、或るＶＬＡＮは唯１つのＩＰサブネットを含んでいる。いくつかの実施形態では、複数のＩＰサブネットが或るＶＬＡＮ内に割り当てられる。）いくつかの実施形態で、ネットワークセグメントは、互いの間に高帯域または低価格またはその両方であるリンクを有する隣接したＶＬＡＮのセットを含む。
【００２７】
いくつかの実施形態では、セグメントはマルチキャストアイランドである。いくつかの実施形態では、マルチキャストアイランドは、ＩＰマルチキャストをサポートする物理ネットワークまたはすべてのルータがマルチキャストルーティングプロトコルをサポートする物理ネットワークである。いくつかの実施形態では、セグメントは、マルチキャストルーティングがルータによってサポートされない一方、ＩＧＭＰスヌーピングはスイッチによってサポートされるＶＬＡＮであるところのマルチキャストアイランドであり、それゆえマルチキャスト転送は、ＶＬＡＮの中に制限される。いくつかの実施形態で、マルチキャストアイランドは複数のＶＬＡＮおよびサブネットを含む。いくつかの実施形態の中のそのようなマルチキャストアイランドは、マルチキャストルーティングをサポートする内部ルータ（または、レイヤ３スイッチ）を含むので、マルチキャストトラフィックは内部のＶＬＡＮの間で発送することができるけれども、アイランドの外部へ、または外部からアイランドの中へ発送することはできない。
【００２８】
セグメント間ルーティング１５０は、異なるネットワークセグメント１０１−１０４の間で通信経路を提供するネットワーク１００の一部を含む。いくつかの実施形態では、各ネットワークセグメントの中で生じるマルチキャストトラフィックはセグメント間ルーティング１５０を横断して直接発送することができないか、あるいは、時間や帯域幅、または計算能力に関する追加費用を招くことなく、その上に発送することができない。いくつかの実施形態の中で、セグメント間ルーティング１５０は、マルチキャストを許さないデータセンタまたはプロバイダネットワークを含む。トラフィック。これらの実施形態のいくつかにおいて、１つのセグメントのマルチキャストトラフィックは、特に異なるセグメントのプロキシエンドポイントに、セグメント間ルーティング１５０を介してユニキャストトラフィックとして伝播することができるだけである。
【００２９】
上記の説明は、いくつかの実施形態のエンドポイントによる分散型マルチキャスト複製を導入する。いくつかのより詳細な実施形態は下で説明される。第一にセクションＩは、いくつかの実施形態のエンドポイントによるマルチキャスト複製をより詳細に説明する一方、セクションＩＩは、いくつかの実施形態に従って分散型マルチキャスト複製をサポートするのに必要な情報の収集と交換を説明する。次にセクションＩＩＩは、いくつかの実施形態に従って、プロキシエンドポイントの選択とネットワーク負荷の調和を説明する。セクションＩＶは、他のセクションの中で説明された分散型マルチキャスト複製に基づいたネットワーク仮想化スキームのいくつかの実施形態を説明する。最後に、セクションＶは、発明のいくつかの実施形態が実装される電子システムを説明する。
【００３０】
Ｉ．エンドポイントによるマルチキャスト複製
いくつかの実施形態の中で、エンドポイントによるマルチキャスト複製は以下の３つのステップを含む。（１）送信元セグメント内のローカル複製（それにおいて、マルチキャストパケットは、送信者（センダ）と同じセグメント内のローカルな受信者（レシーバ）エンドポイントに送信される）。（２）セグメント間複製（それにおいて、パケットは、マルチキャストグループの受信者を有するすべてのリモートセグメントに複製される）。（３）リモートセグメント内のローカル複製（それにおいて、パケットは、リモートセグメント内のすべての受信者エンドポイントに送信される）。
【００３１】
ステップ（１）と（２）は送信者エンドポイントによって開始される。ステップ（２）中で、マルチキャストパケットを複製する前に、送信者エンドポイントはすべてのリモート受信者セグメント内で、プロキシとなる１つのエンドポイントを選び、それから、ユニキャストによってすべてのプロキシエンドポイントにパケットを複製する。複製されたパケットを受け取った後に、プロキシはステップ（３）へと複製手順を続けるであろう。
【００３２】
図２は、プロキシの使用による１つのネットワークセグメントから他のネットワークセグメントまでのマルチキャストトラフィックの伝播を説明する。特に、図２は、ネットワーク２００中の送信元セグメント内のローカル複製と、セグメント間複製と、リモートセグメント内のローカル複製とを説明する。説明されるように、ネットワーク２００は４つのセグメント２１０、２２０、２３０、および２４０と、エンドポイント２１１−２１４を有するセグメント２１０と、エンドポイント２２１−２２４を有するセグメント２２０と、エンドポイント２３１−２３４を有するセグメント２３０と、エンドポイント２４１−２４４を有するセグメント２４０とを含む。さらに、送信元エンドポイント２１１は、複製するためにプロキシとしてエンドポイント２２１、２３１、および２４１を選び、リモートセグメント２２０、２３０、および２４０宛のマルチキャストメッセージをそれぞれ転送する。説明の簡潔さのために、当業者は、セグメントのいくつかが、同じマルチキャストグループに属していないエンドポイントを含んでもよいと理解するであろうけれども、エンドポイントのすべては、同じ特定のマルチキャストグループに所属することとして説明する。
【００３３】
４つの段階２０１−２０４において、図２は、送信元エンドポイント２１１からセグメント２１０、２２０、２３０、および２４０内の同じマルチキャストグループのすべてのエンドポイントへのマルチキャストメッセージの複製と転送を説明する。各段階で、マルチキャストメッセージ／データを受け取ったエンドポイントは、影付きで図示されている。
【００３４】
第１段階２０１で、送信元エンドポイント２１１はマルチキャストによるデータパケットを、ローカルネットワークセグメント２１０（ソースエンドポイントのネットワークセグメントである）中で同じマルチキャストグループに属している他のすべてのエンドポイントに転送した。いくつかの実施形態では、この複製と転送は、ネットワークセグメント２１０の下にある物理ネットワークのマルチキャスト能力を利用することによって遂行される。
【００３５】
第二段２０２はセグメント間複製を示す（それにおいて、パケットは、マルチキャストグループの受信者エンドポイントを有するすべてのリモートセグメントに複製される）。特に、送信元エンドポイント２１１は、リモートセグメント２２０、２３０、および２４０にあるプロキシエンドポイント２２１、２３１、および２４１それぞれにデータパケットを複製し、転送している。いくつかの実施形態では、マルチキャストのために構成される物理的な通信経路を超えてセグメント間複製は起こり、使用可能な内蔵のマルチキャスト能力を利用する。しかし、いくつかの実施形態では、マルチキャストのために構成されない物理的な通信経路を超えてこのセグメント間複製は起こる。これらの実施形態のいくつかにおいて、１つのセグメントから別のセグメントまでのマルチキャストパケットの転送はユニキャスト通信プロトコルによって実行される。
【００３６】
第３段２０３はリモートセグメント内でのローカル複製を示す（それにおいて、パケットはリモートセグメント内のすべての受信者エンドポイントに送信される）。特に、この複製はそれらのリモートセグメントそれぞれの中のプロキシエンドポイントによって実行される。すなわちセグメント２２０のためにプロキシとして選ばれたエンドポイント２２１は、エンドポイント２２２−２２４にパケットを複製し、転送する。同様に、セグメント２３０のためのプロキシとしてのエンドポイント２３１は、エンドポイント２３２−２３４にパケットを複製し、転送し、セグメント２４０のためのプロキシとしてのエンドポイント２４１は、エンドポイント２４２−２４４にパケットを複製し、転送する。いくつかの実施形態では、これらのリモートセグメントのいくつかにおけるマルチキャストパケットの複製と転送は、これらのリモート・ネットワーク・セグメントの下にある物理ネットワークのマルチキャスト能力を利用することによって遂行される。４番目の最終段２０４はデータパケットの複製と転送の完了を示す（それにおいて、マルチキャストグループにおけるすべてのエンドポイントはデータパケットを受信した）。
【００３７】
いくつかの実施形態では言及されるように、セグメント内のマルチキャスト複製は、そのセグメントのための潜在的な物理ネットワークによってサポートされたローカルなマルチキャスト複製によって遂行される。いくつかの実施形態では、セグメントがマルチキャストアイランドであり、そのため送信者／プロキシエンドポイントが、ローカルなマルチキャストアイランド内のマルチキャストグループのすべての受信者に、物理ネットワークによって複製されるであろうマルチキャストパケットを送信する場合に、これはそうである。いくつかの実施形態では、マルチキャストアイランドは、マルチキャストパケットがアイランドから出ることを許さず、送信者エンドポイントは、マルチキャストを使わずに（例えば、ユニキャストを使って）アイランドからオリジナルパケットを送信するであろう。いくつかの実施形態は、ルータがマルチキャストをサポートしていたとしてもマルチキャストパケットをドロップすることをルータに強制することによって、マルチキャストパケットがセグメントの外へ転送されることを防止する。
【００３８】
いくつかの実施形態では、セグメントの少なくともいくつかがローカルにマルチキャストプロトコルをサポートしない。これらの実施形態のいくつかにおいて、送信者／プロキシエンドポイントはユニキャストを持つすべてのローカルな受信者エンドポイントにオリジナルのマルチキャストパケットを複製する。従って、ローカル受信者各々のために、送信者／プロキシはオリジナルのパケットを複製し、それを受信者エンドポイントへのユニキャストパケットに変換する。図３は、ローカルなセグメントでマルチキャストを実施するために、エンドポイントによるユニキャスト複製を用いるネットワーク３００を説明する。
【００３９】
説明されるように、ネットワーク３００は４つのネットワークセグメント３１０、３２０、３３０、および３４０を有しており、セグメント３１０はエンドポイント３１１−３１４を、セグメント３２０はエンドポイント３２１−３２４を、セグメント３３０はエンドポイント３３１−３３４を、セグメント３４０はエンドポイント３４１−３４４を有する。送信元エンドポイント３１１は、リモートセグメント３２０、３３０、および３４０それぞれに対してマルチキャストメッセージを複製し、転送するためのプロキシとしてエンドポイント３２１、３３１、および３４１を選択している。当業者は、セグメントのいくつかが同じマルチキャストグループに属していないエンドポイントを含む可能性があると理解するであろうが、説明の簡潔さのために、エンドポイントのすべては、同じ特定のマルチキャストグループに属することとして説明される。
【００４０】
図３は１０の段階３０１−３０９及び３９９におけるローカルセグメント内のユニキャスト複製を説明する。第１段階３０１は、エンドポイント３１２にユニキャストによるデータパケットを複製し、転送している送信元エンドポイント３１１を説明する。セグメント３１０はマルチキャストプロトコルをサポートせず、そのため、セグメント３１０中の複数のエンドポイントへのマルチキャストトラフィックは同じマルチキャストグループの個々のエンドポイントへのユニキャスト送信によって実装されなければならない。受信者エンドポイントが送信者エンドポイント（またはプロキシ）と同じＶＬＡＮにあるいくつかの実施形態では、宛先ＭＡＣアドレスは、受信者エンドポイントのＭＡＣアドレスとなるように変更される。
【００４１】
セグメント３１０内のマルチキャストグループの残りのメンバーに対するデータパケットのマルチキャスト複製と転送とを完了するために、送信元エンドポイントはエンドポイント３１３と３１４とにユニキャスト転送を実行する。第二段階３０２と第３段階３０３はそれぞれエンドポイント３１３と３１４とに転送しているユニキャストを説明する。
【００４２】
第４段階３０４は、セグメント３１０内の送信元エンドポイント３１１からセグメント３２０のための選ばれたプロキシエンドポイント３２１までのセグメント間メッセージ複製／転送を説明する。図３の例は、ユニキャストによって実行されるようなセグメント間転送を説明する。しかし、いくつかの実施形態では、セグメント間通信の下にある物理的な通信経路がマルチキャストをサポートするならば、セグメント間転送は送信元エンドポイントからプロキシのすべてに対してマルチキャストによって実行される。
【００４３】
第５段階３０５は、送信元エンドポイント３１１からセグメント３３０のための選ばれたプロキシエンドポイント３３１までのセグメント間メッセージ複製／転送を説明する。段階３０５はまた、セグメント３２０のエンドポイントにプロキシ３２１によってメッセージ複製／転送の開始を示す。
【００４４】
第６段階３０６は、送信元エンドポイント３１１からセグメント３４０のための選ばれたプロキシエンドポイント３４１までのセグメント間メッセージ複製／転送を説明する。この段階において、プロキシ３２１は、セグメント３２０のエンドポイントにユニキャストによるメッセージを複製／転送し続ける一方。プロキシ３３１は、セグメント３３０内のエンドポイントに対してユニキャストによるメッセージの複製／転送を開始する。
【００４５】
第７段階３０７で、送信元エンドポイント３１１は、メッセージをその宛先（すなわち、同じマルチキャストグループのそのローカルセグメント３１０内のすべてのエンドポイントおよびリモートセグメント内のすべてのプロキシエンドポイント）のすべてに対する送信を完了した一方、プロキシ３２１と３３１は、それぞれのネットワークセグメント内の同じマルチキャストグループのエンドポイントへとユニキャストによるデータパケットを複製し、転送し続ける。プロキシ３４１は、セグメント３４０内のエンドポイントへのユニキャストによるメッセージの複製／転送を開始する。
【００４６】
プロキシによる複製と転送は第８段階３０８と第９段階３０９で継続される。第１０段階である最終段階３９９はデータパケットの複製および転送の完了を示し、そこにおいて、マルチキャストグループにおけるすべてのエンドポイントはデータパケットを受信している。
【００４７】
図２と３は、マルチキャストメッセージの複製および転送のために、ユニキャスト又はマルチキャストのどちらかを用いるとしてネットワーク全体を説明しているが、いくつかの実施形態では、複製モードは、セグメントごとに、あるいはエンドポイントの粒度あたりのイベントごとに設定できる。例えば、メッセージを転送／複製するために、送信元エンドポイント１１１がマルチキャストを用いる一方、プロキシエンドポイント１３１がユニキャストを用いるように、図１のネットワーク１００を構成できる。第一のマルチキャストグループ（例えば図１における影をつけられたエンドポイントによって代表されたグループ）がマルチキャストを使う一方、第二のマルチキャストグループ（不図示）がユニキャストを使うように、ネットワーク１００をまた構成できる。
【００４８】
マルチキャストを実行することによるマルチキャストパケットの複製／転送は、ローカルセグメントの中の物理ネットワークによってサポートされたマルチキャストを必要としている。そうすることは物理ネットワークのマルチキャスト能力を利用し、それによりエンドポイントによるユニキャストに頼るよりも効率的なマルチキャスト転送および複製が可能となる。マルチキャストが利用できない場合は、セグメント内部のパケット転送のコストがセグメント外部の転送コストよりも低い限り、図３において説明されるようなユニキャストによるマルチキャストパケットの複製／転送がまだ有利であり、その上、セグメントを横断して複製されたパケットは、各リモートセグメントのプロキシに対するパケットのひとつのコピーのみを複製することにより減らされる。
【００４９】
いくつかの実施形態のために、図４は、ネットワークの中でマルチキャストパケットを複製／転送するときにエンドポイントによって実行されるプロセス４００を概念的に説明する。このプロセスは、ネットワーク内での送信のためのデータパケットを（４１０で）受信するときに始まる。この受信されたデータパケットは、エンドポイントを通してネットワークに接続している、アプリケーションを実行しているコンピュータまたはデータを提供している記憶装置などのエンティティによって生成できる。受信データは、また、エンドポイントがネットワークから受信するデータパケットからであってもよい。
【００５０】
このプロセスはそのとき、受信したデータパケットを複製するかどうかを判定する（４２０で）。ネットワークと接続するためにエンドポイントを用いるエンティティから発したデータを受信するエンドポイントのために、このエンドポイントは、データの送信元で提供された情報から、このデータパケットが複数の受信者に対して宛てられているかどうかを判定することができる。ネットワークからパケットとしてデータを受信するエンドポイントのために、このプロセスは、データパケットが、データパケットの複製および転送のためにエンドポイントをプロキシとして使うマルチキャストグループからのものであるかどうかを判定する必要がある。いくつかの実施形態では、プロキシエンドポイントは、他の通常のユニキャストトラフィックから、ローカルに更なる複製が必要な受信パケットを区別している。受信者／プロキシエンドポイントに送信する前にオリジナルのマルチキャストパケットをカプセル化することによって、いくつかの実施形態はこれを容易にする。受信者／プロキシエンドポイントが、カプセル化されたパケットを受信すると、それは、パケットを脱カプセル化し、オリジナルのマルチキャストパケットを復元する。いくつかの実施形態の中のカプセル化ヘッダーは、パケットのさらにローカルな複製が必要であることをプロキシに告げるフラグを含む。いくつかの実施形態では、送信者／プロキシエンドポイントはオリジナルのマルチキャストパケットをユニキャストパケットに変換し、オリジナルの宛先マルチキャストアドレスを含んでいるＩＰオプションをパケットに追加する。
【００５１】
データパケットがエンドポイントによる更なる複製を必要としているならば、プロセスは４３０に進む。さもなければ、プロセス４００はデータパケットのために受信者を識別し（４８０で）、データパケットを識別された受信者に送信し（４９０で）、終了する。
【００５２】
４３０で、プロセス４００はデータパケットのためにマルチキャストグループを識別する。いくつかの実施形態では、そのような情報は、受信したデータパケットから引き出されるか取り出される。プロセスはそれから、識別されたマルチキャストグループに属しているデータパケットを受信することになっているエンドポイントを識別する（４４０で）。いくつかの実施形態では、マルチキャストグループのメンバーエンドポイントを識別するためにエンドポイントに必要な情報は、ネットワークの中でエンドポイントからのそのような情報を収集し、それを配布する中央のエンティティによって提供される。いくつかの実施形態では、ネットワークの中のエンドポイントは前もってそれ自身でそのような情報を交換する。そのような情報の収集と交換はより下のセクションＩＩで説明する。マルチキャストグループのメンバーシップを識別するためにエンドポイントによって使われた情報の例は下の説明で図６への参照によって説明する。
【００５３】
次に、プロセスは、識別された受信者エンドポイントのいくつかがローカルなセグメントにあるかどうかを判定する（４５０で）。そうならば、ローカルなセグメントのすべての識別された受信者エンドポイント（識別されたマルチキャストグループの）にデータパケットを複製し、転送するために、プロセスは４５５に進む。いくつかの実施形態では、プロセス４００は、ローカルなセグメントがマルチキャストをサポートするかどうかを判定する。もしそうなら、データパケットをローカルなセグメントのマルチキャストグループのすべてのメンバーに送信するために、プロセスはマルチキャストプロトコルを使う。さもなければ、識別された受信者エンドポイント各々にデータパケットを個々に送信するために、プロセスはユニキャストプロトコルを使う。
【００５４】
プロセスはそれから、識別された受信者エンドポイントのいくつかがリモートセグメントにあるかどうかを判定する（４６０）。もしそうなら、それらのリモートセグメントのためにプロキシエンドポイントにデータパケットを複製し、転送するように、プロセスは４７０に進む。パケットをローカルなセグメントの受信者エンドポイントおよび／または識別されたリモートセグメントのエンドポイントのためのプロキシに送信した後に、プロセス４００は終了する。
【００５５】
ＩＩ．情報収集および交換
いくつかの実施形態では、セクションＩ中で上で説明されるようにマルチキャスト複製および転送を実行しているエンドポイントに、マルチキャストグループのメンバーシップおよび物理ネットワークトポロジについての情報が必要である。マルチキャストグループの送信者エンドポイントは、このグループの受信者を有するすべてのリモートセグメントおよびこれらセグメントの各々の中の少なくともひとつのエンドポイントを知る必要があるので、プロキシとしてリモートセグメントごとのひとつのエンドポイントを選ぶことができる。
【００５６】
ユニキャスト複製モードの中で、送信者またはプロキシエンドポイントが、ユニキャスト複製（上記説明で図２への参照によって説明されるような）によってマルチキャストを実行している場合に、送信者またはプロキシエンドポイントは、すべてのマルチキャストグループのローカルな受信者エンドポイントの関連情報（アドレスなどの）を、それらの各々にパケットを複製するために知る必要がある。エンドポイントはもちろんそれ自身のマルチキャストグループメンバーシップを知っている。いくつかの実施形態では、セグメントが、ＩＰサブネットであるか、またはＩＰプレフィクスから引き出されることができるサブネットのセットである場合に、エンドポイントは、それ自身のセグメントまたは別のエンドポイントのセグメントをＩＰアドレスから計算することができる。いくつかの実施形態では、互いのセグメントＩＤを決定するために、ネットワークの中のエンドポイントは発見プロトコルを用いる。いくつかの実施形態では、エンドポイントのセグメントＩＤはネットワーク管理者によって設定される。
【００５７】
マルチキャスト複製のために関連情報のすべてを得るように、いくつかの実施形態のエンドポイントは情報を互いと交換する。いくつかの実施形態では、エンドポイントは、互いに制御プレーンプロトコルを使って、分散型の方法で情報を交換する。いくつかの実施形態では、別個のエンティティ（例えば集中化したコントローラ）のセットがエンドポイントからの情報を収集し、（先を見越してまたはエンドポイントからの問合せに呼応して）エンドポイントがマルチキャスト複製を実行するために必要な物理ネットワークおよび他のエンドポイントについての情報をエンドポイントに公開する。
【００５８】
図５は、いくつかの実施形態のためにマルチキャスト複製に関するエンドポイント情報の収集および配布を説明する。特に、特定のマルチキャストグループに参加することを望むエンドポイントは、特定のマルチキャストグループのメンバーシップについての情報を収集する中央の制御エンティティにリポートを提出する。収集された情報はそれから、エンドポイントからの問合せによって、または中央コントローラからの特定のマルチキャストグループの各メンバーへの先を見越したプッシュ配信によって配布される。
【００５９】
図５は、ネットワークセグメント５１０、５２０、および５３０を含むネットワーク５００を説明する。ネットワークは、マルチキャストグループ１００のメンバーであるエンドポイントを含み、それは、メンバーエンドポイント５１１、５１２、５２１、および５３２（影付きで図示される）を含む。エンドポイント５１１と５１２はセグメント５１０（セグメントＡのエンドポイントＡ１とＡ３）にあり、エンドポイント５２１はセグメント５２０（セグメントＢのエンドポイントＢ２）にあり、エンドポイント５３２はセグメント５３０（セグメントＣのエンドポイントＣ１）にある。図５はまた、最初、マルチキャストグループ１００にないエンドポイント５３１を説明する。このエンドポイント５３１はセグメント５３０（セグメントＣのエンドポイントＣ５）にある。
【００６０】
図５はまた、ネットワークの中でエンドポイントからの、及びエンドポイントへのネットワークに関する情報を収集し、配布するためのエンティティ５５０を説明する。いくつかの実施形態では、エンティティ５５０はネットワークのすべてのセグメントのための中央コントローラである。いくつかの実施形態では、エンティティ５５０は、種々のマルチキャストグループのために個々のエンドポイントから提出された情報を収集し、収集した情報をテーブルまたはディレクトリ５６０として保存する１つ以上のコンピューティング装置を含む。いくつかの実施形態では、エンティティ５５０は、ネットワーク５００によって提供された物理的なインフラストラクチャーを通してそのような情報を受け取り、配布する。いくつかの実施形態では、エンティティ５５０は制御プレーンプロトコルを通して個々のエンドポイントと通信する。他の実施形態では、ネットワーク５００から独立している通信経路で、中央のエンティティ５５０と、様々なセグメント内の個々のエンドポイントとの間の通信は行われる。いくつかの実施形態では、中央コントローラとしてのエンティティ５５０は、それが収集した情報に基づいて、各マルチキャストグループのために各エンドポイントのためのプロキシを選ぶ。いくつかの実施形態では、エンドポイント自身が、それらに対してエンティティ５５０により配布された情報に基づいて、それら自身のマルチキャストプロキシを選ぶ。
【００６１】
図５は、３つのオペレーションでマルチキャストグループ１００に参加するエンドポイント５３１を説明する。いくつかの実施形態において、エンドポイント５３１などのエンドポイントは、パケットのためのオリジナルの宛先マルチキャストグループＩＤを含むユニキャストパケットを受信した後に、新しいマルチキャストグループ（いくつかの実施形態では受信者エンドポイントは複数のマルチキャストグループに参加できる）に参加すると決める。いくつかの実施形態では、エンドポイントはその結果、リポートをエンティティ５５０に提出することによって、受信したマルチキャストグループＩＤに基づいたマルチキャストグループに参加すると決めるであろう。
【００６２】
最初のオペレーション（ラベル'１'）の間、エンドポイント５３１は、それがマルチキャストグループ１００に参加したい中央コントローラエンティティ５５０にリポート５６２を提出する。いくつかの実施形態の中で、そのようなリポートは、所望のマルチキャストグループのための識別子、エンドポイントのための識別子（例えばそのＭＡＣアドレス）、および、ネットワーク中でエンドポイントを見つけるための情報（例えばそのネットワークＩＰアドレス）を含む。
【００６３】
２番目のオペレーション（ラベル'２'）の間に、中央コントローラエンティティ５５０は、マルチキャストグループ１００に関するその記録を、受信したリポート５６２に基づいてエンドポイント５３１のための情報を含むようにアップデートした。いくつかの実施形態では、中央コントローラエンティティは各マルチキャストグループのためにディレクトリまたはテーブルをメンテナンスする。いくつかの実施形態では、中央コントローラは、個々のエンドポイントによって提出された生の情報を解決し、それらを、マルチキャストグループのメンバーのために最適化されたテーブルまたはディレクトリへとコンパイルする。そのようなディレクトリの例は下で図６へのリファレンスによってさらに説明されるであろう。
【００６４】
３番目のオペレーション（ラベル'３'）の間、中央コントローラエンティティ５５０は異なるセグメントのマルチキャストグループのすべてのメンバーエンドポイントにマルチキャストグループ１００のためのアップデートされたメンバー情報５５２を配布する。その結果、既存のメンバー５１１、５１２、５２１、５３２は、新しいメンバーエンドポイント５３１がちょうどマルチキャストグループに参加したこと、この新しいメンバーエンドポイントがセグメントＣ（５３０）中にあることを知る。新たに参加したエンドポイント５３１もまた中央コントローラからグループ１００についてのメンバーシップ情報を受信する（それによりそのマルチキャストグループの他の既存メンバー及び彼らのネットワークの中の位置（例えばどのセグメント）について知らされる）。
【００６５】
図６は、いくつかの実施形態のために５５０などの中央のコントロールエンティティによって運営されるマルチキャストグループのディレクトリ例６１０を説明する。ディレクトリ６１０は複数のテーブルを保守し、その各テーブルは１つのマルチキャストグループのためにメンバーシップ情報を記録している。例えば、テーブル６１１はマルチキャストグループ"１００"のためにメンバーシップ情報を記憶する一方、テーブル６１２はマルチキャストグループ"２００"のためにメンバーシップ情報を記憶する。各テーブルは複数のエントリを含み、各エントリは、マルチキャストグループにおけるエンドポイントと対応している。例えば、テーブル６１１中の各エントリはマルチキャストグループ"１００"内にあるエンドポイントのための識別子を記録する一方、テーブル６１２中の各エントリは、マルチキャストグループ"２００"内にあるエンドポイントのための識別子を記録する。各エントリはまた、エンドポイントが属しているネットワークセグメントを含む。エンドポイントが複数のマルチキャストグループに属することができること、例えば、セグメント'Ｂ'のエンドポイント'Ｂ３'が両方のテーブル６１１と６１２中で出現する場合に、それはマルチキャストグループ１００と２００の両方に属していることは注目に値する。ディレクトリ例６１０によると、マルチキャストグループ１００は、図５で説明したオペレーション以来、エンドポイント'Ａ４'と'Ｂ３'とを追加している。
【００６６】
図６はまた、マルチキャストトラフィックを複製し、転送するためにエンドポイントによって使われるマルチキャスト情報のセットを説明する。説明されるように、マルチキャスト情報６２０のセットは、マルチキャストグループ"１００"と"３００"に参加するためにエンドポイント５９１によって使われる。マルチキャスト情報６２０のセットは、マルチキャストグループ"１００"のためのリモートセグメントのプロキシを識別するためのテーブル６２１、マルチキャストグループ"１００"にあるローカルなセグメントの他のエンドポイントを識別するためのテーブル６２２、マルチキャストグループ"３００"のためにリモートセグメントでプロキシを識別するためのテーブル６２３、およびマルチキャストグループ"３００"にあるローカルなセグメントの他のエンドポイントを識別するためのテーブル６２４を含む。いくつかの実施形態では、エンドポイント５９１によって使われたマルチキャスト情報６２０はエンドポイント５９１自身によってメンテナンスされる。いくつかの実施形態では、マルチキャスト情報はネットワークの中の別のエンティティによってメンテナンスされる。いくつかの実施形態では、エンドポイント５９１はマルチキャスト情報を記憶する。
【００６７】
従って、エンドポイント５９１（ネットワーク５００のセグメントＸでエンドポイントＸＮと識別される、図５においては不図示）が、マルチキャストグループ１００にマルチキャストデータパケットを複製し、転送する必要がある場合には、それは、同じセグメントＸ内のマルチキャストグループ１００内にあるすべての他のエンドポイントを識別するためにテーブル６２２を用いる。同様に、マルチキャストデータパケットがマルチキャストグループ３００のためであるならば、エンドポイント５９１は、同じセグメントＸ中のマルチキャストグループ３００内にあるすべての他のエンドポイントを識別するためにテーブル６２４を用いる。エンドポイント５９１はそれから、マルチキャストまたはユニキャストによるデータパケットをセグメントＸ内のそれら識別されたエンドポイントのそれぞれに送信する。
【００６８】
リモートセグメントでマルチキャストトラフィックを複製するためにプロキシを識別するために、エンドポイント５９１はまたテーブル６２２と６２４を使う。テーブル６２２と６２４中の各エントリはリモートセグメントと対応しており、エンドポイント５９１からそのリモートセグメントにマルチキャストトラフィックを複製するためのプロキシとしてエンドポイントを識別する。いくつかの実施形態では、ひとつの同じリモートセグメントについて、ひとつのエンドポイントが、異なるマルチキャストグループのために異なるプロキシを持つことができることは注目に値する。例えば、セグメントＢについて、エンドポイント５９１はマルチキャストグループ"１００"のためのプロキシとしてエンドポイントＢ２を選択し、一方、マルチキャストグループ"３００"のためにプロキシとしてエンドポイントＢ３を選択する。いくつかの実施形態では、すべてのセグメントのすべてのエンドポイントについての情報を保持する代わりに、エンドポイントがリモートセグメントのプロキシだけを把握することはまた注目に値する。いくつかの実施形態では、同じセグメントの２つのエンドポイントが、所与のリモートセグメントにマルチキャストトラフィックを複製するために異なるプロキシを選ぶことができることはさらに注目に値する。
【００６９】
いくつかの実施形態では、ネットワーク（すなわちリモートセグメント）のトポロジーを詳説する情報がエンドポイントに必要であるばかりでなく、下層の物理ネットワークの中のスイッチとルータにもまた、マルチキャストグループのマルチキャストパケットをすべての受信者エンドポイントに転送するために、そのマルチキャストグループのローカルな受信者のレコードを発見し、メンテナンスする必要がある。いくつかの実施形態では、ＩＧＭＰは、エンドポイントが受信者としてマルチキャストグループに参加することを可能にするために使われる。いくつかの実施形態では、受信したＩＧＭＰメッセージからマルチキャストグループのメンバーシップを知るためにＩＧＭＰスヌーピングを扱うスイッチを用いる。いくつかの実施形態では、マルチキャストグループのメンバーシップ情報を報告するために、受信者エンドポイントまたは下流のスイッチ／ルータを要求するＩＧＭＰクエリメッセージを周期的に送信するＩＧＭＰクエリ発行者として、ルータ（または、レイヤ３機能付きのスイッチ）は作動する。いくつかの実施形態では、マルチキャストメンバーシップ情報を交換するために、および、レイヤ３ネットワークを横断するマルチキャストパケットの配送経路を定義するために、ルータはマルチキャストルーティングプロトコルを実行する。いくつかの実施形態では、ＰＩＭ（プロトコルインデペンデントマルチキャスト）、ＤＶＭＲＰ、またはＭＯＳＰＦなどのプロトコルを用いる。
【００７０】
いくつかの実施形態では、マルチキャストルーティングがルータによってサポートされない一方、ＩＧＭＰスヌーピングはスイッチによってサポートされる。これらの実施形態のいくつかにおいて、ＩＧＭＰクエリの発行者がセグメントに全くいないことがあり得る。この場合に、各受信者エンドポイントは、それが決してＩＧＭＰクエリを受け取ることがないとしても、スイッチ内でマルチキャストを転送しているエントリを生かしておくために、それが参加するマルチキャストグループのための物理ネットワークの中へと周期的にＩＧＭＰレポートを送ることができる。
【００７１】
いくつかの実施形態では、マルチキャストアイランドはツリートポロジーを形成し、ツリー内の各ルータ（またはレイヤ３スイッチ）は、その下流のインタフェースからＩＧＭＰとプロキシＩＧＭＰを通ってその上流のノードへと、マルチキャストメンバーシップを問い合わせ、また傍受する。これらの実施形態のいくつかにおいて、マルチキャストルーティングプロトコルは異なるセグメントの間で動いていないので、マルチキャストトラフィックはセグメントを横断して発送されることができなかった。いくつかの実施形態では、いくつかの個々のセグメントで分離された、ＩＰネットワーク全体のうちの一部のみにおけるＰＩＭなどのマルチキャストルーティングプロトコルを実行する。
【００７２】
ＩＩＩ．プロキシ選択と負荷の均衡化
説明したように、いくつかの実施形態の送信者エンドポイントは、マルチキャストパケットを複製するためにすべてのリモート受信セグメントでプロキシを選択する必要がある。各送信者エンドポイントは、異なる戦略に基づいて、独立してプロキシを選択することができる。例えば、いくつかの実施形態の中の送信者エンドポイントは、すべてのマルチキャストトラフィックのためにすべてのセグメント内で固定されたプロキシを選択する。その代わりに、いくつかの実施形態の中の送信者エンドポイントは、すべてのセグメントでマルチキャストグループごとに固定されたプロキシを選択する。いくつかの他の実施形態において、送信者は、すべてのセグメント内で、１つのマルチキャストフロー（例えば＜送信元ＩＰ，宛先ＩＰ，プロトコル＞または、ＵＤＰに関して＜送信元ＩＰ，宛先ＩＰ，送信元ポート，宛先ｐｏｒｔ＞で識別される）ごとに１つの固定されたプロキシを選択する。
【００７３】
いくつかの実施形態の中のプロキシ選択のこれらのさまざまな方法は、ひとつのセグメントの異なるエンドポイントの間でネットワークトラフィック負荷を均衡させることができる。いくつかの実施形態では、送信者エンドポイントは、それがプロキシ障害を検出するために選んだプロキシからの「ハートビート」通信を使う。いくつかの実施形態では別々の制御プレーンの実装によってエンドポイント障害を検出する。
【００７４】
いくつかの実施形態では、送信者は、リモートセグメントでどのようなエンドポイントでもプロキシであるように選ぶことができる。これらの実施形態のいくつかにおいて、エンドポイントは各特定のマルチキャストグループのためにリモートセグメント内で受信者エンドポイントのうちの１つを選ぶ。そうすることは、１つのマルチキャストグループによる、他のマルチキャストグループおよび他のタイプのネットワークデータトラフィックへの影響を最小化するという利点を有する（これにより、エンドポイントが、そのエンドポイントが受信者ではないマルチキャストグループのためのマルチキャストトラフィックを処理する必要の程度が低くなるので）。それはまた、物理ネットワークのマルチキャスト転送状態への干渉を最小化するという利点を有する。いくつかの実施形態では、プロキシの選択は、制御プレーンの実装（すなわち５５０などの中央コントローラ）によって決定され、そしてそれは、いくつかの実施形態では、リモートセグメントのすべてのエンドポイントについての情報を提供しないことに決めることができる。これらの実施形態のいくつかにおいては、各エンドポイント自身に決めさせるというより、中央コントローラが特定のプロキシを各エンドポイントに割り当てる。
【００７５】
別の実施形態ではプロキシを違ったふうに選ぶ。図７ａは個々のエンドポイントによって実行される分散したプロセスを説明する一方、図７ｂは中央コントローラによって実行される集中化したプロセスを説明する。いくつかの実施形態のために、図７ａは概念的に、リモートセグメントでマルチキャストプロキシを選ぶためにエンドポイントによって実行されるプロセス７０１を説明する。このエンドポイントが属しているすべてのマルチキャストグループのメンバーシップに関するアップデートを受信するとき（７１０で）に、このプロセスは始まる。いくつかの実施形態では、図５を参照して説明したように、エンドポイントは中央コントローラからの更新された情報を受信する。
【００７６】
プロセスはそれから、リモートセグメントのそれぞれのためのプロキシとしての役を果たすように使用可能なエンドポイントのリストまたはプールを更新する（７２０で）。いくつかの実施形態では、この潜在的なプロキシのリストまたはプールは中央コントローラから受信した情報に基づく。いくつかの実施形態では、このリストはこのエンドポイントと他のエンドポイントとの間で情報（ハートビートなど）の交換に基づく。
【００７７】
次に、プロセスは各マルチキャストグループのために各リモートセグメントのためのプロキシを選ぶ（７３０で）。いくつかの実施形態では、この選択プロセスは、リモートセグメントのネットワークトラフィック負荷を均衡させる方法で実行される。いくつかの実施形態では、これは、各マルチキャストグループのために無作為にプールからエンドポイントを選ぶことによって遂行される。いくつかの実施形態では、（例えば他のマルチキャストグループによるマルチキャストトラフィックまたは他のタイプのネットワークトラフィックにより）すでに使用中のエンドポイントを意図的に避けることによって、プロキシ選択を合理的に実行する。
【００７８】
プロセスはそれから、プロキシとして選ばれたエンドポイントを監視し（７４０で）、（例えばハートビートにより）プロキシ障害があるかどうかを判定する（７４５で）。もしそうならば、故障したエンドポイントをプールから削除することによってプロキシとして使用可能なエンドポイントのリストを更新し、代用のプロキシを選ぶために、プロセス７０１は、７２０に戻る。そうでなければ、選択されたプロキシを監視し続けるために、プロセスは７４０に戻る。
【００７９】
いくつかの実施形態に関して、中央コントローラ（５５０などの）によって実行されるプロキシ選択のために、図７ｂは概念的にプロセス７０２を説明する。セグメントの１つにおいて少なくとも１つのエンドポイントからの更新された情報を受信するとき（７６０で）に、プロセス７０２は始まる。
【００８０】
プロセスはそれから、プロキシの指定を更新する必要があるかどうかを判定する（７７０で）。いくつかの実施形態は、ちょうどマルチキャストグループに参加したエンドポイントがある場合（それゆえプロキシとして役目を果たすことができる）、またはエンドポイントが故障している場合に、新たなプロキシの指定を行うものと決定する。トラフィック負荷の不均衡に起因する性能劣化が検出されている場合など、ネットワークの中の他のイベントによってもまた、プロセスは、新たなプロキシの指定を行う。プロキシの指定を更新する必要があるならば、プロセスは７８０に進む。さもなければ、プロセス７０２は終了する。
【００８１】
７８０で、プロセスは１つのマルチキャストグループの１つのセグメントのために少なくとも１つのエンドポイントについて新しいプロキシの指定を行う。エンドポイントによって実行されるプロキシ選択の場合においてそうであるように、いくつかの実施形態では中央で実行されるプロキシ選択もまた、負荷均衡化のために、使用可能なエンドポイントのプールからの無作為抽出を用いる。（例えば他のマルチキャストグループのマルチキャストトラフィック、または他のタイプのネットワークトラフィックにより）すでに使用中のエンドポイントを意図的に避けることによって、いくつかの実施形態ではプロキシ選択を理性的に実行する。新棚プロキシのために指定を行った後に、プロセス７０２は終了する。
【００８２】
ＩＶ．  ネットワーク仮想化
いくつかの実施形態では、上で説明したようなマルチキャスト複製方法は、ＶＸＬＡＮなどのオーバレイベースのネットワーク仮想化ソリューションを実施するために使われる。オーバーレイネットワークの中で、論理レイヤ２ネットワークは物理ネットワークの上で構築でき、完全な乱雑にされた(full messed)レイヤ２トンネルが、同じ論理レイヤ２ネットワークに参加するエンドポイントの間で設立することができる。いくつかの実施形態では、論理レイヤ２ネットワークの中の１つのトンネルエンドポイントから生じたＢＵＭパケットは論理ネットワークの他のすべてのメンバーエンドポイントに複製される。
【００８３】
いくつかの実施形態では、ＶＭは論理レイヤ２ネットワークの消費者であり、ハイパーバイザーはトンネルエンドポイントである。これらの実施形態のいくつかでは、マルチキャスト複製オペレーションの範囲（すなわちマルチキャストグループ）を論理レイヤ２ネットワークにマッピングし、マルチキャストエンドポイントをトンネルエンドポイントにマッピングする。そのようなものとして、論理ネットワークの中のＢＵＭパケット複製は、物理ネットワークの中のマルチキャストグループへのマルチキャスト複製として実施される。すなわち、これらの実施形態における論理ネットワークの複製の範囲は、マルチキャストグループの受信者エンドポイントだけを含むようにマッピングされる。いくつかの実施形態では、ハイパーバイザーは、転送オペレーションがコントローラによって管理された、被管理ネットワークスイッチを含む。
【００８４】
図８は物理ネットワーク８０５上で論理ネットワーク８００のネットワーク仮想化を説明する。論理ネットワーク８００はＶＭ８１１−８１９の間のデータ通信のためのものであり、それはホストマシンマシン８２１−８２５の上で動いているハイパーバイザーを介してそれらホスト上で動いている。ホストマシンは物理ネットワーク８０５と通信可能に接続される。
【００８５】
物理ネットワーク８０５は図１のネットワーク１００に類似しているいくつかの実施形態の中にある。すなわち、物理ネットワーク８０５は１つ以上のネットワークセグメントを含むことができ、ホストマシン（すなわちそれらのホストマシンの上で動いているハイパーバイザー）は、ネットワークの異なるセグメントに接続しているエンドポイントである。物理ネットワークのいくつかの部分（例えばマルチキャストアイランド）により提供される内蔵マルチキャスト機能を用いることにより、またはマルチキャストをサポートしないネットワークの部分（例えばデータセンタとプロバイダネットワーク）を横断してユニキャストを実行することにより、物理ネットワークは、マルチキャストトラフィックをサポートすることが可能である。物理ネットワークはまた、ゲートウェイ８６０経由で外部ネットワーク８７０と通信することができる。
【００８６】
図８のネットワーク仮想化は、物理ネットワークの中の配信のためにＶＭによって生成されたデータパケットをカプセル化することによって遂行される。図示されるように、ホストマシン８２１上で実行されるＶＭ８１２はデータパケット８８０をホストマシン８２４上で実行されるＶＭ８１５に送信している。ホストマシン８２１は、データパケット８８０に基づいたカプセル化済みパケット８９０を作成し、物理ネットワーク８０５はカプセル化済みパケット８９０をホストマシン８２４に提供する。ホストマシン８２４は、次々と受信したパケット８９０を脱カプセル化し、脱カプセル化済みパケット８８０を宛先ＶＭ８１５に配信する。
【００８７】
いくつかの実施形態では、カプセル化済みデータパケット８９０はＶＸＬＡＮなどのネットワーク仮想化標準に従って生成される。図８はＶＸＬＡＮに従ってデータパケット８９０に関する一例であるカプセル化フォーマット８９５を図示する。ＶＸＬＡＮは、物理レイヤ３ネットワーク上で多くの論理レイヤ２ネットワークの迅速な提供をサポートすることができたオーバーレイネットワーク技術である。ＶＸＬＡＮはＭＡＣオーバーＵＤＰ(MAC-over-UDP)ソリューションに基づく。ＶＸＬＡＮ論理ネットワークのイーサネット（登録商標）フレームは、物理的な回線上のＵＤＰを使ってカプセル化する。ＶＸＬＡＮヘッダーの中には、ＶＸＬＡＮ論理レイヤ２ネットワークを一意に識別する２４ビットのＶＮＩ（ＶＸＬＡＮネットワーク識別子）があるので、最高１６Ｍまでの論理ネットワークがサポートされる。
【００８８】
ＶＭがＶＸＬＡＮネットワークのユーザである間、ＶＸＬＡＮカプセル化は、ハイパーバイザー（またはハイパーバイザー上のｖＳｗｉｔｃｈ）であるＶＴＥＰ（ＶＸＬＡＮトンネルエンドポイント）によって行われる。１つのＶＴＥＰ上のＶＭが、同じＶＸＬＡＮネットワークの中であるが異なるＶＴＥＰ上の別のＶＭにイーサネット（登録商標）フレームを送信する場合に、送信元ＶＴＥＰは、外側ヘッダー中の送信元ＩＰとなる送信元ＶＴＥＰのＩＰアドレスとＶＸＬＡＮネットワークのＶＮＩとを使って、物理ネットワークにフレームを投入する前にそのフレームをカプセル化するであろう。宛先ＶＴＥＰはパケットを脱カプセル化して、オリジナルの内側のフレームだけを宛先ＶＭへと転送する。通常のユニキャストフレーム（宛先ＭＡＣは送信元ＶＴＥＰに知られている）のために、宛先ＶＴＥＰのＩＰアドレスは外側の宛先ＩＰとして使われるであろう。ＶＴＥＰは、そのＶＭが接続しているＶＸＬＡＮネットワークのＶＭ  ＭＡＣ−ＶＴＥＰ  ＩＰのマッピングを、一般的にはトラフィック学習またはいくつかの種類の制御プレーンの実装を通じて、保持するべきである。
【００８９】
ＢＵＭトラフィックのために、ＶＸＬＡＮはＩＰマルチキャストを利用する。各ＶＸＬＡＮネットワークは物理マルチキャストグループを割り当てられる。ＢＵＭフレームは、外側の宛先ＩＰであるべきＶＸＬＡＮネットワークのマルチキャストＩＰを使ってカプセル化される。ＶＴＥＰは、一般に、物理ネットワークへのＩＧＭＰリポートを送ることによって、そこのＶＸＬＡＮネットワークのマルチキャストグループに加わるべきである。
【００９０】
いくつかの実施形態のために、図９は、複数のネットワークセグメントを横断してマルチキャスト複製／転送を実行することが可能な物理ネットワーク９００上での、複数の論理ネットワーク（例えばＶＸＬＡＮ論理ネットワーク）の実装を説明する。論理ネットワークは、ホストマシン内のハイパーバイザー上で実行されるＶＭの間のデータ通信のためのものである。これらのハイパーバイザーは物理ネットワーク９００のエンドポイントであり、論理ネットワークのトンネルエンドポイントとして機能する。
【００９１】
物理ネットワーク９００は少なくとも３つのセグメント９１０、９２０、および９３０を有する。セグメント９１０はハイパーバイザー９４１−９４３（ハイパーバイザーＡ、Ｂ、Ｃ）を含む。セグメント９２０はハイパーバイザー９４４−９４６（ハイパーバイザーＤ、Ｅ、Ｆ）を含む。セグメント９３０はハイパーバイザー９４７−９４９（ハイパーバイザーＧ、Ｈ、Ｉ）を含む。ハイパーバイザーＡはＶＭ９１１−９１３を実行し、ハイパーバイザーＢはＶＭ９１４−９１６を実行し、ハイパーバイザーＣはＶＭ９１７−９１９を実行し、ハイパーバイザーＤはＶＭ９２１−９２３を実行し、ハイパーバイザーＥはＶＭ９２４−９２６を実行し、ハイパーバイザーＦはＶＭ９２７−９２９を実行し、ハイパーバイザーＧはＶＭ９３１−９３３を実行し、ハイパーバイザーＨはＶＭ９３４−９３６を実行し、ハイパーバイザーＩはＶＭ９３７−９３９を実行している。
【００９２】
ネットワーク仮想化は、物理ネットワーク９００が同時に複数の論理ネットワーク９０１−９０９をサポートすることを可能にする。ＶＭ９１３、９１４、９１９、９２１、９２３、９２５、９２８、９２９、９３２、９３４、９３５、および９３７は、論理ネットワーク９０１（論理ネットワーク'１'）中にある。ＶＭ９１２、９１６、９１８、９２４、９２７、９３１、および９３８は、論理ネットワーク９０２（論理ネットワーク'２'）中にある。ＶＭ９１１、９１５、９１７、９２２、９２６、９３３、９３６、および９３９は、論理ネットワーク９０９（論理ネットワーク'ｎ'）中にある。論理ネットワーク９０１−９０９のそれぞれは物理ネットワーク９００中のあるマルチキャストグループにマッピングされる。これらのマッピングされたマルチキャストグループのそれぞれは、対応する論理ネットワークのＢＵＭトラフィックを処理するために利用される。
【００９３】
いくつかの実施形態では、ハイパーバイザーは物理ネットワーク９００のエンドポイントである。これらの実施形態のいくつかにおいて、マルチキャストパケットを複製し、転送するタスクを実行するのはそのハイパーバイザーであり、他のハイパーバイザーのための異なるネットワークセグメントの様々なマルチキャストグループ（すなわち論理ネットワーク）のためにプロキシとして動作するのはそのハイパーバイザーである。いくつかの実施形態では、論理ネットワークを確立するためにネットワーク９００のエンドポイントとしてマルチキャストグループに参加するのはまたそのハイパーバイザーである。これらの実施形態のいくつかにおいて、ハイパーバイザーは、中央コントローラエンティティに報告することによってマルチキャストグループに参加し、マルチキャストグループメンバーシップ情報を受け取り、異なるセグメントにマルチキャストパケットを複製し、転送するためにプロキシを選ぶ。いくつかの実施形態では、ハイパーバイザーのＶＭの少なくとも１つが、特定のマルチキャストグループを使う論理ネットワークと接続したい場合には、ハイパーバイザーはその特定のマルチキャストグループに参加する。
【００９４】
論理ネットワーク９０１（論理ネットワーク'１'）に関して、ハイパーバイザーＢが、セグメント９１０のプロキシとしてハイパーバイザーＤによって選ばれ、ハイパーバイザーＤはセグメント９２０のプロキシとしてハイパーバイザーＡによって選ばれ、ハイパーバイザーＨ及びＩはセグメント９３０のプロキシとしてハイパーバイザーＡ及びＤによってそれぞれ選ばれている。論理ネットワーク９０２（論理ネットワーク'２'）に関して、ハイパーバイザーＡはセグメント９１０のプロキシとしてハイパーバイザーＤによって選ばれ、ハイパーバイザーＥはセグメント９２０のプロキシとしてハイパーバイザーＡによって選ばれ、ハイパーバイザーＧ及びＩはセグメント９３０のプロキシとしてハイパーバイザーＡ及びＤによってそれぞれ選ばれている。論理ネットワーク９０９（論理ネットワーク'ｎ'）に関して、ハイパーバイザーＣはセグメント９１０のプロキシとしてハイパーバイザーＤによって選ばれ、ハイパーバイザーＤはセグメント９２０のプロキシとしてハイパーバイザーＡによって選ばれ、ハイパーバイザーＧ及びＨはセグメント９３０のプロキシとしてハイパーバイザーＤ及びＡによってそれぞれ選ばれている。
【００９５】
いくつかの実施形態では、ハイパーバイザーが、異なる論理ネットワークに属している複数のＶＭをサポートすることができることは注目に値する（例えば論理ネットワーク１、２、およびｎ内のＶＭを運営するハイパーバイザーＡなど）。さらに、いくつかの実施形態におけるプロキシ選択プロセスは、ネットワークトラフィック負荷を均衡させる方法でプロキシを指定しようとするであろうが、ハイパーバイザーが、同じマルチキャストグループまたは異なるマルチキャストグループ内の複数のハイパーバイザーのためのプロキシであってよい。
【００９６】
図１０は、物理ネットワークの中のマルチキャストプロキシを使用する論理ネットワークの中のＢＵＭパケットの送信を説明する。この図はＶＭ９１３からの論理ネットワーク９０１上のＶＭ９２５へのブロードキャストパケット１０１０の配信を説明する。図９を参照して上で説明したように、論理ネットワーク９０１（すなわち論理ネットワーク１）は、ネットワークセグメント９１０と９２０とを含む物理ネットワーク９００上に実装される。ＶＭ９１３を実行しているハイパーバイザーＡ（９４１）はネットワークセグメント９１０上にある。ＶＭ９２５を実行しているハイパーバイザーＥ（９４５）はネットワークセグメント９２０上にある。ＶＭ９１３は、ＶＭ９２５を実行しているハイパーバイザーと異なるセグメントの上にあるハイパーバイザーの上で実行されているので、論理ネットワーク９０１は、マルチキャストプロキシを使ってパケット１０１０をその宛先に送信するであろう。図９及び図１０において説明されるように、ハイパーバイザーＡは、論理ネットワーク９０１（そしてその対応するマルチキャストグループ）のためのセグメント９２０内のそのプロキシとしてハイパーバイザーＤ（９４４）を選択している。
【００９７】
図１０は、７つのオペレーションでのＶＭ９１３からＶＭ９２５へのＢＵＭパケットの送信を示す。最初のオペレーション（ラベル'１'）の間に、ＶＭ９１３は論理ネットワーク９０１のすべてのメンバーのためのブロードキャストパケット１０１０を生成する。そのようなブロードキャストパケットの例は論理ネットワークの上の他のＶＭのＭＡＣアドレスのためのＡＲＰ要求である。いくつかの実施形態では、このオリジナルのパケットはＶＭ９１３に割り当てられたＭＡＣアドレスを含む。
【００９８】
２番目のオペレーション（ラベル'２'）の間に、ＶＭハイパーバイザーはカプセル化済みパケット１０２０中にブロードキャストパケット１０１０をカプセル化する。いくつかの実施形態では、このカプセル化は、ハイパーバイザーＡにより付加される論理ネットワークのための識別子を含む。いくつかの実施形態では、ハイパーバイザーＡは、カプセル化済みパケットの一部としてそれ自身のＩＰアドレスも付加する。いくつかの実施形態では、このカプセル化は、図８を参照した上で説明したようにＶＸＬＡＮなどのネットワーク仮想化プロトコルによって指定された形式に包含される。
【００９９】
３番目のオペレーション（ラベル'３'）の間に、ハイパーバイザーＡは、ローカルネットワークセグメント９１０のハイパーバイザー上で動いている他のＶＭに、論理ネットワーク９０１のためにカプセル化したパケットを複製し、転送する。例えば、ハイパーバイザーＢ（９４２）において動いているＶＭ９１４がネットワークセグメント９１０にもあり、それゆえハイパーバイザーＡはハイパーバイザーＢにカプセル化済みパケット１０２０を複製し、転送する。４番目のオペレーション（ラベル'４'）の中で、ハイパーバイザーＢは、パケット１０２０を次々と脱カプセル化して、オリジナルのブロードキャストパケットをＶＭ９１４に配信する。いくつかの実施形態では、ハイパーバイザーＡなどの送信者エンドポイントは、ネットワークセグメント９１０によって提供されたＩＰマルチキャスト能力を利用し、同時に複数の受信者に、ローカルなマルチキャストによってカプセル化済みパケットを複製する。いくつかの実施形態では、マルチキャスト転送が下層の物理ネットワークの中で使用可能でない場合にセグメント内マルチキャスト転送を遂行するために、ハイパーバイザーはユニキャストを使う。
【０１００】
５番目のオペレーション（ラベル'５'）の間に、ハイパーバイザーＡはリモートセグメントにカプセル化済みパケット１０２０を複製し、転送する。特にリモートセグメント９２０のために、ハイパーバイザーＡはパケット１０２０を選ばれたプロキシハイパーバイザーＤ（９４４）に転送する。プロキシハイパーバイザーＤは６番目のオペレーション（ラベル'６'）において、同じマルチキャストグループ（すなわち論理ネットワーク９０１）に属しているセグメント９２０の他のハイパーバイザーに、ハイパーバイザーＡから受信したパケットを次々と複製し、転送する。これらの受信者の１つがハイパーバイザーＥ（９４５）である。いくつかの実施形態では、ハイパーバイザーＤなどのプロキシエンドポイントはネットワークセグメント９１０によって提供されたＩＰマルチキャスト能力を利用して、同時に複数の受信者にローカルなマルチキャストによってカプセル化済みパケットを複製する。いくつかの実施形態では、マルチキャスト転送が下層の物理ネットワークの中で使用可能でない場合には、そのセグメントの中でマルチキャスト転送を遂行するために、プロキシハイパーバイザーはユニキャストを使う。
【０１０１】
７番目のオペレーション（ラベル'７'）の間、ハイパーバイザーＥは、受信したパケットを脱カプセル化し、脱カプセル化済みパケット１０１０をＶＭ９２５に送信する。この例において、プロキシハイパーバイザーＤは、同じ論理ネットワークに属していて、また脱カプセル化済みパケットを受信するであろうそれ自身のＶＭ９２１を有する。しかしいくつかの実施形態では、特定のマルチキャストグループ／論理ネットワークのためのプロキシとして選ばれたエンドポイントはハイパーバイザーではなくともよいか、またはその特定の論理ネットワークの中で動作するＶＭを有していないハイパーバイザーであってもよい。これらの例において、プロキシは受信したマルチキャストトラフィック自身を消費しないであろう。
【０１０２】
Ｖ．電子システム
上述した特徴及び応用の多くは、コンピュータ読取り可能記憶媒体（またコンピュータの読取り可能媒体とも称される）に記録された命令セットとして特定されるソフトウェアプロセスとして実装される。これらの命令が１つ以上の処理装置（例えば１つ以上のプロセッサ、プロセッサのコア、または他の処理装置）によって実行される時に、それらは処理装置に、命令において示されたアクションを実行させる。コンピュータ読取り可能媒体の例は、ＣＤ−ＲＯＭ、フラッシュドライブ、ＲＡＭチップ、ハードドライブ、ＥＰＲＯＭなどを含むけれども、それらに限られない。コンピュータの読取り可能媒体は、無線で通過する、または有線接続上の搬送波および電子信号を含まない。
【０１０３】
この明細書の中で、用語「ソフトウェア」は、読取り専用メモリに常駐するファームウェアまたは磁気記憶装置に記憶されたアプリケーションを含むことを意図している（それはプロセッサによる処理のためにメモリに読まれることができる）。また、いくつかの実施形態において、複数のソフトウェア発明を、別個のソフトウェア発明のままとしながら、より大きなプログラムの一部分として実装できる。いくつかの実施形態では、複数のソフトウェア発明はまた別個のプログラムとして実装されることができる。結局、ここで説明したソフトウェア発明をともに実施する別々のプログラムのいかなる組み合わせも、本発明の範囲の中にある。いくつかの実施形態では、ソフトウェアプログラムは、１つ以上の電子システムで動作するようインストールされたときに、ソフトウェアプログラムの動作を実行し、遂行する１つ以上の特定のマシンの実装を定義する。
【０１０４】
図１１は概念的に、発明のいくつかの実施形態が実装される電子のシステム１１００を説明する。電子のシステム１１００は、上で説明した制御、仮想化、またはオペレーティングシステムのアプリケーションのいずれかでも実行するために使うことができる。電子システム１１００はコンピュータ（例えばデスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータなど）、電話、ＰＤＡ、またはすべての他の種類の電子装置であってもよい。そのような電子システムは、様々なタイプのコンピュータの読取り可能媒体およびさまざまな他のタイプのコンピュータの読取り可能媒体のためのインタフェースを含む。電子システム１１００は、バス１１０５、処理装置１１１０、システムメモリ１１２５、読取り専用メモリ１１３０、パーマネントストレージデバイス１１３５、入力デバイス１１４０、および出力デバイス１１４５を含む。
【０１０５】
バス１１０５は、電子システム１１００の多くの内部の装置を通信可能に接続するすべてのシステム、周辺装置、およびチップセットバスを集合的に表している。例えば、バス１１０５は処理装置１１１０を読取り専用記憶装置１１３０、システムメモリ１１２５、およびパーマネントストレージデバイス１１３５と通信可能に接続する。
【０１０６】
これらの様々な記憶装置から、処理装置１１１０は、発明のプロセスを実行するために、実行すべき命令と処理すべきデータとを検索する。処理装置は異なる実施形態では１つのプロセッサまたはマルチコアプロセッサであってよい。
【０１０７】
読出し専用メモリ（ＲＯＭ）１１３０は、処理装置１１１０および電子システムの他のモジュールに必要な静的なデータと命令を格納する。一方、パーマネントストレージデバイス１１３５は、読み出しおよび書き込みメモリデバイスである。このデバイスは、電子システム１１００がオフであるときにさえ、命令とデータとを記憶する不揮発性メモリユニットである。本発明のいくつかの実施形態はパーマネントストレージデバイス１１３５として（磁気ディスクまたは光ディスクとその対応するディスクドライブなどの）大容量記憶装置を用いる。
【０１０８】
他の実施形態では、パーマネントストレージデバイスとして取外し可能の記憶装置（フロッピーディスク（登録商標）、フラッシュドライブなどの）を用いる。パーマネントストレージデバイス１１３５のように、システムメモリ１１２５は、読み出しおよび書き込みメモリデバイスである。しかし、記憶装置１１３５と違って、システムメモリは、たとえばランダムアクセスメモリのような揮発性の読み出しおよび書き込みメモリである。システムメモリは、実行時にプロセッサに必要な命令とデータのいくつかを記憶する。いくつかの実施形態では、発明のプロセスはシステムメモリ１１２５、パーマネントストレージデバイス１１３５、および／または読取り専用メモリ１１３０中に記憶される。これらの様々な記憶装置から、処理装置１１１０は、いくつかの実施形態のプロセスを実行するために実行すべき命令と処理すべきデータを検索する。
【０１０９】
バス１１０５はまた入力デバイス１１４０と出力装置１１４５とを接続する。入力デバイスにより、ユーザは情報を伝達し、電子システムに対するコマンドを選択することができる。入力デバイス１１４０は、アルファニューメリックキーボードとポインティングデバイス（「カーソル制御デバイス」とも呼ばれる）とを含む。出力デバイス１１４５は、電子システムによって生成された画像を表示する。出力デバイスはプリンタと、陰極線管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）などの表示装置とを含む。いくつかの実施形態では、入力デバイスと出力デバイスの両方として動作するタッチスクリーンなどのデバイスを含む。
【０１１０】
結局、図１１に例示したように、バス１１０５はまた、ネットワークアダプタ（不図示）を通して、電子システム１１００をネットワーク１１６５に結合する。この方法では、コンピュータは、ローカルエリアネットワーク（"ＬＡＮ"）、または広域ネットワーク（"ＷＡＮ"）、またはイントラネット、またはインターネット等のネットワークのネットワークなどといったコンピュータのネットワークの一部であってよい。電子システム１１００のどのような構成用紙またはすべての構成要素でも、本発明と連携して使用され得る。
【０１１１】
いくつかの実施形態は、機械可読またはコンピュータ可読媒体（代わりにコンピュータ可読記憶媒体、機械可読媒体、または機械可読記憶媒体と称される）中にコンピュータプログラム命令を記憶するマイクロプロセッサ、ストレージ、およびメモリなどの電子部品を含む。そのようなコンピュータ可読媒体のいくつかの例は、ＲＡＭ、ＲＯＭ、読取り専用コンパクトディスク（ＣＤ−ＲＯＭ）、記録可能なコンパクトディスク（ＣＤ−Ｒ）、再書き込み可能コンパクトディスク（ＣＤ−ＲＷ）、読取り専用ＤＶＤ（たとえばＤＶＤ  ＲＯＭ、二層ＤＶＤ−ＲＯＭ）、様々な記録可能／再書き込み可能ＤＶＤ（例えばＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷなど）、フラッシュメモリ（例えばＳＤカード、小型ＳＤカード、マイクロＳＤカードなど）、磁気および／またはソリッドステートハードドライブ、読取り専用および記録可能ブルーレイディスク、超高密度光ディスク、その他のあらゆる光または磁気媒体、フロッピーディスク（登録商標）を含む。コンピュータ可読媒体は、少なくとも１つの処理装置によって実行可能であり、様々な動作を実行するための命令セットを含むコンピュータプログラムを記憶できる。コンピュータプログラムまたはコンピュータコードの例は、コンパイラによって作り出されるような機械コードと、インタプリタを用いてコンピュータ、電子部品、またはマイクロプロセッサによって実行されるより高レベルのコードを含むファイルとを含む。
【０１１２】
上記の検討が第一にソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサを参照する一方、いくつかの実施形態では特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの１つ以上の集積回路によって実行される。いくつかの実施形態では、そのような集積回路は、回路自身に記憶された命令を実行する。
【０１１３】
本明細書の中で使われるように、用語「コンピュータ」、「サーバ」、「プロセッサ」、および「メモリ」はすべて電子の、または他の技術的なデバイスを指す。これらの用語は人または人のグループを除く。明細書の目的のために、用語表示または表示することは、電子装置の上で表示することを意味している。本明細書の中で使われるように、用語「コンピュータ読取り可能媒体（単数）」、「コンピュータ読取り可能媒体（複数）」、および「機械可読媒体」は、コンピュータによって読取り可能な形式で情報を記憶する、有形の、物理的な物に完全に限定される。これらの用語は、いかなる無線信号、有線ダウンロード信号、およびすべての他の一時的な信号も除く。
【０１１４】
本発明が多くの特定の細部についてまで説明されたのに対して、当業者は、本発明は、発明の精神からかけ離れずに他の特定の形式に具現化されることができると認めるであろう。さらに、多くの図（図４および図７ａ−７ｂを含める）は概念的にプロセスを説明する。これらのプロセスの特定の動作は、図示し説明した正確な順序で実行されなくともよい。特定の動作は、連続した一連の動作において実行されなくともよく、別の特定のオペレーションが別の実施形態では実行されてもよい。さらに、このプロセスは、いくつかのサブプロセスを用いて、またはより大きなマクロプロセスの部分として実施できる。従って、当業者は、本発明が、前述の説明の詳細によって制限されるべきでないこと、むしろ、添付された特許請求の範囲によって定義されるべきであることを理解するであろう。
【図１】
0005883466.tif 000002
【図２】
0005883466.tif 000003
【図３】
0005883466.tif 000004
【図４】
0005883466.tif 000005
【図５】
0005883466.tif 000006
【図６】
0005883466.tif 000007
【図７ａ】
0005883466.tif 000008
【図７ｂ】
0005883466.tif 000009
【図８】
0005883466.tif 000010
【図９】
0005883466.tif 000011
【図１０】
0005883466.tif 000012
【図１１】
0005883466.tif 000013