(57)【要約】計算機システムは、物理マシン上で動作する仮想マシンと、物理マシン上で動作し仮想マシンの管理を行う管理ブロックと、を備える。仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備える。管理ブロックは、仮想マシンが送受信するパケットを中継する仮想スイッチを備える。仮想スイッチは、特定機能処理が管理ブロックにオフロードされる場合に特定機能処理を行うオフロード処理ブロックを備える。特定機能処理が仮想マシンから管理ブロックにオフロードされる場合、特定機能処理モジュールは、特定機能処理に必要な処理情報を管理ブロックに通知し、オフロード処理ブロックは、仮想マシンから受け取った処理情報に基づいて特定機能処理を実行する。【選択図】図６
2013535711.tif 000002
【特許請求の範囲】
【請求項１】
物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備え、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記仮想スイッチは、前記特定機能処理が前記管理ブロックにオフロードされる場合に前記特定機能処理を行うオフロード処理ブロックを備え、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理モジュールは、前記特定機能処理に必要な処理情報を前記管理ブロックに通知し、前記オフロード処理ブロックは、前記仮想マシンから受け取った前記処理情報に基づいて前記特定機能処理を実行する
計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記物理マシンは、前記特定機能処理のアクセラレータを備え、
前記オフロード処理ブロックは、前記アクセラレータを利用して前記特定機能処理を実行する
計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、
前記特定機能処理モジュールは、第１通信に関するオフロード依頼を前記管理ブロックに送信し、
前記管理ブロックは、前記オフロード依頼に応答して、前記第１通信に関するオフロードを許可するか否かの判定を行い、当該判定結果を示す判定結果情報を前記仮想マシンに通知し、
前記第１通信に関するオフロードが許可された場合、前記特定機能処理モジュールは、前記第１通信に関する前記処理情報を前記管理ブロックに通知し、
前記仮想スイッチは、前記処理情報を受け取ると、前記受け取った処理情報を第１記憶領域に格納し、
前記第１記憶領域への前記処理情報の格納が完了した後、前記管理ブロックは、準備完了通知を前記仮想マシンに送信し、
前記準備完了通知を受け取った後、前記仮想マシンは、前記第１通信のパケットに対して前記特定機能処理を実施することなく、前記第１通信のパケットを前記仮想スイッチに送信し、
前記仮想スイッチは、前記仮想マシンから前記第１通信のパケットを受け取り、
前記オフロード処理ブロックは、前記第１記憶領域に格納されている前記第１通信に関する前記処理情報に基づいて、前記第１通信のパケットに対して前記特定機能処理を実施する
計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記特定機能処理モジュールは、前記判定結果情報をオフロード可否情報として第２記憶領域に格納し、
前記特定機能処理モジュールは、前記第２記憶領域に格納されている前記オフロード可否情報を参照して、前記第１通信に関するオフロードを行うか否かを判定する
計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記第１通信が終了した場合、前記特定機能処理モジュールは、前記第１通信に関する前記判定結果情報を無効化し、且つ、前記管理ブロックに無効化依頼を送信し、
前記仮想スイッチは、前記無効化依頼に応答して、前記第１記憶領域に格納されている前記第１通信に関する前記処理情報を無効化する
計算機システム。
【請求項６】
請求項４に記載の計算機システムであって、
前記第１通信のパケットが所定期間送受信されなかった場合、前記仮想スイッチは、前記第１記憶領域に格納されている前記第１通信に関する前記処理情報を無効化し、且つ、前記仮想マシンに無効化通知を送信し、
前記特定機能処理モジュールは、前記無効化通知に応答して、前記第１通信に関する前記オフロード可否情報を無効化する
計算機システム。
【請求項７】
請求項１に記載の計算機システムであって、
前記特定機能処理は、暗号処理であり、
前記特定機能処理モジュールは、前記暗号処理を行う暗号処理モジュールである
計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記仮想スイッチは、暗号化された暗号化通信を受信し、
前記暗号処理が前記管理ブロックにオフロードされている場合、前記オフロード処理ブロックは、前記処理情報を参照することによって前記暗号化通信のパケットを復号化し、当該パケットデータに応じてフィルタリングを実施する
計算機システム。
【請求項９】
計算機システムにおけるオフローディング方法であって、
前記計算機システムは、
物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う機能を有し、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記オフローディング方法は、
前記特定機能処理を行うオフロード処理ブロックを前記仮想スイッチに設けるステップと、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理に必要な処理情報を前記管理ブロックに通知するステップと、
前記処理情報に基づき、前記オフロード処理ブロックによって前記特定機能処理を実行するステップと
を含む
オフローディング方法。
【請求項１０】
物理マシンによって実行され、前記物理マシン上に計算機システムを構築するプログラムであって、
前記計算機システムは、
前記物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備え、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記仮想スイッチは、前記特定機能処理が前記管理ブロックにオフロードされる場合に前記特定機能処理を行うオフロード処理ブロックを備え、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理モジュールは、前記特定機能処理に必要な処理情報を前記管理ブロックに通知し、前記オフロード処理ブロックは、前記仮想マシンから受け取った前記処理情報に基づいて前記特定機能処理を実行する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンを備える計算機システムに関する。特に、本発明は、仮想マシンを備える計算機システムにおいて、仮想マシンによる特定機能処理をオフロードする技術に関する。
【背景技術】
【０００２】
サーバの分野において、仮想化技術は重要である。具体的には、ＶＭｗａｒｅ（登録商標）やＸｅｎ（登録商標）といった仮想化ソフトウェアを用いた仮想化技術によって、１台の物理マシンを複数の仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）として稼働させることができる（例えば、非特許文献１参照）。これにより、効率的なサーバ運用が可能となる。
【０００３】
図１は、典型的な仮想マシン環境を示すブロック図である。図１において、複数の仮想マシンが１台の物理マシン上に構築されている。各仮想マシンは、他の仮想マシンや物理マシンと通信するためのプロトコルスタックなどの通信機構を備えている。この通信機構は、仮想ネットワークインタフェースを通して通信を行う。
【０００４】
典型的には、複数の仮想マシンは、ハイパーバイザのような管理ソフトウェアによって管理される。管理ソフトウェアは、仮想化ソフトウェアに含まれており、仮想マシンと同様に物理マシン上で動作する。また、管理ソフトウェアは、仮想スイッチ（Ｖｉｒｔｕａｌ  Ｓｗｉｔｃｈ）を備えている。仮想スイッチは、ソフトウェアベースのパケットスイッチであり、仮想マシン間、及び、仮想マシンと物理マシンとの間の通信を中継する。
【０００５】
また、通信のセキュリティを高めるために、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）等の暗号プロトコルに拠って通信を暗号化する技術が知られている（特許文献１参照）。図２は、各仮想マシンが暗号処理を行う場合を示している。図２に示されるように、暗号処理の機能は、各仮想マシンに個別に実装される。尚、本明細書において、「暗号処理」とは、暗号化処理と復号化処理の双方を含むものとする。
【０００６】
図３は、管理ソフトウェアがフィルタリング機能を有する場合を示している。フィルタリング機能は、パケットが特定のデータを含むかどうか判定し、含む場合には、当該パケットに対して所定の処理を行う。例えば、フィルタリング機能は、パケットのデータ部中に特定の文字列が含まれる場合に、当該パケットをドロップさせる。
【０００７】
図３において、各仮想マシンが暗号化通信を行う場合を考える。この場合、通信内容（パケットデータ）が暗号化されているため、管理ソフトウェアにおいてフィルタリング処理を実行できない可能性がある。それは、管理ソフトウェアが復号化機能を備えていないからである。そのため、現状では、図４に示されるように、復号処理用仮想マシンにおいて復号化処理を一旦実施した後に、管理ソフトウェアにおいてフィルタリング処理を実行することが必要となる。このような処理は、フィルタリング処理のオーバーヘッドの増大を招き、好ましくない。このような問題は、例えば、スパムメールフィルタリングシステムにおいて起こり得る。また例えば、管理ソフトウェアが正規表現検索機能を備える場合にも、同様の問題が起こり得る。
【０００８】
また、近年、図５に示されるように、暗号処理を高速に行う暗号処理アクセラレータが物理マシンに搭載される場合がある。暗号処理アクセラレータは、拡張カード等のハードウェアに組み込まれる場合もあるし、ソフトウェア・プログラムにより実現される場合もある。ここで、仮想マシンが物理マシンの暗号処理アクセラレータを利用することによって暗号処理を行う場合を考える。この場合、典型的には、仮想マシンは、仮想ネットワークインタフェースとは異なるインタフェースを用いて暗号処理アクセラレータを利用する。そのため、仮想マシン間のスケジューリングや排他アクセス制御を実施する機構が必要となる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−１８２５６０号公報
【非特許文献】
【００１０】
【非特許文献１】Ｐａｕｌ  Ｂａｒｈａｍ  ｅｔ  ａｌ．，  “Ｘｅｎ  ａｎｄ  ｔｈｅ  Ａｒｔ  ｏｆ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ”，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ｎｉｎｅｔｅｅｎｔｈ  ＡＣＭ  ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍｓ  ｐｒｉｎｃｉｐｌｅｓ，  ｐｐ．１６４−１７７，  ２００３．
【発明の概要】
【発明が解決しようとする課題】
【００１１】
図４で示されたように、各仮想マシンが暗号処理を行う場合、管理ソフトウェアにおけるフィルタリング処理のオーバーヘッドが増大する。つまり、計算機システムの処理効率が落ちる。このような問題は、暗号処理の場合だけに限られない。より一般的に、仮想マシンが特定の機能処理を行う場合を考える。その特定機能処理を管理ソフトウェアが実行できないために、計算機システムの処理効率が低下する場合がある。
【００１２】
本発明の１つの目的は、特定機能処理を行う仮想マシンを備える計算機システムの処理効率を向上させることにある。
【課題を解決するための手段】
【００１３】
本発明の１つの観点において、計算機システムが提供される。その計算機システムは、物理マシン上で動作する仮想マシンと、物理マシン上で動作し、仮想マシンの管理を行う管理ブロックと、を備える。仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備える。管理ブロックは、仮想マシンが送受信するパケットを中継する仮想スイッチを備える。仮想スイッチは、特定機能処理が管理ブロックにオフロードされる場合に特定機能処理を行うオフロード処理ブロックを備える。特定機能処理が仮想マシンから管理ブロックにオフロードされる場合、特定機能処理モジュールは、特定機能処理に必要な処理情報を管理ブロックに通知し、オフロード処理ブロックは、仮想マシンから受け取った処理情報に基づいて特定機能処理を実行する。
【００１４】
本発明の他の観点において、計算機システムにおけるオフローディング方法が提供される。計算機システムは、物理マシン上で動作する仮想マシンと、物理マシン上で動作し、仮想マシンの管理を行う管理ブロックと、を備える。仮想マシンは、送受信するパケットに対して特定機能処理を行う機能を有する。管理ブロックは、仮想マシンが送受信するパケットを中継する仮想スイッチを備える。本発明に係るオフローディング方法は、（Ａ）特定機能処理を行うオフロード処理ブロックを仮想スイッチに設けるステップと、（Ｂ）特定機能処理が仮想マシンから管理ブロックにオフロードされる場合、特定機能処理に必要な処理情報を管理ブロックに通知するステップと、（Ｃ）処理情報に基づき、オフロード処理ブロックによって特定機能処理を実行するステップと、を含む。
【００１５】
本発明の更に他の観点において、物理マシンによって実行され、物理マシン上に計算機システムを構築するプログラムが提供される。その計算機システムは、物理マシン上で動作する仮想マシンと、物理マシン上で動作し、仮想マシンの管理を行う管理ブロックと、を備える。仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備える。管理ブロックは、仮想マシンが送受信するパケットを中継する仮想スイッチを備える。仮想スイッチは、特定機能処理が管理ブロックにオフロードされる場合に特定機能処理を行うオフロード処理ブロックを備える。特定機能処理が仮想マシンから管理ブロックにオフロードされる場合、特定機能処理モジュールは、特定機能処理に必要な処理情報を管理ブロックに通知し、オフロード処理ブロックは、仮想マシンから受け取った処理情報に基づいて特定機能処理を実行する。
【発明の効果】
【００１６】
本発明によれば、特定機能処理を行う仮想マシンを備える計算機システムの処理効率を向上させることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】図１は、典型的な仮想マシン環境を示すブロック図である。
【図２】図２は、図１で示された構成において仮想マシンが暗号処理を行う場合を示すブロック図である。
【図３】図３は、図２で示された構成において管理ソフトウェアがフィルタリング機能を有する場合を示すブロック図である。
【図４】図４は、図３で示された構成の場合のフィルタリング処理を説明するためのブロック図である。
【図５】図５は、図２で示された構成において仮想マシンが暗号処理アクセラレータを利用する場合を示すブロック図である。
【図６】図６は、本発明の実施の形態に係る計算機システムの構成を概略的に示すブロック図である。
【図７】図７は、本発明の実施の形態に係る物理マシンのハードウェア構成の一例を概略的に示すブロック図である。
【図８】図８は、本発明の第１の実施の形態に係る計算機システムの構成を示すブロック図である。
【図９】図９は、第１の実施の形態におけるオフロード依頼処理を示すシーケンス図である。
【図１０】図１０は、第１の実施の形態におけるオフロード準備処理を示すシーケンス図である。
【図１１】図１１は、図９及び図１０における仮想マシンによる処理を示すフローチャートである。
【図１２】図１２は、図９及び図１０における管理ソフトウェアによる処理を示すフローチャートである。
【図１３】図１３は、第１の実施の形態における仮想マシンによるパケット送信処理を示すフローチャートである。
【図１４】図１４は、第１の実施の形態における管理ソフトウェアによるパケット送信処理を示すフローチャートである。
【図１５】図１５は、第１の実施の形態における管理ソフトウェアによるパケット受信処理を示すフローチャートである。
【図１６】図１６は、第１の実施の形態における仮想マシンによるパケット受信処理を示すフローチャートである。
【図１７】図１７は、第１の実施の形態における無効化処理を示すシーケンス図である。
【図１８】図１８は、図１７における仮想マシンによる処理を示すフローチャートである。
【図１９】図１９は、図１７における管理ソフトウェアによる処理を示すフローチャートである。
【図２０】図２０は、他の無効化処理における管理ソフトウェアによる処理を示すフローチャートである。
【図２１】図２１は、他の無効化処理における仮想マシンによる処理を示すフローチャートである。
【図２２】図２２は、本発明の第２の実施の形態に係る暗号処理を示すフローチャートである。
【図２３】図２３は、図２２中のステップＳ５００の処理を示すフローチャートである。
【図２４】図２４は、図２２中のステップＳ５２０の処理を示すフローチャートである。
【図２５】図２５は、第２の実施の形態における仮想マシンによる処理を示すフローチャートである。
【図２６】図２６は、本発明の第３の実施の形態に係る計算機システムの構成を示すブロック図である。
【図２７】図２７は、第３の実施の形態における仮想マシンによる処理を示すフローチャートである。
【図２８】図２８は、第３の実施の形態における管理ソフトウェアによる処理を示すフローチャートである。
【図２９】図２９は、本発明の第４の実施の形態に係る計算機システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
添付図面を参照して、本発明の実施の形態を説明する。
【００１９】
まず、概要を説明する。図６は、本発明の実施の形態に係る計算機システム２の構成を概略的に示すブロック図である。計算機システム２は、物理マシン１、仮想マシン３、及び管理ブロック（管理ソフトウェア）４を備えている。尚、以下の説明において、モジュールあるいはブロックとは、コンピュータがプログラムを実行することにより実現される機能単位を意味する。
【００２０】
仮想マシン３は、物理マシン１上で動作する。仮想マシン３は、他の仮想マシンや物理マシン１と通信するためのプロトコルスタックなどの通信機構を備えている。この通信機構は、仮想ネットワークインタフェースを通して通信を行う。更に、仮想マシン３は、特定の機能処理（例えば、暗号処理）を実行する機能を備えている。より詳細には、仮想マシン３は、特定機能処理モジュール３４を備えている。この特定機能処理モジュール３４は、仮想マシン３が送受信するパケットに対して特定機能処理を実行する。その特定機能処理に必要な情報は、以下「処理情報ＩＮＦ」と呼ばれる。例えば、暗号処理の場合、処理情報ＩＮＦは、暗号処理に必要な鍵情報などを含む。
【００２１】
管理ブロック（管理ソフトウェア）４も、物理マシン１上で動作する。この管理ブロック４は、仮想マシン３の管理を行う。また、管理ブロック４は、仮想スイッチ４１を備えている。仮想スイッチ４１は、ソフトウェアベースのパケットスイッチであり、仮想マシン３間、及び、仮想マシン３と物理マシン１との間の通信を中継する。つまり、仮想スイッチ４１は、仮想マシン３が送受信するパケットを中継する。
【００２２】
更に、本実施の形態によれば、管理ブロック４の仮想スイッチ４１も、仮想マシン３が行う特定機能処理と同じ処理を実行する機能を備えている。より詳細には、仮想スイッチ４１は、オフロード処理ブロック４１５を備えている。このオフロード処理ブロック４１５は、仮想マシン３と同じ特定機能処理を実行することができる。
【００２３】
従って、本実施の形態によれば、仮想マシン３による特定機能処理を、必要に応じて、管理ブロック４にオフロード（あるいは再配置ともいう）することが可能となる。特定機能処理が仮想マシン３から管理ブロック４にオフロードされる場合、仮想マシン３の特定機能処理モジュール３４は、処理情報ＩＮＦを管理ブロック４に通知する。仮想スイッチ４１のオフロード処理ブロック４１５は、仮想マシン３から通知された処理情報ＩＮＦを受け取る。そして、オフロード処理ブロック４１５は、受け取った処理情報ＩＮＦに基いて、特定機能処理を実行する。
【００２４】
このように、本実施の形態によれば、管理ブロック４が特定機能処理を実行可能に構成される。従って、仮想マシン３による特定機能処理を、必要に応じて、管理ブロック４にオフロードすることが可能となる。その結果、図４で示されたようなオーバーヘッドの増大が防止される。すなわち、本実施の形態によれば、計算機システム２の処理効率が向上する。
【００２５】
また、物理マシン１は、仮想マシン３と同じ特定機能処理を高速に実行可能なアクセラレータ１７（例えば、暗号処理アクセラレータ）を備えていてもよい。アクセラレータ１７は、拡張カード等のハードウェアに組み込まれる場合もあるし、ソフトウェア・プログラムにより実現される場合もある。アクセラレータ１７が有る場合、仮想スイッチ４１のオフロード処理ブロック４１５は、当該アクセラレータ１７を利用して特定機能処理を実行してもよい。物理マシン１が備える計算資源を有効に活用することができるため、計算機システム２の処理効率が向上する。
【００２６】
既出の図５の例では、仮想マシンが、仮想ネットワークインタフェースとは異なるインタフェースを用いて、物理マシンの暗号処理アクセラレータを直接利用する。そのため、仮想マシン間のスケジューリングや排他アクセス制御を実施する機構が必要となる。一方、本実施の形態によれば、仮想スイッチ４１のオフロード処理ブロック４１５が、物理マシン１のアクセラレータ１７を利用する。従って、仮想マシン間のスケジューリングや排他アクセス制御は不要となる。
【００２７】
尚、本実施の形態に係る計算機システム２は、物理マシン１が仮想化プログラム（仮想化ソフトウェア）を実行することによって実現される。仮想化プログラムは、物理マシン１（コンピュータ）により実行されるコンピュータプログラムであり、物理マシン１上に本実施の形態に係る計算機システム２を構築する。尚、仮想化プログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
【００２８】
図７は、物理マシン１（コンピュータ）のハードウェア構成の一例を概略的に示すブロック図である。物理マシン１は、ＣＰＵ１１、メモリ１２、Ｉ／Ｏコントローラ１３、ディスク装置１４、ネットワークインタフェース１５、及びアクセラレータ１７を備えている。ディスク装置１４、ネットワークインタフェース１５、及びアクセラレータ１７は、Ｉ／Ｏコントローラ１３に接続されている。ディスク装置１４は、ネットワークインタフェース１５を介して接続されたネットワーク上のディスク装置であってもよい。上述の仮想化プログラムは、メモリ１２やディスク装置１４に格納され、ＣＰＵ１１によって実行される。そのため、仮想マシン３及び管理ブロック４のそれぞれは、メモリ１２やディス装置１４上に記憶領域を備える。
【００２９】
以下、本発明の様々な実施の形態を詳細に説明する。
【００３０】
１．第１の実施の形態
第１の実施の形態では、上述の特定機能処理が「暗号処理」である場合を説明する。ここで、暗号処理とは、暗号化処理と復号化処理の双方を含むものとする。暗号処理に必要な処理情報ＩＮＦは、以下「暗号処理情報ＩＮＦ」と呼ばれる。暗号処理情報ＩＮＦは、鍵情報等、暗号処理プロトコルに従った情報を含む。例えばＳＳＬの場合、暗号処理情報ＩＮＦは、公開鍵や秘密鍵などを含む。
【００３１】
１−１．構成
図８は、第１の実施の形態に係る計算機システム２の構成を示すブロック図である。計算機システム２は、物理マシン１、仮想マシン３、及び管理ソフトウェア４（管理ブロック）を備えている。
【００３２】
物理マシン１は、暗号処理を高速に実行可能な暗号処理アクセラレータ１６を備えている。この暗号処理アクセラレータ１６は、図６におけるアクセラレータ１７に相当する。
【００３３】
仮想マシン３は、通信アプリケーション３１、通信処理モジュール３２、暗号処理モジュール３３、及び１つ以上の仮想ネットワークインタフェース３６を備えている。
【００３４】
通信アプリケーション３１は、何らかの通信処理を含むアプリケーションである。通信処理を実行する際、通信アプリケーション３１は、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）やライブラリを通じて、通信処理モジュール３２に対して通信処理を依頼する。
【００３５】
通信処理モジュール３２は、１つ以上の通信処理ブロック（図８の例では、３２１及び３２２）を備えている。通信処理ブロックは、例えば、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）などのプロトコルを処理する。通信モジュール３２は、暗号処理依頼や対象データを暗号処理モジュール３３に送信する。尚、通信処理モジュール３２と暗号処理モジュール３３は、同一のプロセスであってもよいし、異なるプロセスであってもよい。
【００３６】
暗号処理モジュール３３は、図６における特定機能処理モジュール３４に相当する。暗号処理モジュール３３は、バイパス判定ブロック３３１、暗号処理ブロック３３２、及び情報伝達ブロック３３３を備えている。
【００３７】
バイパス判定ブロック３３１は、通信処理モジュール３２から依頼される暗号処理を暗号処理モジュール３３内で実行するか、管理ソフトウェア４にオフロードするかを判定する。より詳細には、バイパス判定ブロック３３１は、オフロード可否情報を記憶領域中に保持している。オフロード可否情報は、通信アプリケーションのセッション情報と、当該通信を管理ソフトウェア４にオフロードするか否かとを関連付けている。バイパス判定ブロック３３１は、オフロード可否情報を参照することにより、暗号処理を管理ソフトウェア４にオフロードするか否かを判定する。
【００３８】
暗号処理を暗号処理モジュール３３内で実行する場合、バイパス判定ブロック３３１は、通信識別子、暗号処理情報ＩＮＦ、及び対象データを、暗号処理ブロック３３２に送信する。通信識別子としては、パケットヘッダに含まれるフィールド（送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ＭＡＣアドレス、送信先ＭＡＣアドレス等）のうち任意の組み合わせが挙げられる。一方、暗号処理を管理ソフトウェア４にオフロードする場合、バイパス判定ブロック３３１は、通信識別子及び暗号処理情報ＩＮＦを情報伝達ブロック３３３に渡し、また、対象データをそのまま通信処理モジュール３２に返す。
【００３９】
暗号処理ブロック３３２は、暗号処理を実行する。より詳細には、暗号処理ブロック３３２は、バイパス判定ブロック３３１から受け取った通信識別子及び暗号処理情報ＩＮＦを記憶領域に格納する。そして、暗号処理ブロック３３２は、バイパス判定ブロック３３１からの依頼に応答して、受け取った対象データに対し、該当する暗号処理情報ＩＮＦを用いることにより暗号処理を実行する。暗号処理の結果得られたデータは、通信処理モジュール３２に送信される。
【００４０】
情報伝達ブロック３３３は、バイパス判定ブロック３３１から受け取る情報を管理ソフトウェア４に転送する。また、情報伝達ブロック３３３は、管理ソフトウェア４から受け取る情報をバイパス判定ブロック３３１に転送する。
【００４１】
通信処理モジュール３２で処理された通信データは、パケットに加工され、仮想ネットワークインタフェース３６を通じて、仮想スイッチ４１に送信される。暗号処理がオフロードされる場合、仮想マシン３から仮想スイッチ４１へ送信されるパケットのデータ部は、平文のままである。暗号処理プロトコルによっては、データサイズが変わる可能性がある。そこで、通信データを通信処理モジュール３２でパケットに加工する際には、パケットのデータ部に暗号処理プロトコルが使用する領域をあらかじめ確保しておく。
【００４２】
管理ソフトウェア４は、仮想スイッチ４１、情報伝達ブロック４２、物理マシン情報管理ブロック４３、及びオフローディング判定ブロック４４を備えている。
【００４３】
仮想スイッチ４１は、各仮想マシン３の仮想ネットワークインタフェース３６と、物理マシン１の物理ネットワークインタフェース１５との間の接続を管理する。仮想ネットワークインタフェース３６と仮想スイッチ４１は、仮想スイッチポート４１４を介して接続される。また、物理ネットワークインタフェース１５と仮想スイッチ４１は、仮想スイッチポート４１４を介して接続される。仮想スイッチ４１は、パケット処理ブロック４１１及びオフロード処理ブロック４１２を備えている。
【００４４】
パケット処理ブロック４１１は、パケット転送機能を有する。つまり、パケット処理ブロック４１１は、仮想スイッチポート４１４から受け取るパケットの転送先を決定し、当該パケットを当該転送先に転送する。更に、パケット処理ブロック４１１は、パケットフィルタリング機能も有し、パケットの任意の領域の情報に基いてフィルタリングを実行する。フィルタリングのルールは、仮想マシン３から情報伝達ブロック４２経由で伝達される。
【００４５】
また、パケット処理ブロック４１１は、受け取ったパケットに対して暗号処理が必要か否かを判定する。より詳細には、パケット処理ブロック４１１は、暗号処理要否情報を記憶領域中に保持している。暗号処理要否情報は、通信識別子と、当該通信識別子にマッチするパケットに対して暗号処理を行うか否かとを関連付けている。暗号処理要否情報は、暗号処理を依頼した仮想マシン３から情報伝達ブロック４２経由で伝達される。パケット処理ブロック４１１は、暗号処理要否情報を参照することにより、受け取ったパケットに対して暗号処理が必要か否かを判定する。暗号処理が必要である場合、パケット処理ブロック４１１は、オフロード処理ブロック４１２にパケットを渡し、暗号処理を依頼する。
【００４６】
オフロード処理ブロック４１２は、図６におけるオフロード処理ブロック４１５に相当しており、オフロードが許可された対象通信に対して暗号処理を行う。より詳細には、オフロード処理ブロック４１２は、オフロード処理情報を記憶領域中に保持している。オフロード処理情報は、通信識別子と、当該通信に関する暗号処理情報ＩＮＦとを関連付けている。オフロード処理情報は、暗号処理を依頼した仮想マシン３から情報伝達ブロック４２経由で伝達される。オフロード処理ブロック４１２は、オフロード処理情報を参照することにより、受け取ったパケットに対して暗号処理を実行する。尚、オフロード処理ブロック４１２は、暗号処理を自身で行ってもよいし、物理マシン１の暗号処理アクセラレータ１６を利用して暗号処理を行ってもよい。暗号処理アクセラレータ１６を利用する場合、オフロード処理ブロック４１２は、暗号処理情報ＩＮＦ及び対象パケットを暗号処理アクセラレータ１６に渡す。
【００４７】
情報伝達ブロック４２は、仮想マシン３との間で情報のやり取りを行う。
【００４８】
物理マシン情報管理ブロック４３は、物理マシン１に関する情報を保持する。保持情報としては、例えば、暗号処理アクセラレータ１６が備える暗号処理機能に関する情報が挙げられる。尚、一般に、管理ソフトウェア４は、物理マシン１のＣＰＵ、メモリ容量、ディスク容量、Ｉ／Ｏ機能などの情報を取得しており、そのような情報をそのまま利用してもよい。
【００４９】
オフローディング判定ブロック４４は、仮想マシン３から依頼された暗号処理を、管理ソフトウェア４側で実行するか否かを判定する。すなわち、オフローディング判定ブロック４４は、仮想マシン３から管理ソフトウェア４への暗号処理のオフロードを許可するか否かを判定する。その判定基準としては、例えば、暗号処理アクセラレータ１６の機能で依頼された暗号処理プロトコルを処理することができるかどうか、ということが挙げられる。そのような物理マシン１に関する情報は、物理マシン情報管理ブロック４３から取得することができる。他の判定基準としては、オフロード依頼を出した仮想マシン３あるいは該仮想マシン３を利用するユーザが、暗号処理アクセラレータ１６を利用する権限を有するかどうか、が挙げられる。また、現在、暗号処理対象となっている通信セッション数なども、判定基準として用いることができる。
【００５０】
１−２．処理フロー
次に、本実施の形態に係る計算機システム２による処理フローを説明する。
【００５１】
１−２−１．オフロード依頼処理、オフロード準備処理
図９は、暗号通信を開始する際の、オフロード依頼処理を示すシーケンス図である。
【００５２】
ステップＳ１００：
まず、依頼元の仮想マシン３の暗号処理モジュール３３が、管理ソフトウェア４に対して、対象通信に関する暗号処理のオフロード依頼を送信する。このとき、暗号処理モジュール３３は、どのような通信について、どのような暗号処理プロトコルをオフローディングしたいのかを、管理ソフトウェア４に通知する。暗号処理プロトコルの例として、ＳＳＬやＩＰｓｅｃ（Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）が挙げられる。
【００５３】
ステップＳ１１０：
管理ソフトウェア４は、情報伝達ブロック４２を通してオフロード依頼を受け取る。そのオフロード依頼に応答して、オフローディング判定ブロック４４は、対象通信に関する暗号処理のオフロードを許可するか否かの判定を行う。その判定基準は上述の通りである。そして、管理ソフトウェア４は、その判定結果を示す判定結果情報を、依頼元の仮想マシン３に送信する。
【００５４】
ステップＳ１２０：
依頼元の仮想マシン３は、管理ソフトウェア４から判定結果情報を情報伝達ブロック３３３経由で受け取る。バイパス判定ブロック３３１は、その判定結果情報を上述のオフロード可否情報として記憶領域に格納する。
【００５５】
図１０は、オフロードが許可された場合のオフロード準備処理を示すシーケンス図である。
【００５６】
ステップＳ１４０：
依頼元の仮想マシン３の暗号処理モジュール３３は、対象通信に関する通信識別子及び暗号処理情報ＩＮＦを、情報伝達ブロック３３３を通して管理ソフトウェア４に通知する。例えば、暗号処理プロトコルがＳＳＬの場合、暗号処理情報ＩＮＦは、送信データを暗号化するためのサーバ鍵と、受信データを復号化するためのクライアント鍵を含む。
【００５７】
ステップＳ１５０：
管理ソフトウェア４の仮想スイッチ４１は、情報伝達ブロック４２を通して、通信識別子及び暗号処理情報ＩＮＦを受け取る。仮想スイッチ４１は、受け取った情報を、上述の暗号処理要否情報及びオフロード処理情報として記憶領域に格納する。
【００５８】
ステップＳ１６０：
ステップＳ１５０が完了すると、管理ソフトウェア４は、準備完了通知を、情報伝達ブロック４２経由で依頼元の仮想マシン３に送信する。
【００５９】
図９及び図１０で示された処理は、様々なタイミングで実行され得る。そのタイミングとしては、仮想マシン３の起動時、通信アプリケーション３１の起動時、通信アプリケーション３１が新たな通信を開始した時、暗号処理対象の通信に属するデータが流れ始めた時、などが考えられる。例えば、特定のアプリケーションではなく通信全般を暗号処理することが可能なＩＰｓｅｃの場合、仮想マシン３の起動時がそのタイミングとして考えられる。また例えば、アプリケーション単位で暗号処理を実行するＳＳＬの場合、通信アプリケーション３１の起動時がそのタイミングとして考えられる。
【００６０】
図１１は、図９及び図１０における仮想マシン３による処理を示すフローチャートである。尚、図９及び図１０におけるものと同一の処理には、同一の参照番号が付されている。
【００６１】
仮想マシン３の暗号処理モジュール３３は、管理ソフトウェア４に対して、オフロード依頼を送信する（ステップＳ１００）。管理ソフトウェア４から判定結果情報の通知があった場合（ステップＳ１１５；Ｙｅｓ)、バイパス判定ブロック３３１は、その判定結果情報をオフロード可否情報として記憶領域に格納する（ステップＳ１２０）。
【００６２】
尚、判定結果が通知されたかどうかを判断する方法として、（Ａ）仮想マシン３に対して、管理ソフトウェア４から、判定結果を通知したことを示すシグナルを出すこと、（Ｂ）仮想マシン３が備える記憶領域の特定の領域に対して、管理ソフトウェア４が、判定結果を通知したことを示すデータを書き込み、仮想マシン３が、該記憶領域をポーリングすること、などが考えられる。このような判定手法は、他の通知判定時にも適用可能である。
【００６３】
次に、暗号処理モジュール３３は、受け取った判定結果情報を参照し、対象通知に関する暗号処理がオフロード可能か否かを判定する（ステップＳ１３０）。オフロード不可の場合（ステップＳ１３０；Ｎｏ）、図１１で示される処理フローは終了する。一方、オフロード可能の場合（ステップＳ１３０；Ｙｅｓ）、暗号処理モジュール３３は、対象通信に関する通信識別子及び暗号処理情報ＩＮＦを、情報伝達ブロック３３３を通して管理ソフトウェア４に通知する（ステップＳ１４０）。
【００６４】
その後、暗号処理モジュール３３は、管理ソフトウェア４からの準備完了通知を待つ（ステップＳ１６５）。暗号処理モジュール３３が準備完了通知を受け取ると（ステップＳ１６５；Ｙｅｓ）、図１１で示される処理フローは終了する。
【００６５】
図１２は、図９及び図１０における管理ソフトウェア４による処理を示すフローチャートである。尚、図９及び図１０におけるものと同一の処理には、同一の参照番号が付されている。
【００６６】
管理ソフトウェア４は、情報伝達ブロック４２を通して、仮想マシン３からオフロード依頼を受け取る（ステップＳ１０５；Ｙｅｓ）。そのオフロード依頼に応答して、管理ソフトウェア４は、対象通信に関する暗号処理のオフロードを許可するか否かの判定を行い、判定結果情報を依頼元の仮想マシン３に送信する（ステップＳ１１０）。
【００６７】
オフロード不可の場合（ステップＳ１３５；Ｎｏ）、図１２で示される処理フローは終了する。一方、オフロード可能の場合（ステップＳ１３５；Ｙｅｓ)、管理ソフトウェア４は、仮想マシン３からの情報提供を待つ（ステップＳ１４５）。仮想マシン３から通信識別子及び暗号処理情報ＩＮＦを受け取ると（ステップＳ１４５；Ｙｅｓ）、管理ソフトウェア４は、受け取った情報を記憶領域に格納する（ステップＳ１５０）。その後、管理ソフトウェア４は、準備完了通知を、依頼元の仮想マシン３に送信する（ステップＳ１６０）。
【００６８】
１−２−２．パケット送信処理
図１３は、仮想マシン３によるパケット送信処理を示すフローチャートである。まず、仮想マシン３上で稼動する通信アプリケーション３１が、通信用ＡＰＩやライブラリなどを用いて、通信処理モジュール３２を呼び出し、通信を開始する（ステップＳ２００）。当該通信データは、暗号化の対象であるとする。その通信データは、暗号処理のため、通信処理モジュール３２経由で、暗号処理モジュール３３のバイパス判定ブロック３３１に転送される。
【００６９】
次に、バイパス判定ブロック３３１は、記憶領域に格納されているオフロード可否情報を参照することにより、当該通信データに関する暗号処理を管理ソフトウェア４にオフロードするか否かを判定する（ステップＳ２２０）。オフロード可能の場合（ステップＳ２２０；Ｙｅｓ）、バイパス判定ブロック３３１は、受け取った通信データを平文のまま通信処理モジュール３２に返す。そして、通信処理モジュール３２は、当該通信データをパケット化し、そのパケットを仮想ネットワークインタフェース３６を通して仮想スイッチ４１に送信する（ステップＳ２３０）。
【００７０】
一方、オフロード不可の場合（ステップＳ２２０；Ｎｏ）、バイパス判定ブロック３３１は、当該通信データを暗号処理ブロック３３２にわたす。そして、暗号処理ブロック３３２が、当該通信データに対して暗号処理を実行する（ステップＳ２２５）。暗号処理ブロック３３２は、暗号化データを、通信処理モジュール３２に送信する。通信処理モジュール３２は、受け取ったデータをパケット化し、そのパケットを仮想ネットワークインタフェース３６を通して仮想スイッチ４１に送信する（ステップＳ２３５）。
【００７１】
図１４は、管理ソフトウェア４によるパケット送信処理を示すフローチャートである。まず、仮想スイッチ４１のパケット処理ブロック４１１は、仮想スイッチポート４１４を通して仮想マシン３からパケットを受け取る。パケット処理ブロック４１１は、受け取ったパケットのヘッダに含まれる通信識別情報を抽出する。そして、パケット処理ブロック４１１は、記憶領域に格納されている暗号処理要否情報を参照し、受け取ったパケットの暗号化を行うか否かを判定する（ステップＳ２４０）。
【００７２】
あるいは、ステップＳ２４０は、次のようにして行うこともできる。通信処理モジュール３２がパケットを生成する際に、パケット中の特定の領域に、暗号処理を実行することを示すデータを書き込む。パケット処理ブロック４１１は、その領域の内容に応じて、暗号化を実行するかどうか判定する。パケット中の特定の領域としては、例えば、パケットヘッダの未使用の領域や、パケットのデータ部の先頭数バイトの領域などが考えられる。どの領域を使用するかは、通信アプリケーション３１に依存する。そのため、図１０のステップＳ１４０の際に、その特定の領域を指定する情報もあわせて通知する。
【００７３】
暗号化が行われる場合（ステップＳ２４０；Ｙｅｓ）、パケット処理ブロック４１１は、オフロード処理ブロック４１２にパケットを渡し、暗号化を依頼する。オフロード処理ブロック４１２は、記憶領域に格納されている対象通信に関する暗号処理情報ＩＮＦを参照することにより、受け取ったパケットに対して暗号化を実行する（ステップＳ２５０）。尚、暗号化は、暗号処理アクセラレータ１６を利用して実施されてもよいし、オフロード処理ブロック４１２自身により実施されてもよい。暗号化されたパケットは、パケット処理ブロック４１１に送られる。
【００７４】
暗号化が行われない場合（ステップＳ２４０；Ｎｏ）、ステップＳ２５０はスキップされる。
【００７５】
その後、パケット処理ブロック４１１は、適切な仮想スイッチポート４１４経由で、パケットを宛先に送信する（ステップＳ２６０）。
【００７６】
１−２−３．パケット受信処理
図１５は、管理ソフトウェア４による外部からのパケット受信処理を示すフローチャートである。まず、パケット処理ブロック４１１は、記憶領域に格納されている暗号処理要否情報を参照し、受け取った暗号化パケットの復号化を行うか否かを判定する（ステップＳ３００）。
【００７７】
復号化が行われる場合（ステップＳ３００；Ｙｅｓ）、パケット処理ブロック４１１は、オフロード処理ブロック４１２にパケットを渡し、復号化を依頼する。オフロード処理ブロック４１２は、記憶領域に格納されている対象通信に関する暗号処理情報ＩＮＦを参照することにより、受け取ったパケットに対して復号化を実行する（ステップＳ３１０）。尚、復号化は、暗号処理アクセラレータ１６を利用して実施されてもよいし、オフロード処理ブロック４１２自身により実施されてもよい。復号化されたパケットは、パケット処理ブロック４１１に送られる。
【００７８】
復号化が行われない場合（ステップＳ３００；Ｎｏ）、ステップＳ３１０はスキップされる。
【００７９】
その後、パケット処理ブロック４１１は、パケットに対してフィルタリング処理を実施する。暗号処理がオフロードされている場合、すなわち、仮想スイッチ４において復号化が実施された場合、当該パケットのパケットデータに応じた効率的なフィルタリングが可能である。その後、パケット処理ブロック４１１は、仮想スイッチポート４１４経由で、適切な仮想マシン３にパケットを転送する（ステップＳ３２０）。
【００８０】
図１６は、仮想マシン３によるパケット受信処理を示すフローチャートである。まず、仮想マシン３は、仮想スイッチ４から仮想ネットワークインタフェース３６を通してパケットを受け取る。バイパス判定ブロック３３１は、記憶領域に格納されているオフロード可否情報を参照することにより、当該パケットの復号化を行うか否か判定する（ステップＳ３３０）。
【００８１】
当該パケットに関する暗号処理がオフロードされていない場合、仮想マシン３において復号化が行われる（ステップＳ３３０；Ｙｅｓ)。この場合、バイパス判定ブロック３３１は、パケットを暗号処理ブロック３３２にわたす。そして、暗号処理ブロック３３２が、当該パケットの復号化を行う（ステップＳ３４０）。暗号処理ブロック３３２は、復号化データを、通信処理モジュール３２に送信する。
【００８２】
当該パケットに関する暗号処理がオフロードされている場合、仮想マシン３において復号化を行う必要はない（ステップＳ３３０；Ｎｏ）。この場合、ステップＳ３４０はスキップされる。
【００８３】
その後、通信処理モジュール３２は、パケットを、通信アプリケーション３１で使用するデータに加工し、通信アプリケーション３１にわたす（ステップＳ３５０）。
【００８４】
１−２−４．無効化処理
図１７は、暗号処理対象の通信が終了した場合の無効化処理の一例を示すシーケンス図である。尚、“通信が終了した”とは、例えばＴＣＰを利用した通信であれば、ＦＩＮパケットの送受信が完了した場合などを意味する。
【００８５】
本例では、仮想マシン３が、暗号処理対象の通信が終了したことを検知し、明示的に無効化処理を開始する。まず、暗号処理モジュール３３は、記憶領域に格納されている当該通信の暗号処理に関わる情報（オフロード可否情報や暗号処理情報ＩＮＦ)を無効化する（ステップＳ４００）。更に、暗号処理モジュール３３は、管理ソフトウェア４に、情報伝達ブロック３３３を通して、当該通信の暗号処理に関わる情報の無効化依頼を送信する（ステップＳ４１０）。
【００８６】
管理ソフトウェア４の仮想スイッチ４１は、情報伝達ブロック４２を通して、無効化依頼を受け取る。その無効化依頼に応答して、仮想スイッチ４１は、記憶領域に格納されている当該通信の暗号処理に関わる情報（暗号処理要否情報や暗号処理情報ＩＮＦ）を無効化する（ステップＳ４２０）。その後、管理ソフトウェア４は、受け取った無効化依頼に対する無効化処理が完了したことを、情報伝達ブロック４２を通じて仮想マシン３に通知する（ステップＳ４３０）。
【００８７】
図１８は、図１７における仮想マシン３による処理を示すフローチャートである。尚、図１７におけるものと同一の処理には、同一の参照番号が付されている。
【００８８】
まず、暗号処理モジュール３３は、記憶領域に格納されている当該通信の暗号処理に関わる情報（オフロード可否情報や暗号処理情報ＩＮＦ)を無効化する（ステップＳ４００）。更に、暗号処理モジュール３３は、管理ソフトウェア４に、当該通信の暗号処理に関わる情報の無効化依頼を送信する（ステップＳ４１０）。その後、仮想マシン３は、管理ソフトウェア４からの無効化完了通知を待つ（ステップＳ４３５）。暗号処理モジュール３３が無効化完了通知を受け取ると（ステップＳ４３５；Ｙｅｓ）、図１８で示される処理フローは終了する。
【００８９】
図１９は、図１７における管理ソフトウェア４による処理を示すフローチャートである。尚、図１７におけるものと同一の処理には、同一の参照番号が付されている。
【００９０】
管理ソフトウェア４は、仮想マシン３から無効化依頼を受け取る（ステップＳ４１５；Ｙｅｓ）。その無効化依頼に応答して、仮想スイッチ４１は、記憶領域に格納されている当該通信の暗号処理に関わる情報（暗号処理要否情報や暗号処理情報ＩＮＦ）を無効化する（ステップＳ４２０）。その後、管理ソフトウェア４は、無効化完了通知を、仮想マシン３に送信する（ステップＳ４３０）。
【００９１】
無効化処理の他の例を説明する。本例では、暗号処理対象の通信のパケットが一定期間流れなかった場合、管理ソフトウェア４側が無効化処理を開始する。図２０は、管理ソフトウェア４による処理を示すフローチャートであり、図２１は、仮想マシン３による処理を示すフローチャートである。
【００９２】
まず、管理ソフトウェア４は、暗号処理対象の通信のうち、一定期間パケットが送受信されていないものが存在するかどうかを判定する（ステップＳ４５０）。そのような通信が存在しない場合（ステップＳ４５０；Ｎｏ）、図２０で示される処理フローは終了する。一方、そのような通信が存在する場合（ステップＳ４５０；Ｙｅｓ）、仮想スイッチ４１は、記憶領域に格納されている当該通信の暗号処理に関わる情報（暗号処理要否情報や暗号処理情報ＩＮＦ）を無効化する（ステップＳ４６０）。その後、管理ソフトウェア４は、当該通信に関する無効化通知を、情報伝達ブロック４２を通して仮想マシン３に送信する（ステップＳ４７０）。尚、図２０で示される処理は、所定間隔毎に繰り返し実行される。
【００９３】
仮想マシン３は、情報伝達ブロック３３３を通して管理ソフトウェア４から無効化通知を受け取る（ステップＳ４７５；Ｙｅｓ）。その無効化通知に応答して、暗号処理モジュール３３は、当該対象通信に関するオフロード可否情報を無効化する。例えば、暗号処理モジュール３３は、当該対象通信に関するオフローディング設定が管理ソフトウェア４になされていないことを、記憶領域に記録する（ステップＳ４８０）。当該通信のデータが再び流れ始めた場合は、図９及び図１０で示された設定処理が再度実施され、暗号処理が再開される。
【００９４】
１−３．効果
以上に説明されたように、本実施の形態によれば、管理ソフトウェア４が暗号処理を実行可能に構成される。従って、仮想マシン３による暗号処理を、必要に応じて、管理ソフトウェア４にオフロードすることが可能となる。その結果、図４で示されたようなオーバーヘッドの増大が防止される。すなわち、本実施の形態によれば、計算機システム２の処理効率が向上する。
【００９５】
また、管理ソフトウェア４の仮想スイッチ４１において暗号処理が可能となるため、パケットのデータ部が暗号化された通信に関しても、当該データ部に応じた効率的なフィルタリング処理が可能となる。
【００９６】
更に、本実施の形態によれば、管理ソフトウェア４の仮想スイッチ４１が、物理マシン１の暗号処理アクセラレータ１６を利用する。従って、仮想マシン３間のスケジューリングや排他アクセス制御は不要となる。
【００９７】
２．第２の実施の形態
管理ソフトウェア４のパケット処理ブロック４１１やオフロード処理ブロック４１２に割り当てられる記憶領域は有限であるため、確保できるエントリ数には限りがある。従って、パケット処理ブロック４１１やオフロード処理ブロック４１２は、割り当てられた記憶領域を、ＣＰＵのキャッシュメモリのように利用することが望ましい。本発明の第２の実施の形態では、そのような場合が説明される。尚、第１の実施の形態と重複する説明は適宜省略される。また、暗号処理に関する情報は暗号処理単位に扱うことができ、エントリは暗号処理単位毎に確保されるとする。
【００９８】
図２２は、本実施の形態に係る暗号処理を示すフローチャートである。管理ソフトウェア４の仮想スイッチ４１は、パケットを受け取る。すると、パケット処理ブロック４１１は、割り当てられた記憶領域を参照する（ステップＳ５００）。
【００９９】
図２３は、ステップＳ５００の処理を示すフローチャートである。まず、パケット処理ブロック４１１は、受け取ったパケットにマッチするヒットエントリが存在するかどうか判定する（ステップＳ５０００）。ここで、ヒットエントリとは、受け取ったパケットに関する暗号処理要否情報を示すエントリである。ヒットエントリが存在する場合（ステップＳ５０００；Ｙｅｓ）、図２３で示された処理フローは終了する。一方、ヒットエントリが存在しない場合（ステップＳ５０００；Ｎｏ）、パケット処理ブロック４１１は、当該パケットのヘッダ情報に基づき、送信元の仮想マシン３に処理内容を問い合わせる（ステップＳ５０１０）。仮想マシン３から当該パケットに関する処理内容が通知されると（ステップＳ５０２０；Ｙｅｓ）、パケット処理ブロック４１１は、割り当てられている記憶領域に空きがあるかどうか判定する（ステップＳ５０３０）。空きが有る場合（ステップＳ５０３０；Ｙｅｓ）、パケット処理ブロック４１１は、仮想マシン３から受け取った情報をヒットエントリとして記憶領域に格納する（ステップＳ５０４０）。一方、空きが無い場合（ステップＳ５０３０；Ｎｏ）、パケット処理ブロック４１１は、エントリの入れ替えを行う（ステップＳ５０４５）。エントリ入れ替えについては、ＣＰＵで一般的に用いられるキャッシュメモリにおけるエントリ入れ替え制御と同様であるため、詳細な説明を省略する。
【０１００】
再度図２２を参照して、パケット処理ブロック４１１は、上記ヒットエントリ（暗号処理要否情報）を参照して、受け取ったパケットに対して暗号処理を行うか否かを判定する（ステップＳ５１０）。暗号処理が行われない場合（ステップＳ５１０；Ｎｏ）、処理は、後述のステップＳ５４０に進む。一方、暗号処理が行われる場合（ステップＳ５１０；Ｙｅｓ）、パケット処理ブロック４１１は、オフロード処理ブロック４１２にパケットを渡し、暗号処理を依頼する。オフロード処理ブロック４１２は、割り当てられた記憶領域を参照する（ステップＳ５２０）。
【０１０１】
図２４は、ステップＳ５２０の処理を示すフローチャートである。まず、オフロード処理ブロック４１２は、受け取ったパケットにマッチするヒットエントリが存在するかどうか判定する（ステップＳ５２００）。ここで、ヒットエントリとは、受け取ったパケットに関するオフロード処理情報（暗号処理情報ＩＮＦ)を示すエントリである。ヒットエントリが存在する場合（ステップＳ５２００；Ｙｅｓ）、図２４で示された処理フローは終了する。一方、ヒットエントリが存在しない場合（ステップＳ５２００；Ｎｏ）、オフロード処理ブロック４１２は、当該パケットのヘッダ情報に基づき、送信元の仮想マシン３に処理内容を問い合わせる（ステップＳ５２１０）。仮想マシン３から当該パケットに関する処理内容が通知されると（ステップＳ５２２０；Ｙｅｓ）、オフロード処理ブロック４１２は、割り当てられている記憶領域に空きがあるかどうか判定する（ステップＳ５２３０）。空きが有る場合（ステップＳ５２３０；Ｙｅｓ）、オフロード処理ブロック４１２は、仮想マシン３から受け取った情報をヒットエントリとして記憶領域に格納する（ステップＳ５２４０）。一方、空きが無い場合（ステップＳ５２３０；Ｎｏ）、オフロード処理ブロック４１２は、エントリの入れ替えを行う（ステップＳ５２４５）。エントリ入れ替えについては、ＣＰＵで一般的に用いられるキャッシュメモリにおけるエントリ入れ替え制御と同様であるため、詳細な説明を省略する。
【０１０２】
再度図２２を参照して、オフロード処理ブロック４１２は、上記ヒットエントリ（オフロード処理情報、暗号処理情報ＩＮＦ）を参照して、受け取ったパケットに対して暗号処理を実行する（ステップＳ５３０）。尚、暗号処理は、暗号処理アクセラレータ１６を利用して実施されてもよいし、オフロード処理ブロック４１２自身により実施されてもよい。処理後のパケットは、パケット処理ブロック４１１に送られる。
【０１０３】
パケット処理ブロック４１１は、適切な仮想スイッチポート４１４経由で、パケットを宛先に送信する（ステップＳ５４０）。
【０１０４】
図２５は、仮想マシン３による処理を示すフローチャートである。仮想マシン３の暗号処理モジュール３３は、管理ソフトウェア４から問い合わせがあった場合、バイパス判定ブロック３３１の記憶領域を参照し、問い合わせ内容に応じた情報を管理ソフトウェア４に送信する（ステップＳ５５０）。
【０１０５】
尚、本実施の形態において、エントリ入れ替えによって記憶領域からエントリが追い出されてしまう場合、その追い出されたエントリを、管理ソフトウェア４がアクセス可能なディスク装置等の別の記憶装置に書き出しておいてもよい。必要に応じて当該エントリを読み出すことによって、管理ソフトウェア４が仮想マシン３に問い合わせる必要がないようにすることもできる。
【０１０６】
本実施の形態によれば、第１の実施の形態と同じ効果が得られる。更に、割り当てられた記憶領域をキャッシュメモリのように用いることにより、最大エントリ数以上の通信に対してもオフロード処理を実行することが可能となる。
【０１０７】
３．第３の実施の形態
図２６は、第３の実施の形態に係る計算機システム２の構成を示すブロック図である。第１の実施の形態と重複する説明は、適宜省略される。本実施の形態によれば、暗号処理をオフロードするか否かが、ポリシーに基いて決定される。そのため、仮想マシン３は、更に、ポリシー管理ブロック３３４を備えている。また、管理ソフトウェア４は、更に、ポリシー管理ブロック４５を備えている。
【０１０８】
ポリシー管理ブロック３３４は、各仮想マシン３において、バイパス判定ブロック３３１から参照可能に設けられる。ポリシー管理ブロック３３４は、どの通信やどの暗号処理プロトコルを管理ソフトウェア４にオフロードするか、といったポリシーを管理する。ポリシー情報の形式の例としては、暗号処理プロトコル毎に、暗号処理をどこで実行するかを関連付けて示すものが考えられる。あるいは、通信識別情報（通信プロトコル，ＩＰアドレス等）が、暗号処理をどこで実行するかと関連付けられてもよい。ポリシー管理ブロック３３４は、仮想マシン３のユーザあるいは管理者に対して、ポリシー設定のためのインタフェースを提供する。仮想マシン３のユーザあるいは管理者は、該インタフェースを利用してポリシーを設定することができる。インタフェースの例として、Ｗｅｂブラウザ等のＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供するソフトウェアを利用することが考えられる。
【０１０９】
図２７は、仮想マシン３による処理を示すフローチャートである。まず、バイパス判定ブロック３３１は、暗号処理対象の通信に関する情報を元に、ポリシー管理ブロック３３４が管理するポリシーを参照する（ステップＳ７００）。暗号処理を管理ソフトウェア４で実行する場合、すなわち、オフロードが行われる場合（ステップＳ７１０；Ｙｅｓ）、上述のステップＳ１００〜Ｓ１６５が実行される（ステップＳ７２０）。一方、暗号処理を仮想マシン３で実行する場合、すなわち、オフロードが行われない場合（ステップＳ７１０；Ｎｏ）、バイパス判定ブロック３３１は、暗号処理ブロック３３２に暗号処理情報ＩＮＦ等をわたし、暗号処理を依頼する（ステップＳ７２５）。
【０１１０】
ポリシー管理ブロック４５は、管理ソフトウェア４において、オフローディング判定ブロック４４から参照可能に設けられる。ポリシー管理ブロック４５は、暗号処理のオフロードを許可するか否か、許可する場合には暗号処理アクセラレータ１６を使用するかどうか、といったポリシーを管理する。ポリシー情報の例としては、管理ソフトウェア４側で処理可能な暗号処理プロトコルのリスト、仮想マシン３ごとにオフローディング可能な通信セッション数、仮想マシン３を利用するユーザの権限といった情報が考えられる。ポリシー管理ブロック４５は、管理ソフトウェア４の運用者など適切な権限を持つユーザに対して、ポリシー設定のためのインタフェースを提供する。権限を持つユーザは、該インタフェースを利用してポリシーを設定することができる。インタフェースの例として、Ｗｅｂブラウザ等のＧＵＩを提供するソフトウェアを利用することが考えられる。
【０１１１】
図２８は、管理ソフトウェア４による処理を示すフローチャートである。まず、オフローディング判定ブロック４４は、仮想マシン３から受け取ったオフロード依頼で指定される暗号処理に関して、暗号処理プロトコルや仮想マシン３に関する情報などを元に、ポリシー管理ブロック４５が管理するポリシーを参照する（ステップＳ８００）。そして、オフローディング判定ブロック４４は、対象通信に関する暗号処理のオフロードを許可するか否かの判定を行い、判定結果情報を依頼元の仮想マシン３に送信する（ステップＳ８１０）。
【０１１２】
本実施の形態によれば、既出の実施の形態と同じ効果が得られる。更に、ポリシーに従った暗号処理の配置が可能となるため、暗号処理の配置を柔軟に行うことができる。
【０１１３】
４．第４の実施の形態
本発明は、暗号処理のオフロードに限られず、仮想マシン３の特定機能処理のオフロードに適用可能である。図２９は、より一般化された計算機システム２の構成を示している。既出の実施の形態と重複する説明は、適宜省略される。
【０１１４】
仮想マシン３の特定機能処理モジュール３４は、既出の実施の形態における暗号処理モジュール３３と同様である。特定機能処理モジュール３４は、バイパス判定ブロック３３５、特定機能処理ブロック３３６、情報伝達ブロック３３７を備えている。バイパス判定ブロック３３５は、既出の実施の形態におけるバイパス判定ブロック３３１と同様である。特定機能処理ブロック３３６は、既出の実施の形態における暗号処理ブロック３３２と同様であり、特定機能処理を実行する。情報伝達ブロック３３７は、既出の実施の形態における情報伝達ブロック３３３と同様である。
【０１１５】
管理ソフトウェア４の仮想スイッチ４１は、パケット処理ブロック４１１及びオフロード処理ブロック４１５を備えている。オフロード処理ブロック４１５は、既出の実施の形態におけるオフロード処理ブロック４１２と同様であり、オフロードが許可された場合に特定機能処理を実行する。
【０１１６】
物理マシン１のアクセラレータ１７は、既出の実施の形態における暗号処理アクセラレータ１６と同様であり、特定機能処理を高速に実行することができる。
【０１１７】
特定機能処理は、暗号処理に限られない。例えば、アンチウィルスシステムやアンチスパムメールシステムなどセキュリティ系のシステムにおける正規表現検索も、特定機能処理の一例である。
【０１１８】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【０１１９】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１２０】
（付記１）
物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備え、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記仮想スイッチは、前記特定機能処理が前記管理ブロックにオフロードされる場合に前記特定機能処理を行うオフロード処理ブロックを備え、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理モジュールは、前記特定機能処理に必要な処理情報を前記管理ブロックに通知し、前記オフロード処理ブロックは、前記仮想マシンから受け取った前記処理情報に基づいて前記特定機能処理を実行する
計算機システム。
【０１２１】
（付記２）
付記１に記載の計算機システムであって、
前記物理マシンは、前記特定機能処理のアクセラレータを備え、
前記オフロード処理ブロックは、前記アクセラレータを利用して前記特定機能処理を実行する
計算機システム。
【０１２２】
（付記３）
付記１又は２に記載の計算機システムであって、
前記特定機能処理モジュールは、第１通信に関するオフロード依頼を前記管理ブロックに送信し、
前記管理ブロックは、前記オフロード依頼に応答して、前記第１通信に関するオフロードを許可するか否かの判定を行い、当該判定結果を示す判定結果情報を前記仮想マシンに通知し、
前記第１通信に関するオフロードが許可された場合、前記特定機能処理モジュールは、前記第１通信に関する前記処理情報を前記管理ブロックに通知し、
前記仮想スイッチは、前記処理情報を受け取ると、前記受け取った処理情報を第１記憶領域に格納し、
前記第１記憶領域への前記処理情報の格納が完了した後、前記管理ブロックは、準備完了通知を前記仮想マシンに送信し、
前記準備完了通知を受け取った後、前記仮想マシンは、前記第１通信のパケットに対して前記特定機能処理を実施することなく、前記第１通信のパケットを前記仮想スイッチに送信し、
前記仮想スイッチは、前記仮想マシンから前記第１通信のパケットを受け取り、
前記オフロード処理ブロックは、前記第１記憶領域に格納されている前記第１通信に関する前記処理情報に基づいて、前記第１通信のパケットに対して前記特定機能処理を実施する
計算機システム。
【０１２３】
（付記４）
付記３に記載の計算機システムであって、
前記特定機能処理モジュールは、前記判定結果情報をオフロード可否情報として第２記憶領域に格納し、
前記特定機能処理モジュールは、前記第２記憶領域に格納されている前記オフロード可否情報を参照して、前記第１通信に関するオフロードを行うか否かを判定する
計算機システム。
【０１２４】
（付記５）
付記４に記載の計算機システムであって、
前記第１通信が終了した場合、前記特定機能処理モジュールは、前記第１通信に関する前記判定結果情報を無効化し、且つ、前記管理ブロックに無効化依頼を送信し、
前記仮想スイッチは、前記無効化依頼に応答して、前記第１記憶領域に格納されている前記第１通信に関する前記処理情報を無効化する
計算機システム。
【０１２５】
（付記６）
付記４又は５に記載の計算機システムであって、
前記第１通信のパケットが所定期間送受信されなかった場合、前記仮想スイッチは、前記第１記憶領域に格納されている前記第１通信に関する前記処理情報を無効化し、且つ、前記仮想マシンに無効化通知を送信し、
前記特定機能処理モジュールは、前記無効化通知に応答して、前記第１通信に関する前記オフロード可否情報を無効化する
計算機システム。
【０１２６】
（付記７）
付記１乃至６のいずれか一項に記載の計算機システムであって、
前記特定機能処理は、暗号処理であり、
前記特定機能処理モジュールは、前記暗号処理を行う暗号処理モジュールである
計算機システム。
【０１２７】
（付記８）
付記７に記載の計算機システムであって、
前記仮想スイッチは、暗号化された暗号化通信を受信し、
前記暗号処理が前記管理ブロックにオフロードされている場合、前記オフロード処理ブロックは、前記処理情報を参照することによって前記暗号化通信のパケットを復号化し、当該パケットデータに応じてフィルタリングを実施する
計算機システム。
【０１２８】
（付記９）
計算機システムにおけるオフローディング方法であって、
前記計算機システムは、
物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う機能を有し、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記オフローディング方法は、
前記特定機能処理を行うオフロード処理ブロックを前記仮想スイッチに設けるステップと、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理に必要な処理情報を前記管理ブロックに通知するステップと、
前記処理情報に基づき、前記オフロード処理ブロックによって前記特定機能処理を実行するステップと
を含む
オフローディング方法。
【０１２９】
（付記１０）
物理マシンによって実行され、前記物理マシン上に計算機システムを構築するプログラムであって、
前記計算機システムは、
前記物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備え、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記仮想スイッチは、前記特定機能処理が前記管理ブロックにオフロードされる場合に前記特定機能処理を行うオフロード処理ブロックを備え、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理モジュールは、前記特定機能処理に必要な処理情報を前記管理ブロックに通知し、前記オフロード処理ブロックは、前記仮想マシンから受け取った前記処理情報に基づいて前記特定機能処理を実行する
プログラム。
【０１３０】
本出願は、２０１０年７月２１日に出願された日本国特許出願２０１０−１６４２４２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１３１】
１  物理マシン
２  計算機システム
３  仮想マシン
４  管理ソフトウェア（管理ブロック）
１１  ＣＰＵ
１２  メモリ
１３  Ｉ／Ｏコントローラ
１４  ディスク装置
１５  物理ネットワークインタフェース
１６  暗号処理アクセラレータ
１７  アクセラレータ
３１  通信アプリケーション
３２  通信処理モジュール
３３  暗号処理モジュール
３４  特定機能処理モジュール
３６  仮想ネットワークインタフェース
４１  仮想スイッチ
４２  情報伝達ブロック
４３  物理マシン情報管理ブロック
４４  オフローディング判定ブロック
４５  ポリシー管理ブロック
４６  情報伝達ブロック
３２１  通信処理ブロック
３２２  通信処理ブロック
３３１  バイパス判定ブロック
３３２  暗号処理ブロック
３３３  情報伝達ブロック
３３４  ポリシー管理ブロック
３３５  バイパス判定ブロック
３３６  特定機能処理ブロック
３３７  情報伝達ブロック
４１１  パケット処理ブロック
４１２  オフロード処理ブロック
４１４  仮想スイッチポート
４１５  オフロード処理ブロック
ＩＮＦ  処理情報
【図１】
2013535711.tif 000003
【図２】
2013535711.tif 000004
【図３】
2013535711.tif 000005
【図４】
2013535711.tif 000006
【図５】
2013535711.tif 000007
【図６】
2013535711.tif 000008
【図７】
2013535711.tif 000009
【図８】
2013535711.tif 000010
【図９】
2013535711.tif 000011
【図１０】
2013535711.tif 000012
【図１１】
2013535711.tif 000013
【図１２】
2013535711.tif 000014
【図１３】
2013535711.tif 000015
【図１４】
2013535711.tif 000016
【図１５】
2013535711.tif 000017
【図１６】
2013535711.tif 000018
【図１７】
2013535711.tif 000019
【図１８】
2013535711.tif 000020
【図１９】
2013535711.tif 000021
【図２０】
2013535711.tif 000022
【図２１】
2013535711.tif 000023
【図２２】
2013535711.tif 000024
【図２３】
2013535711.tif 000025
【図２４】
2013535711.tif 000026
【図２５】
2013535711.tif 000027
【図２６】
2013535711.tif 000028
【図２７】
2013535711.tif 000029
【図２８】
2013535711.tif 000030
【図２９】
2013535711.tif 000031
【国際調査報告】
2013535711.tif 000032