【課題を解決するための手段】
【0005】
第1の態様において、本発明はデータパケットを分析するための装置に関連し、当該装置は、データパケットのデータにアクセスし、データパケットに関連する第1及び第2の情報を出力する手段と、第1の情報に基づいて、複数の所定の関数の1つを選択する手段と、選択された関数を第2の情報に適用することにより、第3の情報を導出する手段と、データパケットの少なくとも一部分と共に、第3の情報を出力する手段とを有し、アクセスする手段は、データパケットのタイプ、データパケットが従う規格(standard)、及びどのデータアイテムがデータパケット内に存在するかの少なくとも1つに関連する第1の情報を出力するように適合される。
【0006】
本コンテキストにおいて、分析は、データパケット内に含まれるデータから、特定の値、状況、タイプ、身元(identity)などの決定とすることができる。分析は、データパケットの内容の変更をもたらし、又は変更とはならず、任意のタイプのデータパケット内の情報、又はデータパケットの情報を使用することができる。
【0007】
更に、データパケットは、ネットワーク、データケーブル、データバス、トランク(trunk)などにおいて送信される、又はこれらにより伝送される任意のタイプのデータ単位とすることができる。通常、データ単位は、イーサネット規格などの1つ以上のデータ規格に従い、イーサネット規格は、その下に、例えば、幾つかの異なる規格、又はUDPやTCPデータパケットなどのデータパケットタイプが存在する傘(umbrella)となる。データパケットは、通常、アドレスデータ、ペイロードなど、幾つかの異なる情報アイテム又はタイプを有し、これらは、各々、データパケット内の明確に定義された、又は既知の位置に配置される。そのような位置及びタイプは、一般的に、データパケットタイプ毎に異なるが、通常は、データパケットタイプ、及びその個々の内容の位置は、実際のデータパケットから求めることができ、この後、アドレスデータ及び/又はペイロードなどの個々のデータアイテムは、導出され、変更され、及び/又は分析に使用される。
【0008】
本コンテキストにおいて、実際に、データ又はデータパケットを受信し、及び/又は格納することにより、データにアクセスすることができる。あるいは、データパケットは、その他の位置、又は本装置が通信する装置内で、受信又は格納されることができ、これにより、データパケットのデータは、その他の装置内に格納されていながら、データを読み出すことにより、遠隔からアクセスされる。
【0009】
更に、第2の情報は、データパケットから導出された、及び/又は、データパケットに関連した任意のタイプのデータである。第1の情報、及びこの第2の情報は、データパケットから直接的にコピー若しくは読まれたデータ/情報であり、又は、例えば、データパケットのタイプ、若しくはデータパケットが従う規格に関連したデータである。タイプ又は規格は、パケットの特定のデータアイテムがタイプ/規格を識別する時など、データパケットから直接的に導き出すことができ、又は、データパケットのデータアイテムのタイプ及び位置の認識、そしてその後、そのデータがその位置において見つけられるデータパケットのタイプ又は規格の決定に基づいてなど、データパケットから導出されたデータから導き出すことができる。
【0010】
第1及び第2の情報は、同一のデータ(これにより、1度のみで導出され、又はアクセスされる)、又は異なる情報とすることができる。第1の情報がデータパケットのタイプ、又はデータパケットが従う規格に関連するとき、データパケットのタイプ、及び/又はどのデータアイテムがデータパケット内に存在するかに基づいて、関数が決定され又は選択され、識別された関数に使用される。
【0011】
第2の情報は、データパケットの特定タイプのデータである。好適には、第2のデータは、単一ストリームのデータパケットが同一の第2の情報を有するように選択され、一方、その他のストリームのデータパケットは、その他の第2の情報を有する。
【0012】
データパケットのストリームは、通常、1つの送信器から1以上の受信器に送信されるデータパケットの列である。これらデータパケットは、より小さい部分(portion)で送信された、例えば、1つのファイルなどに関連し、パケットのペイロードとなる。送信器及び受信器、又は任意の中間のネットワーク要素は、パケット内に示されるアドレスを有する。更に、個々のデータパケット規格に応じて、情報を識別するその他のストリームが、データパケット内に存在することができる。
【0013】
このため、ストリームは、例えば、アドレス、及び/又は情報を識別するストリームに基づいて識別され、このため、連続して使用される場合、同一の第3の情報が供給され、任意の後続のプロセスは、単に第3の情報からストリームを識別できる。
【0014】
原理的に、任意のタイプの関数が、任意のタイプのデータパケットに使用されるとしても、本発明は、異なる関数が異なる状況で使用され又は選択されるように、複数の関数の間での選択に関連する。このため、異なる第1の情報が、異なる関数の選択をもたらす。1以上の関数が、全データパケット又は全タイプのデータパケット内に必ずしも存在しない第2の情報において実行されるとき、これは理にかなう。1つの例は、MPLS又はVLANタグを伴うデータパケット上で実行された関数が、MPLS又はVLANタグ付けされていないデータパケットには適しないことである。
【0015】
この観点において、1つの関数は、例えば、第2の情報の要素間の任意の数学的関係とすることができる。異なる関数は、異なるタイプの情報で実行されるように適合され、例えば、異なるタイプのデータパケットが、第2の情報内の異なるタイプの情報を生じさせるような状況である。あるいは、異なる関数が、同一の第2の情報に基づいて、異なる結果を提供する。2つの組合せは、しばしば、望まれる。
【0016】
全体の目的は、同一フローのデータパケットに対して、同一の第3の情報を提供することであり、しかし、異なるフローのデータパケットに対しては、異なる第3の関数を提供する。
【0017】
1つの状況において、異なる関数は、第2の情報において実行される異なるタイプのハッシュ関数である。
【0018】
情報に関数を適用することは、入力として第3の情報を用いて、関数を実行することを意味する。この入力は、単一の値など、1つの入力であり、又は、希望により、複数の入力ともできる。
【0019】
第3の情報、及びデータパケットの少なくとも一部分を出力することは、第3の情報、及びパケットの少なくとも一部分の両方を含む合成されたデータアイテムを出力することであり、又は、1つのデータアイテムとして第3の情報、及び1つのデータアイテムとしてデータパケットの少なくとも一部分など、複数のデータアイテム内のそれらを出力することである。例えば、データパケットの受信の帯域幅、及びデータパケットの少なくとも一部分と第3の情報の出力に応じて、第3の情報を出力するために十分な帯域幅を持つよう、データパケットの一部のみを出力することが望まれる。
【0020】
必然的に、データパケットの任意の受信、並びに第3の情報、及びデータパケットの少なくとも一部分の出力は、同一又は異なる帯域幅、プロトコル、規格、通信タイプ(有線、無線、イーサネット、ブルートゥース、IR、ラジオなど)を用いて実行される。例えば、イーサネット/ISDN/ADSLケーブルなどでの通信は、内部コンピュータ/PC/サーババス上での通信と非常に異なることに注意する。そして、第3の情報、及び/又はデータパケットの少なくとも一部分は、装置の入力において要求される、又は望まれる同一のデータタイプに従うことは、必ずしも要求されない。
【0021】
データパケットの1つ以上の部分が、第3の情報により直接的に示される場合、それらの部分は第3の情報出力から導出することができるので、例えば、それらは出力される必要はない。
【0022】
好適な実施例において、出力手段は、選択された関数を識別する更なる出力情報に適合される。この状況において、情報は第3の情報を受信する要素、データパケットの少なくとも一部分、及び識別する情報により、識別する情報からも導出することができる。例えば、関数がデータパケットの決定されたタイプに基づいて選択される時、続いて、このタイプは識別する情報から単独で決定され、これにより、任意の更なる処理が、データパケット(または、その一部分)を全く分析する必要なしに、それに基づいて実行される。
【0023】
その他の実施例において、装置は、複数の所定の第1の情報のそれぞれを複数の所定の関数の1つに関連付けるユーザ定義された情報を保持するための手段を更に有する。このため、以下に更に詳細に記載するように、実際の状況に応じて、ユーザは、彼/彼女自身で、第1の情報に関連して関数の使用を定義できる。装置は、キーボード、コンピュータ・マウス、タッチパッド/スクリーン、口頭の指示を受信するためのマイクロホンなどのような、そのような情報を入力するための、ユーザに対する手段を更に有する。
【0024】
1つの状況において、データパケットは、イーサネットパケットである。「イーサネットパッケージ」は、幾つかの異なるタイプのカプセル化を含む、多様なタイプのデータパケット規格における傘であることに注意すべきであるが、一般的に、アクセス手段は、第1の情報の少なくとも一部分として、パケットの任意のカプセル化、及び/又はデータパケットが複数の規定されたタイプのイーサネットパケットのどれであるかに関連する情報を出力するように適合される。そして、第1の情報は、どのタイプの情報がパケットに供給されるかなど、パケットのタイプに主に関連し、通常、その結果として、パケット内に、異なるタイプの情報が提供される。そして、第1の情報は、データパケットから直接的にコピーされた任意の情報を実際に有する必要はない。
【0025】
好適な実施例において、装置は、複数の出力を更に有し、出力手段は、データパケットに対し、データパケットに関連する第3の情報に基づいて出力を識別し、データパケットに関連する第3の情報、及びデータパケットの少なくとも一部分を識別された出力上で出力するよう適合される。その他のものは、全データパケットに対し、第3の情報及びデータパケットの少なくとも一部分を受信し、第3の情報及びデータパケットの少なくとも一部分の異なるセットを要求通りに個々の出力に転送することができる要素を提供するものである。
【0026】
異なる出力を提供する理由は、本発明の第2の態様に説明されており、これは本発明の第1の態様による装置を有するデータ処理システムに関連し、システムは複数の処理要素を更に有し、出力手段は、データパケット、及び第1、第2、第3の情報の少なくとも1つに基づいて処理要素を識別し、データパケットの少なくとも一部分及び第3の情報を識別された処理要素に出力するよう適合される。
【0027】
一般に、多重(multiple)処理要素は、1つの処理要素が目的とするタスクを実行することができない時に使用することができる。
【0028】
従って、処理要素、又は出力は、各データパケットに対して識別され、関連する第3の情報、及びデータパケットの少なくとも一部分は、識別された処理要素に送信される。
【0029】
処理要素で実行される処理は、データパケットの少なくとも一部分の更なる分析であり、この分析は、第3の情報に基づくこともできる。あるいは、処理は、それらの幾つかの出力の1つでの転送、その格納、及び/又は多数のその他のタスクとすることができる。
【0030】
処理要素は、同一の処理を実行するように全て適合させることができ、それにより、処理要素の数は、単に実行能力の増加となる。そして、データパケットに対する処理要素の識別は、荷重バランス分析に単に基づくことができる。
【0031】
あるいは、異なる処理要素は、異なる能力を持つことができる。そのような異なる能力は、ハードウェア、及び/又はソフトウェア(ソフトウェア制御の場合)内の異なる処理要素による。従って、1つの処理要素は、(例えば、所定のアドレスと共に)特定のタイプ又は特定のフローのデータパケットを更に処理するために使用することができ、その他の処理要素は、その他の分析を実行するため、データを格納するため、又は要素を転送するために使用される。
【0032】
データパケットの部分、及び/又は第3の情報からなど、データパケットの個々のストリームが識別可能な状況において、ストリームのパケットは、同一の出力又は処理手段に全て転送され、それ故に、互いに追い付いて、そして系列順序から外れることはないことが保証される。
【0033】
1つの状況において、出力手段は、第3の情報に基づいて、処理要素を識別するよう適合される。この状況において、処理要素は、データパケットから追加の情報を導出する必要なしに識別される。
【0034】
特定の興味深い実施例において、装置は、複数の出力を有する上記の装置であり、各処理要素は、所定の出力から、第3の情報及びデータパケットの少なくとも一部分を受信するように適合される。この方法において、出力の選択は、間接的に処理要素の選択である。
【0035】
本発明の第3の態様は、データパケットを分析する方式に関連し、本方法は、データパケットから、データパケットに関連する第1及び第2の情報を導出し、出力するステップと、第1の情報に基づいて、複数の所定の関数の1つを選択するステップと、選択された関数を第2の情報に適用することにより、第3の情報を導出するステップと、データパケットの少なくとも一部分と共に、第3の情報を出力するステップと、を有し、第1の情報は、データパケットのタイプ、データパケットが従う規格、及びどのデータアイテムがデータパケット内に存在するかの少なくとも1つに関連する。
【0036】
上記のように、分析は、データパケットの任意のタイプの分析とすることができ、データパケットの定義は、広範に、データネットワーク、トランク(trunk)、リンク、ケーブル、バス上で送信可能な任意のタイプのデータパケット、要素、アイテム、セル(cell)、フレームである。
【0037】
更に、第1及び第2の情報を導出し、出力するステップは、データパケットの全ての部分への完全なアクセスを必要としない。
【0038】
関数の選択は、第1の情報に基づき、第1の情報は、データパケットからのコピーなど、データパケットから直接的に導出される任意の情報とすることができ、又はデータパケットのタイプ、データパケットが従う規格、及びどのタイプのデータ若しくは情報アイテムが存在し、データパケットから入手可能であるかなど、データパケットを表現する情報とすることができる。
【0039】
第1と第2の情報は、同一とすることができるが、望ましくは同一ではない。第1の情報は、例えば、データパケットのタイプ(望ましくは、どのタイプのデータアイテムが分析に利用できるか)に関連し、第2の情報は、望ましくは、データパケットのデータに関連し、望ましくは、データパケットが属するデータパケットのストリームを識別するデータである。
【0040】
第3の情報及びデータパケットの少なくとも一部分の出力ステップは、1つのデータ要素、アイテム、パケット、フレームの出力ステップであり、又は第3の情報及びデータパケットの少なくとも一部分の個別の(時間で、又は別個の要素として)出力ステップとすることができる。
【0041】
1つの状況において、出力ステップは、選択された関数を識別する出力情報を更に有する。この方法において、その後の処理もまた、あるいはその後の処理のみ、この情報に基づくことができる。
【0042】
この、又はその他の状況において、選択ステップは、複数の所定の第1の情報のそれぞれを複数の所定の関数の1つと関連付けるユーザ定義された情報に基づいて、関数を選択するステップを有する。このため、本方式は、特定の状況及び特定のタイプのデータパケット又は異なる組合せ(composition)のデータパケットタイプに適合することができる。本方式は、また、ユーザがユーザ定義された情報を入力するステップを有することもできる。
【0043】
1つの状況において、データパケットは、イーサネットパケットであり、導出、出力するステップは、第1の情報の少なくとも一部分として、パケットの任意のカプセル化、及び/又は、複数の所定のタイプのイーサネットパケットのどれがデータパケットであるかに関連する情報を出力するステップを有する。
【0044】
この、又はその他の状況において、出力するステップは、データパケットに対して、データパケットに関連する第3の情報に基づいて複数の出力の1つを識別し、データパケットに関連する第3の情報、及びデータパケットの少なくとも一部分を識別された出力に出力するステップを有する。
【0045】
上記のように、これは、個々の処理が異なる目的又は同一の目的のために使用できるという点で多様な可能性をもたらすが、負荷の平衡と系列の維持が望まれる。
【0046】
本発明の第4の態様は、本発明の第2の態様であるデータ処理システムを操作する方式に関連し、出力するステップは、データパケット、及び第1、第2、第3の情報の少なくとも1つに基づいて、処理要素を識別し、データパケットの少なくとも一部分及び第3の情報を識別された処理要素に出力するステップを有する。
【0047】
この状況において、出力するステップは、第3の情報に基づいて処理要素を識別するステップを望ましくは有し、これは識別を行う簡単な方法である。更に、第2の情報、及びそれ故に第3の情報が示され、又はデータストリーム間で直接的に区別するとき、これは、負荷の平衡、及び/又は系列の維持を供給するであろう。あるいは、処理要素は、識別され、使用された実際の関数により識別することができる。
【0048】
加えて、装置が複数の出力を更に有する時、出力するステップは、データパケットに対し、データパケットに関連する第3の情報に基づいて出力を識別し、データパケットに関連する第3の情報、及びデータパケットの少なくとも一部分を識別された出力上で出力するステップを望ましくは有する。これは、上記した優位点を有する。
【0049】
一般に、動的なハッシュ(hash)特性又は選択は、より均一に分布されたハッシュ値の計算を容易にする。これは、計算されたハッシュ値が、フレームをマルチCPUに負荷平衡するために使用されるシステムにおいて、非常に有効である。異なるハッシュ関数は、0から上向きに番号付けられ、以下の記載において、ハッシュモードとして参照される。
【0050】
選択されたハッシュモードと共に計算されたハッシュ値は、次の様な異なる事に使用することができる。
− ハッシュ値に基づいて、TAGと共にフレームを特定のCPUに送る。即ち、NIC上で受信した全てのフレームに対してハッシュ値を計算し、ハッシュ値の2つの最下位ビットに基づいて、フレーム+TAGを4CPUの1つに送る。
− ハッシュ値に基づいて、異なるフレーム及び/又はフレームからの情報のグループ分けを早める。
− 特定のハッシュ値で、単一フローに対する全フレームを一意的に識別し、フローは、特定の発信元アドレスから特定の行き先アドレスまでの全フレームを参照する。特定のフローに対する全てのフレームが同一のハッシュ値を有するため、ハッシュ値の最下位ビットに基づいて、マルチCPUへの負荷平衡を使用することは、フローから全てのフレームを受信する1つのCPUとなる。これは、NICからCPUまで転送されたとき、同一のフローにおけるフレームが、CPUメモリ内に連続的に格納されるため、改善されたCPUメモリキャッシュ性能に帰着する。
【0051】
以下において、本発明の好適な実施例は、図画を参照して記載される。