(57)【要約】【課題】ネットワークトラフィック及びネットワーク量のより現実的なエミュレーションを行うことができるスケーラブルで且つ手ごろな価格のネットワーク試験装置を提供する。【解決手段】複数のセグメントを含む受信データストリーム（２２０）を連続して受け取り、該受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラ（２００）と、該受信セグメントのヘッダフィールド（２０１）を受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサ（２０２）と、該セグメントプロセッサ（２０２）へセグメントを送信する要求（２１１）を送信するレートジェネレータ（２０６）と、該出力ヘッダフィールドに応答して、送信データストリーム（２２１）を生成するセグメントジェネレータ（２０７）とを備えた装置。【選択図】  図２
2008131640.tif 000002
【特許請求の範囲】
【請求項１】
複数のセグメントを含む受信データストリームを連続して受け取るストリームプロセッサコントローラであって、前記受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラと、
前記受信セグメントのヘッダフィールドを受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサと、
前記セグメントプロセッサへセグメントを送信する要求を送信するレートジェネレータと、
前記出力ヘッダフィールドに応答して、送信データストリームを生成するセグメントジェネレータと
を備え、前記セグメントプロセッサは、前記要求を受け取って、出力セグメントヘッダフィールド３０９を生成することにより前記要求に応答し、前記セグメントプロセッサは、前記受信セグメントのそれぞれ及び出力セグメントのそれぞれの状態を状態メモリに保持する装置。
【請求項２】
前記セグメントジェネレータは、複数の送信セグメントを準備して送り出し、それによって前記送信データストリームを形成し、前記送信セグメントのそれぞれは、前記出力ヘッダフィールドに基づいている、請求項１に記載の装置。
【請求項３】
前記セグメントプロセッサは、前記受信ヘッダフィールド及び前記送信ヘッダフィールドに含まれる情報に基づいて統計を収集する、請求項１に記載の装置。
【請求項４】
前記セグメントプロセッサは、フィールドプログラマブルゲートアレイである、請求項１に記載の装置。
【請求項５】
前記ストリームプロセッサコントローラは、前記セグメントプロセッサによって受け取られるＴＣＰセグメントとして識別された受信セグメントをフィルタリングする、請求項１に記載の装置。
【請求項６】
前記セグメントジェネレータは、前記出力ヘッダフィールドに基づいてＴＣＰセグメントを生成して送り出す、請求項５に記載の装置。
【請求項７】
複数のＴＣＰ接続のうちの現接続に対応する受信セグメント識別子を受信するようになっているフェッチブロックと、
前記複数の接続のそれぞれの現在状態に対応する状態データを保持するようになっている状態メモリであって、前記フェッチブロックは、前記受信セグメント識別子に基づいて現接続の状態データにアクセスするようになっている、状態メモリと、
前記現接続の前記現在状態及び受信セグメントヘッダフィールドに基づいて、前記現接続の次状態を決定するようになっている実行ブロックであって、前記現接続の前記次状態に関係するイベントを信号で伝えるようになっている、実行ブロックと、
前記イベントを累積するようになっている測定ブロックと
を備え、前記フェッチブロックは、前記現接続の前記次状態で前記状態メモリを更新するようになっている装置。
【請求項８】
前記実行ブロックは、前記イベントを複数のシングルビット表示により信号で伝え、前記測定ブロックは、前記シングルビットイベント表示のそれぞれを蓄積する複数のそれぞれのカウンタをさらに備える、請求項７に記載の装置。
【請求項９】
ＴＣＰ標準規格に従って複数の可能な次状態データを計算し、新しいセグメントが送信される時は前記実行ブロックへ表示を送信する復号ブロックをさらに備える、請求項７に記載の装置。
【請求項１０】
前記実行ブロックは、前記表示を受け取り、送信される次セグメントを決定し、出力セグメント情報を生成する、請求項９に記載の装置。
【請求項１１】
シーケンスメモリをさらに備え、前記フェッチブロックは、該シーケンスメモリにアクセスして前記実行ブロックにシーケンスコマンドを与える、請求項７に記載の装置。
【請求項１２】
前記実行ブロックは、前記シーケンスコマンドに応答して、前記現接続の前記次状態を決定する、請求項１１に記載の装置。
【請求項１３】
前記フェッチブロックは、送信セグメント識別子を受信するとともに、前記送信セグメント識別子に基づいて前記現接続の前記状態データにアクセスするようになっている、請求項７に記載の装置。
【請求項１４】
前記受信セグメント識別子及び前記送信セグメント識別子が同時に到着する場合に、前記フェッチブロックはさらに、該送信セグメント識別子の処理を延期するようになっている、請求項１３に記載の装置。
【請求項１５】
前に処理されたセグメント識別子が現セグメント識別子と一致している場合に、前記フェッチブロックは、前記状態メモリへのアクセスを抑制するようになっている、請求項７に記載の装置。
【請求項１６】
所定のオペレーションシーケンスで次のステップを前記実行ブロックに示すようになっているシーケンスメモリをさらに備える、請求項７に記載の装置。
【請求項１７】
出力セグメントペイロード識別子をセグメントジェネレータに示すようになっているシーケンスメモリをさらに備える、請求項７に記載の装置。
【請求項１８】
少なくとも１つのフローグループに共通であるＴＣＰパラメータを保持するようになっているパラメータメモリをさらに備え、該パラメータメモリは、前記状態データからグループ識別子によってアドレス指定可能であり、前記ＴＣＰパラメータは、前記復号ブロックに通知される、請求項９に記載の装置。
【請求項１９】
複数の接続のうちの１つに関係する受信セグメント識別子を含む受信セグメントヘッダフィールドを受け取ること、
前記識別された接続の現在状態に対応する、メモリにおける状態データにアクセスすること、
ＴＣＰ標準規格に従って、前記受信セグメントヘッダフィールドを処理すること、
前記受信セグメントヘッダフィールドに関係する前記接続を次状態に進めること、
前記接続の統計を累積すること、及び
前記接続の前記次状態に対応する状態データで前記メモリを更新すること
を含む方法。
【請求項２０】
複数の前記受信セグメントヘッダフィールドのそれぞれについて、前記受け取ること、前記アクセスすること、前記処理すること、前記進めること、前記累積すること、及び前記更新することを繰り返すことをさらに含む、請求項１９に記載の方法。
【請求項２１】
前記接続のうちの１つに関係する送信セグメント識別子を受け取ること、前記ＴＣＰ標準規格に従って前記送信セグメント識別子を処理すること、及び送信パケットヘッダ情報を生成することをさらに含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク試験装置に関する。
【背景技術】
【０００２】
ネットワーク機器供給業者及びネットワークサービス供給業者の現在の課題は、現実的なほど大規模のネットワーク及びネットワーク状態の下で製品を試験及び評価することである。
【０００３】
この課題に対する従来技術の手法には、ネットワーク状態をエミュレーションするアプリケーションを実行する複数のプロセッサから成るシステムが含まれている。不都合なことに、多数の加入者プロセッサをエミュレーションする単一のプロセッサは、ネットワーク上の複数のプロセッサの実際の性能及び振る舞いを決定性 (deterministic) の方法でエミュレーションするには十分でない。加えて、複数のプロセッサから成る大きな試験システムは高価であり、このような試験システムは、より大きなネットワークをエミュレーションするように拡大されると、法外な費用を要する。
【０００４】
別の従来技術の手法は、パケットブラスティング試験装置である。パケットブラスティング試験装置は、大量のネットワークトラフィックをエミュレーションすることができるが、ＴＣＰセグメント再送及びタイムアウトのようなイベントを含むネットワーク性能を現実的にエミュレーションすることができない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、ネットワークトラフィック及びネットワーク量のより現実的なエミュレーションを行うことができるスケーラブルで且つ手ごろな価格のネットワーク試験装置が必要とされている。
【課題を解決するための手段】
【０００６】
本発明による一実施態様である装置は、複数のセグメントを含む受信データストリーム（２２０）を連続して受け取るストリームプロセッサコントローラ（２００）であって、該受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラ（２００）と、該受信セグメントのヘッダフィールド（２０１）を受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサ（２０２）と、該セグメントプロセッサ（２０２）へセグメントを送信する要求（２１１）を送信するレートジェネレータ（２０６）と、該出力ヘッダフィールドに応答して、送信データストリーム（２２１）を生成するセグメントジェネレータ（２０７）とを備え、該セグメントプロセッサ（２０２）は、該要求を受け取って、出力セグメントヘッダフィールド３０９を生成することにより該要求に応答し、該セグメントプロセッサ（２０２）は、該受信セグメントのそれぞれ及び出力セグメントのそれぞれの状態を状態メモリ（２１２）に保持することを特徴とする。
【０００７】
本発明による別の実施態様である装置は、複数のＴＣＰ接続のうちの現接続に対応する受信セグメント識別子（３０１）を受信するようになっているフェッチブロック（３００）と、該複数の接続のそれぞれの現在状態に対応する状態データを保持するようになっている状態メモリ（２１２）であって、該フェッチブロックは、該受信セグメント識別子に基づいて現接続の状態データにアクセスするようになっている、状態メモリ（２１２）と、該現接続の該現在状態及び受信セグメントヘッダフィールド（２０１）に基づいて、該現接続の次状態を決定するようになっている実行ブロック（３１８）であって、該現接続の該次状態に関係するイベントを信号で伝えるようになっている、実行ブロック（３１８）と、該イベントを累積するようになっている測定ブロック（３２９）とを備え、該フェッチブロックは、該現接続の該次状態で該状態メモリを更新することを特徴とする。
【０００８】
本発明による更に別の実施態様である方法は、複数の接続のうちの１つに関係する受信セグメント識別子（３０１）を含む受信セグメントヘッダフィールドを受け取ること、  該識別された接続の現在状態に対応する、メモリ（２１２）における状態データにアクセスすること、ＴＣＰ標準規格に従って、該受信セグメントヘッダフィールド（２０１）を処理すること、該受信セグメントヘッダフィールド（２０１）に関係する該接続を次状態に進めること、該接続の統計を累積すること、及び該接続の該次状態に対応する状態データで該メモリを更新することを含むことを特徴とする。
【発明を実施するための最良の形態】
【０００９】
本教示は、添付図面と共に考慮される以下の詳細な説明から理解される。添付図面において、異なる図面において付された同様の参照符号は、同じ要素又は類似の要素を指す。
【００１０】
以下の詳細な説明では、限定ではなく説明の目的で、特定の詳細を開示する実施形態の例が、本教示による実施形態の理解を提供するために述べられる。しかしながら、本開示の利益を有する当業者には、本明細書で開示される特定の詳細から逸脱する本教示による他の実施形態も、添付の特許請求の範囲の範囲内に留まることが明らかであろう。その上、既知の装置及び方法の説明は、これらの実施形態の例の説明を分かりにくくしないように省略される場合がある。このような方法及び装置は、明らかに、本教示の範囲内にある。
【００１１】
本教示による試験装置の特定の一実施形態は、確認応答(acknowledge)されていないセグメントの再送及びタイムアウトを含む、１９８１年９月に公表されたコメント要求（ＲＦＣ）７９３に定義されているようなＤｏＤ標準伝送制御プロトコル（本明細書では「ＴＣＰ標準規格」）に従って、「ステートフル」な、すなわち、処理状態を把握できるネットワークトラフィックを生成して測定する。したがって、本教示によるシステムで行われる測定は、開放型システム間相互接続モデルのレイヤ３／４におけるコンテキスト内の接続の品質に関する測定を含む。特定の一実施形態では、試験装置は、ペイロードコンテンツにかかわらずＴＣＰセグメントを生成し、ＴＣＰセグメントを受信し、そして、ＴＣＰ標準規格により指示されるようなＴＣＰ標準再送セグメントに従ってＴＣＰセグメントを処理する。ＴＣＰ接続は、双方向であり、２つのエンドポイントから成り、ＴＣＰ標準規格を介した通信の伝達手段を確立する。特定の一実施形態では、ハードウェア回路構成、具体的には、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）がＴＣＰ標準規格を実装する。より多くの接続の試験及び測定を行ってより大きなネットワークをエミュレーションするために、試験装置は、単に状態メモリを追加するだけでスケーラブル、すなわち、拡張可能となっている。このスケーラビリティの利点は、試験装置のコストの増加が、システム全体と比較して相対的に小さいという特徴にある。
【００１２】
特に図面の図１を参照して、本教示による試験装置１００の一実施形態と、被試験デバイス（ここでは「ＤＵＴ１０２」）との間の接続が示されている。図１に開示される例では、ＤＵＴ１０２は、ＴＣＰセグメントを受け取って転送する非終端ＴＣＰネットワーキングデバイスである。本教示による試験装置の特定の一実施形態は、ネットワーキングデバイスとしてのＤＵＴの性能を測定することができる。非終端ＤＵＴには、ルータ、スイッチ、及びエッジアグレゲーションデバイス（edge aggregation devices）が含まれるが、これらに限定されるものではない。試験装置１００は、ＴＣＰトラフィックを生成し、ＤＵＴによって転送されるＴＣＰトラフィックを受信し、そして、ＤＵＴがＴＣＰ標準規格に従って、受信したＴＣＰトラフィックを適切に処理して転送するか否かに関してＤＵＴの性能を測定する。本教示の利益を有する当業者は、終端デバイスも同様に試験できることも十分理解する。終端デバイスの例には、ファイアウォール、サーバ、及びウェブプロキシデバイスが含まれるが、これらに限定されるものではない。
【００１３】
図１は、複数のプリント回路基板（ここでは「ＰＣＢ１０４」）を備える試験装置１００を示している。試験装置１００は、ＤＵＴ１０２のサイズ及び試験される所望の通信ポートの個数に応じて、ＰＣＢ１０４のうちの１つ又は複数を使用することができる。図示する特定の実施形態では、各プリント回路基板１０４は、４つのポート１０６を受け取ることができる。各ポート１０６は、全二重通信を提供し、クライアントポート、サーバポート、又はクライアント／サーバ結合ポートのいずれかとなるように構成することができる。サーバポートは、データセグメントのほとんどが試験装置から被試験デバイスへ流れるポートである。このポートは、双方向で流れる制御情報が存在するので全二重のままであるが、大量のデータが試験装置から被試験デバイスへ流れる。クライアントポートは、データ通信のほとんどが被試験デバイスから試験装置へ流れるポートである。クライアント／サーバポートは、ほぼ等しいボリュームのデータトラフィックが双方向で流れるポートである。特定の一実施態様では、試験装置１００ごとに少なくとも１つのサーバポート又はクライアント／サーバポートと、少なくとも１つのクライアントポート又はクライアント／サーバポートとが常に存在するが、残りの２つのポートは、ユーザの所望に応じてクライアント、サーバ、又はクライアント／サーバとして構成することができる。
【００１４】
特に図面の図２を参照して、クライアント／サーバＰＣＢ１０４の各ポート１０６をサポートするのに使用されるロジックの一実施形態のブロック図が示されている。図示したようなブロック図は、２個のＦＰＧＡによる１セットで実施されているが、単一のＦＰＧＡ、ＡＳＩＣ、又は現在知られているか後に開発される他の形の論理回路構成として実施することもできる。受信データストリーム２２０のセグメントは、ポート１０６を通じてストリームプロセッサコントローラ（ここでは「ＳＰＣ２００」）により受信される。ＳＰＣ２００は、パケットを受信し、受信ストリーム２２０からＴＣＰセグメントを識別してフィルタリングする。ＳＰＣ２００は、フィルタリングされたＴＣＰセグメントからＴＣＰ受信セグメントヘッダフィールド２０１を抽出するとともに、それらのＴＣＰ受信セグメントヘッダフィールド２０１をＴＣＰプロセッサ（ここでは「ＴＣＰ２０２」）へ転送する。ＳＰＣ２００は、受信セグメントヘッダフィールド２０１における有効なデータを受信セグメントイベント信号２０３で示す。その後、ＳＰＣ２００は、受信データストリーム２２０を、本教示に関係しない他の回路へ転送する。
【００１５】
ＴＣＰプロセッサ２０２は、ＴＣＰ標準規格に従ってＴＣＰプロトコルの現実的な一実施態様を実行する。より具体的には、ＴＣＰ２０２は、ＴＣＰ受信セグメントヘッダフィールド２０１をＳＰＣ２００から受け取り、受信セグメントヘッダフィールド２０１を、予想されるヘッダフィールド値と比較する。また、ＴＣＰ２０２は、レートジェネレータ２０６から送信セグメント要求２１１も受信する。レートジェネレータ２０６は、通常は秒である単位時間当たりに送信するセグメント数に関するレートで構成され、次セグメントをいつ送信するかをＴＣＰ２０２に伝える。送信セグメント要求２１１に応答して、ＴＣＰ２０２は、次送信セグメントを送信するか、又は、ＴＣＰ再送プロトコルを実施し、前に送信されてその後確認応答されていないセグメントを再送する。ＴＣＰ実施機能の一部として、ＴＣＰ２０２は、状態アドレスフィールド２１３を介して外部状態メモリ２１２をアドレス指定する。各受信セグメントについて、前に記憶された状態データ２１４が、外部状態メモリ２１２から検索され、ＴＣＰ標準規格に従って処理され、その後、新しい状態データ２１４を状態メモリ２１２に記憶することによって、現セグメントの状態が更新される。したがって、外部状態メモリ２１２は、ネットワークの試験中に、全てのアクティブなＴＣＰ接続の現在状態を保持する。
【００１６】
セグメントジェネレータ２０７は、ＴＣＰ２０２から出力セグメントヘッダ情報２０９を受け取る。セグメントジェネレータ２０７は、セグメントジェネレータＲＡＭ２１０に記憶されたテンプレートにアクセスし、出力セグメントヘッダ情報２０９と共にテンプレートを使用して、送信データストリーム２２１としてポート１０６に与えるための現実的なＴＣＰ送信セグメントストリーム２２１を生成する。
【００１７】
図面の図２に示す中央処理装置（本明細書では「ＣＰＵ」）２０４は、すべての機能ブロック２００、２０２、２０６、２０７、２１０、２１２に接続されている。明確にするために、実際の接続は示されていない。ＣＰＵ２０４と、ＣＰＵ２０４が通信する機能ブロックとの間の相互接続は、アドレスバス２０５、双方向データバス２０８、読み出し／書き込み信号２１０、及び確認応答信号２１５を通じたものとなる。読み出し／書き込み信号２１０は、データがデータバス上をどの方向へ流れるかについての、ＣＰＵ２０４からの表示を提供する。確認応答信号２１５は、機能ブロックが、情報の転送完了を確認応答することを可能にする。ＣＰＵ２０４は、試験に備えて機能ブロックのそれぞれを構成する。また、ＣＰＵ２０４は、試験中に試験パラメータを動的に変更することもできる。動的に変更可能な試験パラメータによって、試験装置は、現実的なＴＣＰトラフィック及びアプリケーションの振る舞いをより綿密にエミュレーションすることが可能になる。
【００１８】
特に図面の図３を参照して、本教示によるＴＣＰ２０２のブロック図の一実施形態が示されている。この実施形態では、フェッチブロック３００が、受信セグメントヘッダフィールド２０１の、受信セグメント識別子３０１を含む部分、及び、受信セグメントイベント信号２０３を受信する。また、フェッチブロック３００は、送信セグメント要求２１１も受信する。送信セグメント要求２１１は、送信セグメント識別子３０５及び送信セグメントイベント信号３０７を含む。フェッチブロック３００は、受信セグメント識別子３０１及び受信セグメントイベント信号２０３並びに送信セグメント要求２１１を別々に処理するが、それらを同時に受信することもできる。競合している状況の場合、受信セグメント識別子３０１及び受信セグメントイベント信号２０３は、送信セグメント要求２１１の前に処理される。フェッチブロック３００は、受信セグメント識別子３０１及び送信セグメント識別子３０５を受け取り、ＴＣＰ回路部の残りの部分にさらに利用可能にするためにそれらのセグメント識別子の適切な一方をラッチする。
【００１９】
フェッチブロック３００は、状態アドレス２１３で外部状態メモリ２１２をアドレス指定し、記憶又は検索のために状態データ２１４を与えるか又は受け取る。状態メモリ２１２はダイナミックメモリである。状態メモリ２１２は、試験の進行につれて絶えず更新される。状態データ２１４の一部は、グループ識別子３０２を含む。フェッチブロック３００は、状態データ２１４を受け取ると、パラメータメモリ３０４内へのアドレスとして与えるためにグループ識別子３０２を分離する。パラメータメモリ３０４の内容は、試験プロセスに先立って、試験構成プロセス中に更新される。また、パラメータメモリ３０４は、ＴＣＰ接続の振る舞いを変更するために試験中にも更新することができる。グループ識別子３０２を与えられることに応答して、パラメータメモリ３０４は、パラメータメモリ直並列化／ラッチ回路部３１３を通じてグループパラメータ３０６を復号ブロック３０８に与え、パラメータメモリ直並列化／ラッチ回路部３１３を通じてグループオフセット３１０をＭＡＰ３１２に与える。ＭＡＰ３１２は、状態アドレス２１３をグループオフセット３１０と合計して、出力接続識別子３０７を生成する。
【００２０】
フェッチブロック３００は、シーケンスステップポインタ３０１（すなわち受信セグメント識別子３０１）、出力セグメントヘッダフィールド３０９、現在状態３１１、及び現在状態データ３１９を出力する。シーケンスステップポインタ３０１は、状態データ２１４の一部としても見つけられ、シーケンスメモリ３０３の最初のワードをアドレス指定する。シーケンスメモリ３０３からの出力は、シーケンスメモリ直並列化／ラッチ回路３１６を通じて出力セグメントペイロード識別子３２０としてＴＣＰ２０２の外部へ送られる。シーケンスメモリ直並列化／ラッチ回路３１６は、シーケンス復号データ３２２を復号ブロック３０８へ送り、シーケンス実行データ３２４を実行ブロック３１８へ送る。
【００２１】
受信セグメント機能ブロック３１４は、受信セグメント識別子３０１を有しない受信セグメントヘッダフィールド２０１を受け取り、復号ブロック３０８に与えるために受信セグメントヘッダフィールド２０１をラッチする。受信セグメントブロック３１４は、送信セグメントイベントがフェッチブロック３００によって処理される時、その前の状態から変更されない。
【００２２】
タイマ／カウンタブロック３２６は、クロック信号（図示せず）を受け取る。特定の一実施形態では、クロック信号は、５０ＭＨｚのシステムクロックを５分周したものに基づいている。タイマ／カウンタブロック３２６は、分周されたクロック信号の立ち上がりエッジで１つだけインクリメントされ、参照タイマ３２１を復号ブロック３０８に提供する。当業者には十分理解されるように、システムクロック及びクロック速度は、設計選択事項であり、当業者の能力の範囲内にある。加えて、クロック技術及びクロック速度は、技術がますます高いクロック周波数に進歩し、基礎を成す回路部を作成するのに使用される材料がさまざまな異なるものになっているので、スケーラブルである。
【００２３】
復号ブロック３０８は、パラメータメモリ３０４からはパラメータメモリ直並列化／ラッチ回路３１３を通じてグループパラメータ３０６を、シーケンスメモリ３０３からはシーケンスメモリ直並列化／ラッチ回路３１６を通じてシーケンス復号データ３２２を、フェッチブロック３００からは現在状態データ３１９を、受信セグメントブロック３１４からは受信セグメントヘッダフィールド２０１を、実行ブロック３１８からは次状態データ選択３２７を受け取る。復号ブロック３０８は、現在状態データ３１９、参照タイマ３２１、受信セグメントヘッダフィールド２０１、及びシーケンス復号データ３２２を受け取り、複数の可能な次状態データ３２３を計算する。また、復号ブロック３０８は、現在状態データ３１９、参照タイマ３２１、及び受信セグメントヘッダフィールド２０１も処理して、１６個のシングルビット状態入力３２８として、実行ブロック３１８に与えるための情報を削減する。
【００２４】
実行ブロック３１８は、現在状態３１１、シーケンス実行データ３２４、及び状態入力３２８に基づいて実際の次状態３２５を決定する。実行ブロック３１８は、次状態３２５をフェッチブロック３００に与え、計算された可能な次状態データのいずれかを復号ブロック３０８からフェッチブロック３００へ次状態データ３２３として与えるべきかを示す次状態データ選択３２７を復号ブロック３０８に与える。次状態データ選択３２７は、実行ブロック３１８から復号ブロック３０８への１６個のシングルビット入力のフォーマットである。したがって、実行ブロック３１８は、復号ブロック３０８から状態入力３２８を受け取って処理し、次状態３２５を決定し、次に、次状態選択３２７を複数のシングルデータビットとして復号ブロック３０８に与える。復号ブロック３０８及び実行ブロック３１８は、本明細書では、個別の機能構成として説明されている。特定の一実施形態では、復号ブロック３０８の回路部は、計算オペレーション及び比較オペレーション用に最適化されている。計算オペレーション及び比較オペレーションは、前処理機能を独占する傾向がある。実行ブロック３１８の回路部は、判定実行用に最適化されている。各ブロック３０８、３１８は、独占するそれらの機能用に最適化されているので、その組み合わせは最適化されている。当業者には十分理解されるように、復号ブロック３０８と実行ブロック３１８との間でなされた区別は、主として説明を明確にするためのものである。具体的には、復号ブロック３０８は、実行ブロックを構成する回路部によって使用される、復号を提供する回路部である。実行ブロック３１８は、復号データに基づいて次状態判定を行う回路部である。使用される設計プログラム、ベンダ、及び材料技術に応じて、復号ブロック３０８及び実行ブロック３１８を実施する多くの方法が存在する。本教示の実施は、本教示の利益を有する回路設計の分野の当業者の能力の範囲内にある。代替的な実施形態は、単一の機能構成として実施される復号／実行回路部を有することもできるし、復号機能及び実行機能を、本明細書で説明した２つの機能よりも多くの機能に分割することもできる。
【００２５】
シーケンスメモリ３０３は、接続交換が受けるステップのリストを定義する。各シーケンスステップは、条件が満たされた時に、結果として、接続が次シーケンスステップへ進められ、そのステップによって指定されたセグメントの可能な送信が行われることになる当該条件を定義する。シーケンスメモリ３０３は、シーケンス復号データ３２２を復号ブロック３０８に提供し、シーケンス実行データ３２４を実行ブロック３１８に提供し、出力セグメントペイロード識別子３２０をセグメントジェネレータ２０７に提供する。特定の一実施形態では、シーケンスメモリは、３２ビット幅であり、単一のシーケンスメモリレコードは、４つの連続したメモリアドレスロケーションに記憶される。シーケンスメモリレコードの最初の２つのワードは、実行前順序付け機能（pre-execution sequencing function）の目的で使用され、２番目の２つのワードは、実行後順序付け機能（post-execution sequencing function）の目的で使用される。シーケンスステップポインタ３０１は、シーケンスメモリ３０３における対応するレコードの最初のアドレスロケーションを指し示し、シーケンスメモリ直並列化／ラッチ回路３１６は、並列データをバッファリングして、ＴＣＰ２０２の残りの部分に与える。特定の一実施形態では、シーケンスメモリレコードの最初のワードは、シーケンスコマンド、予想セグメントサイズ、及びシーケンスの終了を示すフラグを含む。シーケンスコマンドは、実行ブロック３１８によってオペレーションを指定するのに使用される。シーケンスメモリは、所定のオペレーションシーケンスで次のステップを実行ブロックに示すのに使用される情報を記憶し、また、セグメントをどのように送信するかを指示する。特定の一実施形態では、シーケンスメモリのコマンドフィールドに定義される可能なオペレーションは、単一のセグメントの即時送信（immediate send）、単一セグメントの受信及び送信、単一セグメントの送信なしの受信、複数セグメント転送の即時送信、複数セグメント転送の受信及び送信、並びに複数セグメント転送の受信及び確認応答である。予想セグメントサイズは、復号ブロック３０８によって、１つ又は複数のセグメントを送信するためにどの条件を設定しなければならないかを判定するのに使用される。レコードの３番目のワードは、復号ブロック３０８によって使用される、送信セグメントサイズである。シーケンスメモリ３０３のレコードの４番目のワードは、出力セグメントペイロード識別子３２０である。出力セグメントペイロード識別子３２０は、出力セグメントヘッダ情報２０９の一部としてセグメントジェネレータ２０７へ送信され、どのタイプのペイロードを送信セグメントの一部として送信するかをセグメントジェネレータ２０７に示す。
【００２６】
パラメータメモリ３０４は、１つ又は複数のフローグループのＴＣＰプロパティを定義することを可能にする。フローグループは、類似のプロパティを示す接続のグループである。特定の一実施形態では、フローグループの概念は、特定のオペレーティングシステム又はアプリケーションから生じるＴＣＰトラフィックをエミュレーションするのに使用される。状態データ２１４からのグループ識別子３０２は、パラメータメモリ３０４に記憶されているフローグループレコードの最初のワードをアドレス指定するのに使用される。フローグループレコードは、７つの３２ビットワードである。フローグループレコードは、シーケンス開始ポインタを含む。シーケンス開始ポインタは、復号ブロック３０８を通じて、シーケンス開始がリセットされる場合に状態データ２１４を更新するのに使用される。シーケンス開始ポインタは、特定の接続が次に処理される時に使用されるその接続用の状態データ２１４に記憶されるシーケンスステップポインタ３０１になる。フローグループレコードは、リトライ数、接続クローズタイプ、接続オープンイネーブル、及び接続クローズイネーブルをさらに含む。これらのすべては、ＴＣＰ標準規格で定義されているように復号ブロック３０によって使用される。フローグループレコードは、輻輳回避イネーブルフラグ及び高速再送イネーブルフラグをさらに含む。これらのフラグは、定義された各フローグループについて、輻輳回避及び高速再送をオン又はオフにするのに使用される。フローグループレコードは、再送タイムアウト値、最大ウィンドウサイズ、初期ウィンドウサイズ、及び最大セグメントサイズをさらに含む。これらは、ＴＣＰ標準規格で定義されているように、復号ブロック３０８によって使用される。また、フローグループレコードは、ＭＡＰ３１２と共に使用されるグループオフセット３１０も含む。フローグループレコードは、送信サイズをさらに含む。送信サイズは、シーケンスコマンドによって定義されるような複数パケット送信について転送されるオクテット、すなわち８ビットデータ、の総数を示す。送信サイズは、ファイル転送ネットワークオペレーションをエミュレーションするのに使用される。また、フローグループレコードは、シーケンス待機時間も含む。シーケンス待機時間は、シーケンスステップが完了した後、接続をクローズする前に、接続がオープン状態である時間量を示す。或いは、シーケンス待機時間は、時間待機シーケンスステップの時間量も示すことができる。好都合なことに、パラメータメモリ３０４のフローグループパラメータのすべてを試験中に動的に変更することができる。したがって、特定の一実施形態では、フローグループパラメータのすべては、試験開始前に初期化される。サポートされる異なるフローグループの総数は、パラメータメモリ３０４のサイズ及びグループ識別子３０２の幅に依存する。当業者には十分理解されるように、他のパラメータをパラメータメモリ３０４に記憶することができ、フローグループの一部として使用することができ、説明したパラメータは、特定の一実施形態で使用されるパラメータである。
【００２７】
実行ブロック３１８は、計算された次状態３２５をフェッチブロック３００に与える。特定の一実施形態では、次状態３２５は、当該次状態を以下の状態のうちの１つとして定義する４ビットフィールドとして表される。
ｃｌｏｓｅｄ、
ｌｉｓｔｅｎ、
ｓｙｎ  ｓｅｎｔ、
ｓｙｎ  ｒｅｃｅｉｖｅｄ、
ｆｉｎ  ｗａｉｔ  １、
ｆｉｎ  ｗａｉｔ  ２、
ｃｌｏｓｅ  ｗａｉｔ、
ｃｌｏｓｉｎｇ、
ｌａｓｔ  ａｃｋ、
ｔｉｍｅ  ｗａｉｔ、及び
ｅｓｔａｂｌｉｓｈｅｄ。
【００２８】
また、実行ブロック３１８は、出力セグメントヘッダ情報２０９の一部として出力セグメント送信３１５及び出力セグメントタイプ３１７も与える。復号ブロック３０８は、更新された状態データ２１４で状態メモリ２１２を更新する目的で、次状態データ３２３をフェッチブロック３００に提供する。好都合なことに、本教示による特定の一実施形態において復号ブロック３０８と実行ブロック３１８との間で機能を分離することにより、性能を改善するために、或る量の復号前処理が可能になる。
【００２９】
復号ブロック３０８は、復号測定データ３３１を測定ブロック３２９に渡し、実行ブロック３１８は、実行測定信号３３０を測定ブロック３２９に渡す。
【００３０】
特に図面の図４を参照して、本教示と一致するフェッチブロック３００の特定の一実施形態のより詳細な図が示されている。この図では、受信セグメント識別子３０１及び送信セグメント識別子３０５は、識別子セレクタ４００に与えられる。これらの双方の識別子は、図示する特定の実施形態では幅が１６ビットである。この特定の実施形態では、識別子セレクタ４００は、サポートロジックと組み合わせられる受信セグメントイベント信号２０３及び送信セグメントイベント信号３０７により制御される２×１の１６ビットマルチプレクサである。双方のイベント信号２０３、３０７は、シングルビット信号であり、各セグメント識別子３０１、３０５が有効なデータを有することをフェッチブロック３００に示す。受信セグメントイベント２０３が真になった場合、識別子セレクタ４００は、受信セグメント識別子３０１を識別子マルチプレクサ出力４０１に配置する。この識別子マルチプレクサ出力４０１において、受信セグメント識別子３０１を識別子ラッチ４０２にラッチすることができる。送信セグメントイベント３０７が真になった場合、識別子セレクタ４００は、送信セグメント識別子３０５を識別子マルチプレクサ出力４０１に配置する。この識別子マルチプレクサ出力４０１において、送信セグメント識別子３０５を識別子ラッチ４０２にラッチすることができる。したがって、当業者には十分理解されるように、送信セグメント識別子３０１及び受信セグメント識別子３０５は、同様に処理される。送信セグメントイベント信号３０７が受信セグメントイベント信号２０３と同時に真になった場合、識別子セレクタ４００は、ホールドオフ機能、すなわち遅延機能を有し、このホールドオフ機能によって、受信セグメントイベント信号３０３は最初に処理され、その後、受信セグメントイベント信号２０３の処理が完了した時に、送信セグメントイベント信号３０７が処理される。好都合なことに、すべてのイベントは競合状況の場合にも処理され、受信セグメントが最初に処理される。その理由は、受信データセグメントは、限られた時間の間有効であり、且つ、データ喪失を回避するために処理の優先権を与えられるからである。
【００３１】
識別子ラッチ４０２の出力は、それ自体を状態アドレス２１３として与えて、状態メモリ２１２をアドレス指定する。状態アドレス２１３を起点として配置された状態メモリ２１２のデータは、状態データ２１４としてフェッチブロック３００に与えられる。状態データ２１４は、状態メモリ２１２の複数のメモリワードに記憶される。したがって、状態アドレス２１３は、対応する状態データ２１４を記憶する状態メモリ２１２の部分の最初のワードをアドレス指定する。特定の一実施形態では、状態メモリ２１２は、幅が３２ビットであり、状態データ２１４は、合計が２５６ビットの、状態メモリ２１２の８つの連続したロケーションに記憶される。
【００３２】
本教示によるＴＣＰの一実施態様の特定の一実施形態では、状態メモリ２１２に記憶されている状態データ２１４のほとんどは、ＴＣＰ標準規格に定義されているパラメータを含む。これらのパラメータは、接続状態、複製ＡＣＫカウンタ、リトライ試行回数のカウント、接続イネーブルフラグ、タイムアウトタイマアクティブフラグ、輻輳制御アクティブフラグ、タイムアウト値、確認応答されていないシーケンス番号、次シーケンス番号、スロースタートしきい値、送信ウィンドウサイズ、及び受信ウィンドウサイズ、予想される次シーケンス番号を含む。
【００３３】
ＴＣＰ標準規格には定義されていないが、本教示で定義される４つのパラメータが存在する。これらの４つのパラメータは、状態データ２１４として記憶され、接続グループ識別子、シーケンス状態、現シーケンスステップポインタ、及びシーケンスエンドポインタを含む。接続グループ識別子３０２は、接続が属する接続グループを定義し、パラメータメモリ３０４をインデックスするのに使用される。シーケンス状態は、各セグメントの現在状態を保持する。現シーケンスステップポインタ３０１は、シーケンスステップメモリ３０３における現シーケンスステップレコードの最初のワードを指し示す。シーケンスエンドポインタは、複数セグメントデータ転送の終了シーケンス番号を定義する。
【００３４】
状態データ２１４は、バッファリングされ（４０４）、直並列化され、ラッチされ、そして、機能に従って分配される。状態データ２１４のグループ識別子３０２の部分は、グループ識別子ラッチ４０６に与えられる。グループ識別子ラッチ４０６では、その出力は、ＴＣＰ２０２の他の場所で使用されるデータにアクセスするためにパラメータメモリ３０４をアドレス指定する。状態データ２１４の現接続状態４０５の部分は、状態セレクタ４１０及び状態ラッチ４１４へ送られる。状態データ２１４の一部として定義される残りの各状態アイテムは、複数の状態データセレクタ４０８のそれぞれ１つ、及び、複数の対応する状態データラッチ４１２のそれぞれ１つに関連付けられる。この特定の実施形態では、合計１６個の別個の状態データセレクタ４０８及び合計１６個の各状態データラッチ４１２が存在する。フェッチブロック読み出しサイクルの完了時に、状態データラッチ４１２には、状態メモリ２１２から直並列化された状態データ２１４がロードされる。状態データラッチ４１２は、それによって、現在状態データ３１９のすべてを復号ブロック３０８に与える。現在状態３１１は、実行ブロック３１８に与えられ、グループ識別子３０２は、パラメータメモリ３０４に与えられる。
【００３５】
特定の一実施形態では、フェッチブロック３００の読み出しサイクルは、状態メモリ２１２から読み出しを行い、状態データ２１４にアクセスして状態データ２１４を各状態データラッチ４１２、グループ識別子ラッチ４０６、及び状態ラッチ４１４にラッチする一連の８つの読み出しを含む。読み出し／書き込み選択４１９は、データの所望のソースを示す。読み出しサイクルでは、データのソースは、状態メモリ２１２からである。書き込みサイクルでは、状態メモリ２１２で更新されるデータのソースは、実行ブロック３１８からの次状態３２５及び復号ブロック３０８からの次状態データ３２３である。
【００３６】
ＴＣＰ２０２が受信セグメント識別子３０１又は送信セグメント識別子３０５を処理した後、フェッチブロック３００は、状態データ２１４を更新し、状態データ２１４を状態メモリ２１２に戻して記憶する。直列化セレクタ（serializing selector）４１６は、状態データ２１４を、バッファ４１８を通じて状態メモリ２１２に記憶するのに適した複数のワードにセグメント化する。直列化セレクタ書き込み選択４１７は、フェッチブロック３００の書き込みサイクル中に直列化セレクタ４１６のどの入力を状態メモリ２１２に記憶するかを選択する。
【００３７】
フェッチブロックは、前に処理された送信セグメント識別子又は受信セグメント識別子が現受信セグメント識別子又は現送信セグメント識別子と一致する場合に、状態メモリへのアクセスを抑制するようになっている。具体的には、識別子セレクタ４００の一部であるサポートロジックが、送信セグメント識別子３０５及び受信セグメント識別子３０１を比較する。これらの２つの識別子３０１、３０５が同じである場合、現在状態３１１及び現在状態データ３１９は、フェッチブロックラッチ４１２及び４１４にすでにラッチされていることが分かる。したがって、状態メモリ２１２からの次の読み出しサイクルを抑制する信号が、残りのフェッチブロックロジックへ送信される。好都合なことに、これによって、セグメント識別子３０１、３０５が一致する場合に不要な読み出しサイクルをスキップすることにより、より効率的な処理が可能になる。セグメント識別子３０１、３０５が一致しない場合、読み出しサイクルが進行する。
【００３８】
状態データ２１４の接続グループ識別子の部分は、フェッチブロック３００にラッチされ、グループ識別子３０２としてパラメータメモリ３０４に与えられる。パラメータメモリ３０４は、接続のグループに共通のパラメータを含む。特定の一実施形態では、１２８個の接続グループが可能である。
【００３９】
ＤｏＤ標準伝送制御プロトコル（ＴＣＰ）標準規格（本明細書では「ＴＣＰ標準規格」）は、１９８１年９月に公表されたＲＦＣ７９３に定義されており、ＴＣＰ輻輳制御標準規格（本明細書では「輻輳制御標準規格」）は、１９９９年４月に公表されたＲＦＣ２５８１に定義されている。これらの双方の参照文書の内容は、参照により本明細書に援用される。復号機能ブロック３０８及び実行機能ブロック３１８は、ＴＣＰ標準規格及び輻輳制御標準規格の大部分を実施する。実施されない部分は、試験装置１００の別の部分で実施されるか、又は、ネットワークトラフィックの現実的なシミュレーション及び試験に必須であるとはみなされない。しかしながら、この特定の実施形態の復号ブロック３０８及び実行ブロック３１８の実施されないＴＣＰ標準規格及び輻輳制御標準規格の部分は、本教示による他の実施形態で実施することができる。特定の一実施形態での実施用に選ばれた標準規格のサブセットは、現実的なデータストリームを生成して、生成されたデータストリームに適切に応答する能力を最大にし、結果として生じる測定値がデバイスの試験に関係するように、それらの測定値の有効性を維持する。
【００４０】
ＴＣＰ標準規格及び輻輳制御標準規格は、復号ブロック３０８及び実行ブロック３１８の組み合わせで実施される。具体的には、復号ブロック３０８は、ＴＣＰ標準規格及び輻輳制御標準規格に従って計算を実行し、新しいセグメントを送信するか否か及び新しいセグメントをいつ送信するかを判定する。復号ブロック３０８は、計算の結果を状態入力３２８として実行ブロック３１８へ送信する。実行ブロック３１８は、適切な次の状態３２５及び送信される次のセグメント２０９となるべきものに関する決定を状態入力３２８に基づいて行う。
【００４１】
復号ブロック３０８は、ＴＣＰ伝送が基づいている変数データを計算し、状態入力３２８の形の２値フラグを実行ブロック３１８へ送信する。実行ブロック３１８は、状態入力３２８、シーケンス実行データ３２４、及び現在状態３１１を使用して、次状態３２５及びどのセグメントを送信するか（２０９）の最終決定を行う。復号ブロック３０８は、計算機能及び比較機能を並列に実行する計算効率について最適化され、計算機能の結果及び比較機能の結果を準備して実行ブロック３１８に与える。したがって、実行ブロック３１８は、現在状態３１１、シーケンス実行データ３２４、及び状態入力３２８に基づいて効率的な最終決定を行うことができる。実行ブロック３１８は、次に、次状態３２５及び次状態データ選択３２７の形で最終決定を広め、すなわち配布し、状態メモリ２１２の更新を行う。加えて、実行ブロック３１８は、出力セグメント送信３１５及び出力セグメントタイプ３１７を使用して次のセグメント送信を指示する。
【００４２】
状態入力３２８は、復号ブロック３０８から実行ブロック３１８へのシングルビット信号を含む。このシングルビット信号では、論理「１」は、条件が真であることを示す。シーケンス番号比較の多くは、ＴＣＰ標準規格の３．３節に定義されており、状態入力３２８の残りの部分は、その標準規格の他の部分に定義されているか、又は、実施に依存している。状態入力３２８は次のものを含む。
１．タイムアウト（timeout）：これが真の場合には、タイマ３２６が、個別の接続について状態データ２１４に記憶されたタイムアウト値より大きいことを意味する。すなわち、タイマが時間切れとなったことを意味する。
２．イネーブル（enable）：個別のフローを動的にオン（真）／オフ（偽）にする。
３．タイマアクティブ（timer active）：真の場合は、タイムアウト条件の関連付け及びタイムアウト信号の発生が可能になる。
４．受信ウィンドウが受信ウィンドウ最大値よりも小さい：真の場合は、現ウィンドウで受信されたセグメントの数が、単一のウィンドウで受信できるセグメントの最大数よりも少ないことを意味する。
５．受信されて確認応答されたセグメント番号が、送信される次セグメント番号に等しい：真の場合は、次セグメント番号が、予想されるセグメント番号であることを示す（サーバ側）。
６．受信されて確認応答されたセグメント番号が、送信される次のセグメント番号以下である：真の場合は、現セグメントが有効であることを意味する（サーバ側）。
７．セグメントシーケンス番号が、次に受信されると予想される次セグメント番号に等しい：真の場合は、現セグメントシーケンス番号が有効であることを意味する（クライアント側）。
８．状態データのシーケンスエンドフィールドが、状態データの次受信フィールド（receive next field）に等しい：真の場合は、クライアントが、予想されるすべてのセグメントの受信を終了したことを意味する（クライアント側）。
９．状態データのシーケンスエンドフィールドが、最後に確認応答されたシーケンスのセグメント番号に等しい：真の場合は、サーバによって送信されたすべてのセグメントの受信が成功し、接続をクローズできることを示す（サーバ側）。
１０．状態データのシーケンスエンドフィールドが、最後に受信されたセグメントシーケンス番号に等しい：真の場合は、クライアントによって受信されたすべてのセグメントの受信が成功し、接続をクローズできることを示す（クライアント側）。
１１．次に送信されるシーケンス番号が、確認応答されていない最も古い送信シーケンス番号に等しい：真の場合は、送信されたすべてのセグメントが確認応答されたことを示す（サーバ側）。
１２．送信される次シーケンス番号が、現送信ウィンドウ内にある：真の場合は、次セグメントを送信できることを意味する。
１３．送信されたが、まだ確認応答されていないセグメントが、確認応答されるセグメントよりも少ない：真の場合は、確認応答されるセグメントが有効範囲内にあることを示す。
１４．高速再送（fast retransmit）：真の場合は、クライアントがセグメントを受信し損ねていることを示す。
１５．ラウンドトリップ時間（round trip time）：真の場合は、ラウンドトリップ時間が有効であることを示す。これは統計として収集される。
１６．リトライ最大値（retry max）：真の場合は、セグメントを送信するリトライの最大数を超え、接続を打ち切ることができることを示す。
【００４３】
ＲＦＣ７９３の３．２節「専門用語」を特に参照して、本教示による特定の一実施態様は、送信緊急ポインタ及び受信緊急ポインタを除く送信シーケンス変数及び受信シーケンス変数のすべてを状態データ２１４の一部として保持する。本実施態様では、送信緊急ポインタ及び受信緊急ポインタは、標準規格の性能にストレスを与えない特定のタイプのネットワークセッションに有用である。したがって、単純化するために、緊急ポインタ機能は、本教示による特定の一実施態様では実施されない。しかしながら、本教示はその実施を排除するものではない。
【００４４】
本教示による受信セグメントヘッダフィールド２０１は、セグメント緊急ポインタ及びセグメント優先値を除く現セグメント変数のすべてを保持する。セグメント緊急ポインタは、送信シーケンス変数及び受信シーケンス変数について明言したのと同じ理由でされない。セグメント優先値は、復号ブロック３０８及び実行ブロック３１８では実施されないが、試験装置１００のセグメントジェネレータ２０７の部分内では実施される。
【００４５】
実行ブロック３１８は、ＴＣＰ標準規格の図６に示すようなすべての状態及び遷移を実施する。具体的には、実行ブロック３１８は、現在状態３１１及びシーケンス実行データ３２４を受け取る。復号ブロック３０８からの計算された状態入力３２８に基づいて、実行ブロックは次状態３２５を決定する。
【００４６】
復号ブロック３０８及び実行ブロック３１８は、３．３節から３．５節で定義されている機能を実施する。本教示による実行ブロック３１８は、ＲＦＣ７９３の３．６節の優先度及びセキュリティを実施しないが、本教示はその実施を排除するものではない。
【００４７】
本教示は、３．７節の再送タイムアウトを実施するが、標準規格で定義されているような動的アルゴリズムの代わりに一定の再送タイムアウトを実施し、緊急情報の通信を実施しない。しかしながら、本教示は、その実施を排除するものではない。この節で定義されているようなウィンドウ管理機能は、主として復号ブロック３０８によって実行される。具体的には、受信セグメントヘッダフィールド２０１は、送信セグメントの確認応答を提供する。復号ブロック３０８は、次のセグメントを送信できるか否か及び送信できる時を判定する前に、確認応答されたセグメントを処理する。ＴＣＰ標準規格の３．８節は、本教示による試験装置では実施されない。その理由は、３．８節は、主として、アプリケーションとＴＣＰレイヤとの間のソフトウェアインターフェースに適用されるからである。
【００４８】
ＲＦＣ７９３の３．９節は、イベント処理を定義している。本教示による特定の一実施形態で実施されるイベントは、ＴＣＰ標準規格の節で定義されているような「セグメント到着」及び「再送タイムアウト」を含む。ＴＣＰレイヤとアプリケーションレイヤとの間のイベントは排除されないが、本教示による特定の一実施形態では実施されない。
【００４９】
実行ブロック３１８は、現接続の次状態３２５を決定して、次セグメント２０９を送信する時、その判定を、フェッチブロック３００には次状態３２５の形で、復号ブロック３０８には次状態データ選択３２７の形で広める。復号ブロック３０８は、次状態データ選択３２７を受け取り、状態メモリ２１２の状態データ２１４の更新のために、次状態データ３２３をフェッチブロック３００に返す。次状態データ選択３２７は、次状態３２５の状況を示す２１個のシングルビット信号の形である。これらの２１個のシングルビット信号は、次のものを含む。
１．高速再送の設定（set fast retransmit）：真の場合は、高速再送が処理されたという確認応答である。
２．スロースタート及び輻輳回避の設定（set slow start and congestion avoidance）：真の場合は、タイムアウトが発生したという確認応答である。
３．アクティブに設定されたタイムアウト（timeout set active）：真の場合は、最後の送信セグメントのタイマのリセットを開始する。
４．再送タイムアウト値に設定されたタイムアウト（timeout set to retransmission timeout value）：真の場合は、タイムアウト値を、定義された接続グループのパラメータのタイムアウト値に設定することを開始する。
５．時刻に設定されたタイムアウト（timeout set to time）：真の場合は、現接続グループのパラメータメモリの待機時間にタイマを設定する。
６．リトライリセット（retry reset）：真の場合は、接続の最も近時のリトライが成功したこと、及び、リトライカウンタをリセットできることを示す。
７．リトライインクリメント（retry increment）：真の場合は、リトライがもう一度試行されて、復号ブロック３０８に、リトライカウンタを１つだけインクリメントさせることを示す。
８．送信されたが確認応答されていない最後のセグメント番号が、受信された最後のセグメントのセグメント番号に等しく設定される（Last unacknowledged segment number sent is set equal to the segment number of the last segment received）：真の場合は、確認応答されていない最後のセグメント番号を更新すべきであることを示す。
９．次送信インクリメント（send next increment）：真の場合は、状態データ２１４の次送信フィールド（send next field）を整数値の１だけインクリメントする。この信号は、特にＴＣＰ接続をオープン又はクローズする時に使用される。
１０．送信長分の次送信インクリメント（send next increment by send length）：真の場合は、状態データ２１４の次送信フィールドが、シーケンスメモリに記憶されたようなセグメント当たりに送信されたオクテットの個数だけインクリメントされる（サーバ側）。
１１．確認応答されていない送信への次送信設定（send next set to send unacknowledged）：真の場合は、送信されたが確認応答されていない最後のセグメント（last unacknowledged segment sent）への次送信ポイント（send next point）のリセットを開始する。
１２．タイマへの次送信設定（send next set to timer）：真の場合は、タイマが最初のシーケンス番号を初期化するのに使用されることを示す。
１３．シーケンスポインタリセット（sequence pointer reset）：真の場合は、シーケンスポインタを、シーケンスメモリに記憶された最初のシーケンスステップにリセットすべきことを示す。
１４．シーケンスポインタインクリメント（sequence pointer increment）：真の場合は、シーケンスポインタを次シーケンスステップにインクリメントすべきことを示す。
１５．セグメント長分の受信ウィンドウディクリメント（receive window decrement by segment length）：真の場合は、受信ウィンドウサイズの長さが、すでに受信されたセグメント長の分だけ減少されることを示す（クライアント側）。
１６．受信長分だけインクリメントされた受信ウィンドウ（receive window incremented by receive length）：真の場合は、受信ウィンドウが、現接続グループで定義されるような所定のサイズでオープンされることを示す。
１７．次受信リセット（receive next reset）：真の場合は、新しい接続及び状態データ２１４の次受信フィールドが０にリセットされることを示す。
１８．セグメント長分の次受信インクリメント（receive next increment by segment length）：真の場合は、状態データ２１４の次受信フィールドを、受信された最後のセグメントのセグメント長分だけインクリメントする（クライアント側）。
１９．セグメントシーケンスインクリメントへの次受信設定（receive next set to segment sequence increment）：真の場合は、新しい接続の期間中、状態データ２１４の次受信フィールドが、丁度受信されたセグメントのシーケンス番号に設定されることを示す。
２０．次送信へのシーケンスエンドロード（sequence end load into send next）：接続がオープンされて、状態データ２１４のシーケンスエンドフィールドを、現接続をクローズするシーケンス番号へ設定することを開始する時に真になる（サーバ側）。
２１．シーケンスエンドロード次受信（sequence end load receive next）：真の場合は、状態データ２１４のシーケンスエンドフィールドを、現接続をクローズするシーケンス番号に設定する（クライアント側）。
【００５０】
復号ブロック３０８及び実行ブロック３１８は、各セグメント処理の結果を実行測定信号３３０、現セグメントサイズ３３１（オクテットの単位で表される）、及びラウンドトリップ時間３３２で測定ブロック３２９へ通信する。統計の目的で、「接続」は、双方向ＴＣＰデータストリーム又は「フロー」として定義される。各接続は、「オープン中（opening）」、「オープン済（opened）」、「クローズ中（closing）」、及び「closed（クローズ済）」の４つの可能な状態のうちの１つにあるとして特徴付けることができる。「アクティブ接続」は、「オープン中」状態、「オープン済」状態、又は「クローズ中」状態にある。接続が失敗した場合、その接続は、「オープン失敗（failed to open）」又は「オープン後の失敗（failed after open）」のいずれかとして特徴付けることができる。「オープン失敗」は、オープン中状態の間に失敗した接続である。「オープン後の失敗」は、「オープン済」状態に達した後の或る時点で失敗した接続である。これらの定義に基づいて、測定ブロック３２９は、実行測定信号３３０及びセグメントサイズ３３１及びラウンドトリップ時間３３２を使用して、以下の統計を収集する。
１．ＴＣＰアクティブ接続（TCP active connections）：「オープン中」状態、「オープン済」状態、又は「クローズ中」状態にある接続をカウントする。
２．確立されたＴＣＰ接続（TCP connections established）：「オープン済」状態の接続をカウントする。
３．試行されたＴＣＰ接続（TCP connections attempted）：「オープン中」状態に入る接続をカウントする。
４．オープンに失敗したＴＣＰ接続（TCP connections that Failed to Open）：「オープン中」状態に入ったが、「オープン済」状態に達しなかった接続をカウントする。
５．オープン後に失敗したＴＣＰ接続（TCP connections that Failed after Open）：「オープン済」状態に達した後に失敗した接続をカウントする。
６．ＴＣＰタイムアウト（TCP timeouts）：タイムアウトに達したものをカウントする。
７．ＴＣＰ高速再送条件（TCP fast retransmit conditions）：開始された高速再送をカウントする。
８．ＴＣＰ再送されたレイヤ４のペイロードのオクテット（TCP retransmitted layer-4 payload octets）：再送されたペイロードのオクテットをカウントする。
９．送信されたＴＣＰセグメント（TCP segments transmitted）：ＴＣＰ２０２から送信されたセグメントをカウントする。
１０．受信されたＴＣＰセグメント（TCP segments received）：ＴＣＰ２０２によって受信された有効なセグメントをカウントする。
１１．送信されたＴＣＰレイヤ２オクテット（TCP layer-2 octets transmitted）：ＴＣＰ２０２によって送信されたレイヤ２のオクテットをカウントする。
１２．受信されたＴＣＰレイヤ２オクテット（TCP layer-2 octets received）：ＴＣＰ２０２によって受信されたレイヤ２のオクテットをカウントする。
１３．受信された良好なＴＣＰレイヤ４オクテット（TCP good layer-4 octets received）（「グッドプットオクテット（goodput octets）」）：ＳＰＣ２００によって受信されたレイヤ４のオクテットをカウントする。
１４．受信された良好なＴＣＰレイヤ４セグメント（TCP good layer-4 segments received）（「グッドプットセグメント（goodput segments）」）：ＴＣＰ２０２によって受信された有効なレイヤ４セグメントをカウントする。
１５．ＴＣＰラウンドトリップ（TCP round trips）：ラウンドトリップをカウントする。
【００５１】
ＳＰＣ２００は、ポート単位でのみ以下の統計を収集する。
１６．ＴＣＰ誤送セグメント統計（TCP misdirected segments statistics）：ＴＣＰ２０２によって受信された有効なＴＣＰセグメントの個数。
１７．受信されたＴＣＰチェックサムエラー：ＴＣＰチェックサムエラーを含む受信された有効なＴＣＰセグメントの個数。
【００５２】
ＣＰＵ２０４は、規則的なサンプリング間隔で測定ブロック３２９及びＳＰＣ２００にアクセスして、収集される統計を集めて表示する。特定の一実施形態では、サンプリング間隔は１秒であるが、他の間隔も可能である。加えて、ＣＰＵ２０４のソフトウェアは、以下の統計も導出する。
１８．受信されないＴＣＰセグメント（TCP segments not received）：クライアント側の受信されないＴＣＰセグメントは、サーバグループが送信したセグメントからクライアントグループが受信したセグメントを差し引くことによって計算される。サーバ側の受信されないＴＣＰセグメントは、クライアントグループが送信したセグメントからサーバグループが受信したセグメントを差し引くことによって計算される。
１９．ＴＣＰレイヤ２送信スループット（TCP layer-2 throughput transmitted）：サンプリング間隔中に送信されたオクテット数を与えることによって計算される。
２０．ＴＣＰレイヤ２受信スループット（TCP layer-2 throughput received）：サンプリング間隔中に受信されたオクテット数を与えることによって計算される。
【００５３】
実行測定信号３３０は、測定された状況のうちの１つ又は複数が発生した時に実行ブロック３１８によって設定されるシングルビット信号を含む。実行測定信号３３０の各シングルビット信号は、測定ブロック３２９の各カウントに接続している。測定ブロック３２９の各カウントは、論理の真を受信した時にインクリメントされる。ＣＰＵは、規則的な間隔であるサンプリング間隔で測定ブロック３２９にアクセスする。カウンタは、各サンプリング間隔にわたるカウントを累積することによって実行測定信号３３０に応答する。ＣＰＵが各カウンタを読み出した後、カウンタは、リセットされ、新しいサンプリング間隔にわたる累積を開始する。ＣＰＵは、各サンプリング間隔における瞬時値を更新してディスプレイに提示する。また、ＣＰＵは、同じ統計測定値の累積値を計算して保持し、その累積値も同様に表示する。
【００５４】
セグメントサイズ３３１及びラウンドトリップ時間３３２は、実行測定データ３３０と同時に測定ブロック３２９へ送信される。特定の一実施形態では、セグメントサイズは、現セグメントで受信又は送信されたオクテット数を含む１６ビットワードである。ラウンドトリップ時間３３２は、現セグメントのラウンドトリップ時間を表す３２ビットワードである。ＴＣＰラウンドトリップ統計のこの特定の例では、測定ブロック３２９のカウンタは、サンプリング間隔中に行われたラウンドトリップの回数をカウントする。また、測定ブロック３２９は、実行測定信号３３０のラウンドトリップ信号を受信する時にラウンドトリップ時間３３２を累積する。ＣＰＵ２０４は、累積されたラウンドトリップ時間の総計を、サンプリング間隔内のラウンドトリップの総数によって割ることにより、平均ラウンドトリップ時間を計算して与える。
【００５５】
当業者には十分理解されるように、測定ブロック３２９は、インクリメントカウンタからの直接読み出しに基づいて統計をカウントすることもできるし、インクリメントカウンタ及び送信されたオクテットサイズもしくは受信されたオクテットサイズ又はラウンドトリップ時間の計算に基づいて統計を計算することもできる。多くの場合、各測定について２つの値が収集される。一方は瞬時測定値であり、これは、単一の所定のサンプリング間隔中に収集される。他方は累積測定値であり、これは、試験全体にわたるイベントの連続した累積値である。
【００５６】
この教示の実施形態は、本明細書では、現実的なネットワークトラフィックを生成し、生成されたトラフィックに対するデバイスの応答を測定するための方法及び装置を説明する添付図面に関する例として説明されている。本教示の他の変形、適応、及び実施形態が、本教示の利益を与えられる当業者には思いつくであろう。
【００５７】
最後に本発明の代表的な実施態様を述べる。
（実施態様１）
複数のセグメントを含む受信データストリーム（２２０）を連続して受け取るストリームプロセッサコントローラ（２００）であって、前記受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラ（２００）と、
前記受信セグメントのヘッダフィールド（２０１）を受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサ（２０２）と、
前記セグメントプロセッサ（２０２）へセグメントを送信する要求（２１１）を送信するレートジェネレータ（２０６）と、
前記出力ヘッダフィールドに応答して、送信データストリーム（２２１）を生成するセグメントジェネレータ（２０７）と
を備え、前記セグメントプロセッサ（２０２）は、前記要求を受け取って、出力セグメントヘッダフィールド３０９を生成することにより前記要求に応答し、前記セグメントプロセッサ（２０２）は、前記受信セグメントのそれぞれ及び出力セグメントのそれぞれの状態を状態メモリ（２１２）に保持する装置。
【００５８】
（実施態様２）
前記セグメントジェネレータは、複数の送信セグメントを準備して送り出し、それによって前記送信データストリーム（２２１）を形成し、前記送信セグメントのそれぞれは、前記出力ヘッダフィールド（３０９）に基づいている、実施態様１に記載の装置。
【００５９】
（実施態様３）
前記セグメントプロセッサは、前記受信ヘッダフィールド（２０１）及び前記送信ヘッダフィールド（３０９）に含まれる情報に基づいて統計を収集する、実施態様１に記載の装置。
【００６０】
（実施態様４）
前記セグメントプロセッサ（２０２）は、フィールドプログラマブルゲートアレイである、実施態様１に記載の装置。
【００６１】
（実施態様５）
前記ストリームプロセッサコントローラ（２００）は、前記セグメントプロセッサ（２０２）によって受け取られるＴＣＰセグメントとして識別された受信セグメントをフィルタリングする、実施態様１に記載の装置。
【００６２】
（実施態様６）
前記セグメントジェネレータは、前記出力ヘッダフィールドに基づいてＴＣＰセグメントを生成して送り出す、実施態様５に記載の装置。
【００６３】
（実施態様７）
複数のＴＣＰ接続のうちの現接続に対応する受信セグメント識別子（３０１）を受信するようになっているフェッチブロック（３００）と、
前記複数の接続のそれぞれの現在状態に対応する状態データを保持するようになっている状態メモリ（２１２）であって、前記フェッチブロックは、前記受信セグメント識別子に基づいて現接続の状態データにアクセスするようになっている、状態メモリ（２１２）と、
前記現接続の前記現在状態及び受信セグメントヘッダフィールド（２０１）に基づいて、前記現接続の次状態を決定するようになっている実行ブロック（３１８）であって、前記現接続の前記次状態に関係するイベントを信号で伝えるようになっている、実行ブロック（３１８）と、
前記イベントを累積するようになっている測定ブロック（３２９）と
を備え、前記フェッチブロックは、前記現接続の前記次状態で前記状態メモリを更新するようになっている装置。
【００６４】
（実施態様８）
前記実行ブロックは、前記イベントを複数のシングルビット表示により信号で伝え、前記測定ブロックは、前記シングルビットイベント表示のそれぞれを蓄積する複数のそれぞれのカウンタをさらに備える、実施態様７に記載の装置。
【００６５】
（実施態様９）
ＴＣＰ標準規格に従って複数の可能な次状態データを計算し、新しいセグメントが送信される時は前記実行ブロックへ表示を送信する復号ブロック（３０８）をさらに備える、実施態様７に記載の装置。
【００６６】
（実施態様１０）
前記実行ブロックは、前記表示を受け取り、送信される次セグメントを決定し、出力セグメント情報を生成する、実施態様９に記載の装置。
【００６７】
（実施態様１１）
シーケンスメモリ（３０３）をさらに備え、前記フェッチブロックは、該シーケンスメモリにアクセスして前記実行ブロックにシーケンスコマンドを与える、実施態様７に記載の装置。
【００６８】
（実施態様１２）
前記実行ブロックは、前記シーケンスコマンドに応答して、前記現接続の前記次状態を決定する、実施態様１１に記載の装置。
【００６９】
（実施態様１３）
前記フェッチブロックは、送信セグメント識別子（３０５）を受信するとともに、前記送信セグメント識別子に基づいて前記現接続の前記状態データにアクセスするようになっている、実施態様７に記載の装置。
【００７０】
（実施態様１４）
前記受信セグメント識別子及び前記送信セグメント識別子が同時に到着する場合に、前記フェッチブロックはさらに、該送信セグメント識別子の処理を延期するようになっている、実施態様１３に記載の装置。
【００７１】
（実施態様１５）
前に処理されたセグメント識別子が現セグメント識別子と一致している場合に、前記フェッチブロックは、前記状態メモリへのアクセスを抑制するようになっている、実施態様７に記載の装置。
【００７２】
（実施態様１６）
所定のオペレーションシーケンスで次のステップを前記実行ブロックに示すようになっているシーケンスメモリ（３０３）をさらに備える、実施態様７に記載の装置。
【００７３】
（実施態様１７）
出力セグメントペイロード識別子をセグメントジェネレータに示すようになっているシーケンスメモリ（３０３）をさらに備える、実施態様７に記載の装置。
【００７４】
（実施態様１８）
少なくとも１つのフローグループに共通であるＴＣＰパラメータを保持するようになっているパラメータメモリ（３０４）をさらに備え、該パラメータメモリは、前記状態データからグループ識別子（３０２）によってアドレス指定可能であり、前記ＴＣＰパラメータは、前記復号ブロックに通知される、実施態様９に記載の装置。
【００７５】
（実施態様１９）
複数の接続のうちの１つに関係する受信セグメント識別子（３０１）を含む受信セグメントヘッダフィールドを受け取ること、
前記識別された接続の現在状態に対応する、メモリ（２１２）における状態データにアクセスすること、
ＴＣＰ標準規格に従って、前記受信セグメントヘッダフィールド（２０１）を処理すること、
前記受信セグメントヘッダフィールド（２０１）に関係する前記接続を次状態に進めること、
前記接続の統計を累積すること、及び
前記接続の前記次状態に対応する状態データで前記メモリを更新すること
を含む方法。
【００７６】
（実施態様２０）
複数の前記受信セグメントヘッダフィールド（２０１）のそれぞれについて、前記受け取ること、前記アクセスすること、前記処理すること、前記進めること、前記累積すること、及び前記更新することを繰り返すことをさらに含む、実施態様１９に記載の方法。
【００７７】
（実施態様２１）
前記接続のうちの１つに関係する送信セグメント識別子（３０５）を受け取ること、前記ＴＣＰ標準規格に従って前記送信セグメント識別子を処理すること、及び送信パケットヘッダ情報を生成することをさらに含む、実施態様１９に記載の方法。
【図面の簡単な説明】
【００７８】
【図１】本教示による試験装置の一実施形態と被試験デバイスとの間の接続を示す図である。
【図２】図１に示すポートのうちの１つをサポートする、本教示と一致するロジックの一実施形態を示す図である。
【図３】本教示によるＴＣＰプロセッサロジックの特定の一実施形態のより詳細な図である。
【図４】本教示と一致するフェッチブロックロジックの特定の一実施形態のより詳細な図である。
【符号の説明】
【００７９】
２００  ストリームプロセッサコントローラ
２０１  受信セグメントヘッダフィールド
２０２  ＴＣＰプロセッサ
２０３  受信セグメントイベント信号
２０４  中央処理装置
２０５  アドレスバス
２０６  レートジェネレータ
２０７  セグメントジェネレータ
２０８            双方向データバス
２０９  出力セグメントヘッダ情報
２１０  読み出し／書き込み信号
２１１  送信セグメント要求
２１２  外部状態メモリ
２１３  状態アドレスフィールド
２１４  新しい状態データ
２１５  確認応答信号
２２０  受信データストリーム
２２１  送信データストリーム
【図１】
2008131640.tif 000003
【図２】
2008131640.tif 000004
【図３】
2008131640.tif 000005
【図４】
2008131640.tif 000006