(57)【特許請求の範囲】
【請求項１】
ネットワーク接続を検査するために、検査システムによって実行される方法であって、
ネットワークを介して、１つ以上のリモートデバイスとの複数の通信制御プロトコル（ＴＣＰ）接続を確立する工程と、
前記複数のＴＣＰ接続を介して送信されたＴＣＰパケットおよび前記複数のＴＣＰ接続を介して受信されたＴＣＰパケットからメタデータを抽出する工程と、
メモリに、抽出された前記メタデータを保存する工程と
を含み、
前記メモリは複数のリボルビング・バッファを含み、各々のリボルビング・バッファは前記複数のＴＣＰ接続の対応する１つに関連付けられており、
前記抽出されたメタデータを保存する工程は、前記対応するリボルビング・バッファにおいて、各ＴＣＰ接続を介して送信または受信されたＮ個（Ｎは１よりも大きい整数）の最も最近のパケットについて、前記抽出されたメタデータを保存する工程を含む、方法。
【請求項２】
前記メタデータは、送信された各パケットおよび受信された各パケットのＴＣＰヘッダから抽出されたシーケンス番号および肯定応答番号を含む、請求項１に記載の方法。
【請求項３】
前記メタデータはさらに、送信された各パケットおよび受信された各パケットの前記ＴＣＰヘッダから抽出された、ＴＣＰフラグ、ウィンドウサイズ、および長さの少なくとも１つを含む、請求項２に記載の方法。
【請求項４】
前記メタデータはさらに、送信された各パケットおよび受信された各パケットのペイロードから抽出されたタイムスタンプを含む、請求項２に記載の方法。
【請求項５】
各ＴＣＰ接続は、インターネットプロトコル（ＩＰ）送り元アドレス、ＩＰ宛先アドレス、ＴＣＰ送り元ポート番号、およびＴＣＰ宛先ポート番号の一意の組み合わせによって規定され、
送信された各ＴＣＰパケットおよび受信された各ＴＣＰパケットに関連付けられた接続識別子を決定する工程であって、前記接続識別子は、各パケットのヘッダ内に含まれるＩＰ送り元アドレス、ＩＰ宛先アドレス、ＴＣＰ送り元ポート番号、およびＴＣＰ宛先ポート番号のハッシュに等しい、工程をさらに含む、請求項１に記載の方法。
【請求項６】
Ｎは１６に等しい２のべき乗か、それよりも大きい２のべき乗である、請求項５に記載の方法。
【請求項７】
前記抽出されたメタデータを保存する工程は、前記メモリ内の対応するリボルビング・バッファへのポインタとして、受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットに関連付けられた接続識別子を用いる工程をさらに含む、請求項５に記載の方法。
【請求項８】
前記抽出されたメタデータを保存する工程は、前記メモリ内の対応するリボルビング・バッファへのポインタを検索するために、受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットに関連付けられた接続識別子を用いる工程をさらに含む、請求項５に記載の方法。
【請求項９】
前記抽出されたメタデータを保存する工程は、単一の連続したリストに、前記抽出されたメタデータを保存する工程を含み、
受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットについて保存された前記メタデータは、前記関連付けられたハッシュ値を含む、請求項５に記載の方法。
【請求項１０】
前記複数のＴＣＰ接続から、選択されたＴＣＰ接続についての保存されたメタデータを試験アドミニストレータのコンピューティングデバイスに送信する工程をさらに含む、請求項１に記載の方法。
【請求項１１】
前記選択されたＴＣＰ接続は、前記試験アドミニストレータのコンピューティングデバイスから受信されたリクエスト、前記選択されたＴＣＰ接続のタイムアウト、および所定の閾値を超過した、前記選択されたＴＣＰ接続上での再送信の数、のうちの１つに基づいて選択される、請求項８に記載の方法。
【請求項１２】
ネットワーク接続を試験するためのポートユニットであって、
ネットワークを介して、ＴＣＰパケットを送信し、かつＴＣＰパケットを受信するためのネットワークインターフェースユニットと、
前記ネットワークインターフェースユニットに連結されたプロセッサと、
前記プロセッサおよび前記ネットワークインターフェースユニットに連結されたメモリであって、前記プロセッサによって実行された場合に、以下：
前記ネットワークを介して、１つ以上のリモートデバイスを用いて複数の通信制御プロトコル（ＴＣＰ）接続を確立することと、
前記複数のＴＣＰ接続を介して送信されたＴＣＰパケットおよび前記複数のＴＣＰ接続を介して受信されたＴＣＰパケットからメタデータを抽出することと、
前記メモリに、抽出された前記メタデータを保存することと
を含む動作を前記ポートユニットに実行させる命令を含むデータおよびプログラム命令を保存する、メモリと
を備え、
前記メモリは複数のリボルビング・バッファを含み、各々のリボルビング・バッファは前記複数のＴＣＰ接続の対応する１つに関連付けられており、
前記抽出されたメタデータを保存する工程は、前記対応するリボルビング・バッファにおいて、各ＴＣＰ接続を介して送信または受信されたＮ個（Ｎは１よりも大きい整数）の最も最近のパケットについて、前記抽出されたメタデータを保存する工程を含む、ポートユニット。
【請求項１３】
前記メタデータは、送信された各パケットおよび受信された各パケットのＴＣＰヘッダから抽出されたシーケンス番号および肯定応答番号を含む、請求項１２に記載のポートユニット。
【請求項１４】
前記メタデータはさらに、送信された各パケットおよび受信された各パケットの前記ＴＣＰヘッダから抽出された、ＴＣＰフラグ、ウィンドウサイズ、および長さの少なくとも１つを含む、請求項１３に記載のポートユニット。
【請求項１５】
前記メタデータはさらに、送信された各パケットおよび受信された各パケットのペイロードから抽出されたタイムスタンプを含む、請求項１３に記載のポートユニット。
【請求項１６】
各ＴＣＰ接続は、インターネットプロトコル（ＩＰ）送り元アドレス、ＩＰ宛先アドレス、ＴＣＰ送り元ポート番号、およびＴＣＰ宛先ポート番号の一意の組み合わせによって規定され、実行される前記動作はさらに、
送信された各ＴＣＰパケットおよび受信された各ＴＣＰパケットを用いて接続識別子を決定する工程であって、前記接続識別子は、各パケットのヘッダ内に含まれるＩＰ送り元アドレス、ＩＰ宛先アドレス、ＴＣＰ送り元ポート番号、およびＴＣＰ宛先ポート番号のハッシュ関数に等しい、動作をさらに含む、請求項１２に記載のポートユニット。
【請求項１７】
Ｎは１６に等しい２のべき乗か、それよりも大きい２のべき乗である、請求項１６に記載のポートユニット。
【請求項１８】
前記抽出されたメタデータを保存する工程は、前記メモリ内の対応するリボルビング・バッファへのポインタとして、受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットに関連付けられた接続識別子を用いる工程をさらに含む、請求項１６に記載のポートユニット。
【請求項１９】
前記抽出されたメタデータを保存する工程は、前記メモリ内の対応するリボルビング・バッファへのポインタを検索するために、受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットに関連付けられた接続識別子を用いる工程をさらに含む、請求項１６に記載のポートユニット。
【請求項２０】
前記抽出されたメタデータを保存する工程は、単一の連続したリストに、前記抽出されたメタデータを保存する工程を含み、
受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットについて保存された前記メタデータは、前記関連付けられた接続識別子を含む、請求項１６に記載のポートユニット。
【請求項２１】
実行される前記動作はさらに、前記複数のＴＣＰ接続からの選択されたＴＣＰ接続についての保存されたメタデータを試験アドミニストレータのコンピューティングデバイスに送信する動作を含む、請求項１２に記載のポートユニット。
【請求項２２】
前記選択されたＴＣＰ接続は、前記試験アドミニストレータのコンピューティングデバイスから受信されたリクエスト、前記選択されたＴＣＰ接続のタイムアウト、および所定の閾値を超過した、前記選択されたＴＣＰ接続上での再送信の数、のうちの１つに基づいて選択される、請求項２１に記載のポートユニット。
【請求項２３】
ネットワークに連結されたポートユニットのプロセッサによって実行された場合、以下：
前記ネットワークを介して、１つ以上のリモートデバイスを用いて複数の通信制御プロトコル（ＴＣＰ）接続を確立することと、
前記複数のＴＣＰ接続を介して送信されたＴＣＰパケットおよび前記複数のＴＣＰ接続を介して受信されたＴＣＰパケットからメタデータを抽出することと、
メモリに、抽出された前記メタデータを保存し、
前記メモリは複数のリボルビング・バッファを含み、各々のリボルビング・バッファは前記複数のＴＣＰ接続の対応する１つに関連付けられており、
前記抽出されたメタデータを保存する工程は、前記対応するリボルビング・バッファにおいて、各ＴＣＰ接続を介して送信または受信されたＮ個（Ｎは１よりも大きい整数）の最も最近のパケットについて、前記抽出されたメタデータを保存する工程を含む、
動作を前記ポートユニットに実行させる命令を保存するコンピュータ可読保存媒体。
【請求項２４】
前記メタデータは、送信された各パケットおよび受信された各パケットのＴＣＰヘッダから抽出されたシーケンス番号および肯定応答番号を含む、請求項２３に記載のコンピュータ可読保存媒体。
【請求項２５】
前記メタデータはさらに、送信された各パケットおよび受信された各パケットの前記ＴＣＰヘッダから抽出された、ＴＣＰフラグ、ウィンドウサイズ、および長さの少なくとも１つを含む、請求項２４に記載のコンピュータ可読保存媒体。
【請求項２６】
前記メタデータはさらに、送信された各パケットおよび受信された各パケットのペイロードから抽出されたタイムスタンプを含む、請求項２４に記載のコンピュータ可読保存媒体。
【請求項２７】
各ＴＣＰ接続は、インターネットプロトコル（ＩＰ）送り元アドレス、ＩＰ宛先アドレス、ＴＣＰ送り元ポート番号、およびＴＣＰ宛先ポート番号の一意の組み合わせによって規定され、実行される前記動作はさらに、
送信された各ＴＣＰパケットおよび受信された各ＴＣＰパケットに関連付けられた接続識別子を決定する工程であって、前記接続識別子は、各パケットのヘッダ内に含まれるＩＰ送り元アドレス、ＩＰ宛先アドレス、ＴＣＰ送り元ポート番号、およびＴＣＰ宛先ポート番号のハッシュに等しい、動作をさらに含む、請求項２３に記載のコンピュータ可読保存媒体。
【請求項２８】
Ｎは１６に等しい２のべき乗か、それよりも大きい２のべき乗である、請求項２７に記載のコンピュータ可読保存媒体。
【請求項２９】
前記抽出されたメタデータを保存する工程は、前記メモリ内の対応するリボルビング・バッファへのポインタとして、受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットに関連付けられた接続識別子を用いる工程をさらに含む、請求項２７に記載のコンピュータ可読保存媒体。
【請求項３０】
前記抽出されたメタデータを保存する工程は、前記メモリ内の対応するリボルビング・バッファへのポインタを検索するために、受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットに関連付けられた接続識別子を用いる工程をさらに含む、請求項２７に記載のコンピュータ可読保存媒体。
【請求項３１】
前記抽出されたメタデータを保存する工程は、前記メモリ内の対応するリボルビング・バッファへのポインタを検索するために、受信された各ＴＣＰパケットおよび送信された各ＴＣＰパケットに関連付けられた接続識別子を用いる工程をさらに含む、請求項２７に記載のコンピュータ可読保存媒体。
【請求項３２】
実行される前記動作はさらに、前記複数のＴＣＰ接続からの選択されたＴＣＰ接続についての保存されたメタデータを試験アドミニストレータのコンピューティングデバイスに送信する動作を含む、請求項２３に記載のコンピュータ可読保存媒体。
【請求項３３】
前記選択されたＴＣＰ接続は、前記試験アドミニストレータのコンピューティングデバイスから受信されたリクエスト、前記選択されたＴＣＰ接続のタイムアウト、および所定の閾値を超過した、前記選択されたＴＣＰ接続上での再送信の数、のうちの１つに基づいて選択される、請求項３２に記載のコンピュータ可読保存媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（著作権およびトレードドレスについての通知）
本特許文献の開示の一部は著作権保護に対象となるマテリアルを含む。本特許文献は、保有者のトレードドレスである、またはトレードドレスとなり得る事柄を示し、および／または記載する場合がある。著作権およびトレードドレスの保有者は、いかなる者であっても米国特許商標局の書類または記録の通りに本特許開示を複製する限りで、異議を申し立てるものではないが、その他の場合には、いかなる場合であっても全ての著作権およびトレードドレスの権利を保留するものである。
【０００２】
本開示は、ネットワークまたはネットワークデバイスを検査するためのトラフィックを受信および処理することに関する。
【背景技術】
【０００３】
多くのタイプの通信ネットワークにおいて、送信される各メッセージは固定長または可変長の部分へと分割される。各々の部分は、情報のパケット、フレーム、セル、データグラム、データ単位、または他の情報単位として呼ばれる場合があり、それらの全ては、本明細書において、パケットとして参照される。
【０００４】
各パケットは、通常、パケットのペイロードと呼ばれる元のメッセージの一部を含む。パケットのペイロードはデータを含んでよく、あるいは、音声情報またはビデオ情報を含んでもよい。パケットのペイロードはまた、ネットワーク管理および制御情報を含んでもよい。さらに、各パケットは、通常、パケットヘッダと呼ばれる識別およびルーティング情報を含む。パケットはネットワークを通じて複数のスイッチまたはノードを介して個々に送信される。パケットは、目的とするデバイスまたはエンドユーザにメッセージが配信される前に、パケットヘッダに含まれる情報を用いて最終的な送り先にてメッセージに再構築される。受信側において、その再構築されたメッセージは、ユーザの装置に適合するフォーマットでエンドユーザに送られる。
【０００５】
メッセージをパケットとして送信する通信ネットワークは、パケット交換ネットワークと呼ばれる。パケット交換ネットワークは、通常、ハブまたはノードで交差する送信パスのメッシュを含む。ノードの少なくとも一部は、ノードに到着するパケットを受け取り、適切な発信パスに沿ってパケットを再送信するスイッチングデバイスまたはルータを備えてよい。パケット交換ネットワークは、業界標準のプロトコルのレイヤ別の構造によって制御される。その構造のレイヤ１、２、３、およびレイヤ４は各々、物理レイヤ、データリンクレイヤ、ネットワークレイヤ、およびトランスポートレイヤである。
【０００６】
レイヤ１のプロトコルは、ネットワークのノード間での物理的な（電気的、光学的、または無線の）インターフェースを規定する。レイヤ１のプロトコルは、イーサネット（登録商標）の物理的コンフィグレーション、ＳＯＮＥＴ（同期光学的ネットワーク）、および他の光学接続プロトコル、ならびに、Ｗｉ−Ｆｉ（登録商標）等の様々な無線プロトコルを含む。
【０００７】
レイヤ２のプロトコルは、データがネットワークのノード間を論理的に転送される方法を制御する。レイヤ２のプロトコルは、イーサネット（登録商標）、ＡＴＭ（非同期転送モード）、フレームリレー、およびＰＰＰ（ポイント・ツー・ポイント・プロトコル）を含む。
【０００８】
レイヤ３のプロトコルは、ネットワークの複数のノードを接続するパスに沿ってソースから送り先へパケットがルーティングされる方法を制御する。主要なレイヤ３のプロトコルは周知のインターネットプロトコルバージョン４（ＩＰｖ４）およびバージョン６（ＩＰｖ６）である。パケット交換ネットワークは、イーサネット（登録商標）、ＡＴＭ、ＦＲ、および／またはＰＰＰのレイヤ２のプロトコルの混合体を用いてＩＰパケットをルーティングする必要がある場合もある。ネットワークのノードの少なくとも一部は、各パケット内に含まれるネットワークレイヤヘッダから、送り先アドレスを抽出するルータを備えてもよい。ルータは次いで、パケットが再送信されるべきルートまたはパスを決定するために送り先アドレスを用いる。通常のパケットは複数のルータを通過してよく、それらのルータの各々は送り先アドレスを抽出する行為およびそのパケットが再送信されるべきルートまたはパスを決定する行為を繰り返す。
【０００９】
レイヤ４のプロトコルは、ネットワーク中でエンド・ツー・エンドのメッセージ配信を制御する。特に、通信制御プロトコル（ＴＣＰ）は、必要に応じて、順次的な承認および再伝送のシステムを用いてパケットストリームの信頼性のある伝送を提供する。ＴＣＰは、２つのデバイスがネットワークを介した仮想接続を開くためにメッセージを交換するコネクション型のプロトコルである。接続がいったん開くと、接続されたデバイス間で双方向通信が生じ得る。接続はそれらのデバイスの一方によって切断されるまで存在し得る。接続を開くことおよび切断の両方は、特定のメッセージが２つのデバイス間で交換されるいくつかのステップを必要とする。予定されていた応答が所定の時間期間に一方のデバイスによって受信されない場合には、接続は切断されてよく、これは通常、「タイムアウト」と呼ばれる。ＴＣＰ接続は、各々のデバイスが、接続の状態（開いているのか、確立されているのか、切断されているのか）、どのようなデータが送られているのか、そしてどのような送られたデータが承認されているのかを記載した情報を維持する必要があるゆえ、「ステートフル」とみなされる。
【００１０】
ＴＣＰ接続は、対のＩＰアドレス（ＴＣＰ接続の各パケットのＩＰヘッダにおけるフィールド）および対のＴＣＰポート（各々のＴＣＰパケットのＴＣＰヘッダにおけるフィールド）によって規定される。ＴＣＰポートは、どの、より高次のプロトコルまたはプロセスが、ＴＣＰ接続のサービスを用いているかを規定する。ＴＣＰポートは、ハードウェアのポート（ハードウェアデバイスとネットワークとの間の接続）と混同されるべきではない。各ＴＣＰパケットのヘッダは、ＴＣＰパケット内の第１のデータバイトを識別するシーケンス番号と、受信されるものと予期された次のデータバイトを識別する肯定応答（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）番号とを含む。シーケンス番号および肯定応答番号は、簡単に言えば、ＴＣＰ接続を介して個々に送信および受信されたデータバイトの数の総数である。ＴＣＰ接続を介して通信する２つのデバイスは、送信された最も高いシーケンス番号および受信された最も高い肯定応答番号を示すデータを維持する。この情報は、タイミング良く肯定応答されていないパケットを再送信するために用いられることができる。
【００１１】
パケット交換ネットワーク、またはパケット交換通信ネットワーク内に含まれるデバイスを検査するために、多数のパケットを含む検査トラフィックが生成され、１つ以上のポートにおいてネットワークに送信され、かつ異なるポートにて受信されてもよい。検査トラフィックにおける各パケットは、特定の宛先（ｄｅｓｔｉｎａｔｉｏｎ）ポートにて受信が意図されたユニキャストパケットであってもよく、または、２つ以上の宛先ポートにおいて受信が意図されたマルチキャストパケットであってもよい。これに関連して、用語「ポート」とは、ネットワークと、そのネットワークを検査するために用いられる装置との間の通信接続のことをいう。用語「ポートユニット」とは、ポートにおいて、ネットワークに接続するネットワーク検査装置内にあるモジュールのことをいう。受信された検査トラフィックは、ネットワークの性能を測定するために分析されてよい。ネットワークに接続された各ポートユニットは、検査トラフィックの送り元（ｓｏｕｒｃｅ）および検査トラフィックのための宛先の両方であってもよい。各ポートユニットは、複数の論理送り元または宛先アドレスをエミュレートしてよい。ポートユニットおよびポートユニットをネットワークに接続する通信経路の数は、典型的には、検査セッションの期間の間固定される。ネットワークの内部構造は、例えば、通信経路またはハードウェアデバイスの不具合に起因して、検査セッションの間に変更がなされてもよい。
【００１２】
単一のポートユニットから発せられ、かつ特定の種類のパケットおよび特定のレートを有する一連のパケットを本明細書中において「ストリーム」と呼ぶ。送り元ポートユニットは、例えば、複数のパケットの種類、レート、または宛先を含むために、複数の発信ストリームを同時にかつ並行してサポートし得る。「同時に（ｓｉｍｕｌｔａｎｅｏｕｓｌｙ）」とは「正確に同一時間に」を意味する。「並行して（ｃｏｎｃｕｒｒｅｎｔｌｙ）」とは、「同一時間内で」を意味する。
【００１３】
ネットワークのトラフィックデータを報告する目的のために、検査トラフィックはパケットグループに分けられてよく、ここで「パケットグループ」とは、ネットワークトラフィック統計が報告される任意の複数のパケットである。各ストリームは、単一のパケットグループまたは複数のパケットグループからなっていてもよい。各パケットグループは典型的には単一のストリームに属していてもよい。
【００１４】
検査下のネットワークまたは検査システムにおける問題を診断するために、パケットは後の分析のためにキャプチャまたは保存されてよい。例えば、ＴＣＰパケットは保存されて、例えば過度の再送信または予期せぬ接続の切断等の問題を診断することができてよい。従来、受信されたパケット全体はメモリに保存されていた。しかしながらこのアプローチでは、相当な量のメモリを必要とする。さらには、特定のＴＣＰ接続に関連するパケットを検索するためには時間のかかる検索の動作が実行されなければならない。保存されるパケットの数がハードウェアまたはソフトウェアのフィルタによって低減されたとしても、受信された検査トラフィックを保存するのに数秒以上も必要とするメモリ量は禁止される場合がある。さらには、メモリバスのスループットおよびメモリのレイテンシは、パケットがキャプチャされることができるレートを制限し、それにより検査システムの性能を低減させる。
【図面の簡単な説明】
【００１５】
【図１】図１はネットワーク環境のブロック図である。
【図２】図２はポートユニットのブロック図である。
【図３】図３はポートＣＰＵのブロック図である。
【図４】図４はキャプチャバッファのグラフィック図である。
【図５】図５はキャプチャバッファのグラフィック図である。
【図６】図６はＴＣＰメタデータをキャプチャリングするためのプロセスのフローチャートである。
【発明を実施するための形態】
【００１６】
本記載全体を通じて、ブロック図に表される要素は、３桁の参照番号が割り当てられ、最上位桁は図面の番号であり、下位２つの桁は要素に特定されるものである。ブロック図に関連して記載されない要素は、同じ下位の桁を有する参照番号を有する前述された要素として同じ特徴および機能を有するものとみなされてよい。
【００１７】
ブロック図において、矢印で終端している線は、信号というよりはデータパスを示し得る。各データパスはビット幅において多数ビットであってよい。例えば、各データパスは、４、８、１６、６４、２５６、あるいはそれ以上の並列接続からなっていてもよい。
【００１８】
（装置の記載）
図１はネットワーク環境のブロック図を示す。ネットワーク環境は、ネットワーク検査装置１００、ネットワーク１９０、および複数のネットワークデバイス１９２を備えてよい。
【００１９】
ネットワーク検査装置１００は、ネットワーク検査デバイス、パフォーマンスアナライザ、適合性確認システム、ネットワークアナライザ、またはネットワーク管理システムであってよい。ネットワーク検査装置１００は、１つ以上のネットワークカード１０６、およびシャーシ１０２内に含まれるかまたは包囲されたバックプレーン１０４を備えてよい。シャーシ１０２は、ネットワーク検査装置を含むのに適した固定型または可搬型のシャーシ、キャビネット、または筐体であってよい。ネットワーク検査装置１００は図１に示すように一体化されたユニットであってよい。あるいは、ネットワーク検査装置１００は、トラフィックの生成および／または分析を提供するように協動する複数の別個のユニットを備えてよい。ネットワーク検査装置１００およびネットワークカード１０６は、例えば様々なイーサネット（登録商標）およびファイバーチャネル標準等の１つ以上の周知の規格またはプロトコルをサポートしてよく、かつ専用のプロトコルもサポートしてよい。
【００２０】
ネットワークカード１０６は、１つ以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理デバイス（ＰＬＤ）、プログラマブル可能論理アレイ（ＰＬＡ）、プロセッサおよび他の種類のデバイスを含んでもよい。さらに、ネットワークカード１０６はソフトウェアおよび／またはファームウェアを含んでもよい。用語、ネットワークカードは、ラインカード、テストカード、分析カード、ネットワークラインカード、ロードモジュール、インターフェースカード、ネットワークインターフェースカード、データインターフェースカード、パケットエンジンカード、サービスカード、スマートカード、スイッチカード、リレーアクセスカード等を含む。用語、ネットワークカードはまた、複数のプリント回路基板を含み得るモジュール、ユニット、およびアセンブリを含む。各ネットワークカード１０６は１つ以上のポートユニット１１０を含み得る。各ポートユニット１１０は、１つ以上のポートを介してネットワーク１９０に接続し得る。各ポートユニット１１０は、通信媒体１９５を介してネットワーク１９０に接続されてよく、この通信媒体１９５は、ワイヤ、光ファイバ、無線リンク、または他の通信媒体であってよい。各ネットワークカード１０６は、単一の通信プロトコルをサポートしてよく、複数の関連のプロトコルをサポートしてよく、または、複数の関連のないプロトコルをサポートしてもよい。ネットワークカード１０６は、ネットワーク検査装置１００内に恒久的に設置されていてもよく、または着脱自在であってもよい。
【００２１】
バックプレーン１０４は、ネットワークカード１０６のために、バスまたは通信媒体として機能してよい。バックプレーン１０４はまた、電極をネットワークカード１０６に提供し得る。
【００２２】
ネットワークデバイス１９２は、ネットワーク１９０を介しての通信を可能にする任意のデバイスであってよい。ネットワークデバイス１９２は、ワークステーション、パーソナル・コンピュータ、サーバ、ポータブル・コンピュータ、携帯情報端末（ＰＤＡ）、コンピューティング・タブレット、セル式電話／携帯電話、イーメール用装置等のコンピューティング・デバイス、プリンタ、スキャナ、ファクシミリ装置等の周辺機器、ネットワーク接続ストレージ（ＮＡＳ）およびストレージ・エリア・ネットワーク（ＳＡＮ）のデバイス等のディスクドライブを含むネットワーク対応のストレージデバイス、ルータ、リレー、ハブ、スイッチ、ブリッジ、およびマルチプレクサ等のネットワーキング・デバイスであってよい。さらに、ネットワークデバイス１９２は、ネットワークを通じて通信することができる家庭電化器具、アラームシステムおよび他の任意のデバイスまたはシステムを含んでもよい。
【００２３】
ネットワーク１９０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ストレージエリアネットワーク（ＳＡＮ）、有線、無線、またはこれらの組み合わせであってもよく、インターネットを含んでもよく、またはインターネットであってもよい。ネットワーク１９０上の通信は、情報のフレーム、セル、データグラム、パケットまたは他の単位を含む様々な形態をとってもよく、本明細書においては、それらの全てをパケットと称する。ネットワーク検査装置１００およびネットワークデバイス１９２は、同時に相互に通信してもよく、ネットワーク検査装置１００と所与のネットワークデバイス１９５との間には、複数の論理的通信経路があってもよい。ネットワークそのものは、移動するデータのための多数の物理的経路および論理的経路を提供する多数のノードから成ってもよい。
【００２４】
ここで図２を参照し、例示的なポートユニット２１０は、ポート中央演算装ユニット（ＣＰＵ）２２０と、トラフィックジェネレータ２６０と、トラフィックレシーバ２８０と、ポートユニット２１０を被検査ネットワーク２９０に接続するネットワークインターフェースユニット２７０とを備えてもよい。ポートユニット２１０は、ネットワークカード（例えばネットワークカード１０６）のすべてまたは一部であってもよい。
【００２５】
ポートプロセッサ２２０は、本明細書に記載される機能および特徴を提供するための、プロセッサ、プロセッサに接続されたメモリ、および様々な特殊化された装置、回路、ソフトウェアおよびインターフェースを含んでもよい。プロセス、機能および特徴は、全体的にあるいは部分的に、プロセッサ上で動作するソフトウェアにおいて実現されてもよく、ファームウェア、アプリケーションプログラム、アプレット（例えばＪａｖａ（登録商標）アプレット）、ブラウザプラグイン、ＣＯＭオブジェクト、ダイナミックリンクライブラリ（ＤＬＬ）、スクリプト、１つ以上のサブルーチン、またはオペレーティングシステムのコンポーネントまたはサービスという形をとってもよい。ハードウェアおよびソフトウェアおよびそれらの機能は、一部の機能がプロセッサによって実行され、他の機能が他の装置によって実行されるように、分散型であってもよい。
【００２６】
ポートプロセッサ２２０は、検査アドミニストレータ２０５と通信してもよい。検査アドミニストレータ２０５は、ネットワーク検査装置１００の内部に収容されるコンピューティングデバイスまたは外部のコンピューティングデバイスであってもよい。検査アドミニストレータ２０５は、ポートユニットが試験下のネットワーク２９０の検査に関与するために必要とされる命令およびデータを、ポートＣＰＵ２２０に提供してもよい。検査アドミニストレータ２０５から受信される命令およびデータは、例えば、ポートユニット２１０によって生成されるパケットストリームの定義、およびポートユニット２１０によって蓄積および報告され得るパフォーマンス統計の定義を含んでもよい。
【００２７】
ポートＣＰＵ２２０は、トラフィックジェネレータ２６０にストリーム形成データ２１２を提供して、複数のストリームを形成させる。ストリーム形成データ２１２は、例えば、パケットのタイプ、送信の周波数、パケット内部の固定内容フィールドおよび可変内容フィールドの定義、および各パケットストリームのための他の情報を含んでもよい。トラフィックジェネレータ２６０は、次いで、ストリーム形成データ２１２に従って複数のストリームを生成してよい。複数のストリームは、発信検査トラフィック２６５を形成するためにインターリーブされてよい。各ストリームは一連のパケットを含んでよい。各ストリーム内のパケットは同様の一般的なタイプであってよいが、長さおよびコンテンツが異なっていてもよい。
【００２８】
ネットワークインターフェースユニット２７０は、トラフィックジェネレータ２６０からの発信検査トラフィック２６５を、ワイヤ、光ファイバ、無線リンク、または他の通信リンクであり得るリンク２９５を介して、被検査ネットワーク２９０へと検査トラフィックを送信するように要求される、電気的、光学的、または無線による信号フォーマットに変換してよく同様に、ネットワークインターフェースユニット２７０は、ネットワークからリンク２９５を介して電気的、光学的、または無線による信号を受信してよく、かつ、トラフィックレシーバ２８０に対して利用可能なフォーマットに、着信する検査トラフィック２７５に受信される信号を変換してよい。
【００２９】
トラフィックレシーバ２８０は、ネットワークインターフェースユニット２７０から着信検査トラフィック２７５を受信してよい。トラフィックレシーバ２８０は、各受信パケットが特定のフローのメンバーであるかを決定し得、また、ポートＣＰＵ２２０から提供された検査命令２１４に従って各フローに関する検査統計を蓄積し得る。蓄積された検査統計は、例えば、受信パケットの合計数、順序通りでなく受信されたパケットの数、エラーを有する受信パケットの数、最大、平均および最小の伝搬遅延、および各フローの他の統計を含んでもよい。トラフィックレシーバ２８０はまた、検査命令２１４に含まれる取得基準に従って、選択されたパケットを取得および格納してもよい。トラフィックレシーバ２８０は、検査セッションの最中または後におけるさらなる分析のために、検査統計および／または取得パケット２８４を、検査命令２１４に従って、ポートＣＰＵ２２０に提供してもよい。
【００３０】
発信検査トラフィック２６５および着信検査トラフィック２７５は、主にステートレスであってもよい。すなわち、発信検査トラフィック２６５の大部分は、応答を予期することなくトラフィックジェネレータ２６０によって生成されてもよく、着信検査トラフィック２７５は、応答を意図することなくトラフィックレシーバ２８０によって受信されてもよい。ステートレスのトラフィックの送受信は、被検査ネットワーク２９０のレイヤ２およびレイヤ３の試験を行うのに十分であり得る。しかしながら、サーバまたはサーバロードバランサ等のネットワークデバイスのレイヤ４（またはそれよりも高いレイヤ）のパフォーマンスを検査するために、多数のＴＣＰ接続が、検査セッションの最中において、ポートユニット２１０と被検査ネットワーク２９０との間に必要とされる場合がある。
【００３１】
ＴＣＰ接続を確立および使用するために、ポートＣＰＵ２２０は適切なＴＣＰパケットを準備してよく、かつＴＣＰパケット２１６をトラフィックジェネレータ２６０に提供してもよい。トラフィックジェネレータ２６０はＴＣＰパケットを発信検査トラフィック２６５に挿入し得る。トラフィックレシーバ２８０は、受信されたステートレストラフィックから受信されたＴＣＰパケットを分離し、かつ処理のためにその受信されたＴＣＰパケット２８２をポートＣＰＵ２２０に送信し得る。
【００３２】
図３をここで参照すると、ポートＣＰＵ３２０はメモリ３３０に接続されたプロセッサ３２２を含んでよい。メモリ３３０はランダムアクセスメモリ、あるいはランダムアクセスメモリと他のメモリ、例えば読み出し専用メモリやフラッシュメモリなどとの組み合わせを含んでよい。メモリ３３０はプロセッサ３２２によって実行するためのデータおよびプログラム命令の両方を保存してよい。プロセッサ３２２およびメモリ３３０はトラフィックレシーバ３８０およびトラフィックジェネレータ３６０に接続されてもよく、これらはまとめてネットワークインターフェースユニット（ＮＩＵ）３７０を形成してよい。
【００３３】
メモリ３３０は受信パケットバッファ３５６を含んでよい。受信されたパケットバッファ３５６は、少なくとも、最も長いと想定される受信パケットを保存する容量を有してよい。受信パケットバッファ３５６は、複数のパケットを保存する容量を有してよい。トラフィックレシーバ３８０は、例えばダイレクトメモリアクセスを用いて１つ以上の受信パケットを受信パケットバッファ３５６に書き込んでよい。各受信パケットが保存された後、トラフィックレシーバ３８０は、受信パケットが受信パケットバッファ３５６において待機していることを示す信号３８４（例えば、割り込み、フラグ、または他の信号等）をプロセッサ３２２に送ってよい。
【００３４】
メモリ３３０は送信パケットバッファ３５８を含んでよい。送信パケットバッファ３５８は、少なくとも、最も長い、送信されると想定されるパケットを保存する容量を有してよい。送信パケットバッファ３５８は複数のパケットを保存する容量を有してよい。プロセッサ３２２は、送信される１つ以上のパケットを、送信パケットバッファ３５８に書き込んでよい。送信される各パケットが保存された後、プロセッサ３２２は、送信されるパケットが送信パケットバッファ３５８において待機していることを示す信号（例えば、割り込み、フラグ、または別の信号）を、トラフィックジェネレータ３６０に送信してよい。トラフィックジェネレータ３６０は、次いで、例えばダイレクトメモリアクセスによって、送信されるパケットを送信パケットバッファ３５８から抽出してよい。
【００３５】
メモリ３３０に保存されるプログラムは、プロセッサ３２２が、試験下のネットワーク（図示せず）を用いて、ＴＣＰ接続を開き、操作し、そして閉じることをさせる、ＴＣＰレイヤプログラム３３２を含んでよい。ＴＣＰレイヤプログラム３３２は、ポートＣＰＵ３２０上で動作するＴＣＰ／ＩＰプロトコルスタック内のレイヤであってよい。ポートＣＰＵ３２０は、試験下のネットワークを用いた多数の同一時間内でのＴＣＰ接続を維持するように構成されてよく、かつネットワーク試験セッションの間、１００万以上ものＴＣＰ接続を開いてもよい。各ＴＣＰ接続について、プロセッサ３２２は、送信パケットバッファ３５８およびトラフィックジェネレータ３６０を介してパケットを送信してよく、かつ、トラフィックレシーバ３８０および受信パケットバッファ３５６を介してパケットを受信してよい。各ＴＣＰ接続について、プロセッサ３２２は、メモリ３３０内のＴＣＰ接続メモリ３３４にＴＣＰ接続データを保存してもよい。保存されたＴＣＰ接続データは、例えば、接続状態、送信された最も高いシーケンス番号、および肯定応答された最も高いシーケンス番号を含んでよい。
【００３６】
ＴＣＰ接続は、３２ビットを想定した（ＩＰ．ｖ４）ＩＰソースアドレス、３２ビット宛先アドレス、１６ビットＴＣＰソースポート、および１６ビットＴＣＰ宛先ポートによって規定される。ＴＣＰ接続を介して送信または受信された全てのパケットは、（ＩＰ．ｖ４）を想定する同じ２つの３２ビットのＩＰアドレス、およびパケットのヘッダ内にある同じ２つの１６ビットのＴＣＰポート番号を含む。このように、ＴＣＰ接続は９６ビットの番号によって規定され、これは２つの３２ビットのＩＰアドレスおよび２つの１６ビットのＴＣＰポート番号を連結させることによって得られる（結果、トータルで、２９６、すなわち８×１０２８の一意のＴＣＰ接続となる）。しかしながら、ハードウェアおよびメモリ上の制限により、可能なＴＣＰ接続のわずかな部分のみしか同時に存在し得ない。
【００３７】
各々の開いたＴＣＰ接続は、９６ビットよりも実質的に短い長さを有する接続識別子に関連付けられていてもよい。通常、接続識別子は、各ＴＣＰ接続を規定する９６ビット数のハッシュであってよく、すなわち、接続識別子は、関連のＴＣＰ接続を規定する９６ビット数にハッシュ関数を適用することによって生成されてよい。ハッシュ関数は、より大きいデータをより小さいデータへと変換する任意のアルゴリズムまたは数学関数であり、通常は、アレイに対するインデックスとしての役割を果たし得る単一の整数である。ハッシュ関数によってもどされた値はハッシュ値と呼ばれる。例えば、ポートユニットは、２１８、すなわち２６２，１４４までの同時のＴＣＰ接続に対応するように設計されてよい。この場合、ハッシュ関数は、各ＴＣＰ接続を規定する９６ビットの数を１８ビットのハッシュ値、またはＴＣＰ接続を一意に識別する接続識別子に変換するために用いられてよい。ＴＣＰ接続識別子は、ＴＣＰ接続メモリ３３４をアドレスするために、インデックスまたはポインタとして用いられてよい。
【００３８】
メモリ３３０に保存されたプログラムはまた、各受信されたＴＣＰパケット、および送信される各ＴＣＰパケットから、選択された部分またはメタデータをプロセッサ３２２によりキャプチャさせるキャプチャルーチン３３６をも含んでよい。メタデータは各ＴＣＰパケットから抽出されてよく、かつ、メモリ３３０内のキャプチャメモリ３４０に保存されてもよい。メタデータは、受信ＴＣＰパケットが受信パケットバッファ３５６から取り除かれると、その受信パケットがＴＣＰレイヤプログラム３３２によって処理される前に、受信ＴＣＰパケットから抽出されてよい。メタデータは、ＴＣＰパケットがＴＣＰ状態機械プログラムによって生成された後に、送信されるＴＣＰパケットが送信パケットバッファ３５８に保存される前に、ＴＣＰパケットから抽出されてよい。
【００３９】
キャプチャメモリ３４０は、複数のキャプチャバッファに区分されてよく、その各々は単一のＴＣＰ接続に関連した情報を保存するために用いられる。各々のキャプチャバッファは、対応する特定のＴＣＰ接続に専用であってよく、その結果、複数のキャプチャバッファは、ＴＣＰ接続識別子の可能な値の数に等しい。キャプチャバッファは動的に割り振られてよく、その結果、利用可能なバッファは、ＴＣＰ接続が開かれた場合に割り振られる。ＴＣＰ接続が閉じた場合、割り振られたバッファは開放されてよく、その後、異なるＴＣＰ接続に割り振られてよい。キャプチャバッファが動的に割り振られた場合、その割り振られたキャプチャバッファへのポインタは、各々の開いたＴＣＰ接続について、ＴＣＰ接続メモリ３３４に保存されたＴＣＰ接続データに含まれてよい。
【００４０】
ここで図４を参照すると、キャプチャメモリ３４０としての使用に適切であり得るキャプチャメモリ４４０は、複数のｍのリボルビング・バッファ（ｒｅｖｏｌｖｉｎｇ  ｂｕｆｆｅｒ）を含んでよく、このリボルビング・バッファ４４１−１およびリボルビング・バッファ４４１−ｍは識別される（ｉｄｅｎｔｉｆｉｅｄ）。リボルビング・バッファは、有限数のエントリのための容量を有するメモリであって、リボルビング・バッファが一度いっぱいとなると、各々の新たなエントリは現在保存された最も古いエントリに上書きされる。各リボルビング・バッファは、複数の開いたＴＣＰ接続のうちの対応する１つに一意に関連されてよい。本特許出願において、用語「一意に関連付けられる」とは、２つのグループの項目の間における１対１の対応関係が存在することを意味する。これに関連して、リボルビング・バッファと開いたＴＣＰ接続との間には１対１の対応関係が存在する。リボルビング・バッファは接続が開かれた場合に、特定のＴＣＰ接続に割り当てられてよい。割り当てられたリボルビング・バッファは、特定のＴＣＰ接続が閉じた場合に開放されてよい。開放されたリボルビング・バッファは、その後、別のＴＣＰ接続に割り当てられてよい。各ＴＣＰ接続について、保存された接続データは、ＴＣＰ接続に割り当てられたリボルビング・バッファ４４１−１から４４４−ｎを識別するバッファポインタ４４３を含んでよい。
【００４１】
図４において、各リボルビング・バッファ４４１−１から４４１−ｍは、ｎ個のパケット（ここでｎは１よりも大きい整数である）について、キャプチャされたメタデータを保存する容量を有する。ｎは有利にも、２のべき乗であってよい。保存されたメタデータを、ＴＣＰ接続の問題を診断するために用いることができるためには、ｎは、１６、３２、またはそれ以上に等しくてよい。複数の書き込みポインタ４４２−１から４４２−ｍは、複数のリボルビング・バッファ４４１−１から４４１−ｍに一意に関連付けられてよい。書き込みポインタ４４２−１から４４２−ｍの各々は、キャプチャされたメタデータの次のブロックが書き込まれるべきである対応のリボルビング・バッファ４４１−１から４４１−ｍにおける位置へのポインタを含んでよい。本特許出願において、ポインタは、メモリアドレスである値か、または、メモリアドレスに変換されることができる値である。ポインタをメモリアドレスに変換することは、所定の倍数でポインタ値を乗算すること、および／または所定のオフセットをポインタ値に加えることを含んでよい。
【００４２】
特定のパケットについてのメタデータが準備され、キャプチャメモリ４４０に書き込まれると、そのパケットについてのバッファポインタ４４３はＴＣＰレイヤプログラム３３２から得られてよい。送信されるパケットのメタデータがキャプチャメモリ４４０に書き込まれた場合、バッファポインタ４４３はそのパケットに沿ってＴＣＰレイヤプログラム３３２によって提供されてよい。ＴＣＰパケットが受信された場合、接続識別子が決定されてよい。接続識別子は、例えば、以前に記載されたように計算されたハッシュ値であってよい。接続識別子は、ＴＣＰ接続メモリ３３４からＴＣＰ接続データを検索するために、ＴＣＰレイヤプログラム３３２によって用いられてよい。ＴＣＰ接続データはバッファポインタ４４３を含んでよく、これは、今度は、適切な書き込みポインタ４４２−１から４４２−ｍにポイントする。適切な書き込みポインタは次いで、対応のリボルビング・バッファ４４１−１から４４１−ｍ内の適切な位置にメタデータを保存するために用いられてよい。メタデータが保存された後、書き込みポインタ値は、同じＴＣＰ接続のための次のメタデータが保存されるべき位置にポイントするように進められてよい。
【００４３】
メタデータが、リボルビング・バッファ４４１−１から４４１−ｍ内の全てｍの位置に保存された後、関連の書き込みポインタ４４２−１から４４２−ｍは、リボルビング・バッファ内の第１の位置にポイントするように設定されてよい。その後、書き込みポインタ４４２−１から４４２−ｍは、最も古いメタデータが保存された位置に周期的にポイントするように進められてよく、その結果、常に、リボルビング・バッファ４４１−１から４４１−ｍのコンテンツは、対応するＴＣＰ接続に亘って送信または受信される最も最近のパケットについてのメタデータであってよい。
【００４４】
各パケットについて保存されたメタデータは、各パケットのＴＣＰヘッダから抽出されたシーケンス番号４４５および肯定応答番号４４６を含んでよい。各パケットについて保存されたメタデータは、ＴＣＰヘッダから抽出された、ＴＣＰフラグ４４７、ウィンドウサイズ４４８、およびパケット長４４９のうちの１つ以上を含んでよい。各パケットについて保存されたメタデータはまた、パケットの到達後、および／または、ＴＣＰオプションまたはフィールド等の他の情報４５１が各パケットのＩＰヘッダから抽出された後に記録されたタイムスタンプ４５０を含んでよい。
【００４５】
各受信または送信ＴＣＰパケットから抽出されたメタデータのみを保存することは、パケット全体を保存する従来のアプローチと比較して、データキャプチャに対して必要とされるトータルのメモリ量を著しく低減し得る。例えば、３２以下のバイトのメタデータは、各ＴＣＰパケットに対して保存されてよい。
【００４６】
ここで図５を参照すると、キャプチャメモリ３４０としての使用に適し得るキャプチャメモリ５４０は、キャプチャメタデータｐを介したキャプチャメタデータ１として識別される、メタデータレコードの単一の連続したリストを保存してよい。図５に示すように、メタデータが連続したリストに保存される場合、単一の書き込みポインタ５４３は、次のメタデータ（キャプチャメタデータｐ＋１）が書き込みされるキャプチャメモリ５４０内の位置にポイントしてよい。図４のキャプチャメモリ４４０とは異なり、特定のＴＣＰ接続に関連するメタデータは、キャプチャメモリ５４０の所定の部分には保存されない。このように、特定のＴＣＰ接続のために、メタデータを位置付けることができるためには、各パケットについて保存されるメタデータが、関連のＴＣＰ接続を識別するために、接続識別子５４４等の情報を含んでよい。各パケットについてのメタデータはまた、シーケンス番号５４５、肯定応答番号５４６、ＴＣＰフラグ５４７、ウィンドウサイズ５４８、パケット長４４９、タイムスタンプ５５０、および他の情報５５１の一部または全てを含んでよい。
【００４７】
（処理の記載）
ここで図６を参照すると、ＴＣＰ接続を管理するためのプロセス６００が、ポートＣＰＵ２２０等のコンピューティングデバイスによって実行されてよく、ＴＣＰレイヤプログラム３３２およびキャプチャルーチン３３６を含む保存されたプログラム命令を実行する。ＴＣＰレイヤプログラム３３２は、通信プロトコルを実施するＴＣＰ／ＩＰプロトコルスタック内のレイヤであってよい。プロセス６００は、ＴＣＰ接続をリモートデバイスに対して確立するためのリクエストが、例えば、より高次のプロセス、例えばコンピューティングデバイス上で動作するアプリケーションプログラム等から受信された場合、６０５で始まってよい。プロセス６００は、ＴＣＰ接続が閉じた後、６９０において終了してよい。
【００４８】
プロセス６００は、本質的に周期的なものであり、６１０〜６５５までの動作は、ＴＣＰ接続を介したリモートデバイスを用いて複数のパケットを交換するために繰り返し実行されてよい。プロセス６００の複数のインスタンスは、多数の同一時間内のＴＣＰ接続を確立および維持するために、同一時間内に実行されてよい。
【００４９】
ＴＣＰ接続を確立するためのリクエストが６０５において受信された後、ＴＣＰプロトコルのプロセス６１０は、ＴＣＰ接続を確立するために、リモートデバイスを用いて一連のＴＣＰパケットを交換してよい。ＴＣＰプロトコルプロセス６１０はＴＣＰ／ＩＰプロトコルスタックのレイヤ４として動作してよい。ＴＣＰプロトコルプロセス６１０の他の機能としては、送信される情報をリモートデバイスに運ぶ発信ＴＣＰパケット６２０を生成すること、ＴＣＰ接続の信頼性を確保するために必要に応じてＴＣＰパケットを再送信すること、ＴＣＰ接続メモリ６１５において、ＴＣＰ接続の状態を示すＴＣＰ接続データを維持すること、ＴＣＰ接続を介してリモートデバイスから受信された着信ＴＣＰパケット６６０を処理すること、およびＴＣＰ接続を閉じるために、リモートデバイスを用いて一連のパケットを交換することを含んでよい。ＴＣＰプロトコルプロセス６１０はまた、所定の時間期間内にリモートデバイスから応答が受信されなかった場合、ＴＣＰ接続を閉じてよい。
【００５０】
６２５において、メタデータは、ＴＣＰプロトコルプロセス６１０によって生成された発信ＴＣＰパケット６２０のヘッダから抽出されてよい。各発信ＴＣＰパケットから抽出されたメタデータは、送り元および宛先ＩＰアドレス、送り元および宛先ＴＣＰポート、シーケンス番号、および肯定応答番号、ウィンドウ長、および他のデータを含んでよい。発信パケットは次いで、６３０においてリモートデバイスに送信されてよい。６３０において発信パケットを送信することは、ＴＣＰ／ＩＰプロトコルスタックのレイヤ３およびレイヤ２においてパケットを処理し、その後、トラフィックジェネレータ２６０およびネットワークインターフェースユニット２７０等のハードウェア要素によってネットワークを介して送信することを含んでよい。
【００５１】
６３５において、６２５において各パケットから抽出されたメタデータの少なくとも一部は、例えばキャプチャメモリ３４０等、メモリにおいて保存されてよい。図４に示すように、キャプチャメモリが複数のリボルビング・バッファとして構成される場合、バッファポインタ６４０はインデックスとして用いられ、適切なバッファにおいて、抽出されたメタデータを保存してよい。バッファポインタ６４０は、ＴＣＰプロトコルプロセス６１０によって提供されてよく、かつ、ＴＣＰ接続データの一部としてＴＣＰ接続メモリ６１５に保存されてよい。図５に示すように、キャプチャメモリは単一のリストとして構成される場合、ＴＣＰプロトコルプロセスは、抽出されるメタデータに沿って、キャプチャメモリにおいて保存されてよい接続ＩＤ（図示せず）を提供してよい。
【００５２】
６４５において、リモートデバイスからのパケットは、ネットワークインターフェースユニット２７０およびトラフィックレシーバ２８０等のハードウェア要素によって受信されてよく、かつ、着信ＴＣＰパケット６６０を提供するために、ＴＣＰ／ＩＰスタックのレイヤ２およびレイヤ３によって処理されてよい。前述したように、メタデータは、６５０において、着信ＴＣＰパケットのヘッダから抽出されてよい。接続識別子は、６５５において、各着信パケットについて決定されてよい。例えば、接続識別子は前述したようにハッシュ値であってよい。接続識別子は、対応のＴＣＰ接続のための接続データを検索するために、ＴＣＰプロトコルプロセス６１０によって用いられてよい。接続データは、バッファポインタ６４０を含んでよい。抽出されたメタデータは、前述したようにバッファポインタ６４０を用いて、６３５において、保存されてよい。
【００５３】
一部の状況においては、ＴＣＰプロトコルプロセス６１０は、さらなる分析を必要とする異常またはイベント６６５が生じていることを決定してよい。例えば、イベントとは、所定の期間内に応答するために、リモートデバイスの不具合に起因したＴＣＰ接続の早期の切断であってもよい。イベントとはまた、再送信の数が所定の閾値を超過した場合、または、所定の時間期間内の再送信が所定の閾値を超過する場合等、ＴＣＰ接続のための再送信の超過数であってもよい。イベントとはまた、１つ以上のＴＣＰ接続のためのメタデータをアップロードするための、より高次のプロセスからのリクエストであってもよい。
【００５４】
イベント６６５に応答して、１つ以上の選択されたＴＣＰ接続のためのメタデータは、６７０において、キャプチャメモリから検索されてもよい。６７０において検索されたメタデータは、６７５において、さらなる分析のために、より高次のプロセス、またはテストアドミニストレータ２０５等の別のコンピューティングデバイスにアップロードされてもよい。図４に示すように、キャプチャメモリが複数のリボルビング・バッファとして構成される場合、選択されたＴＣＰ接続に対応するリボルビング・バッファのコンテンツは、６７０において検索されてよく、かつ６７５においてアップロードされてよい。図５に示すように、６７０において、キャプチャメモリが単一のリストとして構成される場合、そのリストは、選択されたＴＣＰ接続に対応する接続識別子を含んだ記録のために検索されてよい。選択されたＴＣＰ接続に対応する接続識別子を含む記録は６７５においてアップロードされてよい。
【００５５】
（終わりに）
本記載全体を通して、示された実施形態および例は、開示された、または特許請求の範囲において請求された装置および手順についての限定ではなく、典型例として想定されるべきものである。本明細書において提示された例の多くは、方法の作用またはシステムの要素の特定の組合せに関連するものであるけれども、それらの作用およびそれらの要素は、他の方法において、組み合わされてよく、同じ課題を達成するものとして理解されるべきである。フローチャートに関して、追加の工程および工程の削減もまた考慮されてよく、図示した工程は、本明細書において記載された方法を達成するために組み合わされてもよく、またはさらに改良されてもよい。１つの実施形態のみに関連して記載された作用、要素、および特徴は、他の実施形態における同様の役割から排除されることは意図されていない。
【００５６】
本明細書において用いられるように、「複数」とは、２つ以上を意味する。本明細書において用いられるように、「一連の」物品とは、１つ以上のそのような物品を含み得る。本明細書において用いられるように、明細書の記載または特許請求の範囲の請求項においては、用語「含む、備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む、備える（ｉｎｃｌｕｄｉｎｇ）」「運ぶ、有する、持つ（ｃａｒｒｙｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｃｏｎｔａｉｎｉｎｇ）」、「含む、関する、関連する（ｉｎｖｏｌｖｉｎｇ）」等は、オープンエンド型、すなわち、含むがそれらに限定されないということを意味することは理解されるべきである。「〜からなる」および「〜から実質的になる」といった移行句の各々のみが、特許請求の範囲の請求項に関しては、クローズ型、または半クローズ型の移行句である。請求項の要素を変更するために、特許請求の範囲の請求項における「第１」、「第２」、「第３」等の序数の用語の使用は、それ自体では、任意の優先順位、優位性、またはある請求項の要素が他のものより先であったり、または、ある方法の作用が行われる時間的順序等を含意せず、請求項の要素を区別するために、特定の名前を有するある請求項の要素から、同じ名前を有する別の要素を区別するためのラベルとして（順序を示す用語の使用を別にして）単に用いられる。本明細書において用いられるように、「および／または」は、リストアップされた物品が二者択一であることを意味するが、そうした二者択一もまた、そうしてリストアップされた物品の任意の組合せを含むものである。
【図１】
0005932409.tif 000002
【図２】
0005932409.tif 000003
【図３】
0005932409.tif 000004
【図４】
0005932409.tif 000005
【図５】
0005932409.tif 000006
【図６】
0005932409.tif 000007