説明

優先フロー制御を有するパラレルトラフィックジェネレータ

【課題】ネットワークをテストするためのテストトラフィックを生成する装置を提供する。
【解決手段】スケジューラ430は、一連のパケットについてパケット定義データを提供し、各パケットは、それぞれのフロー制御グループに関連づけられる。チャネライズドスケジュール待ち行列435は、複数のパラレルチャネルを含んでもよく、各チャネルは、対応するフロー制御グループに関連づけられるパケット定義データの格納に専用される。複数のステートレスパケットビルダ450は、チャネライズドスケジュール待ち行列から読み込まれたパケット定義データに従って、パケットを構築する。チャネライズドパケットバッファ455は、複数のステートレスパケットビルダによって構築されたパケットを格納する。出力マルチプレクサ460は、チャネライズドパケットバッファからのパケットをインタリーブすることにより、テストトラフィックを形成する。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ネットワークまたはネットワーク装置をテストするためのトラフィックの生成に関する。
【背景技術】
【0002】
多くの種類の通信ネットワークにおいて、送信されるべき各メッセージは、固定長または可変長の部分に分割される。各部分は、パケット、フレーム、セル、データグラム、データ単位、または情報の他の単位と呼ばれることもあるが、本明細書においては、それらの全てをパケットと呼ぶ。
【0003】
各パケットは、パケットのペイロードと一般的に呼ばれる、オリジナルメッセージの部分を含む。パケットのペイロードは、データを含んでもよく、音声情報またはビデオ情報を含んでもよい。パケットのペイロードは、ネットワーク管理制御情報を含んでもよい。加えて、各パケットは、パケットヘッダと一般的に呼ばれる、識別および経路指定の情報を含む。パケットは、複数のスイッチまたはノードを介して、ネットワークにわたり個々に送信される。メッセージがターゲット装置またはエンドユーザに配信される前に、パケットヘッダに含まれる情報を用いて、パケットは、最終送信先においてメッセージへと再構築される。受信側において、再構築されたメッセージは、ユーザの装置と互換性のあるフォーマットでエンドユーザに渡される。
【0004】
メッセージをパケットとして送信する通信ネットワークは、パケット交換網と呼ばれる。パケット交換網は、ハブまたはノードにおいて交差する送信経路のメッシュを一般的に含む。少なくとも一部のノードは、ノードに到着するパケットを受信して、かつ適切な発信経路に沿ってパケットを再送信する、交換装置またはルータを含んでもよい。パケット交換網は、業界基準プロトコルの階層構造によって制御される。その構造のレイヤ1、2および3は、それぞれ、物理的レイヤ、データリンクレイヤ、およびネットワークレイヤである。
【0005】
レイヤ1プロトコルは、ネットワークのノード間の物理的な(電気的、光学的、またはワイヤレスの)インタフェースを定義する。レイヤ1プロトコルは、イーサネット(登録商標)のさまざまな物理的構成、同期光通信ネットワーク(SONET)等の光通信接続のプロトコル、およびWiFi等のさまざまなワイヤレスプロトコルを含む。
【0006】
レイヤ2プロトコルは、ネットワークのノード間でデータが論理的に転送される方法を制御する。レイヤ2プロトコルは、イーサネット(登録商標)、非同期転送モード(ATM)、フレームリレー、およびポイントツーポイントプロトコル(PPP)を含む。
【0007】
レイヤ3プロトコルは、ネットワークの複数ノードを接続する経路に沿って、パケットが送信元から送信先へとルーティングされる方法を制御する。主要なレイヤ3プロトコルは、周知のインターネットプロトコルのバージョン4(IPv4)およびバージョン6(IPv6)である。パケット交換網は、イーサネット(登録商標)、ATM、FRおよび/またはPPPレイヤ2といったプロトコルの組み合わせを用いて、IPパケットをルーティングする必要がありえる。ネットワークのノードの少なくとも一部は、各パケット内に含まれるネットワークレイヤヘッダから宛先アドレスを抽出するルータを含んでもよい。ルータは、次に、宛先アドレスを用いて、パケットが再送信されるべきルートまたは経路を判定する。典型的なパケットは、複数のルータを通過してもよい。各ルータは、宛先アドレスを抽出し、かつパケットが再送信されるべきルートまたは経路を判定する、という動作を反復する。
【0008】
パケット交換通信ネットワークに含まれるパケット交換網または装置をテストするために、多数のパケットを含むテストトラフィックを、生成し、1つ以上のポートからネットワークに送信し、異なるポートにおいて受信してもよい。テストトラフィックの各パケットは、特定の送信先ポートで受信されるように意図されたユニキャストパケットであってもよく、または2つ以上の送信先ポートで受信されるように意図されたマルチキャストパケットであってもよい。この文脈において、「ポート」という用語は、ネットワークとそのネットワークをテストするために用いられる装置との間の、通信接続を指す。「ポート装置」という用語は、ポートにおいてネットワークに接続するネットワークテスト装置内のモジュールを意味する。受信されたテストトラフィックを分析することにより、ネットワークの性能を測定してもよい。ネットワークに接続された各ポート装置は、テストトラフィックの送信元およびテストトラフィックの送信先の両方であってもよい。各ポート装置は、複数の論理的な送信元または送信先のアドレスをエミュレートしてもよい。ポート装置をネットワークに接続するポート装置の個数および通信経路は、一般的に、テストセッション中は固定される。例えば、通信経路またはハードウェア装置の障害により、テストセッション中にネットワークの内部構造が変化することがある。
【0009】
本明細書において、単一のポート装置から発信され、かつ特定の種類のパケットおよび特定の速度を有する一連のパケットを、「ストリーム」と呼ぶ。送信元ポート装置は、例えば、複数のパケット形式、速度、または送信先に適合するように、複数の発信ストリームを同時にかつ並行してサポートしてもよい。「同時に」は、「正確に同じ時間において」を意味する。「並行して」は、「同じ時間の範囲内で」を意味する。
【0010】
本明細書において、「エンジン」という用語は、記述された機能を実行するファームウェアおよび/またはソフトウェアによって増補されえるハードウェアの集合を意味する。エンジンは、一般的に、主に機能言語によってエンジンを定義するハードウェア記述言語(HDL)を用いて設計されてもよい。HDLの設計は、HDLシミュレーションツールを用いて検証されてもよい。検証されたHDLの設計は、次に、一般的に「合成」と呼ばれる工程において、エンジンのゲートネットリストまたは他の物理的記述へと変換されてもよい。合成は、合成ツールを用いて自動的に実行されてもよい。ゲートネットリストまたは他の物理的記述は、フィールドプログラマブルゲートアレイ(FPGA)、プログラム可能論理回路(PLD)、プログラム可能論理アレイ(PLA)、または他のプログラム可能回路等の、プログラム可能半導体デバイスにおけるエンジンを実現するためのプログラミングコードへと更に変換されてもよい。ゲートネットリストまたは他の物理的記述は、特定用途向けIC(ASIC)内部のエンジンを作るための工程の指示およびマスクへと変換されてもよい。
【0011】
「エンジン」は、必要に応じ、より多くの記述名を与えられてもよい。本明細書において、さまざまなエンジンに、「スケジューラ」、「ディストリビュータ」、「ビルダ」、「マルチプレクサ」、「ジェネレータ」および「受信器」という名詞の1つを含む名前が与えられている。
【0012】
本明細書において、「論理」という用語もまた、記述される機能を実行するハードウェアの集合を意味し、「エンジン」よりも規模が小さいことがある。「論理」は、組み合わせ論理回路と、フリップフロップ、レジスタ、および他のデータ伝搬要素を含む逐次的論理回路と、有限状態機械等の複雑な逐次的論理回路とを含む。
【0013】
本明細書において、「装置」は、「エンジン」よりも規模が大きくありえるファームウェアおよび/またはソフトウェアによって増補されえる、ハードウェアの集合を意味する。例えば、装置は、複数のエンジンを含んでもよく、その一部は、類似の機能を並行して実行してもよい。「論理」、「エンジン」および「装置」という用語は、いかなる物理的な分離または境界をも意味しない。1つ以上の装置および/またはエンジンの全てまたは一部は、ネットワークカード等の共通カード上に配置されてもよく、またはFPGA、ASICまたは他の回路装置の内部に配置されてもよい。
【0014】
1つ以上のエンジン、論理回路および/または装置が、1つ以上のプログラム可能な半導体デバイスによって実現される場合には、プログラミングコードは、コンピュータ可読媒体に格納されてもよい。プログラミングコードは、次に、プログラム可能回路または装置を構成するために用いられてもよい。記憶媒体は、例えば、磁気媒体(ハードディスク、フロッピー(登録商標)ディスクおよび磁気テープ等)、光媒体(コンパクトディスク(CD―ROMおよびCD―RW)およびデジタル多用途ディスク(DVDおよびDVD±RW)等)、フラッシュメモリカード、またはデータを格納するための別の物理的オブジェクトであってもよい。「記憶媒体」という用語は、波形および信号の伝搬等を行う一過性の媒体を含まない。
【図面の簡単な説明】
【0015】
【図1】ネットワーク環境を示すブロック図である。
【図2】ポート装置を示すブロック図である。
【図3】トラフィックジェネレータを示すブロック図である。
【図4】優先フロー制御を有するマルチレーントラフィックジェネレータを示すブロック図である。
【図5】チャネライズドパケットバッファを示すブロック図である。
【図6】パケット形成データ(PFD)ディストリビュータを示すブロック図である。
【図7】トラフィックジェネレータのフロー制御論理を示すフローチャートである。
【図8】トラフィックジェネレータ内のフロー制御を示すグラフ図である。
【発明を実施するための形態】
【0016】
本明細書の全体にわたり、ブロック図に示される構成要素には、3桁の参照符号が割り当てられ、参照符号の最上位桁は構成要素が示される図面番号を示し、最下位2桁は構成要素を特定するものである。ブロック図に記載されない構成要素は、同じ参照符号を有する既述の構成要素と同じ特性および機能を有するものとみなされてよい。
【0017】
ブロック図において、矢印線は、信号よりもむしろデータ経路を示しえる。各データ経路の幅は、複数ビットであってもよい。例えば、各データ経路は、4個、8個、16個、64個、256個、またはそれ以上の個数の並列接続から成ってもよい。
【0018】
装置の説明
図1は、ネットワーク環境のブロック図である。この環境は、ネットワークテスト装置100と、ネットワーク190と、複数のネットワーク装置192とを含んでもよい。
【0019】
ネットワークテスト装置100は、ネットワークテスト装置、性能分析装置、適合性検証システム、ネットワーク分析装置、またはネットワーク管理システムであってもよい。ネットワークテスト装置100は、シャーシ102内に収容または封入される、1つ以上のネットワークカード106と、バックプレーン104とを備えてもよい。シャーシ102は、ネットワークテスト装置を収容するのに適切な固定型または携帯型のシャーシ、キャビネットまたは筐体であってもよい。図1に示すように、ネットワークテスト装置100は、統合された装置であってもよい。この代わりに、ネットワークテスト装置100は、トラフィックの生成および/または分析を提供するように協同する多くの別々の装置から成ってもよい。ネットワークテスト装置100およびネットワークカード106は、さまざまなイーサネット(登録商標)規格およびファイバチャネル規格等の、1つ以上の周知の規格またはプロトコルをサポートしてもよく、特許権で保護されたプロトコルをサポートしてもよい。
【0020】
ネットワークカード106は、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プログラム可能論理回路(PLD)、プログラム可能論理アレイ(PLA)、プロセッサ、および他の種類の装置を、1つ以上備えてもよい。加えて、ネットワークカード106は、ソフトウェアおよび/またはファームウェアを備えてもよい。ネットワークカードという用語は、ラインカード、テストカード、分析カード、ネットワークラインカード、ロードモジュール、インタフェースカード、ネットワークインタフェースカード、データインタフェースカード、パケットエンジンカード、サービスカード、スマートカード、スイッチカード、リレーアクセスカード、等を含む。ネットワークカードという用語は、モジュール、装置、およびアセンブリをも含み、それらは複数のプリント回路基板を備えてもよい。各ネットワークカード106は、1つ以上のポート装置110を備えてもよい。各ポート装置110は、1つ以上のポートを介して、ネットワーク190に接続してもよい。各ポート装置110は、通信媒体195を介して、ネットワーク190に接続されてもよい。通信媒体195は、ワイヤ、光ファイバ、ワイヤレスリンク、または他の通信媒体であってもよい。各ネットワークカード106は、単一の通信プロトコルをサポートしてもよく、多くの関連プロトコルをサポートしてもよく、または多くの非関連プロトコルをサポートしてもよい。ネットワークカード106は、ネットワークテスト装置100内に常設的に設置されてもよく、または着脱可能であってもよい。
【0021】
バックプレーン104は、ネットワークカード106のバスまたは通信媒体の役割を果たしてもよい。バックプレーン104はまた、ネットワークカード106に電力を提供してもよい。
【0022】
ネットワーク装置192は、ネットワーク190を通じて通信可能ないかなる装置でもあってもよい。ネットワーク装置192は、コンピューティング装置(ワークステーション、パーソナルコンピュータ、サーバ、ポータブルコンピュータ、パーソナル携帯情報機器(PDA)、コンピューティングタブレット、携帯電話/モバイル電話、電子メール機器等)、周辺機器(プリンタ、スキャナ、ファクシミリ装置等)、ディスクドライブを備えネットワーク機能を有する記憶装置(ネットワーク接続ストレージ(NAS)、ストレージエリアネットワーク(SAN)装置等)、ネットワーク化装置(ルータ、リレー、ハブ、スイッチ、ブリッジ、マルチプレクサ等)であってもよい。加えて、ネットワーク装置192は、ネットワークを通じて通信可能な、設備、アラームシステム、および他の任意の装置またはシステムを備えてもよい。
【0023】
ネットワーク190は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ストレージエリアネットワーク(SAN)、これらのワイヤード版、ワイヤレス版、またはこれらの組合せであってもよく、さらにはインターネットを含んでもよく、またはインターネットであってもよい。ネットワーク190上の通信は、フレーム、セル、データグラム、パケットまたは他の情報単位を含むさまざまな形態をとりえるが、本明細書においては、それらの全てをパケットと呼ぶ。ネットワークテスト装置100およびネットワーク装置192は、互いに同時に通信してもよい。ネットワークテスト装置100と所与のネットワーク装置195との間に、複数の論理的通信経路があってもよい。ネットワークそのものは、非常に多くのノードから成ってもよく、それらのノードは、データが伝送される非常に多くの物理経路および論理経路を提供する。
【0024】
各ポート装置110は、特定の通信リンク195を介して、ネットワーク装置192上の対応するポートに接続していてもよい。状況によっては、ポート装置110は、ネットワーク装置192が適切に受信できるよりも多くのトラフィックを、ネットワーク装置192上の対応するポートに送信してもよい。例えば、ネットワーク装置192は、ネットワーク装置192がパケットを処理および転送できる速度よりも速い全体的速度において、複数の送信元から着信パケットを受信してもよい。この場合、ネットワーク装置192内のバッファメモリは、受信された未処理のパケットによって満杯にされてもよい。バッファメモリのオーバフローによるパケット損失を回避するために、ネットワーク装置192は、フロー制御のメッセージまたはパケットをポート装置110に送信してもよい。
【0025】
例えば、ポート装置110およびネットワーク装置192が全二重イーサネット(登録商標)接続を用いて通信を行う場合、IEEE規格802.3xの規定により、ネットワーク装置192は、休止フレームまたは休止パケットをポート装置110に送信してもよい。休止フレームは、休止パケット内のデータによって定義される時間間隔にわたって、特定の制御パケットを除くパケットの送信を停止するように、ポート装置110に命令してもよい。ネットワーク装置192は、ゼロ(0)という時間間隔を定義する休止パケットを送信することにより、前回休止されたポート装置にパケットの送信を再開させてもよい。
【0026】
しかしながら、サービス品質(QoS)レベル、トラフィッククラス、またはなんらかの他の優先順位方式に従ってトラフィックに優先順位をつけるネットワークのフロー制御において、単にポート装置からの出力を休止することは、許容しえない方法でありえる。例えば、IEEE規格802.1Qbbは、受信器が8個のトラフィッククラスのフローを制御してもよいと規定している。フロー制御に影響を及ぼすために、受信器は、8個のトラフィッククラスの一部または全部を休止させるように命令する優先フロー制御(PFC)パケットを、送信器に送信してもよい。PFCパケットは、各トラフィッククラスを休止すべき時間間隔を、独立して定義してもよい。
【0027】
ここで図2を参照すると、例示的なポート装置210は、ポート中央処理装置212(CPU)と、トラフィックジェネレータ装置220と、トラフィック受信装置280と、ポート装置210をテスト対象ネットワーク290に連結するネットワークインタフェース装置270とを備えてもよい。ポート装置210は、ネットワークカード106等のネットワークカードの全部または一部であってもよい。
【0028】
ポートCPU212は、プロセッサ、該プロセッサに連結されたメモリ、および本明細書に記載される機能および特徴を提供するためのさまざまな特殊な装置、回路、ソフトウェア、およびインタフェースを備えてもよい。工程、機能、および特徴は、プロセッサ上で動作するソフトウェアによって、全体的または部分的に実現されてもよく、ファームウェア、アプリケーションプログラム、アプレット(例えばJava(登録商標)アプレット)、ブラウザのプラグイン、COMオブジェクト、動的リンクライブラリ(DLL)、スクリプト、1つ以上のサブルーチン、またはオペレーティングシステムのコンポーネントまたはサービス、といった形態であってもよい。プロセッサおよび他の装置の他の部分によってなんらかの機能が実行されるように、ハードウェア、ソフトウェア、およびそれらの機能は、分散型であってもよい。
【0029】
ポートCPU212は、テストアドミニストレータ205と通信してもよい。テストアドミニストレータ205は、オペレータインタフェース207と通信してもよく、またはオペレータインタフェース207を備えてもよい。テストアドミニストレータ205は、ネットワークテスト装置100の内部に含まれるかまたは外部にあるコンピューティング装置であってもよい。テストアドミニストレータ205は、ネットワーク290のテストに関与する際に、ポート装置が必要とする命令およびデータを、ポートCPU212に提供してもよい。テストアドミニストレータ205から受信される命令およびデータは、例えば、ポート装置210によって生成されるべきパケットストリームの定義と、ポート装置210によって蓄積および報告されえる性能統計の定義とを含んでもよい。
【0030】
ポートCPU212は、複数のストリームを形成するストリーム形成データ214を、トラフィックジェネレータ装置220に提供してもよい。ストリーム形成データ214は、例えば、パケットのタイプ、送信の頻度、パケット内の固定コンテンツフィールドおよび可変コンテンツフィールドの定義、および各パケットストリームのための他の情報を含んでもよい。トラフィックジェネレータ装置220は、次に、ストリーム形成データ214に従って、複数のストリームを生成してもよい。複数のストリームは、インタリーブされることにより発信トラフィック265を形成してもよい。ストリームの各々は、一連のパケットを含んでもよい。各ストリーム内のパケットは、同じ一般的なタイプであってもよいが、長さおよびコンテンツは異なっていてもよい。
【0031】
ネットワークインタフェース装置270は、トラフィックジェネレータ装置220からの発信トラフィック265を、電気信号、光学信号または無線信号のフォーマットに変換してもよい。そのフォーマットは、リンク295を介してテストトラフィックをテスト対象ネットワーク290に送信するために必要なものである。リンク295は、ワイヤリンク、光ファイバリンク、ワイヤレスリンク、または他の通信リンクであってもよい。同様に、ネットワークインタフェース装置270は、ネットワークからリンク295を介して電気信号、光学信号または無線信号を受信してもよく、受信した信号を、トラフィック受信装置280が使用できるフォーマットの着信トラフィック275へと変換してもよい。
【0032】
トラフィック受信装置280は、ネットワークインタフェース装置270から、着信トラフィック275を受信してもよい。トラフィック受信装置280は、各受信パケットが特定のフローの部分であるかどうかを判定してもよく、ポートCPU212によって提供されるテスト命令218に従って、各フローのテスト統計を蓄積してもよい。蓄積されるテスト統計は、例えば、受信されたパケットの合計数、順番誤りで受信されたパケットの数、エラーとともに受信されたパケットの数、伝搬遅延の最大値、平均値および最小値、および各フローの他の統計を含んでもよい。トラフィック受信装置280は、テスト命令218に含まれる獲得基準に従って、特定のパケットを獲得および格納してもよい。トラフィック受信装置280は、テストセッション中またはテストセッション後のさらなる分析のために、テスト命令218に従って、テスト統計および/または獲得したパケット284を、ポートCPU212に提供してもよい。
【0033】
テストセッション中に、ポート装置210とネットワーク290との間で、若干の双方向通信が必要とされるかまたは所望されることもある。例えば、トラフィック受信装置280は、制御パケットを受信してもよい。制御パケットは、テストセッションを制御するために必要なデータを含むパケットであり、ポート装置210は、それに対して受信通知または応答を送信する必要がある。トラフィック受信装置280は、着信制御パケットを、着信トラフィックから分離してもよく、着信制御パケット282を、ポートCPU212へとルーティングしてもよい。ポートCPU212は、各制御パケットのコンテンツを抽出してもよく、発信CPUトラフィック216という形にて、適切な応答を生成してもよい。発信CPUトラフィック216は、トラフィックジェネレータ装置220に提供されてもよい。トラフィックジェネレータ装置220は、発信CPUトラフィック216を、発信トラフィック265の中に挿入してもよい。
【0034】
トラフィックジェネレータ装置220からの発信トラフィック265は、独立して休止されえる「フロー制御グループ」へと分割されてもよい。例えば、発信トラフィック265は、IEEE802.1Qbbに従って、8個のトラフィッククラスに対応する8個のフロー制御グループへと分割されてもよい。発信トラフィック265は、IEEE802.1Qbbに従って8個のトラフィッククラスに対応する8個のフロー制御グループと、休止されなくてもよい制御トラフィックおよび他のトラフィックのための第9のフロー制御グループへと、分割されてもよい。トラフィックジェネレータ装置220によって生成される各ストリームは、フロー制御グループに割り当てられてもよい。各フロー制御グループは、0個、1個、または複数のストリームを含んでもよい。ポート装置220によって受信されえる制御パケットの1つの形式は、フロー制御パケットであってもよく、例えば、IEEE802.3xまたはIEEE802.1Qbbに従うものであってもよい。フロー制御パケットは、トラフィック受信装置280内で認識されてもよい。フロー制御パケット286に由来する、フロー制御パケットおよび/またはフロー制御データは、トラフィック受信装置280からトラフィックジェネレータ装置220へと直接的に提供されてもよい。
【0035】
以下の説明に含まれる例において、ネットワークテスト装置のポート装置とネットワーク装置との間のフロー制御は、IEEE802.1Qbbに従うフロー制御パケットを用いて管理される、と仮定することがある。しかしながら、説明される装置および方法は、現在または将来の他の優先フロー制御方式との互換性を有し、8個より多いかまたは少ないトラフィッククラスをも含む。
【0036】
ここで図3を参照すると、例示的なトラフィックジェネレータ320は、複数のパケットのストリームから成る発信トラフィック365を生成してもよい。トラフィックジェネレータは、例えば、16のストリーム、64個のストリーム、256個のストリーム、512個のストリーム、または他の個数のストリームを生成することが可能であり、ストリームを任意の組合せでインタリーブすることにより、テストトラフィックを提供してもよい。例示的なトラフィックジェネレータ320は、図2のトラフィックジェネレータ装置220であってもよく、図1に示すネットワークカード106の全体または一部であってもよい。
【0037】
トラフィックジェネレータ320は、スケジューラ330を備えてもよい。所望の通信速度は、トラフィックジェネレータ320によって生成されるべき複数のストリームの各々に関連づけられてもよい。スケジューラ330は、各ストリームが発信トラフィック365にパケットを与えるべき時間を示す、カウンタまたは仮想カウンタ等の調時機構を、ストリームごとに備えてもよい。2つ以上のストリームが同時にパケットを与えようとする際に、その状況におけるパケットシーケンスを判定するために、スケジューラ330は、アービトレーション論理を備えてもよい。スケジューラ330は、ハードウェア、またはハードウェアとソフトウェアとの組合せによって実現されてもよい。例えば、米国特許第7,616,568B2号明細書は、リンクされたデータ構造と、単一のハードウェアタイマとを用いる、スケジューラを開示している。米国特許出願公報第2011/0002228A1号明細書は、複数のハードウェアタイマを用いるスケジューラを開示している。
【0038】
スケジューラ330は、生成されるパケットごとに、パケット定義データ332を出力してもよい。パケット定義データ332は、生成されるパケットを定義するために必要なデータを含んでもよいが、パケットを生成するために必要なすべてのデータを必ずしも含まなくともよい。生成される各パケットは、複数のストリームの1つに属するものであり、パケット定義データ332は、例えば、対応するストリームを識別するストリーム識別子を含んでもよい。パケット定義データ332は、形成されるべきパケットのタイプ、長さ、または他の特性を識別するデータを含んでもよい。
【0039】
トラフィックジェネレータ320によって生成される各パケットは、ステートフルコンテンツおよびステートレスコンテンツを含んでもよい。「ステートフルコンテンツ」とは、同一ストリーム内の前のパケットのコンテンツに依存するコンテンツである。ステートフルコンテンツの例としては、ストリーム内のパケットに割り当てられる逐次的なシーケンス番号、および前のパケット内の同一フィールドのコンテンツにオフセットを追加することに由来するパケット内のアドレスまたは他のフィールドが挙げられる。トラフィックジェネレータは、ステートフルな各コンテンツアイテムについての履歴または「状態」を維持しなければならないので、このようなコンテンツは「ステートフル」とみなされる。対照的に、「ステートレスコンテンツ」とは、前のパケットのコンテンツに依存しないコンテンツである。ステートレスコンテンツの例としては、ランダムに生成されるペイロードコンテンツ、ストリーム内のパケット間で異ならない固定コンテンツ、およびパケットの現在のコンテンツに基づいて生成されるチェックサムが挙げられる。「ステートフルコンテンツ」および「ステートレスコンテンツ」は、ネットワークを介するステートフル接続およびステートレス接続と混同されるべきではない。
【0040】
トラフィックジェネレータ320は、ステートフルコンテンツジェネレータ345を備えてもよい。ステートフルコンテンツジェネレータ345は、スケジューラ330から出力されるパケット定義データ332に関連づけられるステートフルコンテンツ347を生成してもよい。パケット定義データ332とそれに関連づけられるステートフルコンテンツとの組合せを、本明細書においては「パケット形成データ」347と呼ぶ。
【0041】
パケット形成データ347は、ステートレスパケットビルダ350に提供されてもよい。ステートレスパケットビルダ350は、対応するパケット形成データ347に基づいて、各パケットの生成を終了してもよい。パケット形成データに含まれるストリーム識別子に従って、ステートレスパケットビルダ350は、パケットごとにパケットテンプレートを読み出してもよい。パケットテンプレートは、ストリーム内のパケット間で異ならない固定データを含んでもよい。ステートレスパケットビルダは、次に、パケット形成データからステートフルコンテンツをテンプレート内の適切なフィールドの中に挿入し、ペイロードコンテンツおよび他のステートレスコンテンツを生成し、パケット内のチェックサムを生成および配置し、各パケットを完成するために必要な他のタスクを実行してもよい。
【0042】
単一のステートレスパケットビルダは、回線速度において最新の高速ネットワークをテストするために充分なパケットを構築するには、非実用的でありえる。したがって、ステートレスパケットビルダは、複数の平行レーンを含んでもよい。各レーンは、独立してパケットを構築する能力を有してもよい。複数のレーンが存在することにより、レーンの個数にほぼ比例して、パケットを生成可能な速度も上昇することがある。図3は、4個のレーンを有するステートレスパケットビルダ350を示す。しかしながら、ステートレスパケットビルダは、4個よりも多いレーンまたは少ないレーンを有してもよい。
【0043】
ステートレスパケットビルダ350によって構築されるパケットは、出力マルチプレクサ360に配信されてもよい。出力マルチプレクサ360は、ステートレスパケットビルダ350およびCPUトラフィック316のチャネルからのパケットをインタリーブすることにより、発信トラフィック365を形成してもよい。出力マルチプレクサは、各パケットの伝送時間を示すタイムスタンプを追加したり、巡回冗長検査値を追加または調整したりする等の、パケットの仕上げ作業を、送信前に実行してもよい。
【0044】
ステートレスパケットビルダ350のレーンからのパケットが確実に所望の順序でインタリーブされるようにするために、出力マルチプレクサ360は、スケジューラ330からパケットシーケンスデータ334を受信してもよい。パケットシーケンスデータ334は、発信トラフィックについての必要な送信順序を示してもよい。「パラレルコヒーレント送信エンジンを用いるトラフィックジェネレータ」という名称の米国特許第7,769,049B2号明細書は、スケジューラによって提供されるパケットシーケンスデータに従って、複数の送信エンジン(ステートレスパケットビルダ)からのパケットをインタリーブする、マルチレーントラフィックジェネレータを開示している。
【0045】
いかなる時点においても、1つ以上のパケットがステートレスパケットビルダ内で処理中でありえるように、ステートレスパケットビルダ350の各レーンは、複数の逐次的ステージを含むパイプラインとして構成されてもよい。ステートレスパケットビルダは、処理ステージ間または処理ステージ中にパケットを保持するように、内部FIFO(先入先出)待ち行列を含んでもよい。特定のパケットのためのパケット形成データがステートレスパケットビルダに入力されてから、完成パケットがステートレスパケットビルダから出力されるまでの遅延は、特定のパケットの長さおよび/またはコンテンツ、およびパイプライン内の特定のパケットに先行するパケットの長さおよび/またはコンテンツに依存することがある。
【0046】
IEEE802.1Qbbに従う優先フロー制御を実現するためには、他のフロー制御グループのパケットの送信が絶え間なく続いている間に、1つ以上の指定されたフロー制御グループ内でパケットの送信を休止する能力が必要とされる。休止されたフロー制御グループ内のパケットのスケジューリングを単に禁止するだけでは不十分なことがある。なぜなら、ステートレスパケットビルダのパイプラインのパケットが完成して送信される際に、休止されたフロー制御グループ内のパケットの送信が、かなりの時間間隔にわたって続くことがあるからである。休止されたフロー制御グループの処理中パケットが、ステートレスパケットビルダ内で停止できる場合には、フロー制御コマンドに対して、より即座に応答しえる。しかしながら、この場合には、休止されていないフロー制御グループのパケットは、ステートレスパケットビルダのパイプラインに沿って、停止されたパケットを渡すことができなければならない。
【0047】
「優先フロー制御を有するトラフィックジェネレータ」という名称の同時係属米国特許出願第12/766,704号明細書は、トラフィックジェネレータにおいて、パケットジェネレータ(ステートレスパケットビルダ)の内部FIFO待ち行列がチャネライズされることを開示している。本明細書において、「チャネライズド」という用語は、「複数のパラレルチャネルを有し、各チャネルが、複数のフロー制御グループの対応する1つに一意に関連づけられる」ということを意味する。「一意に関連づけられる」という用語は、一対一対応を意味する。チャネライズドFIFO待ち行列の各チャネルは、対応するフロー制御グループについて、処理中データおよび処理中パケットの格納に専用されてもよい。チャネライズド各FIFO待ち行列は、休止されていないトラフィッククラスのパケットがトラフィックジェネレータ内で停止されたパケットを渡す機会を提供する。
【0048】
マルチレーンステートレスパケットビルダを用いて高速度トラフィックジェネレータの優先フロー制御を実現する際に必要とされる、チャネライズド待ち行列専用のメモリ容量は、非実用的でありえる。例えば、米国特許出願第12/766,704号明細書に開示された方法によると、4個のステートレスパケットビルダのレーンと9個のフロー制御グループとを有するトラフィックジェネレータは、36個のチャネル(4個の各レーン内に9個のチャネル)を有するFIFO待ち行列を必要としえる。特に、フィールドプログラマブルゲートアレイまたは他のプログラム可能な回路装置を用いてトラフィックジェネレータを実現する際には、このように多数のパラレルFIFO待ち行列は、非実用的でありえる。
【0049】
ここで図4を参照すると、例示的なトラフィックジェネレータ420は、非常に高い回線速度において発信トラフィックを生成し、マルチレベルの優先フロー制御を提供しえる。トラフィックジェネレータ420は、スケジューラ430と、ステートフルコンテンツジェネレータ440と、マルチレーンステートレスパケットビルダ450と、出力マルチプレクサ460とを含んでもよい。これらは一般に、図3のトラフィックジェネレータ320の対応構成要素について記載されているように機能するものである。トラフィックジェネレータ420は更に、スケジューラ430によって提供されるパケット定義データを格納する、チャネライズドスケジュールFIFO435と、ステートレスパケットビルダ450によって提供される完成パケットを格納する、チャネライズドパケットバッファ455とを備えてもよい。
【0050】
スケジューラ430は、例えば16個のストリーム、64個のストリーム、256個のストリーム、512個のストリーム、または他のなんらかの個数のストリームといった、複数のストリームをスケジューリングしてもよい。スケジューラ430は、各ストリームが発信トラフィック465にパケットを与えるべき時間を示す、カウンタまたは仮想カウンタ等の調時機構を、ストリームごとに備えていてもよい。2つ以上のストリームが同時にパケットを与えようとする際に、その状況におけるパケットシーケンスを判定するために、スケジューラ430は、アービトレーション論理を備えていてもよい。
【0051】
スケジューラ430は、生成されるパケットごとに、パケット定義データ432を出力してもよい。パケット定義データ432は、生成されるパケットを定義するために必要なデータを含んでもよいが、パケットを生成するために必要なすべてのデータを必ずしも含まなくともよい。生成される各パケットは、複数のストリームの1つに属するものであり、パケット定義データ432は、例えば、対応するストリームを識別するストリーム識別子を含んでもよい。各ストリーム、およびパケット定義データの各パケットおよび各項目は、複数のフロー制御グループの1つに関連づけられていてもよい。例えば、各ストリームは、IEEE802.1Qbbに従って8個のトラフィッククラスに対応する8個のフロー制御グループを含む9個のフロー制御グループと、休止されなくてもよい制御トラフィックおよび他のトラフィックのための第9のフロー制御グループとに、関連づけられてもよい。パケット定義データ432は、各パケットに関連づけられるフロー制御グループを識別するフロー制御グループ識別子を含んでもよい。
【0052】
ストリームとフロー制御グループとの間の関連づけは、固定されていてもよく、またはプログラム可能であってもよい。例えば、スケジューラ430は、各ストリーム識別子を関連づけられるフロー制御グループへとマッピングするデータを格納する、マップメモリ(図示せず)を備えてもよい。関連づけられるフロー制御グループへと各ストリーム識別子をマッピングするデータは、テストセッション前にマップメモリにロードされてもよく、テストセッション中に修正可能であってもよい。
【0053】
チャネライズドスケジュール待ち行列435は、スケジューラ430から出力されるパケット定義データ432を格納してもよい。チャネライズドスケジュール待ち行列435の各チャネルは、先入れ先出しの態様で機能してもよい。チャネライズドスケジュール待ち行列435の各チャネルは、関連づけられるフロー制御グループについて、パケット定義データの格納に専用されてもよい。チャネライズドスケジュール待ち行列435は、チャネライズドスケジュール待ち行列の1つ以上のチャネルが満杯であるかどうかを示すフィードバック437を、スケジューラ430に提供してもよい。スケジューラ430は、チャネライズドスケジュール待ち行列435の1つ以上の満杯のチャネルに関連づけられるスケジューリングパケットストリームを保留してもよい。
【0054】
PFD(パケット形成データ)ディストリビュータ445は、チャネライズドスケジュール待ち行列435から読み込まれるパケット定義データ432を、ステートフルコンテンツジェネレータ440からのステートフルコンテンツ442と組み合わせることにより、パケット形成データ447を生成してもよい。PFDディストリビュータ445は、パケットごとのパケット形成データを、ステートレスパケットビルダ450のレーンの1つに転送してもよい。PFDディストリビュータ445の操作については、さらに詳細に後述する。
【0055】
前述したように、ステートレスパケットビルダ450は、対応するパケット形成データに基づいて、各パケットの生成を終了してもよい。ステートレスパケットビルダ450は、複数の非チャネライズドパラレルレーンを含んでもよい。本特許においては、「非チャネライズド」は、チャネルがないことを意味する。具体的には、非チャネライズドパケットビルダ内の内部待ち行列は、1つのパケットがパイプライン内の他を通過できるようにするパラレル経路を有さない。したがって、一旦開始されると、各パケットは、レーン内の次のパケットが完成されえる前に、ステートレスパケットビルダのパイプラインの逐次的ステージの全てを通過してレーンから出なければならない。
【0056】
ステートレスパケットビルダ450は、レーン出力フィードバック452を、PFDディストリビュータ445に提供してもよい。レーン出力フィードバック452は、ステートレスパケットビルダ450が完成パケットをチャネライズドパケットバッファ455に転送した、ということを示してもよい。レーン出力フィードバック452は、完成パケットの長さとレーン識別子とを含んでもよい。
【0057】
ステートレスパケットビルダ450から出力された完成パケットは、チャネライズドパケットバッファ455に格納されてもよい。チャネライズドパケットバッファ455の各チャネルは、メモリへのパケット書き込みおよびメモリからのパケット読み込みを制御する、メモリおよび論理のブロックを含んでもよい。チャネライズドパケットバッファ455の各チャネルは、関連づけられるフロー制御グループについて、完成パケットの格納に専用されてもよい。
【0058】
一部のフロー制御グループは、他のフロー制御グループからのパケット送信が続いている間に休止されえるので、フロー制御グループ間のパケットの相対的な順序を保証することはできない。各フロー制御グループ内のパケットの順序は保護されえる。すなわち、発信トラフィック465の中にパケットが組み込まれる順序は、パケットがスケジューリングされた順序と同じでありえる。この目的で、チャネライズドパケットバッファ455は、パケットシーケンスデータ434を、PFDディストリビュータ445から受信してもよい。チャネライズドパケットバッファ455内の論理は、パケットシーケンスデータを用いることにより、各チャネル内のスケジューリングされた順序で完成パケットを格納してもよい。
【0059】
チャネライズドパケットバッファ455は、従来の先入れ先出し待ち行列として機能しなくてもよい。例えばここで、パケットAおよびパケットBは、同じフロー制御グループに属しており、かつ「Aの次にBが続く」順序で送信されるようにスケジューリングされている、と仮定する。パケットAは、ステートレスパケットビルダの第1のレーンに割り当てられ、パケットBは、ステートレスパケットビルダの第2のレーンに割り当てられる。パケットBがパケットAよりも実質的に短い場合には、パケットBは、パケットAよりも前に完成され、チャネライズドパケットバッファ455に格納されてもよい。この状態において、先入れパケット(パケットB)は、先出しパケットであることを意図しない。
【0060】
出力マルチプレクサ460は、チャネライズドパケットバッファ455のチャネルからのパケットをインタリーブすることにより、発信トラフィック465を形成してもよい。出力マルチプレクサ460は、発信トラフィック465にパケットが追加される順序を選択するために、様々な周知技術のいずれを用いてもよい。例えば、出力マルチプレクサ460は、利用可能な場合には、ラウンドロビン技術を用いることにより、逐次的順序で各チャネルからパケットを読み出してもよい。出力マルチプレクサ460は、各チャネルに格納されるパケットの数に基づいて、またはチャネルに割り当てられる所定の優先順に基づいて、パケットを選択してもよい。出力マルチプレクサ460は、公平なアクセスアルゴリズムに基づき、またはなんらかの他の態様で、パケットを選択してもよい。
【0061】
出力マルチプレクサは、フロー制御論理464からフロー制御データ466を受信してもよい。フロー制御データ466は、チャネライズドパケットバッファ455およびチャネライズドスケジュール待ち行列435の複数のチャネルに対応する複数のフロー制御グループの各々が、休止されるか否かを示してもよい。フロー制御グループが休止される場合には、出力マルチプレクサ460は、チャネライズドパケットバッファの関連づけられたチャネルからパケットを読み込むことを中止してもよい。フロー制御論理464は、フロー制御パケット486を受信および復号することにより、フロー制御データ466を提供してもよい。
【0062】
出力マルチプレクサ460は、PFDディストリビュータ445に、チャネル出力フィードバック462を提供してもよい。チャネル出力フィードバック462は、出力マルチプレクサ460がチャネライズドパケットバッファ455のチャネルの1つからパケットを取り出した、ということを示してもよい。チャネル出力フィードバック462は、取り出されたパケットの長さとチャネル識別子とを含んでもよい。
【0063】
図5のブロック図に示すチャネライズドパケットバッファ500は、トラフィックジェネレータ420内のチャネライズドパケットバッファ455として用いるのに適切なものでありえる。チャネライズドパケットバッファ500は、例示的なものであり、チャネライズドパケットバッファは、他の態様でも実現可能である。チャネライズドパケットバッファ500は、ステートレスパケットビルダ(例えばステートレスパケットビルダ450)のN個のレーンから、完成パケットを受信し、各完成パケットを、M個のパケットバッファメモリの1つに格納してもよい(これらのうち、パケットバッファ510−1およびパケットバッファ510−Mのみを図示する)。ここで、NおよびMは、1よりも大きい整数である。前例に続けて、Nは4であってもよく、Mは9であってもよい。完成パケットは、メモリアクセス論理520を介して、N個のレーンからM個のパケットバッファへと転送されてもよい。メモリアクセス論理520は、任意のレーンからのパケットをパケットバッファのいずれかに書き込むことを可能にしてもよく、2つ以上のレーンからのパケットをそれぞれのパケットバッファに同時に書き込むことを可能にしてもよい。メモリアクセス論理520は、一般にクロスバースイッチとして機能してもよい。但し、メモリアクセス論理520の実現態様は、物理的なクロスバーマトリックスではなくともよい。
【0064】
各パケットバッファ510−1乃至510−Mは、循環式バッファとして用いられるランダムアクセスメモリブロックであってもよい。すなわち、メモリブロック内の最高アドレスに対してデータの読み込みまたは書き込みが行われた後に、メモリブロック内の最低アドレスに対して次のデータの読み込みまたは書き込みが行われる。各パケットバッファ510−1乃至510−Mに対してデータの読み込みおよび書き込みが行われる位置は、それぞれの読取ポインタおよび書込ポインタによって制御されてもよい。
【0065】
チャネライズドパケットバッファは、各パケットバッファ510−1乃至510−Mに一意に関連づけられる読取ポインタ(RP)514−1乃至514−Mを含んでもよい。各読取ポインタ514−1乃至514−Mは、出力マルチプレクサ(出力マルチプレクサ460等)によってパケットが出力バッファから取り出される際に次に読み込まれる、それぞれのパケットバッファ内のアドレスを示してもよい。チャネライズドパケットバッファ500は、ステートレスビルダの各レーンに関連づけられる書込ポインタ先入れ先出し待ち行列(WPFIFO)を含んでもよい(これらのうち、WPFIFO待ち行列530−1および530−Nのみを図示する)。WPFIFO内の各エントリは、関連づけられるステートレスパケットビルダチャネルから出力される対応パケットが格納される、開始アドレスを示してもよい。チャネライズドパケットバッファは、各パケットバッファ510−1乃至510−Mに一意に関連づけられる、次パケットポインタ(NPP)512−1乃至512−Mを含んでもよい。各NPPは、現在はパケットを格納せず、かつステートレスパケットビルダレーン内で処理中のパケットの格納にもコミットされていない、関連づけられたパケットバッファ内に、最低アドレスを格納してもよい。
【0066】
書込制御論理540は、WPFIFO530−1乃至530−Nに置かれる書込ポインタを生成してもよく、PFDディストリビュータ(PFDディストリビュータ445等)から受信されるパケットシーケンスデータ434に基づいて、NPP512−1乃至512−Mの値を更新してもよい。PFDディストリビュータが、ステートレスパケットビルダ450のレーンの1つにパケットを割り当てるたびに、パケットシーケンスデータ434は、PFDディストリビュータから書込制御論理540へと送信されてもよい。パケットごとのPFDは、レーン識別子、フロー制御グループ/パケットバッファ識別子、およびパケット長を含んでもよい。書込制御論理540は、このデータを用いることにより、識別されたステートレスパケットビルダレーンに関連づけられるWPFIFO530−1乃至530−Nに書込ポインタを追加し、識別されたパケットバッファに関連づけられるNPP512−1乃至512−Mを再計算してもよい。
【0067】
前例に続けて、パケットAおよびBは、パケットバッファ510−1に関連づけられるフロー制御グループに属する、と仮定する。PFDディストリビュータが、ステートレスパケットビルダ450の第1のレーンにパケットAを割り当てると、PFDディストリビュータは、パケットAに関連づけられるパケットシーケンスデータをも書込制御論理540に送信する。書込制御論理540は、次に、パケットバッファ510−1用のNPP512−1を、第1のレーンに関連づけられるWPFIFOの後ろにコピーし、以前のNPP512−1の値にパケットAの長さを追加することにより、パケットバッファ510−1用の新たなNPPを算出する。パケットAの長さをNPPの値に追加することは、ステートレスパケットビルダの第1のレーンによってパケットAが配信される際に、パケットバッファ510−1の一部がパケットAを格納するコミットメントを反映することである。同様に、PFDディストリビュータが、ステートレスパケットビルダの第2のレーンにパケットBを割り当てる際に、PDFディストリビュータは、パケットBに関連づけられるパケットシーケンスデータをも書込制御論理540に送信する。書込制御論理は、次に、第2のレーンに関連づけられるWPFIFOの後ろに、NPP512−1の新たな値をコピーし、NPP512−1の前の値に、パケットBの長さを追加する。したがって、ステートレスパケットビルダレーンから受信されたパケットは、パケットがスケジューリングされた順序で格納される。その順序は必ずしも、パケットがチャネライズドパケットバッファにおいて受信された順序であるというわけではない。
【0068】
図6のブロック図に示すPFDディストリビュータ600は、トラフィックジェネレータ420のPFDディストリビュータ445として用いるのに適切なものでありえる。PFDディストリビュータ600は、例示的なものであり、PFDディストリビュータは、他の態様でも実現可能である。PFDディストリビュータ600は、チャネライズドスケジュール待ち行列(チャネライズドスケジュール待ち行列435等)のN個のレーンから、パケット定義データを受信してもよい。PFDディストリビュータ600は、ステートレスパケットビルダ(ステートレスパケットビルダ450等)のM個のレーンに、パケット形成データ447を送信してもよい。前例に続けて、Nは9に等しくともよく、Mは4に等しくともよい。パケット形成データ447は、パケット定義データと、それに関連づけられるステートフルコンテンツ442とを含んでもよい。PFDディストリビュータ600は、チャネルセレクタ605と、レーンセレクタ610とを備えてもよい。
【0069】
チャネルセレクタ605は、チャネライズドスケジュール待ち行列のN個のチャネルから、パケット定義データ432を取り出してもよい。チャネルセレクタ605は、パケット定義データがチャネライズドスケジュール待ち行列のチャネルから読み込まれる順序を選択するために、様々な周知技術のいずれを用いてもよい。例えば、チャネルセレクタ605は、利用可能な場合には、ラウンドロビン技術を用いることにより、逐次的順序で各チャネルからパケット定義データを読み出してもよい。チャネルセレクタ605は、チャネライズドスケジュール待ち行列の各チャネルに格納されるデータ項目の数に基づき、またはチャネルに割り当てられる所定の優先順に基づき、チャネルを選択してもよい。チャネルセレクタ605は、公平なアクセスアルゴリズムに基づき、またはなんらかの他の態様で、チャネルを選択してもよい。
【0070】
前述したように、PFDディストリビュータ600は、マルチレーン非チャネライズドステートレスパケットビルダに、パケット形成データを提供してもよい。非チャネライズドパケットビルダは、処理中のパケットをレーン内で互いに通過させないので、同一レーン内において次のパケットが完成されえる前に、所与のレーンに割り当てられる各パケットは、完成されて、チャネライズドパケットバッファ(チャネライズドパケットバッファ455等)の送信先チャネルへと転送されなければならない。ステートレスパケットビルダの1つ以上のレーンをブロックすることを回避するためには、チャネライズドパケットバッファの送信先チャネルが完成パケットを格納するのに充分な使用可能スペースを有する場合にのみ、PFDディストリビュータは、パケット形成データ447をステートレスパケットビルダに送信してもよい。
【0071】
チャネルセレクタ605は、パケットバッファモデル625を維持してもよい。パケットバッファモデルは、チャネライズドパケットバッファの各チャネルの現在の使用可能容量を示してもよい。この目的で、チャネルセレクタ625は、チャネライズドパケットバッファの各チャネルから読み込まれたパケットの長さを示す、チャネル出力フィードバックを受信してもよい。各チャネルの使用可能容量とは、(a)1つ以上の完成パケットを格納するために現在用いられておらず、かつ(b)ステートレスパケットビルダ内で現在処理中のパケットを格納するために割り当てられていない、メモリ容量である。したがって、各チャネルの使用可能容量とは、チャネルに関連づけられるフロー制御グループが休止され、かつすべての処理中パケットがステートレスパケットビルダによって完成した場合に残りえる、メモリ容量を示すものである。チャネルセレクタは、以下の数式を用いて、各パケットバッファチャネルの使用可能容量をモデル化してもよい。
(使用可能容量)=(メモリサイズ)−(パケットビルダに割り当てられるパケットの全体長)+(パケットバッファから読み込まれるパケットの全体長)(1)
【0072】
PFDディストリビュータ600は、ステートレスパケットビルダのM個のレーンの1つを選択し、かつ構築されるべきパケットごとにパケット形成データ447を受信する、レーンセレクタを備えてもよい。レーンセレクタは、負荷分散アルゴリズムを用いて、レーンを選択してもよい。例えば、レーンセレクタは、ステートレスパケットジェネレータの各レーンの利用可能容量を示す、レーン帯域幅モデル630を維持してもよい。レーン帯域幅モデルは、各レーンに割り当てられるパケットの累計長、各レーンにおいて現在処理中のパケットの全体長、またはレーン帯域幅の他のなんらかの測定を追跡してもよい。この目的で、レーンセレクタは、各レーンがチャネライズドパケットバッファに完成パケットを転送する時間を示す、レーン出力フィードバック452を受信してもよい。レーンセレクタは、パケット形成データの新たな各項目を、最も利用可能な帯域幅を有するレーンに送信してもよい。
【0073】
工程の説明
ここで図7を参照すると、トラフィックを生成するための全工程700は、工程705で開始してもよく、多数のパケットが生成された後に工程795で終了してもよく、またはオペレータのアクション(図7に図示せず)によって停止されることもある。全工程700は、トラフィックジェネレータ(トラフィックジェネレータ320またはトラフィックジェネレータ420等)を用いてトラフィックを生成するために適切なものでありえる。全工程700は、事実上、巡回的かつリアルタイムなものであってもよい。図7のフローチャートは、単一のポート装置によって実行される工程700を示す。全工程700は、テストセッション中に複数のポート装置によって同時に並行して実行されてもよい、ということを理解すべきである。
【0074】
工程705において全工程700を開始する前に、テストセッションが設計されていてもよい。テストセッションの設計は、例えば、1つ以上のポート装置(ポート装置210等)に連結されたテストアドミニストレータのコンピューティング装置(テストアドミニストレータ205等)によって行われてもよい。テストセッションを設計することは、ネットワークまたはネットワーク装置のアーキテクチャを判定または定義することと、テストセッション中に各ポート装置によって生成されるべきストリームを定義することと、対応するストリーム形成データを生成することと、それぞれのストリーム形成データを少なくとも1つのポート装置に転送することとを含んでもよい。テストセッションを設計することは、複数のフロー制御グループ(FCG)を定義することと、各ストリームを1つのFCGに関連づけることとを更に含んでもよい。ストリームとFCGとの間の関連づけを定義するFCGマップデータを、各ポート装置に提供してもよい。例えば、FCGマップデータは、各ポート装置内のFCGマップメモリ(メモリ424等)に書き込まれてもよい。
【0075】
工程710において、トラフィックジェネレータは、パケットを形成および送信することにより、トラフィックを生成してもよい。工程715において、フロー制御(FC)パケットが受信されたか否かを判定してもよい。フロー制御パケットが受信されなかった場合には、工程720において、生成されるべきパケットが更にあるか否かを判定してもよい。更に生成されるべきパケットがない場合には、工程795において、テストセッションを終了してもよい。更に生成されるべきパケットがある場合には、工程710から全工程を反復してもよい。説明の容易さのために、工程710、工程715および工程720の動作は、逐次的なものとして示すが、これらの動作は並行して実行されてもよい。工程710から工程720までの動作は、テストセッション中は、基本的に連続的に反復されてもよい。
【0076】
工程715において、フロー制御パケットが受信されたと判定された場合には、工程725から工程750までの動作は、複数のフロー制御グループの各々について独立して並行して実行されてもよい。工程725において、特定のフロー制御グループに影響を及ぼす命令が受信フロー制御パケットに含まれるかどうかを判定してもよい。例えば、フロー制御パケットは、Nビットのマスクを含んでもよい。ここでNは、フロー制御グループの個数であり、各フロー制御グループがパケットに影響されるか否かを示す。フロー制御パケットは、影響を受ける各フロー制御グループの送信を休止または再開すべきかどうかを示す、更なるデータを含んでもよい。フロー制御パケットは、休止されるべき各フロー制御グループの休止期間を示す情報を含んでもよい。
【0077】
例えば、IEEE802.1(Qbb)に従う優先フロー制御パケットは、8ビットのマスクを含む。ここで、ビット値が0であれば、パケットが、それぞれのフロー制御グループのステータスに影響を及ぼさない、ということを示す。ビット値が1であれば、パケットが、それぞれのフロー制御グループを休止するように指示している、ということを示す。優先フロー制御パケットもまた、休止されるべき各フロー制御グループの休止期間を含み、休止期間がゼロであれば、前回休止されたフロー制御グループが再開されるべきことを示す。
【0078】
工程725において、特定のフロー制御グループを休止する命令、特定のフロー制御グループの送信を再開する命令、または特定のフロー制御グループへの影響がないこと(命令なし)が、受信されたフロー制御パケットに含まれるかどうかを判定してもよい。受信されたフロー制御パケットが、特定のフロー制御グループに影響を及ぼさない場合には、全工程700は、工程710に戻る。
【0079】
工程725において、特定のフロー制御グループを休止する命令が、受信されたフロー制御パケットに含まれる、と判定された場合には、工程730において、パケットジェネレータは、休止されたフロー制御グループに関連づけられるパケットの送信を保留してもよい。例えば、工程730において、フロー制御グループが休止されたことを示すフロー制御データが、出力マルチプレクサ(出力マルチプレクサ460等)に送信されてもよい。パケットがトラフィックジェネレータ内で破棄されず、かつパイプラインが再び満杯になることを待たずにパケット送信を再開してもよいように、工程750において、フロー制御データは、パイプラインの逆方向へと(パケット形成データのフローの逆方向へと)伝搬することにより、トラフィックジェネレータに、休止されたフロー制御グループについてのパケットの生成を規則的に停止させてもよい。
【0080】
受信されたフロー制御パケットが、指定された時間間隔にわたってフロー制御グループを休止する命令を含む場合には、指定された時間間隔における残り時間を追跡するように、タイマを始動してもよい。工程745において、指定された時間間隔が経過したと判定された場合には、工程740において、パケットジェネレータは、休止されたフロー制御グループに関連づけられるパケットの送信を自動的に再開してもよい。例えば、工程740において、フロー制御グループが休止されないことを示すフロー制御データが、出力マルチプレクサに供給されてもよい。次に、工程750において、フロー制御データは、パイプラインの逆方向へと伝搬してもよい。
【0081】
工程725において、受信されたフロー制御パケットがフロー制御グループを再開する命令を含む、と判定された場合には、工程740において、パケットジェネレータは、休止されたフロー制御グループに関連づけられるパケットの送信を再開してもよい。例えば、工程740において、フロー制御グループが休止されないことを示すフロー制御データが、出力マルチプレクサに供給されてもよい。次に、工程750において、フロー制御データは、パイプラインの逆方向へと伝搬してもよい。
【0082】
図8は、トラフィックジェネレータ内の単一の特定のフロー制御グループのフロー制御のための、例示的工程800のフローチャートを示すものである。全工程800は、必ずしも任意の特定の点において開始または終了するものではないが、フロー制御グループのフロー制御が変化するたびに、循環的に反復してもよい。全工程800は、トラフィックジェネレータ(トラフィックジェネレータ400等)によって実行されてもよい。トラフィックジェネレータは、スケジューラ、チャネライズドスケジュール待ち行列、PFDディストリビュータ、パケットビルダ、チャネライズドパケットバッファ、および出力マルチプレクサを備える。全工程800は、テストセッション中に複数のポート装置によって同時に並行して実行されてもよく、各ポート装置は、複数のフロー制御グループに対して全工程800を同時に独立して実行してもよい、ということを理解すべきである。
【0083】
説明の目的のために、全工程800は、フロー制御グループが休止された場合に、工程805において開始するものと仮定する。例えば、トラフィックジェネレータによって受信されたフロー制御パケットに応答して、フロー制御グループが休止されてもよい。フロー制御グループが休止されたあと、工程810において、出力マルチプレクサは、休止されたフロー制御グループについて、チャネライズドパケットバッファの対応するチャネルからのパケットの読み込みを停止してもよく、工程815において、チャネルが満杯になる。
【0084】
PFDディストリビュータが、工程820において、関連づけられるパケットバッファの容量が完全にコミットされている(すなわち別のパケットを保持するには使用可能容量が不十分である)と認識するまでは、PFDディストリビュータは、休止されたフロー制御グループのパケットについて、パケットビルダパケット形成データを送信し続けてもよい。パケットバッファが別のパケットを保持できないということを、PFDディストリビュータが一旦認識すると、PFDディストリビュータは、休止されたフロー制御グループに関連づけられるスケジュール待ち行列チャネルからの読み込みを停止してもよい。
【0085】
PFDディストリビュータがスケジュール待ち行列チャネルからの読み込みを停止したあと、工程825において、スケジュール待ち行列チャネルは満杯になる。これに応答して、工程830において、スケジューラは、休止されたフロー制御グループのスケジューリングを停止してもよい。すなわち、スケジューラは、休止されたフロー制御グループ内のパケットについて、パケット定義データの出力を停止してもよい。
【0086】
工程855において、前回休止されたフロー制御グループは、休止解除されてもよい。例えば、トラフィックジェネレータによって受信されたフロー制御パケットに応答して、フロー制御グループは、休止解除されてもよい。フロー制御グループが休止解除されたあと、工程860において、出力マルチプレクサは、休止されたフロー制御グループについて、チャネライズドパケットバッファの対応するチャネルからのパケットの読み込みを再開してもよく、工程865において、パケットバッファチャネルを満杯でなくさせる(すなわち、完全にコミットされた状態よりも使用可能になる)。
【0087】
工程870において、PFDディストリビュータは、関連づけられるパケットバッファチャネルの容量がもはや完全にはコミットされた状態でないことを認識してもよい。例えば、PFDディストリビュータは、1つ以上のパケットがパケットバッファチャネルから読み込まれたことを示すフィードバックを、出力マルチプレクサから受信してもよい。PFDディストリビュータが、パケットバッファチャネルが別のパケットを保持できるということを一旦認識すると、PFDディストリビュータは、休止されたフロー制御グループに関連づけられるスケジュール待ち行列チャネルからの読み込みを再開してもよい。
【0088】
PFDディストリビュータがスケジュール待ち行列チャネルからの読み込みを再開したあと、工程875において、スケジュール待ち行列チャネルは、満杯未満になる。これに応答して、工程880において、スケジューラは、休止されたフロー制御グループのスケジューリングを再開してもよい。すなわち、スケジューラは、休止されたフロー制御グループ内のパケットについて、パケット定義データの出力を再開してもよい。
【0089】
破線によって示されるように、休止されたフロー制御グループは、工程810から工程830までのフローの任意の点において休止解除されてもよく、その場合には、工程810から工程830までの動作の一部は生じなくてもよい。同様に、鎖線によって示されるように、休止解除されたフロー制御グループは、工程860から工程880までのフローの任意の点において休止されてもよく、その場合には、工程860から工程880までの動作の一部は生じなくてもよい。
【0090】
まとめ
本明細書の全体にわたって示される実施形態および例は、開示または請求される装置および処理手順を限定するものではなく、典型的な例として考慮されるべきである。本明細書において提示される例の多くは、方法作用またはシステム要素の特定の組み合わせを含むが、それらの作用および要素は、別の態様で組み合わされても同じ目的を達成しえる、ということを理解すべきである。フローチャートに関しては、より多くの工程またはより少ない工程を含んでもよく、示される工程は、本願明細書に記載される方法を達成するために組み合わせられてもよく、更に改良されてもよい。一実施形態のみに関連して説明される作用、構成要素および特徴は、他の実施形態における類似の役割から除外されることを意図しない。
【0091】
本明細書において、「複数」は、2つ以上を意味する。本明細書において、項目の「セット」は、1つ以上のこのような項目を含んでもよい。明細書または請求項のいずれに記載される場合も、本明細書において用いられる「備える」、「含む」、「持つ」、「有する」、「含有する」、「伴う」等の用語は、制限されない、すなわち含むが限定されないものとして意図されることを理解すべきである。「〜からなる」および「基本的に〜からなる」という移行句は、請求項に関しては、それぞれ限定的移行句または半限定的移行句である。請求項において構成要素を修飾する「第1」、「第2」、「第3」等の序数詞の使用は、優先、順位、または他の請求項に対するある請求項の順番、または方法の作用が実行される時間的な順序を単独で意味するものではなく、ある名称を有する1つの請求項構成要素を、(序数詞なしの)同じ名称を有する別の構成要素から区別し、それらの請求項構成要素を区別するための、単なるラベルとして用いられるものである。本明細書において、「および/または」は、列挙される項目が選択肢であることを意味するが、それらの選択肢もまた、列挙される項目の任意の組合せを含む。

