(57)【要約】      （修正有）【課題】１台の物理サーバにおいて実行される複数台の仮想マシンの間における通信を高速化する。【解決手段】第１のコンピュータ１が実行する第１の仮想マシン１１０が、第１のコンピュータ１が実行する第２の仮想マシン１２０が転送先であるパケットを、第１の仮想マシン１１０と第２の仮想マシン１２０とが共用するメモリ領域１０４に格納し、第２の仮想マシン１２０が、第１の仮想マシン１１０と第２の仮想マシン１２０とが共用するメモリ領域１０４から、第２の仮想マシン１２０が転送先であるパケットを取り出す処理を含む。【選択図】図３
2015170887.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュータが実行する第１の仮想マシンが、前記第１のコンピュータが実行する第２の仮想マシンが転送先であるパケットを、前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域に格納し、
前記第２の仮想マシンが、前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域から、前記第２の仮想マシンが転送先であるパケットを取り出す
処理を含むパケット処理方法。
【請求項２】
前記第１の仮想マシンが、前記第１のコンピュータとは異なる第２のコンピュータが実行する第３の仮想マシンが転送先であるパケットを、前記第１のコンピュータの物理インタフェースへの出力を制御する制御部に出力する
処理をさらに含む請求項１記載のパケット処理方法。
【請求項３】
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域は、
前記第１のコンピュータが実行する仮想マシン毎に、当該仮想マシンが転送先であるパケットを格納する領域を含み、
前記第１の仮想マシンが、
前記第２の仮想マシンが転送先であるパケットを、前記第２の仮想マシンが転送先であるパケットを格納する領域に格納し、
前記第２の仮想マシンが、
前記第２の仮想マシンが転送先であるパケットを格納する領域から、前記第２の仮想マシンが転送先であるパケットを取り出す
請求項１又は２記載のパケット処理方法。
【請求項４】
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域には、前記第２の仮想マシンが転送先であるパケットを格納する領域のアドレスがさらに格納されており、
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域に格納する処理において、前記第１の仮想マシンが、前記第２の仮想マシンが転送先であるパケットを格納する領域のアドレスが示す領域に、前記第２の仮想マシンが転送先であるパケットを格納する
請求項３記載のパケット処理方法。
【請求項５】
第１の仮想マシン及び第２の仮想マシンを実行する第１のコンピュータと、
第３の仮想マシンを実行する第２のコンピュータと、
を有し、
前記第１の仮想マシンが、
前記第２の仮想マシンが転送先であるパケットを、前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域に格納し、
前記第３の仮想マシンが転送先であるパケットを、前記第１のコンピュータの物理インタフェースへの出力を制御する通信処理部に出力し、
前記第２の仮想マシンが、
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域から、前記第２の仮想マシンが転送先であるパケットを取り出す
パケット処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン間における通信の制御技術に関する。
【背景技術】
【０００２】
ＮＦＶ（Network Functions Virtualization）とは、サーバ仮想化（server virtualization）によって、通信機器の機能を物理サーバ上で動作するソフトウェアとして実装する技術である。ＮＦＶを利用すれば、専用の通信機器を汎用の物理サーバに置き換えることができるので、コストの低減等を図ることができる。
【０００３】
ＮＦＶは、例えば、ＳＢＣ（Session Border Controller）という通信機器に対して適用されている。ＳＢＣとは、例えば図１に示すように、ＩＰ（Internet Protocol）電話サービス網において網と網との間に設置されるゲートウェイ装置である。ＳＢＣを設置することによって、網間における差分を吸収及び隠蔽し、また、セキュリティを確保することができる。
【０００４】
ＮＦＶで利用される物理サーバにおいては、１台以上の仮想マシンが実行される。物理サーバ上の仮想マシンは、同じ物理サーバ上の他の仮想マシンとの間において通信を行うが、通信機器としての性能を向上させるためには、仮想マシン間における通信を高速化することが好ましい。但し、同じ物理サーバにおいて実行される複数台の仮想マシンの間における通信を高速化することに着目した従来技術は存在しない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−３７４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、本発明の目的は、１つの側面では、１台の物理サーバにおいて実行される複数台の仮想マシンの間における通信を高速化するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明に係るパケット処理方法は、第１のコンピュータが実行する第１の仮想マシンが、第１のコンピュータが実行する第２の仮想マシンが転送先であるパケットを、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域に格納し、第２の仮想マシンが、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域から、第２の仮想マシンが転送先であるパケットを取り出す処理を含む。
【発明の効果】
【０００８】
１つの側面では、１台の物理サーバにおいて実行される複数台の仮想マシンの間における通信を高速化できるようになる。
【図面の簡単な説明】
【０００９】
【図１】図１は、ＳＢＣについて説明するための図である。
【図２】図２は、本実施の形態のシステム概要を示す図である。
【図３】図３は、物理サーバの機能ブロック図である。
【図４】図４は、判定テーブルの一例を示す図である。
【図５】図５は、構造体の一例を示す図である。
【図６】図６は、受信用キューの構造の一例を示す図である。
【図７】図７は、初期化処理の処理フローを示す図である。
【図８】図８は、共用メモリ管理部が管理するデータの一例を示す図である。
【図９】図９は、判定部が実行する処理について説明する。
【図１０】図１０は、他の物理サーバにおけるＶＭとの間の通信について説明するための図である。
【図１１】図１１は、共用メモリ管理部が実行する処理の処理フローを示す図である。
【図１２】図１２は、共用メモリ管理部が実行する処理の処理フローを示す図である。
【図１３】図１３は、通信の高速化について説明するための図である。
【図１４】図１４は、通信の高速化について説明するための図である。
【図１５】図１５は、判定テーブルとアドレステーブルとを一体にしたテーブルの一例を示す図である。
【図１６】図１６は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
図２に、本実施の形態のシステム概要を示す。例えばＩＰネットワークであるネットワーク３には、物理サーバ１及び２が接続される。物理サーバ１及び２は、ネットワーク３を介して通信を行う。
【００１１】
図３に、物理サーバ１の機能ブロック図を示す。物理サーバ１は、物理ＮＩＣ（Network Interface Card）１００を含む。また、物理サーバ１においてはホストＯＳ（Operating System）１０１が実行される。ホストＯＳ１０１が管理するアドレス空間は、カーネル空間とユーザ空間とを含む。ホストＯＳ１０１のカーネル空間において、パケットの転送を行うブリッジ部１０２が実行される。ホストＯＳ１０１のユーザ空間において、仮想化ソフトウェアであるハイパバイザ１０３と、ＶＭ（Virtual Machine）１１０と、ＶＭ１２０とが実行される。共用メモリ領域１０４は、ＶＭ１１０及び１２０が共用するメモリ領域であり、ハイパバイザ１０３により提供される。
【００１２】
ＶＭ１１０は、仮想ＮＩＣ１１１を含む。また、ＶＭ１１０においてはゲストＯＳ１１２が実行される。ゲストＯＳ１１２は、仮想ＮＩＣ１１１を制御するＮＩＣドライバ１１３と、判定部１１５、共用メモリ管理部１１６及びデータ格納部１１７を含むパケット処理部１１４とを含む。パケット処理部１１４は、例えば、パケットの処理を行うライブラリである。
【００１３】
判定部１１５は、データ格納部１１７に格納されたデータを用いて、パケットの転送先が物理サーバ１内のＶＭであるか判定する処理等を行う。共用メモリ管理部１１６は、共用メモリ領域１０４における受信用キューにエンキューする処理及び受信用キューからデキューする処理等を行う。
【００１４】
ＶＭ１２０は、仮想ＮＩＣ１２１を含む。また、ＶＭ１２０においてはゲストＯＳ１２２が実行される。ゲストＯＳ１２２は、仮想ＮＩＣ１２１を制御するＮＩＣドライバ１２３と、判定部１２５、共用メモリ管理部１２６及びデータ格納部１２７を含むパケット処理部１２４とを含む。パケット処理部１２４は、例えば、パケットの処理を行うライブラリである。
【００１５】
判定部１２５は、データ格納部１２７に格納されたデータを用いて、パケットの転送先が物理サーバ１内のＶＭであるか判定する処理等を行う。共用メモリ管理部１２６は、共用メモリ領域１０４における受信用キューにエンキューする処理及び受信用キューからデキューする処理等を行う。
【００１６】
なお、物理サーバ２の機能ブロック図は物理サーバ１の機能ブロック図と同様であるので、説明を省略する。
【００１７】
図４に、データ格納部１１７及び１２７に格納される判定テーブルの一例を示す。図４の例では、ＶＭ名と、ＶＭのＩＰアドレスとが格納される。判定テーブルにＩＰアドレスが登録されているＶＭは、物理サーバ１内で実行されているＶＭである。
【００１８】
共用メモリ領域１０４には、物理サーバ１内で実行されている各ＶＭについて受信用キューが設けられる。共用メモリ領域１０４における受信用キューへのアクセスには、図５に示すような構造体が利用される。図５に示した構造体には、読み込みの位置を表す読み込みインデックスと、書き込みの位置を表す書き込みインデックスと、受信用キューに格納されたパケットの個数を表す情報と、受信用キューのサイズを表す情報とが含まれる。受信用キューへのエンキューの際には、書き込みインデックスが利用される。受信用キューからのデキューの際には、読み込みインデックスが利用される。構造体は各受信用キューについて用意され、共用メモリ領域１０４に格納される。
【００１９】
図６に、共用メモリ領域１０４における受信用キューの構造の一例を示す。図６の例においては、パケットが格納されている領域に色が付されている。構造体に含まれる読み込みインデックスは、パケットが格納された領域のうち先頭のパケットが格納された領域を示す。構造体に含まれる書き込みインデックスは、パケットが格納されていない領域のうち先頭の領域を示す。図６の例の場合、ｎｕｍ＝３であり、ｓｉｚｅ＝５である。
【００２０】
次に、図７乃至図１２を用いて、物理サーバ１が実行する処理について説明する。はじめに、図７及び８を用いて、ＶＭの初期化処理について説明する。なお、ＶＭ１１０及び１２０に対しては同一の初期化処理を行うので、ここではＶＭ１１０についての初期化処理を例として説明する。
【００２１】
まず、物理サーバ１のホストＯＳ１０１は、ＶＭ１１０を起動する（図７：ステップＳ１）。なお、ステップＳ１において、ホストＯＳ１０１は、共用メモリ領域１０４を用いたＶＭ間通信を行うことをＶＭ１１０に要求する。これに応じ、ＶＭ１１０は、ゲストＯＳ１１２のパケット処理部１１４を起動し（ステップＳ３）、パケット処理部１１４における共用メモリ管理部１１６を初期化（例えばパラメータを初期化）する（ステップＳ５）。
【００２２】
共用メモリ管理部１１６は、共用メモリ領域１０４に、ＶＭ１１０の受信用キューの確保を開始する（ステップＳ７）。
【００２３】
共用メモリ管理部１１６は、共用メモリ領域１０４にＶＭ１１０の受信用キューを確保できたか判断する（ステップＳ９）。確保できない（例えばエラーが発生した）場合（ステップＳ９：Ｎｏルート）、共用メモリ領域１０４を用いたＶＭ間通信を行うことができないので、処理を終了する。
【００２４】
一方、確保できた場合（ステップＳ９：Ｙｅｓルート）、共用メモリ管理部１１６は、共用メモリ領域１０４に、ＶＭ１１０用の受信用キューを確保できたことを表す確保フラグを立てる（ステップＳ１１）。そして、共用メモリ管理部１１６は、ＶＭ１１０の受信用キューのアドレスを、共用メモリ領域１０４における所定の領域に格納する（ステップＳ１３）。
【００２５】
共用メモリ管理部１１６は、物理サーバ１内で実行されている他ＶＭ（本実施の形態においては、ＶＭ１２０）の確保フラグが共用メモリ領域１０４に立っているか判断する（ステップＳ１５）。他ＶＭの確保フラグが共用メモリ領域１０４に立っていない場合（ステップＳ１５：Ｎｏルート）、他ＶＭとの間では共用メモリ領域１０４を用いたＶＭ間通信を行うことができないので、処理を終了する。
【００２６】
一方、他ＶＭの確保フラグが共用メモリ領域１０４に立っている場合（ステップＳ１５：Ｙｅｓルート）、共用メモリ管理部１１６は、他ＶＭの受信用キューのアドレスを、共用メモリ領域１０４おける所定の領域から読み出し、データ格納部１１７に格納されているアドレステーブルに登録する（ステップＳ１７）。そして処理を終了する。
【００２７】
図８に、アドレステーブルに格納されるデータの一例を示す。図８の例では、ＶＭ名と、受信用キューのアドレスとが登録されている。共用メモリ管理部１１６は、アドレステーブルを用いて、共用メモリ領域１０４を用いたＶＭ間通信を他ＶＭとの間で行う。詳細については後述する。
【００２８】
以上のような処理を実行すれば、共用メモリ領域１０４に受信用キューがマッピングされるので、共用メモリ領域１０４を用いたＶＭ間通信を開始できるようになる。また、上ではＶＭ１１０についての初期化処理を例にして説明したが、ＶＭ１２０についても同様である。なお、ステップＳ１５及びＳ１７の処理は、物理サーバ１内で実行されている他ＶＭの数が複数である場合、複数の他ＶＭの各々について実行される。
【００２９】
なお、ＶＭ（ここでは、ＶＭａとする）が起動した後、新たに他ＶＭが起動する場合がある。このような場合にも共用メモリ領域１０４を用いたＶＭ間通信を行えるようにするため、ＶＭａは以下のような処理を実行する。具体的には、ＶＭａは、例えば定期的に、ステップＳ１５及びＳ１７の処理を実行することで、新たに起動した他ＶＭの受信用キューのアドレスを、アドレステーブルに登録する。又は、ＶＭａは、新たに他ＶＭが起動したことを検出した場合に、ステップＳ１５及びＳ１７の処理を実行することで、新たに起動した他ＶＭの受信用キューのアドレスを、アドレステーブルに登録する。
【００３０】
次に、図９及び図１０を用いて、判定部１１５が実行する処理について説明する。なお、ここでは判定部１１５を例として説明するが、判定部１２５が実行する処理も判定部１１５が実行する処理と同様である。
【００３１】
まず、判定部１１５は、パケット処理部１１４から、転送すべきパケットを受け取る（図９：ステップＳ２１）。そして、判定部１１５は、パケットの転送先のＩＰアドレスは、判定テーブルに登録されたＩＰアドレスであるか否か判定する（ステップＳ２３）。すなわち、判定部１１５は、同じ物理サーバで実行されているＶＭが転送先であるパケットであるか否か判定する。
【００３２】
パケットの転送先のＩＰアドレスが判定テーブルに登録されたＩＰアドレスではない場合（ステップＳ２３：Ｎｏルート）、転送先のＶＭは、同じ物理サーバ内のＶＭではない。そこで、判定部１１５は、ステップＳ２１において受け取ったパケットを、ＮＩＣドライバ１１３に出力する（ステップＳ２７）。
【００３３】
ＮＩＣドライバ１１３に出力されたパケットは、図１０に示すような経路で転送される。具体的には、ＮＩＣドライバ１１３は、判定部１１５から受け取ったパケットを、仮想ＮＩＣ１１１を介してブリッジ部１０２に出力する。ブリッジ部１０２は、受け取ったパケットの転送先のアドレス等に基づき決定された物理ＮＩＣ１００に、そのパケットを出力する。そして、パケットは、転送先のＶＭが実行されている物理サーバまで転送される。
【００３４】
一方、パケットの転送先のＩＰアドレスが判定テーブルに登録されたＩＰアドレスである場合（ステップＳ２３：Ｙｅｓルート）、転送先のＶＭは、同じ物理サーバ内のＶＭである。そこで、判定部１１５は、共用メモリ領域１０４において、転送先のＶＭの確保フラグが立っているか判定する（ステップＳ２５）。
【００３５】
転送先のＶＭの確保フラグが立っていない場合（ステップＳ２５：Ｎｏルート）、転送先のＶＭについて受信用キューは確保されていないので、共用メモリ領域１０４を用いたパケットの転送を行うことができない。そこで、判定部１１５は、ステップＳ２１において受け取ったパケットを、ＮＩＣドライバ１１３に出力する（ステップＳ２７）。
【００３６】
一方、転送先のＶＭの確保フラグが立っている場合（ステップＳ２５：Ｙｅｓルート）、共用メモリ領域１０４を用いたＶＭ間通信を行うことができる。そこで、判定部１１５は、ステップＳ２１において受け取ったパケットと、判定テーブルにおいて転送先のＩＰアドレスに対応付けて登録されているＶＭ名とを、共用メモリ管理部１１６に出力する（ステップＳ２９）。そして処理を終了する。
【００３７】
以上のような処理を実行すれば、共用メモリ領域１０４を用いて転送すべきパケットとそれ以外のパケットとを分けることができるようになる。
【００３８】
次に、図１１を用いて、転送すべきパケットを判定部１１５から受け取った共用メモリ管理部１１６が実行する処理について説明する。なお、ここでは共用メモリ管理部１１６を例として説明するが、共用メモリ管理部１２６が実行する処理も共用メモリ管理部１１６が実行する処理と同様である。
【００３９】
まず、共用メモリ管理部１１６は、転送すべきパケットと転送先のＶＭのＶＭ名とを判定部１１５から受け取る（図１１：ステップＳ３１）。
【００４０】
共用メモリ管理部１１６は、ステップＳ３１において受け取ったＶＭ名に対応する受信用キューのアドレスを、アドレステーブルを用いて特定する。そして、共用メモリ管理部１１６は、特定された受信用キューのアドレスが示す受信用キューに、ステップＳ３１において受け取ったパケットを格納する（ステップＳ３３）。そして処理を終了する。
【００４１】
次に、図１２を用いて、共用メモリ管理部１２６が受信用キューからパケットを取り出す処理について説明する。なお、ここでは共用メモリ管理部１２６を例として説明するが、共用メモリ管理部１１６が実行する処理も共用メモリ管理部１２６が実行する処理と同様である。
【００４２】
まず、共用メモリ管理部１２６は、例えば定期的に、ＶＭ１２０の受信用キューにパケットが有るか判断する（図１２：ステップＳ４１）。
【００４３】
ＶＭ１２０の受信用キューにパケットが無い場合（ステップＳ４１：Ｎｏルート）、ステップＳ４１の処理に戻る。一方、ＶＭ１２０の受信用キューにパケットが有る場合（ステップＳ４１：Ｙｅｓルート）、共用メモリ管理部１２６は、ＶＭ１２０の受信用キューの先頭からパケットを取り出し、転送先であるパケット処理部１２４に出力する（ステップＳ４３）。そしてステップＳ４１の処理に戻る。
【００４４】
以上のような処理を実行すれば、同じ物理サーバ内で実行される複数のＶＭの間における通信を、共用メモリ領域１０４を用いて高速に行うことができるようになる。
【００４５】
図１３に示すように、本実施の形態においては、同じ物理サーバ内で実行される複数のＶＭの間におけるパケットの転送は、ホストＯＳ１０１のユーザ空間内で完了する。よって、ホストＯＳ１０１のユーザ空間におけるゲストＯＳから共用メモリ領域１０４へのコピー、及びホストＯＳのユーザ空間における共用メモリ領域１０４からゲストＯＳへのコピーを行えば、パケットの転送が完了する。
【００４６】
一方、本実施の形態の方法を用いない場合には、図１４に示すようになる。具体的には、ゲストＯＳのユーザ空間からゲストＯＳのカーネル空間へのコピー、ゲストＯＳのカーネル空間からホストＯＳのカーネル空間へのコピー、ホストＯＳのカーネル空間からゲストＯＳのカーネル空間へのコピー、及びゲストＯＳのカーネル空間からゲストＯＳのユーザ空間へのコピーが行われる。よって、本実施の形態の方法と比べてコピーの回数が多いため、パケットの転送に要する時間が長くなり、また消費されるリソースが多くなる。また、本実施の形態の方法は、仮想スイッチ等を用いて物理サーバ内でＶＭ間通信を行う方法と比較して、消費されるリソースの量を少なくすることができるようになる。
【００４７】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した物理サーバ１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００４８】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００４９】
なお、上では判定テーブルとアドレステーブルとを別々に設けているが、例えば図１５に示すように、判定テーブルとアドレステーブルとを一体にしたテーブルを設けてもよい。
【００５０】
なお、上で述べた物理サーバ１及び２は、コンピュータ装置であって、図１６に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００５１】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００５２】
本実施の形態に係るパケット処理方法は、（Ａ）第１のコンピュータが実行する第１の仮想マシンが、第１のコンピュータが実行する第２の仮想マシンが転送先であるパケットを、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域に格納し、（Ｂ）第２の仮想マシンが、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域から、第２の仮想マシンが転送先であるパケットを取り出す処理を含む。
【００５３】
このようにすれば、ホストＯＳのカーネル空間にパケットをコピーする処理は不要であるので、コピーする処理によるオーバーヘッドを削減し、仮想マシン間でのパケットの転送を高速化できるようになる。また、仮想スイッチ等を経由する方法と比べて、消費するリソースを少なくすることができる。
【００５４】
また、本パケット処理方法は、（Ｃ）第１の仮想マシンが、第１のコンピュータとは異なる第２のコンピュータが実行する第３の仮想マシンが転送先であるパケットを、第１のコンピュータの物理インタフェースへの出力を制御する制御部に出力する処理をさらに含んでもよい。このようにすれば、同一のコンピュータ上で実行されていない仮想マシンに対しては通常どおりパケットを転送することができるようになる。
【００５５】
また、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域は、第１のコンピュータが実行する仮想マシン毎に、当該仮想マシンが転送先であるパケットを格納する領域を含んでもよい。そして、上で述べた第１の仮想マシンが、第２の仮想マシンが転送先であるパケットを、第２の仮想マシンが転送先であるパケットを格納する領域に格納し、上で述べた第２の仮想マシンが、第２の仮想マシンが転送先であるパケットを格納する領域から、第２の仮想マシンが転送先であるパケットを取り出してもよい。このようにすれば、第２の仮想マシンから第１の仮想マシンにパケットを転送する場合及びメモリ領域を共用する仮想マシンが３台以上である場合にも対処できるようになる。
【００５６】
また、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域には、第２の仮想マシンが転送先であるパケットを格納する領域のアドレスがさらに格納されていてもよい。そして、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域に格納する処理において、（ａ１）第１の仮想マシンが、第２の仮想マシンが転送先であるパケットを格納する領域のアドレスが示す領域に、第２の仮想マシンが転送先であるパケットを格納してもよい。このようにすれば、パケットを適切な領域に格納できるようになる。
【００５７】
また、第１の仮想マシンと第２の仮想マシンとが共用するメモリ領域は、第１のコンピュータにおける仮想化ソフトウェアにより実現されてもよい。
【００５８】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００５９】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００６０】
（付記１）
第１のコンピュータが実行する第１の仮想マシンが、前記第１のコンピュータが実行する第２の仮想マシンが転送先であるパケットを、前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域に格納し、
前記第２の仮想マシンが、前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域から、前記第２の仮想マシンが転送先であるパケットを取り出す
処理を含むパケット処理方法。
【００６１】
（付記２）
前記第１の仮想マシンが、前記第１のコンピュータとは異なる第２のコンピュータが実行する第３の仮想マシンが転送先であるパケットを、前記第１のコンピュータの物理インタフェースへの出力を制御する制御部に出力する
処理をさらに含む付記１記載のパケット処理方法。
【００６２】
（付記３）
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域は、
前記第１のコンピュータが実行する仮想マシン毎に、当該仮想マシンが転送先であるパケットを格納する領域を含み、
前記第１の仮想マシンが、
前記第２の仮想マシンが転送先であるパケットを、前記第２の仮想マシンが転送先であるパケットを格納する領域に格納し、
前記第２の仮想マシンが、
前記第２の仮想マシンが転送先であるパケットを格納する領域から、前記第２の仮想マシンが転送先であるパケットを取り出す
付記１又は２記載のパケット処理方法。
【００６３】
（付記４）
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域には、前記第２の仮想マシンが転送先であるパケットを格納する領域のアドレスがさらに格納されており、
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域に格納する処理において、前記第１の仮想マシンが、前記第２の仮想マシンが転送先であるパケットを格納する領域のアドレスが示す領域に、前記第２の仮想マシンが転送先であるパケットを格納する
付記３記載のパケット処理方法。
【００６４】
（付記５）
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域は、前記第１のコンピュータにおける仮想化ソフトウェアにより実現される
付記１乃至３のいずれか１つ記載のパケット処理方法。
【００６５】
（付記６）
第１の仮想マシンと、
第２の仮想マシンと、
を実行し、
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域
を有し、
前記第１の仮想マシンが、
前記第２の仮想マシンが転送先であるパケットを、前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域に格納し、
前記第２の仮想マシンが、
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域から、前記第２の仮想マシンが転送先であるパケットを取り出す
情報処理装置。
【００６６】
（付記７）
第１の仮想マシン及び第２の仮想マシンを実行する第１のコンピュータと、
第３の仮想マシンを実行する第２のコンピュータと、
を有し、
前記第１の仮想マシンが、
前記第２の仮想マシンが転送先であるパケットを、前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域に格納し、
前記第３の仮想マシンが転送先であるパケットを、前記第１のコンピュータの物理インタフェースへの出力を制御する通信処理部に出力し、
前記第２の仮想マシンが、
前記第１の仮想マシンと前記第２の仮想マシンとが共用するメモリ領域から、前記第２の仮想マシンが転送先であるパケットを取り出す
パケット処理システム。
【符号の説明】
【００６７】
１，２  物理サーバ    １００  物理ＮＩＣ
１０１  ホストＯＳ    １０２  ブリッジ部
１０３  ハイパバイザ    １０４  共用メモリ領域
１１０，１２０  ＶＭ    １１１，１２１  仮想ＮＩＣ
１１２，１２２  ゲストＯＳ    １１３，１２３  ＮＩＣドライバ
１１４，１２４  パケット処理部    １１５，１２５  判定部
１１６，１２６  共用メモリ管理部    １１７，１２７  データ格納部
３  ネットワーク
【図１】
2015170887.tif 000003
【図２】
2015170887.tif 000004
【図３】
2015170887.tif 000005
【図４】
2015170887.tif 000006
【図５】
2015170887.tif 000007
【図６】
2015170887.tif 000008
【図７】
2015170887.tif 000009
【図８】
2015170887.tif 000010
【図９】
2015170887.tif 000011
【図１０】
2015170887.tif 000012
【図１１】
2015170887.tif 000013
【図１２】
2015170887.tif 000014
【図１３】
2015170887.tif 000015
【図１４】
2015170887.tif 000016
【図１５】
2015170887.tif 000017
【図１６】
2015170887.tif 000018