(57)【要約】  本発明は、仮想マシンのフローを物理的なキューにオフロードするための方法、システム、およびコンピュータプログラム製品に及ぶ。コンピュータシステムは、１つ以上の仮想マシンを実行し、仮想マシンのネットワークトラフィックを管理する１つ以上の規則を用いて物理的なネットワークデバイスをプログラムする。コンピュータシステムは、また、規則を使用してネットワークトラフィックを管理するように、ネットワークデバイスをプログラムする。特に、ネットワークデバイスは、仮想マシンのネットワークフローを処理するために使用することができる、ネットワークデバイスにおける１つ以上の物理的なキューの利用可能性を決定するようにプログラムされる。ネットワークデバイスは、また、仮想マシンのネットワークフローを識別するように構成され、この識別は、各ネットワークフローの特徴を識別することを含む。ネットワークデバイスは、また、ネットワークフローの特徴と規則とに基づいて、ネットワークフローの１つ以上を物理的なキューの少なくとも１つに割り当てるようにプログラムされる。【選択図】  図４
2015528231.tif 000002
【特許請求の範囲】
【請求項１】
仮想化ホストコンピュータシステム（４０２）において実行されている１つ以上の仮想マシン（４１２）のネットワークトラフィックを管理するように構成される仮想化ホストコンピュータシステム（４０２）であって、
１つ以上のプロセッサと、
１つ以上の物理的なネットワークデバイス（４１６）と、
コンピュータにより実行可能な命令を記憶した１つ以上のコンピュータ可読記憶媒体と、を備え、
前記コンピュータにより実行可能な命令は、前記１つ以上のプロセッサにより実行されると、前記仮想化ホストコンピュータシステムに仮想スイッチ（４０４）を実行させ、前記仮想スイッチは、前記１つ以上の物理的なネットワークデバイスのそれぞれを、１つ以上の対応する規則（４２０）を用いてプログラムするように構成され、かつ、前記仮想スイッチは、
前記物理的なネットワークデバイスにおける１つ以上の物理的なキュー（４２２）の利用可能性を決定することであって、前記１つ以上の物理的なキューは前記１つ以上の仮想マシンのネットワークフローを処理するために使用することができる、決定することと、
前記１つ以上の仮想マシンの複数のネットワークフローを識別することであって、前記複数のネットワークフローのそれぞれの１つ以上の特徴を識別することを含む、識別することと、
前記複数のネットワークフローのそれぞれの前記１つ以上の特徴と、前記１つ以上の規則とに基づいて、前記複数のネットワークフローの１つ以上を前記１つ以上の物理的なキューの少なくとも１つに割り当てることと、を実行するように構成される、
仮想化ホストコンピュータシステム。
【請求項２】
前記複数のネットワークフローの１つ以上を前記１つ以上の物理的なキューの少なくとも１つに割り当てることは、
前記複数のネットワークフローの少なくとも２つを、単一の物理的なキューに割り当てることを含む、
請求項１に記載の仮想化ホストコンピュータシステム。
【請求項３】
前記複数のネットワークフローは、前記１つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの１つ以上を前記１つ以上の物理的なキューの少なくとも１つに割り当てることは、
前記１つ以上の物理的なキューの少なくとも１つに対して前記ネットワークフローの２つ以上が割り当てられるように、前記複数のネットワークフローの全てを前記１つ以上の物理的なキューに割り当てることを含む、
請求項１に記載の仮想化ホストコンピュータシステム。
【請求項４】
前記複数のネットワークフローは、前記１つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの１つ以上を前記１つ以上の物理的なキューの少なくとも１つに割り当てることは、
前記複数のネットワークフローの第１サブセットを前記１つ以上の物理的なキューに割り当てることと、
前記複数のネットワークフローの第２サブセットを、前記仮想スイッチにおける１つ以上のソフトウェエアベースのキューに割り当てることと、を含む、
請求項１に記載の仮想化ホストコンピュータシステム。
【請求項５】
前記複数のネットワークフローのそれぞれの１つ以上の特徴を識別することは、
前記複数のネットワークフローの少なくとも２つが同様の特徴を有することを識別することと、
前記複数のネットワークフローの前記少なくとも２つが同様の特徴を有することに基づいて、前記複数のネットワークフローの前記少なくとも２つを単一の物理的なキューに割り当てることができることを識別することと、を含む、
請求項１に記載の仮想化ホストコンピュータシステム。
【請求項６】
前記複数のネットワークフローの前記少なくとも２つが同様の特徴を有することは、前記複数のネットワークフローの前記少なくとも２つが同様の速度制限特徴を有することを含む、請求項５に記載の仮想化ホストコンピュータシステム。
【請求項７】
１つ以上のプロセッサと、１つ以上の物理的なネットワークデバイス（４１６）とを備えるコンピュータシステム（４００）において実施される、ネットワークトラフィックを管理するための方法であって、
１つ以上の仮想マシン（４１２）を実行することと、
１つ以上の規則（４２０）を用いて物理的なネットワークデバイス（４１６ａ）をプログラムすることであって、前記１つ以上の規則は、前記１つ以上の仮想マシンのネットワークトラフィックを管理するように構成される、プログラムすることと、
ネットワークトラフィックを管理するように前記物理的なネットワークデバイスをプログラムすることを含み、
前記ネットワークトラフィックを管理するように前記物理的なネットワークデバイスをプログラムすることが、
前記物理的なネットワークデバイスにおける１つ以上の物理的なキュー（４２２）の利用可能性を決定することであって、前記１つ以上の物理的なキューは前記１つ以上の仮想マシンのネットワークフローを処理するために使用することができる、決定することと、
前記１つ以上の仮想マシンの複数のネットワークフローを識別することであって、前記複数のネットワークフローのそれぞれの１つ以上の特徴を識別することを含む、識別することと、
前記複数のネットワークフローのそれぞれの前記１つ以上の特徴と、前記１つ以上の規則とに基づいて、前記複数のネットワークフローの１つ以上を前記１つ以上の物理的なキューの少なくとも１つに割り当てることと、含む、
方法。
【請求項８】
前記複数のネットワークフローは、前記１つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの１つ以上を前記１つ以上の物理的なキューの少なくとも１つに割り当てることは、
前記１つ以上の物理的なキューの少なくとも１つに対して前記ネットワークフローの２つ以上が割り当てられるように、前記複数のネットワークフローの全てを前記１つ以上の物理的なキューに割り当てることを含む、
請求項７に記載の方法。
【請求項９】
前記複数のネットワークフローは、前記１つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの１つ以上を前記１つ以上の物理的なキューの少なくとも１つに割り当てることは、
前記複数のネットワークフローの第１サブセットを前記１つ以上の物理的なキューに割り当てることと、
前記複数のネットワークフローの第２サブセットを、前記仮想スイッチにおける１つ以上のソフトウェエアベースのキューに割り当てることと、を含む、
請求項７に記載の方法。
【請求項１０】
仮想化ホストコンピュータシステム（４０２）において実行されている１つ以上の仮想マシン（４１２）のネットワークトラフィックを管理するように構成される仮想化ホストコンピュータシステム（４０２）であって、
１つ以上のプロセッサと、
１つ以上の物理的なネットワークデバイス（４１６）と、
コンピュータにより実行可能な命令を記憶した１つ以上のコンピュータ可読記憶媒体と、を備え、
前記コンピュータにより実行可能な命令は、前記１つ以上のプロセッサにより実行されると、前記仮想化ホストコンピュータシステムに仮想スイッチ（４０４）を実行させ、前記仮想スイッチは、前記１つ以上の物理的なネットワークデバイスのそれぞれを、１つ以上の対応する規則（４２０）を用いてプログラムするように構成され、かつ、前記仮想スイッチは、
前記物理的なネットワークデバイスにおける１つ以上の物理的なキュー（４２２）の利用可能性を決定することであって、前記１つ以上の物理的なキューは前記１つ以上の仮想マシンのネットワークフローを処理するために使用することができる、決定することと、
前記１つ以上の仮想マシンの複数のネットワークフローを識別することであって、前記複数のネットワークフローのそれぞれの１つ以上の特徴を識別することを含み、前記複数のネットワークフローが前記１つ以上の物理的なキューよりも数が多い、識別することと、
前記複数のネットワークフローのそれぞれの前記１つ以上の特徴と、前記１つ以上の規則とに基づいて、前記１つ以上の物理的なキューの少なくとも１つに対し、前記複数のネットワークフローの２つ以上が割り当てられるように、前記複数のネットワークフローを前記１つ以上の物理的なキューの少なくとも１つに割り当てることと、を実行するように構成される、
仮想化ホストコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0002]  コンピュータシステムおよび関連技術は、社会の多くの側面に影響を与えている。確かに、コンピュータシステムの情報処理能力は、我々の生活の仕方および働き方を変貌させてきた。現在のコンピュータシステムは、通常、コンピュータシステムが出現する以前は手動で行われていた多くのタスク（例えば、文書処理、スケジューリング、会計処理など）を行っている。さらに最近では、コンピュータシステムが別のコンピュータシステムと互いに接続されたり、他の電子デバイスに接続されたりして、コンピュータシステムや他の電子デバイスが電子データを転送することができる有線および無線のコンピュータネットワークを形成している。したがって、多くの計算タスクの処理能力は、多数の異なるコンピュータシステムおよび／または多数の異なる計算環境にわたって分散されている。
【０００２】
[0003]  一部のコンピュータシステムは、１つ以上の仮想マシンのホストとして働くための仮想環境を提供するように構成される。例えば、準仮想化実行環境は、ハイパーバイザを含む。ハイパーバイザは、ペアレントパーティション（ホストと呼ばれることもある）および1つ以上のチャイルドパーティションを提供する。ペアレントパーティションは、物理的なハードウェアと通信し、これを管理し、かつホストオペレーティングシステムを実行し、仮想化スタックを管理するように構成される。各チャイルドパーティションは、対応するゲストオペレーティングシステムを実行する「仮想マシン」として構成される。
【０００３】
[0004]  仮想化における共通したシナリオには、仮想化ホストコンピュータシステムで動作している複数の仮想マシン間でネットワークパケットを管理すること、および、仮想マシンとホストコンピュータシステムから離れたコンピュータシステムとの間で流れるネットワークパケットを管理することが含まれる。したがって、ホストオペレーティングシステムにある仮想化スタックは、仮想スイッチを含むネットワーク仮想化スタックを含む。仮想スイッチは、仮想マシンに関連してやり取りされているネットワークパケットを遮断し、検査し、かつ操作するように構成される、しかし、このようにすることは、ホストオペレーティングシステムとゲストオペレーティングシステムとの間で（例えば、ＣＰＵ使用率の点で）犠牲の大きいコンテキストの切り替えを頻繁に引き起こし、かつネットワーク通信に待ち時間を生じさせることがあるため、非効率になりかねない。
【０００４】
[0005]  仮想化における最近の開発には、シングルルートＩ／Ｏ仮想化（ＳＲＩＯＶ）が含まれる。ＳＲＩＯＶは、周辺機器相互接続エクスプレス（ＰＣＩｅ）デバイスがチャイルドパーティションと直接通信できるようにするＰＣＩｅバスアーキテクチャから発展したものである。したがって、ＳＲＩＯＶは、ＰＣＩｅデバイスが、ハイパーバイザを介してチャイルドパーティション／仮想マシンから見えるようにすることができる。例えば、ＳＲＩＯＶに準拠した物理的なネットワークインタフェースカード（ＮＩＣ）またはスイッチは、物理機能をペアレントパーティションに提供し、１つ以上の仮想機能を対応するチャイルドパーティションに提供することができる。そして、ホストオペレーティングシステムは、物理機能と通信する物理機能ドライバを含むことができ、各ゲストオペレーティングシステムは、対応する仮想機能と通信する仮想機能ドライバを実行することができる。そして、物理的なＮＩＣは、（ホストオペレーティングシステムをバイパスして）ゲストオペレーティングシステムと直接ネットワークパケットのやり取りができるようになり、ネットワーク性能を大きく向上させることができる。
【０００５】
[0006]  ＳＲＩＯＶがもたらした進歩にもかかわらず、仮想化環境におけるネットワークパケット処理の分野には、いくらかの非効率性が依然として存在している。
【発明の概要】
【０００６】
[0007]  本発明は、仮想マシンのネットワークフローをネットワークハードウェアの物理的なキューにオフロードするための方法、システム、およびコンピュータプログラム製品に及ぶ。したがって、本発明の実施形態は、仮想マシンのネットワークトラフィックが、ペアレントパーティションをバイパスし、かつペアレントパーティションを通るネットワークトラフィックのルーティングに関連した非効率性を回避して、仮想マシンと物理的なハードウェアとの間を直接通過することができるようにする。特に、本発明のいくつかの実施形態は、仮想マシンからのネットワークフローを物理的なネットワークハードウェアの物理的なキューに割り当て、かつ潜在的には、物理的なネットワークハードウェア上に存在する物理的なキューの数よりも多いネットワークフローを物理的なキューに割り当てるように、物理的なネットワークハードウェアを構成することを含む。
【０００７】
[0008]  いくつかの実施形態において、ネットワークトラフィックを管理するための方法は、コンピュータシステムにより、１つ以上の仮想マシンを実行することを含む。また、この方法は、コンピュータシステムにより、物理的なネットワークデバイスによって仮想マシンのネットワークトラフィックを管理するために使用される１つ以上の規則を用いて、物理的なネットワークデバイスをプログラムすることも含む。特に、物理的なネットワークデバイスは、物理的なネットワークデバイスにおける１つ以上の物理的なキューの利用可能性を決定するようにプログラムされる。物理的なキューは、仮想マシンのネットワークフローを処理するために使用可能である。物理的なネットワークデバイスは、また、仮想マシンの複数のネットワークフローを識別するようにプログラムされ、この識別は、ネットワークフローのそれぞれの特徴を識別することを含む。また、物理的なネットワークデバイスは、ネットワークフローの特徴と、規則とに基づいて、複数のネットワークフローの１つ以上を物理的なキューの少なくとも１つに割り当てるようにプログラムされる。
【０００８】
[0009]  本概要は、以下の詳細な説明においてさらに詳しく説明される概念の一部を簡略化した形態で紹介するために提供される。本概要は、クレームされた主題の重要な特徴または不可欠な特徴を特定することを意図したものではなく、クレームされた主題の範囲の判断を助けるものとして使用されることを意図したものでもない。
【０００９】
[0010]  本発明のさらなる特徴および利点は、以下の説明において記載され、かつ部分的に以下の説明から明らかになるか、あるいは、本発明の実施から習得されるであろう。本発明の特徴および利点は、特に添付の請求項において指摘される道具および組み合わせを用いることによって、実現および達成することができる。本発明のこれらの特徴および他の特徴は、以下の説明と添付の請求の範囲からさらに十分に明らかになるか、あるいは、以下に記すような本発明の実施から習得することができる。
【図面の簡単な説明】
【００１０】
[0011]  本発明の上記および他の利点および特徴が達成され得る態様を説明するために、添付の図面に示された本発明の特定の実施形態を参照して、上記で簡単に説明した本発明についてより詳細に説明する。これらの図面は、本発明の典型的な実施形態を図示しているため、本発明の範囲を限定するものとはみなされないとの理解に立った上で、以下の添付の図面を利用して、さらに特定的かつ詳細に本発明を記載および説明する。
【００１１】
【図１】[0012]  図１は、本明細書に記載される原理が採用され得る例示的な計算システムを示す。
【図２】[0013]  図２は、本明細書に記載される原理が採用され得る環境を示す。
【図３】[0014]  図３は、本明細書に記載される原理が採用され得るホストを示す。
【図４】[0015]  図４は、仮想マシンのフローを物理的なキューにオフロードすることを容易にするコンピュータアーキテクチャの一例を示す。
【図５】[0016]  図５は、ネットワークトラフィックを管理するための方法の一例のフローチャートを示す。
【発明を実施するための形態】
【００１２】
[0017]  本発明は、仮想マシンのネットワークフローをネットワークハードウェアの物理的なキューにオフロードするための方法、システム、およびコンピュータプログラム製品に及ぶ。したがって、本発明の実施形態は、仮想マシンのネットワークトラフィックが、ペアレントパーティションをバイパスし、かつペアレントパーティションを通るネットワークトラフィックのルーティングに関連した非効率性を回避して、仮想マシンと物理的なハードウェアとの間を直接通過することをできるようにする。特に、本発明のいくつかの実施形態は、仮想マシンからのネットワークフローを物理的なネットワークハードウェアの物理的なキューに割り当て、かつ潜在的には、物理的なネットワークハードウェア上に存在する物理的なキューの数よりも多いネットワークフローを物理的なキューに割り当てるように、物理的なネットワークハードウェアを構成することを含む。
【００１３】
[0018]  まず、本明細書に記載される原理を採用可能な一般的な計算システムおよび計算環境について、図１〜３を参照して導入説明をする。その後、仮想マシンのネットワークフローをネットワークハードウェアの物理的なキューにオフロードするための基礎原理について、図４および５を参照して説明する。
【００１４】
[0019]  現在、計算システムは、多様な形態を取るようになってきている。計算システムとして、例えば、携帯デバイス、機器、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散計算システム、あるいは従来計算システムとは認識されなかったデバイスまで挙げられ得る。本説明および請求の範囲において、「計算システム」という用語は、少なくとも１つの物理的で有形のプロセッサと、プロセッサによって実行され得るコンピュータにより実行可能な命令を記憶することができる物理的で有形のメモリと、を備えるあらゆるデバイスまたはシステム（またはそれらの組み合わせ）を含むものと広く定義される。メモリは、いずれの形態をとってもよく、計算システムの性質および形態に応じて変化し得る。計算システムは、ネットワーク環境上に分散されてもよく、複数の構成体としての計算システムを含んでもよい。
【００１５】
[0020]  本明細書に記載された実施形態は、例えば、１つ以上のプロセッサおよびシステムメモリなどのコンピュータハードウェアを備えた専用コンピュータまたは汎用コンピュータを含み得る、あるいは利用し得る。例えば、図１は、例示的な計算システム１００を示す。図１に示されるように、最も基本的な構成において、計算システム１００は、典型的に、少なくとも１つの処理ユニット１０２およびメモリ１０４を備える。メモリ１０４は、物理的なシステムメモリであってよく、揮発性でも、不揮発性でも、これら２つのいずれかの組み合わせでもよい。「メモリ」という用語は、本明細書において、物理的な記憶媒体などの不揮発性大容量記憶装置を指す場合もある。計算システム１００が分散されている場合、処理、記憶、および／または保存する能力も同様に分散され得る。本明細書で使用される「モジュール」または「コンポーネント」という用語は、計算システム１００上で実行されるソフトウェアオブジェクトまたはルーティンを指し得る。本明細書に記載される異なるコンポーネント、モジュール、エンジン、およびサービスは、計算システム１００上で実行されるオブジェクトまたはプロセス（例えば、別個のスレッドなど）として実施され得る。
【００１６】
[0021]  以下の説明では、計算システム１００などの１つ以上の計算システムによって実行される行為に関連して実施形態を説明する。そのような行為がソフトウェアにおいて実施される場合、該行為を実行する関連した計算システムの１つ以上のプロセッサは、コンピュータにより実行可能な命令が実行されたことに応答して、計算システムの動作を指示する。このような動作の一例には、データの操作が含まれる。計算システム１００のコンテキストにおいて、コンピュータにより実行可能な命令（および操作されたデータ）は、メモリ１０４に記憶され得る。計算システム１００は、例えばネットワーク１１０上でこの計算システム１００と他のメッセージプロセッサとの通信を可能にする通信チャネル１０８も備え得る。
【００１７】
[0022]  本明細書に記載される実施形態は、コンピュータにより実行可能な命令および／またはデータ構造を保持または記憶するための物理的なおよび他のコンピュータ可読媒体も備える。このようなコンピュータ可読媒体は、汎用計算システムまたは専用計算システムによってアクセスされ得る任意の利用可能な媒体であってよい。コンピュータにより実行可能な命令を記憶するコンピュータ可読媒体は、物理的な記憶媒体である。コンピュータにより実行可能な命令を保持するコンピュータ可読媒体は、伝送媒体である。したがって、限定ではなく例示を目的として、本発明の実施形態には、少なくとも２つの別々の異なる種類のコンピュータ可読媒体、つまり、コンピュータ記憶媒体および伝送媒体が含まれ得る。
【００１８】
[0023]  コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、もしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望のプログラムコード手段をコンピュータによって実行可能な命令またはデータ構造の形態で記憶するのに使用することができ、かつ汎用コンピュータもしくは専用コンピュータによってアクセスすることができる他の媒体などの、記録可能な種類の記憶媒体が含まれる。
【００１９】
[0024]  「ネットワーク」は、コンピュータシステムおよび／またはモジュールおよび／または他の電子デバイスの間で電子データの転送を可能にする１つ以上のデータリンクとして定義される。情報がネットワーク上または別の通信接続上で（有線、無線、または有線もしくは無線の組み合わせのいずれかによって）コンピュータに伝送または提供される場合、コンピュータは、その接続を適切に伝送媒体とみなす。伝送媒体には、所望のプログラムコード手段をコンピュータにより実行可能な命令またはデータ構造の形態で保持するために使用することができ、かつ汎用コンピュータもしくは専用コンピュータによってアクセスすることができるネットワーク（例えば、ネットワーク１１０）および／またはデータリンクが含まれ得る。上記の組み合わせも、コンピュータ読取可能媒体の範囲内に含まれるべきである。
【００２０】
[0025]  さらに、コンピュータにより実行可能な命令またはデータ構造の形態のプログラムコード手段は、多様なコンピュータシステムコンポーネントに到達すると、伝送媒体からコンピュータ記憶媒体に（または、その逆に）自動的に伝送され得る。例えば、ネットワークまたはデータリンクを介して受信されたコンピュータにより実行可能な命令またはデータ構造は、ネットワークインタフェースモジュール（例えば、「ＮＩＣ」）内のＲＡＭ内でバッファに入れられ、その後、最終的に、コンピュータシステムにおいて、コンピュータシステムＲＡＭおよび／またはより揮発性の低いコンピュータ記憶媒体へと伝送され得る。したがって、コンピュータ記憶媒体は、伝送媒体を同様に（または、むしろ主として）利用するコンピュータシステムコンポーネントに含まれ得ることを理解されたい。
【００２１】
[0026]  コンピュータにより実行可能な命令は、例えば、プロセッサで実行されると、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに、所定の機能または所定組の機能を果たさせる命令およびデータを含む。コンピュータにより実行可能な命令は、例えば、二進数、アセンブリ言語などの中間フォーマット命令、またはソースコードであり得る。本明細書では、主題は、構造的な特徴および／または方法論的行為に特有の言語を使用して記載されるが、当然のことながら、添付の請求の範囲において定義される主題は、本明細書内に記載された特徴または行為に必ずしも限定されない。むしろ、本明細書において記載される特徴および行為は、請求の範囲を実施する形態の例として開示されている。
【００２２】
[0027]  当業者には明らかであろうが、本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースの家電もしくはプログラム可能な家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、タブレット、携帯無線呼出し器、ルータ、スイッチなどを含む多様な種類のコンピュータシステム構成を有するネットワーク計算環境において実現され得る。本発明は、また、ネットワークを介して（有線データリンク、無線データリンク、または有線および無線データリンクの組み合わせのいずれかによって）接続されるローカルコンピュータシステムとリモートコンピュータシステムが共にタスクを実行する分散システム環境においても実現され得る。分散システム環境では、プログラムモジュールは、ローカル記憶保存デバイスとリモート記憶保存デバイスの両方に配置され得る。
【００２３】
[0028]  図２は、本明細書に記載される原理が採用され得る環境２００を抽象的に示している。環境２００は、インタフェース２０２を使用してシステム２１０と相互作用する複数のクライアント２０１を含む。環境２００は、３つのクライアント２０１Ａ、２０１Ｂ、２０１Ｃを有するように図示されているが、省略記号２０１Ｄは、本明細書に記載の原理が、インタフェース２０２を介してシステム２１０と接続して機能するクライアントの数に限定されないことを表している。システム２１０は、要求に応じてクライアント２０１にサービスを提供することができるため、システム２１０からサービスを受けるクライアント２０１の数は、時間と共に変化し得る。
【００２４】
[0029]  クライアント２０１の１つ以上は、例えば、図１の計算システム１００に従って、上述したように構築され得る。その代わりに、あるいはそれに加えて、クライアント２０１の１つ以上は、インタフェース２０２を介してシステム２１０と接続して機能するアプリケーションまたは他のソフトウェアモジュールであってもよい。インタフェース２０２は、アプリケーションプログラムインタフェース（ＡＰＩ）を使用することができる任意の計算システムまたはソフトウェアエンティティがシステム２１０と通信し得るように定義されたＡＰＩであり得る。
【００２５】
[0030]  システム２１０は、必須ではないが、分散システムであってもよい。一実施形態において、システム２１０は、クラウドコンピューティング環境である。クラウドコンピューティング環境は、必須ではないものの、分散されてもよく、さらには国際的に分散されてもよく、かつ／または複数の組織間で所有されるコンポーネントを有してもよい。
【００２６】
[0031]  本説明およびその後の請求の範囲において、「クラウドコンピューティング」とは、構成可能な計算リソース（例えば、ネットワーク、サーバ、記憶装置、アプリケーション、およびサービス）の共有プールへのオンデマンドネットワークアクセスを可能にするためのモデルであると定義される。「クラウドコンピューティング」の定義は、そのようなモデルが適切に配置された際に得られ得る他の多くの利点のいずれにも限定されない。
【００２７】
[0032]  例えば、クラウドコンピューティングは、現在、構成可能な計算リソースの共有プールへのユビキタスで便利なオンデマンドアクセスを提供するべく、市場で採用されている。さらに、構成可能な計算リソースの共有プールは、仮想化によって迅速に供給され、わずかな管理労力またはサービスプロバイダの干渉で解放され、その後相応に基準化される。
【００２８】
[0033]  クラウドコンピューティングモデルは、オンデマンドセルフサービス、ブロードネットワークアクセス、リソースプーリング、急速な弾性、度数制などの多様な特徴から構成され得る。クラウドコンピューティングモデルは、例えば、サービスとしてのソフトウェア（「ＳａａＳ」）、サービスとしてのプラットフォーム（（「ＰａａＳ」）、およびサービスとしてのインフラストラクチャ（「ＩａａＳ」）などの多様なサービスモデルの形でもたらされ得る。クラウドコンピューティングモデルは、さらに、プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウドなどの異なる配置モデルを使用して配置されてもよい。本説明および請求の範囲に置いて、「クラウドコンピューティング環境」とは、クラウドコンピューティングが採用された環境である。
【００２９】
[0034]  図示されるように、システム２１０は、各々が仮想マシンを実行することができる複数のホスト２１１を含む。システム２１０は、いずれの数のホスト２１１を含んでもよいが、図２では、３つのホスト２１１Ａ、２１１Ｂおよび２１１Ｃが示され、省略記号２１１Ｄは、本明細書に記載される原理がシステム２１０内のホストの正確な数に限定されないことを表している。ホストの数は、１以上であればよく、上限はない。さらに、ホストの数は、静的でもよく、あるいは、新しいホストがシステム２１０に追加されたり、ホストがシステム２１０から抜けたりするなどして、時間とともに動的に変化してもよい。ホスト２１１のそれぞれは、図１の計算システム１００用に上述したように構築され得る。
【００３０】
[0035]  各ホストは、１つ以上、潜在的には多数の仮想マシンを実行することができる。例えば、図３は、より詳細なホスト３００を抽象的に示している。一例として、ホスト３００は、図２のホスト２１１のいずれかを表し得る。図３の場合、ホスト３００は、仮想マシン３１０Ａ、３１０Ｂ、３１０Ｃを含む３つの動作中の仮想マシン３１０として示されている。しかし、この図においても、省略記号３１０Ｄは、本明細書に記載される原理がホスト３００上で実行される仮想マシンの数に限定されないことを表している。ホスト上で実行される仮想マシンは、ゼロ以上であればよく、上限は、ホスト３００の物理的な能力によってのみ規定される。
【００３１】
[0036]  動作中、仮想マシンは、少なくとも１つのオペレーティングシステムと、おそらく１つ以上の他のアプリケーションとを含む完全に動作中の計算システムをエミュレートする。各仮想マシンは、特定のクライアントに割り当てられ、当該クライアントのデスクトップ環境をサポートする役割を担う。
【００３２】
[0037]  仮想マシンは、デスクトップの現在の状態を表すデスクトップ画像または他の描画命令を生成し、その後、その画像または命令をデスクトップの描画用にクライアントに送信する。例えば、図２および３を参照すると、図３のホスト３００が図２のホスト２１１Ａを表しており、仮想マシン３１０Ａがクライアント２０１Ａに割り当てられると仮定すると（「主要例」と呼ぶ）、仮想マシン３１０Ａは、デスクトップ画像または命令を生成し、そのような命令をホスト２１１Ａからサービス調整システム２１３およびシステムインタフェース２０２を介して対応するクライアント２０１Ａにディスパッチし得る。
【００３３】
[0038]  ユーザはクライアントにてデスクトップと対話するため、ユーザ入力は、クライアントから仮想マシンに送信される。例えば、主要例において、図２および３を参照すると、クライアント２０１Ａのユーザはデスクトップと対話し、ユーザ入力はクライアント２０１からインタフェース２０２、サービス調整システム２１３、およびホスト２１１Ａを介して仮想マシン３０１Ａに送信される。
【００３４】
[0039]  仮想マシンはユーザ入力を処理し、必要に応じて、デスクトップの状態を変更する。このようなデスクトップ状態の変更が描画されたデスクトップを変更させるためのものである場合、仮想マシンは、必要に応じて画像または描画命令を変更し、変更した画像または描画命令を、適切な描画用にクライアント計算システムに送信する。ユーザの視点からは、クライアント計算システム自体がこのデスクトップ処理を実行しているように見える。
【００３５】
[0040]  ホスト３００は、仮想マシン３１０の視点からは抽象化される物理的なリソース３２１を使用して、仮想マシン３１０の仮想リソースをエミュレートするハイパーバイザ３２０を備える。ハイパーバイザ３２０は、仮想マシン３１０間に適切な分離も提供する。したがって、いずれかの所与の仮想マシンの視点からは、ハイパーバイザ３２０は仮想マシンが物理的なリソースの外形（例えば、仮想リソース）のみと接続して機能し、物理的なリソースと直接的には接続して機能していないにもかかわらず、仮想マシンが物理的なリソースと接続して機能しているような錯覚を与える。図３において、物理的なリソース３２１は、リソース３２１Ａ〜３２１Ｆを含むものとして抽象的に表されている。物理的なリソース３２１の例には、処理能力、メモリ、ディスク空き容量、ネットワーク帯域幅、媒体ドライブ等が含まれる。
【００３６】
[0041]  ホスト３００は、ホストの性能を監視し、ホストを管理する他の動作を実行するホストエージェント３０２を稼働させ得る。さらに、ホスト３００は、後述する仮想スイッチのような他のコンポーネント３０３を含んでもよい。
【００３７】
[0042]  図２に戻り、システム２００は、サービス２１２も含む。図示された例において、サービス２１２は、５つの別々のサービス２１２Ａ、２１２Ｂ、２１２Ｃ、２１２Ｄおよび２１２Ｅを含むが、省略記号２１２Ｆは、本明細書に記載される原理がシステム２１０内のサービスの数に限定されないことを表している。サービス調整システム２１３は、ホスト２１１およびサービス２１２と通信することにより、クライアント２０１に要求されたサービスと、要求されたサービスに必須の他のサービス（認証、請求など）を提供する。
【００３８】
[0043]  次に、図４を参照すると、図４は、仮想マシンのフローを物理的なキューにオフロードすることを容易にするコンピュータアーキテクチャの一例を示している。図示されるように、コンピュータアーキテクチャ４００は、ホスト４０２と、１つ以上の仮想マシン４１２（仮想マシン４１２ａを含む）と、１つ以上の物理的なネットワークデバイス４０６（物理的なネットワークデバイス４１６ａを含む）とを備える。
【００３９】
[0044]  ホスト４０２は、仮想化環境を提供するように構成される。いくつかの実施形態において、ホスト４０２は、図３のホスト３００に対応し得る。例えば、ホスト４０２は、（ホストオペレーティングシステムを実行する）ペアレントパーティションと、１つ以上のチャイルドパーティションとを備え得る。各チャイルドパーティションは、仮想マシン４１２ａなどの対応する仮想マシンを実行するための仮想化されたハードウェア環境を提供するように見え得る。ホスト４０２は、テナントの代わりに仮想マシンのホストとして働くクラウドコンピューティング環境の一部として使用され得る。
【００４０】
[0045]  仮想マシン４１２（仮想マシン４１２ａを含む）のそれぞれは、オペレーティングシステム、アプリケーションソフトウェアなどの１つ以上の仮想化されたアプリケーションを実行する。仮想マシン４１２のそれぞれは、ネットワークパケットを送受信することができる。例えば、仮想マシン４１２のそれぞれは、ネットワークスタック（例えば、ＴＣＰ／ＩＰスタック）を備え、ネットワークパケットおよび他の情報を、ホスト４０２を通してデータパス４３２上で、および／または、物理的なネットワークデバイス４１６を通してデータパス４３０上で送受信することができる。したがって、仮想マシン４１２は、ネットワークフローを作り出すことができる。
【００４１】
[0046]  各物理的なネットワークデバイス４１６は、１つ以上の外部インタフェースを使用して他のコンピュータシステムおよび／または他のネットワークと接続される。図４は、物理的なネットワークデバイス４１６ａが外部インタフェース４２６を使用してネットワーク４３４に接続されていることを示している。物理的なネットワークデバイス４１６は、ＮＩＣやスイッチなどの任意の好適な種類の物理的なネットワークハードウェアを含み得る。
【００４２】
[0047]  さらに、各物理的なネットワークデバイス４１６は、仮想化された環境に適合する物理的なハードウェアを備える。例えば、図４は、物理的なネットワークデバイス４１６ａが仮想機能４２４を仮想マシン４１２に提供することを示している。特に、物理的なネットワークデバイス４１６ａは、仮想マシン４１２のそれぞれに１つ以上の仮想機能を提供し得る。例えば、図４は、物理的なネットワークデバイス４１６ａが仮想マシン４１２ａに仮想機能４２４ａを提供することを示している。仮想マシン４１２のそれぞれは、対応する仮想機能ドライバを備える。例えば、図４は、仮想マシン４１２ａが仮想機能ドライバ４１４を備えることを示す。したがって、仮想マシン４１２のそれぞれは、データパス４３０上で対応する仮想機能４２４にアクセスすることができ、データパス４３０を使用して、ホスト４０２を通してネットワークパケットをルーティングすることなく、物理的なネットワークデバイス４１６ａとネットワークパケットのやり取りができる。このようにすることで、ホスト４０２を通してネットワークパケットをルーティングする場合と比較して、プロセッサの使用率およびネットワークの待ち時間を減少させることができる。
【００４３】
[0048]  さらに、図４は、物理的なネットワークデバイス４１６ａがホスト４０２に物理機能４１８を提供していることも示している。図４は、また、ホスト４０２が対応する物理機能ドライバ４１０を含むこと、およびデータパス４２８が物理的なネットワークデバイス４１６ａにおける物理機能４１８とホスト４０２における物理機能ドライバ４１０とを接続することも示している。したがって、物理機能４１８および物理機能ドライバ４１０は、物理的なネットワークデバイス４１６ａとホスト４０２との間でネットワークパケットの交換するために動作し得る。
【００４４】
[0049]  前述したように、物理的なＮＩＣ１１０は、いくつかの実施形態では、ＳＲＩＯＶに準拠したＰＣＩｅハードウェアを備える。そのような実施形態において、１つ以上の仮想機能４２４または物理機能４１８はＰＣＩｅ機能を含んでもよい。しかし、当然ながら、本明細書に記載される原理は、多様なハードウェアデバイスに適用可能であり、ＳＲＩＯＶに準拠したデバイスまたはＰＣＩｅデバイスに限定されるものではない。
【００４５】
[0050]  物理的なネットワークデバイス４１６のそれぞれは、仮想マシン４１２に関連したネットワークフローを処理する時に物理的なネットワークデバイス４１６によって使用され得る１つ以上の物理的なキューを備え得る。例えば、図４は、物理的なネットワークデバイス４１６ａが、キュー４２２ａと、水平方向の省略記号とキュー４２２ｎによって表されるような任意の追加数（つまり、ゼロ以上）の追加の物理的なキューとを含む、物理的なキュー４２２を備えることを示している。１つ以上の実施形態によると、ホスト４０２は、１つ以上の物理的なネットワークデバイス４１６が、仮想マシン４１２のネットワークフローを処理する時に、その物理的なキューの使用を管理するように、物理的なネットワークデバイス４１６を構成する。図示されるように、例えば、ホスト４０２の仮想スイッチ４０４は、規則４０６を含み得る。規則４０６を使用して、仮想スイッチ４０４は規則４２０を用いて物理的なネットワークデバイス４１６ａをプログラムし、物理的なネットワークデバイス４１６ａがそれらの規則に基づいて物理的なキュー４２２へのネットワークフローの割り当てを管理するようにプログラムすることができる。規則４２０は、規則４０６と同一であってもよく、ある程度変更されていてもよく、かつ／または規則４０６のサブセットを含んでもよい。したがって、物理的なネットワークデバイス４１６ａは、仮想マシン４１２からのネットワークフローを効率的に扱うように構成され得るが、これは各ネットワークフローについてホスト４０２を関与させることなくネットワークフローを物理的なキュー４２２に割り当てることを含む。
【００４６】
[0051]  規則４２０は、物理的なネットワークデバイス４１６ａが、物理的なキュー４２２に存在するキューの数よりも多い数のネットワークフローを物理的なキュー４２２に割り当てることを可能にする規則を含む。簡単な例では、仮想マシン４１２からのネットワークトラフィックは、８つのアクティブなネットワークフローを含み得るが、物理的なネットワークデバイス４１６ａは、規則４２０を使用して、これらの８つのフローを物理的なキュー４２２のうちの４つの利用可能なキューのみに割り当てることがある。物理的なネットワークデバイス４１６ａは、フローの特徴および／またはフローの分類に基づき、ネットワークフローのキューへの割り当てを行うように構成され得る。いくつかの実施形態において、物理的なネットワークデバイス４１６ａは、フローの特徴および規則４２０に基づいて、ネットワークフローをそれぞれ異なる分類に入れる。いくつかの追加のまたは代替的な実施形態では、物理的なネットワークデバイス４１６ａは、仮想マシン４１２による提案に基づいて、ネットワークフローをそれぞれ異なる分類に入れる。例えば、仮想マシン４１２ａは、フローに何らかの属性を付けてもよく、あるいは提案された分類をフローから離れた物理機能４１８に伝達してもよい。
【００４７】
[0052]  規則４２０は、多様な種類のキュー割り当てアルゴリズムを可能にし得る。例えば、規則４２０は、比較的低いトラフィックレベルを有する複数のネットワークフローが、単一の物理的なキューにまとめて割り当てられ得る一方、比較的高いトラフィックレベルを有するフローが、それぞれ対応する物理的なキューに限定して割り当てられるように指定し得る。別の例では、規則４２０は、同様のまたは互換性のある要件を有する複数のフローが同一キュー上で組み合わされるように指定し得る。例えば、複数のフローのネットワークパケットが同様の速度でペース調整（速度制限）される場合、それらのフローは、単一の物理的なキューにまとめて割り当てられ得る。他の同様のまたは互換性のある要件には、優先度（例えば、優先度の低いフローを単一のキュー上にまとめてグループ化すること）、サービス品質（ＱｏＳ）（例えば、ＱｏＳ要件の低いフローを単一キュー上にまとめてグループ化すること）などが含まれ得る。規則４２０は、同一の仮想マシンからのフローが、単一の物理的なキュー上または単一組の物理的なキュー上にグループ化されるように指定することもできる。したがって、本明細書に記載する実施形態では、複数の仮想マシン４１２間でハードウェアリソースの分割を容易にすることができる。
【００４８】
[0053]  いくつかの実施形態において、物理的なネットワークデバイス４１６および仮想スイッチ４０４は共に機能し、両者間のネットワークフローの実行を均衡させることができる。例えば、図４は、仮想スイッチ４０４が（キュー４０８ａと、水平方向の省略記号およびキュー４０８ｈによって表される任意の追加数（つまり、ゼロ以上）の追加のキューとを含む）ソフトウェアベースの仮想キュー４０８を含み得る。したがって、ネットワークフローには物理的なキュー４２２に割り当てられ得るものもあれば、仮想キュー４０８に割り当てられ得るものもある。当然ながら、物理的なキュー４２２は、仮想キュー４０８と比べてより速く、より細分性が高く、かつ／またはより信頼性の高い性能を提供することができる。したがって、ネットワークフローは、物理的なネットワークデバイス４１６ａにおいて、より速く、より細分性が高く、かつ／またはより信頼性の高い性能を利用するために物理的なキュー４２２に割り当てられるべきフローと、速く、細分性が高く、かつ／または信頼性の高い性能が重要ではないことを理由に、ホスト４０２において仮想キュー４０８に割り当て可能なフローと、に分類され得る。このような割り当ては、仮想マシン４１２によって提案されてもよく、かつ／または物理的なネットワークデバイス４１６および／もしくは仮想スイッチ４０４によって行われてもよい。
【００４９】
[0054]  いくつかの実施形態において、フローは、複数の物理的なネットワークデバイス４１６（例えば、ＮＩＣおよびスイッチ）を通過することがあり、ホスト４０２は、各物理的なネットワークデバイスが独立してフローを扱うようにプログラムすることができる。例えば、ある物理的なネットワークデバイスは、フローを、このデバイスにおいて単一の物理的なキューに割り当てるようにプログラムされ得る一方、別の物理的なネットワークデバイスは、このデバイスにおいて単一の物理的なキューに、フローを他のフローと組み合わせて割り当てるようにプログラムされ得る。
【００５０】
[0055]  図５は、ネットワークトラフィックを管理するための方法５００のフローチャートを示している。方法５００を、コンピュータアーキテクチャ４００のコンポーネントおよびデータについて、説明する。
【００５１】
[0056]  方法５００は、１つ以上の仮想マシンを実行する行為を含む（行為５０２）。例えば、ホスト４０２は、仮想マシン４１２ａを含み得る複数の仮想マシン４１２を実行し得る。いくつかの実施形態において、行為５０２は、１つ以上のＳＲＩＯＶに準拠した物理的なネットワークデバイスを使用することを含む、準仮想化された態様で（複数の）仮想マシンを実行することを含み得る。したがって、少なくとも１つの物理的なネットワークデバイス（例えば、物理的なネットワークデバイス４１８）は、仮想機能（例えば、仮想機能４２４ａ）を仮想マシン４１２ａに提供することができ、仮想マシン４１２ａは、物理的なネットワークデバイスと直接的にネットワークパケットをやり取りするために対応する仮想機能ドライバ（例えば、仮想機能ドライバ４１４）を含み得る。
【００５２】
[0057]  方法５００は、また、１つ以上の規則を用いて物理的なネットワークデバイスをプログラムする行為も含み、この１つ以上の規則は、１つ以上の仮想マシンのネットワークトラフィックを管理するように構成される（行為５０４）。例えば、仮想スイッチ４０４は、規則４２０を用いて物理的なネットワークデバイス４１６ａをプログラムすることができる。規則４２０は、仮想スイッチ４０４における規則４０６のコピーであってもよく、あるいは規則４０６に基づくものであってもよい。規則４２０は、物理的なネットワークデバイス４１６ａが、仮想マシン４１２に関連するフローと、物理的なネットワークデバイス４１６ａの物理的なキュー４２２との間で割り振りを行うことを可能にするように構成され得る。
【００５３】
[0058]  方法５００は、また、ネットワークトラフィックを管理するように物理的なネットワークデバイスをプログラムする行為を含む（行為５０６）。例えば、仮想スイッチ４０４は、物理的なネットワークデバイス４１６ａを、規則４２０に基づいてフローの割り当てをするように構成することができる。いくつかの実施形態において、ネットワークトラフィックを管理するように物理的なネットワークデバイス４１６ａをプログラムすることは、規則４２０を用いて物理的なネットワークデバイス４１６ａをプログラムした結果として生じる。他の実施形態では、ネットワークトラフィックを管理するように物理的なネットワークデバイス４１６ａをプログラムすることは、追加のコンピュータにより実行可能な命令および／または追加の構成設定を使って物理的なネットワークデバイス４１６ａを特別にプログラムすることを含む。
【００５４】
[0059]  行為５０６は、物理的なネットワークデバイスにおける１つ以上の物理的なキューの利用可能性を決定するように物理的なネットワークデバイスをプログラムすることを含み、この１つ以上の物理的なキューは、１つ以上の仮想マシンのネットワークフローを処理するために利用可能である（行為５０８）。例えば、物理的なネットワークデバイス４１６ａは、物理的なキュー４２２の現在の利用可能性を含めて、物理的なキュー４２２を識別するように構成され得る。
【００５５】
[0060]  行為５０６は、１つ以上の仮想マシンについて複数のネットワークフローを識別するように物理的なネットワークデバイスをプログラムすることを含み、この識別は複数のネットワークフローのそれぞれについて１つ以上の特徴を識別することを含む（行為５１０）。例えば、物理的なネットワークデバイス４１６ａは、仮想マシン４１２に関連したネットワークフローを識別するように構成され得る。物理的なネットワークデバイス４１６ａは、フローを分類または他の態様でカテゴリ化するために、フローの特徴、仮想マシン４１２からのカテゴリ化の提案、または任意の他の適切な情報を分析するように構成されてもよい。
【００５６】
[0061]  行為５０６は、複数のネットワークフローのそれぞれの１つ以上の特徴と、１つ以上の規則とに基づいて、複数のネットワークフローの１つ以上を、１つ以上の物理的なキューの少なくとも１つに割り振るように、物理的なネットワークデバイスをプログラムすることを含む（行為５１２）。例えば、規則４２０と、行為５１０において識別された特徴およびカテゴリ化とに基づいて、物理的なネットワークデバイス４１６ａは、フローを物理的なキュー５２２に割り当てることができる。この割り当ての際に、物理的なネットワークデバイス４１６ａは、物理的なキューの数を超える数のフローを物理的なキュー４２２に割り当ててもよい。例えば、物理的なネットワークデバイス４１６ａは、同様の特徴、互換性のある優先度またはトラフィック負荷などを有するフローを同一の物理的なキューに割り当て得る。それに加えて、またはその代わりに、物理的なネットワークデバイス４１６ａは仮想スイッチ４０４と機能して、仮想スイッチ４０４において仮想キュー４０８に第１サブセットのフローを割り当て、物理的なネットワークデバイス４１６ａにおいて物理的なキュー４２２に第２サブセットのフローを割り当ててもよい。
【００５７】
[0062]  したがって、本明細書に記載された実施形態では、物理的なネットワークデバイス４１６がフローと物理的なキューとの間で割り当てを行えるようにすることにより、ネットワークの性能および物理的なハードウェアの使用率を向上させることができる。そのような割り当てを行う際に、本明細書に記載された実施形態では、物理的なハードウェアが、利用可能な物理的なキューの数よりも多い数のフローを、物理的なキューを使用して処理することができるようにし得る。それに加えて、またはその代わりに、そのような割り当てを行う際に、本明細書に記載された実施形態では、物理的なハードウェアが、物理的なキューと仮想キューとの間でフローの処理を均衡させることができる。
【００５８】
[0063]  本発明は、本発明の精神または本質的な特徴から逸脱することなく、他の特定の形態で具現化することができる。記載された実施形態は、あらゆる点で、例示的であり、限定的でないとみなされるべきである。したがって、本発明の範囲は、上記の説明ではなく、添付の請求の範囲によって示される。請求の範囲の均等性の意味および範囲内で行われるあらゆる変更は、請求の範囲内に包含されることになる。
【図１】
2015528231.tif 000003
【図２】
2015528231.tif 000004
【図３】
2015528231.tif 000005
【図４】
2015528231.tif 000006
【図５】
2015528231.tif 000007
【国際調査報告】
2015528231.tif 000008
2015528231.tif 000009
2015528231.tif 000010