(57)【特許請求の範囲】
【請求項１】
マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルを保持するラベルマップメモリと、
被検査ネットワークを通じて送信するための複数のパケットストリームを定義するストリーム形成データを保持するストリームデータメモリであって、少なくとも１つのパケットストリームについての前記ストリーム形成データは、前記ラベルマップメモリ内の個別の位置に対して１つ以上のポインタを含む、ストリームデータメモリと、
個別の前記ストリーム形成データに従って複数のパケットストリームを生成するためのトラフィックジェネレータであって、前記トラフィックジェネレータは、
前記１つ以上のポインタに従って前記ラベルマップメモリから１つ以上のＭＰＬＳラベルを検索し、
１つ以上の検索されたＭＰＬＳラベルを少なくとも１つのパケットストリームに組み込むように構成される、トラフィックジェネレータと、
前記被検査ネットワークからパケットを受信するためのトラフィックレシーバと、
前記トラフィックジェネレータと前記トラフィックレシーバが接続されたポートプロセッサであって、複数のラベル状態セットの各々を一意に識別するためのデータおよび各々のラベル状態セットと、前記ラベルマップメモリ内の１つ以上の個別のメモリ位置とを関連付けるデータを含むラベル追跡データを記憶する第１メモリを含むポートプロセッサと、を備え、
ＭＰＬＳラベルと、特定のラベル状態セットとを関連付ける制御パケットが前記トラフィックレシーバを介して受信される場合、前記ポートプロセッサは、
受信された前記制御パケットから前記特定のラベル状態セットおよび関連付けられた前記ＭＰＬＳラベルを抽出することと、
記憶された前記ラベル追跡データから、前記特定のラベル状態セットと関連付けられた１つ以上のラベルマップメモリ位置についてのアドレスを検索することと、
１つ以上の検索されたアドレスにより定義されるラベルマップメモリ位置にＭＰＬＳラベルを記憶することと、を含む動作を実行する、
ポートユニット。
【請求項２】
実行される前記動作は、前記第１メモリ内に前記ＭＰＬＳラベルを記憶する工程、および前記ＭＰＬＳラベルを前記ポートユニットの外部にある検査アドミニストレータへ通信する工程のうちの１つ以上を更に含む、請求項１に記載のポートユニット。
【請求項３】
ＭＰＬＳラベルと特定のラベル状態セットとを関連付ける各制御パケットは、ラベル分配プロトコル、制約ベースのラベル分配プロトコル、ボーダゲートウェイプロトコル、リソース予約プロトコル、およびリソース予約プロトコル−トラフィック拡張から選択されるプロトコルに従う、請求項１に記載のポートユニット。
【請求項４】
前記ＭＰＬＳラベルを抽出する、検索する、および記憶する動作は、ＭＰＬＳラベルと関連付けるために用いられる各プロトコルのための別個のデーモンを実行することを含む、請求項３に記載のポートユニット。
【請求項５】
被検査ネットワークを通じて送信するための複数のパケットストリームを定義するストリーム形成データを、ストリームデータメモリに記憶する工程であって、前記ストリームデータメモリは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルを記憶するように保存されるラベルマップメモリにおける個別のメモリ位置に対して１つ以上のポインタを含む、工程と、
複数のラベル状態セットを一意に定義するデータおよび各ラベル状態セットを、ラベルマップメモリ内の１つ以上の個別の保存されたメモリ位置と関連付けるデータを含むラベル追跡データを、第１メモリに記憶する工程と、
ＭＰＬＳラベルを特定のラベル状態セットと関連付ける制御パケットを受信する工程と、
受信された前記制御パケットから前記特定のラベル状態セットおよび関連付けられたＭＰＬＳラベルを抽出する工程と、
記憶された前記ラベル追跡データから、前記特定のラベル状態セットと関連付けられた１つ以上のラベルマップメモリ位置についてのアドレスを検索する工程と、
１つ以上の検索されたアドレスにより定義されるラベルマップメモリ位置に、前記ＭＰＬＳラベルを記憶する工程と、
記憶された前記ストリーム形成データに従ってパケットストリームを生成する工程と、
を含む、トラフィックを生成するための方法。
【請求項６】
前記第１メモリ内に前記ＭＰＬＳラベルを記憶する工程、および前記ＭＰＬＳラベルをポートユニットの外部にある検査アドミニストレータへ通信する工程のうちの１つ以上を更に含む、請求項５に記載のトラフィックを生成するための方法。
【請求項７】
ＭＰＬＳラベルと特定のラベル状態セットとを関連付ける各制御パケットは、ラベル分配プロトコル、制約ベースのラベル分配プロトコル、ボーダゲートウェイプロトコル、リソース予約プロトコル、およびリソース予約プロトコル−トラフィック拡張から選択されるプロトコルに従う、請求項５に記載のトラフィックを生成するための方法。
【請求項８】
パケットストリームを生成している間、前記ラベル状態セットのうちの少なくとも１つと関連付けられた前記ＭＰＬＳラベルを変更する制御パケットを受信する工程と、
パケット生成を停止することなく、変更された前記ＭＰＬＳラベルを記憶する工程と、
を更に含む、請求項５に記載のトラフィックを生成するための方法。
【請求項９】
前記ＭＰＬＳラベルを抽出する、検索する、および記憶する動作は、ＭＰＬＳラベルと関連付けるために用いられる各プロトコルのための別個のデーモンを実行することを含む、請求項７に記載のトラフィックを生成するための方法。
【請求項１０】
被検査ネットワークを通じて送信するための複数のパケットストリームを定義するストリーム形成データを記憶する工程であって、少なくとも１つのパケットストリームについての前記ストリーム形成データは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルが受信され保存されるための１つ以上の位置を含む、工程と、
複数のラベル状態セットの各々を一意に定義するデータおよび各々のラベル状態セットを、記憶されたストリーム形成データ内の１つ以上の個別の保存された位置と関連付けるデータを含むラベル追跡データを記憶する工程と、
被検査ネットワークから制御パケットを受信する工程であって、各制御パケットは、１つ以上のＭＰＬＳラベルを前記複数のラベル状態セットからの個別のラベル状態セットと関連付ける工程と、
受信された前記制御パケットから特定のラベル状態セットおよび関連するＭＰＬＳラベルを抽出する工程と、
保存された前記ラベル追跡データから、特定のラベル状態セットと関連付けられた１つ以上の前記ストリーム形成データ内の位置についてのアドレスを検索する工程と、
記憶された前記ラベル追跡データに従って、個別の前記ラベル状態セットと関連付けられた記憶された前記ストリーム形成データ内の１つ以上の保存された位置にて、ＭＰＬＳラベルを記憶する工程と、
記憶された前記ストリーム形成データに従って前記複数のパケットストリームを生成し、生成された前記パケットストリームを前記被検査ネットワークへ送信する工程と、
を含む、被検査ネットワークを検査する方法。
【請求項１１】
パケットストリームを生成している間、前記ラベル状態セットのうちの少なくとも１つと関連付けられた前記ＭＰＬＳラベルを変更する制御パケットを受信する工程と、
パケット生成を停止することなく、変更された前記ＭＰＬＳラベルを記憶する工程と、
を更に含む、請求項１０に記載の被検査ネットワークを検査する方法。
【請求項１２】
ＭＰＬＳラベルと特定のラベル状態セットとを関連付ける各制御パケットは、ラベル分配プロトコル、制約ベースのラベル分配プロトコル、ボーダゲートウェイプロトコル、リソース予約プロトコル、およびリソース予約プロトコル−トラフィック拡張から選択されるプロトコルに従う、請求項１０に記載の被検査ネットワークを検査する方法。
【請求項１３】
前記ＭＰＬＳラベルを抽出する、検索する、および記憶する動作は、ＭＰＬＳラベルと関連付けるために用いられる各プロトコルのための別個のデーモンを実行することを含む、請求項１２に記載の被検査ネットワークを検査する方法。
【請求項１４】
実行時に、
被検査ネットワークを通じて送信するための複数のパケットストリームを定義するストリーム形成データを、ストリームデータメモリに記憶する工程であって、前記ストリームデータメモリは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルを記憶するように保存されるラベルマップメモリにおける個別のメモリ位置に対して１つ以上のポインタを含む、工程と、
複数のラベル状態セットを一意に定義するデータおよび各ラベル状態セットを、ラベルマップメモリ内の１つ以上の個別の保存されたメモリ位置と関連付けるデータを含むラベル追跡データを、第１のメモリに記憶する工程と、
ＭＰＬＳラベルと特定のラベル状態セットとを関連付ける制御パケットを受信する工程と、
受信された前記制御パケットから前記特定のラベル状態セットおよび関連付けられたＭＰＬＳラベルを抽出する工程と、
記憶された前記ラベル追跡データから、前記特定のラベル状態セットと関連付けられた１つ以上のラベルマップメモリ位置についてのアドレスを検索する工程と、
１つ以上の検索されたアドレスにより定義されるラベルマップメモリ位置に、前記ＭＰＬＳラベルを記憶する工程と、
記憶されたストリーム形成データに従ってパケットストリームを生成する工程と、
を含む動作をプロセッサに実行させるプログラム命令を記憶するコンピュータ可読持続性記憶媒体。
【請求項１５】
ＭＰＬＳラベルを特定のラベル状態セットに関連付ける各制御パケットは、ラベル分配プロトコル、制約ベースのラベル分配プロトコル、ボーダゲートウェイプロトコル、リソース予約プロトコル、およびリソース予約プロトコル−トラフィック拡張から選択されるプロトコルに従う、請求項１４に記載のコンピュータ可読持続性記憶媒体。
【請求項１６】
前記ＭＰＬＳラベルを抽出する、検索する、および記憶する動作は、ＭＰＬＳラベルと関連付けるために用いられる各プロトコルのための別個のデーモンを実行することを含む、請求項１５に記載のコンピュータ可読持続性記憶媒体。
【請求項１７】
被検査ネットワークを通じて送信するための複数のパケットストリームを定義するストリーム形成データを保持するストリームデータメモリであって、少なくとも１つのパケットストリームについての前記ストリーム形成データは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルが受信され保存されるための１つ以上の位置を含む、ストリームデータメモリと、
個別の前記ストリーム形成データに従って複数のパケットストリームを生成するためのトラフィックジェネレータと、
前記被検査ネットワークからパケットを受信するためのトラフィックレシーバと、
前記トラフィックジェネレータと前記トラフィックレシーバが接続されたポートプロセッサであって、前記ポートプロセッサは、複数のラベル状態セットの各々を一意に定義するデータおよび各ラベル状態セットを、前記ストリームデータメモリ内の１つ以上の個別の保存されたメモリ位置に関連付けるデータを含むラベル追跡データを記憶する第１メモリを含む、ポートプロセッサと、を備え、
ＭＰＬＳラベルと、特定のラベル状態セットとを関連付ける制御パケットが前記トラフィックレシーバを介して受信される場合、前記ポートプロセッサは、
受信された前記制御パケットから前記特定のラベル状態セットおよび関連付けられた前記ＭＰＬＳラベルを抽出することと、
記憶された前記ラベル追跡データから、前記特定のラベル状態セットと関連付けられた１つ以上の保存されたストリームデータメモリ位置についてのアドレスを検索することと、
１つ以上の検索されたアドレスにより定義される保存されたストリームデータメモリ位置にＭＰＬＳラベルを記憶することと、を含む動作を実行する、
ポートユニット。
【請求項１８】
実行される前記動作は、前記第１メモリ内に前記ＭＰＬＳラベルを記憶する工程、および前記ＭＰＬＳラベルをポートユニットの外部にある検査アドミニストレータへ通信する工程のうちの１つ以上を更に含む、請求項１７に記載のポートユニット。
【請求項１９】
ＭＰＬＳラベルと特定のラベル状態セットとを関連付ける各制御パケットは、ラベル分配プロトコル、制約ベースのラベル分配プロトコル、ボーダゲートウェイプロトコル、リソース予約プロトコル、およびリソース予約プロトコル−トラフィック拡張から選択されるプロトコルに従う、請求項１７に記載のポートユニット。
【請求項２０】
前記ＭＰＬＳラベルを抽出する、検索する、および記憶する動作は、ＭＰＬＳラベルと関連付けるために用いられる各プロトコルのための別個のデーモンを実行することを含む、請求項１９に記載のポートユニット。
【請求項２１】
実行時に、
被検査ネットワークを通じて送信するための複数のパケットストリームを定義するストリーム形成データを記憶する工程であって、少なくとも１つのパケットストリームについての前記ストリーム形成データは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベルが受信され保存されるための１つ以上の位置を含む、工程と、
複数のラベル状態セットの各々を一意に定義するデータおよび各々のラベル状態セットを、記憶されたストリーム形成データ内の１つ以上の個別の保存された位置と関連付けるデータを含むラベル追跡データを記憶する工程と、
前記被検査ネットワークから制御パケットを受信する工程であって、各制御パケットは、１つ以上のＭＰＬＳラベルを、前記複数のラベル状態セットからの個別のラベル状態セットに関連付ける、工程と、
受信された前記制御パケットから特定のラベル状態セットおよび関連付けられたＭＰＬＳラベルを抽出する工程と、
記憶された前記ラベル追跡データから、特定のラベル状態セットに関連付けられた１つ以上の前記ストリーム形成データ内の位置についてのアドレスを検索する工程と、
記憶された前記ラベル追跡データに従って、個別のラベル状態セットと関連付けられた記憶された前記ストリーム形成データ内の１つ以上の保存された位置にて、ＭＰＬＳラベルを記憶する工程と、
記憶された前記ストリーム形成データに従って前記複数のパケットストリームを生成し、生成された前記パケットストリームを前記被検査ネットワークへ送信する工程と、
を含む動作をプロセッサに実行させるプログラム命令を記憶する、コンピュータ可読持続性ストレージ媒体。
【請求項２２】
ＭＰＬＳラベルと特定のラベル状態セットとを関連付ける各制御パケットは、ラベル分配プロトコル、制約ベースのラベル分配プロトコル、ボーダゲートウェイプロトコル、リソース予約プロトコル、およびリソース予約プロトコル−トラフィック拡張から選択されるプロトコルに従う、請求項２１に記載のコンピュータ可読持続性ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ネットワークまたはネットワークデバイスを検査するためのトラフィックの生成に関する。
【０００２】
［著作権とトレードドレスの表示］
本特許文献の開示の一部は、著作権保護の対象となるマテリアルを含む。本特許文献は、所有者のトレードドレスである事項またはなり得る事項を示し、および／または記載し得る。著作権およびトレードドレス権の所有者は、特許商標庁のファイルまたは記録にあることから、本特許開示について任意の者によるファクシミリによる複製に対しては異議を有さないが、他の場合にはいかなる著作権およびトレードドレス権もすべて留保する。
【背景技術】
【０００３】
多くの種類の通信ネットワークにおいて、送信される各メッセージは、固定長または可変長の部分に分割される。各部分は、情報のパケット、フレーム、セル、データグラム、データ単位または他の単位と称されることがあり、本文献においては、それらの全てをパケットと称する。
【０００４】
各パケットは、一般にパケットのペイロードと呼ばれる、オリジナルメッセージの一部を含む。パケットのペイロードは、データを含んでもよく、あるいは音声情報またはビデオ情報を含んでもよい。パケットのペイロードはまた、ネットワーク管理制御情報を含んでもよい。それに加えて、各パケットは、一般にパケットヘッダと呼ばれる、識別およびルーティングの情報を含む。パケットは、多数のスイッチまたはノードを介し、ネットワークを通じて個々に送信される。パケットは、メッセージがターゲットデバイスまたはエンドユーザに配信される前に、最終送信先において、パケットヘッダに含まれる情報を用いたメッセージに再構築される。再構築されたメッセージは、受信先において、ユーザ機器と互換性のある形式でエンドユーザに渡される。
【０００５】
メッセージをパケットとして送信する通信ネットワークは、パケット交換ネットワークと呼ばれる。パケット交換ネットワークは、一般的に、ハブまたはノードにおいて交差する送信経路のメッシュを含む。ノードの少なくとも一部は、ノードに到達するパケットを受信し、かつ適切な発信経路に沿ってパケットを再送信する、スイッチングデバイスまたはルータを含んでもよい。パケット交換ネットワークは、業界標準プロトコルの階層構造を基準とする。階層１、階層２、および、階層３の構造は、それぞれ、物理的階層、データリンク階層、および、ネットワーク階層である。
【０００６】
階層１プロトコルは、ネットワークのノード間における物理的（電気的、光学的、または、無線）インターフェースを定義する。階層１プロトコルは、種々のイーサネット（登録商標）物理的構造、同期光学的ネットワーク（ＳＯＮＥＴ）および他の光学的通信プロトコル、ならびに、ＷｉＦｉ（登録商標）等の種々の無線プロトコルを含む。
【０００７】
階層２プロトコルは、どのようにデータがネットワークのノード間で論理的に伝送されるかを規定する。階層２プロトコルは、イーサネット（登録商標）、非同期転送モード（ＡＴＭ）、フレームリレー（ＦＲ）、および、ポイントツーポイントプロトコル（ＰＰＰ）を含む。
【０００８】
階層３プロトコルは、どのようにパケットがネットワークの多数のノードを接続する経路に沿って発信元から送信先へ送られるかを規定する。主要な階層３プロトコルは、周知のインターネットプロトコルバージョン４（ＩＰｖ４）およびインターネットプロトコルバージョン６（ＩＰｖ６）である。パケット交換ネットワークは、イーサネット（登録商標）、ＡＴＭ、ＦＲ、および／またはＰＰＰといった階層２プロトコルの組み合わせを用いてＩＰパケットをルーティングする必要があり得る。
【０００９】
歴史的にみて、各ルータは、受信された各パケットを解析して、パケット内に含まれるネットワーク階層ヘッダから送信先アドレスを抽出していた。次いで、ルータは、送信先アドレスを用いて再送信されるべきパケットに従って経路またはパスを決定していた。一般的なパケットは複数のルータを通過し得、いずれのルータも送信先アドレスの抽出動作および再送信されるべきパケットに従う経路またはパスの決定動作を繰り返していた。
【００１０】
マルチプロトコルラベルスイッチング（ＭＰＬＳ）は、大規模ネットワークを通じて効率的にデータをルーティングする方法である。ＭＰＬＳを用いると、各パケットには、特定の転送等価クラス（ＦＥＣ）のメンバーとしてパケットを同定するラベルが与えられる。ＦＥＣは、ネットワークを通じて関連するラベルスイッチパス（ＬＳＰ）に沿って特定の発信元（ソース）から特定の送信先へ送信されるパケット（任意の型またはプロトコルのパケット）の集合体として定義される。ＭＰＬＳラベルは、転送情報および優先情報の両方を含み得る固定長フィールドである。ＭＰＬＳラベルは、一般的に、階層２ヘッダと階層３ヘッダとの間のパケットに配置されるが、階層２ヘッダ内に埋め込まれていてもよい。ＭＰＬＳを採用するネットワークのノードは、ラベルスイッチルータ（ＬＳＲ）から成る。パケットを受信する際、各ＬＳＲは、ラベルに基づいて、また、ある場合には、パケットが受信された入力ポートに基づいて、どのようにパケットを転送するかを決定する。したがって、ＬＳＲは、どのようにパケットを転送するかを決定するために、パケットを解析しなくてもよく、また、階層３ヘッダから送信先アドレスを抽出しなくてもよい。各ＬＳＲは、パケットを転送する前にラベルを変更またはスイッチし得る。ある場合には、パケットはＭＰＬＳラベルの束を含み得、また、ＬＳＲはパケットを転送する前にこの束を「ポップ」して新しいラベルをさらし得る。
【００１１】
ネットワークの多数のノード、互いにノードを相互接続するパスの数および配置、ならびに、発信元および送信先機器にネットワークを接続するパスは、ネットワークトポロジーにより決定される。したがって、検査セッションの期間は効率的に固定される。しかしながら、ＭＰＬＳラベルはＬＳＲ間で取り決められるので動的であり得る。例えば、種々のＬＳＰに割り当てられたＭＰＬＳラベルは、ネットワークが検査される各時刻において一部または完全に異なる。更に、ＭＰＬＳラベルは、検査セッション中（例えば、検査セッション中にＬＳＲが失敗するかまたは再起動される場合、あるいは、検査セッション中に２つのＬＳＲ間のパスが失敗する場合）に変化し得る。
【００１２】
パケット交換通信ネットワークに含まれるパケット交換ネットワークまたはデバイスを検査するために、多数のパケットから成る検査トラフィックが、生成され、１つ以上のポートにおいてネットワーク内に送信され、異なるポートにおいて受信されてもよい。この文脈において、「ポート」という用語は、ネットワークと、当該ネットワークを検査するために用いられる機器との間の、通信接続を指す。受信された検査トラフィックを分析することにより、ネットワークの性能を測定してもよい。ネットワークに接続される各ポートは、検査トラフィックの発信元でありかつ検査トラフィックの送信先であってもよい。各ポートは、複数の論理的な発信元または送信先のアドレスをエミュレートしてもよい。ポートの数、およびポートをネットワークに接続する通信経路の数は、一般的に、検査セッションの期間にわたって固定される。ネットワークの内部構造は、例えば通信経路またはハードウェア装置の障害によって、検査セッション中に変化し得る。
【００１３】
単一のポートから発信し、かつ特定タイプのパケットおよび特定の速度を有する一連のパケットを、本文献において「ストリーム」と称する。発信元ポートは、例えば、ネットワークインターフェース上のポートであり得る。発信元のポートは、例えば、多数のパケットタイプ、速度または送信先に対応するために、同時にかつ並行して多数の発信ストリームをサポートしてもよい。「同時に」は、「正確に同一の時刻において」を意味する。「並行して」は、「同一の時間の範囲内で」を意味する。
【００１４】
ストリーム内のパケットは、ネットワークトラフィックデータを報告する目的のために、フローとして編成されてもよい。ここで、「フロー」とは、ネットワークトラフィック統計を蓄積および報告する対象となる任意の複数のパケットのことである。所与のフローにおけるパケットは、各パケットに含まれるフロー識別子によって識別され得る。フロー識別子は、例えば、各データ単位内の、専用識別子フィールド、アドレス、ポート番号、タグ、または何らかの他のフィールドあるいはフィールドの組み合わせであってもよい。
【００１５】
複数の同時発生的ストリームを組み合わせることによってトラフィックジェネレータからの出力を形成してもよく、本文献においては、これを「検査トラフィック」と称する。検査トラフィック内のストリームは、インターリービングを介して組み合わされ得る。インターリービングは、表現されるストリーム間において、均衡的、不均衡的、および分散的であってもよい。最新の「トリプルプレイ」のネットワークおよびネットワーク装置を検査するために、検査トラフィックは、シミュレートされたデータ、音声およびビデオのストリームを含んでもよい。
【図面の簡単な説明】
【００１６】
【図１】図１は、ネットワーク環境のブロック図である。
【図２】図２は、ポートユニットのブロック図である。
【図３】図３は、トラフィックジェネレータのブロック図である。
【図４】図４は、ポートプロセッサのブロック図である。
【図５】図５は、ラベル追跡データの概略図である。
【図６】図６は、ラベル追跡データの概略図である。
【図７】図７は、トラフィックを生成するためのプロセスのフローチャートである。
【図８】図８は、パケットを生成するトラフィックジェネレータの概略図である。
【図９】図９は、トラフィックを生成するためのプロセスのフローチャートである。
【図１０】図１０は、パケットを生成するトラフィックジェネレータの概略図である。
【００１７】
本文献の記述を通して、ブロック図に見られる構成要素は、３桁または４桁の参照番号が割り当てられており、最上位桁の数字は図番号で、下位２桁の数字は構成要素に特有のものである。ブロック図に記載されていない構成要素は、同じ下位２桁の数字の付いた参照番号を有する前述の構成要素と同じ特徴や機能を有するものと推定され得る。
【００１８】
ブロック図において、矢印終端線は、信号というよりはデータ経路を示し得る。各々のデータ経路は、ビット幅において多数ビットであってよい。例えば、各々のデータ経路は、４，８，１６，３２，６４、あるいはそれ以上の並列接続で構成されてもよい。
【発明を実施するための形態】
【００１９】
［装置の説明］
図１は、ネットワーク環境のブロック図を示す。環境は、ネットワーク検査装置１００、ネットワーク１９０、および複数のネットワークデバイス１９５を備えることができる。
【００２０】
ネットワーク検査装置１００は、ネットワーク検査機器、性能アナライザ、適合性検証システム、ネットワークアナライザ、またはネットワーク管理システムとすることができる。ネットワーク検査装置１００は、シャーシ１１０内に収容または格納される１つ以上のネットワークカード１１４およびバックプレーン１１２を備えてもよい。シャーシ１１０は、ネットワーク検査装置を収容するために適切な固定式または可搬式のシャーシ、キャビネットまたは筐体であってもよい。図１に示すように、ネットワーク検査装置１００は、統合されたユニットであってもよい。それに代わって、ネットワーク検査装置１００は、トラフィックの発生および／または分析を提供するように協調する多数の個別のユニットを備えてもよい。ネットワーク検査装置１００およびネットワークカード１１４は、１つ以上の周知の標準規格またはプロトコル（例えばイーサネット（登録商標）およびファイバチャネルなどの様々な標準規格）をサポートしてもよく、商標つきのプロトコルをサポートしてもよい。
【００２１】
ネットワークカード１１４は、１つ以上のフィールドプログラマブルゲートアレー（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、プログラマブルロジックアレイ（ＰＬＡ）、プロセッサおよび他の種類のデバイスを含むことができる。それに加えて、ネットワークカード１１４は、ソフトウェアおよび／またはファームウェアを含んでもよい。用語「ネットワークカード」は、ラインカード、検査カード、分析カード、ネットワークラインカード、ロードモジュール、インターフェースカード、ネットワークインターフェースカード、データインターフェースカード、パケットエンジンカード、サービスカード、スマートカード、スイッチカード、リレーアクセスカード等を含む。用語「ネットワークカード」はまた、多数のプリント回路基板を備え得るモジュール、ユニットおよび組立部品をも含む。各ネットワークカード１１４は、１つ以上のポートユニット１１６を含み得る。各ポートユニット１１６は、１つ以上のポートを通じてネットワーク１９０と接続し得る。ポートは、通信媒体１８５を通じてネットワークと接続され得る。通信媒体１８５は、ワイヤ、光ファイバ、無線リンク、または、他の通信媒体であり得る。各ネットワークカード１１４は、単一の通信プロトコルをサポートしてもよく、多数の関連するプロトコルをサポートしてもよく、または多数の無関係なプロトコルをサポートしてもよい。ネットワークカード１１４は、ネットワーク検査装置１００に恒久的に設置されていてもよく、着脱自在であってもよい。
【００２２】
バックプレーン１１２は、ネットワークカード１１４のためのバスまたは通信媒体としての役割を果たしてもよい。バックプレーン１１２はまた、ネットワークカード１１４に電力を供給してもよい。
【００２３】
ネットワークデバイス１９５は、ネットワーク１９０を通じて通信する能力のある任意のデバイスであってもよい。ネットワークデバイス１９５は、コンピューティングデバイス（例えばワークステーション、パーソナルコンピュータ、サーバ、ポータブルコンピュータ、携帯情報端末（ＰＤＡ）、コンピューティングタブレット、携帯電話、電子メール機器等）、周辺機器（例えばプリンタ、スキャナ、ファクシミリ装置等）、ネットワーク対応の記憶装置（例えばネットワーク接続ストレージ（ＮＡＳ）およびストレージエリアネットワーク（ＳＡＮ）デバイス等のディスクドライブを含む）、およびネットワークデバイス（例えばルータ、リレー、ハブ、スイッチ、ブリッジ、およびマルチプレクサ）であってもよい。それに加えて、ネットワークデバイス１９５は、ネットワークを通じて通信する能力のある家庭電化器具、アラームシステムおよび他の任意のデバイスまたはシステムを含んでもよい。
【００２４】
ネットワーク１９０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ストレージエリアネットワーク（ＳＡＮ）、有線、無線、またはこれらの組み合わせであってもよく、インターネットを含んでもよく、またはインターネットであってもよい。ネットワーク１９０上の通信は、情報のフレーム、セル、データグラム、パケットまたは他の単位を含む様々な形態をとってもよく、本文献においては、それらの全てをパケットと称する。ネットワーク検査装置１００およびネットワークデバイス１９５は、同時に相互に通信してもよく、ネットワーク検査装置１００と所与のネットワークデバイス１９５との間には、複数の論理的通信経路があってもよい。ネットワークそのものは、伝えるデータのための多数の物理的経路および論理的経路を提供する多数のノードから成ってもよい。
【００２５】
ここで図２を参照し、例示的なポートユニット２１６は、ポートプロセッサ２２０と、トラフィックジェネレータ２５０と、トラフィックレシーバ２４０と、ポートユニット２１６を被検査ネットワーク２９０に接続するネットワークインターフェースユニット２８０とを備えてもよい。ポートユニット２１６は、ネットワークカード（例えばネットワークカード１１４）のすべてまたは一部であってもよい。
【００２６】
ポートプロセッサ２２０は、本文献に記載される機能および特徴を提供するための、プロセッサ、プロセッサに接続されたメモリ、および様々な特殊化された装置、回路、ソフトウェアおよびインターフェースを含んでもよい。プロセス、機能および特徴は、全体的にあるいは部分的に、プロセッサ上で動作するソフトウェアにおいて実現されてもよく、ファームウェア、アプリケーションプログラム、アプレット（例えばＪａｖａ（登録商標）アプレット）、ブラウザプラグイン、ＣＯＭオブジェクト、ダイナミックリンクライブラリ（ＤＬＬ）、スクリプト、１つ以上のサブルーチン、またはオペレーティングシステムのコンポーネントまたはサービスという形をとってもよい。ハードウェアおよびソフトウェアおよびそれらの機能は、一部の機能がプロセッサによって実行され、他の機能が他の装置によって実行されるように、分散型であってもよい。
【００２７】
ポートプロセッサ２２０は、検査アドミニストレータ２０５と通信してもよい。検査アドミニストレータ２０５は、ネットワーク検査装置１００の内部に収容されるコンピューティングデバイスまたは外部のコンピューティングデバイスであってもよい。検査アドミニストレータ２０５は、ポートユニットがネットワーク２９０の検査に関与するために必要とされる命令およびデータを、ポートプロセッサに提供してもよい。検査アドミニストレータ２０５から受信される命令およびデータは、例えば、ポートユニット２１６によって生成されるパケットストリームの定義、およびポートユニット２１６によって蓄積および報告され得る性能統計の定義を含んでもよい。
【００２８】
ポートプロセッサ２２０は、トラフィックジェネレータ２５０にストリーム形成データ２２２を提供して、発信検査トラフィック２５５を形成するためにインターリーブされ得る複数のストリームを形成させる。トラフィックジェネレータ２５０は、ストリーム形成データ２２２に従って複数のストリームを生成してもよい。ストリームの各々は、一連のパケットを含んでもよい。各ストリーム内のパケットは、同じ一般型のものであり得るが、長さおよびコンテンツにおいて異なり得る。ストリーム形成データ２２２は、例えば、パケットの種類、送信の周波数、パケット内部の固定内容フィールドおよび可変内容フィールドの定義、および各パケットストリームのための他の情報を含んでもよい。
【００２９】
ネットワークインターフェースユニット２８０は、トラフィックジェネレータ２５０からの発信検査トラフィック２５５を、リンク２８５を介して被検査ネットワーク２９０に送信するために必要な電気信号、光学信号または無線信号の形式に変換してもよく、リンクは、ワイヤ、光ファイバ、無線リンクまたは他の通信リンクであってもよい。同様に、ネットワークインターフェースユニット２８０は、ネットワークからリンク２８５を通じて電気信号、光学信号または無線信号を受信してもよく、受信した信号を、トラフィックレシーバ２４０において使用可能な形式の着信検査トラフィック２４５に変換してもよい。
【００３０】
トラフィックレシーバ２４０は、ネットワークインターフェースユニット２８０から着信検査トラフィック２４５を受信してもよい。トラフィックレシーバ２４０は、各受信パケットが特定のフローのメンバーであるかを決定し得、また、ポートプロセッサ２２０から提供された検査命令２４２に従って各フローに関する検査統計を蓄積し得る。蓄積された検査統計は、例えば、受信パケットの合計数、順番誤りで受信されたパケットの数、エラーを有する受信パケットの数、最大、平均および最小の伝搬遅延、および各フローの他の統計を含んでもよい。トラフィックレシーバ２４０はまた、検査命令２４２に含まれる取得基準に従って、特定のパケットを取得および格納してもよい。トラフィックレシーバ２４０は、検査セッションの最中または後における更なる分析のために、検査統計および／または取得パケット２４４を、検査命令２４２に従って、ポートプロセッサ２２０に提供してもよい。
【００３１】
発信検査トラフィック２５５および着信検査トラフィック２４５は、主にステートレスであってもよい。すなわち、発信検査トラフィック２５５は、応答を予期することなく生成されてもよく、着信検査トラフィック２４５は、応答を意図することなく受信されてもよい。しかしながら、検査セッション中に、ポートユニット２１６とネットワーク２９０との間で、若干量のステートフルの（または対話型の）通信が要求されるかまたは望ましい場合がある。例えば、トラフィックレシーバ２４０は、制御パケットを受信してもよい。制御パケットは、検査セッションを制御するために必要なデータを含むパケットであり、ポートユニットに受信通知または応答の送信を要求する。
【００３２】
トラフィックレシーバ２４０は、着信制御パケットを着信検査トラフィックから分離してもよく、着信制御パケット２４６をポートプロセッサ２２０にルーティングしてもよい。ポートプロセッサ２２０は、各制御パケットのコンテンツを抽出してもよく、１つ以上の発信制御パケット２２６の形で適切な応答を生成してもよい。発信制御パケット２２６は、トラフィックジェネレータ２５０に提供されてもよい。トラフィックジェネレータ２５０は、発信制御パケットを発信検査トラフィック２５５の中に挿入してもよい。
【００３３】
ポートユニット２２０から受信され得る制御パケット２４６の一つの形態は、ＭＰＬＳラベルを割り当てるかまたはそれと結合するパケットであり得る。このようなパケットは、ネットワーク２９０内のＬＳＰから発信し得る。パケット結合ＭＰＬＳラベルは、ラベル分配プロトコル（ＬＤＰ）、制約ベースのラベル分配プロトコル、ボーダゲートウェイプロトコル（ＢＧＰ）、および、リソース予約プロトコル−トラフィック拡張（ＲＳＶＰ）、または、別のプロトコルに従い得る。各プロトコルは、異なる専門用語を用いるが、ＭＰＬＳラベルを割り当てるパケットは、一般的にＭＰＬＳラベルおよびラベル状態セット、または、ＭＰＬＳラベルを使用するための状態のセットと関連する。次いで、ＭＰＬＳラベルは、関連付けられたラベル状態セットを満たす各生成されたパケット内へ組み込まれ得る。各ラベル状態セットは、一般的に、使用されるべきＭＰＬＳラベルのためのＩＰ送信先アドレスのセットまたは範囲を含む。ラベル状態セットは、例えば、ＩＰ発信元アドレスのセットまたは範囲、サービスレベルの１つ以上の優先度または品質、および、ＭＰＬＳラベルを使用するための他の状態などといった他の情報を含み得る。ラベル状態セットはまた、ＭＰＬＳラベルを使用するための制約（例えば、最高データ速度）を含み得る。ＭＰＬＳラベルおよびラベル状態セットに関連するパケットを受信する際、ポートプロセッサ２２０は、ＭＰＬＳラベルの受信を承認するかまたは異なるラベルを取り決める試みをする１つ以上のパケットを生成し得る。一旦、１つ以上の状態セットについて取り決められると、ポートプロセッサ２２０は、トラフィックジェネレータにＭＰＬＳラベル２２４を提供し得る。
【００３４】
ポートプロセッサ２２０は、第１メモリ内に、ラベル追跡データ２３２を記憶し得る。ラベル追跡データは、各ラベル状態セットと、対応する関連するＭＰＬＳラベルとが関連付けられているリスト、テーブル、または、他のデータ構造の形式であり得、また、各ＭＰＬＳラベルがトラフィックジェネレータ２５０内のどこに記憶されるべきかを追跡する。トラフィックジェネレータ２５０は、ストリームデータメモリ２７０として識別される第２のメモリを含み得、当該第２のメモリは、ストリーム形成データ２２２、および、ある場合には、ＭＰＬＳラベル２２４を記憶する。トラフィックジェネレータ２５０は、ラベルマップ２７５として識別される第３のメモリを任意に含み得、当該第３のメモリは、特にＭＰＬＳラベルを記憶する。
【００３５】
ここで図３を参照し、例示的なトラフィックジェネレータ３５０は、パケットの１つ以上のインターリーブストリームからなる発信検査トラフィック３５５を生成し得る。例示的なトラフィックジェネレータ３５０は、図２のトラフィックジェネレータ２５０であり得、図１に示すようなネットワークカード１１４の全部または一部であり得る。トラフィックジェネレータ３５０は、ストリームデータメモリ３７０、スケジューラ３５２、バックグラウンドエンジン３５４、フィルエンジン３５６、チェックサムエンジン３５８、バックエンドエンジン３６０、および制御パケットマルチプレクサ３６２を含み得る。トラフィックジェネレータは、ラベルマップメモリ３７５を任意に含み得る。
【００３６】
本文献の記述において、用語「エンジン」は、記述した機能を実行するハードウェアの集合体を意味し、これはファームウェアおよび／またはソフトウェアによって増強することができる。エンジンは、通常、主に機能的な用語を用いてエンジンを記述するハードウェア記述言語（ＨＤＬ）を用いて設計され得る。このようなＨＤＬ設計は、ＨＤＬシュミレーションツールを用いて検証され得る。次に、検証されるＨＤＬ設計は、一般に「合成」と呼ばれるプロセスにおいてゲートネットリストまたは他のエンジンの物理的な記述に変換され得る。この合成は、合成ツールを用いて自動的に行うことができる。ゲートネットリストまたは他の物理的な記述は、フィールドプログラマブルゲートアレー（ＦＰＧＡ）、プログラマブルロジックデバイス（ＰＬＤ）、またはプログラマブルロジックアレー（ＰＬＡ）のようなプログラマブル半導体デバイスにおいてエンジンを実装するためにプログラミングコードにさらに変換される。ゲートネットリストまたは他の物理的な記述は、エンジンを特定用途向け集積回路（ＡＳＩＣ）内にて製造するためのプロセス命令およびマスクに変換され得る。
【００３７】
本文献の記述において、用語「ユニット」もハードウェアの集合体を意味し、これは「エンジン」よりも大規模であってもよい。例えば、ユニットには複数のエンジンを含んでいてもよく、これらの一部が並列に同様な機能を実行していてもよい。用語「エンジン」および「ユニット」は、いかなる物理的な分離または境界をも暗示していない。一または複数のユニットおよび／またはエンジンのすべてまたは一部を、ネットワークカード１１４のような共通のカード上に共に配置してもよく、共通のＦＰＧＡ、ＡＳＩＣ、または他の回路デバイス内に共に配置してもよい。
【００３８】
図３において、破線矢印はデータのフローを示し、実線矢印は、データのフローをともに一連の演算を示している。スケジューラ３５２、バックグラウンドエンジン３５４、フィルエンジン３５６、チェックサムエンジン３５８、バックエンドエンジン３６０、および、制御パケットマルチプレクサ３６２は、それらの各機能を連続的にまたは並行して実行し得るか、あるいは、連続的および並行の一部の組み合わせで実行し得る。スケジューラ３５２、バックグラウンドエンジン３５４、フィルエンジン３５６、チェックサムエンジン３５８、バックエンドエンジン３６０、および、制御パケットマルチプレクサ３６２は、少なくとも一部において、多数のパケットがトラフィックジェネレータ３５０の異なる部分において同時に処理され得るようなパイプラインであり得る。
【００３９】
ストリームデータメモリ３７０は、ポートプロセッサ２２０等のポートプロセッサから、あるいは、ネットワーク検査を管理かつ監視し得る別のコンピュータ（図示せず）から、受信されたストリーム形成データ３２２を記憶し得る。ストリームデータメモリ３７０は、検査セッションを構成する複数のストリームを定義するストリーム形成データを記憶し得る。ストリームデータメモリ３７０は、各ストリームについて１つ以上のバックグラウンドテンプレート３７４を含むバックグラウンドテーブルを含み得る。各バックグラウンドテンプレート３７４は、対応するストリーム内の各パケットの一般的な構造を定義し得、また、各パケットの固定コンテンツを含み得る。バックグラウンドテーブルが所与のストリームについて複数のバックグラウンドテンプレート３７４を含む場合、テンプレートは連続的に使用され得る。ストリームデータメモリ３７０はまた、各ストリームについて、各パケット内のデータ定義可変コンテンツフィールド、各パケットの長さを設定するためのデータまたは命令、および、各パケットのペイロードを満たすためのデータまたは命令を含み得る。各パケット内の可変コンテンツフィールドは、ＵＤＦ定義データ３７６により定義されたユーザ定義フィールド（ＵＤＦ）、および、チェックサム定義データ３７８により定義されたチェックサムフィールドを含み得る。ストリームデータメモリ３７０はまた、各ストリームについて、ストリームスケジューラが適切な時間間隔において各ストリームを含むパケットをスケジューリングするのに必要なタイミング情報３７２を含み得る。ストリームデータメモリ３７０はまた、他のデータおよび命令を含み得る。
【００４０】
ストリームデータメモリ３７０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはスタティックランダムアクセスメモリ（ＳＲＡＭ）であり得る。ストリームデータメモリ３７０は、トラフィックジェネレータ３５０の全てまたは他の一部を含む、ＡＳＩＣ、ＦＰＧＡ、または、他の回路装置内で実行され得る。ストリームデータメモリ３７０は、ＡＳＩＣ、ＦＰＧＡまたは他の機器の外部に存在するＤＲＡＭまたはＳＲＡＭメモリチップを用いて全体的または部分的に実行され得る。
【００４１】
スケジューラ３５２が、パケットが特定のストリームのために生成されるべきであるかを決定する場合、バックグラウンドエンジン３５４は、バックグラウンドテーブルから適切なバックグラウンドテンプレート３７４を検索し得る。バックグラウンドエンジン３５４は、スケジューラ３５２またはバックグラウンドエンジン３５４により決定されるパケット全長を達成するために、バックグラウンドテンプレート３７４のペイロード部分を拡張または切り捨て得る。
【００４２】
フィルエンジン３５６は、ストリームデータメモリ３７０に記憶されたストリーム形成データに基づいて、パケットテンプレート上に可変コンテンツフィールドデータを満たすか、またはオーバーレイし得る。フィルエンジン３５６は、パケットのペイロード部分を満たし得る。フィルエンジンはまた、ＵＤＦ定義データ３７６に基づいてユーザ定義フィールドを満たし得る。各ＵＤＦは、例えば、パケットの開始からのオフセット等の位置により定義され得る。各ＵＤＦは更に、生成されるパケット中のＵＤＦのコンテンツを生成するために必要なタイプおよび追加データにより定義され得る。例えば、あるタイプのＵＤＦは、初期値、増分値、および、最大値により定義されるカウンタフィールドであり得る。更に例えば、別のタイプのＵＤＦは、順番に用いられる値のテーブルから選択された値で満たされたテーブルフィールドであり得る。
【００４３】
別のタイプのＵＤＦは、メモリから値を検索するためのアドレスを生成するために用いられ得るポインタを含むポインタＵＤＦであり得る。ポインタは、アドレス内に論理的または数学的に組み込まれ得る。例えば、ポインタ値は、メモリから値を読み込むためのアドレスを生成するために、所定の定数により乗算され得るか、および／または、所定のオフセットが追加され得る。テーブルＵＤＦまたはポインタＵＤＦは、パケットにＭＰＬＳラベルを挿入するのに特に適しているものであり得る。
【００４４】
特定のネットワークのための検査セッションは、１つ以上（一般的に多数）のＬＳＰ上でパケットを通信するよう設計され得る。しかしながら、ＭＰＬＳラベルは、検査されるネットワーク内でＬＳＲ間の取り決めにより割り当てられるので、実際のＭＰＬＳラベルは、検査セッションが開始された後でないと分からないものであり得る。それに加えて、ＭＰＬＳラベルは、検査セッション中（例えば、１つ以上のＬＳＲが失敗した場合、または再起動した場合）に変化し得る。
【００４５】
トラフィックジェネレータハードウェアは、ラベルマップメモリ３７５を含まず、各ＭＰＬＳラベルは、ストリームデータメモリ３７０内に記憶されたストリーム形成データ内のユーザ定義フィールドであり得る。この場合、各ストリームに関連付けられたＭＰＬＳラベル（複数も含む）、ＵＤＦ定義データ３７６内に記憶され得る。この場合、ＭＰＬＳラベル３２４は、ストリームデータメモリ３７０内の特定の位置に記憶され得る。ここで留意すべきは、所与のＭＰＬＳラベルが多数のストリーム（例えば、同じ発信元アドレスおよび送信先アドレス間で送信された異なるタイプのパケット）により使用され得ること、および、各ストリームが多数のＭＰＬＳラベル（同じ発信元から異なる送信先へ送信されたパケットについてのＭＰＬＳラベル）を使用し得ることである。したがって、ＭＰＬＳラベル３２４は、ストリームデータメモリ３７０内の多数の位置に記憶される必要があり得る。
【００４６】
トラフィックジェネレータハードウェアは、検査セッションを設計中に、例えば対応するラベル状態セットと連続的にまたは無作為に関連付けられ得る、ラベルマップメモリ３７５、複数のラベル状態セット識別子（ＬＣＳＩＤ）を含む。ＭＰＬＳラベルを含むストリームを定義するストリーム定義データは、ポインタ値がＬＣＳＩＤのうちの１つに設定される１つ以上のポインタＵＤＦを含み得る。次いで、ＬＣＳＩＤは、ラベルマップメモリ３７５から関連付けられたＭＰＬＳラベルを検索するためのアドレスを生成するために使用され得る。ラベルマップメモリ３７５は、ストリームデータメモリ３７０から分離され得るか、または、その一部であり得る。ポートプロセッサ２２０は、ＭＰＬＳラベルを、被検査ネットワーク２９０から受信されるＭＰＬＳラベルとしてラベルマップメモリ３７５内の適切な位置に記憶し得る。ラベルマップメモリ３７５は、ポートプロセッサ２２０に、ラベルマップメモリ３７５の単一の位置のみに新たに受信したラベルを書き込ませることができる。
【００４７】
フィルエンジン３５６がペイロードのコンテンツおよびユーザ定義フィールドのコンテンツをバックグラウンドテンプレートに挿入した後、チェックサムエンジン３５８は、生成されるパケットについてチェックサム定義データ３７８により定義されるように１つ以上のチェックサムを計算し得る。チェックサムエンジン３５８は、１つ以上の計算されたチェックサムをバックグラウンドテンプレートに挿入し得る。バックエンドエンジン３６０は、周期的冗長検査値および／またはタイムスタンプを各パケットに、被検査ネットワーク２９０に対する送信のためのネットワークインターフェースユニット（ネットワークインターフェースユニット２８０等）に送信される検査トラフィック３５５として追加し得る。
【００４８】
トラフィックジェネレータ３５０はまた、外部プロセッサ（ポートプロセッサ２２０等）から制御パケットを受信する制御マルチプレクサ３６２を含み得、制御パケットを発信検査  トラフィックにインターリーブする。
【００４９】
スケジューラ３５２、バックグラウンドエンジン３５４、フィルエンジン３５６、チェックサムエンジン３５８、制御マルチプレクサ３６２、および、バックエンドエンジン３６０は、論理アレイ、メモリ、アナログ回路、デジタル回路、ソフトウェア、ファームウェア、および、プロセッサ（マイクロプロセッサ等）、フィールドプログラマブルゲートアレー（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、および、プログラマブルロジックアレイ（ＰＬＡ）のうちの１つ以上を含み得る。トラフィックジェネレータ３５０のコンポーネントの物理的な分配は、図３に示すような機能的な分配と異なっていてもよい。それによって、所与の機能的コンポーネントまたはブロックは、２つ以上の回路装置間で分割されていてもよく、また、単一の回路装置は、２つ以上の機能的コンポーネントまたは全ての機能コンポーネントのうちの全てまたは一部を含んでいてもよい。
【００５０】
ここで図４を参照し、ポートプロセッサ２２０であり得るポートプロセッサ４２０は、プロセスユニット４２８およびメモリ４３０を含み得る。ポートプロセッサ４２０は、検査アドミニストレータ４０５、トラフィックレシーバ４４０、およびトラフィックジェネレータ４５０（それらはそれぞれ検査アドミニストレータ２０５、トラフィックレシーバ２４０およびトラフィックジェネレータ２５０であり得る）と通信し得る。メモリ４３０は、プログラム（オペレーティングシステム４３６およびアプリケーション４３４等）ならびにデータ（ラベル追跡データ４３２等）の両方を記憶するために使用され得る。メモリ４３０は、多数のメモリ機器およびメモリタイプを含み得る。例えば、メモリ４３０は、オペレーティングシステム４３６の全てまたは一部を記憶するための固定読取専用メモリまたはプログラム可能読取専用メモリ、ならびに、アプリケーションおよびデータを記憶するための揮発性ランダムアクセスメモリまたは非揮発性ランダムアクセスメモリを含み得る。メモリ４３０は、カーネル空間４３５およびアプリケーション空間４３１に論理的に分割され得る。オペレーティングシステム４３６の全ての部分は、カーネル空間４３５に記憶され得る。
【００５１】
メモリ４３０に記憶されるプログラムは、ＭＰＬＳラベルを管理するための１つ以上のデーモンを含み得る。図４の例において、個別のデーモン４３８Ａ、４３８Ｂ、および４３８Ｃは、ＬＤＰ、ＢＧＰ、およびＲＳＶＰプロトコルをそれぞれ用いて受信されたＭＰＬＳラベルを管理するためのメモリ４３０に記憶される。それ以上またはそれ以下のデーモンは、メモリ４３０に記憶され得る。１つ以上のＭＰＬＳラベルを割り当てる制御パケット４４６がトラフィックレシーバ４４０から受信される場合、適切なデーモン４３８Ａ、４３８Ｂ、４３８Ｃは、ポートプロセッサが、各ＭＰＬＳラベルおよび対応するラベル状態セットをパケットから抽出するように、かつ、各ＭＰＬＳラベルをトラフィックジェネレータ４５０内の適切な位置に記憶するように、実行され得る。例えば、デーモンは、受信された制御パケットからの様々な送信先ＩＰアドレスを含む、ＭＰＬＳラベルおよびラベル状態セットを抽出し得る。デーモンは、対応するラベル状態セットを識別するため、かつ、ＭＰＬＳラベルが記憶されるべきトラフィックジェネレータ４５０内のメモリ位置を識別するために、予め記憶されたラベル追跡データ４３２を参照し得る。次いで、デーモンは、抽出されたＭＰＬＳラベルを、ストリームデータメモリ４７０内の１つ以上の位置に、および／または、トラフィックジェネレータ４５０内のラベルマップメモリ４７５に、記憶し得る。デーモンはまた、新たに受信されたラベルの１つ以上のアプリケーションプログラム４３４、オペレーティングシステム４３６、および、検査アドミニストレータ４０５を通知し得る。
【００５２】
図５は、トラフィックジェネレータがラベルマップメモリを含まない場合に使用される、ラベル追跡データ５３２およびストリームデータメモリ５７０の例示的な編成を示す。この場合、ラベル追跡データ５３２は、各ラベル状態セットをストリームデータメモリ５３２内の１つ以上の位置と関連付けるために、各ラベル状態セットおよびデータを一意的に識別するためのデータを含み得る。この例において、ストリームデータメモリは、ストリーム０、ストリーム１、および、ストリーム２として識別される、３つのストリームに関するストリーム形成データを含む。ストリーム０についてのストリーム形成データは、ストリーム０内の全パケットに組み込まれ得る、ラベル０を含む。同様に、ストリーム１についてのストリーム形成データは、ストリーム１内の全パケットに組み込まれ得る、ラベル１を含む。ストリーム２についてのストリーム形成データは、例えば、ストリーム２内のパケットとして順に生成されるように使用され得るＮラベル（ラベル０からラベルＮ−１）のリストを含む。
【００５３】
ラベル追跡データ５３２は、ラベル状態セット０からラベル状態セットＮ−１についての各ラベル状態セットを一意的に識別するデータを含み得る。例えば、各ラベル状態セットは、様々な送信先ＩＰ（インターネットプロトコル）アドレスを含み得る。各状態セットは、他の情報（例えば、様々な発信元ＩＰアドレスおよび／またはサービスレベルの優先度もしくは品質）を含み得る。ＩＰ以外のプロトコルに従うパケットについてのＭＰＬＳラベルは、他のタイプの状態と関連付けら得る。ラベル追跡データはまた、各ラベル状態セットについて、対応するＭＰＬＳラベルがストリームデータメモリ５７０に記憶されるべきアドレスまたは位置を含み得る。この例では、ラベル状態セット０およびラベル状態セット１の各々と関連付けられた２つのアドレスと、ラベル状態セットＮ−１に関連付けられた１つアドレスがある。表記「追加ｉ，ｊ」は、ラベルｉがストリームｊについてストリーム形成データ内に記憶されるべきであるアドレスを意味する。
【００５４】
図６は、トラフィックジェネレータがラベルマップメモリ６７５を含む場合に使用される、ラベル追跡データ６３２およびストリームデータメモリ６７０の例示的な編成を示す。ラベルマップメモリ６７０は、ＭＰＬＳラベルをそれぞれ含む、複数の独立した読取可能かつ書込可能なワードとして編成されたメモリであり得る。例示的なラベルマップメモリ６７０は、Ｎ  ＭＰＬＳラベル（一般的にラベル０からラベルＮ−１に指定される）、および、それぞれラベル状態セットＩＤ番号（ＬＣＳＩＤ）０からＮ−１に関連付けられる。ラベル状態セットに対応するＭＰＬＳラベルは、ラベルマップ６７５内に連続的に記憶され得る。この例において、ストリームデータメモリ６７０は、ストリーム０、ストリーム１、およびストリーム２として識別される、３つのストリームについてのストリーム形成データを含む。しかしながら、図５の例とは対照的に、ストリームデータメモリ６７０内のストリーム形成データは、ＭＰＬＳラベルを含まないが、ラベルマップメモリ内の対応するラベルをポイントするＬＣＳＩＤを含む。
【００５５】
検査セッションの間、ポートプロセッサ（ポートプロセッサ４５０等）は、特定のラベル状態セットに関連付けられたＭＰＬＳラベルを割り当てるかまたは変更する制御パケットを受信し得る。次いで、ポートプロセッサは、特定の状態セットに関連付けられたＬＣＳＩＤを検索するためにラベル追跡データ６３２を使用し得る。次いで、ポートプロセッサは、ラベルマップメモリ６７５の適切な位置にＭＰＬＳラベルを記憶するためのアドレスを生成するために、検索されたＬＣＳＩＤを使用し得る。例えば、ＬＣＳＩＤは、ラベルマップメモリ６７５にＭＰＬＳラベルを書き込むために使用されるアドレスを形成するために、所定のスケール因子により乗算され得るか、および／または、所定のオフセットが追加され得る。ラベルマップメモリ６７５内の特定のラベル状態セットについてのＭＰＬＳラベルを変更すると、そのラベルを使用する各ストリームを効率的に変更する。
【００５６】
［プロセスの説明］
ここで図７を参照し、トラフィックを生成するためのプロセス７００は７１０において開始でき、多数のパケットが生成された後、またはオペレータの動作（図７には示さず）によって停止されると、７９０において終了できる。このプロセス７００は、ラベルマップメモリを含まない、トラフィックジェネレータ３５０などのトラフィックジェネレータを使用してトラフィックを生成するのに適切であり得る。
【００５７】
７２０において、検査セッションが設計されてもよい。検査セッションの設計は、例えば、ポートユニット２１６などの１つ以上のポートユニットに接続される、検査アドミニストレータ２０５などの検査アドミニストレータコンピューティングデバイスによって行われてもよい。７２２において、検査セッションを設計することは、ネットワークまたはネットワーク機器のアーキテクチャを決定または定義することを含み得る。ネットワークアーキテクチャを決定することは、１つ以上のラベル状態セットおよび対応するＭＰＬＳラベルを取り決めること、ならびに各々の状態セットと個々のラベル状態セット識別子（ＬＣＳＩＤ）とを関連付けることを含んでもよい。
【００５８】
７２４において、検査セッションの間に生成されるストリームが定義されてもよく、ストリーム形成データが作成されてもよい。ストリーム形成データは、各ストリームに関して、１つ以上のバックグラウンドテンプレート、ＵＤＦ定義データ、チェックサム定義データ、および他のデータを含んでもよい。バックグラウンドテンプレートおよび／またはＵＤＦ定義データの少なくとも一部は、挿入されるＭＰＬＳラベルについての１つ以上の位置を含んでもよい。
【００５９】
７２６において、ラベル追跡データは、各ＬＣＳＩＤに関連付けられた個々のＭＰＬＳラベルが７２４において作成されたストリーム形成データ内に記憶されるべき場所を追跡するために作成されてもよい。
【００６０】
７３０において、７２４において作成されたストリーム形成データおよび７２６において作成されたラベル追跡データは、検査セッションを開始するために少なくとも１つのポートユニットに送られてもよい。通常、検査セッションは複数のポートユニットに関与し得る。この場合、複数のポートユニットの各々は、ポートユニットにおいて発生するストリームのためだけのストリーム形成データおよびラベル追跡データを受信してもよい。ストリーム形成データは、例えば、各ポートユニットにおいてトラフィックジェネレータ２５０などのトラフィックジェネレータ内のストリームデータメモリに記憶されてもよい。ラベル追跡データは、例えば、各ポートユニットにおいてポートプロセッサ２２０などのポートプロセッサのメモリ内に記憶されてもよい。
【００６１】
７４０において、ポートユニットは、ポートユニットにおいて発生するストリームと関連付けられる新規のＭＰＬＳラベルを含む制御パケットを受信してもよい。一部の場合、制御パケットは、複数の状態セットのそれぞれに割り当てられた複数のＭＰＬＳラベルを含んでもよい。ＭＰＬＳラベルを含む制御パケットは、被検査ネットワーク内のルータによって自発的に提供されてもよい。ポートユニットは、ポートユニットにおいて発生または終了するストリームの一部または全てのためのＭＰＬＳラベルを要求する制御パケットを生成し、送信してもよく、被検査ネットワーク内のルータは、それらの要求に応答してＭＰＬＳラベルを提供してもよい。検査セッションが複数のポートユニットに関与する場合、各ポートユニットは、ポートユニットにおいて発生および／または終了するストリームのためだけのＭＰＬＳラベルを受信してもよい。
【００６２】
７４２において、各ＭＰＬＳラベルおよび関連付けられたラベル状態セットは制御パケットから抽出されてもよい。７４４において、各々の抽出されたＭＰＬＳラベルは、７３０においてポートユニットに送信されたラベル追跡データに従って記憶されてもよい。特に、ラベル追跡データは、７４２において制御パケットから抽出されたラベル状態セットと一致するラベル状態セットを識別するために検索されてもよい。適切なラベル状態セットが識別されると、ＭＰＬＳラベルは、ラベル追跡データから検索されたアドレスを使用してポートユニットにおけるストリーム形成データ内に記憶されてもよい。
【００６３】
７４６において、他の関心のあるパーティに、新しく受信されたＭＰＬＳラベルが通知されてもよい。他の関心のあるパーティは、検査アドミニストレータ２０５などの検査アドミニストレータ、ポートプロセッサで動作するオペレーティングシステム、およびポートプロセッサで動作する１つ以上のアプリケーションプログラムのいずれかまたは全てを含んでもよい。
【００６４】
７４０から７４６におけるＭＰＬＳラベルの受信および保存は、検査セッションの設計の間に頻繁に起こってもよいが、検査セッションの間にも起こってもよい。例えば、ネットワーク内のルータが失敗するか、または再起動される場合、ＭＰＬＳラベルは、被検査ネットワークによって変更されてもよく、あるいはネットワークの種々の部分内の負荷を分散するために変更されてもよい。このように７４０から７４６における動作は、検査セッションの全体にわたって検査トラフィックの生成を中断して、および中断せずに、並行して周期的に行われてもよい。７４０から７４６の動作は、ポートプロセッサで動作するデーモン４３８Ａ−４３８Ｃなどのデーモンによって行われてもよい。
【００６５】
検査トラフィックは、トラフィックジェネレータ２５０などのトラフィックジェネレータによって７６０において生成されてもよい。７６２から７７４の動作は、単一のポートユニットにおいて単一のパケットを生成する。これらの動作は、検査セッションの間、数千または数万回でも周期的に行われてもよい。簡略化するために、７６２から７７４の動作は、後のパケットの生成が開始される前に、各パケットが完結されているかのように記載されている。しかしながら、７６２から７７４の動作はパイプライン形式で行われてもよく、それによって、複数のパケットが、プロセス７６０の異なる段階で同時に生成される。
【００６６】
７６２において、生成されるパケットのためのパケットテンプレートが、７２４において作成されたストリーム形成データの少なくとも一部を記憶するストリームデータメモリから検索されてもよい。生成されるパケットは、複数のユーザ定義フィールド（ＵＤＦ）を含んでもよい。１つ以上のユーザ定義フィールドはＭＰＬＳラベルを含んでもよい。７６４において、ＵＤＦはストリーム形成データに従って満たされてもよい。ＵＤＦを満たすことは、ストリーム形成データから検索された１つ以上のＭＰＬＳラベルでパケットテンプレートをオーバーレイすることを含んでもよい。
【００６７】
７７０においてパケットが完結されてもよい。パケットを完結することは、パケットのペイロードの部分を満たすこと、チェックサムを計算し、挿入すること、周期的冗長検査を計算し、挿入すること、タイムスタンプを挿入すること、および他の動作を含んでもよい。７７０において完結されたパケットは、７７２において被検査ネットワークに送信されてもよい。
【００６８】
７７４において、追加のパケットが生成されるべきかの決定が行われてもよい。追加のパケットが必要とされる場合、プロセス７００は７６２から周期的に継続してもよい。全てのパケットが生成される場合、プロセス７００は７９０において終了してもよい。
【００６９】
パケット８６４を生成するために、図３のトラフィックジェネレータ３５０などのトラフィックジェネレータによって行われる例示的な動作を図８に概略的に示す。パケット８６４を生成するために、バックグラウンドエンジン８５４は、ストリームデータメモリ８７０からテンプレート８７４を検索してもよい。テンプレート８７４はパケットの構造を定義してもよく、パケットヘッダおよびパケットペイロードの固定コンテンツ（中実の影付きで示した）を含んでもよい。テンプレートは、可変のコンテンツフィールド（影を付けないで示した）のための位置を提供してもよい。
【００７０】
フィルエンジン８５６は、バックグランドエンジン８５４によって検索されたテンプレート８７４を受信してもよい。フィルエンジン８５６は、ユーザ定義データをテンプレートにおけるＵＤＦ位置に挿入してもよい。この例において、ＵＦＤの１つは、ＭＰＬＳラベル８２４（二重の網掛けで示す）で満たされる。例示的なパケット８６４は６個のさらなるＵＤＦを含む。各ＵＤＦは、ストリームデータメモリ８７０からストリーム形成データに従って満たされてもよい。パケット８６４における満たされたさらなるＵＤＦは、対角線上に網掛けを付けて示し、文字Ｕにより識別される。図８に示すＵＤＦの数および位置は任意である。パケットは、６個より多いまたは少ないＵＤＦ、および１個より多いまたは少ないＭＰＬＳラベルを有してもよい。フィルエンジン８５６はまた、パケット８６４のペイロード８６８の部分を満たしてもよい。
【００７１】
フィルエンジンがペイロード８６８、ユーザ定義フィールドＵ、およびＭＰＬＳラベル８２４を追加した後、チェックサムエンジン８５８は、１つ以上のチェックサムを計算し、パケット８６４に挿入してもよい。例示的なパケット８６４は、対角線に網掛けを付けて示し、文字Ｃによって識別される、２つのチェックサムフィールドを含んでもよい。パケット８６４におけるチェックサムフィールドの位置は任意である。パケットは２つより多いまたは少ないチェックサムフィールドを有してもよい。パケット８６４を完結するために、バックエンドエンジン（図８に示さない）が、周期的冗長検査値および／またはタイムコードを、送信されるパケット８６４に挿入してもよい。
【００７２】
ここで図９を参照し、トラフィックを生成するためのプロセス９００は、ラベルマップメモリを含む、トラフィックジェネレータ３５０などのトラフィックジェネレータを使用してトラフィックを生成するのに適し得る。プロセス９００は、９１０において開始してもよく、多数のパケットが生成された後、またはオペレータ動作（図９に示さない）によって停止されると、９９０において終了してもよい。
【００７３】
９２０において、検査セッションが設計されてもよい。検査セッションを設計することは、９２４において作成されたストリーム形成データがＭＰＬＳラベルを記憶するための位置よりむしろＬＣＳＩＤを含み得ることを除いて、図７に併せて記載される動作７２０〜７２６と同様であってもよい。さらに、９２６において作成されたラベル追跡データは、各ラベル状態セットを定義し、各ＬＣＳＩＤを、ストリーム形成データ内の位置よりむしろ、ラベルマップメモリ内の位置に関連付けるデータを含んでもよい。
【００７４】
９３０において、９２４において作成されたストリーム形成データおよび９２６において作成されたラベル追跡データは、検査セッションを開始するために少なくとも１つのポートユニットに送信されてもよい。検査セッションが複数のポートユニットに関与する場合、複数のポートユニットの各々は、ポートユニットにおいて発生するストリームのためだけのストリーム形成データおよびラベル追跡データを受信してもよい。ストリーム形成データは、例えば、各ポートユニットにおいてトラフィックジェネレータ２５０などのトラフィックジェネレータ内のストリームデータメモリに保存されてもよい。ラベル追跡データは、例えば、各ポートユニットにおいてポートプロセッサ２２０などのポートプロセッサのメモリ内に記憶されてもよい。
【００７５】
９４０〜９４６から、ポートユニットは、ポートユニットにおいて発生するストリームに関連付けられたＭＰＬＳラベルを含む制御パケットを受信し、記憶してもよい。９４０〜９４６の動作は、９４４において、ＭＰＬＳラベルが、ラベルマップメモリにおける個々の位置に記憶され得ることを除いて、動作７４０〜７４６と同様であり得る。
【００７６】
９４０〜９４６におけるＭＰＬＳラベルの受信および記憶は、検査セッションを開始している間、頻繁に行われてもよく、また、検査セッション全体にわたって検査トラフィックの生成を中断して、および中断せずに、並行して周期的に行われてもよい。９４０〜９４６の動作は、ポートプロセッサで作動している、デーモン４３８Ａ〜４３８Ｃなどのデーモンによって行われてもよい。
【００７７】
検査トラフィックは、トラフィックジェネレータ２５０などのトラフィックジェネレータによって９６０において生成されてもよい。９６２および９７０〜９７４における動作は、動作７６２および７７０〜７７４と同様であり得る。
【００７８】
９６４において、トラフィックジェネレータは、９６２において検索されたパケットテンプレートにおけるラベルフィールドからＬＣＳＩＤまたは他のポインタを抽出してもよい。９６６において、９６４からのＬＣＳＩＤまたはポインタは、ラベルマップメモリから個々のＭＰＬＳラベルを読み取るために使用されてもよい。９６８において、ＭＰＬＳラベルは、パケットテンプレートに挿入されてもよい。ＭＰＬＳラベルは、ＬＣＳＩＤを最初に保持したラベルフィールドに挿入されてもよい。
【００７９】
９７０において、パケットは完結されてもよい。パケットを完結することは、他のＵＤＦを満たすこと、パケットのペイロードの部分を満たすこと、チェックサムを計算し、挿入すること、周期的冗長検査を計算し、挿入すること、タイムスタンプを挿入すること、および他の動作を含んでもよい。９７０において完結したパケットは９７２において被検査ネットワークに送信されてもよい。
【００８０】
９７４において、追加パケットが生成されるべきかの決定がなされてもよい。追加パケットが必要とされる場合、プロセス９００が９６２から周期的に継続してもよい。全てのパケットが生成される場合、プロセス９００は９９０において終了してもよい。
【００８１】
パケット１０６４を生成するためにラベルマップメモリを含むトラフィックジェネレータによって行われる例示的な動作を図１０に概略的に示す。ＭＰＬＳラベル１０２４をパケットに挿入するために行われる動作を除いて、動作は図８に併せて記載されるものと同様である。同様の動作の詳細な説明は繰り返さない。
【００８２】
バックグラウンドエンジン１０５４は、ストリームデータメモリ１０７０からテンプレート１０４５を検索してもよい。テンプレートは、交差した網掛けを付けて示し、文字「Ｐ」で識別したＬＣＳＩＤ１０８２または他のポインタを含んでもよい。
【００８３】
フィルエンジン１０５６は、バックグラウンドエンジン１０５４からテンプレート１０７４を受信してもよい。フィルエンジン１０５６は、テンプレート１０４５からＬＣＳＩＤ１０８２を抽出してもよい。次いで、フィルエンジン１０５６は、ラベルマップ１０７０からＭＰＬＳラベル１０２４を読み取るためのアドレスを生成するためにＬＣＳＩＤ１０８２を使用してもよい。フィルエンジン１０５６は、ＭＰＬＳラベルを、以前にＬＣＳＩＤによって占められた交差した網掛けを付けて示し、文字「Ｌ」によって識別された位置内のパケット１０６４に挿入してもよい。
【００８４】
フィルエンジンはまた、上記のようにペイロード１０６８および追加のユーザ定義フィールドＵを追加してもよい。チェックサムエンジン１０５８は、１つ以上のチェックサムを計算し、パケット１０６４に挿入してもよく、バックエンドエンジン（図１０に示さない）は、周期的冗長検査値および／またはタイムコードを、送信されるパケット１０６４に挿入してもよい。
【００８５】
［結びのコメント］
本文献を通して示される実施形態および例は、開示または請求される装置および手順に対する限定ではなく、例としてみなされるべきである。本文献に示される例の多くは、方法行為またはシステム要素の特定の組み合わせを含むが、それらの行為および要素は、同一の目的を達成する他の方法と組み合わせられ得ることが理解されるべきである。フローチャートに関しては、更なる工程やより少ないステップをとり得るものであり、図示したステップは、組み合わせられるかまたは更に洗練されることにより、本文献に記載される方法を達成し得る。一実施形態のみに関連して説明した行為、要素および特徴は、他の実施形態における同様の役割から除外されることを意図しない。
【００８６】
本文献で用いられる「複数」は、２つ以上であるということを意味する。本文献で用いられる、項目の「セット」は、そのような項目の１つ以上を含み得る。明細書または特許請求の範囲のいずれにおいても、本文献で用いられる「備える」、「含む」、「持つ」、「有する」、「包含する」、「伴う」等の用語は、オープンエンド、すなわち含むが限定しないことを意味すると理解されるべきである。特許請求の範囲に関しては、「から成る」および「から基本的に成る」という移行句のみが、それぞれ、閉じた移行句またはやや閉じた移行句である。特許請求の範囲において請求項要素を修飾する「第１」「第２」「第３」等の序数用語の使用は、それ自身ではいかなる優先順、優先度、または他の請求項に対するある請求項の順序、あるいは方法の行為が実行される時間的順序を暗示するものではなく、同一の名称を有する別の要素から特定の名称を有する１つの要素を区別し、請求項要素を区別するためのラベルとして単に使用されるものである（序数用語の使用を除く）。本文献で用いられる「および／または」は、列挙される項目が選択肢であることを意味するが、選択肢もまた列挙される項目の任意の組み合わせを含む。
【図１】
0005681067.tif 000002
【図２】
0005681067.tif 000003
【図３】
0005681067.tif 000004
【図４】
0005681067.tif 000005
【図５】
0005681067.tif 000006
【図６】
0005681067.tif 000007
【図７】
0005681067.tif 000008
【図８】
0005681067.tif 000009
【図９】
0005681067.tif 000010
【図１０】
0005681067.tif 000011