(58)【調査した分野】(Int.Cl.,DB名)
輻輳通知メッセージを受信する各仮想マシンについて、前記輻輳通知メッセージに基づき、前記仮想マシンに対応する少なくとも1つのパケット生成レートを調整すること、
をさらに含む、請求項1に記載の方法。
輻輳通知メッセージを受信する各仮想マシンについて、前記仮想マシンに対応する少なくとも1つのパケット生成レートは、前記輻輳通知メッセージに基づいて調整される、
請求項5に記載のシステム。
複数の仮想ネットワークを備える仮想ネットワーキング・システム内での量子化輻輳通知のためのコンピュータ・プログラムであって、各仮想ネットワークは、1つまたは複数のパケット・フローを生成するように構成された少なくとも1つの仮想マシンを備え、
コンピュータに、
前記仮想ネットワークの仮想マシンに、前記仮想ネットワークを反応ポイントとして識別する、対応する仮想反応ポイント識別子を割り当てることであって、前記仮想反応ポイント識別子は、前記仮想マシンによって生成されたパケット・フローに関連付けられ、更に、前記パケット・フローを配送するための対応する仮想トンネル・エンド・ポイントにも関連付けられる、割り当てること、および
前記仮想トンネル・エンド・ポイントを介して配送される、各パケット・フローの各パケットに、前記対応する仮想反応ポイント識別子を含む輻輳通知タグを付けること、ならびに、
受信したパケットのサンプリングに基づいてパケット輻輳を検出したことに応じて、
輻輳ポイントを識別し、対応する仮想トンネル・エンド・ポイントに関連付けられる仮想輻輳ポイント識別子と、前記輻輳通知タグに含まれ、前記輻輳ポイントでのパケット輻輳に寄与している仮想マシンの仮想反応ポイント識別子とを含む、輻輳通知メッセージを生成すること、および、
前記対応する仮想トンネル・エンド・ポイントを介して、前記輻輳ポイントでのパケット輻輳に寄与している仮想マシンに前記輻輳通知メッセージを転送すること、
を実行させる、コンピュータ・プログラム。
【発明を実施するための形態】
【0009】
本発明の実施形態はオーバーレイ仮想環境に関し、具体的には、仮想ネットワーキング・システム内の量子化輻輳通知(QCN)に関する。一実施形態は、複数の仮想ネットワークを含む仮想ネットワーキング・システム内の量子化輻輳通知のための方法を提供する。各仮想ネットワークは、1つまたは複数のパケット・フローを生成するように構成された少なくとも1つの仮想マシンを含む。各パケット・フローの各パケットには、パケット・フローの対応する仮想フロー識別子を含む輻輳通知タグが付けられる。各パケット・フローは対応するトンネル・エンド・ポイントにマッピングされ、パケット・フローの各パケットは対応するトンネル・エンド・ポイントを介して配送される。各パケット・フローに関連付けられた各輻輳ポイントに対して輻輳通知メッセージが生成され、輻輳通知メッセージは、輻輳ポイントの仮想輻輳ポイント識別子および輻輳ポイントでのパケット輻輳に寄与している仮想マシンのソース・アドレスを含む。各輻輳ポイントは対応するトンネル・エンド・ポイントにマッピングされ、輻輳ポイントに関する各輻輳通知メッセージは対応するトンネル・エンド・ポイントを介して配送され、対応する仮想トンネル・エンド・ポイントは、輻輳ポイントでのパケット輻輳に寄与している仮想マシンに輻輳通知メッセージを転送する。
【0010】
別の実施形態は、複数の仮想ネットワークを含む仮想ネットワーキング・システムを提供する。各仮想ネットワークは、1つまたは複数のパケット・フローを生成するように構成された少なくとも1つの仮想マシンを含む。各仮想ネットワークは、仮想ネットワークの各仮想マシンによって生成された各パケット・フローの各パケットに、パケット・フローの対応する仮想フロー識別子を含む輻輳通知タグを付けるために構成されたトラフィック管理モジュールを含む、物理ネットワーク・インターフェース・カード(NIC)を含む。トラフィック管理モジュールは、さらに、各パケット・フローを仮想ネットワークの対応するトンネル・エンド・ポイントにマッピングするために構成され、パケット・フローの各パケットは対応するトンネル・エンド・ポイントを介して配送される。トラフィック管理モジュールは、さらに、各パケット・フローに関連付けられた各輻輳ポイントに対する輻輳通知メッセージを生成するために構成され、輻輳通知メッセージは、輻輳ポイントの仮想輻輳ポイント識別子、および輻輳ポイントでのパケット輻輳に寄与している仮想マシンのソース・アドレスを含む。トラフィック管理モジュールは、さらに、各輻輳ポイントを対応するトンネル・エンド・ポイントにマッピングするために構成され、輻輳ポイントに対する各輻輳通知メッセージは対応するトンネル・エンド・ポイントを介して配送され、対応する仮想トンネル・エンド・ポイントは、輻輳ポイントでのパケット輻輳に寄与している仮想マシンに輻輳通知メッセージを転送する。
【0011】
別の実施形態は、複数の仮想ネットワークを含む仮想ネットワーキング・システム内での量子化輻輳通知のためのコンピュータ・プログラム製品を提供し、各仮想ネットワークは、1つまたは複数のパケット・フローを生成するように構成された少なくとも1つの仮想マシンを含む。コンピュータ・プログラム製品は、プログラム・コードを記憶するコンピュータ可読記憶媒体を備え、プログラム・コードは、各パケット・フローの各パケットにパケット・フローの対応する仮想フロー識別子を含む輻輳通知タグを付けるために、コンピュータによって実行可能である。各パケット・フローは対応するトンネル・エンド・ポイントにマッピングされ、パケット・フローの各パケットは対応するトンネル・エンド・ポイントを介して配送される。プログラム・コードは、さらに、各パケット・フローに関連付けられた各輻輳ポイントに対して輻輳通知メッセージを生成するために、コンピュータによって実行可能であり、輻輳通知メッセージは、輻輳ポイントの仮想輻輳ポイント識別子および輻輳ポイントでのパケット輻輳に寄与している仮想マシンのソース・アドレスを含む。各輻輳ポイントは対応するトンネル・エンド・ポイントにマッピングされ、輻輳ポイントに関する各輻輳通知メッセージは対応するトンネル・エンド・ポイントを介して配送され、対応する仮想トンネル・エンド・ポイントは、輻輳ポイントでのパケット輻輳に寄与している仮想マシンに輻輳通知メッセージを転送する。
【0012】
本開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書で示される教示の実装はクラウド・コンピューティング環境に限定されないことを予め理解されよう。むしろ本発明の実施形態は、現在知られていないかまたは今後開発される任意の他のタイプのコンピューティング環境に関連して実装可能である。
【0013】
クラウド・コンピューティングは、最小の管理努力またはサービス・プロバイダとの対話で即時のプロビジョニングおよび解放が可能な、構成可能コンピューティング・リソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスのための、サービス送達のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開(デプロイメント)モデルを含むことができる。
【0015】
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダとの人間の対話を必要とせず、必要に応じて自動的にサーバ時間およびネットワーク・ストレージなどの、コンピューティング機能を一方的にプロビジョニングすることができる。
【0016】
ブロード・ネットワーク・アクセス:機能は、ネットワークを介して利用可能であり、異機種のシンまたはシック・クライアント・プラットフォーム(たとえば携帯電話、ラップトップ、およびPDA)による使用を促進する、標準機構を介してアクセスされる。
【0017】
リソース・プーリング:プロバイダのコンピューティング・リソースは、需要に応じて動的に割り当ておよび再割り当てされる異なる物理および仮想リソースを用いて、マルチテナント・モデルを使用する複数の消費者にサービスを提供するためにプールされる。消費者は一般に、提供されるリソースの正確な位置に対する制御または知識を持たないが、位置をより高い抽象化レベル(たとえば国、州、またはデータセンタ)で指定できる場合がある、という点において、位置独立感がある。
【0018】
高速弾性:機能は、即時にスケール・アウトするために、いくつかのケースでは自動的に、高速かつ弾性的にプロビジョニング可能であり、即時にスケール・インするために高速に解放可能である。消費者にとって、プロビジョニングに使用可能なこの機能はしばしば無制限であるように見え、いつでもいかなる量でも購入可能である。
【0019】
計測済みサービス:クラウド・システムは、サービスのタイプ(たとえばストレージ、処理、帯域幅、およびアクティブな消費者アカウント)に適切な何らかのレベルの抽象化で計測機能を利用することによって、リソースを自動的に制御および最適化する。利用されるサービスのプロバイダおよび消費者の両方に透明性を与えながら、リソース使用量を監視、制御、および報告することができる。
【0020】
サービス・モデルは以下の通りである。
【0021】
サービス型ソフトウェア(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で実行しているプロバイダのアプリケーションを使用することである。アプリケーションには、様々なクライアント・デバイスから、ウェブ・ブラウザ(たとえばウェブベースの電子メール)などのシン・クライアント・インターフェースを介してアクセス可能である。消費者は、限られた消費者特有のアプリケーション構成設定の可能性を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、あるいは個々のアプリケーション機能を含む、下にあるクラウド・インフラストラクチャを管理または制御しない。
【0022】
サービス型プラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者作成または獲得アプリケーションをクラウド・インフラストラクチャ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、下にあるクラウド・インフラストラクチャは管理または制御しないが、展開されたアプリケーションおよび可能なアプリケーション・ホスト環境構成に対する制御を有する。
【0023】
サービス型インフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティング・システムおよびアプリケーションを含むことが可能な任意のソフトウェアを消費者が展開および実行できる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。消費者は、下にあるクラウド・インフラストラクチャは管理または制御しないが、オペレーティング・システム、ストレージ、展開されたアプリケーション、および選択ネットワーキング構成要素(たとえばホスト・ファイアウォール)の可能な制限付き制御に対する制御を有する。
【0025】
プライベート・クラウド:クラウド・インフラストラクチャは、組織専用に動作する。組織または第三者による管理が可能であり、施設内または施設外に存在可能である。
【0026】
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、共通の問題(たとえばミッション、セキュリティ要件、ポリシー、およびコンプライアンス検討事項)を有する特定のコミュニティをサポートする。組織または第三者による管理が可能であり、施設内または施設外に存在可能である。
【0027】
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大企業グループが使用可能であり、クラウド・サービスを販売する組織によって所有される。
【0028】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、依然として固有のエンティティであるが、データおよびアプリケーションの移植性(たとえばクラウド間のロードバランシングのためのクラウド・バースティング)を可能にする標準化または専有技術によって互いに結び付けられた、2つまたはそれ以上の(プライベート、コミュニティ、またはパブリック)クラウドで構成される。
【0029】
クラウド・コンピューティング環境は、ステートレス性、疎結合、モジュール性、および意味論的相互動作性によるサービス重視である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【0030】
図1は、本発明の実施形態に従った、例示のクラウド・コンピューティング・ノード10のブロック図を示す。
図1に示されるクラウド・コンピューティング・ノード10は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明する本発明の実施形態の使用または機能性の範囲に関して、いかなる制限をも示唆することは意図されていない。ともかく、クラウド・コンピューティング・ノード10は、上記に示されたいずれの機能も実装または実行が可能である。
【0031】
クラウド・コンピューティング・ノード10は、多数の他の汎用または特定用途向けのコンピューティング・システム環境または構成で動作可能な、コンピュータ・システム/サーバ12を備える。コンピュータ・システム/サーバ12と共に使用するのに好適であり得る良く知られたコンピューティング・システム、環境、または構成の例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マルチプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【0032】
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令との一般的な関連において、説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、論理、データ構造、などを含むことができる。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境内で実施可能である。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよびリモートの両方のコンピュータ・システム記憶媒体内に配置可能である。
【0033】
コンピュータ・システム/サーバ12の構成要素は、1つまたは複数のプロセッサあるいは処理ユニット16、システム・メモリ28、および様々なシステム構成要素(たとえばシステム・メモリ28およびプロセッサ16)を結合するバス18を含むことができるが、これらに限定されない。バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、および任意の様々なバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、1つまたは複数のタイプのバス構造を表す。限定ではなく例として、こうしたアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(VESA)ローカル・バス、および周辺構成要素相互接続(PCI)バスを含む。
【0034】
コンピュータ・システム/サーバ12は、典型的には、様々なコンピュータ・システム可読媒体を含む。こうした媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の使用可能媒体とすることが可能であり、揮発性および不揮発性の媒体、取り外し可能および取り外し不可の媒体の、両方を含む。
【0035】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含むことができる。単なる例として、取り外し不可、不揮発性の磁気媒体(図示せず、典型的には「ハード・ドライブ」と呼ばれる)からの読み取りおよびこれへの書き込みのための、記憶システム34が提供可能である。図には示されていないが、取り外し可能、不揮発性の磁気ディスク(たとえば「フレキシブル・ディスク」)からの読み取りおよびこれへの書き込みのための磁気ディスク・ドライブ、および、CD−ROM、DVD−ROM、または他の光媒体などの、取り外し可能、不揮発性の光ディスクからの読み取りおよびこれへの書き込みのための光ディスク・ドライブが、提供可能である。こうしたインスタンスでは、1つまたは複数のデータ媒体インターフェースによって各々がバス18に接続可能である。以下でさらに図示および説明するように、システム・メモリ28は、本発明の実施形態の機能を実施するように構成されたプログラム・モジュールのセット(たとえば少なくとも1つ)を有する、少なくとも1つのプログラム製品を含むことができる。
【0036】
本発明の実施形態は、内部に(ベースバンド内に、または搬送波の一部として)コンピュータ可読プログラム・コードが具備された伝搬データ信号を含み得る、コンピュータ可読信号媒体として実装可能である。こうした伝搬信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むがこれらに限定されない様々な形のうちのいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを通信、伝搬、または移送可能な、任意のコンピュータ可読媒体とすることができる。
【0037】
コンピュータ可読媒体上に具備されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、無線周波数(RF)など、または上記の任意の好適な組み合わせを含むがこれらに限定されない、任意の適切な媒体を使用して伝送可能である。
【0038】
少なくとも1つのプログラム・モジュール42を含むプログラム/ユーティリティ40が、限定ではなく例として、システム・メモリ28、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ内に、記憶可能である。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはそれらの何らかの組み合わせの各々が、ネットワーキング環境の実装を含むことができる。プログラム・モジュール42は、一般に、本明細書に記載された実施形態の機能または方法を実行する。
【0039】
コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24、消費者がコンピュータ・システム/サーバ12と対話できるようにする1つまたは複数のデバイス、または、コンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(たとえばネットワーク・カード、モデムなど)といった、1つまたは複数の外部デバイス14とも通信可能である。こうした通信は、I/Oインターフェース22を介して実行可能である。さらにまた、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、一般のワイド・エリア・ネットワーク(WAN)、パブリック・ネットワーク(たとえばインターネット)などの、1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信可能である。図に示されるように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他の構成要素と通信する。図示されていないが、他のハードウェアまたはソフトウェアの構成要素が、コンピュータ・システム/サーバ12と共に使用可能であることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどが含まれるが、これらに限定されない。
【0040】
図2は、本発明の実施形態に従った、クラウド・コンピューティング環境50の例を示す。ここで
図2を参照すると、例示のクラウド・コンピューティング環境50が示されている。クラウド・コンピューティング環境50は、たとえば携帯情報端末(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、自動車コンピュータ・システム54Nなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイス54が通信可能な、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は互いに通信可能である。ノード10は、前述の専用、コミュニティ、公開、またはハイブリッドのクラウド、あるいはそれらの組み合わせなどの、1つまたは複数のネットワーク内で、物理的または仮想的にグループ化することができる(図示せず)。これによってクラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェアを、クラウド消費者がローカル・コンピューティング・デバイス上にリソースを維持する必要のないサービスとして提供することができる。
図2に示されるコンピューティング・デバイス54A〜Nのタイプは単なる例示であり、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定接続を介して(たとえばウェブ・ブラウザを使用して)、任意のコンピュータ化されたデバイスと通信可能であることを理解されよう。
【0041】
図3は、本発明の実施形態に従った、クラウド・コンピューティング環境50の抽象モデル層を示す。ここで
図3を参照すると、クラウド・コンピューティング環境50(
図2)によって提供される機能抽象層のセットが示されている。
図3に示される構成要素、層、および機能は単なる例示であり、本発明の実施形態はそれらに限定されないことをあらかじめ理解されたい。図に示されるように、以下の層および対応する機能が提供される。
【0042】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素の例はメインフレームを含む。一例では、IBM(R)zSeriesシステムおよびRISC(縮小命令セット・コンピュータ)アーキテクチャベース・サーバである。一例では、IBM pSeriesシステム、IBM xSeries(R)システム、IBM BladeCenter(R)システム、記憶デバイス、ネットワーク、およびネットワーキング構成要素である。ソフトウェア構成要素の例はネットワーク・アプリケーション・サーバ・ソフトウェアを含む。一例では、IBM WebSphere(R)アプリケーション・サーバ・ソフトウェアおよびデータベース・ソフトウェアである。一例では、IBM DB2(R)データベース・ソフトウェアである。(IBM、zSeries、pSeries、BladeCenter、WebSphere、およびDB2は、世界中の多くの管轄区域内で登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。)
【0043】
仮想化層62は、仮想サーバ、仮想ストレージ、仮想専用ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントという、仮想エンティティの例が提供可能な、抽象層を提供する。
【0044】
一例において、管理層64は以下で説明する機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために使用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計測および価格設定は、クラウド・コンピューティング環境内でリソースが使用される際のコスト追跡、およびこれらのリソースを消費するための課金またはインボイス作成を提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド消費者およびタスクに関する識別検証、ならびにデータおよび他のリソースに関する保護を提供する。消費者ポータルは、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、必要なサービス・レベルに合致するようなクラウド・コンピューティング・リソースの割り振りおよび管理を提供する。サービス内容合意書(SLA)の計画および履行は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースに関する事前取り決めおよびその調達を提供する。
【0045】
作業負荷層66は、クラウド・コンピューティング環境が使用可能な機能の例を提供する。この層から提供可能な作業負荷および機能の例は、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想学級教育配信、データ分析処理、トランザクション処理、ならびにカプセル化マッピングおよび通信を含む。前述のように、
図3に関して説明した前述のすべての例は単なる例示であり、本発明はこれらの例に限定されない。
【0046】
本明細書で説明する本発明のすべての機能は、典型的には、プログラム/ユーティリティ40のプログラム・コード42(
図1)のモジュールとして有形に具備可能な、ネットワーク非依存ネットワーク・インターフェース・システムによって実行されることを理解されよう。しかしながらその限りではない。むしろ本明細書に示される機能は、
図3に示される層60〜66のいずれかによっても実行、実装または有効化が可能である。
【0047】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に示される教示の実装はクラウド・コンピューティング環境に限定されないことに再度言及したい。むしろ本発明の実施形態は、現在知られているかまたは今後開発される任意のタイプのクラスタ化コンピューティング環境で実装されることが意図される。
【0048】
本発明の実施形態は、複数のカプセル化をサポートしているホスト間の相互運用性の提供に関する。一実施形態は、仮想スイッチに関するパケット・カプセル化プロトコル・タイプ情報のマッピングを含む方法を含む。各仮想スイッチは、1つまたは複数の仮想マシン(VM)に関連付けられる。一実施形態において、マッピングに基づき、第1の仮想スイッチに関連付けられた第1のVMおよび第2の仮想スイッチに関連付けられた第2のVMについて、1つまたは複数の共通カプセル化プロトコル・タイプが存在するかどうかが判別される。一実施形態において、第1の仮想スイッチおよび第2の仮想スイッチについて、1つまたは複数の共通カプセル化プロトコル・タイプが存在するものと判別された場合、共通カプセル化プロトコル・タイプが選択される。選択された共通カプセル化プロトコル・タイプを使用して、第1のVMと第2のVMとの間の通信のためにパケットがカプセル化される。
【0049】
図4は、本発明の実施形態を使用するための分散オーバーレイ仮想環境400を示すブロック図である。一実施形態において、分散オーバーレイ仮想環境400は、分散オーバーレイ仮想イーサネット(DOVE)ネットワーク・システムを含むことができる。分散オーバーレイ仮想環境400は、複数の仮想システム(またはネットワーク)405(一実施形態ではDOVEモジュールとも呼ばれる)を含む。各仮想システム405は、少なくとも1つのVM320を作成および実行するためのハイパーバイザ316を含む、サーバ310(またはホスト)を備える。各ハイパーバイザ316は、オーバーレイ機能(たとえばDOVE機能)を提供する少なくとも1つの仮想スイッチ315を含む。仮想システム405は、物理スイッチ、ルータ、サーバ、ゲートウェイ、ファイアウォールなどを含むことが可能な物理層325(たとえば物理ハードウェアおよびソフトウェア・プロセスを含む)の上に位置する。物理層325は下層と呼ばれる場合もある。仮想システム405は、物理スイッチ、ルータ、サーバ、ゲートウェイ、ファイアウォールなどの既存のハードウェア機構と相互動作する。
【0050】
一実施形態において、オーバーレイ・ネットワーク・セグメント1〜N305(たとえばオーバーレイ・ネットワーク・セグメント1〜3)は、異なる要素(たとえばハイパーバイザ316、VM320)の通信用に複数のシステムを接続し、ここでNは正の数(たとえば2、3、5、10など)である。3つのシステム405が示されているが、より多くの(またはより少ない)システム405を分散オーバーレイ仮想環境400内に含めることができることに留意されたい。一実施形態において、仮想スイッチ315はDOVEスイッチを含む。
【0051】
一実施形態において、オーバーレイ・ネットワーク・セグメント1〜N305はハイパーバイザ316間にオーバーレイ・ネットワークを作成して、パケットのカプセル化を使用し、1つのVM320から発信されるパケットがカプセル化され(たとえばオーバーレイおよび物理ネットワーク・ヘッダの追加)、物理層325(下層)を使用してターゲットVM320が常駐するサーバ310に送達される。一実施形態では、物理層325において、パケットを転送するために物理スイッチによって外側ヘッダが使用され、カプセル化ヘッダ内のオーバーレイ識別子(ID)がトラフィック分離を提供する。宛先サーバ310の仮想スイッチ315への着信パケットはカプセル化解除され(たとえばカプセル化ヘッダがパケットから除去され)、宛先VM320に送達される。各仮想スイッチ315はオーバーレイ機能を提供するように構成される。たとえば一実施形態において、各仮想スイッチ315は発信パケットをカプセル化し、着信パケットをカプセル化解除するように構成される。
【0052】
一実施形態において、異なる仮想システム405間でアドレス非依存性がサポートされる。たとえば、2つの異なるシステム405内で動作する2つの異なるVM320は、同じインターネット・プロトコル(IP)アドレスおよびメディア・アクセス制御(MAC)アドレスを有することができる。別の例として、システム405は、同じシステム405に属するVM320の、異なる物理サブネット内に配置された異なるホスト上への展開をサポートする(物理エンティティ間のスイッチまたはルータを含む)。別の実施形態において、異なるシステム405に属するVM320を同じ物理ホスト上でホストすることができる。さらに別の実施形態において、システム405は、VM320ネットワーク・アドレスの変更およびそのネットワーク接続の喪失なしに、データ・センタ内の任意の場所でのVM320マイグレーションをサポートする。
【0053】
一実施形態において、システム405は、(分散ポリシー・サービス(DPS)からの)ポリシーに基づく物理経路変換によってデータをカプセル化して、カプセル化されたデータをシステム405間で送信し、データはカプセル化解除された後、宛先VM320に転送される。一実施形態において、ポリシーは、特定のタスクを実行する下にある物理エンティティの詳細なしに、仮想ネットワークを介してデータがどのように送信される必要があるかを論理的に記述している。
【0054】
一実施形態において、ハイパーバイザ316(たとえばVM320マネージャ)は、複数のオペレーティング・システム(たとえばVM320などのVM)がホスト・コンピュータ上で同時に実行できるようにする。ハイパーバイザ316は、VM320に対する物理リソースの抽象化を提供する。たとえば物理ネットワーク・インターフェース・カード(NIC)は、システム405の仮想NIC(vNIC)として抽象化することができる。一実施形態において、仮想スイッチ315は、VM320に接続性を提供するための、ハイパーバイザ316内のイーサネット・スイッチのソフトウェア抽象化である。
【0055】
図5は、本発明の実施形態に従った、仮想ネットワーキング・システム100内のパケット配送を示す。システム100は、複数の仮想ネットワーク(システム)405を含む。各仮想ネットワーク405は、ハイパーバイザ316を実行する少なくとも1つのサーバ(ホスト)310を含む。ハイパーバイザ316は、1つまたは複数の仮想マシン320を作成および実行する。
【0056】
仮想ネットワーク405の各仮想マシン320は、別の仮想マシン320から着信パケットを受信したり、別の仮想マシン320に発信パケットを送信したりすることができる。一実施形態において、物理ネットワーク・インターフェース・コントローラ(NIC)デバイス420は、IPネットワーク250を介して異なる仮想ネットワーク405間でのパケット配送を容易にするために使用される。各仮想ネットワーク405は、オーバーレイ・ゲートウェイ415を介して仮想ネットワーク405をIPネットワーク250に接続する、対応する物理NICデバイス420を有する。
【0057】
各仮想ネットワーク405は、着信パケットおよび発信パケットを処理するための少なくとも1つのDOVEスイッチ315を含む。仮想ネットワーク405のDOVEスイッチ315は、仮想ネットワーク405の仮想マシン320から発信パケットを受信するように構成される。一実施形態において、DOVEスイッチ315は発信パケットに、対応する仮想ネットワーキング・タグ(たとえばVLANタグ)を付ける。DOVEスイッチ315は、仮想ネットワーク405に関して対応する物理NICデバイス420に発信パケットを送信する。DOVEスイッチ315は、さらに、物理NICデバイス420から着信パケットを受信するように構成される。着信パケットを受信すると、DOVEスイッチ315は、着信パケットがいずれの仮想マシン320をターゲットとしているかを判別し、そのターゲット仮想マシン320に着信パケットを送信する。
【0058】
各仮想ネットワーク405は、仮想ネットワーク405について対応する物理NIC 420と通信するためのNICドライバ410をさらに含む。
【0059】
図6は、本発明の実施形態に従った、
図5の物理NICデバイス420のブロック図である。オーバーレイ機能が仮想サーバ側ソフトウェア(すなわちハイパーバイザ316)によって提供される
図4とは異なり、
図6のオーバーレイ機能は物理NICデバイス420上にオフロードされる。物理NICデバイス420は、マルチレーン周辺構成要素相互接続エクスプレス(PCIe)インターフェース・モジュール421、受信/送信(RX/TX)バッファの第1のセット422、トンネル・マネージャ・モジュール423、アドレス解決プロトコル(ARP)および転送情報ベース(FIB)マネージャ・モジュール424、インターネット・プロトコル・マルチメディア通信(IPMC)サポート・モジュール425、パケット・カプセル化/カプセル化解除モジュール426、RX/TXバッファの第2のセット427、イーサネット・コントローラ428、およびトラフィック・マネージャ・モジュール430という、オーバーレイ・トンネリング機能をサポートする構成要素を少なくとも備える。
【0060】
マルチレーンPCIeインターフェース・モジュール421は、サーバ310と物理NICデバイス420との間でパケットを送受信し、物理NICデバイス420に関する制御パラメータをプログラミングし、物理NICデバイス420に関する統計および制御パラメータを読み取る、CPUインターフェースである。
【0061】
RX/TXバッファの第1のセット422は、サーバ310と物理NICデバイス420との間でパケットをバッファリングする。RX/TXバッファの第2のセット427は、物理NICデバイス420とオーバーレイ・ゲートウェイ415との間でパケットをバッファリングする。
【0062】
仮想ネットワーク405からの各発信パケットは、IPネットワーク250を介して別の仮想ネットワークに配送される前に、物理ネットワーク・ヘッダなどの補足データと共にカプセル化される。トンネル・マネージャ・モジュール423は、ソースMACおよび宛先MACなどの、各発信パケットが共にカプセル化されるデータを決定する。
【0063】
ARPおよびFIBマネージャ・モジュール424は、通信プロトコル(たとえばIEEE802.3およびIEEE802.11を介したIPv4)に基づいて、ネットワーク層アドレスをリンク層アドレスに解決する。ARPおよびFIBマネージャ・モジュール424は、パケット・ルーティング情報を含む転送テーブルも維持する。
【0064】
IPMCサポート・モジュール425は、各オーバーレイ・ネットワークのブロードキャスト・ドメインを下層ネットワーク・マルチキャスト・グループにマッピングし、それによってARPおよび他のブロードキャスト指向プロトコルを解決する。
【0065】
パケット・カプセル化/カプセル化解除モジュール426は、IPネットワーク250を介して発信パケットを別の仮想ネットワーク405に送信する前に、各発信パケットをカプセル化する。IPネットワーク250は、異なる仮想ネットワーク405の間でカプセル化されたパケットを伝搬する。パケット・カプセル化/カプセル化解除モジュール426は、IPネットワーク250を介して別の仮想ネットワーク405から受信した各着信パケットもカプセル化解除する。
【0066】
イーサネット・コントローラ428は、物理NICデバイス420とオーバーレイ・ゲートウェイ415との間で交換されたパケットを処理する。
【0067】
本明細書において以下で詳細に説明するように、トラフィック・マネージャ・アプリケーション・モジュール430は量子化輻輳通知(QCN)を容易にする。
【0068】
図7は、本発明の実施形態に従った、
図6のトラフィック・マネージャ・アプリケーション・モジュール430のブロック図である。トラフィック・マネージャ・アプリケーション・モジュール430は、仮想ネットワーク405などのサーバ310上で実行する仮想化環境に対するQCNを容易にする。
【0069】
仮想輻輳ポイント(VCP)は、大容量のパケットが仮想トンネル・エンド・ポイント(VTEP)450から当該VCPを横切って配送される結果として輻輳し始める、仮想ネットワーキング・システム100のリソースを表す。たとえばVCPは、仮想マシン320に関するQCN対応の仮想優先度付きキューのセット431とすることが可能であり、セット431は、(たとえばDOVEスイッチ315内の)サーバ310上またはオーバーレイ・トンネリング機能を備える物理NICデバイス420上の、いずれかで維持される。各VCPは少なくとも1つのVTEP450に関連付けられる。各VTEP450は、物理NICデバイス420を介して物理オーバーレイ・ゲートウェイ・スイッチからトラフィックを受信し、このトラフィックをVTEP450に関連付けられたVCPに転送するように構成される。
【0070】
各VCPはQCN設定で構成される。VCPがトラフィックで輻輳される場合、VCPは輻輳に寄与しているトラフィックのソースにCNMを返送する。ソースは、同じオーバーレイ・ネットワーク内の物理反応ポイント(RP)または仮想反応ポイント(VRP)とすることができる。
【0071】
仮想反応ポイント(VRP)は、1つまたは複数のデータ(たとえばパケット)のフローを仮想ネットワーキング・システム100に注入するトラフィック生成のソースおよびシンクを表す。たとえば、VRPは仮想マシン320に対するQCN対応の仮想優先度付きキューのセット431とすることが可能であり、セット431は仮想マシン320のvNICに関連付けられる。トラフィック・マネージャ・アプリケーション・モジュール430は、VRPに関するデータ・フローの注入レートを調整するために、輻輳通知メッセージ(CNM)を使用する。本明細書において以下で詳細に説明するように、各VCPまたは物理輻輳ポイント(CP)は、VCPまたはCPで輻輳を発生させる同じオーバーレイ・ネットワーク内のVRPまたはRPをターゲットとする輻輳通知メッセージ(CNM)を生成する。
【0072】
トラフィック・マネージャ・アプリケーション・モジュール430は、各仮想マシン320に対する仮想優先度付きキューのセット431、メモリ・ユニット432、トンネル・インターフェース・マネージャ・モジュール435、RX/TXインターフェース・モジュール436、PCIeおよびダイレクト・メモリ・アクセス(DMA)ブロック・モジュール437、VRP/VCPマネージャおよび分類モジュール438、ならびにキュー・マネージャおよびQCN論理モジュール439、という構成要素を少なくとも備える。
【0073】
VRP/VCPマネージャおよび分類モジュール438は、仮想反応ポイント識別子(VRPID)を作成および管理する。各VRPIDは、仮想ネットワーキング・システム100内のVRPを識別する16ビット識別子である。VRPIDは、QCN標準(たとえばIEEE802.1Qau)によって定義されたフロー識別子にマッピングする。
【0074】
VRPは1つまたは複数のVRPID(すなわちフロー識別子)を有することができる。複数のパケット・フローを生成するVRPは複数のVRPIDを有することができ、各VRPIDはVRPによって生成されたフローに対応する。VRPは別々のキューイングおよびバッファリング・リソースを、フローに関連付けられた各VRPIDに割り振る。
【0075】
具体的には、VRP/VCPマネージャおよび分類モジュール438は対応する仮想ネットワーク405の各仮想マシン320に少なくとも1つの対応するVRPIDを割り当てる。各VRPIDは、QCN標準(たとえばIEEE802.1Qau)によって定義されたフロー識別子または反応ポイント識別子(RPID)にマッピングする。キュー・マネージャおよびQCN論理モジュール439は、VRPIDに基づいてパケットを分類する。
【0076】
VRP/VCPマネージャおよび分類モジュール438は、仮想輻輳ポイント識別子(VCPID)も作成および管理する。各VCPIDは、仮想ネットワーキング・システム100内のVCPを識別する64ビット識別子である。具体的には、VRP/VCPマネージャおよび分類モジュール438は、対応する仮想ネットワーク405内の各VCPに対応するVCPIDを割り当てる。各VCPIDはQCN標準(たとえばIEEE802.1Qau)によって定義された輻輳ポイント識別子(CPID)にマッピングする。
【0077】
仮想マシン320に対する仮想優先度付きキューの各セット431は、複数の仮想優先度付きキュー431PQを含む。一実施形態において、トラフィック管理モジュール430は仮想マシン320に対する複数の仮想優先度付きキュー431PQをサポートしているため、仮想マシン320には複数のVRPIDを割り当てることができる。
【0078】
キュー・マネージャおよびQCN論理モジュール439は、パケットに対してキューイングおよびデキューイング動作を実行する。具体的には、キュー・マネージャおよびQCN論理モジュール439は、1つまたは複数の仮想優先度付きキュー431PQを、対応する仮想ネットワーク405の各仮想マシン320に割り当てる。リソースのキューイングおよびバッファリングは、サーバ310(たとえばDOVEスイッチ315)内または物理NICデバイス420内で維持することができる。
【0079】
キュー・マネージャおよびQCN論理モジュール439は、各仮想優先度付きキュー431PQ上のQCNも容易にする。具体的には、各仮想優先度付きキュー431PQについて、キュー・マネージャおよびQCN論理モジュール439は、仮想マシン320によって生成された各発信パケットに、仮想マシン320に対する対応するVRPIDを含む輻輳通知(CN)タグを付ける。
【0080】
キュー・マネージャおよびQCN論理モジュール439は、事前にプログラミングされたQCN論理に基づいて、各仮想優先度付きキュー431PQ上のフレームのサンプリングも行う。サンプリングに基づいて輻輳された各仮想優先度付きキュー431PQについて、キュー・マネージャおよびQCN論理モジュール439は、輻輳に寄与しているパケットのCNタグに含まれるVRPIDまたはRPIDをターゲットとするCNMを生成する。
【0081】
キュー・マネージャおよびQCN論理モジュール439は、対応する仮想ネットワーク405の仮想マシン320をターゲットとする着信パケットがトラバースする仮想ネットワーキング・システム100の経路に沿って、VCPによって生成されるCNMの処理も行う。キュー・マネージャおよびQCN論理モジュール439は各CNMを復号し、CNMに含まれるVRPIDに基づいて輻輳に寄与しているVRPを決定して、VRPIDと共に仮想マシン320にCNMを転送し、ここで仮想マシン320の仮想反応ポイント伝送(TX)論理が、受信したCNMに基づいてパケット生成の対応レートを調整する(たとえば生成される発信パケットのレートを下げる)。
【0082】
トンネル・マネージャ・インターフェース・モジュール435は、キュー・マネージャおよびQCN論理モジュール439が各パケットに関するトンネリング・パラメータを受信し、パケットに関する対応するVRPIDまたはVCPIDを決定できるように、物理NICデバイス420のトンネル・マネージャ・モジュール423をキュー・マネージャおよびQCN論理モジュール439とインターフェースさせる。
【0083】
メモリ・ユニット432はバッファ・マネージャ433およびバッファ・メモリ434を備える。バッファ・マネージャ433はバッファ・メモリ434を管理する。具体的には、バッファ・マネージャ433は、最大伝送単位(MTU)サイズおよびバッファ・サイズ要件に少なくとも部分的に基づいて、バッファ・メモリ434を(固定サイズまたは可変サイズの)複数のバッファに分割する。
【0084】
各バッファは、バッファ・マネージャ433によって管理される対応するバッファ・ヘッダを有する。受信したあらゆるパケットについて、バッファ・マネージャ433は1つまたは複数のバッファをキュー・マネージャおよびQCN論理モジュール439に割り振る。バッファ・マネージャ433は、キュー・マネージャおよびQCN論理モジュール439から1つまたは複数のバッファを再利用する9ことも可能である。バッファ・マネージャ433は、どれだけのバッファが空いており、どれだけのバッファが使用されているかなどの、バッファに関する統計を追跡する。
【0085】
RX/TXインターフェースは、論理を送受信するための物理インターフェースを表す。
【0086】
PCIeおよびダイレクト・メモリ・アクセス(DMA)ブロック・モジュール437は、サーバ310と物理NICデバイス420との間でパケットを送受信し、物理NICデバイス420に関する制御パラメータをプログラミングし、物理NICデバイス420に関する統計および制御パラメータを読み取る、CPUインターフェースである。
【0087】
一実施形態において、対応するCNタグを備える各発信パケットについて、キュー・マネージャおよびQCN論理モジュール439は、発信パケットに関する最外部カプセル化パケット内にCNタグを複製/コピーする。具体的には、キュー・マネージャおよびQCN論理モジュール439は、トンネル・マネージャ・インターフェース・モジュール435を介して、トンネル・マネージャ・モジュール423から発信パケットに関するトンネリング・パラメータ(たとえば、発信パケットが配送される際に介するトンネル・エンド・ポイントに関するパラメータ)を受信する。受信したトンネリング・パラメータに基づいて、キュー・マネージャおよびQCN論理モジュール439は、パケットを転送するトンネル・エンド・ポイントに関するソースMACアドレス、およびパケットの転送先となるトンネル・エンド・ポイントに関する宛先MACアドレスなどの、最外部カプセル化パケットに含められることになるデータを決定する。次にキュー・マネージャおよびQCN論理モジュール439は、CNタグのコピーを最外部カプセル化パケット内に挿入する。したがって発信パケットは、最内部CNタグ(すなわち、発信パケット内のCNタグ)および最外部CNタグ(すなわち、発信パケットが共にカプセル化される最外部カプセル化パケット内のCNタグ)の、2つのCNタグを有する。
【0088】
発信パケットに関する最外部カプセル化パケットのみを検査する非オーバーレイ輻輳ポイント(たとえばIPネットワーク250の物理スイッチ/ルータ325)は、最外部CNタグを処理することができる。発信パケットの最内部パケットを検査できるオーバーレイ輻輳ポイント(たとえばDOVEスイッチ315、物理NICデバイス420)は、最内部CNタグを処理することができる。
【0089】
図8は、本発明の実施形態に従った、
図5の仮想ネットワーク405によって生成された発信パケットの処理を示す。仮想ネットワーク405は、仮想マシンVM0、VM1、VM2、・・・、およびVMnなどの、サーバ310上で実行する複数の仮想マシン320を含むことができる。仮想ネットワーク405に関する対応する物理NICデバイス420は、各仮想マシン320から発信されるパケットの各フローにVRPIDを割り当てる。
【0090】
たとえば、
図8に示されるように、物理NICデバイス420は、仮想マシンVM0によって生成されたパケットのフローにVRPID0を、仮想マシンVM1によって生成されたパケットのフローにVRPID1を、仮想マシンVM2によって生成されたパケットのフローにVRPID2を、・・・、仮想マシンVMnによって生成されたパケットのフローにVRPIDnを、割り当てる。
【0091】
物理NICデバイス420は、発信パケットに関するトンネリング・パラメータ(たとえば、発信パケットをIPネットワーク250に転送するVTEP450に関するパラメータ)に基づいて、各発信パケットをカプセル化する。
【0092】
VTEP450から出る各パケットは、対応するVRPIDまたはVCPIDに多重分離される。具体的には、各VRPIDおよび各VCPIDが対応するVTEP450にマッピングされる。
【0093】
たとえば、
図8に示されるように、VRPID0およびVRPID1がVTEP0にマッピングされ、VRPID2がVTEP1にマッピングされ、・・・、VRPIDnがVTEPnにマッピングされる。したがって、VRPID0またはVRPID1のいずれかが割り当てられたフローの各発信パケットはVTEP0のソースMACアドレスと共にカプセル化され、VRPID2が割り当てられたフローの各発信パケットはVTEP1のソースMACアドレスと共にカプセル化され、VRPIDnが割り当てられたフローの各発信パケットはVTEPnのソースMACアドレスと共にカプセル化される。
【0094】
オーバーレイCP(たとえばDOVEスイッチ315、物理NICデバイス420)によって生成されたCNMは、オーバーレイCPでの輻輳に寄与している仮想マシン320に関するVRPIDおよびソースMACアドレスを含む。非オーバーレイCP(たとえばIPネットワーク250の物理スイッチ/ルータ325)によって生成されたCNMは、非オーバーレイCPでの輻輳に寄与している仮想トンネル・エンド・ポイントに関するVRPIDおよびソースMACアドレスを含む。
【0095】
物理NICデバイス420は、オーバーレイ・ゲートウェイ415を介してIPネットワーク250とパケットを交換するためのポート440をさらに含む。
【0096】
図9は、本発明の実施形態に従った例示のパケット150を示す。パケット150は、パケットに関する宛先を識別する宛先アドレス(たとえばパケットの送信/ブロードキャスト先である仮想マシン320のMACアドレス)、パケットに関するソースを識別するソース・アドレス(たとえばパケットを生成した仮想マシン320のMACアドレス)、Sタグ(たとえば802.1Q VLANタグ)、Cタグ、CNタグ、パケットが搬送しているデータを含むイーサネット・ペイロード情報、および巡回冗長検査(CRC)情報、という情報を、少なくとも含む。
【0097】
一実施形態において、CNタグはQCNイーサネット・タイプ識別子、およびパケットが生成したVRPを識別するVRPIDを含む。一実施形態において、宛先アドレスは6バイト長さであり、ソース・アドレスは6バイト長さであり、Sタグは4バイト長さであり、Cタグは4バイト長さであり、CNタグは、QCNイーサネット・タイプに関する2バイトおよびVRPIDまたはフロー識別子に関する2バイトを含む4バイト長さであり、CRC情報は2バイト長さである。
【0098】
図10は、本発明の実施形態に従った、例示のカプセル化パケット160を示す。各発信パケット150がIPネットワーク250に転送される前に、物理NICデバイス420は、レイヤ2(L2)ヘッダなどの補足データを含む最外部カプセル化パケットと共に発信パケット150をカプセル化する。
【0099】
たとえば、
図10に示されるように、カプセル化パケット160は、L2ヘッダを含む最外部カプセル化パケット、および
図9で識別された情報を含む最内部パケットを含む。L2ヘッダは、パケットの宛先を識別する宛先アドレス(たとえば、パケットの送信/ブロードキャストの宛先である仮想トンネル・エンド・ポイントのMACアドレス)およびパケットのソースを識別するソース・アドレス(たとえば、パケットを転送する仮想トンネル・エンド・ポイントのMACアドレス)を含むことができる。
【0100】
別の例として、カプセル化パケット160は、L2ヘッダおよびレイヤ3(L3)ヘッダを含む最外部カプセル化パケット、および
図9で識別された情報を含む最内部パケットを含む。
【0101】
一実施形態において、物理NICデバイス420は、最内部パケット内のCNタグ(すなわち最内部CNタグ)のコピー/複製を最外部カプセル化パケット内に挿入し、それによって最外部CNタグを作成する。
【0102】
発信パケットに関する最外部カプセル化パケットのみを検査する非オーバーレイ輻輳ポイント(たとえばIPネットワーク250の物理スイッチ/ルータ325)は、最外部CNタグを処理することができる。発信パケットの最内部パケットを検査できるオーバーレイ輻輳ポイント(たとえばDOVEスイッチ315、物理NICデバイス420)は、最内部CNタグを処理することができる。
【0103】
図11は、本発明の実施形態に従った、
図8の仮想ネットワーク405に関するVCPIDを示す。物理NICデバイス420は、ポート440を介して異なるトンネル・エンド・ポイントをターゲットとする着信パケットを受信する。物理NICデバイス420は、各仮想マシン320に対して輻輳ポイントのうちの1つを識別するVCPIDを割り当てる。たとえば、
図11に示されるように、物理NICデバイス420は、輻輳ポイントを伴う仮想マシンVM0、VM1、VM2、・・・、およびVMnに、それぞれVCPID0、VCPID1、VCPID2、・・・、VCPIDnのVCPIDを割り当てる。
【0104】
各VCPIDは対応するVTEP450にマッピングされる。たとえば
図11に示されるように、VCPID0およびVCPID1はVTEP0にマッピングされ、VCPID2はVTEP1にマッピングされ、・・・、VCPIDnはVTEPnにマッピングされる。したがって、VCPID0またはVCPID1に関連付けられた各発信パケットはVTEP0のソースMACアドレスと共にカプセル化され、VCPID2に関連付けられた各発信パケットはVTEP1のソースMACアドレスと共にカプセル化され、VCPIDnに関連付けられた各発信パケットはVTEPnのソースMACアドレスと共にカプセル化される。
【0105】
さらに、VTEP0のソースMACアドレスと共にカプセル化された各着信パケットはVCPID0またはVCPID1のいずれかに関連付けられ、VTEP1のソースMACアドレスと共にカプセル化された各着信パケットはVCPID2に関連付けられ、VTEPnのソースMACアドレスと共にカプセル化された各着信パケットはVCPIDnに関連付けられる。
【0106】
図12は、本発明の実施形態に従った例示のCNM170を示す。CNM170は、CNM170に関する宛先を識別する宛先アドレス(たとえばCNMの送信/ブロードキャスト先である仮想マシン320のMACアドレス)、CNMに関するソースを識別するソース・アドレス(たとえばCNMを生成した輻輳ポイントのMACアドレス)、Sタグ(たとえば802.1Q VLANタグ)、Cタグ、CNタグ、CNMペイロード情報、および巡回冗長検査(CRC)情報、という情報を、少なくとも含む。
【0107】
一実施形態において、CNMペイロード情報は、サンプリングされたデータ・フレームのMACサービス・データ・ユニット(MSDU)、カプセル化されたフレーム長さ情報、カプセル化された宛先MACアドレス、カプセル化された優先度識別子、Qdelta、Q
offset、輻輳ポイントを識別するVCPID、QntzFb、予約済み識別子、およびバージョン識別子を含む。
【0108】
一実施形態において、宛先アドレスは6バイト長さであり、ソース・アドレスは6バイト長さであり、Sタグは4バイト長さであり、Cタグは4バイト長さであり、CNタグは4バイト長さであり、サンプリングされたデータ・フレームMSDUは64バイト長さであり、カプセル化された宛先MACアドレスは48ビット長さであり、カプセル化された優先度識別子は16ビット長さであり、Qdeltaは16ビット長さであり、Q
offsetは16ビット長さであり、VCPIDは64ビット長さであり、QntzFbは6ビット長さであり、予約済み識別子は6ビット長さであり、バージョン識別子は6ビット長さであり、CRC情報は2バイト長さである。
【0109】
図13は、本発明の実施形態に従った、1つまたは複数の仮想マシンを含む仮想ネットワークによって生成された発信パケットの処理に関する、例示のプロセス600のフローチャートを示す。プロセス・ブロック601で、VRPIDを各仮想マシンに割り当てる。プロセス・ブロック602で、各仮想マシンからの各発信パケットに、仮想マシンに関するVRPIDを含むCNタグを付ける。プロセス・ブロック603で、カプセル化データと共に各発信パケットをカプセル化し、カプセル化データは発信パケットに関するCNタグのコピーを含む。プロセス・ブロック604で、カプセル化された発信パケットをターゲットの宛先に転送する。
【0110】
図14は、本発明の実施形態に従った、CNMを生成するための例示のプロセス700のフローチャートを示す。プロセス・ブロック701で、配送用のパケットを受信する。プロセス・ブロック702で、受信したパケットに対してQCNサンプリングを実行する。プロセス・ブロック703で、サンプリングに基づいて輻輳が検出された場合、CPを識別するVCPID、および輻輳に寄与している仮想マシンを識別するVRPIDを含む、CNMを生成する。プロセス・ブロック704で、輻輳に寄与している仮想マシンにCNMを転送する。
【0111】
図15は、本発明の一実施形態を実装するために有用な情報処理システム300を示す、高水準ブロック図である。コンピュータ・システムは、プロセッサ302などの1つまたは複数のプロセッサを含む。プロセッサ302は通信インフラストラクチャ304(たとえば通信バス、クロスオーバ・バー、またはネットワーク)に接続される。
【0112】
コンピュータ・システムは、グラフィックス、テキスト、および通信インフラストラクチャ304からの(または図示されていないフレーム・バッファからの)他のデータを、ディスプレイ・ユニット308上で表示するために転送する、ディスプレイ・インターフェース306を含むことができる。コンピュータ・システムは、メイン・メモリ310、好ましくはランダム・アクセス・メモリ(RAM)も含み、2次メモリ312も含むことができる。2次メモリ312は、たとえば、ハード・ディスク・ドライブ314および、たとえばフレキシブル・ディスク・ドライブ、磁気テープ・ドライブ、または光ディスク・ドライブを表す、取り外し可能ストレージ・ドライブ316を含むことができる。取り外し可能ストレージ・ドライブ316は、当業者に良く知られた方法で、取り外し可能ストレージ・ユニット318からの読み取り、または取り外し可能ストレージ・ユニット318への書き込みを行う。取り外し可能ストレージ・ユニット318は、取り外し可能ストレージ・ドライブ316による読み取りおよび書き込みが行われる、たとえばフレキシブル・ディスク、コンパクト・ディスク、磁気テープ、または光ディスクなどを表す。理解されるように、取り外し可能ストレージ・ユニット318は、コンピュータ・ソフトウェアやデータを記憶するコンピュータ可読媒体を含む。
【0113】
代替の実施形態において、2次メモリ312は、コンピュータ・プログラムまたは他の命令をコンピュータ・システムにロードできるようにするための他の同様の手段を含むことができる。こうした手段は、たとえば取り外し可能ストレージ・ユニット350およびインターフェース322を含むことができる。こうした手段の例は、(ビデオ・ゲーム・デバイスで見られるような)プログラム・パッケージおよびパッケージ・インターフェース、取り外し可能メモリ・チップ(EPROMまたはPROMなど)および関連付けられたソケット、ならびに、ソフトウェアおよびデータを取り外し可能ストレージ・ユニット350からコンピュータ・システムに転送できるようにする他の取り外し可能ストレージ・ユニット350およびインターフェース322を含むことができる。
【0114】
コンピュータ・システムは通信インターフェース324も含むことができる。通信インターフェース324は、ソフトウェアおよびデータをコンピュータ・システムと外部デバイスとの間で転送できるようにする。通信インターフェース324の例は、モデム、ネットワーク・インターフェース(イーサネット・カードなど)、通信ポート、またはPCMCIAスロットおよびカードなどを含むことができる。通信インターフェース324を介して転送されるソフトウェアおよびデータは、たとえば電子、電磁、光、または通信インターフェース324による受信が可能な他の信号とすることが可能な、信号の形である。信号は、通信経路(すなわちチャネル)326を介して通信インターフェース324に提供される。この通信経路326は信号を搬送し、ワイヤまたはケーブル、光ファイバ、電話回線、携帯電話リンク、RFリンク、または他の通信チャネル、あるいはそれらすべてを使用して、実装可能である。
【0115】
本書では、「コンピュータ・プログラム媒体」、「コンピュータ使用可能媒体」、および「コンピュータ可読媒体」という用語は、一般にメイン・メモリ310および2次メモリ312、取り外し可能ストレージ・ドライブ316、ならびにハード・ディスク・ドライブ314にインストールされたハード・ディスクなどの媒体を表すために使用される。
【0116】
コンピュータ・プログラム(コンピュータ制御論理とも呼ばれる)は、メイン・メモリ310および2次メモリ312に記憶される。コンピュータ・プログラムは、通信インターフェース324を介して受信することもできる。こうしたコンピュータ・プログラムは、実行された場合、コンピュータ・システムが本明細書で考察された本発明の特徴を実行できるようにする。特にコンピュータ・プログラムは、実行された場合、プロセッサ302がコンピュータ・システムの特徴を実行できるようにする。したがって、こうしたコンピュータ・プログラムはコンピュータ・システムのコントローラを表す。
【0117】
上記の説明から、本発明が、本発明の実施形態を実装するためのシステム、コンピュータ・プログラム製品、および方法を提供することがわかるであろう。本発明は、階層型ルーティング、およびニューラル・ネットワークにおける構造的柔軟性を伴う2方向情報フローのための、持続性コンピュータ使用可能記憶媒体をさらに提供する。持続性コンピュータ使用可能記憶媒体はコンピュータ可読プログラムを有し、プログラムはコンピュータ上で処理されると、本明細書で説明される実施形態に従って本発明のステップをコンピュータに実装させる。特許請求の範囲における単数形での要素への言及は、明示的に示されていない限り「唯一無二」を意味するものとは意図されておらず、むしろ「1つまたは複数」である。当業者に現在知られているかまたは今後知られることになる前述の例示の実施形態の要素に対するすべての構造上および機能上の等価物は、本特許請求の範囲によって包含されるものと意図される。本明細書において請求されるいかなる要素も、その要素が「関する手段」または「関するステップ」という句を用いて明示的に示されていない限り、米国特許法第112条第6段落の規定に基づくものと解釈される。
【0118】
本明細書で使用される用語は、特定の実施形態のみを説明するためのものであり、本発明を限定するものとは意図されない。本明細書で使用される場合、単数形「a」、「an」、および「the」は、文脈が明白に示していない限り複数形も含むものと意図される。「含む」および「含んでいる」は、本明細書で使用される場合、示された特徴、整数、ステップ、動作、要素、または構成要素、あるいはそれらすべての存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループ、あるいはそれらすべての存在または追加を排除するものではないことをさらに理解されよう。
【0119】
以下の特許請求の範囲におけるすべての手段またはステップならびに機能要素の対応する構造、材料、動作、および等価物は、具体的に請求される場合、他の請求される要素との組み合わせで機能を実行するための任意の構造、材料、または動作を含むものと意図される。本発明の説明は例示および説明の目的で提示してきたが、本発明が開示された形で網羅または限定されるものとは意図されない。当業者であれば、本発明の範囲および趣旨を逸脱することなく、多くの修正および変形が明らかとなろう。実施形態は、本発明の原理および実際の適用例を最もよく説明するため、ならびに、企図された特定の用途に好適な様々な修正を伴う様々な実施形態に関して本発明を他の当業者が理解できるようにするために、選択および説明された。