(57)【特許請求の範囲】
【請求項１】
テスト対象の通信プロトコルスタックを搭載したテスト対象装置とネットワークを介して接続されたエミュレータ装置であって、
テストすべきシーケンスにおいて前記エミュレータ装置側で実行する一連の動作を記述したシナリオが入力されると、該シナリオを参照して、実行すべき動作を判断して起動通知を行う管理手段と、
前記管理手段から起動通知を受けた動作について、前記シナリオから読み出して実行し、前記テスト対象装置に送信するパケットを生成する実行手段と、
前記テスト対象装置からの受信パケットのデータを退避させておく退避バッファと、
を備え、
前記管理手段は、前記シナリオにおける退避動作の記述に従って退避動作についての起動通知を行うと共に、前記シナリオにおける復元動作の記述に従って復元動作についての起動通知を行い、
前記実行手段は、前記管理手段から前記退避動作についての起動通知を受けた場合には、前記シナリオにおける退避動作の記述についての識別情報を付加した前記受信パケットのデータを前記退避バッファに退避させる動作を行い、前記管理手段から前記復元動作についての起動通知を受けた場合には、前記シナリオにおける復元動作の記述に記述されている識別情報を検索キーとして用いて前記退避バッファから前記受信パケットのデータを検索して読み出す動作を行う、
ことを特徴とするエミュレータ装置。
【請求項２】
前記シナリオにおいては、動作ごとに、該動作を識別するための識別情報、及び該動作の次に実行すべき識別情報からなる移動先動作識別情報が対応付けられて記述され、
前記管理手段は、前記シナリオが入力されたタイミングあるいは前記実行手段から動作の終了通知を受信したタイミングで、該動作に対応付けられた移動先動作識別情報を読み出して、該移動先動作識別情報が示す動作の起動通知を前記実行手段に送信する
ことを特徴とする請求項１記載のエミュレータ装置。
【請求項３】
前記シナリオにおいては、各動作は、前記テスト対象装置から受信したパケットに対する応答動作を記述した受動的動作、あるいは前記エミュレータ装置から自発的にパケット送信を行う動作を記述した能動的動作のいずれかからなり、
前記受動的動作及び能動的動作は、前記エミュレータ装置における該動作実行後の遷移先プロトコル状態を含み、
前記実行手段は、前記管理手段から起動通知を受けた動作について実行した後、該動作の遷移先プロトコル状態へとプロトコル状態を遷移させる
ことを特徴とする請求項２記載のエミュレータ装置。
【請求項４】
前記受動的動作は、１以上の動作を含み、動作ごとに前記テスト対象装置から受信したパケットの内容に基づいて決定される条件が定義されており、
前記実行手段は、前記管理手段から起動通知を受けた動作が前記受動的動作である場合には、前記テスト対象装置から受信したパケットの内容に対応する前記条件の設定されている動作を実行する
ことを特徴とする請求項３記載のエミュレータ装置。
【請求項５】
前記能動的動作は、送信するパケットの内容に関わる情報を更に含み、
前記実行手段は、前記管理手段から起動通知を受けた動作が前記能動的動作である場合には、該動作に記述されている送信パケットの内容に関わる情報を参照して、送信パケットを生成する
ことを特徴とする請求項３記載のエミュレータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して相互に接続されたコンピュータ間で通信プロトコルスタックのテストを行う技術に関する。
【背景技術】
【０００２】
開発した通信プロトコルスタック、例えばＴＣＰプロトコルスタックについてテストをする際には、図１４に示すようなシステム構成でテストを行うのが一般的である。例えば、図１４（ａ）に示すように、テスト対象のＴＣＰプロトコルスタックを搭載したコンピュータと、テスト済のＴＣＰプロトコルスタックを搭載した他のコンピュータとを互いにネットワークを介して接続されている構成で、各種のシーケンスについてテストを行う。
【０００３】
あるいは、ＷＡＮ（広域通信網、Wide Area Network）高速化装置等は、コンピュータＡ及びＢの間で通信するときに、ＴＣＰについてプロトコル変換を行う。このような装置についてテストをするときは、図１４（ｂ）に示すように、エンド−エンドにテスト済のＴＣＰプロトコルスタックを搭載したコンピュータＡ、Ｂを配置し、コンピュータＡ、Ｂの間にテスト対象のＷＡＮ高速化装置を配置する構成が一般的である。このような構成で、エンド−エンド間でＴＣＰ通信を行うことにより、図に示すネットワークシステムについてテストを行う。
【０００４】
ＴＣＰにおいては、ＲＦＣ（Request for Comment）により、同時コネクション確立等の多種多様な動作シーケンスが規定されている。一例を図１５に示す。
図１５は、同時コネクション確立についての動作シーケンス図である。同時コネクション確立のシーケンスでは、図１５に示すように、ネットワークを介して相互に接続された２つのコンピュータのそれぞれが、コネクション要求を相手側に送信するとともに、相手側からのコネクション要求を待機する。そして、各コンピュータにおいて、相手側からのコネクション要求を受信すると、送信したコネクション要求に対する確認応答による承認を待機する。確認応答を各コンピュータにおいて受信すると、コネクションが確立され、シーケンスが完了する。
【０００５】
同時コネクション確立のシーケンスにおいては、コネクション要求を相手側に送信するタイミングは、相手側からのパケットの受信を契機としているわけではないので、タイミングをとることが難しい。
【０００６】
ここで、公知の技術として、ＴＣＰ／ＩＰ（Internet Protocol）にしたがった通信において、通信システム間のＰＤＵ（Protocol Data Unit）を取得して解析し、その内容に基づいてイベントシーケンスを推定してエミュレーションを行うことにより、通信の詳細を解析する技術について提供されている（例えば、特許文献１）。
【０００７】
また、ＴＣＰ／ＩＰのテストを行う技術に関し、トラフィックデータを通信網エミュレータ装置に構築した擬似通信環境で処理することにより、ＴＣＰ／ＩＰの不具合を再現する技術についても提供されている（例えば、特許文献２）。
【特許文献１】特開平１１−２７３０８号公報
【特許文献２】特開２００４−２０１１２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記のとおり、ＴＣＰにおいては多くの動作シーケンスが規定されており、これらの動
作シーケンスを上記のテスト構成において任意に動作させてテストを行い、動作を検証する必要がある。しかし、これら動作シーケンスの中には、従来のシステム構成で動作させることが難しいものも含まれている。
【０００９】
本発明は、プロトコルスタックのテストにおいて、各種の動作シーケンスを発生させてプロトコルの動作の正常性を検証することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、開示のエミュレータ装置は、テスト対象の通信プロトコルスタックを搭載したテスト対象装置とネットワークを介して接続されたエミュレータ装置であって、テストすべきシーケンスにおいて前記エミュレータ装置側で実行する一連の動作を記述したシナリオが入力されると、該シナリオを参照して、実行すべき動作を判断して起動通知を行う管理手段と、前記管理手段から起動通知を受けた動作について、前記シナリオから読み出して実行し、前記テスト対象装置に送信するパケットを生成する実行手段と、を備えた構成とする。
【００１１】
入力されたシナリオに記述されている内容にしたがって、実行すべき動作を判断して実行するため、例えば同時コネクション確立シーケンス等についてのテストのように、テスト対象装置から受信したパケットに対する応答を定義するのみでは実施が困難であったシーケンスについても実現できる。これにより、各種の状況下におけるプロトコルスタックの動作の検証が可能となる。
【００１２】
前記シナリオにおいては、動作ごとに、該動作を識別するための識別情報、及び該動作の次に実行すべき識別情報からなる移動先動作識別情報が対応付けられて記述され、前記管理手段は、前記シナリオが入力されたタイミングあるいは前記実行手段から動作の終了通知を受信したタイミングで、該動作に対応付けられた移動先動作識別情報を読み出して、該移動先動作識別情報が示す動作の起動通知を前記実行手段に送信する構成としてもよい。
【発明の効果】
【００１３】
開示のエミュレータによれば、入力されたシナリオにしたがって動作を実行し、テスト対象装置である対向コンピュータに対して送信するパケットを生成して送信する。これにより、各種動作シーケンスの実現が可能となり、各種状況下におけるプロトコルスタックの動作を検証することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の好適な実施の形態について、図面を参照して詳細に説明する。
図１は、本実施形態に係るＴＣＰエミュレータを含むコンピュータの機能ブロック図である。図１に示すコンピュータ１は、テスト対象のプロトコルスタックを搭載した他のコンピュータとネットワークを介して接続され、オペレーションシステム部（以下ＯＳとする）２とＴＣＰ（Transmission Control Protocol）エミュレータ部（以下エミュレータとする）３とを含む。
【００１５】
ＯＳ２は、パケットバイパス処理部２１、プロトコルスタック部２２及びバイパス条件テーブル２３を含む。エミュレータ３は、ＴＣＰ動作をエミュレートするプログラムであり、ＲＦＣ（Request for Comment）で規定された一連の動作をシナリオとして与え、各動作シーケンスを擬似的に実現する。図１に示すエミュレータ３は、受信処理部３１、シナリオステップ管理部３２、ステップ実行処理部３３、標準ＴＣＰエミュレーション部３４、送信処理部３６及び退避バッファ３５を含む。
【００１６】
ＯＳ２のパケットバイパス処理部２１は、ネットワークを介して他のコンピュータから送信されたパケットについて、エミュレータ３に渡すべきか、ＯＳ２内で処理すべきかを判断し、振り分けを行う。
【００１７】
プロトコルスタック部２２は、テスト済のＴＣＰプロトコルスタックを有し、パケットバイパス処理部２１においてＯＳ２内で処理すべきと判断したパケットの処理を行う。
バイパス条件テーブル２３は、パケットバイパス処理部２１においてパケット振り分けのための判断を行う際の条件を格納している。
【００１８】
エミュレータ３の受信処理部３１は、ＯＳ２のパケットバイパス処理部２１においてエミュレータ３において処理すべきと判定されたパケットを、ＯＳ２から受信する。
シナリオステップ管理部３２は、ユーザによりコンピュータ１に入力されたテストのシナリオＳを読み出して、次に実行すべき動作を判断して実行させることにより、シナリオ実行を管理する。
【００１９】
ここで、「シナリオ」とは、ある動作シーケンスを対向コンピュータ（他のコンピュータ）との間で実行する場合に、自装置すなわちエミュレータ２を備えるコンピュータ１において実行する動作を記述したものと定義する。コンピュータ１においてシナリオにしたがって順次実行していく動作には、対向コンピュータ側から受信したパケットへの応答として実行される動作と、自装置から対向コンピュータ側に対して能動的に実行される動作とがある。以下、本実施形態においては、あるタイミングで実行される動作のそれぞれを、「ステップ」と表現する。
【００２０】
ステップ実行処理部３３は、シナリオステップ管理部３２により指示されたステップを実行する。標準ＴＣＰエミュレーション部３４は、ステップ実行処理部３３との間で必要な情報を受け渡しして、標準ＴＣＰの動作をエミュレーションする。
【００２１】
退避バッファ３５は、ステップ実行処理部３３においてステップを実行するときに、必要なデータを退避させるためのバッファである。具体的には、１つのエントリは、識別子と受信データとを含む。このうち、識別子は、シナリオに記述されている各ステップを識別するための識別情報からなり、受信データを退避バッファ３５に退避させるときに、受信データに付加される。退避してあったデータを復元する場合は、シナリオに記述されている識別情報を検索キーとして退避バッファ３５を検索し、合致するデータを取り出す。
【００２２】
送信処理部３６は、ステップ実行処理部３３（及び標準ＴＣＰエミュレーション部３４）におけるステップ実行の結果得られたパケットを、対向コンピュータ側に送信する。
なお、上記の図１４（ｂ）に示す構成でＷＡＮ（広域通信網、Wide Area Network）高速化装置等についてテストを行う場合においては、ネットワークを介して相互に接続されたコンピュータの一方あるいは両方に、図１に示すエミュレータ３を備えたコンピュータを適用する。
【００２３】
また、ＯＳ２のパケットバイパス処理部２１における判断については必須でなく、相手側のコンピュータから受信したパケットについては全てエミュレータ３に渡す構成としてもよい。
【００２４】
図２は、コンピュータ１における全体処理を示したフローチャートである。図２に示すステップＳ１からステップＳ５までの一連の処理のうち、本実施形態に係るエミュレータ３による処理は、ステップＳ３からステップＳ５の処理である。
【００２５】
まず、図２の処理は相手側のコンピュータからパケットを受信したことを契機として開始され、ステップＳ１で、パケットバイパス処理を行い、ＯＳ２あるいはエミュレータ３のいずれでパケットを処理すべきかを判断する。ＯＳ２でパケットを処理すべきと判断した場合は、ステップＳ２に進み、ＯＳ２内のＴＣＰプロトコルスタック部２２でパケットの処理を実行する。ステップＳ１において、受信したパケットをエミュレータ３で処理すべきと判断した場合は、ステップＳ３に進む。
【００２６】
ステップＳ３で、エミュレータ３の受信処理部３１は、ＯＳ２からパケットを受信し、ステップＳ４で、シナリオにしたがって、所定のステップを実行する。
ここで、シナリオのうち実行すべきステップは、シナリオステップ管理部３２がステップ実行処理部３３に対して予め通知をしている。ステップ実行処理部３３は、予めシナリオステップ管理部３２から指示されたステップを認識しており、エミュレータ３において相手側から送信されたパケットを受信したことを契機に、指示されたステップの実行を開始する。ステップの実行が完了すると、ステップ実行処理部３３はシナリオステップ管理部３２に対してステップの実行が終了したことを通知する。シナリオステップ管理部３２は、ステップ実行処理部３３からの終了通知により、次に実行すべきステップを判断し、ステップ実行処理部３３にその情報を与える。
【００２７】
図１の各機能ブロックの説明においても述べたように、ステップを実行するときに、必要に応じて標準ＴＣＰエミュレーション部３４に標準ＴＣＰの処理を実行させる。
ステップ実行処理が完了すると、ステップＳ５に進む。ステップＳ５で、ステップの実行により生成されたパケットを相手側のコンピュータに送信し、処理を終了する。
【００２８】
図２に示すステップＳ１からステップＳ５の処理を実行することにより、コンピュータ１から相手側のコンピュータに対してパケットが送信される。上記のとおり、コンピュータ１からのパケット送信処理については、相手側のコンピュータから受信したパケットに対する応答としての送信処理と、自装置から能動的に相手側に送信する処理とがある。図２の処理により送信されるパケットがいずれによるものであるかは、シナリオの記述による。次に、シナリオについて説明する。
【００２９】
図３は、シナリオの一例を示す図である。図に示すシナリオのうち、「＃」の記号で始まる文（２行目、３行目、…）についてはコメント文である。エミュレータ３は、シナリオの冒頭から順に記号「＃」が付されていない行の文（１行目、４行目、６行目、…）を読み込んでゆく。
【００３０】
シナリオには、ステップごとに動作を記述する。１つのステップは、識別子、動作定義及びステップ遷移語を含む。
識別子は、あるステップを一意に判別可能とするための識別情報である。図３のシナリオ例では、１行目及び８行目にそれぞれ記述されている「識別子１」及び「識別子２」がこれに該当する。
【００３１】
動作定義は、同一ステップ内に記述された単一あるいは複数の動作についての記述と定義する。
ここで、動作定義については、（１）能動的動作定義と（２）受動的動作定義とに分類される。このうち、（１）の能動的動作定義には、エミュレータ３を備えるコンピュータ１側が自発的にデータを相手側に送信するための動作を記述する。（２）の受動的動作定義には、相手側からの受信データに応答するための動作を記述する。
【００３２】
ステップ遷移語は、あるステップについての動作定義を実行した後、次にどのステップの動作定義を実行するかを示すために用意した専用の記述と定義する。図３のシナリオ例
では、それぞれ４行目及び６行目の「識別子２へ移動」及び「識別子１へ移動」がステップ遷移語に該当する。
【００３３】
動作定義の内容についてより具体的に説明する。ある１つのステップ内では、能動的動作定義あるいは受動的動作定義のいずれかを記述する。
このうち、能動的動作定義には、送信データの内容及び遷移先ＴＣＰ状態を記述する。なお、遷移先ＴＣＰ状態は、動作定義の記述にしたがって処理を実行してパケットを送信した後に遷移するプロトコルスタックのＴＣＰ状態を示し、省略することが可能である。遷移先ＴＣＰ状態を省略した場合には、標準ＴＣＰと同様の振る舞いとする。能動的動作定義は、図３においては１１行目がこれに該当する。
【００３４】
受動的動作定義には、受信データ条件、受信データの退避・復元指示、応答データの内容及び遷移先ＴＣＰ状態を記述する。受動的動作定義は、図３においては４行目及び６行目がこれに該当する。
【００３５】
受信データ条件は、実施例では、相手側から受信したパケットのうち、ＴＣＰセグメントに設定されている情報からなる。受動的動作定義においては、１つのステップ内に複数の動作定義を記述することが可能である。１つのステップに複数の受動的動作定義を記述する場合は、互いに異なる受信データ条件をそれぞれ設定する必要がある。
【００３６】
また、受信データ条件については省略することも可能である。受信データ条件の記述を省略する場合は、全ての受信データに対して所定の動作が選択されることとなる。
受信データの退避・復元指示は、受信パケットのデータを退避バッファ３５の所定の領域に退避あるいは退避バッファ３５所定の領域から復元する旨の指示からなる。
【００３７】
応答データの内容は、実施例では応答として相手側に返すパケットに含めるデータの内容からなる。
遷移先ＴＣＰ状態については、能動的動作定義に含まれる遷移先ＴＣＰ状態と同様、動作定義の記述にしたがって処理を実行してパケットを送信した後に遷移するプロトコルスタックのＴＣＰ状態を示す。
【００３８】
なお、応答データの内容及び遷移先ＴＣＰ状態については、省略が可能である。
上記のルールにしたがって作成されたシナリオを用いて、本実施形態に係るエミュレータ３によりＲＦＣ７９３において言及されているシーケンスのテストを実現する具体的な方法について説明する。
【００３９】
図４は、同時コネクション確立シーケンスのテスト方法を説明する図である。
同時コネクション確立シーケンスのテストを行うために、対向コンピュータ（テスト対象のプロトコルスタックを搭載した相手側のコンピュータ）から接続要求を受信すると、エミュレータ３は、対向コンピュータに対して接続要求を返している（シナリオの１〜４行目）。
【００４０】
送信した接続要求に対して、対向コンピュータが応答を返してくると、エミュレータ３は、対向コンピュータからの接続要求に対して応答（ＡＣＫ）を返す（シナリオの７〜９行目）。
【００４１】
このように、同時コネクション確立のシーケンスについてテストするためには、対向コンピュータから接続要求を受信すると、エミュレータ３は、受信した接続要求に対して応答を返す前に対向コンピュータに対して接続要求を送信する。対向コンピュータとの間で相互に相手側に接続要求を送信し、互いに相手側からの接続要求に対して応答を返す処理
を実行させることが可能となる。
【００４２】
図５は、古い重複シーケンスからの復旧処理についてのシーケンスのテスト方法を説明する図である。
古い重複シーケンス番号（ＳＹＮ）に対する応答を擬似的に再現するために、エミュレータ３は、テスト対象のコンピュータすなわち対向コンピュータ側のＴＣＰから受けたシーケンス番号ＳＥＱ＝１００を退避バッファ３５に退避させるとともに、それよりも若いシーケンス番号に対応するＳＹＮ＋ＡＣＫを返す。すなわち、実際に受信したシーケンス番号よりも古いシーケンス番号１００−１０＝９０に対する応答を返す（シナリオの１〜５行目）。
【００４３】
対向コンピュータからコネクションリセットの要求を受信すると、退避させておいたシーケンス番号ＳＥＱ＝１００を復元して応答を返す（シナリオの７〜９行目）。
このように、対向コンピュータでは、実際に送信したシーケンス番号よりも古いシーケンス番号に対する応答を受信することになるため、対向コンピュータすなわちテスト対象のプロトコルスタックを搭載したコンピュータにおいて、古いシーケンスからの復旧処理を正常に実行できるかについてテストすることが可能となる。
【００４４】
図６は、同時クローズのシーケンスについてのテスト方法を説明する図である。
同時クローズに見せるため、エミュレータ３は、テスト対象のプロトコルスタックを搭載したコンピュータ側から後続データなしを示す「ＦＩＮ」を受信すると、受信した「ＦＩＮ」を退避バッファ３５の所定の領域に退避させるとともに、相手のコンピュータ側にも「ＦＩＮ」を送信する（シナリオの１〜５行目）。
【００４５】
送信したＦＩＮに対する応答を受信すると、エミュレータ３は、退避バッファ３５の所定の領域から、退避させておいた「ＦＩＮ」を復元するとともに、相手のコンピュータ側に、自装置が受信したＦＩＮに対する応答を返す（シナリオの７〜１０行目）。
【００４６】
このように、受信したＦＩＮに対してすぐに応答を返さず、まずＦＩＮを送信し、相手から応答を受信してから、自装置が受信したＦＩＮに対する応答を返すことにより、同時クローズのシーケンスについてテストすることが可能となる。
【００４７】
図７は、ハーフオープンコネクションからの復旧のシーケンスについてのテスト方法を説明する図である。
ハーフオープンコネクションからの復旧シーケンスのテストでは、対向コンピュータ側のＴＣＰがクラッシュしたと想定する。エミュレータ３は接続を保ったままのふりをするために、対向コンピュータ側からの接続要求（シーケンス番号ＳＥＱ＝４００）に対し、古い（若い）番号の応答（ＡＣＫ）を返す（シナリオの１〜５行目）。
【００４８】
古い番号の応答を受け取った対向コンピュータ側では、まず接続の初期化（ＣＴＬ＝ＲＳＴ）を行なってから、接続要求（シーケンス番号ＳＥＱ＝４００）を再送する。
このように、エミュレータ３が実際に受信した接続要求のシーケンス番号よりも若い番号の応答を返すことで、ハーフオープンコネクションからの復旧動作を実現することが可能となる。
【００４９】
上記のとおり、本実施形態に係るエミュレータ３は、シナリオに記述されたステップのうち、いずれを実行すべきかを判断し、シナリオのステップに記述された内容にしたがって所定の動作を実行する。このため、上記の同時コネクション確立シーケンス等のように、実際に対向コンピュータから受信したパケットにしたがって応答する構成では発生させることが難しいシーケンスについてもテストすることが可能となる。
【００５０】
以下、本実施形態に係るエミュレータ３を搭載したコンピュータ１の各部について、具体的な処理方法を説明する。
図８は、ＯＳ２のパケットバイパス処理部２１におけるパケットバイパス処理を示したフローチャートである。図８に示す処理は、相手側から送信されたパケットをＯＳ２において認識したことを契機として開始される。
【００５１】
まず、ステップＳ１１で、バイパス条件テーブル２３を参照し、受信したパケットの所定のフィールドに設定されている値が、バイパス条件テーブル２３に格納されている条件と互いに一致するか否かを判定する。バイパス条件テーブルについては、後述する。
【００５２】
ステップＳ１１の判定において、受信パケットの所定のフィールドの値がバイパス条件テーブル２３に格納されている値と互いに一致する場合は、ステップＳ１２に進み、エミュレータ３にパケットを転送し、処理を終了する。
【００５３】
ステップＳ１１の判定において、受信パケットの所定のフィールドの値がバイパス条件テーブル２３に格納されている値と一致しない場合は、ステップＳ１３に進み、ＯＳ２のプロトコルスタック部２２にパケットを転送し、処理を終了する。
【００５４】
上記のステップＳ１１において参照されるバイパス条件テーブル２３は、パケットバイパス処理部２１により参照されるテーブルであり、実施例では、１つのエントリは、宛先ＩＰ（Internet Protocol）アドレス、送信元ＩＰアドレス、宛先ポート番号及び送信元ポート番号の４つの情報からなる。
【００５５】
図９は、エミュレータ３のシナリオステップ管理部３２によるシナリオステップ管理処理を示したフローチャートである。実施例においては、これから開始すべきテストについてのシナリオを、ユーザがコンピュータ１に登録したことを契機として開始される。
【００５６】
まず、ステップＳ２１で、登録されたシナリオの中から、最初に実行すべきステップを検索する。ステップＳ２２で、検索の結果、実行すべきステップがあるか否かを判定する。ここで、実行すべきステップとは、登録されたシナリオにより記述されているステップのうち、未だ実行されていない動作（すなわちステップ）で、検索を行ったタイミングで次にコンピュータ１において実行すべき動作を記述したステップをいう。
【００５７】
ステップＳ２２で、検索の結果実行すべきステップが得られなかったと判定された場合は、特に処理を行わず、ステップＳ２７に進む。
一方、ステップＳ２２で、実行すべきステップがあると判定されると、ステップＳ２３に進み、ステップ実行処理部３３に対して起動通知を行う。そして、ステップＳ２４で、ステップ実行処理部３３からの終了通知を待機する。終了通知を受信すると、ステップＳ２５に進み、ステップの実行の結果正常終了したか否かを判定する。
【００５８】
ステップＳ２５において、正常終了と判定された場合は、ステップＳ２７に進むが、異常終了と判定された場合は、ステップＳ２６に進み、ユーザに対して異常の内容を通知してから、ステップＳ２７に進む。
【００５９】
ステップＳ２７で、シナリオステップ管理部３２は、シナリオを参照して次に実行すべきステップを検索し、ステップＳ２２に戻る。以降は、あるシナリオに記述されている全てのステップについて処理を終えるまで、同様の処理を繰り返す。
【００６０】
図１０は、ステップ実行処理部３３によるステップ実行処理を示したフローチャート（
その１）である。図１０に示す処理は、シナリオステップ管理部３２から起動通知を受けたことを契機として開始される。
【００６１】
まず、ステップＳ３１で、シナリオのうち、シナリオステップ管理部３２から起動通知を受けたステップの動作定義を照合し、ステップＳ３２で、動作定義は受動的動作定義であるか否かを判定する。受動的動作定義である場合は、図１１に示す処理へと進むが、詳しくは後述する。受動的動作定義でない場合は、ステップＳ３３に進む。
【００６２】
ステップＳ３３で、シナリオのうち、起動通知を受けたステップについて記述された動作の有無を判定する。該当する動作が記述されていないときは、ステップＳ３４に進み、シナリオステップ管理部３２に終了通知を送信し、処理を終了する。該当する動作が記述されているときは、ステップＳ３５に進み、シナリオの記述にしたがって、対向コンピュータに送信するデータを作成する。
【００６３】
ステップＳ３６で、標準ＴＣＰエミュレーション部３４との間で互いの処理結果を受け渡しして、標準ＴＣＰエミュレーション部３４において、送信データに対応する遷移先ＴＣＰ状態を仮設定させる。そして、ステップＳ３７で、シナリオの記述を参照し、ＴＣＰ状態の遷移先が指定されているか否かを判定する。
【００６４】
ステップＳ３７において、シナリオにより遷移先ＴＣＰ状態が指定されていると判定されると、ステップＳ３８に進み、遷移先ＴＣＰ状態を指定された内容に書き換え、ステップＳ３９に進む。シナリオに遷移先ＴＣＰ状態が指定されていないと判定されると、特に処理を行わず、ステップＳ３９に進む。
【００６５】
ステップＳ３９で、送信データの内容と遷移先ＴＣＰ状態とを確定する。ステップＳ４０で、ＴＣＰ状態を、ステップＳ３９で確定した状態に遷移させる。最後に、ステップＳ４１で、シナリオステップ管理部３２に終了通知を送信すると、パケットを対向コンピュータに送信して処理を終了する。
【００６６】
図１１は、ステップ実行処理部３３によるステップ実行処理を示したフローチャート（その２）である。シナリオの動作定義が受動的動作定義である場合の処理を示す。
まず、ステップＳ５１で、対向コンピュータから受信データが送信されるのを待機する。データを受信すると、ステップＳ５２に進み、受信データと、シナリオステップ管理部３２から起動通知を受けたステップの動作定義とを照合する。
【００６７】
ステップＳ５３で、受信データに、動作定義に記述されている受信データ条件に対応する情報が設定されているか否かを判定する。受信データ条件に対応する情報が受信データに設定されていないと判定された場合は、ステップＳ５４に進み、シナリオステップ管理部３２に終了通知を送信するとともに、異常動作である旨通知する。
【００６８】
ステップＳ５３で、受信データ条件に対応する情報が受信データに設定されていると判定された場合は、ステップＳ５５に進み、更に、動作定義に、受信データを退避させる旨の記述があるか否かを判定する。
【００６９】
ステップＳ５５において、受信データの退避要求有りと判定された場合は、ステップＳ５６に進み、受信データを退避バッファ３５に退避させ、ステップＳ５７に進む。ステップＳ５５において、受信データの退避要求なしと判定された場合は、特に処理を行わず、ステップＳ５７に進む。ステップＳ５７においては、動作定義に、受信データを復元させる旨の記述があるか否かを判定する。
【００７０】
ステップＳ５７において、受信データの復元要求有りと判定された場合は、ステップＳ５８に進み、退避バッファ３５から対応するデータを読み出し、受信データに上書きし、ステップＳ５９に進む。ステップＳ５７において、受信データの復元要求なしと判定された場合は、特に処理を行わず、ステップＳ５９に進む。
【００７１】
ステップＳ５９で、標準ＴＣＰエミュレーション部３４との間で互いの処理結果を受け渡しして、標準ＴＣＰエミュレーション部３４において、受信データに対する応答データ及び遷移先ＴＣＰ状態を仮設定させる。
【００７２】
ステップＳ６０で、対向コンピュータに送信する応答データの内容がシナリオの動作定義に記述されているか否かを判定する。応答データの内容がシナリオにより指定されている場合は、ステップＳ６１に進み、応答パケットをシナリオに指定されている内容に書き換え、ステップＳ６２に進む。応答データの内容についてはシナリオに指定されていない場合は、特に処理を行わず、ステップＳ６２に進む。
【００７３】
ステップＳ６２で、シナリオにより遷移先ＴＣＰ状態が指定されているか否かを判定し、指定されている場合は、ステップＳ６３で、シナリオに指定されている内容に遷移先ＴＣＰ状態を書き換えてステップＳ６４に進む。シナリオには遷移先ＴＣＰ状態が記述されていない場合は、特に処理を行わず、ステップＳ６４に進む。
【００７４】
ステップＳ６４で、応答データの内容と遷移先ＴＣＰ状態とを確定する。ステップＳ６５で、ＴＣＰ状態を、ステップＳ６４で確定したＴＣＰ状態に遷移させる。最後に、ステップＳ６６で、シナリオステップ管理部３２に終了通知を送信すると、パケットを対向コンピュータに送信して処理を終了する。
【００７５】
ところで、図１に示すエミュレータ３は、例えば、図１２に示すような情報処理装置（コンピュータ）を用いて構成することができる。図１２の情報処理装置は、ＣＰＵ（中央処理装置）１００１、メモリ１００２、入力装置１００３、出力装置１００４、外部記憶装置１００５、媒体駆動装置１００６、ネットワーク接続装置１００７を備え、それらはバス１００８により互いに接続されている。
【００７６】
メモリ１００２は、例えば、ＲＯＭ（read only memory）、ＲＡＭ（random access memory）等を含み、処理に用いられるプログラムおよびデータを格納する。ＣＰＵ１００１は、メモリ１００２を利用してプログラムを実行することにより、必要な処理を行う。
【００７７】
図１の退避バッファ３５は、メモリ１００２に対応する。また、図１の受信処理部３１、シナリオステップ管理部３２、ステップ実行処理部３３、標準ＴＣＰエミュレーション部３４及び送信処理部３６は、メモリ１００２に格納されたプログラムを実行することにより実現される機能に対応する。
【００７８】
入力装置１００３は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。出力装置１００４は、例えば、ディスプレイ、プリンタ、スピーカ等であり、ユーザへの問い合わせ、アラーム、処理結果等の出力に用いられる。
【００７９】
外部記憶装置１００５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。情報処理装置は、この外部記憶装置１００５に、上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１００２にロードして使用する。
【００８０】
媒体駆動装置１００６は、可搬記録媒体１００９を駆動し、その記録内容にアクセスする。可搬記録媒体１００９は、メモリカード、フレキシブルディスク、ＣＤ−ＲＯＭ（compact disk read only memory）、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。ユーザは、この可搬記録媒体１００９に上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１００２にロードして使用する。
【００８１】
ネットワーク接続装置１００７は、ＬＡＮ（local area network）、インターネット等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。情報処理装置は、必要に応じて、上記プログラムおよびデータを外部の装置からネットワーク接続装置１００７を介して受け取り、それらをメモリ１００２にロードして使用する。
【００８２】
図１３は、図１２の情報処理装置にプログラムおよびデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体１００９やサーバ１１０１のデータベース１１０３に格納されたプログラムおよびデータは、情報処理装置１１０２のメモリ１００２にロードされる。サーバ１１０１は、そのプログラムおよびデータを搬送する搬送信号を生成し、ネットワーク上の任意の伝送媒体を介して情報処理装置１１０２に送信する。ＣＰＵ１００１は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００８３】
以上説明したように、本実施形態に係るエミュレータ３によれば、入力されたシナリオの記述にしたがって対向コンピュータへの送信パケットを生成して送信処理を行うことにより、ＴＣＰ通信における多種多用な動作シーケンスを実現することが可能となる。コンピュータのＴＣＰスタックや、ＷＡＮ高速化装置等のＴＣＰをプロトコル変換するようなネットワークシステムにおいて、様々な状況下でのＴＣＰ動作の正常性を検証するテストの実施に有効である。
【００８４】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
テスト対象の通信プロトコルスタックを搭載したテスト対象装置とネットワークを介して接続されたエミュレータ装置であって、
テストすべきシーケンスにおいて前記エミュレータ装置側で実行する一連の動作を記述したシナリオが入力されると、該シナリオを参照して、実行すべき動作を判断して起動通知を行う管理手段と、
前記管理手段から起動通知を受けた動作について、前記シナリオから読み出して実行し、前記テスト対象装置に送信するパケットを生成する実行手段と、
を備えたことを特徴とするエミュレータ装置。
（付記２）
前記シナリオにおいては、動作ごとに、該動作を識別するための識別情報、及び該動作の次に実行すべき識別情報からなる移動先動作識別情報が対応付けられて記述され、
前記管理手段は、前記シナリオが入力されたタイミングあるいは前記実行手段から動作の終了通知を受信したタイミングで、該動作に対応付けられた移動先動作識別情報を読み出して、該移動先動作識別情報が示す動作の起動通知を前記実行手段に送信する
ことを特徴とする付記１記載のエミュレータ装置。
（付記３）
前記シナリオにおいては、各動作は、前記テスト対象装置から受信したパケットに対する応答動作を記述した受動的動作、あるいは前記エミュレータ装置から自発的にパケット送信を行う動作を記述した能動的動作のいずれかからなり、
前記受動的動作及び能動的動作は、前記エミュレータ装置における該動作実行後の遷移先プロトコル状態を含み、
前記実行手段は、前記管理手段から起動通知を受けた動作について実行した後、該動作の遷移先プロトコル状態へとプロトコル状態を遷移させる
ことを特徴とする付記２記載のエミュレータ装置。
（付記４）
前記受動的動作は、１以上の動作を含み、動作ごとに前記テスト対象装置から受信したパケットの内容に基づいて決定される条件が定義されており、
前記実行手段は、前記管理手段から起動通知を受けた動作が前記受動的動作である場合には、前記テスト対象装置から受信したパケットの内容に対応する前記条件の設定されている動作を実行する
ことを特徴とする付記３記載のエミュレータ装置。
（付記５）
前記能動的動作は、送信するパケットの内容に関わる情報を更に含み、
前記実行手段は、前記管理手段から起動通知を受けた動作が前記能動的動作である場合には、該動作に記述されている送信パケットの内容に関わる情報を参照して、送信パケットを生成する
ことを特徴とする付記３記載のエミュレータ装置。
（付記６）
前記実行手段からの指示があったときは、前記通信プロトコルの標準動作をエミュレーションし、結果を該実行手段に返すエミュレーション手段と、
を更に備え、
前記実行手段は、前記管理手段から実行すべき動作について指示を受けると、前記シナリオの該動作の記述を参照し、該シナリオに前記通信プロトコルの標準動作をエミュレーションさせる旨記述されているときは、前記エミュレーション手段にエミュレーションを行う旨の指示を出す
ことを特徴とする付記２記載のエミュレータ装置。
（付記７）
前記テスト対象装置から受信したパケットの内容に基づいて、該パケットを前記実行手段において実行させるべきか否かを判定する判定手段と、
を更に備えたことを特徴とする付記１記載のエミュレータ装置。
【図面の簡単な説明】
【００８５】
【図１】実施形態に係るＴＣＰエミュレータを含むコンピュータの機能ブロック図である。
【図２】全体処理を示したフローチャートである。
【図３】シナリオの一例を示す図である。
【図４】同時コネクション確立シーケンスのテストを説明する図である。
【図５】古い重複シーケンスからの復旧処理についてのシーケンスのテスト方法を説明する図である。
【図６】同時クローズのシーケンスについてのテスト方法を説明する図である。
【図７】ハーフオープンコネクションからの復旧のシーケンスについてのテスト方法を説明する図である。
【図８】パケットバイパス処理を示したフローチャートである。
【図９】シナリオステップ管理処理を示したフローチャートである。
【図１０】ステップ実行処理を示したフローチャート（その１）である。
【図１１】ステップ実行処理を示したフローチャート（その２）である。
【図１２】情報処理装置の構成図である。
【図１３】記録媒体を示す図である。
【図１４】プロトコルスタックのテストを実施するためのシステム構成を示す図である。
【図１５】同時コネクション確立についての動作シーケンス図である。
【符号の説明】
【００８６】
１      コンピュータ
２      オペレーションシステム
３      ＴＣＰエミュレータ
２１      パケットバイパス処理部
２２      プロトコルスタック
２３      バイパス条件テーブル
３１      受信処理部
３２      シナリオステップ管理部
３３      ステップ実行処理部
３４      標準ＴＣＰエミュレーション部
３５      退避バッファ
３６      送信処理部
【図１】
0005157586.tif 000002
【図２】
0005157586.tif 000003
【図３】
0005157586.tif 000004
【図４】
0005157586.tif 000005
【図５】
0005157586.tif 000006
【図６】
0005157586.tif 000007
【図７】
0005157586.tif 000008
【図８】
0005157586.tif 000009
【図９】
0005157586.tif 000010
【図１０】
0005157586.tif 000011
【図１１】
0005157586.tif 000012
【図１２】
0005157586.tif 000013
【図１３】
0005157586.tif 000014
【図１４】
0005157586.tif 000015
【図１５】
0005157586.tif 000016