(57)【特許請求の範囲】
【請求項１】
計算機環境とネットワークインタフェースとを備える通信制御装置であって、
前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定する転送制御手段を有し、
前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理する、前記計算機環境に対応して設けられたポリシ管理手段と、
前記スレーブポリシテーブルのマスタポリシテーブルを有し、前記計算機環境および前記ポリシ管理手段を管理する管理手段と、
を有し、
前記ポリシ管理手段が、前記転送されたデータに適用するポリシに関するエントリが存在しない場合、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、ことを特徴とする通信制御装置。
【請求項２】
前記管理手段が、前記スレーブポリシテーブルに、前記マスタポリシテーブルに従った通信フローの識別情報と当該通信フローに適用すべき処理情報とを設定する、ことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記計算機環境、前記ポリシ管理手段および前記管理手段が仮想化環境を用いて構築され、前記仮想化環境と前記計算機環境とが前記ネットワークインタフェースに直接アクセス可能であることを特徴とする請求項１または２に記載の通信制御装置。
【請求項４】
前記ポリシ管理手段が、前記計算機環境に含まれることを特徴とする請求項１−３のいずれか１項に記載の通信制御装置。
【請求項５】
前記ポリシ管理手段が、前記計算機環境と前記ネットワークインタフェースとの間に設けられた通信フロー制御手段に含まれることを特徴とする請求項１−３のいずれか１項に記載の通信制御装置。
【請求項６】
計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置における通信制御方法であって、
前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、
前記計算機環境に対応して設けられたポリシ管理手段が、前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、
前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、
ことを特徴とする通信制御方法。
【請求項７】
前記ポリシ管理手段は、通信フローの識別情報と当該通信フローに適用すべき処理情報とが登録された前記スレーブポリシテーブルを参照することでポリシ適用管理を行うことを特徴とする請求項６に記載の通信制御方法。
【請求項８】
前記計算機環境、前記ポリシ管理手段および前記管理手段が仮想化環境を用いて構築され、前記仮想化環境と前記計算機環境とが前記ネットワークインタフェースに直接アクセス可能であることを特徴とする請求項６または７に記載の通信制御方法。
【請求項９】
計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置におけるコンピュータを機能させるプログラムであって、
前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、
前記計算機環境に対応して設けられたポリシ管理手段が、前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、
前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、
ように前記コンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想化環境を導入した通信制御装置、通信制御方法および通信制御プログラムに関する。
【背景技術】
【０００２】
サーバ仮想化技術が広く利用されるようになってきている。サーバ仮想化技術は、仮想化技術によって実現された論理的なコンピュータ（以下、仮想マシン）を用いて、物理的なサーバ機器上に仮想マシンで実現されたサーバを導入する技術である。サーバ仮想化技術を用いることで、例えば物理的なサーバ機器の台数を減らすことができる。
【０００３】
サーバ仮想化技術では、サーバを仮想化する仮想化環境を導入する必要があり、例えば、ＶＭｗａｒｅ社のＶＭｗａｒｅ（登録商標）、Ｃｉｔｒｉｘ社のＸｅｎ  Ｓｅｒｖｅｒ（登録商標）、Ｍｉｃｒｏｓｏｆｔ社のＨｙｐｅｒ−Ｖなどが仮想化環境のための製品として提供されている。ただし、仮想化環境では、仮想マシンに仮想的なハードウェアを提供しているために、直接アクセスする場合に比べて性能が落ちるという難点がある。
【０００４】
この問題点を解決するために、ＣＰＵやチップセット、ネットワークインタフェースカードを中心に、仮想マシンを直接アクセス可能にする仮想化支援技術の導入が提案されている。たとえば、ＣＰＵやチップセットに組み込まれるＩｎｔｅｌ社のＶＴ−ｄやＡＭＤ社のＡＭＤ−Ｖ、拡張デバイスに組み込まれるＳＲ−ＩＯＶ（Single Route-I/O Virtualization）といったものが挙げられる。これらの技術を利用することで、仮想マシンが直接ハードウェアを扱えるようになるため、仮想化環境であっても高い性能を得ることができる。
【０００５】
また、仮想化環境における通信ネットワーク（ネットワーク）に関する処理に関しては、仮想化支援技術を用いない場合、ネットワークインタフェースカードで受信したパケットが仮想化環境の管理領域を経由して適切な仮想マシンに配送される。管理領域内には、ソフトウェアで実現された仮想的なネットワークスイッチ（仮想スイッチ）が存在し、仮想マシンとの通信を中継する機能を提供する。しかしながら、全てのパケットが仮想スイッチを経由するため、ネットワークの負荷が上がると管理領域の負荷も上昇してしまうという問題点がある。この問題についても、仮想化支援技術を用いることで、解決することができる。
【０００６】
このような、仮想化支援技術の例として、Ｍｉｃｒｏｓｏｆｔ社のＶＭＱ（Virtual Machine Queue）が非特許文献１に記載されている。ＶＭＱでは、ＶＭＱに対応したネットワークインタフェースカードを用いる。このＶＭＱではネットワークインタフェースカードに備えられた受信用のキューを各仮想マシンに割り当て、ネットワークから届いたパケットのパケットヘッダの情報を用いてどの受信キューに受信するかを決定する。受信用のキューに格納されたパケットはキューに対応付けられた仮想マシンに直接転送される。パケットが仮想マシンに直接転送されるため、管理領域に負荷をかけることなく仮想マシンへのパケット転送が可能となる。
【０００７】
また、非特許文献２には、このような仮想化支援技術を利用した仮想スイッチ処理のオフローディング技術が開示されている。仮想スイッチ処理では、仮想化環境またはネットワーク管理者の管理ポリシに従って、通信フロー単位でパケットを「管理領域を通過させる」あるいは「直接ネットワークインタフェースカードに転送する」という切り替えを動的に行う。非特許文献２のオフローディング技術では、複数の仮想インタフェースを備えたネットワークインタフェースカードを利用する。より詳しくは、各仮想マシンに仮想インタフェースを割り当て、ネットワークインタフェースカードに搭載されたネットワークインタフェースコントローラにてＩＰ（Internet Protocol）アドレスなどのパケットヘッダの情報に従って仮想インタフェースを選択し、仮想インタフェースを経由して仮想マシンにパケットを配送する。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ali Dabagh, Don Stanwyck、"Virtual Machine Queue Architecture Review”、Availablefrom http://download.microsoft.com/download/d/1/d/d1dd7745-426b-4cc3-a269-abbbe427cOef/net-t719_ddcO8.pptx
【非特許文献２】辻  聡、飯星  貴裕、狩野  秀一、“ｖｓｗｉｔｃｈ処理の動的オフロード方式の実装と評価”、電子情報通信学会技術研究報告  ｖｏｌ．１１１、Ｎｏ．４３、ＮＳ２０１１−２９、ｐｐ．６９−７４、２０１１年５月
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した非特許文献１、２に開示された技術には、いくつか解決すべき課題がある。まず、ネットワークインタフェースコントローラが備えるパケット配送先決定機能によって、識別可能な通信フローの粒度が制限されてしまうことである。例えば、非特許文献１の技術では、パケットの宛先ＭＡＣ（Media Access Control）アドレスとＶＬＡＮ（Virtual LAN）Ｔａｇに従って受信キューを選択する。ところがイーサネット（登録商標）とＴＣＰ／ＩＰを用いたネットワークでは、ＭＡＣアドレスやＶＬＡＮ  Ｔａｇの他に、ＩＰアドレス、Ｌ４ポート番号、Ｌ４プロトコルといった情報がパケットヘッダに含まれている。
【００１０】
したがって、同じ宛先ＭＡＣアドレス宛てのパケットであっても、特定のＬ４ポート番号を持つパケットのみを仮想マシンに直接転送することは、ネットワークインタフェースコントローラがその粒度で受信キューを選択する機能を持たない限り、非特許文献１の技術では実現することができない。
【００１１】
さらに、パケットが管理領域を経由しないで仮想マシンに直接転送されると、管理領域は仮想マシンがどのような通信を行っているかを知ることができない。このために、ポリシに合わないパケットが流れていたとしても、それに応じた処理を実行することができなくなる。
【００１２】
また、上記パケットヘッダだけでなく、パケットのデータ部の情報を用いてパケットの配送先を決定することも考えられる。例えば、パケットのデータ部に含まれるＨＴＴＰ（Hyper Text Transport Protocol）のリクエストに含まれるＵＲＬ（Uniform Resource Locator）に応じてパケットの配送先を決定することが挙げられる。すなわち、仮想化環境やネットワークの管理者のポリシによって、パケットの配送先を制御する粒度が異なるという課題が存在する。
【００１３】
そこで、本発明の目的は、ネットワーク管理者のポリシに従ったパケットの配送制御が、ネットワークインタフェースの機能により制限されることなく、実行可能となる通信制御装置、通信制御方法および通信制御プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明による通信制御装置は、計算機環境とネットワークインタフェースとを備える通信制御装置であって、前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定する転送制御手段を有し、前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理する、前記計算機環境に対応して設けられたポリシ管理手段と、前記スレーブポリシテーブルのマスタポリシテーブルを有し、前記計算機環境および前記ポリシ管理手段を管理する管理手段と、を有し、前記ポリシ管理手段が、前記転送されたデータに適用するポリシに関するエントリが存在しない場合、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、ことを特徴とする。
【００１５】
本発明による通信制御方法は、計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置における通信制御方法であって、前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、前記計算機環境に対応して設けられたポリシ管理手段が、前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、ことを特徴とする。
【００１６】
本発明による通信制御プログラムは、計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置におけるコンピュータを機能させるプログラムであって、前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、前記計算機環境に対応して設けられたポリシ管理手段が、前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信するように前記コンピュータを機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ネットワークインタフェースの機能によって制限されることなく、ネットワーク管理者のポリシに従ったパケットの配送制御を実行することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は本発明の第１実施形態による通信制御装置の機能構成を示すブロック図である。
【図２】図２は図１に示す通信制御装置の動作を示すシーケンス図である。
【図３】図３はネットワークインタフェースカードの動作を示すフローチャートである。
【図４】図４は仮想マシンの動作の一部を示すフローチャートである。
【図５】図５は仮想マシンの動作の一部を示すフローチャートである。
【図６】図６は管理領域の動作を示すフローチャートである。
【図７】図７は本発明の第２実施形態による通信制御装置の機能構成を示すブロック図である。
【図８】図８は図７に示す通信制御装置の動作を示すシーケンス図である。
【図９】図９はオフロード管理領域の動作の一部を示すフローチャートである。
【図１０】図１０はオフロード管理領域の動作の一部を示すフローチャートである。
【図１１】図１１は管理領域の動作を示すフローチャートである。
【図１２】図１２は本発明の第３実施形態による通信制御装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下で説明する本発明の実施形態によれば、仮想マシン（仮想計算機）がポリシに従ってデータ処理を行う際に、当該ポリシに合致しないデータについては管理領域へ問い合わせ、管理領域のポリシ制御に従って当該データ処理を実行する。より具体的には、実施形態による通信制御装置は、ユーザが使用する計算機環境と、それを管理する管理領域と、計算機環境から直接アクセス可能なネットワークインタフェースと、を備え、計算機環境および管理領域は計算機環境が送受信するデータへ適用するポリシをスレーブポリシテーブルで管理する第１ポリシ管理手段とマスタポリシテーブルで管理する第２ポリシ管理手段とをそれぞれ備えている。第１ポリシ管理手段はデータの送受信の際に、スレーブポリシテーブルを参照し、該当するエントリが存在しない場合には、管理領域に問い合わせを行う。問い合わせを受けた管理領域はマスタポリシテーブルを参照し、その参照結果を第１ポリシ管理手段に送信する。このように、計算機環境に係るデータの送受信の際に、管理領域のポリシを適用できるような構成を採用することで、上述した課題を解決することができる。すなわち、ネットワークインタフェースの機能により、管理者が意図したポリシに従ったデータ配送制御に制限がかかる場合でも、管理者の意図通りにポリシを適用できるようになる。以下、図面を参照しながら本発明の実施形態について詳細に説明する。
【００２０】
１．第１実施形態
１．１）システム構成
図１に示すように、本実施形態による通信制御装置１ａは、ネットワークインタフェースカード２（以下、ＮＩＣ２と記す。）および仮想化環境３からなる。ＮＩＣ２は、仮想化環境３のインターネット等のネットワークに対する物理的なインタフェースであり、サーバやＰＣ（Personal Computer）が備えるＰＣＩ−Ｅｘｐｒｅｓｓ等の拡張スロットに装着されるカードとしての形態の他に、チップセットに組み込まれる形態あるいは独立したチップとしてマザーボードに搭載される形態などが考えられる。
【００２１】
ＮＩＣ２は、ＮＩＣコントローラ２０、仮想インタフェース２２、フローテーブル２４、および管理インタフェース２６を含む。ＮＩＣコントローラ２０は、パケットの送受信を制御するコントローラであり、仮想化環境３内の仮想マシン（ローカル仮想マシン）にパケットを転送する際、フローテーブル２４を参照して、使用する仮想インタフェース２２を選択する。
【００２２】
仮想インタフェース２２は仮想化環境３とＮＩＣ２とのインタフェースであり、１つ以上備えられる。この仮想インタフェース２２の物理アドレスを仮想マシンに通知することで、仮想マシンはＮＩＣ２に直接アクセス可能となる。
【００２３】
フローテーブル２４は、ローカル仮想マシン宛てのパケットに関して、パケットヘッダなどの通信フローを識別する情報と転送すべき仮想インタフェースとを対応付けたテーブルであり、ＮＩＣコントローラ２０がパケットの配送先を決定するために使用する。仮想化環境３は、管理インタフェース２６を通してフローテーブル２４にアクセスすることができ、エントリの追加や削除といった操作が可能である。
【００２４】
管理インタフェース２６は仮想化環境３からフローテーブル２４を操作するために利用されるインタフェースである。管理インタフェース２６から直接フローテーブル２４を操作することもできるが、管理インタフェース２６へのアクセスに応じてＮＩＣコントローラ２０がフローテーブル２４に対する操作を実行することもできる。
【００２５】
仮想化環境３は複数の仮想マシン４ａおよび管理領域(Control Domain)５から構成される。仮想化環境３は、汎用のＰＣやサーバなどに導入され、管理領域５によって管理される。管理領域５は、各仮想マシン４ａに対して、ＰＣやサーバが備えるＣＰＵやメモリ、Ｉ／Ｏといった資源を仮想的に割り当てる。
【００２６】
さらに、仮想化環境３は、管理領域５が仮想マシン４ａの管理を行うために、管理領域５に対して、管理操作を行うための管理用データ通信の仕組みを提供する。このデータ通信の仕組みの例として、共有メモリを採用することが考えられる。この共有メモリの仕組みはＶＭｗａｒｅやＸｅｎＳｅｒｖｅｒなど、一般に広く流通している仮想化環境で一般的に用いられている。また、仮想マシン４ａ同士が高速にデータを送受信するために共有メモリの仕組みを用いることもでき、ＸｅｎＳｅｒｖｅｒでは、ＸＶＭＳｏｃｋｅｔライブラリが存在する。
【００２７】
仮想マシン４ａは、ｖＣＰＵ(virtual Central Processing Unit)４０、メモリ４１、仮想ネットワークインタフェース４２、および管理インタフェース(Management Interface)４６を有する。仮想マシン４ａでは、仮想マシンのユーザによるアプリケーションプロセスが稼働する。また、メモリ４１には、管理領域５の管理者が定めるポリシをセットするためのスレーブポリシテーブル４４が構成される。なお、仮想マシン４ａには、必要に応じて、Ｉ／Ｏ機能などが更に設けられてもよい。
【００２８】
ｖＣＰＵ４０は、管理領域５によって割り当てられた仮想的なＣＰＵである。物理的な実ＣＰＵと直接対応付けられる場合もあれば、同一の実ＣＰＵを複数の仮想マシン４ａで共有する場合もある。これは仮想化環境３に依存する。
【００２９】
ｖＣＰＵ４０では、ＯＳ（Operating System）や様々なアプリケーションプロセスが稼働する。ＯＳではプロセス同士あるいは仮想マシン４ａ同士が通信を行うための通信機能が提供される。一般的には、この通信機能は、通信機能を提供するために必要なプロトコルを実現するモジュールを階層的に積み上げたプロトコルスタックとして提供される。
【００３０】
メモリ４１は、管理領域５によって仮想マシン４ａに割り当てられたメモリ領域である。ｖＣＰＵ４０が処理を実行する上で、アプリケーションコードやデータを保存するために用いられる。
【００３１】
仮想ネットワークインタフェース４２は、仮想化環境３によって仮想マシン４ａに仮想的に提供されたインタフェースであり、パケットの送受信機能を仮想マシン４ａに提供する。仮想ネットワークインタフェース４２は、仮想マシン４ａに必要に応じて１つ以上備えられる。仮想ネットワークインタフェース４２はＮＩＣ２の仮想インタフェース２２および管理領域５の仮想スイッチ５２に接続される。
【００３２】
スレーブポリシテーブル４４は、メモリ４１内に構築されるテーブル状のデータ構造を有し、管理領域５により設定された、仮想化環境３の管理者のポリシを保持する。このポリシには、パケットヘッダのような通信フローを識別する情報とその情報を持つパケットに対する処理とが含まれる。通信フローを識別する情報として、パケットヘッダ以外にパケットのデータ部の特定範囲のデータを用いることもできる。
【００３３】
スレーブポリシテーブル４４は、パケットの送受信時に、パケットに対して行う処理を決定するために使用される。パケットに対する処理として、ネットワークからパケットを受信した際には、「パケットをアプリケーションプロセスに渡す」、アプリケーションプロセスからデータを送信する際には、「仮想ネットワークインタフェース４２を介して、仮想インタフェース２２にパケットを転送する」、「仮想ネットワークインタフェース４２を介して管理領域５にパケットを転送する」、両方の通信方向に共通する処理として、「パケットをドロップさせる」、「パケットヘッダを書き換える」といったことが例として挙げられる。
【００３４】
スレーブポリシテーブル４４は、あらかじめエントリを追加しておくことも可能であるが、パケットの送受信のたびに必要に応じて、エントリを追加しておく運用方法も考えられる。この場合、スレーブポリシテーブル４４は、管理領域５に備えられるマスタポリシテーブル５４のサブセットとなる。スレーブポリシテーブル４４に該当するエントリが登録されていない場合は、管理インタフェース４６を通じて管理領域５に問い合わせを行い、該当するパケットの処理内容に関する情報を取得する。
【００３５】
管理インタフェース４６は、ポリシについての情報を仮想マシン４ａと管理領域５との間で送受信するためのインタフェースである。例えば、スレーブポリシテーブル４４にエントリが登録されていないパケットを送受信する際に、どのような処理を適用するかの問い合わせや、そのレスポンスの送受信に使用される。この管理インタフェース４６の実現形態の１つとして、仮想化環境３が提供する、仮想マシン４ａと管理領域５との間の共有メモリ領域を用いることが考えられる。この管理インタフェース４６は、仮想ネットワークインタフェース４２として実現することも考えられる。
【００３６】
管理領域５は、仮想化環境３を管理するための領域であり、一般的な仮想化環境では、ハイパーバイザー等と呼ばれる。管理領域５は、フローコントローラ(Flow Controller)５０、仮想スイッチ(Virtual Switch)５２、マスタポリシテーブル(Master Policy Table)５４と、を含む。フローコントローラ５０は、フローテーブル２４やスレーブポリシテーブル４４を制御するためのコントローラである。これらのテーブルを操作する際に、マスタポリシテーブル５４を参照し、テーブルのエントリの追加や削除を行う。
【００３７】
仮想スイッチ５２は、ソフトウェアで実現された仮想的なスイッチであり、仮想化支援技術を利用しない場合に、仮想マシン４ａに対してパケットスイッチングの機能を提供する。仮想スイッッチ５２は、各仮想マシン４ａと接続されているだけでなく、仮想インタフェース２２のうちの少なくとも一つに接続される。
【００３８】
マスタポリシテーブル５４は、仮想化環境３の管理者のポリシを保持するテーブルである。このテーブルに記憶される情報は、スレーブポリシテーブル４４と同様の構成をとる。マスタポリシテーブル５４は、管理者の設定した全てのポリシを保持する。なお、マスタポリシテーブル５４は、管理領域５の内部に備えられる代わりに、ネットワークを介して外部ノードに備えられることも可能である。この場合、仮想マシン４ａからのポリシに関する問い合わせは、管理領域５を経由するなどしてネットワークを介して行われるが、本質的な動作に違いはない。
【００３９】
１．２）動作
次に図２〜図６を参照しながら、本実施形態によるシステムの動作を詳細に説明する。なお、本実施形態では、仮想インタフェース２２が各仮想マシン４ａに予め割り当てられ、フローテーブル２４は、仮想マシン４ａ宛てのパケットが仮想インタフェース２２を経由して仮想マシン４ａに直接配送されるように設定されているものとする。この設定を行う手法についての説明は、非特許文献２に示されているので省略する。
【００４０】
また、本実施形態では、説明を容易にするために、フローテーブル２４に登録可能な通信フローの識別情報を、非特許文献１に合わせて宛先ＭＡＣアドレスとＶＬＡＮ  Ｔａｇのみであると仮定する。さらに、マスタポリシテーブル５４やスレーブポリシテーブル４４で保持されるポリシの通信フローの識別情報は、宛先ＭＡＣアドレスとＶＬＡＮ  Ｔａｇに加えて、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先Ｌ４ポート番号、送信元Ｌ４ポート番号、Ｌ４プロトコルで構成されるものとする。ただし、フローテーブル２４、マスタポリシテーブル５４およびスレーブポリシテーブル４４に登録する通信フローの識別情報は、これらに限定されるものではない。
【００４１】
ａ）システム動作
図２において、まず、ＮＩＣ２がパケットをネットワークから受信する（ステップＳ２００）。次に、ＮＩＣ２は、パケットヘッダに含まれる宛先ＭＡＣアドレスとＶＬＡＮ  Ｔａｇの情報を用いてフローテーブル２４を参照し、パケットの出力先となる仮想インタフェース２２を選択する（ステップＳ２０１）。続いて、ＮＩＣ２は、選択した仮想インタフェース２２を通じてパケットを適切な仮想マシン４ａに配送する（ステップＳ２０２）。
【００４２】
仮想インタフェース２２から仮想ネットワークインタフェース４２を通してパケットを受信すると、仮想マシン４ａは、受信したパケットのヘッダを用いてスレーブポリシテーブル４４を参照し、該当するエントリが登録されているか否かをチェックする（ステップＳ２０３）。スレーブポリシテーブル４４に該当するエントリが登録されている場合（ステップ２０３の「有り」）、仮想マシン４ａは、そのエントリに含まれる処理をパケットに対して実行する（ステップＳ２０４）。スレーブポリシテーブル４４に該当するエントリが存在しない場合（ステップ２０３の「なし」）、仮想マシン４ａは管理インタフェース４６を通じて管理領域５に問い合わせを行う（ステップＳ２０５）。問い合わせの内容には、少なくともスレーブポリシテーブル４４で管理する通信フローの識別に使用する情報が含まれている。
【００４３】
仮想マシン４ａから問い合わせを受けた管理領域５は、当該問い合わせに含まれる通信フローの識別情報を用いて、マスタポリシテーブル５４を参照し、問い合わせのあった通信フローに属するパケットに対する処理内容を決定する（ステップＳ２０６）。続いて、管理領域５は決定した処理内容を問い合わせ元の仮想マシン４ａに通知する（ステップＳ２０７）。
【００４４】
仮想マシン４ａは、管理領域５から通知された処理内容にしたがってパケットを処理し、スレーブポリシテーブル４４に問い合わせを行った通信フローの識別情報と処理内容とを登録する（ステップＳ２０８，Ｓ２０９）。
【００４５】
ｂ）ネットワークインタフェスカード（ＮＩＣ）の動作
図３において、ＮＩＣコントローラ２０は、ネットワークからパケットを受信したか否かを判定し（ステップＳ３００）、パケットを受信していない場合には（ステップＳ３００のＮｏ）、パケットの受信を待機する。パケットを受信した場合（ステップＳ３００のＹｅｓ）、ＮＩＣコントローラ２０はパケットヘッダの情報からフローテーブル２４を参照し、パケットの出力先となる仮想インタフェース２２を決定する（ステップＳ３０１）。ＮＩＣコントローラ２０は、決定した仮想インタフェース２２を通じて、適切な仮想マシン４ａにパケットを転送する（ステップＳ３０２）。
【００４６】
ｃ）仮想マシンの動作
図４において、ｖＣＰＵ４０は、仮想ネットワークインタフェース４２を通してＮＩＣ２からパケットが転送されてきたか否かを判定する（ステップＳ４００）。パケットを受信していない場合には（ステップＳ４００のＮｏ）、パケットの受信を待機する。パケットが転送されてきた場合（ステップＳ４００のＹｅｓ）、ｖＣＰＵ４０は、パケットヘッダの情報からスレーブポリシテーブル４４を参照し（ステップＳ４０１）、ポリシに合ったパケットであるか否か、つまり、このパケットが属する通信フローに該当するエントリが存在するか否かを判定する（ステップＳ４０２）。
【００４７】
スレーブポリシテーブル４４に該当するエントリが存在しない場合（ステップＳ４０２のＮｏ）、ｖＣＰＵ４０は、通信機能（プロトコルスタック）を用いて管理インタフェース４６を通し管理領域５に問い合わせを行い（ステップＳ４０３）、管理領域５からの応答を待つ（ステップＳ４０４）。問い合わせには通信フローの識別に使用する情報が含まれ、管理領域５からの応答には、少なくとも問い合わせの識別子と問い合わせ対象の通信フローに属するパケットに対する処理内容が含まれる。
【００４８】
管理領域５から問い合わせに対する応答があれば（ステップＳ４０４のＹｅｓ）、ｖＣＰＵ４０は、当該応答に含まれる処理内容に従ってパケットを処理し（ステップＳ４０５）、スレーブポリシテーブル４４に当該問い合わせを行った通信フローの識別情報と処理内容とを登録する（ステップＳ４０６）。なお、ステップＳ４０５とステップＳ４０６とは独立であるため、並行して実行することも、実行順を逆にすることも可能である。
【００４９】
ステップＳ４０２において、受信したパケットが属する通信フローがスレーブポリシテーブル４４に登録されている場合（ステップＳ４０２のＹｅｓ）、ｖＣＰＵ４０は当該エントリに記載されている処理内容にしたがってパケットを処理する（ステップＳ４０７）。
【００５０】
図５に示すように、仮想マシン４ａで稼働するアプリケーションプロセスなどがデータ転送要求を出した場合には（ステップＳ４０８のＹｅｓ）、ｖＣＰＵ４０は、データ転送要求に従ってパケットを構築し（ステップＳ４０９）、構築したパケットに対して図４のステップＳ４０１以降の処理を実行する。データ転送要求は、例えば、アプリケーションプロセスがソケットインタフェースを使用してＯＳにシステムコールを発行することでなされる。
【００５１】
ｄ）管理領域の動作
図６において、フローコントローラ５０は、仮想マシン４ａから問い合わせがあったかどうかを判定する（ステップＳ５００）。問い合わせがなければ（ステップＳ５００のＮｏ）、仮想マシンからの通知を待つ。問い合わせがあれば（ステップＳ５００のＹｅｓ）、フローコントローラ５０は、パケットヘッダの情報からマスタポリシテーブル５４を参照し、問い合わせのあったパケットの属する通信フローに対する処理を決定する（ステップＳ５０１）。そして、フローコントローラ５０は、問い合わせを行った仮想マシン４ａに対して処理内容を通知する（ステップＳ５０２）。
【００５２】
なお、仮想マシン４ａと管理領域５との間で、通過パケット数などの、通信フローの統計情報を管理インタフェース４６を通じて送受信し、統計情報に応じて、管理領域５がスレーブオフロードポリシの内容を変更する要求を仮想マシン４ａに出すことも考えられる。
【００５３】
１．３）効果
上述したように、本実施形態によれば、仮想マシン４ａにポリシを管理するスレーブポリシテーブル４４が設けられ、パケットの送受信時に仮想マシン内のポリシを参照し、一致するエントリが存在しない場合に管理領域５に問い合わせる。したがって、ネットワークインタフェースカード（ＮＩＣ）２の機能上の制限によらず、仮想化環境の管理者のポリシに従って通信フローの制御を行うことができる。
【００５４】
２．第２実施形態
以下、本発明の第２実施形態による通信制御装置の構成および動作について説明するが、図１に示す第１実施形態と同じ機能構成を有するブロックには同一参照番号を付して説明は簡略化する。
【００５５】
２．１）システム構成
図７に示すように、本実施形態による通信制御装置１ｂは、ＮＩＣ２および仮想化環境３ｂからなる。ＮＩＣ２の機能構成は、第１実施形態と同じであるから同一の参照番号を付して説明は省略する。
【００５６】
仮想化環境３ｂは、複数の仮想マシン４ｂと、オフロード管理領域６と、管理領域５と、を有する。第１実施形態と異なるのは仮想マシン４ｂおよびオフロード管理領域６であるが、機能が第１実施形態と同一であるブロックには同一の参照番号を付し詳細な説明を省略する。
【００５７】
各仮想マシン４ｂは、ｖＣＰＵ４０と、メモリ４１と、オフロードインタフェース４８とから構成される。仮想マシン４ｂでは仮想マシンのユーザによるアプリケーションプロセスが稼動する。なお、仮想マシン４ｂには、その構成に応じて、Ｉ／Ｏ機能などが設けられてもよい。
【００５８】
オフロードインタフェース４８は、オフロード管理領域６とのインタフェースであり、仮想化支援技術を使用してデータを送受信するのに用いられる。このデータとしては、仮想マシン４ｂ上でＯＳが稼動し通信機能が提供されている場合、通信プロトコルに従ったパケットなどが考えられる。本実施形態では、説明を簡潔にするために、仮想マシン４ｂとオフロード管理領域６との間のデータは、仮想マシン４ｂ上で稼動するＯＳがサポートする通信プロトコルに従ったパケットであるとする。ここで通信プロトコルは例えばＴＣＰ／ＩＰである。オフロードインタフェース４８の実現手段としては、仮想化環境３が提供する共有メモリ領域を利用することや、オフロード管理領域６と仮想マシン４ｂとを仮想ネットワークインタフェースを用いて接続しデータの送受信に用いること、などが考えられる。
【００５９】
オフロード管理領域６は、オフロードコントローラ６０と、仮想ネットワークインタフェース４２と、管理インタフェース４６と、スレーブポリシテーブル４４と、から構成される。オフロードコントローラ６０以外の構成要素は第１実施形態の仮想マシン４ａの構成要素と同様であるから同一の参照番号を付して詳細な説明を省略する。スレーブポリシテーブル４４は、第１実施形態と同様にメモリ内に構築されたデータ構造であってもよい。
【００６０】
オフロード管理領域６は、仮想マシン４ｂに対して少なくとも１つ備えられ、ネットワークと仮想マシン４ｂとの間に位置してパケットの中継を行う。仮想マシン４ｂがデータを送信する際は、ｖＣＰＵ４０にて構築されたパケットを、オフロードコントローラ６０で処理する際に、スレーブポリシテーブル４４を参照し、パケットに対してポリシに従った処理を実行する。スレーブポリシテーブル４４に有効なエントリが登録されていない場合は、管理インタフェース４６を通じて管理領域５に問い合わせを行う。
【００６１】
また、オフロード管理領域６は、パケットに対して、仮想化環境の管理者またはネットワーク管理者のポリシを適用する処理を行う。オフロード管理領域６の管理者は、仮想化環境３ｂの管理者と同一であることが望ましいが、本実施形態では、少なくとも仮想マシン４ｂの管理者とは異なるものとする。オフロード管理領域６は、たとえば、仮想マシン４ｂとは異なる仮想マシンとして実現することも考えられる。
【００６２】
ＮＩＣ２がパケットを受信し仮想マシン４ｂにパケットを転送する場合、ＮＩＣ２からのパケットをオフロード管理領域６が受け取る。オフロード管理領域６のオフロードコントローラ６０は、スレーブオフロードテーブル４４を参照し、パケットに対してポリシに従った処理を実行する。スレーブポリシテーブル４４に有効なエントリが登録されていない場合は、管理インタフェース４６を通じて管理領域５に問い合わせを行う。スレーブポリシテーブル４４に登録されている処理内容は、第１実施形態と同様に処理される。
【００６３】
２．２）動作
次に図８〜図１１を参照しながら、本実施形態によるシステムの動作を詳細に説明する。なお、本実施形態では、仮想インタフェース２２が各オフロード管理領域６に予め割り当てられ、仮想マシン４ｂ宛のパケットは仮想インタフェース２２を経由してオフロード管理領域６に直接配送されるようにフローテーブル２４が設定されているものとする。フローテーブル２４、マスタポリシテーブル５４およびスレーブポリシテーブル４４に登録可能なフローの識別情報の条件は第１実施形態の場合と同様である。
【００６４】
ａ）システム動作
図８において、ＮＩＣ２の処理（Ｓ２００−Ｓ２０２）は、図２に示す第１実施形態の場合と同様であるから、同一の参照符号を付して詳細な説明を省略する。
【００６５】
オフロード管理領域６は、ＮＩＣ２からパケットを受信すると、パケットヘッダの情報を用いてスレーブポリシテーブル４４を参照し、該当するエントリがスレーブポリシテーブル４４に登録されているかどうかをチェックする（ステップＳ６０１）。スレーブポリシテーブル４４に該当するエントリが登録されていれば（ステップＳ６０１の「有り」）、そのエントリに含まれる処理をパケットに対して実行する（ステップＳ６０２）。スレーブポリシテーブル４４にエントリが登録されていない場合には（ステップＳ６０１の「なし」）、オフロード管理領域６は、管理インタフェース４６を通じて管理領域５に問い合わせを行う（ステップＳ６０３）。問い合わせの内容には、少なくともスレーブポリシテーブル４４で管理する通信フローの識別に使用する情報が含まれている。
【００６６】
オフロード管理領域６から問い合わせを受けると、管理領域５は、当該問い合わせに含まれる通信フローの識別情報を用いて、マスタポリシテーブル５４を参照し、問い合わせのあった通信フローに属するパケットに対する処理内容を決定する（ステップＳ６０４）。続いて、管理領域５は、決定した処理内容を問い合わせ元のオフロード管理領域６に通知する（ステップＳ６０５）。
【００６７】
管理領域５から当該通信フローに対する処理内容を受け取ると、オフロード管理領域６は通知された処理内容にしたがってパケットを処理し（ステップＳ６０６）、続いて管理インタフェース４６を通じてスレーブポリシテーブル４４に当該問い合わせを行った通信フローの識別情報と処理内容とを登録する（ステップＳ６０７）。
【００６８】
ｂ）オフロード管理領域の動作
図９において、オフロードコントローラ６０は、ＮＩＣ２からパケットが転送されてきたかどうかを判定する（ステップＳ７００）。パケットが転送されてきていない場合には（ステップＳ７００のＮｏ）、パケットの受信を待つ。パケットが転送されてきた場合には（ステップＳ７００のＹｅｓ）、オフロードコントローラ６０は、パケットヘッダの情報からスレーブポリシテーブル４４を参照し（ステップＳ７０１）、ポリシに合ったパケットであるかどうか、つまり、このパケットが属する通信フローに該当するエントリが存在するかどうか判定する（ステップＳ７０２）。
【００６９】
スレーブポリシテーブル４４に該当するエントリが存在しない場合（ステップＳ７０２のＮｏ）、オフロードコントローラ６０は、管理インタフェース４６を通じて管理領域５に問い合わせを行う（ステップＳ７０３）。問い合わせの内容には、少なくともスレーブポリシテーブル４４で通信フローの識別に使用する情報が含まれている。
【００７０】
問い合わせを行った後、オフロードコントローラ６０は、管理領域５から応答があったかどうかを判定する（ステップＳ７０４）。管理領域５からの応答には、少なくとも問い合わせの識別子と問い合わせ対象の通信フローに属するパケットに対する処理内容が含まれる。管理領域５から応答が届いていない場合には（ステップＳ７０４のＮｏ）、応答を待つ。管理領域５から応答があれば（ステップＳ７０４のＹｅｓ）、オフロードコントローラ６０は、応答に含まれる処理内容に従ってパケットを処理し（ステップＳ７０５）、管理インタフェース４６を通じて、当該問い合わせを行った通信フローの識別情報と処理内容とをスレーブポリシテーブル４４に登録する（ステップＳ７０６）。ステップＳ７０５およびＳ７０６の処理は独立であるため、並行して実行することも、実行順序を反対にすることも可能である。
【００７１】
受信パケットが属する通信フローがスレーブポリシテーブル４４に登録されている場合（ステップＳ７０２のＹｅｓ）、オフロードコントローラ６０は、当該エントリに記載されている処理内容にしたがってパケットを処理する（ステップＳ７０７）。
【００７２】
図１０に示すように、仮想マシン４ｂで稼働するアプリケーションプロセスなどがデータ転送要求を出した場合（ステップＳ７０８のＹｅｓ）、オフロードコントローラ６０は、図９のステップＳ７０１以降の処理を実行する。
【００７３】
ｃ）管理領域の動作
図１１において、フローコントローラ５０は、オフロード管理領域６から問い合わせがあったか否かを判定する（ステップＳ８００）。問い合わせがない場合には（ステップＳ８００のＮｏ）、問い合わせを待つ。問い合わせがあると（ステップＳ８００のＹｅｓ）、フローコントローラ５０は、パケットヘッダの情報からマスタポリシテーブル５４を参照し、問い合わせのあったパケットの属する通信フローに対する処理を決定する（ステップＳ８０１）。続いて、フローコントローラ５０は、問い合わせを行ったオフロード管理領域６に対して処理内容を通知する（ステップＳ８０２）。
【００７４】
２．３）効果
本実施形態によれば、通信フローの制御機能を仮想マシンからオフロード管理領域に分離させることで、管理主体が仮想マシンとオフロード管理領域と分けられ、仮想マシンの負荷を軽減することができる。また、このことによって仮想化環境の管理者、またはネットワーク管理者のポリシを、仮想マシンに対して確実に適用することができるようになる。つまり、仮想マシンの管理者が、仮想化環境の管理者、またはネットワーク管理者のポリシに合わない通信フローの制御を行うことを防ぐことができる。
【００７５】
３．第３実施形態
図７に示す第２実施形態では、１つのオフロード管理領域６が１つの仮想マシン４ｂに対応づけられているが、本発明はこれに限定されるものではない。
【００７６】
図１２に示すように、本実施形態による通信制御装置１ｃの仮想化環境３ｃでは、１つのオフロード管理領域６が複数の仮想マシン４ｂに対するポリシ制御を行うように構成される。具体的には、あるオフロード管理領域６が２以上の仮想マシン４ｂと接続されており、これらの２以上の仮想マシン４ｂ宛てのパケットに対するポリシ制御をオフロード管理領域６が実行してもよい。
【００７７】
また、仮想化環境３ｃが提供する共有メモリなどの仕組みを用いてオフロード管理領域６同士のオフロードコントローラ６０が直接データ転送を行えるようにすることで、同一仮想化環境３ｃ内に存在する仮想マシン４ｂ同士のデータ転送を管理領域５を介さずに行うことも可能である。
【００７８】
本実施形態によれば、上述した第２実施形態と同様に、通信フローの制御機能を仮想マシンからオフロード管理領域に分離させることで、管理主体が仮想マシンとオフロード管理領域と分けられ、仮想マシンの負荷を軽減することができる。また、このことによって仮想化環境の管理者、またはネットワーク管理者のポリシを、仮想マシンに対して確実に適用することができるようになる。つまり、仮想マシンの管理者が、仮想化環境の管理者、またはネットワーク管理者のポリシに合わない通信フローの制御を行うことを防ぐことができる。さらに、オフロード管理領域６同士が直接データ転送を行えるようにすることで、仮想マシン４ｂ同士のデータ転送を管理領域５を介さずに行うことが可能となり、管理領域５の負荷も軽減される。
【産業上の利用可能性】
【００７９】
本発明は、計算機環境と、計算機環境を管理する管理領域と、ネットワークインタフェースと、を備える通信制御装置に適用可能である。また、仮想化環境の管理者と仮想マシンの管理者が異なる場合に、仮想化環境の管理者の管理ポリシで運用する通信装置に適用できる。
【符号の説明】
【００８０】
１ａ，１ｂ，１ｃ  通信制御装置
２  ネットワークインタフェースカード（ＮＩＣ）
３ａ、３ｂ、３ｃ  仮想化環境
４ａ，４ｂ  仮想マシン
５  管理領域
６  オフロード管理領域
２０  ネットワークインタフェースコントローラ
２２  仮想インタフェース
２４  フローテーブル
２６  管理インタフェース
４０  ｖＣＰＵ
４１  メモリ
４２  仮想ネットワークインタフェース
４４  スレーブポリシテーブル
４６  管理インタフェース
４８  オフロードインタフェース
５０  オフロードコントローラ
５２  仮想スイッチ
５４  マスタポリシテーブル
６０  オフロードコントローラ
【図１】
0005930181.tif 000002
【図２】
0005930181.tif 000003
【図３】
0005930181.tif 000004
【図４】
0005930181.tif 000005
【図５】
0005930181.tif 000006
【図６】
0005930181.tif 000007
【図７】
0005930181.tif 000008
【図８】
0005930181.tif 000009
【図９】
0005930181.tif 000010
【図１０】
0005930181.tif 000011
【図１１】
0005930181.tif 000012
【図１２】
0005930181.tif 000013