(57)【要約】【課題】ノード間のトラフィックを監視することによりネットワークをシミュレートすることができる装置および手法を提供する。【解決手段】ネットワーク状態をシミュレートするために、該ネットワークを伝搬するパケットを破壊(disrupt)するインラインネットワークシミュレータ（１０１）が提供される。本方法は、インラインネットワークシミュレータにおいて、ソースノードから宛先ノードに送信されるパケットを受信する。該シミュレータは、該受信したパケットを、複数の異なる分類のうちの対応するものに分類する。該シミュレータは、分類のそれぞれについて定義された対応する破壊特性に基づいて、該受信したパケットを破壊する。このようなパケットの破壊は、受信したパケットを遅延させる、ドロップする、再配置することのうちの少なくとも１つを選択的に実行することを含む。【選択図】図７
2006319978.tif 000002
【特許請求の範囲】
【請求項１】
ソースノード（１１）から宛先ノード（１２）に送信されるパケットを、インラインネットワークシミュレータ（１０１）において受信するステップ（７０１）と、
前記インラインネットワークシミュレータが、前記受信したパケットを、複数の異なる分類のうちの対応するものに分類するステップ（７０２）と、
前記インラインネットワークシミュレータが、該分類のそれぞれについて定義されている破壊特性に基づいて、前記受信したパケットを破壊するステップ（７０３）と、
を含む、方法。
【請求項２】
前記破壊するステップは、前記受信したパケットの遅延、ドロップ、及び再配置のうちの少なくとも１つを選択的に実行するステップを含む、
請求項１に記載の方法。
【請求項３】
パケットの遅延およびパケットの損失のうちの少なくとも一方の分布として、前記破壊特性を定義するステップをさらに含む、
請求項１に記載の方法。
【請求項４】
前記分布は、シミュレーション対象のネットワークにおいて観察される分布に基づく、
請求項３に記載の方法。
【請求項５】
前記分布は、少なくとも１つの有界な指数分布を含む、
請求項３に記載の方法。
【請求項６】
ソースノード（１１）から宛先ノード（１２）に送信されるパケットストリームを、コントローラ（４０１）において受信するステップ（９０１）と、
前記コントローラが、前記パケットストリームを、異なる時間依存性を有する複数のパケットサブストリームに分割するステップ（９０２）と、
対応する破壊特性に基づいて、前記複数のパケットサブストリームのうちの少なくとも１つのパケットを破壊するステップ（９０３）と、
を含む、方法。
【請求項７】
前記破壊するステップは、前記受信したパケットの遅延、ドロップ、及び再配置のうちの少なくとも１つを選択的に実行するステップを含む、
請求項６に記載の方法。
【請求項８】
第１のノード（１１）から第２のノード（１２）宛てに伝達されるパケットを受信するよう構成されたインラインネットワークシミュレータ（１０１）であって、
受信したパケットを、異なるパケットストリームに分類する手段（３０１）と、
少なくとも１つの前記異なるパケットストリームを制御し、時間に依存したパケットサブストリームを生成する手段（４０１）と、
前記時間に依存したパケットサブストリームのうちの少なくとも１つのパケットを破壊する手段（４０２）であって、（ａ）定義されているパケット損失分布に基づいてパケットを選択的にドロップする手段（６０５、６０６、６０７）と、（ｂ）定義されているパケット遅延分布に基づいてパケットを選択的に遅延させる手段（６０８、６０９、６１０）と、のうちの少なくとも一方を有する、手段と、
を備える、インラインネットワークシミュレータ。
【請求項９】
第１のノード（１１）から第２のノード（１２）宛てに伝達される到来パケットを受信する第１のゲート（６０１）と、
ドロップパケット値を生成する第１の分布を有する第１の乱数生成器（６０７）と、
前記到来パケットのストリームを受信するパケットカウンタ（６０５）と、
前記パケットカウンタから受け取ったパケットカウントと、前記第１の乱数生成器から受け取った前記ドロップパケット値とを比較する第１の比較器（６０６）であって、前記パケットカウンタのカウントが前記ドロップパケット値と一致したならば、前記ストリーム内のパケットのドロップをトリガする第１の比較器と、
を備える、システム。
【請求項１０】
前記到来パケットストリーム内のパケットの受信に応答して、パケット遅延値を生成する第２の分布を有する第２の乱数生成器（６０８）と、
クロック（６１０）と、
前記パケット遅延値を前記クロックの現在の時刻に加算し、将来のタイムスタンプ（６０２）を生成する加算器（６０９）と、
前記パケットをバッファリングするバッファ（６０３）と、
前記将来のタイムスタンプを前記クロックの時刻と比較し、該クロックの該時刻が前記将来のタイムスタンプと一致したならば、前記パケットの前記第２のノードへの送信をトリガする第２比較器（６１１）と、
をさらに備える、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークのシミュレータおよびシミュレーション方法に関する。
【背景技術】
【０００２】
現在、通信ネットワークは広範に使用されている。インターネット及びその他のワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、電話ネットワーク、及び無線ネットワークを含む（但し、これらに限定されない）様々なタイプの通信ネットワークが存在している。又、現在では、多くの異なる通信プロトコルも存在している。情報は、しばしば、ソース（すなわち「送信者」）から１つ又は複数の宛先にネットワークを介して伝達される。標準的な電話通話、ＶｏＩＰ（Ｖｏｉｃｅ−ｏｖｅｒ−ＩＰ）通話、無線電話通話（例えば、セルラーネットワークを介したもの）、テレビ番組（例えば、ケーブル及び／又は衛星ネットワークを介したもの）、データファイル転送、電子メール、インスタントメッセージング、ウェブページ、ストリーミングメディア、ビデオ会議などの通信ネットワークを介して、様々なタイプの通信がサポートされている。こうして、ネットワーク接続された環境内には、一般的に、様々なタイプの装置及びアプリケーションが配置されており、これらが正しく動作することが期待されている（このネットワーク接続された環境内においては、例えば、装置／アプリケーションへの通信、および装置／アプリケーションからの通信が、ネットワークを介して伝播する）。従って、多くの場合、ネットワーク接続された環境内における装置／アプリケーションの動作を試験／分析することが望まれている。この結果、ネットワーク装置の試験、ネットワーク容量計画の提供、並びに、場合によっては、分散アプリケーションのトラブルシューティングのために、ネットワーク接続された環境の使用が必要となる。このような試験においては、例えば、パケットが遅延され、損失され、及び／又は異常な状態で送信される特定のネットワークトラフィック状態下のネットワーク装置又は分散アプリケーションの挙動を観察することができる。
【０００３】
試験のための、場合によってはネットワーク容量計画のための実際のネットワークの使用は、常に可能なわけでもないし、又、常に望ましいわけでもない。特殊な実験的なネットワークの使用は、法外に高価であることが多く、よって代わりに、ネットワークシミュレータを使用することが多い（特に、ユーザーが、ネットワーク間の通信、ネットワーク要素間の通信、または、通信について品質が変化しやすい経路が設けられる何らかのネットワークを介した分散アプリケーション間の通信の効果を観察することを所望する場合）。こうして、ネットワークシミュレータを利用することにより、パケットの遅延、パケットの損失、パケットの再配置（及び／又は、ネットワークを介した通信において遭遇し得るその他の状態）が、通信当事者の挙動に対してどのような影響を及ぼすかを、調べることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
様々なネットワークシミュレータが知られている。ネットワークシミュレータは、ネットワークの挙動をシミュレートするスタンドアロン装置であってよく、或いは、実際の装置又はネットワークに接続されることも可能である。ネットワーク装置の試験は、しばしば、見かけ上のトラフィック負荷を生成するいくつかのデータトラフィックソースを有する模擬ネットワークを使用して実行される。低速のネットワークをシミュレートするには、ＰＣ／システムベースのネットワークシミュレータを使用することができる。相対的に高速（例えば、ギガビットレベルのネットワーク速度）の場合には、データ処理のために、シミュレーション用の特殊なハードウェア支援を備えた装置が必要となろう。しかしながら、これは、このようなシステムが一般に、更に複雑且つ高価になることを意味している。このように、既存のネットワークシミュレータは通常、うまく使うには複雑であって高価であり、かつ困難である。又、これらの占有面積が一般的に大きい。
【０００５】
ＶｏＩＰトラフィックのシミュレーションなど、ネットワーク上における所与のタイプの通信の専門的なシミュレーションを目的とする専用のネットワークシミュレータが開発されている。多くのネットワークシミュレータは、トラフィックをシステムに注入するよう動作可能である。即ち、多くの従来のネットワークシミュレータは、ネットワークトラフィックを被試験システムに対して注入する。この種のネットワークシミュレータは、このような人為的なトラフィックを生成し、これは、スイッチ及び／又はルーターなどの或るネットワーク要素に対する該人為的なトラフィックの影響を観察するために注入される。こうして、従来のネットワークシミュレータは、人為的なトラフィックをネットワーク内に注入して、例えば、ルーター及び／又はスイッチに負荷を加えることにより、ソースのトラフィックをシミュレートする。いくつかのケースにおいては、ネットワークシミュレータは、ソースと宛先であり、これらは、ネットワーク内において該ソースから該宛先に注入される人為的なトラフィックを生成し、これにより、このような人為的なトラフィックの（例えば、ソース及び／又は宛先において稼働するネットワーク装置及び／又はアプリケーションに対する）影響を観察する。一例として、従来のネットワークシミュレータは、ネットワーク上において、ルーター／スイッチに対して影響を与え、これにより分析対象のトラフィックに影響を及ぼす人工的(synthetic)な負荷を生成することができる。例えば、ルーターテスタを使用して、準拠(compliance)の状況をチェックすることができ、また、人為的なトラフィックによってルーターに負荷をかけることが可能である。サービスプロバイダは、このようなルーターテスタを使用することにより、特定のルーターが、帯域幅やレイテンシー（待ち時間）などに関する要求を満足しているかどうかを確認することができる。ルーターテスタによれば、１秒当たりに指定された数のパケットを送信することができ、これにより、人工的な作業負荷下において特定のルーターがどう挙動するかを分析することができる。
【課題を解決するための手段】
【０００６】
本発明の実施例は、自身を通じて伝播するパケットを破壊することによってネットワークの状態をシミュレートするインラインネットワークシミュレータを提供する。本明細書において使用する「インライン(inline)」ネットワークシミュレータという用語は、第１ノードから宛先ノードに送信される実際のネットワークトラフィックを破壊（disrupt、中断）するネットワークシミュレータを意味している。本明細書に記述されているように、トラフィックを破壊することにより、或る特性（例えば、或る輻輳など）を有する或る特定のネットワークを介して伝達されるトラフィックの影響をシミュレートするが、これは、人工的な負荷を生成してトラフィックをネットワーク内に注入するのとは対照的である。こうして、本発明の実施例は、多くの従来のネットワークシミュレータが行っているように、通信経路内に能動的にトラフィックを注入することによってネットワーク状態を生成するのではなく、ノード（例えば、装置、アプリケーション、プロセス、又はネットワークを介して通信可能なその他のオブジェクト）間を流れるトラフィックを監視し、例えば、パケットのドロップ、パケットの遅延、パケットの再配置などを実施してこれらのトラフィックを破壊することにより、実際のネットワーク内において遭遇し得る破壊をシミュレート可能な受動的なネットワークシミュレータを提供する。従って、本発明の特定の実施例は、ネットワーク環境内に挿入される人為的なトラフィックを生成するのではなく、ネットワークのノード間において観察される実際のトラフィックに対して作用し、ネットワークが実際のトラフィックに対して有し得る影響（例えば、ネットワーク内に存在し得る輻輳に起因するものなど）をシミュレートするために、これらのトラフィックを破壊する。特定の実施例は、ハードウェアによって実装され、これは、高速（例えば、高度な並列処理）かつ小さな占有面積を実現する。又、特定の実施例は、任意のタイプのトラフィックを処理し、任意の所望のネットワーク状態をシミュレートする能力を有する汎用のネットワークシミュレータである。
【０００７】
本発明の特定の実施例においては、ネットワークシミュレータにより受信されるパケットは、複数の異なる分類（すなわち、「ストリーム」）のうちの１つに分類され、異なる分類のそれぞれについて、異なるパケット破壊特性（例えば、パケット遅延量やパケット損失の頻度など）が定義可能である。例えば、ＴＣＰタイプのパケットとＵＤＰタイプのパケットに対し、異なる破壊特性を定義することができる。ルーター及びその他の装置は、異なる通信プロトコルを異なる方式で処理することが多い。従って、異なる破壊特性を定義することにより、ネットワークを介した様々な通信タイプの異なる処理をシミュレートすることが可能である。別の例として、いくつかの実装においては、パケットの送信側／受信側が、その分類に影響を及ぼすことができる。例えば、顧客のサービスレベルに関する合意（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ：ＳＬＡ）に応じた異なるサービスレベル（例えば、金、銀、又は銅レベルのサービス）を、（異なる顧客ノードを表す）ノードに対して割り当て可能である。そのような合意は、実際のネットワーク内で見出されることが多く、異なるサービスレベルが割り当てられたノードのパケットには、異なる破壊特性が適用される（例えば、金レベルのノードは、銀や銅レベルのノードよりも高い品質のサービスを受けることができる）。従って、本発明の特定の実施例によれば、受信したパケットを分類し、それぞれの分類に対して異なるパケット破壊特性を割り当てることにより、この状況のシミュレートを可能にする。
【０００８】
特定の実施例においては、ネットワークシミュレータ装置自体は、パケットの遅延、損失(loss)、及び再配置(reordering)という非常に単純な機能を実行しており、ＰＣ／ラップトップ、ワークステーション、又はサーバーなどの制御ステーションのような強力な装置からロードされることのできるネットワーク特性（すなわち、「破壊特性」）によって駆動される。特定の実施例においては、制御ステーションは、パケットの遅延／損失テーブルの統計的分布や、実際のネットワークから取得された分布特性をダウンロードする。この場合にも、異なるパケット分類に対して、異なる統計的分布をダウンロード可能である。取得したこれらのパケット遅延及び損失の分布特性は、「稼動中」のネットワークからのものであってもよく、或いは、以前に記録／取得したデータからのものであってもよい。
【０００９】
本発明の特定の実施例は、ネットワーク装置に（又は、場合によっては、通信装置に直接的に）プラグ接続可能であり、且つ、様々なパケット遅延、パケット損失、又はパケット再配置を引き起こすネットワークトラフィック負荷をシミュレートする、小さなネットワークシミュレータを提供する。後述するように、小さな占有面積を有し、且つ大きなネットワークシミュレータの柔軟性を数分の１のコストで備える非常に柔軟な汎用装置を提供するネットワークシミュレータを可能にする実装が説明される。例えば、特定の実施例においては、ネットワークシミュレータは、ユーザーネットワーク装置、ユーザーＰＣ、ワークステーション、又はサーバーの内部に直接プラグ接続されるＧＢＩＣ（ＧｉｇａＢｉｔ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｖｅｒｔｅｒ）またはＳＦＰ（Ｓｍａｌｌ  Ｆｏｒｍ  Ｆａｃｔｏｒ  Ｐｌｕｇｇａｂｌｅ）などの小さな装置内に収めることができるほど、十分小さい。このようなネットワークシミュレータは、ＡＳＩＣ又はＦＰＧＡ装置として実装可能であり、特定の実施例においては、ギガビットレベルの速度を有するネットワークシミュレータとして動作可能である。本明細書においては、Ｍｅｔｒｏ  Ｅｔｈｅｒｎｅｔ  Ｎｅｔｗｏｒｋをターゲットとして、この種のネットワークシミュレータのさまざまな典型的なアプリケーションについて更に説明するが、これらのアプリケーションに限定されるものではない。また、ほとんどすべてのネットワークをシミュレートするよう、これらのアプリケーションは適用されうる。本明細書において後述する典型的な実施例は、例えば、パケットの遅延、損失、及びパケットの再配置を作り出す任意のパケットデータ通信リンク（例えば、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）トンネル）のシミュレータとして使用されることができる。
【００１０】
本発明の一実施例によれば、本方法は、ソースノードから宛先ノードに送信されるパケットをインラインネットワークシミュレータにおいて受信するステップを含む。インラインネットワークシミュレータは、受信したパケットを、複数の異なる分類のうちの対応するものに分類する。インラインネットワークシミュレータは、これらの分類ごとに定義されている対応する破壊特性に基づいて、受信したパケットを破壊する。
【００１１】
以上の内容は、以下の本発明の詳細な説明を十分に理解できるように、本発明の特徴と技術的な利点について広範に概説したものである。以下、本発明の請求項の主題を構成する本発明の更なる特徴と利点について説明する。開示する概念および特定の実施例は、本発明と同一の目的を実現するためのその他の構造を変更又は設計するための基礎として容易に利用可能であることを理解されたい。又、これらの等価な構造は、請求項に規定されている本発明を逸脱しないということについても理解されたい。その構成と動作方法の両面において本発明の特徴を構成すると考えられる新規な特徴については、更なる目的及び利点と共に、図面との関連で、以下の説明を参照することにより、十分に理解することができよう。但し、それぞれの図面は、例示と説明を目的として提供されているものに過ぎず、本発明を限定することを意図するものではないことを明瞭に理解されたい。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明の一実施例に従う、ネットワークシミュレータ１０１を使用した典型的なシステム１０を示す。システム１０において、ノード１１及び１２が、互いに通信している。この通信は、ネットワークシミュレータ１０１を通過しており、このシミュレータは、トラフィックを破壊することにより、これらのトラフィックが実際のネットワークを介して流れた場合に遭遇し得る破壊(disruption)をシミュレートすることができる。従って、ネットワークシミュレータ１０１は、自身を介してノード１１及び１２の間に実際の通信が流れるインライン(inline)ネットワークシミュレータである。ネットワークシミュレータ１０１は、ノード１１及び１２の間の通信を（例えば、パケットのドロップ(drop)、パケットの遅延、パケットの再配置(reordering)などによって）破壊することにより、所定の輻輳などを有する実際のネットワークを介して伝播する通信を、シミュレートする。ノード１１及び１２は、ネットワークを介して通信可能な装置、アプリケーション、プロセス、ネットワーク、又はその他のオブジェクトであってよい。又、図１の例には、図示を容易にするべく、２つのノードが示されているが、本発明の実施例は、これに限定されるものではない。任意の数のノードを、互いに通信できるように接続することができ、これらの通信は、ネットワークシミュレータ１０１を介して流れることとなる。ネットワークシミュレータ１０１によって課される破壊をシミュレートすることにより、例えば、ノード１１及び／又は１２の挙動に対する該破壊の影響を分析することができる。こうして、ノードが配置される実際のネットワーク環境内において共通に遭遇する／予測されるものに破壊を対応させることにより、シミュレーションを通じて、その環境内におけるノードの性能を分析することができる。例えば、ネットワークシミュレータ１０１により使用される破壊特性（これについては、本明細書において更に後述する）を、ノードが配置されるネットワーク環境について既知の特性に対応させることができる。ノードが配置されるネットワークについて、例えば、一日の様々な時間においてネットワーク上で遭遇する輻輳の変化などに関する情報を収集することができ、このような情報を使用して、シミュレーションで使用する破壊特性を生成することができる。
【００１３】
図２は、ネットワーク装置２１にプラグ接続されるＧＢＩＣ（電気信号を光信号に（および、その逆に）変換するギガビットレベルのインターフェースコンバータ）２４内に含まれるネットワークシミュレータ１０１Ａとして、図１のネットワークシミュレータ１０１を実装した典型的な実施例を示している。この例においては、システム１０Ａは、ネットワーク装置２１及び２２を介して通信可能に接続されたノード１１及び１２を含んでいる。これらのネットワーク装置は、例えば、ルーター及び／又はスイッチであってよく、ネットワークシミュレータ１０１Ａは、このようなネットワーク装置機器のうちの少なくとも１つ（この場合には、装置２１）に接続されたＧＢＩＣ２４という１つのコンポーネントとして用いられている。或る特定の実施例においては、更に、制御ステーション２３が含まれており、これは、後述するように、構成パラメータをネットワークシミュレータ１０１Ａにロードすることができる。
【００１４】
図２の典型的な実装においては、ＧＢＩＣ２４は、ネットワークシミュレータ１０１Ａを実現するための小さなＡＳＩＣ又はＦＰＧＡベースのエンジンを含んでおり、これは、制御ステーション２３からダウンロードした分布特性(distribution characteristic)に従って、通過するパケットを遅延させたり、場合によってはドロップさせる等の、ネットワークトラフィックの負荷シミュレーションを実行する。これは、実験している間における１回だけのダウンロードであってもよく、或いは、制御ステーション２３が、（例えば、この制御ステーション２３に対する実際の又は実験的なネットワークの入力(feed)に基づいて）ネットワークシミュレータ１０１Ａ内のネットワーク特性を連続的に更新するようにしてもよい。ＧＢＩＣ２４内に実現されることのできるネットワークシミュレータ１０１Ａの典型的な形態については、後述する。この例においては、ネットワークシミュレータ１０１Ａは、ＧＢＩＣ２４の一部として実装されるが、当然のことながら、本発明の実施例は、これに限定されるものではない。例えば、本明細書に記述されているネットワークシミュレータの実施形態は、別個の装置として実現されることも可能である（例えば、これは、装置２１及び／又はＧＢＩＣ２４などのなんらかのネットワーク装置に結合されることのできる、プラグ接続可能なコンポーネントであることができる）。或いは、装置２１及び／又はＧＢＩＣ２４などの、別の装置の一部として実現されることもできる。当業者であれば、後述するネットワークシミュレータの典型的なハードウェア実装を、任意の適切なプラットフォーム／装置上において実現することができるということを理解するであろう。
【００１５】
図２に示されている例においては、ノード１１及び１２は、実際のネットワークを介して（ネットワーク装置２１及び２２を介して）通信しており、よって、これらノードが通信する実際のネットワーク内で実際に遭遇するものよりも大きなネットワーク及び／又は様々なネットワーク状態をシミュレートするのに、ネットワークシミュレータ１０１Ａを使用する。或る特定の実施例においては、ノード１１及び１２は、単純に、ネットワークシミュレータを介して互いに直接的に通信することができる。例えば、２つのコンピュータ（例えば、ＰＣ）をオフィス又は研究室内に配置し、ネットワークシミュレータ装置を介して互いに接続することができる。該ネットワークシミュレータは、或る特定のネットワーク状態（例えば、輻輳など）をシミュレートする。一例として、通信フローに沿ってインライン式にコンピュータのうちの１つに直接接続するよう、ネットワークシミュレータ装置を実装してもよい（例えば、コンピュータのネットワークインターフェースカードの一部として、或いは、通信ポートに接続されるようにして）。ＰＣが、プラグ接続可能なインラインネットワークシミュレータを受け入れる能力を具備している場合には、このようなプラグ接続可能なインラインネットワークシミュレータを該ＰＣに接続し、これを使用することにより、パケットのドロップや遅延などをシミュレートすることができ、通信する該ＰＣ上のアプリケーションに対して、これがどのような影響を与えるかを分析することができる（例えば、アプリケーションが、パケットの損失や遅延などに対してどのように反応するかを判断する）。ＰＣが、プラグ接続可能なインラインネットワークシミュレータを受け入れるためのスロットを具備していない場合には、ＳＦＰ又はＧＢＩＣスロットを備えたスイッチを利用することができる。この場合、本明細書に記述されているシミュレータ１０１Ａなどのシミュレータを含むＳＦＰ／ＧＢＩＣを使用することができる。こうして、一方のＰＣを、該スイッチのポートに接続し、他方のＰＣを、プラグ接続されたＳＦＰ／ＧＢＩＣを介して該スイッチに接続することができる。こうして、小さなネットワークシミュレータにより、アプリケーションの挙動を、それがまるで大きなネットワーク上で稼働しているかのように、試験することができる。
【００１６】
後述するように、或る特定の実施例においては、ネットワークの破壊特性は、制御ステーション２３からネットワークシミュレータ１０１Ａに分布テーブルとしてダウンロードされる。例えば、或る特定の実施例においては、（１）パケット遅延分布テーブルと、（２）パケット損失分布テーブルという２つの分布テーブルが、ネットワークシミュレータにダウンロードされる。後述するように、これらの分布テーブルは、破壊特性の分布（例えば、遅延時間とパケット損失の分布）を含むことができる。乱数生成器を使用して、所与の時点において適用すべき破壊特性を、該テーブルから選択することができる。
【００１７】
或る特定の実施例においては、ＧＢＩＣ２４は、それ自身の乱数生成器を使用することにより、分布テーブルから、パケット遅延属性又はパケット損失を取得することができる。分布テーブルを、ＦＩＦＯ順で読み取って使用することもでき、これは、そのようなモードにおいて、制御ステーション２３が分布テーブルを連続的に更新すべきであることを意味している。両方の機能の組み合わせ（即ち、分布テーブルの連続的な更新と、分布テーブル内のエントリのランダムな選択）も存在し得る。当然のことながら、ネットワーク内においては、複数のネットワークシミュレータ１０１Ａが、アクティブであって且つ制御ステーション２３によって制御されることができる。
【００１８】
一実施例においては、２つのタイプの分布テーブルが、ネットワークシミュレータ１０１Ａによって使用される。１つの分布テーブル（これは、「パケット遅延テーブル」と呼ばれることができる）は、パケット遅延の値を含んでおり、もう１つのテーブル（これは、「パケット損失テーブル」と呼ばれることができる）は、パケットがドロップ(drop)されるべき時点までのパケット数を含んでいる。例えば、パケット遅延テーブルは、２００００、２００００、２００００、２００００、４００００、４００００、１０００００という一連のエントリを有することができる。これらの値は、例えば、マイクロ秒を単位としたパケットの遅延を示す。この分布テーブルが、１回だけのダウンロードによってネットワークシミュレータ１０１Ａに提供される場合には、これは、パケットをサンプリングする際に受信端においてポアソンに似た分布を生成する有界な指数分布(bounded exponential distribution)に似たものとなりうる。しかしながら、分布の特性は、ポアソンであることに限定されるものではなく、例えば、裾の長い(long-tailed)パケットの遅延分布をシミュレートするために、べき分布などの任意の他の望ましい分布であってもよい。一実施例においては、シミュレーション中に、乱数生成器がランダムに、該テーブルから値を選択する。当然のことながら、これらのテーブルは、分布関数をより「滑らか(smooth)」なものにするべく、少なくとも数百のエントリを含むことができる。
【００１９】
パケット損失テーブルの場合には、値は、１つのパケットをドロップすることができる時点より前に、いくつのパケットを伝送しなければならないかを示すことができる。この場合にも、値は、分布テーブルからランダムに選択されることができる。制御ステーション２３が、該分布の更新を連続的にダウンロードする場合には、ネットワークシミュレータは、値をＦＩＦＯ順で使用することができる。更新パケットがなくなり、ネットワークシミュレータがＦＩＦＯの終端に到達した場合には、最新の更新を再度読み取るか、又は、そのエントリをランダム順に読み取ることができる。
【００２０】
ネットワークシミュレータ機能がＧＢＩＣ２４内に実現される、図２などの特定の実施例においては、該ネットワークシミュレータを実現するために使用されるロジックは、小さいことが好ましい。例えば、本明細書に提供されている特定の実施形態は、ＳＦＰ／ＧＢＩＣ内に配置可能なシリコンチップ上に、それら装置の既存の物理的寸法を変更することなしに、実装されることができる。インラインネットワークシミュレータ１０１Ａの実施形態を伴うＳＦＰ／ＧＢＩＣと、このようなネットワークシミュレータを含んでいない通常のＳＦＰ／ＧＢＩＣとは、区別できないであろう。一般に、サイズは、ＳＦＰが、通常、略１／２”  ×  １／２”  ×  ２”であり、ＧＢＩＣは、略１”  ×  １／２”  ×  ２”である。或る特定の実施例においては、ビルトインチップは、略数ｍｍ２のダイであることができ、これは、ネットワークシミュレーション機能に加えて、すべてのネットワーク測定能力を提供することができる。ネットワークシミュレータは、このようなチップの一部分として実装されることができる。或る特定の実施例においては、ネットワークシミュレータのみで、約５〜２０万個のロジックゲートを使用することがあるが、マイクロプロセッサは、しばしば、数百万個のゲートを具備している。又、或る特定の実施例では、目標の環境内における利用可能な電力が非常に少ない（例えば、３００ｍＷである）。従って、或る特定の実施例においては、インラインネットワークシミュレータ１０１Ａは、数ｍＷのみを利用するよう実装される。インラインネットワークシミュレータ１０１Ａの実施例は、非常に廉価に製造可能であり、装置全体のコストを大幅に増大させることなしに、ＳＦＰ／ＧＢＩＣ内に実装可能である。対照的に、従来の強力なネットワークシミュレータは、格段に高価であり、そのコストは一般に、数千ドル〜数十万ドルの範囲である。このような従来のネットワークシミュレータは通常、格段に大きく（例えば、略ＰＣ２台分の空間を必要とする）、数百ワットの電力を必要とする。
【００２１】
このように、その限られたサイズのために、ネットワークシミュレータ１０１Ａは、大きなネットワークシミュレータが提供することのできる機能のすべてを提供することはできないかもしれない。大きなデータネットワークは、大きなストレージ装置のようなものである。これを通じて伝播するデータは、実際には、ある期間にわたって、この内部に保持される。従って、所与のネットワークは、ほとんど無制限の容量を有する巨大なストレージ装置であると考えることができる。これを小さな装置内においてシミュレートすることは、困難である。例えば、データが大量に生成される場合には（例えば、ギガビットのレベル）、装置自体の内部に巨大なストレージ容量を必要とするため、小さなネットワークシミュレータの実装では、長時間にわたってデータトラフィックを遅延させることができないおそれがある。従って、ネットワークシミュレータによってネットワークに付加することのできる遅延の量は、ネットワークシミュレータ装置のメモリの量、ネットワークの速度、及びネットワークシミュレータ装置が破壊を所望するパケットの量に比例する。
【００２２】
しかしながら、小さなネットワークシミュレータ装置は、ネットワークを横断するトラフィックであって遅延の対象となるトラフィックが狭帯域であれば（例えば、キロビット／秒の単位で測定されるもの）、非常に良好に動作することができる。例えば、２つの当事者間におけるＶｏＩＰ（Ｖｏｉｃｅ−ｏｖｅｒ  ＩＰ）データトラフィックは、８０ｋｂｉｔ／ｓのレンジである（２０ミリ秒ごとに２００バイトのパケットが送信される）。図２の例のＧＢＩＣ２４内に実装されることのできる小さなネットワークシミュレータ装置により、大容量の（例えば、ギガビットレベルの）ネットワークについて、最大で数秒の遅延を導入することができる。本発明の或る特定の実施例により使用されるパケット分類器（classifier）は、他のトラフィックを妨げることなく、遅延とパケット損失の対象となる指定されたトラフィックタイプのみを選択するよう構成されることができることに留意されたい。これは、例えば、ネットワークシミュレータを使用して、或る特定のタイプのトラフィック（例えば、ＶｏＩＰトラフィック）がアプリケーション（例えば、ＶｏＩＰ会話の品質）にどう影響するかについて、稼働中のネットワークに作用を及ぼすことにより、該ネットワーク上の問題を診断するという状況では、望ましい特性である。ＧＢＩＣ２４内に実装されるネットワークシミュレータ１０１Ａのような（これについては、更に後述される）、小さなネットワークシミュレータ装置は、最大で約数百Ｋバイトのストレージを有することができる。この例においては、ネットワークシミュレータ装置は、１秒間に、最大１０ｋバイトのＶｏＩＰデータを吸収することができ（１秒にわたって遅延させることができ）、これは、このような典型的な装置のストレージ容量内に十分納まる。又、このような典型的な装置は、トラフィックがかなり軽微な対話型のウェブアプリケーションを試験するのにも容易に使用されることができる。このように、サイズが制約されている場合、利用可能なストレージ容量に基づいてネットワークシミュレータが実行可能なことと、トラフィック速度に基づいてネットワークシミュレータが実行可能なこととの間には、トレードオフが存在している。後述するように、本発明の或る特定の実施例は、限られたストレージ容量を有する小さな装置を目標としており、試験対象のアプリケーションの帯域幅要件がそれほど厳しくないネットワークをシミュレートするためのソリューションを提供する。当然のことながら、適切な量のメモリが利用可能な場合には（又は、十分なメモリを追加するのに適したサイズが利用可能な場合には）、本明細書に提示されている概念を、広帯域幅のネットワークにも容易に拡張することができる。
【００２３】
図２の典型的な実施例の動作においては、制御ステーション２３が、ＧＢＩＣ２４内に実装されているネットワークシミュレータ１０１Ａに、分布テーブルを送信する。初期的に、ネットワークシミュレータ１０１Ａは、ビルトイン（内蔵）された何らかの既定（デフォルト）の分布テーブルを有していることができる（これは、バッファ初期化の一部であってもよいし、或いは、該装置の一部であるＥＥＰＲＯＭ内に格納しておいてもよい）。以下の説明は、分布テーブルをどのようにして算出、記録、又は他の方法で取得するかという点ではなく、主に、ネットワークシミュレータ１０１Ａ内部の実現形態に焦点をあてている。本発明の実施例によるネットワークシミュレータの所与の実装において、このような分布テーブルを算出、記録、又は他の方法で取得する手法には、現在既知となっている手法又は今後開発されるであろう任意の手法を使用することができる。
【００２４】
この典型的な実施例においては、ネットワークシミュレータ１０１Ａは、分布テーブルと、シミュレータ内部の様々な機能をトリガする他の属性と、を含む構成パケットを受信する能力を有している。例えば、ネットワークシミュレータ１０１Ａは、到来パケットのタイプ又は量に応じて、異なる方式で動作することができる。或る特定のトラフィック量の閾値（ビット／バイト数又はパケット数）と比較することにより、例えば、異なる遅延／損失分布の使用をトリガすることができ、このような量の閾値は、ユーザーが構成可能とすることができる（例えば、制御ステーション２３を介して構成することができる）。
【００２５】
図３は、図２のインラインネットワークシミュレータ１０１Ａの典型的な一実施例を示しており、これは、シミュレータ１０１Ａ１として示されている。この典型的なインラインネットワークシミュレータ１０１Ａ１は、パケット分類器３０１を含んでおり、これは、到来するパケットを受信し、それぞれのパケットをＭ個のパケットストリーム３０２１、．．．、３０２Ｍ中の適切なものに分類するよう動作することができる。パケット分類器３０１は、ソースノード（例えば、図２のノード１１）から宛先ノード（例えば、図２のノード１２）に伝達される到来パケットを受信する。後述するように、Ｍ個のパケットストリームのそれぞれについて、異なるパケット破壊特性を定義することができる。例えば、Ｍ個のパケットストリームのそれぞれに、異なるパケット遅延及びパケット損失特性を定義することができる。従って、インラインネットワークシミュレータ１０１Ａ１によって受信される異なるタイプのパケットに対し、異なる方法で影響を与える（即ち、「破壊」する）ことができる。
【００２６】
又、パケット分類器３０１は、特定のトラフィックフローの流れの現在の状態に基づいてパケット分類を行うことも可能である。或る特定の実施例においては、パケット分類器３０１は、所与の時点における所与のフローのボリューム（パケット／バイト）、または所与の時間内におけるトラフィックフローのバーストレート(burst rate)などの状態情報に従って、所定のフローを分類することができる。いくつかの閾値に従って、該フローをストリームに分割することができる。パケット分類器３０１のフィルタは、分類器３０１内におけるボリューム（量）のレートやバーストレートなどの上記のパラメータに基づいた更なる分類をその後適用することとなる、所定のトラフィックフローを指定することができる。この場合、パケット分類器３０１は、指定されたインターバルが満了した際にリセットされるカウンタを保持している。例えば、パケット分類器３０１は、毎秒１回ずつ、ボリュームレート又はバーストレートを測定することができる。当然のことながら、関与するパケットが存在しない場合、このような分類をトラフィック全体に適用することもできよう。
【００２７】
こうして、ネットワークシミュレータ１０１Ａ１は、パケット分類器３０１を含んでおり、これは、どのタイプのパケットがどのタイプのフィルタに属しているかを示すパケットフィルタの形態であってよい。換言すれば、ネットワークシミュレータ１０１Ａ１は、異なる挙動を有する異なるパケットストリーム３０２１、．．．、３０２Ｍを生成する複数のパケットフィルタ（例えば、ストリームごとのパケットフィルタの組）を有することができる。パケットストリームには、異なるストリームごとに異なる分布を有することができるパケット損失及びパケット遅延が適用される。しかしながら、ネットワークシミュレータ１０１Ａ１自体は、これらの分布について知らなくてもよい。制御ステーション２３（図２）によって「形づくられる(shaped)」分布テーブルが提供され、ネットワークシミュレータは、これらテーブルを単に使用するだけでよい。
【００２８】
従って、この典型的な実施例においては、異なるパケットタイプが、異なるパケット遅延及びパケット損失特性が適用される別個のパケットストリームに分割される。パケットは、ユーザーネットワーク／システムの一方の側から他方の側に向かう際に（例えば、図１及び図２のノード１１からノード１２に送信される際に）、ネットワークシミュレータ１０１Ａ１を通過する。インラインネットワークシミュレータ１０１Ａ１は、パケット遅延、損失、及び再配列を導入することにより、実際のネットワークの挙動をエミュレートする。再配列(reordering)とは、いくつかのパケットをその他のものよりも遅延させる機能である。この可変遅延は、後述するように、ストリームごとに（又は、すべてのパケットにわたって）印加されることができる。
【００２９】
一実施例においては、パケット分類器３０１は、そのパケット分類器３０１が使用しているパケットフィルタに従って、到来パケットをストリーム３０２１、．．．、３０２Ｍに分割する。或る特定の実施例においては、パケットフィルタは、ユーザーによる構成が可能であり、制御ステーション２３を介して更新されることもできる。一例として、トラフィックは、トランスポートタイプ（例えば、ＵＤＰ対ＴＣＰ）やパケットサイズなどに従って分割可能であり、トランスポートタイプに関する情報は、例えば、次のパケットヘッダを識別するＩＰパケットヘッダの８ビットフィールド（即ち、トランスポートプロトコルのタイプ（ヘッダ））内において検出可能である。又、パケットサイズは、ＩＰヘッダの別のフィールドにある。パケットサイズのみを使用することにより、ネットワークを介した伝播をシミュレートしつつ、パケットの損失及び遅延の観点において異なる挙動特性を有する異なる送出ストリームに到来ストリームを分割するように、ネットワークシミュレータを実現することができる。例えば、パケットが、略２００バイト（例えば、ＶｏＩＰパケットの代表的なサイズ）である場合には、これらは、大きなパケットよりも高い優先順位を取得することができる（相対的に少ないドロップ、相対的に少ない遅延）。別の例として、ファイル転送に遭遇した場合には、遅延しても大きな害とならないため、これは、相対的に低い優先順位で送出されることができる。但し、１５０ｍ秒を上回ってＶｏＩＰパケットを遅延させると、過剰に多数のパケットがドロップされた場合には、会話が許容できないものになることがあり、少なくとも「途切れ途切れな」ものになり得る、ということを意味する。
【００３０】
一例として、小さなサイズのパケットを有する（例えば、ＶｏＩＰを表す）ＵＤＰパケットストリームは、パケット分類器３０１によって第１のクラスに分類されることができる。よって、パケットストリーム損失及び遅延モジュール１（図３の３０２１という参照符号が付されているもの）に転送されることができる。このモジュール３０２１は、小さな遅延と少ないパケット損失を導入することができる。即ち、パケット遅延およびパケット損失の対応する分布を、モジュール３０２１に関連付けて、これを、第１のやり方で自身に送信されたパケットを破壊する際に使用することができる。一方、パケットストリーム損失及び遅延モジュールＭ（図３の参照符号３０２Ｍが付されているもの）は、長い遅延と中程度のパケット損失を有することができる。これは、例えば、ＦＴＰトラフィックに専用であってよい。即ち、自身に対して送信されたパケットを、モジュール３０２１によって提供される破壊とは異なるやり方で破壊する際に使用するよう、パケット遅延及びパケット損失の対応する分布を、モジュール３０２Ｍに関連付けることができる。当然のことながら、このような分類の深さは、ネットワークシミュレータ装置の複雑さ／サイズに応じて制限されることができる。簡単にするため、ネットワークシミュレータ１０１Ａ１は、無状態（stateless）であってよく、よって、例えばトラフィックフローの持続時間によっては駆動されない。換言すれば、フローが長時間にわたって継続した場合にも、該フロー内のパケットを時間と共に劣化させることはない。但し、シミュレータは、例えば宛先ポートに基づいて、ＨＴＴＰ及びＦＴＰトラフィック間を区別するよう実現されることができる。
【００３１】
Ｍｅｔｒｏ  Ｅｔｈｅｒｎｅｔ  Ｆｏｒｕｍによって定義されているものなどのＭｅｔｒｏ  Ｅｔｈｅｒｎｅｔ  Ｎｅｔｗｏｒｋ（略称：ＭＥＮ）においては、パケット分類器３０１を使用することにより、（ＶＬＡＮ  ｉｄを使用する）異なる顧客からのトラフィックを、ＣｏＳ（Ｃｌａｓｓ  ｏｆ  Ｓｅｒｖｉｃｅ：これは、ＶＬＡＮ優先順位によって示される）によって区別することができる。ここで、ＭＥＮの場合、トラフィックは、リンク層において（即ち、Ｅｔｈｅｒｎｅｔフレームレベルにおいて）参照されるのみであるため、パケット分類器３０１は、Ｅｔｈｅｒｎｅｔフレーム分類器として動作することができる。周知のように、「ＶＬＡＮ」は、Ｖｉｒｔｕａｌ  ＬＡＮ（更に詳しくは、Ｖｉｒｔｕａｌ  Ｂｒｉｄｇｅｄ  ＬＡＮ）を表しており、「ＶＬＡＮ  ｉｄ」は、特定の仮想ローカルエリアネットワークを示す。ＶＬＡＮ  ｉｄとＶＬＡＮ優先順位は、タグ付きＥｔｈｅｒｎｅｔフレームのヘッダのＶＬＡＮタグの一部である。従って、パケット分類器３０１は、パケットフィルタを使用して、受信したパケットのヘッダを分析し、それらの個々のＶＬＡＮ  ｉｄ及び／又はトラフィックフローのなんらかの他の状態に基づいて、それらのパケットを分類することができる。
【００３２】
一例として、ＩＳＰプロバイダは、ハイレベルなパケット配信（即ち、小さな遅延と少ないパケット損失）が保証された高ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）又はＣｏＳ（Ｃｌａｓｓ  ｏｆ  Ｓｅｒｖｉｃｅ）パラメータを有した状態の特定のトラフィックフローを許容することができる。しかしながら、顧客とネットワークプロバイダ間において締結された合意（ＳＬＡ）の特定の閾値を超過した場合には、パケットは、より低品質の取り扱いを受けることとなり、最小限の遅延が保証されなくなるか、或いは、大きなパケット損失を受けることになる。例えば、Ｍｅｔｒｏ  Ｅｔｈｅｒｎｅｔ  Ｎｅｔｗｏｒｋサービスを定義しているＭｅｔｒｏ  Ｅｔｈｅｒｎｅｔ  Ｆｏｒｕｍは、３つのタイプのパケットの取り扱いを区別している。ＣＩＲ（Ｃｏｍｍｉｔｔｅｄ  Ｉｎｃｏｍｉｎｇ  Ｒａｔｅ）及びＣＢＲ（Ｃｏｍｍｉｔｔｅｄ  Ｂｕｒｓｔ  Ｒａｔｅ）内のパケットストリームは、「緑色」にマーキングされ、これらのパケットには、顧客とネットワークプロバイダ間において設定されているＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）が適用される。顧客のパケットがＣＩＲ及びＣＢＲを超過しない限り、これらは、優先的な取り扱いを受ける。このレベルを上回るすべてのトラフィックは、「黄色」として取り扱われ、実際にトラフィックが重い場合には（大量及び／又はバースト）、これらのパケットはドロップされる。パケット分類器３０１は、このようなトラフィックポリシーの設定を、インラインネットワークシミュレータ内に提供することができる。パケット分類器３０１は、カウンタの形態により、ボリュームレート及び／又はバーストレートを測定し、これらを、設定されている閾値と比較する。どのストリームを選択するかに関する判断は、所与の期間（例えば、１秒）内にカウンタが特定の（定義された）閾値を超過した時点に基づいて、パケット分類器３０１によって下される。
【００３３】
パケットは、パケットストリーム損失及び遅延モジュール３０２１、．．．、３０２Ｍを通過した後、図３の典型的な実施例のＭＵＸ３０３により、単一のパケットストリームに再度纏められる。ＭＵＸ３０３は、複数のパケットが同時にＭＵＸに到着した場合には、パケットストリーム損失及び遅延モジュール内の優先順位により、或いは、ラウンドロビン方式により、パケットを選択する。この結果、ＭＵＸ３０３から得られたパケットストリームは、その後、ソースノード（例えば、図２のノード１１）から宛先ノード（例えば、図２のノード１２）に沿った通信経路に従い、伝達される。
【００３４】
インラインネットワークシミュレータの特定の実施例においては、その内部においてパケット分類器３０１が使用されないこともある（又は、場合によっては実装されないことがある）。このような形態においては、インラインネットワークシミュレータは、１つのパケットストリーム損失及び遅延モジュールのみを有して使用することができる。但し、図３の典型的な実現形態では、複数のパケットストリーム損失及び遅延モジュールを許容しており、これらは、本明細書に記述されている典型的なハードウェアを介して並列に処理されることができる。
【００３５】
図３のモジュール３０２１などのパケットストリーム損失及び遅延モジュールの典型的な実現形態が、図４に示されている。図４の典型的な形態に示されているように、モジュール３０２１は、パケットストリームを、パケットサブストリーム（すなわち、「サブ分類」）４０２１、．．．、４０２Ｎに更に分割することができる。例えば、図４に提供されているモジュール３０２１の典型的な実施例は、パケットストリーム制御ユニット４０１を含んでおり、これが、パケット分類器３０１（図３）によってモジュール３０２１に転送されたパケットを受信する。パケットストリーム制御ユニット４０１は、受信したパケットを複数のＮ個の異なるサブストリームのいずれに分類するのかを判定する。一実施例においては、パケットストリーム制御ユニットは、送出ストリームの選択を駆動する分布テーブルを有している。例えば、或るパケットストリーム制御ユニットは、この時点のこの期間、信号をＨＩＧＨに設定するという旨を指定することができる。このパケットストリームコントローラは、重い輻輳を示すことができる。別のパケットストリームコントローラは、輻輳が軽い時点と関連付けられることができる（以下、同様）。生成される信号は、到来パケットとは無関係である。すべてが時間によって駆動されるため、コントローラは、例えば、午前１０：２５という時点を１０秒の持続時間と共に選択することができる。次回においては、コントローラは、例えば、午後１：３０という時点を３０秒の持続時間と共に選択することができる。そして、選択された時間において、信号を生成する（即ち、信号がＨＩＧＨとなり、その他の時点においては、信号はＬＯＷとなる）。
【００３６】
従って、この例においては、パケット分類器３０１（図３）は、到来パケットを、異なるユーザーからの（例えば、異なるＶＬＡＮからの）トラフィックフローとして分類することができ、パケットストリーム分類器は、緑色、黄色、又は赤色としてパケット分類を扱うことができる。その他の実施例においては、ＶＬＡＮの３ビットの優先順位フィールドから導出された異なるＣｏＳ（Ｃｌａｓｓ  ｏｆ  Ｓｅｒｖｉｃｅ）を参照するパケット分類器３０１の他のレベルが存在してもよい。ユーザーが、複数のＶＬＡＮに加入することも可能であり、同様に、それぞれのＶＬＡＮは、異なるＣｏＳに更に分割可能であり、それぞれのＣｏＳにおいて、緑色、黄色、又は赤色の観点で定義可能である。ネットワークシミュレータは、例えば、大きなパケット損失及び遅延を付与することにより、黄色のトラフィックを実現するパケットストリームセレクタを使用することができる。黄色のトラフィックは、緑色のトラフィックが有している最大遅延及び最大パケット損失に関する顧客とプロバイダ間のＳＬＡ合意による保証を備えていない。
【００３７】
又、パケット制御ユニット４０１は、経路４０３を介してパケットをドロップするべく、パケットを「ビットバケツ(bit bucket)」に送信することも可能である（即ち、これは、特定の閾値を超過した場合に、ストリームからパケットを除去する）。それぞれのパケットサブストリームには、パケットストリーム制御ユニット４０１を離れた後に、その送信先である対応するパケット損失及び遅延モジュール４０２１、．．．、４０２Ｎ内において、パケット損失及び遅延が適用される。パケット損失及び遅延モジュールの数Ｎは、所与の分類（例えば、前述のシナリオにおいては、Ｍｅｔｒｏ  Ｅｔｈｅｒｎｅｔパケット）において、パケットストリーム制御ユニットが、到来パケットストリームをいくつのサブストリームに分割するのかによって左右される。異なる分類について（例えば、異なるモジュール３０２について）、異なる数のサブストリームが定義可能である。或る例では、所与のモジュール３０２が、複数の異なるサブストリームモジュール４０２を有しないこともある（例えば、所与の分類のトラフィックのすべてを、同じパケット遅延及び損失分布に従って破壊する場合）。最終的に、すべてのサブストリームが、図４の典型的な実施例のＭＵＸ４０４を介して、パケット消失及び遅延モジュール３０２１からの１つの送出パケットストリーム内に纏められる。ＭＵＸ４０４は、複数のパケットが同時に又はなんらかの他の方法でＭＵＸに到着した場合、パケット損失及び遅延モジュール４０２１、．．．、４０２Ｎの優先順位により、或いは、ラウンドロビン方式により、パケットを選択することができる。
【００３８】
一例として、図３のパケット分類器３０１は、Ｅｔｈｅｒｎｅｔタイプに関するフィルタリングを実行することにより、ＩＰトラフィックを非ＩＰトラフィックから分離するパケットフィルタを定義したものでもよい。Ｅｔｈｅｒｎｅｔヘッダ内において、Ｅｈｔｅｒｎｅｔタイプが０ｘ８００であれば、これは、そのパケットがＩＰパケットであることを意味している。ＩＣＭＰ、ＡＲＰ、ＤＨＣＰなどの他のパケットは、特定のストリームに向けられることになる。次いで、パケット分類器３０１内のＩＰパケットは、ＩＰヘッダ内に検出されたプロトコルタイプに基づいてフィルタリングされる。プロトコルタイプが値６と一致した場合には、それはＴＣＰパケットであり、１７と一致した場合には、それはＵＤＰパケットである。ＴＣＰパケットは、パケットストリーム３０２１に向けられ、ＵＤＰパケットは、例えば、パケットサイズをチェックすることによって更に調べられる。ＵＤＰパケットのサイズは、ＩＰパケット長を指定するＩＰパケットヘッダからフィルタリングによって取得される（例えば、ＵＤＰパケットサイズは、「ＩＰパケットサイズ」−「ＩＰヘッダサイズ」に等しいものとして求めることができる）。パケット分類器３０１は、ＩＰパケットサイズが３００バイト以下である場合には、それをパケット損失及び遅延モジュール３０２Ｋに転送し、そうでなければ、別のパケット損失及び遅延モジュール（図３には、図示されてはいない）に転送するよう設定されたフィルタを有することができる。パケットストリームのそれぞれが、パケット損失及び遅延モジュール（図４）によって処理される。まず、パケットストリーム制御ユニット４０１が、或る特定のポリシーを適用することにより（即ち、セレクタ５０４に信号を送信する）、パケットストリームに対して、いつ及びどれだけの期間にわたってパケット損失及び遅延を適用するのかを決定する。これにより、異なる特性を有することのあるネットワーク上の輻輳を模擬する。例えば、午前１０時ごろに、１０分の持続時間にわたって、トラフィックに大きなパケット損失を適用する。午前１１時ごろに、中程度のパケット損失を伴うなり大きな遅延が観察される。これは、図５のモジュール５０１、５０２、及び５０３内において実現される。セレクタ５０４が、所与の時点において、どのパケット損失及び遅延モジュール４０２にＵＤＰパケットが向かうべきかを決定する。要約すれば、パケットフィルタに基づいたパケット分類器３０１が、パケットストリーム又はフローを生成する。続いて、これらのストリームに対して、時間（時点(when)と持続時間(duration)）によって駆動される特定の損失及び遅延処理エンジン４０２が適用される。これは、パケットストリームコントローラによって実現される。パケット損失及び遅延モジュール４０２が、パケットを保留し、この結果（分類器３０１においてインラインシミュレータに入るパケットストリームが１つであった場合にも）、異なるパケットストリームをＭＵＸ３０３において同時に多重化することができる。当然のことながら、本発明の実施例のアプリケーションは、この例示を目的とした実施例に限定されるものではない。
【００３９】
図５を参照すれば、パケットストリーム制御ユニット４０１の典型的な実現形態が更に詳細に示されている。このパケットストリーム制御ユニット４０１の典型的な実現形態では、制御モジュール５０３１、．．．５０３Ｋ、セレクタユニット５０４、及びｄｅＭＵＸ５０５が含まれる。制御モジュール５０３１、．．．５０３Ｋのそれぞれは、後述するように、時間特性（例えば、「時点」と「持続時間」）の任意の分布を有する個々の乱数生成器と関連付けられている。例えば、制御モジュール５０３１は、発生の時刻（すなわち、「時点」）の任意の分布５０１１を有する乱数生成器と、「持続時間」の任意の分布５０２１を有する乱数生成器と、に関連付けられている。同様に、制御モジュール５０３Ｋは、発生の時刻（すなわち、「時点」）の任意の分布５０１Ｋを有する乱数生成器と、「持続時間」の任意の分布５０２Ｋを有する乱数成器と、に関連付けられている。制御モジュール５０３１、．．．５０３Ｋは、パケットストリーム制御ユニット４０１への到来パケットストリームが、ｄｅＭＵＸ５０５を介して、どのパケット損失及び遅延モジュール４０２１、．．．、４０２Ｎ（図４）に送信されるかを選択するためのセレクタ５０４を制御する。
【００４０】
図５の典型的な実施例においては、制御モジュール５０３１、．．．、５０３Ｋを介して、Ｋ個の制御が実現されるが、図示を容易にするべく、図５には、２つの制御モジュールが示されている。このような制御モジュールは、後述するように、受信したストリームの、時間に依存したサブストリームへの分割を制御する。或る特定の実施例においては、これらの制御は、制御ステーション２３（図２）からダウンロード可能な分布を備える乱数生成器によって駆動される。一般的な観点においては、それぞれの制御モジュールは、時点および持続時間という２つの値を受信する。
【００４１】
前述のように、Ｍｅｔｒｏ  Ｅｔｈｅｒｎｅｔの例においては、２つの制御モジュールを使用することができる。第１の制御モジュールは、ユーザートラフィックが「黄色」のゾーンに入る時点を示し、第２の制御モジュールは、ユーザートラフィックが「赤色」のゾーンに入る時点とその持続時間を示す。これは、例えば、３つの送出パケットストリームが存在することを意味している。「緑色」のゾーン内において両方の制御がオフであれば、トラフィックは、サブストリーム１（例えば、図４の第１のパケット損失及び遅延モジュール４０２１、．．．、４０２Ｎ）に向かう。「黄色」のゾーンにおいては（制御１のみが、その出力信号をＨＩＧＨに設定している場合）、トラフィックは、サブストリーム２（例えば、図４の第２のパケット損失及び遅延モジュール４０２１、．．．、４０２Ｎ）に向かうこととなる。そして、「赤色」のゾーン内においては（制御２が、その出力信号をＨＩＧＨに設定している）、トラフィックは、サブストリーム３に向かい、該サブストリーム３は、ビットバケツであってよい（例えば、図４のパケット損失／ドロップ４０３）。セレクタ５０４は、制御モジュールの出力信号に基づいて、適切な送出サブストリームを選択する。
【００４２】
図６は、本発明の一実施例に従う、図４のモジュール４０２１などのパケット損失及び遅延モジュールの典型的な実現形態を示している。図６の典型的なモジュール４０２１は、ゲート６０１、タイムスタンプモジュール６０２、バッファ６０３、ゲート６０４、パケットカウンタ６０５、比較器モジュール「Ａ」６０６、パケットをドロップするための任意の分布を有する乱数生成器６０７、パケットを遅延させる任意の分布を有する乱数生成器６０８、加算器６０９、クロック６１０、及び比較器モジュール「Ｂ」６１１を含む。動作の際には、モジュール４０２１に到着したパケットが、パケットカウンタ６０５及びモジュール６０８宛てのイベントを生成する。パケットカウンタ６０５が、パケットのカウントを増分（インクリメント）する。モジュール６０８が、遅延値を生成する。パケットの転送の前に、比較器モジュール６０６が、乱数生成器６０７から与えられた値を、パケットカウンタ６０５から得られた値と比較することにより、ドロップパケットカウントに達しているかどうかを判定する。これらの値が一致した場合には、比較器６０６は、パケットを転送しないようにゲート６０１に対して信号を発し、カウンタ６０５を０にリセットする。モジュール６０８は、パケットがドロップされない場合にのみ値を生成する。モジュール６０８からの遅延値を、クロック６１０により提供された現在のクロック値（時点(time)）に加算することにより、タイムスタンプ（将来の時点(time in the future)）を生成する。このタイムスタンプは、タイムスタンプモジュール６０２において、まず、ＦＩＦＯ６０３に挿入される。比較器モジュール６１１から「見える(visible)」状態にあるＦＩＦＯ６０３からの最初のアイテムが、タイムスタンプとなる。これは、比較器６１１が、タイムスタンプがＦＩＦＯに到着したならばＦＩＦＯ６０３から該タイムスタンプを「読み取り」、そうでない場合には、待機することを意味している。一実施例においては、比較器６１１は、ＦＩＦＯ６０３が自身が空ではないことを信号により示した場合、読み取りイネーブル信号をＦＩＦＯ６０３内に挿入する。換言すれば、比較器６１１は、ＦＩＦＯ６０３が自身が空ではないことを信号で示した場合にのみ、タイムスタンプを読み取る。次いで、比較器６１１は、読み取ったタイムスタンプ値を現在のクロックの時刻と比較する。値が一致した場合には、比較器６１１は、ＦＩＦＯ６０３からのデータの読み取りを開始するようにゲート６０４に対して信号により知らせる。一実施例においては、ゲート６０４は、パケットの末尾を検出するまで、ＦＩＦＯ読み取りイネーブル信号を挿入することによってデータを読み取る。パケットの末尾の検出のために使用される当業者が認識している手法には、多数のものがある。
【００４３】
このパケット損失及び遅延モジュール４０２１の典型的な実現形態では、パケットストリームコントローラ４０１（図４）から受信した特定のストリームのパケット損失及び遅延をシミュレートする。この実施例においては、制御ステーション２３（図２）により提供される分布テーブルが、パケット損失及びパケット遅延を駆動している。換言すれば、インラインネットワークシミュレータは、トラフィック分布に関する知識をまったく有しておらず、要求された内容を実行しているのみである（例えば、所与の特定の値及び分布に従ってパケットをドロップしたり、パケットを遅延させる）。この結果、このようなインラインネットワークシミュレータは、非常に単純になり、且つ、処理及びストレージ能力が限られた装置内への実装が容易になる。又、これは、インラインネットワークシミュレータの典型的な実装が、ＡＳＩＣ又はＦＰＧＡタイプの装置においては高価である浮動小数点演算などの代数計算を必要としない、ということをも意味している。或る特定の実施例においては、このような機能を必要とするあらゆる統計分布アルゴリズムについては、その計算を、制御ステーション２３などの更に強力な装置（例えば、ＰＣやラップトップなど）に委ねることができる。これらの計算は、トラフィックフローに追随する必要はなく、従って、オフライン機能に委ねることができる。
【００４４】
図６のパケット損失及び遅延モジュール４０２１の典型的な実現形態は、パケットのドロップ、パケットのタイムスタンプ付与、及びパケットの遅延という３つの機能を実行する。この例においては、パケットのタイムスタンプ付与と遅延は、実際には、一緒に動作する。パケットのタイムスタンプ付与は、パケットを送出、すなわちＦＩＦＯ６０３からパケットを読み取ることができる時点を示すのに使用される。パケットの損失及び遅延は、乱数生成器６０７及び６０８によって駆動され、この場合にも、これらの分布は、制御ステーション２３によって制御される。
【００４５】
こうして、一実施例においては、ソースノードから宛先ノードへのトラフィックが、インラインネットワークシミュレータ１０１Ａによって受信され、パケット分類器３０１が、該受信したパケットを、対応するタイプのストリーム（例えば、ＵＤＰ対ＴＣＰストリーム）にフィルタリングすることができる。所与のストリームについて、コントローラ４０１が、発生の時点とストリームの各部分を或る特定の方法で処理すべき持続時間を指定した時間特性（例えば、シミュレートされたネットワーク上において特定の輻輳状態を発生させる時点とその持続時間）を決定する。受信されたストリームは、該時間特性に基づいて、異なる時間依存のサブストリームに分割され、それぞれの該サブストリームは、そのパケットの破壊に使用する対応する破壊特性（例えば、パケットの遅延及び／又は損失分布）を有する。異なる分布を、パケット損失及び遅延モジュール４０２１〜４０２Ｎのそれぞれに提供することができ、よって、異なるサブストリームによる異なる破壊（例えば、異なる数／レートのパケット遅延及び／又はドロップ）を）を、該パケット損失及び遅延モジュール４０２１〜４０２Ｎのそれぞれに提供することができる。こうして、コントローラ４０１によって分割された時間依存のサブストリームを、異なるやり方で破壊することができる。
【００４６】
図７は、本発明の或る特定の実施例の動作フローチャートを示している。図示のように、動作ブロック７０１において、インラインネットワークシミュレータは、ソースノードから宛先ノードに送信されるパケットを受信する。動作ブロック７０２において、インラインネットワークシミュレータは、受信したパケットを、複数の異なる分類中のうちの対応するものに分類する。例えば、前述のように、受信したパケットは、ＵＤＰ又はＴＣＰパケットに分類可能である。任意の数のこのような分類を実現することができる。動作ブロック７０３において、インラインネットワークシミュレータは、これらの個々の分類について定義されている対応する破壊特性に基づいて、受信したパケットを破壊する。即ち、ネットワークシミュレータは、対応する破壊特性（例えば、パケット遅延テーブル及びパケット損失テーブル）に基づいて、受信したパケットを、選択的に、遅延、ドロップ、及び／又は再配置する。
【００４７】
図８は、図３〜図６において前述したインラインネットワークシミュレータ１０１Ａの典型的な実施例の更に詳細な動作フローチャートを示している。動作ブロック８０において、インラインネットワークシミュレータにより使用されるパケット分類を定義する。例えば、前述のように、ＵＤＰ及びＴＣＰなどのパケット分類が定義可能である。或る特定の実装においては、これらのパケット分類は、サブ動作ブロック８０１に示されているように、（例えば、制御ステーション２３から）パケットフィルタをパケット分類器３０１にダウンロードすることによって定義される。このようなダウンロードしたパケットフィルタは、パケットを様々な分類に分類するべく、受信したパケットに関連付けられた情報の使用方法を指定することができる。
【００４８】
動作ブロック８１において、分類のそれぞれについて、対応する破壊特性を定義する。例えば、或る特定の実装においては、これらの破壊特性は、インラインネットワークシミュレータに（例えば、制御ステーション２３から）ダウンロードされるパケット遅延テーブル及びパケット損失テーブルによって定義される。動作ブロック８２において、パケット分類器３０１が、ソースノードから宛先ノードに送信された到来パケットを受信する。動作ブロック８３において、パケット分類器３０１は、受信したそれぞれのパケットを、定義されているパケット分類（例えば、ＵＤＰ又はＴＣＰ分類）のうちの対応するものに分類し、このパケット分類に基づいて、それぞれのパケットを、対応するパケットストリーム損失及び遅延モジュール３０２に送る。
【００４９】
動作ブロック８４において、パケットストリーム損失及び遅延モジュール３０２が、対応する分類について定義されている破壊特性に基づいて、自身に送信されたパケットを破壊する。前述のように、或る特定の実施例においては、パケットストリーム損失及び遅延モジュール３０２のうちの１つ又は複数のものは、複数のサブストリームモジュール４０２を含むことができる。従って、このような実装においては、パケットストリーム制御ユニット４０１は、ブロック８０３に示されているように、到来パケットを受信し、これらの受信したパケットをサブストリームに更に分割し、パケットの該更なる分類に基づいて、それぞれのパケットを、対応するパケットサブストリーム損失及び遅延モジュール４０２に送信する。更に詳しく言うと、一実施例においては、動作ブロック８０４において、パケットストリーム制御ユニット４０１を実現するための図５に示されているモジュールを使用し、パケットストリームを、時間に依存したサブストリームに分割する。
このような実施例においては、モジュール５０１（図５）が、時刻（即ち、信号が発生する時点）に基づいて信号を生成し、モジュール５０２が、該信号がオン状態に留まるべき持続時間を判定する。該信号が１である間、このストリームにおいて受信した対応するパケットが、（後述するように、「オン」状態にある制御信号によって判定される）対応するサブストリームに送信される。一実施例においては、モジュール５０１は、信号を制御ユニット５０３に送信し、（例えば、現在の時刻を、乱数生成器によって生成されたタイムスタンプと比較するために）用いる「時刻」に関し、制御ユニット５０３に指示する。次いで、制御モジュール５０３が、このイベントが発生すべき持続時間について、モジュール５０２に問い合わせる。こうして、モジュール５０１及び５０２は、パケットストリームをサブストリームに分割するためにセレクタ５０４により使用される時間特性（発生の時点と持続時間）を生成する。このような時間特性信号を生成するモジュール５０１、５０２、及び５０３の複数の組が存在している。セレクタ５０４は、これらの信号の組み合わせ（コントローラ５０３からのアクティブ信号の組み合わせ）に基づいて、到来ストリームを転送すべき送出サブストリームを選択する。これは、ｄｅＭＵＸ５０５を制御することによってなされる。制御モジュール５０３からセレクタ５０４に到来する信号は複数存在することができ、セレクタ５０４は、なんらかの形態のポリシーに基づいて、選択すべきサブストリームを決定する。簡単にいえば、モジュール５０１及び５０２は、破壊イベントの時間特性（イベントが発生する時点（即ち、到達すべき時刻）と持続時間）を定義する信号を送信する。制御ユニット５０３が評価を行い、該信号を、セレクタ５０４に送信する。セレクタ５０４は、受信した信号と自分自身のポリシーに基づいて、ｄｅＭＵＸ５０５を制御することにより、送出サブストリームを選択する。一般に、所与の時点において、１つの送出サブストリームのみが選択される。サブストリームのスイッチングは、この典型的な実施例においては、パケット間においてのみ発生し、或るパケットの中間においては発生しないことに留意されたい。
【００５０】
動作ブロック８０５において、パケットストリーム制御ユニット４０１から（対応するサブストリームの）パケットが送信された先のパケット損失及び遅延モジュール４０２を使用し、該サブストリームについて定義されている対応する破壊特性に従って、該パケットを破壊する。更に詳しくは、一実施例においては、動作ブロック８０６において、パケット損失及び遅延モジュール４０２を実現するための図６に示されているモジュールを使用する。このような実施例においては、パケットが到着したならば、比較器６０６において、パケットカウント６０５を、生成された乱数６０７と比較することにより、そのパケットがドロップの対象であるかどうかをチェックする。パケットがドロップの対象でなければ、乱数生成器６０８は、クロック６１０の現在の時刻に加算された際にタイムスタンプ６０２（「将来の時点」）を生成することとなる遅延値を生成する。次いで、このタイムスタンプが、ＦＩＦＯ６０３の任意のパケットデータの前に挿入される。次いで、該パケットのデータが、ＦＩＦＯ６０３内に書き込まれる。一実装においては、タイムスタンプ６０２が、ＦＩＦＯ６０３の書き込みイネーブル信号をＨＩＧＨに設定し、データがＦＩＦＯ内に書き込まれる。書き込みイネーブル信号は、該パケットの末尾に至るまでＨＩＧＨ状態に留まる。それと同時に、比較器６１１が、ＦＩＦＯ６０３からタイムスタンプを読み取り、これを、クロック６１０の実際の時刻と比較する。これらの時間が一致した場合、比較器６１１は、ＦＩＦＯ６０３からのデータ読み取りを開始して出力に送るよう、ゲート６０４に信号を発する。パケットの末尾が検出された際に、読み取りは停止する。比較器６１１は、このプロセスを反復する。前述のプロセス（即ち、ＦＩＦＯへの書き込みとＦＩＦＯからの読み取り）は、並行して互いに独立的に実行される。一実装においては、比較器６１１は、信号「ｅｍｐｔｙ」がＬＯＷ（これは、ＦＩＦＯが空ではないことを示す）になるのを待ち、次いで、「読み取りイネーブル」信号をＦＩＦＯ６０３に挿入し、タイムスタンプのみを読み取る。従って、一実装において、タイムスタンプの長さが８バイトであり、ＦＩＦＯのワードが１６ビットであれば、「読み取りイネーブル」は、４クロックサイクルにわたってのみＯＮ状態に留まることになる。４クロックサイクルの終わりまでには、比較器６１１は、そのレジスタ内にタイムスタンプを有することとなり、クロック６１０から来る現在の時刻との比較を開始することができる。これらの値が一致したら、比較器６１１は、信号をゲート６０４に送信し、ＦＩＦＯ６０３からのパケットデータの読み取りを開始する。これは、ゲート６０４が非常に単純なモジュールであることを意味しており、ゲート６０４は、比較器６１１から信号を取得し、ＦＩＦＯ６０３の「読み取りイネーブル」を駆動する連続的な信号を得るようフリップフロップを設定する。ゲート６０４は、パケットデータの末尾を確認すると即座に該フリップフロップをリセットし、これにより、「読み取りイネーブル」信号をドロップする。
【００５１】
動作ブロック８５において、ゲート「Ｂ」６０４（図６）からの送出パケットは、ＭＵＸ４０４（図４）に到着し、これが、パケット損失及び遅延モジュール４０２からのパケットの送信を制御する。動作ブロック８６において、ＭＵＸ４０４からの送出パケットがＭＵＸ３０３（図３）に到着し、これが、パケットストリーム損失及び遅延モジュール３０２から宛先ノードへのパケット（これらは、ドロップされなかったものである）の送信を制御する。
【００５２】
以上の内容に鑑み、或る特定の実施例によれば、パケットを（例えば、パケットタイプ及び／又はパケットサイズ、ボリューム、又はバーストレートに基づいて）異なるパケットストリームに分類するよう動作可能なパケット分類器３０１が実現される。例えば、パケット分類器３０１は、使用されるパケットフィルタに基づいて、受信したトラフィックをフィルタリングし、これにより、独立したパケットストリームを生成することができる。この結果、例えば、その他のタイプのパケットが妨げられることなしに流れることを許容しつつ、破壊するべく所与の分析の対象である特定のタイプのパケットをストリームにフィルタリングすることが可能になる。パケットストリームは、時間依存性をシミュレートするパケットストリームコントローラ４０１に入力される。これは、このストリームが、パケットが所与のストリーム内で表しているものとは無関係に、時間軸で生成されたサブストリームに更に分割されることを意味している。換言すれば、時間に依存したサブストリームが生成される。サブストリームには、（この場合にも、パケットがサブストリーム内で表しているものとは無関係に）それぞれのサブストリームに割り当てられている対応する分布に基づいて、パケットカウントと時間遅延が適用される。パケットストリームコントローラ４０１は、所与の時点（「時点(when)」用の乱数＝現在の時刻＋乱数生成器によって与えられるインターバル）および持続時間（別の乱数）を判断し、アクティブな信号を提供する。所与の時点におけるアクティブな該信号に基づいて、セレクタ５０４は、到来ストリームのパケットを、特定のパケット損失及び遅延エンジンを有する特定のサブストリームに割り当てる。換言すれば、このパケットストリームシミュレータは、時間軸におけるトラフィックの輻輳を駆動する（例えば、非常に大きなパケット損失と時間的に長い遅延が存在する場合、および、相対的に軽い状態が存在する場合など）。
【００５３】
ハードウェアソリューションにおいてパケットをドロップし、パケットを遅延させる手法を使用して、輻輳状態をシミュレートすることのできる典型的な手法については、インラインネットワークシミュレータ１０１Ａと共に上記に説明した。複数のストリームの組み合わせとそれらを多重化して単一のストリームに戻すことにより、送出されるパケットが、それらがシミュレータに入ったときとは異なる順序を有する状況を生成することになる。インラインネットワークシミュレータ１０１Ａの典型的な実施例は、ドロップ／遅延対象のパケットの明確な制御を提供するのではなく、パケットストリームに対して乱数生成器を使用する非デターミニスティックな方法で動作する。インラインネットワークシミュレータ１０１Ａは、まず、分類器３０１により受信されたパケットを観察し、該パケットを適切なストリームに分類した後に、それぞれのストリーム内にどのタイプのパケットが存在しているかとは無関係に破壊特性を適用するべく、それぞれのストリームに対して作用しているにすぎない（即ち、インラインネットワークシミュレータは、パケットの損失及び遅延分布などの所与の破壊特性を適用する対象であるパケットについて知らなくてよい）。すべてのストリーム及びサブストリームは、ハードウェアによって並列に処理されることができる。このようなハードウェア実装によれば、並列処理を模擬しているソフトウェアソリューションとは対照的に、真の並列処理を実現することができる。
【００５４】
以上においては、図３〜図６及び図８の動作フローにより、インラインネットワークシミュレータ１０１Ａの特定の典型的な実現形態について説明してきたが、本発明の範囲は、この典型的な形態に限定されるものではない。むしろ、これは、例を提供しているに過ぎず、本明細書に記述されている概念は、様々なその他の構成において（例えば、その他のハードウェアに基づいた実装などにおいて）実現されることができる。
【００５５】
図９は、本発明の一実施例の動作フローチャートを示している。動作ブロック９０１において、パケットストリームが、図４のパケットストリームコントローラ４０１などのコントローラによって受信される。ブロック９０２において、コントローラが、パケットストリームを、図４のパケット損失及び遅延モジュール４０２１〜４０２Ｎに送られるサブストリームなどの、異なる時間依存のパケットサブストリームに分割する。ブロック９０３において、対応する破壊特性に基づいて、それぞれのサブストリームのパケットを破壊する。例えば、サブストリームモジュール４０２１〜４０２Ｎのそれぞれについて、異なるパケット損失及び遅延特性（例えば、分布）を定義可能であり、所与のサブストリームモジュールについて定義されている対応するパケット損失及び遅延特性を、サブストリームのパケットを破壊するべく、それらのモジュールにより受信されたサブストリームに適用する。パケットストリームコントローラ４０１が、ストリームを異なるサブストリームに分割する方法を決定するべく、図５との関連で前述したものなどの異なる時間特性（例えば、発生の時刻（すなわち、「時点」）及び持続時間など）を選択的に生成するので、或る特定の実施例においては、サブストリームは時間依存性を有している。
【００５６】
或る特定の実施例においては、図９の典型的な動作フローは、図３のパケット分類器３０１などのパケット分類器から受信したストリームに対して実行される。従って、前述のように、或る特定の実施例においては、受信したパケットを、パケット分類器３０１によってフィルタリングし、それぞれのパケットを、複数の異なるストリームのうちのいずれに送るのかを判定することができ、図９の前述のプロセスは、異なるストリームのうちの１つ又は複数のものについて実行されることができる。当然のことながら、異なるストリームに、異なる分布（即ち、異なる破壊特性）及び／又は時間特性を定義可能である（例えば、ＵＤＰストリームを、ＴＣＰストリームとは異なる方式で破壊することができる）。或る特定の他の実施例においては、分類器３０１を省略することができる。例えば、到来パケットのタイプが、制御されている／既知である場合、或いは、すべてのタイプの到来パケットについて共通の破壊分布が使用される場合には、これらの実施例においては、このような分類器３０１を省略することができる。
【００５７】
以上、本発明とその利点について説明したが、請求項によって定義されている本発明を逸脱することなしに、様々な変更、置換、及び変形を加えることが可能であることを理解されたい。又、本出願の範囲は、本明細書に記述されているプロセス、機械、製品、事物の組成、手段、方法、及び段階の特定の実施例に限定されることを意図するものではない。本開示内容から容易に理解できるように、本明細書に記述されている対応する実施例と同一の機能を実質的に実行する又は同一の結果を実質的に実現する現在存在している又は将来開発されるであろうプロセス、機械、製品、事物の組成、手段、方法、又は段階を利用可能である。従って、の請求項は、その範囲内に、このようなプロセス、機械、製品、事物の組成、手段、方法、又は段階を含むことを意図している。
【図面の簡単な説明】
【００５８】
【図１】本発明の一実施例に従う、ネットワークシミュレータを使用したシステムの一例を示す図。
【図２】図１のネットワークシミュレータをギガビットインターフェースコンバータ（ＧＢＩＣ）の一部として実装した、一実施例を示す図。
【図３】図２のインラインネットワークシミュレータの一実施例を示す図。
【図４】本発明の一実施例に従う、図３のモジュール３０２１のようなパケットストリーム損失及び遅延モジュールの実現形態の一例を示す図。
【図５】本発明の一実施例に従う、図４のパケットストリーム制御ユニットの実現形態の一例を示す図。
【図６】本発明の一実施例に従う、図４のモジュール４０２１のようなパケット損失及び遅延モジュールの実現形態の一例を示す図。
【図７】本発明の一実施例の動作フローチャートを示す図。
【図８】図３〜図６に示されているインラインネットワークシミュレータの一実施例の更に詳細な動作フローチャートを示す図。
【図９】本発明の一実施例の動作フローチャートを示す図。
【符号の説明】
【００５９】
１１  ソースノード
１２  宛先ノード
１０１  インラインネットワークシミュレータ
３０１  パケットクラシファイア
４０１  パケットストリーム制御ユニット
４０２  パケット消失及び遅延モジュール
６０１  第１ゲート
６０２  タイムスタンプ
６０３  バッファ
６０５  パケットカウンタ
６０６  第１比較器
６０７  第１ランダム数生成器
６０８  第２ランダム数生成器
６０９  加算器
６１０  クロック
６１１  第２比較器
【図１】
2006319978.tif 000003
【図２】
2006319978.tif 000004
【図３】
2006319978.tif 000005
【図４】
2006319978.tif 000006
【図５】
2006319978.tif 000007
【図６】
2006319978.tif 000008
【図７】
2006319978.tif 000009
【図８】
2006319978.tif 000010
【図９】
2006319978.tif 000011