【特許請求の範囲】
【請求項1】
ネットワークをテストするためのテストトラフィックを生成する装置であって、
一連のパケットのためのパケット定義データを提供するスケジューラであって、各パケットは、複数のフロー制御グループからのそれぞれのフロー制御グループに一意に関連づけられる、スケジューラと、
前記パケット定義データを格納するチャネライズドスケジュール待ち行列であって、前記チャネライズドスケジュール待ち行列は、複数のパラレル待ち行列を含み、各待ち行列は、前記複数のフロー制御グループの対応する1つに関連づけられるパケット定義データの格納に専用される、チャネライズドスケジュール待ち行列と、
前記チャネライズドスケジュール待ち行列から読み込まれたパケット定義データに従って、独立してパケットを構築する、複数の非チャネライズドパケットビルダレーンと、
前記複数のパケットビルダレーンによって構築されるパケットを格納するチャネライズドパケットバッファであって、前記チャネライズドパケットバッファは、複数のパラレルパケットバッファを含み、各パケットバッファは、前記複数のフロー制御グループの対応する1つに関連づけられるパケットの格納に専用される、チャネライズドパケットバッファと、
前記チャネライズドパケットバッファからのパケットをインタリーブすることにより前記テストトラフィックを提供する出力マルチプレクサと、
を備えることを特徴とする装置。
【請求項2】
受信されたフロー制御パケットに応答して前記フロー制御グループの1つ以上を選択的に休止および休止解除するように構成される、フロー制御論理を更に備え、
前記出力マルチプレクサが、休止されたフロー制御グループに関連づけられるパケットバッファからのパケットの読み込みを中止する、ことを特徴とする請求項1に記載の装置。
【請求項3】
前記チャネライズドスケジュール待ち行列からパケット定義データを読み込み、かつ前記パケット定義データの各項目を選択されたパケットビルダレーンにルーティングする、ように構成されるディストリビュータを更に備える、ことを特徴とする請求項1に記載の装置。
【請求項4】
前記ディストリビュータが、前記チャネライズドパケットバッファ内の各パケットバッファの容量を予測するモデルを備え、
前記対応するパケットバッファの予測される前記容量が、前記パケット定義データによって定義される前記パケットを保持するために充分である場合のみに、前記ディストリビュータが、前記パケット定義データの各項目を前記パケットビルダにルーティングする、ことを特徴とする請求項3に記載の装置。
【請求項5】
前記チャネライズドパケットバッファが、前記ディストリビュータによって提供されるパケットシーケンスデータに従って各出力バッファにパケットを格納するように構成される、ことを特徴とする請求項3に記載の装置。
【請求項6】
前記チャネライズドスケジュール待ち行列が、1つ以上の待ち行列が満杯である場合にスケジューラに通知するように構成され、
前記スケジューラが、満杯の待ち行列に関連づけられるすべてのストリームのスケジューリングを中止するように構成される、ことを特徴とする請求項1に記載の装置。
【請求項7】
ネットワークをテストするためのテストトラフィックを生成する方法であって、一連のパケットについてパケット定義データを生成するステップであって、各パケットは、複数のフロー制御グループからのそれぞれのフロー制御グループに一意に関連づけられる、ステップと、
前記パケット定義データをチャネライズドスケジュール待ち行列に格納するステップであって、前記チャネライズドスケジュール待ち行列は、複数のパラレル待ち行列を含み、各待ち行列は、前記複数のフロー制御グループの対応する1つに関連づけられるパケット定義データの格納に専用される、ステップと、
前記チャネライズドスケジュール待ち行列から読み込まれたパケット定義データに従ってパケットを構築するステップと、
構築された前記パケットをチャネライズドパケットバッファに格納するするステップであって、前記チャネライズドパケットバッファは、複数のパラレルパケットバッファを含み、各パケットバッファは、前記複数のフロー制御グループの対応する1つに関連づけられるパケットの格納に専用される、ステップと、
前記チャネライズドパケットバッファから読み込まれたパケットをインタリーブすることにより前記テストトラフィックを提供するステップと、を含むことを特徴とする方法。
【請求項8】
フロー制御パケットを受信するステップと、
受信された前記フロー制御パケットに応答して1つ以上のフロー制御グループを選択的に休止および休止解除するステップと、
休止されたフロー制御グループに関連づけられるパケットバッファからのパケットの読み込みを中止するステップと、
を更に含むことを特徴とする請求項7に記載の方法。
【請求項9】
ディストリビュータがチャネライズドスケジュールFIFOからパケット定義データを読み込むステップと、前記ディストリビュータが、前記パケット定義データの各項目を、選択されたパケットビルダレーンにルーティングするステップと、を更に含むことを特徴とする請求項7に記載の方法。
【請求項10】
前記ディストリビュータがチャネライズドパケットFIFOバッファ内の各パケットバッファの容量を予測するモデルを維持するステップと、
前記対応するパケットバッファの予測される前記容量が、前記パケット定義データによって定義される前記パケットを保持するのに充分である場合のみに、前記ディストリビュータが前記パケット定義データの各項目を前記パケットビルダにルーティングするステップと、を更に含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記ディストリビュータによって提供されるパケットシーケンスデータに従って、構築された前記パケットを各出力バッファに格納するステップを更に含む、ことを特徴とする請求項9に記載の方法。
【請求項12】
チャネライズドスケジュールFIFOが、1つ以上の待ち行列が満杯である場合にスケジューラに通知するステップと、
前記スケジューラが満杯の待ち行列に関連づけられるすべてのストリームのスケジューリングを中止するステップと、
を更に含むことを特徴とする請求項7に記載の方法。
【請求項13】
プログラミングコードを格納するコンピュータ読み出し可能格納媒体であって、前記プログラミングコードは、プログラマブルデバイスをプログラムするように用いられるときに、前記プログラマブルデバイスを、ネットワークをテストするためのテストトラフィックを生成する装置を含むように構成し、前記装置は、
一連のパケットについてパケット定義データを提供するスケジューラであって、各パケットは、複数のフロー制御グループからのそれぞれのフロー制御グループに一意に関連づけられる、スケジューラと、
前記パケット定義データを格納するチャネライズドスケジュール待ち行列であって、前記チャネライズドスケジュール待ち行列は、複数のパラレル待ち行列を含み、各待ち行列は、前記複数のフロー制御グループの対応する1つに関連づけられるパケット定義データの格納に専用される、チャネライズドスケジュール待ち行列と、
前記チャネライズドスケジュール待ち行列から読み込まれたパケット定義データに従って、独立してパケットを構築する、複数の非チャネライズドパケットビルダレーンと、
前記複数のパケットビルダレーンによって構築されるパケットを格納するチャネライズドパケットバッファであって、前記チャネライズドパケットバッファは、複数のパラレルパケットバッファを含み、各パケットバッファは、前記複数のフロー制御グループの対応する1つに関連づけられるパケットの格納に専用される、チャネライズドパケットバッファと、
前記チャネライズドパケットバッファからのパケットをインタリーブすることにより前記テストトラフィックを提供する出力マルチプレクサと、
を備えることを特徴とするコンピュータ読み出し可能格納媒体。
【請求項14】
受信されたフロー制御パケットに応答して前記フロー制御グループの1つ以上を選択的に休止および休止解除するように構成される、フロー制御論理を更に備え、
前記出力マルチプレクサが、休止されたフロー制御グループに関連づけられるパケットバッファからのパケットの読み込みを中止する、ことを特徴とする請求項13に記載のコンピュータ読み出し可能格納媒体。
【請求項15】
前記チャネライズドスケジュール待ち行列からパケット定義データを読み込み、かつ前記パケット定義データの各項目を選択されたパケットビルダレーンにルーティングする、ように構成されるディストリビュータを更に備える、ことを特徴とする請求項13に記載のコンピュータ読み出し可能格納媒体。
【請求項16】
前記ディストリビュータが、前記チャネライズドパケットバッファ内の各パケットバッファの容量を予測するモデルを備え、
前記対応するパケットバッファの予測される前記容量が、前記パケット定義データによって定義される前記パケットを保持するのに充分である場合のみに、前記ディストリビュータが、前記パケット定義データの各項目を前記パケットビルダにルーティングする、ことを特徴とする請求項15に記載のコンピュータ読み出し可能格納媒体。
【請求項17】
前記チャネライズドパケットバッファが、前記ディストリビュータによって提供されるパケットシーケンスデータに従って各出力バッファにパケットを格納するように構成される、ことを特徴とする請求項15に記載のコンピュータ読み出し可能格納媒体。
【請求項18】
前記チャネライズドスケジュール待ち行列が、1つ以上の待ち行列が満杯である場合にスケジューラに通知するように構成され、
前記スケジューラが、満杯の待ち行列に関連づけられるすべてのストリームのスケジューリングを中止するように構成される、ことを特徴とする請求項13に記載のコンピュータ読み出し可能格納媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−70376(P2013−70376A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2012−208294(P2012−208294)
【出願日】平成24年9月21日(2012.9.21)
【出願人】(504090400)
【Fターム(参考)】