特許第5711237号(P5711237)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナパテック アクティーゼルスカブの特許一覧

特許5711237データパケットを分析するための装置、データパケット処理システム、及び処理方法
<>
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000004
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000005
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000006
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000007
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000008
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000009
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000010
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000011
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000012
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000013
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000014
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000015
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000016
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000017
  • 特許5711237-データパケットを分析するための装置、データパケット処理システム、及び処理方法 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5711237
(24)【登録日】2015年3月13日
(45)【発行日】2015年4月30日
(54)【発明の名称】データパケットを分析するための装置、データパケット処理システム、及び処理方法
(51)【国際特許分類】
   H04L 12/70 20130101AFI20150409BHJP
【FI】
   H04L12/70 100Z
【請求項の数】14
【全頁数】19
(21)【出願番号】特願2012-528392(P2012-528392)
(86)(22)【出願日】2010年9月15日
(65)【公表番号】特表2013-504913(P2013-504913A)
(43)【公表日】2013年2月7日
(86)【国際出願番号】EP2010063508
(87)【国際公開番号】WO2011032954
(87)【国際公開日】20110324
【審査請求日】2013年9月13日
(31)【優先権主張番号】61/242,567
(32)【優先日】2009年9月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】512064675
【氏名又は名称】ナパテック アクティーゼルスカブ
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100108383
【弁理士】
【氏名又は名称】下道 晶久
(74)【代理人】
【識別番号】100141162
【弁理士】
【氏名又は名称】森 啓
(72)【発明者】
【氏名】イェンス クリストファーセン
【審査官】 佐々木 洋
(56)【参考文献】
【文献】 特開2008−167305(JP,A)
【文献】 特表2010−514313(JP,A)
【文献】 特開2008−048010(JP,A)
【文献】 特表2009−534000(JP,A)
【文献】 特開2007−097114(JP,A)
【文献】 特開2005−318222(JP,A)
【文献】 特開2000−278322(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00−12/26
H04L 12/50−12/955
(57)【特許請求の範囲】
【請求項1】
データパケットを分析するための装置であって、該装置は、
前記データパケットのデータにアクセスし、前記データパケットに関連する第1及び第2の情報を出力する第1の手段と、
前記第1の情報に基づいて、複数の所定の関数の1つを選択する第2の手段と、
前記選択された関数を前記第2の情報に適用することにより、第3の情報を導出する第3の手段と、
前記データパケットの少なくとも一部分と共に、前記第3の情報を出力する第4の手段と、
を有し、
前記第1の手段は、前記データパケットのタイプ、前記データパケットが従う規格、及びどのデータアイテムが前記データパケット内に存在するかの少なくとも1つに関連する前記第1の情報を出力するように適合され、
前記装置は、複数の出力を更に有し、前記第4の手段は、データパケットに対し、該データパケットに関連する前記第3の情報に基づいて出力を識別し、前記データパケットに関連する前記第3の情報、及び前記データパケットの少なくとも一部分を前記識別された出力上で出力するよう適合される、
ことを特徴とする装置。
【請求項2】
前記第4の手段は、前記選択された関数を識別する情報を更に出力するよう適合される、請求項1に記載の装置。
【請求項3】
複数の所定の第1の情報のそれぞれを前記複数の所定の関数の1つに関連付けるユーザ定義の情報を保持する第5の手段を更に有する、請求項1又は2に記載の装置。
【請求項4】
前記データパケットはイーサネットパケットであり、前記第1の手段は、前記第1の情報の少なくとも一部分として、前記データパケットの任意のカプセル化、及び前記データパケットが複数の所定のタイプのイーサネットパケットのどれであるかの少なくとも1つに関連する情報を出力するよう適合される、請求項1〜3のいずれか1項に記載の装置。
【請求項5】
請求項1〜4のいずれか1項に記載の装置を有するデータ処理システムであって、
前記システムは、複数の処理要素を更に有し、前記第4の手段は、データパケット、及び第1、第2、第3の情報の少なくとも1つに基づいて、処理要素を識別し、前記データパケットの少なくとも一部分、及び前記第3の情報を前記識別された処理要素に出力するように適合される、データ処理システム。
【請求項6】
前記第4の手段は、前記第3の情報に基づいて、前記処理要素を識別するように適合される、請求項5に記載のデータ処理システム。
【請求項7】
前記装置は、請求項5に記載の装置であり、各処理要素は、所定の出力から、前記第3の情報、及びデータパケットの少なくとも一部分を受信するように適合される、請求項5又は6に記載のデータ処理システム。
【請求項8】
データパケットを分析するための方法であって、
前記データパケットから、前記データパケットに関連する第1及び第2の情報を導出し、出力する第1のステップと、
前記第1の情報に基づいて、複数の所定の関数の1つを選択する第2のステップと、
前記選択された関数を前記第2の情報に適用することにより、第3の情報を導出する第3のステップと、
前記データパケットの少なくとも一部分と共に、前記第3の情報を出力する第4のステップと、
を有し、
前記第1の情報は、前記データパケットのタイプ、前記データパケットが従う規格、及びどのデータアイテムが前記データパケット内に存在するかの少なくとも1つに関連し、
前記第4のステップは、データパケットに対し、該データパケットに関連する前記第3の情報に基づいて複数の出力の1つを識別し、前記データパケットに関連する前記第3の情報、及び前記データパケットの少なくとも一部分を前記識別された出力に出力するステップを有する、
ことを特徴とする方法。
【請求項9】
前記第4のステップは、前記選択された関数を識別する情報を出力するステップを更に有する、請求項8に記載の方法。
【請求項10】
前記第2のステップは、複数の所定の第1の情報のそれぞれを前記複数の所定の関数の1つに関連付けるユーザ定義の情報に基づいて、前記関数を選択するステップを有する、請求項8又は9に記載の方法。
【請求項11】
前記データパケットはイーサネットパケットであり、前記第1のステップは、前記第1の情報の少なくとも一部分として、前記データパケットの任意のカプセル化、及び前記データパケットが複数の所定のタイプのイーサネットパケットのどれであるかの少なくとも1つに関連する情報を出力するステップを有する、請求項8〜10のいずれか1項に記載の方法。
【請求項12】
請求項5に記載の前記データ処理システムを動作させる方法であって、
データパケット、及び第1、第2、第3の情報の少なくとも1つに基づいて、処理要素が識別され、前記データパケットの少なくとも一部分、及び前記第3の情報は、前記識別された処理要素に出力される、方法。
【請求項13】
前記処理要素を識別するステップは、前記第3の情報に基づいて、前記処理要素を識別するステップを有する、請求項12に記載の方法。
【請求項14】
前記装置は、複数の出力を更に有し、前記データパケットの少なくとも一部分と共に、前記第3の情報を出力するステップは、データパケットに対し、該データパケットに関連する前記第3の情報に基づいて出力を識別し、前記データパケットに関連する前記第3の情報、及び前記データパケットの少なくとも一部分を前記識別された出力上で出力するステップを有する、請求項12又は13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データパケットの処理に関連し、詳細には、データ接続上で受信され、複数のプロセッサにより更に処理されることになるデータパケットの前処理(pre-processing)に関連する。
【背景技術】
【0002】
これまで、そのような前処理は、むしろ初歩的なものであり、処理の大部分は後続のプロセッサに残されていた。通常、この前処理は、1以上のカプセル化(MPLS、VLANなど)、及び/又はデータタイプ(UDP、TCPなど)の決定といったデータパケットの全般的なタイプの決定であり、この情報を伴ったデータパケットの転送である。あるいは、データパケットの特定のタイプは、そこから(典型的には、データパケットのアドレスフィールドから)特定の情報を導き出すことにより前処理され、そこからハッシュ(hash)値を導出することができる。ハッシュ値は、データパケットと共に転送される。後者の場合、例えば、UDP/TCPトラフィック又はVoIPの個々のストリームは、ハッシュ値から識別することができ、必要により、同一のプロセッサにルートされる。しかし、1つのハッシュ関数のみが使用され、これにより、幾つかのタイプのデータパケットのみが前処理される。そして、その他のタイプのデータパケットは、全く前処理されていない。
【0003】
このタイプのシステムは、WO200999573、US7529242、US2007168377、US7212526又はUS6597661に見られる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
このため、データチェーンの後側で、ソフトウェア内での処理に対して、より前側で、ハードウェア内での処理を提供することが望まれる。
【課題を解決するための手段】
【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】
以下において、本発明の好適な実施例は、図画を参照して記載される。
【図面の簡単な説明】
【0052】
図1】データプリプロセッサを有するデータパケット処理システムを説明する図である。
図2】データパケットの構造を示す図である。
図3図1のデータプリプロセッサの関連する部分を説明する図である。
図4】7ワード値からのハッシュ値の計算を説明する図である。
図5】異なるハッシュ関数と、それらが実行されるデータを示す図である。
図6】「最終MPLS」ハッシュキータイプを説明する図である。
図7】「全MPLS」ハッシュキータイプを説明する図である。
図8】「2組(tuple)」ハッシュを説明する図である。
図9】「最終VLAN」ハッシュキータイプ7内のデータワード0を説明する図である。
図10】「全VLAN」ハッシュ関数又はキータイプを説明する図である。
図11】「5組UDP/TCP/SCTP」ハッシュキータイプ8を説明する図である。
図12】「3組GREv0」ハッシュキータイプ10を説明する図である。
図13】「5組SCTP」ハッシュキータイプ12を説明する図である。
図14】「3組GTPv0」ハッシュキータイプ14を説明する図である。
図15】「3組GTPv1/GTPv2」ハッシュキータイプ16を説明する図である。
【発明を実施するための形態】
【0053】
図1において、全体のデータ処理システム10は、通信リンク16で複数のデータパケットを受信する、ネットワーク・インスペクション・カード(Network Inspection Card: NIC)のようなデータプリプロセッサ12を有する。プリプロセッサ12は、データパケットを前処理し、それらの各々を前処理において導出した情報と共に、リンク18を介して、複数のプロセッサ又は処理過程14の1つに転送し、プロセッサ/処理過程14は、データパケットの更なる処理を行うことができる。
【0054】
一般に、このタイプのシステムは、リンク16上で、データパケットの形式において、多量のデータを受信するデータ記憶装置又はデータトラフィック監視システムであり、データはプロセッサ14により処理されることになる。通常、複数のプロセッサ14は、1つのプロセッサで十分でない時に提供される。
【0055】
プロセッサ14において、更なる分析、送信、格納、データパケットの変換を決定するために、又は最後の処理の結果がどのようなものであれ、データパケットの更なる処理が実行される。プロセッサ14は、プロセッサ14での処理の結果に応じて、データトラフィックを分析し、データを格納し、及び/又はデータをその他のネットワーク要素、コンピュータなどへ送信するために使用される。
【0056】
通常、ソフトウェア制御されているプロセッサ14内で、データパケットの全データパケット処理を実施せざるを得ない状態を避けるために、プリプロセッサ12で実行される前処理の結果が、データパケット又はその関連する部分と共にプロセッサ14に送られる。前処理の結果がデータパケットの部分を一意的に定義する場合、データパケットのそのような部分はプロセッサ14に送られる必要がなく、プロセッサ14に共に転送される結果内で識別される。
【0057】
システムの全体の機能は、データパケット、及び特には、データパケットのフローを処理することである。2つのプロセッサ又はコンピュータが相互作用する時、データパケットのフローが相互交換される。このフローは、ヴォイス・オーバ・アイピー(Voice over IP)など、ファイル転送又はオーディオ/ビデオのやり取りである。フローは、類似したデータパケットの系列(sequence)であり、データパケットのフローへの所属は特定可能であり、1つのフローの全データパケットが同一のプロセッサ14により扱われることが望まれる。このため、前処理は、1つのフロー内の全データパケットから同一の情報を導出することを目的とし、これにより、プロセッサ14は、この導出された情報のみから1つのフローのデータパケットを識別することができる。
【0058】
このため、プロセッサ14の負荷荷重は、プロセッサの負荷荷重に応じて、プロセッサ14へのフローを割り当てることにより平衡をとることができる。更に、又は代わりに、同一のプロセッサ14に同一のフローの全データパケットを転送することにより、1つのフローの個々データパケットが、その他に追いつき、それにより、1つのプロセッサ14での遅延などのために、例えば、VoIPストリームが中断され、又は破損されることが避けられる。加えて、プロセッサ14は、異なる特性又は能力を有することができ、それらは、そこに転送されるデータパケットのタイプ及び数量に適合される。異なるプロセッサ14は、必要により、異なる能力又はプログラミングを有することができ、そのため、異なるタイプのデータパケットは異なるプロセッサ14に転送されるべきである。
【0059】
図2において、データパケット、DPの一般的な構成が示される。多数の個々のデータパケット規格が一般的な用語「イーサネット」に含まれるとして、1つのイーサネットパッケージは、多数の構成の1つを有することができる。
【0060】
イーサネットデータパケットは、レイヤ3、及び/又はレイヤ4で転送(transport)される。レイヤ3転送は、レイヤ3送信機アドレス及びレイヤ3受信機アドレス、更にレイヤ4のそれらを持つようにデータパケットに要求する。従って、イーサネットデータパケット、DPは、多数のアドレスA1〜A4を有することができる。加えて、データパケットは、ペイロード、PL、及び誤り訂正データ、CRCを有することができる。幾つかのその他のフィールド又は情報タイプが、実際の規格及び送信されるデータのタイプに応じて、存在する。
【0061】
更に、パケットDPは、E1とE2で示される1以上のMPLS及び/又はVLANカプセル化のような、異なるタイプのカプセル化(encapsulation)を有することができ、これは、また、データパケットDP内の特定位置(ビット)で識別可能である。
【0062】
その結果、1つのフローは、全ての、又は幾つかのアドレスA1〜A4から識別することができるが、その位置は、もしあれば、カプセル化に応じて、データパケットタイプ毎に異なるであろう。
【0063】
イーサネットパッケージの個々のタイプは規格化されているため、当業者は、これらを知っており、任意のデータパッケージから、パケットに適用するのはどの規格か、及びデータの個々のタイプが存在するのはデータパケット内のどこかを決定することができる。
【0064】
図3において、プリプロセッサ12の不可欠な要素とその動作の方法が示される。このプリプロセッサにおいて、データ16は受信器20で受信され、受信器はデータパケットDPを導出部22、計算部24、及び組立て部(assembling unit)28に送る。導出部22は、データパケットDPから関連情報を導出し、これを計算部24に送信する。この関連情報は、一意的に、又は少なくとも高い確率を持って、受信したデータパケットの個々のストリームを識別し、どのカプセル化が存在しているかなど、その他の特性と同様に、通常は、データパケット内のアドレスと関連する。
【0065】
図2から明らかなように、アドレス(A1−4)及びその他の情報のデータパケットDP内の位置は、カプセル化データ(E1−2)が存在するか否かによって変化する。このため、導出部22の出力は、パケットは、どのタイプのデータパケットDPであるか、及び任意のカプセル化が存在するか、及び/又は、アドレスデータ、A1−A4が、この特定データパケットDP内で見つかる位置に関する情報である。
【0066】
フローのデータタイプに依存して、ポートアドレス又は番号、確認(verification)データ、受信するコンピュータに対してなど、このデータパケットはストリームの一部であることを識別する検証データ又はその他のデータなど、アドレス情報以外のその他の情報も使用される。
【0067】
データパケット内のビット位置の形式、又は9ビット値より小さい値であるこの情報は、計算部24に送られ、この機能は、データパケットDPを特徴づける情報を導出するためのものであり、この情報はプロセッサ14に送られることになる。計算部24は、また、データパケットDPを受信し、データ記憶装置26にアクセスする。データ記憶装置は、データパケットタイプに相互関連するユーザ定義された情報、及びデータパケットDPの関連する部分からの導出された情報を計算するための機能を保持する。
【0068】
データ記憶装置26において、幾つかのハッシュ関数のそれぞれは(20は以下で更に記載される)、カプセル化が存在する場合、そしてもしそうであれば、データパケットはレイヤ3、レイヤ4データパケットなどであるかどうかなど、データパケットDP の1以上の異なるタイプ、又は関連情報の異なるタイプと関連する。ハッシュ関数と共に、データ記憶装置26は、データパケットDPの部分に関連する情報も保持し、データパケットを特徴付ける情報を導出するために、ハッシュ関数がデータパケットの部分に対して実行されることになる。
【0069】
このように、計算部24は、データ記憶装置26から、正確なハッシュ関数、及び関数が実行されることになるデータパケットの部分に関連する情報を導出する。そして、ハッシュ関数が実行され(計算部24は、データパケットもまた受信する)、ハッシュ関数の結果は、データパケットもまた受信する合成部(combining unit)28に出力される。
【0070】
最後に、合成部28は、データパケット及びハッシュ関数の結果を、プロセッサ14と通信する様に適合した出力要素30に出力する。出力要素30、及びそれに続くプロセッサ14は、ハッシュ関数の結果、又はハッシュ関数のIDからなど、幾つかの方法で選択することができる。上記の様に、異なるプロセッサ14は、異なる特性を持つことができるが、同一のプロセッサが、同一のストリーム/フローの全データパケットを受信することが、少なくとも望まれる。
【0071】
好適には、計算部は、どのハッシュ関数使用されたかに関連する情報を合成部28に出力し、合成部は、この情報を出力30とプロセッサ14に出力する。ハッシュ関数のこのID自体は、プロセッサ14がパケット自体を分析する必要なしに、どのタイプのデータがデータパケット内にあるかをプロセッサ14に示すであろう。更に、ハッシュ関数を計算することによりデータ量を減少させることは、2つの異なるフローのデータパケットが同一の結果を有し、そしてそれらが混乱し、又は混同されるというリスクを常に伴う。ハッシュ関数のIDもまた提供することにより、この問題の可能性を更に小さくすることを可能にするであろう。
【0072】
より詳細には、好適な実施例は、以下のものとなる。
1.受信フレームは、9ビット値となるカプセル化及びプロトコルに基づいて分類される。
【0073】
9ビット値のビットは、次により決定される。
【表1】
【0074】
2.9ビット値は、512エントリーを持つユーザ定義のルックアップテーブル内のアドレスとして使用され、各エントリーは、5ビット・ハッシュモード値、即ち、32の可能な異なるハッシュ関数の1つからなる。このように、ユーザは、どのハッシュ関数が9ビット値のそれぞれに対して使用されるかを決定することができる
【表2】
【0075】
これら関数のより詳細な記載は、図5及び以下で与えられる。
【0076】
ハッシュ値計算の間のエラーの場合に、ハッシュ値はゼロに設定され、フレームは、無効なハッシュ値ビットのタグが付けられる。フレームは、エラー処理で使用されることになるハッシュモード値のタグもまた付けられる。エラーは、以下により生じる。
・ 未定義のハッシュモード
・ 必要なプロトコルを収容するには短すぎるパケットによるプロトコルエラー
・ パケットが短いため、ハッシュ関数で使用されるフィールドがパケット内に収容されない
【0077】
3.ルックアップテーブルから選択されたハッシュ関数が、データパケット/フレームに対するハッシュ値を計算するために使用される。
【0078】
当然ながら、パケットヘッダ情報に基づいて、異なるハッシュ値を計算することができる。現在、ハッシュ値は、図4に示される様に、ハッシュキーデータの28バイトのIEEE 802.3 MAC CRC32チャックサムとして生成される(多項式: G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1)。
【0079】
タイプを決定することができない場合、例えば、ラウンドロビン(round robin)の結果が単純に提供され、各データパケットに対して増加する番号をそれぞれのデータパケットに与える。
【0080】
4.各フレームは、ハッシュ値に加えてハッシュモードのタグが付けられる。
【0081】
5.各フレームの{ハッシュモード、ハッシュ値}組へのグループ化は、上記の様に、異なる方法で使用できる。
【0082】
異なるハッシュ関数で使用されるデータの概観が、図5で与えられる。特定のハッシュモードにおいて使用されないワードは、計算の間ゼロに設定される。
【0083】
これらハッシュ関数の幾つかは、より詳細に説明される。
【0084】
図6は、MPLSカプセル化/タグ付けされ、このため、9ビット値の第1ビットに「1」を有するデータパケットから導出されたハッシュキー又は関連情報を説明したものである。そのような状況において、「最終MPLS」ハッシュキータイプが使用され、これにより、ルックアップテーブルが適宜設定され、そして、図6からわかるように、ハッシュキーデータワードの第1ワード(ワード0)は、データパケット又はフレーム内の最終MPLSラベルスタック(stack)の20ビットラベルフィールドである。ハッシュキーの残りワード、及びワード0の残りビットは、ゼロに設定される。
【0085】
図7は、MPLSカプセル化/タグ付けされたその他のデータパケットから導出されたハッシュキー又は関連情報を説明したものである。この状況において、「全MPLS」ハッシュキータイプが使用され、図7からわかるように、ハッシュキーデータワードの第1ワード(ワード0)は、データパケット又はフレーム内の第1MPLSラベルスタックの20ビットラベルフィールドであり、後続のワードは後続のMPLSラベルを保持する。ハッシュキーの残りのワード、及びワードを保持するMPLSラベルの残りのビットはゼロに設定される。
【0086】
図8は、「2組」ハッシュを図示し、図8からわかるように、ハッシュキーデータワードの最初の2ワード(ワード0と1)は、それぞれ、32ビットIPv4発信元(source)、及び行き先(destination)アドレスである。ハッシュキーの残りのワードは、ゼロに設定される。
【0087】
この関数、及び言及した幾つかのその他のハッシュ関数もまた仕分け(sort)され、これにより、発信元と行き先アドレスの最も高いものはワード0、及びもう一方のワード1で提供される。この方法で、2つのコンピュータ間で送信されるデータパケットは、同一のハッシュキーを有し、これが望まれる。
【0088】
図9は、「最終VLAN」ハッシュキータイプ7内のデータワード0が、データパケット内の最終VLANタグの12ビットVLAN IDフィールドに設定されることを説明したものである。ハッシュキーの残りのワード、及びワード0の残りのビットは、ゼロに設定される。
【0089】
図10は、「全VLAN」ハッシュ関数又はキータイプを図示し、個々の12ビットVLAN IDフィールドが、ワード0から開始するワード内で、それぞれ提供されることを説明している。ハッシュキーの残りのワード、及び12ビットVLAN IDを持つワードの残りのビットは、ゼロに設定される。
【0090】
図11は、UDP、TCP、及びSCTPデータパケットに有効な「5組UDP/TCP/SCTP」ハッシュキータイプ8を説明する。IPv4アドレス及びプロトコルが導出され、取り入れられていることがわかる。プロトコルから、どのタイプのデータパケットがワード2内で表示されるかが決定され、ここでは、TCP、UDP、又はSCTPパケットの発信元及び行き先ポートが提供される。
【0091】
図12は、「3組GREv0」ハッシュキータイプ10を説明し、32ビットIPv4アドレスが、32ビットGREv0キーと同様に導出される。
【0092】
図13は、「5組SCTP」ハッシュキータイプ12を説明し、32ビットIPv4アドレスがワード0と1に対して導出され、16ビットSCTP発信元及び行き先ポートがワード2に対して導出される。最後に、32ビット確認タグがワード3内に入れられる。
【0093】
図14は、「3組GTPv0」ハッシュキータイプ14を説明し、32ビットIPv4アドレスがワード0と1に対して導出され、16ビットGTPv0フローラベルがワード2内に取り入れられる。
【0094】
最後に、図15は、「3組GTPv1/ GTPv2」ハッシュキータイプ16を説明し、32ビットIPv4アドレスがワード0と1に対して導出される。そして、ワード2は、GTPv1又はGTPv2パケットのトンネル(Tunnel)エンドポイント識別子、TEIDを受信する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15