JP2015528231A - 仮想マシンのフローの物理的なキューへのオフロード - Google Patents

仮想マシンのフローの物理的なキューへのオフロード Download PDF

Info

Publication number
JP2015528231A
JP2015528231A JP2015518447A JP2015518447A JP2015528231A JP 2015528231 A JP2015528231 A JP 2015528231A JP 2015518447 A JP2015518447 A JP 2015518447A JP 2015518447 A JP2015518447 A JP 2015518447A JP 2015528231 A JP2015528231 A JP 2015528231A
Authority
JP
Japan
Prior art keywords
physical
network
network flows
flows
queues
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015518447A
Other languages
English (en)
Other versions
JP6200497B2 (ja
JP2015528231A5 (ja
Inventor
カンデュラ,スリカンス
キム,チャンフン
ダバー,アリレザ
バンサル,ディパック
エー. マルツ,デイビッド
エー. マルツ,デイビッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015528231A publication Critical patent/JP2015528231A/ja
Publication of JP2015528231A5 publication Critical patent/JP2015528231A5/ja
Application granted granted Critical
Publication of JP6200497B2 publication Critical patent/JP6200497B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本発明は、仮想マシンのフローを物理的なキューにオフロードするための方法、システム、およびコンピュータプログラム製品に及ぶ。コンピュータシステムは、1つ以上の仮想マシンを実行し、仮想マシンのネットワークトラフィックを管理する1つ以上の規則を用いて物理的なネットワークデバイスをプログラムする。コンピュータシステムは、また、規則を使用してネットワークトラフィックを管理するように、ネットワークデバイスをプログラムする。特に、ネットワークデバイスは、仮想マシンのネットワークフローを処理するために使用することができる、ネットワークデバイスにおける1つ以上の物理的なキューの利用可能性を決定するようにプログラムされる。ネットワークデバイスは、また、仮想マシンのネットワークフローを識別するように構成され、この識別は、各ネットワークフローの特徴を識別することを含む。ネットワークデバイスは、また、ネットワークフローの特徴と規則とに基づいて、ネットワークフローの1つ以上を物理的なキューの少なくとも1つに割り当てるようにプログラムされる。
【選択図】 図4

Description

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

Claims (10)

  1. 仮想化ホストコンピュータシステム(402)において実行されている1つ以上の仮想マシン(412)のネットワークトラフィックを管理するように構成される仮想化ホストコンピュータシステム(402)であって、
    1つ以上のプロセッサと、
    1つ以上の物理的なネットワークデバイス(416)と、
    コンピュータにより実行可能な命令を記憶した1つ以上のコンピュータ可読記憶媒体と、を備え、
    前記コンピュータにより実行可能な命令は、前記1つ以上のプロセッサにより実行されると、前記仮想化ホストコンピュータシステムに仮想スイッチ(404)を実行させ、前記仮想スイッチは、前記1つ以上の物理的なネットワークデバイスのそれぞれを、1つ以上の対応する規則(420)を用いてプログラムするように構成され、かつ、前記仮想スイッチは、
    前記物理的なネットワークデバイスにおける1つ以上の物理的なキュー(422)の利用可能性を決定することであって、前記1つ以上の物理的なキューは前記1つ以上の仮想マシンのネットワークフローを処理するために使用することができる、決定することと、
    前記1つ以上の仮想マシンの複数のネットワークフローを識別することであって、前記複数のネットワークフローのそれぞれの1つ以上の特徴を識別することを含む、識別することと、
    前記複数のネットワークフローのそれぞれの前記1つ以上の特徴と、前記1つ以上の規則とに基づいて、前記複数のネットワークフローの1つ以上を前記1つ以上の物理的なキューの少なくとも1つに割り当てることと、を実行するように構成される、
    仮想化ホストコンピュータシステム。
  2. 前記複数のネットワークフローの1つ以上を前記1つ以上の物理的なキューの少なくとも1つに割り当てることは、
    前記複数のネットワークフローの少なくとも2つを、単一の物理的なキューに割り当てることを含む、
    請求項1に記載の仮想化ホストコンピュータシステム。
  3. 前記複数のネットワークフローは、前記1つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの1つ以上を前記1つ以上の物理的なキューの少なくとも1つに割り当てることは、
    前記1つ以上の物理的なキューの少なくとも1つに対して前記ネットワークフローの2つ以上が割り当てられるように、前記複数のネットワークフローの全てを前記1つ以上の物理的なキューに割り当てることを含む、
    請求項1に記載の仮想化ホストコンピュータシステム。
  4. 前記複数のネットワークフローは、前記1つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの1つ以上を前記1つ以上の物理的なキューの少なくとも1つに割り当てることは、
    前記複数のネットワークフローの第1サブセットを前記1つ以上の物理的なキューに割り当てることと、
    前記複数のネットワークフローの第2サブセットを、前記仮想スイッチにおける1つ以上のソフトウェエアベースのキューに割り当てることと、を含む、
    請求項1に記載の仮想化ホストコンピュータシステム。
  5. 前記複数のネットワークフローのそれぞれの1つ以上の特徴を識別することは、
    前記複数のネットワークフローの少なくとも2つが同様の特徴を有することを識別することと、
    前記複数のネットワークフローの前記少なくとも2つが同様の特徴を有することに基づいて、前記複数のネットワークフローの前記少なくとも2つを単一の物理的なキューに割り当てることができることを識別することと、を含む、
    請求項1に記載の仮想化ホストコンピュータシステム。
  6. 前記複数のネットワークフローの前記少なくとも2つが同様の特徴を有することは、前記複数のネットワークフローの前記少なくとも2つが同様の速度制限特徴を有することを含む、請求項5に記載の仮想化ホストコンピュータシステム。
  7. 1つ以上のプロセッサと、1つ以上の物理的なネットワークデバイス(416)とを備えるコンピュータシステム(400)において実施される、ネットワークトラフィックを管理するための方法であって、
    1つ以上の仮想マシン(412)を実行することと、
    1つ以上の規則(420)を用いて物理的なネットワークデバイス(416a)をプログラムすることであって、前記1つ以上の規則は、前記1つ以上の仮想マシンのネットワークトラフィックを管理するように構成される、プログラムすることと、
    ネットワークトラフィックを管理するように前記物理的なネットワークデバイスをプログラムすることを含み、
    前記ネットワークトラフィックを管理するように前記物理的なネットワークデバイスをプログラムすることが、
    前記物理的なネットワークデバイスにおける1つ以上の物理的なキュー(422)の利用可能性を決定することであって、前記1つ以上の物理的なキューは前記1つ以上の仮想マシンのネットワークフローを処理するために使用することができる、決定することと、
    前記1つ以上の仮想マシンの複数のネットワークフローを識別することであって、前記複数のネットワークフローのそれぞれの1つ以上の特徴を識別することを含む、識別することと、
    前記複数のネットワークフローのそれぞれの前記1つ以上の特徴と、前記1つ以上の規則とに基づいて、前記複数のネットワークフローの1つ以上を前記1つ以上の物理的なキューの少なくとも1つに割り当てることと、含む、
    方法。
  8. 前記複数のネットワークフローは、前記1つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの1つ以上を前記1つ以上の物理的なキューの少なくとも1つに割り当てることは、
    前記1つ以上の物理的なキューの少なくとも1つに対して前記ネットワークフローの2つ以上が割り当てられるように、前記複数のネットワークフローの全てを前記1つ以上の物理的なキューに割り当てることを含む、
    請求項7に記載の方法。
  9. 前記複数のネットワークフローは、前記1つ以上の物理的なキューよりも数が多く、前記複数のネットワークフローの1つ以上を前記1つ以上の物理的なキューの少なくとも1つに割り当てることは、
    前記複数のネットワークフローの第1サブセットを前記1つ以上の物理的なキューに割り当てることと、
    前記複数のネットワークフローの第2サブセットを、前記仮想スイッチにおける1つ以上のソフトウェエアベースのキューに割り当てることと、を含む、
    請求項7に記載の方法。
  10. 仮想化ホストコンピュータシステム(402)において実行されている1つ以上の仮想マシン(412)のネットワークトラフィックを管理するように構成される仮想化ホストコンピュータシステム(402)であって、
    1つ以上のプロセッサと、
    1つ以上の物理的なネットワークデバイス(416)と、
    コンピュータにより実行可能な命令を記憶した1つ以上のコンピュータ可読記憶媒体と、を備え、
    前記コンピュータにより実行可能な命令は、前記1つ以上のプロセッサにより実行されると、前記仮想化ホストコンピュータシステムに仮想スイッチ(404)を実行させ、前記仮想スイッチは、前記1つ以上の物理的なネットワークデバイスのそれぞれを、1つ以上の対応する規則(420)を用いてプログラムするように構成され、かつ、前記仮想スイッチは、
    前記物理的なネットワークデバイスにおける1つ以上の物理的なキュー(422)の利用可能性を決定することであって、前記1つ以上の物理的なキューは前記1つ以上の仮想マシンのネットワークフローを処理するために使用することができる、決定することと、
    前記1つ以上の仮想マシンの複数のネットワークフローを識別することであって、前記複数のネットワークフローのそれぞれの1つ以上の特徴を識別することを含み、前記複数のネットワークフローが前記1つ以上の物理的なキューよりも数が多い、識別することと、
    前記複数のネットワークフローのそれぞれの前記1つ以上の特徴と、前記1つ以上の規則とに基づいて、前記1つ以上の物理的なキューの少なくとも1つに対し、前記複数のネットワークフローの2つ以上が割り当てられるように、前記複数のネットワークフローを前記1つ以上の物理的なキューの少なくとも1つに割り当てることと、を実行するように構成される、
    仮想化ホストコンピュータシステム。
JP2015518447A 2012-06-21 2013-06-12 仮想マシンのフローの物理的なキューへのオフロード Active JP6200497B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/529,747 2012-06-21
US13/529,747 US9092269B2 (en) 2012-06-21 2012-06-21 Offloading virtual machine flows to physical queues
PCT/US2013/045290 WO2013191972A1 (en) 2012-06-21 2013-06-12 Offloading virtual machine flows to physical queues

Publications (3)

Publication Number Publication Date
JP2015528231A true JP2015528231A (ja) 2015-09-24
JP2015528231A5 JP2015528231A5 (ja) 2016-06-30
JP6200497B2 JP6200497B2 (ja) 2017-09-20

Family

ID=48703886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015518447A Active JP6200497B2 (ja) 2012-06-21 2013-06-12 仮想マシンのフローの物理的なキューへのオフロード

Country Status (11)

Country Link
US (1) US9092269B2 (ja)
EP (1) EP2864880A1 (ja)
JP (1) JP6200497B2 (ja)
KR (1) KR102008551B1 (ja)
CN (1) CN104428752B (ja)
AU (1) AU2013277589B2 (ja)
BR (1) BR112014031470B1 (ja)
CA (1) CA2875807A1 (ja)
MX (1) MX340694B (ja)
RU (1) RU2645595C2 (ja)
WO (1) WO2013191972A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016072963A (ja) * 2014-09-24 2016-05-09 インテル コーポレイション バーチャルマシンの間でサービスチェーンフローパケットを経路指定するための技術
JP2019057817A (ja) * 2017-09-21 2019-04-11 株式会社東芝 通信装置、通信方法及びプログラム

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL2586137T3 (pl) 2010-06-23 2017-09-29 Telefonaktiebolaget Lm Ericsson (Publ) Zarządzanie interferencjami sygnałów referencyjnych w sieciach heterogenicznych
US9417901B2 (en) * 2013-01-11 2016-08-16 Electronics And Telecommunications Research Institute Switch and method for guaranteeing quality of service of multi-tenant cloud service and system having the same switch
US20150055456A1 (en) * 2013-08-26 2015-02-26 Vmware, Inc. Traffic and load aware dynamic queue management
US9921867B2 (en) 2013-12-30 2018-03-20 Huawei Technologies Co., Ltd. Negotiation between virtual machine and host to determine executor of packet flow control policy with reduced address space
CN103763403B (zh) * 2013-12-30 2017-03-15 华为技术有限公司 报文流量控制方法及相关装置和计算节点
US9755978B1 (en) * 2014-05-12 2017-09-05 Google Inc. Method and system for enforcing multiple rate limits with limited on-chip buffering
US10469404B1 (en) 2014-05-12 2019-11-05 Google Llc Network multi-level rate limiter
US9762502B1 (en) * 2014-05-12 2017-09-12 Google Inc. Method and system for validating rate-limiter determination made by untrusted software
US10237354B2 (en) 2014-09-25 2019-03-19 Intel Corporation Technologies for offloading a virtual service endpoint to a network interface card
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
US10191757B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing Llc Seamless address reassignment via multi-tenant linkage
KR101953546B1 (ko) 2015-12-30 2019-06-03 한국전자통신연구원 가상 스위칭 장치 및 방법
US10523598B2 (en) * 2016-04-04 2019-12-31 Futurewei Technologies, Inc. Multi-path virtual switching
US10341201B2 (en) * 2016-07-29 2019-07-02 Fujitsu Limited Cross-domain orchestration of switch and service functions
US10193968B2 (en) 2016-10-14 2019-01-29 Google Llc Virtual router with dynamic flow offload capability
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
US11750533B2 (en) * 2017-10-24 2023-09-05 Intel Corporation Hardware assisted virtual switch
US10735341B2 (en) 2018-04-26 2020-08-04 Nicira, Inc. Dynamic provisioning of multiple RSS engines
US11936562B2 (en) * 2018-07-19 2024-03-19 Vmware, Inc. Virtual machine packet processing offload
US10686716B2 (en) 2018-07-23 2020-06-16 Vmware, Inc. Dynamic processing of packets using multiple receive queue features
US11025546B2 (en) 2018-07-25 2021-06-01 Vmware, Inc. Selection of paired transmit queue
US11354147B2 (en) * 2019-05-06 2022-06-07 Micron Technology, Inc. Class of service for multi-function devices
US11593138B2 (en) * 2019-05-20 2023-02-28 Microsoft Technology Licensing, Llc Server offload card with SoC and FPGA
US11800404B1 (en) 2021-05-20 2023-10-24 Amazon Technologies, Inc. Multi-tenant radio-based application pipeline processing server
US11720425B1 (en) 2021-05-20 2023-08-08 Amazon Technologies, Inc. Multi-tenant radio-based application pipeline processing system
US11985065B2 (en) * 2022-06-16 2024-05-14 Amazon Technologies, Inc. Enabling isolated virtual network configuration options for network function accelerators
US11909656B1 (en) * 2023-01-17 2024-02-20 Nokia Solutions And Networks Oy In-network decision for end-server-based network function acceleration

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785743B1 (en) * 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
US20100150164A1 (en) * 2006-06-23 2010-06-17 Juniper Networks, Inc. Flow-based queuing of network traffic
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
JP2013196138A (ja) * 2012-03-16 2013-09-30 Hitachi Ltd 仮想計算機の制御方法及び仮想計算機

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233245B1 (en) * 1997-12-24 2001-05-15 Nortel Networks Limited Method and apparatus for management of bandwidth in a data communication network
US6904519B2 (en) 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US7190668B1 (en) 2001-11-27 2007-03-13 Nokia Corporation Method of anchoring flows
KR100429904B1 (ko) 2002-05-18 2004-05-03 한국전자통신연구원 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법
EP1547324A2 (de) 2002-09-30 2005-06-29 Siemens Aktiengesellschaft Verfahren zur teilweisen erhaltung der paketreihenfolge bei verbindungsloser paketvermittlung mit alternativem routing
US7545809B2 (en) 2003-05-28 2009-06-09 International Business Machines Corporation Packet classification
US8199764B2 (en) * 2003-08-25 2012-06-12 Cisco Technology, Inc. Scalable approach to large scale queuing through dynamic resource allocation
US20050190779A1 (en) * 2004-03-01 2005-09-01 Cisco Technology, Inc., A California Corporation Scalable approach to large scale queuing through dynamic resource allocation
US7936770B1 (en) 2005-03-08 2011-05-03 Enterasys Networks, Inc. Method and apparatus of virtual class of service and logical queue representation through network traffic distribution over multiple port interfaces
US7656894B2 (en) 2005-10-28 2010-02-02 Microsoft Corporation Offloading processing tasks to a peripheral device
US8230153B2 (en) 2006-01-20 2012-07-24 Broadcom Corporation Method and system for HBA assisted storage virtualization
US20070271560A1 (en) * 2006-05-18 2007-11-22 Microsoft Corporation Deploying virtual machine to host based on workload characterizations
US8006297B2 (en) 2007-04-25 2011-08-23 Oracle America, Inc. Method and system for combined security protocol and packet filter offload and onload
US7983257B2 (en) 2008-07-18 2011-07-19 Emulex Design & Manufacturing Corporation Hardware switch for hypervisors and blade servers
US8385202B2 (en) 2008-08-27 2013-02-26 Cisco Technology, Inc. Virtual switch quality of service for virtual machines
US7961726B2 (en) 2008-10-07 2011-06-14 Microsoft Corporation Framework for optimizing and simplifying network communication in close proximity networks
US9740517B2 (en) 2008-12-29 2017-08-22 Microsoft Technology Licensing, Llc Dynamic virtual machine memory management
US9059965B2 (en) 2009-06-30 2015-06-16 Oracle America, Inc. Method and system for enforcing security policies on network traffic
US8621460B2 (en) 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US8537860B2 (en) 2009-11-03 2013-09-17 International Business Machines Corporation Apparatus for switching traffic between virtual machines
US8478878B2 (en) * 2010-03-11 2013-07-02 International Business Machines Corporation Placement of virtual machines based on server cost and network cost
US8234400B2 (en) 2010-03-16 2012-07-31 Microsoft Corporation Shaping virtual machine communication traffic
US8739177B2 (en) 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines
US8804747B2 (en) 2010-09-23 2014-08-12 Cisco Technology, Inc. Network interface controller for virtual and distributed services
US8644194B2 (en) * 2010-10-15 2014-02-04 International Business Machines Corporation Virtual switching ports on high-bandwidth links
US8561065B2 (en) 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions
US8462780B2 (en) * 2011-03-30 2013-06-11 Amazon Technologies, Inc. Offload device-based stateless packet processing
US8761187B2 (en) * 2011-06-14 2014-06-24 Futurewei Technologies, Inc. System and method for an in-server virtual switch

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785743B1 (en) * 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
US20100150164A1 (en) * 2006-06-23 2010-06-17 Juniper Networks, Inc. Flow-based queuing of network traffic
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
JP2013196138A (ja) * 2012-03-16 2013-09-30 Hitachi Ltd 仮想計算機の制御方法及び仮想計算機

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016072963A (ja) * 2014-09-24 2016-05-09 インテル コーポレイション バーチャルマシンの間でサービスチェーンフローパケットを経路指定するための技術
JP2019057817A (ja) * 2017-09-21 2019-04-11 株式会社東芝 通信装置、通信方法及びプログラム
US11018986B2 (en) 2017-09-21 2021-05-25 Kabushiki Kaisha Toshiba Communication apparatus, communication method, and computer program product

Also Published As

Publication number Publication date
BR112014031470B1 (pt) 2022-03-22
MX2014015931A (es) 2015-03-03
US9092269B2 (en) 2015-07-28
AU2013277589B2 (en) 2018-02-22
CN104428752A (zh) 2015-03-18
CA2875807A1 (en) 2013-12-27
JP6200497B2 (ja) 2017-09-20
EP2864880A1 (en) 2015-04-29
RU2645595C2 (ru) 2018-02-21
CN104428752B (zh) 2018-06-26
KR20150024845A (ko) 2015-03-09
WO2013191972A1 (en) 2013-12-27
KR102008551B1 (ko) 2019-10-21
MX340694B (es) 2016-07-20
AU2013277589A1 (en) 2014-12-18
US20130343399A1 (en) 2013-12-26
BR112014031470A8 (pt) 2021-05-25
RU2014151774A (ru) 2016-07-10
BR112014031470A2 (pt) 2017-06-27

Similar Documents

Publication Publication Date Title
JP6200497B2 (ja) 仮想マシンのフローの物理的なキューへのオフロード
Mauch et al. High performance cloud computing
US9692706B2 (en) Virtual enhanced transmission selection (VETS) for lossless ethernet
US10296392B2 (en) Implementing a multi-component service using plural hardware acceleration components
JP5808424B2 (ja) ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックス
CN107222531B (zh) 一种容器云资源调度方法
CA2961283C (en) Resource management method, host, and endpoint
US10785163B2 (en) Maintaining a queuing policy with multipath traffic
US10243799B2 (en) Method, apparatus and system for virtualizing a policy and charging rules function
US20160077881A1 (en) Managing a workload in an environment
JP2023046248A (ja) プログラマブルネットワークデバイスを用いたメトリックおよびセキュリティベースのアクセラレータサービスリスケジューリング並びに自動スケーリング
US11870669B2 (en) At-scale telemetry using interactive matrix for deterministic microservices performance
CN110869919B (zh) 用于远程节点发现、通信信道确认和连接的方法
WO2018057165A1 (en) Technologies for dynamically transitioning network traffic host buffer queues
US11983125B2 (en) Data traffic prioritization based on content
Banerjee et al. An approach toward amelioration of a new cloudlet allocation strategy using Cloudsim
Na et al. Optimal service placement using pseudo service chaining mechanism for cloud-based multimedia services
Huang et al. A multipath openflow controller for multiple TCP stream applications
US20230266988A1 (en) Management and utilization of network interface card resources for workload execution
Kontodimas et al. Analysis and evaluation of I/O hypervisor scheduling
Kontodimas et al. Analysis and evaluation of scheduling policies for consolidated I/O operations
Chen et al. Efficient Usage of Network Bandwidth in the Cloud Architecture
Chen et al. Inspecting the performance of packet schedulers over a large-scale OpenFlow-based network
Freitag Impact of Advanced Virtualization Technologies on Grid Computing Centres

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160511

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170825

R150 Certificate of patent or registration of utility model

Ref document number: 6200497

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250