(58)【調査した分野】(Int.Cl.,DB名)
受信した前記マルチキャストパケットを前記特定のネットワークセグメント内のエンドポイントへ複製することは、前記パケットをマルチキャストにより転送することを含むことを特徴とする請求項11に記載の方法。
前記マルチキャストグループの少なくとも2つは、前記特定のネットワークセグメント内の指定された別個のマルチキャストプロキシであることを特徴とする請求項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を含める)は概念的にプロセスを説明する。これらのプロセスの特定の動作は、図示し説明した正確な順序で実行されなくともよい。特定の動作は、連続した一連の動作において実行されなくともよく、別の特定のオペレーションが別の実施形態では実行されてもよい。さらに、このプロセスは、いくつかのサブプロセスを用いて、またはより大きなマクロプロセスの部分として実施できる。従って、当業者は、本発明が、前述の説明の詳細によって制限されるべきでないこと、むしろ、添付された特許請求の範囲によって定義されるべきであることを理解するであろう。