(57)【要約】【課題】  いかなるNICからのネットワーク受信履歴の保存・再生を可能にする。【解決手段】  ハードウェア上に、NICドライバの他に仮想計算機モニタを動作させる。NICドライバによるNICの割り込み要因レジスタ読み込みを契機に仮想計算機モニタが起動し、該レジスタへのアクセス累積回数を保存する。さらに、NICドライバによる受信済みインデックスレジスタ読み込みを契機に、受信ディスクリプタ、及びDMA転送された受信データを参照し、DMA転送内容を保存し、履歴保存を行う。または、割り込み要因レジスタ読み込みを契機に仮想計算機モニタが起動し、上記DMA転送内容に従い受信ディスクリプタの更新、及びメモリ上に受信データのコピーを行い、履歴再生を行う。【選択図】  図２
2009181373.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークインタフェースカードとメモリ領域を搭載した情報処理装置上で第一のソフトウェア及び第二のソフトウェアが動作する情報処理装置におけるネットワーク受信履歴の保存・再生方法であって、
前記ネットワークインタフェースカードが、ネットワークからデータを受信した際にそのデータを前記情報処理装置の前記メモリ領域に転送するステップと、
前記ネットワークインタフェースカードが、当該転送後に、その転送先メモリアドレス、転送サイズ、転送完了の情報を含むテーブルを更新するステップと、
前記ネットワークインタフェースカードが、当該更新を完了した後に前記第二のソフトウェアに割り込み発生を通知するステップと、
前記ネットワークインタフェースカードが、第一のレジスタに値を格納することで割り込み発生の要因を通知するステップと、
前記第一のソフトウェアが、前記テーブルを参照することによりネットワーク受信処理を行うと共に、該テーブルのどのエントリまでの受信処理を行ったかを、前記ネットワークインタフェースカードの第二のレジスタに値を格納することで、前記ネットワークインタフェースカードに通知するステップと、
前記第一のソフトウェアが、前記ネットワークインタフェースカードの前記第一のレジスタ、または前記第二のレジスタへの読み書きを行った際に、前記第二のソフトウェアを起動するステップと、
前記第二のソフトウェアが、割り込み発生通知を契機に起動した際に、累積命令実行数を保存してから、前記第一のソフトウェアを起動するステップと、
該第一のソフトウェアが、前記ネットワークインタフェースカードの前記第一のレジスタを読み込むことにより起動した前記第二のソフトウェアが、該第一のレジスタへのアクセス累積回数を記録するステップと、
前記第一のソフトウェアが、前記ネットワークインタフェースカードの前記第二のレジスタに書き込むことにより起動した前記第二のソフトウェアが、前記アクセス累積回数、及び前記テーブルに記載されている前記転送先メモリアドレス、前記転送サイズ、前記転送完了の情報、及び前記メモリアドレスに格納されている受信データからなるエントリをデータ転送履歴として記録するステップ、
を有することを特徴とするネットワーク受信履歴の保存・再生方法。
【請求項２】
請求項１に記載したネットワーク受信履歴の保存・再生方法であって、
格納された該累積命令実行数分の命令実行の後に該第二のソフトウェアを起動し、かつ、該第二のソフトウェアが該第一のソフトウェアを起動するステップと、
該第一のソフトウェアが、該ネットワークインタフェースカードの該第一のレジスタを読み込むことにより起動した該第二のソフトウェアが、該アクセス累積回数と一致する該データ転送履歴のエントリを抽出し、該エントリの該受信データを、該転送サイズ分だけ、該転送先メモリアドレスにコピーするステップと、
該第二のソフトウェアが、該テーブルに含まれる該転送サイズ、該転送完了の情報を設定するステップ、
を有することを特徴とするネットワーク受信履歴の保存・再生方法。
【請求項３】
ネットワークインタフェースカードと、メモリ領域と、仮想計算機モニタと、転送先メモリアドレス、転送サイズ、転送完了の情報を含むテーブルとを備えた情報処理装置において、
前記ネットワークインタフェースカードが、ネットワークからデータを受信した際にそのデータを前記メモリ領域に転送する手段と、
前記ネットワークインタフェースカードが、当該転送後に該テーブルの転送先メモリアドレス、転送サイズ、転送完了の情報を更新する手段と、
前記ネットワークインタフェースカードが、前記更新を完了した後に前記仮想計算機モニタに割り込み発生を通知する手段と、
前記ネットワークインタフェースカードが、第一のレジスタに値を格納することで割り込み発生の要因を該情報処理上で動作するソフトウェアに通知する手段と、
前記情報処理装置上で動作しているソフトウェアにより該テーブルのどのエントリまでの受信処理が行われたかを、前記ネットワークインタフェースカードの第二のレジスタに値を読み込むことで認識する手段と、
前記情報処理装置上で動作しているソフトウェアにより前記ネットワークインタフェースカードの前記第一のレジスタ、または前記第二のレジスタへの読み書きが行われた際に、前記仮想計算機モニタを起動する手段と、
該仮想計算機モニタが、割り込み発生通知を契機に起動した際に、累積命令実行数を保存してから、前記情報処理装置上で動作しているソフトウェアを起動する手段と、
該情報処理装置上で動作しているソフトウェアが、前記ネットワークインタフェースカードの前記第一のレジスタを読み込むことにより起動した前記仮想計算機モニタが、前記第一のレジスタへのアクセス累積回数を記録する手段と、
前記情報処理装置上で動作しているソフトウェアが、前記ネットワークインタフェースカードの前記第二のレジスタに書き込むことにより起動した該仮想計算機モニタが、該アクセス累積回数、及び該テーブルに記載されている該転送先メモリアドレス、該転送サイズ、該転送完了の情報、及び該メモリアドレスに格納されている受信データからなるエントリをデータ転送履歴として記録する手段、
を有することを特徴とする情報処理装置。
【請求項４】
請求項３に記載した情報処理装置であって、
格納されている前記累積命令実行数分の命令実行の後に前記想計算機モニタを起動し、かつ、前記仮想計算機モニタが前記情報処理装置上で動作するソフトウェアを起動する手段と、
前記情報処理装置上で動作するソフトウェアが、前記ネットワークインタフェースカードの前記第一のレジスタを読み込むことにより起動した前記仮想計算機モニタが、前記アクセス累積回数と一致する前記データ転送履歴のエントリを抽出し、前記エントリの前記受信データを、前記転送サイズ分だけ、前記転送先メモリアドレスにコピーする手段と、
前記仮想計算機モニタが、前記テーブルに含まれる前記転送サイズ、前記転送完了の情報を設定するステップ、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク受信履歴の保存・再生方法、特にOSのNIC（ネットワークインタフェースカード）ドライバ開発における再現性の低いタイミングクリティカルなバグのデバッグを支援することを目的とした、ドライバのネットワーク受信動作の再生を可能にするネットワーク受信履歴の保存・再生方法及び装置に関する。
【背景技術】
【０００２】
従来、OSのNIC（ネットワークインタフェースカード）ドライバ開発における再現性の低いタイミングクリティカルなバグのデバッグを支援することを目的としたネットワーク受信履歴の保存・再生方法としては、非特許文献1及び非特許文献２に記載されている方法が知られていた。
【０００３】
従来の方法を実現するためのシステム構成を図１に示す。
【０００４】
従来の方法では、NIC（102）を含むハードウェア（101）上にホストOS（103）、及び仮想計算機モニタ（107）が搭載されていることを仮定する。一つのハードウェア上で、ホストOSと仮想計算機モニタが時分割で並行動作する。
【０００５】
NICがネットワークからデータを受信すると、ホストOSのNICドライバ（104）が割り込みにより受信通知を受ける。さらに、受信データをNICより受け取る。
【０００６】
ホストOSのNICドライバは、ホストOS上で動作するVMアプリケーション（105）に受信データを通知する。そして、VMアプリケーションは、ホストOSのVMドライバ（106）に受信データの転送を依頼する。
【０００７】
ホストOSのVMドライバ（106）は、仮想計算機モニタ（107）に受信データを転送した後に、ハードウェア上で動作するソフトウェアを、ホストOSから仮想計算機モニタに切り替える。
【０００８】
仮想計算機モニタ（107）は仮想NIC（108）をゲストOS（109）に提供している。仮想計算機モニタが上記受信データの転送を受けると、仮想NICによるネットワークからのデータ受信動作をエミュレートし、ゲストOSの仮想NICドライバ（110）に、割り込みにより受信通知、及び受信したデータの通知（DMA転送のエミュレート）を行う。
【０００９】
この際の割り込み発生タイミング、及びエミュレートした受信データのDMA転送の履歴（受信データの内容、サイズ、DMA転送先アドレス）を、仮想計算機モニタが、割り込み発生履歴（111）、及びDMA転送履歴（112）として保存し、ネットワーク受信履歴を保存する。
【００１０】
また、本ネットワーク受信履歴の再生を行う際には、割り込み発生履歴に格納されたタイミングにて仮想計算機モニタを起動させる。そして、仮想計算機モニタが、ゲストOSの仮想NICドライバへの割り込み発生通知と、DMA転送のエミュレート（履歴に記載された転送先アドレスに、履歴に記載された受信データをコピーする処理）を行う。
【００１１】
【非特許文献１】Jeremy Sugerman et. al., "Virtualizing I/O Devices on VMWare Workstation's Hosted Virtual Machine Monitor", USENIX Annual Technical Conference, 2001.
【非特許文献２】Steve Herrod, "The Amazing VM Record/Replay Feature in VMware Workstation 6", http://blogs.vmware.com/Sherrod/2007/04/the_amazing_vm.html
【発明の開示】
【発明が解決しようとする課題】
【００１２】
従来の方法では、ゲストOSは仮想NICからネットワークデータを受信する。そのため、ゲストOSでは仮想NICのデバイスドライバは動作するが、実際にハードウェアに接続されているNICのドライバは動作しない。また、仮想計算機モニタがエミュレートできるNIC（仮想NICとしてゲストOSに提供できるNIC）には限りがある。そのため、仮想計算機モニタがエミュレートできないNICデバイス向けのデバイスドライバのデバッグに取得したネットワーク受信履歴を活用することができない。
【００１３】
本発明では、いかなるNICからのネットワーク受信処理の履歴の保存・再生を可能にし、仮想計算機モニタがエミュレート対応していないNICのデバイスドライバ開発への活用を可能にするネットワーク受信履歴の保存・再生方法を提案し、上記課題の解決を目指す。
【課題を解決するための手段】
【００１４】
上記課題を解決するため、本発明では、以下のネットワーク受信履歴の保存・再生方法を提案する。
【００１５】
まず、本発明では以下を仮定する。
【００１６】
（１）ネットワークインタフェースカードを搭載したPCサーバ上でデバイスドライバ及び仮想計算機モニタが動作する。
【００１７】
（２）該ネットワークインタフェースカードが、ネットワークからデータを受信した際にそのデータをPCサーバにDMA転送を行う。
【００１８】
（３）該ネットワークインタフェースカードが、当該DMA転送後に、そのDMA転送先アドレス、転送サイズ、転送完了の情報を含む受信ディスクリプタを更新する。
【００１９】
（４）該ネットワークインタフェースカードが、当該更新を完了した後に仮想計算機モニタに割り込み発生を通知する。
【００２０】
（５）該ネットワークインタフェースカードは、割り込み要因レジスタを保有し、当該レジスタに値を格納することで割り込み発生の要因を仮想計算機モニタ及びデバイスドライバに通知できる。
【００２１】
（６）デバイスドライバは、該受信ディスクリプタを参照することによりネットワーク受信処理を行うと共に、該受信ディスクリプタのどのエントリまでの受信処理を行ったかを、該ネットワークインタフェースカードの受信済みインデックスレジスタに値を格納することで、該ネットワークインタフェースカードに通知できる。
【００２２】
（７）デバイスドライバが該ネットワークインタフェースカードの該割り込み要因レジスタ、または該受信済みインデックスレジスタへの読み書きを行った際に、仮想計算機モニタを起動できる。
【００２３】
上記構成を持つPCサーバ、仮想計算機モニタ、デバイスドライバは、以下の方法によりネットワーク受信履歴の保存を行う。
【００２４】
（１）仮想計算機モニタは、割り込み発生通知を契機に起動した際に、累積命令実行数を保存してから、デバイスドライバを起動する。
【００２５】
（２）該デバイスドライバが、該ネットワークインタフェースカードの該割り込み要因レジスタを読み込むことにより起動した該仮想計算機モニタが、該割り込み要因レジスタへのアクセス累積回数を記録する。
【００２６】
（３）該デバイスドライバが、該ネットワークインタフェースカードの該受信済みインデックスレジスタに書き込むことにより起動した該仮想計算機モニタが、該アクセス累積回数、及び該受信ディスクリプタに記載されている該DMA転送先アドレス、該転送サイズ、該転送完了の情報、及び該メモリアドレスに格納されている受信データからなるエントリをデータ転送履歴として記録する。
【００２７】
また、上記構成を持つPCサーバ、仮想計算機モニタ、デバイスドライバは、以下の方法によりネットワーク受信履歴の再生を行う。
【００２８】
（１）格納された該累積命令実行数分の命令実行の後に仮想計算機モニタを起動し、デバイスドライバの起動を行う。
【００２９】
（２）該デバイスドライバが、該ネットワークインタフェースカードの該割り込み要因レジスタを読み込むことにより起動した該仮想計算機モニタが、該割り込み要因レジスタへのアクセス累積回数を記録する。
【００３０】
（３）該仮想計算機モニタは、該アクセス累積回数と一致する該データ転送履歴のエントリを抽出し、該エントリの該受信データを、該転送サイズ分だけ、該DMA転送先アドレスにコピーする。
【００３１】
（４）仮想計算機モニタは、該受信ディスクリプタに含まれる該転送サイズ、該転送完了の情報を設定する。
【発明の効果】
【００３２】
本発明のネットワーク受信履歴の保存・再生方法により、仮想計算機モニタがエミュレート対応していないNICからのネットワーク受信処理の履歴の保存・再生が可能になる。
【発明を実施するための最良の形態】
【００３３】
本発明の実施例を図２から図８を用いて説明する。
【００３４】
図２は、本発明のネットワーク受信履歴の保存方法を示す図である。本方法では、NIC（102）を搭載したハードウェア（101）上で、仮想計算機モニタ（107）とNICドライバ（203）を含むゲストOS（109）が動作する。
【００３５】
NICは、ネットワークからデータを受信すると、当該データのDMA転送を行い、受信ディスクリプタ（204）を更新する。また、仮想計算機モニタの割り込み捕捉手段（205）に割り込み通知をあげる。割り込み捕捉手段は割り込み発生タイミング情報等を割り込み発生履歴（111）に保存する。そして、当該割り込み発生をNICドライバに通知する。
【００３６】
NICドライバは、割り込み要因レジスタ（201）、受信済みインデックスレジスタ（202）等のレジスタに対するアクセス要求を発行する。アクセス要求を発行すると、割り込み要因レジスタ捕捉手段（206）、受信済みインデックスレジスタ捕捉手段（207）、ディスクリプタ参照／更新手段（208）が起動される。そして、割り込み要因レジスタ捕捉手段が割り込み要因レジスタのアクセス累積回数（209）を格納する。また、ディスクリプタ参照／更新手段によるDMA転送履歴（112、受信データの内容、サイズ、DMA転送先アドレスなど）の格納を受信ディスクリプタ（204）の参照を行うことで実現する。また、レジスタへのアクセス処理は、NICドライバからの要求に従い、割り込み要因レジスタ捕捉手段、受信済みインデックス捕捉手段が行う。
【００３７】
本発明の方法によれば、NICの割り込み要因レジスタや受信済みインデックスレジスタへのアクセス要求をNICドライバが発行しながら、割り込み発生履歴やDMA転送履歴の保存が実現されている。そのため、ホストOSや仮想計算機モニタがNICデバイス非依存に構築でき、いかなるNICからのネットワーク受信処理の履歴の保存・再生も可能になる。
【００３８】
図３は、本発明で仮定するハードウェア構成を示す図である。本発明では、割り込み要因レジスタ（201）、受信済みインデックスレジスタ（202）などを搭載したNIC（105）の存在を仮定する。また、仮想計算機モニタ（107）、ゲストOS（109）などのプログラムは、ハードウェア（101）のメモリ（302）上のプログラム格納領域（303）に格納される。さらに、割り込み発生履歴（111）、DMA転送履歴（112）、アクセス累積回数（209）、受信データ（308）、受信ディスクリプタ（204）は、メモリ（302）上のデータ格納領域（304）に格納される。
【００３９】
プログラム格納領域に格納されたプログラムは、ハードウェア（101）のCPU（301）のプログラム実行手段（305）により読み込まれ、プログラムの内容に従い実行を行う。
【００４０】
NICは、受信ディスクリプタ（204）の内容を参照しながら、ネットワークからのデータ受信処理を行う。受信ディスクリプタ（204）は図４に示すように、DMA転送アドレス（401）、サイズ（402）、完了ビット（403）の各フィールドを持つ。NICは本ディスクリプタエントリを循環して参照する。そして、ネットワークからデータを受信すると、DMA転送アドレスフィールドに記載されたデータ格納領域のアドレスに受信データを転送する。そして受信したデータサイズをサイズフィールドに設定する。そして、完了ビットを設定することで当該エントリへの受信データ転送が完了したことを通知する。さらに、CPUの割り込み通知手段（307）に割り込みを通知する。この際、割り込み要因レジスタ（202）にネットワーク受信による割り込みが発生した情報を格納する。割り込み通知手段は、本割り込み通知を受け取ると、仮想計算機モニタ（107）に割り込みを通知する。図2で説明した通り、仮想計算機モニタはゲストOS（NICドライバ）に当該割り込みを通知する。ゲストOS（NICドライバ）は、割り込み要因レジスタ（202）を参照することで、ネットワークからのデータ受信が発生したことを認識する。さらに、受信ディスクリプタのどのエントリまでの受信処理を行ったか（どのエントリをNICが新たなデータを受信した際に再利用して良いか）を示す情報を受信済みインデックスレジスタ（201）に格納する。
【００４１】
また、CPUには、ゲストOSによる受信済みインデックスレジスタや割り込み要因レジスタへのアクセス命令の発行を検査するレジスタアクセス通知手段（306）を持つ。本アクセス命令がゲストOSにより発行されると、実際のデバイスレジスタへのアクセスは行われず、仮想計算機モニタにデバイスレジスタアクセス通知が転送される。仮想計算機モニタは、本通知によりゲストOSによる受信済みインデックスレジスタや割り込み要因レジスタへのアクセスを認識する。さらに、ゲストOSに代わり、上記アクセス命令を発行することができる。仮想計算機モニタによりこれらのレジスタアクセス命令発行がなされた場合には、プログラム実行手段によりこれらのレジスタのread/write処理が実行される（レジスタアクセス通知手段はレジスタアクセス通知を仮想計算機モニタにあげない）。
【００４２】
図５は、割り込み発生履歴（111）のデータ構造を示す図である。本履歴は、累積命令実行数フィールド（501）を含む。累積命令実行数は、CPU（305）による命令実行数の総計であり、仮想計算機モニタは、CPUに当該命令数を問い合わせることにより、当該情報の取得ができる。
【００４３】
図６は、DMA転送履歴（112）のデータ構造を示す図である。本履歴は、アクセス累積回数（601）、DMA転送アドレス（602）、サイズ（603）、受信データ（604）のフィールドからなる。各円鳥は、アクセス累積回数分の割り込み要因レジスタ読み込みが行われる直前に、DMA転送アドレスフィールドに記載されているデータ格納領域のアドレスに、サイズフィールド、受信データフィールドで示される受信データのDMA転送が行われたことを示す。
【００４４】
図７は、本発明によるネットワーク受信履歴の保存処理の動作フローを示す図である。
【００４５】
まず、NIC（102）がネットワークより受信データ（308）を受信し、受信ディスクリプタ（204）のDMA転送アドレスフィールド（401）に記載されたデータ格納領域（304）に受信データのDMA転送を行う。さらに、受信ディスクリプタのサイズフィールド（402）の設定、及び完了ビット（403）の設定を行う（ステップ701）。
【００４６】
次に、NICは、CPUの割り込み通知手段（307）に割り込み通知を行う。割り込み通知手段は、割り込み通知を行うべく、仮想計算機モニタ（107）の割り込み捕捉手段（205）を起動する（ステップ702）。
【００４７】
次に、割り込み捕捉手段（205）がCPU（301）に累積命令実行数を問い合わせ、取得した情報を割り込み発生履歴（111）の累積命令実行数フィールド（501）に格納する（ステップ703）。
【００４８】
さらに、割り込み捕捉手段（205）がNICドライバ（203）に割り込みを通知するために、NICドライバの起動を行う（ステップ704）。
【００４９】
NICドライバは、割り込み要因を認識するために、割り込み要因レジスタ（202）の読み込み命令を発行する（ステップ705）。
【００５０】
NICドライバによる割り込み要因レジスタの読み込み命令の発行は、レジスタアクセス通知手段（306）により捕捉される。そしてレジスタアクセス通知手段は、仮想計算機モニタ（109）の割り込み要因レジスタ捕捉手段（206）を起動する（ステップ706）。
【００５１】
割り込み用意にレジスタ捕捉手段（206）は、その起動回数を覚えておくため、当該回数をアクセス累積回数（209）に格納する。そして、NICドライバ（203）の処理を継続させる（ステップ707）。
【００５２】
NICドライバは、受信ディスクリプタの完了ビットフィールド（403）を検査し、完了ビットフィールドが立っているエントリのデータを受信する。そして、どのエントリまでの受信が完了したかを通知するために、受信済みインデックスレジスタ（201）の更新を行う本レジスタの更新命令は、CPUのレジスタアクセス通知手段（306）により捕捉される。そしてレジスタアクセス通知手段は、仮想計算機モニタ（109）の受信済みインデックスジスタ捕捉手段（207）を起動する（ステップ708）。
【００５３】
受信済インデックスレジスタ捕捉手段（208）は、ディスクリプタ参照／更新手段（208）を起動する（ステップ709）。
【００５４】
ディスクリプタ参照／更新手段（208）は、現在の受信済みインデックスレジスタの値を読み込み、現在の値を取得する。また、NICドライバ（203）による受信済みインデックスレジスタ（201）の更新命令を解析し、新たな受信済みインデックスレジスタの値も取得する。図４に示す通り、この間の受信ディスクリプタエントリが、ステップ708にてNICドライバが受信処理を行った受信ディスクリプタエントリを示す。このエントリのDMA転送が、ステップ705の割り込み要因レジスタの読み込み直前に行われたことを保存するために、以下を行う。まず、ディスクリプタ参照／更新手段（208）は、アクセス累積回数（209）を参照し、DMA転送履歴（212）のアクセス累積回数フィールド（601）にその値を格納する。また、ステップ708にてNICドライバが受信処理を行った受信ディスクリプタエントリのDMA転送アドレスフィールド（401）、サイズフィールド（402）の値を、DMA転送履歴（112）のDMA転送アドレスフィールド（602）、サイズフィールド（603）に格納する。さらに、DMA転送アドレスフィールド（602）、サイズフィールド（603）で示されるデータ格納領域（304）のデータを受信データフィールド（604）にコピーする。最後に、受信済みインデックス捕捉手段（208）の処理を継続させる（ステップ710）。
【００５５】
受信済みインデックス捕捉手段（208）は、NICドライバ（203）による受信済みインデックスレジスタ（201）の更新命令を解析し、新たな受信済みインデックスレジスタの値を取得する。そして、その値を受信済みインデックスレジスタ（201）に設定する。
【００５６】
図８は、本発明のネットワーク受信履歴の再生方法を示す図である。受信履歴の再生を行うために、保存の場合と同様、NICドライバ（203）、仮想計算機モニタの割り込み捕捉手段（205）、割り込み要因レジスタ捕捉手段（206）、受信済みインデックスレジスタ捕捉手段（207）、ディスクリプタ参照／更新手段（208）がハードウェア（101）上で動作する。この際、必要に応じて、保存した割り込み発生履歴（111）、アクセス累積回数（209）、DMA転送履歴（112）を参照して、保存の場合と全く同じネットワーク受信処理の再生、即ち、受信ディスクリプタ（204）の更新処理、及びDMA転送処理の再現を行う。
【００５７】
図９は、本発明によるネットワーク受信履歴の再生処理の動作フローを示す図である。
【００５８】
まず、割り込み捕捉手段（205）は、割り込み発生履歴（211）の累積命令実行数フィールド（501）を参照し、当該命令実行後に割り込み捕捉手段が起動する（ステップ901）。
【００５９】
次に、割り込み捕捉手段（205）がNICドライバ（203）に割り込み発生を通知する（ステップ902）。
【００６０】
NICドライバは、割り込みを通知されると、割り込み要因レジスタ（202）を読み込む（ステップ903）。
【００６１】
すると、CPU（301）のレジスタアクセス通知手段（306）がデバイスレジスタアクセス通知を行うため、仮想計算機モニタ（107）の割り込み要因レジスタ捕捉手段（206）を起動する。割り込み要因レジスタ捕捉手段は、アクセス累積回数（209）を更新する（ステップ904）。
【００６２】
そして、割り込み要因レジスタ捕捉手段（206）はディスクリプタ参照／更新手段（208）を起動する（ステップ905）。
【００６３】
起動したディスクリプタ参照／更新手段（208）は、アクセス累積回数（209）を参照する。そして、その値がアクセス累積回数フィールド（601）に格納されているDMA転送履歴（112）のエントリを抽出する。そして、当該エントリの受信データフィールド（604）、サイズフィールド（603）で指定されるデータを、DMA転送アドレスフィールド（602）で指定されるデータ格納領域のアドレスにコピーする（ステップ906）。
【００６４】
さらに、ディスクリプタ参照／更新手段（208）は、受信ディスクリプタのエントリのうち、ステップ906にてコピーを行ったデータ分のエントリの完了ビットフィールド（403）の設定を行う。また、サイズフィールド（402）の値も、DMA転送履歴（112）のサイズフィールド（603）の値に更新する（ステップ907）。
【００６５】
ステップ906及びステップ907にてDMA転送のエミュレートが行われ、NICドライバ（203）は、NICからデータが到達した時と同様の受信処理を行い、受信データを取得する（ステップ908）。
【００６６】
次に、NICドライバ（203）は、受信済みインデックスレジスタ（201）の値を更新する（ステップ908）。
【００６７】
すると、CPU（301）のレジスタアクセス通知手段（306）は、デバイスレジスタアクセスを通知するため、仮想計算機モニタ（107）の受信済みインデックスレジスタ捕捉手段（207）を起動する。受信済みインデックスレジスタは、当該デバイスレジスタアクセス実行要求を無視して処理を完了する（ステップ909）。
【図面の簡単な説明】
【００６８】
【図１】従来方法のシステム構成を示す図である。
【図２】本発明のネットワーク受信履歴の保存方法を示す図である。
【図３】本発明のハードウェア構成を示す図である。
【図４】受信ディスクリプタのデータ構造を示す図である。
【図５】割り込み発生履歴のデータ構造を示す図である。
【図６】DMA転送履歴のデータ構造を示す図である。
【図７】本発明のネットワーク受信履歴の保存方法の動作フローを示す図である。
【図８】本発明のネットワーク受信履歴の再生方法を示す図である。
【図９】本発明のネットワーク受信履歴の再生方法の動作フローを示す図である。
【符号の説明】
【００６９】
102…NIC
107…仮想計算機モニタ
203…NICドライバ
【図１】
2009181373.tif 000003
【図２】
2009181373.tif 000004
【図３】
2009181373.tif 000005
【図４】
2009181373.tif 000006
【図５】
2009181373.tif 000007
【図６】
2009181373.tif 000008
【図７】
2009181373.tif 000009
【図８】
2009181373.tif 000010
【図９】
2009181373.tif 000011