(57)【特許請求の範囲】
【請求項１】
外部にアドレス要求を送信し、前記アドレス要求の応答として受信した送信先アドレスに対し通信データを送信する機能を有する複数の仮想マシンと、
前記仮想マシンと他の仮想マシンとの間の第１の通信データをロギングする通信ロギング部と
を備え、
前記通信ロギング部は、前記仮想マシンからアドレス要求を受けると、自己のアドレスを送信先アドレスとして前記仮想マシンに送信し、前記仮想マシンから送信された通信データをロギングする
ことを特徴とする情報処理装置。
【請求項２】
前記仮想マシンは、
アドレスを取得するための前記他の仮想マシンからのアドレス要求に対して前記仮想マシンのアドレスである第１のアドレスを送信するか否かの第１の設定を行う第１の設定部と、
前記第１の設定が無効設定である場合に前記アドレス要求を受信しても前記第１のアドレスを送信せず、前記第１の設定が有効設定である場合に前記アドレス要求を受信すると前記第１のアドレスを送信する第１の応答部と、
を有し、
前記通信ロギング部は、
前記アドレス要求に対して前記通信ロギング部のアドレスである第２のアドレスを送信するか否かの第２の設定を行う第２の設定部と、
前記第２の設定が無効設定である場合に前記アドレス要求を受信しても前記第２のアドレスを送信せず、前記第２の設定が有効設定である場合に前記アドレス要求を受信すると前記第２のアドレスを送信する第２の応答部と、
を有し、
前記第２の設定部は、前記第１の設定が無効設定される場合に、前記第２の設定を有効設定にして、前記第２の応答部が前記アドレス要求の要求元である前記他の仮想マシンに前記第２のアドレスを送信する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記通信ロギング部は、前記第１の設定を前記第１の設定部に指示する切替指示部をさらに有する、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第２の設定部は、前記第１の設定部が前記第１の設定を無効設定にした際に、当該無効設定を検知し、前記第２の設定を有効設定にする、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記他の仮想マシンをさらに備え、
前記他の仮想マシンは、前記第２のアドレスを受信すると、前記第２のアドレスを宛先に設定して前記第１の通信データを送信し、
前記通信ロギング部は、前記第１の通信データに対応する第２の通信データを前記仮想マシンに送信する、
ことを特徴とする請求項２から４のいずれか１つに記載の情報処理装置。
【請求項６】
前記通信ロギング部は、
前記第１の通信データに含まれる通信パケットがユーザからの指定条件に合致するか否かを解析するパケット解析部をさらに有し、
前記通信パケットが前記指定条件に合致する場合に、前記第１の通信データにデータ処理を実行する、
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記通信ロギング部は、
前記通信パケットが前記指定条件に合致する場合に、前記第１の通信データの通信ログを生成するログ生成部と、
前記通信ログを記憶するログ記憶部と、
をさらに有する、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記通信ロギング部は、
前記通信パケットが前記指定条件に合致する場合に、前記第１の通信データの通信パケットを記憶するパケット記憶部をさらに有し、
前記第２の通信データを再送信するタイミングである送信再現タイミングになると、前記パケット記憶部で記憶されている前記通信パケットを加工して前記第２の通信データを生成し、生成した前記第２の通信データを前記仮想マシンに送信するパケット加工部をさらに有する、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記通信パケットが前記指定条件に合致し、且つ前記通信パケットが置換の条件である置換条件に合致する場合に、前記第１の通信データを前記ユーザから指定されたデータに置換して前記第２の通信データを生成し、生成した前記第２の通信データを前記仮想マシンに送信するパケット加工部をさらに有する、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項１０】
前記通信パケットが前記指定条件に合致し、且つ前記通信パケットが、通信処理を変更する条件である送信変更条件に合致する場合に、前記第２の通信データの送信停止、送信再開または送信スキップを行うパケット加工部をさらに有する、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項１１】
仮想マシン以外の他の仮想マシンが、前記仮想マシンと通信データをロギングする通信ロギング部と、にアドレスを取得するためのアドレス要求を送信する第１の送信ステップと、
前記通信ロギング部が、前記通信ロギング部のアドレスを含んだアドレス応答を前記他の仮想マシンに送信する第２の送信ステップと、
前記他の仮想マシンが、前記通信ロギング部の前記アドレスに第１の通信データを送信する第３の送信ステップと、
前記通信ロギング部が、前記第１の通信データに対応する第２の通信データを前記仮想マシンに送信する第４の送信ステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロギングを行う情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
現在、物理的なコンピュータの中に、コンピュータのハードウェア構成をソフトウェアで仮想化していわゆる仮想マシンを複数実現し、これらの仮想マシンを、物理的なコンピュータを動作するＯＳ（Operating  System）と独立したＯＳで並列して実行する技術として、ハイパーバイザが開発されている。このハイパーバイザは、コンピュータのハードウェアのように振舞う仮想マシンを作り出し、仮想マシン上で種々のＯＳを動作させる。【０００３】
ハイパーバイザを用いた装置として、特許文献１の通信装置がある。特許文献１の通信装置は、仮想マシン間の通信データをキャプチャするキャプチャ処理部を、ハイパーバイザ上に有している。そして、キャプチャ処理部が、第１の仮想マシンから第２の仮想マシンへ転送される通信データを取得して記憶部に保存することで、通信データのロギングを行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１２８０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の技術である特許文献１の通信装置は、第１の仮想マシンと第２の仮想マシンとの間の通信経路を介して転送される通信データをキャプチャする為、キャプチャするには専用のハードウェアを必要としていた。また、特許文献１の通信装置は、キャプチャ装置のメモリ領域が仮想マシンによって抽象化されている為、仮想マシンがメモリ領域にアクセスするための仕組みが複雑になるとの問題があった。【０００６】
本発明は、上記に鑑みてなされたものであって、簡易な構成で仮想マシン間の通信データをロギングすることができる情報処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明の情報処理装置は、外部にアドレス要求を送信し、アドレス要求の応答として受信した送信先アドレスに対し通信データを送信する機能を有する複数の仮想マシンと、仮想マシンと他の仮想マシンとの間の第１の通信データをロギングする通信ロギング部とを備え、通信ロギング部は、仮想マシンからアドレス要求を受けると、自己のアドレスを送信先アドレスとして仮想マシンに送信し、仮想マシンから送信された通信データをロギングすることを特徴とする。
【発明の効果】
【０００８】
本発明にかかる情報処理装置は、簡易な構成で仮想マシン間の通信内容をロギングすることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１にかかる情報処理装置の構成を示すブロック図
【図２】実施の形態１にかかるデータ送受信処理の処理手順を示すシーケンス図
【図３】実施の形態１にかかる固定ＡＲＰ（Address  Resolution  Protocol：アープ）テーブルの構成を示す図
【図４】実施の形態１にかかるパケット送信処理の処理手順を示すシーケンス図
【図５】実施の形態１にかかる通信デバッガの動作処理手順を示すフローチャート
【図６】実施の形態１にかかる通信デバッガのハードウェア構成を示す図
【図７】実施の形態２にかかる通信デバッガの機能構成を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる情報処理装置および情報処理方法を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、本発明の実施の形態１にかかる情報処理装置の構成を示すブロック図である。実施の形態１の情報処理装置１は、産業用コンピュータ（ＩＰＣ：Industrial  Personal  Computer）に適用されるコンピュータである。情報処理装置１は、図示しない複数のコントローラに接続可能なよう構成されている。情報処理装置１は、複数のコントローラに種々の情報を送信するとともに、複数のコントローラから種々の情報を受信する。情報処理装置１に接続されるコントローラは、ロボット等の被制御機器を制御するＰＬＣ（Programmable  Logic  Controller：プログラマブルロジックコントローラ）である。
【００１２】
情報処理装置１は、図１に示すように外部装置であるホスト２に接続されており、ホスト２が受け取ったユーザからの指示を受信するようになされている。情報処理装置１は、ホスト２から送られてくる情報に従って種々の処理を実行する。ユーザが情報処理装置１への設定を実行する場合には、ホスト２に情報処理装置１への指示を入力する。これにより、ホスト２が情報処理装置１にユーザからの指示データを送信する。
【００１３】
情報処理装置１は、既存のＩＰ（Internet  Protocol：インターネットプロトコル）が実装されている。情報処理装置１は、仮想化された基盤である仮想基盤１０と、仮想基盤１０を制御するルートＯＳ２０とを備えている。仮想基盤１０は、ルートＯＳ２０から独立して動作する仮想マシン１０Ａ，１０Ｂを搭載している。
【００１４】
実施の形態１の情報処理装置１は、仮想マシン１０Ａ，１０Ｂ間で行われる通信データの送受信を、後述する通信デバッガ３０Ｘを介して送受信する。そして、通信デバッガ３０Ｘは、通信ロギング部として通信データを捕まえる処理であるロギングを実行し、所定の条件を満たした場合に、ロギングした通信データに対して、例えば通信パケットの解析処理を実行する。すなわち、通信デバッガ３０Ｘは、仮想マシン１０Ａ，１０Ｂ間の通信データをロギングするロギング部の機能と、デバッグ処理する通信デバッグ部の機能とを有している。なお、情報処理装置１は、通信データをロギングする必要が無い場合、通信デバッガ３０Ｘを介することなく仮想マシン１０Ａ，１０Ｂ間で直接通信データの送受信を実行することも可能である。
【００１５】
また、実施の形態１では、通信デバッガ３０Ｘが、条件を満たした場合に通信データに対して実行する処理を通信デバッグと呼び、通信デバッグとして、例えば、通信パケットの解析、通信パケットの置換、通信パケットの通信制御、通信パケットの保存、通信ログの保存、通信データの再送信または通信パケットの加工がある。
【００１６】
そして、仮想マシン１０Ａ，１０Ｂは、ハイパーバイザ４０上で動作する。仮想マシン１０Ａは、仮想マシン１０Ａ上で動作するＯＳであるゲストＯＳ１１Ａを備えている。また、仮想マシン１０Ａは、ルートＯＳ２０との間の通信を行なう際に用いられる仮想ネットワークカード１２Ａを備えている。また、仮想マシン１０Ａは、アドレスの要求に対してアドレスを回答する応答部１５１Ａと、応答部１５１Ａにアドレスを送信させるか否かの設定を行う設定部１５２Ａとを有している。
【００１７】
設定部１５２Ａは、アドレスを取得するための仮想マシン１０Ｂからのアドレス要求であるＡＲＰ（Address  Resolution  Protocol）要求に対して仮想マシン１０Ａのアドレスを送信するか否かの設定である応答設定を行う。応答部１５１Ａは、設定部１５２Ａによる応答設定が無効設定である場合にＡＲＰ要求を受信しても仮想マシン１０Ａのアドレスを送信せず、設定部１５２Ａによる応答設定が有効設定である場合にＡＲＰ要求を受信すると仮想マシン１０Ａのアドレスを送信する。このように、設定部１５２Ａが、ＡＲＰ要求に対する応答設定を無効設定にすることにより、応答部１５１Ａは、ＡＲＰ要求に対してアドレスの回答を制限する。応答部１５１Ａは、ユーザが入力した指示に応じた指示データに従って有効設定と無効設定との切替えを実行する。
【００１８】
ゲストＯＳ１１Ａは、ゲストＯＳ１１Ａ上で種々のデータ診断等の処理を実行するアプリケーション１３０Ａと、仮想ネットワークカード１２Ａを動作させるドライバ１４０Ａとを備えている。アプリケーション１３０Ａは、ユーザが要求する情報処理を直接実行するソフトウェアプログラムによって実現される機能部である。ドライバ１４０Ａは、仮想ネットワークカード１２Ａを動作させるためのソフトウェアプログラムによって実現される機能部である。
【００１９】
仮想ネットワークカード１２Ａは、アプリケーション１３０Ａの生成したデータが、ドライバ１４０Ａから送信されてくると、アプリケーション１３０Ａの生成したデータをルートＯＳ２０に送信する。また、仮想ネットワークカード１２Ａは、ルートＯＳ２０から送信されてくるデータを、ドライバ１４０Ａに送信する。
【００２０】
仮想マシン１０Ｂは、仮想マシン１０Ａと同様の構成を有している。すなわち、仮想マシン１０Ｂは、仮想マシン１０Ｂ上で動作するゲストＯＳ１１Ｂを備えている。そして、ゲストＯＳ１１Ｂは、ゲストＯＳ１１Ａと同様の機能を有している。具体的には、ゲストＯＳ１１Ｂは、アプリケーション１３０Ａと同様の機能を有したアプリケーション１３０Ｂと、ドライバ１４０Ａと同様の機能を有したドライバ１４０Ｂとを備えている。
【００２１】
また、仮想マシン１０Ｂは、仮想ネットワークカード１２Ａと同様の機能を有した仮想ネットワークカード１２Ｂを備えている。また、仮想マシン１０Ｂは、応答部１５１Ａと同様の機能を有した応答部１５１Ｂと、設定部１５２Ａと同様の機能を有した設定部１５２Ｂとを有している。
【００２２】
情報処理装置１では、仮想マシン１０Ａが仮想マシン１０Ｂに送信するデータは、ルートＯＳ２０を介して仮想マシン１０Ｂに送信される。また、情報処理装置１では、仮想マシン１０Ｂが仮想マシン１０Ａに送信するデータは、ルートＯＳ２０を介して仮想マシン１０Ａに送信される。
【００２３】
仮想マシン１０Ａ，１０ＢとルートＯＳ２０との間で送受信されるデータは、ＡＲＰ要求、ＡＲＰ応答または通信データである。ＡＲＰ要求は、アドレス要求の一例であり、アドレス要求は、送信したデータに対応するアドレスを取得するための要求である。ＡＲＰ要求は、ＩＰアドレスを指定してＭＡＣアドレスを取得するための要求である。ＡＲＰ応答は、ＡＲＰ要求を受信した装置が送信する該ＡＲＰ要求に対する応答であり、アドレス要求に対応する送信先アドレスである。
【００２４】
仮想マシン１０Ａが、ＡＲＰ要求をブロードキャスト送信すると、このＡＲＰ要求は、ルートＯＳ２０および仮想マシン１０Ｂに送られる。また、仮想マシン１０ＢがＡＲＰ要求をブロードキャスト送信すると、このＡＲＰ要求は、ルートＯＳ２０および仮想マシン１０Ａに送られる。
【００２５】
また、ルートＯＳ２０は、仮想マシン１０ＡからＡＲＰ要求を受信すると、ＡＲＰ応答を仮想マシン１０Ａに送信し、仮想マシン１０ＢからＡＲＰ要求を受信すると、ＡＲＰ応答を仮想マシン１０Ｂに送信する。
【００２６】
本実施形態では、仮想マシン１０Ａが仮想マシン１０Ｂに送る通信データは、ルートＯＳ２０で情報処理が実行された後にルートＯＳ２０から仮想マシン１０Ｂに送られる。また、仮想マシン１０Ｂが仮想マシン１０Ａに送る通信データは、ルートＯＳ２０で情報処理が実行された後にルートＯＳ２０から仮想マシン１０Ａに送られる。
【００２７】
ルートＯＳ２０から仮想マシン１０Ｂへの通信データは、仮想マシン１０Ａで生成された通信データ、または仮想マシン１０Ａで生成されてルートＯＳ２０で加工された通信データである。同様に、ルートＯＳ２０から仮想マシン１０Ａへの通信データは、仮想マシン１０Ｂで生成された通信データ、または仮想マシン１０Ｂで生成されてルートＯＳ２０で加工された通信データである。仮想マシン１０Ａ，１０ＢとルートＯＳ２０との間で送受信される通信データは、複数の通信パケットから構成されている。
【００２８】
なお、仮想マシン１０ＡからルートＯＳ２０を介して仮想マシン１０Ｂに通信データが送信される処理と、仮想マシン１０ＢからルートＯＳ２０を介して仮想マシン１０Ａに通信データが送信される処理とは、同様の処理なので、以下では、仮想マシン１０ＡからルートＯＳ２０を介して仮想マシン１０Ｂに通信データが送信される場合について説明する。
【００２９】
ルートＯＳ２０は、複数の異なるＯＳであるゲストＯＳ１１Ａ，１１Ｂを並列に実行させるハイパーバイザ４０と、仮想マシン１０Ａ，１０Ｂの通信デバッグを実行する通信デバッガ３０Ｘとを備えている。また、ルートＯＳ２０は、ハイパーバイザ４０と通信デバッガ３０Ｘとの間の通信を行なう際に用いられる仮想ネットワークカード４２と、仮想ネットワークカード４２を動作させるドライバ４３とを備えている。また、ルートＯＳ２０は、通信ログを記憶するログ記憶部５０を備えている。
【００３０】
ハイパーバイザ４０は、ハードウェアのように振舞う仮想マシン１０Ａ，１０Ｂを作り出し、ゲストＯＳ１１Ａ，１１Ｂを稼働させるソフトウェアプログラムである。ハイパーバイザ４０は、ルートＯＳ２０上で起動し、仮想マシン１０Ａ，１０Ｂを管理する。ハイパーバイザ４０は、情報処理装置１内で情報の中継を行なう仮想スイッチングハブ４１を備えている。
【００３１】
仮想スイッチングハブ４１は、仮想ネットワークカード１２Ａ，１２Ｂ，４２に接続されている。仮想スイッチングハブ４１は、仮想マシン１０Ａ，１０Ｂおよび通信デバッガ３０Ｘを含んで構成されるネットワークにおいて送受信される情報の中継を行う。
【００３２】
具体的には、仮想スイッチングハブ４１は、仮想ネットワークカード１２Ａ，１２Ｂから送られてきたデータを、仮想ネットワークカード４２に送信する。また、仮想スイッチングハブ４１は、仮想ネットワークカード４２から送られてきたデータを、仮想ネットワークカード１２Ａ，１２Ｂの何れかに送信する。これにより、ハイパーバイザ４０は、仮想マシン１０Ａ，１０Ｂから送られてきたデータを、仮想ネットワークカード４２を介してルートＯＳ２０に送信する。また、ハイパーバイザ４０は、ルートＯＳ２０から送られてきたデータを、仮想マシン１０Ａ，１０Ｂの何れかに送信する。
【００３３】
また、仮想ネットワークカード４２は、ハイパーバイザ４０から送信されてくるデータをドライバ４３に送信する。また、仮想ネットワークカード４２は、ドライバ４３から送信されてくるデータをハイパーバイザ４０に送信する。ハイパーバイザ４０は、通信デバッガ３０Ｘに、ＡＲＰ応答、ＡＲＰ要求または通信データを送信する。一方、通信デバッガ３０Ｘは、ハイパーバイザ４０にＡＲＰ応答または通信データを送信する。ログ記憶部５０は、通信デバッガ３０Ｘで生成された通信ログを記憶する。ログ記憶部５０は、ホスト２に接続されており、ホスト２は、ログ記憶部５０に記憶された通信ログを読み出し可能である。
【００３４】
通信デバッガ３０Ｘは、仮想マシン１０Ａ，１０Ｂから送信されてくる通信データに基づいて、仮想マシン１０Ａ，１０Ｂ間の通信データをデバッグするソフトウェアプログラムである。なお、通信デバッガ３０Ｘは、ルートＯＳ２０上で動作する。
【００３５】
この通信デバッガ３０Ｘは、通信パケットを解析するパケット解析部３１と、通信ログおよび通信パケットを生成するログ生成部３２と、通信パケットを加工するパケット加工部３３とを備えている。また、通信デバッガ３０Ｘは、通信パケットを解析するか否かの判断に用いる指定条件を記憶する設定記憶部３４と、ログ生成部３２で生成された通信パケットを記憶するパケット記憶部３５と、後述の固定ＡＲＰテーブル３００（図３）を記憶するＡＲＰテーブル記憶部３６とを備えている。なお、固定ＡＲＰテーブル３００は、仮想のＩＰアドレスとＭＡＣアドレスとの対応関係を示すテーブルである。
【００３６】
また、通信デバッガ３０Ｘは、アドレスの要求に対してアドレスを回答する応答部３７１Ｘと、応答部３７１Ｘにアドレスを送信させるか否かの設定を行う設定部３７２Ｘとを有している。
【００３７】
設定部３７２Ｘは、アドレスを取得するための仮想マシン１０Ｂからのアドレス要求であるＡＲＰ要求に対して通信デバッガ３０Ｘのアドレスを送信するか否かの応答設定を行う。応答部３７１Ｘは、設定部３７２Ｘによる応答設定が無効設定である場合にＡＲＰ要求を受信しても通信デバッガ３０Ｘのアドレスを送信せず、設定部３７２Ｘによる応答設定が有効設定である場合にＡＲＰ要求を受信すると通信デバッガ３０Ｘのアドレスを送信する。このように、設定部３７２Ｘが、ＡＲＰ要求に対する応答設定を有効設定にすることにより、応答部３７１Ｘは、アドレスを回答する。設定部３７２Ｘは、ユーザからの指示に従って、有効設定と無効設定の切替えを実行する。
【００３８】
通信デバッガ３０Ｘは、ドライバ４３から送られてくるデータをパケット解析部３１に送信する。具体的には、通信デバッガ３０Ｘは、仮想マシン１０Ａから送られてきた仮想マシン１０Ｂ宛ての通信データをパケット解析部３１へ送る。また、通信デバッガ３０Ｘは、仮想マシン１０Ｂから送られてきた仮想マシン１０Ａ宛ての通信データをパケット解析部３１へ送る。また、通信デバッガ３０Ｘは、仮想マシン１０Ａ，１０Ｂから送られてきたＡＲＰ要求を応答部３７１Ｘへ送る。
【００３９】
パケット解析部３１は、ドライバ４３から送られてくるデータが通信データである場合には、ユーザ設定された指定条件と通信データとを比較し、通信データの通信パケットが指定条件に合致するか否かを確認する。具体的には、パケット解析部３１は、設定記憶部３４に保存されている指定条件と通信データ内の通信パケットとを比較することによって、通信パケットが指定条件に合致するか否かを確認する。このように、パケット解析部３１は、仮想マシン１０Ａ，１０Ｂからの通信データに含まれる通信パケットがユーザからの指定条件に合致するか否かを解析する。
【００４０】
パケット解析部３１は、通信データ内の通信パケットが指定条件に合致しない場合、通信データをそのまま通信データの宛先となっている仮想マシンに送信する。指定条件に合致しない通信パケットが、仮想マシン１０Ａから仮想マシン１０Ｂへの通信データである場合、パケット解析部３１は、通信データを仮想マシン１０Ｂに送信する。同様に、指定条件に合致しない通信パケットが、仮想マシン１０Ｂから仮想マシン１０Ａへの通信データである場合、パケット解析部３１は、通信データを仮想マシン１０Ａに送信する。パケット解析部３１は、通信パケットが指定条件に合致する場合、合致した通信パケットをログ生成部３２に送信する。
【００４１】
ユーザ設定される指定条件には、通信パケットのヘッダの内容または仮想マシン１０Ａ内での通信プロトコルの種別が用いられており、例えば、通信パケットが所定のプロトコルの場合、パケット解析部３１は、この通信パケットを解析する通信パケットであると判断される。また、ユーザ設定される指定条件は、通信パケットのデータ部の内容であってもよい。すなわち、指定条件が通信パケットのヘッダの内容である場合、指定条件には、通信パケットのヘッダに含まれるデータ列（例えば、「1010」からなるデータ列）が設定される。なお、ユーザ設定される指定条件は、何れの条件であってもよい。
【００４２】
ログ生成部３２は、パケット解析部３１から送信されてきた通信パケットをパケット記憶部３５に保存する。また、ログ生成部３２は、パケット解析部３１から送信されてきた通信パケットをパケット加工部３３に送信する。また、ログ生成部３２は、パケット解析部３１から送信されてきた通信パケットに基づいて通信ログを生成する。このように、ログ生成部３２は、通信パケットが指定条件に合致する場合に、通信データの通信ログを生成する。また、ログ生成部３２は、生成した通信ログをログ記憶部５０に保存する。
【００４３】
パケット解析部３１は、ドライバ４３から送信されてくるデータを解析する。応答部３７１Ｘは、応答設定が有効設定されている場合にドライバ４３からＡＲＰ要求が送られてくると、通信デバッガ３０ＸのＭＡＣ（Media  Access  Control）アドレスを付加したＡＲＰ応答をドライバ４３に送信する。一方、応答部３７１Ｘは、応答設定が無効設定されている場合にドライバ４３からＡＲＰ要求が送信されてくると、ＡＲＰ応答の送信は行わない。
【００４４】
また、パケット加工部３３は、ログ生成部３２から送られてくる通信パケットを指定データで置換する。換言すると、パケット加工部３３は、通信パケットの置換条件に合致した通信パケットを指定データで置換する。具体的には、パケット加工部３３は、通信パケット内の特定のデータまたは特定のフィールドを指定データで置換する。これにより、通信パケット内のデータを、動作確認用のデータに置換することが可能となる。そして、動作確認用のデータが仮想マシン１０Ａ，１０Ｂに送られることにより、仮想マシン１０Ａ，１０Ｂは、動作確認用のデータを用いて動作するので、仮想マシン１０Ａ，１０Ｂの動作を容易に確認することが可能となる。置換条件は、通信パケットを置換する条件であり、ユーザによって設定される。
【００４５】
また、パケット加工部３３は、ＡＲＰテーブル記憶部３６内に保存されている後述の固定ＡＲＰテーブル３００に従って、通信パケットの宛先を設定する。パケット加工部３３は、仮想マシン１０Ａから送信されてきた仮想マシン１０Ｂ宛ての通信パケットに対しては、仮想マシン１０Ｂを宛先に設定する。また、パケット加工部３３は、仮想マシン１０Ｂから送信されてきた仮想マシン１０Ａ宛ての通信パケットに対しては、仮想マシン１０Ａを宛先に設定する。パケット加工部３３は、宛先を設定した通信パケットを含めた通信データをドライバ４３に送る。このように、パケット加工部３３は、通信パケットを用いて通信データを生成し、ドライバ４３に送る。
【００４６】
パケット加工部３３は、通信パケットが送信変更条件に合致すると、通信データの送信停止、送信再開または送信スキップを行う。送信変更条件は、通信処理を変更する条件であり、ユーザによって設定される。送信変更条件の一例は、通信デバッガ３０Ｘが通信データを受信してからの経過時間である。この場合、通信デバッガ３０Ｘが通信データを受信してから送信変更条件で設定されている経過時間が経過すると、パケット加工部３３は、通信データの送信停止、送信再開または送信スキップを行う。
【００４７】
パケット加工部３３は、送信停止に対応する送信変更条件が満たされると通信データの送信を停止する。また、パケット加工部３３は、送信再開に対応する送信変更条件が満たされると通信データの送信を再開し、送信スキップに対応する送信変更条件が満たされると通信データの送信をスキップする。
【００４８】
なお、送信変更条件は、通信パケットのヘッダの内容であってもよい。この場合、送信変更条件には、通信パケットのヘッダに含まれるデータ列（例えば、「0101」からなるデータ列）が設定される。そして、パケット加工部３３は、ヘッダに含まれるデータ列が、送信変更条件に設定されたデータ列に合致すると通信データの送信停止、送信再開または送信スキップを行う。パケット加工部３３は、送信停止に対応するデータ列がヘッダ内に含まれていると通信データの送信を停止する。また、パケット加工部３３は、送信再開に対応するデータ列がヘッダ内に含まれていると通信データの送信を再開し、送信スキップに対応するデータ列がヘッダ内に含まれていると通信データの送信をスキップする。
【００４９】
また、パケット加工部３３は、パケット記憶部３５内に保存されている通信パケットを、任意のタイミングで仮想マシン１０Ａ，１０Ｂに送信する。パケット加工部３３は、送信再現タイミングになると、パケット記憶部３５内に保存されている通信パケットを、仮想マシン１０Ａ，１０Ｂに送信する。送信再現タイミングは、通信データを再送信するタイミングであり、通信データ毎にユーザ設定される。
【００５０】
また、パケット加工部３３は、通信パケットが指定条件および置換条件に合致する場合に、通信パケット内のデータをユーザからホスト２を介して指定されたデータに置換する。すなわち、実施の形態１のパケット加工部３３は、過去の通信状態を再現する際に、通信パケットをパケット記憶部３５に記憶された過去の通信パケットに置換することにより、仮想マシン１０Ａ，１０Ｂ上のアプリケーション１３０Ａ，１３０Ｂが操作されることなく、過去の通信データを再送信することが可能となる。
【００５１】
設定記憶部３４は、パケット解析部３１およびホスト２に接続されている。設定記憶部３４は、パケット解析部３１が用いる送信変更条件を記憶する。なお、パケット加工部３３が参照する送信変更条件、置換条件および送信再現タイミングは、何れの領域に保存されていてもよい。送信変更条件、置換条件または送信再現タイミングは、設定記憶部３４に保存されていてもよいし、設定記憶部３４以外の領域に保存されていてもよい。
【００５２】
パケット記憶部３５は、ログ生成部３２およびパケット加工部３３に接続されている。パケット記憶部３５は、ログ生成部３２が生成した通信パケットを記憶する。パケット記憶部３５は、通信パケットが指定条件に合致する場合に、通信パケットを記憶する。
【００５３】
ＡＲＰテーブル記憶部３６は、パケット加工部３３が用いる固定ＡＲＰテーブル３００を記憶する。固定ＡＲＰテーブル３００は、図３に示すように、仮想マシン１０Ａ，１０Ｂを含む仮想ＬＡＮ（Local  Area  Network）内のＩＰアドレスとＭＡＣアドレスとの対応関係を示すテーブルである。固定ＡＲＰテーブル３００は、仮想マシン１０Ａ，１０Ｂおよび通信デバッガ３０Ｘに対して、ＩＰアドレスとＭＡＣアドレスとの対応関係を格納している。
【００５４】
通信デバッガ３０Ｘは、ホスト２に接続されている。具体的には、通信デバッガ３０Ｘの設定記憶部３４が、ホスト２に接続されている。ホスト２は、ユーザからの指示に従って指定条件を変更する場合には、設定記憶部３４内の送信変更条件を書き換える。また、ホスト２は、通信ログが必要な場合には、ログ記憶部５０から通信ログを読み出す。また、ホスト２は、ユーザからの指示に従って送信変更条件、置換条件または送信再現タイミングを変更する場合には、通信デバッガ３０Ｘにアクセスし、送信変更条件、置換条件または送信再現タイミングを変更する。
【００５５】
このように、実施の形態１の通信デバッガ３０Ｘは、仮想マシン１０Ａ，１０Ｂからの通信データに含まれる通信パケットが指定条件に合致する場合に、仮想マシン１０Ａ，１０Ｂからの通信データに種々の処理を実行する。なお、通信デバッガ３０Ｘが有しているロギング部の機能は、例えば、パケット解析部３１、ログ生成部３２およびパケット加工部３３を用いて実現される。通信デバッガ３０Ｘが有しているロギング部の機能は、通信デバッガ３０Ｘが有している何れの構成要素を用いて実現されてもよい。また、通信デバッガ３０Ｘが有している通信デバッグ部の機能は、例えば、パケット解析部３１、ログ生成部３２およびパケット加工部３３を用いて実現される。通信デバッガ３０Ｘが有している通信デバッグ部の機能は、通信デバッガ３０Ｘが有している何れの構成要素を用いて実現されてもよい。
【００５６】
なお、仮想基盤１０が搭載する仮想マシンの数は、仮想マシン１０Ａ，１０Ｂの２つに限らず３つ以上であってもよい。また、設定記憶部３４、パケット記憶部３５またはＡＲＰテーブル記憶部３６は、通信デバッガ３０Ｘ内に配置される場合に限らず、通信デバッガ３０Ｘの外部に配置されてもよい。
【００５７】
つぎに、情報処理装置１内での通信データの送受信処理手順について説明する。図２は、実施の形態１にかかるデータ送受信処理の処理手順を示すシーケンス図である。実施の形態１の情報処理装置１は、仮想マシン１０Ａ，１０Ｂ間の通信を、通信デバッガ３０Ｘを経由させる。仮想マシン１０ＡのＩＰアドレスは、例えば、192.168.3.2とし、ＭＡＣアドレスは、00-00-5e-7f-56-01とする。また、仮想マシン１０ＢのＩＰアドレスは、例えば、192.168.3.3とし、ＭＡＣアドレスは、00-00-5e-7f-56-02とする。また、通信デバッガ３０ＸのＩＰアドレスは、例えば、192.168.3.1とし、ＭＡＣアドレスは、00-00-5e-7f-56-03とする。
【００５８】
仮想マシン１０Ａは、仮想マシン１０Ｂと通信する。この場合において、仮想マシン１０Ａは、ステップＳ１０１において、仮想マシン１０ＢのＭＡＣアドレスを特定するために、ＡＲＰ要求をブロードキャストする。
【００５９】
仮想マシン１０Ａは、ブロードキャストするＡＲＰ要求に、仮想マシン１０ＢのＩＰアドレスである192.168.3.3を付加しておく。仮想マシン１０ＡからのＡＲＰ要求は、ハイパーバイザ４０を介して仮想マシン１０Ｂおよび通信デバッガ３０Ｘに送信される。これにより、ステップＳ１０２において、ＡＲＰ要求が仮想マシン１０Ａから仮想マシン１０Ｂに送られ、ステップＳ１０３において、ＡＲＰ要求が仮想マシン１０Ａから通信デバッガ３０Ｘに送信される。
【００６０】
そして、仮想マシン１０Ｂは、仮想マシン１０ＡからのＡＲＰ要求を受信し、ステップＳ１０４において、通信デバッガ３０Ｘは、仮想マシン１０ＡからのＡＲＰ要求を受信する。実施の形態１では、仮想マシン１０Ｂの設定部１５２Ｂは、応答設定を無効設定にする。したがって、仮想マシン１０Ｂは、仮想マシン１０ＡからＡＲＰ要求を受けてもＡＲＰ応答を送信しない。
【００６１】
また、実施の形態１では、通信デバッガ３０Ｘの設定部３７２Ｘは、応答設定を有効設定にする。したがって、通信デバッガ３０Ｘの応答部３７１Ｘは、ＡＲＰ要求を受信すると、ステップＳ１０５において、仮想マシン１０Ｂの代わりに仮想マシン１０ＡへのＡＲＰ応答を代理送信する。このＡＲＰ応答は、通信デバッガ３０Ｘが自己のアドレスを送信先アドレスに設定した応答である。
【００６２】
このように、仮想マシン１０Ｂは、ＡＲＰ応答しない設定になっているので、通信デバッガ３０Ｘが代理でＡＲＰ要求に応答する。通信デバッガ３０Ｘから仮想マシン１０ＡへのＡＲＰ応答には、通信デバッガ３０ＸのＭＡＣアドレスである00-00-5e-7f-56-03が付加されている。通信デバッガ３０ＸからのＡＲＰ応答は、ステップＳ１０６において、ハイパーバイザ４０を介して仮想マシン１０Ａに送信される。
【００６３】
そして、ステップＳ１０７において、仮想マシン１０Ａは、通信デバッガ３０ＸからのＡＲＰ応答を受信する。ステップＳ１０８において、仮想マシン１０Ａは、ＡＲＰ応答に基づいて、固定ＡＲＰテーブル３００と同様の構成を有した可変ＡＲＰテーブルを更新する。仮想マシン１０Ａが更新する可変ＡＲＰテーブルは、ＡＲＰ応答内のＭＡＣアドレスに従って仮想マシン１０Ａが動的に変更するものである。実施の形態１の仮想マシン１０Ａが受信したＡＲＰ応答には、通信デバッガ３０ＸのＭＡＣアドレスが含まれているので、仮想マシン１０Ａは、ＡＲＰ要求内のＩＰアドレスである192.168.3.3と、ＡＲＰ応答内のＭＡＣアドレスである00-00-5e-7f-56-03とを可変ＡＲＰテーブル内で対応付けする。これにより、可変ＡＲＰテーブル内では、仮想マシン１０ＢのＩＰアドレスと、通信デバッガ３０ＸのＭＡＣアドレスとが対応付けられることとなる。
【００６４】
この後、仮想マシン１０Ａは、通信デバッガ３０ＸのＭＡＣアドレスを仮想マシン１０ＢのＭＡＣアドレスと思い込み、ステップＳ１０９において、仮想マシン１０Ｂに送信する予定であった通信データを通信デバッガ３０Ｘへ送信する。これにより、ステップＳ１１０において、第１の通信データである通信データが通信デバッガ３０Ｘに送信される。そして、ステップＳ１１１において、通信デバッガ３０Ｘは、仮想マシン１０Ｂ宛ての通信データを受信する。そして、ステップＳ１１２において、通信デバッガ３０Ｘは、通信データへの種々の情報処理を実行する。具体的には、通信デバッガ３０Ｘは、通信データのパケット解析と、通信ログの保存と、通信パケットの加工とを実行する。
【００６５】
この後、ステップＳ１１３において、通信デバッガ３０Ｘは、固定ＡＲＰテーブル３００を参照して、仮想マシン１０Ａから受信した仮想マシン１０Ｂ宛ての通信データを仮想マシン１０Ｂに代理送信する。これにより、ステップＳ１１４において、第２の通信データである通信データが通信デバッガ３０Ｘから仮想マシン１０Ｂに送信される。そして、仮想マシン１０Ｂが通信データを受信する。
【００６６】
ここで、固定ＡＲＰテーブル３００の構成について説明する。図３は、実施の形態１にかかる固定ＡＲＰテーブルの構成を示す図である。固定ＡＲＰテーブル３００では、ＩＰアドレスとＭＡＣアドレスとが対応付けられている。
【００６７】
実施の形態１では、固定ＡＲＰテーブル３００において、仮想マシン１０ＡのＩＰアドレスである192.168.3.2と、仮想マシン１０ＡのＭＡＣアドレスである00-00-5e-7f-56-01とが、対応付けられている。また、固定ＡＲＰテーブル３００において、仮想マシン１０ＢのＩＰアドレスである192.168.3.3と、仮想マシン１０ＢのＭＡＣアドレスである00-00-5e-7f-56-02とが、対応付けられている。また、固定ＡＲＰテーブル３００において、通信デバッガ３０ＸのＩＰアドレスである192.168.3.1と、通信デバッガ３０ＸのＭＡＣアドレスである00-00-5e-7f-56-03とが、対応付けられている。
【００６８】
固定ＡＲＰテーブル３００は、上述した構成となっているので、通信デバッガ３０Ｘのパケット加工部３３は、通信データを送信する際に、宛先のＩＰアドレスに対応するＭＡＣアドレスを固定ＡＲＰテーブル３００から抽出する。そして、パケット加工部３３は、抽出したＭＡＣアドレスに対して、通信データを送信する。これにより、パケット加工部３３は、宛先のＩＰアドレスを有した仮想マシン１０Ａ，１０Ｂに通信データを送信することが可能となる。
【００６９】
なお、可変ＡＲＰテーブルは、固定ＡＲＰテーブル３００と同様の構成を有している。実施の形態１では、仮想マシン１０Ａが、通信デバッガ３０ＸからのＡＲＰ応答に基づいて、可変ＡＲＰテーブル内で、仮想マシン１０ＢのＩＰアドレスと、通信デバッガ３０ＸのＭＡＣアドレスとを対応付けておく。そして、仮想マシン１０Ａは、仮想マシン１０Ｂに通信データを送信する際には、仮想マシン１０ＢのＩＰアドレスに対応するＭＡＣアドレスを抽出する。この仮想マシン１０Ａが抽出するＭＡＣアドレスは、通信デバッガ３０ＸのＭＡＣアドレスである。そして、仮想マシン１０Ａは、抽出したＭＡＣアドレスに対して、通信データを送信する。これにより、仮想マシン１０Ａは、仮想マシン１０Ｂ宛ての通信データを、通信デバッガ３０Ｘに送信することが可能となる。
【００７０】
つぎに、通信デバッガ３０Ｘが保存した通信パケットの送信処理手順について説明する。図４は、実施の形態１にかかるパケット送信処理の処理手順を示すシーケンス図である。ステップＳ１２１において、仮想マシン１０Ａがアプリケーション１３０Ａを操作することによって、ステップＳ１２２において、仮想マシン１０Ａは、仮想マシン１０Ｂ宛ての通信データを通信デバッガ３０Ｘに送信する。
【００７１】
これにより、ステップＳ１２３において、通信デバッガ３０Ｘは、仮想マシン１０Ｂ宛ての通信データを受信し、ステップＳ１２４において、受信した通信データの通信パケットをパケット記憶部３５に保存する。さらに、ステップＳ１２５において、通信デバッガ３０Ｘは、保存しておいた通信パケットを用いて通信データを生成し、仮想マシン１０Ａに代わって通信パケットを代理送信する。
【００７２】
これにより、ステップＳ１２６において、通信デバッガ３０Ｘからの通信データが仮想マシン１０Ｂに送信される。そして、仮想マシン１０Ｂは、通信デバッガ３０Ｘからの通信データを受信する。この仮想マシン１０Ｂが受信した通信データが、仮想マシン１０Ａからの通信データに対応している。上述したステップＳ１２１からＳ１２６の処理によって、仮想マシン１０Ａから仮想マシン１０Ｂへの通信である仮想マシン間通信が実行される。
【００７３】
通信デバッガ３０Ｘが保存しておいた通信パケットを通信デバッガ３０Ｘが仮想マシン１０Ｂに送信する際には、仮想マシン１０Ａ，１０Ｂは、アプリケーション１３０Ａ，１３０Ｂを操作しない。換言すると、通信デバッガ３０Ｘが、保存済みの通信パケットを仮想マシン１０Ｂに送信する場合には、アプリケーション１３０Ａ，１３０Ｂの操作が不要である。通信デバッガ３０Ｘは、送信再現タイミングになると、ステップＳ１３１において、パケット記憶部３５内に保存してある通信パケットをロードし、ステップＳ１３２において、ロードした通信パケットを用いて通信データを生成し、仮想マシン１０Ｂに送信する。
【００７４】
これにより、ステップＳ１３３において、通信デバッガ３０Ｘからの通信データが仮想マシン１０Ｂに送信される。そして、仮想マシン１０Ｂは、通信デバッガ３０Ｘからの通信データを受信する。この仮想マシン１０Ｂが受信した通信データが、仮想マシン１０Ａからの通信データに対応している。上述したステップＳ１３１からＳ１３３の処理によって、仮想マシン１０Ａから仮想マシン１０Ｂへの通信である仮想マシン間通信が再現される。
【００７５】
つぎに、通信デバッガ３０Ｘの動作処理手順について説明する。図５は、実施の形態１にかかる通信デバッガの動作処理手順を示すフローチャートである。ここでは、通信デバッガ３０Ｘが、仮想マシン１０Ａから仮想マシン１０Ｂへの通信データを受信した場合について説明する。
【００７６】
ステップｓｔ２０１において、通信デバッガ３０Ｘの設定部３７２Ｘは、応答設定を実行する。このとき、設定部３７２Ｘは、ホスト２からのユーザ指示に従って、応答設定を有効設定にする。また、仮想マシン１０Ａの設定部１５２Ａは、ホスト２からのユーザ指示に従って、応答設定を無効設定にし、仮想マシン１０Ｂの設定部１５２Ｂは、ホスト２からのユーザ指示に従って、応答設定を無効設定にする。
【００７７】
このような設定により、仮想マシン１０Ａから通信デバッガ３０ＸにＡＲＰ要求が送られてくると、通信デバッガ３０ＸがＡＲＰ応答を仮想マシン１０Ａに送信する。これにより、仮想マシン１０Ａからの通信データは、通信デバッガ３０Ｘに送信される。
【００７８】
そして、ステップｓｔ２０２において、パケット解析部３１は、第１の仮想マシンである仮想マシン１０Ａから通信データを受信する。そして、ステップｓｔ２０３において、パケット解析部３１は、通信データを解析する。ステップｓｔ２０４において、パケット解析部３１は、ユーザ設定された指定条件と通信データ内の通信パケットとを比較し、通信データ内の通信パケットが指定条件に合致するか否かを確認する。
【００７９】
通信データの通信パケットに含まれるデータ列が、指定条件に設定されたデータ列に合致する場合、すなわち、ステップｓｔ２０４においてＹｅｓの場合、パケット解析部３１は、通信パケットをログ生成部３２に送信する。
【００８０】
そして、ステップｓｔ２０５において、ログ生成部３２が、通信データの通信パケットをパケット記憶部３５に保存する。さらに、ステップｓｔ２０６において、ログ生成部３２が、通信データの通信ログを生成してログ記憶部５０に保存する。なお、ログ生成部３２は、ステップｓｔ２０５，２０６の処理の何れを先に実行してもよいし、同時に実行してもよい。
【００８１】
また、ログ生成部３２は、パケット解析部３１から送信されてきた通信パケットをパケット加工部３３に送る。なお、ログ生成部３２は、通信パケットをパケット加工部３３に送る処理と、ステップｓｔ２０５，２０６の処理との何れを先に実行してもよいし、同時に実行してもよい。
【００８２】
ステップｓｔ２０７において、パケット加工部３３は、置換条件に合致する通信パケットを指定データで置換する。パケット加工部３３は、ＡＲＰテーブル記憶部３６内に保存されている固定ＡＲＰテーブル３００に従って、通信データを送信する宛先を設定する。ここでのパケット加工部３３は、通信データを送信する宛先を仮想マシン１０Ｂに設定する。そして、パケット加工部３３は、ステップｓｔ２０８において、第２の仮想マシンである仮想マシン１０Ｂに通信データを送信する。
【００８３】
一方、ステップｓｔ２０４において通信データのパケットに含まれるデータ列が、指定条件に設定されたデータ列に合致しない場合、すなわち、ステップｓｔ２０４においてＮｏの場合、パケット解析部３１は、ステップｓｔ２０８において、第２の仮想マシンである仮想マシン１０Ｂに通信データを送信する。
【００８４】
ステップｓｔ２０８の後、ステップｓｔ２０９において、パケット加工部３３は、通信パケットが送信変更条件に合致するか否かを判定する。そして、通信パケットが送信変更条件に合致する場合、すなわち、ステップｓｔ２０９においてＹｅｓの場合、パケット加工部３３は、ステップｓｔ２１０において、通信データの送信停止、送信再開または送信スキップを行う。このとき、パケット加工部３３は、通信パケットが送信停止の送信変更条件に合致する場合には通信データの送信停止を行う。また、パケット加工部３３は、通信パケットが送信再開の送信変更条件に合致する場合には送信再開を行い、通信パケットが送信スキップの送信変更条件に合致する場合には送信スキップを行う。
【００８５】
パケット加工部３３は、通信データの送信停止、送信再開または送信スキップを行なった後、ステップｓｔ２１１において、送信再現タイミングになったか否かを監視する。また、ステップｓｔ２０９において通信パケットが送信変更条件に合致しない場合、すなわち、ステップｓｔ２０９においてＮｏの場合、ステップｓｔ２１１において、パケット加工部３３は、送信再現タイミングになったか否かを監視する。
【００８６】
送信再現タイミングになっていない場合、すなわち、ステップｓｔ２１１においてＮｏの場合、パケット加工部３３は、送信再現タイミングになるまで仮想マシン１０Ｂへの通信データの送信を行わない。そして、パケット加工部３３は、ステップｓｔ２１１において、送信再現タイミングになったか否かの監視を継続する。
【００８７】
送信再現タイミングになると、すなわち、ステップｓｔ２１１においてＹｅｓの場合、パケット加工部３３は、ステップｓｔ２１２において、パケット記憶部３５に保存されている通信パケットを用いて通信データを生成し、第２の仮想マシンである仮想マシン１０Ｂに通信データを送信する。なお、パケット解析部３１は、ステップｓｔ２０３において、ＡＲＰテーブル記憶部３６内に保存されている固定ＡＲＰテーブル３００を用いて通信データを解析してもよい。この場合、パケット解析部３１は、ステップｓｔ２０４において、固定ＡＲＰテーブル３００に基づいて、通信データ内の通信パケットが指定条件に合致するか否かを確認する。
【００８８】
なお、実施の形態１の通信デバッガ３０Ｘが備える構成要素の機能は、後述するプロセッサ６１によって実現されてもよい。図６は、実施の形態１にかかる通信デバッガのハードウェア構成を示す図である。
【００８９】
通信デバッガ３０Ｘにおけるパケット解析部３１、ログ生成部３２、パケット加工部３３、応答部３７１Ｘおよび設定部３７２Ｘの各機能は、処理回路により実現される。すなわち、通信デバッガ３０Ｘは、ＡＲＰ応答を送信し、パケットを解析し、ログを生成し、パケットを加工することによって、通信デバッグするための処理回路を備える。処理回路は、メモリ６２に格納されるプログラムを実行するプロセッサ（ＣＰＵ（Central  Processing  Unit）、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰ（Digital  Signal  Processor）ともいう）６１である。
【００９０】
パケット解析部３１、ログ生成部３２、パケット加工部３３、応答部３７１Ｘおよび設定部３７２Ｘの機能は、ソフトウェアまたはファームウェアで実現されてもよいし、ソフトウェアとファームウェアとの組み合わせによって実現されてもよい。ソフトウェアまたはファームウェアは、プログラムとして記述され、メモリ６２に格納される。処理回路は、メモリ６２に記憶されたプログラムを読み出して実行することにより、各部の犠能を実現する。すなわち、通信デバッガ３０Ｘは、処理回路により実行されるときに、パケットを解析するステップ、ログを生成するステップ、パケットを加工するステップが結果的に実行されることになるプログラムを格納するためのメモリ６２を備える。また、これらのプログラムは、パケット解析部３１、ログ生成部３２、パケット加工部３３の手順または方法をコンピュータに実行させるものであるともいえる。
【００９１】
このように、プロセッサ６１が実行するプログラムは、コンピュータで実行可能な、通信デバッグを行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトである。プロセッサ６１が実行するプログラムは、複数の命令が通信デバッグを行うことをコンピュータに実行させる。
【００９２】
ここで、メモリ６２は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable  Programmable  ROM）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  ROM）といった不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ（Digital  Versatile  Disc）が該当する。
【００９３】
このように、情報処理装置１は、仮想マシン１０Ｂの設定部１５２Ｂが応答設定を無効設定にし、通信デバッガ３０Ｘの設定部３７２Ｘが応答設定を有効設定にすることにより、仮想マシン１０Ａ，１０Ｂ間の通信データを、強制的に通信デバッガ３０Ｘを経由させることができる。また、情報処理装置１は、既存のインターネットプロトコルで実現されている。これにより、情報処理装置１は、特別なハードウェアを用いることなく簡易な構成で、通信データをデバッグすることができる。また、情報処理装置１は、仮想制御部であるハイパーバイザ４０自体が仮想マシン１０Ａ，１０Ｂとの間の情報を直接中継する必要がない。すなわち、情報処理装置１は、強制的に通信デバッガ３０Ｘを経由させる為の機能、すなわち通信デバッガ３０Ｘが仮想マシン１０Ａ，１０ＢのＡＰＲ応答を止め、仮想マシン１０Ａ，１０Ｂの代わりに通信デバッガ３０Ｘのアドレスを回答する仕組みを備えている。これにより、情報処理装置１は、仮想マシン１０Ａ，１０Ｂ間の情報を、強制的に通信デバッガ３０Ｘを経由させている。また、情報処理装置１は、仮想マシン１０Ａ，１０Ｂによって抽象化されたメモリ領域に直接アクセスする必要がない。このため、デバッグの実現コストを抑制できるとともに、デバッグプログラムの実装難度を下げることができる。また、外部から仮想マシン１０Ａ，１０Ｂ内のメモリ領域にアクセスする必要がないので、ＯＳ標準の設定変更でデバッグを実現できる。
【００９４】
また、通信デバッガ３０Ｘは、通信パケットを解析し、指定条件に合致する通信パケットを通信ログに含めて保存するので、必要な通信パケットを保存することができる。これにより、情報処理装置１のディスク容量であるログ記憶部５０のストレージ容量を削減することができるとともに、通信ログの可読性が向上する。
【００９５】
また、通信デバッガ３０Ｘは、通信パケットを解析し、通信パケットをユーザによって指定されたデータで書き換える。これにより、仮想マシン１０Ａ，１０Ｂ上でデバッグプログラムを動作させることなく、通信デバッガ３０Ｘが通信データを変更することができるので、デバッグが容易になる。また、通信デバッガ３０Ｘは、通信データの内容の書き換えを容易に行うことが可能になるとともに、送信停止、送信再開、送信スキップといった制御を容易に行うことが可能になる。また、デバッグ環境の構築コストを抑制することが可能になる。
【００９６】
また、通信デバッガ３０Ｘは、保存した通信パケットを任意のタイミングで仮想マシン１０Ａ，１０Ｂに送信する。これにより、情報処理装置１は、仮想マシン１０Ａ，１０Ｂ上のアプリケーション１３０Ａ，１３０Ｂを操作することなく、容易に過去の通信状態を再現できる。
【００９７】
このように、実施の形態１では、仮想マシン１０ＡからのＡＲＰ要求に対して仮想マシン１０Ｂは応答せず、通信デバッガ３０Ｘが仮想マシン１０ＡにＡＲＰ応答を送信するので、仮想マシン１０Ａ，１０Ｂ間の通信データを、通信デバッガ３０Ｘを経由させることができる。したがって、簡易な構成で仮想マシン１０Ａ，１０Ｂ間の情報をロギングすることが可能となる。また、簡易な構成で仮想マシン１０Ａ，１０Ｂ間の通信内容をデバッグすることが可能となる。
【００９８】
また、情報処理装置１は、複数の仮想マシン１０Ａ，１０Ｂを備えており、通信デバッガ３０Ｘが複数の仮想マシン１０Ａ，１０Ｂに接続されているので、通信デバッガ３０Ｘは、仮想マシン１０Ａ，１０Ｂ間の通信データを容易にデバッグすることが可能となる。
【００９９】
また、通信デバッガ３０Ｘは、通信データに含まれる通信パケットがユーザからの指定条件に合致する場合に、通信データをデバッグするので、所望の通信データに対して容易にデバッグすることが可能となる。
【０１００】
また、通信デバッガ３０Ｘは、通信パケットが指定条件に合致する場合に、通信データの通信ログを生成して保存しておくので、所望の通信ログを保存することができる。したがって、ログ記憶部５０のストレージ容量を削減することが可能となる。
【０１０１】
また、通信デバッガ３０Ｘは、通信パケットが指定条件に合致する場合に、通信パケットを保存するので、所望のパケットを保存することができる。したがって、パケット記憶部３５のストレージ容量を削減することが可能となる。
【０１０２】
また、通信デバッガ３０Ｘは、通信パケットが指定条件に合致する場合に、通信パケット内のデータをユーザから指定されたデータに置換するので、所望の通信パケット内のデータを所望のデータに置換することが可能となる。
【０１０３】
また、通信デバッガ３０Ｘは、パケット記憶部３５で記憶されている通信パケットから通信データを生成して仮想マシン１０Ｂに送信するので、所望の通信データを容易に再送信することが可能となる。また、通信デバッガ３０Ｘは、ルートＯＳ２０に搭載されているので、情報処理装置１の構成を簡易な構成とすることができる。
【０１０４】
実施の形態２．
つぎに、図７を用いて実施の形態２について説明する。実施の形態２では、設定部１５２Ａ，１５２Ｂによる応答設定を、後述する通信デバッガ３０Ｙが、仮想マシン１０Ａ，１０Ｂに指示する。
【０１０５】
図７は、実施の形態２にかかる通信デバッガの機能構成を示す図である。図７の各構成要素のうち図１に示す実施の形態１の通信デバッガ３０Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。なお、実施の形態２にかかる通信デバッガ３０Ｙは、通信デバッガ３０Ｘと同様のハードウェア構成を有している。
【０１０６】
通信デバッガ３０Ｙは、通信デバッガ３０Ｘと同様に、仮想マシン１０Ａ，１０Ｂの通信のバグまたは欠陥の修正を支援するソフトウェアプログラムである。通信デバッガ３０Ｙは、図１に示した情報処理装置１内において通信デバッガ３０Ｘと同様の位置に配置される。
【０１０７】
通信デバッガ３０Ｙは、通信デバッガ３０Ｘが有する構成要素に加えて、仮想マシン１０Ａ，１０Ｂの設定部１５２Ａ，１５２Ｂによる応答設定を有効設定または無効設定に切替えさせる切替指示部３８を有している。
【０１０８】
切替指示部３８は、ユーザからの指示に従って、設定部１５２Ａ，１５２Ｂに応答設定を指示する。また、切替指示部３８は、通信デバッガ３０Ｙの設定部３７２Ｙに応答設定を指示する。設定部３７２Ｙは、設定部３７２Ｘと同様の機能であり、応答部３７１Ｙは、応答部３７１Ｘと同様の機能である。
【０１０９】
なお、以下の説明では、仮想マシン１０Ａ，１０Ｂにおける応答設定の切替えをマシン切替という場合がある。また、通信デバッガ３０Ｙにおける応答設定の切替えをデバッガ切替という場合がある。
【０１１０】
切替指示部３８は、ドライバ４３に接続されており、仮想マシン１０Ａ，１０Ｂに対してマシン切替を設定する際には、マシン切替の切替指示である第１の切替指示をドライバ４３に送る。この第１の切替指示は、設定部１５２Ａ，１５２Ｂにおける応答設定を有効設定とするか無効設定とするかを指定する指示である。
【０１１１】
切替指示部３８が、第１の切替指示をドライバ４３に送ると、第１の切替指示が、仮想マシン１０Ａ，１０Ｂに送信される。なお、切替指示部３８は、第１の切替指示を仮想マシン１０Ａ，１０Ｂの両方に送信してもよいし、仮想マシン１０Ａ，１０Ｂの何れか一方に送信してもよい。
【０１１２】
また、切替指示部３８は、設定部３７２Ｙに接続されており、通信デバッガ３０Ｙに対してマシン切替を設定する際には、デバッガ切替の切替指示である第２の切替指示を設定部３７２Ｙに送る。この第２の切替指示は、設定部３７２Ｙにおける応答設定を有効設定とするか無効設定とするかを指定する指示である。切替指示部３８が、第２の切替指示を設定部３７２Ｙに送ると、設定部３７２Ｙは、第２の切替指示に従って、応答設定を有効設定または無効設定にする。
【０１１３】
切替指示部３８は、仮想マシン１０Ａ，１０Ｂに対して有効設定を指示する場合には、設定部３７２Ｙに対して無効設定を指示する。これにより、仮想マシン１０Ｂの設定部１５２Ｂが応答設定を有効設定にしている場合には、仮想マシン１０ＡからのＡＲＰ要求に対して、仮想マシン１０Ｂが仮想マシン１０ＡにＡＲＰ応答を送信し、通信デバッガ３０ＹはＡＲＰ応答を送信しない。同様に、仮想マシン１０Ａの設定部１５２Ａが応答設定を有効設定にしている場合には、仮想マシン１０ＢからのＡＲＰ要求に対して、仮想マシン１０Ａが仮想マシン１０ＢにＡＲＰ応答を送信し、通信デバッガ３０ＹはＡＲＰ応答を送信しない。
【０１１４】
一方、切替指示部３８は、仮想マシン１０Ａ，１０Ｂに対して無効設定を指示する場合には、設定部３７２Ｙに対して有効設定を指示する。これにより、仮想マシン１０ＡからのＡＲＰ要求に対して、応答部３７１Ｙが仮想マシン１０ＡにＡＲＰ応答を送信する場合には、仮想マシン１０ＢはＡＲＰ応答を送信しない。同様に、仮想マシン１０ＢからのＡＲＰ要求に対して、応答部３７１Ｙが仮想マシン１０ＢにＡＲＰ応答を送信する場合には、仮想マシン１０ＡはＡＲＰ応答を送信しない。このように、仮想マシン１０Ａ，１０Ｂにおけるマシン切替と通信デバッガ３０Ｙにおけるデバッガ切替とは、リンクしている。
【０１１５】
なお、仮想マシン１０Ａ，１０Ｂの設定部１５２Ａ，１５２Ｂは、通信デバッガ３０Ｙにおけるデバッガ切替を検知し、検知結果に基づいてマシン切替を行なってもよい。また、通信デバッガ３０Ｙの設定部３７２Ｙは、仮想マシン１０Ａ，１０Ｂにおけるマシン切替を検知し、検知結果に基づいてデバッガ切替を行なってもよい。この場合、通信デバッガ３０Ｙの切替指示部３８は不要となる。
【０１１６】
また、仮想マシン１０Ａ，１０Ｂの応答部１５１Ａ，１５１Ｂは、マシン切替の状態を通信デバッガ３０Ｙの設定部３７２Ｙに通知してもよい。この場合、設定部３７２Ｙは、応答部１５１Ａ，１５１Ｂからの通知の内容に従ってデバッガ切替を行なう。この場合も、通信デバッガ３０Ｙの切替指示部３８は不要となる。
【０１１７】
また、仮想マシン１０Ａ，１０Ｂは、通信デバッガ３０Ｙから独立してマシン切替を実行してもよい。また、通信デバッガ３０Ｙは、仮想マシン１０Ａ，１０Ｂから独立してデバッガ切替を実行してもよい。換言すると、仮想マシン１０Ａ，１０Ｂが行うマシン切替と、切替指示部３８が行うデバッガ切替とは、独立して実行されてもよい。この場合も、通信デバッガ３０Ｙの切替指示部３８は不要となる。
【０１１８】
このように、実施の形態２では、通信デバッガ３０Ｙが切替指示部３８を備えているので、通信デバッガ３０Ｙが仮想マシン１０Ａ，１０Ｂに、応答設定の設定指示を送ることが可能となる。
【０１１９】
また、切替指示部３８は、設定部１５２Ａ，１５２Ｂに有効設定を指示した場合には、設定部３７２Ｙに無効設定を指示するので、複数のＡＲＰ応答が送信されることを防止することが可能となる。
【０１２０】
また、設定部３７２Ｙは、仮想マシン１０Ｂが、応答設定を有効設定した際に、有効設定を検知して、応答設定を無効設定にするので、複数のＡＲＰ応答が送信されることを防止することが可能となる。
【０１２１】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１２２】
１  情報処理装置、２  ホスト、１０  仮想基盤、１０Ａ，１０Ｂ  仮想マシン、１２Ａ，１２Ｂ，４２  仮想ネットワークカード、２０  ルートＯＳ、３０Ｘ，３０Ｙ  通信デバッガ、３１  パケット解析部、３２  ログ生成部、３３  パケット加工部、３４  設定記憶部、３５  パケット記憶部、３６  ＡＲＰテーブル記憶部、３８  切替指示部、４０  ハイパーバイザ、５０  ログ記憶部、１５１Ａ，１５１Ｂ，３７１Ｘ，３７１Ｙ  応答部、１５２Ａ，１５２Ｂ，３７２Ｘ，３７２Ｙ  設定部、３００  固定ＡＲＰテーブル。
【要約】
情報処理装置（１）が、外部に通信データのアドレス要求をし、アドレス要求の応答として受信した送信先アドレスに対し通信データを送信する機能を有する複数の仮想マシン（１０Ａ，１０Ｂ）と、仮想マシン（１０Ａ，１０Ｂ）と他の仮想マシンとの間の第１の通信データをロギングする通信デバッガ（３０Ｘ）と、を備え、通信デバッガ（３０Ｘ）は、仮想マシン（１０Ａ，１０Ｂ）からアドレス要求を受けると、自己のアドレスを送信先アドレスとして仮想マシン（１０Ａ，１０Ｂ）に送信し、仮想マシン（１０Ａ，１０Ｂ）から送信された通信データをロギングする。【図１】
0006333498.tif 000002
【図２】
0006333498.tif 000003
【図３】
0006333498.tif 000004
【図４】
0006333498.tif 000005
【図５】
0006333498.tif 000006
【図６】
0006333498.tif 000007
【図７】
0006333498.tif 000008