(57)【特許請求の範囲】
【請求項１】
少なくとも１つのスイッチングデバイス（１）を含むパケット交換通信ネットワークにおいて複数のデータパケットを処理する方法であって、
少なくとも１つのスイッチングデバイス（１）の制御ユニット（７）によって、通信ネットワークを介して交換される通信パケットのヘッダ（１０）を含むデータパケットを受信するステップと、
制御ユニット（７）によって、ヘッダ（１０）に対して少なくとも１つのフィルタリング操作（５０）を適用し、それによってフィルタリングされた情報（１００）を生成するステップと、
制御ユニット（７）によって、ハッシュ関数（３００）にしたがって、フィルタリングされた情報（１００）をハッシュタグ（３０）に写像するステップと、
制御ユニット（７）によって、データパケットのヘッダ（１０）にハッシュタグ（３０）を挿入することによってタグ付けされたヘッダ（１１）を提供するステップと、
制御ユニット（７）によって、データパケットのさらなる処理のために、データパケットをタグ付けされたヘッダ（１１）にしたがってスイッチングデバイス（１）の２つ以上の仮想サブエンジン（２１、．．．、２９）の中の仮想サブエンジン（２４）に送信するステップとを含み、２つ以上の仮想サブエンジンの数がハッシュ関数（３００）によって生成することができるハッシュタグ値の数に適合される、方法。
【請求項２】
少なくとも１つのフィルタリング操作（５０）が、複数のデータパケットに関連する１つまたは複数のデータトラフィックフローの中のデータトラフィックフローへのデータパケットの関連付けを示す識別子をフィルタリングし、ハッシュ関数（３００）が、前記識別子を含むフィルタリングされた情報（１００）を数ｋに写像し、ｋが、自然数の区間［ｍ，．．．，Ｍ］の元であり、ｍが、好ましくはｍ＝１である最小値であり、Ｍが、Ｍ＜ＮまたはＭ＝Ｎである最大値であり、Ｎが、２つ以上の仮想サブエンジン（２１、．．．、２９）の数であり、好ましくは、区間［ｍ，．．．，Ｍ］の濃度が、複数のデータパケットの異なるデータトラフィックフローに関連するデータパケットをタグ付けされたヘッダ（１１）にしたがって２つ以上の仮想サブエンジン（２１、．．．、２９）の中の異なる仮想サブエンジンに送信するために、１つまたは複数のデータトラフィックフローの数以上である、請求項１に記載の方法。
【請求項３】
仮想サブエンジン（２４）によって、受信されたデータパケットのさらなる処理のために制御ユニット（７）からデータパケットを受信するステップと、
仮想サブエンジン（２４）のメモリが受信されたデータパケットおよび／またはハッシュタグ（３０）に関連するデータを保持していない場合に、仮想サブエンジン（２４）によって、受信されたデータパケットのさらなる処理のために、受信されたデータパケットおよび／またはハッシュタグ（３０）に関連するデータを保持するデータベース（６）にアクセスするステップと、
仮想サブエンジン（２４）によって、ヘッダ（１０）、受信されたデータパケットおよび／もしくはハッシュタグ（３０）に関連するデータ、ならびに／または受信されたデータパケットのペイロードを使用することによって受信されたデータパケットを処理するステップとを含む、請求項１に記載の方法。
【請求項４】
仮想サブエンジン（２４）によって、受信されたデータパケットのさらなる処理のために制御ユニット（７）からデータパケットを受信するステップと、
仮想サブエンジン（２４）によって、タグ付けされたヘッダ（１１）からハッシュタグ（３０）を取り出すステップと、
ハッシュタグ（３０）が、好ましくは数値によって、仮想サブエンジン（２４）が受信されたデータパケットのさらなる処理のために指定されていることを示す場合に、仮想サブエンジン（２４）によって、受信されたデータパケットを処理するステップとを含む、請求項１に記載の方法。
【請求項５】
パケット交換通信ネットワークにおいて通信パケットをスイッチングするためのスイッチングデバイス（１）であって、２つ以上の仮想サブエンジン（２１、．．．、２９）、および制御ユニット（７）を含み、制御ユニット（７）が、通信ネットワークを介して交換される通信パケットの中の１つの通信パケットのヘッダ（１０）を含むデータパケットを受信し、ヘッダ（１０）に対して少なくとも１つのフィルタリング操作（５０）を適用し、それによってフィルタリングされた情報（１００）を生成し、ハッシュ関数（３００）にしたがって、フィルタリングされた情報（１００）をハッシュタグ（３０）に写像し、データパケットのヘッダ（１０）にハッシュタグ（３０）を挿入することによってタグ付けされたヘッダ（１１）を提供し、データパケットのさらなる処理のために、データパケットをタグ付けされたヘッダ（１１）にしたがって２つ以上の仮想サブエンジン（２１、．．．、２９）の中の仮想サブエンジン（２４）に送信するように構成され、仮想サブエンジンの数がハッシュ関数（３００）によって生成することができるハッシュタグ値の数に適合される、スイッチングデバイス（１）。
【請求項６】
フィルタリングされた情報（１００）が、グループのインターネットプロトコル送信元アドレス、インターネットプロトコル送信先アドレス、インターネットプロトコル送信元ポート、インターネットプロトコル送信先ポート、トランスポートプロトコルの種類、およびサービスタイプビットから選択された１つまたは複数の情報要素を含むか、または、フィルタリングされた情報（１００）が、インターネットプロトコル送信元アドレス、インターネットプロトコル送信先アドレス、インターネットプロトコル送信元ポート、インターネットプロトコル送信先ポート、およびサービスタイプビットを含む５つの要素の組で構成される、請求項５に記載のスイッチングデバイス（１）。
【請求項７】
ハッシュ関数（３００）がモジュロｐ関数を含み、ｐ＜Ｎまたはｐ＝Ｎであり、Ｎが２つ以上の仮想サブエンジン（２１、．．．、２９）の数であり、好ましくは、ｐが素数である、および／またはｐがＮの次に小さい素数である、請求項５に記載のスイッチングデバイス（１）。
【請求項８】
ハッシュ関数（３００）が、フィルタリングされた情報（１００）を数ｋに写像するように構成され、ｋが、自然数の区間［ｍ，．．．，Ｍ］の元であり、ｍが、好ましくはｍ＝１である最小値であり、Ｍが、Ｍ＜ＮまたはＭ＝Ｎである最大値であり、Ｎが、２つ以上の仮想サブエンジン（２１、．．．、２９）の数である、請求項５に記載のスイッチングデバイス（１）。
【請求項９】
ハッシュ関数（３００）が、ハッシュ関数（３００）のすべての値がハッシュ関数（３００）の最小値と最大値の間に均等に分散されるようにして構成される、請求項５に記載のスイッチングデバイス（１）。
【請求項１０】
制御ユニット（７）が、フィルタリングされた情報（１００）を生成するために、ヘッダ（１０）に対して連続的に適用するための２つ以上のフィルタリング操作（５０）を適用するように構成される、請求項５に記載のスイッチングデバイス（１）。
【請求項１１】
スイッチングデバイス（１）が、データパケットをタグ付けされたヘッダ（１１）にしたがって仮想サブエンジン（２４）にスイッチングするタグスイッチ（４０）を含む、請求項５に記載のスイッチングデバイス（１）。
【請求項１２】
スイッチングデバイス（１）が、好ましくはタグスイッチ（４０）によって、タグ付けされたヘッダ（１１）からヘッダタグ（３０）を取り除き、それによって、データパケットをタグ付けされたヘッダ（１１）にしたがって仮想サブエンジン（２４）にスイッチングする前に元のヘッダ（１０）を提供する、請求項５に記載のスイッチングデバイス（１）。
【請求項１３】
制御ユニット（７）および／または２つ以上の仮想サブエンジン（２１、．．．、２９）のそれぞれが、少なくとも１つの中央演算処理装置を含む、請求項５に記載のスイッチングデバイス（１）。
【請求項１４】
制御ユニット（７）が、ハードウェアの手段によってハッシュ関数（３００）および／または少なくとも１つのフィルタリング操作（５０）を提供する、請求項５に記載のスイッチングデバイス（１）。
【請求項１５】
制御ユニット（７）、および／または仮想サブエンジン（２１、．．．、２９）の中の１つまたは複数が、通信バス（５、５１）によって相互接続され、仮想サブエンジン（２１、．．．、２９）のそれぞれが、ハッシュタグ（１０）が、仮想サブエンジン（２４）が受信されたデータパケットのさらなる処理のために指定されていることを示す場合に、通信バス（５、５１）を介して受信されたデータパケットを処理するように構成される、請求項５に記載のスイッチングデバイス（１）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット交換通信ネットワークにおいて複数のデータパケットを処理するための方法、および対応するスイッチングデバイスに関する。
【背景技術】
【０００２】
近年、パケット交換通信サービスに関連するデータパケットおよび／または通信パケットが、急速に数を増している。その結果、パケット交換通信ネットワーク上の負荷が、同様に増加している。さらに、パケット交換通信ネットワークによってサポートされるリアルタイムサービスに関連するデータパケットの部分も、増加している。ボイスオーバーＩＰサービス、テレビ会議サービス、マルチユーザオンラインゲームサービスなどのようなリアルタイムサービスは、リアルタイムサービスに関連するデータパケットの順序付けられたおよび高速な送受信を必要とする時間的制約が厳しいサービスである（ＩＰ＝インターネットプロトコル）。しかし、スイッチ、ブリッジ、ルータ、ゲートウェイなどのスイッチングデバイスが、パケット交換通信ネットワークが送信元ノードから送信先ノードまでつながりのあるデータパケットをルーティングするのを支援する。送信元ノードおよび送信先ノードは、パケット交換通信ネットワークに属する。そのため、スイッチングデバイスの負荷が、過剰に大きくなる可能性がある。さらなる問題として、パケットに基づくリアルタイムサービスのＱｏＳが、低下する可能性がある（ＱｏＳ＝サービス品質）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、パケット交換通信ネットワークにおいて複数のデータパケットを処理するための改善された方法を提供することである。さらに、パケット交換通信ネットワークにおいて通信パケットをスイッチングするための改善されたスイッチングデバイスを提供することが、本発明の目的である。
【課題を解決するための手段】
【０００４】
本発明の目的は、少なくとも１つのスイッチングデバイスを含むパケット交換通信ネットワークにおいて複数のデータパケットを処理するための方法であって、少なくとも１つのスイッチングデバイスの制御ユニットが、通信ネットワークを介して交換される通信パケットのヘッダを含むデータパケットを受信し、制御ユニットが、ヘッダに対して少なくとも１つのフィルタリング操作を適用し、それによってフィルタリングされた情報を生成し、制御ユニットが、ハッシュ関数にしたがって、フィルタリングされた情報をハッシュタグに写像し、制御ユニットが、データパケットのヘッダにハッシュタグを挿入することによってタグ付けされたヘッダを提供し、制御ユニットが、データパケットのさらなる処理のために、データパケットをタグ付けされたヘッダにしたがってスイッチングデバイスの２つ以上のサブエンジンの中のサブエンジンに送信する、方法によって達成される。また、本発明の目的は、パケット交換通信ネットワークにおいて通信パケットをスイッチングするためのスイッチングデバイスであって、２つ以上のサブエンジン、および制御ユニットを含み、制御ユニットが、通信ネットワークを介して交換される通信パケットの中の１つの通信パケットのヘッダを含むデータパケットを受信し、ヘッダに対して少なくとも１つのフィルタリング操作を適用し、それによってフィルタリングされた情報を生成し、ハッシュ関数にしたがって、フィルタリングされた情報をハッシュタグに写像し、データパケットのヘッダにハッシュタグを挿入することによってタグ付けされたヘッダを提供し、データパケットのさらなる処理のために、データパケットをタグ付けされたヘッダにしたがって２つ以上のサブエンジンの中のサブエンジンに送信するように構成される、スイッチングデバイスによって達成される。
【０００５】
通信パケットという用語は、データパケットという用語の代わりとして同じ意味で使用され得る。しかし、概して、通信パケットは、データパケットに関連する通信サービスのデータパケットである可能性がある。
【０００６】
本発明によって、データパケットの内容および／またはデータパケットに関連するデータトラフィックフローの明確なまたは完全な知識なしに、すなわち不完全な知識で、さらなる処理のためにデータパケットをサブエンジンに送信することができる。データパケットに関連するデータトラフィックフローは、順序付けられた要素を含む５つの要素の組によって特定される可能性があり、それらの要素とは、連続的に並んだＩＰ送信元アドレス、ＩＰ送信先アドレス、ＩＰ送信元ポート、ＩＰ送信先ポート、およびトランスポートプロトコルの種類である。特に、データパケットの内容および／またはデータパケットに関連するデータトラフィックフローのこの不完全な知識は、いかなるアドレス情報、例えば、ＩＰ送信元アドレスもしくはＩＰ送信先アドレス、プロトコル識別子、または送信元ポートもしくは送信先ポートのようなその他のＩＰアドレスに関連する情報も含まない可能性がある。ハッシュ関数によって写像されるフィルタリングされた情報に対応するハッシュタグ、すなわちハッシュ値は、さらなる処理のためのサブエンジンを示す識別子またはラベルとして使用される擬似乱数である可能性があるか、またはそのような擬似乱数と類似している。同じハッシュタグに関連するデータパケットは、さらなる処理のための同じサブエンジンに送信され得る。これによって、本発明の実施形態は、そのデータパケットのヘッダおよび／またはそのデータパケットの内容にしたがった、データパケットのさらなる処理、例えば、データパケットのスイッチングおよび／またはルーティングのためのサブエンジンへのデータパケットの簡単なルーティングを提供する。その結果、本発明の実施形態は、基本的に２つのステップに分けられた複数のデータパケットのスイッチングを提供し、第１のステップにおいて、簡単な方法、すなわち、計算および演算が高速な方法で、場合によってはいかなる評価もせずに、どのサブエンジンが第２のステップでデータパケットのスイッチングを実行するかを示すハッシュタグが提供される。特に、本発明の実施形態は、前記第１のステップ中、データパケットの状態、データパケットに関連するシグナリングおよび／もしくはプロトコル、データパケットに関連するアドレス指定、ならびに／またはデータパケットに関連するデータトラフィックフローを知らない可能性がある。
【０００７】
概して、２つ以上のサブエンジンは、並列処理コンピュータおよび／またはネットワークコンピューティングクラスタのラックマウント処理ノードのような１つまたは複数の処理コアを有する中央演算処理装置である可能性がある。サブエンジンは、巨大な並列処理アーキテクチャの処理ユニットである可能性もある。例えば、巨大な並列処理アーキテクチャは、少なくとも１００個の処理コアおよび／または処理ノード、好ましくは１２８から１０４８５７６個の処理コアおよび／または処理ノードをそれぞれ有する巨大な並列プロセッサ、巨大な並列コンピュータ、および／または並列コンピューティングクラスタである。２０ビットのＭＰＬＳタグ（ＭＬＰＳ＝マルチプロトコルラベルスイッチング）を用いて最大１０４８５７６個の処理コアおよび／または処理ノードをアドレス指定することができ、そのような場合、２０ビットは、２２０＝１０４８５７６個の異なるアドレスに相当する。サブエンジンは、データパケットのさらなる処理のための、ハッシュタグおよび／またはデータパケットに関連するデータを含むデータベースに接続され得る。本発明による実施形態は同じハッシュタグに関連付けられたおよび／または同じハッシュタグでラベル付けされたデータパケットを同じサブエンジンに送信することができるので、サブエンジンは、ハッシュタグおよび／または処理される１つもしくは複数のデータパケットに関連するデータをほとんど更新しない。ゆえに、データベースは、ハッシュタグおよび／または処理される１つもしくは複数のデータパケットに関連するデータを更新する、好ましくは提供するためにほとんどアクセスされず、好ましくは一度しかアクセスされない。結果として、本発明の実施形態は、２つ以上のサブエンジンの数に関するスケーラビリティを高める。
【０００８】
そのため、本発明の実施形態は、大量のトラフィック、すなわちデータトラフィックフローが処理されなければならず、スケーラビリティの問題が、システムの拡張、またはデータトラフィックフローの認識のような新しい特徴の導入を妨げる場合に、スケーラビリティを改善することができる。
【０００９】
本発明の実施形態は、例えば、巨大な並列処理アーキテクチャにおける複雑性および個々の処理コアに対する負荷が、ハッシュおよび／またはスイッチングの後に利用可能な処理コアの総数によって与えられる部分に制限されることを規定することができる。特に、本発明の実施形態は、純粋な負荷分散のため、個々のデータトラフィックフローのステートフルな挙動を可能にする、負荷および複雑性のプロトコルに依存しない分散のため、ならびに／またはサブエンジンの負荷、複雑性、および機能範囲の削減のために使用され得る。
【００１０】
本発明の実施形態がサブエンジンの負荷、複雑性、および機能範囲の削減のために使用される場合、そのような使用は、実施形態を２つ以上のステップで段階的に行うことによって達成されることができ、第１のステップは、さまざまな機能を得るための関連するパケットヘッダの情報要素を使用してハッシュ分散（ｈａｓｈ−ｄｉｓｔｒｉｂｕｔｉｏｎ）を生成する。ハッシュ関数は、ハッシュ関数によってもたらされる分散である可能性があるか、または特別なハッシュ関数である可能性がある。その後のステップは、一群の機能に属するフローをさまざまなサブエンジンに分散することによってスケーラビリティを維持する。そのような使用は、「何」が定義および／または決定されているかの前にヘッダ構造内の「どこ」に重要な情報があるかを知ることのみによって専用のサブエンジンにディスパッチされ得るデータトラフィックフローの特別な処理が理由で、ネットワーク装置に将来にわたって安心なアーキテクチャをもたらすアプリケーションの有効化（ａｐｐｌｉｃａｔｉｏｎ  ｅｎａｂｌｅｍｅｎｔ）にとって重要である。
【００１１】
本発明に関連するハッシュ関数という用語は、一般的な意味での機能として使用され得ることが理解されるであろう。好ましくは、ハッシュ関数は、１つまたは複数の１次元または多次元の値をそれぞれハッシュ値の集合にまたはハッシュ値の集合上に全射写像する。１つまたは複数の１次元または多次元の値は、ハッシュ関数の入力値と呼ばれることもある。ハッシュ関数は、所与の入力値を、ハッシュ値の集合の元であるハッシュ値である出力値に写像する。ハッシュタグという用語が、ハッシュ関数の出力値に対して使用され得る。さらに、入力値の集合の濃度は、集合のハッシュ値または出力値の集合の濃度と少なくとも同じ大きさである。
【００１２】
制御ユニットは、２つ以上のサブエンジンの中のサブエンジンである可能性がある。
【００１３】
本発明によるスイッチングデバイスの実施形態は、好ましくは、スイッチ、ブリッジ、ルータ、ゲートウェイ、コアおよび／またはエッジデバイスなどを含む。
【００１４】
さらなる利点が、従属請求項によって示される本発明の実施形態によって達成される。
【００１５】
本発明の好ましい実施形態によれば、ヘッダからの情報をフィルタリングするための少なくとも１つのフィルタリング操作が、行われ得る。好ましくは、制御ユニットが、ヘッダからの情報をフィルタリングするための少なくとも１つのフィルタリング操作を行う。少なくとも１つのフィルタリング操作は、識別子をフィルタリングする。識別子は、複数のデータパケットに関連する１つまたは複数のデータトラフィックフローの中のデータトラフィックフローへのデータパケットの関連付けを示す。ハッシュ関数は、前記識別子を含むフィルタリングされた情報を、好ましくは自然数である数ｋに写像する。制御ユニットが、フィルタリングされた情報を写像するためのハッシュ関数を提供および／または実行する可能性がある。数ｋは、自然数の区間［ｍ，．．．，Ｍ］の元である。自然数ｍは、最小値である。好ましくは、最小値ｍ＝１である。Ｍは、Ｍ＜ＮまたはＭ＝Ｎである最大値である。Ｎは、２つ以上のサブエンジンの数である。特に、最小数ｍおよび最大数Ｍは、区間［ｍ，．．．，Ｍ］内の数の最小数および最大である可能性がある。区間［ｍ，．．．，Ｍ］の濃度は、複数のデータパケットの異なるデータトラフィックフローに関連するデータパケットをタグ付けされたヘッダにしたがって２つ以上のサブエンジンの中の異なるサブエンジンに送信するために、１つまたは複数のデータトラフィックフローの数以上であることが好ましい。
【００１６】
特に、２つ以上のサブエンジンは、数１から始まり、２つ以上のサブエンジンの数である数Ｎで終わることが好ましい番号付け、インデックス付け、および／またはラベル付けをされる可能性がある。その結果、数ｋを含むハッシュタグは、データパケットがさらなる処理のためにどのサブエンジンに送信される必要があるかという情報として使用され得る。数ｋは、フィルタリングされた情報を写像するためのハッシュ関数によって生成される。この数、インデックス、および／またはラベルは、ＭＰＬＳタグまたはＶＬＡＮタグであるアドレスにそれぞれ対応する可能性がある（ＶＬＡＮ＝仮想ローカルエリアネットワーク）。ハッシュタグは、ＭＰＬＳタグまたはＶＬＡＮタグとして使用され得る。
【００１７】
好ましくは、複数のデータパケットの中のデータパケットが、１つまたは複数のデータトラフィックフローに割り当てられる。制御ユニットは、１つまたは複数のデータトラフィックフローの中の同じデータトラフィックフローに関連するデータパケットを、同じデータトラフィックフローに関連するデータパケットのさらなる処理のために、タグ付けされたヘッダにしたがって２つ以上のサブエンジンの中の同じサブエンジンに送信することができる。少なくとも１つのフィルタリング操作が、ヘッダからの情報をフィルタリングするために、好ましくは制御ユニットによってもたらされる。少なくとも１つのフィルタリング操作は、１つまたは複数のデータトラフィックフローの中のデータトラフィックフローへのデータパケットの関連付けを示す識別子をフィルタリングするように構成され得る。
【００１８】
本発明の好ましい実施形態によれば、サブエンジンは、受信されたデータパケットのさらなる処理のために制御ユニットからデータパケットを受信する。サブエンジンは、当該サブエンジンのメモリが受信されたデータパケットおよび／またはハッシュタグに関連するデータを保持していない場合、受信されたデータパケットのさらなる処理のために、受信されたデータパケットおよび／またはハッシュタグに関連するデータを保持するデータベースにアクセスする。サブエンジンは、ヘッダ、受信されたデータパケットおよび／もしくはハッシュタグに関連するデータ、ならびに／または受信されたデータパケットのペイロードを使用することによって受信されたデータパケットを処理する。
【００１９】
サブエンジンは、受信されたデータパケットの処理に必要なデータを獲得するために、受信されたデータパケットおよび／またはハッシュタグに関連するデータを保持するデータベースにアクセスする可能性がある。好ましくは、サブエンジンは、サブエンジンがハッシュタグに関連する受信されたデータパケットを処理するかまたはさらに処理するときに最初だけまたは毎回データベースにアクセスする。データベースが最初だけアクセスされる場合、ネットワークの負荷および／またはデータベースに対する負荷が、スイッチングデバイスのサブエンジンの数のスケーラビリティを同時に向上させながら削減され得る。
【００２０】
本発明の好ましい実施形態によれば、サブエンジンは、受信されたデータパケットのさらなる処理のために制御ユニットからデータパケットを受信する。サブエンジンは、タグ付けされたヘッダからハッシュタグを取り出す。サブエンジンは、ハッシュタグが、当該サブエンジンが受信されたデータパケットのさらなる処理のために指定されていることを示す場合、受信されたデータパケットを処理する。ハッシュタグは、サブエンジンが受信されたデータパケットのさらなる処理のために指定されていることを数値によって示すことが好ましい。数値は、２つ以上のサブエンジンの数以下である可能性がある。
【００２１】
本発明の好ましい実施形態によれば、フィルタリングされた情報は、グループのインターネットプロトコル送信元アドレス、インターネットプロトコル送信先アドレス、インターネットプロトコル送信元ポート、インターネットプロトコル送信先ポート、トランスポートプロトコルの種類、およびサービスタイプビットから選択された１つまたは複数の情報要素を含む。フィルタリングされた情報は、インターネットプロトコル送信元アドレス、インターネットプロトコル送信先アドレス、インターネットプロトコル送信元ポート、インターネットプロトコル送信先ポート、およびサービスタイプビットを含む５つの要素の組で構成される可能性もある。
【００２２】
好ましくは、サービスタイプビットは、ＩＰヘッダ内の８ビットを含む。サービスタイプビットは、１つまたは複数の下位フィールドに分割され得る。これらの下位フィールドは、優先度ビット、低遅延要求ビット、高スループット要求ビット、高信頼性要求ビット、低コスト要求ビット、および／または明示的輻輳通知（Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ）ビットの群の中の１つまたは複数の情報要素を提供することができる。優先度ビットは、ｒｏｕｔｉｎｅ、ｐｒｉｏｒｉｔｙ、ｉｍｍｅｄｉａｔｅ、ｆｌａｓｈ、ｆｌａｓｈ  ｏｖｅｒｒｉｄｅ、ｃｒｉｔｉｃａｌ、ｉｎｔｅｒｎｅｔｗｏｒｋ  ｃｏｎｔｔｏｌ、またはｎｅｔｗｏｒｋ  ｃｏｎｔｒｏｌに設定され得る。しかし、８ビットの中の最初の６ビットはＤＳＣＰである可能性もある（ＤＳＣＰ＝差別化サービスコードポイント（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｓｅｒｖｉｃｅ  Ｃｏｄｅ  Ｐｏｉｎｔ））。サービスタイプビットは、データパケットが割り当てられ得るサービスクラスの種類を特定するために使用されることができる。
【００２３】
本発明の好ましい実施形態によれば、ハッシュ関数は、モジュロｐ関数を含む。数ｐは、ｐ＜Ｎまたはｐ＝Ｎである数であり、Ｎは、２つ以上のサブエンジンの数である。数ｐは、素数である可能性がある。数ｐは、素数ではない可能性もある。数ｐは、Ｎの次に小さい素数であることが好ましい。Ｎの次に小さい素数である数ｐが使用される場合、処理負荷が、２つ以上のサブエンジンの間に最適に分散され得る。ｐ＜Ｎである場合、１つまたは複数の、好ましくはＮ−ｐ個のサブエンジンは、データパケットをさらに処理しない可能性がある。ｐ＞Ｎである場合、１つまたは複数の、好ましくはｐ−Ｎ個のサブエンジンが、２つ以上のハッシュタグに関連するデータパケットをさらに処理することが好ましい。
ハッシュ関数は、多項式の除算を含む関数である可能性もある。ハッシュ関数は、フィルタリングされた情報のサイズ、特に、その情報のビット長に適合される。ハッシュ関数は、ＣＲＣ関数である可能性がある（ＣＲＣ＝巡回冗長検査）。ＣＲＣ関数の種類が、フィルタリングされた情報のサイズ、特にその情報のビット長に応じて決まることが好ましい。ＣＲＣ関数は、ソフトウェアの手段によって、またはハードウェアの手段によって実装され得る。特に、ＣＲＣ関数は、高速なハードウェアソリューションで、フィルタリング操作の大きなフィルタリング結果に対するハッシュタグを計算するために好ましい。
【００２４】
さらに、モジュロｐ関数は、整数を数ｐで割る整数の除算の余りを結果として返す好ましくは数学的な関数である可能性がある。モジュロｐ関数は、任意の整数ｊを区間［０，．．．，ｐ−１］の数ｋに写像することができる。そのような場合、モジュロｐ関数はｍｏｄ（ｊ，ｐ）と表記されることができ、結果または戻り値はｍｏｄ（ｊ，ｐ）＝ｋによって与えられ、区間［０，．．．，ｐ−１］の濃度は数ｐに等しい。この場合、好適なハッシュ関数ｈは、２つ以上のサブエンジンの中の第１のサブエンジンが数１を付番され得るのでｈ（ｊ）＝１＋ｍｏｄ（ｊ，ｐ）によって与えられる可能性がある。好ましくは、数ｐは、数Ｎよりも大きい場合、モジュロｐ関数が、整数ｊ’を２つ以上のサブエンジンの数Ｎよりも大きい数ｋ’に写像する可能性があり、その結果、数ｋ’がデータパケットのさらなる処理のためのサブエンジンを直接示すハッシュタグとしては適さないので、数Ｎ以下であることが好ましい。
【００２５】
本発明の好ましい実施形態によれば、ハッシュ関数は、フィルタリングされた情報を数ｋに写像するように構成される。数ｋは、自然数の区間［ｍ，．．．，Ｍ］の元である。自然数ｍは、最小値である。好ましくは、最小値ｍ＝１である。Ｍは、Ｍ＜ＮまたはＭ＝Ｎである最大値であり、Ｎは、２つ以上のサブエンジンの数である。特に、最小数ｍおよび最大数Ｍは、それぞれ、区間［ｍ，．．．，Ｍ］内の数の最小数および最大である可能性がある。
【００２６】
本発明の好ましい実施形態によれば、ハッシュ関数は、ハッシュ関数のすべての値がハッシュ関数の最小値と最大値の間に均等に分散されるようにして構成される。したがって、２つ以上のサブエンジンの使用を負荷分散することができる。
【００２７】
本発明の好ましい実施形態によれば、制御ユニットは、それによってフィルタリングされた情報を生成するために、ヘッダに対して連続的に適用するための２つ以上のフィルタリング操作を適用するように構成される。２つ以上の好ましくは簡単なフィルタリング操作の連続的な適用は、フィルタリングされた操作を生成するための制御ユニットの実行時間を改善することができる。２つ以上のフィルタリング操作の連続的な適用は、単一の好ましくは複雑なフィルタリング操作によって置き換えられ得る。この場合、簡単なという用語は、フィルタリング操作が削減された量のソフトウェアおよび／またはハードウェアの作業で実現され得ることを意味し、一方、この場合、複雑なという用語は、フィルタリング操作が多量のソフトウェアおよび／またはハードウェアの作業で実現され得ることを意味する。したがって、２つ以上の簡単なフィルタリング操作の連続的な適用は、フィルタリングされた操作を生成するための制御ユニットの実行時間を、２つ以上の簡単なフィルタリング操作と同等の１つの複雑なフィルタリング操作の使用よりも少なくすることができる。
【００２８】
特に、関数のそれぞれの実行時間を測定することによって、機能、例えばハッシュ関数、フィルタリング操作、タグスイッチ、および／またはデータパケットのスイッチングのようなスイッチング操作のソフトウェアおよび／またはハードウェアの作業の量を測定または判定することができる。機能の多量のソフトウェアおよび／またはハードウェアの作業は、別の機能の実行時間よりも長い、機能のそれぞれの長い実行時間に対応する。この場合、別の機能のソフトウェアおよび／またはハードウェアの作業の量は、当該機能の実行時間よりも短い別の機能のそれぞれの実行時間に対応し、別の機能のソフトウェアおよび／またはハードウェアの作業の量は、削減された量のソフトウェアおよび／またはハードウェアの作業である。例えば、機能、例えば、ハッシュ関数、フィルタリング操作、タグスイッチ、および／またはデータパケットのスイッチングのようなスイッチング操作のソフトウェアおよび／またはハードウェアの作業の量が前もって決定された場合、スイッチングデバイスのスケーラビリティおよび／またはデータパケットのスループットまたは帯域幅を最適化および／または改善することができる。
【００２９】
好ましくは、フィルタリングされた情報を生成するためのヘッダに対する連続的な適用のための２つ以上のフィルタリング操作が制御ユニットによって適用される場合、制御ユニットは、フィルタリングされた情報の１つまたは複数の要素を生成するように構成される。２つ以上のフィルタリング操作のそれぞれに関して、フィルタリングされた情報のそれぞれの要素が生成される可能性がある。制御ユニットは、フィルタリングされた情報の要素の中の１つもしくは複数に、またはフィルタリングされた情報の要素のそれぞれに１つまたは複数の中間的なハッシュ関数を適用するように構成される。したがって、これらの１つまたは複数の中間的なハッシュ関数の結果も、生成されたフィルタリングされた情報、または生成されたフィルタリングされた情報の一部とみなされ得る。次に、ハッシュ関数が、生成されたフィルタリングされた情報、および／または生成されたフィルタリングされた情報の一部に適用される。１つまたは複数の中間的なハッシュ関数は、ハッシュ関数と同様である可能性がある。好ましくは、１つまたは複数の中間的なハッシュ関数は、モジュロｐ関数である、および／またはハッシュ関数と同じかもしくは同様の特徴を有する可能性がある。ハッシュ関数の特徴は、既に説明された。１つまたは複数の中間的なハッシュ関数も、２つ以上のフィルタリング操作および／または１つのフィルタリング操作の機能と解釈され得る。１つまたは複数の中間的なハッシュ関数は、ＣＲＣ関数である可能性もある。
【００３０】
好ましくは、サブエンジンの数が、ハッシュ関数によって実現されるハッシュ法と完全に合致し、サブエンジンの中の２つ以上、好ましくはすべての間の負荷分散が、外部から制御され得るようにして実行される場合、ハッシュテーブルが、ハッシュタグの計算とサブエンジンのアドレス指定の間に挿入されることが好ましい。ハッシュタグは、本発明の実施形態に応じて、テーブルの入力データまたは出力データである可能性がある。ハッシュ関数の結果がタグ、および、ひいては入力データ、例えば、テーブルの検索キーまたはインデックスとして使用される場合、ハッシュテーブルは、サブエンジンを１つまたは複数のタグに割り当てるようにしてスイッチングテーブルによって直接実現され得る。そのような実施形態は、データパケットに関連する異なるデータトラフィックフローの数Ｔがサブエンジンの数Ｎよりも大きく、さらに、ハッシュ関数としてのモジュロｐ関数が使用され、Ｔ＞ｐ＞ＮまたはＴ＞＞ｐ＞＞Ｎである場合に好ましい。
【００３１】
本発明の好ましい実施形態によれば、スイッチングデバイスは、タグスイッチを含む。タグスイッチは、データパケットをタグ付けされたヘッダにしたがってサブエンジンにスイッチングする。タグスイッチは、スイッチングデバイスの制御ユニットおよび／またはさらなるエンティティもしくはデバイスの機能であることが好ましい。タグスイッチの機能は、ソフトウェアの手段および／またはハードウェアの手段によって部分的にまたは完全に実現され得る。
【００３２】
本発明の好ましい実施形態によれば、スイッチングデバイスは、タグ付けされたヘッダからヘッダタグを取り除く。好ましくは、タグスイッチが、タグ付けされたヘッダからヘッダタグを取り除く。これにより、元のヘッダが、データパケットをタグ付けされたヘッダにしたがってサブエンジンにスイッチングする前に提供される。さらに、２つ以上のサブエンジンを、ヘッダの代わりにタグ付けされたヘッダを含むデータパケットのさらなる処理のために構成する必要がない可能性がある。
【００３３】
本発明の好ましい実施形態によれば、制御ユニットおよび／または２つ以上のサブエンジンのそれぞれが、少なくとも１つの中央演算処理装置を含む。制御ユニット、および／または２つ以上のサブエンジンの中のサブエンジンは、メモリ、キャッシュメモリ、通信手段、および入力／出力ユニットの群の中の１つまたは複数のさらなるデバイスを含む可能性がある。
【００３４】
本発明の好ましい実施形態によれば、制御ユニットは、ハードウェアの手段によってハッシュ関数および／または少なくとも１つのフィルタリング操作を提供する。
【００３５】
好ましくは、グループ制御ユニット、ハッシュ関数、少なくとも１つのフィルタリング操作、２つ以上のサブエンジンの中の１つもしくは複数のサブエンジン、およびタグスイッチの中の１つまたは複数のエンティティは、ソフトウェアの手段および／またはハードウェアの手段によって提供される。タグスイッチは、データパケットをタグ付けされたヘッダにしたがってサブエンジンにスイッチングする。
【００３６】
本発明の好ましい実施形態によれば、制御ユニット、および／またはサブエンジンの中の１つもしくは複数は、通信バスによって相互接続される。例えば、制御ユニット、および／または２つ以上のサブエンジンの中の１つもしくは複数のサブエンジンは、イーサネット（登録商標）、インフィニバンド、無線ネットワーク技術、および光ファイバに基づくネットワーク技術の群の中の１つまたは複数の技術によって相互接続される。制御ユニット、および／または２つ以上のサブエンジンの中の１つもしくは複数のサブエンジンを相互接続する通信バスは、シリアルバスまたはパラレルバスである。スイッチングデバイスは、通信手段を含み得る。通信手段は、高速なインターフェースであることが好ましい１つまたは複数のインターフェースであるか、またはそのようなインターフェースを含む可能性がある。通信バスは、少なくとも１０Ｇｂｉｔ／ｓである可能性がある高帯域幅を提供し得る。特に、１つまたは複数のインターフェースのそれぞれは、少なくとも１０Ｇｂｉｔ／ｓである可能性がある高帯域幅を提供することができる。通信バスは、１つまたは複数のインターフェースを含む通信手段によって処理されるデータパケットの集約されたトラフィックを搬送するのに十分な大きな帯域幅を提供するために少なくとも１または１０Ｔｂｉｔ／ｓを提供することができることが好ましい。
【００３７】
２つ以上のサブエンジンは、並列処理ユニット、特に巨大な並列処理ユニットによって提供されるおよび／または構成されることが好ましい。
【００３８】
グループ制御ユニット、通信手段、データベース、および２つ以上のサブエンジンを含む並列処理ユニットの中の少なくとも２つのエンティティが、第１の通信バスを介して互いに相互接続される可能性がある。好ましくは、通信手段は、少なくとも１つのインターフェースを含む。さらに、第２の通信バスが、２つ以上のサブエンジンの中の少なくとも２つまたはそれぞれを互いに相互接続する可能性がある。第１の通信バスは、第２の通信バスと相互接続される可能性がある。上述のように、第１の通信バスおよび／または第２の通信バスを実現するために使用され得る好ましい技術は、イーサネット、インフィニバンド、無線ネットワーク技術、および光ファイバに基づくネットワーク技術の群の中の１つまたは複数の技術である。
【００３９】
好ましくは、ハッシュタグが、ＭＰＬＳタグとしておよび／またはＶＬＡＮタグとしてヘッダに挿入される。ハッシュタグは、データパケットのヘッダのＭＰＬＳタグにおよび／またはＶＬＡＮタグに挿入される可能性もある。
【００４０】
制御ユニットが、サブエンジンの機能を提供することもできる。したがって、制御ユニットは、データパケットのさらなる処理のためのサブエンジンとして動作することができる可能性がある。
【００４１】
本発明の主な考えをまとめると、以下、すなわち、本発明による実施形態は、上述のように、例えばスイッチングおよび／またはルーティングのための１万から数１０万個のサブエンジンを含むことが好ましい巨大な並列アーキテクチャを使用してやはり適用可能である、ということになる。複数のデータパケットを処理する方法を使用する場合、スケーリングが改善され得る。方法は、個々のコア、すなわちサブエンジンの間で負荷だけでなく複雑性も分散される場合にのみ改善されたスケーリングをする。フロー毎のタグ付け、すなわちデータパケットフローのタグ付けを実行するユニットへのタスク、すなわち処理の移動は、すべての複雑性がタグ付けデバイスに移されるので、問題の次善の解決策であるに過ぎない。しかし、本発明による実施形態は、基本的に２ステップの手法によってこのジレンマを解決し、第１のステップにおいて、１つまたは複数のヘッダまたはヘッダ要素の関連するビットが、フィルタリングされる。負荷全体が分散されるコアまたはサブエンジンの数に対応するこの情報からのハッシュ、すなわちハッシュタグが、生成される。ハッシュタグは、ラベルとして使用され、データパケットに挿入される。第２のステップにおいて、データパケットが、さらなる処理、例えば、最終的なルーティングおよび／またはスイッチングの決定のために、ハッシュタグによってそれぞれアドレス指定されたコアまたはサブエンジンにスイッチングされる。
【００４２】
本発明の実施形態は、スケーラビリティを改善する。ハッシュが、それぞれ、フィルタリングされたビットの内容を知らずに動作する「無知な（ｄｕｍｂ）」アルゴリズムであるか、またはハッシュ関数が、それぞれ、フィルタリングされたビットの内容を知らずに動作する「無知な」アルゴリズムを提供し、擬似乱数と同様の出力を生成した。ハッシュアルゴリズムが動作対象とするビットが、例えば、ＴＴＬ（ＴＴＬ＝生存時間）またはシーケンス番号フィールドを避けること、ならびにフロー、特にデータトラフィックフローおよび／またはコネクション毎の静的な情報のみを使用することによってうまく選択される場合、フローおよび／またはコネクションに属するすべてのデータパケットが、それぞれ、同じコア、すなわちサブエンジンに渡されることができる。ハッシュは、フィルタリングされた情報、特にフィルタリングされたヘッダ情報に対して動作し、したがって、「どこを見るべきか」のみを考慮し、「データパケットの中身の情報が何か」は考慮しない。よって、ハッシュタグによってアドレス指定されたコア、すなわちサブエンジンは、すべてのフロー、特にデータトラフィックフローの限られた一部のみを処理する可能性がある。段階またはフィルタリング操作毎に異なるフィルタリング規則を使用することによる段階的処理は、ディスパッチされたプロトコルの詳細な知識を持たずに、個々のコア、すなわちサブエンジンへのデータパケットのプロトコルまたはサービスに特有の分散をもたらすことができる。そのとき、それに応じて、コアまたはサブエンジンは、特定のジョブに集中することができる。ハッシュタグの挿入の位置としてのＶＬＡＮタグが使用される場合、ファンアウト（ｆａｎ−ｏｕｔ）は、１２ビットがハッシュタグの挿入のために使用され得るので最大で１：４０９６コアまたはサブエンジンに達する可能性があり、このファンアウトは、計算のために利用可能な巨大な並列プロセッサのスケールに相当する。ＭＰＬＳラベルは、２０ビットがハッシュタグの挿入のために使用され得るので１：１０４８５７６コアまたはサブエンジンのファンアウトを提供する。
【００４３】
本発明のこれらのおよびさらなる特徴および利点は、添付の図面と併せて考慮される今現在好ましい例示的な実施形態の以下の詳細な説明を読むことによってより深く理解されるであろう。
【図面の簡単な説明】
【００４４】
【図１】スイッチングデバイスの好ましい実施形態の図である。
【図２】複数のデータパケットを処理する方法の好ましい実施形態の流れ図である。
【発明を実施するための形態】
【００４５】
図１は、スイッチングデバイス１の好ましい実施形態の図を示す。スイッチングデバイス１は、以下のエンティティ、すなわち、並列処理ユニット２、通信手段３、第１の通信バス５、データベース６、および制御ユニット７を含む。これらのエンティティは、単一の筐体（図示せず）内に設けられ得るか、またはこれらのサブデバイスの中のそれぞれ１つまたは複数を含む１つまたは複数のサブデバイス（図示せず）によって提供され得る。第１の通信バス５は、例えば、少なくとも１０Ｇｂｉｔ／ｓの高帯域幅を提供するシリアルバスまたはパラレルバスであることが好ましい。スイッチングデバイス１は、パケット交換通信ネットワーク（図示せず）のエンティティである。パケット交換通信ネットワークは、コア通信ネットワーク、エッジおよび／もしくはアクセス通信ネットワーク、電気通信ネットワーク、有線に基づく通信ネットワーク、無線通信ネットワーク、ならびに／または電力線通信ネットワークである可能性がある。
【００４６】
スイッチングデバイス１はさらなる通信バスを含む可能性があり、その結果、第１の通信バス５およびさらなる通信バスが２つの通信経路を提供し、これら２つの通信バスの中の一方が、並列処理ユニット２のＮ個のサブエンジン２１、．．．、２９の間でデータパケットを転送し、これら２つの通信バスの中の他方が、システム制御データ、および／またはデータベース６によって提供され得るデータパケットに関連するデータを転送する。よって、これら２つの通信バスの中の他方は、制御バスとして動作する可能性があり、第１の通信バス５は、データパケットのスイッチングおよび／または処理に指定される。
【００４７】
並列処理ユニット２は、Ｎ個のサブエンジン２１、．．．、２９を含む。好ましくは、Ｎは少なくとも２５６である。Ｎ個のサブエンジン２１、．．．、２９は、順次、数１、．．．、Ｎでラベル付けされる。Ｎ個のサブエンジン２１、．．．、２９は、第２の通信バス５１によって相互接続される。第２の通信バス５１は、例えば、少なくとも１０Ｇｂｉｔ／ｓの高帯域幅を提供するシリアルバスまたはパラレルバスであることが好ましい。Ｎ個のサブエンジン２１、．．．、２９の中のそれぞれのサブエンジンは、少なくとも、中央演算処理装置と、メモリと、キャッシュメモリと、第２の通信バス５１を介して、および好ましくは第１の通信バス５を介して通信するための通信手段とを提供する。さらに、Ｎ個のサブエンジン２１、．．．、２９の中のそれぞれのサブエンジンは、データパケットのスイッチングを実行するように構成される。特に、Ｎ個のサブエンジン２１、．．．、２９の中のそれぞれのサブエンジンは、データパケットのディープパケットインスペクションを実行し、ならびに／またはデータパケットのヘッダを評価および操作するように構成され得る。好ましくは、並列処理ユニット２は並列プロセッサであり、並列プロセッサの１つまたは複数の処理コアがＮ個のサブエンジン２１、．．．、２９を提供する。
【００４８】
通信手段３は、少なくとも１つのインターフェース３１、．．．、３５を含む。例えば、通信手段は、ポートとして動作することができる４８個のインターフェースを含む。通信手段３は、少なくともＯＳＩレイヤー２または３にしたがって通信するための機能およびそれぞれのプロトコルおよびプロトコルスタックを少なくとも提供する（ＯＳＩ＝開放型システム間相互接続参照モデル）。インターフェース３１、．．．、３５のそれぞれは、例えば、少なくとも１Ｇｂｉｔ／ｓの高帯域幅を提供する。
【００４９】
第１の通信バス５は、並列処理ユニット２、通信手段３、データベース６、および制御ユニット７を互いに相互接続する。並列処理ユニット２は、第２の通信バス５１によって第１の通信バス５と相互接続される。
【００５０】
データベース６は、複数のデータパケットのスイッチングに関連するデータを保持する。好ましくは、データベース６は、中央演算処理装置と、１つまたは複数のハードディスクまたはソリッドステートディスクのようなストレージ手段と、第１の通信バス５を介して通信するための通信手段とを含む。データベース６によって保持されるデータは、複数のデータパケットをスイッチングするために有用な、例えばリアルタイムサービスのデータトラフィックフローの状態情報、または通信セッション情報を提供する追加的なデータを含み得る。データトラフィックフローは、複数のデータパケットの中のデータパケットに関連付けられる。例えば、データトラフィックフローは、ボイスオーバーＩＰセッション、ＩＰ会議セッション、ＩＰゲームセッション、ならびに／またはＲＴＰセッション、ＳＩＰセッション、ＦＴＰセッション、ＳＳＨセッション、ＨＴＴＰおよび／もしくはＨＴＴＰＳセッション、ＳＭＴＰなどのような標準的なＩＰセッションに関連付けられる（ＲＴＰ＝リアルタイム転送プロトコル（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＳＩＰ＝セッション開始プロトコル、ＦＴＰ＝ファイル転送プロトコル、ＳＳＨ＝セキュアシェル、ＨＴＴＰ＝ハイパーテキスト転送プロトコル、ＨＴＴＰＳ＝ＨＴＴＰセキュア、ＳＭＴＰ＝簡易メール転送プロトコル）。
【００５１】
制御ユニット７は、少なくとも、中央演算処理装置と、メモリと、キャッシュメモリと、第１の通信バス５を介して通信するための通信手段とを含む。制御ユニット７は、その通信手段３を介してヘッダを含むデータパケットを受信するように構成される。制御ユニット７は、ヘッダに少なくとも１つのフィルタリング操作を適用するように構成される。それによって、フィルタリングされた情報を生成することができる。また、制御ユニット７は、フィルタリングされた情報をハッシュタグに写像するように構成される。写像は、ハッシュ関数にしたがって実行される。制御ユニット７は、タグ付けされたヘッダを提供するように構成される。タグ付けされたヘッダは、ハッシュタグが制御ユニット７によってヘッダに挿入されており、それによってタグ付けされたヘッダを形成した元のヘッダである可能性がある。例えば、データパケットのヘッダがＭＰＬＳタグおよび／またはＶＬＡＮタグを含む場合、ハッシュタグは、それぞれ、このＭＰＬＳタグおよび／またはＶＬＡＮタグに挿入され得る。そのような場合、ヘッダおよびタグ付けされたヘッダは、同じビット長を有する。しかし、ハッシュタグは、そのハッシュタグをヘッダに追加することによってヘッダに挿入されることもできる。この場合、タグ付けされたヘッダは、少なくともヘッダのビット長とハッシュタグのビット長の合計と同じ長さであるビット長を有する。どの場合も、制御ユニット７は、データパケットのヘッダにハッシュタグを挿入するように構成される。さらに、制御ユニット７は、データパケットのさらなる処理のために、データパケットをタグ付けされたヘッダにしたがってＮ個のサブエンジン２１、．．．、２９の中のサブエンジン２４に送信するように構成される。
【００５２】
ハッシュタグは、イーサネットヘッダとＩＰヘッダの間に、ＩＰトンネルヘッダとＩＰヘッダの間に、またはＩＰヘッダの上のＭＰＬＳタグに挿入される可能性がある。
【００５３】
図２は、パケット交換通信ネットワークにおいて複数のデータパケットを処理する方法の好ましい実施形態の流れ図を示す。複数のデータパケットの処理の方法の好ましい実施形態が、以下のように図２を用いて以下で説明される。
【００５４】
制御ユニット７は、データパケットのヘッダ１０からの情報をフィルタリングするためのフィルタリング操作５０を提供する。フィルタリング操作５０は、やはり、それによってフィルタリングされた情報１００を生成するためにヘッダ１０に連続的に適用するためのフィルタリング操作である１つまたは複数の下位フィルタリング操作に分割され得る。好ましくは、データパケットのヘッダ１０は、データパケットに関連する１つまたは複数の情報要素を記憶するための１つまたは複数のビットを含む。フィルタリング操作５０のフィルタは、ヘッダ１０からビットおよび／またはビットのシーケンス２０を選択し、それによって、ヘッダの断片１０ａを生成することができる。フィルタリング操作５０は、ヘッダの断片１０ａに基づいてフィルタリングされた情報１００を生成する。フィルタリングされた情報１００は、ＩＰ送信元アドレス、ＩＰ送信先アドレス、ＩＰ送信元ポート、ＩＰ送信先ポート、およびトランスポートプロトコルの種類を含む５つの要素の組で構成される。その結果、フィルタリングされた情報１００は、データパケットをそれぞれのデータトラフィックフローに関連付けるために使用され得る。以下では、フィルタリングされた情報１００は、ｊと表記される可能性がある。フィルタリング操作５０は、複数のデータパケットに関連する１つまたは複数のデータトラフィックフローの中のデータトラフィックフローへのデータパケットの関連付けを示す識別子をフィルタリングするようにやはり構成され得る。５つの要素の組は、そのような識別子と解釈され得る。
【００５５】
グループのＤＳＣＰ、ＩＰヘッダのプロトコルフィールド、ＴＣＰポート、ＵＤＰポート、イーサネットの種類、ＭＰＬＳタグ、ＶＬＡＮタグ、データパケットのペイロードのデータから選択された１つまたは複数の情報要素が、フィルタリングされた情報として使用される可能性もある（ＴＣＰ＝伝送制御プロトコル、ＵＤＰ＝ユーザデータグラムプロトコル）。ハッシュおよびタグスイッチングがパケットのペイロード領域で実行される場合、１つまたは複数のサブエンジンが、データパケットを調べ、および／またはコンピュータマルウェアのシグネチャ、特にウィルスのシグネチャ、もしくはサービス拒否攻撃のようなコンピュータ犯罪の特徴と照合することが好ましい。
【００５６】
制御ユニット７は、前記識別子を含むフィルタリングされた情報１００を数ｋに写像するためのハッシュ関数３００を提供し、ｋは自然数の区間［ｍ，．．．，Ｍ］の元である。自然数ｍは最小値であり、自然数Ｍは区間［ｍ，．．．，Ｍ］の最大値である。例えば、スイッチングデバイスは、Ｎ＝２５６個のサブエンジン２１、．．．、２９を含む。以下では、何らかの理由で、ｐ＝２５６であるモジュロｐ関数を含むハッシュ関数が望ましくなく、そうではなく、ｐは素数であると仮定される。しかし、概して、ｐ＝２５６であるモジュロｐ関数は好ましいハッシュ関数である。
【００５７】
２つの最も近い素数ｐ１＝２５１およびｐ２＝２５７が存在する。素数ｐ１＝２５１は、Ｎ＝２５６、すなわちサブエンジン２１、．．．、２９の数の次に小さい素数である。
【００５８】
制御ユニット７がサブエンジンとして動作することができない場合、ｐ１＝２５１が、ハッシュ関数３００を定義するために使用され得る。ハッシュ関数３００は、モジュロｐ関数ｈ１（ｊ）＝１＋ｍｏｄ（ｊ，ｐ１）＝ｋである。結果として、ｍ＝１およびＭ＝２５１である。この場合、区間［ｍ，．．．，Ｍ］の濃度はｐ１に等しい。
【００５９】
制御ユニット７がサブエンジンとして動作することができる別の場合、ｐ２＝２５７が、ハッシュ関数３００を定義するために使用され得る。ハッシュ関数３００は、モジュロｐ関数ｈ２（ｊ）＝ｍｏｄ（ｊ，ｐ２）＝ｋである。したがって、実際には、Ｎ＋１個のサブエンジンが利用できる。素数ｐ２は、Ｎ＋１の次に小さい素数であり、その場合、この素数は、定義によりＮ＋１に等しい。結果として、ｍ＝０およびＭ＝２５６である。ｈ２（ｊ）＝０、すなわちｋ＝０である場合、制御ユニット７が、データパケットのさらなる処理を実行する。この場合、区間［ｍ，．．．，Ｍ］の濃度はｐ２に等しい。
【００６０】
どちらの場合にも、ハッシュ関数３００のすべての値ｋは、ハッシュ関数がどちらも場合も実質的にモジュロｐ関数であるので、ハッシュ関数３００の最小値ｍと最大値Ｍの間に均等に分散される。ハッシュ関数３００の値ｋのこの均等な分散は、データパケットのさらなる処理中のサブエンジン２１、．．．、２９の負荷の負荷分散をもたらすことができる。
【００６１】
制御ユニット７がサブエンジンとして動作することができない場合に、ｐ２＝２５７が、ハッシュ関数３００を定義するために使用され得る可能性もある。しかし、この場合、モジュロｐ関数ｈ３（ｊ）＝１＋ｍｏｄ（ｊ，ｐ２）＝ｋが、ｊを区間［１，．．．，２５７］内のｋに写像する。サブエンジン２１、．．．、２９の数Ｎよりも大きいハッシュタグに関連するデータパケットが処理されるために、これらのデータパケットは、さらなる処理のためのサブエンジン２１、．．．、２９の中の１つまたは複数、例えば、数１のサブエンジンに導かれる必要がある。特に、２つ以上のハッシュタグを１つのサブエンジンに関連付ける可能性がある。したがって、データパケットのさらなる処理中のサブエンジン２１、．．．、２９の負荷を負荷分散するためのハッシュ関数３００の値ｋの均等な分散がもたらされない可能性があるが、すべてのデータパケットが処理されることが保証され得る。
【００６２】
さらに、代替的に、並列処理ユニット２が、マルチプロセッサアーキテクチャ内の１つまたは複数の処理コアを提供する。並列処理ユニット２は、２つ以上のサブエンジン２１、．．．、２９を仮想的なサブエンジン、例えば、Ｎ＝２５６個の仮想的なサブエンジンとして提供する可能性がある。仮想的なサブエンジンを使用することは、仮想的なサブエンジンの数が、モジュロｐ関数であることが好ましいハッシュ関数３００に完全に適合され得るようにする。ハッシュ関数３００を決定する素数ｐに関する最適な選択は、利用可能な処理コアの数の次の素数ｐ’である可能性がある。しかし、利用可能な処理コアの数の次の素数ｐ’は利用可能な処理コアの数よりも大きい可能性がある。この場合、ｋ’が区間［０，．．．，ｐ’−１］内にあるハッシュ関数ｈ’（ｊ，ｐ’）＝ｍｏｄ（ｊ，ｐ’）＝ｋ’が、ｊを、処理コアに関連付けられることができないｋ’に写像する可能性がある。サブエンジンの仮想化によって、利用可能な処理コアが、並列処理ユニット２の最適な使用を可能にするちょうどｐ’個の仮想的なサブエンジン２１、．．．、２９を提供することができる。
【００６３】
上記の例において、数ｐ１および／または数ｐ２は、素数ではない自然数によって置き換えられ得る。
【００６４】
好ましくは、フィルタリングされた情報１００を生成するためのヘッダに対する連続的な適用のための２つ以上のフィルタリング操作が制御ユニット７によって適用される場合、制御ユニット７は、フィルタリングされた情報１００の１つまたは複数の要素、例えば、ビットおよび／またはビットのシーケンス２０を生成するように構成される。２つ以上のフィルタリング操作のそれぞれに関して、フィルタリングされた情報のそれぞれの要素が生成される可能性がある。制御ユニット７は、フィルタリングされた情報の要素の中の１つもしくは複数に、またはフィルタリングされた情報の要素のそれぞれに１つまたは複数の中間的なハッシュ関数を適用するように構成される。したがって、これらの１つまたは複数の中間的なハッシュ関数の結果は、生成されたフィルタリングされた情報、または生成されたフィルタリングされた情報１００の一部とみなされ得る。次に、ハッシュ関数３００が、生成されたフィルタリングされた情報１００、および／または生成されたフィルタリングされた情報の一部に適用される。ハッシュ関数３００は、そうしないと、ハッシュ関数３００のすべての、好ましくはｐ個の値の２つ以上のサブエンジン２１、．．．、２９への均等に分散されたおよび／または完全な写像が保証され得ないので、ｐが好ましくは素数である、ｐを法とする加算および／またはｐを法とする乗算のような２つ以上のｐを法とする計算を含む可能性がある。ハッシュ関数３００は、明示的にまたは暗黙的に２つ以上のｐを法とする計算を含み得る。この場合、明示的にという用語は、２つ以上のｐを法とする計算がハッシュ関数３００のみによって提供されることを意味し、一方、この場合、暗黙的にという用語は、２つ以上のｐを法とする計算がハッシュ関数３００によって、および／または１つもしくは複数の中間的なハッシュ関数によって提供されることを意味する。
【００６５】
２つ以上の処理コアが、仮想化を用いて、仮想的なサブエンジンであるサブエンジンを提供するために使用される可能性もある。よって、仮想化は、任意に選択されたハッシュ関数の使用を可能にすることができる。さらに、仮想サブエンジンである２つ以上のサブエンジンの数を任意に選択することができる。
【００６６】
その上、区間［ｍ，．．．，Ｍ］の濃度は、複数のデータパケットの異なるデータトラフィックフローに関連するデータパケットをタグ付けされたヘッダ１１にしたがってＮ＝２５６個のサブエンジン２１、．．．、２９の中の異なるサブエンジンに送信するために、１つまたは複数のデータトラフィックフローの数以上である可能性がある。結果として、同じデータトラフィックフローに関連するデータパケットを、Ｎ＝２５６個のサブエンジン２１、．．．、２９の中の同じサブエンジンに暗黙的に割り当てることができる。
【００６７】
ここで方法のさらなる詳細に目を向けると、方法は、さらに、例示的に、以下のように実行される。
【００６８】
制御ユニット７は、通信ネットワークを介して交換される通信パケットのヘッダ１０を含むデータパケットを受信する。制御ユニット７は、上述のように、ヘッダ１０に対してフィルタリング操作５０を適用し、それによってフィルタリングされた情報１００を生成する。制御ユニット７は、ハッシュ関数３００にしたがって、フィルタリングされた情報１００をハッシュタグ３０に写像する。特に、制御ユニット７は、ハードウェアの手段によってハッシュ関数３００および／または少なくとも１つのフィルタリング操作５０を提供する可能性がある。制御ユニット７は、データパケットのヘッダ１０にハッシュタグ３０を挿入することによってタグ付けされたヘッダ１１を提供する。制御ユニット７は、タグスイッチ４０を用いて、データパケットのさらなる処理のために、データパケットをタグ付けされたヘッダ１１にしたがってＮ＝２５６個のサブエンジン２１、．．．、２９の中のサブエンジン２４に送信する。タグスイッチ４０は、データパケットをタグ付けされたヘッダ１１にしたがってサブエンジン２４にスイッチングする。スイッチングデバイス１は、タグスイッチ４０を含む。タグスイッチ４０は、タグ付けされたヘッダ１１からヘッダタグ３０を取り除き、それによって、元のヘッダ１０が、データパケットをタグ付けされたヘッダ１１にしたがってサブエンジン２４にスイッチングする前に提供される。サブエンジン２４は、受信されたデータパケットのさらなる処理のために制御ユニット７からデータパケットを受信する。サブエンジン２４は、当該サブエンジン２４のメモリが受信されたデータパケットおよび／またはハッシュタグ３０に関連するデータを保持していない場合、受信されたデータパケットのさらなる処理のために、受信されたデータパケットおよび／またはハッシュタグ３０に関連するデータを保持するデータベース６にアクセスする。サブエンジン２４は、タグ付けされたヘッダ１１からハッシュタグ３０を取り出す。サブエンジン２４は、ヘッダ１０、受信されたデータパケットおよび／もしくはハッシュタグ３０に関連するデータ、ならびに／または受信されたデータパケットのペイロードを使用することによって受信されたデータパケットを処理する。代替的に、タグスイッチは、タグ付けされたヘッダからヘッダタグ３０を取り除かない可能性がある。そのような場合、好ましくはヘッダタグ３０である数値ｋは、サブエンジン２４が、当該サブエンジン２４が受信されたデータパケットのさらなる処理のために指定されているかどうかをチェックすることができ、したがって、指定されている場合に、受信されたデータパケットをさらに処理することができるようにする。
【図１】
0005544429.tif 000002
【図２】
0005544429.tif 000003