JP2010205011A - 障害再現システム、障害再現方法および通信再現装置 - Google Patents

障害再現システム、障害再現方法および通信再現装置 Download PDF

Info

Publication number
JP2010205011A
JP2010205011A JP2009050406A JP2009050406A JP2010205011A JP 2010205011 A JP2010205011 A JP 2010205011A JP 2009050406 A JP2009050406 A JP 2009050406A JP 2009050406 A JP2009050406 A JP 2009050406A JP 2010205011 A JP2010205011 A JP 2010205011A
Authority
JP
Japan
Prior art keywords
packet
server
time
reproduction
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009050406A
Other languages
English (en)
Inventor
Masaki Omi
雅紀 近江
Yoshiaki Katayama
吉章 片山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009050406A priority Critical patent/JP2010205011A/ja
Publication of JP2010205011A publication Critical patent/JP2010205011A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】サーバアプリケーションの動作を再現し、サーバアプリケーションの障害を再現できるようにすることを目的とする。
【解決手段】障害再現システム101は検証用サーバ300とパケット再送サーバ400とを備える。検証用サーバ300は、サーバ装置の特定の時点のスナップショット201に基づいて、前記特定の時点の前記サーバ装置をアプリケーション仮想再現サーバ210Bとして再現する。パケット再送サーバ400は、前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうちクライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、アプリケーション仮想再現サーバ210Bに前記対象パケットを処理させる。
【選択図】図5

Description

