(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
添付図面を参照して、本発明の実施の形態を説明する。
【0019】
まず、概要を説明する。
図6は、本発明の実施の形態に係る計算機システム2の構成を概略的に示すブロック図である。計算機システム2は、物理マシン1、仮想マシン3、及び管理ブロック(管理ソフトウェア)4を備えている。尚、以下の説明において、モジュールあるいはブロックとは、コンピュータがプログラムを実行することにより実現される機能単位を意味する。
【0020】
仮想マシン3は、物理マシン1上で動作する。仮想マシン3は、他の仮想マシンや物理マシン1と通信するためのプロトコルスタックなどの通信機構を備えている。この通信機構は、仮想ネットワークインタフェースを通して通信を行う。更に、仮想マシン3は、特定の機能処理(例えば、暗号処理)を実行する機能を備えている。より詳細には、仮想マシン3は、特定機能処理モジュール34を備えている。この特定機能処理モジュール34は、仮想マシン3が送受信するパケットに対して特定機能処理を実行する。その特定機能処理に必要な情報は、以下「処理情報INF」と呼ばれる。例えば、暗号処理の場合、処理情報INFは、暗号処理に必要な鍵情報などを含む。
【0021】
管理ブロック(管理ソフトウェア)4も、物理マシン1上で動作する。この管理ブロック4は、仮想マシン3の管理を行う。また、管理ブロック4は、仮想スイッチ41を備えている。仮想スイッチ41は、ソフトウェアベースのパケットスイッチであり、仮想マシン3間、及び、仮想マシン3と物理マシン1との間の通信を中継する。つまり、仮想スイッチ41は、仮想マシン3が送受信するパケットを中継する。
【0022】
更に、本実施の形態によれば、管理ブロック4の仮想スイッチ41も、仮想マシン3が行う特定機能処理と同じ処理を実行する機能を備えている。より詳細には、仮想スイッチ41は、オフロード処理ブロック415を備えている。このオフロード処理ブロック415は、仮想マシン3と同じ特定機能処理を実行することができる。
【0023】
従って、本実施の形態によれば、仮想マシン3による特定機能処理を、必要に応じて、管理ブロック4にオフロード(あるいは再配置ともいう)することが可能となる。特定機能処理が仮想マシン3から管理ブロック4にオフロードされる場合、仮想マシン3の特定機能処理モジュール34は、処理情報INFを管理ブロック4に通知する。仮想スイッチ41のオフロード処理ブロック415は、仮想マシン3から通知された処理情報INFを受け取る。そして、オフロード処理ブロック415は、受け取った処理情報INFに基いて、特定機能処理を実行する。
【0024】
このように、本実施の形態によれば、管理ブロック4が特定機能処理を実行可能に構成される。従って、仮想マシン3による特定機能処理を、必要に応じて、管理ブロック4にオフロードすることが可能となる。その結果、
図4で示されたようなオーバーヘッドの増大が防止される。すなわち、本実施の形態によれば、計算機システム2の処理効率が向上する。
【0025】
また、物理マシン1は、仮想マシン3と同じ特定機能処理を高速に実行可能なアクセラレータ17(例えば、暗号処理アクセラレータ)を備えていてもよい。アクセラレータ17は、拡張カード等のハードウェアに組み込まれる場合もあるし、ソフトウェア・プログラムにより実現される場合もある。アクセラレータ17が有る場合、仮想スイッチ41のオフロード処理ブロック415は、当該アクセラレータ17を利用して特定機能処理を実行してもよい。物理マシン1が備える計算資源を有効に活用することができるため、計算機システム2の処理効率が向上する。
【0026】
既出の
図5の例では、仮想マシンが、仮想ネットワークインタフェースとは異なるインタフェースを用いて、物理マシンの暗号処理アクセラレータを直接利用する。そのため、仮想マシン間のスケジューリングや排他アクセス制御を実施する機構が必要となる。一方、本実施の形態によれば、仮想スイッチ41のオフロード処理ブロック415が、物理マシン1のアクセラレータ17を利用する。従って、仮想マシン間のスケジューリングや排他アクセス制御は不要となる。
【0027】
尚、本実施の形態に係る計算機システム2は、物理マシン1が仮想化プログラム(仮想化ソフトウェア)を実行することによって実現される。仮想化プログラムは、物理マシン1(コンピュータ)により実行されるコンピュータプログラムであり、物理マシン1上に本実施の形態に係る計算機システム2を構築する。尚、仮想化プログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
【0028】
図7は、物理マシン1(コンピュータ)のハードウェア構成の一例を概略的に示すブロック図である。物理マシン1は、CPU11、メモリ12、I/Oコントローラ13、ディスク装置14、ネットワークインタフェース15、及びアクセラレータ17を備えている。ディスク装置14、ネットワークインタフェース15、及びアクセラレータ17は、I/Oコントローラ13に接続されている。ディスク装置14は、ネットワークインタフェース15を介して接続されたネットワーク上のディスク装置であってもよい。上述の仮想化プログラムは、メモリ12やディスク装置14に格納され、CPU11によって実行される。そのため、仮想マシン3及び管理ブロック4のそれぞれは、メモリ12やディス装置14上に記憶領域を備える。
【0029】
以下、本発明の様々な実施の形態を詳細に説明する。
【0030】
1.第1の実施の形態
第1の実施の形態では、上述の特定機能処理が「暗号処理」である場合を説明する。ここで、暗号処理とは、暗号化処理と復号化処理の双方を含むものとする。暗号処理に必要な処理情報INFは、以下「暗号処理情報INF」と呼ばれる。暗号処理情報INFは、鍵情報等、暗号処理プロトコルに従った情報を含む。例えばSSLの場合、暗号処理情報INFは、公開鍵や秘密鍵などを含む。
【0031】
1−1.構成
図8は、第1の実施の形態に係る計算機システム2の構成を示すブロック図である。計算機システム2は、物理マシン1、仮想マシン3、及び管理ソフトウェア4(管理ブロック)を備えている。
【0032】
物理マシン1は、暗号処理を高速に実行可能な暗号処理アクセラレータ16を備えている。この暗号処理アクセラレータ16は、
図6におけるアクセラレータ17に相当する。
【0033】
仮想マシン3は、通信アプリケーション31、通信処理モジュール32、暗号処理モジュール33、及び1つ以上の仮想ネットワークインタフェース36を備えている。
【0034】
通信アプリケーション31は、何らかの通信処理を含むアプリケーションである。通信処理を実行する際、通信アプリケーション31は、API(Application Program Interface)やライブラリを通じて、通信処理モジュール32に対して通信処理を依頼する。
【0035】
通信処理モジュール32は、1つ以上の通信処理ブロック(
図8の例では、321及び322)を備えている。通信処理ブロックは、例えば、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、IP(Internet Protocol)などのプロトコルを処理する。通信モジュール32は、暗号処理依頼や対象データを暗号処理モジュール33に送信する。尚、通信処理モジュール32と暗号処理モジュール33は、同一のプロセスであってもよいし、異なるプロセスであってもよい。
【0036】
暗号処理モジュール33は、
図6における特定機能処理モジュール34に相当する。暗号処理モジュール33は、バイパス判定ブロック331、暗号処理ブロック332、及び情報伝達ブロック333を備えている。
【0037】
バイパス判定ブロック331は、通信処理モジュール32から依頼される暗号処理を暗号処理モジュール33内で実行するか、管理ソフトウェア4にオフロードするかを判定する。より詳細には、バイパス判定ブロック331は、オフロード可否情報を記憶領域中に保持している。オフロード可否情報は、通信アプリケーションのセッション情報と、当該通信を管理ソフトウェア4にオフロードするか否かとを関連付けている。バイパス判定ブロック331は、オフロード可否情報を参照することにより、暗号処理を管理ソフトウェア4にオフロードするか否かを判定する。
【0038】
暗号処理を暗号処理モジュール33内で実行する場合、バイパス判定ブロック331は、通信識別子、暗号処理情報INF、及び対象データを、暗号処理ブロック332に送信する。通信識別子としては、パケットヘッダに含まれるフィールド(送信元IPアドレス、送信先IPアドレス、送信元MACアドレス、送信先MACアドレス等)のうち任意の組み合わせが挙げられる。一方、暗号処理を管理ソフトウェア4にオフロードする場合、バイパス判定ブロック331は、通信識別子及び暗号処理情報INFを情報伝達ブロック333に渡し、また、対象データをそのまま通信処理モジュール32に返す。
【0039】
暗号処理ブロック332は、暗号処理を実行する。より詳細には、暗号処理ブロック332は、バイパス判定ブロック331から受け取った通信識別子及び暗号処理情報INFを記憶領域に格納する。そして、暗号処理ブロック332は、バイパス判定ブロック331からの依頼に応答して、受け取った対象データに対し、該当する暗号処理情報INFを用いることにより暗号処理を実行する。暗号処理の結果得られたデータは、通信処理モジュール32に送信される。
【0040】
情報伝達ブロック333は、バイパス判定ブロック331から受け取る情報を管理ソフトウェア4に転送する。また、情報伝達ブロック333は、管理ソフトウェア4から受け取る情報をバイパス判定ブロック331に転送する。
【0041】
通信処理モジュール32で処理された通信データは、パケットに加工され、仮想ネットワークインタフェース36を通じて、仮想スイッチ41に送信される。暗号処理がオフロードされる場合、仮想マシン3から仮想スイッチ41へ送信されるパケットのデータ部は、平文のままである。暗号処理プロトコルによっては、データサイズが変わる可能性がある。そこで、通信データを通信処理モジュール32でパケットに加工する際には、パケットのデータ部に暗号処理プロトコルが使用する領域をあらかじめ確保しておく。
【0042】
管理ソフトウェア4は、仮想スイッチ41、情報伝達ブロック42、物理マシン情報管理ブロック43、及びオフローディング判定ブロック44を備えている。
【0043】
仮想スイッチ41は、各仮想マシン3の仮想ネットワークインタフェース36と、物理マシン1の物理ネットワークインタフェース15との間の接続を管理する。仮想ネットワークインタフェース36と仮想スイッチ41は、仮想スイッチポート414を介して接続される。また、物理ネットワークインタフェース15と仮想スイッチ41は、仮想スイッチポート414を介して接続される。仮想スイッチ41は、パケット処理ブロック411及びオフロード処理ブロック412を備えている。
【0044】
パケット処理ブロック411は、パケット転送機能を有する。つまり、パケット処理ブロック411は、仮想スイッチポート414から受け取るパケットの転送先を決定し、当該パケットを当該転送先に転送する。更に、パケット処理ブロック411は、パケットフィルタリング機能も有し、パケットの任意の領域の情報に基いてフィルタリングを実行する。フィルタリングのルールは、仮想マシン3から情報伝達ブロック42経由で伝達される。
【0045】
また、パケット処理ブロック411は、受け取ったパケットに対して暗号処理が必要か否かを判定する。より詳細には、パケット処理ブロック411は、暗号処理要否情報を記憶領域中に保持している。暗号処理要否情報は、通信識別子と、当該通信識別子にマッチするパケットに対して暗号処理を行うか否かとを関連付けている。暗号処理要否情報は、暗号処理を依頼した仮想マシン3から情報伝達ブロック42経由で伝達される。パケット処理ブロック411は、暗号処理要否情報を参照することにより、受け取ったパケットに対して暗号処理が必要か否かを判定する。暗号処理が必要である場合、パケット処理ブロック411は、オフロード処理ブロック412にパケットを渡し、暗号処理を依頼する。
【0046】
オフロード処理ブロック412は、
図6におけるオフロード処理ブロック415に相当しており、オフロードが許可された対象通信に対して暗号処理を行う。より詳細には、オフロード処理ブロック412は、オフロード処理情報を記憶領域中に保持している。オフロード処理情報は、通信識別子と、当該通信に関する暗号処理情報INFとを関連付けている。オフロード処理情報は、暗号処理を依頼した仮想マシン3から情報伝達ブロック42経由で伝達される。オフロード処理ブロック412は、オフロード処理情報を参照することにより、受け取ったパケットに対して暗号処理を実行する。尚、オフロード処理ブロック412は、暗号処理を自身で行ってもよいし、物理マシン1の暗号処理アクセラレータ16を利用して暗号処理を行ってもよい。暗号処理アクセラレータ16を利用する場合、オフロード処理ブロック412は、暗号処理情報INF及び対象パケットを暗号処理アクセラレータ16に渡す。
【0047】
情報伝達ブロック42は、仮想マシン3との間で情報のやり取りを行う。
【0048】
物理マシン情報管理ブロック43は、物理マシン1に関する情報を保持する。保持情報としては、例えば、暗号処理アクセラレータ16が備える暗号処理機能に関する情報が挙げられる。尚、一般に、管理ソフトウェア4は、物理マシン1のCPU、メモリ容量、ディスク容量、I/O機能などの情報を取得しており、そのような情報をそのまま利用してもよい。
【0049】
オフローディング判定ブロック44は、仮想マシン3から依頼された暗号処理を、管理ソフトウェア4側で実行するか否かを判定する。すなわち、オフローディング判定ブロック44は、仮想マシン3から管理ソフトウェア4への暗号処理のオフロードを許可するか否かを判定する。その判定基準としては、例えば、暗号処理アクセラレータ16の機能で依頼された暗号処理プロトコルを処理することができるかどうか、ということが挙げられる。そのような物理マシン1に関する情報は、物理マシン情報管理ブロック43から取得することができる。他の判定基準としては、オフロード依頼を出した仮想マシン3あるいは該仮想マシン3を利用するユーザが、暗号処理アクセラレータ16を利用する権限を有するかどうか、が挙げられる。また、現在、暗号処理対象となっている通信セッション数なども、判定基準として用いることができる。
【0050】
1−2.処理フロー
次に、本実施の形態に係る計算機システム2による処理フローを説明する。
【0051】
1−2−1.オフロード依頼処理、オフロード準備処理
図9は、暗号通信を開始する際の、オフロード依頼処理を示すシーケンス図である。
【0052】
ステップS100:
まず、依頼元の仮想マシン3の暗号処理モジュール33が、管理ソフトウェア4に対して、対象通信に関する暗号処理のオフロード依頼を送信する。このとき、暗号処理モジュール33は、どのような通信について、どのような暗号処理プロトコルをオフローディングしたいのかを、管理ソフトウェア4に通知する。暗号処理プロトコルの例として、SSLやIPsec(Security Architecture for Internet Protocol)が挙げられる。
【0053】
ステップS110:
管理ソフトウェア4は、情報伝達ブロック42を通してオフロード依頼を受け取る。そのオフロード依頼に応答して、オフローディング判定ブロック44は、対象通信に関する暗号処理のオフロードを許可するか否かの判定を行う。その判定基準は上述の通りである。そして、管理ソフトウェア4は、その判定結果を示す判定結果情報を、依頼元の仮想マシン3に送信する。
【0054】
ステップS120:
依頼元の仮想マシン3は、管理ソフトウェア4から判定結果情報を情報伝達ブロック333経由で受け取る。バイパス判定ブロック331は、その判定結果情報を上述のオフロード可否情報として記憶領域に格納する。
【0055】
図10は、オフロードが許可された場合のオフロード準備処理を示すシーケンス図である。
【0056】
ステップS140:
依頼元の仮想マシン3の暗号処理モジュール33は、対象通信に関する通信識別子及び暗号処理情報INFを、情報伝達ブロック333を通して管理ソフトウェア4に通知する。例えば、暗号処理プロトコルがSSLの場合、暗号処理情報INFは、送信データを暗号化するためのサーバ鍵と、受信データを復号化するためのクライアント鍵を含む。
【0057】
ステップS150:
管理ソフトウェア4の仮想スイッチ41は、情報伝達ブロック42を通して、通信識別子及び暗号処理情報INFを受け取る。仮想スイッチ41は、受け取った情報を、上述の暗号処理要否情報及びオフロード処理情報として記憶領域に格納する。
【0058】
ステップS160:
ステップS150が完了すると、管理ソフトウェア4は、準備完了通知を、情報伝達ブロック42経由で依頼元の仮想マシン3に送信する。
【0059】
図9及び
図10で示された処理は、様々なタイミングで実行され得る。そのタイミングとしては、仮想マシン3の起動時、通信アプリケーション31の起動時、通信アプリケーション31が新たな通信を開始した時、暗号処理対象の通信に属するデータが流れ始めた時、などが考えられる。例えば、特定のアプリケーションではなく通信全般を暗号処理することが可能なIPsecの場合、仮想マシン3の起動時がそのタイミングとして考えられる。また例えば、アプリケーション単位で暗号処理を実行するSSLの場合、通信アプリケーション31の起動時がそのタイミングとして考えられる。
【0060】
図11は、
図9及び
図10における仮想マシン3による処理を示すフローチャートである。尚、
図9及び
図10におけるものと同一の処理には、同一の参照番号が付されている。
【0061】
仮想マシン3の暗号処理モジュール33は、管理ソフトウェア4に対して、オフロード依頼を送信する(ステップS100)。管理ソフトウェア4から判定結果情報の通知があった場合(ステップS115;Yes)、バイパス判定ブロック331は、その判定結果情報をオフロード可否情報として記憶領域に格納する(ステップS120)。
【0062】
尚、判定結果が通知されたかどうかを判断する方法として、(A)仮想マシン3に対して、管理ソフトウェア4から、判定結果を通知したことを示すシグナルを出すこと、(B)仮想マシン3が備える記憶領域の特定の領域に対して、管理ソフトウェア4が、判定結果を通知したことを示すデータを書き込み、仮想マシン3が、該記憶領域をポーリングすること、などが考えられる。このような判定手法は、他の通知判定時にも適用可能である。
【0063】
次に、暗号処理モジュール33は、受け取った判定結果情報を参照し、対象通知に関する暗号処理がオフロード可能か否かを判定する(ステップS130)。オフロード不可の場合(ステップS130;No)、
図11で示される処理フローは終了する。一方、オフロード可能の場合(ステップS130;Yes)、暗号処理モジュール33は、対象通信に関する通信識別子及び暗号処理情報INFを、情報伝達ブロック333を通して管理ソフトウェア4に通知する(ステップS140)。
【0064】
その後、暗号処理モジュール33は、管理ソフトウェア4からの準備完了通知を待つ(ステップS165)。暗号処理モジュール33が準備完了通知を受け取ると(ステップS165;Yes)、
図11で示される処理フローは終了する。
【0065】
図12は、
図9及び
図10における管理ソフトウェア4による処理を示すフローチャートである。尚、
図9及び
図10におけるものと同一の処理には、同一の参照番号が付されている。
【0066】
管理ソフトウェア4は、情報伝達ブロック42を通して、仮想マシン3からオフロード依頼を受け取る(ステップS105;Yes)。そのオフロード依頼に応答して、管理ソフトウェア4は、対象通信に関する暗号処理のオフロードを許可するか否かの判定を行い、判定結果情報を依頼元の仮想マシン3に送信する(ステップS110)。
【0067】
オフロード不可の場合(ステップS135;No)、
図12で示される処理フローは終了する。一方、オフロード可能の場合(ステップS135;Yes)、管理ソフトウェア4は、仮想マシン3からの情報提供を待つ(ステップS145)。仮想マシン3から通信識別子及び暗号処理情報INFを受け取ると(ステップS145;Yes)、管理ソフトウェア4は、受け取った情報を記憶領域に格納する(ステップS150)。その後、管理ソフトウェア4は、準備完了通知を、依頼元の仮想マシン3に送信する(ステップS160)。
【0068】
1−2−2.パケット送信処理
図13は、仮想マシン3によるパケット送信処理を示すフローチャートである。まず、仮想マシン3上で稼動する通信アプリケーション31が、通信用APIやライブラリなどを用いて、通信処理モジュール32を呼び出し、通信を開始する(ステップS200)。当該通信データは、暗号化の対象であるとする。その通信データは、暗号処理のため、通信処理モジュール32経由で、暗号処理モジュール33のバイパス判定ブロック331に転送される。
【0069】
次に、バイパス判定ブロック331は、記憶領域に格納されているオフロード可否情報を参照することにより、当該通信データに関する暗号処理を管理ソフトウェア4にオフロードするか否かを判定する(ステップS220)。オフロード可能の場合(ステップS220;Yes)、バイパス判定ブロック331は、受け取った通信データを平文のまま通信処理モジュール32に返す。そして、通信処理モジュール32は、当該通信データをパケット化し、そのパケットを仮想ネットワークインタフェース36を通して仮想スイッチ41に送信する(ステップS230)。
【0070】
一方、オフロード不可の場合(ステップS220;No)、バイパス判定ブロック331は、当該通信データを暗号処理ブロック332にわたす。そして、暗号処理ブロック332が、当該通信データに対して暗号処理を実行する(ステップS225)。暗号処理ブロック332は、暗号化データを、通信処理モジュール32に送信する。通信処理モジュール32は、受け取ったデータをパケット化し、そのパケットを仮想ネットワークインタフェース36を通して仮想スイッチ41に送信する(ステップS235)。
【0071】
図14は、管理ソフトウェア4によるパケット送信処理を示すフローチャートである。まず、仮想スイッチ41のパケット処理ブロック411は、仮想スイッチポート414を通して仮想マシン3からパケットを受け取る。パケット処理ブロック411は、受け取ったパケットのヘッダに含まれる通信識別情報を抽出する。そして、パケット処理ブロック411は、記憶領域に格納されている暗号処理要否情報を参照し、受け取ったパケットの暗号化を行うか否かを判定する(ステップS240)。
【0072】
あるいは、ステップS240は、次のようにして行うこともできる。通信処理モジュール32がパケットを生成する際に、パケット中の特定の領域に、暗号処理を実行することを示すデータを書き込む。パケット処理ブロック411は、その領域の内容に応じて、暗号化を実行するかどうか判定する。パケット中の特定の領域としては、例えば、パケットヘッダの未使用の領域や、パケットのデータ部の先頭数バイトの領域などが考えられる。どの領域を使用するかは、通信アプリケーション31に依存する。そのため、
図10のステップS140の際に、その特定の領域を指定する情報もあわせて通知する。
【0073】
暗号化が行われる場合(ステップS240;Yes)、パケット処理ブロック411は、オフロード処理ブロック412にパケットを渡し、暗号化を依頼する。オフロード処理ブロック412は、記憶領域に格納されている対象通信に関する暗号処理情報INFを参照することにより、受け取ったパケットに対して暗号化を実行する(ステップS250)。尚、暗号化は、暗号処理アクセラレータ16を利用して実施されてもよいし、オフロード処理ブロック412自身により実施されてもよい。暗号化されたパケットは、パケット処理ブロック411に送られる。
【0074】
暗号化が行われない場合(ステップS240;No)、ステップS250はスキップされる。
【0075】
その後、パケット処理ブロック411は、適切な仮想スイッチポート414経由で、パケットを宛先に送信する(ステップS260)。
【0076】
1−2−3.パケット受信処理
図15は、管理ソフトウェア4による外部からのパケット受信処理を示すフローチャートである。まず、パケット処理ブロック411は、記憶領域に格納されている暗号処理要否情報を参照し、受け取った暗号化パケットの復号化を行うか否かを判定する(ステップS300)。
【0077】
復号化が行われる場合(ステップS300;Yes)、パケット処理ブロック411は、オフロード処理ブロック412にパケットを渡し、復号化を依頼する。オフロード処理ブロック412は、記憶領域に格納されている対象通信に関する暗号処理情報INFを参照することにより、受け取ったパケットに対して復号化を実行する(ステップS310)。尚、復号化は、暗号処理アクセラレータ16を利用して実施されてもよいし、オフロード処理ブロック412自身により実施されてもよい。復号化されたパケットは、パケット処理ブロック411に送られる。
【0078】
復号化が行われない場合(ステップS300;No)、ステップS310はスキップされる。
【0079】
その後、パケット処理ブロック411は、パケットに対してフィルタリング処理を実施する。暗号処理がオフロードされている場合、すなわち、仮想スイッチ4において復号化が実施された場合、当該パケットのパケットデータに応じた効率的なフィルタリングが可能である。その後、パケット処理ブロック411は、仮想スイッチポート414経由で、適切な仮想マシン3にパケットを転送する(ステップS320)。
【0080】
図16は、仮想マシン3によるパケット受信処理を示すフローチャートである。まず、仮想マシン3は、仮想スイッチ4から仮想ネットワークインタフェース36を通してパケットを受け取る。バイパス判定ブロック331は、記憶領域に格納されているオフロード可否情報を参照することにより、当該パケットの復号化を行うか否か判定する(ステップS330)。
【0081】
当該パケットに関する暗号処理がオフロードされていない場合、仮想マシン3において復号化が行われる(ステップS330;Yes)。この場合、バイパス判定ブロック331は、パケットを暗号処理ブロック332にわたす。そして、暗号処理ブロック332が、当該パケットの復号化を行う(ステップS340)。暗号処理ブロック332は、復号化データを、通信処理モジュール32に送信する。
【0082】
当該パケットに関する暗号処理がオフロードされている場合、仮想マシン3において復号化を行う必要はない(ステップS330;No)。この場合、ステップS340はスキップされる。
【0083】
その後、通信処理モジュール32は、パケットを、通信アプリケーション31で使用するデータに加工し、通信アプリケーション31にわたす(ステップS350)。
【0084】
1−2−4.無効化処理
図17は、暗号処理対象の通信が終了した場合の無効化処理の一例を示すシーケンス図である。尚、“通信が終了した”とは、例えばTCPを利用した通信であれば、FINパケットの送受信が完了した場合などを意味する。
【0085】
本例では、仮想マシン3が、暗号処理対象の通信が終了したことを検知し、明示的に無効化処理を開始する。まず、暗号処理モジュール33は、記憶領域に格納されている当該通信の暗号処理に関わる情報(オフロード可否情報や暗号処理情報INF)を無効化する(ステップS400)。更に、暗号処理モジュール33は、管理ソフトウェア4に、情報伝達ブロック333を通して、当該通信の暗号処理に関わる情報の無効化依頼を送信する(ステップS410)。
【0086】
管理ソフトウェア4の仮想スイッチ41は、情報伝達ブロック42を通して、無効化依頼を受け取る。その無効化依頼に応答して、仮想スイッチ41は、記憶領域に格納されている当該通信の暗号処理に関わる情報(暗号処理要否情報や暗号処理情報INF)を無効化する(ステップS420)。その後、管理ソフトウェア4は、受け取った無効化依頼に対する無効化処理が完了したことを、情報伝達ブロック42を通じて仮想マシン3に通知する(ステップS430)。
【0087】
図18は、
図17における仮想マシン3による処理を示すフローチャートである。尚、
図17におけるものと同一の処理には、同一の参照番号が付されている。
【0088】
まず、暗号処理モジュール33は、記憶領域に格納されている当該通信の暗号処理に関わる情報(オフロード可否情報や暗号処理情報INF)を無効化する(ステップS400)。更に、暗号処理モジュール33は、管理ソフトウェア4に、当該通信の暗号処理に関わる情報の無効化依頼を送信する(ステップS410)。その後、仮想マシン3は、管理ソフトウェア4からの無効化完了通知を待つ(ステップS435)。暗号処理モジュール33が無効化完了通知を受け取ると(ステップS435;Yes)、
図18で示される処理フローは終了する。
【0089】
図19は、
図17における管理ソフトウェア4による処理を示すフローチャートである。尚、
図17におけるものと同一の処理には、同一の参照番号が付されている。
【0090】
管理ソフトウェア4は、仮想マシン3から無効化依頼を受け取る(ステップS415;Yes)。その無効化依頼に応答して、仮想スイッチ41は、記憶領域に格納されている当該通信の暗号処理に関わる情報(暗号処理要否情報や暗号処理情報INF)を無効化する(ステップS420)。その後、管理ソフトウェア4は、無効化完了通知を、仮想マシン3に送信する(ステップS430)。
【0091】
無効化処理の他の例を説明する。本例では、暗号処理対象の通信のパケットが一定期間流れなかった場合、管理ソフトウェア4側が無効化処理を開始する。
図20は、管理ソフトウェア4による処理を示すフローチャートであり、
図21は、仮想マシン3による処理を示すフローチャートである。
【0092】
まず、管理ソフトウェア4は、暗号処理対象の通信のうち、一定期間パケットが送受信されていないものが存在するかどうかを判定する(ステップS450)。そのような通信が存在しない場合(ステップS450;No)、
図20で示される処理フローは終了する。一方、そのような通信が存在する場合(ステップS450;Yes)、仮想スイッチ41は、記憶領域に格納されている当該通信の暗号処理に関わる情報(暗号処理要否情報や暗号処理情報INF)を無効化する(ステップS460)。その後、管理ソフトウェア4は、当該通信に関する無効化通知を、情報伝達ブロック42を通して仮想マシン3に送信する(ステップS470)。尚、
図20で示される処理は、所定間隔毎に繰り返し実行される。
【0093】
仮想マシン3は、情報伝達ブロック333を通して管理ソフトウェア4から無効化通知を受け取る(ステップS475;Yes)。その無効化通知に応答して、暗号処理モジュール33は、当該対象通信に関するオフロード可否情報を無効化する。例えば、暗号処理モジュール33は、当該対象通信に関するオフローディング設定が管理ソフトウェア4になされていないことを、記憶領域に記録する(ステップS480)。当該通信のデータが再び流れ始めた場合は、
図9及び
図10で示された設定処理が再度実施され、暗号処理が再開される。
【0094】
1−3.効果
以上に説明されたように、本実施の形態によれば、管理ソフトウェア4が暗号処理を実行可能に構成される。従って、仮想マシン3による暗号処理を、必要に応じて、管理ソフトウェア4にオフロードすることが可能となる。その結果、
図4で示されたようなオーバーヘッドの増大が防止される。すなわち、本実施の形態によれば、計算機システム2の処理効率が向上する。
【0095】
また、管理ソフトウェア4の仮想スイッチ41において暗号処理が可能となるため、パケットのデータ部が暗号化された通信に関しても、当該データ部に応じた効率的なフィルタリング処理が可能となる。
【0096】
更に、本実施の形態によれば、管理ソフトウェア4の仮想スイッチ41が、物理マシン1の暗号処理アクセラレータ16を利用する。従って、仮想マシン3間のスケジューリングや排他アクセス制御は不要となる。
【0097】
2.第2の実施の形態
管理ソフトウェア4のパケット処理ブロック411やオフロード処理ブロック412に割り当てられる記憶領域は有限であるため、確保できるエントリ数には限りがある。従って、パケット処理ブロック411やオフロード処理ブロック412は、割り当てられた記憶領域を、CPUのキャッシュメモリのように利用することが望ましい。本発明の第2の実施の形態では、そのような場合が説明される。尚、第1の実施の形態と重複する説明は適宜省略される。また、暗号処理に関する情報は暗号処理単位に扱うことができ、エントリは暗号処理単位毎に確保されるとする。
【0098】
図22は、本実施の形態に係る暗号処理を示すフローチャートである。管理ソフトウェア4の仮想スイッチ41は、パケットを受け取る。すると、パケット処理ブロック411は、割り当てられた記憶領域を参照する(ステップS500)。
【0099】
図23は、ステップS500の処理を示すフローチャートである。まず、パケット処理ブロック411は、受け取ったパケットにマッチするヒットエントリが存在するかどうか判定する(ステップS5000)。ここで、ヒットエントリとは、受け取ったパケットに関する暗号処理要否情報を示すエントリである。ヒットエントリが存在する場合(ステップS5000;Yes)、
図23で示された処理フローは終了する。一方、ヒットエントリが存在しない場合(ステップS5000;No)、パケット処理ブロック411は、当該パケットのヘッダ情報に基づき、送信元の仮想マシン3に処理内容を問い合わせる(ステップS5010)。仮想マシン3から当該パケットに関する処理内容が通知されると(ステップS5020;Yes)、パケット処理ブロック411は、割り当てられている記憶領域に空きがあるかどうか判定する(ステップS5030)。空きが有る場合(ステップS5030;Yes)、パケット処理ブロック411は、仮想マシン3から受け取った情報をヒットエントリとして記憶領域に格納する(ステップS5040)。一方、空きが無い場合(ステップS5030;No)、パケット処理ブロック411は、エントリの入れ替えを行う(ステップS5045)。エントリ入れ替えについては、CPUで一般的に用いられるキャッシュメモリにおけるエントリ入れ替え制御と同様であるため、詳細な説明を省略する。
【0100】
再度
図22を参照して、パケット処理ブロック411は、上記ヒットエントリ(暗号処理要否情報)を参照して、受け取ったパケットに対して暗号処理を行うか否かを判定する(ステップS510)。暗号処理が行われない場合(ステップS510;No)、処理は、後述のステップS540に進む。一方、暗号処理が行われる場合(ステップS510;Yes)、パケット処理ブロック411は、オフロード処理ブロック412にパケットを渡し、暗号処理を依頼する。オフロード処理ブロック412は、割り当てられた記憶領域を参照する(ステップS520)。
【0101】
図24は、ステップS520の処理を示すフローチャートである。まず、オフロード処理ブロック412は、受け取ったパケットにマッチするヒットエントリが存在するかどうか判定する(ステップS5200)。ここで、ヒットエントリとは、受け取ったパケットに関するオフロード処理情報(暗号処理情報INF)を示すエントリである。ヒットエントリが存在する場合(ステップS5200;Yes)、
図24で示された処理フローは終了する。一方、ヒットエントリが存在しない場合(ステップS5200;No)、オフロード処理ブロック412は、当該パケットのヘッダ情報に基づき、送信元の仮想マシン3に処理内容を問い合わせる(ステップS5210)。仮想マシン3から当該パケットに関する処理内容が通知されると(ステップS5220;Yes)、オフロード処理ブロック412は、割り当てられている記憶領域に空きがあるかどうか判定する(ステップS5230)。空きが有る場合(ステップS5230;Yes)、オフロード処理ブロック412は、仮想マシン3から受け取った情報をヒットエントリとして記憶領域に格納する(ステップS5240)。一方、空きが無い場合(ステップS5230;No)、オフロード処理ブロック412は、エントリの入れ替えを行う(ステップS5245)。エントリ入れ替えについては、CPUで一般的に用いられるキャッシュメモリにおけるエントリ入れ替え制御と同様であるため、詳細な説明を省略する。
【0102】
再度
図22を参照して、オフロード処理ブロック412は、上記ヒットエントリ(オフロード処理情報、暗号処理情報INF)を参照して、受け取ったパケットに対して暗号処理を実行する(ステップS530)。尚、暗号処理は、暗号処理アクセラレータ16を利用して実施されてもよいし、オフロード処理ブロック412自身により実施されてもよい。処理後のパケットは、パケット処理ブロック411に送られる。
【0103】
パケット処理ブロック411は、適切な仮想スイッチポート414経由で、パケットを宛先に送信する(ステップS540)。
【0104】
図25は、仮想マシン3による処理を示すフローチャートである。仮想マシン3の暗号処理モジュール33は、管理ソフトウェア4から問い合わせがあった場合、バイパス判定ブロック331の記憶領域を参照し、問い合わせ内容に応じた情報を管理ソフトウェア4に送信する(ステップS550)。
【0105】
尚、本実施の形態において、エントリ入れ替えによって記憶領域からエントリが追い出されてしまう場合、その追い出されたエントリを、管理ソフトウェア4がアクセス可能なディスク装置等の別の記憶装置に書き出しておいてもよい。必要に応じて当該エントリを読み出すことによって、管理ソフトウェア4が仮想マシン3に問い合わせる必要がないようにすることもできる。
【0106】
本実施の形態によれば、第1の実施の形態と同じ効果が得られる。更に、割り当てられた記憶領域をキャッシュメモリのように用いることにより、最大エントリ数以上の通信に対してもオフロード処理を実行することが可能となる。
【0107】
3.第3の実施の形態
図26は、第3の実施の形態に係る計算機システム2の構成を示すブロック図である。第1の実施の形態と重複する説明は、適宜省略される。本実施の形態によれば、暗号処理をオフロードするか否かが、ポリシーに基いて決定される。そのため、仮想マシン3は、更に、ポリシー管理ブロック334を備えている。また、管理ソフトウェア4は、更に、ポリシー管理ブロック45を備えている。
【0108】
ポリシー管理ブロック334は、各仮想マシン3において、バイパス判定ブロック331から参照可能に設けられる。ポリシー管理ブロック334は、どの通信やどの暗号処理プロトコルを管理ソフトウェア4にオフロードするか、といったポリシーを管理する。ポリシー情報の形式の例としては、暗号処理プロトコル毎に、暗号処理をどこで実行するかを関連付けて示すものが考えられる。あるいは、通信識別情報(通信プロトコル,IPアドレス等)が、暗号処理をどこで実行するかと関連付けられてもよい。ポリシー管理ブロック334は、仮想マシン3のユーザあるいは管理者に対して、ポリシー設定のためのインタフェースを提供する。仮想マシン3のユーザあるいは管理者は、該インタフェースを利用してポリシーを設定することができる。インタフェースの例として、Webブラウザ等のGUI(Graphical User Interface)を提供するソフトウェアを利用することが考えられる。
【0109】
図27は、仮想マシン3による処理を示すフローチャートである。まず、バイパス判定ブロック331は、暗号処理対象の通信に関する情報を元に、ポリシー管理ブロック334が管理するポリシーを参照する(ステップS700)。暗号処理を管理ソフトウェア4で実行する場合、すなわち、オフロードが行われる場合(ステップS710;Yes)、上述のステップS100〜S165が実行される(ステップS720)。一方、暗号処理を仮想マシン3で実行する場合、すなわち、オフロードが行われない場合(ステップS710;No)、バイパス判定ブロック331は、暗号処理ブロック332に暗号処理情報INF等をわたし、暗号処理を依頼する(ステップS725)。
【0110】
ポリシー管理ブロック45は、管理ソフトウェア4において、オフローディング判定ブロック44から参照可能に設けられる。ポリシー管理ブロック45は、暗号処理のオフロードを許可するか否か、許可する場合には暗号処理アクセラレータ16を使用するかどうか、といったポリシーを管理する。ポリシー情報の例としては、管理ソフトウェア4側で処理可能な暗号処理プロトコルのリスト、仮想マシン3ごとにオフローディング可能な通信セッション数、仮想マシン3を利用するユーザの権限といった情報が考えられる。ポリシー管理ブロック45は、管理ソフトウェア4の運用者など適切な権限を持つユーザに対して、ポリシー設定のためのインタフェースを提供する。権限を持つユーザは、該インタフェースを利用してポリシーを設定することができる。インタフェースの例として、Webブラウザ等のGUIを提供するソフトウェアを利用することが考えられる。
【0111】
図28は、管理ソフトウェア4による処理を示すフローチャートである。まず、オフローディング判定ブロック44は、仮想マシン3から受け取ったオフロード依頼で指定される暗号処理に関して、暗号処理プロトコルや仮想マシン3に関する情報などを元に、ポリシー管理ブロック45が管理するポリシーを参照する(ステップS800)。そして、オフローディング判定ブロック44は、対象通信に関する暗号処理のオフロードを許可するか否かの判定を行い、判定結果情報を依頼元の仮想マシン3に送信する(ステップS810)。
【0112】
本実施の形態によれば、既出の実施の形態と同じ効果が得られる。更に、ポリシーに従った暗号処理の配置が可能となるため、暗号処理の配置を柔軟に行うことができる。
【0113】
4.第4の実施の形態
本発明は、暗号処理のオフロードに限られず、仮想マシン3の特定機能処理のオフロードに適用可能である。
図29は、より一般化された計算機システム2の構成を示している。既出の実施の形態と重複する説明は、適宜省略される。
【0114】
仮想マシン3の特定機能処理モジュール34は、既出の実施の形態における暗号処理モジュール33と同様である。特定機能処理モジュール34は、バイパス判定ブロック335、特定機能処理ブロック336、情報伝達ブロック337を備えている。バイパス判定ブロック335は、既出の実施の形態におけるバイパス判定ブロック331と同様である。特定機能処理ブロック336は、既出の実施の形態における暗号処理ブロック332と同様であり、特定機能処理を実行する。情報伝達ブロック337は、既出の実施の形態における情報伝達ブロック333と同様である。
【0115】
管理ソフトウェア4の仮想スイッチ41は、パケット処理ブロック411及びオフロード処理ブロック415を備えている。オフロード処理ブロック415は、既出の実施の形態におけるオフロード処理ブロック412と同様であり、オフロードが許可された場合に特定機能処理を実行する。
【0116】
物理マシン1のアクセラレータ17は、既出の実施の形態における暗号処理アクセラレータ16と同様であり、特定機能処理を高速に実行することができる。
【0117】
特定機能処理は、暗号処理に限られない。例えば、アンチウィルスシステムやアンチスパムメールシステムなどセキュリティ系のシステムにおける正規表現検索も、特定機能処理の一例である。
【0118】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【0119】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0120】
(付記1)
物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備え、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記仮想スイッチは、前記特定機能処理が前記管理ブロックにオフロードされる場合に前記特定機能処理を行うオフロード処理ブロックを備え、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理モジュールは、前記特定機能処理に必要な処理情報を前記管理ブロックに通知し、前記オフロード処理ブロックは、前記仮想マシンから受け取った前記処理情報に基づいて前記特定機能処理を実行する
計算機システム。
【0121】
(付記2)
付記1に記載の計算機システムであって、
前記物理マシンは、前記特定機能処理のアクセラレータを備え、
前記オフロード処理ブロックは、前記アクセラレータを利用して前記特定機能処理を実行する
計算機システム。
【0122】
(付記3)
付記1又は2に記載の計算機システムであって、
前記特定機能処理モジュールは、第1通信に関するオフロード依頼を前記管理ブロックに送信し、
前記管理ブロックは、前記オフロード依頼に応答して、前記第1通信に関するオフロードを許可するか否かの判定を行い、当該判定結果を示す判定結果情報を前記仮想マシンに通知し、
前記第1通信に関するオフロードが許可された場合、前記特定機能処理モジュールは、前記第1通信に関する前記処理情報を前記管理ブロックに通知し、
前記仮想スイッチは、前記処理情報を受け取ると、前記受け取った処理情報を第1記憶領域に格納し、
前記第1記憶領域への前記処理情報の格納が完了した後、前記管理ブロックは、準備完了通知を前記仮想マシンに送信し、
前記準備完了通知を受け取った後、前記仮想マシンは、前記第1通信のパケットに対して前記特定機能処理を実施することなく、前記第1通信のパケットを前記仮想スイッチに送信し、
前記仮想スイッチは、前記仮想マシンから前記第1通信のパケットを受け取り、
前記オフロード処理ブロックは、前記第1記憶領域に格納されている前記第1通信に関する前記処理情報に基づいて、前記第1通信のパケットに対して前記特定機能処理を実施する
計算機システム。
【0123】
(付記4)
付記3に記載の計算機システムであって、
前記特定機能処理モジュールは、前記判定結果情報をオフロード可否情報として第2記憶領域に格納し、
前記特定機能処理モジュールは、前記第2記憶領域に格納されている前記オフロード可否情報を参照して、前記第1通信に関するオフロードを行うか否かを判定する
計算機システム。
【0124】
(付記5)
付記4に記載の計算機システムであって、
前記第1通信が終了した場合、前記特定機能処理モジュールは、前記第1通信に関する前記判定結果情報を無効化し、且つ、前記管理ブロックに無効化依頼を送信し、
前記仮想スイッチは、前記無効化依頼に応答して、前記第1記憶領域に格納されている前記第1通信に関する前記処理情報を無効化する
計算機システム。
【0125】
(付記6)
付記4又は5に記載の計算機システムであって、
前記第1通信のパケットが所定期間送受信されなかった場合、前記仮想スイッチは、前記第1記憶領域に格納されている前記第1通信に関する前記処理情報を無効化し、且つ、前記仮想マシンに無効化通知を送信し、
前記特定機能処理モジュールは、前記無効化通知に応答して、前記第1通信に関する前記オフロード可否情報を無効化する
計算機システム。
【0126】
(付記7)
付記1乃至6のいずれか一項に記載の計算機システムであって、
前記特定機能処理は、暗号処理であり、
前記特定機能処理モジュールは、前記暗号処理を行う暗号処理モジュールである
計算機システム。
【0127】
(付記8)
付記7に記載の計算機システムであって、
前記仮想スイッチは、暗号化された暗号化通信を受信し、
前記暗号処理が前記管理ブロックにオフロードされている場合、前記オフロード処理ブロックは、前記処理情報を参照することによって前記暗号化通信のパケットを復号化し、当該パケットデータに応じてフィルタリングを実施する
計算機システム。
【0128】
(付記9)
計算機システムにおけるオフローディング方法であって、
前記計算機システムは、
物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う機能を有し、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記オフローディング方法は、
前記特定機能処理を行うオフロード処理ブロックを前記仮想スイッチに設けるステップと、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理に必要な処理情報を前記管理ブロックに通知するステップと、
前記処理情報に基づき、前記オフロード処理ブロックによって前記特定機能処理を実行するステップと
を含む
オフローディング方法。
【0129】
(付記10)
物理マシンによって実行され、前記物理マシン上に計算機システムを構築するプログラムであって、
前記計算機システムは、
前記物理マシン上で動作する仮想マシンと、
前記物理マシン上で動作し、前記仮想マシンの管理を行う管理ブロックと
を備え、
前記仮想マシンは、送受信するパケットに対して特定機能処理を行う特定機能処理モジュールを備え、
前記管理ブロックは、前記仮想マシンが送受信するパケットを中継する仮想スイッチを備え、
前記仮想スイッチは、前記特定機能処理が前記管理ブロックにオフロードされる場合に前記特定機能処理を行うオフロード処理ブロックを備え、
前記特定機能処理が前記仮想マシンから前記管理ブロックにオフロードされる場合、前記特定機能処理モジュールは、前記特定機能処理に必要な処理情報を前記管理ブロックに通知し、前記オフロード処理ブロックは、前記仮想マシンから受け取った前記処理情報に基づいて前記特定機能処理を実行する
プログラム。
【0130】
本出願は、2010年7月21日に出願された日本国特許出願2010−164242を基礎とする優先権を主張し、その開示の全てをここに取り込む。