(57)【要約】  コンピュータ・ネットワーク上へテスト・パケットを発信するためのテスト・パケット・シーケンサは、オペレーティング・システム下でソフトウェアを走らせるコンピュータを含んで構成される。ソフトウェアは、パケットおよびパケットのバーストを発信するためのＩ／Ｏコンペティション・ポートを使用する。パケットは、テスト・パケット・シーケンサで終わるネットワーク内の経路を進むために発信することができる。ソフトウェアは、戻ってくるパケットおよびパケットのバーストを受信して打刻してもよい。テスト・パケット・シーケンサは、Ｉ／Ｏコンペティション・ポート内でパケットを受信してもよい。ソフトウェアは、テスト・ハンドラ・スレッドの単一のタイム・スライス内で全てのパケットが発信されるようにパケットのバーストを送信することに先立って、現在のタイム・スライスを終わらせるテスト・ハンドラ・スレッドを持っていてもよい。テスト・ハンドラ・スレッドにタイム・クリティカルな優先度を割り当ててもよい。
2005513914.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上へテスト・パケットのバーストを発信する方法であって、
複数のテスト・パケットを生成し、
Ｉ／Ｏコンプレション・ポートに、テスト・パケットを発信させる要求を送り、
Ｉ／Ｏコンプレション・ポートを使用しながらネットワーク上へテスト・パケットを発信する
ことを特徴とするテスト・パケット配置方法。
【請求項２】
請求項１に記載のテスト・パケット配置方法において、
パケットは、Ｉ／Ｏコンプレション・ポートに非同期で送られる
ことを特徴とするテスト・パケット配置方法。
【請求項３】
請求項１に記載のテスト・パケット配置方法において、
Ｉ／Ｏコンプレション・ポートへのテスト・パケットの送信は、単一のタイム・スライス中にユーザ・モード・スレッドにより行われる
ことを特徴とするテスト・パケット配置方法。
【請求項４】
請求項３に記載のテスト・パケット配置方法において、
テスト・パケットの送信前に、ユーザ・スレッド用の現在のタイム・スライスを終了させ、ユーザ・スレッド用の次のタイム・スライスの始めに、Ｉ／Ｏコンプレション・ポートへテスト・パケットを送信することを特徴とするテスト・パケット配置方法。
【請求項５】
請求項４に記載のテスト・パケット配置方法において、
ユーザ・モード・スレッドにタイム・クリティカルな優先度を割り当てることを特徴とするテスト・パケット配置方法。
【請求項６】
請求項３に記載のテスト・パケット配置方法において、
ユーザ・モード・スレッドにタイム・クリティカルな優先度を割り当てることを特徴とするテスト・パケット配置方法。
【請求項７】
請求項３に記載のテスト・パケット配置方法において、
ユーザ・モード・スレッドは、ネットワーク・インターフェース・デバイス内のバッファに直接にアクセスすることを特徴とするテスト・パケット配置方法。
【請求項８】
請求項３に記載のテスト・パケット配置方法において、
発信されて戻ってくるテスト・パケットを、それらがネットワーク内の経路を旋回した後に受信するとともに、パケットが受信されたという通知に打刻することを特徴とするテスト・パケット配置方法。
【請求項９】
請求項８に記載のテスト・パケット配置方法において、
ユーザ・モード・スレッドは、発信されて戻ってくるテスト・パケットの全てを受信するのに十分なバッファを予め生成するか、またはそのために予め生成しておくことを特徴とするテスト・パケット配置方法。
【請求項１０】
請求項９に記載のテスト・パケット配置方法において、
ユーザ・モード・スレッドは、戻りのパケットの打刻のためのハードウェアカウンタを用いることを特徴とするテスト・パケット配置方法。
【請求項１１】
請求項９に記載のテスト・パケット配置方法において、
パケット・データ用のプライベート・ヒープを維持し、そのプライベート・ヒープをユーザ・モード・スレッドにとってアクセスし易いようにすることを特徴とするテスト・パケット配置方法。
【請求項１２】
請求項１１に記載のテスト・パケット配置方法において、
プライベート・ヒープは、パケットを保存するための標準的なサイズのアロケーション・ユニットを含んで構成されていることを特徴とするテスト・パケット配置方法。
【請求項１３】
請求項１２に記載のテスト・パケット配置方法において、
標準的なサイズのアロケーション・ユニットは、オペレーティング・システムのメモリ・ページ・サイズのものであることを特徴とするテスト・パケット配置方法。
【請求項１４】
請求項１３に記載のテスト・パケット配置方法において、
標準的なサイズのアロケーション・ユニットは、４０９６バイトであることを特徴とするテスト・パケット配置方法。
【請求項１５】
請求項１１に記載のテスト・パケット配置方法において、
デフォルト・プロセス・ワーキング・セット・サイズよりも大きなサイズをユーザ・モード・スレッドに割り当てることを特徴とするテスト・パケット配置方法。
【請求項１６】
請求項１５に記載のテスト・パケット配置方法において、
プロセス・ワーキング・セット・サイズは、８Ｍバイトを超えることを特徴とするテスト・パケット配置方法。
【請求項１７】
請求項３に記載のテスト・パケット配置方法において、
ユーザ・モード・スレッドは、テスト・パケットをネットワーク上に発信するネットワーク・カード内のバッファに直接にアクセスすることを特徴とするテスト・パケット配置方法。
【請求項１８】
請求項１に記載のテスト・パケット配置方法において、
テスト・パケットを生成することには、複数の等しいサイズのテスト・パケットを生成することが含まれることを特徴とするテスト・パケット配置方法。
【請求項１９】
請求項１に記載のテスト・パケット配置方法において、
テスト・パケットを生成することには、イーサーネット・テスト・パケットを生成することが含まれることを特徴とするテスト・パケット配置方法。
【請求項２０】
請求項１８に記載のテスト・パケット配置方法において、
テスト・パケットを生成することには、各テスト・パケットが４６バイトから１５００バイトの範囲のサイズを持つ複数の等しいサイズのテスト・パケットを生成することが含まれることを特徴とするテスト・パケット配置方法。
【請求項２１】
請求項１に記載のテスト・パケット配置方法において、
パケットが発信されたという通知をＩ／Ｏコンプレション・ポートから受信し、その通知に打刻することを特徴とするテスト・パケット配置方法。
【請求項２２】
請求項８に記載のテスト・パケット配置方法において、
発信されて戻ってくるパケットを受信することには、発信されて戻ってくるパケット用のデータを、発信されて戻ってくるパケットを受信するネットワーク・インターフェースと関連するＩ／Ｏコンプレション・ポートに通すことが含まれることを特徴とするテスト・パケット配置方法。
【請求項２３】
コンピュータ・プロセッサに、ネットワーク上へテスト・パケットのバーストを発信する方法を実行させるための、コンピュータ・プロセッサにより実行される命令を含むコンピュータ読取り可能な信号を運ぶコンピュータ読取り可能な媒体を含むプログラム製品であって、
複数のテスト・パケットを生成し、
Ｉ／Ｏコンプレション・ポートに、テスト・パケットを発信させる要求を送り、
Ｉ／Ｏコンプレション・ポートを使用しながらネットワーク上へテスト・パケットを発信する
ことを特徴とする方法をコンピュータ・プロセッサに実行させるための命令を含むコンピュータ読取り可能な信号を運ぶコンピュータ読取り可能な媒体を含むプログラム製品。
【請求項２４】
請求項１８に記載のプログラム製品において、
命令には、コントローラ・セクションとテスト・ハンドラ・セクションとが含まれ、これらのコントローラ・セクションおよびテスト・ハンドラ・セクションのそれぞれは、セパレート・スレッドを含むことを特徴とするプログラム製品。
【請求項２５】
コンピュータ・ネットワーク上へパケットのバーストを発信する装置であって、
コンピュータ・プロセッサと、
ネットワーク・インターフェースと、
プロセッサがアクセスできるプログラム・メモリであって、オペレーティング・システムの制御下でプロセッサにより実行可能な一連の命令であり、もし、そのプロセッサにより実行されるならば、そのプロセッサに、
第１のＩ／Ｏコンプレション・ポートを設けさせ、
複数のテスト・パケットを生成させ、
第１のＩ／Ｏコンプレション・ポートにテスト・パケットを発信させる要求を送らせ、
第１のＩ／Ｏコンプレション・ポートの制御下でネットワーク・インターフェース経由でネットワーク上へテスト・パケットを発信させる
命令を含むテスト・パケット・シーケンサ・ソフトウェアを含むプログラム・メモリと
を含んで構成されていることを特徴とするテスト・パケット配置装置。
【請求項２６】
請求項２５に記載のテスト・パケット配置装置において、
テスト・パケット・シーケンサ・ソフトウェアは、第２のＩ／Ｏコンプレション・ポートに関連するテスト・コントローラ・レイヤおよび第１のＩ／Ｏコンプレション・ポートに関連するコマンド・コントローラ・レイヤを含み、テスト・コントローラ・レイヤは、第１のＩ／Ｏコンプレション・ポート経由でコマンド・コントローラ・レイヤへ命令を渡すように配置されるとともに、コマンド・コントローラ・レイヤは、第２のＩ／Ｏコンプレション・ポート経由でテスト・コントローラ・レイヤへ生のデータを渡すように配置されていることを特徴とするテスト・パケット配置装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＰネットワーク上へのテスト・パケットの配置に関する。特に、ＩＰネットワーク上へパケットおよびパケットのバーストを正確に配置するための、および／またはパケットおよびパケットのバーストを受信して打刻するための装置および方法に関する。本発明は、ネットワーク測量および診断学の分野に適用することができる。
【背景技術】
【０００２】
ＩＰネットワークの性能は、帯域幅およびネットワーク上の１つのロケーションから別の１つのロケーションへ情報のパケットを送信することができる信頼性により測定される。典型的なＩＰネットワークは、データ・リンクにより相互に連結されている多数のパケット・ハンドリング・デバイスを含んで構成されている。パケット・ハンドリング・デバイスには、ルータ、スイッチ、ブリッジ等を含ませることができる。データ・リンクには、光ファイバ、無線接続、有線接続、電話線での接続等のような様々な伝送媒体を含ませることができる。データは、様々なネットワーキング・プロトコルの使用を通じてデータ・リンクを横切って送信することができる。
【０００３】
コンピュータ・ネットワークの動作は、ネットワーク上の異なるパケット・ハンドリング・デバイスが配置された経路、データ・リンクの形式、ネットワーク内でのリンクの使用法等を含む多数の相互に作用し合う要素に基づき決定される。個々のネットワーク・コンポーネントの欠陥または配置ミスは、ネットワークの性能に大きな影響を与え得る。ネットワーク性能を測定し、標準以下のネットワーク性能となった原因を確認するための様々な方法が存在する。これらの方法のうちの幾つかは、パケット、またはパケットのバーストを、ネットワークを通じて１つまたは複数の経路に沿って送信する。ネットワークの性能に関する情報は、パケットがネットワークを通じて広がるときのパケットの性質を観察することにより得ることができる。
【０００４】
ネットワーク性能を測定するためにテスト・パケットを使用するネットワーク解析ソフトウェアの一例は、「ｐｃｈａｒ」と称される「シェアウェア」ユーティリティである。Ｐｃｈａｒは、ＵＮＩＸオペレーティング・システム（ＵＮＩＸは、登録商標）を走らせるコンピュータ上で動作する。Ｐｃｈａｒは、パケットがネットワークを通じて広がるときのテスト・パケットの散乱を監視することにより、ネットワークを通じて経路の端から端までに沿って、帯域幅、潜伏、リンクの損失について測定値を得る。Ｐｃｈａｒは、比較的低速でのみネットワーク上へパケットを配置することができるので、高速ネットワークを検査するために使用するのには限界がある。Ｐｃｈａｒは、ネットワーク上へパケットを配置するためのネットワーク・カードを制御するために標準的なアプリケーション・プログラミング・インターフェース（ＡＰＩｓ）を使用する。この結果、テスト・パケットは比較的広い間隔となる。
【０００５】
ＰＣＴ特許公開番号ＷＯ９２／２２９６７には、テスト・パケットに基づきネットワークが持つ効果を観測することにより、ネットワークの性質を見分けるために、パケットに基づいたネットワーク上での「ループ・バック」テストを用いる方法および装置が記載されている（特許文献１参照）。
【特許文献１】ＰＣＴ国際公開ＷＯ９２／２２９６７号公報
【０００６】
ネットワーク上へパケットを配置することができるハードウェアに基づくネットワーク・プロトコル・アナライザが存在する。このようなプロトコル・アナライザは、専用のハードウェアを含んで構成され、典型的には非常に高価である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ネットワーク上へパケットおよびパケットのシーケンスを正確かつ迅速に配置する装置および方法が望まれている。普通に有用でかつ費用効果的なハードウェアを用いながら遂行することができる装置および方法が特に望まれている。
【課題を解決するための手段】
【０００８】
本発明は、データ通信ネットワーク上へテスト・パケットを正確に配置するためのシステムに関するものである。このシステムは、グラフィカル・ユーザ・インターフェースを含む非実時間オペレーティング・システム下でアプリケーションを走らせる汎用コンピュータを含んで構成されていてもよい。例えば、本発明の幾つかの実施形態は、マイクロソフト・ウィンドウズ２０００（登録商標）・オペレーティング・システム下で走るソフトウェア・アプリケーションを含んで構成されている。
【０００９】
もう１つの観点からは、本発明は、テスト・パケットを受信して打刻するための方法および装置に関するものである。本発明の装置は、戻ってくるテスト・パケットを受信して打刻するためのシステムと統合された、データ通信ネットワーク上へテスト・パケットを正確に配置するためのシステムを含んで構成されてもよい。
【００１０】
以下に本発明の詳細な特徴を述べる。
【００１１】
本発明の限定されない実施形態を示す図面の詳細な説明は、後述する。
【発明を実施するための最良の形態】
【００１２】
以下の記述では、本発明をより完全に理解させるために、特定の詳細事項が述べられている。しかし、本発明は、これらの詳細事項無しに実施してもよい。他の例では、本発明を不必要に不明瞭にすることを避けるため、公知の要素は示されていないか、または詳述されていない。従って、明細書および図面は、限定的なものではなく一つの実施例という観点で捉えられるものである。
【００１３】
以下の記載は、マイクロソフト・ウィンドウズ２０００（登録商標）・オペレーティング・システムを走らせるコンピュータを有する本発明の一実施形態におけるテスト・パケット・シーケンサについて述べている。本発明におけるテスト・パケット・シーケンサは、コンプレション・ポート・メカニズムを提供する他のオペレーティング・システムで実施してもよい。テスト・パケット・シーケンサは、個々のパケットおよび／または正確に間隔を置いて離されたテスト・パケットの集合（“バースト”）を生成するとともに、そのテスト・パケットおよびテスト・パケットのバーストを、コンピュータが接続されているデータ通信ネットワーク上へ配置する。
【００１４】
テスト・パケット・シーケンサは、個々のテスト・パケットの発信および戻りの時刻を測定することができる。好ましい実施形態では、テスト・パケット・シーケンサは、経路に沿った中間点で終わる経路の一部を通過するパケットと同様に、経路全体を通過するパケットのための発信および戻りの時刻を自動的に測定することができる。
【００１５】
図１に示すように、ネットワーク１０は、ネットワーク・デバイス１４（ネットワーク・デバイスは、例えば、ルータ、スイッチ、ブリッジ、ハブ等を備えた構成とすることができる。）の配列を備えて構成されている。ネットワーク・デバイス１４は、データ・リンク１６により互いに連結されている。データ・リンクは、電気ケーブル、光ファイバ・ケーブル等のような物理的なメディア部分、またはラジオ・リンク、レーザ・リンク、超音波リンク等のような伝送型メディアを備えた構成とすることができる。
【００１６】
テスト・パケット・シーケンサ２０は、ネットワーク１４に接続されている。テスト・パケット・シーケンサ２０は、ネットワーク・インターフェース２４を含むとともにオペレーティング・システム２８の下のテスト・パケット・シーケンサ・ソフトウェア２６を走らせるホスト・コンピュータ２２（図１Ｂ）を備えて構成されている。オペレーティング・システム２８は、マイクロソフト・ウィンドウズ２０００（登録商標）のようなマイクロソフト（登録商標）・ウィンドウズ（登録商標）・オペレーティング・システムの一つのバージョンでよい。
【００１７】
テスト・パケット・シーケンサ２０の使い方の一つとして、一つ若しくはそれ以上のテスト・パケットのシーケンスを発生させ、それらのネットワーク１４上のテスト・パケットを、一つの終端のホスト１８のような目的地点まで送ること、およびテスト・パケットの各々がテスト・シーケンサ２０から発信され、戻ってきてテスト・パケット・シーケンサ２０で受信される時刻を測定することが挙げられる。
【００１８】
テスト・パケット・シーケンサ２０は、パケット３２の集合（“バースト”）３０を発生させる。図２に示すように、バースト３０内の各パケット３２は、サイズＳを有している。一つのイーサーネット・ネットワークで、Ｓは、主として約４６バイトから約１５００バイトまでの範囲内である。バースト３０内のパケット３２は、次々に発信される。各パケットは、Ｒをネットワーク上に配置されるパケットのデータの速度とすると、時間Ｓ／Ｒで完全に発信される。バースト３０内で連続的に隣接するパケット３２は、間隔Δｔ0で分離されている。多くの場合、バースト３２内のパケットは、（Δｔ0がＳ／Ｒに略等しくなるように）非常に近接した間隔で配置されることが望ましい。一般に、ＳおよびΔｔ0を各バースト３０内の全てのパケット３２について同じとすることが好都合であるかもしれないが、ＳおよびΔｔ0は、一つのバースト３０内の全てのパケット３２について一定である必要はない。
【００１９】
バースト３０内のパケットは、ネットワーク経路３４に沿って送られる。図示された実施形態では、ネットワーク経路３４は、テスト・パケット・シーケンサ２０から終端のホスト１８まで伸びるとともにテスト・パケット・シーケンサ２０まで戻っている。経路３４は、例えば、ホスト・コンピュータ２２上に搭載されたアプリケーション３５からのデータが終端のホスト１８に至る途中で進むと予想される経路であってもよい。パケット３２は、経路３４に沿ってネットワーク・デバイス１４およびデータ・リンク１６を通過するので、個々のパケット３２は、量の相違分だけ遅れてもよい。幾つかのパケット３２は、通過中に失われてもよい。
【００２０】
経路３４に沿ったネットワーク・デバイス１４およびデータ・リンク１６の様々な特性は、シーケンス３０内の異なるパケット３２の一時的な分離がどのように変わるかを観察すること、およびバースト３０からのパケット３２の喪失のパターンを観察することにより、決定することができる。
【００２１】
例えば、端から端まで繋がれた一つの経路３４の帯域幅は、一つのバースト３０内でのパケット３２の分離を監視することにより評価することができる。図３および図４に示すように、仮に十分に近い時間間隔でパケット３２が発信されるとすると、そのときは通路３４上の狭路部分３６（すなわち、低容量部分）の存在が、隣接するパケット３２の間の分離を増大させるであろう。その分離の増加は、パケット・サイズＳおよび狭路部分３６の容量の関数になるであろう。
【００２２】
各サイズがＳpktの２つのパケット３２のバーストについての簡単な場合を考える。仮に２つのパケットが分離Δｔ0（すなわち、最初のパケットの端とこの最初のパケットの直後に続く２番目のパケットの端との間で時間Δｔ0が経過する）をもって発信された場合に、それらがテスト・パケット・シーケンサ２０に戻るときには、それらはΔｔ1の分離を持つものとする。仮にΔｔ0が大きければ、狭路部分３６は、Δｔ1に基づいて評価できる効果を持たないであろう。しかし、仮にΔｔ0が小さく、Δｔ1＞＞Δｔ0となるようであれば、導かれた下記の式（１）を使用して帯域幅の評価を行うことができる。等式（１）は、帯域幅の大ざっぱな評価だけを与える。より良い評価は、パケットのより大きなバーストを使用するか、またはより詳細な計算を行い、多数の戻ってくるパケット間の分離に基づく統計学上の解析を実行することにより得ることができる。
【数１】
2005513914.tif 000003
【００２３】
一般に、パケットが発信されたときのバースト３０のパケット３２間の一時的な分離と、ネットワーク１４内の一点でパケットが受信されたときのパケット間の一時的な分離との相違に基づくネットワーク１４についての正確な情報を得るためには、正確にコントロールされた一時的な分離をもってパケット３２が発信されなければならない。確実な測定方式とするためには、パケット３２は、隣接するパケット間の一時的な分離が非常に小さくなるように、しっかりと締めた間隔で配置されたバーストで発信されなければならない。
【００２４】
もしパケット３２が十分にコントロールされていない一時的な分離をもってネットワーク１４上に初めに発信されると、Δｔ1の測定値は、ネットワークに関する情報を得るための基礎として信頼性の低いものとなる。経路３４に沿った帯域幅の変化に起因するΔｔ1についての変化の大きさは、各種の要因のなかで、とりわけネットワーク１４のデータ・リンクの速度で決定される。表Ｉは、１５００バイトのパケットを使用してネットワーク・リンクの速度を測定したときに典型的にみられるΔｔ1の変化の範囲の要約である。例えば、ネットワーク１４が１０Ｍｂ／ｓのイーサーネット・ネットワークからなる場合には、１ｍｓのオーダーでΔｔ1の変化がみられる。ネットワーク１４が１Ｇｂ／ｓのイーサーネット・ネットワークからなる場合には、１０μｓｅｃのオーダーでΔｔ1の変化がみられる。
【表１】
2005513914.tif 000004
【００２５】
帯域幅の測定を容易にするには、テーブルＩに掲載されている該当する時間（またはテーブルＩに掲載されていないネットワーク技術の場合には類似の時間数）と比べ、隣接するパケット３２間の一時的な間隔Δｔ0が小さくなるように、パケット３２が発信されることが望ましい。このことは、Δｔ0が、テーブルＩにおいてΔｔ1に与えられた数値よりも良い解にコントロールされなければならないことを示している。パケット３２が意図された時間から変化した時間で実際に発信される場合（すなわち、重大な不都合および実質的に予言できないΔｔ0の変化がある場合）には、バーストからバーストまでの帯域幅の評価が大きく変わり得る。
【００２６】
経路３４に沿って進んだ後のパケットを見つけるシステムは、テーブルＩにおいてΔｔ1に与えられた数値よりも良い解となるように、隣接するパケット間の間隔を測定できることが望ましい。オペレーティング・システムＡＰＩｓを使用する代表的な方法は、帯域幅および他の特性について、正確性の高い測定を行うのに十分に良い解となるようにパケットが発信される時間をコントロールすることはできない。そのような方法は、主として、望まれる解となるようにパケットが受信される時間を測定することもできない。
【００２７】
ネットワーク１４がより高速になり、経路３４に沿った伝播遅延（片道を進む時間）がより短くなる程、パケット３２は、発信されるときに、より近接した間隔で配置されなければならない。大きなΔｔ0で送られたパケット３２は、高速リンクの帯域幅の全体を測定することができない。
【００２８】
本発明の好ましい実施形態では、テスト・パケット・シーケンサ２０は、ネットワーク１４を使用するとともに測定中のパラメータが何らかの関連性を持っているアプリケーション３５と同じハードウェア上で、同じオペレーティング・システム内で、かつ、同じ処理の中で走るソフトウェア２６を含んでいる。ソフトウェア２６は、パケット３２がオペレーティング・システム２８からの干渉を最小としつつ発信されるような方法で動作する。好ましくは、ソフトウェア２６は、コンピュータ２２で走っている可能性のある他のソフトウェアの動作との干渉が最小となるものがよい。
【００２９】
ソフトウェア２６は、ネットワーク１４上のデータ通信を使用するアプリケーション３５に合体するか、またはアプリケーション３５からの要求に応じて動作するように構築してもよい。テスト・パケット・シーケンサ２０により収集されたデータの解析は、分離されたシステムで実行されてもよい。例えば、図５は、テスト・パケット・シーケンサ２０を含むネットワーク試験システムの可能な構成を示している。このようなシステムの一例が、参照によりここに合体される２００１年１１月２２日にファイルされた「ネットワーク診断学を実行するためのサインマッチング方法およびその装置（SIGNATURE MATCHING METHODS AND APPARATUS FOR PERFORMING NETWORK DIAGNOSTICS）」と題されて普通に承認された共に未決定の出願で述べられている。図示された実施形態では、テスト・パケット・シーケンサ２０は、テスト・パケット・シーケンサ２０で始まり、かつ、終わる経路３４に沿って進むしっかりコントロールされたパケット３２のバースト３０を生成することができる。テスト・パケット・シーケンサ２０は、戻ってくるパケット３２を見つけ、ネットワーク１４を通じたテスト・パケット３２の伝播に関する情報を編集することもできる。
【００３０】
テスト・パケット・シーケンサ３２は、テスト・サーバ４０の制御下で動作してもよい。テスト・サーバ４０は、テスト・パケット・シーケンサ３２に一連の命令を実行させる。テスト・パケット・シーケンサ３２は、その命令を実行し、幾つかの命令でテスト・パケット・シーケンサ２０はテスト・パケット３２の詳細に設計されたバースト３０を生成する。そして、テスト・パケット・シーケンサ３２は、それらのテスト・パケット３２の伝播に関する情報４１をテスト・サーバ４０に戻す。
【００３１】
テストは、論理的な実体として、異なるタイプ、同じタイプ、または混在されたタイプのいずれでもよい複数の命令を含むものとしてよい。各タイプの命令は、テスト・パケット・シーケンサ３２により行われる一定の動作を詳細に規定する。一般に、各命令は、テスト・パケット・シーケンサ３２により、１以上のパケットが送信され、受信され、打刻されることを要求する。異なるタイプの命令は、パケットが送信され、戻ってきて処理される詳細な方法を規定するものでもよい。命令は、
・目的地点への接続をチェックするための接続命令；
・目的地点へのネットワーク経路を発見するための追跡経路命令；
・経路ＭＴＵおよび衝突に関する可能性を発見するためのＭＴＵ命令；および
・データグラムの伝播および詳細に設計されたネットワーク経路に沿ったバーストについての統計的な情報を集めるためのデータグラムおよびバースト命令
を含むものであってよい。
【００３２】
テストは、一組のテスト・セッティングにより、詳細に規定することができる。テスト・セッティングの各組は、例えば、
・テストに含まれる一組の命令；
・コマンドが実行されるシーケンス；
・各命令の実行が繰り返されるべき回数；および
・各命令用のコマンド・セッティング
を詳細に規定することができる。コマンド・セッティングは、各命令の動作に影響を及ぼすパラメータを詳細に規定する。バースト命令用のコマンド・セッティングは、例えば、
・バースト用の配置アドレス；
・バースト内のパケット数；
・バースト内のパケットの大きさ；
・バースト内のパケット用のデータ内容；
・各パケットの送信が繰り返される回数；
・パケット間の時間間隔；
・全てのパケットが戻ってくると予想される時間；
・仮に命令が達成されない場合にとられる動作；など
を詳細に規定することができる。
【００３３】
様々なテスト用のテスト・セッティングは、データベース４２に保存しておくことができる。テストを実行したいユーザは、データベース４２内でテスト・セッティングの適切な組を見つけることができる。もし、見つからなければ、ユーザは、データベース４２から一組のテスト・セッティングを引き出し、デフォルト・セッティングを上書きすることにより、それを修正して望みのテストを実行するためのものにすることがきる。デフォルト・セッティングは、いずれのバイナリ・コードも再コンパイルすることなしに変えられてもよい。あるいは、ユーザは、望みのテストを実行するために使用されるテスト・セッティングの新しい組を作ってもよい。
【００３４】
ユーザは、実行するテストを選択するために、ユーザ・インターフェース、好ましくはグラフィカル・ユーザ・インターフェース（ＧＵＩ）４６を用いてもよい。ＧＵＩ４６は、ユーザが、テストを開始し、解析サーバ４４およびテスト・サーバ４０の状態についての情報を得て、そしてテスト結果データ４７を見ることを可能にする。選択されたテスト用のテスト・セッティングは、テスト・サーバ４０により、テスト・パケット・シーケンサ３２に提供される。テスト・パケット・シーケンサ３２は、そのテスト・セッティングに従ったテスト命令を実行することにより、そのテストを実行する。各命令の実行後のような適当な時期に、テスト・パケット・シーケンサ３２は、テスト・サーバ４０にテスト結果に関する生のデータを送る。生のデータは、例えば、命令の実行中に送られた全てのパケットの発信および戻りの時刻を含んでいてよい。
【００３５】
テストが実行される経路３４が多数のホップを含んでいる場合には、テスト・パケット・シーケンサ２０は、各ホップの最後の点を終端のホストとみなしてテストを自動的に繰り返してもよい。これにより経路３４における各リンクの性能を解析するために使用することができるデータを収集することが可能となる。
【００３６】
サーバ４０は、解析サーバ４４に生のデータ４１を供給する。解析サーバ４４は、変形されたテスト・データ４５を得るために、生のデータ４１を処理する。変形されたテスト・データは、生のデータ４１から導かれる統計的な情報を含んでいてもよい。解析サーバ４４は、テスト結果データ４７を得るために、変形されたテスト・データ４５を処理する。テスト結果データ４７は、例えば、
・経路３４に沿った様々なデータ・リンクの帯域幅；
・経路３４上での様々なデータ・リンクの利用；
・過敏性；
・伝播遅延；
・キュー・デプス；および／または
・他のネットワーク性能指標
のようなネットワーク・パラメータについての経路３４に沿った目的地点および中間点に関する評価を含んでいてもよい。テスト結果データ４７は、
・半分十分な２重衝突；
・ＭＴＵ衝突；および
・ネットワークに影響を及ぼす他の条件
のような様々な見つかった条件の存在に関する情報を含んでいてもよい。
【００３７】
テストが完了する前に、中間結果をユーザに提供することが望ましいだろう。解析サーバ４４は、テストの進捗として、変形されたテスト・データ４５から中間的なテスト結果データ４７を得るとともに、ＧＵＩ４６にその中間的なテスト結果データを渡してもよい。すると、ＧＵＩ４６は、算出されたデータを更新して表示し、実行中のテストの状況の指標値をユーザに提供する。テストが完了すると、解析サーバ４４は、データベース４２に、最終的に変形されたテスト・データおよびテスト結果データを保存する。
【００３８】
ＧＵＩ４６のユーザは、同一または相違するテスト・パケット・シーケンサにより実行される複数同時のテストを開始し、監視してもよい。ユーザは、ＧＵＩ４６で、以前に実行されたテストに関するテスト結果データを解析サーバ４４から要求し、表示してもよい。
【００３９】
テスト・パケット・シーケンサ・ソフトウェア２６は、分割利用の効率の最適化を図るために実行中の処理からのリソースに関する要求を統括制御するウィンドウズ２０００（登録商標）のような非実時間オペレーティング・システムの下で走るときでさえ機能を果たすことができる。このようなオペレーティング・システムにおいては、パケット３２を短い時間間隔で確実に発信すること、または戻ってくるパケット３２の到着を正確に打刻することは困難である。このようなオペレーティング・システムの下で走る伝統的なプログラミング技術を使って記述されているソフトウェアにおいては、パケット３２の発信（および／または受信したパケット３２の打刻）は、
・コンピュータ２２のＣＰＵがスレッド間で周期的（ウィンドウズ２０００（登録商標）では、約２０ミリ秒毎）に切り替わるときの処理時間内での中断および不規則な遅延；
・スレッド・コンテキスト切替のための比較的長い時間（通常、ウィンドウズ２０００（登録商標）では、１０〜２０マイクロ秒の範囲内）；
・ユーザ・モードとケルネル・モードとの間の遷移に関連するオーバーヘッド（ウィンドウズ２０００（登録商標）では、約１０００ＣＰＵ命令）；
・アプリケーション・データ用に割り当てられたメモリの破壊によるデータの回復および保存の際の遅延；
・ウィンドウズ２０００（登録商標）および類似のオペレーティング・システムで提供される標準的なアプリケーション・プログラム・インターフェース（ＡＰＩｓ）が、パケットの伝送の詳細についての十分なコントロールを保証しないこと；
・メモリ・ページの境界でのデータの不整列によるデータへの遅いアクセス；
・オペレーティング・システムがメモリからシステム・ページ・ファイルの中にデータをアップロードする場合に発生するページ誤りを処理するために取られる時間；
・パケット・データの保存用の過度に割当可能なデフォルト・アプリケーション群の使用；
・オブジェクトを解くことができる構築中のエクセプション・フレームに関連する非常に多数の命令を含むソフトウェアに帰着するエクセプション・ハンドリング用のＣ＋＋コンパイラにより提供される標準的なエクセプション・ハンドリング・メカニズムの使用；
・オペレーティング・システムのソケット・レイヤで発生し、円滑なデータ伝送を成し遂げるためにデフォルトで使用されるパケットの追加的バファリング；
・スレッド・タイム・スライス境界の不整列に起因するタイム・クリティカル・ルーチンのフラグメンテーション；
・ネットワーク・インターフェースが未決定の結果の処理を妨げるかもしれないことによる速度の低下および関連する打刻の不正確；および
・一般的にタイム・クリティカルおよび／またはプロセッサ・インテンシブ関数用のコードが最適化されていないこと
のような要因により予測外に遅れてもよい。ウィンドウズ２０００（登録商標）および類似のオペレーティング・システムで提供される通常使われるアプリケーション・プログラム・インターフェース（ＡＰＩｓ）は、いずれのレベルの性能も保証しないか、またはパケット伝送の詳細をコントロールしない。
【００４０】
図６は、テスト・パケット・シーケンサ・ソフトウェア２６が分割されてもよいファンクショナル・レイヤのとり得る構成を示している。そして、それらのファンクショナル・レイヤ間の情報の流れおよび実行制御が図示されている。テスト・パケット・シーケンサ・ソフトウェア２６は、ソケット・レイヤ２６Ａ、テスト・コントローラ・レイヤ２６Ｂ、およびコマンド・コントローラ・レイヤ２６Ｃを含んで構成されている。各レイヤは、１つのＩ／Ｏコンプレション・ポート２７およびレイヤがその機能性を提供する１つまたは複数のスレッドを展開する。各Ｉ／Ｏコンプレション・ポート２７は、オペレーティング・システム・ケルネル・オブジェクトを含んで構成されている。図示された実施形態では、Ｉ／Ｏコンプレション・ポート２７Ａ，２７Ｂおよび２７Ｃは、それぞれソケット・レイヤ２６Ａ、テスト・コントローラ・レイヤ２６Ｂおよびコマンド・コントローラ・レイヤ２６Ｃに連結されている。コンプレション・ポート２７の１つが、プロセスからの通知（またはコンプレション・ポートに連結されたＩ／Ｏチャンネル上の動作に関連するオペレーティング・システムからの通知のための動作に関連するＯ／Ｓからの通知）を受信すると、コンプレション・ポートは、それが連結されているスレッドが有効になるときまで通知を待つ。コンプレション・ポートは、それから、受信したデータを、連結されているスレッドに渡す。
【００４１】
少なくともこれらのレイヤの各々のタイミング・クリティカルな入出力機能は、連結されたＩ／Ｏコンプレション・ポート２７を通して実行される。より好ましい実施形態では、他のレイヤまたは送受信パケットに関する情報を含むシステム・コンポーネントとの全ての通信は、コンプレション・ポート２７経由で実行される。
【００４２】
図７は、ファンクショナル・レイヤ２６Ａ，２６Ｂ，および２６Ｃを満たすことができる経路を図示するレイヤード・ＵＭＬ・Ｃ＋＋クラス・ダイヤグラムである。
【００４３】
ソケット・レイヤ２６Ａは、テスト・パケット・シーケンサ２０により得られた生のデータ４１を処理する解析システム（図６には示されていない）に対するインターフェースを提供する。その解析システムは、図５に示すような解析サーバ４４と通信するセパレート・テスト・サーバ４０、テスト・パケット・シーケンサ２０と統合されたソフトウェア・モジュール、コンピュータ２２上で走るかあるいは１つまたは複数の他のコンピュータ上に分散されたスタンドアロンのソフトウェア等を含んでいてもよい。
【００４４】
図５の実施形態では、ソケット・レイヤ２６Ａは、テスト・サーバ４０から、テストを実行するための要求５０を受信する。各テストの性質は、通信する要求５０の中に含まれるテスト・セッティングにより明記されている。ソケット・レイヤ２６Ａは、要求５０をテスト・コントローラ・レイヤ２６Ｂに渡す。これは、Ｉ／Ｏコンプレション・ポート２７Ｂ経由でなされてもよい。生のテスト・データが有効になるとき、例えば、そのテストの各命令の完了後に、テスト・コントローラ・レイヤ２６Ｂは、ソケット・レイヤ２６Ａに生のテスト・データ４１を返す。これは、Ｉ／Ｏコンプレション・ポート２７Ａ経由でなされてもよい。ソケット・レイヤ２６Ａは、生のテスト・データ４１をテスト・サーバ４０に送信する。
【００４５】
テスト・コントローラ・レイヤ２６Ｂは、各テストの実行を制御する。テスト・コントローラ・レイヤ２６Ｂは、複数同時のテストの実行を制御してもよい。テストを実行するための要求５０の受信後に、テスト・コントローラ・レイヤ２６Ｂは、そのテストのテスト・セッティングを確認し、セパレート命令の中のテスト・セッティングを解析する。テスト・コントローラ・レイヤ２６Ｂは、それから、テスト・セッティングにより決定されるシーケンスにおける個々の命令を、コマンド・コントローラ・レイヤ２６Ｃへ送信する。これは、Ｉ／Ｏコンプレション・ポート２７Ｃ経由でなされてもよい。
【００４６】
より好ましい実施形態では、テスト・パケット・シーケンサ２０は、目的地点のデバイスにその中間点を有する経路３４を通じて、およびテスト・パケット・シーケンサ２０と目的地点のデバイスとの間にあるネットワーク・ノードに中間点を有するより短い経路を通じて、パケットまたはパケットのバーストを自動的に送信する命令を実行することができる。このような実施形態では、テスト・コントローラ・レイヤ２６Ｂは、コマンド・コントローラ・レイヤ１６Ｃにより、より短い経路上で実行される命令におけるシーケンスの制御も行う。
【００４７】
特別な命令により送受信されたパケットに関するデータが解析のために用意されているというコマンド・コントローラ・レイヤ２６Ｃからの通知の受信後に、テスト・コントローラ・レイヤ２６Ｂは、コマンド・コントローラ・レイヤ２６Ｃにより有効にされているデータから生のテスト・データを引き出し、その命令により生成された生のテスト・データ４１をソケット・レイヤ２６Ａに転送してもよい。
【００４８】
コマンド・コントローラ・レイヤ２６Ｃは、テスト・コントローラ・レイヤ２６Ｂから受信した命令を実行する。各命令を実行することには、典型的には、テスト・パケット（データグラム）またはテスト・パケット３２のバーストの発信、およびテスト・パケット・シーケンサ２０に戻るテスト・パケット３２の受信および打刻が含まれる。発信されるテスト・パケット３２の性質および数量は、その命令のためのコマンド・セッティングにより明記される。
【００４９】
全てのテスト・パケット３２が戻ってきたとき（またはそのパケット３２が発信されてからの時間が閾値を超えるとき）、コマンド・コントローラ・レイヤ２６Ｃは、テスト・コントローラ・レイヤ２６Ｂに（Ｉ／Ｏコンプレション・ポート２７Ｂ経由で通知を渡すことにより）、そのテスト・パケットに関するデータが有効になっていることを通知する。その通知には、そのテスト・パケットに関するデータのメモリ内のロケーションに対するポインタが含まれていてもよい。閾値は、もう1つのパケットの到着に基づくコマンド・コントローラ・レイヤ２６Ｃのスレッドへのスイッチバックを行うのに必要とされる時間が、もう1つのパケットの到着を打刻することができる精度にあまり影響しない程度に十分に大きくなるように選択することができる。例えば、閾値は、テスト・コントローラ・レイヤ２６Ｂにおけるオペレーションを完了させ、コマンド・コントローラ２６Ｃのスレッドへコントロール・バックを渡すのに必要な時間よりも大きい２５回となるように選択することができる。
【００５０】
コマンド・コントローラ・レイヤ２６Ｃは、パケットを非同期で送受信する。それにより、次のパケットの送信要求に従う前に先行するパケットの送信のアプリケーションレベルの完了を待つことに関する不必要なインナー・パケット間隔が削除される。
【００５１】
上述したように、ソフトウェア２６は、好ましくは、テスト・パケット３２の送受信用のＩ／Ｏコンプレション・ポートを使用するのがよい。各Ｉ／Ｏコンプレション・ポートは、複数同時のＩ／Ｏ要求を取り扱うことができるオペレーティング・システム・ケルネル・オブジェクトを含んで構成されている。ＩＯコンプレション・ポートは、アプリケーションとネットワーク・プロトコル・レイヤとの間でのケルネル・モードにおいて機能する。各Ｉ／Ｏコンプレション・ポート２７は、データ転送を取り扱う１つまたは複数のソケット、および完了したＩ／Ｏ要求についての通知を処理するために実行制御が渡されるべき１つまたは複数のスレッドと関連していてもよい。コンプレション・ポート２７は、他のスレッドが、添付データを伴う明瞭なアプリケーションレベル通知を、Ｉ／Ｏコンプレション・ポートに関連するスレッドに渡すことを許容する。
【００５２】
各Ｉ／Ｏコンプレション・ポート２７は、内部的に非同期でユーザ・スレッドから来るＩ／Ｏ要求を待つ。コンプレション・ポートがケルネル・モードに切り替わるとき、それは、待っていた要求を実行する。コンプレション・ポート２７は、ケルネル・モードで動作している間に、待っていたＩ／Ｏ要求を実行するので、要求の実行は、減じられた障害を受ける。コンプレション・ポート２７は、典型的には、プロトコル・ドライバに対し、ソフトウェア２６のユーザ・スレッドよりも速くアクセスすることができるので、要求を迅速に実行することができる。これにより、出ていくパケット３２は、非常に接近した間隔になる。
【００５３】
Ｉ／Ｏコンプレション・ポート２７がＩ／Ｏ要求を完了するとき、それは、第１に有用なものを、コンプレション・ポートに関連するスレッドに通知し、そのスレッドに実行制御を渡す。これにより、そのスレッドは、完了した要求を処理することができる。そのスレッドは、他の処理機能の中で、完了した要求についての打刻を得てもよい。
【００５４】
本発明のより好ましい実施形態では、コマンド・コントローラ・レイヤ２６Ｃは、タイム・クリティカル・コードに入る直前に（例えば、Ｉ／Ｏコンプレション・ポート２７Ｃ経由で一群のテストパケットを発信する直前に）現在のタイム・スライスを開放することにより、スレッド・タイム・スライスでパケット・センディング・ルーチンを並べる。１つの命令について有効な範囲内の多数のパケットを持つパケット３２のグループ３０については、スレッド・タイム・スライス（ウィンドウズ２０００（登録商標）では、約２０ミリ秒）は、１つのタイム・スライス内でコンプレション・ポート２７へ全てのパケットを渡すのに十分なものである。これにより、ネットワーク上に発信されるときにテスト・パケットが近接した間隔で配置されるように、コンプレション・ポート２７Ｃが、次のケルネル・モード・スライス内でテスト・パケットの全てを送信するための要求を実行することができる最も高い機会が与えられる。
【００５５】
ファンクショナル・ユニットの中で明確かつ論理的に矛盾しない方法でソフトウェア２６を分割することは、ネットワーク上へのパケットの配置およびパケットの打刻について良好な制御を行うためにテスト・パケット・シーケンサ・ソフトウェア２６の性能を調整することを容易にする。
【００５６】
本発明のより好ましい実施形態では、コマンド・コントローラ・レイヤ２６Ｃが特別な命令のパケットの送受信を行っている間に、それは、事実上、発信されるパケットの打刻、到着するパケットの打刻、並びに後の処理のために簡単な配列となるような適切なデータ構造での発信および到着するパケットについての情報の保存以外に何もしない。テスト・コントローラ・レイヤ２６Ｂは、テスト・パケットに関するデータが処理に有効であるという通知をそれに渡すコマンド・コントローラ・レイヤ２６Ｃによりそれが特別に起こされるまで、眠っていて何もしない。
【００５７】
コマンド・コントローラ・レイヤ２６Ｃは、好ましくは、余分なスレッド・コンテキスト・スイッチングを避けるため、唯一のスレッドを持っているのがよい。もし、一群のパケットをＩ／Ｏコンプレション・ポート２７Ｃに提出している間に、１つまたは複数のパケットが受信されてしまったら、Ｉ／Ｏコンプレション・ポート２７Ｃが唯一のコマンド・コントローラ・スレッドに完了通知を渡すので、オペレーティング・システム２８は、受信したパケットを処理するために、もう一つのスレッドを活動させるのに時間をかけることを必要としない。これにより、到着パケットがテスト・パケット・シーケンサ２０で受信された後に、非常に短時間での到着パケットの打刻が容易になる。
【００５８】
テスト・パケット・シーケンサ・ソフトウェア２６は、コマンド・コントローラ・スレッドによるテスト・パケットの受信と、テスト・コントローラ・スレッドによる生のテスト・データを引き出すためのテスト・パケットに関するデータの解析との重なりを許容することができる。コマンド・コントローラ・スレッドは、「スタート・アナライジング」回数値を含んでいてよい。もし、全てのテスト・パケットがテスト・パケット・シーケンサ２０に戻ってこなかったら、そして、現在の命令中の最後のテスト・パケットの送信から、「スタート・アナライジング」回数値を超えていたら、コマンド・コントローラ・スレッドは、テスト・コントローラ・スレッドに、それが現在の命令についてのテスト・パケットの解析を開始すべきであるという通知を送信する。「スタート・アナライジング」回数値は、例えば、そのタイム・スライスを完了させ、コマンド・コントローラ・スレッドに実行制御を譲るためにテスト・コントローラ・スレッドに要求される回数よりも、少なくとも２５回大きい回数に設定されてもよい。これにより、そのテストは、より迅速に実行される。テスト・コントローラ・スレッドは、好ましくは、周期的にそのタイム・スライスを開放することを試みるのがよい。これにより、テスト・コントローラ・スレッドの実行中にパケットが到着する場合に、戻ってきたテスト・パケットの処理を行う際の遅延の最小化が可能になる。
【００５９】
コマンド・コントローラ・レイヤ・スレッドは、「タイム−クリティカル」優先度を定めてもよい。これにより、コマンド・コントローラ・スレッドが、パケットの送受信中に中断されないこと、およびコマンド・コントローラ・スレッドが、テスト・コントローラ・スレッドによるパケットの解析と重なってもよい受信フェーズ中の実行制御を得ることについて高い可能性が得られる。
【００６０】
コマンド・コントローラ・レイヤ２６Ｃは、好ましくは、オペレーティング・システム・アブストラクト・ソケット・レイヤ内で中間的なバッファを用いないでテスト・パケットが送受信される方法でソケットを配置するのがよい。オペレーティング・システムは、典型的には、デフォルトでこのバッファを用いるように全ての新しいソケットを設定する。アブストラクト・ソケット・レイヤは、追加のバッファのために要求される余分な時間のコストでデータ転送がより円滑になるように、このバッファを提供する。このオプション・セットが無いと、プロトコル・ドライバは、パケット・データを直接にパケット・バッファから読むとともにパケット・バッファへ書き込む。コマンド・コントローラ・レイヤ２６Ｃは、好ましくは、パケット・データが保存されたメモリ・ロケーションをロックするのがよい。
【００６１】
コマンド・コントローラ・レイヤ２６Ｃは、好ましくは、戻ってくると予想される多数のテスト・パケット３２のトラックを保持する。次の命令を実行する前に、コントローラ・レイヤ２６Ｃは、次の命令の実行中に受信される全てのテスト・パケット３２を取り扱うためのペンディングされている受信要求が十分にあるか否かをチェックする。もし、無い場合には、コマンド・コントローラ・レイヤ２６Ｃは、必要数の新しい受信要求を生成し、コンプレション・ポートに提出する。十分であると考えられる数は、あり得る「エイリアン」パケットを説明するために、現実のパケット数よりも大きく設定される。これにより、後にクリティカル・タイムが省かれる。テストは、戻ってくるテスト・パケット３２を受信するのに十分なバッファを予め生成するか、あるいはそのために予め生成している。バッファは、予測される全ての戻ってくるパケット３２を受信するために必要とされる少なくとも最小数の受信バッファを含む。
【００６２】
コマンド・コントローラ・セクション２６Ｃは、好ましくは、打刻のための高分解能ハードウェアカウンタを用いるのがよい。ハードウェア・タイムカウンタは、高い時分割性能を提供する。その分解能は、８００ＭＨｚペンティアムIIIプロセッサ（ペンティアムは、登録商標）を備えたコンピュータで３００ナノ秒よりも良くすることができる。
【００６３】
テスト・パケット・シーケンサ・ソフトウェア２６は、好ましくは、ヒープ・メモリ・フラグメンテーションを削除するために、パケット・データ用の全てのメモリ・アロケーション・ユニットを、等しいサイズにするのがよい。このことは、メモリ・アクセスの時間を減じることにもなる。
【００６４】
テスト・ハンドラ・セクション２６Ｃは、好ましくは、パケット・データのためのプライベート・ヒープを維持するのがよい。これは、デフォルト・アプリケーション・ヒープが極端にシェアラブルで、崩壊しているときに生じ得るオーバーヘッドおよび遅延を回避するのに役立つ。プライベート・ヒープは、オペレーティング・システム２８により使用されるメモリ・ページ・サイズと等しいサイズを持つアロケーション・ユニットとして使用するために、テスト・パケット・シーケンサ・ソフトウェア２６により配置されてもよい。例えば、オペレーティング・システムがウィンドウズ２０００（登録商標）である場合には、ページ・サイズは、４０９６バイトでよい。これにより、ヒープ・データは、メモリ・ページの境界で並べられ、他の場合なら、整列されていないメモリ・データの読み書きに必要とされる命令を消すことにより、各メモリ・アクセスのために必要な時間を減じる。
【００６５】
テスト・パケット・シーケンサ・ソフトウェア２６は、好ましくは、アプリケーション・ワーキング・プロセス・サイズを、デフォルト・ワーキング・プロセス・サイズよりも大きく設定するのがよい。ウィンドウズ２０００（登録商標）では、デフォルト・ワーキング・プロセス・サイズは、４Ｍバイトである。アプリケーション・ワーキング・プロセス・サイズ以上のデータは、オペレーティング・システム２８により、ページ・ファイルにアンロードされてもよい。ページ・フォールトは、ページ・ファイルにアンロードされているデータを検索するか修正する試みがあるときに生じる。より大きなアプリケーション・ワーキング・プロセス・サイズを使用することは、メモリ・アクセス中にページ・フォールトが生じる機会を最小化する。
【００６６】
テスト・パケット・シーケンサは、先の命令の実行で送信されて戻ってきた全てではないテスト・パケットを通じてでさえ、命令の実行を開始してよい。これを容易にするために、テスト・コントローラ・レイヤ２６Ｃは、命令のためのコマンド・セッティングの一部として、「スリープ」時間値を受信してもよい。もし、現在実行中の命令からの最後のパケットを受信してから経過した時間が、その命令用の「スリープ」時間を超えたら、テスト・コントローラ・レイヤ２６Ｃは、次の命令の実行を開始してよい。スリープ時間の値は、スリープ時間内に全てのテスト・パケットが戻るのに十分に長い時間となるように選択される。スリープ時間用の正式なセッティングについては、次の命令の実行中にパケットが到着することは、比較的好ましくない。極端に（異常に）遅れるか、または失われたパケットのせいで、全部のテストの実行が遅れることはない。
【００６７】
スリープ時間は、自動的に調整されてもよい。これを行うための１つの方法は、テスト・コントローラ・レイヤ２６Ｂのために、現在テストされている経路３４上のパケット用の平均往復伝達時間を基準としてスリープ時間値を動的に調整することである。例えば、スリープ時間は、そのサイズのパケット用で、かつ、現在テスト中のそのネットワーク・デバイス用の平均往復伝達時間の倍数に設定することができる。その倍数は、例えば、平均往復伝達時間の１．５から３倍の時間の範囲内とすることができる。その平均往復伝達時間は、先に送信された多数のパケット（例えば、１０個の最も最近送信されたテスト・パケット）用の往復伝達時間を平均することにより得てもよい。
【００６８】
最後の受信パケットが受信された時間からのスリープ時間を計測することについての選択し得る１つの方法としては、テスト・パケット・シーケンサ・ソフトウェア２６は、戻ってくると予想されるバースト３０内の全てのパケットの終了までの期間を明記したスリープ時間を維持してもよい。スリープ時間値は、バースト３０内の多数のパケット３２のうちの１つまたは複数,、パケット３２のサイズＳ、および経路３４を旋回するための評価時間に一部基づいて設定してもよい。
【００６９】
テスト・パケット・シーケンサ・ソフトウェア２６は、好ましくは、標準的なＣ＋＋コンパイラによるエクセプション・ハンドリングのために提供されるエクセプション・メカニズムを使用しないのがよい。標準的なエクセプション・メカニズムは、解かれたオブジェクトに関連する重大なオーバーヘッドを提供する。本発明のより好ましい実施形態では、このオーバーヘッドは、不必要である。代わりに、テスト・パケット・シーケンサ・ソフトウェア２６は、ストラクチャード・エクセプション・ハンドリング（ＳＥＨ）を用いることができる。
【００７０】
ソフトウェアを含む原型のテスト・パケット・シーケンサは、上述したように、ウィンドウズ２０００（登録商標）・オペレーティング・システム下の８００ｍHｚペンティアムIIIプロセッサ（ペンティアムは、登録商標）を持っているコンピュータ上で走る。そのコンピュータは、３ＣｏｍTM１０／１００ネットワーク・インターフェース・カード（ＮＩＣ）経由で、１００Ｍｂｓイーサーネット・ネットワークに接続されていた。そのテスト・パケット・シーケンサは、１５００バイトのパケットのバーストを発信するのに使用された。連続するパケットの始まりどうしの間の時間は、スマートビッツ・ネットワーク・アナライザを使用しながら計測された。連続するパケットの始まりどうしの間の時間は、１２３．５±０．０５μ秒であったことがわかった。このことは、１つのパケットの終わりと、次のパケットの発信との間に、本質的にギャップが無かったことを示している。
【００７１】
テスト・パケットのバーストの発信のための開示されたシステムおよび方法、並びにテスト・パケットの受信および受信の打刻のための開示されたシステムは、まとめていっしょに、または、上述したように分離して使用してもよい。これらのシステムの一方または双方は、ネットワークの故障検査および解析を行うネットワーク・エンジニアおよび管理者のようなユーザが使用することができるソフトウェアに基づくシステムに組み込んでもよい。このようなシステムは、ポイント・ツー・ポイント・ネットワークの非常に速く正確な特性が必要とされるようなルーチンまたはコンテンツ選択に基づき形成されるネットワーク決定のためのシステム内の要素として使用してもよい。
【００７２】
テスト・パケット・シーケンシング・ソフトウェアは、完成されたインターネット性能計測システムの一部として使用することができる。そのソフトウェアは、ソフトウェア製品としてエンドユーザにライセンスされるか、またはサービスとして提供することができる、ソフトウェアにより提供される結果にアクセスすることができる。
【００７３】
本発明の確実な遂行は、コンピュータ・プロセッサに本発明の方法を実行させるソフトウェアの命令を実行するコンピュータ・プロセッサから成り立つ。本発明は、プログラム製品の形で提供されてもよい。プログラム製品は、コンピュータ・プロセッサにより実行されるときには、データ・プロセッサに本発明の方法を実行させる命令を含むコンピュータ読取り可能な信号のセットを運ぶいずれの媒体を含んでいてよい。プログラム製品は、多様な形態のいずれであってもよい。プログラム製品は、例えば、フロッピーディスク（登録商標）、ハードディスク・ドライブを含む磁気データ記録メディア、ＣＤ−ＲＯＭ、ＤＶＤを含む光学データ記録メディア、ＲＯＭ、フラッシュＲＡＭを含む電気的データ記録メディア等のような物理的メディア、あるいはデジタルまたはアナログ通信リンクのような伝送型メディアを含んで構成されていてよい。
【００７４】
コンポーネント（例えば、ソフトウェア・モジュール、プロセッサ、アセンブリ、デバイス、サーキット等）が、上述したものである場合には、もし他の方法で示されなかったならば、そのコンポーネントへの言及（「手段」への言及を含む）は、記述されているコンポーネントの機能を発揮する（すなわち、機能的に等しい）いずれのコンポーネントもそのコンポーネントの同等物として含むように解釈されるべきであり、本発明の図示された典型的な実施形態で機能を発揮する開示された構造と構造的に等しくないコンポーネントも含むように解釈されるべきである。
【００７５】
前述の開示に照らして技術的に明らかであるように、この発明を実施するうえで、その精神や範囲から離れることなく、多くの変更と修正が可能である。例えば：
・      本発明は、詳細の遂行上、適宜な応用を図ることで、Ｉ／Ｏコンプレション・ポ
ートを提供するか、または提供するために修正されたウィンドウズ２０００（登
録商標）以外のオペレーティング・システム下で使用してもよい。
【００７６】
従って、本発明の範囲は、別紙の請求項により定義される内容に従って解釈されるものである。
【図面の簡単な説明】
【００７７】
【図１Ａ】本発明の方法に従ってパケットを伝送することができるネットワークの配線図である。
【図１Ｂ】本発明の幾つかの実施形態に従ったテスト・パケット・シーケンサの図である。
【図２】テスト・パケットのシーケンスを示すブロック図である。
【図３】パケットが通過するネットワーク・リンクの容量の変化により４つのパケットのバーストの一時的な分布がどのように変化するのかを示すバン・ヤコブソンの図である。
【図４】狭路部分がネットワーク性能にどのように影響を及ぼし得るのかを示す配線図である。
【図５】本発明の一実施形態に従ったシステムの配線図である。
【図６】本発明に従ったテスト・パケット・シーケンサの動作を示すフローチャートの図である。
【図７】本発明の一実施形態に従ったＵＭＬ（ユニファイド・モデリング言語）レイヤードＣ＋＋クラス・ダイヤグラム・テスト・パケット・シーケンサ・ソフトウェアである。
【図１Ａ】
2005513914.tif 000005
【図１Ｂ】
2005513914.tif 000006
【図２】
2005513914.tif 000007
【図３】
2005513914.tif 000008
【図４】
2005513914.tif 000009
【図５】
2005513914.tif 000010
【図６】
2005513914.tif 000011
【図７】
2005513914.tif 000012
【国際調査報告】
2005513914.tif 000013
2005513914.tif 000014
2005513914.tif 000015