説明

ネットワーク試験装置及び方法

【課題】ネットワークトラフィック及びネットワーク量のより現実的なエミュレーションを行うことができるスケーラブルで且つ手ごろな価格のネットワーク試験装置を提供する。
【解決手段】複数のセグメントを含む受信データストリーム(220)を連続して受け取り、該受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラ(200)と、該受信セグメントのヘッダフィールド(201)を受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサ(202)と、該セグメントプロセッサ(202)へセグメントを送信する要求(211)を送信するレートジェネレータ(206)と、該出力ヘッダフィールドに応答して、送信データストリーム(221)を生成するセグメントジェネレータ(207)とを備えた装置。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク試験装置に関する。
【背景技術】
【0002】
ネットワーク機器供給業者及びネットワークサービス供給業者の現在の課題は、現実的なほど大規模のネットワーク及びネットワーク状態の下で製品を試験及び評価することである。
【0003】
この課題に対する従来技術の手法には、ネットワーク状態をエミュレーションするアプリケーションを実行する複数のプロセッサから成るシステムが含まれている。不都合なことに、多数の加入者プロセッサをエミュレーションする単一のプロセッサは、ネットワーク上の複数のプロセッサの実際の性能及び振る舞いを決定性 (deterministic) の方法でエミュレーションするには十分でない。加えて、複数のプロセッサから成る大きな試験システムは高価であり、このような試験システムは、より大きなネットワークをエミュレーションするように拡大されると、法外な費用を要する。
【0004】
別の従来技術の手法は、パケットブラスティング試験装置である。パケットブラスティング試験装置は、大量のネットワークトラフィックをエミュレーションすることができるが、TCPセグメント再送及びタイムアウトのようなイベントを含むネットワーク性能を現実的にエミュレーションすることができない。
【発明の開示】
【発明が解決しようとする課題】
【0005】
したがって、ネットワークトラフィック及びネットワーク量のより現実的なエミュレーションを行うことができるスケーラブルで且つ手ごろな価格のネットワーク試験装置が必要とされている。
【課題を解決するための手段】
【0006】
本発明による一実施態様である装置は、複数のセグメントを含む受信データストリーム(220)を連続して受け取るストリームプロセッサコントローラ(200)であって、該受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラ(200)と、該受信セグメントのヘッダフィールド(201)を受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサ(202)と、該セグメントプロセッサ(202)へセグメントを送信する要求(211)を送信するレートジェネレータ(206)と、該出力ヘッダフィールドに応答して、送信データストリーム(221)を生成するセグメントジェネレータ(207)とを備え、該セグメントプロセッサ(202)は、該要求を受け取って、出力セグメントヘッダフィールド309を生成することにより該要求に応答し、該セグメントプロセッサ(202)は、該受信セグメントのそれぞれ及び出力セグメントのそれぞれの状態を状態メモリ(212)に保持することを特徴とする。
【0007】
本発明による別の実施態様である装置は、複数のTCP接続のうちの現接続に対応する受信セグメント識別子(301)を受信するようになっているフェッチブロック(300)と、該複数の接続のそれぞれの現在状態に対応する状態データを保持するようになっている状態メモリ(212)であって、該フェッチブロックは、該受信セグメント識別子に基づいて現接続の状態データにアクセスするようになっている、状態メモリ(212)と、該現接続の該現在状態及び受信セグメントヘッダフィールド(201)に基づいて、該現接続の次状態を決定するようになっている実行ブロック(318)であって、該現接続の該次状態に関係するイベントを信号で伝えるようになっている、実行ブロック(318)と、該イベントを累積するようになっている測定ブロック(329)とを備え、該フェッチブロックは、該現接続の該次状態で該状態メモリを更新することを特徴とする。
【0008】
本発明による更に別の実施態様である方法は、複数の接続のうちの1つに関係する受信セグメント識別子(301)を含む受信セグメントヘッダフィールドを受け取ること、 該識別された接続の現在状態に対応する、メモリ(212)における状態データにアクセスすること、TCP標準規格に従って、該受信セグメントヘッダフィールド(201)を処理すること、該受信セグメントヘッダフィールド(201)に関係する該接続を次状態に進めること、該接続の統計を累積すること、及び該接続の該次状態に対応する状態データで該メモリを更新することを含むことを特徴とする。
【発明を実施するための最良の形態】
【0009】
本教示は、添付図面と共に考慮される以下の詳細な説明から理解される。添付図面において、異なる図面において付された同様の参照符号は、同じ要素又は類似の要素を指す。
【0010】
以下の詳細な説明では、限定ではなく説明の目的で、特定の詳細を開示する実施形態の例が、本教示による実施形態の理解を提供するために述べられる。しかしながら、本開示の利益を有する当業者には、本明細書で開示される特定の詳細から逸脱する本教示による他の実施形態も、添付の特許請求の範囲の範囲内に留まることが明らかであろう。その上、既知の装置及び方法の説明は、これらの実施形態の例の説明を分かりにくくしないように省略される場合がある。このような方法及び装置は、明らかに、本教示の範囲内にある。
【0011】
本教示による試験装置の特定の一実施形態は、確認応答(acknowledge)されていないセグメントの再送及びタイムアウトを含む、1981年9月に公表されたコメント要求(RFC)793に定義されているようなDoD標準伝送制御プロトコル(本明細書では「TCP標準規格」)に従って、「ステートフル」な、すなわち、処理状態を把握できるネットワークトラフィックを生成して測定する。したがって、本教示によるシステムで行われる測定は、開放型システム間相互接続モデルのレイヤ3/4におけるコンテキスト内の接続の品質に関する測定を含む。特定の一実施形態では、試験装置は、ペイロードコンテンツにかかわらずTCPセグメントを生成し、TCPセグメントを受信し、そして、TCP標準規格により指示されるようなTCP標準再送セグメントに従ってTCPセグメントを処理する。TCP接続は、双方向であり、2つのエンドポイントから成り、TCP標準規格を介した通信の伝達手段を確立する。特定の一実施形態では、ハードウェア回路構成、具体的には、フィールドプログラマブルゲートアレイ(「FPGA」)がTCP標準規格を実装する。より多くの接続の試験及び測定を行ってより大きなネットワークをエミュレーションするために、試験装置は、単に状態メモリを追加するだけでスケーラブル、すなわち、拡張可能となっている。このスケーラビリティの利点は、試験装置のコストの増加が、システム全体と比較して相対的に小さいという特徴にある。
【0012】
特に図面の図1を参照して、本教示による試験装置100の一実施形態と、被試験デバイス(ここでは「DUT102」)との間の接続が示されている。図1に開示される例では、DUT102は、TCPセグメントを受け取って転送する非終端TCPネットワーキングデバイスである。本教示による試験装置の特定の一実施形態は、ネットワーキングデバイスとしてのDUTの性能を測定することができる。非終端DUTには、ルータ、スイッチ、及びエッジアグレゲーションデバイス(edge aggregation devices)が含まれるが、これらに限定されるものではない。試験装置100は、TCPトラフィックを生成し、DUTによって転送されるTCPトラフィックを受信し、そして、DUTがTCP標準規格に従って、受信したTCPトラフィックを適切に処理して転送するか否かに関してDUTの性能を測定する。本教示の利益を有する当業者は、終端デバイスも同様に試験できることも十分理解する。終端デバイスの例には、ファイアウォール、サーバ、及びウェブプロキシデバイスが含まれるが、これらに限定されるものではない。
【0013】
図1は、複数のプリント回路基板(ここでは「PCB104」)を備える試験装置100を示している。試験装置100は、DUT102のサイズ及び試験される所望の通信ポートの個数に応じて、PCB104のうちの1つ又は複数を使用することができる。図示する特定の実施形態では、各プリント回路基板104は、4つのポート106を受け取ることができる。各ポート106は、全二重通信を提供し、クライアントポート、サーバポート、又はクライアント/サーバ結合ポートのいずれかとなるように構成することができる。サーバポートは、データセグメントのほとんどが試験装置から被試験デバイスへ流れるポートである。このポートは、双方向で流れる制御情報が存在するので全二重のままであるが、大量のデータが試験装置から被試験デバイスへ流れる。クライアントポートは、データ通信のほとんどが被試験デバイスから試験装置へ流れるポートである。クライアント/サーバポートは、ほぼ等しいボリュームのデータトラフィックが双方向で流れるポートである。特定の一実施態様では、試験装置100ごとに少なくとも1つのサーバポート又はクライアント/サーバポートと、少なくとも1つのクライアントポート又はクライアント/サーバポートとが常に存在するが、残りの2つのポートは、ユーザの所望に応じてクライアント、サーバ、又はクライアント/サーバとして構成することができる。
【0014】
特に図面の図2を参照して、クライアント/サーバPCB104の各ポート106をサポートするのに使用されるロジックの一実施形態のブロック図が示されている。図示したようなブロック図は、2個のFPGAによる1セットで実施されているが、単一のFPGA、ASIC、又は現在知られているか後に開発される他の形の論理回路構成として実施することもできる。受信データストリーム220のセグメントは、ポート106を通じてストリームプロセッサコントローラ(ここでは「SPC200」)により受信される。SPC200は、パケットを受信し、受信ストリーム220からTCPセグメントを識別してフィルタリングする。SPC200は、フィルタリングされたTCPセグメントからTCP受信セグメントヘッダフィールド201を抽出するとともに、それらのTCP受信セグメントヘッダフィールド201をTCPプロセッサ(ここでは「TCP202」)へ転送する。SPC200は、受信セグメントヘッダフィールド201における有効なデータを受信セグメントイベント信号203で示す。その後、SPC200は、受信データストリーム220を、本教示に関係しない他の回路へ転送する。
【0015】
TCPプロセッサ202は、TCP標準規格に従ってTCPプロトコルの現実的な一実施態様を実行する。より具体的には、TCP202は、TCP受信セグメントヘッダフィールド201をSPC200から受け取り、受信セグメントヘッダフィールド201を、予想されるヘッダフィールド値と比較する。また、TCP202は、レートジェネレータ206から送信セグメント要求211も受信する。レートジェネレータ206は、通常は秒である単位時間当たりに送信するセグメント数に関するレートで構成され、次セグメントをいつ送信するかをTCP202に伝える。送信セグメント要求211に応答して、TCP202は、次送信セグメントを送信するか、又は、TCP再送プロトコルを実施し、前に送信されてその後確認応答されていないセグメントを再送する。TCP実施機能の一部として、TCP202は、状態アドレスフィールド213を介して外部状態メモリ212をアドレス指定する。各受信セグメントについて、前に記憶された状態データ214が、外部状態メモリ212から検索され、TCP標準規格に従って処理され、その後、新しい状態データ214を状態メモリ212に記憶することによって、現セグメントの状態が更新される。したがって、外部状態メモリ212は、ネットワークの試験中に、全てのアクティブなTCP接続の現在状態を保持する。
【0016】
セグメントジェネレータ207は、TCP202から出力セグメントヘッダ情報209を受け取る。セグメントジェネレータ207は、セグメントジェネレータRAM210に記憶されたテンプレートにアクセスし、出力セグメントヘッダ情報209と共にテンプレートを使用して、送信データストリーム221としてポート106に与えるための現実的なTCP送信セグメントストリーム221を生成する。
【0017】
図面の図2に示す中央処理装置(本明細書では「CPU」)204は、すべての機能ブロック200、202、206、207、210、212に接続されている。明確にするために、実際の接続は示されていない。CPU204と、CPU204が通信する機能ブロックとの間の相互接続は、アドレスバス205、双方向データバス208、読み出し/書き込み信号210、及び確認応答信号215を通じたものとなる。読み出し/書き込み信号210は、データがデータバス上をどの方向へ流れるかについての、CPU204からの表示を提供する。確認応答信号215は、機能ブロックが、情報の転送完了を確認応答することを可能にする。CPU204は、試験に備えて機能ブロックのそれぞれを構成する。また、CPU204は、試験中に試験パラメータを動的に変更することもできる。動的に変更可能な試験パラメータによって、試験装置は、現実的なTCPトラフィック及びアプリケーションの振る舞いをより綿密にエミュレーションすることが可能になる。
【0018】
特に図面の図3を参照して、本教示によるTCP202のブロック図の一実施形態が示されている。この実施形態では、フェッチブロック300が、受信セグメントヘッダフィールド201の、受信セグメント識別子301を含む部分、及び、受信セグメントイベント信号203を受信する。また、フェッチブロック300は、送信セグメント要求211も受信する。送信セグメント要求211は、送信セグメント識別子305及び送信セグメントイベント信号307を含む。フェッチブロック300は、受信セグメント識別子301及び受信セグメントイベント信号203並びに送信セグメント要求211を別々に処理するが、それらを同時に受信することもできる。競合している状況の場合、受信セグメント識別子301及び受信セグメントイベント信号203は、送信セグメント要求211の前に処理される。フェッチブロック300は、受信セグメント識別子301及び送信セグメント識別子305を受け取り、TCP回路部の残りの部分にさらに利用可能にするためにそれらのセグメント識別子の適切な一方をラッチする。
【0019】
フェッチブロック300は、状態アドレス213で外部状態メモリ212をアドレス指定し、記憶又は検索のために状態データ214を与えるか又は受け取る。状態メモリ212はダイナミックメモリである。状態メモリ212は、試験の進行につれて絶えず更新される。状態データ214の一部は、グループ識別子302を含む。フェッチブロック300は、状態データ214を受け取ると、パラメータメモリ304内へのアドレスとして与えるためにグループ識別子302を分離する。パラメータメモリ304の内容は、試験プロセスに先立って、試験構成プロセス中に更新される。また、パラメータメモリ304は、TCP接続の振る舞いを変更するために試験中にも更新することができる。グループ識別子302を与えられることに応答して、パラメータメモリ304は、パラメータメモリ直並列化/ラッチ回路部313を通じてグループパラメータ306を復号ブロック308に与え、パラメータメモリ直並列化/ラッチ回路部313を通じてグループオフセット310をMAP312に与える。MAP312は、状態アドレス213をグループオフセット310と合計して、出力接続識別子307を生成する。
【0020】
フェッチブロック300は、シーケンスステップポインタ301(すなわち受信セグメント識別子301)、出力セグメントヘッダフィールド309、現在状態311、及び現在状態データ319を出力する。シーケンスステップポインタ301は、状態データ214の一部としても見つけられ、シーケンスメモリ303の最初のワードをアドレス指定する。シーケンスメモリ303からの出力は、シーケンスメモリ直並列化/ラッチ回路316を通じて出力セグメントペイロード識別子320としてTCP202の外部へ送られる。シーケンスメモリ直並列化/ラッチ回路316は、シーケンス復号データ322を復号ブロック308へ送り、シーケンス実行データ324を実行ブロック318へ送る。
【0021】
受信セグメント機能ブロック314は、受信セグメント識別子301を有しない受信セグメントヘッダフィールド201を受け取り、復号ブロック308に与えるために受信セグメントヘッダフィールド201をラッチする。受信セグメントブロック314は、送信セグメントイベントがフェッチブロック300によって処理される時、その前の状態から変更されない。
【0022】
タイマ/カウンタブロック326は、クロック信号(図示せず)を受け取る。特定の一実施形態では、クロック信号は、50MHzのシステムクロックを5分周したものに基づいている。タイマ/カウンタブロック326は、分周されたクロック信号の立ち上がりエッジで1つだけインクリメントされ、参照タイマ321を復号ブロック308に提供する。当業者には十分理解されるように、システムクロック及びクロック速度は、設計選択事項であり、当業者の能力の範囲内にある。加えて、クロック技術及びクロック速度は、技術がますます高いクロック周波数に進歩し、基礎を成す回路部を作成するのに使用される材料がさまざまな異なるものになっているので、スケーラブルである。
【0023】
復号ブロック308は、パラメータメモリ304からはパラメータメモリ直並列化/ラッチ回路313を通じてグループパラメータ306を、シーケンスメモリ303からはシーケンスメモリ直並列化/ラッチ回路316を通じてシーケンス復号データ322を、フェッチブロック300からは現在状態データ319を、受信セグメントブロック314からは受信セグメントヘッダフィールド201を、実行ブロック318からは次状態データ選択327を受け取る。復号ブロック308は、現在状態データ319、参照タイマ321、受信セグメントヘッダフィールド201、及びシーケンス復号データ322を受け取り、複数の可能な次状態データ323を計算する。また、復号ブロック308は、現在状態データ319、参照タイマ321、及び受信セグメントヘッダフィールド201も処理して、16個のシングルビット状態入力328として、実行ブロック318に与えるための情報を削減する。
【0024】
実行ブロック318は、現在状態311、シーケンス実行データ324、及び状態入力328に基づいて実際の次状態325を決定する。実行ブロック318は、次状態325をフェッチブロック300に与え、計算された可能な次状態データのいずれかを復号ブロック308からフェッチブロック300へ次状態データ323として与えるべきかを示す次状態データ選択327を復号ブロック308に与える。次状態データ選択327は、実行ブロック318から復号ブロック308への16個のシングルビット入力のフォーマットである。したがって、実行ブロック318は、復号ブロック308から状態入力328を受け取って処理し、次状態325を決定し、次に、次状態選択327を複数のシングルデータビットとして復号ブロック308に与える。復号ブロック308及び実行ブロック318は、本明細書では、個別の機能構成として説明されている。特定の一実施形態では、復号ブロック308の回路部は、計算オペレーション及び比較オペレーション用に最適化されている。計算オペレーション及び比較オペレーションは、前処理機能を独占する傾向がある。実行ブロック318の回路部は、判定実行用に最適化されている。各ブロック308、318は、独占するそれらの機能用に最適化されているので、その組み合わせは最適化されている。当業者には十分理解されるように、復号ブロック308と実行ブロック318との間でなされた区別は、主として説明を明確にするためのものである。具体的には、復号ブロック308は、実行ブロックを構成する回路部によって使用される、復号を提供する回路部である。実行ブロック318は、復号データに基づいて次状態判定を行う回路部である。使用される設計プログラム、ベンダ、及び材料技術に応じて、復号ブロック308及び実行ブロック318を実施する多くの方法が存在する。本教示の実施は、本教示の利益を有する回路設計の分野の当業者の能力の範囲内にある。代替的な実施形態は、単一の機能構成として実施される復号/実行回路部を有することもできるし、復号機能及び実行機能を、本明細書で説明した2つの機能よりも多くの機能に分割することもできる。
【0025】
シーケンスメモリ303は、接続交換が受けるステップのリストを定義する。各シーケンスステップは、条件が満たされた時に、結果として、接続が次シーケンスステップへ進められ、そのステップによって指定されたセグメントの可能な送信が行われることになる当該条件を定義する。シーケンスメモリ303は、シーケンス復号データ322を復号ブロック308に提供し、シーケンス実行データ324を実行ブロック318に提供し、出力セグメントペイロード識別子320をセグメントジェネレータ207に提供する。特定の一実施形態では、シーケンスメモリは、32ビット幅であり、単一のシーケンスメモリレコードは、4つの連続したメモリアドレスロケーションに記憶される。シーケンスメモリレコードの最初の2つのワードは、実行前順序付け機能(pre-execution sequencing function)の目的で使用され、2番目の2つのワードは、実行後順序付け機能(post-execution sequencing function)の目的で使用される。シーケンスステップポインタ301は、シーケンスメモリ303における対応するレコードの最初のアドレスロケーションを指し示し、シーケンスメモリ直並列化/ラッチ回路316は、並列データをバッファリングして、TCP202の残りの部分に与える。特定の一実施形態では、シーケンスメモリレコードの最初のワードは、シーケンスコマンド、予想セグメントサイズ、及びシーケンスの終了を示すフラグを含む。シーケンスコマンドは、実行ブロック318によってオペレーションを指定するのに使用される。シーケンスメモリは、所定のオペレーションシーケンスで次のステップを実行ブロックに示すのに使用される情報を記憶し、また、セグメントをどのように送信するかを指示する。特定の一実施形態では、シーケンスメモリのコマンドフィールドに定義される可能なオペレーションは、単一のセグメントの即時送信(immediate send)、単一セグメントの受信及び送信、単一セグメントの送信なしの受信、複数セグメント転送の即時送信、複数セグメント転送の受信及び送信、並びに複数セグメント転送の受信及び確認応答である。予想セグメントサイズは、復号ブロック308によって、1つ又は複数のセグメントを送信するためにどの条件を設定しなければならないかを判定するのに使用される。レコードの3番目のワードは、復号ブロック308によって使用される、送信セグメントサイズである。シーケンスメモリ303のレコードの4番目のワードは、出力セグメントペイロード識別子320である。出力セグメントペイロード識別子320は、出力セグメントヘッダ情報209の一部としてセグメントジェネレータ207へ送信され、どのタイプのペイロードを送信セグメントの一部として送信するかをセグメントジェネレータ207に示す。
【0026】
パラメータメモリ304は、1つ又は複数のフローグループのTCPプロパティを定義することを可能にする。フローグループは、類似のプロパティを示す接続のグループである。特定の一実施形態では、フローグループの概念は、特定のオペレーティングシステム又はアプリケーションから生じるTCPトラフィックをエミュレーションするのに使用される。状態データ214からのグループ識別子302は、パラメータメモリ304に記憶されているフローグループレコードの最初のワードをアドレス指定するのに使用される。フローグループレコードは、7つの32ビットワードである。フローグループレコードは、シーケンス開始ポインタを含む。シーケンス開始ポインタは、復号ブロック308を通じて、シーケンス開始がリセットされる場合に状態データ214を更新するのに使用される。シーケンス開始ポインタは、特定の接続が次に処理される時に使用されるその接続用の状態データ214に記憶されるシーケンスステップポインタ301になる。フローグループレコードは、リトライ数、接続クローズタイプ、接続オープンイネーブル、及び接続クローズイネーブルをさらに含む。これらのすべては、TCP標準規格で定義されているように復号ブロック30によって使用される。フローグループレコードは、輻輳回避イネーブルフラグ及び高速再送イネーブルフラグをさらに含む。これらのフラグは、定義された各フローグループについて、輻輳回避及び高速再送をオン又はオフにするのに使用される。フローグループレコードは、再送タイムアウト値、最大ウィンドウサイズ、初期ウィンドウサイズ、及び最大セグメントサイズをさらに含む。これらは、TCP標準規格で定義されているように、復号ブロック308によって使用される。また、フローグループレコードは、MAP312と共に使用されるグループオフセット310も含む。フローグループレコードは、送信サイズをさらに含む。送信サイズは、シーケンスコマンドによって定義されるような複数パケット送信について転送されるオクテット、すなわち8ビットデータ、の総数を示す。送信サイズは、ファイル転送ネットワークオペレーションをエミュレーションするのに使用される。また、フローグループレコードは、シーケンス待機時間も含む。シーケンス待機時間は、シーケンスステップが完了した後、接続をクローズする前に、接続がオープン状態である時間量を示す。或いは、シーケンス待機時間は、時間待機シーケンスステップの時間量も示すことができる。好都合なことに、パラメータメモリ304のフローグループパラメータのすべてを試験中に動的に変更することができる。したがって、特定の一実施形態では、フローグループパラメータのすべては、試験開始前に初期化される。サポートされる異なるフローグループの総数は、パラメータメモリ304のサイズ及びグループ識別子302の幅に依存する。当業者には十分理解されるように、他のパラメータをパラメータメモリ304に記憶することができ、フローグループの一部として使用することができ、説明したパラメータは、特定の一実施形態で使用されるパラメータである。
【0027】
実行ブロック318は、計算された次状態325をフェッチブロック300に与える。特定の一実施形態では、次状態325は、当該次状態を以下の状態のうちの1つとして定義する4ビットフィールドとして表される。
closed、
listen、
syn sent、
syn received、
fin wait 1、
fin wait 2、
close wait、
closing、
last ack、
time wait、及び
established。
【0028】
また、実行ブロック318は、出力セグメントヘッダ情報209の一部として出力セグメント送信315及び出力セグメントタイプ317も与える。復号ブロック308は、更新された状態データ214で状態メモリ212を更新する目的で、次状態データ323をフェッチブロック300に提供する。好都合なことに、本教示による特定の一実施形態において復号ブロック308と実行ブロック318との間で機能を分離することにより、性能を改善するために、或る量の復号前処理が可能になる。
【0029】
復号ブロック308は、復号測定データ331を測定ブロック329に渡し、実行ブロック318は、実行測定信号330を測定ブロック329に渡す。
【0030】
特に図面の図4を参照して、本教示と一致するフェッチブロック300の特定の一実施形態のより詳細な図が示されている。この図では、受信セグメント識別子301及び送信セグメント識別子305は、識別子セレクタ400に与えられる。これらの双方の識別子は、図示する特定の実施形態では幅が16ビットである。この特定の実施形態では、識別子セレクタ400は、サポートロジックと組み合わせられる受信セグメントイベント信号203及び送信セグメントイベント信号307により制御される2×1の16ビットマルチプレクサである。双方のイベント信号203、307は、シングルビット信号であり、各セグメント識別子301、305が有効なデータを有することをフェッチブロック300に示す。受信セグメントイベント203が真になった場合、識別子セレクタ400は、受信セグメント識別子301を識別子マルチプレクサ出力401に配置する。この識別子マルチプレクサ出力401において、受信セグメント識別子301を識別子ラッチ402にラッチすることができる。送信セグメントイベント307が真になった場合、識別子セレクタ400は、送信セグメント識別子305を識別子マルチプレクサ出力401に配置する。この識別子マルチプレクサ出力401において、送信セグメント識別子305を識別子ラッチ402にラッチすることができる。したがって、当業者には十分理解されるように、送信セグメント識別子301及び受信セグメント識別子305は、同様に処理される。送信セグメントイベント信号307が受信セグメントイベント信号203と同時に真になった場合、識別子セレクタ400は、ホールドオフ機能、すなわち遅延機能を有し、このホールドオフ機能によって、受信セグメントイベント信号303は最初に処理され、その後、受信セグメントイベント信号203の処理が完了した時に、送信セグメントイベント信号307が処理される。好都合なことに、すべてのイベントは競合状況の場合にも処理され、受信セグメントが最初に処理される。その理由は、受信データセグメントは、限られた時間の間有効であり、且つ、データ喪失を回避するために処理の優先権を与えられるからである。
【0031】
識別子ラッチ402の出力は、それ自体を状態アドレス213として与えて、状態メモリ212をアドレス指定する。状態アドレス213を起点として配置された状態メモリ212のデータは、状態データ214としてフェッチブロック300に与えられる。状態データ214は、状態メモリ212の複数のメモリワードに記憶される。したがって、状態アドレス213は、対応する状態データ214を記憶する状態メモリ212の部分の最初のワードをアドレス指定する。特定の一実施形態では、状態メモリ212は、幅が32ビットであり、状態データ214は、合計が256ビットの、状態メモリ212の8つの連続したロケーションに記憶される。
【0032】
本教示によるTCPの一実施態様の特定の一実施形態では、状態メモリ212に記憶されている状態データ214のほとんどは、TCP標準規格に定義されているパラメータを含む。これらのパラメータは、接続状態、複製ACKカウンタ、リトライ試行回数のカウント、接続イネーブルフラグ、タイムアウトタイマアクティブフラグ、輻輳制御アクティブフラグ、タイムアウト値、確認応答されていないシーケンス番号、次シーケンス番号、スロースタートしきい値、送信ウィンドウサイズ、及び受信ウィンドウサイズ、予想される次シーケンス番号を含む。
【0033】
TCP標準規格には定義されていないが、本教示で定義される4つのパラメータが存在する。これらの4つのパラメータは、状態データ214として記憶され、接続グループ識別子、シーケンス状態、現シーケンスステップポインタ、及びシーケンスエンドポインタを含む。接続グループ識別子302は、接続が属する接続グループを定義し、パラメータメモリ304をインデックスするのに使用される。シーケンス状態は、各セグメントの現在状態を保持する。現シーケンスステップポインタ301は、シーケンスステップメモリ303における現シーケンスステップレコードの最初のワードを指し示す。シーケンスエンドポインタは、複数セグメントデータ転送の終了シーケンス番号を定義する。
【0034】
状態データ214は、バッファリングされ(404)、直並列化され、ラッチされ、そして、機能に従って分配される。状態データ214のグループ識別子302の部分は、グループ識別子ラッチ406に与えられる。グループ識別子ラッチ406では、その出力は、TCP202の他の場所で使用されるデータにアクセスするためにパラメータメモリ304をアドレス指定する。状態データ214の現接続状態405の部分は、状態セレクタ410及び状態ラッチ414へ送られる。状態データ214の一部として定義される残りの各状態アイテムは、複数の状態データセレクタ408のそれぞれ1つ、及び、複数の対応する状態データラッチ412のそれぞれ1つに関連付けられる。この特定の実施形態では、合計16個の別個の状態データセレクタ408及び合計16個の各状態データラッチ412が存在する。フェッチブロック読み出しサイクルの完了時に、状態データラッチ412には、状態メモリ212から直並列化された状態データ214がロードされる。状態データラッチ412は、それによって、現在状態データ319のすべてを復号ブロック308に与える。現在状態311は、実行ブロック318に与えられ、グループ識別子302は、パラメータメモリ304に与えられる。
【0035】
特定の一実施形態では、フェッチブロック300の読み出しサイクルは、状態メモリ212から読み出しを行い、状態データ214にアクセスして状態データ214を各状態データラッチ412、グループ識別子ラッチ406、及び状態ラッチ414にラッチする一連の8つの読み出しを含む。読み出し/書き込み選択419は、データの所望のソースを示す。読み出しサイクルでは、データのソースは、状態メモリ212からである。書き込みサイクルでは、状態メモリ212で更新されるデータのソースは、実行ブロック318からの次状態325及び復号ブロック308からの次状態データ323である。
【0036】
TCP202が受信セグメント識別子301又は送信セグメント識別子305を処理した後、フェッチブロック300は、状態データ214を更新し、状態データ214を状態メモリ212に戻して記憶する。直列化セレクタ(serializing selector)416は、状態データ214を、バッファ418を通じて状態メモリ212に記憶するのに適した複数のワードにセグメント化する。直列化セレクタ書き込み選択417は、フェッチブロック300の書き込みサイクル中に直列化セレクタ416のどの入力を状態メモリ212に記憶するかを選択する。
【0037】
フェッチブロックは、前に処理された送信セグメント識別子又は受信セグメント識別子が現受信セグメント識別子又は現送信セグメント識別子と一致する場合に、状態メモリへのアクセスを抑制するようになっている。具体的には、識別子セレクタ400の一部であるサポートロジックが、送信セグメント識別子305及び受信セグメント識別子301を比較する。これらの2つの識別子301、305が同じである場合、現在状態311及び現在状態データ319は、フェッチブロックラッチ412及び414にすでにラッチされていることが分かる。したがって、状態メモリ212からの次の読み出しサイクルを抑制する信号が、残りのフェッチブロックロジックへ送信される。好都合なことに、これによって、セグメント識別子301、305が一致する場合に不要な読み出しサイクルをスキップすることにより、より効率的な処理が可能になる。セグメント識別子301、305が一致しない場合、読み出しサイクルが進行する。
【0038】
状態データ214の接続グループ識別子の部分は、フェッチブロック300にラッチされ、グループ識別子302としてパラメータメモリ304に与えられる。パラメータメモリ304は、接続のグループに共通のパラメータを含む。特定の一実施形態では、128個の接続グループが可能である。
【0039】
DoD標準伝送制御プロトコル(TCP)標準規格(本明細書では「TCP標準規格」)は、1981年9月に公表されたRFC793に定義されており、TCP輻輳制御標準規格(本明細書では「輻輳制御標準規格」)は、1999年4月に公表されたRFC2581に定義されている。これらの双方の参照文書の内容は、参照により本明細書に援用される。復号機能ブロック308及び実行機能ブロック318は、TCP標準規格及び輻輳制御標準規格の大部分を実施する。実施されない部分は、試験装置100の別の部分で実施されるか、又は、ネットワークトラフィックの現実的なシミュレーション及び試験に必須であるとはみなされない。しかしながら、この特定の実施形態の復号ブロック308及び実行ブロック318の実施されないTCP標準規格及び輻輳制御標準規格の部分は、本教示による他の実施形態で実施することができる。特定の一実施形態での実施用に選ばれた標準規格のサブセットは、現実的なデータストリームを生成して、生成されたデータストリームに適切に応答する能力を最大にし、結果として生じる測定値がデバイスの試験に関係するように、それらの測定値の有効性を維持する。
【0040】
TCP標準規格及び輻輳制御標準規格は、復号ブロック308及び実行ブロック318の組み合わせで実施される。具体的には、復号ブロック308は、TCP標準規格及び輻輳制御標準規格に従って計算を実行し、新しいセグメントを送信するか否か及び新しいセグメントをいつ送信するかを判定する。復号ブロック308は、計算の結果を状態入力328として実行ブロック318へ送信する。実行ブロック318は、適切な次の状態325及び送信される次のセグメント209となるべきものに関する決定を状態入力328に基づいて行う。
【0041】
復号ブロック308は、TCP伝送が基づいている変数データを計算し、状態入力328の形の2値フラグを実行ブロック318へ送信する。実行ブロック318は、状態入力328、シーケンス実行データ324、及び現在状態311を使用して、次状態325及びどのセグメントを送信するか(209)の最終決定を行う。復号ブロック308は、計算機能及び比較機能を並列に実行する計算効率について最適化され、計算機能の結果及び比較機能の結果を準備して実行ブロック318に与える。したがって、実行ブロック318は、現在状態311、シーケンス実行データ324、及び状態入力328に基づいて効率的な最終決定を行うことができる。実行ブロック318は、次に、次状態325及び次状態データ選択327の形で最終決定を広め、すなわち配布し、状態メモリ212の更新を行う。加えて、実行ブロック318は、出力セグメント送信315及び出力セグメントタイプ317を使用して次のセグメント送信を指示する。
【0042】
状態入力328は、復号ブロック308から実行ブロック318へのシングルビット信号を含む。このシングルビット信号では、論理「1」は、条件が真であることを示す。シーケンス番号比較の多くは、TCP標準規格の3.3節に定義されており、状態入力328の残りの部分は、その標準規格の他の部分に定義されているか、又は、実施に依存している。状態入力328は次のものを含む。
1.タイムアウト(timeout):これが真の場合には、タイマ326が、個別の接続について状態データ214に記憶されたタイムアウト値より大きいことを意味する。すなわち、タイマが時間切れとなったことを意味する。
2.イネーブル(enable):個別のフローを動的にオン(真)/オフ(偽)にする。
3.タイマアクティブ(timer active):真の場合は、タイムアウト条件の関連付け及びタイムアウト信号の発生が可能になる。
4.受信ウィンドウが受信ウィンドウ最大値よりも小さい:真の場合は、現ウィンドウで受信されたセグメントの数が、単一のウィンドウで受信できるセグメントの最大数よりも少ないことを意味する。
5.受信されて確認応答されたセグメント番号が、送信される次セグメント番号に等しい:真の場合は、次セグメント番号が、予想されるセグメント番号であることを示す(サーバ側)。
6.受信されて確認応答されたセグメント番号が、送信される次のセグメント番号以下である:真の場合は、現セグメントが有効であることを意味する(サーバ側)。
7.セグメントシーケンス番号が、次に受信されると予想される次セグメント番号に等しい:真の場合は、現セグメントシーケンス番号が有効であることを意味する(クライアント側)。
8.状態データのシーケンスエンドフィールドが、状態データの次受信フィールド(receive next field)に等しい:真の場合は、クライアントが、予想されるすべてのセグメントの受信を終了したことを意味する(クライアント側)。
9.状態データのシーケンスエンドフィールドが、最後に確認応答されたシーケンスのセグメント番号に等しい:真の場合は、サーバによって送信されたすべてのセグメントの受信が成功し、接続をクローズできることを示す(サーバ側)。
10.状態データのシーケンスエンドフィールドが、最後に受信されたセグメントシーケンス番号に等しい:真の場合は、クライアントによって受信されたすべてのセグメントの受信が成功し、接続をクローズできることを示す(クライアント側)。
11.次に送信されるシーケンス番号が、確認応答されていない最も古い送信シーケンス番号に等しい:真の場合は、送信されたすべてのセグメントが確認応答されたことを示す(サーバ側)。
12.送信される次シーケンス番号が、現送信ウィンドウ内にある:真の場合は、次セグメントを送信できることを意味する。
13.送信されたが、まだ確認応答されていないセグメントが、確認応答されるセグメントよりも少ない:真の場合は、確認応答されるセグメントが有効範囲内にあることを示す。
14.高速再送(fast retransmit):真の場合は、クライアントがセグメントを受信し損ねていることを示す。
15.ラウンドトリップ時間(round trip time):真の場合は、ラウンドトリップ時間が有効であることを示す。これは統計として収集される。
16.リトライ最大値(retry max):真の場合は、セグメントを送信するリトライの最大数を超え、接続を打ち切ることができることを示す。
【0043】
RFC793の3.2節「専門用語」を特に参照して、本教示による特定の一実施態様は、送信緊急ポインタ及び受信緊急ポインタを除く送信シーケンス変数及び受信シーケンス変数のすべてを状態データ214の一部として保持する。本実施態様では、送信緊急ポインタ及び受信緊急ポインタは、標準規格の性能にストレスを与えない特定のタイプのネットワークセッションに有用である。したがって、単純化するために、緊急ポインタ機能は、本教示による特定の一実施態様では実施されない。しかしながら、本教示はその実施を排除するものではない。
【0044】
本教示による受信セグメントヘッダフィールド201は、セグメント緊急ポインタ及びセグメント優先値を除く現セグメント変数のすべてを保持する。セグメント緊急ポインタは、送信シーケンス変数及び受信シーケンス変数について明言したのと同じ理由でされない。セグメント優先値は、復号ブロック308及び実行ブロック318では実施されないが、試験装置100のセグメントジェネレータ207の部分内では実施される。
【0045】
実行ブロック318は、TCP標準規格の図6に示すようなすべての状態及び遷移を実施する。具体的には、実行ブロック318は、現在状態311及びシーケンス実行データ324を受け取る。復号ブロック308からの計算された状態入力328に基づいて、実行ブロックは次状態325を決定する。
【0046】
復号ブロック308及び実行ブロック318は、3.3節から3.5節で定義されている機能を実施する。本教示による実行ブロック318は、RFC793の3.6節の優先度及びセキュリティを実施しないが、本教示はその実施を排除するものではない。
【0047】
本教示は、3.7節の再送タイムアウトを実施するが、標準規格で定義されているような動的アルゴリズムの代わりに一定の再送タイムアウトを実施し、緊急情報の通信を実施しない。しかしながら、本教示は、その実施を排除するものではない。この節で定義されているようなウィンドウ管理機能は、主として復号ブロック308によって実行される。具体的には、受信セグメントヘッダフィールド201は、送信セグメントの確認応答を提供する。復号ブロック308は、次のセグメントを送信できるか否か及び送信できる時を判定する前に、確認応答されたセグメントを処理する。TCP標準規格の3.8節は、本教示による試験装置では実施されない。その理由は、3.8節は、主として、アプリケーションとTCPレイヤとの間のソフトウェアインターフェースに適用されるからである。
【0048】
RFC793の3.9節は、イベント処理を定義している。本教示による特定の一実施形態で実施されるイベントは、TCP標準規格の節で定義されているような「セグメント到着」及び「再送タイムアウト」を含む。TCPレイヤとアプリケーションレイヤとの間のイベントは排除されないが、本教示による特定の一実施形態では実施されない。
【0049】
実行ブロック318は、現接続の次状態325を決定して、次セグメント209を送信する時、その判定を、フェッチブロック300には次状態325の形で、復号ブロック308には次状態データ選択327の形で広める。復号ブロック308は、次状態データ選択327を受け取り、状態メモリ212の状態データ214の更新のために、次状態データ323をフェッチブロック300に返す。次状態データ選択327は、次状態325の状況を示す21個のシングルビット信号の形である。これらの21個のシングルビット信号は、次のものを含む。
1.高速再送の設定(set fast retransmit):真の場合は、高速再送が処理されたという確認応答である。
2.スロースタート及び輻輳回避の設定(set slow start and congestion avoidance):真の場合は、タイムアウトが発生したという確認応答である。
3.アクティブに設定されたタイムアウト(timeout set active):真の場合は、最後の送信セグメントのタイマのリセットを開始する。
4.再送タイムアウト値に設定されたタイムアウト(timeout set to retransmission timeout value):真の場合は、タイムアウト値を、定義された接続グループのパラメータのタイムアウト値に設定することを開始する。
5.時刻に設定されたタイムアウト(timeout set to time):真の場合は、現接続グループのパラメータメモリの待機時間にタイマを設定する。
6.リトライリセット(retry reset):真の場合は、接続の最も近時のリトライが成功したこと、及び、リトライカウンタをリセットできることを示す。
7.リトライインクリメント(retry increment):真の場合は、リトライがもう一度試行されて、復号ブロック308に、リトライカウンタを1つだけインクリメントさせることを示す。
8.送信されたが確認応答されていない最後のセグメント番号が、受信された最後のセグメントのセグメント番号に等しく設定される(Last unacknowledged segment number sent is set equal to the segment number of the last segment received):真の場合は、確認応答されていない最後のセグメント番号を更新すべきであることを示す。
9.次送信インクリメント(send next increment):真の場合は、状態データ214の次送信フィールド(send next field)を整数値の1だけインクリメントする。この信号は、特にTCP接続をオープン又はクローズする時に使用される。
10.送信長分の次送信インクリメント(send next increment by send length):真の場合は、状態データ214の次送信フィールドが、シーケンスメモリに記憶されたようなセグメント当たりに送信されたオクテットの個数だけインクリメントされる(サーバ側)。
11.確認応答されていない送信への次送信設定(send next set to send unacknowledged):真の場合は、送信されたが確認応答されていない最後のセグメント(last unacknowledged segment sent)への次送信ポイント(send next point)のリセットを開始する。
12.タイマへの次送信設定(send next set to timer):真の場合は、タイマが最初のシーケンス番号を初期化するのに使用されることを示す。
13.シーケンスポインタリセット(sequence pointer reset):真の場合は、シーケンスポインタを、シーケンスメモリに記憶された最初のシーケンスステップにリセットすべきことを示す。
14.シーケンスポインタインクリメント(sequence pointer increment):真の場合は、シーケンスポインタを次シーケンスステップにインクリメントすべきことを示す。
15.セグメント長分の受信ウィンドウディクリメント(receive window decrement by segment length):真の場合は、受信ウィンドウサイズの長さが、すでに受信されたセグメント長の分だけ減少されることを示す(クライアント側)。
16.受信長分だけインクリメントされた受信ウィンドウ(receive window incremented by receive length):真の場合は、受信ウィンドウが、現接続グループで定義されるような所定のサイズでオープンされることを示す。
17.次受信リセット(receive next reset):真の場合は、新しい接続及び状態データ214の次受信フィールドが0にリセットされることを示す。
18.セグメント長分の次受信インクリメント(receive next increment by segment length):真の場合は、状態データ214の次受信フィールドを、受信された最後のセグメントのセグメント長分だけインクリメントする(クライアント側)。
19.セグメントシーケンスインクリメントへの次受信設定(receive next set to segment sequence increment):真の場合は、新しい接続の期間中、状態データ214の次受信フィールドが、丁度受信されたセグメントのシーケンス番号に設定されることを示す。
20.次送信へのシーケンスエンドロード(sequence end load into send next):接続がオープンされて、状態データ214のシーケンスエンドフィールドを、現接続をクローズするシーケンス番号へ設定することを開始する時に真になる(サーバ側)。
21.シーケンスエンドロード次受信(sequence end load receive next):真の場合は、状態データ214のシーケンスエンドフィールドを、現接続をクローズするシーケンス番号に設定する(クライアント側)。
【0050】
復号ブロック308及び実行ブロック318は、各セグメント処理の結果を実行測定信号330、現セグメントサイズ331(オクテットの単位で表される)、及びラウンドトリップ時間332で測定ブロック329へ通信する。統計の目的で、「接続」は、双方向TCPデータストリーム又は「フロー」として定義される。各接続は、「オープン中(opening)」、「オープン済(opened)」、「クローズ中(closing)」、及び「closed(クローズ済)」の4つの可能な状態のうちの1つにあるとして特徴付けることができる。「アクティブ接続」は、「オープン中」状態、「オープン済」状態、又は「クローズ中」状態にある。接続が失敗した場合、その接続は、「オープン失敗(failed to open)」又は「オープン後の失敗(failed after open)」のいずれかとして特徴付けることができる。「オープン失敗」は、オープン中状態の間に失敗した接続である。「オープン後の失敗」は、「オープン済」状態に達した後の或る時点で失敗した接続である。これらの定義に基づいて、測定ブロック329は、実行測定信号330及びセグメントサイズ331及びラウンドトリップ時間332を使用して、以下の統計を収集する。
1.TCPアクティブ接続(TCP active connections):「オープン中」状態、「オープン済」状態、又は「クローズ中」状態にある接続をカウントする。
2.確立されたTCP接続(TCP connections established):「オープン済」状態の接続をカウントする。
3.試行されたTCP接続(TCP connections attempted):「オープン中」状態に入る接続をカウントする。
4.オープンに失敗したTCP接続(TCP connections that Failed to Open):「オープン中」状態に入ったが、「オープン済」状態に達しなかった接続をカウントする。
5.オープン後に失敗したTCP接続(TCP connections that Failed after Open):「オープン済」状態に達した後に失敗した接続をカウントする。
6.TCPタイムアウト(TCP timeouts):タイムアウトに達したものをカウントする。
7.TCP高速再送条件(TCP fast retransmit conditions):開始された高速再送をカウントする。
8.TCP再送されたレイヤ4のペイロードのオクテット(TCP retransmitted layer-4 payload octets):再送されたペイロードのオクテットをカウントする。
9.送信されたTCPセグメント(TCP segments transmitted):TCP202から送信されたセグメントをカウントする。
10.受信されたTCPセグメント(TCP segments received):TCP202によって受信された有効なセグメントをカウントする。
11.送信されたTCPレイヤ2オクテット(TCP layer-2 octets transmitted):TCP202によって送信されたレイヤ2のオクテットをカウントする。
12.受信されたTCPレイヤ2オクテット(TCP layer-2 octets received):TCP202によって受信されたレイヤ2のオクテットをカウントする。
13.受信された良好なTCPレイヤ4オクテット(TCP good layer-4 octets received)(「グッドプットオクテット(goodput octets)」):SPC200によって受信されたレイヤ4のオクテットをカウントする。
14.受信された良好なTCPレイヤ4セグメント(TCP good layer-4 segments received)(「グッドプットセグメント(goodput segments)」):TCP202によって受信された有効なレイヤ4セグメントをカウントする。
15.TCPラウンドトリップ(TCP round trips):ラウンドトリップをカウントする。
【0051】
SPC200は、ポート単位でのみ以下の統計を収集する。
16.TCP誤送セグメント統計(TCP misdirected segments statistics):TCP202によって受信された有効なTCPセグメントの個数。
17.受信されたTCPチェックサムエラー:TCPチェックサムエラーを含む受信された有効なTCPセグメントの個数。
【0052】
CPU204は、規則的なサンプリング間隔で測定ブロック329及びSPC200にアクセスして、収集される統計を集めて表示する。特定の一実施形態では、サンプリング間隔は1秒であるが、他の間隔も可能である。加えて、CPU204のソフトウェアは、以下の統計も導出する。
18.受信されないTCPセグメント(TCP segments not received):クライアント側の受信されないTCPセグメントは、サーバグループが送信したセグメントからクライアントグループが受信したセグメントを差し引くことによって計算される。サーバ側の受信されないTCPセグメントは、クライアントグループが送信したセグメントからサーバグループが受信したセグメントを差し引くことによって計算される。
19.TCPレイヤ2送信スループット(TCP layer-2 throughput transmitted):サンプリング間隔中に送信されたオクテット数を与えることによって計算される。
20.TCPレイヤ2受信スループット(TCP layer-2 throughput received):サンプリング間隔中に受信されたオクテット数を与えることによって計算される。
【0053】
実行測定信号330は、測定された状況のうちの1つ又は複数が発生した時に実行ブロック318によって設定されるシングルビット信号を含む。実行測定信号330の各シングルビット信号は、測定ブロック329の各カウントに接続している。測定ブロック329の各カウントは、論理の真を受信した時にインクリメントされる。CPUは、規則的な間隔であるサンプリング間隔で測定ブロック329にアクセスする。カウンタは、各サンプリング間隔にわたるカウントを累積することによって実行測定信号330に応答する。CPUが各カウンタを読み出した後、カウンタは、リセットされ、新しいサンプリング間隔にわたる累積を開始する。CPUは、各サンプリング間隔における瞬時値を更新してディスプレイに提示する。また、CPUは、同じ統計測定値の累積値を計算して保持し、その累積値も同様に表示する。
【0054】
セグメントサイズ331及びラウンドトリップ時間332は、実行測定データ330と同時に測定ブロック329へ送信される。特定の一実施形態では、セグメントサイズは、現セグメントで受信又は送信されたオクテット数を含む16ビットワードである。ラウンドトリップ時間332は、現セグメントのラウンドトリップ時間を表す32ビットワードである。TCPラウンドトリップ統計のこの特定の例では、測定ブロック329のカウンタは、サンプリング間隔中に行われたラウンドトリップの回数をカウントする。また、測定ブロック329は、実行測定信号330のラウンドトリップ信号を受信する時にラウンドトリップ時間332を累積する。CPU204は、累積されたラウンドトリップ時間の総計を、サンプリング間隔内のラウンドトリップの総数によって割ることにより、平均ラウンドトリップ時間を計算して与える。
【0055】
当業者には十分理解されるように、測定ブロック329は、インクリメントカウンタからの直接読み出しに基づいて統計をカウントすることもできるし、インクリメントカウンタ及び送信されたオクテットサイズもしくは受信されたオクテットサイズ又はラウンドトリップ時間の計算に基づいて統計を計算することもできる。多くの場合、各測定について2つの値が収集される。一方は瞬時測定値であり、これは、単一の所定のサンプリング間隔中に収集される。他方は累積測定値であり、これは、試験全体にわたるイベントの連続した累積値である。
【0056】
この教示の実施形態は、本明細書では、現実的なネットワークトラフィックを生成し、生成されたトラフィックに対するデバイスの応答を測定するための方法及び装置を説明する添付図面に関する例として説明されている。本教示の他の変形、適応、及び実施形態が、本教示の利益を与えられる当業者には思いつくであろう。
【0057】
最後に本発明の代表的な実施態様を述べる。
(実施態様1)
複数のセグメントを含む受信データストリーム(220)を連続して受け取るストリームプロセッサコントローラ(200)であって、前記受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラ(200)と、
前記受信セグメントのヘッダフィールド(201)を受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサ(202)と、
前記セグメントプロセッサ(202)へセグメントを送信する要求(211)を送信するレートジェネレータ(206)と、
前記出力ヘッダフィールドに応答して、送信データストリーム(221)を生成するセグメントジェネレータ(207)と
を備え、前記セグメントプロセッサ(202)は、前記要求を受け取って、出力セグメントヘッダフィールド309を生成することにより前記要求に応答し、前記セグメントプロセッサ(202)は、前記受信セグメントのそれぞれ及び出力セグメントのそれぞれの状態を状態メモリ(212)に保持する装置。
【0058】
(実施態様2)
前記セグメントジェネレータは、複数の送信セグメントを準備して送り出し、それによって前記送信データストリーム(221)を形成し、前記送信セグメントのそれぞれは、前記出力ヘッダフィールド(309)に基づいている、実施態様1に記載の装置。
【0059】
(実施態様3)
前記セグメントプロセッサは、前記受信ヘッダフィールド(201)及び前記送信ヘッダフィールド(309)に含まれる情報に基づいて統計を収集する、実施態様1に記載の装置。
【0060】
(実施態様4)
前記セグメントプロセッサ(202)は、フィールドプログラマブルゲートアレイである、実施態様1に記載の装置。
【0061】
(実施態様5)
前記ストリームプロセッサコントローラ(200)は、前記セグメントプロセッサ(202)によって受け取られるTCPセグメントとして識別された受信セグメントをフィルタリングする、実施態様1に記載の装置。
【0062】
(実施態様6)
前記セグメントジェネレータは、前記出力ヘッダフィールドに基づいてTCPセグメントを生成して送り出す、実施態様5に記載の装置。
【0063】
(実施態様7)
複数のTCP接続のうちの現接続に対応する受信セグメント識別子(301)を受信するようになっているフェッチブロック(300)と、
前記複数の接続のそれぞれの現在状態に対応する状態データを保持するようになっている状態メモリ(212)であって、前記フェッチブロックは、前記受信セグメント識別子に基づいて現接続の状態データにアクセスするようになっている、状態メモリ(212)と、
前記現接続の前記現在状態及び受信セグメントヘッダフィールド(201)に基づいて、前記現接続の次状態を決定するようになっている実行ブロック(318)であって、前記現接続の前記次状態に関係するイベントを信号で伝えるようになっている、実行ブロック(318)と、
前記イベントを累積するようになっている測定ブロック(329)と
を備え、前記フェッチブロックは、前記現接続の前記次状態で前記状態メモリを更新するようになっている装置。
【0064】
(実施態様8)
前記実行ブロックは、前記イベントを複数のシングルビット表示により信号で伝え、前記測定ブロックは、前記シングルビットイベント表示のそれぞれを蓄積する複数のそれぞれのカウンタをさらに備える、実施態様7に記載の装置。
【0065】
(実施態様9)
TCP標準規格に従って複数の可能な次状態データを計算し、新しいセグメントが送信される時は前記実行ブロックへ表示を送信する復号ブロック(308)をさらに備える、実施態様7に記載の装置。
【0066】
(実施態様10)
前記実行ブロックは、前記表示を受け取り、送信される次セグメントを決定し、出力セグメント情報を生成する、実施態様9に記載の装置。
【0067】
(実施態様11)
シーケンスメモリ(303)をさらに備え、前記フェッチブロックは、該シーケンスメモリにアクセスして前記実行ブロックにシーケンスコマンドを与える、実施態様7に記載の装置。
【0068】
(実施態様12)
前記実行ブロックは、前記シーケンスコマンドに応答して、前記現接続の前記次状態を決定する、実施態様11に記載の装置。
【0069】
(実施態様13)
前記フェッチブロックは、送信セグメント識別子(305)を受信するとともに、前記送信セグメント識別子に基づいて前記現接続の前記状態データにアクセスするようになっている、実施態様7に記載の装置。
【0070】
(実施態様14)
前記受信セグメント識別子及び前記送信セグメント識別子が同時に到着する場合に、前記フェッチブロックはさらに、該送信セグメント識別子の処理を延期するようになっている、実施態様13に記載の装置。
【0071】
(実施態様15)
前に処理されたセグメント識別子が現セグメント識別子と一致している場合に、前記フェッチブロックは、前記状態メモリへのアクセスを抑制するようになっている、実施態様7に記載の装置。
【0072】
(実施態様16)
所定のオペレーションシーケンスで次のステップを前記実行ブロックに示すようになっているシーケンスメモリ(303)をさらに備える、実施態様7に記載の装置。
【0073】
(実施態様17)
出力セグメントペイロード識別子をセグメントジェネレータに示すようになっているシーケンスメモリ(303)をさらに備える、実施態様7に記載の装置。
【0074】
(実施態様18)
少なくとも1つのフローグループに共通であるTCPパラメータを保持するようになっているパラメータメモリ(304)をさらに備え、該パラメータメモリは、前記状態データからグループ識別子(302)によってアドレス指定可能であり、前記TCPパラメータは、前記復号ブロックに通知される、実施態様9に記載の装置。
【0075】
(実施態様19)
複数の接続のうちの1つに関係する受信セグメント識別子(301)を含む受信セグメントヘッダフィールドを受け取ること、
前記識別された接続の現在状態に対応する、メモリ(212)における状態データにアクセスすること、
TCP標準規格に従って、前記受信セグメントヘッダフィールド(201)を処理すること、
前記受信セグメントヘッダフィールド(201)に関係する前記接続を次状態に進めること、
前記接続の統計を累積すること、及び
前記接続の前記次状態に対応する状態データで前記メモリを更新すること
を含む方法。
【0076】
(実施態様20)
複数の前記受信セグメントヘッダフィールド(201)のそれぞれについて、前記受け取ること、前記アクセスすること、前記処理すること、前記進めること、前記累積すること、及び前記更新することを繰り返すことをさらに含む、実施態様19に記載の方法。
【0077】
(実施態様21)
前記接続のうちの1つに関係する送信セグメント識別子(305)を受け取ること、前記TCP標準規格に従って前記送信セグメント識別子を処理すること、及び送信パケットヘッダ情報を生成することをさらに含む、実施態様19に記載の方法。
【図面の簡単な説明】
【0078】
【図1】本教示による試験装置の一実施形態と被試験デバイスとの間の接続を示す図である。
【図2】図1に示すポートのうちの1つをサポートする、本教示と一致するロジックの一実施形態を示す図である。
【図3】本教示によるTCPプロセッサロジックの特定の一実施形態のより詳細な図である。
【図4】本教示と一致するフェッチブロックロジックの特定の一実施形態のより詳細な図である。
【符号の説明】
【0079】
200 ストリームプロセッサコントローラ
201 受信セグメントヘッダフィールド
202 TCPプロセッサ
203 受信セグメントイベント信号
204 中央処理装置
205 アドレスバス
206 レートジェネレータ
207 セグメントジェネレータ
208 双方向データバス
209 出力セグメントヘッダ情報
210 読み出し/書き込み信号
211 送信セグメント要求
212 外部状態メモリ
213 状態アドレスフィールド
214 新しい状態データ
215 確認応答信号
220 受信データストリーム
221 送信データストリーム

