以下に添付図面を参照して、開示の試験プログラム、試験装置、および試験方法の実施の形態を詳細に説明する。
図1は、プールアドレスブロックの選択方法の一例を示す説明図である。実動系アドレス空間101は、実動系のクライアント−サーバ間の通信にて使用されているアドレス空間であり、検証系アドレス空間102は、検証系のクライアント−サーバ間の通信にて使用されているアドレス空間である。なお、アドレスブロックとは、一かたまりになったIPアドレス群のことであり、ネットワークアドレスとネットマスク長を用いて示される。たとえば、アドレスブロック192.168.10.0/27は、192.168.10.0〜192.168.10.31のIPアドレス群を有する。
試験装置100は、実動系のクライアント−サーバ間を流れるパケット群を取得し、各パケットが属するアドレスブロックの個数とネットマスク長を取得する。図1の例では、パケットが属するアドレスブロックとして、以下の8つのアドレスブロックを取得したことを想定する。1つ目の取得したアドレスブロックは、192.168.10.0/27(以下、アドレスブロックAb27−0)となる。また、実動系に関する記号を“A”、検証系に関する記号を“B”とする。
以下、取得するアドレスブロックは、192.168.10.32/27(以下、アドレスブロックAb27−1)、192.168.10.64/27(以下、アドレスブロックAb27−2)、192.168.10.96/27(以下、アドレスブロックAb27−3)、192.168.10.128/27(以下、アドレスブロックAb27−4)、192.168.10.160/27(以下、アドレスブロックAb27−5)、192.168.10.192/27(以下、アドレスブロックAb27−6)、192.168.10.224/27(以下、アドレスブロックAb27−7)となる。それぞれのアドレスブロックには32個のアドレスが存在している。
試験装置100は、取得したアドレスブロックの個数8個と、ネットマスク長27ビットから、アドレス数に応じてビット数減じたネットマスク長を算出する。アドレスブロックは、ネットマスク長が1ビット小さくなるごとにアドレス数が2倍となるため、8倍のアドレス数を有するにはネットマスク長が3ビット小さい値となる。したがって、試験装置100は、ネットマスク長27から3ビット減じた24ビットを算出する。
続けて、試験装置100は、検証系アドレス空間102において、24ビット以下のアドレスブロックを事前検証試験のアドレスブロックとして選択する。図1における検証系アドレス空間102には、未使用のアドレスブロックとして、3つのアドレスブロックが存在することを想定している。具体的には、10.10.10.0/27(以下、アドレスブロックBb27−0)、10.10.20.0/24(以下、アドレスブロックBb24)、10.10.80.0/21(以下、アドレスブロックBb21)である。また、試験装置100は、事前検証試験に用いるアドレスブロックとして、普段は使用せずに収蔵しているプールアドレスブロックを用いる。
試験装置100は、未使用のアドレスブロックのうち、算出されたネットマスク長以下のネットマスク長となるアドレスブロックとなるアドレスブロックBb24を選択する。アドレスブロックBb24には、256個のアドレスが存在しており、実動系のアドレス数は、取得したアドレスブロックの個数8個*32=256個である。したがって、実動系の全てのアドレスが検証系のアドレスに変換できるため、試験装置100は、事前検証試験を実行することができる。変換後、試験装置100は、実動系の全てのアドレスを検証系のアドレスに変換したパケットを検証用サーバBに送信する。
図2は、試験装置100の接続例を示すブロック図である。試験装置100は、実動系クライアント−サーバ間におけるネットワークとなる実動系ネットワーク201と、検証系クライアント−サーバ間におけるネットワークとなる検証系ネットワーク202とを有する。実動系と検証系の両方のインターフェースは必ずしも有する必要はない。
初めに、実動系ネットワーク201には、試験装置100、実動系サーバA0、実動系サーバA1、L3スイッチであるL3#A01〜L3#A07が含まれる。実動系サーバA0はIPアドレスとして20.20.20.20が割り当てられており、実動系サーバA1はIPアドレスとして20.20.20.21が割り当てられている。L3#A01〜L3#A07は、OSI参照モデルにおけるネットワーク層(レイヤ3)データの転送を行う。また、試験装置100は、実動系サーバA0と実動系サーバA1とL3#A01の間に存在し、試験端末Cと実動系サーバA0または実動系サーバA1間のパケットデータをキャプチャする。
L3#A01は、実動系サーバA0、実動系サーバA1、L3#A02、L3#A03、アドレスブロックAb16と接続している。L3#A02は、L3#A01、L3#A04、L3#A05と接続している。L3#A03は、L3#A01、L3#A04、L3#A05、アドレスブロックAb17と接続している。以下、L3#A04〜L3#A07についても、L3#A0x(xは自然数)や、アドレスブロックAb20、アドレスブロックAb27−0、アドレスブロックAb27−1と接続している。図2の例にて、試験端末Cは、アドレスブロックAb27−0内に存在している。
次に、検証系ネットワーク202には、試験装置100、検証系サーバB0、検証系サーバB1、L3スイッチであるL3#B01〜L3#B08が含まれる。検証系サーバB0はIPアドレスとして30.30.30.30が割り当てられており、検証系サーバB1はIPアドレスとして30.30.30.31が割り当てられている。L3#B01〜L3#B08は、L3#A01〜L3#A07と同様にネットワーク層データの転送を行う。また、試験装置100は、選択されたアドレスブロック内に存在する。たとえば、図2では、アドレスブロックBb24が選択された場合を想定しており、試験装置100は、アドレスブロックBb24内に存在している。
L3#B01は、検証系サーバB0、検証系サーバB1、L3#B02、L3#B03、アドレスブロックBb16と接続している。L3#B02は、L3#B01、L3#B04、L3#B05と接続している。L3#B03は、L3#B01、L3#B04、L3#B05、アドレスブロックBb17と接続している。以下、L3#B04〜L3#B08についても、L3#B0x(xは自然数)や、アドレスブロックBb20、アドレスブロックBb21、アドレスブロックBb24、アドレスブロックBb27−0と接続している。
(試験装置100、実動系サーバA、実動系サーバB、試験端末Cのハードウェア)
図3は、実施の形態1で用いられるコンピュータのハードウェア例を示すブロック図である。ここで、コンピュータとは、試験装置100、実動系サーバA、検証系サーバB、クライアントである試験端末Cである。図3において、コンピュータは、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、ディスプレイ308と、I/F(Interface)309と、キーボード310と、マウス311と、を含む。また、各部はバス312によってそれぞれ接続されている。
ここで、CPU301は、コンピュータの全体の制御を司る。ROM302は、OS(Operating System)やアプリケーションといった各種プログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御に従って磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
光ディスクドライブ306は、CPU301の制御に従って光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ308は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)309は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク314に接続され、ネットワーク314を介して他の装置に接続される。そして、I/F309は、ネットワーク314と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード310は、文字、数字、各種指示などの入力のためのキーを含み、データの入力を行う。また、キーボード310は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を有する装置であれば、マウス311は、トラックボールやジョイスティックなどであってもよい。なお、試験装置100は、利用者から直接操作されることが想定されない場合、ディスプレイ308、キーボード310、マウス311、を含まなくてもよい。
(試験装置100の機能)
次に、試験装置100の機能について説明する。図4は、試験装置100の機能を示すブロック図である。試験装置100は、取得部401と、検出部402と、算出部403と、生成部404と、送信部405と、実行部406と、出力部407と、を含む。さらに、試験装置100は、記憶部411と、取得部412と、取得部413と、算出部414と、選択部415と、を含む。
この制御部となる機能(取得部401〜出力部407、取得部412〜選択部415)は、記憶装置に記憶されたプログラムをCPU301が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などである。または、I/F309を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、試験装置100は、パケット記憶情報421、アドレスブロック情報422、IPアドレス対応情報423、フロー情報424にアクセス可能である。パケット記憶情報421〜フロー情報424は、RAM303、磁気ディスク305、光ディスク307といった記憶装置に格納されている。
パケット記憶情報421は、キャプチャされたパケットが記憶されている。パケット記憶情報421の詳細については、図5にて後述する。アドレスブロック情報422は、アドレスブロックに対応させたネットマスク長とアドレスブロックの使用情報とを記憶する。アドレスブロック情報422の詳細は、図6で後述する。IPアドレス対応情報423は、アドレスブロック情報422の1アドレスブロックについて記憶する。IPアドレス対応情報423の詳細については、図7にて後述する。フロー情報424は、アドレスブロック内のIPアドレスが設定された装置と実動系、検証系のサーバとが通信するときに、どのL3スイッチを中継するかを記憶する情報である。フロー情報424の詳細については、図8にて後述する。
取得部401は、パケットを取得する機能を有する。具体的には、たとえば、試験端末Cと実動系サーバAとの間で通信されるパケットや検証系サーバBと試験装置100との間で通信されるパケットをキャプチャする。取得部401で取得されたパケットは、ヘッダ・ペイロード解析され、パケット記憶情報421に格納される。
検出部402は、取得部401によって取得されたパケットの送信先の対象装置の試験開始から当該パケットを取得するまでの取得時間や、送信先の対象装置からの当該パケットの応答パケットを検出する機能を有する。たとえば、検出部402は、送信先の対象装置の試験開始時刻を基準としてパケットを取得したときの経過時間を取得時間として検出する。具体的に、試験開始時刻が“12:00:00.0”であり、試験端末Cから送信されたパケットを取得した時刻が“12:00:02.1”であれば、検出部402は、取得時間tを2.1[秒]として検出する。また、検出部402は、“12:00:02.1”に取得したパケットに対する応答パケットを検出する。
また、取得されたパケットがセッション開始を示す同期パケットであり、かつ試験開始時刻が設定されていない場合、検出部402は、同期パケットの取得時間tをt=0、すなわち、送信先の対象装置の試験開始時刻として検出してもよい。検出部402で検出された取得時刻はパケット記憶情報421に格納される。また、送信先の対象装置の試験開始時刻は、予め試験端末C、試験装置100とで同一の試験開始時刻を設定しておけばよい。試験開始時刻となった段階で、試験端末Cがパケットを送信し、同時に試験装置100がパケットキャプチャを開始することで、試験装置100は、試験と関係のないパケットを拾う機会が減少するため、効率的に試験を行うことができる。
算出部403は、あるパケットがキャプチャされてからそのパケットに応答するパケットがキャプチャされるまでの時間間隔を算出する機能を有する。具体的には、あるパケットの取得時間からそのパケットに応答する応答パケットの取得時間との差の絶対値を時間間隔として算出する。
たとえば、算出部403は、試験端末Cから第1の対象装置に送信された第1のパケットとその応答パケットとなる第1の対象装置から試験端末Cへの第3のパケットとをキャプチャする。算出部403では、第3のパケットの取得時刻から第1のパケットの取得時刻を減算することで、第1の時間間隔を算出する。また、算出部403は、試験装置100から第2の対象装置に送信された第2のパケットとその応答パケットとなる第2の対象装置から試験端末Cへの第4のパケットとをキャプチャする。算出部403では、第4のパケットの取得時刻から第2のパケットの取得時刻を減算することで、第2の時間間隔を算出する。算出部403で算出された時間間隔は、RTT(Round Trip Time)としてパケット記憶情報421に格納される。
生成部404は、パケットが第1の対象装置に送信された第1のパケットである場合、第1のパケットの情報のうち宛先を第2の対象装置のアドレスに書き換えた第2のパケットを生成する機能を有する。
具体的には、たとえば、試験開始後X分後に過去X分間分の送信パケット情報を取得し、宛先IPアドレス、宛先ポート番号、シーケンス番号、確認応答番号を書き換える。シーケンス番号および確認応答番号はセッションを確立する際に乱数を使用するため、事前にセッションの確立を実行することとなる。
また、生成部404は、選択部415によって選択されたアドレスブロックが有する第2のアドレス群の各々のアドレスに第1のパケット群の各々のパケットの送信元を設定した第2のパケット群を生成してもよい。なお、第1のパケット群は、取得部412にて取得する。
たとえば、第1のパケット群が、送信元IPが“192.168.10.2”であるパケット1と“192.168.10.3”であるパケット2であり、また、選択部415によって、アドレスブロックBb24が選択された場合を想定する。このとき、生成部404は、第2のアドレス群の各々のアドレスとして“10.10.20.2”をパケット1の送信元に設定したパケット3、“10.10.20.3”をパケット2の送信元に設定したパケット4を生成する。第2のパケット群は、パケット3とパケット4となる。生成された第2のパケット群は、RAM303、磁気ディスク305、光ディスク307などに記憶される。
送信部405は、第2の対象装置の試験開始から第1のパケットを取得するまでの取得時間を経過したときに、生成部404によって生成された第2のパケットを第2の対象装置に送信する機能を有する。また、送信部405は、選択部415によって選択されたアドレスブロックが有する第2のアドレス群の各々のアドレスに第1のパケット群の各々のパケットの送信元を設定した第2のパケット群を第2の対象装置に送信する。また、第2のパケット群が生成部404によって生成されている場合、送信部405は、生成された第2のパケット群を第2の対象装置に送信してもよい。
実行部406は、第1〜第3の時間間隔da〜dcを用いて、以下のように第1および第2の対象装置の相対的な性能評価処理を実行する。たとえば、実行部406は、第3の時間間隔dcから第2の時間間隔dbの減算結果と第1の時間間隔daとの大小を比較する。
da>dc−dbとなる場合、実行部406は、第2の対象装置となる検証系サーバBの方を、第1の対象装置となる実動系サーバAよりも性能が高いと判断する。da<dc−dbとなる場合、実行部406は、第1の対象装置となる実動系サーバAの方を、第2の対象装置となる検証系サーバBよりも性能が高いと判断する。da=dc−dbとなる場合、実行部406は、第1の対象装置となる実動系サーバAと第2の対象装置となる検証系サーバBとは同一性能と判断する。
また、実行部406は、実動系でのパケットの受信間隔である第1の受信間隔det1と、検証系でのパケットの受信間隔である第2の受信間隔det2を用いて、以下のように第1および第2の対象装置の相対的な性能評価処理を実行してもよい。
det1>det2となる場合、実行部406は、第2の対象装置となる検証系サーバBの方を、第1の対象装置となる実動系サーバAよりも性能が高いと判断する。det1<det2の場合、実行部406は、第1の対象装置となる実動系サーバAの方を、第2の対象装置となる検証系サーバBよりも性能が高いと判断する。det1=det2の場合、実行部406は、第1の対象装置となる実動系サーバAと第2の対象装置となる検証系サーバBとは同一性能と判断する。なお、実行結果は、RAM303、磁気ディスク305、光ディスク307などに記憶される。
出力部407は、実行部406による実行結果を出力する機能を有する。具体的には、たとえば、実行部406による第1および第2の対象装置の相対的な性能評価の結果をディスプレイ308に表示したり、印刷出力したりする。
記憶部411は、アドレスブロックに対応させてネットマスク長とアドレスブロックの使用情報とを記憶する。具体的な記憶内容については、アドレスブロック情報422の説明にて説明を行う。
取得部412は、第1のアドレス群を送信元として第1の対象装置に対して送信した第1のパケット群を取得する機能を有する。たとえば、取得部412は、第1のアドレス群となる実動系アドレス空間101内のアドレスを送信元として第1の対象装置となる実動系サーバAに対して送信した第1のパケット群を取得する。なお、取得したデータは、RAM303、磁気ディスク305、光ディスク307などに記憶される。
取得部413は、記憶部411を参照して、第1のアドレス群が属するアドレスブロックの個数とアドレスブロックのネットマスク長とを取得する機能を有する。たとえば、取得部413は、アドレスブロックの個数として8、アドレスブロックのネットマスク長として27ビットを取得する。なお、取得したデータは、RAM303、磁気ディスク305、光ディスク307などに記憶される。
算出部414は、取得部413によって取得したアドレスブロックの個数とネットマスク長とに基づいて、第1のアドレス群に含まれるアドレス数に応じてビット数分減じたネットマスク長を算出する機能を有する。たとえば、取得したアドレスブロックの個数8個と、ネットマスク長27ビットである場合を想定する。このとき、算出部414は、27から3ビット小さい値として24を算出する。
また、算出部414は、アドレスブロックのネットマスク長から、取得したアドレスブロックの個数に対して2を底とする対数値の小数点以下を切り上げた数値を減じた値を算出してもよい。具体的な計算については、図9にて後述する。なお、算出されたデータは、RAM303、磁気ディスク305、光ディスク307などに記憶される。
選択部415は、記憶部411を参照して、未使用のアドレスブロック群のうち、算出されたネットマスク長以下のネットマスク長となるアドレスブロックを選択する。たとえば、算出部414によって、24ビットが算出された場合、選択部415は、ネットマスク長が24ビット以下となるアドレスブロックを選択する。
また、選択部415は、未使用のアドレスブロック群のうち、算出されたネットマスク長以下のネットマスク長で最も大きいネットマスク長となるアドレスブロックを選択してもよい。たとえば、選択部415は、ネットマスク長が17、20、21、24、25となる未使用のアドレスブロック群が存在し、算出部414によって24であると算出された場合、ネットマスク長が24ビットであるアドレスブロックBb24を選択する。なお、選択されたアドレスブロックの情報は、RAM303、磁気ディスク305、光ディスク307などに記憶される。
図5は、パケット記憶情報421の記憶内容の一例を示す説明図である。パケット記憶情報421は、セッションID項目、時刻情報項目、IP(Internet Protocol)ヘッダ情報項目、TCP(Transmission Control Protocol)ヘッダ情報項目、アプリヘッダ情報項目、ペイロード項目を有する。パケット記憶情報421には、パケットごとに各項目の値が格納される。図5で示すパケット記憶情報421は、各パケットをレコード421−1〜レコード421−16として格納している。セッションID項目には、セッションIDが格納される。同一セッションであれば同一セッションIDが格納される。
時刻情報項目は、時間項目とRTT項目とを有する。時間項目には送信先の対象装置の試験開始からパケットを取得するまでの取得時間が格納される。たとえば、レコード421−1は最初にキャプチャされたパケットのレコードであるため、基準時刻t=0.0が格納される。
また、キャプチャされたパケットが実動系サーバAまたは検証系サーバBからのパケットである場合、RTT項目にRTTも格納される。RTTは、パケットがキャプチャされてからその応答パケットがキャプチャされるまでの時間間隔である。RTTは、算出部403で算出される。
IPヘッダ情報項目は、送信元IP項目と宛先IP項目とを有する。送信元IP項目には、キャプチャされたパケットのIPヘッダに記述されている送信元IPアドレスが格納される。また、宛先IP項目には、キャプチャされたパケットのIPヘッダに記述されている宛先IPアドレスが格納される。図5では、試験端末CのIPアドレスを「192.168.10.2」とし、実動系サーバAのIPアドレスを「20.20.20.20」としている。したがって、1行目のレコード421−1は、試験端末Cから実動系サーバAへのパケットを示しており、2行目のレコード421−2は、その応答パケットを示している。
TCPヘッダ情報項目は、送信元ポート項目、宛先ポート項目、シーケンス番号項目、確認応答番号項目、各種フラグ(SYN(同期)/ACK(確認応答)/PSH(プッシュ)/FIN(通信終了)/RST(リセット要求))項目を有する。送信元ポート項目には、キャプチャされたパケットのTCPヘッダに記述されている送信元ポート番号が格納される。宛先ポート項目には、キャプチャされたパケットのTCPヘッダに記述されている宛先ポート番号が格納される。
シーケンス番号項目には、キャプチャされたパケットのTCPヘッダに記述されているシーケンス番号が格納される。シーケンス番号の初期値は試験端末C・実動系サーバAともに、キャプチャされたパケットの送信元で与えられたランダムな値である。
確認応答番号項目には、キャプチャされたパケットのTCPヘッダに記述されている確認応答番号が格納される。確認応答番号は、受け取った側のコンピュータが受け取ったパケットのシーケンス番号に基づいて付与する値である。たとえば、3ウェイ・ハンドシェイクでは、サーバが受け取ったSYNパケットのシーケンス番号に1加算した値を確認応答番号とする。
フラグ項目には、パケットの種類(SYN/ACK/PSH/FIN/RST)を特定するフラグが格納される。たとえば、レコード421−1のパケットは、SYNパケットである。
アプリヘッダ情報項目には、HTTP(HyperText Transfer Protocol)やPOP(Post Office Protocol)3/IMAP(Internet Message Access Protocol)といった各アプリケーションに関するヘッダ情報が格納される。たとえば、HTTPヘッダであれば、Cookie情報等もアプリヘッダ情報項目に格納される。
ペイロード項目には、キャプチャされたパケットのうちヘッダを除いたデータ本体となるペイロードが格納される。また、TCP/IPに従った通信は、3ウェイハンドシェイクによるセッション確立、データ転送、セッション終了を実行する一連の処理からなる。3ウェイハンドシェイクでは、まず試験端末CがSYNパケット(シーケンス番号:試験端末C側の乱数、確認応答番号:0、SYNフラグ)をパケットとして実動系サーバAに送る。
次に、そのSYNパケットを受け取った実動系サーバAがSYN/ACKパケット(シーケンス番号:実動系サーバA側の乱数、確認応答番号:SYNパケットのシーケンス番号+1、SYNフラグ、ACKフラグ)を試験端末Cに送る。さらに、そのSYN/ACKパケットを受け取った試験端末CがACKパケット(シーケンス番号:実動系サーバA側の確認応答番号、確認応答番号:SYN/ACKパケットのシーケンス番号+1、ACKフラグ)をパケットとして実動系サーバAに送る。図5に示した例では、レコード421−1〜レコード421−3のパケット群とレコード421−14〜レコード421−16のパケット群が、3ウェイハンドシェイクを実行するパケット群である。
図6は、アドレスブロック情報422の記憶内容の一例を示す説明図である。アドレスブロック情報422は、ネットマスク長、アドレスブロック、プールアドレスブロックフラグ、IPアドレス対応情報423へのポインタという4つの項目を含む。アドレスブロック情報422は、アドレスブロックごとに各項目の値が格納される。図6で示すアドレスブロック情報422は、各アドレスブロックをレコード422−1〜レコード422−13として格納している。また、アドレスブロック情報422は、ネットマスク長の降順で登録されている。なお、ネットマスク長は値が大きい程、含まれるアドレス数は少なくなる。
ネットマスク長項目には、アドレスブロックのネットワーク長が格納される。アドレスブロック項目には、登録済みのアドレスブロックのネットワークアドレスが格納される。プールアドレスブロックフラグ項目には、該当のアドレスブロックがプールアドレスブロックであるか否かを示すフラグが格納される。図6で示すプールアドレスブロックフラグ項目は、格納された値が1であればプールアドレスブロックであることを示している。
IPアドレス対応情報423へのポインタ項目には、該当のアドレスブロックが有するアドレス群へのポインタが格納される。具体的にIPアドレス対応情報423へのポインタ項目には、該当のアドレスブロックが有するアドレスの一覧が格納されている。
たとえば、レコード422−1は、アドレスブロックBb27−0についての各項目が格納されている。レコード422−1は、アドレスブロックBb27−0のアドレスが10.10.10.0/27であり、プールアドレスブロックであることを示している。さらに、レコード422−1は、アドレスブロックBb27−0が有するアドレスとして、10.10.10.0〜10.10.10.31があることを示している。
同様に、レコード422−2〜レコード422−8が、図6で図示していないが、アドレスブロックBb27−1〜アドレスブロックBb27−7を示している。続けて、レコード422−9がアドレスブロックBb24を示しており、レコード422−10が、アドレスブロックBb21を示しており、レコード422−11が、アドレスブロックBb20を示している。さらに、レコード422−12が、アドレスブロックBb17を示しており、レコード422−13が、アドレスブロックBb16を示している。
図7は、IPアドレス対応情報423の記憶内容の一例を示す説明図である。IPアドレス対応情報423は、プールアドレスブロック内IPアドレス、使用フラグ、実動系クライアントIPアドレスという3つの項目を含む。プールアドレスブロック内IPアドレス項目には、選択されたプールアドレスブロックに含まれるアドレスが格納される。使用フラグ項目には、プールアドレスブロックのアドレスが使用中かが格納される。実動系クライアントIPアドレス項目には、プールアドレスブロックのアドレスと対応する実動系クライアントのIPアドレスが格納される。
たとえば、図7で示すIPアドレス対応情報423は、アドレスブロックBb24のアドレスが登録されている。また、レコード423−1〜レコード423−3は、10.10.20.0〜10.10.20.2が使用中であることを示し、レコード423−4は、10.10.20.3が未使用であることを示す。また、レコード423−3は、10.10.20.2に対応する実動系クライアントとなる試験端末CのIPアドレスが、192.168.10.2であることを示している。
図8は、フロー情報424の記憶内容の一例と適用例を示す説明図である。図8では、フロー情報424の記憶内容を示しており、さらに、符号801で示す説明図が、フロー情報424の適用例を示している。
フロー情報424は、アドレスブロック、ネットマスク長、宛先IPアドレス、中継L3装置という4つの項目を含む。アドレスブロック項目には、対象となるアドレスブロックのネットワークアドレスが格納される。ネットマスク長項目には、対象となるアドレスブロックのネットマスク長が格納される。宛先IPアドレス項目には、通信先となるサーバのIPアドレスが格納される。中継L3装置項目には、対象となるアドレスブロック内のIPアドレスが設定された装置と宛先IPアドレスが設定されたサーバとの通信時に、中継するL3装置の識別情報が格納される。
また、符号801で示す説明図にて、実動系のネットワークには、図2で示した実動系ネットワーク201と検証系ネットワーク202を表示している。レコード424−1は、アドレスブロックAb27−0内のIPアドレスが割り当てられた装置が、20.20.20.20に通信する場合に、L3#A01、L3#A03、L3#A05、L3#A07を中継することを示している。レコード424−1が示す情報は、経路802となる。同様に、レコード424−2が示す情報は経路803を示しており、レコード424−3が示す情報は経路804を示しており、レコード424−4が示す情報は経路805を示している。
図9は、プールアドレスブロックの選択方法の一例を示す説明図である。図9では、実動系アドレス空間101とアドレスブロック情報422を参照して、事前検証試験に使用するプールアドレスブロックの選択方法について説明を行う。
試験装置100は、実動系アドレス空間101から、8つのアドレスブロックが存在することを検出する。具体的には、実動系アドレス空間101には、アドレスブロックAb27−0〜アドレスブロックAb27−7の8つのアドレスブロックが存在している。
試験装置100は、検出されたアドレスブロックAb27−0〜アドレスブロックAb27−7を集約するネットマスク長を算出する。具体的に、試験装置100は、下記(1)式に従って、事前検証試験が実施可能なアドレスブロックのネットマスク長を算出する。
=ネットマスク長−ROUNDUP(log2(アドレスブロック数)) …(1)
なお、ROUNDUP関数は小数を切り上げる関数であり、log2関数は、底を2とする対数を求める関数である。なお、(1)式では、log2関数の結果を切り上げた後、ネットマスク長から減算しているが、ネットマスク長からlog2関数の結果を減算した後、小数点以下を切り下げてもよい。この計算方法は、後述する(2)式でも有効である。図9の例では、アドレスブロック数が8、ネットマスク長が27であるから、試験装置100は、事前検証試験用のネットマスク長を(1)式より、下記のように算出する。
=27−ROUNDUP(log2(8))
=24
算出後、試験装置100は、アドレスブロック情報422のプールアドレスブロックフラグが1となっているレコードのうち、算出されたアドレスブロック数以下となるレコードを先頭から順に検索していく。アドレスブロック情報422は、ネットマスク長の降順で登録されているため、一番早く条件に当てはまったレコードが、最適なネットマスク長に最も近く、事前検証試験が実施可能なアドレスブロックである。図9の例では、試験装置100は、レコード422−9を選択する。
また、図9の例では、ネットマスク長が同一のアドレスブロックを検出していたが、ネットマスク長が異なるアドレスブロックを検出した場合も、(1)式で算出できる場合がある。たとえば、試験装置100が、ネットマスク長が27のアドレスブロックが8個とネットマスク長が24のアドレスブロックが8個を検出した場合を想定する。
このとき、試験装置100は、ネットマスク長が大きいブロックサイズから集約する。初めに、試験装置100は、ネットマスク長:27に対して(1)式を適用する。
=27−ROUNDUP(log2(8))
=24
このように、試験装置100は、(1)式を算出することにより、ネットマスク長が27となるアドレスブロック8個が、ネットマスク長が24のアドレスブロック1個に集約できるという結果を得る。これにより、ネットマスク長が24のアドレスブロックが1つ増え、8個から9個になる。続けて、試験装置100は、ネットマスク長:24に対して(1)式を適用する。
=24−ROUNDUP(log2(9))
=20
このように、試験装置100は、事前検証試験用の最適なネットマスク長を20であると算出する。たとえば、試験装置100は、事前検証試験用のアドレスブロックとして、アドレスブロックBb20を選択する。
図10は、IPアドレスの変換方法の例を示す説明図である。図10では、実動系アドレス空間101内のIPアドレスと、プールアドレスブロック内のIPアドレスとの変換方法について説明する。具体的な変換方法として、図10では、アドレスブロックAb27−0〜アドレスブロックAb27−7内のIPアドレスを、アドレスブロックBb24内のIPに変換する場合を想定する。このとき、試験装置100は、実動系のIPアドレス192.168.10.XをアドレスブロックBb24内のIPアドレス10.10.20.Xに書き換える。たとえば、試験装置100は、アドレスブロックAb27−0内の192.168.10.2をアドレスブロックBb24内のIPアドレス10.10.20.2に変換する。
このように変換する場合、試験装置100は、IPアドレス対応情報423のプールアドレスブロック内IPアドレス項目に変換先のIPアドレスとなる10.10.20.2を設定する。続けて、試験装置100は、実動系クライアントIPアドレス項目に192.168.10.2を設定し、使用フラグ項目に1を設定する。
図11は、パケットの変換方法の例を示す説明図である。図11では、試験装置100は、実動系クライアントとなる試験端末Cの通信結果であるパケットデータ1101を、検証系クライアントでのパケットデータ1102のように変換する。
なお、図11では、パケットデータ1101−1〜パケットデータ1101−4のうち、上り方向のパケットであるパケットデータ1101−1、パケットデータ1101−3について変換し、パケットデータ1102−1、パケットデータ1102−3を得ている。また、パケットデータ1101−2、パケットデータ1101−4は、実動系サーバからのパケットデータであり、パケットデータ1102−2、パケットデータ1102−4は、検証系サーバからのパケットデータである。
具体的に、試験装置100は、セッションID、送信元IPアドレス、確認応答番号を変換する。また、図11では図示していないが、試験装置100は、送信元MACアドレス、宛先MACアドレス、宛先IPアドレス、IPヘッダのチェックサム、TCPヘッダのチェックサムなどを適切に変換する。
IPアドレスの変換方法について、試験装置100は、送信元IPについて実動系クライアントのIPアドレスから、プールアドレスブロック内のIPアドレスに変換する。また、試験装置100は、宛先IPについて、実動系サーバのIPアドレスから検証系サーバのIPアドレスに変換する。
確認応答番号の変換方法について、試験装置100が検証系サーバと3ウェイハンドシェイクを行う場合、検証系サーバが試験装置100に通知するシーケンス番号の初期値を取得し、試験装置100は受信した初期値を基にして変換する。なお、検証系サーバが取得する初期値は、乱数であるため、試験装置100は乱数の値を予測することはできない。しかし、3ウェイハンドシェイク後の通信で、シーケンス番号が増加する割合は実動系と検証系で同じであることが予測されるため、試験装置100は、実動系のパケットデータを基に確認応答番号を変換する。また、HTTPヘッダのCookie情報などについては、変換を行う情報と変換を行わなくてよい情報とを事前に情報として記録し、試験装置100は、変換を行う情報について変換する。
セッションIDの変換方法について、通常サーバが通信を行うたびにそれぞれ違う値を生成するため、試験装置100は、サーバ固有の情報として処理を行う。具体的に、検証系サーバは、生成したセッションIDをCookieの中に埋め込んでクライアント相当の試験装置100に送信する。セッションIDを受け取った試験装置100は、通信を行うときには受け取ったセッションIDを使用する。
図12は、変換後のパケットの送出方法の例を示す説明図である。図11で示したパケットデータ1101−1がパケットS1A(第1のパケット)、パケットデータ1101−2がパケットR1A(第3のパケット)を示している。また、パケットデータ1101−3がパケットS2A(第1のパケット)、パケットデータ1101−4がパケットR2A(第3のパケット)を示している。
また、パケットデータ1102−1がパケットS1B(第2のパケット)、パケットデータ1102−2がパケットR1B(第4のパケット)を示している。また、パケットデータ1102−3がパケットS2B(第2のパケット)、パケットデータ1102−4がパケットR2B(第4のパケット)である。
図12に示すように、検証系サーバBへのパケットS2Bの送信が、検証系サーバBからのパケットR1Bの受信に先立って実行されることとなる。したがって、実動系サーバAに送信されたパケットS1A、S2Aの時間間隔と、検証系サーバBに送信されたパケットS1B、S2Bの時間間隔が同一となる。
このように、TCP/IPに基づく通信ではヘッダ情報を適切に書き換えることにより、遠隔にある検証系サーバBからの応答を待たずに実動系サーバAからパケットを送出し続けることが可能である。これにより、検証系サーバBは実動系サーバAと同一処理を同一のタイミングで実行することとなり、検証系サーバBに対し実動系サーバAと同一の負荷試験を再現することができる。なお、本実施の形態にかかる通信は、UDP/IPに基づく通信であってもよい。
次に、図13と図14でサーバの性能評価方法の例を示す。実動系・検証系間のRTTを計測する場合、試験装置100は、図13で示すサーバの性能評価方法を採用することができる。実動系・検証系間のRTTを計測しない、または計測できない場合でも、試験装置100は、図14で示すサーバの性能評価方法を採用することでサーバの性能を評価することができる。
図13は、サーバの性能評価方法の一例を示す説明図である。初めに、試験装置100は、パケットデータ1101、パケットデータ1102から、第1の時間間隔daとなる実動系RTT_x、第2の時間間隔dbとなる検証系RTT_xを算出する。また、第3の時間間隔dcとなる実動系・検証系間のRTTを1.2[秒]であると想定する。ここで、xは自然数である。たとえば、実動系では、パケットデータ1101−1とパケットデータ1101−2の時刻情報より、試験装置100は、実動系RTT_1=2.3−2.1=0.2[秒]を算出する。続けて、パケットデータ1101−3とパケットデータ1101−4の時刻情報より、試験装置100は、実動系RTT_2=2.6−2.4=0.2[秒]を算出する。
検証系についても同様に、パケットデータ1102−1とパケットデータ1102−2の時刻情報より、試験装置100は、検証系RTT_1=3.5−2.1=1.4[秒]を算出する。続けて、パケットデータ1102−3とパケットデータ1102−4の時刻情報より、試験装置100は、検証系RTT_2=3.8−2.4=1.4[秒]を算出する。
実動系RTT_x、検証系RTT_xの算出後、試験装置100は、サーバ性能を評価するため、実動系RTT_xと(検証系RTT_x−実動系・検証系間のRTT)を比較する。
試験装置100は、左辺が大きければ検証系の方が高性能であると判定し、左辺と右辺が等しければ検証系と実動系が同一性能であると判定し、右辺が大きければ実動系の方が高性能であると評価する。
たとえば、試験装置100は、実動系RTT_1=0.2、検証系RTT_x=1.4、実動系・検証系間のRTT=1.2としてサーバの評価を行う。
0.2=(1.4−1.2)
このように、左辺と右辺が等しいため、試験装置100は、検証系と実動系が同一性能であると評価する。
図14は、サーバの性能評価方法の他の例を示す説明図である。図14で説明するサーバの性能評価方法は、上り方向のパケットの送信間隔が実動系と検証系で同じであることを想定している。上り方向のパケットの送信間隔が等しい場合、下り方向のパケットの時間間隔もRTTの影響を受けずに同じになることが期待されるため、試験装置100は、下り方向のパケット到着間隔を算出し、その伸縮からサーバの性能評価を行う。初めに、試験装置100は、パケットデータ1101、パケットデータ1102から、実動系、検証系における第1の受信間隔det1となるdet(RxA、RyA)、第2の受信間隔det2となるdet(RxB、RyB)を算出する。ここで、x、yは自然数である。なお、det関数は、2つの引数の差分を求める関数である。
試験装置100は、パケットデータ1101からdet(R1A、R2A)=2.6−2.3=0.3を算出する。続けて、試験装置100は、パケットデータ1101からdet(R1B、R2B)=3.8−3.5=0.3を算出する。det(RxA、RyA)、det(RxB、RyB)の算出後、試験装置100は、実動系det(R1、R2)と検証系det(R1、R2)を比較する。
試験装置100は、左辺が大きければ検証系の方が高性能であると評価し、左辺と右辺が等しければ検証系と実動系が同一性能であると評価し、右辺が大きければ実動系の方が高性能であると評価する。
前述の例であれば、試験装置100は、実動系det(R1、R2)=0.3、検証系det(R1、R2)=0.3を代入してサーバの評価を行う。
0.3=0.3
このように、左辺と右辺が等しいため、試験装置100は、検証系と実動系が同一性能であると評価する。
図15は、パケット読込処理の一例を示すフローチャートである。試験装置100は、パケットデータを読み込む(ステップS1501)。以降の処理について、試験装置100は、読み込んだパケットデータについて処理を行う。試験装置100は、送信元が検証系サーバか否かを判断する(ステップS1502)。送信元が検証系サーバである場合(ステップS1502:Yes)、試験装置100は、タイムスタンプを取得し(ステップS1503)、ヘッダ、ペイロードをプロトコルフォーマットに従って解析する(ステップS1504)。
解析後、試験装置100は、パケット送信時刻、RTT、ヘッダ、ペイロードをセッションごとに記憶する(ステップS1505)。ヘッダ、ペイロードの具体例として、試験装置100は、IPヘッダ情報に含まれる送信元IPアドレス、宛先IPアドレスを記憶する。また、試験装置100は、TCPヘッダ情報に含まれる送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、SYN/ACK/PSH/FIN/RSTフラグを記憶する。さらに、試験装置100は、HTTPやPOP3/IMAP等の各アプリケーションに関するアプリヘッダ情報、ヘッダ以外の情報となるペイロードを記憶する。
送信元が検証系サーバでない場合(ステップS1502:No)、試験装置100は、送信元が実動系サーバか否かを判断する(ステップS1506)。送信元が実動系サーバである場合(ステップS1506:Yes)、試験装置100は、タイムスタンプを取得し(ステップS1507)、ヘッダ、ペイロードをプロトコルフォーマットに従って解析する(ステップS1508)。解析後、試験装置100は、パケット受信時刻、RTT、ヘッダ、ペイロードをセッションごとに記憶する(ステップS1509)。
送信元が実動系サーバでない場合(ステップS1506:No)、試験装置100は、タイムスタンプを取得し(ステップS1510)、ヘッダ、ペイロードをプロトコルフォーマットに従って解析する(ステップS1511)。なお、ステップS1506:Noとなるパケットデータは、たとえば、送信元が試験端末Cとなるパケットデータである。解析後、試験装置100は、パケット送信時刻、RTT、ヘッダ、ペイロードをセッションごとに記憶する(ステップS1512)。
ステップS1505、ステップS1509、ステップS1512の処理終了後、試験装置100は、検証系サーバの応答を全て受信、または試験が完了したか否かを判断する(ステップS1513)。検証系サーバの応答を全て受信していない、かつ、試験完了していない場合(ステップS1513:No)、試験装置100は、ステップS1501の処理に移行する。検証系サーバの応答を全て受信、または、試験完了した場合(ステップS1513:Yes)、試験装置100は、パケット読込処理を終了する。
図16は、アドレスブロック登録処理手順の一例を示すフローチャートである。試験装置100は、キャプチャデータから先頭のパケットデータを取得する(ステップS1601)。続けて、試験装置100は、パケットデータを読み込んだか否かを判断する(ステップS1602)。パケットデータを取得した場合(ステップS1602:Yes)、試験装置100は、読み込んだパケットデータのSYNフラグがONか否かを判断する(ステップS1603)。
SYNフラグがONである場合(ステップS1603:Yes)、試験装置100は、送信元IPアドレスを取得し(ステップS1604)、送信元IPアドレスのアドレスブロックが登録済か否かを判断する(ステップS1605)。登録済でない場合(ステップS1605:No)、試験装置100は、送信元IPアドレスのアドレスブロックを登録する(ステップS1606)。登録後、試験装置100は、キャプチャデータから次のパケットデータを取得し(ステップS1607)、ステップS1602の処理に移行する。
また、SYNフラグがOFFである場合(ステップS1603:No)、アドレスブロックが登録済である場合(ステップS1605:Yes)、試験装置100は、ステップS1607の処理に移行する。全てのパケットデータについて処理を行い、パケットデータを取得しなかった場合(ステップS1602:No)、試験装置100は、アドレスブロック選択処理を実行し(ステップS1608)、アドレスブロック登録処理を終了する。なお、アドレスブロック選択処理は、登録したアドレスブロックを引数として実行する。アドレスブロック選択処理の詳細については、図17にて後述する。
図17は、アドレスブロック選択処理手順の一例を示すフローチャートである。アドレスブロック選択処理は、初めにアドレスブロックの集約を行い、次に集約されたアドレスブロックを含むことが可能なアドレスブロックをアドレスブロック情報422から選択する。
試験装置100は、登録されたアドレスブロックを集約対象のアドレスブロックに設定する(ステップS1701)。次に、試験装置100は、集約対象のアドレスブロックのうち、ネットマスク長が最も大きいアドレスブロック群を取得する(ステップS1702)。試験装置100は、取得したアドレスブロックに対して、(1)式を実行する(ステップS1703)。実行後、試験装置100は、(1)式で得られたネットマスク長を有するアドレスブロックを、新たな集約対象のアドレスブロックとして設定する(ステップS1704)。
続けて、試験装置100は、集約対象のアドレスブロックが一つか否かを判断する(ステップS1705)。集約対象のアドレスブロックが複数ある場合(ステップS1705:No)、試験装置100は、ステップS1702の処理に移行する。集約対象のアドレスブロックが1つである場合(ステップS1705:Yes)、試験装置100は、アドレスブロック情報422から集約対象のネットマスク長以下のネットマスク長を有するプールアドレスブロックを選択する(ステップS1706)。なお、試験装置100は、アドレスブロック情報422から集約対象のネットマスク長以下で最も大きいネットマスク長となるアドレスブロックを選択してもよい。選択後、試験装置100は、アドレスブロック選択処理を終了する。
図18は、パケット変換・送出処理手順の一例を示すフローチャートである。まず、試験装置100は、パケット記憶情報421のうち、所定時間帯X内の未選択の第1のパケット(のレコード)があるか否かを判断する(ステップS1801)。未選択の第1のパケットがある場合(ステップS1801:Yes)、試験装置100は、未選択の第1のパケットを選択する(ステップS1802)。そして、試験装置100は、選択された第1のパケットを生成部404により第2のパケットに生成してパケット記憶情報421に格納し(ステップS1803)、ステップS1801に戻る。
一方、ステップS1801において、未選択の第1のパケットがない場合(ステップS1801:No)、試験装置100は、計時を開始し(ステップS1804)、計時開始(第2の対象装置の試験開始)からの経過時間と同一の取得時間となる第2のパケットがあるか否かを判断する(ステップS1805)。同一取得時間の第2のパケットがある場合(ステップS1805:Yes)、試験装置100は、その該当する第2のパケットを第2の対象装置に送信して(ステップS1806)、ステップS1805に戻る。
一方、ステップS1805において、現在の経過時間と同一の取得時間となる第2のパケットがない場合(ステップS1805:No)、試験装置100は、第4のパケットを取得(キャプチャ)したか否かを判断する(ステップS1807)。取得していない場合(ステップS1807:No)、試験装置100は、ステップS1805に戻る。
一方、取得した場合(ステップS1807:Yes)、試験装置100は、第2の対象装置の試験開始からパケット(第4のパケット)をキャプチャした時刻までの取得時間を検出する(ステップS1808)。そして、ヘッダおよびペイロード解析を行い(ステップS1809)、試験装置100は、第4のパケットの取得時間から対応する第2のパケットの取得時間を減算することでRTTを算出する(ステップS1810)。
このあと、試験装置100は、取得時間、RTT、ヘッダ、ペイロードをパケット記憶情報421に記録して(ステップS1811)、第4のパケットを全て受信したか否かを判断する(ステップS1812)。たとえば、対応する第2のパケットを用いてRTTが算出されているか否かで判断する。
全て受信されていない場合(ステップS1812:No)、試験装置100は、ステップS1805に戻る。一方、全て受信された場合(ステップS1812:Yes)、試験装置100は、パケット変換・送出処理を終了する。これにより、第2および第4のパケットが、図5に示したように、パケット記憶情報421に格納されることとなる。
図19は、第1および第2の対象装置の相対的な性能評価処理手順の一例を示すフローチャートである。まず、試験装置100は、第1の時間間隔daと第2の時間間隔dbとを算出し(ステップS1901)、第2の時間間隔dbから第3の時間間隔dcを減算する(ステップS1902)。そして、試験装置100は、第1の時間間隔daと減算結果(db−dc)とを比較する(ステップS1903)。
da>db−dcの場合(ステップS1903:>)、試験装置100は、第2の対象装置の方が高性能と判定し(ステップS1904)、ステップS1907の処理に移行する。また、da<db−dcの場合(ステップS1903:<)、試験装置100は、第1の対象装置の方が高性能と判定し(ステップS1905)、ステップS1907の処理に移行する。
さらに、da=db−dcの場合(ステップS1903:=)、試験装置100は、第1の対象装置と第2の対象装置が同一性能と判定し(ステップS1906)、ステップS1907の処理に移行する。ステップS1907では、試験装置100は、ステップS1904〜ステップS1906の判定結果を出力する(ステップS1907)。
このように、第1の対象装置と第2の対象装置のRTTの違いを無視できるため、試験者は、試験のために移動しなくてよく、試験時間の短縮化を図ることができる。また、試験装置100は、対象装置の性能評価を迅速かつ高精度に評価することができる。
図20は、第1および第2の対象装置の相対的な性能評価処理手順の他の例を示すフローチャートである。まず、試験装置100は、第1の受信間隔det1を算出し(ステップS2001)、第2の受信間隔det2を算出する(ステップS2002)。そして、試験装置100は、第1の受信間隔det1と第2の受信間隔det2を比較する(ステップS2003)。
det1>det2の場合(ステップS2003:>)、試験装置100は、第2の対象装置の方が高性能と判定し(ステップS2004)、ステップS2007の処理に移行する。また、det1<det2の場合(ステップS2003:<)、試験装置100は、第1の対象装置の方が高性能と判定し(ステップS2005)、ステップS2007の処理に移行する。
さらに、det1=det2の場合(ステップS2003:=)、試験装置100は、第1の対象装置と第2の対象装置は同一性能と判定し(ステップS2006)、ステップS2007の処理に移行する。ステップS2007では、試験装置100は、ステップS2004〜ステップS2006の判定結果を出力する(ステップS2007)。
このように、図20で示す相対的な性能評価処理手順の他の例では、実動系サーバAと検証系サーバB間のRTTが未知であっても、試験装置100は性能評価を行うことができる。
図21は、従来の実動系サーバと検証系サーバとの相対的な性能評価処理の一例を示す説明図である。図21では、実動系サーバAおよび試験端末Cが大阪にあり、検証系サーバBは東京にあるものとする。実動系サーバAは、たとえば、現在システムで稼動している現用系のコンピュータである。検証系サーバBは、実動系サーバAから移行予定のコンピュータである。この場合、試験実施者は、同一パターン(パケットとその応答パケット)で試験をする際、試験端末Cが実動系サーバAからのパケットをキャプチャし、キャプチャしたパケットを実動系サーバAと同一のシーケンスパターンで検証系サーバBに流すこととなる。
図22は、従来の実動系サーバと検証系サーバとの相対的な性能評価処理の他の例を示す説明図である。実動系サーバAは、たとえば、現在システムで稼動している現用系のコンピュータである。検証系サーバBは、実動系サーバAの性能を検証するコンピュータである。この場合、試験実施者は、同一パターン(パケットとその応答パケット)で試験を行う際、試験端末Cと実動系サーバA間で送受信されるパケットをキャプチャし、キャプチャしたパケットを実動系サーバAと同一のシーケンスパターンで検証系サーバBに流すことになる。
以上説明したように、試験プログラム、試験装置、および試験方法によれば、実動系のアドレスブロック群のネットマスク長から算出された値以下のネットマスク長となるアドレスブロックを検証用として使用する。これにより、試験装置は、実動系のアドレスを全て検証系のアドレスに変換でき、試験を実行できる。
また、試験装置は、未使用のアドレスブロック群のうち、算出されたネットマスク長以下のネットマスク長で最も大きいネットマスク長となるアドレスブロックを選択してもよい。これにより、試験装置は、最も適切なアドレスブロックを選択することができ、無駄に大きなアドレスブロックを確保することがなくなる。特に、アドレスを多数含むアドレスブロックは数が少なく貴重であるため、最適なアドレスブロックを選択することで、アドレスブロックを有効に利用することができる。
また、試験装置は、(1)式によってアドレスブロックのネットマスク長を算出してもよい。これにより、試験装置は、事前検証試験が可能なアドレスブロックを選択でき、また、計算量が少ない計算でネットマスク長を算出することができる。
(実施の形態2の概要)
実施の形態1にかかる試験装置100では、アドレスブロックのサイズとブロックの数に基づいて、最適なプールアドレスブロックを選択していた。実施の形態2にかかる試験装置100では、アドレスブロック内の使用中IPアドレスの数に基づいて、最適なプールアドレスブロックを選択する。実施の形態2にかかる試験装置100のハードウェアは実施の形態1にかかる試験装置100と同一であるため、説明を省略する。また、実施の形態2にかかる試験装置100の機能については、算出部414以外は同一であるため、説明を省略する。
実施の形態2にかかる算出部414は、IPアドレスのビット数から、第1のアドレス群の各々のアドレスの個数に対して2を底とする対数値の小数点以下を切り上げた数値を減じた値を算出する機能を有する。なお、具体的な算出方法については、図23で後述する。また、算出された結果は、RAM303、磁気ディスク305、光ディスク307などに記憶される。
図23は、実施の形態2にかかるIPアドレスの変換方法の例を示す説明図である。実動系アドレス空間101において、初めに、試験装置100は、アドレスブロックAb27−0〜アドレスブロックAb27−7にて、使用中のIPアドレスを計数する。図23の例では、試験装置100は、アドレスブロックAb27−0に18個、アドレスブロックAb27−1に20個、アドレスブロックAb27−2に12個、アドレスブロックAb27−3に8個、の使用中IPアドレスを計数する。さらに、試験装置100は、アドレスブロックAb27−4に20個、アドレスブロックAb27−5に20個、アドレスブロックAb27−6に10個、アドレスブロックAb27−7に18個、の使用中IPアドレスを計数する。
次に、試験装置100は、プールアドレスブロックのサイズを(2)式によって算出する。
IPアドレスのビット数−ROUNDUP(log2(使用中IPアドレス数+2)) …(2)
IPアドレスのビット数は、IPv4であれば32、IPv6であれば128である。なお、使用中IPアドレスに2を加える理由は、アドレスブロックには、ホストに割り当てられないネットワークアドレスとブロードキャストアドレスがあることを考慮しているためである。図23の例で、試験装置100は、検証試験が実施可能なプールアドレスブロックのネットマスク長を(2)式に従って以下のように算出する。
32−ROUNDUP(log2((18+20+12+8+20+20+10+18)+2))=32−7=25
したがって、試験装置100は、プールアドレスブロック群のうち、ネットマスク長が25であるアドレスブロック10.10.21.0/25(以下、アドレスブロックBb25)を選択する。このように、実施の形態2にかかるプールアドレスブロックの選択方法は、アドレス空間に未割当のアドレスが多いときに特に有効な方法である。たとえば、試験装置100が、実施の形態1による選択方法を行った場合、(1)式にネットマスク長=27、アドレスブロック数=8を代入し、プールアドレスブロックのネットマスク長として24を算出する。このように、実施の形態1と実施の形態2との選択方法を比較すると、実施の形態2にかかる選択方法は、アドレス使用効率を2倍に向上させる。
図24は、実施の形態2にかかるIPアドレス対応情報423の記憶内容の一例を示す説明図である。図24で示すIPアドレス対応情報423−1は、実施の形態1での選択方法によって、プールアドレスブロックとしてアドレスブロックBb24が選択された場合のIPアドレス対応情報423の記憶内容の一例を示している。また、IPアドレス対応情報423−2は、実施の形態2での選択方法によって、プールアドレスブロックとしてアドレスブロックBb25が選択された場合のIPアドレス対応情報423の記憶内容の一例を示している。
IPアドレス対応情報423−1では、実動系のIPアドレス192.168.10.Xを10.10.20.Xに変換するような対応となっている。具体的に、10.10.20.1〜10.10.20.18は、アドレスブロックAb27−0で使用中のIPアドレス192.168.10.1〜192.168.10.18に対応づけられている。10.10.20.19〜10.10.20.32は未使用である。10.10.20.33〜10.10.20.52は、アドレスブロックAb27−1で使用中のIPアドレス192.168.10.33〜192.168.10.52に対応づけられている。10.10.20.53〜10.10.20.64は未使用である。
また、10.10.20.225〜10.10.20.242は、アドレスブロックAb27−7で使用中のIPアドレス192.168.10.225〜192.168.10.242に対応づけられている。10.10.20.243〜10.10.20.254は未使用である。このように、IPアドレス対応情報423−1では、実動系アドレス空間内に未割当のIPアドレスが多いとき、選択されたプールアドレスブロックにて、未使用のIPアドレスが多くなる。
次に、IPアドレス対応情報423−2では、未割当のIPアドレスができる限り存在しないように変換するような対応となっている。具体的に、10.10.21.1〜10.10.21.18は、アドレスブロックAb27−0で使用中のIPアドレス192.168.10.1〜192.168.10.18に対応づけられている。10.10.21.19〜10.10.21.38は、アドレスブロックAb27−1で使用中のIPアドレス192.168.10.33〜192.168.10.52に対応づけられている。10.10.21.109〜10.10.21.126は、アドレスブロックAb27−1で使用中のIPアドレス192.168.10.225〜192.168.10.242に対応づけられている。
図25は、実施の形態2にかかるアドレスブロック登録処理手順の一例を示すフローチャートである。実施の形態2にかかるアドレスブロック登録処理にて、ステップS2501〜ステップS2503の処理については、ステップS1601〜ステップS1603の処理と等しいため、説明を省略する。
SYNフラグがOFFである場合(ステップS2503:No)、試験装置100は、FINフラグがONか否かを判断する(ステップS2504)。SYNフラグがONである場合(ステップS2503:Yes)、またはFINフラグがONである場合(ステップS2504:Yes)、試験装置100は、送信元IPアドレスを取得する(ステップS2505)。取得後、試験装置100は、送信元IPアドレスが登録済みであるか否かを判断する(ステップS2506)。
登録済みでない場合(ステップS2506:No)、試験装置100は、送信元IPアドレスとキャプチャ時刻を登録する(ステップS2507)。登録後、登録済みである場合(ステップS2506:Yes)、または、FINフラグがONでない場合(ステップS2504:No)、試験装置100は、キャプチャデータから次のパケットデータを読み込み(ステップS2508)、ステップS2502の処理に移行する。
また、全てのパケットデータについて処理を行い、パケットデータを取得しなかった場合(ステップS2502:No)、試験装置100は、実施の形態2にかかるアドレスブロック選択処理を実行し(ステップS2509)、アドレスブロック登録処理を終了する。なお、アドレスブロック選択処理は、登録した送信元IPアドレスを引数として実行する。実施の形態2にかかるアドレスブロック選択処理の詳細については、図26にて後述する。
図26は、実施の形態2にかかるアドレスブロック選択処理手順の一例を示すフローチャートである。試験装置100は、登録された送信元IPアドレスの個数を取得する(ステップS2601)。次に、試験装置100は、取得したアドレス数に対して、(2)式を実行する(ステップS2602)。続けて、試験装置100は、(2)式で得られたネットマスク長以下のネットマスク長を有するプールアドレスブロックを選択し(ステップS2603)、アドレスブロック選択処理を終了する。
以上説明したように、試験プログラム、試験装置、および試験方法によれば、(2)式によってアドレスブロックのネットマスク長を算出してもよい。これにより、実動系アドレス空間に未割当のアドレスが多い場合、より小さなアドレスブロックを選択することができる。
(実施の形態3の概要)
実施の形態2にかかる試験装置100では、アドレスブロック内の使用中IPアドレスの数に基づいて、最適なプールアドレスブロックを選択していた。実施の形態3にかかる試験装置100では、使用中IPアドレスの時間変化に応じて最適なプールアドレスブロックを選択する。実施の形態3にかかる試験装置100のハードウェアは実施の形態1にかかる試験装置100と同一であるため、説明を省略する。また、実施の形態3にかかる試験装置100の機能については、算出部414以外は同一であるため、説明を省略する。
実施の形態3にかかる算出部414は、IPアドレスのビット数から、第1のアドレス群の各々のアドレスの同時使用数の最大値に対して2を底とする対数値の小数点以下を切り上げた数値を減じた値を算出する機能を有する。なお、具体的な算出方法については、図27〜図29で後述する。また、算出された結果は、RAM303、磁気ディスク305、光ディスク307などに記憶される。
図27は、実施の形態3にかかるIPアドレス対応情報2701の記憶内容の一例を示す説明図である。図27で示すIPアドレス対応情報2701は、レコード2701−1〜レコード2701−4を登録している。IPアドレス対応情報2701は、IPアドレス対応情報423に、セッション開始時刻項目と、セッション終了時刻項目と、をさらに含む情報である。IPアドレス対応情報423から存在する項目については、格納される内容は変わらないため、説明を省略する。セッション開始時刻項目は、該当のセッションを開始した時刻であり、SYNフラグがONとなった時刻である。セッション終了時刻項目は、該当のセッションが終了した時刻であり、FINフラグがONとなった時刻である。
たとえば、図27の例では、レコード2701−3は、セッションが0.0[秒]から7.7[秒]まで続いたことを示しており、レコード2701−4は、セッションが8.0[秒]から8.6[秒]まで続いたことを示している。
次に、図28と図29にて、IPアドレス対応情報2701の時間変化に応じたアドレス変換の例について説明する。図28で示す、通信時間が重複していない場合、試験装置100は、プールアドレスブロックの同一のアドレスを設定する。図29では、通信時間が重複していなくても、前のセッションからの経過時刻が一定時間より短い場合に別のセッション確立がある場合、試験装置100は、異なるアドレスで変換するといった動作を行う。なお、図28、図29において、IPアドレス対応情報2701に付与される接尾記号“−x”は、x秒時点でのIPアドレス対応情報2701の状態を示している。
また、図28、図29では、3つのセッションが確立しており、それぞれ、セッションX、セッションY、セッションZとし、セッションXの開始時刻をX1、終了時刻をX2と定義する。同様に、セッションYの開始時刻をY1、終了時刻をY2と定義し、セッションZの開始時刻をZ1、終了時刻をZ2と定義する。
図28は、実施の形態3にかかるIPアドレス対応情報2701の時間変化に応じたアドレス変換の一例を示す説明図である。時刻経過の順序としては、0、X1、Y1、X2、Z1、Y2、Z2となる。時刻0におけるIPアドレス対応情報2701−0は、10.10.20.2、10.10.20.3共に未使用である。
次に、時刻X1にてセッションXが確立することを想定する。このとき、試験装置100は、IPアドレス対応情報2701−1−X1で示すように10.10.20.2を使用中に設定する。続けて、セッションXが解放される前の時刻Y1にて、他のセッションYが確立する。このとき、試験装置100は、IPアドレス対応情報2701−1−Y1で示すように10.10.20.3を使用中に設定する。時刻X2にて、セッションXが解放されると、試験装置100は、IPアドレス対応情報2701−1−X2で示すように10.10.20.2の使用中を解除する。
時刻Z1にて、セッションZが確立すると、試験装置100は、10.10.20.2が使用可能であるため、IPアドレス対応情報2701−1−Z1で示すように10.10.20.4でなく10.10.20.2を使用中に設定する。続けて、時刻Y2にてセッションYが解放されると、試験装置100は、IPアドレス対応情報2701−1−Y2で示すように10.10.20.3の使用中を解除する。時刻Z2にてセッションZが解放されると、試験装置100は、IPアドレス対応情報2701−1−Z2で示すように10.10.20.2の使用中を解除する。このように、図28で示したアドレス変換方法は、通信時間が分散しているほど、アドレスブロックの集約化を見込むことができる。
図29は、実施の形態3にかかるIPアドレス対応情報2701の時間変化に応じたアドレス変換の他の例を示す説明図である。時刻経過の順序としては、0、X1、X2、Y1、Y2、Z1、Z2となる。時刻0におけるIPアドレス対応情報2701−0は、10.10.20.2、10.10.20.3共に未使用である。
初めに、時刻X1にてセッションXが確立することを想定する。このとき、試験装置100は、IPアドレス対応情報2701−2−X1で示すように10.10.20.2を使用中に設定する。続けて、時刻X2にて、セッションXが解放されると、試験装置100は、IPアドレス対応情報2701−2−X2で示すように10.10.20.2の使用中を解除する。
次に、時刻Y1にてセッションYが確立すると、試験装置100は、|Y1−X2|<閾値であると判断し、IPアドレス対応情報2701−2−Y1で示すように10.10.20.2ではなく、10.10.20.3を使用中に設定する。続けて、時刻Y2にて、セッションYが解放されると、試験装置100は、IPアドレス対応情報2701−2−Y2で示すように10.10.20.3の使用中を解除する。
時刻Z1にてセッションZが確立すると、試験装置100は、|Z1−X2|≧閾値であると判断し、IPアドレス対応情報2701−2−Z1で示すように10.10.20.2を使用中に設定する。続けて、時刻Z2にて、セッションZが解放されると、試験装置100は、IPアドレス対応情報2701−2−Z2で示すように10.10.20.3の使用中を解除する。
このように、一定時間より短い時間間隔では同一の送信元IPアドレスとならないようにすることで、検証系サーバが、後に接続したセッションが前のセッションの情報であると誤判断することを抑止することができる。
実施の形態3にかかるフローチャートは、アドレスブロック選択処理以外を除いて実施の形態2と同一であるため、説明を省略する。図30にて、実施の形態3にかかるアドレスブロック選択処理について説明を行う。
図30は、実施の形態3にかかるアドレスブロック選択処理手順の一例を示すフローチャートである。試験装置100は、使用中IPアドレス数nを0に設定し(ステップS3001)、使用中IPアドレス数の最大値n_maxを0に設定し(ステップS3002)、時刻tを0に設定する(ステップS3003)。なお、n、n_max、tは変数である。
設定後、試験装置100は、登録された送信元IPアドレスのうち、セッション開始時刻またはセッション終了時刻のいずれかが時刻t以降で最も早い時刻となる送信元IPアドレスを検索する(ステップS3004)。検索後、試験装置100は、送信元IPアドレスが発見できたか否かを判断する(ステップS3005)。発見できた場合(ステップS3005:Yes)、試験装置100は、最も早い時刻がセッション開始時刻か否かを判断する(ステップS3006)。
セッション開始時刻である場合(ステップS3006:Yes)、試験装置100は、nをインクリメントし(ステップS3007)、n>n_maxか否かを判断する(ステップS3008)。n>n_maxである場合(ステップS3008:Yes)、試験装置100は、n_maxにnを設定する(ステップS3009)。
セッション終了時刻である場合(ステップS3006:No)、試験装置100は、nをデクリメントし(ステップS3010)。ステップS3009、ステップS3010、n≦n_maxである場合(ステップS3008:No)、試験装置100は、tを発見した時刻に設定し(ステップS3011)、ステップS3004の処理に移行する。発見できない場合(ステップS3005:No)、試験装置100は、n_maxを取得したアドレス数として、(2)式を実行する(ステップS3012)。実行後、試験装置100は、(2)式で得られたネットマスク長以下のネットマスク長を有するプールアドレスブロックを選択し(ステップS3013)、アドレスブロック選択処理を終了する。
図30に示したフローチャートを実行することで、試験装置100は、図28の動作を行った際のアドレスの同時使用数の最大値を取得することができる。また、ステップS3004の処理にて、セッション終了時刻の代わりに、セッション終了時刻と閾値とを合算した時刻で処理を行うことで、試験装置100は、図29の動作を行うことができる。
以上説明したように、試験プログラム、試験装置、および試験方法によれば、IPアドレスのビット数から、実動系のアドレスの同時使用数の最大値に対して2を底とする対数値の小数点以下を切り上げた数値を減じた値をネットマスク長としてもよい。これにより、試験装置は、通信時間が分散しているほど、アドレスブロックの集約化を見込むことができる。
なお、本実施の形態で説明した試験方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本試験プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本試験プログラムは、インターネット等のネットワークを介して配布してもよい。