本発明は、例えば、仮想マシン環境におけるサーバアプリケーションの障害を再現する障害再現システム、障害再現方法および通信再現装置に関するものである。
オンラインシステムでは、一般的にTCP/IPを用いてネットワーク通信が行われている。
サーバシステムの開発者は、障害解析を行うためにネットワークを流れるパケットをネットワークアナライザ等の機器を用いて取得し、パケット情報を解析することで障害対応を行っている。障害原因が解析できなかった場合には、障害発生時と同じ環境を用意して再現試験を行う必要があった。しかし、同一環境の準備や、長時間の試験内で発生した障害を再現することは非常に困難である。
これらの課題を解決するため、障害発生前のスナップショットからプログラムの実行を再現することや、ネットワーク上で取得したパケットを検証用の環境で送信することにより、ネットワークの通信状況を再現することが考えられる。
従来のシステムでは、スナップショットからのプログラム再現において、共有メモリへのアクセス履歴や各プロセッサのアクセス履歴等をスナップショット情報として扱い、任意のチェックポイントからプログラムの実行を再現している(特許文献1参照)。
また、ネットワークの通信状況の再現において、アプリケーションの評価を行うために、検証用の環境でパケットを送信することによりパケット取得時と同じネットワーク通信状況を再現するパケット発生装置がある(特許文献2参照)。
特開平7−13805号公報 特開2006−295516号公報
しかしながら、上述した方法では、スナップショットを用いてプログラムを再現するために共有メモリへのアクセス情報を用いている。このため、サーバアプリケーションのようにネットワークを経由した外部から操作されるプログラムの実行を再現することはできない。そのため、サーバアプリケーションの障害を再現することはできない。
また、上述のパケット発生装置は、検証用の環境でネットワーク通信状況を再現し、その通信環境でアプリケーションの評価を行うものである。このため、ネットワーク通信を再現させてアプリケーションの動作そのものを再現することはできない。また、TCPを用いた通信はコネクション接続が必要であるため、単にパケットを送信するだけではコネクションの接続に失敗し、ネットワーク通信の再現に失敗する。
本発明は、例えば、上記の課題を解決するものであり、サーバアプリケーションの動作を再現し、サーバアプリケーションの障害を再現できるようにすることを目的とする。
本発明の障害再現システムは、クライアント装置からネットワークを介して送信されたパケットデータを処理するサーバ装置から取得された前記サーバ装置の特定の時点の特定の情報に基づいて、前記特定の時点の前記サーバ装置を特定時点サーバとしてCPU(Central Proccessing Unit)を用いて再現する特定時点再現装置と、前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうち前記クライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、前記特定時点再現装置により再現された特定時点サーバに前記対象パケットを処理させて前記特定の時点から前記障害発生時点までの前記サーバ装置をCPUを用いて再現する障害再現装置とを有する。
本発明によれば、例えば、サーバアプリケーションの動作を再現し、サーバアプリケーションの障害を再現することができる。
実施の形態1における障害再現対象のオンラインシステム100の構成図。 実施の形態1におけるネットワークパケット情報202の一例。 実施の形態1におけるネットワークパケット情報202の一例。 実施の形態1におけるネットワークパケット情報202の一例。 実施の形態1における障害再現システム101の構成図。 実施の形態1における各装置のハードウェア資源の一例を示す図。 実施の形態1における障害再現方法を示すフローチャート。 実施の形態1におけるターゲット同期処理(S200)のフローチャート。 実施の形態1におけるネットワーク通信再現処理(S300)のフローチャート。 実施の形態1におけるTCP通信状況管理テーブル491の構造図。 実施の形態2におけるネットワークパケット情報202の一例。 実施の形態2におけるターゲット同期処理(S200)のフローチャート。 実施の形態2におけるターゲット同期処理(S200)のフローチャートの別例。 実施の形態3における障害再現システム101の構成図。 実施の形態4における通信再現システム102の構成図。
実施の形態1.
特定時点に取得されたスナップショットと特定時点以降にネットワークから収集されたパケットデータとに基づいてアプリケーションサーバに発生した障害を再現する障害再現システムおよび障害再現方法について説明する。
図1は、実施の形態1における障害再現対象のオンラインシステム100の構成図である。
障害を再現したい対象のオンラインシステム100の構成について、図1に基づいて以下に説明する。
オンラインシステム100は、クライアント装置(クライアントA120、クライアントB130)とクライアント装置からネットワーク110を介して送信されたパケットデータを処理するサーバ装置(以下、「アプリケーションサーバ200」という)とを有する。
アプリケーションサーバ200と各クライアントとは、ネットワーク110を介してパケットデータを用いて通信する。
オンラインシステム100は、開発中の試験システムであっても、実稼動中の本番システムであっても構わない。
アプリケーションサーバ200はアプリケーション仮想サーバ210、情報収集仮想サーバ220(パケット収集装置の一例)およびオンライン仮想マシンモニタ部230を備える。
アプリケーションサーバ200は、仮想化ソフトウェア(オンライン仮想マシンモニタ部230)をインストールしたサーバである。
アプリケーション仮想サーバ210および情報収集仮想サーバ220は、仮想化ソフトウェアにより仮想化された計算機(仮想マシン)である。
仮想サーバは、割り当てられた計算機資源(CPU使用時間、メモリ領域)を使用し、独立した計算機のように動作する。
但し、アプリケーション仮想サーバ210および情報収集仮想サーバ220は、仮想マシンでなく実計算機であっても構わない。
アプリケーション仮想サーバ210は、障害再現対象のサーバ(ターゲットサーバ)であり、クライアントから要求された処理をCPUを用いて実行するアプリケーション部211を備える。
オンライン仮想マシンモニタ部230は、アプリケーション仮想サーバ210からスナップショットを取得するスナップショット取得部231を備える。
スナップショットは、装置のある時点の状態を示す情報(例えば、メモリ領域の値)である。
情報収集仮想サーバ220は、情報収集部221と収集情報記憶部229とを備える。
情報収集部221は、ネットワーク110を介して通信されているパケットデータを収集し、収集したパケットデータを収集時刻と共にネットワークパケット情報202に設定する。ネットワークパケット情報202は収集情報記憶部229に記憶されている。さらに、情報収集部221は、オンライン仮想マシンモニタ部230のスナップショット取得部231に定期的にスナップショット取得要求を行い、取得されたアプリケーション仮想サーバ210のスナップショットを収集情報記憶部229に保存する。
収集情報記憶部229には、最新のスナップショット201が保存されている。また、収集情報記憶部229には、最新のスナップショット201が取得されたとき以後に収集されたパケットデータとその収集時刻とが設定されたネットワークパケット情報202が記憶されている。
図2、図3および図4は、実施の形態1におけるネットワークパケット情報202の一例である。
図2に示すように、ネットワークパケット情報202には、パケットデータと当該パケットデータの収集時刻とが設定される。
収集時刻は、情報収集部221が当該パケットを収集したときの情報収集仮想サーバ220のシステム時刻を示す。
図3または図4に示すように、ネットワークパケット情報202には、クライアントからアプリケーション仮想サーバ210へ送信されたパケットおよびアプリケーション仮想サーバ210からクライアントへ送信されたパケットが含まれる。
図5は、実施の形態1における障害再現システム101の構成図である。
実施の形態1における障害再現システム101の構成について、図5に基づいて以下に説明する。
障害再現システム101は、アプリケーション仮想サーバ210の障害を再現するサーバ装置(以下、「検証用サーバ300」という)(特定時点再現装置の一例)と、クライアントの代わりにパケットデータを送信するサーバ装置(以下、「パケット再送サーバ400」という)(障害再現装置の一例)とを有する。
検証用サーバ300とパケット再送サーバ400とは、ネットワーク111を介してパケットデータを送受信する。
障害再現システム101は、オンラインシステム100(図1参照)と同じ環境(例えば、ネットワークが同一、アプリケーションサーバ200と検証用サーバ300とが同一計算機)であっても、オンラインシステム100と異なる環境であっても構わない。
検証用サーバ300は、アプリケーション仮想再現サーバ210B(特定時点サーバの一例)、検証用仮想マシンモニタ部310および検証用記憶部390を備える。
検証用記憶部390には、オンラインシステム100の情報収集仮想サーバ220に記憶されているスナップショット201がコピーされているものとする。
検証用仮想マシンモニタ部310は、検証用記憶部390に記憶されているスナップショット201に基づいて、スナップショット201が取得された時点のアプリケーション仮想サーバ210をアプリケーション仮想再現サーバ210B(仮想マシン)(実計算機でも構わない)としてCPUを用いて再現する。
再現されたときのアプリケーション仮想再現サーバ210Bのシステム時刻はスナップショット201の取得時刻を示す。
パケット再送サーバ400は、情報収集仮想サーバ220によりスナップショット201の取得時点からアプリケーション仮想サーバ210に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうちクライアントからアプリケーション仮想サーバ210へ送信されたパケットデータを対象パケット(例えば、後述する「送信収集パケット」)として、検証用サーバ300により再現されたアプリケーション仮想再現サーバ210Bに対象パケットを処理させて、スナップショット201の取得時点から障害発生時点までのアプリケーション仮想サーバ210をCPUを用いて再現する。
パケット再送サーバ400は、実行トレース再生部410と再送用記憶部490とを備える。
再送用記憶部490には、オンラインシステム100の情報収集仮想サーバ220に記憶されているネットワークパケット情報202がコピーされているものとする。
実行トレース再生部410は、ターゲット同期部411(処理開始タイミング決定部の一例)とネットワーク通信再現部412(処理要求部の一例)とを備える。
ターゲット同期部411は、複数の対象パケットのうち最初に収集された対象パケットである対象先頭パケット(例えば、後述する「先頭収集パケット」)の収集時刻に基づいて、アプリケーション仮想再現サーバ210Bに前記対象先頭パケットを処理させるタイミングを処理開始タイミング(例えば、後述する「先頭収集パケットの送信タイミング」)としてCPUを用いて決定する。
例えば、ターゲット同期部411は、アプリケーション仮想再現サーバ210Bからシステム時刻をサーバ時刻として取得し、取得したサーバ時刻と前記対象先頭パケットの収集時刻との時刻差に基づいて前記処理開始タイミングを決定する。
また例えば、ターゲット同期部411は、まず、アプリケーション仮想サーバ210から送信されたパケットデータであってアプリケーション仮想サーバ210から送信されたときのアプリケーション仮想サーバ210のシステム時刻を示すパケットデータであるタイムスタンプパケット(例えば、後述する「ICMPタイムスタンプ応答」)がネットワークパケット情報202に含まれる場合、前記タイムスタンプパケットの収集時刻と前記タイムスタンプパケットに示されるシステム時刻との時刻差を、収集時刻とシステム時刻との時刻差を示す収集時刻誤差として算出する。
次に、ターゲット同期部411は、前記対象先頭パケットの収集時刻と前記収集時刻誤差とに基づいて、前記対象先頭パケットがアプリケーション仮想サーバ210へ送信されたときのアプリケーション仮想サーバ210のシステム時刻をサーバ処理開始時刻として算出する。
そして、ターゲット同期部411は、前記サーバ時刻と前記サーバ処理開始時刻との時刻差に基づいて前記処理開始タイミングを決定する。
ネットワーク通信再現部412は、ターゲット同期部411により決定された処理開始タイミングにアプリケーション仮想再現サーバ210Bへの各対象パケットの送信をCPUを用いて開始してアプリケーション仮想再現サーバ210Bに各対象パケットを処理させる。
例えば、ネットワーク通信再現部412は、複数の対象パケットそれぞれの収集時刻に基づいて各対象パケットの送信時間間隔を算出し、各対象パケットを前記送信時間間隔でアプリケーション仮想再現サーバ210Bに送信する。
また例えば、ネットワーク通信再現部412は、まず、対象パケットをアプリケーション仮想再現サーバ210Bに送信するタイミングを処理タイミングとして対象パケット毎に前記処理間隔に基づいて決定する。
次に、ネットワーク通信再現部412は、対象パケットがTCP(Transmission Control Protocol)ヘッダを含んだTCPパケットである場合、クライアントが前記TCPパケットを送信したときにアプリケーション仮想サーバ210から受信済みであるデータ量を示す値として前記TCPヘッダに設定された応答確認番号を前記TCPヘッダから取得する。
そして、ネットワーク通信再現部412は、取得した応答確認番号とアプリケーション仮想再現サーバ210Bから受信したデータ量とが一致したタイミングと、前記TCPパケットの処理タイミングとのうち、遅い方のタイミングで前記TCPパケットをアプリケーション仮想再現サーバ210Bに送信する。
図6は、実施の形態1における各装置のハードウェア資源の一例を示す図である。
図6において、各装置(アプリケーションサーバ200、検証用サーバ300、パケット再送サーバ400)は、CPU911(マイクロプロセッサ、マイクロコンピュータともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、ドライブ装置904、プリンタ装置906、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。ドライブ装置904は、FD(Flexible・Disk・Drive)、CD(Compact Disc)、DVD(Digital・Versatile・Disc)などの記憶媒体を読み書きする装置である。
通信ボード915は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
磁気ディスク装置920には、OS921(オペレーティングシステム)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU911により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
ファイル群924には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
図7は、実施の形態1における障害再現方法を示すフローチャートである。
実施の形態1における障害再現方法について、図7に基づいて以下に説明する。
まず、検証用サーバ300において、検証用仮想マシンモニタ部310のスナップショット再生部311がスナップショット201に基づいて障害発生前のアプリケーション仮想サーバ210を再現する(S100:スナップショット再生処理)。
次に、パケット再送サーバ400において、実行トレース再生部410のターゲット同期部411がネットワークパケット情報202に基づいてパケットデータの送信開始タイミングを決定する(S200:ターゲット同期処理)。
そして、パケット再送サーバ400において、実行トレース再生部410のネットワーク通信再現部412がネットワークパケット情報202に基づいて障害発生までに送信されたパケットデータをアプリケーション仮想再現サーバ210Bへ送信する(S300:ネットワーク通信再現処理)。
ネットワーク通信再現処理(S300)で送信されたパケットデータを処理したアプリケーション仮想再現サーバ210Bが障害を再現した場合(S199「YES」)、障害再現方法は終了する。利用者は、障害再現結果に基づいて障害要因を特定し、オンラインシステム100を改正する。
アプリケーション仮想再現サーバ210Bが障害を再現しなかった場合(S199「NO」)、利用者はS100〜S300を再度実行させる。
図8は、実施の形態1におけるターゲット同期処理(S200)のフローチャートである。
実施の形態1におけるターゲット同期処理(S200)について、図8に基づいて以下に説明する。
<S210>
ターゲット同期部411は、ネットワークパケット情報202の先頭に設定されているパケットデータ(以下、「先頭収集パケット」という)を参照する。
S210の後、処理はS211に進む。
<S211>
ターゲット同期部411は、S210で参照した先頭収集パケットが「クライアントからサーバ(アプリケーション仮想サーバ210)へのパケット」と「サーバからクライアントへのパケット」とのいずれであるかを判定する。
以下、「クライアントからサーバへのパケット」をパケット再送サーバ400が再送する「送信収集パケット」という。
また、「サーバからクライアントへのパケット」を「受信収集パケット」という。
例えば、ターゲット同期部411は図3のネットワークパケット情報202を参照して先頭収集パケットが「受信収集パケット」であると判定する。
また例えば、ターゲット同期部411は図4のネットワークパケット情報202を参照して先頭収集パケットが「送信収集パケット」であると判定する。
先頭収集パケットが「受信収集パケット」である場合、処理はS212に進む。
先頭収集パケットが「送信収集パケット」である場合、処理はS213に進む。
<S212>
S211において先頭収集パケットが「受信収集パケット」である場合、ターゲット同期部411は、先頭収集パケットに相当するパケットデータをアプリケーション仮想再現サーバ210Bから受信するのを待つ。
そして、ターゲット同期部411は、アプリケーション仮想再現サーバ210Bから最初に受信したパケットデータを先頭収集パケットに相当するパケットデータであると判断する。
アプリケーション仮想再現サーバ210Bからパケットデータを受信したとき、ターゲット同期処理(S200)は終了する。
<S213>
S211において先頭収集パケットが「送信収集パケット」である場合、ターゲット同期部411は、ICMPタイムスタンプ要求を周期的にアプリケーション仮想再現サーバ210Bへ送信し、アプリケーション仮想再現サーバ210BからICMPタイムスタンプ応答を受信するのを待つ(ポーリング)。
ICMPタイムスタンプ要求は現在のシステム時刻の応答を要求するためのパケットデータであり、ICMPタイムスタンプ応答は現在のシステム時刻を応答するためのパケットデータである。
アプリケーション仮想再現サーバ210BからICMPタイムスタンプ応答を受信した場合、ターゲット同期部411は、アプリケーション仮想再現サーバ210Bが稼働開始したと判断する。
さらに、ターゲット同期部411は、受信したICMPタイムスタンプ応答からアプリケーション仮想再現サーバ210Bの現在のシステム時刻を取得する。
S213の後、処理はS214に進む。
<S214>
ターゲット同期部411は、S213において取得したアプリケーション仮想再現サーバ210Bのシステム時刻に基づいて、ネットワークパケット情報202内の先頭収集パケット(送信収集パケット)の送信タイミングを待つ。
このとき、ターゲット同期部411は、アプリケーション仮想再現サーバ210Bのシステム時刻と先頭収集パケットの収集時刻とを比較する。
先頭収集パケットの収集時刻がアプリケーション仮想再現サーバ210Bのシステム時刻以降の時刻である場合、ターゲット同期部411は、アプリケーション仮想再現サーバ210Bのシステム時刻と先頭収集パケットの収集時刻との時間差を待ち時間として算出し、待ち時間を経過した時点を送信タイミングとして待ち時間の経過を待つ。
先頭収集パケットの収集時刻がアプリケーション仮想再現サーバ210Bのシステム時刻以前の時刻である場合、ターゲット同期部411は、比較した時点を送信タイミングとする。
例えば、アプリケーション仮想再現サーバ210Bのシステム時刻が「12時00分00秒100ミリ秒」であり、先頭収集パケットの収集時刻がアプリケーション仮想再現サーバ210Bのシステム時刻から5秒後の「12時00分05秒100ミリ秒」である場合、ターゲット同期部411は、先頭収集パケットの送信タイミングを「5秒後」とし、「5秒」経過するのを待つ。
送信タイミングになったとき、ターゲット同期処理(S200)は終了する。
ターゲット同期処理(S200)に続けて、次に説明するネットワーク通信再現処理(S300)が実行される。
図9は、実施の形態1におけるネットワーク通信再現処理(S300)のフローチャートである。
実施の形態1におけるネットワーク通信再現処理(S300)について、図9に基づいて以下に説明する。
以下、パケットデータをIPパケットとして説明する。
<S310>
ネットワーク通信再現部412は、ネットワークパケット情報202からパケットデータを一つ取り出す。
S310から後述するS332までの処理はループ処理される。
ネットワーク通信再現部412は、初回のループ時にはネットワークパケット情報202から先頭のパケットデータを取り出し、2回目のループ時にはネットワークパケット情報202から2番目のパケットデータを取り出し、X回目のループ時にはネットワークパケット情報202からX番目のパケットデータを取り出す。
S310の後、処理はS311に進む。
<S311>
ネットワーク通信再現部412は、S310で取り出したパケットデータが「送信収集パケット」と「受信収集パケット」とのいずれであるか判定する。
「送信収集パケット」である場合、処理はS320に進む。
「受信収集パケット」である場合、処理はS332に進む。
<S320>
ネットワーク通信再現部412は、送信収集パケット(IPパケット)のIPヘッダを参照し、上位プロトコルが「TCP」であるか否かを判定する。
上位プロトコルが「TCP」である場合、処理はS321に進む。
上位プロトコルが「TCP」以外(例えば、UDP、ICMP)である場合、処理はS330に進む。
<S321>
S320において上位プロトコルが「TCP」である場合、ネットワーク通信再現部412は、送信収集パケットのTCPヘッダを参照し、送信収集パケットがコネクション確立を要求する「SYN」パケットであるか否かを判定する。
オンラインシステム100では、クライアントが「SYN」パケットを送信してアプリケーション仮想サーバ210とコネクションを確立しているものとする。
送信収集パケットが「SYN」パケットである場合(YES)、処理はS322に進む。
送信収集パケットが「SYN」パケット以外である場合(NO)、処理はS323に進む。
<S322>
ネットワーク通信再現部412は、「SYN」パケットのTCPヘッダに設定されている各種情報をコネクション情報として記憶する。
例えば、ネットワーク通信再現部412は、以下に説明するTCP通信状況管理テーブル491にコネクション情報を設定する。TCP通信状況管理テーブル491は再送用記憶部490に記憶されているものとする。
図10は、実施の形態1におけるTCP通信状況管理テーブル491の構造図である。
実施の形態1におけるTCP通信状況管理テーブル491について、図10に基づいて以下に説明する。
TCP通信状況管理テーブル491には、コネクション情報として「コネクション番号」「クライアント情報(IP)」「クライアント情報(PORT番号)」「ターゲット情報(IP)」「ターゲット情報(PORT番号)」「パケット情報取得時のシーケンス番号」「パケット再送時のシーケンス番号」「受信パケットのシーケンス番号」「受信パケットのデータ長」が設定される。
「コネクション番号」は、コネクションの識別番号(通番)であり、ネットワーク通信再現部412により採番される。
「クライアントIPアドレス」および「クライアントPORT番号」は、「SYN」パケットのTCPヘッダに設定された「送信元IPアドレス」および「送信元ポート番号」である。
「ターゲットIPアドレス」および「ターゲットPORT番号」は、「SYN」パケットのTCPヘッダに設定された「宛先IPアドレス」および「宛先ポート番号」である。
「パケット情報取得時のシーケンス番号」は、ネットワークパケット情報202内の受信収集パケットのうち「SYN/ACK」パケットのTCPヘッダに設定された「シーケンス番号」(初期シーケンス番号)である。
ネットワーク通信再現部412は、S322(図9)においてTCP通信状況管理テーブル491にコネクション情報を設定する際、ネットワークパケット情報202から当該コネクションの「SYN/ACK」パケットを検索し、当該「SYN/ACK」パケットのTCPヘッダに設定されている「シーケンス番号」を「パケット情報取得時のシーケンス番号」に設定するものとする。コネクションは「送信元IPアドレス」「送信元ポート番号」「宛先IPアドレス」「宛先ポート番号」で識別される。
オンラインシステム100ではクライアントがアプリケーション仮想サーバ210に「SYN」パケットを送信するため、「SYN」パケットの応答である「SYN/ACK」パケットはアプリケーション仮想サーバ210から送信された「受信収集パケット」としてネットワークパケット情報202に設定される。
「パケット再送時のシーケンス番号」「受信パケットのシーケンス番号」「受信パケットのデータ長」は、アプリケーション仮想再現サーバ210Bから受信したパケットのTCPヘッダに基づいて設定される。
ネットワーク通信再現部412は、ネットワーク通信再現処理(S300)において、図9に示す処理(S310〜S332)と並行して、アプリケーション仮想再現サーバ210Bから送信されたパケットを受信する。
そして、ネットワーク通信再現部412は、受信したパケットに基づいて「パケット再送時のシーケンス番号」「受信パケットのシーケンス番号」「受信パケットのデータ長」を更新する。
「パケット再送時のシーケンス番号」は、「SYN」パケットを以降の処理で送信した後に、アプリケーション仮想再現サーバ210Bから受信した「SYN/ACK」パケットのTCPヘッダに設定された「シーケンス番号」(初期シーケンス番号)である。
「受信パケットのシーケンス番号」は、コネクション確立後にアプリケーション仮想再現サーバ210Bから受信したACKパケットのTCPヘッダに設定された「シーケンス番号」である。
「受信パケットのデータ長」は、コネクション確立後にアプリケーション仮想再現サーバ210Bから受信したパケットのTCPのデータ長である。TCPのデータ長はIPヘッダに設定された「データ長」に基づいて算出される。
ネットワーク通信再現部412は、アプリケーション仮想再現サーバ210Bから受信したパケットに対応するコネクション情報がTCP通信状況管理テーブル491に設定されていない場合、受信したパケットのTCPヘッダに基づいて、TCP通信状況管理テーブル491に新たなコネクションのコネクション情報を追加する。
追加のコネクション情報として設定される項目は、「コネクション番号」「クライアント情報(IP)」「クライアント情報(PORT番号)」「ターゲット情報(IP)」「ターゲット情報(PORT番号)」「受信パケットのシーケンス番号」「受信パケットのデータ長」である。
「パケット情報取得時のシーケンス番号」「パケット再送時のシーケンス番号」は設定できないため(また、不要であるため)、初期値(0)のままである。
図9に戻り、ネットワーク通信再現処理(S300)の説明を続ける。
S322の後、処理はS325に進む。
<S325>
ネットワーク通信再現部412は、TCP通信状況管理テーブル491に基づいて送信収集パケットのTCPヘッダ(「ACK番号(確認応答番号)」「チェックサム」)を編集する。
ネットワーク通信再現部412は、「ACK番号」に「パケット情報取得時のシーケンス番号」と「パケット再送時のシーケンス番号」との差分を加算する。これにより、「ACK番号」はアプリケーション仮想再現サーバ210Bとのコネクションに対応する「ACK番号」を示す。
例えば、図10のコネクション番号「1」のコネクションでは、「パケット情報取得時のシーケンス番号」と「パケット再送時のシーケンス番号」との差分が「6543(=7777−1234)」である。したがって、ネットワーク通信再現部412は、送信収集パケットの「ACK番号」に「6543」を加算する。
また、「パケット情報取得時のシーケンス番号」と「パケット再送時のシーケンス番号」とが同じである場合(初期値「0」を含む)、アプリケーション仮想サーバ210とのコネクションに対応している「ACK番号」とアプリケーション仮想再現サーバ210Bとのコネクションに対応する「ACK番号」とは同じであるため、「ACK番号」の変更は不要である。
ネットワーク通信再現部412は、編集後の「ACK番号」を含んだTCPヘッダの設定値に基づいて「チェックサム」を再計算する。
S325の後、処理はS330に進む。
S330の説明の前に、S323に戻って説明を続ける。
<S323>
S321において送信収集パケットが「SYN」パケット以外である場合(NO)、ネットワーク通信再現部412は、送信収集パケットのTCPヘッダを参照し、送信収集パケットに対応するコネクション情報がTCP通信状況管理テーブル491に有るか判定する。
送信収集パケットに対応するコネクション情報がTCP通信状況管理テーブル491に有る場合、処理はS325に進む。
送信収集パケットに対応するコネクション情報がTCP通信状況管理テーブル491に無い場合、処理はS324に進む。
<S324>
ネットワーク通信再現部412は、送信収集パケットのTCPヘッダに基づいて、TCP通信状況管理テーブル491に新たなコネクションのコネクション情報を追加する。
追加のコネクション情報として設定される項目は、「コネクション番号」「クライアント情報(IP)」「クライアント情報(PORT番号)」「ターゲット情報(IP)」「ターゲット情報(PORT番号)」「受信パケットのシーケンス番号」「受信パケットのデータ長」である。
「パケット情報取得時のシーケンス番号」「パケット再送時のシーケンス番号」は設定できないため(また、不要であるため)、初期値(0)のままである。
S324の後、処理はS325に進む。
次に、S330から説明を続ける。
<S330>
ネットワーク通信再現部412は、送信収集パケットをアプリケーション仮想再現サーバ210Bへ送信可能か判定する。
ネットワーク通信再現部412は、S320で判定した送信収集パケットのプロトコルが「TCP」である場合、以下の条件(1)と(2)とを満たしていれば送信収集パケットを送信可能と判定する。
ネットワーク通信再現部412は、S320で判定した送信収集パケットのプロトコルが「TCP」以外である場合、以下の条件(1)を満たしていれば送信収集パケットを送信可能と判定する。
(1)前回の送信収集パケットの送信時からの経過時間が両送信収集パケットの送信時間間隔になった。
(2)送信収集パケットの送信前に受信すべきパケットをアプリケーション仮想再現サーバ210Bから受信済みである。
上記条件(1)について説明する。
ネットワーク通信再現部412は、前回処理した送信収集パケットの収集時刻と今回処理している送信収集パケットの収集時刻との時間差を両送信収集パケットの送信時間間隔として算出する。収集時刻はネットワークパケット情報202の設定値である。
ネットワーク通信再現部412は、前回の送信収集パケットの送信時からの経過時間と両送信収集パケットの送信時間間隔とを比較し、経過時間が送信時間間隔を過ぎていれば(一致を含む)上記条件(1)を満たすと判定する。各送信収集パケットの送信時刻は、後述するS331において記憶される。
上記条件(2)について説明する。
ネットワーク通信再現部412は、送信収集パケットの「ACK番号」と送信収集パケットに対応するコネクション情報(491)の「受信パケットのシーケンス番号」「受信パケットのデータ長」とに基づいて、上記条件(2)を満たすか否かを判定する。
「ACK番号」は「受信済データのシーケンス番号+1」を示す。
「受信パケットのシーケンス番号」はアプリケーション仮想再現サーバ210Bから受信したパケットに設定されている先頭データのシーケンス番号を示す。
「受信パケットのデータ長」はアプリケーション仮想再現サーバ210Bから受信したパケットに設定されているデータのサイズを示す。
したがって、「ACK番号」≦「受信パケットのシーケンス番号」+「受信パケットのデータ長」であれば、上記条件(2)を満たす。
「ACK番号」>「受信パケットのシーケンス番号」+「受信パケットのデータ長」であれば、上記条件(2)を満たさない。
ネットワーク通信再現部412は上記条件(1)を満たし、TCPの場合にはさらに上記条件(2)を満たすまで待つ。
上記条件(1)を満たし、TCPの場合にはさらに上記条件(2)を満たしたとき(YES)、処理はS331に進む。
<S331>
ネットワーク通信再現部412は、送信収集パケットをアプリケーション仮想再現サーバ210Bに送信し、送信時刻を記憶する。
S331の後、処理はS332に進む。
<S332>
ネットワーク通信再現部412は、ネットワークパケット情報202内の送信収集パケットを全て送信したか判定する。
ネットワーク通信再現部412は、S310においてネットワークパケット情報202から全てのパケットデータを取り出した場合にネットワークパケット情報202内の送信収集パケットを全て送信したと判定する。
ネットワークパケット情報202内の送信収集パケットを全て送信した場合(YES)、ネットワーク通信再現処理(S300)は終了する。
ネットワークパケット情報202内の送信収集パケットを全て送信していない場合(NO)、処理はS310に戻る。
実施の形態1において、例えば、以下のようなサーバアプリケーションの障害再現方式について説明した。
仮想マシンを用いてサーバを構築し、一般的なTCP/IPを用いてネットワーク通信を行うネットワークシステムのサーバアプリケーション(210)の障害を再現する。
障害再現方式では、事前に取得した仮想マシンのメモリ/ディスク等のスナップショット情報と、スナップショット取得後のネットワークを流れるパケットを取得したネットワークパケット情報とを用いる。
仮想化ソフトウェアをインストールした検証用サーバとパケット再送サーバからなる検証環境において、検証用サーバ上でスナップショット情報から障害発生前の仮想マシンを再生し、仮想マシンの再生完了タイミングをポーリングにより確認し、パケット再送サーバからネットワークパケット情報を送信してネットワーク通信を再現する。
これにより、障害発生までのサーバアプリケーションの動作を再現し、サーバアプリケーションの障害再現を行う。
これにより、サーバアプリケーションが動作中に任意のタイミングで取得したスナップショットからもアプリケーションの動作を再現するため、仮想マシンの再生完了と同期してネットワークパケット情報を送信することで、サーバアプリケーション動作中のネットワーク通信を再現し、動作途中の状態からの障害再現も実現できる。
そして、仮想マシンのスナップショット情報と、ネットワークを流れるパケット情報を用いてネットワーク通信を再現してサーバアプリケーションの障害を再現可能となることにより、障害再現試験を検証用の環境で行うことが可能となるため、障害再現のために、障害発生環境と同一の環境を用意する必要がなくなる。
また、仮想マシン再生タイミングに合わせて、パケット送信を行う機能を実現したことと、TCP通信も含めたネットワーク通信の再現を実現したこととにより、アプリケーションの動作途中からの障害再現が可能となる。スナップショット情報とネットワークパケット情報を定期的に取得することにより、障害発生直前の状態から再現試験が可能となるため、障害解析にかかる時間を短縮可能である。
TCP通信も含めたネットワーク通信の再現が可能となったことで、仮想マシンを使用しない環境においても、ネットワークパケット情報を取得しておくことによって、検証用の環境で障害再現が可能となる。
実施の形態2.
アプリケーションサーバ(アプリケーション仮想サーバ210)とパケット収集サーバ(情報収集仮想サーバ220)とのシステム時刻のずれに応じて、送信収集パケットの送信タイミングを補正する形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項は実施の形態1と同様である。
オンラインシステム100(図1参照)では、スナップショット201の取得時にアプリケーション仮想サーバ210からネットワーク110にアプリケーション仮想サーバ210のシステム時刻を示すパケットデータが送出されるものとする。
例えば、オンラインシステム100において、スナップショット201の取得時刻に情報収集仮想サーバ220、クライアントまたはその他の管理端末(図示省略)からアプリケーション仮想サーバ210へICMPタイムスタンプ要求を送信することにより、アプリケーション仮想サーバ210にICMPタイムスタンプ応答を返送させる運用を行う。
図11は、実施の形態2におけるネットワークパケット情報202の一例である。
図11に示すように、ネットワークパケット情報202にはICMPタイムスタンプ要求およびICMPタイムスタンプ応答が含まれるものとする。
図12は、実施の形態2におけるターゲット同期処理(S200)のフローチャートである。
実施の形態2におけるターゲット同期処理(S200)について、図12に基づいて以下に説明する。
図12は、実施の形態1(図8参照)のフローチャートにS220〜S223を追加したものである。
以下、S220〜S223について説明する。
<S220>
S211においてネットワークパケット情報202内の先頭収集パケットが「送信収集パケット」である場合、ターゲット同期部411は、ネットワークパケット情報202にICMPタイムスタンプ応答のパケットデータが含まれているか判定する。
ICMPタイムスタンプ応答が有る場合、処理はS221に進む。
ICMPタイムスタンプ応答が無い場合、処理はS213に進む。
<S221>
ターゲット同期部411は、S213と同じく、ICMPタイムスタンプ要求をアプリケーション仮想再現サーバ210Bに送信し、アプリケーション仮想再現サーバ210BからのICMPタイムスタンプ応答の受信を待ち、ICMPタイムスタンプ応答からアプリケーション仮想再現サーバ210Bのシステム時刻を取得する。
S221の後、処理はS222に進む。但し、S222はS221と並行して(ICMPタイムスタンプ応答待ちの間に)実行されてもよい。
<S222>
ターゲット同期部411は、ネットワークパケット情報202内のICMPタイムスタンプ応答の収集時刻とそのICMPタイムスタンプ応答に設定されているアプリケーション仮想サーバ210のシステム時刻との時間差を収集時刻誤差として算出する。
例えば、アプリケーション仮想サーバ210のシステム時刻が「12時00分10秒000ミリ秒」であり、収集時刻が「12時00分10秒100ミリ秒」である場合、収集時刻誤差は「−100ミリ秒」である。
S222の後、処理はS223に進む。
<S223>
ターゲット同期部411は、S221において取得したアプリケーション仮想再現サーバ210Bのシステム時刻とS222において算出した収集時刻誤差とに基づいて、ネットワークパケット情報202内の先頭収集パケット(送信収集パケット)の送信タイミングを待つ。
このとき、ターゲット同期部411は、先頭収集パケットの収集時刻を収集時刻誤差で補正した補正時刻を算出し、アプリケーション仮想再現サーバ210Bのシステム時刻と補正時刻とを比較する。
例えば、収集時刻が「12時00分05秒100ミリ秒」であり、収集時刻誤差が「−100ミリ秒」である場合、補正時刻は「12時00分05秒000ミリ秒」である。
補正時刻は、先頭収集パケットが送信されたときのアプリケーション仮想サーバ210のシステム時刻を示す。
ターゲット同期部411は、先頭収集パケットの補正時刻がアプリケーション仮想再現サーバ210Bのシステム時刻以降の時刻である場合、アプリケーション仮想再現サーバ210Bのシステム時刻と先頭収集パケットの補正時刻との時間差を待ち時間として算出し、待ち時間を経過した時点を送信タイミングとして待ち時間の経過を待つ。
先頭収集パケットの補正時刻がアプリケーション仮想再現サーバ210Bのシステム時刻以前の時刻である場合、ターゲット同期部411は、比較した時点を送信タイミングとする。
送信タイミングになったとき、ターゲット同期処理(S200)は終了する。
ターゲット同期処理(S200)を実行するか否かを利用者に判断させてもよい。
例えば、パケット再送サーバ400の実行パラメータとして「同期要求」を設ける。
図13は、実施の形態2におけるターゲット同期処理(S200)のフローチャートの別例である。
図13は、図12のフローチャートにS230を追加したものである。
<S230>
ターゲット同期処理(S200)の始めに、ターゲット同期部411は、パケット再送サーバ400の実行パラメータを参照し、同期要求の設定有無を判定する。
同期要求の設定が有る場合、処理はS210に進み、同期要求の設定が無い場合、ターゲット同期処理(S200)は終了する。
実施の形態2において、例えば、以下のようなサーバアプリケーションの障害再現方式について説明した。
仮想マシン(アプリケーション仮想サーバ210)のメモリ/ディスク等のスナップショット情報を取得する際に、取得完了タイミングの目印としてICMPタイムスタンプ要求を用いる。これにより、このパケットからスナップショット取得完了時点の仮想マシンのシステム時刻を入手する。次に、仮想マシン(アプリケーション仮想再現サーバ210B)の再生完了タイミングをICMPタイムスタンプ要求でポーリングすることにより、再生完了時のシステム時刻も入手する。このシステム時刻を元にパケット送信開始時刻を決定することで、実際に動作していたときと同じタイミングでパケットを送信してサーバアプリケーションの障害再現を行う。
また、仮想マシンの再生完了タイミングに同期せずに、任意のタイミングでパケットを送信する。
実施の形態3.
パケット再送サーバを仮想マシンとして実装し、1台のサーバ装置で障害を再現させる形態について説明する。
以下、実施の形態1また実施の形態2と異なる事項について主に説明する。説明を省略する事項は実施の形態1または実施の形態2と同様である。
図14は、実施の形態3における障害再現システム101の構成図である。
実施の形態3における障害再現システム101の構成について、図14に基づいて以下に説明する。
障害再現システム101は、1台のサーバ装置(検証用サーバ300)を有する。パケット再送サーバ400およびネットワーク111は不要である。
検証用サーバ300は、アプリケーション仮想再現サーバ210B、検証用仮想マシンモニタ部310および検証用記憶部390の他に、パケット再送仮想サーバ320を備える。
パケット再送仮想サーバ320は、パケット再送サーバ400に相当する仮想マシンであり、再送用仮想記憶部329にネットワークパケット情報202を記憶していると共に実行トレース再生部410を備える。
アプリケーション仮想再現サーバ210Bとパケット再送仮想サーバ320とは、パケットデータをネットワーク111を介して送受信する代わりに、パケットデータを互いの入出力インタフェース(所定のメモリ領域)を用いて入出力する。
実施の形態3において、例えば、以下のようなサーバアプリケーションの障害再現方式について説明した。
検証環境として検証用サーバのみを用意し、検証用サーバ上に仮想マシンとしてパケット再送サーバを配置し、サーバアプリケーションの障害再現を行う。これにより、実際のネットワークを介することなく、検証用サーバ1台でも障害再現を行うことができる。
実施の形態4.
TCP/IPネットワークの通信を再現する通信再現システムについて説明する。
図15は、実施の形態4における通信再現システム102の構成図である。
通信再現システム102は、ネットワーク通信再現装置500(通信再現装置の一例)とターゲットサーバ140(パケット処理装置の一例)とを有する。ターゲットサーバ140は実施の形態1におけるアプリケーション仮想サーバ210(アプリケーション仮想再現サーバ210B)に相当する。ネットワーク通信再現装置500は図4に示したハードウェアを備える。
ネットワーク通信再現装置500とターゲットサーバ140とは通信伝送路112で接続されている。
ネットワーク通信再現装置500は、データ読み込みインタフェース510、通信ポート520、記憶装置590およびネットワーク通信再現部412を備える。ネットワーク通信再現部412は実施の形態1で説明した機能である。
データ読み込みインタフェース510は、外部デバイス(磁気ディスク装置、ドライブ装置、ネットワークに接続された通信ボード)からデータを読み込む機器である。
記憶装置590には、データ読み込みインタフェース510により読み込まれたネットワークパケット情報202が記憶されている。また、記憶装置590にはネットワーク通信再現部412により編集されるTCP通信状況管理テーブル491が記憶される。ネットワークパケット情報202およびTCP通信状況管理テーブル491は、実施の形態1で説明したデータである。
通信ポート520は、ターゲットサーバ140と通信伝送路112を介して通信する機器である。
ネットワーク通信再現部412は、パケット再送制御部531、パケット生成部532、非TCPパケット送信部533、TCPパケット送信部534(第1のタイミング決定部、第2のタイミング決定部、パケット入力部の一例)およびキャプチャ部535を備える。
パケット再送制御部531は、実施の形態1(図9参照)で説明したS310、S311、S320〜S324、S332を実行する。ターゲットサーバ140(IPアドレス)が指定されていない場合、パケット再送制御部531は、ネットワークパケット情報202内のパケットデータを全て「送信収集パケット」として扱う。
パケット生成部532は、実施の形態1(図9参照)で説明したS325を実行する。
非TCPパケット送信部533は、プロトコルが「TCP」でない送信収集パケットについて実施の形態1(図9参照)で説明したS330およびS331を実行する。
TCPパケット送信部534は、プロトコルが「TCP」である送信収集パケットについて実施の形態1(図9参照)で説明したS330およびS331を実行する。
キャプチャ部535は、ターゲットサーバ140から受信したパケットデータに基づいてTCP通信状況管理テーブル491のコネクション情報を編集する。
実施の形態1〜実施の形態3のネットワーク通信再現部412はパケット再送制御部531〜キャプチャ部535を備えている。
実施の形態4において、例えば、以下のようなネットワーク通信再現方式について説明した。
事前に取得したネットワークパケット情報をネットワークに送信し、TCP通信も含めたネットワーク通信を再現する。
ネットワーク通信再現方式には以下の手段が備わる。
パケットを送信する対象となるサーバ(ターゲットサーバ140)からの受信収集パケットがネットワークパケット情報中に存在した場合は、該当するパケットを破棄する手段(パケット再送制御部531)。
TCPプロトコルのパケットに対してコネクション接続を行う手段(パケット再送制御部531)。
コネクション接続に成功したクライアントとサーバのIPアドレスとPORT番号、コネクション接続時にサーバから送られてきた初期シーケンス番号、ネットワークパケット情報中の初期シーケンス番号をTCP通信状況管理部(TCP通信状況管理テーブル491)に登録して管理する手段(パケット再送制御部531)。
コネクション接続済みのパケットのTCPヘッダをTCP通信状況管理部の情報を元に編集してパケットを生成する手段(パケット生成部532)。
TCP通信状況管理部の情報を元にパケット送信可能となるまで待つための手段(TCPパケット送信部534)。
サーバからのパケット受信時に、TCP通信状況管理部に受信収集パケットのシーケンス番号とデータ長を登録する手段(キャプチャ部535)。
TCPプロトコル以外は、時間情報とパケットデータを含むネットワークパケット情報からパケット送信時間を決定して待つための手段(非TCPパケット送信部533)。
生成したパケットをネットワークに送信する手段(通信ポート520)。
さらに、ネットワーク通信再現方式には以下の手段が備わる。
コネクション接続処理を行っていないTCPプロトコルのパケットがネットワークパケット情報の中に存在した場合、TCP通信状況管理部に、パケット送信時に新たにコネクション接続を行ったコネクションと区別がつくように管理する手段(キャプチャ部535)。
新たにコネクション接続を行っていないパケットに対しては、TCPヘッダの編集を行わない手段(パケット生成部532)。
これにより、ネットワーク通信再現装置からのパケット送信時にコネクション接続を行ったパケットと行っていないパケットが混在しても、ネットワーク通信を再現できる。
さらに、ネットワーク通信再現方式には以下の手段が備わる。
複数のコネクション接続を管理する手段(TCP通信状況管理テーブル491)。
これにより、複数のコネクションが接続された状況でもネットワーク通信を再現できる。
さらに、ネットワーク通信再現方式には以下の手段が備わる。
パケットを送信する対象となるサーバが指定されていない場合、ネットワークパケット情報に含まれるすべてのパケットに対して、時間情報とパケットデータを含むネットワークパケット情報からパケット送信時間を決定して待つための手段(パケット再送制御部531)。
生成したパケットをネットワークに送信することで、ネットワーク通信を再現する手段(非TCPパケット送信部533、TCPパケット送信部534)。
TCPパケット送信部534は、TCPパケットを送受信する通信装置(アプリケーションサーバ200)へネットワークを介して送信されると共に前記ネットワークから対象パケットとして収集された複数のTCPパケット(ネットワークパケット情報202に含まれるTCPパケット)それぞれの収集時刻に基づいて、TCPパケットを入出力するパケット処理装置(ターゲットサーバ140)へ前記対象パケットを入力する第1のタイミング(実施の形態1で説明した条件(1)を満たすタイミング)をCPUを用いて判定する。
さらに、TCPパケット送信部534は、前記対象パケットのTCPヘッダに設定された応答確認番号と、前記パケット処理装置から出力されたTCPパケットのデータ量とに基づいて前記パケット処理装置へ前記対象パケットを入力する第2のタイミング(実施の形態1で説明した条件(2)を満たすタイミング)をCPUを用いて判定する。
そして、TCPパケット送信部534は、前記第1のタイミングと前記第2のタイミングとのうち遅い方のタイミングで前記対象パケットを前記パケット処理装置に入力して前記通信装置による各対象パケットの受信処理を前記パケット処理装置に再現させる。
100 オンラインシステム、101 障害再現システム、102 通信再現システム、110 ネットワーク、111 ネットワーク、112 通信伝送路、120 クライアントA、130 クライアントB、140 ターゲットサーバ、200 アプリケーションサーバ、201 スナップショット、202 ネットワークパケット情報、210 アプリケーション仮想サーバ、210B アプリケーション仮想再現サーバ、211 アプリケーション部、220 情報収集仮想サーバ、221 情報収集部、229 収集情報記憶部、230 オンライン仮想マシンモニタ部、231 スナップショット取得部、300 検証用サーバ、310 検証用仮想マシンモニタ部、311 スナップショット再生部、320 パケット再送仮想サーバ、329 再送用仮想記憶部、390 検証用記憶部、400 パケット再送サーバ、410 実行トレース再生部、411 ターゲット同期部、412 ネットワーク通信再現部、490 再送用記憶部、491 TCP通信状況管理テーブル、500 ネットワーク通信再現装置、510 データ読み込みインタフェース、520 通信ポート、531 パケット再送制御部、532 パケット生成部、533 非TCPパケット送信部、534 TCPパケット送信部、535 キャプチャ部、590 記憶装置、901 表示装置、902 キーボード、903 マウス、904 ドライブ装置、906 プリンタ装置、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

Claims (9)

  1. クライアント装置からネットワークを介して送信されたパケットデータを処理するサーバ装置から取得された前記サーバ装置の特定の時点の特定の情報に基づいて、前記特定の時点の前記サーバ装置を特定時点サーバとしてCPU(Central Proccessing Unit)を用いて再現する特定時点再現装置と、
    前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうち前記クライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、前記特定時点再現装置により再現された特定時点サーバに前記対象パケットを処理させて前記特定の時点から前記障害発生時点までの前記サーバ装置をCPUを用いて再現する障害再現装置と
    を有することを特徴とする障害再現システム。
  2. 前記障害再現装置は、
    複数の対象パケットのうち最初に収集された対象パケットである対象先頭パケットの収集時刻に基づいて、前記特定時点サーバに前記対象先頭パケットを処理させるタイミングを処理開始タイミングとしてCPUを用いて決定する処理開始タイミング決定部と、
    前記処理開始タイミング決定部により決定された処理開始タイミングに前記特定時点サーバへの各対象パケットの入力をCPUを用いて開始して前記特定時点サーバに各対象パケットを処理させる処理要求部と
    を備えたことを特徴とする請求項1記載の障害再現システム。
  3. 前記処理開始タイミング決定部は、前記特定の時点の時刻を再現時のシステム時刻として再現される前記特定時点サーバから前記特定時点サーバのシステム時刻をサーバ時刻として取得し、取得したサーバ時刻と前記対象先頭パケットの収集時刻との時刻差に基づいて前記処理開始タイミングを決定する
    ことを特徴とする請求項2記載の障害再現システム。
  4. 前記処理開始タイミング決定部は、
    前記パケット収集装置により前記特定の時点から前記障害発生時点までの間に収集された複数のパケットデータに、前記サーバ装置から送信されたパケットデータであって前記サーバ装置から送信されたときの前記サーバ装置のシステム時刻を示すパケットデータであるタイムスタンプパケットが含まれる場合、前記タイムスタンプパケットの収集時刻と前記タイムスタンプパケットにより示されるシステム時刻との時刻差を、収集時刻とシステム時刻との時刻差を示す収集時刻誤差として算出し、
    前記対象先頭パケットの収集時刻と前記収集時刻誤差とに基づいて、前記対象先頭パケットが前記サーバ装置へ送信されたときの前記サーバ装置のシステム時刻をサーバ処理開始時刻として算出し、
    前記サーバ時刻と前記サーバ処理開始時刻との時刻差に基づいて前記処理開始タイミングを決定する
    ことを特徴とする請求項3記載の障害再現システム。
  5. 前記処理要求部は、複数の対象パケットそれぞれの収集時刻に基づいて各対象パケットの送信時間間隔を算出し、各対象パケットを前記送信時間間隔で前記特定時点サーバに入力する
    ことを特徴とする請求項2〜請求項4いずれかに記載の障害再現システム。
  6. 前記処理要求部は、対象パケットを前記特定時点サーバに入力するタイミングを処理タイミングとして対象パケット毎に前記送信時間間隔に基づいて決定し、
    対象パケットがTCP(Transmission Control Protocol)ヘッダを含んだTCPパケットである場合、前記クライアント装置が前記TCPパケットを送信したときに前記クライアント装置が前記サーバ装置から受信済みであるデータ量を示す値として前記TCPヘッダに設定された応答確認番号と前記特定時点サーバから出力されたデータ量とが一致したタイミングと、前記TCPパケットの処理タイミングとのうち、遅い方のタイミングで前記TCPパケットを前記特定時点サーバに入力する
    ことを特徴とする請求項5記載の障害再現システム。
  7. 前記特定時点再現装置と前記障害再現装置とを仮想マシンとして備える障害再現仮想装置
    を有することを特徴とする請求項1〜請求項6いずれかに記載の障害再現システム。
  8. 特定時点再現装置が、クライアント装置からネットワークを介して送信されたパケットデータを処理するサーバ装置から取得された前記サーバ装置の特定の時点の特定の情報に基づいて、前記特定の時点の前記サーバ装置を特定時点サーバとしてCPU(Central Proccessing Unit)を用いて再現し、
    障害再現装置が、前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうち前記クライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、前記特定時点再現装置により再現された特定時点サーバに前記対象パケットを処理させて前記特定の時点から前記障害発生時点までの前記サーバ装置をCPUを用いて再現する
    ことを特徴とする障害再現方法。
  9. TCP(Transmission Control Protocol)パケットを送受信する通信装置へネットワークを介して送信されると共に前記ネットワークから対象パケットとして収集された複数のTCPパケットそれぞれの収集時刻に基づいて、TCPパケットを入出力するパケット処理装置へ前記対象パケットを入力する第1のタイミングをCPUを用いて決定する第1のタイミング決定部と、
    前記対象パケットのTCPヘッダに設定された応答確認番号と、前記パケット処理装置から出力されたTCPパケットのデータ量とに基づいて前記パケット処理装置へ前記対象パケットを入力する第2のタイミングをCPUを用いて決定する第2のタイミング決定部と、
    前記第1のタイミング決定部により決定された前記第1のタイミングと前記第2のタイミング決定部により決定された前記第2のタイミングとのうち遅い方のタイミングで前記対象パケットを前記パケット処理装置に入力して前記通信装置による各対象パケットの受信処理を前記パケット処理装置に再現させるパケット入力部と
    を備えたことを特徴とする通信再現装置。
JP2009050406A 2009-03-04 2009-03-04 障害再現システム、障害再現方法および通信再現装置 Pending JP2010205011A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009050406A JP2010205011A (ja) 2009-03-04 2009-03-04 障害再現システム、障害再現方法および通信再現装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009050406A JP2010205011A (ja) 2009-03-04 2009-03-04 障害再現システム、障害再現方法および通信再現装置

Publications (1)

Publication Number Publication Date
JP2010205011A true JP2010205011A (ja) 2010-09-16

Family

ID=42966419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009050406A Pending JP2010205011A (ja) 2009-03-04 2009-03-04 障害再現システム、障害再現方法および通信再現装置

Country Status (1)

Country Link
JP (1) JP2010205011A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012133414A (ja) * 2010-12-17 2012-07-12 Fujitsu Ltd 試験装置、試験方法および試験プログラム
JP2012163997A (ja) * 2011-02-03 2012-08-30 Nec System Technologies Ltd 障害解析支援システム、障害解析支援方法、および障害解析支援プログラム
JP2012216040A (ja) * 2011-03-31 2012-11-08 Nec Corp ログ管理システム、ログ解析装置、ログ解析方法、およびログ解析プログラム
JP5337916B1 (ja) * 2012-09-25 2013-11-06 株式会社東芝 情報処理システム
US20140297767A1 (en) * 2013-03-28 2014-10-02 Fujitsu Limited Information processing apparatus and verification control method
US8914675B2 (en) 2011-08-22 2014-12-16 International Business Machines Corporation Creating data for playing back transactions
CN104965775A (zh) * 2015-04-23 2015-10-07 腾讯科技(深圳)有限公司 应用软件故障现场的重建方法、服务器及终端
CN111625381A (zh) * 2020-04-09 2020-09-04 腾讯音乐娱乐科技(深圳)有限公司 应用程序的运行场景复现方法、装置、设备及存储介质
JP2021128538A (ja) * 2020-02-13 2021-09-02 日本電信電話株式会社 障害要因推定装置及び障害要因推定方法
KR102618465B1 (ko) * 2022-11-24 2023-12-28 쿠팡 주식회사 정보를 제공하는 전자 장치의 동작 방법 및 이를 지원하는 전자 장치

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012133414A (ja) * 2010-12-17 2012-07-12 Fujitsu Ltd 試験装置、試験方法および試験プログラム
JP2012163997A (ja) * 2011-02-03 2012-08-30 Nec System Technologies Ltd 障害解析支援システム、障害解析支援方法、および障害解析支援プログラム
JP2012216040A (ja) * 2011-03-31 2012-11-08 Nec Corp ログ管理システム、ログ解析装置、ログ解析方法、およびログ解析プログラム
US8914675B2 (en) 2011-08-22 2014-12-16 International Business Machines Corporation Creating data for playing back transactions
JP5337916B1 (ja) * 2012-09-25 2013-11-06 株式会社東芝 情報処理システム
US9438607B2 (en) 2013-03-28 2016-09-06 Fujitsu Limited Information processing apparatus and verification control method
US20140297767A1 (en) * 2013-03-28 2014-10-02 Fujitsu Limited Information processing apparatus and verification control method
CN104965775A (zh) * 2015-04-23 2015-10-07 腾讯科技(深圳)有限公司 应用软件故障现场的重建方法、服务器及终端
JP2021128538A (ja) * 2020-02-13 2021-09-02 日本電信電話株式会社 障害要因推定装置及び障害要因推定方法
JP7384063B2 (ja) 2020-02-13 2023-11-21 日本電信電話株式会社 障害要因推定装置及び障害要因推定方法
CN111625381A (zh) * 2020-04-09 2020-09-04 腾讯音乐娱乐科技(深圳)有限公司 应用程序的运行场景复现方法、装置、设备及存储介质
CN111625381B (zh) * 2020-04-09 2024-04-19 腾讯音乐娱乐科技(深圳)有限公司 应用程序的运行场景复现方法、装置、设备及存储介质
KR102618465B1 (ko) * 2022-11-24 2023-12-28 쿠팡 주식회사 정보를 제공하는 전자 장치의 동작 방법 및 이를 지원하는 전자 장치
WO2024111750A1 (ko) * 2022-11-24 2024-05-30 쿠팡 주식회사 정보를 제공하는 전자 장치의 동작 방법 및 이를 지원하는 전자 장치

Similar Documents

Publication Publication Date Title
JP2010205011A (ja) 障害再現システム、障害再現方法および通信再現装置
JP5018663B2 (ja) 遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法
US7904757B2 (en) Activity identifier based tracing and troubleshooting
EP3140960B1 (en) Methods, systems, and computer readable media for providing fuzz testing functionality
US9124669B2 (en) Cooperative client and server logging
US9490992B2 (en) Remote conference saving system for managing missing media data and storage medium
TW200923661A (en) Improved remote universal serial bus access method
CN103259699B (zh) 测试方法、系统及客户端和服务端
CN117155832B (zh) 用于udp传输协议的多端无侵入录制回放测试方法及系统
TW200306720A (en) System and method for monitoring a connection between a server and a passive client device
CN113923140B (zh) 往返时延测量方法、系统和存储介质
US8055991B2 (en) Error detection and recovery using an asynchronous transaction journal
JP5768722B2 (ja) 検証試験のためのプログラム、情報処理方法及び情報処理装置
JP2005165556A (ja) 情報システム
JPH10133916A (ja) 計算機システムにおける問題解析方式及び計算機システムにおける問題解析ツールを記録した媒体
JP5014040B2 (ja) ゲートウェイ装置及びゲートウェイ装置のゲートウェイ方法及びゲートウェイプログラム
JP2010225044A (ja) テストプログラム生成方法、プログラム
JP2008234232A (ja) 自動試験システム、自動試験装置、自動試験方法及びプログラム
CN116302711B (zh) 基于云平台镜像的容灾方法、装置、电子设备及存储介质
JP2003233514A (ja) 分散コンピュータシステム及びタイムアウト値の設定方法
US9516148B2 (en) Computer-readable recording medium, information management method and information management device
JP6024560B2 (ja) 情報処理装置、情報処理システム、検証制御方法およびプログラム
CN115589405A (zh) 日志采集方法、装置、电子设备、介质及产品
JP5312356B2 (ja) 呼接続試験プログラムおよび試験用端末
JP2024040747A (ja) 情報処理装置、シミュレーションシステム及びプログラム