(57)【要約】【課題】改良されたホストコンピュータおよびネットワークインタフェースカードを提供する。【解決手段】システムは、ハイパーバイザ２０４の制御のもとで仮想マシン２０２＿１，２０２＿２，…，２０２＿Ｎを実行するホストコンピュータ２００を備える。ネットワークインタフェースカード２０６がホストマシン２００に結合される。ネットワークインタフェースカード２０６が仮想ポート２１２＿１，２１２＿２，…，２１２＿Ｎ付きの仮想スイッチ２０８を実現する。各仮想ポート２１２＿１，２１２＿２，…，２１２＿Ｎが１つの仮想マシン２０２＿１，２０２＿２，…，２０２＿Ｎに対応付けられる。【選択図】図２
2015039166.tif 000002
【特許請求の範囲】
【請求項１】
ハイパーバイザの制御のもとで複数の仮想マシンを実行するホストマシンと、
前記ホストマシンに結合されたネットワークインタフェースカードであって、複数の仮想ポート付きの仮想スイッチを実装するネットワークインタフェースカードとを備え、
前記複数の仮想ポートの各仮想ポートが、前記複数の仮想マシンのうちの１つの仮想マシンに対応付けられている、システム。
【請求項２】
請求項１に記載のシステムにおいて、前記仮想スイッチが、トラフィックフローポリシを実装する、システム。
【請求項３】
請求項２に記載のシステムにおいて、前記トラフィックフローポリシが、仮想マシンごとに帯域幅供給を実装する、システム。
【請求項４】
請求項２に記載のシステムにおいて、前記トラフィックフローポリシが、仮想マシンごとのクオリティオブサービスである、システム。
【請求項５】
請求項２に記載のシステムにおいて、前記トラフィックフローポリシがトンネリングプロトコルを実装し、第１のネットワーキングプロトコルが第２のネットワーキングプロトコル内にカプセル化される、システム。
【請求項６】
請求項２に記載のシステムにおいて、前記トラフィックフローポリシが、仮想マシンごとの伝送制御プロトコルオフロード処理である、システム。
【請求項７】
請求項２に記載のシステムにおいて、前記トラフィックフローポリシが、仮想マシンごとのセキュアソケットレイヤオフロード処理である、システム。
【請求項８】
請求項１に記載のシステムにおいて、前記仮想スイッチが、受信したフロー内のカプセル化された仮想マシン識別子を評価して、指定された仮想マシンに対応する仮想ポートを選択する、システム。
【請求項９】
請求項２に記載のシステムにおいて、前記仮想スイッチが、転送されるフロー内の仮想マシン識別子を評価する、システム。
【請求項１０】
請求項１に記載のシステムにおいて、前記仮想スイッチが、ハードウェアで実装される、システム。
【請求項１１】
請求項１に記載のシステムにおいて、前記仮想スイッチが、ソフトウェアデファインドネットワーキングが可能なソフトウェアとして実装される、システム。
【請求項１２】
請求項１に記載のシステムにおいて、前記仮想スイッチが、ハードウェアとソフトウェアの組合せで実装されることを特徴とするシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、２０１３年７月２５日に出願された米国特許出願第１３／９５１，３３４号の優先権を主張するものであり、その内容を本明細書中に援用する。
【技術分野】
【０００２】
本発明は、概して、コンピュータネットワークにおける通信に関する。本発明は、詳細には、仮想スイッチを有するネットワークインタフェースカードおよびトラフィックフローポリシの適用（フローポリシのエンフォースメント（実施））に関する。
【背景技術】
【０００３】
図１は、複数の仮想マシン１０２＿１〜１０２＿Ｎを実行する物理ホストコンピュータ１００を示す。仮想マシンは、演算リソースおよびこれに関連するオペレーティングシステムをソフトウェアとして実装したものである。ホストマシンは、仮想化が行われる実際の物理マシンである。仮想マシンはゲストマシンと称されることがある。ホストハードウェア上で仮想マシンのための環境を生成するソフトウェアはハイパーバイザと呼ばれる。仮想マシンのネットワークインタフェースの仮想ビューは、ポートｖＮＩＣ１０３＿１〜１０３＿Ｎを有する仮想ネットワークインタフェースカードと呼ばれる。ハイパーバイザのソフトウェアに実装される仮想スイッチ１０４は、トラフィックを、物理ポート１０６から指定された仮想マシンのｖＮＩＣ１０３に方向付けるか、または、２つの仮想マシン間で方向付けるために使用される。
【０００４】
ネットワークインタフェースカード（ＮＩＣ）１０８は、物理ポート１１０（典型的には、ペリフェラルコンポーネントインタフェースエクスプレス（ＰＣＩｅ）のようなシステムバス）を介してホストコンピュータ１００に結合される。ＮＩＣ１０８は、ネットワークへのインタフェースを提供する物理ポート１１２を有する。ネットワークトラフィックは、メモリ１１６内の指令にアクセスするプロセッサ１１４によって処理される。具体的には、プロセッサ１１４は、種々のパケットフォーマット化、パケットチェック、およびパケット転送操作を実装する。
【０００５】
図１に示す従来技術のシステムでは、仮想マシンが攻撃（例えば、配布されたサービス妨害攻撃）を受けた場合に処理が非効率になりやすい。攻撃を受けた場合、ハイパーバイザは、攻撃された仮想マシンのトラフィックを管理するために、不相応な数の処理サイクルを消費し、これにより他の仮想マシンの性能が低下する。処理の非効率性は、ホストコンピュータによってサポートされる仮想スイッチにおける多数のタスク、特に仮想マシン間におけるクオリティオブサービス（ＱｏＳ）や帯域幅供給にも起因する。このようなオーバーヘッドの付加的な影響は、ネットワーク通信に加わる待ち時間（レイテンシ）として現れる。
【０００６】
以上に鑑み、改良されたホストコンピュータおよびネットワークインタフェースカードを提供することが望ましい。
【発明の概要】
【０００７】
システムは、ハイパーバイザの制御のもとに仮想マシンを実行するホストコンピュータを備える。ネットワークインタフェースカードが前記ホストマシンに結合される。前記ネットワークインタフェースカードは、仮想ポート付きの仮想スイッチを実装する。各仮想ポート（１つまたは複数の仮想ポート）は１つの仮想マシンと関連付けられる。前記ネットワークインタフェースカードは、仮想マシン毎にＱｏＳや帯域幅供給等の選択されたトラフィックフローポリシを管理する前記ホストコンピュータのためのコプロセッサとして動作してもよい。
【０００８】
本発明は、添付図面とともに以下の詳細な記述に関連して十分に理解されるものである。
【図面の簡単な説明】
【０００９】
【図１】従来のコンピュータホストおよびネットワークインタフェースカードのシステムを示す図である。
【図２】本発明の一実施形態に従って構成されたシステムを示す図である。
【図３】本発明の一実施形態に従って構成されたネットワークインタフェースカードを示す図である。
【図４】本発明の一実施形態に従って利用される受信ネットワークトラフィックフロー処理を示す図である。
【図５】本発明の一実施形態に従って利用される送信ネットワークトラフィックフロー処理を示す図である。
【図６】本発明の一実施形態に従って実行されるトラフックフローポリシ適用動作を示す図である。
【発明を実施するための形態】
【００１０】
図面を通して、同一の参照番号は相当する部分を示す。
【００１１】
図２は、本発明の一実施形態に従って構成されたシステムを示す。このシステムは、ハイパーバイザ２０４の制御下において仮想マシン２０２＿１〜２０２＿Ｎのセットを実行するホストマシン２００を備える。
【００１２】
ネットワークインタフェースカード（ＮＩＣ）２０６がホストマシン２００に結合される。ネットワークインタフェースカード２０６は仮想スイッチ２０８を実装する。仮想スイッチ２０８は、物理ポート２１０からネットワークトラフィックを受信し、当該ネットワークトラフィックを指定された仮想マシンに方向付ける。指定された仮想マシンには、対応する仮想ポート２１２を介してアクセスされる。すなわち、仮想ネットワークカードの各仮想ポート２１２は対応する仮想マシンを有する。仮想スイッチ２０８は、トラフィックを仮想ポート（例えば、２１２＿２）に方向付けて、これにより対応する仮想マシン（例えば、２０２＿２）が当該トラフィックを受信する。
【００１３】
上記仮想ポートは、ホスト２００とネットワークインタフェースカード２０６との間の物理インタフェースに跨って実装される。物理インタフェースは、１つまたは複数のペリフェラルコンポーネントインタフェースエクスプレス（ＰＣＩｅ）ポートであってもよい。仮想スイッチ２０８は、仮想ポートまたは仮想ネットワークカード２１２を物理ポートまたは物理ネットワークにマッピングする。
【００１４】
このアーキテクチャの利点は、ネットワークインタフェースカード２０６の処理能力を活用し、これにより種々の処理タスクを有するホスト２００の負荷を軽減することである。このアーキテクチャの別の利点は、仮想マシンとその仮想ネットワークポートとの間の１対１対応によって、演算リソースが予め設定された配分となっていることである。したがって、ある仮想マシンが攻撃を受けても、他の仮想マシンに対する波及的な処理影響がない。
【００１５】
図３は、ネットワークインタフェースカード２０６の一実施形態を示す。仮想スイッチ２０８は、ハードウェア、ソフトウェア、またはこれらの組合せで実装されてもよい。図３は、ハードウェアによる仮想スイッチ処理能力を有するプロセッサ３００を示す。プロセッサ３００は、ソフトウェア仮想スイッチモジュール３０４を有するメモリ３０２にアクセスする。このように、本実施形態では、仮想スイッチはハードウェアとソフトウェアの組合せとして実装される。メモリ３０２は、また、ポリシモジュール３０６を備える。以下で詳述するように、仮想スイッチ２０８は、帯域幅供給、クオリティオブサービス、トランスミッションコントロールプロトコル（ＴＣＰ）オフロード、ユーザデータグラムプロトコル（ＵＤＰ）オフロード、セキュアソケットレイヤオフロード等の種々のネットワークトラフィックフローポリシを適用してもよい。この、仮想マシン毎の、ホストマシンからネットワークインタフェースカードへのタスクのオフロードは、ホストマシン上の演算負荷を軽減する。
【００１６】
図４は、受信ネットワークトラフィック処理を示す。まず、受信フローを特徴づける（４００）。特徴づけは、入力ポート、バーチャルローカルエリアネットワーク識別子（ＶＬＡＮ  ＩＤ）、イーサネット（登録商標）ソースメディアアクセスコントロール（ＭＡＣ）アドレス、インターネットプロトコル（ＩＰ）ソースＭＡＣアドレス、ＩＰデスティネーションＭＡＣアドレス、トランスミッションコントロールプロトコル（ＴＣＰ）ソースもしくは宛先ポート、ユーザデータグラムプロトコル（ＵＤＰ）ソースもしくは宛先ポート等の、任意の数の要因に基づいてもよい。これら標準的な要素に加えて、本発明は仮想マシン識別子を使用する。具体的には、バーチャルエクステンシブルラン（ＶＸＬＡＮ）識別子が用いられてもよい。ＶＸＬＡＮは、ネットワーク仮想化技術であり、ＭＡＣベース第２層イーサネット（登録商標）フレームを第３層ＵＤＰパケット内にカプセル化するカプセル化技術を用いる。カプセル化された仮想マシン識別子が評価される（４０２）。当該識別子は、ソフトウェアデファインドネットワーキング（ＳＤＮ）によって定義されるように、実験・カスタムプロトコルに特有かつ特定のものであってもよい。該識別子は、適切な仮想マシンに、その対応する仮想ネットワークまたは仮想ポートを介してフローを送るために使用される。各仮想ネットワークは同一のネットワークアドレスを有してもよい。上記ＶＸＬＡＮ識別子は、パケットが属する仮想ネットワークを特定する。
【００１７】
ルーティングの前に、以下に詳述するように、ネットワークインタフェースカードが１つまたは複数のトラフィックフローポリシを適用してもよい（４０４）。仮想マシン識別子が、フローテーブルアレイへの指標として用いられる。フローテーブルアレイは、パケットをいかに処理するかを特定するための１つまたは複数のポリシのエントリを有する。一実施形態では、Ｌｉｎｕｘ（登録商標）カーネルが高速経路処理のために用いられる。フローテーブルにおいてエントリが見つからない場合には、例外とされ、Ｌｉｎｕｘ（登録商標）ユーザスペースが、低速経路処理のために用いられる。
【００１８】
その後、仮想マシン識別子は除去され（４０６）、パケットは適切な仮想ポートまたは仮想ネットワークカードに転送されて、当該仮想ポートまたは仮想ネットワークカードに対応する仮想マシンに送られる（４０８）。
【００１９】
図５は、送信ネットワークトラフィック処理を示す。まず、送信ネットワークトラフィックが特徴付けられる（５００）。受信フローに対して上記で特定された基準を送信フローに用いてもよい。次に、ポリシが適用される（５０２）。そして、仮想マシン識別子がパケットにカプセル化される（５０４）。最後に、当該パケットが転送される（５０６）。当該パケットは、物理ポート、例えば図２に示すポート２１０に転送されてもよい。代わりに、当該パケットは、仮想スイッチ２０８によって他の仮想ポートまたは仮想ネットワークカードに転送されてもよい。このようにして、仮想マシンから仮想マシンへのトラフィックが、物理ネットワークに到達することなく、ネットワークインタフェースカード２０６によって効果的に切り替えられる。
【００２０】
ポリシモジュール３０６は、種々のトラフィック管理ポリシを適用するための実行可能な指令を含む。例えば、図６に示すように、ポリシモジュールは、帯域幅供給をチェックしてもよい（６００）。所与のユーザ、フロー、アプリケーション、または装置に対して帯域幅供給がある場合（６００でＹｅｓ）、供給ポリシが適用される（６０２）。例えば、特定のユーザ、フロー、アプリケーション、または装置は、それぞれ別の時間において帯域幅の指定量に制限されてもよい。供給ポリシ６０２は、これらユーザ、フロー、アプリケーション、または装置のために帯域幅供給を実装する。
【００２１】
ポリシモジュール３０６は、また、クオリティオブサービス（ＱｏＳ）ポリシをチェックしてもよい（６０４）。ＱｏＳポリシは、異なるユーザ、フロー、アプリケーション、または装置に対して異なる優先度を提供する。ＱｏＳポリシは、データフローに対して一定レベルの性能を保証してもよい。例えば、要求されるビットレート、遅延、ジッタ、パケット廃棄率および／またはビットエラーレートが保証されてもよい。ＱｏＳポリシが存在する場合（６０４でＹｅｓ）、当該ポリシが適用される（６０６）。同一出願人による米国特許出願公開第２０１３／００９７３５０号におけるＱｏＳ動的実行エンジンが参照によって本出願に組み込まれており、ＱｏＳ動作を実装するために使用されてもよい。同一出願人による米国特許出願公開第２０１３／０１００８１２号におけるパケット優先度プロセッサが参照によって本出願に組み込まれており、パケット処理動作を実装するために使用されてもよい。同一出願人による米国特許出願公開第２０１３／０１０７７１１号におけるパケットトラフィック制御プロセッサが参照によって本出願に組み込まれており、パケット処理動作を実装するために使用されてもよい。
【００２２】
ポリシモジュール３０６は、また、ＴＣＰオフロードポリシをチェックしてもよい（６０８）。ＴＣＰオフロードポリシが存在する場合（６０８でＹｅｓ）、当該オフロードポリシが適用される（６１０）。ＴＣＰオフロードポリシはＴＣＰオフロードエンジン（ＴＯＥ）とともに適用されてもよい。ＴＯＥは、ＴＣＰ／ＩＰスタック全体の処理を、ネットワークインタフェースカード２０６のネットワークコントローラにオフロードする。ＴＣＰオフロードは仮想マシン毎に行われる。現在のところ、ＴＣＰオフロードは仮想化されていない。その代りに、ネットワークインタフェースカード上のＴＯＥは、１つの動作システムのみが作動しているので１つのＴＣＰスタックが作動していると想定する。これに対して、開示された技術では、ネットワークインタフェースカードは多くの仮想ネットワークまたは仮想ポート２１２を有する。これは同一数のＴＣＰスタックが作動していることを意味する。
【００２３】
ポリシモジュール３０６は、また、セキュアソケットレイヤ（ＳＳＬ）オフロードポリシをチェックしてもよい（６１２）。このポリシが存在する場合（６１２でＹｅｓ）、当該オフロードポリシが適用される（６１４）。例えば、ネットワークインタフェースカード２０６は、ＳＳＬトラフィックを暗号化および復号化するためのハードウェアおよび／またはソフトウェアのリソースを備えてもよい。この場合、ネットワークインタフェースカード２０６は、ＳＳＬ接続を終了し、処理されたトラフィックをホスト２００に送出する。これにより、ホストはＳＳＬ処理から解放される。
【００２４】
任意の数のホストタスクがネットワークインタフェースカード２０６にオフロードされてもよい。例えば、インターネットプロトコルセキュリティ（Ｉｐｓｅｃ）処理がネットワークインタフェースカード２０６上に実施されてもよい。同様に、１つのネットワークプロトコルを他のネットワークプロトコル内にカプセル化するトンネリングプロトコルがネットワークインタフェースカード２０６上に実装されてもよい。汎用ルーティングカプセル化を用いたネットワーク仮想化（ＮＶＧＲＥ）のような他のプロトコルがネットワークインタフェースカード２０６上に実装されてもよい。
【００２５】
本発明の一実施形態は、コンピュータで実現される多様な動作を実行するためのコンピュータコードを記憶した非一時的なコンピュータ読取可能な記憶媒体を備えたコンピュータ記憶製品に関する。当該媒体およびコンピュータコードは、本発明の目的のために特別に設計されて構成されたものでもよく、または、コンピュータソフトウェア分野の技術を有する当業者にとって公知で入手可能なものでもよい。コンピュータ読取可能な記憶媒体の例としては、磁気媒体、光媒体、光磁気媒体、ならびに特定用途向け集積回路（“ＡＳＩＣ”）、プログラム可能論理装置（“ＰＬＤ”）、ＲＯＭおよびＲＡＭ装置等のプログラムコードを保存して実行するように特別に構成されたハードウェア装置が挙げられるが、これらに限定されない。コンピュータコードの例としては、コンパイラにより生成された機械語コード、およびインタプリタを用いてコンピュータによって実行される高級言語コードを含むファイルが挙げられる。例えば、本発明の一実施形態は、ＪＡＶＡ（登録商標）、Ｃ＋＋などのオブジェクト指向プログラミング言語および開発ツールを用いて実現されてもよい。本発明の別の実施形態は、マシン実行可能なソフトウェア指令の代わりに、またはこれと組み合わせて、ハードワイヤード回路で実現されてもよい。
【００２６】
前述の記載では、本発明を完全に理解させるために特定の用語を使用した。しかし、特定の細部が本発明の実施に必要でないことが当業者に明らかであろう。したがって、前述の本発明の特定の実施形態についての記載は、単なる例示に過ぎない。これらの記載はこれに尽きるものでなく、また、本発明を、それら説明した細部の構成に限定しようとするものではなく、前述の教示に鑑みれば、多くの修正および変形が可能であることは明らかであろう。前述の実施形態は、本発明の原理およびその実際的な応用について最も良く説明するために選択されたものであり、したがって、当業者であれば、本発明および種々な実施形態について意図する特定の使用に適合するような種々な変形を加えて最も良く利用できる。特許請求の範囲およびその均等物が、本発明の範囲を定めることを意図したものである。
【符号の説明】
【００２７】
２００                                                  ホストマシン
２０２（２０２＿１，２０２＿２，…，２０２＿Ｎ）        仮想マシン
２０４                                                  ハイパーバイザ
２０６                                  ネットワークインタフェースカード
２０８                                                  仮想スイッチ
２１２（２１２＿１，２１２＿２，…，２１２＿Ｎ）        仮想ポート
【図１】
2015039166.tif 000003
【図２】
2015039166.tif 000004
【図３】
2015039166.tif 000005
【図４】
2015039166.tif 000006
【図５】
2015039166.tif 000007
【図６】
2015039166.tif 000008
【外国語明細書】
2015039166000001.pdf
2015039166000002.pdf
2015039166000003.pdf
2015039166000004.pdf