JP5157586B2 - エミュレータ装置 - Google Patents

エミュレータ装置 Download PDF

Info

Publication number
JP5157586B2
JP5157586B2 JP2008087566A JP2008087566A JP5157586B2 JP 5157586 B2 JP5157586 B2 JP 5157586B2 JP 2008087566 A JP2008087566 A JP 2008087566A JP 2008087566 A JP2008087566 A JP 2008087566A JP 5157586 B2 JP5157586 B2 JP 5157586B2
Authority
JP
Japan
Prior art keywords
scenario
packet
received
emulator
identification information
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.)
Expired - Fee Related
Application number
JP2008087566A
Other languages
English (en)
Other versions
JP2009246453A (ja
Inventor
晶太郎 中山
征典 長沼
孝司 澤栗
茂樹 関根
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008087566A priority Critical patent/JP5157586B2/ja
Priority to US12/411,630 priority patent/US20090271171A1/en
Publication of JP2009246453A publication Critical patent/JP2009246453A/ja
Application granted granted Critical
Publication of JP5157586B2 publication Critical patent/JP5157586B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Description

本発明は、ネットワークを介して相互に接続されたコンピュータ間で通信プロトコルスタックのテストを行う技術に関する。
開発した通信プロトコルスタック、例えばTCPプロトコルスタックについてテストをする際には、図14に示すようなシステム構成でテストを行うのが一般的である。例えば、図14(a)に示すように、テスト対象のTCPプロトコルスタックを搭載したコンピュータと、テスト済のTCPプロトコルスタックを搭載した他のコンピュータとを互いにネットワークを介して接続されている構成で、各種のシーケンスについてテストを行う。
あるいは、WAN(広域通信網、Wide Area Network)高速化装置等は、コンピュータA及びBの間で通信するときに、TCPについてプロトコル変換を行う。このような装置についてテストをするときは、図14(b)に示すように、エンド−エンドにテスト済のTCPプロトコルスタックを搭載したコンピュータA、Bを配置し、コンピュータA、Bの間にテスト対象のWAN高速化装置を配置する構成が一般的である。このような構成で、エンド−エンド間でTCP通信を行うことにより、図に示すネットワークシステムについてテストを行う。
TCPにおいては、RFC(Request for Comment)により、同時コネクション確立等の多種多様な動作シーケンスが規定されている。一例を図15に示す。
図15は、同時コネクション確立についての動作シーケンス図である。同時コネクション確立のシーケンスでは、図15に示すように、ネットワークを介して相互に接続された2つのコンピュータのそれぞれが、コネクション要求を相手側に送信するとともに、相手側からのコネクション要求を待機する。そして、各コンピュータにおいて、相手側からのコネクション要求を受信すると、送信したコネクション要求に対する確認応答による承認を待機する。確認応答を各コンピュータにおいて受信すると、コネクションが確立され、シーケンスが完了する。
同時コネクション確立のシーケンスにおいては、コネクション要求を相手側に送信するタイミングは、相手側からのパケットの受信を契機としているわけではないので、タイミングをとることが難しい。
ここで、公知の技術として、TCP/IP(Internet Protocol)にしたがった通信において、通信システム間のPDU(Protocol Data Unit)を取得して解析し、その内容に基づいてイベントシーケンスを推定してエミュレーションを行うことにより、通信の詳細を解析する技術について提供されている(例えば、特許文献1)。
また、TCP/IPのテストを行う技術に関し、トラフィックデータを通信網エミュレータ装置に構築した擬似通信環境で処理することにより、TCP/IPの不具合を再現する技術についても提供されている(例えば、特許文献2)。
特開平11−27308号公報 特開2004−201121号公報
上記のとおり、TCPにおいては多くの動作シーケンスが規定されており、これらの動
作シーケンスを上記のテスト構成において任意に動作させてテストを行い、動作を検証する必要がある。しかし、これら動作シーケンスの中には、従来のシステム構成で動作させることが難しいものも含まれている。
本発明は、プロトコルスタックのテストにおいて、各種の動作シーケンスを発生させてプロトコルの動作の正常性を検証することを可能とする技術を提供することを目的とする。
上記課題を解決するために、開示のエミュレータ装置は、テスト対象の通信プロトコルスタックを搭載したテスト対象装置とネットワークを介して接続されたエミュレータ装置であって、テストすべきシーケンスにおいて前記エミュレータ装置側で実行する一連の動作を記述したシナリオが入力されると、該シナリオを参照して、実行すべき動作を判断して起動通知を行う管理手段と、前記管理手段から起動通知を受けた動作について、前記シナリオから読み出して実行し、前記テスト対象装置に送信するパケットを生成する実行手段と、を備えた構成とする。
入力されたシナリオに記述されている内容にしたがって、実行すべき動作を判断して実行するため、例えば同時コネクション確立シーケンス等についてのテストのように、テスト対象装置から受信したパケットに対する応答を定義するのみでは実施が困難であったシーケンスについても実現できる。これにより、各種の状況下におけるプロトコルスタックの動作の検証が可能となる。
前記シナリオにおいては、動作ごとに、該動作を識別するための識別情報、及び該動作の次に実行すべき識別情報からなる移動先動作識別情報が対応付けられて記述され、前記管理手段は、前記シナリオが入力されたタイミングあるいは前記実行手段から動作の終了通知を受信したタイミングで、該動作に対応付けられた移動先動作識別情報を読み出して、該移動先動作識別情報が示す動作の起動通知を前記実行手段に送信する構成としてもよい。
開示のエミュレータによれば、入力されたシナリオにしたがって動作を実行し、テスト対象装置である対向コンピュータに対して送信するパケットを生成して送信する。これにより、各種動作シーケンスの実現が可能となり、各種状況下におけるプロトコルスタックの動作を検証することが可能となる。
以下、本発明の好適な実施の形態について、図面を参照して詳細に説明する。
図1は、本実施形態に係るTCPエミュレータを含むコンピュータの機能ブロック図である。図1に示すコンピュータ1は、テスト対象のプロトコルスタックを搭載した他のコンピュータとネットワークを介して接続され、オペレーションシステム部(以下OSとする)2とTCP(Transmission Control Protocol)エミュレータ部(以下エミュレータとする)3とを含む。
OS2は、パケットバイパス処理部21、プロトコルスタック部22及びバイパス条件テーブル23を含む。エミュレータ3は、TCP動作をエミュレートするプログラムであり、RFC(Request for Comment)で規定された一連の動作をシナリオとして与え、各動作シーケンスを擬似的に実現する。図1に示すエミュレータ3は、受信処理部31、シナリオステップ管理部32、ステップ実行処理部33、標準TCPエミュレーション部34、送信処理部36及び退避バッファ35を含む。
OS2のパケットバイパス処理部21は、ネットワークを介して他のコンピュータから送信されたパケットについて、エミュレータ3に渡すべきか、OS2内で処理すべきかを判断し、振り分けを行う。
プロトコルスタック部22は、テスト済のTCPプロトコルスタックを有し、パケットバイパス処理部21においてOS2内で処理すべきと判断したパケットの処理を行う。
バイパス条件テーブル23は、パケットバイパス処理部21においてパケット振り分けのための判断を行う際の条件を格納している。
エミュレータ3の受信処理部31は、OS2のパケットバイパス処理部21においてエミュレータ3において処理すべきと判定されたパケットを、OS2から受信する。
シナリオステップ管理部32は、ユーザによりコンピュータ1に入力されたテストのシナリオSを読み出して、次に実行すべき動作を判断して実行させることにより、シナリオ実行を管理する。
ここで、「シナリオ」とは、ある動作シーケンスを対向コンピュータ(他のコンピュータ)との間で実行する場合に、自装置すなわちエミュレータ2を備えるコンピュータ1において実行する動作を記述したものと定義する。コンピュータ1においてシナリオにしたがって順次実行していく動作には、対向コンピュータ側から受信したパケットへの応答として実行される動作と、自装置から対向コンピュータ側に対して能動的に実行される動作とがある。以下、本実施形態においては、あるタイミングで実行される動作のそれぞれを、「ステップ」と表現する。
ステップ実行処理部33は、シナリオステップ管理部32により指示されたステップを実行する。標準TCPエミュレーション部34は、ステップ実行処理部33との間で必要な情報を受け渡しして、標準TCPの動作をエミュレーションする。
退避バッファ35は、ステップ実行処理部33においてステップを実行するときに、必要なデータを退避させるためのバッファである。具体的には、1つのエントリは、識別子と受信データとを含む。このうち、識別子は、シナリオに記述されている各ステップを識別するための識別情報からなり、受信データを退避バッファ35に退避させるときに、受信データに付加される。退避してあったデータを復元する場合は、シナリオに記述されている識別情報を検索キーとして退避バッファ35を検索し、合致するデータを取り出す。
送信処理部36は、ステップ実行処理部33(及び標準TCPエミュレーション部34)におけるステップ実行の結果得られたパケットを、対向コンピュータ側に送信する。
なお、上記の図14(b)に示す構成でWAN(広域通信網、Wide Area Network)高速化装置等についてテストを行う場合においては、ネットワークを介して相互に接続されたコンピュータの一方あるいは両方に、図1に示すエミュレータ3を備えたコンピュータを適用する。
また、OS2のパケットバイパス処理部21における判断については必須でなく、相手側のコンピュータから受信したパケットについては全てエミュレータ3に渡す構成としてもよい。
図2は、コンピュータ1における全体処理を示したフローチャートである。図2に示すステップS1からステップS5までの一連の処理のうち、本実施形態に係るエミュレータ3による処理は、ステップS3からステップS5の処理である。
まず、図2の処理は相手側のコンピュータからパケットを受信したことを契機として開始され、ステップS1で、パケットバイパス処理を行い、OS2あるいはエミュレータ3のいずれでパケットを処理すべきかを判断する。OS2でパケットを処理すべきと判断した場合は、ステップS2に進み、OS2内のTCPプロトコルスタック部22でパケットの処理を実行する。ステップS1において、受信したパケットをエミュレータ3で処理すべきと判断した場合は、ステップS3に進む。
ステップS3で、エミュレータ3の受信処理部31は、OS2からパケットを受信し、ステップS4で、シナリオにしたがって、所定のステップを実行する。
ここで、シナリオのうち実行すべきステップは、シナリオステップ管理部32がステップ実行処理部33に対して予め通知をしている。ステップ実行処理部33は、予めシナリオステップ管理部32から指示されたステップを認識しており、エミュレータ3において相手側から送信されたパケットを受信したことを契機に、指示されたステップの実行を開始する。ステップの実行が完了すると、ステップ実行処理部33はシナリオステップ管理部32に対してステップの実行が終了したことを通知する。シナリオステップ管理部32は、ステップ実行処理部33からの終了通知により、次に実行すべきステップを判断し、ステップ実行処理部33にその情報を与える。
図1の各機能ブロックの説明においても述べたように、ステップを実行するときに、必要に応じて標準TCPエミュレーション部34に標準TCPの処理を実行させる。
ステップ実行処理が完了すると、ステップS5に進む。ステップS5で、ステップの実行により生成されたパケットを相手側のコンピュータに送信し、処理を終了する。
図2に示すステップS1からステップS5の処理を実行することにより、コンピュータ1から相手側のコンピュータに対してパケットが送信される。上記のとおり、コンピュータ1からのパケット送信処理については、相手側のコンピュータから受信したパケットに対する応答としての送信処理と、自装置から能動的に相手側に送信する処理とがある。図2の処理により送信されるパケットがいずれによるものであるかは、シナリオの記述による。次に、シナリオについて説明する。
図3は、シナリオの一例を示す図である。図に示すシナリオのうち、「#」の記号で始まる文(2行目、3行目、…)についてはコメント文である。エミュレータ3は、シナリオの冒頭から順に記号「#」が付されていない行の文(1行目、4行目、6行目、…)を読み込んでゆく。
シナリオには、ステップごとに動作を記述する。1つのステップは、識別子、動作定義及びステップ遷移語を含む。
識別子は、あるステップを一意に判別可能とするための識別情報である。図3のシナリオ例では、1行目及び8行目にそれぞれ記述されている「識別子1」及び「識別子2」がこれに該当する。
動作定義は、同一ステップ内に記述された単一あるいは複数の動作についての記述と定義する。
ここで、動作定義については、(1)能動的動作定義と(2)受動的動作定義とに分類される。このうち、(1)の能動的動作定義には、エミュレータ3を備えるコンピュータ1側が自発的にデータを相手側に送信するための動作を記述する。(2)の受動的動作定義には、相手側からの受信データに応答するための動作を記述する。
ステップ遷移語は、あるステップについての動作定義を実行した後、次にどのステップの動作定義を実行するかを示すために用意した専用の記述と定義する。図3のシナリオ例
では、それぞれ4行目及び6行目の「識別子2へ移動」及び「識別子1へ移動」がステップ遷移語に該当する。
動作定義の内容についてより具体的に説明する。ある1つのステップ内では、能動的動作定義あるいは受動的動作定義のいずれかを記述する。
このうち、能動的動作定義には、送信データの内容及び遷移先TCP状態を記述する。なお、遷移先TCP状態は、動作定義の記述にしたがって処理を実行してパケットを送信した後に遷移するプロトコルスタックのTCP状態を示し、省略することが可能である。遷移先TCP状態を省略した場合には、標準TCPと同様の振る舞いとする。能動的動作定義は、図3においては11行目がこれに該当する。
受動的動作定義には、受信データ条件、受信データの退避・復元指示、応答データの内容及び遷移先TCP状態を記述する。受動的動作定義は、図3においては4行目及び6行目がこれに該当する。
受信データ条件は、実施例では、相手側から受信したパケットのうち、TCPセグメントに設定されている情報からなる。受動的動作定義においては、1つのステップ内に複数の動作定義を記述することが可能である。1つのステップに複数の受動的動作定義を記述する場合は、互いに異なる受信データ条件をそれぞれ設定する必要がある。
また、受信データ条件については省略することも可能である。受信データ条件の記述を省略する場合は、全ての受信データに対して所定の動作が選択されることとなる。
受信データの退避・復元指示は、受信パケットのデータを退避バッファ35の所定の領域に退避あるいは退避バッファ35所定の領域から復元する旨の指示からなる。
応答データの内容は、実施例では応答として相手側に返すパケットに含めるデータの内容からなる。
遷移先TCP状態については、能動的動作定義に含まれる遷移先TCP状態と同様、動作定義の記述にしたがって処理を実行してパケットを送信した後に遷移するプロトコルスタックのTCP状態を示す。
なお、応答データの内容及び遷移先TCP状態については、省略が可能である。
上記のルールにしたがって作成されたシナリオを用いて、本実施形態に係るエミュレータ3によりRFC793において言及されているシーケンスのテストを実現する具体的な方法について説明する。
図4は、同時コネクション確立シーケンスのテスト方法を説明する図である。
同時コネクション確立シーケンスのテストを行うために、対向コンピュータ(テスト対象のプロトコルスタックを搭載した相手側のコンピュータ)から接続要求を受信すると、エミュレータ3は、対向コンピュータに対して接続要求を返している(シナリオの1〜4行目)。
送信した接続要求に対して、対向コンピュータが応答を返してくると、エミュレータ3は、対向コンピュータからの接続要求に対して応答(ACK)を返す(シナリオの7〜9行目)。
このように、同時コネクション確立のシーケンスについてテストするためには、対向コンピュータから接続要求を受信すると、エミュレータ3は、受信した接続要求に対して応答を返す前に対向コンピュータに対して接続要求を送信する。対向コンピュータとの間で相互に相手側に接続要求を送信し、互いに相手側からの接続要求に対して応答を返す処理
を実行させることが可能となる。
図5は、古い重複シーケンスからの復旧処理についてのシーケンスのテスト方法を説明する図である。
古い重複シーケンス番号(SYN)に対する応答を擬似的に再現するために、エミュレータ3は、テスト対象のコンピュータすなわち対向コンピュータ側のTCPから受けたシーケンス番号SEQ=100を退避バッファ35に退避させるとともに、それよりも若いシーケンス番号に対応するSYN+ACKを返す。すなわち、実際に受信したシーケンス番号よりも古いシーケンス番号100−10=90に対する応答を返す(シナリオの1〜5行目)。
対向コンピュータからコネクションリセットの要求を受信すると、退避させておいたシーケンス番号SEQ=100を復元して応答を返す(シナリオの7〜9行目)。
このように、対向コンピュータでは、実際に送信したシーケンス番号よりも古いシーケンス番号に対する応答を受信することになるため、対向コンピュータすなわちテスト対象のプロトコルスタックを搭載したコンピュータにおいて、古いシーケンスからの復旧処理を正常に実行できるかについてテストすることが可能となる。
図6は、同時クローズのシーケンスについてのテスト方法を説明する図である。
同時クローズに見せるため、エミュレータ3は、テスト対象のプロトコルスタックを搭載したコンピュータ側から後続データなしを示す「FIN」を受信すると、受信した「FIN」を退避バッファ35の所定の領域に退避させるとともに、相手のコンピュータ側にも「FIN」を送信する(シナリオの1〜5行目)。
送信したFINに対する応答を受信すると、エミュレータ3は、退避バッファ35の所定の領域から、退避させておいた「FIN」を復元するとともに、相手のコンピュータ側に、自装置が受信したFINに対する応答を返す(シナリオの7〜10行目)。
このように、受信したFINに対してすぐに応答を返さず、まずFINを送信し、相手から応答を受信してから、自装置が受信したFINに対する応答を返すことにより、同時クローズのシーケンスについてテストすることが可能となる。
図7は、ハーフオープンコネクションからの復旧のシーケンスについてのテスト方法を説明する図である。
ハーフオープンコネクションからの復旧シーケンスのテストでは、対向コンピュータ側のTCPがクラッシュしたと想定する。エミュレータ3は接続を保ったままのふりをするために、対向コンピュータ側からの接続要求(シーケンス番号SEQ=400)に対し、古い(若い)番号の応答(ACK)を返す(シナリオの1〜5行目)。
古い番号の応答を受け取った対向コンピュータ側では、まず接続の初期化(CTL=RST)を行なってから、接続要求(シーケンス番号SEQ=400)を再送する。
このように、エミュレータ3が実際に受信した接続要求のシーケンス番号よりも若い番号の応答を返すことで、ハーフオープンコネクションからの復旧動作を実現することが可能となる。
上記のとおり、本実施形態に係るエミュレータ3は、シナリオに記述されたステップのうち、いずれを実行すべきかを判断し、シナリオのステップに記述された内容にしたがって所定の動作を実行する。このため、上記の同時コネクション確立シーケンス等のように、実際に対向コンピュータから受信したパケットにしたがって応答する構成では発生させることが難しいシーケンスについてもテストすることが可能となる。
以下、本実施形態に係るエミュレータ3を搭載したコンピュータ1の各部について、具体的な処理方法を説明する。
図8は、OS2のパケットバイパス処理部21におけるパケットバイパス処理を示したフローチャートである。図8に示す処理は、相手側から送信されたパケットをOS2において認識したことを契機として開始される。
まず、ステップS11で、バイパス条件テーブル23を参照し、受信したパケットの所定のフィールドに設定されている値が、バイパス条件テーブル23に格納されている条件と互いに一致するか否かを判定する。バイパス条件テーブルについては、後述する。
ステップS11の判定において、受信パケットの所定のフィールドの値がバイパス条件テーブル23に格納されている値と互いに一致する場合は、ステップS12に進み、エミュレータ3にパケットを転送し、処理を終了する。
ステップS11の判定において、受信パケットの所定のフィールドの値がバイパス条件テーブル23に格納されている値と一致しない場合は、ステップS13に進み、OS2のプロトコルスタック部22にパケットを転送し、処理を終了する。
上記のステップS11において参照されるバイパス条件テーブル23は、パケットバイパス処理部21により参照されるテーブルであり、実施例では、1つのエントリは、宛先IP(Internet Protocol)アドレス、送信元IPアドレス、宛先ポート番号及び送信元ポート番号の4つの情報からなる。
図9は、エミュレータ3のシナリオステップ管理部32によるシナリオステップ管理処理を示したフローチャートである。実施例においては、これから開始すべきテストについてのシナリオを、ユーザがコンピュータ1に登録したことを契機として開始される。
まず、ステップS21で、登録されたシナリオの中から、最初に実行すべきステップを検索する。ステップS22で、検索の結果、実行すべきステップがあるか否かを判定する。ここで、実行すべきステップとは、登録されたシナリオにより記述されているステップのうち、未だ実行されていない動作(すなわちステップ)で、検索を行ったタイミングで次にコンピュータ1において実行すべき動作を記述したステップをいう。
ステップS22で、検索の結果実行すべきステップが得られなかったと判定された場合は、特に処理を行わず、ステップS27に進む。
一方、ステップS22で、実行すべきステップがあると判定されると、ステップS23に進み、ステップ実行処理部33に対して起動通知を行う。そして、ステップS24で、ステップ実行処理部33からの終了通知を待機する。終了通知を受信すると、ステップS25に進み、ステップの実行の結果正常終了したか否かを判定する。
ステップS25において、正常終了と判定された場合は、ステップS27に進むが、異常終了と判定された場合は、ステップS26に進み、ユーザに対して異常の内容を通知してから、ステップS27に進む。
ステップS27で、シナリオステップ管理部32は、シナリオを参照して次に実行すべきステップを検索し、ステップS22に戻る。以降は、あるシナリオに記述されている全てのステップについて処理を終えるまで、同様の処理を繰り返す。
図10は、ステップ実行処理部33によるステップ実行処理を示したフローチャート(
その1)である。図10に示す処理は、シナリオステップ管理部32から起動通知を受けたことを契機として開始される。
まず、ステップS31で、シナリオのうち、シナリオステップ管理部32から起動通知を受けたステップの動作定義を照合し、ステップS32で、動作定義は受動的動作定義であるか否かを判定する。受動的動作定義である場合は、図11に示す処理へと進むが、詳しくは後述する。受動的動作定義でない場合は、ステップS33に進む。
ステップS33で、シナリオのうち、起動通知を受けたステップについて記述された動作の有無を判定する。該当する動作が記述されていないときは、ステップS34に進み、シナリオステップ管理部32に終了通知を送信し、処理を終了する。該当する動作が記述されているときは、ステップS35に進み、シナリオの記述にしたがって、対向コンピュータに送信するデータを作成する。
ステップS36で、標準TCPエミュレーション部34との間で互いの処理結果を受け渡しして、標準TCPエミュレーション部34において、送信データに対応する遷移先TCP状態を仮設定させる。そして、ステップS37で、シナリオの記述を参照し、TCP状態の遷移先が指定されているか否かを判定する。
ステップS37において、シナリオにより遷移先TCP状態が指定されていると判定されると、ステップS38に進み、遷移先TCP状態を指定された内容に書き換え、ステップS39に進む。シナリオに遷移先TCP状態が指定されていないと判定されると、特に処理を行わず、ステップS39に進む。
ステップS39で、送信データの内容と遷移先TCP状態とを確定する。ステップS40で、TCP状態を、ステップS39で確定した状態に遷移させる。最後に、ステップS41で、シナリオステップ管理部32に終了通知を送信すると、パケットを対向コンピュータに送信して処理を終了する。
図11は、ステップ実行処理部33によるステップ実行処理を示したフローチャート(その2)である。シナリオの動作定義が受動的動作定義である場合の処理を示す。
まず、ステップS51で、対向コンピュータから受信データが送信されるのを待機する。データを受信すると、ステップS52に進み、受信データと、シナリオステップ管理部32から起動通知を受けたステップの動作定義とを照合する。
ステップS53で、受信データに、動作定義に記述されている受信データ条件に対応する情報が設定されているか否かを判定する。受信データ条件に対応する情報が受信データに設定されていないと判定された場合は、ステップS54に進み、シナリオステップ管理部32に終了通知を送信するとともに、異常動作である旨通知する。
ステップS53で、受信データ条件に対応する情報が受信データに設定されていると判定された場合は、ステップS55に進み、更に、動作定義に、受信データを退避させる旨の記述があるか否かを判定する。
ステップS55において、受信データの退避要求有りと判定された場合は、ステップS56に進み、受信データを退避バッファ35に退避させ、ステップS57に進む。ステップS55において、受信データの退避要求なしと判定された場合は、特に処理を行わず、ステップS57に進む。ステップS57においては、動作定義に、受信データを復元させる旨の記述があるか否かを判定する。
ステップS57において、受信データの復元要求有りと判定された場合は、ステップS58に進み、退避バッファ35から対応するデータを読み出し、受信データに上書きし、ステップS59に進む。ステップS57において、受信データの復元要求なしと判定された場合は、特に処理を行わず、ステップS59に進む。
ステップS59で、標準TCPエミュレーション部34との間で互いの処理結果を受け渡しして、標準TCPエミュレーション部34において、受信データに対する応答データ及び遷移先TCP状態を仮設定させる。
ステップS60で、対向コンピュータに送信する応答データの内容がシナリオの動作定義に記述されているか否かを判定する。応答データの内容がシナリオにより指定されている場合は、ステップS61に進み、応答パケットをシナリオに指定されている内容に書き換え、ステップS62に進む。応答データの内容についてはシナリオに指定されていない場合は、特に処理を行わず、ステップS62に進む。
ステップS62で、シナリオにより遷移先TCP状態が指定されているか否かを判定し、指定されている場合は、ステップS63で、シナリオに指定されている内容に遷移先TCP状態を書き換えてステップS64に進む。シナリオには遷移先TCP状態が記述されていない場合は、特に処理を行わず、ステップS64に進む。
ステップS64で、応答データの内容と遷移先TCP状態とを確定する。ステップS65で、TCP状態を、ステップS64で確定したTCP状態に遷移させる。最後に、ステップS66で、シナリオステップ管理部32に終了通知を送信すると、パケットを対向コンピュータに送信して処理を終了する。
ところで、図1に示すエミュレータ3は、例えば、図12に示すような情報処理装置(コンピュータ)を用いて構成することができる。図12の情報処理装置は、CPU(中央処理装置)1001、メモリ1002、入力装置1003、出力装置1004、外部記憶装置1005、媒体駆動装置1006、ネットワーク接続装置1007を備え、それらはバス1008により互いに接続されている。
メモリ1002は、例えば、ROM(read only memory)、RAM(random access memory)等を含み、処理に用いられるプログラムおよびデータを格納する。CPU1001は、メモリ1002を利用してプログラムを実行することにより、必要な処理を行う。
図1の退避バッファ35は、メモリ1002に対応する。また、図1の受信処理部31、シナリオステップ管理部32、ステップ実行処理部33、標準TCPエミュレーション部34及び送信処理部36は、メモリ1002に格納されたプログラムを実行することにより実現される機能に対応する。
入力装置1003は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。出力装置1004は、例えば、ディスプレイ、プリンタ、スピーカ等であり、ユーザへの問い合わせ、アラーム、処理結果等の出力に用いられる。
外部記憶装置1005は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。情報処理装置は、この外部記憶装置1005に、上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ1002にロードして使用する。
媒体駆動装置1006は、可搬記録媒体1009を駆動し、その記録内容にアクセスする。可搬記録媒体1009は、メモリカード、フレキシブルディスク、CD−ROM(compact disk read only memory)、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。ユーザは、この可搬記録媒体1009に上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ1002にロードして使用する。
ネットワーク接続装置1007は、LAN(local area network)、インターネット等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。情報処理装置は、必要に応じて、上記プログラムおよびデータを外部の装置からネットワーク接続装置1007を介して受け取り、それらをメモリ1002にロードして使用する。
図13は、図12の情報処理装置にプログラムおよびデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体1009やサーバ1101のデータベース1103に格納されたプログラムおよびデータは、情報処理装置1102のメモリ1002にロードされる。サーバ1101は、そのプログラムおよびデータを搬送する搬送信号を生成し、ネットワーク上の任意の伝送媒体を介して情報処理装置1102に送信する。CPU1001は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
以上説明したように、本実施形態に係るエミュレータ3によれば、入力されたシナリオの記述にしたがって対向コンピュータへの送信パケットを生成して送信処理を行うことにより、TCP通信における多種多用な動作シーケンスを実現することが可能となる。コンピュータのTCPスタックや、WAN高速化装置等のTCPをプロトコル変換するようなネットワークシステムにおいて、様々な状況下でのTCP動作の正常性を検証するテストの実施に有効である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
テスト対象の通信プロトコルスタックを搭載したテスト対象装置とネットワークを介して接続されたエミュレータ装置であって、
テストすべきシーケンスにおいて前記エミュレータ装置側で実行する一連の動作を記述したシナリオが入力されると、該シナリオを参照して、実行すべき動作を判断して起動通知を行う管理手段と、
前記管理手段から起動通知を受けた動作について、前記シナリオから読み出して実行し、前記テスト対象装置に送信するパケットを生成する実行手段と、
を備えたことを特徴とするエミュレータ装置。
(付記2)
前記シナリオにおいては、動作ごとに、該動作を識別するための識別情報、及び該動作の次に実行すべき識別情報からなる移動先動作識別情報が対応付けられて記述され、
前記管理手段は、前記シナリオが入力されたタイミングあるいは前記実行手段から動作の終了通知を受信したタイミングで、該動作に対応付けられた移動先動作識別情報を読み出して、該移動先動作識別情報が示す動作の起動通知を前記実行手段に送信する
ことを特徴とする付記1記載のエミュレータ装置。
(付記3)
前記シナリオにおいては、各動作は、前記テスト対象装置から受信したパケットに対する応答動作を記述した受動的動作、あるいは前記エミュレータ装置から自発的にパケット送信を行う動作を記述した能動的動作のいずれかからなり、
前記受動的動作及び能動的動作は、前記エミュレータ装置における該動作実行後の遷移先プロトコル状態を含み、
前記実行手段は、前記管理手段から起動通知を受けた動作について実行した後、該動作の遷移先プロトコル状態へとプロトコル状態を遷移させる
ことを特徴とする付記2記載のエミュレータ装置。
(付記4)
前記受動的動作は、1以上の動作を含み、動作ごとに前記テスト対象装置から受信したパケットの内容に基づいて決定される条件が定義されており、
前記実行手段は、前記管理手段から起動通知を受けた動作が前記受動的動作である場合には、前記テスト対象装置から受信したパケットの内容に対応する前記条件の設定されている動作を実行する
ことを特徴とする付記3記載のエミュレータ装置。
(付記5)
前記能動的動作は、送信するパケットの内容に関わる情報を更に含み、
前記実行手段は、前記管理手段から起動通知を受けた動作が前記能動的動作である場合には、該動作に記述されている送信パケットの内容に関わる情報を参照して、送信パケットを生成する
ことを特徴とする付記3記載のエミュレータ装置。
(付記6)
前記実行手段からの指示があったときは、前記通信プロトコルの標準動作をエミュレーションし、結果を該実行手段に返すエミュレーション手段と、
を更に備え、
前記実行手段は、前記管理手段から実行すべき動作について指示を受けると、前記シナリオの該動作の記述を参照し、該シナリオに前記通信プロトコルの標準動作をエミュレーションさせる旨記述されているときは、前記エミュレーション手段にエミュレーションを行う旨の指示を出す
ことを特徴とする付記2記載のエミュレータ装置。
(付記7)
前記テスト対象装置から受信したパケットの内容に基づいて、該パケットを前記実行手段において実行させるべきか否かを判定する判定手段と、
を更に備えたことを特徴とする付記1記載のエミュレータ装置。
実施形態に係るTCPエミュレータを含むコンピュータの機能ブロック図である。 全体処理を示したフローチャートである。 シナリオの一例を示す図である。 同時コネクション確立シーケンスのテストを説明する図である。 古い重複シーケンスからの復旧処理についてのシーケンスのテスト方法を説明する図である。 同時クローズのシーケンスについてのテスト方法を説明する図である。 ハーフオープンコネクションからの復旧のシーケンスについてのテスト方法を説明する図である。 パケットバイパス処理を示したフローチャートである。 シナリオステップ管理処理を示したフローチャートである。 ステップ実行処理を示したフローチャート(その1)である。 ステップ実行処理を示したフローチャート(その2)である。 情報処理装置の構成図である。 記録媒体を示す図である。 プロトコルスタックのテストを実施するためのシステム構成を示す図である。 同時コネクション確立についての動作シーケンス図である。
符号の説明
1 コンピュータ
2 オペレーションシステム
3 TCPエミュレータ
21 パケットバイパス処理部
22 プロトコルスタック
23 バイパス条件テーブル
31 受信処理部
32 シナリオステップ管理部
33 ステップ実行処理部
34 標準TCPエミュレーション部
35 退避バッファ
36 送信処理部

Claims (5)

  1. テスト対象の通信プロトコルスタックを搭載したテスト対象装置とネットワークを介して接続されたエミュレータ装置であって、
    テストすべきシーケンスにおいて前記エミュレータ装置側で実行する一連の動作を記述したシナリオが入力されると、該シナリオを参照して、実行すべき動作を判断して起動通知を行う管理手段と、
    前記管理手段から起動通知を受けた動作について、前記シナリオから読み出して実行し、前記テスト対象装置に送信するパケットを生成する実行手段と、
    前記テスト対象装置からの受信パケットのデータを退避させておく退避バッファと、
    を備え
    前記管理手段は、前記シナリオにおける退避動作の記述に従って退避動作についての起動通知を行うと共に、前記シナリオにおける復元動作の記述に従って復元動作についての起動通知を行い、
    前記実行手段は、前記管理手段から前記退避動作についての起動通知を受けた場合には、前記シナリオにおける退避動作の記述についての識別情報を付加した前記受信パケットのデータを前記退避バッファに退避させる動作を行い、前記管理手段から前記復元動作についての起動通知を受けた場合には、前記シナリオにおける復元動作の記述に記述されている識別情報を検索キーとして用いて前記退避バッファから前記受信パケットのデータを検索して読み出す動作を行う、
    ことを特徴とするエミュレータ装置。
  2. 前記シナリオにおいては、動作ごとに、該動作を識別するための識別情報、及び該動作の次に実行すべき識別情報からなる移動先動作識別情報が対応付けられて記述され、
    前記管理手段は、前記シナリオが入力されたタイミングあるいは前記実行手段から動作の終了通知を受信したタイミングで、該動作に対応付けられた移動先動作識別情報を読み出して、該移動先動作識別情報が示す動作の起動通知を前記実行手段に送信する
    ことを特徴とする請求項1記載のエミュレータ装置。
  3. 前記シナリオにおいては、各動作は、前記テスト対象装置から受信したパケットに対する応答動作を記述した受動的動作、あるいは前記エミュレータ装置から自発的にパケット送信を行う動作を記述した能動的動作のいずれかからなり、
    前記受動的動作及び能動的動作は、前記エミュレータ装置における該動作実行後の遷移先プロトコル状態を含み、
    前記実行手段は、前記管理手段から起動通知を受けた動作について実行した後、該動作の遷移先プロトコル状態へとプロトコル状態を遷移させる
    ことを特徴とする請求項2記載のエミュレータ装置。
  4. 前記受動的動作は、1以上の動作を含み、動作ごとに前記テスト対象装置から受信したパケットの内容に基づいて決定される条件が定義されており、
    前記実行手段は、前記管理手段から起動通知を受けた動作が前記受動的動作である場合には、前記テスト対象装置から受信したパケットの内容に対応する前記条件の設定されている動作を実行する
    ことを特徴とする請求項3記載のエミュレータ装置。
  5. 前記能動的動作は、送信するパケットの内容に関わる情報を更に含み、
    前記実行手段は、前記管理手段から起動通知を受けた動作が前記能動的動作である場合には、該動作に記述されている送信パケットの内容に関わる情報を参照して、送信パケットを生成する
    ことを特徴とする請求項3記載のエミュレータ装置。
JP2008087566A 2008-03-28 2008-03-28 エミュレータ装置 Expired - Fee Related JP5157586B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008087566A JP5157586B2 (ja) 2008-03-28 2008-03-28 エミュレータ装置
US12/411,630 US20090271171A1 (en) 2008-03-28 2009-03-26 Emulator device, and a method for testing a test target device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008087566A JP5157586B2 (ja) 2008-03-28 2008-03-28 エミュレータ装置

Publications (2)

Publication Number Publication Date
JP2009246453A JP2009246453A (ja) 2009-10-22
JP5157586B2 true JP5157586B2 (ja) 2013-03-06

Family

ID=41215863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008087566A Expired - Fee Related JP5157586B2 (ja) 2008-03-28 2008-03-28 エミュレータ装置

Country Status (2)

Country Link
US (1) US20090271171A1 (ja)
JP (1) JP5157586B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793117B1 (en) * 2008-04-16 2014-07-29 Scalable Network Technologies, Inc. System and method for virtualization of networking system software via emulation
JP2012205188A (ja) * 2011-03-28 2012-10-22 Nippon Telegraph & Telephone East Corp シナリオデータ生成装置、シナリオデータ生成方法及びコンピュータプログラム
JP2012205189A (ja) * 2011-03-28 2012-10-22 Nippon Telegraph & Telephone East Corp シナリオデータ生成装置、シナリオデータ生成方法及びコンピュータプログラム
JP6011109B2 (ja) * 2012-07-26 2016-10-19 日本電気株式会社 情報処理システム及び情報処理方法
US9652264B2 (en) * 2012-09-21 2017-05-16 Ixia Methods, systems, and computer readable media for providing a unified framework to support diverse data generation engines
KR101354063B1 (ko) 2012-10-18 2014-01-24 주식회사 엘트로닉스 전자소자검출기의 알고리즘 검증을 위한 에뮬레이션 시스템 및 방법
WO2019167370A1 (ja) * 2018-03-02 2019-09-06 住友電気工業株式会社 スイッチ装置、監視方法および監視プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0474932A1 (en) * 1990-09-13 1992-03-18 Hewlett-Packard Company Network fault analyzer
JPH06508008A (ja) * 1991-06-12 1994-09-08 ヒューレット・パッカード・カンパニー パケットベースネットワークをテストするための方法および装置
JPH05122300A (ja) * 1991-10-24 1993-05-18 Matsushita Electric Ind Co Ltd プロトコル試験方法
JPH08314836A (ja) * 1995-05-19 1996-11-29 Hitachi Ltd 管理サービスオブジェクト提供方法
JP3343054B2 (ja) * 1997-07-01 2002-11-11 ケイディーディーアイ株式会社 インターネット対応リンクモニタ方法
JP3212959B2 (ja) * 1998-12-28 2001-09-25 日本電気通信システム株式会社 メッセージ/シーケンス編集機能を有する自動通信プロトコル試験システムおよび試験方法
JP2003060735A (ja) * 2001-08-16 2003-02-28 Kddi Research & Development Laboratories Inc 通信プロトコル試験装置
US7290048B1 (en) * 2002-03-29 2007-10-30 Hyperformix, Inc. Method of semi-automatic data collection, data analysis, and model generation for the performance analysis of enterprise applications

Also Published As

Publication number Publication date
JP2009246453A (ja) 2009-10-22
US20090271171A1 (en) 2009-10-29

Similar Documents

Publication Publication Date Title
JP5157586B2 (ja) エミュレータ装置
Musuvathi et al. Model Checking Large Network Protocol Implementations.
US8010828B2 (en) Method of providing interoperatibility of different network devices capable of error handling and network device using the same
RU2571726C2 (ru) Система и способ проверки целесообразности установки обновлений
RU2430409C2 (ru) Методология измерения покрытия в структурном состоянии взаимного соединения
JP6583838B2 (ja) アプリケーションのシミュレーション
EP2839629B1 (en) Binding crud-type protocols in distributed agreement protocols
CN112714158B (zh) 事务处理方法、中继网络、跨链网关、系统、介质和设备
JP2019087993A (ja) ネットワークサービス持続性管理
CN103425486B (zh) 使用同步服务器端脚本的远程卡内容管理的方法和系统
JP2005175915A (ja) エミュレーション装置及びエミュレーションプログラム
US10516628B2 (en) Transfer device, transfer system, and transfer method
JP4443200B2 (ja) 情報システム
CN116743619A (zh) 网络服务的测试方法、装置、设备及存储介质
JP4696744B2 (ja) プログラムテスト装置、方法、及び、プログラム
WO2017084402A1 (zh) 一种多应用程序的调试系统和方法
Hine et al. Scalable emulation of enterprise systems
JPWO2007010593A1 (ja) Tcpセッションエミュレーション装置
CN113708978A (zh) 网络的可用性测试方法、装置、计算机设备和存储介质
JP5913155B2 (ja) パケットリプレイ装置およびパケットリプレイ方法
KR101511841B1 (ko) 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법
JP5526572B2 (ja) 試験装置および試験方法
KR20150069182A (ko) 서버를 이용한 모바일 포렌식 무결성입증 및 증거관리 방법
JP2008123247A (ja) ログ管理方式及びログ管理方法
Yaswant et al. Application to demonstrate Client-Side Vulnerabilities in Capture-The-Flag Competitions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120903

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121126

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees