(57)【要約】【課題】データパケットの前処理に関する。【解決手段】データパケットを分析するための装置と方法であり、第１及び第２の情報がデータパケットに関連して導出される。第１の情報は、データパケットのタイプ、データパケットが従う規格、及び／又はデータパケット内にどのデータアイテムが存在するかに関連する。第１の情報は、第３の情報を生成するため、第２の情報が入力される関数を識別するために使用され、第３の情報は、データパケットの少なくとも一部分と共に出力される。【選択図】図１
2013504913.tif 000002
【特許請求の範囲】
【請求項１】
データパケットを分析するための装置であって、
前記データパケットのデータにアクセスし、前記データパケットに関連する第１及び第２の情報を出力する手段と、
前記第１の情報に基づいて、複数の所定の関数の１つを選択する手段と、
前記選択された関数を前記第２の情報に適用することにより、第３の情報を導出する手段と、
前記データパケットの少なくとも一部分と共に、前記第３の情報を出力する手段と、
を有し、
前記アクセスする手段は、前記データパケットのタイプ、前記データパケットが従う規格、及びどのデータアイテムが前記データパケット内に存在するかの少なくとも１つに関連する前記第１の情報を出力するように適合される、
ことを特徴とする装置。
【請求項２】
前記出力する手段は、前記選択された関数を識別する情報を更に出力するよう適合される、請求項１に記載の装置。
【請求項３】
複数の所定の第１の情報のそれぞれを前記複数の所定の関数の１つに関連付けるユーザ定義の情報を保持する手段を更に有する、請求項１又は２に記載の装置。
【請求項４】
前記データパケットはイーサネットパケットであり、前記アクセスする手段は、前記第１の情報の少なくとも一部分として、前記データパケットの任意のカプセル化、及び前記データパケットが複数の所定のタイプのイーサネットパケットのどれであるかの少なくとも１つに関連する情報を出力するよう適合される、請求項１〜３のいずれか１項に記載の装置。
【請求項５】
複数の出力を更に有し、前記出力する手段は、データパケットに対し、該データパケットに関連する前記第３の情報に基づいて出力を識別し、前記データパケットに関連する前記第３の情報、及び前記データパケットの少なくとも一部分を前記識別された出力上で出力するよう適合される、請求項１〜４のいずれか１項に記載の装置。
【請求項６】
請求項１〜５のいずれか１項に記載の装置を有するデータ処理システムであって、
前記システムは、複数の処理要素を更に有し、前記出力する手段は、データパケット、及び第１、第２、第３の情報の少なくとも１つに基づいて、処理要素を識別し、前記データパケットの少なくとも一部分、及び前記第３の情報を前記識別された処理要素に出力するように適合される、データ処理システム。
【請求項７】
前記出力する手段は、前記第３の情報に基づいて、前記処理要素を識別するように適合される、請求項６に記載のデータ処理システム。
【請求項８】
前記装置は、請求項５に記載の装置であり、各処理要素は、所定の出力から、前記第３の情報、及びデータパケットの少なくとも一部分を受信するように適合される、請求項６又は７に記載のデータ処理システム。
【請求項９】
データパケットを分析するための方法であって、
前記データパケットから、前記データパケットに関連する第１及び第２の情報を導出し、出力するステップと、
前記第１の情報に基づいて、複数の所定の関数の１つを選択するステップと、
前記選択された関数を前記第２の情報に適用することにより、第３の情報を導出するステップと、
前記データパケットの少なくとも一部分と共に、前記第３の情報を出力するステップと、
を有し、
前記第１の情報は、前記データパケットのタイプ、前記データパケットが従う規格、及びどのデータアイテムが前記データパケット内に存在するかの少なくとも１つに関連する、
ことを特徴とする方法。
【請求項１０】
前記出力するステップは、前記選択された関数を識別する情報を出力するステップを更に有する、請求項９に記載の方法。
【請求項１１】
前記選択するステップは、複数の所定の第１の情報のそれぞれを前記複数の所定の関数の１つに関連付けるユーザ定義の情報に基づいて、前記関数を選択するステップを有する、請求項９又は１０に記載の方法。
【請求項１２】
前記データパケットはイーサネットパケットであり、前記導出するステップ及び出力するステップは、前記第１の情報の少なくとも一部分として、前記データパケットの任意のカプセル化、及び前記データパケットが複数の所定のタイプのイーサネットパケットのどれであるかの少なくとも１つに関連する情報を出力するステップを有する、請求項９〜１１のいずれか１項に記載の方法。
【請求項１３】
前記出力するステップは、データパケットに対し、該データパケットに関連する前記第３の情報に基づいて複数の出力の１つを識別し、前記データパケットに関連する前記第３の情報、及び前記データパケットの少なくとも一部分を前記識別された出力に出力するステップを有する、請求項９〜１２のいずれか１項に記載の方法。
【請求項１４】
請求項６に記載の前記データ処理システムを動作させる方法であって、
前記出力するステップは、データパケット、及び第１、第２、第３の情報の少なくとも１つに基づいて、処理要素を識別し、前記データパケットの少なくとも一部分、及び前記第３の情報を前記識別された処理要素に出力するステップを有する、方法。
【請求項１５】
前記出力するステップは、前記第３の情報に基づいて、前記処理要素を識別するステップを有する、請求項１４に記載の方法。
【請求項１６】
前記装置は、複数の出力を更に有し、前記出力するステップは、データパケットに対し、該データパケットに関連する前記第３の情報に基づいて出力を識別し、前記データパケットに関連する前記第３の情報、及び前記データパケットの少なくとも一部分を前記識別された出力上で出力するステップを有する、請求項１４又は１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データパケットの処理に関連し、詳細には、データ接続上で受信され、複数のプロセッサにより更に処理されることになるデータパケットの前処理（pre-processing）に関連する。
【背景技術】
【０００２】
これまで、そのような前処理は、むしろ初歩的なものであり、処理の大部分は後続のプロセッサに残されていた。通常、この前処理は、１以上のカプセル化（MPLS、VLANなど）、及び／又はデータタイプ（UDP、TCPなど）の決定といったデータパケットの全般的なタイプの決定であり、この情報を伴ったデータパケットの転送である。あるいは、データパケットの特定のタイプは、そこから（典型的には、データパケットのアドレスフィールドから）特定の情報を導き出すことにより前処理され、そこからハッシュ（hash）値を導出することができる。ハッシュ値は、データパケットと共に転送される。後者の場合、例えば、UDP/TCPトラフィック又はVoIPの個々のストリームは、ハッシュ値から識別することができ、必要により、同一のプロセッサにルートされる。しかし、１つのハッシュ関数のみが使用され、これにより、幾つかのタイプのデータパケットのみが前処理される。そして、その他のタイプのデータパケットは、全く前処理されていない。
【０００３】
このタイプのシステムは、WO200999573、US7529242、US2007168377、US7212526又はUS6597661に見られる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このため、データチェーンの後側で、ソフトウェア内での処理に対して、より前側で、ハードウェア内での処理を提供することが望まれる。
【課題を解決するための手段】
【０００５】
第１の態様において、本発明はデータパケットを分析するための装置に関連し、当該装置は、データパケットのデータにアクセスし、データパケットに関連する第１及び第２の情報を出力する手段と、第１の情報に基づいて、複数の所定の関数の１つを選択する手段と、選択された関数を第２の情報に適用することにより、第３の情報を導出する手段と、データパケットの少なくとも一部分と共に、第３の情報を出力する手段とを有し、アクセスする手段は、データパケットのタイプ、データパケットが従う規格（standard）、及びどのデータアイテムがデータパケット内に存在するかの少なくとも１つに関連する第１の情報を出力するように適合される。
【０００６】
本コンテキストにおいて、分析は、データパケット内に含まれるデータから、特定の値、状況、タイプ、身元（identity）などの決定とすることができる。分析は、データパケットの内容の変更をもたらし、又は変更とはならず、任意のタイプのデータパケット内の情報、又はデータパケットの情報を使用することができる。
【０００７】
更に、データパケットは、ネットワーク、データケーブル、データバス、トランク（trunk）などにおいて送信される、又はこれらにより伝送される任意のタイプのデータ単位とすることができる。通常、データ単位は、イーサネット規格などの１つ以上のデータ規格に従い、イーサネット規格は、その下に、例えば、幾つかの異なる規格、又はUDPやTCPデータパケットなどのデータパケットタイプが存在する傘（umbrella）となる。データパケットは、通常、アドレスデータ、ペイロードなど、幾つかの異なる情報アイテム又はタイプを有し、これらは、各々、データパケット内の明確に定義された、又は既知の位置に配置される。そのような位置及びタイプは、一般的に、データパケットタイプ毎に異なるが、通常は、データパケットタイプ、及びその個々の内容の位置は、実際のデータパケットから求めることができ、この後、アドレスデータ及び／又はペイロードなどの個々のデータアイテムは、導出され、変更され、及び／又は分析に使用される。
【０００８】
本コンテキストにおいて、実際に、データ又はデータパケットを受信し、及び／又は格納することにより、データにアクセスすることができる。あるいは、データパケットは、その他の位置、又は本装置が通信する装置内で、受信又は格納されることができ、これにより、データパケットのデータは、その他の装置内に格納されていながら、データを読み出すことにより、遠隔からアクセスされる。
【０００９】
更に、第２の情報は、データパケットから導出された、及び／又は、データパケットに関連した任意のタイプのデータである。第１の情報、及びこの第２の情報は、データパケットから直接的にコピー若しくは読まれたデータ／情報であり、又は、例えば、データパケットのタイプ、若しくはデータパケットが従う規格に関連したデータである。タイプ又は規格は、パケットの特定のデータアイテムがタイプ／規格を識別する時など、データパケットから直接的に導き出すことができ、又は、データパケットのデータアイテムのタイプ及び位置の認識、そしてその後、そのデータがその位置において見つけられるデータパケットのタイプ又は規格の決定に基づいてなど、データパケットから導出されたデータから導き出すことができる。
【００１０】
第１及び第２の情報は、同一のデータ（これにより、１度のみで導出され、又はアクセスされる）、又は異なる情報とすることができる。第１の情報がデータパケットのタイプ、又はデータパケットが従う規格に関連するとき、データパケットのタイプ、及び／又はどのデータアイテムがデータパケット内に存在するかに基づいて、関数が決定され又は選択され、識別された関数に使用される。
【００１１】
第２の情報は、データパケットの特定タイプのデータである。好適には、第２のデータは、単一ストリームのデータパケットが同一の第２の情報を有するように選択され、一方、その他のストリームのデータパケットは、その他の第２の情報を有する。
【００１２】
データパケットのストリームは、通常、１つの送信器から１以上の受信器に送信されるデータパケットの列である。これらデータパケットは、より小さい部分（portion）で送信された、例えば、１つのファイルなどに関連し、パケットのペイロードとなる。送信器及び受信器、又は任意の中間のネットワーク要素は、パケット内に示されるアドレスを有する。更に、個々のデータパケット規格に応じて、情報を識別するその他のストリームが、データパケット内に存在することができる。
【００１３】
このため、ストリームは、例えば、アドレス、及び／又は情報を識別するストリームに基づいて識別され、このため、連続して使用される場合、同一の第３の情報が供給され、任意の後続のプロセスは、単に第３の情報からストリームを識別できる。
【００１４】
原理的に、任意のタイプの関数が、任意のタイプのデータパケットに使用されるとしても、本発明は、異なる関数が異なる状況で使用され又は選択されるように、複数の関数の間での選択に関連する。このため、異なる第１の情報が、異なる関数の選択をもたらす。１以上の関数が、全データパケット又は全タイプのデータパケット内に必ずしも存在しない第２の情報において実行されるとき、これは理にかなう。１つの例は、MPLS又はVLANタグを伴うデータパケット上で実行された関数が、MPLS又はVLANタグ付けされていないデータパケットには適しないことである。
【００１５】
この観点において、１つの関数は、例えば、第２の情報の要素間の任意の数学的関係とすることができる。異なる関数は、異なるタイプの情報で実行されるように適合され、例えば、異なるタイプのデータパケットが、第２の情報内の異なるタイプの情報を生じさせるような状況である。あるいは、異なる関数が、同一の第２の情報に基づいて、異なる結果を提供する。２つの組合せは、しばしば、望まれる。
【００１６】
全体の目的は、同一フローのデータパケットに対して、同一の第３の情報を提供することであり、しかし、異なるフローのデータパケットに対しては、異なる第３の関数を提供する。
【００１７】
１つの状況において、異なる関数は、第２の情報において実行される異なるタイプのハッシュ関数である。
【００１８】
情報に関数を適用することは、入力として第３の情報を用いて、関数を実行することを意味する。この入力は、単一の値など、１つの入力であり、又は、希望により、複数の入力ともできる。
【００１９】
第３の情報、及びデータパケットの少なくとも一部分を出力することは、第３の情報、及びパケットの少なくとも一部分の両方を含む合成されたデータアイテムを出力することであり、又は、１つのデータアイテムとして第３の情報、及び１つのデータアイテムとしてデータパケットの少なくとも一部分など、複数のデータアイテム内のそれらを出力することである。例えば、データパケットの受信の帯域幅、及びデータパケットの少なくとも一部分と第３の情報の出力に応じて、第３の情報を出力するために十分な帯域幅を持つよう、データパケットの一部のみを出力することが望まれる。
【００２０】
必然的に、データパケットの任意の受信、並びに第３の情報、及びデータパケットの少なくとも一部分の出力は、同一又は異なる帯域幅、プロトコル、規格、通信タイプ（有線、無線、イーサネット、ブルートゥース、ＩＲ、ラジオなど）を用いて実行される。例えば、イーサネット／ＩＳＤＮ／ＡＤＳＬケーブルなどでの通信は、内部コンピュータ／ＰＣ／サーババス上での通信と非常に異なることに注意する。そして、第３の情報、及び／又はデータパケットの少なくとも一部分は、装置の入力において要求される、又は望まれる同一のデータタイプに従うことは、必ずしも要求されない。
【００２１】
データパケットの１つ以上の部分が、第３の情報により直接的に示される場合、それらの部分は第３の情報出力から導出することができるので、例えば、それらは出力される必要はない。
【００２２】
好適な実施例において、出力手段は、選択された関数を識別する更なる出力情報に適合される。この状況において、情報は第３の情報を受信する要素、データパケットの少なくとも一部分、及び識別する情報により、識別する情報からも導出することができる。例えば、関数がデータパケットの決定されたタイプに基づいて選択される時、続いて、このタイプは識別する情報から単独で決定され、これにより、任意の更なる処理が、データパケット（または、その一部分）を全く分析する必要なしに、それに基づいて実行される。
【００２３】
その他の実施例において、装置は、複数の所定の第１の情報のそれぞれを複数の所定の関数の１つに関連付けるユーザ定義された情報を保持するための手段を更に有する。このため、以下に更に詳細に記載するように、実際の状況に応じて、ユーザは、彼／彼女自身で、第１の情報に関連して関数の使用を定義できる。装置は、キーボード、コンピュータ・マウス、タッチパッド／スクリーン、口頭の指示を受信するためのマイクロホンなどのような、そのような情報を入力するための、ユーザに対する手段を更に有する。
【００２４】
１つの状況において、データパケットは、イーサネットパケットである。「イーサネットパッケージ」は、幾つかの異なるタイプのカプセル化を含む、多様なタイプのデータパケット規格における傘であることに注意すべきであるが、一般的に、アクセス手段は、第１の情報の少なくとも一部分として、パケットの任意のカプセル化、及び／又はデータパケットが複数の規定されたタイプのイーサネットパケットのどれであるかに関連する情報を出力するように適合される。そして、第１の情報は、どのタイプの情報がパケットに供給されるかなど、パケットのタイプに主に関連し、通常、その結果として、パケット内に、異なるタイプの情報が提供される。そして、第１の情報は、データパケットから直接的にコピーされた任意の情報を実際に有する必要はない。
【００２５】
好適な実施例において、装置は、複数の出力を更に有し、出力手段は、データパケットに対し、データパケットに関連する第３の情報に基づいて出力を識別し、データパケットに関連する第３の情報、及びデータパケットの少なくとも一部分を識別された出力上で出力するよう適合される。その他のものは、全データパケットに対し、第３の情報及びデータパケットの少なくとも一部分を受信し、第３の情報及びデータパケットの少なくとも一部分の異なるセットを要求通りに個々の出力に転送することができる要素を提供するものである。
【００２６】
異なる出力を提供する理由は、本発明の第２の態様に説明されており、これは本発明の第１の態様による装置を有するデータ処理システムに関連し、システムは複数の処理要素を更に有し、出力手段は、データパケット、及び第１、第２、第３の情報の少なくとも１つに基づいて処理要素を識別し、データパケットの少なくとも一部分及び第３の情報を識別された処理要素に出力するよう適合される。
【００２７】
一般に、多重（multiple）処理要素は、１つの処理要素が目的とするタスクを実行することができない時に使用することができる。
【００２８】
従って、処理要素、又は出力は、各データパケットに対して識別され、関連する第３の情報、及びデータパケットの少なくとも一部分は、識別された処理要素に送信される。
【００２９】
処理要素で実行される処理は、データパケットの少なくとも一部分の更なる分析であり、この分析は、第３の情報に基づくこともできる。あるいは、処理は、それらの幾つかの出力の１つでの転送、その格納、及び／又は多数のその他のタスクとすることができる。
【００３０】
処理要素は、同一の処理を実行するように全て適合させることができ、それにより、処理要素の数は、単に実行能力の増加となる。そして、データパケットに対する処理要素の識別は、荷重バランス分析に単に基づくことができる。
【００３１】
あるいは、異なる処理要素は、異なる能力を持つことができる。そのような異なる能力は、ハードウェア、及び／又はソフトウェア（ソフトウェア制御の場合）内の異なる処理要素による。従って、１つの処理要素は、（例えば、所定のアドレスと共に）特定のタイプ又は特定のフローのデータパケットを更に処理するために使用することができ、その他の処理要素は、その他の分析を実行するため、データを格納するため、又は要素を転送するために使用される。
【００３２】
データパケットの部分、及び／又は第３の情報からなど、データパケットの個々のストリームが識別可能な状況において、ストリームのパケットは、同一の出力又は処理手段に全て転送され、それ故に、互いに追い付いて、そして系列順序から外れることはないことが保証される。
【００３３】
１つの状況において、出力手段は、第３の情報に基づいて、処理要素を識別するよう適合される。この状況において、処理要素は、データパケットから追加の情報を導出する必要なしに識別される。
【００３４】
特定の興味深い実施例において、装置は、複数の出力を有する上記の装置であり、各処理要素は、所定の出力から、第３の情報及びデータパケットの少なくとも一部分を受信するように適合される。この方法において、出力の選択は、間接的に処理要素の選択である。
【００３５】
本発明の第３の態様は、データパケットを分析する方式に関連し、本方法は、データパケットから、データパケットに関連する第１及び第２の情報を導出し、出力するステップと、第１の情報に基づいて、複数の所定の関数の１つを選択するステップと、選択された関数を第２の情報に適用することにより、第３の情報を導出するステップと、データパケットの少なくとも一部分と共に、第３の情報を出力するステップと、を有し、第１の情報は、データパケットのタイプ、データパケットが従う規格、及びどのデータアイテムがデータパケット内に存在するかの少なくとも１つに関連する。
【００３６】
上記のように、分析は、データパケットの任意のタイプの分析とすることができ、データパケットの定義は、広範に、データネットワーク、トランク（trunk）、リンク、ケーブル、バス上で送信可能な任意のタイプのデータパケット、要素、アイテム、セル（cell）、フレームである。
【００３７】
更に、第１及び第２の情報を導出し、出力するステップは、データパケットの全ての部分への完全なアクセスを必要としない。
【００３８】
関数の選択は、第１の情報に基づき、第１の情報は、データパケットからのコピーなど、データパケットから直接的に導出される任意の情報とすることができ、又はデータパケットのタイプ、データパケットが従う規格、及びどのタイプのデータ若しくは情報アイテムが存在し、データパケットから入手可能であるかなど、データパケットを表現する情報とすることができる。
【００３９】
第１と第２の情報は、同一とすることができるが、望ましくは同一ではない。第１の情報は、例えば、データパケットのタイプ（望ましくは、どのタイプのデータアイテムが分析に利用できるか）に関連し、第２の情報は、望ましくは、データパケットのデータに関連し、望ましくは、データパケットが属するデータパケットのストリームを識別するデータである。
【００４０】
第３の情報及びデータパケットの少なくとも一部分の出力ステップは、１つのデータ要素、アイテム、パケット、フレームの出力ステップであり、又は第３の情報及びデータパケットの少なくとも一部分の個別の（時間で、又は別個の要素として）出力ステップとすることができる。
【００４１】
１つの状況において、出力ステップは、選択された関数を識別する出力情報を更に有する。この方法において、その後の処理もまた、あるいはその後の処理のみ、この情報に基づくことができる。
【００４２】
この、又はその他の状況において、選択ステップは、複数の所定の第１の情報のそれぞれを複数の所定の関数の１つと関連付けるユーザ定義された情報に基づいて、関数を選択するステップを有する。このため、本方式は、特定の状況及び特定のタイプのデータパケット又は異なる組合せ（composition）のデータパケットタイプに適合することができる。本方式は、また、ユーザがユーザ定義された情報を入力するステップを有することもできる。
【００４３】
１つの状況において、データパケットは、イーサネットパケットであり、導出、出力するステップは、第１の情報の少なくとも一部分として、パケットの任意のカプセル化、及び／又は、複数の所定のタイプのイーサネットパケットのどれがデータパケットであるかに関連する情報を出力するステップを有する。
【００４４】
この、又はその他の状況において、出力するステップは、データパケットに対して、データパケットに関連する第３の情報に基づいて複数の出力の１つを識別し、データパケットに関連する第３の情報、及びデータパケットの少なくとも一部分を識別された出力に出力するステップを有する。
【００４５】
上記のように、これは、個々の処理が異なる目的又は同一の目的のために使用できるという点で多様な可能性をもたらすが、負荷の平衡と系列の維持が望まれる。
【００４６】
本発明の第４の態様は、本発明の第２の態様であるデータ処理システムを操作する方式に関連し、出力するステップは、データパケット、及び第１、第２、第３の情報の少なくとも１つに基づいて、処理要素を識別し、データパケットの少なくとも一部分及び第３の情報を識別された処理要素に出力するステップを有する。
【００４７】
この状況において、出力するステップは、第３の情報に基づいて処理要素を識別するステップを望ましくは有し、これは識別を行う簡単な方法である。更に、第２の情報、及びそれ故に第３の情報が示され、又はデータストリーム間で直接的に区別するとき、これは、負荷の平衡、及び／又は系列の維持を供給するであろう。あるいは、処理要素は、識別され、使用された実際の関数により識別することができる。
【００４８】
加えて、装置が複数の出力を更に有する時、出力するステップは、データパケットに対し、データパケットに関連する第３の情報に基づいて出力を識別し、データパケットに関連する第３の情報、及びデータパケットの少なくとも一部分を識別された出力上で出力するステップを望ましくは有する。これは、上記した優位点を有する。
【００４９】
一般に、動的なハッシュ（hash）特性又は選択は、より均一に分布されたハッシュ値の計算を容易にする。これは、計算されたハッシュ値が、フレームをマルチCPUに負荷平衡するために使用されるシステムにおいて、非常に有効である。異なるハッシュ関数は、0から上向きに番号付けられ、以下の記載において、ハッシュモードとして参照される。
【００５０】
選択されたハッシュモードと共に計算されたハッシュ値は、次の様な異なる事に使用することができる。
−  ハッシュ値に基づいて、TAGと共にフレームを特定のCPUに送る。即ち、NIC上で受信した全てのフレームに対してハッシュ値を計算し、ハッシュ値の２つの最下位ビットに基づいて、フレーム＋TAGを４CPUの１つに送る。
−  ハッシュ値に基づいて、異なるフレーム及び／又はフレームからの情報のグループ分けを早める。
−  特定のハッシュ値で、単一フローに対する全フレームを一意的に識別し、フローは、特定の発信元アドレスから特定の行き先アドレスまでの全フレームを参照する。特定のフローに対する全てのフレームが同一のハッシュ値を有するため、ハッシュ値の最下位ビットに基づいて、マルチCPUへの負荷平衡を使用することは、フローから全てのフレームを受信する１つのCPUとなる。これは、NICからCPUまで転送されたとき、同一のフローにおけるフレームが、CPUメモリ内に連続的に格納されるため、改善されたCPUメモリキャッシュ性能に帰着する。
【００５１】
以下において、本発明の好適な実施例は、図画を参照して記載される。
【図面の簡単な説明】
【００５２】
【図１】データプリプロセッサを有するデータパケット処理システムを説明する図である。
【図２】データパケットの構造を示す図である。
【図３】図１のデータプリプロセッサの関連する部分を説明する図である。
【図４】７ワード値からのハッシュ値の計算を説明する図である。
【図５】異なるハッシュ関数と、それらが実行されるデータを示す図である。
【図６】「最終MPLS」ハッシュキータイプを説明する図である。
【図７】「全MPLS」ハッシュキータイプを説明する図である。
【図８】「２組（tuple）」ハッシュを説明する図である。
【図９】「最終VLAN」ハッシュキータイプ７内のデータワード０を説明する図である。
【図１０】「全VLAN」ハッシュ関数又はキータイプを説明する図である。
【図１１】「５組UDP/TCP/SCTP」ハッシュキータイプ８を説明する図である。
【図１２】「３組GREv0」ハッシュキータイプ１０を説明する図である。
【図１３】「５組SCTP」ハッシュキータイプ１２を説明する図である。
【図１４】「３組GTPv0」ハッシュキータイプ１４を説明する図である。
【図１５】「３組GTPv1/GTPv2」ハッシュキータイプ１６を説明する図である。
【発明を実施するための形態】
【００５３】
図１において、全体のデータ処理システム10は、通信リンク16で複数のデータパケットを受信する、ネットワーク・インスペクション・カード（Network Inspection Card: NIC）のようなデータプリプロセッサ12を有する。プリプロセッサ12は、データパケットを前処理し、それらの各々を前処理において導出した情報と共に、リンク18を介して、複数のプロセッサ又は処理過程14の１つに転送し、プロセッサ／処理過程14は、データパケットの更なる処理を行うことができる。
【００５４】
一般に、このタイプのシステムは、リンク16上で、データパケットの形式において、多量のデータを受信するデータ記憶装置又はデータトラフィック監視システムであり、データはプロセッサ14により処理されることになる。通常、複数のプロセッサ14は、１つのプロセッサで十分でない時に提供される。
【００５５】
プロセッサ14において、更なる分析、送信、格納、データパケットの変換を決定するために、又は最後の処理の結果がどのようなものであれ、データパケットの更なる処理が実行される。プロセッサ14は、プロセッサ14での処理の結果に応じて、データトラフィックを分析し、データを格納し、及び／又はデータをその他のネットワーク要素、コンピュータなどへ送信するために使用される。
【００５６】
通常、ソフトウェア制御されているプロセッサ14内で、データパケットの全データパケット処理を実施せざるを得ない状態を避けるために、プリプロセッサ12で実行される前処理の結果が、データパケット又はその関連する部分と共にプロセッサ14に送られる。前処理の結果がデータパケットの部分を一意的に定義する場合、データパケットのそのような部分はプロセッサ14に送られる必要がなく、プロセッサ14に共に転送される結果内で識別される。
【００５７】
システムの全体の機能は、データパケット、及び特には、データパケットのフローを処理することである。２つのプロセッサ又はコンピュータが相互作用する時、データパケットのフローが相互交換される。このフローは、ヴォイス・オーバ・アイピー（Voice over IP）など、ファイル転送又はオーディオ／ビデオのやり取りである。フローは、類似したデータパケットの系列（sequence）であり、データパケットのフローへの所属は特定可能であり、１つのフローの全データパケットが同一のプロセッサ14により扱われることが望まれる。このため、前処理は、１つのフロー内の全データパケットから同一の情報を導出することを目的とし、これにより、プロセッサ14は、この導出された情報のみから１つのフローのデータパケットを識別することができる。
【００５８】
このため、プロセッサ14の負荷荷重は、プロセッサの負荷荷重に応じて、プロセッサ14へのフローを割り当てることにより平衡をとることができる。更に、又は代わりに、同一のプロセッサ14に同一のフローの全データパケットを転送することにより、１つのフローの個々データパケットが、その他に追いつき、それにより、１つのプロセッサ14での遅延などのために、例えば、VoIPストリームが中断され、又は破損されることが避けられる。加えて、プロセッサ14は、異なる特性又は能力を有することができ、それらは、そこに転送されるデータパケットのタイプ及び数量に適合される。異なるプロセッサ14は、必要により、異なる能力又はプログラミングを有することができ、そのため、異なるタイプのデータパケットは異なるプロセッサ14に転送されるべきである。
【００５９】
図２において、データパケット、DPの一般的な構成が示される。多数の個々のデータパケット規格が一般的な用語「イーサネット」に含まれるとして、１つのイーサネットパッケージは、多数の構成の１つを有することができる。
【００６０】
イーサネットデータパケットは、レイヤ３、及び／又はレイヤ４で転送（transport）される。レイヤ３転送は、レイヤ３送信機アドレス及びレイヤ３受信機アドレス、更にレイヤ４のそれらを持つようにデータパケットに要求する。従って、イーサネットデータパケット、DPは、多数のアドレスA1〜A4を有することができる。加えて、データパケットは、ペイロード、PL、及び誤り訂正データ、CRCを有することができる。幾つかのその他のフィールド又は情報タイプが、実際の規格及び送信されるデータのタイプに応じて、存在する。
【００６１】
更に、パケットDPは、E1とE2で示される１以上のMPLS及び／又はVLANカプセル化のような、異なるタイプのカプセル化（encapsulation）を有することができ、これは、また、データパケットDP内の特定位置（ビット）で識別可能である。
【００６２】
その結果、１つのフローは、全ての、又は幾つかのアドレスA1〜A4から識別することができるが、その位置は、もしあれば、カプセル化に応じて、データパケットタイプ毎に異なるであろう。
【００６３】
イーサネットパッケージの個々のタイプは規格化されているため、当業者は、これらを知っており、任意のデータパッケージから、パケットに適用するのはどの規格か、及びデータの個々のタイプが存在するのはデータパケット内のどこかを決定することができる。
【００６４】
図３において、プリプロセッサ12の不可欠な要素とその動作の方法が示される。このプリプロセッサにおいて、データ16は受信器20で受信され、受信器はデータパケットDPを導出部22、計算部24、及び組立て部（assembling unit）28に送る。導出部22は、データパケットDPから関連情報を導出し、これを計算部24に送信する。この関連情報は、一意的に、又は少なくとも高い確率を持って、受信したデータパケットの個々のストリームを識別し、どのカプセル化が存在しているかなど、その他の特性と同様に、通常は、データパケット内のアドレスと関連する。
【００６５】
図２から明らかなように、アドレス（A1−4）及びその他の情報のデータパケットDP内の位置は、カプセル化データ（E1−2）が存在するか否かによって変化する。このため、導出部22の出力は、パケットは、どのタイプのデータパケットDPであるか、及び任意のカプセル化が存在するか、及び／又は、アドレスデータ、A1−A4が、この特定データパケットDP内で見つかる位置に関する情報である。
【００６６】
フローのデータタイプに依存して、ポートアドレス又は番号、確認（verification）データ、受信するコンピュータに対してなど、このデータパケットはストリームの一部であることを識別する検証データ又はその他のデータなど、アドレス情報以外のその他の情報も使用される。
【００６７】
データパケット内のビット位置の形式、又は９ビット値より小さい値であるこの情報は、計算部24に送られ、この機能は、データパケットDPを特徴づける情報を導出するためのものであり、この情報はプロセッサ14に送られることになる。計算部24は、また、データパケットDPを受信し、データ記憶装置26にアクセスする。データ記憶装置は、データパケットタイプに相互関連するユーザ定義された情報、及びデータパケットDPの関連する部分からの導出された情報を計算するための機能を保持する。
【００６８】
データ記憶装置26において、幾つかのハッシュ関数のそれぞれは（20は以下で更に記載される）、カプセル化が存在する場合、そしてもしそうであれば、データパケットはレイヤ３、レイヤ４データパケットなどであるかどうかなど、データパケットDP の１以上の異なるタイプ、又は関連情報の異なるタイプと関連する。ハッシュ関数と共に、データ記憶装置26は、データパケットDPの部分に関連する情報も保持し、データパケットを特徴付ける情報を導出するために、ハッシュ関数がデータパケットの部分に対して実行されることになる。
【００６９】
このように、計算部24は、データ記憶装置26から、正確なハッシュ関数、及び関数が実行されることになるデータパケットの部分に関連する情報を導出する。そして、ハッシュ関数が実行され（計算部24は、データパケットもまた受信する）、ハッシュ関数の結果は、データパケットもまた受信する合成部（combining unit）28に出力される。
【００７０】
最後に、合成部28は、データパケット及びハッシュ関数の結果を、プロセッサ14と通信する様に適合した出力要素30に出力する。出力要素30、及びそれに続くプロセッサ14は、ハッシュ関数の結果、又はハッシュ関数のIDからなど、幾つかの方法で選択することができる。上記の様に、異なるプロセッサ14は、異なる特性を持つことができるが、同一のプロセッサが、同一のストリーム／フローの全データパケットを受信することが、少なくとも望まれる。
【００７１】
好適には、計算部は、どのハッシュ関数使用されたかに関連する情報を合成部28に出力し、合成部は、この情報を出力30とプロセッサ14に出力する。ハッシュ関数のこのID自体は、プロセッサ14がパケット自体を分析する必要なしに、どのタイプのデータがデータパケット内にあるかをプロセッサ14に示すであろう。更に、ハッシュ関数を計算することによりデータ量を減少させることは、２つの異なるフローのデータパケットが同一の結果を有し、そしてそれらが混乱し、又は混同されるというリスクを常に伴う。ハッシュ関数のIDもまた提供することにより、この問題の可能性を更に小さくすることを可能にするであろう。
【００７２】
より詳細には、好適な実施例は、以下のものとなる。
１．受信フレームは、９ビット値となるカプセル化及びプロトコルに基づいて分類される。
【００７３】
９ビット値のビットは、次により決定される。
【表１】
2013504913.tif 000003
【００７４】
２．９ビット値は、512エントリーを持つユーザ定義のルックアップテーブル内のアドレスとして使用され、各エントリーは、５ビット・ハッシュモード値、即ち、３２の可能な異なるハッシュ関数の１つからなる。このように、ユーザは、どのハッシュ関数が９ビット値のそれぞれに対して使用されるかを決定することができる
【表２】
2013504913.tif 000004
【００７５】
これら関数のより詳細な記載は、図５及び以下で与えられる。
【００７６】
ハッシュ値計算の間のエラーの場合に、ハッシュ値はゼロに設定され、フレームは、無効なハッシュ値ビットのタグが付けられる。フレームは、エラー処理で使用されることになるハッシュモード値のタグもまた付けられる。エラーは、以下により生じる。
・ 未定義のハッシュモード
・ 必要なプロトコルを収容するには短すぎるパケットによるプロトコルエラー
・ パケットが短いため、ハッシュ関数で使用されるフィールドがパケット内に収容されない
【００７７】
３．ルックアップテーブルから選択されたハッシュ関数が、データパケット／フレームに対するハッシュ値を計算するために使用される。
【００７８】
当然ながら、パケットヘッダ情報に基づいて、異なるハッシュ値を計算することができる。現在、ハッシュ値は、図４に示される様に、ハッシュキーデータの２８バイトのIEEE 802.3 MAC CRC32チャックサムとして生成される（多項式： G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1）。
【００７９】
タイプを決定することができない場合、例えば、ラウンドロビン（round robin）の結果が単純に提供され、各データパケットに対して増加する番号をそれぞれのデータパケットに与える。
【００８０】
４．各フレームは、ハッシュ値に加えてハッシュモードのタグが付けられる。
【００８１】
５．各フレームの｛ハッシュモード、ハッシュ値｝組へのグループ化は、上記の様に、異なる方法で使用できる。
【００８２】
異なるハッシュ関数で使用されるデータの概観が、図５で与えられる。特定のハッシュモードにおいて使用されないワードは、計算の間ゼロに設定される。
【００８３】
これらハッシュ関数の幾つかは、より詳細に説明される。
【００８４】
図６は、MPLSカプセル化／タグ付けされ、このため、９ビット値の第１ビットに「１」を有するデータパケットから導出されたハッシュキー又は関連情報を説明したものである。そのような状況において、「最終MPLS」ハッシュキータイプが使用され、これにより、ルックアップテーブルが適宜設定され、そして、図６からわかるように、ハッシュキーデータワードの第１ワード（ワード０）は、データパケット又はフレーム内の最終MPLSラベルスタック（stack）の２０ビットラベルフィールドである。ハッシュキーの残りワード、及びワード０の残りビットは、ゼロに設定される。
【００８５】
図７は、MPLSカプセル化／タグ付けされたその他のデータパケットから導出されたハッシュキー又は関連情報を説明したものである。この状況において、「全MPLS」ハッシュキータイプが使用され、図７からわかるように、ハッシュキーデータワードの第１ワード（ワード０）は、データパケット又はフレーム内の第１MPLSラベルスタックの２０ビットラベルフィールドであり、後続のワードは後続のMPLSラベルを保持する。ハッシュキーの残りのワード、及びワードを保持するMPLSラベルの残りのビットはゼロに設定される。
【００８６】
図８は、「２組」ハッシュを図示し、図８からわかるように、ハッシュキーデータワードの最初の２ワード（ワード０と１）は、それぞれ、３２ビットIPv4発信元（source）、及び行き先（destination）アドレスである。ハッシュキーの残りのワードは、ゼロに設定される。
【００８７】
この関数、及び言及した幾つかのその他のハッシュ関数もまた仕分け（sort）され、これにより、発信元と行き先アドレスの最も高いものはワード０、及びもう一方のワード１で提供される。この方法で、２つのコンピュータ間で送信されるデータパケットは、同一のハッシュキーを有し、これが望まれる。
【００８８】
図９は、「最終VLAN」ハッシュキータイプ７内のデータワード０が、データパケット内の最終VLANタグの１２ビットVLAN IDフィールドに設定されることを説明したものである。ハッシュキーの残りのワード、及びワード０の残りのビットは、ゼロに設定される。
【００８９】
図１０は、「全VLAN」ハッシュ関数又はキータイプを図示し、個々の１２ビットVLAN IDフィールドが、ワード０から開始するワード内で、それぞれ提供されることを説明している。ハッシュキーの残りのワード、及び１２ビットVLAN IDを持つワードの残りのビットは、ゼロに設定される。
【００９０】
図１１は、UDP、TCP、及びSCTPデータパケットに有効な「５組UDP/TCP/SCTP」ハッシュキータイプ８を説明する。IPv4アドレス及びプロトコルが導出され、取り入れられていることがわかる。プロトコルから、どのタイプのデータパケットがワード２内で表示されるかが決定され、ここでは、TCP、UDP、又はSCTPパケットの発信元及び行き先ポートが提供される。
【００９１】
図１２は、「３組GREv0」ハッシュキータイプ１０を説明し、３２ビットIPv4アドレスが、３２ビットGREv0キーと同様に導出される。
【００９２】
図１３は、「５組SCTP」ハッシュキータイプ１２を説明し、３２ビットIPv4アドレスがワード０と１に対して導出され、１６ビットSCTP発信元及び行き先ポートがワード２に対して導出される。最後に、３２ビット確認タグがワード３内に入れられる。
【００９３】
図１４は、「３組GTPv0」ハッシュキータイプ１４を説明し、３２ビットIPv4アドレスがワード０と１に対して導出され、１６ビットGTPv0フローラベルがワード２内に取り入れられる。
【００９４】
最後に、図１５は、「３組GTPv1/ GTPv2」ハッシュキータイプ１６を説明し、３２ビットIPv4アドレスがワード０と１に対して導出される。そして、ワード２は、GTPv1又はGTPv2パケットのトンネル（Tunnel）エンドポイント識別子、TEIDを受信する。
【図１】
2013504913.tif 000005
【図２】
2013504913.tif 000006
【図３】
2013504913.tif 000007
【図４】
2013504913.tif 000008
【図５】
2013504913.tif 000009
【図６】
2013504913.tif 000010
【図７】
2013504913.tif 000011
【図８】
2013504913.tif 000012
【図９】
2013504913.tif 000013
【図１０】
2013504913.tif 000014
【図１１】
2013504913.tif 000015
【図１２】
2013504913.tif 000016
【図１３】
2013504913.tif 000017
【図１４】
2013504913.tif 000018
【図１５】
2013504913.tif 000019
【手続補正書】
【提出日】平成23年6月23日(2011.6.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データパケットを分析するための装置であって、該装置は、
前記データパケットのデータにアクセスし、前記データパケットに関連する第１及び第２の情報を出力する手段と、
前記第１の情報に基づいて、複数の所定の関数の１つを選択する手段と、
前記選択された関数を前記第２の情報に適用することにより、第３の情報を導出する手段と、
前記データパケットの少なくとも一部分と共に、前記第３の情報を出力する手段と、
を有し、
前記アクセスする手段は、前記データパケットのタイプ、前記データパケットが従う規格、及びどのデータアイテムが前記データパケット内に存在するかの少なくとも１つに関連する前記第１の情報を出力するように適合され、
前記装置は、複数の出力を更に有し、前記出力する手段は、データパケットに対し、該データパケットに関連する前記第３の情報に基づいて出力を識別し、前記データパケットに関連する前記第３の情報、及び前記データパケットの少なくとも一部分を前記識別された出力上で出力するよう適合される、
ことを特徴とする装置。
【請求項２】
前記出力する手段は、前記選択された関数を識別する情報を更に出力するよう適合される、請求項１に記載の装置。
【請求項３】
複数の所定の第１の情報のそれぞれを前記複数の所定の関数の１つに関連付けるユーザ定義の情報を保持する手段を更に有する、請求項１又は２に記載の装置。
【請求項４】
前記データパケットはイーサネットパケットであり、前記アクセスする手段は、前記第１の情報の少なくとも一部分として、前記データパケットの任意のカプセル化、及び前記データパケットが複数の所定のタイプのイーサネットパケットのどれであるかの少なくとも１つに関連する情報を出力するよう適合される、請求項１〜３のいずれか１項に記載の装置。
【請求項５】
請求項１〜４のいずれか１項に記載の装置を有するデータ処理システムであって、
前記システムは、複数の処理要素を更に有し、前記出力する手段は、データパケット、及び第１、第２、第３の情報の少なくとも１つに基づいて、処理要素を識別し、前記データパケットの少なくとも一部分、及び前記第３の情報を前記識別された処理要素に出力するように適合される、データ処理システム。
【請求項６】
前記出力する手段は、前記第３の情報に基づいて、前記処理要素を識別するように適合される、請求項５に記載のデータ処理システム。
【請求項７】
前記装置は、請求項５に記載の装置であり、各処理要素は、所定の出力から、前記第３の情報、及びデータパケットの少なくとも一部分を受信するように適合される、請求項５又は６に記載のデータ処理システム。
【請求項８】
データパケットを分析するための方法であって、
前記データパケットから、前記データパケットに関連する第１及び第２の情報を導出し、出力するステップと、
前記第１の情報に基づいて、複数の所定の関数の１つを選択するステップと、
前記選択された関数を前記第２の情報に適用することにより、第３の情報を導出するステップと、
前記データパケットの少なくとも一部分と共に、前記第３の情報を出力するステップと、
を有し、
前記第１の情報は、前記データパケットのタイプ、前記データパケットが従う規格、及びどのデータアイテムが前記データパケット内に存在するかの少なくとも１つに関連し、
前記出力するステップは、データパケットに対し、該データパケットに関連する前記第３の情報に基づいて複数の出力の１つを識別し、前記データパケットに関連する前記第３の情報、及び前記データパケットの少なくとも一部分を前記識別された出力に出力するステップを有する、
ことを特徴とする方法。
【請求項９】
前記出力するステップは、前記選択された関数を識別する情報を出力するステップを更に有する、請求項８に記載の方法。
【請求項１０】
前記選択するステップは、複数の所定の第１の情報のそれぞれを前記複数の所定の関数の１つに関連付けるユーザ定義の情報に基づいて、前記関数を選択するステップを有する、請求項８又は９に記載の方法。
【請求項１１】
前記データパケットはイーサネットパケットであり、前記導出するステップ及び出力するステップは、前記第１の情報の少なくとも一部分として、前記データパケットの任意のカプセル化、及び前記データパケットが複数の所定のタイプのイーサネットパケットのどれであるかの少なくとも１つに関連する情報を出力するステップを有する、請求項８〜１０のいずれか１項に記載の方法。
【請求項１２】
請求項５に記載の前記データ処理システムを動作させる方法であって、
前記出力するステップは、データパケット、及び第１、第２、第３の情報の少なくとも１つに基づいて、処理要素を識別し、前記データパケットの少なくとも一部分、及び前記第３の情報を前記識別された処理要素に出力するステップを有する、方法。
【請求項１３】
前記出力するステップは、前記第３の情報に基づいて、前記処理要素を識別するステップを有する、請求項１２に記載の方法。
【請求項１４】
前記装置は、複数の出力を更に有し、前記出力するステップは、データパケットに対し、該データパケットに関連する前記第３の情報に基づいて出力を識別し、前記データパケットに関連する前記第３の情報、及び前記データパケットの少なくとも一部分を前記識別された出力上で出力するステップを有する、請求項１２又は１３に記載の方法。
【国際調査報告】
2013504913.tif 000020
2013504913.tif 000021
2013504913.tif 000022