以下の説明は、クラウドネットワーク内においてマルチプロトコルラベルスイッチング(“MPLS”)フローエントリを管理するための方法及び装置を説明する。以下の説明では、本発明の、より完全な理解をもたらすために、ロジック実装、オプコード、オペランドを特定する手段、リソースパーティショニング/共有/複製の実装、システムコンポーネントのタイプ及び相互関係、並びにロジックパーティショニング/統合の選択肢といった多数の特定の詳細が明記される。しかしながら、本発明がそうした特定の詳細が無くとも実践され得ることが、当業者により認識されるであろう。他の例では、本発明を不明瞭にすることのないように、制御構造、ゲートレベル回路、及び全体的なソフトウェア命令シーケンスは、詳細には示されていない。当業者は、包含される説明があれば、過度の実験を行うことなく、適切な機能性を実装することができるであろう。
明細書における、“1つの実施形態”、“一実施形態”、“例示的な実施形態”などへの言及は、記載される実施形態が特定の特徴、構造、又は特性を含み得るものの、あらゆる実施形態が当該特定の特徴、構造、又は特性を含むわけでは必ずしもないかもしれないことを示す。その上、そうしたフレーズは、必ずしも同じ実施形態を指しているわけではない。さらに、一実施形態との関係において特定の特徴、構造、又は特性が説明されている場合、明示的に記載されているか否かに関わらず、他の実施形態との関係においてそうした特徴、構造、又は特性を作用させることは、当業者の知識の範囲内であることが思量される。
以下の説明及び特許請求の範囲では、“連結される”及び“接続される”という用語が、その派生語と共に使用され得る。これら用語は互いに対して同義語として意図されないことを理解されるべきである。“連結される”は、互いに物理的に又は電気的に直接接触してもしなくておよい2つ以上の要素が互いに協働し又はインタラクションすることを示すために使用される。“接続される”は、互いに連結される2つ以上の要素間における通信の確立を示すために使用される。
理解を容易にするために、あるアイテムのオプション的な特質(例えば、本発明の所与の実装によりサポートされない特徴、所与の実装によりサポートされるものの、ある状況では使用され他では使用されない特徴)を表明するために、図中で破線が使用されている。
図に示される技法は、1つ以上の電子デバイス上で記憶されて実行されるコード及びデータを使用して実装されることができる。そうした電子デバイスは、非一時的であって有形のマシン読取可能な記憶媒体(例えば、磁気ディスク、光ディスク、読み出し専用メモリ、フラッシュメモリデバイス、相変化メモリ)及び一時的なマシン読取可能な通信媒体(例えば、電気的、光学的、音響的、又は他の形式の伝播信号−例えば、搬送波、赤外線信号、デジタル信号など)を使用して、コード及びデータを記憶し、コード及びデータを(内部的に、及び/又は、他の電子デバイスとの間でネットワーク上で)通信する。加えて、そうした電子デバイスは、典型的には、ストレージデバイス、1つ以上の入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、並びにネットワーク接続といった1つ以上の他のコンポーネントと連結されるプロセッサのセット又は1つ以上のプロセッサを含む。プロセッサのセット及び他のコンポーネントの連結は、典型的には、1つ以上のバス又はブリッジ(バスコントローラとも呼称される)を通じて行われる。ネットワークトラフィックを搬送するストレージデバイス及び信号は、それぞれ、1つ以上の非一時的かつ有形のマシン読取可能な媒体及び一時的なマシン読取可能な通信媒体の代表である。よって、所与の電子デバイスのストレージデバイスは、典型的には、当該電子デバイスの1つ以上のプロセッサのセット上での実行のためにコード及び/又はデータを記憶する。当然ながら、本発明の一実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、及び/又はハードウェアの様々な組み合わせを使用して実装されてよい。
本発明の実施形態において、クラウドコンピューティング施設は、VPCテナントのためのVPNを形成するためにMPLSを使用し、仮想スイッチ及びTORS内でフロールートをプログラミングする。例えば、MPLSスイッチは、2011年2月のOpenFlowスイッチ仕様バージョン1.1.0に記述されているように、OpenFlowでフロールートをプログラミングすることができる。仮想スイッチは、イーサネットMACアドレスを用いて、仮想化されたサーバ上のVMへパケットをルーティングし、個別のMPLSラベルスイッチパス(“LSP”)へとパケットを分類するが、仮想スイッチの後には、イーサネットもIPアドレスもルーティングのために使用されない。代わりに、ルーティングは、IP宛て先アドレス及びMAC宛て先アドレスの双方に基づいて割り当てられるMPLSラベルを用いて厳密に行われる。その処理は、ワイドエリアネットワークにおける仮想プライベートワイヤサービス(“VPWS”)又はレイヤ3VPN(“L3VPN”)に類似しているが同一ではない。“Framework for Layer 2 Virtual Private Networks (L2VPNs)”(IETF(Internet Engineering Task Force),RFC(Request For Comments)4664)はワイドエリアネットワークのためのVPWSを説明しており、一方で“A Framework for Layer 3 Provider-Provisioned Virtual Private Networks (PPVPNs)”(IETF RFC4110)はL3VPNを説明している。
例えば、クラウドネットワークマネージャ(“CNM”)は、OpenFlowを使用するフロールートを、VMが稼働している仮想化されたサーバ上の仮想スイッチ内にインストールすることができる。フロールートは、ルートを指定するMPLSラベルであってTORSと宛て先側の仮想スイッチとの間でテナントに固有な当該MPLSラベル、及びVMを所有するテナントのアイデンティティを指定するラベルと共に、仮想化されたサーバ上のテナントVMからのイーサネットフレームをカプセル化する。パケットは、次いで、ソースVMの仮想化されたサーバのTORSへ転送される。ソースTORSは、次いで、パケットをデータセンタのネットワークファブリック内へルーティングする。クラウドネットワークファブリックがMPLSネットワークである場合、ソースTORSは、ソースTORSと宛て先TORSとの間のルートを特定する他のMPLSラベルをプッシュする。宛て先TORSは、当該MPLSルーティングラベルをポップし、ソース仮想スイッチによりプッシュされたラベルを使用して、パケットを適正な宛て先サーバ及び仮想スイッチへルーティングする。宛て先仮想スイッチは、TORSから仮想スイッチへのラベルをポップし、当該パケットを、宛て先MACアドレスに基づいて正確なVMへと転送する。クラウドスイッチファブリックが光技術といった何らかの他の技術をサポートしている場合、TORSは、適切な適応を実行する。
本発明の実施形態は、多数の利点を提供する。例えば、データプレーン上でIPルーティングを要さず、それにより、コスト、電力使用量、及び、IPルーテッドクラウドネットワークを有する複雑性が除去される。その設計は、高価ではないMPLSスイッチのみを要する。クラウド内のスイッチファブリックは、標準的なイーサネットスイッチ、MPLS対応スイッチ、光回路スイッチであることができ、又は、例えば高キャパシティフローには光スイッチであり他のトラフィックには電気的スイッチといった混成物であってさえよい。スイッチファブリックは、分散されたコンピューティングリソースの間のワイドエリアネットワークですらあり得る。TORSは、カプセル化を適正にハンドリングする。テナントは、(所望であれば)それ自体のIPアドレス空間、及び(所望であれば)DNSサーバを管理することができる。クラウドスイッチファブリック内へのルーティングの詳細は、TORSによってハンドリングされ、そこでスケーラビリティ及びアグリゲーションの適正な混成を達成することができる。
図1は、本発明の1つの実施形態に係るクラウドコンピューティング施設内のコンポーネント群を示している。クラウドコンピューティング施設は、クラウドネットワーク170を通じて連結される複数のラック内に複数の仮想化されたサーバを含む。これら仮想化されたサーバ及びラックのうち、3つのラック100A、100B、及び100Cが例示されている。例示される各ラックは、TORスイッチ(“TORS”)と、複数の仮想化されたサーバとを含む。ラック100Aは、TORS 101Aと、複数の仮想化されたサーバ105A〜105Nとを含む。ラック100Bは、TORS 101Bと、複数の仮想化されたサーバ115A〜115Nとを含む。ラック100Cは、TORS 101C、仮想化されたサーバ125A、及び仮想化されたサーバ125Bを含む。各TORS 100A〜100Cは、当該ラック内において複数の仮想化されたサーバを連結し、クラウドネットワーク170とさらに連結される。クラウドネットワーク170の構造は、任意のタイプのスイッチング又はルーティングプロトコル、例えば、光回線交換ネットワーク、又はOpenFlow MPLSスイッチのネットワークをサポートすることができる。クラウドネットワーク170は、分散されたサーバラックの間で稼働するワイドエリアネットワーク(“WAN”)ですらあり得る。図における接続性は、規範的であることを意図しておらず、クラウドネットワーク170内においてTORSを連結する多くの方式が存在する。図1では、クラウドネットワーク170は、複数のスイッチングエレメント(例えば、スイッチ又はルータ)180A〜180Dを含む。
各TORS100A〜100C、並びに仮想化された各サーバ105A〜105N、115A〜115N、125A及び125Bは、管理ネットワーク175とさらに連結される。管理ネットワーク175は、TORS及び仮想化されたサーバを管理エレメント群と連結する。管理エレメント群は、クラウド実行マネージャ150、仮想ディスク155、及びクラウドネットワークマネージャ160を含む。
クラウド実行マネージャ(“CEM”)150は、実行のためにVMをスケジューリングし、各VMのイメージごとに永久ストレージを提供する仮想ディスク155との間でVMをマッピングするためのオブジェクトマネージャを含む。クラウドネットワークマネージャ(“CNM”)160は、テナントVPCのためのVPNを管理する。
図2は、本発明の1つの実施形態に係るクラウドコンピューティング施設内のコンポーネント群を示している。図2は、1つ以上のフローエントリテーブル212A〜212Zを含むTORS201Aを示している。フローエントリテーブル212A〜212Zは、OpenFlowへの参照によって説明される通り、MPLSラベルをMPLSアクションにマッチさせるために使用される。TORS201Aは、1つ以上の仮想化されたサーバ215A〜215Nと連結される。
仮想化された各サーバ215A〜215Nは、1つ以上のVMを実行するように構成される。図2において、仮想化されたサーバ215Aは、VM(例えば、VM Tl及びVM T2)の実行をスケジューリングするハイパーバイザ216Aを含む。仮想化されたサーバ215Aは、仮想スイッチ217Aをさらに含む。仮想スイッチ217Aは、ハイパーバイザの制御下において実行するVMへの仮想ネットワークポートを提供する。仮想スイッチ217Aは、OpenFlowへの参照によって説明される通り、MPLSラベルをMPLSアクションにマッチさせるために使用される1つ以上のフローエントリテーブル218A〜218Zを含む、MPLS対応型スイッチである。
TORS201Aは、図1に記載されているクラウドネットワークといったクラウドネットワーク270と連結される。TORS201Aは、管理ネットワーク275とさらに連結される。図2におけるように、管理ネットワーク275は、TORS及び仮想化されたサーバを、CEM250、仮想ディスク255、及びCNM260といった管理エレメントと連結する。CNM260は、アドレスマッピングテーブル262及びラベルマッピングテーブル264を含む、VPNを記述するテーブル群を含む。アドレスマッピングテーブル262は、VMのMACアドレス、VMを稼働させている仮想化されたサーバのMACアドレス(これは、仮想スイッチ217AのMACアドレスである)、及びVMのIPアドレス間で、マッピングを行う。ラベルマッピングテーブル264は、仮想化されたサーバ215AのMACアドレス(これは、仮想スイッチ217AのMACアドレスである)を、仮想スイッチ217AとTORS201Aとの間のリンクについてのTORSリンクラベルにマッピングする。他の実施形態において、CNM260は、どの“DHCP(Dynamic Host Configuration Protocol)”及び“DNS(Domain Name Service)”サーバ(もしあれば)がどのテナントに属しているのかをトラッキングする。
1つの実施形態において、CNMは、テナントVMがそれらのIPスタックをいかに構成するかに関して良好に振る舞い、それらのIP/MACアドレスは任意に変更されないものと想定する。テナントVMの振る舞いが悪く、そうした変更を行う場合、そのパケットはCNMへルーティングされ、CNMは、CEMへの通知を行うであろう。すると、CEMは、違反するVMをシャットダウンすることができる。
図3は、本発明の1つの実施形態に従って仮想マシンをアクティブ化するための方法のブロック図を示している。ブロック300において、CNMは、VMが、仮想化されたサーバ上でアクティブ化のためにスケジューリングされるという通知を受信する。例えば、CEMは、CEMがアクティブ化のためにVMをスケジューリングしたことをCNMへ通知する。CNMは、ブロック310において、VMのMACアドレス及びテナント識別子を判定する。1つの実施形態において、CEMは、CNMへVMのMACアドレス及びテナント識別子を上記通知と共に提供し、その一方で、他の実施形態では、CEMは、CNMへ別々のメッセージにおいてVMのMACアドレス及びテナント識別子を提供する。ブロック315において、CNMは、VMがアクティブ化されるであろう仮想サーバ上に所在する仮想スイッチに対応する、仮想スイッチのMACアドレスを判定する。ブロック320において、CNMは、CNMのアドレスマッピングテーブル内に、テナント識別子、VMのMACアドレス及び仮想スイッチのMACアドレスの間の関連付けを記録する。CNMは、ブロック325において、仮想スイッチを当該仮想スイッチと連結されるTORSに関連付けるMPLSラベルをさらに判定する。ブロック330において、CNM330は、MPLSラベル、テナント識別子及びVMのMACアドレスに適合するデータパケットが2つのMPLSラベルをポップした後にVMへ転送されるべきであることを示すフローエントリ修正メッセージを、仮想スイッチへ送信する。1つの実施形態において、CNMは、ブロック332において、VMから発せられるDHCPリクエストがCNMへ転送されるべきであることを示すフローエントリ修正メッセージを仮想スイッチへ送信する。他の実施形態において、CNMは、ブロック333において、VMから発せられるアドレス解決プロトコル(“ARP”)リクエストがCNMへ転送されるべきであることを示すフローエントリ修正メッセージを仮想スイッチへ送信する。
図4は、本発明の1つの実施形態に従って仮想マシンをアクティブ化するための方法を示している。図4において、TORS401Aは、仮想化されたサーバ415Aと連結される。仮想化されたサーバ415Aは、ハイパーバイザ416A及び仮想スイッチ417Aを含む。図4において、仮想化されたサーバ415Aは、2つのアクティブなVM Tl 490A及びVM T2 490Bを有する。さらに、図4は、CEM450、仮想ディスク455、及びCNM460を示す。
図4において、CEM450は、仮想化されたサーバ415A上での実行のために、第3のVM T3 490Cをスケジューリングしている。この図は、仮想マシンのアクティブ化の期間中における様々なポイントを描いている。ポイントAにおいて、CEM450は、VM T3 490C、例えば、テナント3に属するVMを、実行のためにスケジューリングする。オブジェクトファイルは、仮想ディスク455からCEMのオブジェクトマネージャを通じてマッピングされる。CEMは、テナント3に割り当てられたMACアドレスのうちの1つにVM490Cの MACアドレスを設定するように、VM490Cのスタックを編集する。ポイントBにおいて、CEM450は、CNM460へアクティブ化を通知する。CEM450は、VM490CのMACアドレスと、当該VMを実行する仮想化されたサーバ415AのMACアドレス(これは、仮想化されたサーバ415Aの仮想スイッチ417AのMACアドレスである)と、そのテナントの識別子とを、CNM460へ提供する。
ポイントCにおいて、CNM460は、CNMのアドレスマッピングテーブル(図示せず)内に、テナント識別子とVM490CのMACアドレスとを、スケジューリングがなされた仮想化されたサーバ415AのMACアドレスと共に記録する。ポイントDにおいて、CNM460は、VM490Cが稼働している仮想化されたサーバ415AとTORS401Aとの間のリンクについての、仮想スイッチ−TORS401AのMPLSラベル(これは、ソースTORS“STORS”リンクラベルとしても知られている)と、テナントラベルとを、CNM460のラベルマッピングテーブルからルックアップする。ポイントEにおいて、CNM460は、テナントラベルとVM490CのMACとSTORSリンクラベルとを、当該STORSリンクラベル及び当該テナントラベルをポップしてパケットをVM490Cへ転送するアクションにマッチさせるルールをインストールするためのフローエントリ修正メッセージを、MPLS対応型仮想スイッチ217Aへ送信する。
1つの実施形態において、CNM460は、ポイントFにおいて、以下のルールをインストールするために、第2のフローエントリ修正メッセージを仮想スイッチ217Aへ送信する。ソースMACがVM490CについてのMACアドレスに適合し、且つ、プロトコルがARPである場合、パケットをCNM460へルーティングして、CNM460がARPリクエストにサービスすることを可能とする。このルールは、ARPトラフィックを削減し、CNM460がCNMアドレスマッピングテーブルから回答することを可能とする。
他の実施形態において、CNM460は、ポイントGにおいて、以下のルールをインストールするために、第3のフローエントリ修正メッセージを仮想スイッチ217Aへ送信する。ソースMACがVM490CについてのMACアドレスに適合し、且つ、プロトコルがDHCPである場合、パケットをCNM460へルーティングして、CNM460がDHCPリクエストにサービスすることを可能とする。このルールは、CNM460が、DHCPサーバからの応答パケットを傍受することにより、CNMアドレスマッピングテーブル内に、MACアドレスからIPアドレスへのマッピングを記録することを可能とする。テナントがIPアドレスを取得するためにDHCPを使用する場合、このステップを要する。
図4は、これまでに説明した全ての3つのフローエントリ修正メッセージが通信されたということを前提として、仮想スイッチ417Aのフローエントリテーブル418A内の3つのエントリを例示する。フローエントリテーブル418Aには、5つの列、即ち、ソースMAC、宛て先MAC、MPLSラベル、IPプロトコル、及びアクション、が例示されている。フローエントリは、490Cのアクティブ化に対応する。
図示したフローエントリテーブル418A内の第1のエントリは、ソースMACアドレスとしてVM T3 490CのMACアドレスに適合する。宛て先MACアドレス及びMPLSラベルは、いかなるエントリにも適合するように設定され、その一方で、IPプロトコルは、ARPプロトコルに適合するように設定される。アクションは、次いで、CNM460へ転送することである。このルールは、上記のステップFに対応する。
図示したフローエントリテーブル418A内の第2のエントリは、ソースMACアドレスとしてVM T3 490CのMACアドレスに適合する。宛て先MACアドレス及びMPLSラベルは、いかなるエントリにも適合するように設定され、その一方で、IPプロトコルは、DHCPプロトコルに適合するように設定される。アクションは、次いで、CNM460へ転送することである。このルールは、上記のステップGに対応する。
図示したフローエントリテーブル418A内の第3のエントリは、宛て先MACアドレスとして全てのMACに適合する。宛て先MACアドレスは、VM T3 490CのMACアドレスに適合するように設定され、その一方で、MPLSラベルは、VS−TORS401のリンクラベルに設定され、その他はテナントラベルに設定される。IPプロトコルは、全てのエントリに適合するように設定される。アクションは、次いで、MPLSラベルをポップしてパケットをVM T3 490Cへ転送することである。このルールは、上記のステップEに対応する。
上で説明したように、CNMは、VM MACアドレス、仮想化されたサーバのMAC、及びVM IPアドレスの間のマッピングを維持する。テナントがDHCPアドレスを使用しないことを選んだ場合、CEMは、スケジューリングの実行に先立ってVMのIPスタックを修正し、静的なIPアドレスをインストールする。しかしながら、他の実施形態において、テナントは、DHCPアドレスを使用することを選ぶであろう。そうしたケースにおいて、CNMは、“DHCP Relay Agent Information Option”(IETF,RFC3046、2001年1月)に従って、DHCPリクエストを傍受してリレーとして動作するであろう。
図5は、本発明の1つの実施形態に従ってVMからのDHCPリクエストを傍受するための方法のブロック図を示している。ブロック500において、CNMは、VMから発せられたDHCPリクエストを受信する。CNMは、ブロック505において、RFC3046に従って、DHCPリクエストをDHCPサーバへ中継する。ブロック510において、CNMは、DHCPサーバからDHCPリプライを受信する。ブロック515において、CNMは、アドレスマッピングテーブル内に、VMのMACアドレスとDHCPリプライ内で受信されたIPアドレスとの間の関連付けを記録する。本発明の実施形態によれば、当該関連付けは、VMを実行する仮想サーバのMACアドレスをさらに含む。ブロック520において、CNMは、DHCPリプライをVMへ転送する。
図6は、本発明の1つの実施形態に従って仮想マシンからのDHCPリクエストを傍受するための方法を示している。図6において、仮想化されたサーバ615Aは、ハイパーバイザ616A及び仮想スイッチ617Aを含む。図6において、仮想化されたサーバ615Aは、3つのアクティブなVM Tl 690A、VM T2 690B、及びVM T3 690Cを有する。仮想スイッチ617Aは、VM T3 690CからのDHCPリクエストを、DHCPサーバ630に連結されるCNM 660へ転送するためのルールを含むフローエントリテーブル618Aを含む。
この図は、仮想マシンからのDHCPリクエストの傍受の期間中における、様々なポイントを描いている。ポイントAにおいて、VM T3 690Cは、IPアドレス、及び、DNSサーバといった他の構成情報を取得するためのDHCPリクエストを発行する。ポイントBにおいて、仮想スイッチ617Aは、DHCPリクエストを、当該リクエストをCNM260へルーティングするためのフロールールに照合する。ポイントCにおいて、CNM260は、DHCPリレーとして動作し、標準的なDHCPリレーオプションを挿入し、リクエストをテナントのDHCPサーバ630へ転送する。CNM660は、DHCPリクエストのソースMACアドレスを調査することにより、どのテナントにVM T3 690Cが属しているのかを判定することができる。ポイントDにおいて、テナントのDHCPサーバ630は、VM T3 690CについてのIPアドレス及び他の構成情報を包含するDHCPリプライで応答する。ポイントEにおいて、CNM660は、CNMのアドレスマッピングテーブル262内に、VM T3 690CのMACアドレスとIPアドレスとの間のマッピングを記録する。ポイントFにおいて、CNM660は、DHCPリレーオプションを取り除き、DHCPリプライを仮想スイッチ617Aへ転送し、仮想スイッチ617Aは、ポイントGにおいて、当該リクエストをVM T3 690Cへ返送する。
典型的なIP LANのシナリオにおいて、宛て先アプリケーションと通信することを望む、サーバ内で稼働するソースアプリケーションは、DNSを使用して、宛て先アプリケーションのIPアドレスを発見する。IPアドレスが見つかった後に、ソースサーバ内のIPスタックは、宛て先のIPアドレスとMACアドレスとの間のマッピングを発見するためにARPメッセージをブロードキャストする。宛て先は、ローカルLAN上に存在する場合、ARPに応答する。宛て先がローカルLAN上で稼働していない場合、ソースサーバのIPスタックは、ローカルルータのMACアドレスを、他のサブネットへのゲートウェイとして使用する。
クラウド内において、VMは、仮想化されたLANの最上位で稼働する。テナントは、それ自体のDNSサーバを稼働させるか、又は、クラウド事業者からDNSサービスを購入する。VMは、当該VMが使用することになるDNSサーバのアドレスと共に構成される。テナントは、サービスにコンタクトすることを望む場合、ちょうど正規の法人LAN内におけるように、IPアドレスを発見するためのDNSリクエストをDNSサーバへ送信する。DNSサーバは、クラウド事業者の制御下にあるか、又は、個々のテナントにより制御されることが可能である。DNSリプライが返ってきた場合、VMは、IPからMACアドレスへのマッピングを判定するためのARPリクエストをブロードキャストする。
本発明の実施形態において、仮想スイッチは、ARPメッセージを傍受して、それをブロードキャストするよりもむしろ、CNMへ中継する。CNMは、ARPメッセージがクラウドネットワークの全体にわたってブロードキャストされる必要がないように、アドレスマッピングサービスを提供する。
図7は、本発明の1つの実施形態に従ってVMからのARPリクエストを傍受するための方法のブロック図を示している。ブロック700において、CNMは、VMから発せられたARPリクエストを受信する。CNMは、ブロック705において、ARPリクエストから宛て先IPアドレスを判定する。ブロック710において、CNMは、IPアドレスに対応する、宛て先VM MACアドレス及び宛て先仮想スイッチMACアドレスを判定する。例えば、CNMは、ARPリクエスト内のIPアドレスに基づいて、CNMのアドレスマッピングテーブルからマッピングをルックアップすることができる。ブロック715において、CNMは、宛て先仮想スイッチMACアドレスに対応する宛て先MPLSラベルを判定する。ブロック720において、CNMは、ソースVMを実行している仮想サーバ上の仮想スイッチへフローエントリ修正メッセージを送信する。当該エントリ修正メッセージは、ソースVM MACアドレス及び宛て先VM IPアドレスに適合するパケットに、まずテナントidラベルがプッシュされ、次に宛て先MPLSラベルがプッシュされ、そして当該パケットがソース仮想スイッチについてのTORSへと転送されるべきであることを示す。ブロック725において、CNMは、宛て先VM MACアドレスが宛て先IPアドレスに対応していることを示すARPリプライを生成する。CNMは、ブロック730において、ARPリプライをソースVMへ転送する。なお、宛て先VMがパケットのソースであることから、CNMは、厳密に同じルールを、宛て先VMのMACアドレス及びソースVMのIPアドレスと共に、宛て先VS内にインストールする。
図8は、本発明の1つの実施形態に従って仮想マシンからのARPリクエストを傍受するための方法を示している。図8において、仮想化されたサーバ815Aは、ハイパーバイザ816A及び仮想スイッチ817Aを含む。図8において、仮想化されたサーバ815Aは、アクティブなVM T3 890Cを有する。仮想スイッチ817Aは、VM T3 890CからのARPリクエストをCNM860へ転送するためのルールを含むフローエントリテーブル818Aを含む。仮想化されたサーバ816Aは、TORS801と連結され、TORS801は、クラウドネットワーク870を通じて他のTORS801Cへ連結される。TORS801Cは、ハイパーバイザ826B及び仮想スイッチ827Bを含む、仮想化されたサーバ825Bと連結される。仮想化されたサーバ825Bは、VM T4 895Bを実行している。
この図は、VM T3 890CからのARPリクエストの傍受の期間中における、様々なポイントを描いている。ポイントAにおいて、VM T3 890Cは、ARPリクエストをブロードキャストする。傍受の残りの部分は、ARPリクエストが、仮想サーバ825B上に所在する宛て先VM T4 895BのIPアドレスを示すことを前提とする。仮想スイッチ817Aは、ポイントBにおいて、ARPリクエストを傍受して、当該リクエストを、フローエントリテーブル818A内の、ARPリクエストをCNM260へルーティングするためのルールと照合する。
ポイントCにおいて、CNM860は、要求された宛て先IPアドレス(“DIP”)をキーとして使用して、CNMのアドレスマッピングテーブル262内で宛て先MACアドレス(“DMAC”)をルックアップする。DIPが存在しない場合、その宛て先は、クラウド内に存在せず、CNMは、ARPリクエストに応答しない。その場合、VMは、提供されたローカルルータのMACアドレスを使用することになる。DIPアドレスがCNMのアドレスマッピングテーブル862内に存在する場合、CNM860は、DMAC VMアドレス及びDMAC仮想化されたサーバアドレスを取り出す。このケースにおいて、CNMは、VM T4 895BのMACをDMAC VMアドレスとして、及び、仮想スイッチ827B MACをDMAC仮想化されたサーバアドレスとして取り出すであろう。
ポイントDにおいて、CNMは、宛て先TORS(“DTORS”)リンクラベルとしても知られる、CNMのラベルマッピングテーブル864からの、宛て先TORSと、DMAC仮想化されたサーバアドレスとの間のリンクについてのMPLSフローラベルをルックアップする。このフローラベルは、TORS801Aと、DMAC仮想化されたサーバでの仮想化されたサーバとの間のルートを記述する。このケースでは、TORS801AからTORS801Cへのルートを示すために、ラベルTORS:VS201C:827B LLが取り出されるであろう。
ポイントEにおいて、CNM860は、仮想スイッチの817Aのフローエントリテーブル818A内にフロールートをインストールする。ルールは、VM T4 895BについてのDMAC VM アドレスに適合する。アクションは、VM T3 890CによりVM T4 895Bへ送信されるトラフィックパケット上にDTORSリンクラベルTORS:VS801C:827B LLをプッシュし、次いで、当該パケットをTORS801Aへ転送する。ポイントFにおいて、CNM860は、ARPリプライを仮想スイッチ817Aに返し、仮想スイッチ817Aは、当該リプライをVM T3 890Cへ転送する。
1つの実施形態において、CNM860は、VMへのARPリプライの返却に先立って、VS−TORSルール及びアクションを、TORS801のフローエントリテーブル(図示せず)内にインストールする。クラウドネットワーク870がMPLSネットワークである場合、ARPリプライが返されたときには、クラウドネットワーク870のスイッチファブリック内のTORS間のLSPについてのルールは、インストールされる必要がない。クラウドネットワーク870のスイッチが追加的にOpenFlowをサポートする場合、CNM860は、新たなTORSがインストールされるか、又は既存のTORSがデコミッションされた時にOpenFlowを使用する、より高レベルのクラウドネットワーク870のスイッチ内に、MPLS転送ルールをインストールするだけでよい。それらルールは、TORSと同じラック内のサーバへのリンク上のTORS−VSラベルを認識し、ラベルにより識別されるリンクを有するパケットをサーバへと転送する。それらルールは、ラックがブートアップされる際に、OpenFlowテーブル2へとインストールされる。しかしながら、より高レベルのデータセンタスイッチがOpenFlowをサポートしない場合、TORSは、その代りにLDP(label distribution protocol)を使用して、自身と他のTORSとの間のLSPをセットアップし、そうするとLSPが構成されるはずである。クラウドネットワーク870のスイッチは、IPルーティングプロトコルをサポートする必要も、ルーティングを実行する必要もない。
テーブル1は、本発明の実施形態に係る、宛て先TORSへルーティング中のトラフィック、即ちアウトゴーイングトラフィック及びカレントラック内に宛て先サーバがあるトラフィック、を扱うフローテーブルの一部について、TORSのOpenFlowフローテーブルのルール構造を示している。インカミングトラフィックについてのルール構造は、後でさらに解説される。ラック内のソースVMにより宛て先としてその時点で使用されている、DTORS(宛て先TORS)−DVS(宛て先の仮想化されたサーバ)リンクラベルの各々について、テーブル内にフロールールが存在する。TORSは、VMの移動時にインカミングトラフィックを捕捉するためのいくつかのフロールールを追加的にキャッシュしてもよい。ラック内のソースVMから来るトラフィックは、仮想スイッチによりプッシュされたMPLS DTORSリンクラベルに適合することによりルーティングされ、当該ルールに関連付けられるアクションがアクティブ化されてパケットに適用される。アクションは、クラウドネットワークの性質に依存して異なる。
クラウドネットワークがMPLSネットワークではない場合、TORSは、OpenFlow仮想ポートを通じて、トラフィックをクラウドネットワークに適応させる。フローマッチングルール上のアクションに関連付けられる仮想ポートは、パケットを処理し、当該パケットをクラウドネットワーク内へルーティングするために必要な何らかのヘッダを追加する。例えば、ネットワークが光回線交換ネットワークである場合、仮想ポートは、光クロスコネクトを通じてパケットをルーティングしてもよい。当業者は、他のタイプのクラウドネットワークは他の適応仮想ポートを利用することになると理解するであろう。
しかしながら、クラウドネットワークがMPLSネットワークである場合、(OpenFlowテーブル1に対応する)テーブル2において、例示的なアクションが示されている。各アクションは、STORSからDTORSへのルーティングラベルをプッシュし、次いでパケットをOpenFlow SELECTグループへ送信する。SELECTグループは、等コストマルチキャスト(ECMP)又は何らかの他の負荷分散アルゴリズムを使用して、出力ポートバケットリストから1つの出力ポートバケットを選択し、パケットを出力ポートへ転送する。負荷分散は、輻輳を回避することを助け、2つのTORS間の全てのルートのマルチパス利用を促進する。
パケットは、宛て先TORSへ一旦到着すると、(OpenFlowテーブル1に対応する)テーブル3及び(OpenFlowテーブル2に対応する)テーブル4に示されるようなOpenFlowフローテーブルを通じてルーティングされる。パケットが宛て先TORSにおいて“LABEL−N”というラベルを有するものと想定すると、ルールは、パケットがこのTORS宛てであることを示すDTORSルーティングラベル“LABEL−N”に適合する。アクションは、DTORSルーティングラベルをポップし、処理のためにパケットをテーブル4へ送出する。テーブル4のルールは、パケットがどの仮想化されたサーバ宛てであるのかを示す、ラック内のサーバについてのVS−TORSラベルに適合する。アクションは、パケットを、当該仮想化されたサーバに到達するための適切なポートから転送する。
仮想スイッチ827Bにおいて、VM T4 827Bの MACアドレスと、テナントラベルと、VS−TORSルーティングラベルとに適合するルールがトリガされる。VS−TORSルーティングラベル及びテナントラベルはポップされ、パケットは、VM T4 827Bへ転送される。
クラウドネットワーキングの最も困難な局面のうちの1つは、VMの、第1の仮想化されたサーバから第2の仮想化されたサーバへの移動を扱うことである。CEMは、VMを1つのサーバから他のサーバへといつでも移動させることができる。移動は、サーバ利用率を最適化するため、電力消費若しくは発熱を低減するため、又は、データベースといった外部リソースへのアクセスへより近いアクセスを有するようにVMを位置させるために、行われ得る。そうした移動が生じる場合、古いサーバにおけるVMへのルートは、もはや有効ではない。VMを移動させている間の“転送中(in flight)”のパケットは、破棄される恐れがあり、新たなパケットは、ルートを整備する方策が取られない限り、VMの新たなロケーションへ到達しないかもしれない。
図9は、クラウドコンピューティングネットワーク内において第1の仮想化されたサーバから第2の仮想化されたサーバへとVMを移動させる方法を示している。図9において、第1の仮想化されたサーバ915A(古い仮想化されたサーバとも称される)は、クラウドネットワーク970へ連結されるTORS901Aと連結される。クラウドネットワーク970は、TORS901Aを他のTORS901Cと連結し、TORS901Cは、第2の仮想化されたサーバ925A(新たな仮想化されたサーバとも称される)へ連結される。
各仮想化されたサーバ915A及び925Aは、複数のVMを稼働させ、対応するハイパーバイザ916A及び926A、並びにMPLS対応型仮想スイッチ917A及び927Aを含む、ように構成される。各仮想スイッチ917A及び927Aは、対応する仮想スイッチがそれ自体が受信するパケットをいかに処理すべきかを示すためのMPLSルール群を含むフローエントリテーブル918A及び928Aを含む。VMの移動のために使用される固有のエントリについて、以下に詳細に議論する。図9の例示に先立ち、古い仮想化されたサーバ915Aは、3つのアクティブなVM、即ち、VM Tl 990A、VM T2 990B、及びVM T3 990Cを有する。図9は、管理ネットワーク975を通じてCNM960と連結されるCEM950をさらに例示する。管理ネットワークは、CEM950及びCNM960をTORS915A及び925Aとさらに連結し、それにより、仮想化されたサーバ915A及び925Aへの通信パスを提供する。
この図は、古い仮想化されたサーバ915Aから新たな仮想化されたサーバ925Aへの、VM T3 990Cの移動の期間中における様々なポイントを描いている。古い仮想化されたサーバ及び新たな仮想化されたサーバという用語は、移動に先立ってVM T3 990Cが古い仮想化されたサーバにおいてアクティブであったこと、及び、移動の後にVM T3 990Cが新たな仮想化されたサーバ925Aにおいてアクティブになるであろうことを反映している。
ポイントAにおいて、CEM950は、古い仮想化されたサーバ915Aから新たな仮想化されたサーバ925AへのVM T3 990Cの移動を開始させる。ポイントAにおいて、CEM950から古い仮想化されたサーバ915Aへ送信されているメッセージは、9 T3 990Cの移動が開始されようとしていることを示す。VM T3 990Cが古い仮想化されたサーバ915A上においてアクティブである限り、VM T3 990Cは、トラフィックに引き続きサービスすることができ、フローエントリテーブル918A内では古いフロールールが維持される。ハイパーバイザ916Aは、VM T3 990Cのステート情報を保存すること、及び、VM T3 990Cがスタンバイステート又は非アクティブステートに入るように指示することにより、VM T3 990Cが新たな仮想化されたサーバ925Aへ移行するように準備する。ポイントBにおいて、VM T3 990Cのステート情報は、古い仮想化されたサーバ915Aから新たな仮想化されたサーバ925Aへ移行される。
VM T3 990Cの非アクティブ化の期間中における何らかのポイント、ポイントCにおいて、CEM950は、VM T3 990Cがトラフィックにもはやサービスできないことを決定する。この時、CEM950は、VM T3 990Cが移動されているが故にその時点でトラフィックにサービスできないことを、CNM960へ通知する。このメッセージに反応して、CNM960は、仮想スイッチ917Aのフローエントリテーブル918A内のルールを修正する。よって、ポイントDにおいて、CNM960は、宛て先MACとしてのVM T3 990CのMACアドレスに適合し、仮想化されたサーバ915AをTORS901AとリンクするMPLSラベルを伴うトラフィックが、CNM960へ(又は何らかの他のエンティティへ)転送されるべきであることを示すルールをフローエントリテーブル918A内にインストールする。CNM960、又はオプションとして何らかの他のエンティティは、VM T3 990Cへ向けての古い仮想化されたサーバ915Aへ方向付けられたトラフィックをいかに扱うべきかを、知能部(intelligence)へ提供するであろう。
1つの実施形態において、CNM960、又は、この目的のために設計された何らかの他のエンティティは、移行ピリオドの期間中にVM T3 990C向けのパケットを記憶するために使用されるパケットバッファ966を含む。このようにして、パケットバッファ966内の、VM T3 990向けのパケットは、VM T3 990が新たな仮想化されたサーバ925Aにおいて一旦アクティブになると、VM T3 990へ送信されることが可能である。
1つの実施形態において、VM T3 990が、新たな仮想化されたサーバ925Aにおいてデータにサービスする準備が整うと、CEM950は、ポイントEにおいて、VM T3 990が再度アクティブになったことをCNM960へ通知する。他の実施形態において、CNM960は、VM T3 990が再度アクティブ化された後にVM T3 990から発せられる(ARPリクエストなどの)パケットを当該CNM960が受信したが故に、VM T3 990がアクティブになっていることを検出することができる。CNM960は、フローエントリテーブル928Aを修正することにより、VM T3 990がデータにサービスする準備が整っていることに反応する。
ポイントFにおいて、CNM960は、1つ以上のエントリをフローエントリテーブル928Aに追加する。CNM960は、宛て先MACとしてのVM T3 990CのMACアドレスに適合すると共に、仮想化されたサーバ925AをTORS901CとリンクするMPLSラベル、及びテナントidラベルに適合するフロールールを、フローエントリテーブル928Aに追加する。このルールは、適合するパケットが双方のMPLSラベルをポップされてVM T3 990Cへ転送されるべきであることを、仮想スイッチ927Aへ知らせる。本発明の他の実施形態は、追加的なルールをサポートする。例えば、1つの実施形態は、テナントがそのIPアドレスを取得するためにDHCPを使用する場合に、VM T3 990Cから発せられるDHCPパケットがCNM960へ転送されるべきであることを示すルールを追加する。他の実施形態は、VM T3 990Cから発せられるARPリクエストがCNM960へ転送されるべきであることを示すルールを追加する。
ポイントGにおいて、CNM960(又は、古い仮想化されたサーバから新たな仮想化されたサーバへのVMの移行の期間中にパケットをバッファリングするように設計された何らかの他のエンティティ)は、VM T3 990C宛ての累積されたパケットを、仮想化されたサーバ925Aへ転送し、それにより、それらパケットはVM T3 990Cへデリバリされ得る。
ポイントHにおいて、CNM960は、CNM960のアドレスマッピングテーブルを修正して、VM T3 990Cについての仮想化されたサーバのMACアドレスのエントリを、宛て先である新たな仮想化されたサーバ925のMACアドレスへと変更する。それら変更の後に、図7に従ったVM T3 990Cについてのいかなる新たなARPリクエストも、ソース仮想スイッチでのフローエントリにて、トラフィックが925Aへとルーティングされるべきであることを示す結果となる。
1つの実施形態において、CNM960は、VM T3 990Cとの間でトラフィックを依然として交換しているかもしれない任意のピアVMのために、古い仮想化されたサーバ915Aの仮想スイッチ917A上の所定の位置にフロールールを保持しており、なぜなら、それらピアVMは古い仮想化されたサーバ915A上でVM T3 990Cがアクティブであることを依然として期待するかもしれないためである。そうしたピアVMがピアデータパケットをVM T3 990Cへ送信することになる場合、当該ピアデータパケットは、ポイントDにおいてインストールされたルールに従って、CNM960へ転送されるであろう。CNM960は、次いで、ピアVMの仮想化されたサーバ上におけるフロールールを、パケット上のMAC及びIPアドレスを使用してVM T3 990Cの位置を特定することで新たな仮想化されたサーバ925A上のVM T3 990Cへトラフィックを転送するように修正する。CNM960は、ピアデータパケットを、新たな仮想化されたサーバ925A上のVM T3 990Cへ転送する。このようにして、全てのフロールールは、究極的には、タイムアウトになるか、又は、新たな仮想化されたサーバ925A上のVM T3 990Cへトラフィックを送信するように修正されるか、のいずれかである。1つの実施形態では、TORSフローテーブルは、古いTORS−VSリンクラベルを除去して新たなVSへのTORS−VSリンクラベルをインストールするための変更をも要し得る。CNMは、ソース仮想スイッチのフロールール及びTORSルールが予め定義されたグレースピリオドの後にタイムアウトになることを可能とすることができる。
図10は、本発明の実施形態に係る例示的なコンピュータシステムのブロック図を示している。図10の例示的なコンピュータシステム1000は、図1〜9及び11〜22において説明したようなTORS、仮想化されたサーバ、CEM又はCNMを実装するために使用されることが可能である。当業者は、これらデバイスを実装するために使用される他のコンピュータシステムが、より多くの又はより少ないコンポーネントを有してよいこと、及び、本発明の実施形態において使用されてよいことを認識するであろう。
コンピュータシステム1000は、処理システム1015、電源1020、揮発性メモリ1025(例えば、ダブルデータレートランダムアクセスメモリ(DDR−RAM)、シングルデータレート(SDR)RAM)、不揮発性メモリ1030(例えば、ハードドライブ、フラッシュメモリ、相変化メモリ(PCM)と連結されるバス1050を含む。処理システム1015は、処理システムキャッシュ1010へさらに連結され得る。処理システム1015は、揮発性メモリ1025及び/又は不揮発性メモリ1030から命令を取り出して、当該命令を実行して上記の動作を実行し得る。バス1050は、上記のコンポーネントを共に連結し、ディスプレイコントローラ1070、1つ以上の入力/出力デバイス1080(例えば、ネットワークインタフェースカード、カーソルコントロール(例えば、マウス、トラックボール、タッチスクリーン、タッチパッドなど)、キーボードなど)、及びオプションとして1つ以上の無線送受信機(例えば、ブルートゥース、WiFi、赤外線など)をさらに連結する。1つの実施形態において、ディスプレイコントローラ1070は、ディスプレイデバイス1075へさらに連結される。
さらなる実施形態において、CNMは、テナントidと、TORSラベルと、VM及びサーバのMAC及びIPアドレスとの間のマッピングを維持するために使用する追加的なデータベースを有する。CNMは、それらデータベースを使用して、テナントVMの間で送信されるパケットへ付与されるテナント固有ラベルを生成する。それらデータベースへのアクセスは、OpenFlowスイッチ上のインストール又はアンインストールに先立って実行される。
図11は、CNMにより維持される追加的なデータベースを示している。CNMは、テナントID−テナントラベル(TITLテーブル)を使用し、テナントIDをキーとして用いてテナントラベルをルックアップする。CNMは、TORSラベル−VSリンクラベルテーブル(TLVLLテーブル)を使用し、TORSラベルをキーとして用いてVSリンクラベルをルックアップする。CNMは、CNMマッピングテーブル(CNMテーブル)を使用して、テナントidと、テナントVMのMAC及びIPアドレスと、サーバMACアドレスとの間のマッピングを維持する。テナントごとに1つのCNMマッピングテーブルが存在する。
テナントIDは、テナント固有データを、同じクラウド基盤を使用する他のテナントとは別に保持することで隔離する。この隔離を達成するために、転送エントリとしてテナントラベルが追加される。テナントIDを有するテナントラベルの使用は、テナント固有トラフィックをそれらそれぞれのVMへ分離し及び隔離する。それにも関わらず、このさらなる実施形態では、異なるテナントに属するVMが同じネットワーク(IP/MAC)アドレスを有することができる。
図11において見られるように、テナントデータベースは、CNMアドレスマッピングテーブルへテナントID情報を追加するために使用される。テナントデータベースは、テナントに固有の詳細を記憶するために使用され、テナントIDをキーとして有する。テナントデータベースは、CNMアドレスマッピングテーブルへのポインタを保持する。本実施形態では、CNMは、まず、他の全てのCNMアドレスマッピングテーブルのルックアップを実行する前に、テナント固有のアドレスマッピングテーブルを見つけ出すためのルックアップをテナントデータベースに対して実行する。一旦テナント固有のアドレスマッピングテーブルを見つけ出すと、上で説明した追加的なステップ群が遂行される。
図12は、クラウドネットワークマネージャ(CNM)を用いてテナント固有データを隔離するための方法を示している。ブロック1205において、CNMは、複数のデータベース又はテーブル内の複数のアイテムの間のマッピングを維持する。当該複数のデータベース又はテーブルは、テナントデータベース(DB)と、テナント識別子−テナントラベル(TITL)テーブルと、TORS(top of rack server)ラベル−仮想スイッチリンクラベル(TLVLL)テーブルと、ラベルマッピングテーブル(SMVL)と、CNMアドレスマッピングテーブルとを含む。ブロック1210において、CNMは、上記複数のデータベースを用いて、テナントの仮想マシン(VM)間で送信されるパケットへ付与されるテナント固有ラベルを生成する。1つの実施形態では、OpenFlowスイッチ上のインストール又はアンインストールに先立ってデータベースアクセスが実行される。
CNMは、テナントIDをキーとして用いてテナントラベルをルックアップするためにTITLテーブルを用いる。CNMは、TORS(top of rack server)ラベルをキーとして用いて仮想スイッチ(VS)リンクラベルをルックアップするためにTLVLLテーブルを用いる。
CNMは、テナントID、テナントVMメディアアクセス制御(MAC)アドレス、テナントVMインターネットプロトコル(IP)アドレス及びサーバMACアドレスの間のマッピングを維持するために、CNMアドレスマッピングテーブルを用いる。テナントごとに1つのCNMアドレスマッピングテーブルが存在する。
テナントラベルを転送エントリとして追加することにより、テナント固有データが隔離される。テナントIDを有するテナントラベルの使用が、テナント固有トラフィックをそれぞれのVMへと分離し及び隔離する。1つの実施形態では、異なるテナントへ属する複数のVMが同じインターネットプロトコルアドレス及びメディアアクセス制御アドレスを有する
テナントDBは、CNMアドレスマッピングテーブルへのポインタを保持する。CNMは、他の全てのCNMアドレスマッピングテーブルのルックアップを実行する前に、まずテナントDBでのルックアップを実行して、テナント固有のアドレスマッピングテーブルを見出す。
図13は、テナントごとに仮想マシンをアクティブ化するための方法のブロック図を示している。ブロック1305において、CNMにより、VMが仮想化されたサーバ上でのアクティブ化のためにスケジューリングされるという通知が受信される。例えば、CEMがアクティブ化のためにVMをスケジューリングしたことを、CEMがCNMへ通知する。ブロック1310において、CNMは、VM MACアドレスを判定する。ブロック1315において、CNMは、VMがアクティブ化されることになる仮想化されたサーバ上に所在する仮想スイッチ(VS)に対応する、仮想スイッチのMACアドレスを判定する。ブロック1320において、CNMは、CEMから、テナントID、テナントMAC及びサーバMACを含むメッセージを受信する。ブロック1325において、CNMは、(VS MACアドレスをVS−TORSラベルへ関連付けるラベルマッピングテーブルである)SMVLテーブル及びTITLテーブルにおいてルックアップを実行する。CNMは、SMVLテーブル内でVSからTORSへのリンクラベルを見出す。CNMは、TITLテーブルにおいてテナントラベルを見出す。ブロック1330において、CNMは、CNMマッピングテーブル内に、テナントID、VM MACアドレス及びVS MACアドレスの間の関連付けを記録する。
ブロック1335において、CNMは、MPLSラベル、VM MACアドレス及びテナント固有ラベルに適合するデータパケットがそのVMへ転送されるべきであることを示すフローエントリ修正メッセージを、当該VSへ送信する。言い換えれば、(宛て先スイッチにおいて)第1のMPLSラベルがVS−TORSリンクラベルに適合し、第2のMPLSラベルがテナント固有ラベルに適合し、及びMACがテナントVM MACアドレスに適合する場合、それらMPLSラベルがポップされて、テナントVMへの転送が行われる。このルールは、パケットが適切なMACアドレスを有する場合に、VS−TORSリンク上へ到来するVSへのトラフィックがテナントVMへ転送されることを保証する。
1つの実施形態では、ブロック1340において、CNMは、VMから発せられるDHCPリクエストがCNMへ転送されるべきであることを示すフローエントリ修正メッセージを、VSへ送信する。パケットのソースMACがテナント固有MACに適合し、宛て先ポート番号がDHCPポート番号に適合する場合、リクエストは、CNMへ転送される。このルールは、CNMが応答としてルーティングの修正を行い得るようにアドレスルックアップ及び構成のそれぞれに割り込むことを可能とする。1つの実施形態では、DHCPは、BOOTPと同じポート番号を使用し、そのためこれはBOOTPプロトコルのポート番号となる。
1つの実施形態では、ブロック1345において、CNMは、VMから発せられるARPリクエストがCNMへ転送されるべきであることを示すフローエントリ修正メッセージを、VSへ送信する。パケットのソースMACがテナント固有MACに適合し、イーサタイプがARPに適合する場合、リクエストは、CNMへ転送される。このルールは、CNMが応答としてルーティングの修正を行い得るようにアドレスルックアップ及び構成のそれぞれに割り込むことを可能とする。
図14は、1つの実施形態に従って仮想マシンをアクティブ化するための方法を示している。図14において、TORS1401Aは、仮想化されたサーバ1415Aへ連結されている。仮想化されたサーバ1415Aは、ハイパーバイザ1416A及び仮想スイッチ1417Aを含む。図14では、仮想化されたサーバ1415Aは、2つのアクティブなVM T1 1490A及びVM T2 1490Bを有する。さらに、図14は、CEM1450、仮想ディスク1455、及びCNM1460を示す。
図14において、CEM1450は、仮想化されたサーバ1415A上での実行のために、第3のVM T3 1490Cをスケジューリングする。この図は、仮想マシンのアクティブ化の期間中における様々なポイントを描いている。ポイントAにおいて、CEM1450は、VM T3 1490C、例えば、テナント3に属するVMを、実行のためにスケジューリングする。オブジェクトファイルは、仮想ディスク1455からCEMのオブジェクトマネージャを通じてマッピングされる。CEMは、テナント3に割り当てられたMACアドレスのうちの1つにVM1490CのMACアドレスを設定するように、VM1490Cのスタックを編集する。ポイントBにおいて、CEM1450は、CNM1460にアクティブ化について知らせる。CEM1450は、VM1490CのMACアドレスと、VMを実行している、仮想化されたサーバ1415AのMACアドレス(これは、仮想化されたサーバ1415Aの仮想スイッチ1417AのMACアドレスである)と、テナントの識別子とを、CNM1460へ提供する。
ポイントCにおいて、VM、即ちVM1490Cが仮想化されたサーバ1415A上でアクティブ化のためにスケジューリングされるという通知が、CNM1460により受信される。例えば、CEM1450がアクティブ化のためにVM1490Cをスケジューリングしたことを、CEM1450がCNM1460へ通知する。ポイントDにおいて、CNM1460は、VM1490CのMACアドレスを判定する。ポイントEにおいて、CNMは、VM1490Cがアクティブ化されることになる仮想化されたサーバ1415A上に所在する仮想スイッチ(VS)1417Aに対応する、仮想スイッチのMACアドレスを判定する。ポイントFにおいて、CNM1460は、CEM1450から、テナントID、テナントMAC及びサーバMACを含むメッセージを受信する。ポイントGにおいて、CNMは、SMVLテーブル1464及びTITLテーブル1424においてルックアップを実行する。CNMは、SMVLテーブル1464内でVSからTORSへのリンクラベルを見出す。CNMは、TITLテーブル1424においてテナントラベルを見出す。ポイントHにおいて、CNM1460は、CNMマッピングテーブル1434内に、テナントID、VM MACアドレス及びVS MACアドレスの間の関連付けを記録する。
ポイントIにおいて、CNMは、MPLSラベル、VM MACアドレス及びテナント固有ラベルに適合するデータパケットがそのVMへ転送されるべきであることを示すフローエントリ修正メッセージを、VS1417Aへ送信する。言い換えれば、第1のMPLSラベルがVS−TORSリンクラベルに適合し、第2のMPLSラベルがテナント固有ラベルに適合し、及びMACがテナントVM MACアドレスに適合する場合、それらMPLSラベルがポップされて、テナントVMへの転送が行われる。このルールは、パケットが適切なMACアドレスを有する場合に、VS−TORSリンク上へ到来するVSへのトラフィックがテナントVMへ転送されることを保証する。
1つの実施形態において、CNM1460は、ポイントJにおいて、VM1490Cから発せられるDHCPリクエストがCNM1460へ転送されるべきであることを示す第2のフローエントリ修正メッセージを、VS1417Aへ送信する。パケットのソースMACがVM1490Cについてのテナント固有MACに適合し、宛て先ポート番号がDHCPポート番号に適合する場合、リクエストは、CNM1460へ転送される。このルールは、CNMが応答としてルーティングの修正を行い得るようにアドレスルックアップ及び構成のそれぞれに割り込むことを可能とする。1つの実施形態では、DHCPは、BOOTPと同じポート番号を使用し、そのためこれはBOOTPプロトコルのポート番号となる。
1つの実施形態では、CNMは、ポイントKにおいて、VM1490Cから発せられるARPリクエストがCNM1460へ転送されるべきであることを示す第3のフローエントリ修正メッセージを、VS1417Aへ送信する。パケットのソースMACがVM1490Cについてのテナント固有MACに適合し、イーサタイプがARPに適合する場合、リクエストは、CNM1460へ転送される。このルールは、CNMが応答としてルーティングの修正を行い得るようにアドレスルックアップ及び構成のそれぞれに割り込むことを可能とする。
図14は、これまでに説明した全ての3つのフローエントリ修正メッセージが通信されたということを前提として、仮想スイッチ1417Aのフローエントリテーブル1418A内の3つのエントリを例示する。フローエントリテーブル1418Aには、6つの列、即ち、ソースMAC、宛て先MAC、MPLSラベル、テナント固有ラベル、IPプロトコル、及びアクション、が例示されている。それらフローエントリは、1490Cのアクティブ化に対応する。
図示したフローエントリテーブル1418A内の第1のエントリは、ソースMACアドレスとしてVM T3 1490CのMACアドレスに適合する。宛て先MACアドレス及びMPLSラベルは、いかなるエントリにも適合するように設定され、その一方で、テナント固有ラベルはラベルtid3に適合するに設定され、IPプロトコルはARPプロトコルに適合するように設定される。アクションは、次いでCNM1460へ転送することである。このルールは、上記のステップKに対応する。
図示したフローエントリテーブル1418A内の第2のエントリは、ソースMACアドレスとしてVM T3 1490CのMACアドレスに適合する。宛て先MACアドレス及びMPLSラベルはいかなるエントリにも適合するように設定され、その一方で、テナント固有ラベルはラベルtid3に適合するに設定され、IPプロトコルはDHCPプロトコルに適合するように設定される。アクションは、次いでCNM1460へ転送することである。このルールは、上記のステップJに対応する。
図示したフローエントリテーブル1418A内の第3のエントリは、宛て先MACアドレスとして全てのMACに適合する。宛て先MACアドレスは、VM T3 1490CのMACアドレスに適合するように設定され、その一方で、1つのMPLSラベルはVS−TORS1401のリンクラベルに設定され、1つはテナントラベルMAC VM T3に設定され、第3のラベルであるテナント固有ラベルはラベルtid3に設定される。IPプロトコルは、全てのエントリに適合するように設定される。アクションは、次いでMPLSラベル及びテナント固有ラベルをポップしてパケットをVM T3 1490Cへ転送することである。このルールは、上記のステップIに対応する。
上で説明したように、CNMは、テナントID、VM MACアドレス、仮想化されたサーバのMAC、及びVM IPアドレスの間のマッピングを維持する。テナントがDHCPアドレスを使用しないことを選んだ場合、CEMは、スケジューリングの実行に先立ってVMのIPスタックを修正し、静的なIPアドレスをインストールする。しかしながら、他の実施形態において、テナントは、DHCPアドレスを使用することを選ぶであろう。そうしたケースにおいて、CNMは、DHCPリクエストを傍受してリレーとして動作するであろう。
図15は、1つの実施形態に従ってテナントVMからのDHCPリクエストを傍受するための方法のブロック図を示している。DHCPメッセージは、テナントVMにより送信される。このDHCPメッセージは、仮想スイッチにより傍受され、仮想スイッチからCNMへと転送される。ブロック1505において、CNMは、テナントVMから発せられたDHCPリクエストを仮想スイッチから受信する。CNMは、ブロック1510において、DHCPサーバ又はDHCPリレーとして動作することによりVMのアドレスを見出す。CNMは、ブロックにおいて、RFC3046に従ってDHCPサーバへDHCPリクエストを中継する。CNMは、DHCPサーバからDHCPリプライを受信する。ブロック1515において、CNMは、CNMマッピングテーブル内に、VMのアドレスを記録する。また、CNMは、テナントVMのMACアドレスと、DHCPリプライ内で受信されたIPアドレスとの間の関連付けを記録する。ある実施形態によれば、当該関連付けは、テナントVMを実行する仮想サーバのMACアドレスをさらに含む。ブロック1520において、CNMは、DHCPリプライをVMへ転送する。
図16は、本発明の1つの実施形態に従って仮想マシンからのDHCPリクエストを傍受するための方法を示している。図6において、仮想化されたサーバ1615Aは、ハイパーバイザ1616A及び仮想スイッチ1617Aを含む。図16において、仮想化されたサーバ1615Aは、3つのアクティブなVM Tl 1690A、VM T2 1690B、及びVM T3 1690Cを有する。仮想スイッチ1617Aは、VM T3 1690CからのDHCPリクエストを、DHCPサーバ1630に連結されるCNM660へ転送するためのルールを含むフローエントリテーブル1618Aを含む。
この図は、仮想マシンからのDHCPリクエストの傍受の期間中における、様々なポイントを描いている。ポイントAにおいて、VM T3 1690Cは、IPアドレス、及び、DNSサーバといった他の構成情報を取得するためのDHCPリクエストを発行する。ポイントBにおいて、仮想スイッチ1617Aは、例えばメッセージのようなDHCPリクエストを、当該リクエストをCNM1660へルーティングするためのフロールールに照合する。
ポイントCにおいて、CNMは、DHCPサーバ又はDHCPリレーとして動作することにより、VMのアドレスを見出す。1つの実施形態において、CNM1660は、DHCPリレーとして動作し、標準的なDHCPリレーオプションを挿入し、リクエストをテナントのDHCPサーバ1630へ転送する。CNM1660は、DHCPリクエストのソースMACアドレスを調査することにより、どのテナントにVM T3 1690Cが属しているのかを判定することができる。
ポイントDにおいて、テナントのDHCPサーバ1630は、VM T3 1690CについてのIPアドレス及び他の構成情報を包含するDHCPリプライで応答する。ポイントEにおいて、CNM1660は、CNMのアドレスマッピングテーブル1634内に、VM T3 1690CのMACアドレスとIPアドレスとの間のマッピングを記録する。
CNMは、上記アドレスを包含するDHCPリプライでVMへ返答する。1つの実施形態では、ポイントFにおいて、CNM1660は、DHCPリレーオプションを取り除き、DHCPリプライを仮想スイッチ1617Aへ転送し、仮想スイッチ1617Aは、ポイントGにおいて、当該リクエストをVM T3 1690Cへ返送する。
図17は、本発明の1つの実施形態に従って、(特定のラベルにより識別される)特定のテナントが宛て先IPアドレスを発見しようと試みる際にVMからのARPリクエストを傍受するための方法のブロック図を示している。ブロック705において、CNMは、VMから発せられたARPリクエストを受信する。テナントは、宛て先IPアドレスと共にARPリクエストを送出する。仮想スイッチは、ARPリクエストを傍受し、コントローラ上で稼働しているCNMへ当該ARPリクエストを送信する。CNMは、ブロック710において、特定のテナントについてのCNMマッピングテーブルをルックアップし、宛て先VMが稼動しているサーバの宛て先MACアドレスを抽出する。ブロック715において、CNMは、宛て先サーバMACアドレスを用いて、宛て先VSリンクラベルを判定する。CNMは、VSリンクラベルを判定する目的で、SMVLテーブルを使用する。ブロック1720において、CNMは、アップリンク及びダウンリンクトラフィックのためのフロールートでソースTORSをプログラミングする。ブロック1725において、CNMは、ソースVMを実行している仮想サーバ上の仮想スイッチへフローエントリ修正メッセージを送信する。当該フローエントリ修正メッセージは、宛て先MACアドレスに適合するパケットが宛て先テナント固有ラベル及び宛て先VS−TORSラベルをプッシュしてソースTORSへパケットを転送すべきであることを示すために、VSへ送信される。ブロック1730において、CNMは、特定のテナントのVMへ、所与の宛て先IPアドレスについての正確なMACアドレスと共にARPリプライを転送する。
図18は、1つの実施形態に従って、(特定のラベルにより識別される)特定のテナントが宛て先IPアドレスを発見しようと試みる際に仮想マシンからのARPリクエストを傍受するための方法を示している。図18において、仮想化されたサーバ1815Aは、ハイパーバイザ1816A及び仮想スイッチ1817Aを含む。図8において、仮想化されたサーバ1815Aは、アクティブなVM T3 1890Cを有する。仮想スイッチ1817Aは、VM T3 1890CからのARPリクエストをCNM1860へ転送するためのルールを含むフローエントリテーブル1818Aを含む。仮想化されたサーバ1816Aは、TORS1801Aと連結され、TORS1801Aは、クラウドネットワーク1870を通じて他のTORS1801Cへ連結される。TORS1801Cは、ハイパーバイザ1826B及び仮想スイッチ1827Bを含む、仮想化されたサーバ1825Bと連結される。仮想化されたサーバ1825Bは、VM T4 1895Bを実行している。
この図は、VM T3 1890CからのARPリクエストの傍受の期間中における、様々なポイントを描いている。ポイントAにおいて、VM T3 1890Cは、ARPリクエストをブロードキャストする。傍受の残りの部分は、ARPリクエストが、仮想サーバ1825B上に所在する宛て先VM T4 1895BのIPアドレスを示すことを前提とする。仮想スイッチ1817Aは、ポイントBにおいて、ARPリクエストを傍受し、当該リクエストを、フローエントリテーブル1818A内の、ARPリクエストをCNM1860へルーティングするルールと照合する。
ポイントCにおいて、CNM1860は、要求された宛て先IPアドレス(“DIP”)をキーとして使用して、CNMのアドレスマッピングテーブル1834内で宛て先MACアドレス(“DMAC”)をルックアップする。ポイントDにおいて、CNMは、DMACを所与として、宛て先VSリンクラベルを判定する。CNMは、VSリンクラベルを判定する目的で、SMVLテーブルを使用する。ポイントEにおいて、CNM1860は、アップリンク及びダウンリンクトラフィックのためのフロールートでソースTORS1801Aをプログラミングする。VSリンクラベルは、DMAC仮想化サーバ1825Bにおいて、TORS1801AとVM T4 1895Bとの間のルートを記述する。
ポイントFにおいて、CNM1860は、ソースVM1890Cを実行中の仮想サーバ上の仮想スイッチ1817Aへフローエントリ修正メッセージを送信する。当該フローエントリ修正メッセージは、宛て先MACアドレスに適合するパケットが宛て先テナント固有ラベル及び宛て先VS−TORSラベルをプッシュしてパケットをソースTORS1801Aへ転送すべきであることを示すために、VS1817Aへ送信される。ポイントGにおいて、CNMは、仮想スイッチ1817AへARPリプライを転送し、仮想スイッチ1817Aは、次いで、ポイントHにおいて、所与の宛て先IPアドレスについての正確なMACアドレスと共に、ARPリプライを特定のテナントのVM1890Cへ転送する。
図19は、1つの実施形態に従って、固有のテナントのVMへ向けてトラフィックを転送するためのテナントラベルの使用を示している。固有のテナントのVMは、TORSにより分けられる異なる仮想スイッチに関連付けられる。トラフィックが正確に転送されるように、仮想スイッチ及びTORS上でOpenFlowルールがプログラミングされなければならない。図19は、テナントVM1から同じテナントのVM2へのトラフィックの転送のための方法を例示している。
サーバA上の仮想スイッチ(VS)Aは、複数の転送命令を含むフローエントリテーブル1918Aを有する。VS Aは、ポート1上でサーバAに適合するサーバラベルを有するパケットを受信すると、サーバAラベルをポップし、パケットを、例えばテナント固有ラベルへの照合のために、次のテーブルへ転送する。VS Aは、受信したパケット上のVM1及びMACアドレス(Mac1)に適合する場合、テナント固有ラベルをポップし、ポート2上でVM1へ転送する。VS Aは、ポート2上でMac1及びARP又はDHCPに適合するパケットを受信すると、当該パケットをOFコントローラ1960へ転送する。VS Aは、ポート2及び宛て先Macアドレスについて適合するパケットを受信すると、まずVS2についてのテナント固有ラベルをプッシュし、次いでサーバB用のラベルをプッシュし、そして当該パケットをソースTORSへ転送する。
TORS Aは、複数の転送命令を含むフローエントリテーブル1912Aを有する。TORS Aは、サーバBについて適合するパケットを受信すると、MPLSクラウド1970上でのTORS−TORS転送のために、TORS B用のラベルをプッシュし、当該パケットをポート1上で転送する。TORS Aは、ポート1について適合し及びTORS Aに適合するパケットを受信すると、TORS Aラベルをポップし、次のテーブルへ転送する。当該パケットがサーバAについて適合する場合、TORS Aは、当該パケットをポート2へ転送する。
サーバB上の仮想スイッチ(VS)Bは、複数の転送命令を含むフローエントリテーブル1918Bを有する。VS Bは、ポート1上でサーバBに適合するサーバラベルを有するパケットを受信すると、サーバBラベルをポップし、パケットを、例えばテナント固有ラベルへの照合のために、次のテーブルへ転送する。VS Bは、受信したパケット上のVM2及びMACアドレス(Ma2)に適合する場合、テナント固有ラベルをポップし、ポート2上でVM2へ転送する。VS Bは、ポート2上でMac1及びARP又はDHCPに適合するパケットを受信すると、当該パケットをOFコントローラ1960へ転送する。
TORS Bは、複数の転送命令を含むフローエントリテーブル1912Bを有する。TORS Bは、サーバAについて適合するパケットを受信すると、MPLSクラウド1970上でのTORS−TORS転送のために、TORS A用のラベルをプッシュし、当該パケットをポート1上で転送する。TORS Bは、ポート1について適合し及びTORS Bに適合するラベルを有するパケットを受信すると、TORS Bラベルをポップし、次のテーブルへ転送する。当該パケットがサーバBについて適合する場合、TORS Bは、当該パケットをポート2へ転送する。
図19は、テナントVM1を有する仮想化されたサーバ、サーバAを示している。サーバAは、TORS Aに関連付けられる。仮想化されたサーバ、サーバBは、同じテナントの仮想マシンVM2を有する。サーバBは、TORS Bに関連付けられる。前に議論したように、VM1は、宛て先IPアドレスを発見し及び同じテナントの宛て先仮想マシンVM2へパケットを転送する目的で、ARP、及び例えばCNMといったOpenFlowコントローラ1960を使用することができる。パケットは、MPLSクラウドネットワーク1970上でソースTORSから宛て先TORSへ転送される。
テナントVM1は、パケットをサーバAへ転送する。ソース仮想スイッチAは、フローエントリテーブル1918Aを用いて、ポート及び及び宛て先MACについて照合を行う。ソース仮想スイッチAは、2つのラベル、即ちサーバBラベル及びテナント固有ラベルをプッシュする。1つの実施形態において、テナント固有ラベルがまずプッシュされる。ソース仮想スイッチAは、ついで、パケットをソースTORS Aへ転送する。ソースTORS Aは、パケットを転送する目的で、フローエントリテーブル1912Aに関連付けられるルールを使用する。ソースTORS Aは、サーバBラベル(例えば、サーバBのMACアドレスに関連付けられるVS−TORSラベル)について照合を行い、TORS−TORS転送のためにTORS Bラベルをプッシュする。TORS Aは、(TORS Bラベル、サーバBラベル及びテナント固有ラベルと共に)パケットをMPLSクラウド1970上でTORS Bへ転送する。
宛て先TORS Bは、TORS Bラベル及びポートについて照合を行う。次いで、宛て先TORS Bは、TORS Bラベルをポップし、フローエントリテーブル1912B内のルールに従って、サーバB上に所在する宛て先仮想スイッチBへ送信する。
宛て先仮想スイッチBは、サーバBラベル及びポートについて照合を行い、サーバBラベルをポップする。宛て先仮想スイッチBは、テナント固有ラベルについて照合を行い、パケットを正確な宛て先MACアドレスへ転送する。
図20は、クラウドネットワークマネージャ(CNM)を用いてテナント固有データを隔離するための方法を示している。ブロック2005において、ソース仮想スイッチ(VS)へ、宛て先仮想マシン(VM)へデータパケットを転送する目的でソースVSが当該データパケットへまずテナント固有ラベルをプッシュし次いでVS−TORS(top of rack switch)ラベルをプッシュすべきであることを示す第1のフローエントリ修正メッセージが送信される。ブロック2010において、ソースTORSへ、ソースTORSがVS−TORSラベルに適合するデータパケットを受信した場合にはソースTORSが宛て先TORSラベルをプッシュすべきであることを示す第2のフローエントリ修正メッセージが送信される。ブロック2015において、宛て先TORSへ、宛て先TORSが宛て先TORSラベルに適合するデータパケットを受信した場合には宛て先TORSがTORSラベルをポップしてデータパケットを宛て先VSへと転送すべきであることを示す第3のフローエントリ修正メッセージが送信される。ブロック2020において、宛て先VSへ、宛て先VSがVS−TORSラベル及びテナント固有ラベルに適合するデータパケットを受信した場合には宛て先VSがまずVS−TORSラベルをポップし次いでテナント固有ラベルをポップすべきであることを示す第4のフローエントリ修正メッセージが送信される。
第1のフローエントリ修正メッセージに応じて、ソースVSは、パケットをソースTORSへ転送する。第2のフローエントリ修正メッセージに応じて、ソースTORSは、クラウドネットワークを用いてデータパケットを宛て先TORSへ転送する。第3のフローエントリ修正メッセージに応じて、宛て先TORSは、データパケットを宛て先VSへ転送する。第4のフローエントリ修正メッセージに応じて、宛て先VSは、パケットを宛て先VMへ転送する。CNMは、ソースVMがパケットを同じテナントに属する宛て先VMへ転送することを可能とする目的で、宛て先インターネットプロトコルアドレスをソースVMへ提供する。
図21は、1つの実施形態に従って、VMが新たなサーバへ移動した後にテナントラベルを用いてトラフィックを正確なVMへ転送するための方法を示している。固有のテナントのVMは、TORSにより分けられる異なる仮想スイッチに関連付けられる。トラフィックが正確に転送されるために、仮想スイッチ及びTORS上でOpenFlowルールがプログラミングされなければならない。図21は、移動したVMへトラフィックを転送するための方法を示している。
サーバA上の仮想スイッチ(VS)Aは、複数の転送命令を含むフローエントリテーブル2118Aを有する。VS Aは、ポート1上でサーバAに適合するサーバラベルを有するパケットを受信すると、サーバAラベルをポップし、パケットを、例えばテナント固有ラベルへの照合のために、次のテーブルへ転送する。VS Aは、受信したパケット上のVM1及びMACアドレス(Mac1)に適合する場合、テナント固有ラベルをポップし、ポート2上でVM1へ転送する。VS Aは、ポート2上でMac1及びARP又はDHCPに適合するパケットを受信すると、当該パケットをOFコントローラ1960(図示せず)へ転送する。VS Aは、ポート2及び宛て先Macアドレスについて適合するパケットを受信すると、まずVM2についてのテナント固有ラベルをプッシュし、次いでサーバCラベルをプッシュし、そして当該パケットをソースTORS、TORS Aへ転送する。
TORS Aは、複数の転送命令を含むフローエントリテーブル2112Aを有する。TORS Aは、サーバBについて適合するパケットを受信すると、MPLSクラウド2170上でのTORS−TORS転送のために、TORS B用のラベルをプッシュし、当該パケットをポート1上で転送する。TORS Aは、サーバCについて適合するパケットを受信すると、TORS C用のラベルをプッシュし、当該パケットをポート1上で転送する。TORS Aは、ポート1について適合し及びTORS Aに適合するラベルを有するパケットを受信すると、TORS Aラベルをポップし、次のテーブルへ転送する。当該パケットがサーバAについて適合する場合、TORS Aは、当該パケットをポート2へ転送する。
サーバB上の仮想スイッチ(VS)Bは、複数の転送命令を含むフローエントリテーブル2118Bを有する。VS Bは、ポート1上でサーバBに適合するサーバラベルを有するパケットを受信すると、サーバBラベルをポップし、パケットを、例えばテナント固有ラベルへの照合のために、次のテーブルへ転送する。VS Bは、受信したパケット上のVM2及びMACアドレス(Ma2)に適合する場合、テナント固有ラベルをポップし、新たな命令に従って転送を行う。それら新たな命令は、まずVM2(テナント固有)ラベルをプッシュすることと、次いでサーバCラベルをプッシュすることと、パケットをポート1へと転送することと、を含む。VS Bは、ポート2上でMac1及びARP又はDHCPに適合するパケットを受信すると、当該パケットをOFコントローラ(図示せず)へ転送する。
TORS Bは、複数の転送命令を含むフローエントリテーブル2112Bを有する。TORS Bは、サーバAについて適合するパケットを受信すると、MPLSクラウド2170上でのTORS−TORS転送のために、TORS A用のラベルをプッシュし、当該パケットをポート1上で転送する。TORS Bは、サーバCについて適合するパケットを受信すると、TORS C用のラベルをプッシュし、MPLSクラウド2170上でのTORS−TORS転送のために、当該パケットをポート1上で転送する。TORS Bは、ポート1について適合し及びTORS Bに適合するラベルを有するパケットを受信すると、TORS Bラベルをポップし、次のテーブルへ転送する。当該パケットがサーバBについて適合する場合、TORS Bは、当該パケットをポート2へ転送する。
サーバC上の仮想スイッチ(VS)Cは、複数の転送命令を含むフローエントリテーブル2118Cを有する。VS Cは、ポート1上でサーバAに適合するサーバラベルを有するパケットを受信すると、サーバAラベルをポップし、例えばテナント固有ラベルへの照合のために、次のテーブルへ転送する。VS Cは、受信したパケット上のVM2及びMACアドレス、Mac2に適合する場合、テナント固有ラベルをポップし、ポート2への転送を行う。VS Cは、ポート2、Mac1及びARP又はDHCPについて適合するパケットを受信すると、当該パケットをOFコントローラ(図示せず)へ転送する。
TORS Cは、複数の転送命令を含むフローエントリテーブル2112Cを有する。TORS Cは、サーバAについて適合するパケットを受信すると、MPLSクラウド2170上でのTORS−TORS転送のために、TORS A用のラベルをプッシュし、当該パケットをポート1上で転送する。TORS Cは、サーバBについて適合するパケットを受信すると、TORS B用のラベルをプッシュし、MPLSクラウド2170上でのTORS−TORS転送のために、当該パケットをポート1上で転送する。TORS Cは、ポート1について適合し及びTORS Aに適合するラベルを有するパケットを受信すると、TORS Aラベルをポップし、次のテーブルへ転送する。当該パケットがサーバAについて適合する場合、TORS Cは、当該パケットをポート2へ転送する。
図21は、テナントVM1を有する、仮想化されたサーバであるサーバAを示している。サーバAは、TORS Aに関連付けられる。仮想化されたサーバであるサーバBは、同じテナントの仮想マシンVM2を有する。サーバBは、TORS Bに関連付けられる。VM2がサーバBからサーバCへ移動する場合、VM2宛てのパケットがMPLSクラウドネットワーク1970上でTORS Cを通じてサーバCへ転送されることを確実化する目的で、VS B用のフローエントリテーブル内に転送命令が含められる。
図21は、VMが移動する際のデータパスを示している。本実施形態において、テナントラベルは、VMが移動した後に正確なVMへトラフィックを転送するために使用される。図13において見られるように、当初は、トラフィックは、仮想スイッチAに関連付けられるVM1から仮想スイッチB上のVM2へと進む。最終的には、VMは、仮想スイッチCへと移動し、トラフィックは正確な仮想スイッチへ適切に移動させられる。
上で述べたように、当初は、フローは、VS A上のソーステナント仮想マシンVM1からVS B上の宛て先仮想マシンVM2へとトラフィックを送信するようにセットアップされる。
VM2がサーバBからサーバCへと移動される場合、VM2宛てのパケットが正確な場所へ送信されることを確かにする目的で、フローエントリテーブルは修正される必要がある。VS A上のフローエントリテーブル2118Aは、VS Bの代わりにVS Cのためのラベルをプッシュするように修正される。サーバAラベルについて照合し、次いでテナント固有ラベルVM2について照合するためのエントリがフローエントリテーブル2118Cへ追加される。次いで、VS Cは、それらラベルをポップし、VS C上の正確なポートへの転送を行う。VM2へ向けてVS Aから到来するトラフィックについて照合されるVS B上のエントリは除去される。VM2の移動の期間中にVS Bにより受信されるいずれの暫定的なパケットも、まずテナント固有ラベルをプッシュし、次いでサーバB用のラベルをプッシュし、そしてMPLSクラウド2170上でのTORS CへのTORS−TORS転送のためにTORS Bへ転送することにより、転送されることができる。
図22は、第1の宛て先VSから第2の宛て先VSへ、CNMを用いて宛て先VMを移動させる方法を示している。ブロック2205において、ソースVSへ、第1の宛て先VSの代わりに第2の宛て先VSのためのラベルをプッシュする目的で第1のフローエントリ修正メッセージが送信される。ブロック2210において、第2の宛て先VSへ、ソースVSラベル及びテナント固有ラベルが適合するデータパケットを第2の宛て先VSが受信した場合には当該第2の宛て先VSがまずソースVSラベルをポップし次いでテナント固有ラベルをポップすべきであることを示す第2のフローエントリ修正メッセージが送信される。ブロック2215において、第1の宛て先VSへ、第1の宛て先VSラベル及びテナント固有ラベルについて適合するデータパケットを第1の宛て先VSが暫定ピリオドの期間中に受信した場合には第1の宛て先VS及びテナント固有ラベルがポップされるべきであって次いで第1の宛て先VSがパケットをまずテナント固有ラベルをプッシュし次いで第2の宛て先VSラベルをプッシュすることにより転送すべきであることを示す第3のフローエントリ修正メッセージが送信される。
ここで説明されるように、命令は、ある動作を実行するように構成され若しくは予め決定される機能性を有する特定用途向け集積回路(ASIC)といったハードウェアの特定の構成、又は、メモリ内に記憶され非一時的なコンピュータ読取可能な媒体内で具現化されるソフトウェア命令の特定の構成を指し得る。よって、図面中に示した技法は、1つ以上の電子デバイス(例えば、終端局、ネットワークエレメント)上で記憶されて実行されるコード及びデータを使用して実装されることが可能である。そうした電子デバイスは、非一時的なコンピュータ読取可能な記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、相変化メモリ)及び一時的なコンピュータ読取可能な通信媒体(例えば、電気的、光学的、音響的、又は他の形式の伝播信号−例えば、搬送波、赤外線信号、デジタル信号)などのコンピュータ読取可能な媒体を使用して、コード及びデータを記憶し、コード及びデータを(内部的に、及び/又は、他の電子デバイスとの間でネットワーク上で)通信する。加えて、そうした電子デバイスは、典型的には、1つ以上のストレージデバイス(非一時的なマシン読取可能な記憶媒体)、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、並びにネットワーク接続といった1つ以上の他のコンポーネントへ連結される1つ以上のプロセッサのセットを含む。プロセッサのセットと他のコンポーネントとの連結は、典型的には、1つ以上のバス及びブリッジ(バスコントローラとも呼称される)を通じて行われる。よって、所与の電子デバイスのストレージデバイスは、典型的には、当該電子デバイスの1つ以上のプロセッサのセット上での実行のためにコード及び/又はデータを記憶する。当然ながら、本発明の一実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、及び/又はハードウェアの様々な組み合わせを使用して実装されてよい。
図面中のフロー図は、本発明のある実施形態により実行される動作の特定の順序を示しているが、そうした順序は例示的であることが理解されるべきである(例えば、代替的な実施形態は、異なる順序で動作を実行し、ある複数の動作を組み合わせ、ある複数の動作を重複させるなどしてもよい)。
本発明を、いくつかの実施形態の観点で説明してきたが、当業者は、本発明が、説明された実施形態に限定されないこと、並びに、添付の特許請求の範囲の思想及び範囲内の修正及び変形と共に実践し得ることを認識するであろう。よって、本説明は、限定的である代わりに、例示的であるとみなされるべきである。