(57)【要約】複数の仮想ネットワークインターフェースカード（ｖＮＩＣ）および入力／出力（Ｉ／Ｏ）処理複合体を備える集約装置が説明される。ｖＮＩＣは、複数の処理装置と通信している。各処理装置は、少なくとも１つの仮想マシン（ＶＭ）を備える。Ｉ／Ｏ処理複合体は、ｖＮＩＣと少なくとも１つの物理ＮＩＣとの間に存在する。Ｉ／Ｏ処理複合体は、少なくとも１つのプロキシＮＩＣと、１つの仮想スイッチとを含む。仮想スイッチは、少なくとも１つのＶＭと少なくとも１つのプロキシＮＩＣとの間で、複数のｖＮＩＣのうち１つのｖＮＩＣによって確立された通信経路を経由して、複数の処理装置のうち１つの処理装置とデータを交換する。【選択図】図２
2015521779.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの仮想マシン（ＶＭ）を有する複数の処理装置と通信する、複数の仮想ネットワークインターフェースカード（ｖＮＩＣ）と、
前記ｖＮＩＣと、少なくとも１つの物理ＮＩＣとの間に論理的に位置する入力／出力（Ｉ／Ｏ）処理複合体であって、前記Ｉ／Ｏ処理複合体は、少なくとも１つのプロキシＮＩＣと仮想スイッチとを含み、前記仮想スイッチは、前記少なくとも１つのＶＭと前記少なくとも１つのプロキシＮＩＣとの間で、前記複数のｖＮＩＣのうち１つのｖＮＩＣによって確立された通信経路を経由して、前記複数の処理装置のうち１つの処理装置とデータを交換する、入力／出力（Ｉ／Ｏ）処理複合体と、を備える、集約装置。
【請求項２】
前記Ｉ／Ｏ処理複合体は、前記処理装置と前記仮想スイッチとの間で交換した前記データを一時的に記憶するメモリをさらに含む、請求項１に記載の集約装置。
【請求項３】
前記少なくとも１つのプロキシＮＩＣのうち１つのプロキシＮＩＣは、前記通信経路から前記メモリに前記データを出力する、請求項２に記載の集約装置。
【請求項４】
前記少なくとも１つのプロキシＮＩＣのうち１つのプロキシＮＩＣは、送信先処理装置への出力のために前記メモリから前記データを取り出す、請求項２に記載の集約装置。
【請求項５】
前記通信経路は、前記ｖＮＩＣに対応する前記処理装置のｖＮＩＣインターフェースと、前記少なくとも１つのプロキシＮＩＣとの間に延在する、請求項２に記載の集約装置。
【請求項６】
前記Ｉ／Ｏ処理複合体に結合されたスイッチファブリックをさらに備え、前記スイッチファブリックは複数のポートを含み、前記データは、前記複数のポートのうち入力ポートから受信され、前記複数のポートのうち出力ポートを経由して前記Ｉ／Ｏ処理複合体に出力される、請求項１に記載の集約装置。
【請求項７】
前記処理装置は仮想化されたサーバノードを含む、請求項１に記載の集約装置。
【請求項８】
前記仮想スイッチは、前記少なくとも１つの物理ＮＩＣを経由して前記処理装置とリモートの電子装置との間でデータを交換するために、前記少なくとも１つの物理ＮＩＣに接続されている、請求項１に記載の集約装置。
【請求項９】
前記集約装置および前記複数の処理装置を接続するためのペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）コネクタをさらに備える、請求項１に記載の集約装置。
【請求項１０】
前記集約装置の前記仮想スイッチは、前記交換したデータに関するセキュリティ機能を提供する、請求項１に記載の集約装置。
【請求項１１】
少なくとも１つの仮想マシン（ＶＭ）を有する、複数のサーバノードと、
前記複数のサーバノード間で結合される集約装置であって、
前記サーバノードと通信する複数の仮想ネットワークインターフェースカード（ｖＮＩＣ）と、
少なくとも１つのプロキシＮＩＣと、前記少なくとも１つのＶＭと少なくとも１つのプロキシＮＩＣとの間で、前記複数のｖＮＩＣのうち１つのｖＮＩＣによって確立された通信経路を経由して、前記複数のサーバノードのうちの１つのサーバノードとデータを交換する１つの仮想スイッチと、を含む、入力／出力（Ｉ／Ｏ）処理複合体と、を含む、集約装置と、
を備える、サーバ集約システム。
【請求項１２】
前記複数のサーバノードのうち少なくとも１つのサーバノードは、前記複数のｖＮＩＣのうち前記ｖＮＩＣと通信している仮想インターフェースを含み、前記通信経路は、前記仮想インターフェースと前記少なくとも１つのプロキシＮＩＣとの間に延在する、請求項１１に記載のサーバ集約システム。
【請求項１３】
前記仮想インターフェースは、
前記サーバノードのメモリと前記集約装置との間の通信を確立する仮想ＤＭＡエンジンと、
前記ｖＮＩＣに送信されたデータが処理対象となる旨を前記ｖＮＩＣに通知するメールボックスと、
前記サーバノードへのデータの到着を示して、前記サーバノードのプロセッサへの割り込みを提供する割り込み発生器と、
前記サーバノードに対応する少なくとも１つのｖＮＩＣを制御するデータを含む１組のレジスタと、を備える、請求項１２に記載のサーバ集約システム。
【請求項１４】
前記Ｉ／Ｏ処理複合体は、前記サーバノードと前記仮想スイッチとの間で交換した前記データを一時的に記憶するメモリをさらに含む、請求項１１に記載のサーバ集約システム。
【請求項１５】
前記少なくとも１つのプロキシＮＩＣのうち１つのプロキシＮＩＣは、前記通信経路から前記メモリに前記データを出力する、請求項１４に記載のサーバ集約システム。
【請求項１６】
前記少なくとも１つのプロキシＮＩＣのうち１つのプロキシＮＩＣは、前記複数のサーバノードのうち送信先サーバノードへの出力のために、前記メモリから前記データを取り出す、請求項１４に記載のサーバ集約システム。
【請求項１７】
第２の通信経路は、送信先ｖＮＩＣに対応する前記送信先サーバノードの仮想インターフェースと、前記プロキシＮＩＣとの間に延在する、請求項１６に記載のサーバ集約システム。
【請求項１８】
前記Ｉ／Ｏ処理複合体に結合されたスイッチファブリックであって、複数のポートを含み、前記複数のポートのうち入力ポートが前記データを受信し、前記複数のポートのうち出力ポートを経由して前記データを前記Ｉ／Ｏ処理複合体に出力する、スイッチファブリック、をさらに備える、請求項１１に記載のサーバ集約システム。
【請求項１９】
前記仮想スイッチは、前記交換したデータに関するセキュリティ機能を提供する、請求項１１に記載のサーバ集約システム。
【請求項２０】
仮想化ネットワーク内のＩ／Ｏオペレーションを行う方法であって、
集約装置の仮想スイッチを生成することと、
サーバノードの仮想マシンと、前記集約装置の前記仮想スイッチとの間の通信経路を形成することと、を含む、方法。
【請求項２１】
前記サーバノードの前記仮想マシンと、前記集約装置の前記仮想スイッチとの間の前記通信経路を形成することは、
前記サーバノードのローカルメモリにデータを提供することと、
前記サーバノードの仮想インターフェースから前記集約装置の仮想ネットワークインターフェースカード（ｖＮＩＣ）に通知を送信することと、
前記サーバノードのディスクリプタを生成することと、
前記ディスクリプタを読み出して、前記データの送信先を決定することと、
前記ｖＮＩＣと前記集約装置のプロキシＮＩＣとの間の通信を確立することと、を含む、請求項２０に記載の方法。
【請求項２２】
前記プロキシＮＩＣが、前記データが処理に利用可能であることを前記仮想スイッチに通知することをさらに含む、請求項２１に記載の方法。
【請求項２３】
前記サーバノードの前記仮想マシンと、前記集約装置の前記仮想スイッチとの間の前記通信経路を形成することは、
前記仮想スイッチが、データが前記集約装置から前記サーバノードへの送信に利用可能であることを前記集約装置のプロキシＮＩＣに通知することと、
前記プロキシＮＩＣと前記集約装置の送信先ｖＮＩＣとの間の通信を確立することと、
前記送信先ｖＮＩＣと前記サーバノードの仮想インターフェースとの間の通信を確立することと、を含む、請求項２０に記載の方法。
【請求項２４】
前記サーバノードで受信ディスクリプタを告示することと、
前記送信先ｖＮＩＣが、前記サーバノードのメモリにて受信バッファを割り当てることと、をさらに含む、請求項２０に記載の方法。
【請求項２５】
前記仮想スイッチにて、送信元サーバノードの情報に従ってデータを処理することをさらに含む、請求項２０に記載の方法。
【請求項２６】
前記集約装置の前記仮想スイッチは、前記交換したデータに関するセキュリティ機能を提供する、請求項２０に記載の方法。
【請求項２７】
前記通信経路を形成することは、前記仮想マシンと、前記仮想スイッチと通信する物理装置との間の通信チャネル上にデータパスを形成することを含む、請求項２０に記載の方法。
【請求項２８】
前記物理装置は、ネットワークインターフェースカード、基本入出力システム（ＢＩＯＳ）、ホストバスアダプタ（ＨＢＡ）または記憶装置を含む、請求項２７に記載の方法。
【請求項２９】
コンピュータ可読プログラムコードを有するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータ可読プログラムコードは、
集約装置において仮想スイッチを作成するように構成されたコンピュータ可読プログラムコードと、
サーバノードの仮想マシンと、前記集約装置の前記仮想スイッチとの間の通信経路を形成するように構成されたコンピュータ可読プログラムコードと、を含む、コンピュータプログラム製品。
【請求項３０】
Ｉ／Ｏ仮想化オペレーションに関連したオーバーヘッドを低減する方法であって、
サーバノード集約装置において仮想スイッチを構築し構成することと、
１つ以上のサーバノード仮想マシンと、前記仮想スイッチと通信する物理装置との間の通信チャネル上にデータパスを形成することと、を含む、方法。
【請求項３１】
前記通信チャネルはＰＣＩｅ接続を含む、請求項３０に記載の方法。
【請求項３２】
前記１つ以上のサーバノード仮想マシンと、前記仮想スイッチとの間に前記データパスを形成することは、
サーバノードの仮想マシンから前記集約装置の仮想ネットワークインターフェースカード（ｖＮＩＣ）に通知を送信することと、
前記ｖＮＩＣと前記集約装置のプロキシＮＩＣとの間の通信経路を確立することと、を含む、請求項３０に記載の方法。
【請求項３３】
前記プロキシＮＩＣが、前記データが処理に利用可能であることを前記仮想スイッチに通知することをさらに含む、請求項３２に記載の方法。
【請求項３４】
前記１つ以上のサーバノード仮想マシンと、前記集約装置の前記仮想スイッチとの間に前記通信経路を形成することは、
前記仮想スイッチが、データが前記集約装置から前記１つ以上の仮想マシンへの送信に利用可能であることを前記集約装置のプロキシ装置に通知することと、
前記プロキシ装置と、前記集約装置の送信先仮想装置との間の通信を確立することと、
前記送信先仮想装置と、前記サーバノードの仮想インターフェースとの間の通信を確立することと、を含む、請求項３０に記載の方法。
【請求項３５】
前記仮想スイッチにて、データを送信元サーバノードの情報に従って処理することをさらに含む、請求項３０に記載の方法。
【請求項３６】
前記集約装置の前記仮想スイッチは、前記交換したデータに関するセキュリティ機能を提供する、請求項３０に記載の方法。
【請求項３７】
前記物理装置は、ネットワークインターフェースカード（ＮＩＣ）、基本入出力システム（ＢＩＯＳ）、ホストバスアダプタ（ＨＢＡ）または記憶装置を含む、請求項３０に記載の方法。
【請求項３８】
１つ以上の処理装置における複数の仮想マシンと、
１つ以上の処理装置と通信する入力／出力（Ｉ／Ｏ）処理複合体であって、仮想スイッチを含み、前記１つ以上の仮想マシンのうち１つの仮想マシンと、前記仮想スイッチとの間の通信チャネル上にデータパスを確立する、入力／出力（Ｉ／Ｏ）処理複合体と、を備える、集約システム。
【請求項３９】
前記Ｉ／Ｏ処理複合体と通信する物理装置であって、前記通信チャネルは、前記１つ以上の仮想マシンと前記物理装置との間に存在する、物理装置をさらに備える、請求項３８に記載の集約システム。
【請求項４０】
前記物理装置は、ネットワークインターフェースカード（ＮＩＣ）、基本入出力システム（ＢＩＯＳ）、ホストバスアダプタ（ＨＢＡ）または記憶装置を含む、請求項３９に記載の集約システム。
【請求項４１】
前記Ｉ／Ｏ処理複合体は、前記仮想マシンと、前記仮想スイッチと、前記物理装置との間で交換した前記データを一時的に記憶するメモリをさらに含む、請求項３８に記載の集約システム。
【請求項４２】
前記通信チャネルはＰＣＩｅ接続を含む、請求項３８に記載の集約システム。
【請求項４３】
前記入力／出力（Ｉ／Ｏ）処理複合体の前記仮想スイッチは、前記交換したデータに関するセキュリティ機能を提供する、請求項３８に記載の集約システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して仮想化ネットワークに関し、より具体的には、入力／出力（Ｉ／Ｏ）仮想化のためのシステムおよび方法に関するものである。
【背景技術】
【０００２】
データセンターは、一般に、ビジネスおよび組織をサポートするインターネットおよびイントラネットサービスを提供する、中央集権化された設備である。典型的なデータセンターは、コンピュータ、ドメインネームシステム（ＤＮＳ）サーバ、ネットワークスイッチ、ルータ、データ記憶装置などの様々な種類の電子装置を収容し得る。特定のデータセンターは、スイッチ、ルータ等を含む交換アーキテクチャを経由して相互におよび外部装置と通信する、数百または数千の相互接続されたサーバノードを有し得る。データセンターは、仮想化のためにサーバノードがネットワークインターフェースカード（ＮＩＣ）、ハードディスクドライブまたは他のハードウェアを共有することを可能にするように構成され得る。仮想化された環境は、典型的には、より少ないハードウェアを必要とするので、電力、床面積、ケーブル工事およびデータセンターの運営に関する費用を低減する。
【発明の概要】
【課題を解決するための手段】
【０００３】
一態様において、複数の仮想ネットワークインターフェースカード（ｖＮＩＣ）と、入力／出力（Ｉ／Ｏ）処理複合体と、を含む集約装置が提供される。ｖＮＩＣは、複数の処理装置と通信している。各処理装置は、少なくとも１つの仮想マシン（ＶＭ）を有する。Ｉ／Ｏ処理複合体は、論理的に、ｖＮＩＣと少なくとも１つの物理ＮＩＣとの間に存在する。Ｉ／Ｏ処理複合体は、少なくとも１つのプロキシＮＩＣと、１つの仮想スイッチと、を含む。仮想スイッチは、少なくとも１つのＶＭと少なくとも１つのプロキシＮＩＣとの間で複数のｖＮＩＣのうち１つのｖＮＩＣによって確立された通信経路を経由して、複数の処理装置のうち１つの処理装置とデータを交換する。
【０００４】
別の態様において、複数のサーバノードと、集約装置と、を含むサーバ集約システムが提供される。各サーバノードは、少なくとも１つの仮想マシン（ＶＭ）を有する。集約装置は、複数のサーバノード間で結合されており、サーバノードと通信する複数の仮想ネットワークインターフェースカード（ｖＮＩＣ）と、入力／出力（Ｉ／Ｏ）処理複合体と、を含む。Ｉ／Ｏ処理複合体は、少なくとも１つのプロキシＮＩＣと、少なくとも１つのＶＭと少なくとも１つのプロキシＮＩＣとの間で複数のｖＮＩＣのうち１つのｖＮＩＣによって確立された通信経路を経由して、複数のサーバノードのうち１つのサーバノードとデータを交換する仮想スイッチと、を含む。
【０００５】
一態様において、仮想化ネットワークのＩ／Ｏオペレーションを行う方法が提供される。この方法は、集約装置にて仮想スイッチを生成することと、サーバノードの仮想マシンと、集約装置の仮想スイッチとの間の通信経路を形成することと、を含む。
【０００６】
一態様において、コンピュータ可読プログラムコードを有するコンピュータ可読記憶媒体を含むコンピュータプログラム製品が提供される。コンピュータ可読プログラムコードは、集約装置にて仮想スイッチを作成するように構成されたコンピュータ可読プログラムコードと、サーバノードの仮想マシンと、集約装置の仮想スイッチとの間の通信経路を形成するように構成されたコンピュータ可読プログラムコードと、を含む。
【０００７】
一態様において、サーバノード集約装置にて仮想スイッチを構築し構成することと、１つ以上のサーバノード仮想マシンと、仮想スイッチと通信する物理装置との間の通信チャネル上にデータパスを形成することと、を含む、Ｉ／Ｏ仮想化オペレーションに関連したオーバーヘッドを低減する方法が提供される。
【０００８】
一態様において、１つ以上の処理装置の複数の仮想マシンと、１つ以上の処理装置と通信する入力／出力（Ｉ／Ｏ）処理複合体と、を含む集約システムが提供される。Ｉ／Ｏ処理複合体には、仮想スイッチが含まれる。Ｉ／Ｏ処理複合体は、１つ以上の仮想マシンのうち１つの仮想マシンと、仮想スイッチとの間の通信チャネル上にデータパスを確立する。
【０００９】
本発明の上記のおよびさらなる利点は、添付図面とともに以下の記述を参照することにより一層良く理解され、様々な図において同一の符号は、同一の構成要素および特徴を示す。図面は、必ずしもスケール通りではなく、その代わりに、本発明の原理を表すことに重点が置かれる。
【図面の簡単な説明】
【００１０】
【図１】従来のサーバノードのブロック図である。
【図２】一実施形態による、集約システムと通信している複数のサーバノードを含むコンピューティングインフラストラクチャのブロック図である。
【図３】一実施形態による、Ｉ／Ｏ処理複合体のブロック図である。
【図４】一実施形態による、サーバノードと集約システムとの間の電子通信のための方法を示すフローチャートである。
【図５】一実施形態による、仮想スイッチと送信先サーバノードとの間の電子通信のための方法を示すフローチャートである。
【図６】別の実施形態による、コンピューティングインフラストラクチャのデータフローパスを示す図である。
【図７】別の実施形態による、コンピューティングインフラストラクチャのデータフローパスを示す図である。
【発明を実施するための形態】
【００１１】
以下の記述では、いくつかの特定の詳細を明らかにしているが、少なくともその詳細のうちいくつかを用いることなく、システムおよび方法を実行することができることは、当業者によって理解されるべきである。いくつかの例では、既知の特徴またはプロセスは、本発明を不明瞭にしないようにするために、詳細には記述されない。
【００１２】
図１は、従来のサーバノード１１２のブロック図である。サーバノード１１２は、１つ以上の処理装置１０２（例えば、マイクロプロセッサ、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、メモリ制御装置、マルチコアプロセッサ、バスアダプタおよび他の種類のデータ処理装置、または、これらと他の装置との組み合わせ）を含む。
【００１３】
サーバノード１１２は、さらに、ローカルメモリ１０４と、ネットワークインターフェースカード（ＮＩＣ）１６４とを含む。ローカルメモリ１０４は、不揮発性または揮発性メモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ））を含んでもよい。ＮＩＣ１６４は、イーサネット（登録商標）、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）、または、スイッチング装置（例えば、ネットワークスイッチまたはルータ）と電子通信を確立する他のネットワークコネクタ１１８を含んでもよい。
【００１４】
サーバノード１１２は、仮想化のために構成され得る。従って、ローカルメモリ１０４で提供されるものは、１つ以上の仮想マシン（ＶＭ）１１４−１，１１４−２（概して１１４）を含むことができ、それによって、異なる処理環境がサーバノード１１２で生じることを可能にする。ＶＭ１１４−１，１１４−２の各々は、仮想マシン１５２に対応するオペレーティングシステム１５４−１，１５４−２（概して１５４）と、ゲスト装置ドライバ１５６−１，１５６−２（概して１５６）と、仮想ネットワークインターフェースカード（ｖＮＩＣ）１５８−１，１５８−２（概して１５８）と、を含むことができる。サーバノード１１２は、サーバノード１１２の物理的要素の仮想化抽象的概念を提供するハイパーバイザー１６０を含み、その結果、ＶＭ１１４がハードウェアリソース（例えば、ＮＩＣ１６４）を共有することを可能にする。ＶＭ１１４は、例えばｖｉｒｔｉｏのようなＩ／Ｏ仮想化フレームワークを使用して、ハイパーバイザー１６０と通信し得る。
【００１５】
ゲストオペレーティングシステム１５４−１，１５４−２の各々は、１つ以上のアプリケーションに対応するプログラムコードを実行し得る。この特徴は、データセンター環境において望ましく、そこでは、１人の利用者が、ＶＭ１１４−１を含む第１の仮想化環境において１組のアプリケーションを実行してもよく、他方では、他の利用者が、ＶＭ１１４−２を含む第２の仮想化環境において１組の異なるアプリケーションを実行し得る。ハイパーバイザー１６０は、ＶＭ１１４−１，１１４−２で動作するアプリケーションが仮想ネットワーク内で通信することが可能なように、仮想化環境内のネットワーク接続を提供する仮想スイッチ１６２（ＶＳＷＩＴＣＨ）を含み得る。ルーティングに加えて、サーバノード１１２の仮想スイッチ１６２は、パケット検査やセキュリティ制御（例えば、ネットワークファイアウォールのためのアクセス制御リスト（ＡＣＬ））などの他の機能を提供し得る。
【００１６】
ハイパーバイザー１６０および仮想スイッチ１６２は、サーバノード１１２において、ＶＭ１１４間の遅い処理装置集約的な「ワールドスイッチ」の使用を含み得るＩ／Ｏ仮想化オペレーションを行う。この方式におけるハイパーバイザー１６０での仮想スイッチングは、オーバーヘッドを追加し、ＶＭのＩ／Ｏ性能を低下させ、その結果、帯域幅、ＣＰＵリソースの不十分な利用をもたらし、さらには、高い待ち時間も招来する。仮想スイッチ１６２が、１つのＶＭ（例えば、ＶＭ１１４−１）の下でのクライアントアプリケーションのために意図されたＣＰＵサイクルを想定し得るので、調和の欠けたＣＰＵ利用が生じる場合があり、このＣＰＵ利用は、別のＶＭ（例えば、ＶＭ１１４−２）で稼働しているアプリケーションに影響を与える場合がある。
【００１７】
仮想化された環境に関連したＣＰＵオーバーヘッドとトラフィックレイテンシとを低減するために、ＮＩＣ装置からゲストの仮想マシンへのダイレクトパススルーを提供する要望がある。しかしながら、そうすることは、ハイパーバイザー１６０と仮想スイッチ１６２とを迂回することが必要となり、結果として、仮想スイッチ１６２によって提供される機能性とセキュリティに関して制限をもたらす。
【００１８】
本発明の概念は、サーバノード集約システムにおける仮想スイッチを構築し構成することによって、且つ、サーバノードＶＭからサーバノード集約システムまでの通信チャネル（例えば、ＰＣＩｅ接続など）上にデータパスを形成することによって、サーバノードＶＭと、ＮＩＣ、基礎的な入出力のシステム（ＢＩＯＳ）、ホストバスアダプタ（ＨＢＡ）ハードドライブなどのような物理装置との間で行われるＩ／Ｏ仮想化オペレーションに関連したオーバーヘッドを低減する集約システムおよび方法を提供する。サーバノード集約システムにおける仮想スイッチは、サーバノードにおいてハイパーバイザーから仮想的スイッチング機能を取り除く。この場合、サーバノードにおけるＩ／Ｏ仮想化オペレーションに関連したＣＰＵ集約型処理が低減される。なぜなら、そのようなオペレーションにおけるハイパーバイザーの役割が低減されるか、取り除かれるからである。従って、仮想ネットワークは、電子装置間の大規模通信を要求するデータセンターまたは他の環境においてスケーラビリティを提供して、集約装置まで広がり得る。仮想スイッチは、ＡＣＬを処理すること、仮想マシン間のセキュリティを監視することに関する機能、または、ルーティングの決定やトンネリング（例えば、ＩＰまたはジェネリックルーティングのカプセル化（ＧＲＥ）トンネリング）若しくは仮想化されたホストにおける関連する機能について、制限を受けない。その代わりに、そのような機能はサーバノード集約システムで利用可能になる。
【００１９】
上述したように、付属するサーバノードにおけるＶＭは、ｖｉｒｔｉｏ（当該技術分野において周知のＩ／Ｏのための仮想化フレームワーク）を使用するハイパーバイザーと通信し得る。本発明の実施形態では、Ｉ／Ｏオペレーションが行われる場合に、ハイパーバイザーの役割がＩ／Ｏに関して低減されるか取り除かれることを確立する。代わりに、ハードウェアは、ＶＭのＩ／Ｏオペレーション（例えば、ＶＭとサーバノード集約システムとの間の直接通信を確立する）を行うように提供されてもよく、Ｉ／Ｏレイテンシと、ＶＭのＩ／Ｏオペレーションを行わない場合にＶＭによって消費されるＣＰＵリソースとを減少させる。代わりに、サーバノード集約システムは、例えば、Ｉ／Ｏオペレーションにおいてデータを読取り／書込みするために、相互に接続されたサーバノードのローカルメモリと通信する。サーバノード集約システムは、入力／出力メモリ管理ユニット（ＩＯＭＭＵ）を含み得る。ＩＯＭＭＵは、例えば、ダイレクトメモリアクセス（ＤＭＡ）オペレーションを行う際に、ハイパーバイザーのパススルーを容易にする一方で、例えば、メモリ保護を提供するために、ハイパーバイザーによって制御され得る。この特徴は、ハイパーバイザーの指示の下でメモリ対メモリのデータコピーが発生することを防止し得る。別の特徴は、ｖＮＩＣが、仮想化されたサーバノードにおけるゲストに対し利用可能にされ得るということであり、それによって、ハイパーバイザーの介在無しに、集約システムへの直付けが可能となる。
【００２０】
図２は、一実施形態による、集約システム２００と通信する複数のサーバノード２１２−１〜２１２−Ｎ（概して２１２）を含むコンピューティングインフラストラクチャのブロック図である。
【００２１】
集約システム２００は、複数のｖＮＩＣ２２２−１〜２２２−Ｎ（概して２２２）と、スイッチファブリック２２４と、Ｉ／Ｏ処理複合体２２６と、を含む。サーバノード２１２または関連した処理装置は、集約システム２００に依存してもよく、物理装置（例えば集約システム２００と通信するＮＩＣ２４２、シェアメモリ、ＢＩＯＳまたは他のコンピュータハードウェア要素など）を共有することができる。
【００２２】
スイッチファブリック２２４は、ネットワークルータ３２４などを経由して集約システムと通信しているサーバノード２１２−１〜２１２−Ｎ、および／または、１つ以上の電子装置２５２の間でデータまたは他の電子情報を交換する複数のＩ／Ｏポート（図示せず）を含む。スイッチファブリック２２４は、当業者に良く知られているように、Ｉ／Ｏポート間でデータを移動させるためのスイッチング構成（例えば、クロスバー）を含んでもよい。スイッチファブリック２２４とＩ／Ｏ処理複合体２２６は、Ｉ／Ｏ通信チャネル２２７を経由して相互に接続することができ、Ｉ／Ｏ通信チャネル２２７は、スイッチファブリック２２４およびＩ／Ｏ処理複合体２２６における出力ポート間でデータを交換するための帯域幅を提供する。
【００２３】
Ｉ／Ｏ処理複合体２２６は、サーバノード２１２と、１つ以上の外部電子装置（例えば、リモートの電子装置２５２）との間で交換されたデータを処理する。一実施形態では、Ｉ／Ｏ処理複合体２２６は、サーバノード２１２および／またはリモートの電子装置２５２の間でデータを交換するネットワーク処理装置を含む。別の実施形態では、Ｉ／Ｏ処理複合体２２６は、複数のｖＮＩＣ２２２−１〜２２２−Ｎ（概して２２２）に設けられ得るコントロールプレーン処理装置（図示せず）において、スイッチファブリック２２４との間のデータ転送を行うマルチプレクサーおよび他の論理回路を含む。ここで、Ｉ／Ｏ処理複合体２２６は、例えば、２つ以上のサーバノード３１２間で、または、サーバノード２１２とリモートコンピューティング装置２５２との間で、集約システム２００へおよび集約システム２００からデータを送信するステージングエリアとして機能し得る。
【００２４】
各ｖＮＩＣ２２２は、以下に詳細に記載されたＩ／Ｏ処理複合体２２６における仮想スイッチに接続され得る。各ｖＮＩＣ２２２は、サーバノード２１２におけるＶＭ２５２を、Ｉ／Ｏ処理複合体２２６における仮想スイッチのポートに論理的に接続し得る。これは、ＰＣＩｅ接続２１４または関連したネットワーク接続を経由して、サーバノード２１２にてｖＮＩＣ２２２とｖＮＩＣインターフェース２５８−１〜２５８−Ｎ（概して２５８）との間で通信経路を確立し、ｖＮＩＣインターフェース２５８を介してデータを交換することにより、達成し得る。各ｖＮＩＣ２２２は、アドレス（例えば、ＭＡＣアドレスおよび／またはＩＰアドレス）が割り当てられ得る。
【００２５】
サーバノード２１２−１〜２１２−Ｎ（概して２１２）は、単一ソケットサーバまたは他の低出力処理装置ベースのサーバであり得る。サーバノード２１２は、処理装置クラスタまたは他の周知の装置として構成し得る。サーバノード２１２は、１つ以上の仮想化環境（例えば、本明細書に記載のもの）を含むように構成され得る。サーバノード２１２は、データ送信および／または受信オペレーションを行うためのデータを処理するためにメモリ２０４内で定義されたリングバッファなどを維持し得る。
【００２６】
サーバノード２１２の各々は、少なくとも１つの処理装置２０２を含んでもよく、当該処理装置２０２は、１つ以上のマイクロプロセッサ、ＣＰＵ、ＧＰＵ、ＤＳＰ、ＡＳＩＣ、メモリ制御装置、マルチコアプロセッサまたは他のデータ処理装置、または、これらの要素の組み合わせを含み得る。
【００２７】
サーバノード２１２の各々は、ローカルメモリ２０４を含む。ローカルメモリ２０４は、不揮発性または揮発性メモリ（例えば、ＤＲＡＭまたはスタティックＲＡＭ（ＳＲＡＭ）の１つ以上のチャネル）であってよい。サーバノード２１２の各々は、サーバノード２１２と集約システム２００との間のデータ転送を管理し、且つ、当業者に周知の他のＩ／Ｏ機能を実行するサウスブリッジまたは関連するＩ／Ｏ制御装置を含むＩ／Ｏ論理回路（図示せず）を含んでもよい。Ｉ／Ｏ論理回路は、一方向または双方向通信経路２１４を経由して集約システム２００と通信するイーサネット（登録商標）インターフェース、ＰＣＩｅインターフェース、および／または、他のネットワークコネクタ、インターフェースなどを含んでもよい。
【００２８】
ローカルメモリ２０４に記憶されるものには、１つ以上のＶＭ２５２に関連したプログラムコードなどのプログラムコード、オペレーティングシステム（図示せず）およびソフトウェアアプリケーション（例えば、データセンター環境内の利用者アプリケーション）（図示せず）を含んでもよい。
【００２９】
サーバノード２１２のローカルメモリ２０４は、少なくとも１つのｖＮＩＣインターフェース２５８−１，２５８−Ｎ（概して２５８）を含んでもよい。ｖＮＩＣインターフェース２５８の各々は、サーバノード２１２における１つ以上のＶＭ２５２と、集約システム２００において生成されるｖＮＩＣ２２２との間に通信を確立するように、構築され構成される。一実施形態では、１対１の関係が、ｖＮＩＣインターフェース２５８と、対応するｖＮＩＣ２２２との間に確立される。別の実施形態では、Ｎ対１の関係（Ｎは１を超える整数）が、ｖＮＩＣインターフェース２５８と、ｖＮＩＣ２２２との間で確立される。
【００３０】
ｖＮＩＣインターフェース２５８は、対応するｖＮＩＣ２２２を制御するデータを含む１組のレジスタを含んでもよい。ｖＮＩＣインターフェース２５８は、サーバノードメモリ２０４と集約システム２００との間でデータを転送する仮想ＤＭＡエンジンを含んでもよい。ｖＮＩＣインターフェース２５８は、対応するｖＮＩＣ２２２と通信する（例えば、ｖＮＩＣ２２２に送信されたデータが処理対象となる旨をｖＮＩＣ２２２に通知する）ためのメールボックスを含み得る。ｖＮＩＣインターフェース２５８は、ＣＰＵ２０２への割り込みを提供する割り込み発生器を含んでもよい。例えば、ＣＰＵ２０２は、データの到着を示すのを中断され得る。
【００３１】
ｖＮＩＣインターフェース２５８は、ＰＣＩｅバスまたは他の通信経路２１４上の対応するｖＮＩＣ２２２に通知を提供してもよく、データが、送信用サーバノード２１２におけるローカルメモリ２０４へ移動されることを知らせる。ＶＭ  Ｉ／Ｏは、ｖＮＩＣインターフェース２５８およびその対応するｖＮＩＣ２２２を経由して、Ｉ／Ｏ処理複合体２２６へ、より具体的には、Ｉ／Ｏ処理複合体２２６における仮想スイッチへ直接送信される。
【００３２】
一実施形態では、ＶＭ２５２は、ｖｉｒｔｉｏなどのコンソーシアムに規定された標準に従って、ハイパーバイザー２６０と通信する。別の実施形態では、ＶＭ２５２は、独自通信に従ってハイパーバイザー２６０と通信する。ＶＭ２５２とハイパーバイザー２６０との間の通信のやり方にかかわらず、Ｉ／Ｏオペレーションは、ハイパーバイザー２６０によって実行されるＩ／Ｏ関連の通信にほとんどまたは全く介入することなく、Ｉ／Ｏ処理複合体２２６におけるＶＭ２５２と仮想スイッチ（図示せず）との間の通信を経由して実行され得る。従って、この特徴は、Ｉ／Ｏの性能を改善し、ＶＭ２５２とＩ／Ｏ処理複合体２２６との間のデータ転送に関連したレイテンシを低減し得る。
【００３３】
図３は、例えば、図２に示されている一実施形態におけるＩ／Ｏ処理複合体２２６のブロック図である。Ｉ／Ｏ処理複合体２２６は、処理装置３０２と、メモリ装置３０４と、少なくとも１つのプロキシＮＩＣ３０６と、少なくとも１つの仮想スイッチ３０８と、を含み得る。
【００３４】
処理装置３０２は、Ｉ／Ｏ処理複合体２２６の機能（例えば、データパケットに関連した送信先アドレスに基づいて、データをプロキシＮＩＣ３０６へ向かわせることや、メモリ装置３０４とのデータ転送、および、サーバノード２１２および／またはＮＩＣ２４２を経由した外部装置の間のデータ転送を調整することなどの、仮想スイッチ３０８に関連した機能）を実行するためのプログラムコードを実行する。処理装置３０２は、１つ以上のＣＰＵ、ＧＰＵ、ＤＳＰ、ＡＳＩＣ、メモリ制御装置、マルチコアプロセッサ、他の種類のデータ処理装置、または、これらの要素の組み合わせを含み得る。処理装置３０２は、仮想スイッチ３０８および／または仮想スイッチ３０８と通信する１つ以上のプロキシＮＩＣ３０６によって使用され得る。
【００３５】
メモリ装置３０４は、１組のディスクリプタおよび／または仮想スイッチ３０８による処理のためのデータを記憶し得る。メモリ装置３０４は、バッファ（例えば、ＮＩＣ２４２のための受信バッファ）を維持し得る。処理装置３０２は、仮想スイッチ３０８へデータを流し得る。この特徴は、バッファをコピーする必要をなくすことができ、メモリ装置３０４内のオリジナルのバッファを指し示す新しいディスクリプタを生成することにより代わりに使用し得る。一実施形態では、メモリ装置３０４は、Ｉ／Ｏ処理複合体２２６の一部である。別の実施形態では、メモリ装置３０４は、Ｉ／Ｏ処理複合体２２６から隔離された他の場所（例えば、集約システム２００における別の場所）に配置される。メモリ３０４は、ルール、ＡＣＬ、または、例えば実行可能なＣＰＵコードと仮想スイッチ３０８によって使用することができるデータとを含む関連した判定基準を含み得る。ルール、ＡＣＬなどは、データが送信先に転送できる条件（例えば、データを拒否すべきか転送するべきか、どこにデータを転送すべきか、または、データを含むパケットをどのように処理すべきかについての他の情報）を決定するために処理され得る。
【００３６】
各プロキシＮＩＣ３０６は、例えば１対１の関係でｖＮＩＣ２２２と直接通信するように構築され配置される。ｖＮＩＣ２２２−１は、処理装置３０２の制御の下で、対応する送信元サーバノード２１２−１から受信されたデータについての送信先情報に従って、プロキシＮＩＣ３０６との通信を確立し得る。ｖＮＩＣ２２２−１は、データを受信する可用性についてプロキシＮＩＣ３０６に要求を送信し得る。プロキシＮＩＣ３０６は、プロキシＮＩＣ３０６がデータを受信できることを知らせる応答を送り得る。そうでない場合には、ｖＮＩＣ２２２−１は、プロキシＮＩＣ３０６がｖＮＩＣ２２２−１から受信したデータを処理することができるまで、待機し得る。ｖＮＩＣ２２２−１およびプロキシＮＩＣ３０６は、ポーリングモードに移行してもよく、それによって、プロキシＮＩＣ３０６は、記憶場所の状態に関する周期的なポーリングと、ｖＮＩＣ２２２−１からのデータを受信し処理する可用性への要求とを受信し得る。
【００３７】
プロキシＮＩＣ３０６は、データ転送オペレーションの間に、メモリ３０４にデータを記憶する、および／または、メモリ３０４からデータを取り出すことができる。プロキシＮＩＣ３０６は、データが処理用メモリ装置３０４で処理可能であることを知らせる仮想スイッチ３０８宛ての通知を生成し得る。プロキシＮＩＣ３０６は、仮想スイッチ３０８によって処理するため、および、送信先へ出力するために、メモリ装置３０４からデータを取り出し得る。プロキシＮＩＣ３０６は、十分な記憶場所が利用可能であると判定した後に、メモリ３０４にデータを割り当て得る。処理装置３０２は、プロキシＮＩＣ３０６によってメモリ３０４へのデータの割り当てを管理し得る。
【００３８】
仮想スイッチ３０８は、メモリ３０４またはプロキシＮＩＣ３０６からのデータパケット、フレーム、セルまたは他のデータのユニットを処理する。仮想スイッチ３０８は、パケット、フレームなどのヘッダ情報に従って、送信先へのデータを経路設定し得る。仮想スイッチ３０８は、サーバノード２１２におけるＶＭ２５２の間で、および／または、ＶＭ２５２と物理装置（例えば、物理的なＮＩＣ２４２または関連した出力装置）との間で、論理的な接続を提供し得る。集約システム２００は、異なるプロキシＮＩＣ３０６にそれぞれ関連している、多数の仮想スイッチ３０８を含み得る。プロキシＮＩＣ３０６からの仮想スイッチ３０８へのデータパスは、受信データをルーティングするために、仮想スイッチ３０８によって使用される送信先情報を提供し得る。仮想スイッチ３０８は、例えば、パケット分類、パケット検査およびセキュリティ制御、または、例えば、ネットワークファイアウォールのためのＡＣＬなどの当業者に周知の他の機能を実行し得る。仮想スイッチ３０８は、ルールエンジン（例えば、いつデータパケットを落とすべきか、あるいは、転送するべきかを確立するファイアウォールルール）（図示せず）に従って、データを処理し得る。
【００３９】
図４は、一実施形態において、サーバノードと集約システムとの間の電子通信のための方法４００を示すフローチャートである。方法４００について記述する際には、図２および図３を用いて記述したサーバノード２１２および集約システム２００について参照される。方法４００は、図２および図３の１つ以上のサーバノード２１２のローカルメモリ２０４および／または集約システム２００に記憶された命令によって管理され得る。方法４００のうちいくつかまたは全ては、ＡＳＩＣ、システムオンチップ（ＳＯＣ）または関連した装置において、オンダイで実行され得る。
【００４０】
ブロック４０２では、セル、パケット、フレームまたは他のデータ固定長または可変長ユニットは、サーバノード（例えば、送信元サーバノード２１２−１のローカルメモリ）に提供され、送信先への出力については、例えば、サーバノード２１２−Ｎまたは外部電子装置２５２に提供されることが可能である。送信元サーバノード２１２−１のＣＰＵ２０２は、サーバノード２１２から出力されるローカルメモリ内のデータに関するディスクリプタまたは関連した情報を生成し得る。ディスクリプタは、集約システム２００に転送されるデータに関連した指令、スキャッターギャザーリストその他を含み得る。ディスクリプタ情報は、データコンテンツが存在するサーバノードローカルメモリ２０４内の場所、データが送信されるべき送信先アドレス、移動するデータのバイト数、および／または、送信先電子装置にデータを送信するための他の関連情報を識別し得る。
【００４１】
ブロック４０４では、データがローカルメモリ２０４内に存在し、且つ、送信に利用可能であるという通知が、送信元サーバノード２１２−１のｖＮＩＣインターフェース２５８−１によって生成され得る。ｖＮＩＣインターフェース２５８−１は、送信用データの可用性を、対応するｖＮＩＣ２２２−１に通知し得る。ＣＰＵ２０２は、通信経路２１４（例えば、ＰＣＩＥバス）を介してｖＮＩＣインターフェース２５２−１を経由してｖＮＩＣ２２２−１に送信されるメールボックス書き込みまたは関連したイベント通知を生成し得る。
【００４２】
ブロック４０６では、ｖＮＩＣ２２２−１は、ディスクリプタを読み出し且つ処理して、送信先アドレスまたは関連情報を決定する。または、メタ情報は、送信ディスクリプタまたは送信先ポートを識別するパケットと共に提供され得る。従って、ｖＮＩＣ２２２−１は、データが転送に利用可能であることを判定する。
【００４３】
ブロック４０８では、ｖＮＩＣ２２２−１は、送信先情報を使用して、送信元サーバノード２１２−１からのデータを処理する特定仮想スイッチ３０８において、インターフェースと通信するプロキシＮＩＣ３０６を識別し得る。ｖＮＩＣ２２２−１は、通信のモードに従ってプロキシＮＩＣ３０６と通信し得る。一態様において、ｖＮＩＣ２２２−１は、プロキシＮＩＣ３０６の状態にかかわらず、例えば、データに利用可能なバッファ場所があるか否かにかかわらず、プロキシＮＩＣ３０６と直接通信を確立し得る。別の態様において、バッファ場所がデータに利用可能であるか否かについての決定をし得る。もしそうである場合は、ｖＮＩＣ２２２−１とプロキシＮＩＣ３０６との間で通信経路が確立される。Ｉ／Ｏ処理複合体２２６は、手動でまたは自動的に、少なくとも１つの通信モードのために構成され得る。従って、データパスは、データ送信元（例えば、送信元サーバノード２１２−１におけるＶＭ２５２）からプロキシＮＩＣ３０６まで形成されることができ、プロキシＮＩＣ３０６は、順に仮想スイッチ３０８と通信を行う。例えば、図６に示されたデータパス６０２を参照されたい。複数のｖＮＩＣ２２２は、データパスに沿って、関連するＶＭ２５２から仮想スイッチ３０８まで構築され、データを出力するように構成される。
【００４４】
ブロック４１０では、プロキシＮＩＣ３０６は、仮想スイッチ３０８によるその後の処理のため、メモリ装置３０４におけるバッファにデータを転送し得る。ｖＮＩＣ２２２−１は、サーバノードローカルメモリ２０４からディスクリプタを取得することができ、従って、プロキシＮＩＣ３０６の指示と制御の下に、メモリ装置３０４まで確立されたデータパスを介してデータを移動し得る。
【００４５】
ブロック４１２では、プロキシＮＩＣ３０６は、仮想スイッチ３０８によって処理することができるメモリ装置３０４のデータを仮想スイッチ３０８に知らせる通知を生成する。
【００４６】
ブロック４１４では、仮想スイッチ３０８は、データ（例えば、検査（ｉｎｓｐｅｃｔｉｎｇ）データパケットなど）を処理し得る。仮想スイッチ３０８は、ディスクリプタおよび／またはヘッダ情報に従ってデータを検討し、当該データがフィルタされるべきかまたは転送されるべきかを決定し得る。仮想スイッチ３０８は、例えば、予め設定したポリシーに従って、１つ以上のプロキシＮＩＣ３０６と、１つ以上の送信先サーバノード２１２メモリおよび／またはリモートコンピューティング装置２５２との間のデータの転送を調整し得る。仮想スイッチ３０８は、プロキシＮＩＣ３０６からのデータ源を識別してもよく、それによって、仮想スイッチ３０８がＡＣＬ、パケット検査などを維持するような機能を実行することが可能になる。仮想スイッチ３０８は、予め設定したルールと、プロセス送信先ＭＡＣアドレスとを適用して、当業者に周知の他の仮想スイッチ機能を実行し得る。このように、サーバノードハイパーバイザーと関連した処理装置集約型オペレーションを、低減しまたは取り除くことが可能である。さらに、変動負荷（例えば、他のプロセスによって消費されている仮想マシンに割り当てられたＣＰＵリソース）に関連した問題を、回避可能である。
【００４７】
図５は、一実施形態において、仮想スイッチと送信先サーバノードとの間の電子通信のための方法５００を示すフローチャートである。方法５００について記述する際には、図２〜図４が参照される。方法５００は、図２及び図３の１つ以上のサーバノード２１２のローカルメモリ２０４および／または集約システム２００に記憶される命令によって管理され得る。方法５００のうちいくつかまたは全ては、ＡＳＩＣ、システムオンチップ（ＳＯＣ）または関連した装置において、オンダイで行うことが可能である。
【００４８】
仮想スイッチ３０８は、プロキシＮＩＣ３０６からデータを受信し、次いでメモリ３０４からデータを取り出し得る。仮想スイッチ３０８は、例えば、送信先サーバノード２１２−Ｎまたはリモートコンピューティング装置２５２へデータを転送するために、データの分類、ルーティング、これら以外の処理を実行し得る。仮想スイッチ３０８は、パケットのカプセル化／脱カプセル化、レイヤ２セキュリティなどの他の周知の仮想スイッチ機能を実行し得る。
【００４９】
ブロック５０２では、仮想スイッチ３０８は、データが送信のために利用可能であることを、プロキシＮＩＣ３０６に通知する。プロキシＮＩＣ３０６は、アドレスなどの送信先情報から決定され得る。
【００５０】
ブロック５０４では、プロキシＮＩＣ３０６は、送信先ｖＮＩＣ２２２−Ｎとの通信を確立する。その通信は、プロキシＮＩＣ３０６とｖＮＩＣ２２２−Ｎとの間の双方向経路で確立させることができる。プロキシＮＩＣ３０６は、パケットヘッダまたは仮想スイッチ３０８によって転送されたデータペイロードに対応する他のフィールド内の送信先情報を処理し、そのデータを受信するｖＮＩＣ２２２を識別し得る。プロキシＮＩＣ３０６は、仮想スイッチ３０８によるルーティングのためにデータが利用可能であることをｖＮＩＣ２２２−Ｎに通知し得る。処理装置３０２は、指令／スキャッタデータを含む送信ディスクリプタを生成し得る。処理装置３０２は、仮想スイッチ３０８からの出力のために送信データが利用可能であることをプロキシＮＩＣ３０６に通知し得る。
【００５１】
ブロック５０６では、送信先サーバノード２１２−ＮにおけるＣＰＵ２０２は、送信先サーバノード２１２−Ｎのローカルメモリ２０４内の利用可能なデータバッファを指し示す受信ディスクリプタを告示し得る。受信ディスクリプタは、バッファアドレス、長さ、または、関連情報を含み得る。ディスクリプタは、ハードウェアで生じるドアベルを鳴らすことにより告示され得る。
【００５２】
ブロック５０８では、送信先ｖＮＩＣ２２２−Ｎは、仮想スイッチ３０８からのデータを受信する送信先ノードメモリ２０４から受信バッファを割り当て得る。受信バッファが現在利用可能でない場合には、Ｉ／Ｏ処理複合体２２６は、受信バッファが送信先サーバノードメモリ２０４において利用可能になるのを待機し得る。
【００５３】
ブロック５１０では、送信先ｖＮＩＣ２２２−Ｎは、受信バッファ用のディスクリプタを取得して処理し、送信先サーバノード２１２−Ｎのローカルメモリ２０４へデータを移動させる。
【００５４】
図６は、別の実施形態において、コンピューティングインフラストラクチャ２０内のデータフローパスを示す図である。図６について記述する際に、図２〜図５が参照される。
【００５５】
データパス６０２は、送信元サーバノード２１２−１におけるＶＭ２５２から集約システム２００におけるプロキシＮＩＣ３０６−１まで形成される。データパス６０２は、本明細書に記載の方法４００に従って形成され得る。プロキシＮＩＣ３０６−１は、データパス６０２に沿ってｖＮＩＣ２２２−１に提供される送信先情報に従って決定される。プロキシＮＩＣ３０６−１は、データパス６０２経由で受信したデータ６０４を、メモリ３０４における利用可能な場所へ出力する。
【００５６】
プロキシＮＩＣ３０６−１は、仮想スイッチ３０８に通知６０６を送り、データが処理に利用可能であることを仮想スイッチ３０８に通知する。仮想スイッチ３０８は、データの処理６０８を実行し得る、例えば、データを送信先へ転送すること、ルール、ＡＣＬまたは他のセキュリティ機能を適用し得る。仮想スイッチ３０８は、例えば、図５を用いて記述したブロック５０２に従って、選択されたプロキシＮＩＣ３０６−２へのデータの出力６１０を実行し得る。
【００５７】
データパス６１２は、仮想スイッチ３０８から送信先サーバノード２１２−２における目標ＶＭ２５２まで形成される。データパス６１２は、方法４００および／または本明細書に記載の方法５００に従って形成され得る。
【００５８】
図７は、別の実施形態による、コンピューティングインフラストラクチャ２０内のデータフローパスを示す図である。
【００５９】
データパケットは、リモートコンピュータ２５２からＮＩＣ２４２と通信しているメモリ３０４の受信バッファへ出力される（図７の７０２）。
【００６０】
処理装置３０２は、処理用メモリ３０４内にデータが存在することを仮想スイッチ３０８に通知することができる（図７の７０４）。
【００６１】
仮想スイッチ３０８は、メモリ３０４からデータを取り出し（図７の７０６）、そのデータを処理（例えばルーティング、検査など）することができる。
【００６２】
データパス７０８は、プロキシＮＩＣ３０６および送信先サーバノード２１２−２における目標のＶＭ２５２から形成される。データパス７０８は、本明細書に記載の方法４００および／または方法５００に従って形成し得る。
【００６３】
当業者に理解されるであろうように、本発明の種々の態様は、システム、方法またはコンピュータプログラム製品として具現され得る。従って、本発明の種々の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または、本明細書において「回路」、「モジュール」または「システム」としてどれも一般的に参照される、ソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態を取ってもよい。さらに、本発明の種々の態様は、コンピュータ可読プログラムコードを内部に具現した１つ以上のコンピュータ可読媒体内に具現されたコンピュータプログラム製品の形態を取ってもよい。
【００６４】
１つ以上のコンピュータ可読媒体のいかなる組み合わせも利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体、または、コンピュータ可読記憶媒体であってよい。例えば、コンピュータ可読記憶媒体は、電子的、磁気的、光学的、電磁的、赤外線、半導体システム、機器もしくは装置、または、前述のものの任意の適切な組み合わせであるが、それらに限定されない。コンピュータ可読記憶媒体のより具体的な例（完全に網羅しているリストではない）は、下記のものを含むであろう。１本以上のワイヤーを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭもしくはフラッシュメモリ）、光ファイバー、ポータブルなコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、または、前述のものの任意の適切な組み合わせである。本明細書の文脈においては、コンピュータ可読記憶媒体は、命令実行システム、機器または装置によって用いられてもよく、または、これらと接続しているプログラムを含みもしくは記憶し得る任意の有体媒体であってよい。
【００６５】
コンピュータ可読信号媒体は、内部にコンピュータ可読プログラムコードが具現され伝播されたデータ信号を含んでもよい。例えば、それはベースバンド内のもの、または、搬送波の一部としてのものである。そのような伝播された信号は、様々な形態のうち何れを取ってもよく、それには、電磁的形態、光学的形態またはこれらの任意の適切な組み合わせが含まれるが、それらに限定されない。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、機器もしくは装置による使用のためのプログラム、または、それらと接続しているプログラムを通信させるか、伝播させるか、もしくは、転送させることのできる任意のコンピュータ可読媒体であり得る。コンピュータ可読媒体上に具現されたプログラムコードは、任意の適切な媒体を使って送信され得る。それには、無線、ワイヤーライン、光ファイバーケーブル、ＲＦなど、または、前述のものの任意の適切な組み合わせが含まれるが、それらに限定されない。
【００６６】
本発明の種々の態様のためのオペレーションを実行するコンピュータプログラムコードは、Ｊａｖａ（登録商標）、スモールトーク、Ｃ＋＋などのオブジェクト指向プログラミング言語や、「Ｃ」プログラミング言語または類似のプログラム言語などの従来の手続き型プログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで記載され得る。プログラムコードは、完全にユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で且つ部分的にリモートのコンピュータ上で、または、完全にリモートコンピュータまたはサーバ上で実行されてよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてもよいし、または、接続は、（例えば、インターネットサービスプロバイダーを使用するインターネットを介して）外部コンピュータに対してなされてもよい。
【００６７】
本発明の種々の態様は、発明の実施形態による方法、装置（システム）およびコンピュータプログラム製品のフローチャートおよび／またはブロック図を参照して、以下に述べられる。フローチャートおよび／またはブロック図の各ブロックおよびフローチャートおよび／またはブロック図の複数のブロックの組み合わせは、コンピュータプログラム命令によってインプリメントすることができると理解される。これらのコンピュータプログラム命令は、それらの命令がコンピュータまたは他のプログラム可能なデータ処理機器のプロセッサを経由して実行され、フローチャートおよび／またはブロック図の１つ以上のブロックにおいて指定された機能／行為を実行する手段を生成するようなマシンを製造するために、汎用コンピュータ、特殊目的コンピュータまたは他のプログラム可能なデータ処理機器の処理装置に提供され得る。
【００６８】
これらのコンピュータプログラム命令は、コンピュータ、他のプログラム可能なデータ処理機器または他の装置を指示して特定の方法で機能させることができるコンピュータ可読媒体に記憶され得る。その方法は、フローチャートおよび／またはブロック図の１つ以上のブロックにおいて指定された機能／行為を実行する命令を含む、コンピュータ可読媒体に記憶された命令が製品を製造するものである。コンピュータプログラム命令は、コンピュータ、他のプログラム可能なデータ処理機器または他の装置にロードされ、一連のオペレーションステップが、コンピュータ、他のプログラム可能な機器または他の装置上で実行されてもよく、コンピュータまたは他のプログラム可能な機器上で実行する命令が、フローチャートおよび／またはブロック図の１つ以上のブロックにおいて指定された機能／行為を実行するプロセスを提供するようなコンピュータによって実行されるプロセスが生成され得る。
【００６９】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法およびコンピュータプログラム製品の可能なインプリメンテーションのアーキテクチャ、機能性およびオペレーションを図解するものである。この点では、フローチャートまたはブロック図内の各ブロックは、モジュール、セグメントまたはコードの一部を表すことがあり、それは、特定の論理関数を実装するための１つ以上の実行可能な命令からなる。いくつかの代替の実装おいては、ブロックに記載された機能が、図に記載された順序を外れて生じ得ることを、留意されたい。例えば、連続して示された２つのブロックが、実際には、実質上同時に実行され得る。あるいは、ブロックは、内包される機能性によっては、時折、逆の順序で実行され得る。ブロック図および／またはフローチャートの各ブロック、および、ブロック図および／またはフローチャート内の種々のブロックの組み合わせは、指定された機能または行為を実行する特定目的のハードウェアベースのシステム、あるいは、特定目的のハードウェアとコンピュータ命令の組み合わせによって実装されることが可能なことを、留意されたい。
【００７０】
本発明は特定の実施形態を参照して示され説明されたが、形態と詳細における様々な変更は、本発明の趣旨および範囲から外れることなく行われ得ることが当業者によって理解されるべきである。
【図１】
2015521779.tif 000003
【図２】
2015521779.tif 000004
【図３】
2015521779.tif 000005
【図４】
2015521779.tif 000006
【図５】
2015521779.tif 000007
【図６】
2015521779.tif 000008
【図７】
2015521779.tif 000009
【国際調査報告】
2015521779.tif 000010
2015521779.tif 000011
2015521779.tif 000012