【特許請求の範囲】
【請求項1】
複数のセグメントを含む受信データストリームを連続して受け取るストリームプロセッサコントローラであって、前記受信データストリームから受信セグメントをフィルタリングする、ストリームプロセッサコントローラと、
前記受信セグメントのヘッダフィールドを受け取って処理するハードウェアで実施される処理ロジックを有するセグメントプロセッサと、
前記セグメントプロセッサへセグメントを送信する要求を送信するレートジェネレータと、
前記出力ヘッダフィールドに応答して、送信データストリームを生成するセグメントジェネレータと
を備え、前記セグメントプロセッサは、前記要求を受け取って、出力セグメントヘッダフィールド309を生成することにより前記要求に応答し、前記セグメントプロセッサは、前記受信セグメントのそれぞれ及び出力セグメントのそれぞれの状態を状態メモリに保持する装置。
【請求項2】
前記セグメントジェネレータは、複数の送信セグメントを準備して送り出し、それによって前記送信データストリームを形成し、前記送信セグメントのそれぞれは、前記出力ヘッダフィールドに基づいている、請求項1に記載の装置。
【請求項3】
前記セグメントプロセッサは、前記受信ヘッダフィールド及び前記送信ヘッダフィールドに含まれる情報に基づいて統計を収集する、請求項1に記載の装置。
【請求項4】
前記セグメントプロセッサは、フィールドプログラマブルゲートアレイである、請求項1に記載の装置。
【請求項5】
前記ストリームプロセッサコントローラは、前記セグメントプロセッサによって受け取られるTCPセグメントとして識別された受信セグメントをフィルタリングする、請求項1に記載の装置。
【請求項6】
前記セグメントジェネレータは、前記出力ヘッダフィールドに基づいてTCPセグメントを生成して送り出す、請求項5に記載の装置。
【請求項7】
複数のTCP接続のうちの現接続に対応する受信セグメント識別子を受信するようになっているフェッチブロックと、
前記複数の接続のそれぞれの現在状態に対応する状態データを保持するようになっている状態メモリであって、前記フェッチブロックは、前記受信セグメント識別子に基づいて現接続の状態データにアクセスするようになっている、状態メモリと、
前記現接続の前記現在状態及び受信セグメントヘッダフィールドに基づいて、前記現接続の次状態を決定するようになっている実行ブロックであって、前記現接続の前記次状態に関係するイベントを信号で伝えるようになっている、実行ブロックと、
前記イベントを累積するようになっている測定ブロックと
を備え、前記フェッチブロックは、前記現接続の前記次状態で前記状態メモリを更新するようになっている装置。
【請求項8】
前記実行ブロックは、前記イベントを複数のシングルビット表示により信号で伝え、前記測定ブロックは、前記シングルビットイベント表示のそれぞれを蓄積する複数のそれぞれのカウンタをさらに備える、請求項7に記載の装置。
【請求項9】
TCP標準規格に従って複数の可能な次状態データを計算し、新しいセグメントが送信される時は前記実行ブロックへ表示を送信する復号ブロックをさらに備える、請求項7に記載の装置。
【請求項10】
前記実行ブロックは、前記表示を受け取り、送信される次セグメントを決定し、出力セグメント情報を生成する、請求項9に記載の装置。
【請求項11】
シーケンスメモリをさらに備え、前記フェッチブロックは、該シーケンスメモリにアクセスして前記実行ブロックにシーケンスコマンドを与える、請求項7に記載の装置。
【請求項12】
前記実行ブロックは、前記シーケンスコマンドに応答して、前記現接続の前記次状態を決定する、請求項11に記載の装置。
【請求項13】
前記フェッチブロックは、送信セグメント識別子を受信するとともに、前記送信セグメント識別子に基づいて前記現接続の前記状態データにアクセスするようになっている、請求項7に記載の装置。
【請求項14】
前記受信セグメント識別子及び前記送信セグメント識別子が同時に到着する場合に、前記フェッチブロックはさらに、該送信セグメント識別子の処理を延期するようになっている、請求項13に記載の装置。
【請求項15】
前に処理されたセグメント識別子が現セグメント識別子と一致している場合に、前記フェッチブロックは、前記状態メモリへのアクセスを抑制するようになっている、請求項7に記載の装置。
【請求項16】
所定のオペレーションシーケンスで次のステップを前記実行ブロックに示すようになっているシーケンスメモリをさらに備える、請求項7に記載の装置。
【請求項17】
出力セグメントペイロード識別子をセグメントジェネレータに示すようになっているシーケンスメモリをさらに備える、請求項7に記載の装置。
【請求項18】
少なくとも1つのフローグループに共通であるTCPパラメータを保持するようになっているパラメータメモリをさらに備え、該パラメータメモリは、前記状態データからグループ識別子によってアドレス指定可能であり、前記TCPパラメータは、前記復号ブロックに通知される、請求項9に記載の装置。
【請求項19】
複数の接続のうちの1つに関係する受信セグメント識別子を含む受信セグメントヘッダフィールドを受け取ること、
前記識別された接続の現在状態に対応する、メモリにおける状態データにアクセスすること、
TCP標準規格に従って、前記受信セグメントヘッダフィールドを処理すること、
前記受信セグメントヘッダフィールドに関係する前記接続を次状態に進めること、
前記接続の統計を累積すること、及び
前記接続の前記次状態に対応する状態データで前記メモリを更新すること
を含む方法。
【請求項20】
複数の前記受信セグメントヘッダフィールドのそれぞれについて、前記受け取ること、前記アクセスすること、前記処理すること、前記進めること、前記累積すること、及び前記更新することを繰り返すことをさらに含む、請求項19に記載の方法。
【請求項21】
前記接続のうちの1つに関係する送信セグメント識別子を受け取ること、前記TCP標準規格に従って前記送信セグメント識別子を処理すること、及び送信パケットヘッダ情報を生成することをさらに含む、請求項19に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2008−131640(P2008−131640A)
【公開日】平成20年6月5日(2008.6.5)
【国際特許分類】
【出願番号】特願2007−272630(P2007−272630)
【出願日】平成19年10月19日(2007.10.19)
【出願人】(399117121)アジレント・テクノロジーズ・インク (710)
【氏名又は名称原語表記】AGILENT TECHNOLOGIES, INC.
【Fターム(参考)】