(57)【要約】【課題】パケットを分類するためのルールを検索するパケット分類器を提供する。【解決手段】パケット分類器（１）は、振り分け処理部（１１）と、第１のルール比較部（１２）と、第２のルール比較部（１３）を備える。振り分け処理部（１１）は、振り分けポリシーを記憶する。第１のルール比較部（１２）は、ルール集合を２つ以上の部分集合に分類して記憶する。第２のルール比較部（１３）は、ルール集合を分類せずに記憶する。振り分け処理部（１１）は、検索キーを該部分集合に振り分ける。第１のルール比較部（１２）は、該振り分け結果に基づいて対応する部分集合内のルールと比較して検索キーに一致するルールを出力する。第２のルール比較部（１３）は、該振り分け結果に関係なく記憶している全てのルールと比較して検索キーに一致するルールを出力するように動作する。【選択図】図１
2012159873.tif 000002
【特許請求の範囲】
【請求項１】
振り分けポリシーを保持する振り分け処理部と、
ルールを２つ以上の部分集合に分類して保持する第１のルール比較部と、
ルールを分類せずに保持する第２のルール比較部と
を具備し、
前記振り分け処理部は、前記振り分けポリシーに従って、入力された検索キーを前記部分集合に振り分け、
第１のルール比較部は、該振り分け結果に基づいて、対応する部分集合内のルールと比較して、前記振り分けられた検索キーに一致するルールを出力し、
第２のルール比較部は、該振り分け結果に関係なく、保持している全てのルールと比較して、前記入力された検索キーに一致するルールを出力する
パケット分類システム。
【請求項２】
請求項１に記載のパケット分類システムであって、
前記振り分け処理部は、複数のノードによる木構造を実現し、前記木構造の根ノードが前記検索キーの入力に対応し、前記木構造の葉ノードが前記部分集合の各々と対応している
パケット分類システム。
【請求項３】
請求項２に記載のパケット分類システムであって、
前記第１のルール比較部は、
前記部分集合の各々と１対１に対応する複数のルール比較器
を有し、
該複数のルール比較器の各々は、直列に並べられたパイプライン構造を実現し、前記振り分けられた検索キーを、保持している部分集合内のルールと比較して、前記振り分けられた検索キーに一致するルールを順次出力する
パケット分類システム。
【請求項４】
請求項３に記載のパケット分類システムであって、
前記振り分け処理部は、
前記木構造の各段と１対１に対応する複数のノードモジュール
を有し、
前記複数のノードモジュールの各々は、直列に並べられたパイプライン構造を実現し、パイプライン的に前記検索キーの振り分け処理を行い、最終段のノードモジュールから、前記振り分けられた検索キーを前記第１のルール比較部に入力する
パケット分類システム。
【請求項５】
請求項４に記載のパケット分類システムであって、
前記第２のルール比較部は、
それぞれがルールを１つ保持する複数のルール比較器
を有し、
該複数のルール比較器の各々は、直列に並べられたパイプライン構造を実現し、前記入力された検索キーを、保持しているルールと比較して、前記入力された検索キーに一致するルールを順次出力する
パケット分類システム。
【請求項６】
請求項１乃至５のいずれか一項に記載のパケット分類システムであって、
ルールのプロファイルを保持する記憶部と、
前記振り分け処理部の構成を決定する振り分け処理部構成決定部と、
前記第１及び第２のルール比較部の構成を決定するルール比較部構成決定部と、
前記決定された構成の評価を行う評価部と
を更に具備する
パケット分類システム。
【請求項７】
請求項６に記載のパケット分類システムであって、
前記記憶部は、前記ルールのプロファイルの１つとして、ルール中のワイルドカード発生確率を保持し、
前記ルール比較部構成決定部は、前記第１及び第２のルール比較部の構成を決定する際に、前記ワイルドカード発生確率を基に、前記第１及び第２のルール比較部に格納するルール数を決定する
パケット分類システム。
【請求項８】
請求項６又は７に記載のパケット分類システムであって、
前記記憶部は、前記ルールのプロファイルの１つとして、ルール中のワイルドカード発生確率のバラつきに関する指標を保持し、
前記ワイルドカード発生確率のバラつきに関する指標は、正規分布で与えられる場合があり、
前記ルール比較部構成決定部は、前記第１及び第２のルール比較部の構成を決定する際に、前記ワイルドカード発生確率のバラつきに関する指標を基に、前記第１及び第２のルール比較部に格納するルール数を決定し、前記ワイルドカード発生確率のバラつきが発生した時のルールのあふれの避止を図る
パケット分類システム。
【請求項９】
計算機により実施されるパケット分類方法であって、
振り分けポリシーを保持し、前記振り分けポリシーに従って、入力された検索キーを前記部分集合に振り分けることと、
ルールを２つ以上の部分集合に分類して保持し、該振り分け結果に基づいて、対応する部分集合内のルールと比較して、前記振り分けられた検索キーに一致するルールを出力することと、
ルールを分類せずに保持し、該振り分け結果に関係なく、保持している全てのルールと比較して、前記入力された検索キーに一致するルールを出力することと
を含む
パケット分類方法。
【請求項１０】
振り分けポリシーを保持し、前記振り分けポリシーに従って、入力された検索キーを前記部分集合に振り分けるステップと、
ルールを２つ以上の部分集合に分類して保持し、該振り分け結果に基づいて、対応する部分集合内のルールと比較して、前記振り分けられた検索キーに一致するルールを出力するステップと、
ルールを分類せずに保持し、該振り分け結果に関係なく、保持している全てのルールと比較して、前記入力された検索キーに一致するルールを出力するステップと
を計算機に実行させるための
パケット分類用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット分類（Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ）システムに関し、複数のルールを保持するパケット分類器を実現するパケット分類システムに関する。
【背景技術】
【０００２】
パケット分類（Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ）は、ネットワーク上のルータやスイッチにおいて、パケットを「フロー」と呼ぶ一連の属性（共通の属性）を持つパケット群に分類するための重要な技術である。パケット分類は、個々のフローに対するＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）の提供や、ファイアウォール（Ｆｉｒｅｗａｌｌ）等のセキュリティといった、付加的な価値を持つネットワークアプリケーションの実現に重要な役割を果たす。
【０００３】
［ルール］
パケット分類では、パケットのヘッダ情報に含まれている１つ以上のフィールドを用いて、ルール（フィルタと呼ばれることもある）が定義される。
【０００４】
ルールは、例えば、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、プロトコル番号に加え、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）ヘッダに定義されている宛先ポート番号（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート番号（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、ルールとして使用可能である。
【０００５】
特に、ルールが複数のヘッダフィールドを用いて定義されているパケット分類は、「Ｍｕｌｔｉ−Ｆｉｅｌｄ  Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ」と呼ばれる。
【０００６】
通常、このようなルールは複数個定義される。
【０００７】
パケットが到着すると、そのパケットヘッダからルールの定義に用いられているフィールド値が抽出される。これらのフィールド値の組と複数個のルールとを比較し、どのルールに一致するかによって、パケットをフローに分類することができる。
【０００８】
ここで、到着したパケットのヘッダから抽出したそれぞれのフィールド値の組を「検索キー」と呼ぶ。検索キーは、「０」或いは「１」からなるビット列となる。
【０００９】
［アクション］
また、一般的には、各ルールに対して、優先度（Ｐｒｉｏｒｉｔｙ）とアクション（Ａｃｔｉｏｎ）とが定義される。アクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作である。
【００１０】
検索キーが複数個のルールのうち、２つ以上のルールに一致する場合には、優先度が高いルールが選択される。また、アクションには、そのルールに一致した場合に到着パケットをどのように扱うか（例えば、廃棄する、１番のポートに送信する等）が定義されている。
【００１１】
［パケットマッチングの手法］
また、ルールにおける各フィールドに対しては、「Ｅｘａｃｔ  Ｍａｔｃｈ」、「Ｐｒｅｆｉｘ  Ｍａｔｃｈ」、「Ｒａｎｇｅ  Ｍａｔｃｈ」、「Ｗｉｌｄｃａｒｄ  Ｍａｔｃｈ」といった手法が用いられる。
【００１２】
「Ｅｘａｃｔ  Ｍａｔｃｈ」では、ある特定の値として定義される。「Ｐｒｅｆｉｘ  Ｍａｔｃｈ」で、上位の複数ビットは特定されるが下位の数ビットは「＊」として示されるワイルドカード（ｗｉｌｄｃａｒｄ）を用いて不定として定義される。「Ｒａｎｇｅ  Ｍａｔｃｈ」では、２つのある特定の値の範囲として定義する。「Ｗｉｌｄｃａｒｄ  Ｍａｔｃｈ」では、個々のビット単位にワイルドカードを指定して定義される。
【００１３】
例えば、８ｂｉｔのフィールドにおいて、「００１１０１０１」という値を各手法により検索する場合について考えた場合、検索キーとして指定される内容は以下のようになる。
【００１４】
「Ｅｘａｃｔ  Ｍａｔｃｈ」では、「００１１０１０１」のように特定値として指定される。「Ｐｒｅｆｉｘ  Ｍａｔｃｈ」では、「００１１＊＊＊＊」のように「００１１」の４ｂｉｔから始まる値として指定される。「Ｒａｎｇｅ  Ｍａｔｃｈ」では、［３−６４］のように８ｂｉｔのフィールドが１０進数で考えた際に、３から６４の範囲に入っていれば良いとする。「Ｗｉｌｄｃａｒｄ  Ｍａｔｃｈ」では、「０＊＊１０＊０１」のようにビット単位でワイルドカードが使用できる。
【００１５】
このような「Ｍｕｌｔｉ−Ｆｉｅｌｄ  Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ」に関する技術は、ルールセットの大容量化とリンク速度の向上により、高速なルータやスイッチにおいて、これをいかに高速に処理させるかが１つの技術的な課題となっている。
【００１６】
［ＴＣＡＭを基にした手法］
現状、その高速処理を実現するために、ＴＣＡＭ（Ｔｅｒｎａｒｙ  Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）を基にした手法が用いられることが多い。しかしながら、ＴＣＡＭはコストが高く、消費電力量や回路規模も大きいといった課題が存在する。また、ＴＣＡＭは、そのままでは「Ｒａｎｇｅ  Ｍａｔｃｈ」を使用することができず、「Ｒａｎｇｅ  Ｍａｔｃｈ」を用いたい場合には、そのルールを「Ｐｒｅｆｉｘ  Ｍａｔｃｈ」を用いたルールに分割する必要があるため、ルール数が増加してしまうといった課題もある。
【００１７】
一方、ＴＣＡＭの高コスト、高消費電力の問題を回避すべく、より低コスト、低消費電力なＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用いた様々な「Ｍｕｌｔｉ−Ｆｉｅｌｄ  Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ」に関する手法が提案されている。しかしながら、ＳＲＡＭやＤＲＡＭを用いたルールと検索キーの一致比較では、同時にアクセスできるメモリ内のルール数が限られているため、一般には検索に必要な処理時間が長くなる。
【００１８】
［決定木を用いた手法］
そこで、例えば、非特許文献１では、「ＨｙｐｅｒＣｕｔｓ」と呼ばれる決定木（Ｄｅｃｉｓｉｏｎ  Ｔｒｅｅ）を用いた手法が提案されている。決定木を用いた手法では、全てのルールに対して一致確認を行うのではなく、当該検索キーが一致する可能性のある少数のルールに対してのみ一致確認を行うことで、検索処理時間の向上を図っている。
【００１９】
図４０、図４１、図４２を用いて、決定木を用いた手法について簡単に説明する。
【００２０】
（１）ルールセットの例
図４０は、それぞれ４ｂｉｔ長である２つのフィールドＸ、Ｙを用いて定義されたルールＲ０からルールＲ１５までの１６個のルールからなるルールセットの例を示す図である。
【００２１】
フィールドＸ、Ｙは、例えば、送信元ＩＰアドレスや送信元ポート番号等、実際のパケットヘッダフィールドに相当する。なお、フィールドＸは、２進数で表記している。ここで、「＊」はワイルドカードを示している。また、フィールドＹは、「Ｒａｎｇｅ  Ｍａｔｃｈ」で表記している。ここで、［ａ：ｂ］のａ、ｂは、それぞれ下限値、上限値（１０進数表記）を示している。なお、ここでは、各ルールに付与される優先度とアクションについては省略している。
【００２２】
（２）ルールセットの２次元空間表示
図４１は、図４０のルールセットをフィールドＸ、Ｙから成る２次元空間上で示した図である。
【００２３】
なお、Ｘ軸、Ｙ軸上の数はそれぞれ１０進数で表記してある。決定木を用いた手法では、図４１に示されるように、多次元空間を複数の次元に着目して分割し、分割領域内に存在するルール数がある閾値以下になるまで領域分割を繰り返すことで決定木を構築する。ここで、分割された領域で管理されるルール群を「ルールリスト」と呼ぶ。
【００２４】
（３）ルールセットに対して構築した決定木
図４２は、図４０のルールセットに対して構築した決定木の一例を示した図である。
【００２５】
図４２に示す決定木では、分割領域内のルール数の閾値を「２」としている。
【００２６】
図４２では、まず、領域（Ｘ、Ｙ）で示される全空間（［０：１５］、［０：１５］）について、フィールドＸとＹの両方を閾値「７」との大小関係によって分割（Ｘ方向に２分割、Ｙ方向に２分割）することで、４つの領域に分割している。この結果、全空間（［０：１５］、［０：１５］）が、領域０（［０：７］、［０：７］）、領域１（［０：７］、［８：１５］）、領域２（［８：１５］、［０：７］）、領域３（［８：１５］、［８：１５］）の４つの領域に分割されている。
【００２７】
また、それぞれの領域で管理されるルールリストは、［Ｒ７、Ｒ８、Ｒ９、Ｒ１１］（領域０）、［Ｒ０、Ｒ６、Ｒ９、Ｒ１０、Ｒ１１、Ｒ１２］（領域１）、［Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ１３、Ｒ１４］（領域２）、［Ｒ１０、Ｒ１４、Ｒ１５］（領域３）となる。各領域には、まだ閾値である２よりも多いルールが管理されているため、それぞれの領域について、閾値以下のルール数になるまで更に領域分割を行う。図４２では、最終的に２４の領域に分割されている。
【００２８】
なお、決定木を構築するアルゴリズムについては、非特許文献１や非特許文献２に記載されているため、ここでは省略する。
【００２９】
一方、パケット分類を行う場合には、決定木を辿ってゆき、辿り着いたノードで管理されている閾値数以下のルールを全て検索する。例えば、「Ｘ＝０１１１、Ｙ＝１００１」を持つパケットに対してパケット分類を行う場合、決定木の根ノードからノードを辿ってゆくことになる。
【００３０】
図４２に示す決定木では、根ノードにおいて上記の４つの領域に分割しており、当該パケットのフィールドＸの値は「７」、フィールドＹの値は「９」であるため、上記４つの領域のうち、領域１（［０：７］、［８：１５］）に属することがわかる。
【００３１】
続いて、領域１のノードを見ると、更に、領域１をＸ、Ｙ方向にそれぞれ２分割することで、領域１０（［０：３］、［８：１１］）と、領域１１（［０：３］、［１２：１５］）と、領域１２（［４：７］、［８：１１］）と、領域１３（［４：７］、［１２：１５］）の４つの領域に分割している。
【００３２】
当該パケットは、上記の４つの領域のうち、領域１２に属していることがわかるため、後続のノードを辿る。
【００３３】
次の領域１２のノードでも、更に、領域１２をＸ、Ｙ方向にそれぞれ２分割することで、領域１２０（［４：５］、［８：９］）と、領域１２１（［４：５］、［１０：１１］）と、領域１２２（［６：７］、［８：９］）と、領域１２３（［６：７］、［１０：１１］）の４つの領域に分割している。
【００３４】
当該パケットは、領域１２２（［６：７］、［８：９］）に属することがわかるため、領域１２２で管理されているルールＲ９とルールＲ１０に対して検索を行い、一致したルールに従って分類される。
【００３５】
なお、この場合、当該パケットはルールＲ９とルールＲ１０の両方に一致するため、図４２では省略している各ルールに付与された優先度に応じて、一致するルールが選択される。
【００３６】
なお、決定木を用いた手法では、領域分割の際、ルールによっては複数の分割領域で管理されることがあり、以下では、これを「ルールの複製」と呼ぶ。
【００３７】
例えば、図３７では、ルールＲ７が複製（コピー）されている。これは、図４２に示されるように、ルールＲ７は、Ｘが［０：７］、Ｙが［０：３］の範囲で定義されており、領域００（［０：３］と、［０：３］）と領域０１（［４：７］、［０：３］）の両方の領域に属しているからである。
【００３８】
同様に、例えば、ルールＲ９のルールも複製されている。
【００３９】
このようなルールの複製は、複製されたルールそのもの、或いは、複製されたルールに対するアドレス値を管理するためのメモリ容量が増加し、見た目上、実際のルールセットよりも多くのルールを扱うことになる。つまり、ルールの複製は、決定木におけるデータ量の増加に繋がるという課題がある。これを防ぐために、以下のような手法が提案されている。
【００４０】
＜非特許文献１＞
非特許文献１では、葉ノードでないノードにもルールリストを持たせ、領域分割の結果、全ての子ノード（分割領域）に同一のルールが複製されてしまう場合には、当該ノードのルールリストに複製されるルールを管理する手法が提案されている。
【００４１】
しかしながら、この手法では、上記の場合以外ではルールの複製を許容しているため、完全にはルールの複製を防止することはできない。
【００４２】
＜非特許文献２＞
非特許文献２では、従来ソフトウェアで処理させることを想定していた決定木を用いたパケット分類手法を、パイプライン処理を用いたハードウェアによって、高速に処理させるハードウェアアーキテクチャが提案されている。
【００４３】
本手法では、非特許文献１と同様、葉ノードでないノードにもルールリストを持たせ、ルールを管理させる手法が提案されている。非特許文献２では、非特許文献１とは異なり、複数の子ノードへルールが複製される場合には、当該ノードのルールリストで複製されるルールを管理する。これにより、ルールの複製を軽減することはできるが、単一ノードで複製されるルールの数がルールリストで管理できるルール数以上の場合には、ルールの複製が発生してしまう。ルールの複製が発生しないように中間ノードのルールリストの容量を大きくすると、ノードによっては未使用の記憶領域が多くなり、利用効率が低下する。また、このことにより、余剰な電力消費が発生することになる。
【００４４】
＜非特許文献３＞
非特許文献３では、非特許文献２と同様のパイプライン処理を用いたハードウェア処理を行う手法が提案されている。
【００４５】
本手法では、非特許文献１や非特許文献２とは異なり、決定木では葉ノードでのみルールを管理するが、決定木を複数個用意し、複数の決定木のうち、複製が発生しないいずれかの決定木でルールを管理させることにより、ルールの複製を抑制する。しかしながら、非特許文献３の手法においてもルールの複製を完全には排除できない。例えば、あるルールセットを管理する際に、ルールの複製が全く発生しない複数の決定木の構成が存在したとする。しかし、その構成を用いても、異なるルールセットを管理する際にはルールの複製が発生する可能性がある。このように、従来の技術では、特定のルールセットを解析して決定木の構成を決定していたため、これとは異なるルールセットに対しても有効な決定木の構成方法は明らかにされていなかった。
【００４６】
また、非特許文献３の手法では、どの決定木においてもルールの複製が発生するようなルールに関しては、最終的にルールの複製を許容して、いずれかの決定木でルールを管理する必要がある。そのため、ルールの複製の発生量によっては、ハードウェア資源上、必要数のルールが管理できない可能性がある。複製されるルール数を抑制しようとすると、より多くの決定木を用いた詳細な領域分割を行う必要があり、結果として決定木におけるパケットの分類処理に必要な時間が増大し、また、決定木のデータが増大するという問題がある。
【００４７】
＜全体＞
以上のように、従来の技術では、複製の問題を完全に排除するのが難しく、複製の発生により記憶容量が圧迫されるという問題がある。また、従来の技術による決定木を用いたパケット分類器では、事前に与えられた特定のルールセットを解析し、該ルールセットに適した決定木を構築する方式であったため、別のルールセットには対応できなかった。
【００４８】
決定木を用いたパケット分類器をネットワーク機器に適用する場合、パケット分類器で管理しなければならないルールはパケット分類器が構成された後に外部から入力されることになるため、非特許文献３における決定木の数や、分割される領域の数等は事前に設定されている必要がある。そのため、事前にルールセットを解析して決定木を構築する従来技術では、ネットワーク機器に組み込めるようなパケット分類器を設計することができなかった。
【００４９】
なお、現在、パケット分類に関する技術の一つとして、通信機器の制御プロトコルであるオープンフロー（ＯｐｅｎＦｌｏｗ）が研究されている。オープンフローの詳細については、非特許文献４に記載されている。
【先行技術文献】
【非特許文献】
【００５０】
【非特許文献１】Ｓｕｍｅｅｔ  Ｓｉｎｇｈ、Ｆｌｏｒｉｎ  Ｂａｂｏｅｓｃｕ、Ｇｅｏｒｇｅ  Ｖａｒｇｈｅｓｅ、Ｊｉａ  Ｗａｎｇ、“Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ  Ｕｓｉｎｇ  Ｍｕｌｔｉｄｉｍｅｎｓｉｏｎａｌ  Ｃｕｔｔｉｎｇ”、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＡＣＭ  ＳＩＧＣＯＭＭ  ２００３  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｐｐｌｉｃａｔｉｏｎｓ、Ｔｅｃｈｎｏｌｏｇｉｅｓ、Ａｒｃｈｉｔｅｃｔｕｒｅｓ、ａｎｄ  Ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ、２００３年、ｐｐ．２１３−２２４
【非特許文献２】Ｗｅｉｒｏｎｇ  Ｊｉａｎｇ、  Ｖｉｋｔｏｒ  Ｋ．  Ｐｒａｓａｎｎａ、“Ｌａｒｇｅ−Ｓｃａｌｅ  Ｗｉｒｅ−Ｓｐｅｅｄ  Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｏｎ  ＦＰＧＡｓ”、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＡＣＭ／ＳＩＧＤＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ、２００９年、ｐｐ．２１９−２２８
【非特許文献３】Ｗｅｉｒｏｎｇ  Ｊｉａｎｇ、  Ｖｉｋｔｏｒ  Ｋ．  Ｐｒａｓａｎｎａ、Ｎｏｒｉｏ  Ｙａｍａｇａｋｉ、“Ｄｅｃｉｓｉｏｎ  Ｆｏｒｅｓｔ：  Ａ  Ｓｃａｌａｂｌｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｆｌｅｘｉｂｌｅ  Ｆｌｏｗ  Ｍａｔｃｈｉｎｇ  ｏｎ  ＦＰＧＡ”、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ２０１０Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎ、２０１０年、ｐｐ．３９４−３９９
【非特許文献４】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．０．０  （ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ）
【発明の概要】
【発明が解決しようとする課題】
【００５１】
決定木を用いたパケット分類器の第１の問題点は、決定木の構成によってはルールの複製が発生することである。ルールの複製によって、パケット分類器に求められる記憶容量が増大し、資源を圧迫することになる。
【００５２】
決定木を用いたパケット分類器の第２の問題点は、パケット分類ではパケットが入力されてから、検索結果が出力されるまでの遅延時間は短いほうが望ましいことである。また、パケットは連続して入力されるため、パケット分類器ではパケットが連続して処理できる性能が求められる。
【００５３】
決定木を用いたパケット分類器の第３の問題点は、ルールセットに対応した決定木の適切な構成手法が必要である点である。事前に与えられた特定のルールセットを解析することにより得られた構成で、別のルールセットを管理しようとしても、所望の性能が達成できない可能性がある。このように、どのようなルールを管理しなければならないかが、予測できない場合にも、求められる性能が達成できる、決定木を用いたパケット分類器の設計手法が存在しなかった。
【００５４】
本発明の目的は、ルールの複製を発生させずにルールを管理することが可能な決定木を用いたパケット分類器と、当該パケット分類器の効果的な設計手法を提供することにある。
【課題を解決するための手段】
【００５５】
本発明に係るパケット分類システムは、振り分けポリシーを保持する振り分け処理部と、ルールを２つ以上の部分集合に分類して保持する第１のルール比較部と、ルールを分類せずに保持する第２のルール比較部とを具備する。該振り分け処理部は、該振り分けポリシーに従って、入力された検索キーを該部分集合に振り分ける。第１のルール比較部は、該振り分け結果に基づいて、対応する部分集合内のルールと比較して、該振り分けられた検索キーに一致するルールを出力する。第２のルール比較部は、該振り分け結果に関係なく、保持している全てのルールと比較して、該入力された検索キーに一致するルールを出力する。
【００５６】
本発明に係るパケット分類方法は、計算機により実施されるパケット分類方法であって、振り分けポリシーを保持し、該振り分けポリシーに従って、入力された検索キーを該部分集合に振り分けることと、ルールを２つ以上の部分集合に分類して保持し、該振り分け結果に基づいて、対応する部分集合内のルールと比較して、該振り分けられた検索キーに一致するルールを出力することと、ルールを分類せずに保持し、該振り分け結果に関係なく、保持している全てのルールと比較して、該入力された検索キーに一致するルールを出力することとを含む。
【００５７】
本発明に係るパケット分類用プログラムは、振り分けポリシーを保持し、該振り分けポリシーに従って、入力された検索キーを該部分集合に振り分けるステップと、ルールを２つ以上の部分集合に分類して保持し、該振り分け結果に基づいて、対応する部分集合内のルールと比較して、該振り分けられた検索キーに一致するルールを出力するステップと、ルールを分類せずに保持し、該振り分け結果に関係なく、保持している全てのルールと比較して、該入力された検索キーに一致するルールを出力するステップとを計算機に実行させるためのプログラムである。
【００５８】
本発明に係るパケット分類用プログラムは、上記のパケット分類方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るパケット分類用プログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【００５９】
パケットを分類するためのルールを検索するパケット分類器を実現できる。
【図面の簡単な説明】
【００６０】
【図１】本発明の第１実施形態におけるパケット分類器の構成を示すブロック図である。
【図２】第１実施形態における構成の振り分け処理部を示すブロック図である。
【図３】第１実施形態における構成の第１のルール比較部を示すブロック図である。
【図４】第１実施形態における動作の具体例を示すフローチャートである。
【図５】第１実施形態における振り分け処理部から第１のルール比較部に振り分け処理結果が送られる動作の例を示す図である。
【図６Ａ】第１実施形態における振り分けポリシーによるルール配置の具体例を示す図である。
【図６Ｂ】第１実施形態における振り分けポリシーによるルール配置の具体例を示す図である。
【図７】本発明の第２実施形態におけるパケット分類器の構成を示すブロック図である。
【図８】本発明の第２実施形態におけるノードと記憶装置の構成を示す図である。
【図９】本発明の第２実施形態における葉ノードと第１のルール比較部の構成を示す図である。
【図１０】第２実施形態における動作の具体例２を示す図である。
【図１１】本発明の第３実施形態におけるパケット分類器の構成を示すブロック図である。
【図１２】本発明の第３実施形態におけるノードモジュールの構成を示すブロック図である。
【図１３】本発明の第３実施形態におけるノードモジュールの記憶部の構成例を示すブロック図である。
【図１４】本発明の第３実施形態におけるノードモジュールの接続例を示すブロック図である。
【図１５】本発明の第３実施形態におけるルール比較部の構成を示すブロック図である。
【図１６】本発明の第３実施形態における第１のルール比較部の構成例を示すブロック図である。
【図１７】本発明の第３実施形態における動作の具体例を示すフローチャートである。
【図１８】本発明の第４実施形態におけるパケット分類器の構成例を示すブロック図である。
【図１９】本発明の第４実施形態における動作の具体例を示すフローチャートである。
【図２０】本発明の第５実施形態における構成例を示すブロック図である。
【図２１】本発明の第５実施形態における動作の具体例を示すフローチャートである。
【図２２】本発明の第６実施形態における構成例を示すブロック図である。
【図２３】本発明の第６実施形態における構成例を示すブロック図である。
【図２４Ａ】本発明のバラつき（分布、分散）を持ったワイルドカードの含有率を説明する図である。
【図２４Ｂ】本発明のバラつきを持ったワイルドカードの含有率を説明する図である。
【図２５】本発明の第６実施形態におけるバラつきを持ったワイルドカード含有率を生成する動作例を示す図である。
【図２６Ａ】本発明の第６実施形態において、管理可能なルール数が確率で表される様子を示した図である。
【図２６Ｂ】本発明の第６実施形態において、管理可能なルール数が確率で表される様子を示した図である。
【図２７】本発明の第６実施形態において第２のルール比較部とルール管理成功率の関係を表す図である。
【図２８】本発明の第７実施形態における動作例を示す図である。
【図２９】本発明の第１の実施例におけるルールの定義の例を示す図である。
【図３０Ａ】本発明の第１の実施例におけるルールが第１のルール比較部と第２のルール比較部に配置される例を示す図である。
【図３０Ｂ】本発明の第１の実施例におけるルールが第１のルール比較部と第２のルール比較部に配置される例を示す図である。
【図３０Ｃ】本発明の第１の実施例におけるルールが第１のルール比較部と第２のルール比較部に配置される例を示す図である。
【図３１】本発明の第２の実施例におけるルールの定義の例を示す図である。
【図３２】本発明の第２の実施例におけるルールが第１のルール比較部と第２のルール比較部に配置される例を示す図である。
【図３３】本発明の第３の実施例におけるパケット分類器の構成例を示す図である。
【図３４】本発明の第４の実施例における第１のルールのプロファイルの例を示す図である。
【図３５】本発明の第４の実施例における、振り分け処理部と第１のルール比較部と第２のルール比較部の構成例を示す図である。
【図３６】本発明の第４の実施例における、振り分け処理部と第１のルール比較部と第２のルール比較部のメモリ量の例を示す図である。
【図３７】本発明の第５の実施例における第２のルールのプロファイルを示す図である。
【図３８】本発明の第５の実施例における第１のルール比較部と第２のルール比較部で管理可能なルール数と、配置されるルールの最小数と、あふれるルール数の例である。
【図３９】本発明の第５の実施例におけるバラつき具合（バラつき度合）を反映したワイルドカード含有率の例である。
【図４０】ルールセットの例を示す図である。
【図４１】図４０のルールセットをフィールドＸ、フィールドＹからなる２次元空間上に配置した図である。
【図４２】図４０のルールセットに対する決定木の一例を示す図である。
【発明を実施するための形態】
【００６１】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００６２】
［パケット分類器の構成例］
図１を参照して、本発明の第１実施形態におけるパケット分類器１の構成例について説明する。
【００６３】
パケット分類器１は、入力１０を受け取る。入力１０は、外部からパケット分類器１への入力である。ここでは、パケット分類器１には、入力１０として、パケット分類器１において検索を行うための検索キーが入力される。
【００６４】
パケット分類器１は、振り分け処理部１１と、第１のルール比較部１２と、第２のルール比較部１３を備えている。
【００６５】
振り分け処理部１１は、入力１０を受け取る。振り分け処理部１１は、第１のルール比較部１２と接続されており、第１のルール比較部１２に、振り分けの結果、及び検索キーを送る（出力する）。
【００６６】
第１のルール比較部１２は、振り分け処理部１１における振り分けの結果、及び検索キーを受け取り、検索結果を出力する。このとき、第１のルール比較部１２は、振り分け処理部１１から振り分けの結果のみを受け取り、検索キーについては、直接入力１０から受け取っても良い。なお、検索結果の例として、検索キーと一致したルール、該ルールを一意に識別できるルールＩＤ、複数のルールに一致した場合に選択すべきルールの順番を示す優先度等が考えられる。
【００６７】
第２のルール比較部１３は、入力１０を受け取り、検索結果を出力する。
【００６８】
出力１４は、パケット分類器１からの出力である。ここでは、パケット分類器１は、出力１４として、第１のルール比較部１２及び第２のルール比較部１３での検索結果を出力する。
【００６９】
［ハードウェアの例示］
本発明に係るパケット分類器の例として、オープンフロースイッチ等のネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）を想定している。他にも、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール、ロードバランサー、帯域制御装置、セキュリティ監視制御装置、基地局、アクセスポイント等の他の中継装置や、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機等が考えられる。なお、計算機は、複数の通信ポートを有する場合、中継装置としての機能を持たせることも可能である。或いは、上記の各装置の組み合わせでも良い。また、パケット分類器は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））により実現される仮想スイッチ等でも良い。
【００７０】
本発明に係る振り分け処理部、第１のルール比較部、及び第２のルール比較部、その他の構成要素は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインタフェースによって実現される。
【００７１】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。
【００７２】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、レジスタ（ｒｅｇｉｓｔｅｒ）群でも良い。
【００７３】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。したがって、パケット分類器１に搭載される１チップマイコンが、プロセッサ及びメモリを備えている事例が考えられる。
【００７４】
上記のインタフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００７５】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００７６】
但し、実際には、これらの例に限定されない。
【００７７】
［パケット分類器の詳細］
振り分け処理部１１は、パケット分類器１への入力１０として入力された検索キーの分類を行い、分類結果を、第１のルール比較部１２に送る。また、パケット分類器１への入力１０として入力された検索キーは、第２のルール比較部１３にそのまま入力される。第１のルール比較部１２及び第２のルール比較部１３は、内部にルールを保持している。
【００７８】
パケット分類器１への入力１０として入力される検索キーとは、「０」、「１」の２つの値で示されるビット列である。
【００７９】
ルールは、フィールド毎に、「０」、「１」、及び「＊」の３つの値で定義されている文字列である。
【００８０】
「Ｅｘａｃｔ  Ｍａｔｃｈ」を行うフィールドに関しては、「０」と「１」で定義される。
【００８１】
「Ｐｒｅｆｉｘ  Ｍａｔｃｈ」、或いは、「Ｗｉｌｄｃａｓｒｄ  Ｍａｔｃｈ」を行うフィールドに関しては、「０」、「１」、「＊」の３つの値で定義される。
【００８２】
「Ｒｅｎｇｅ  Ｍａｔｃｈ」を行うフィールドに関しては、「０」、「１」の２つの値で定義され、最大値と最小値がそれぞれ２進表記によって定義される。
【００８３】
［振り分け処理部の構成例］
図２を参照して、振り分け処理部１１の構成例について説明する。
【００８４】
振り分け処理部１１は、振り分け処理装置１１１と、振り分けポリシー記憶装置１１２を備えている。
【００８５】
振り分け処理装置１１１は、振り分け処理に必要な情報（振り分けポリシー）に従って、実際に振り分け処理を行う。
【００８６】
振り分けポリシー記憶装置１１２は、振り分け処理に必要な情報（振り分けポリシー）を記憶する。
【００８７】
［振り分けポリシー］
振り分けポリシーの例として、検索キーの振り分け処理の際に参照するビット列中のビット位置、参照する部分ビット列が表す値の大小によって振り分け先を決定するための閾値、振り分けに使用するフィールドの情報、或いは、前述した振り分けポリシーによって送り先の第１のルール比較部１２内で分割されている部分のアドレス等を計算する手法（計算ルール）等が考えられる。
【００８８】
［第１のルール比較部の形態］
図３を参照して、第１のルール比較部１２の形態について説明する。
【００８９】
第１のルール比較部１２は、内部が複数に分割され、それぞれの部分でルールを保持している。図３を参照すると、第１のルール比較部１２の内部の領域は、ルール管理部１２１−１からルール管理部１２１−ＮまでのＮ個の領域に分割されている様子が例示されている。ルール管理部１２１−１からルール管理部１２１−Ｎは、ルールを管理するための部分である。以下、部分とは、ルール管理部１２１−１からルール管理部１２１−Ｎのいずれかを示すものとする。
【００９０】
ここでは、第１のルール比較部１２は、オープンフローにおけるフローテーブルを有するものとする。フローテーブルには、所定のルールと、ルールに適合するパケットに対して行うべきアクション、またそのルールの優先度等を定義したエントリ（ｅｎｔｒｙ）が登録される。この場合、ルール管理部１２１−１から１２１−Ｎは、当該フローテーブルに設定されたエントリを管理している。但し、実際には、これらの例に限定されない。第１のルール比較部１２は、振り分け処理部１１からの検索キーと分類結果を入力し、分類結果で指定されたブロック内のルールと検索キーの比較を行い、結果をパケット分類器の出力１４として出力する。
【００９１】
第２のルール比較部１３は、ルールを保持する。第２のルール比較部１３は、入力１０として検索キーを入力した時、保持している全てのルールと検索キーの比較を行い、比較した結果をパケット分類器の出力１４として出力する。
【００９２】
［本実施形態における動作］
図４のフローチャートを参照して、本発明の第１実施形態におけるパケット分類器１の動作について説明する。
【００９３】
振り分け処理部１１は、予め（事前に）、検索キーを振り分けるための振り分けポリシーを有している。すなわち、振り分け処理部１１の振り分けポリシー記憶装置１１２は、予め振り分けポリシーを記憶している。振り分けポリシーとして、特定の値を用いて大小比較を行って分割する手法や、特定の位置のビットを参照して分割する手法等がある。また、第１のルール比較部１２、及び、第２のルール比較部１３には、予めルールが分割されて配置されている。
【００９４】
第１のルール比較部１２は、振り分け処理部１１における検索キーの振り分けポリシーによって、検索キーと比較一致処理を行うルールの配置方法も決定する。第１のルール比較部１２は、この振り分けポリシーに従って、各部分毎にルールを管理する。
【００９５】
振り分け処理部１１が有する振り分けポリシーでは、１つの部分に分類が不可能なルールを、第１のルール比較部１２内の複数の部分に複製して配置するか、又は、第１のルール比較部１２ではなく、第２のルール比較部１３に配置するというルールの分割配置の基準を規定している。例えば、全ての部分に複製されるルールを第２のルール比較部１３に配置し、それ以外のルールを第１のルール比較部１２に配置するというルールの分割配置の基準を規定する。或いは、複製が発生するルールを全て第２のルール比較部１３に配置し、それ以外のルールを第１のルール比較部１２内の複数の部分に複製して配置するというルールの分割配置の基準を規定する。或いは、ある閾値を設定して、その閾値を超える数分の複製が発生するルールを第２のルール比較部１３に配置し、それ以外を第１のルール比較部に配置するというルールの分割配置の基準を規定する。
【００９６】
ルールは、振り分け処理部１１が有する振り分けポリシーと、ルールの分割配置の基準に従って、第１のルール比較部１２内の部分、或いは第２のルール比較部１３に配置される。第１のルール比較部１２では、振り分け処理部１１の振り分け結果に基づいて、振り分けられた検索キーと分割部分内に配置されたルールとの比較処理（検索処理）が行われる。第２のルール比較部では、振り分け結果に関係なく、保持している全てのルールと検索キーの比較処理が行われる。
【００９７】
（１）ステップＡ１
パケット分類器１は、パケット分類器への入力１０から検索キーを受け取る。
【００９８】
（２）ステップＡ２
パケット分類器１は、入力１０として入力された検索キーを、振り分け処理部１１へ送る。
【００９９】
（３）ステップＡ３
振り分け処理部１１は、振り分けポリシーに従って、検索キーの振り分け処理を実行する。
【０１００】
（４）ステップＡ４
振り分け処理部１１は、振り分け処理の結果に従って、検索キーを第１のルール比較部１２へ渡す。
【０１０１】
（５）ステップＡ５
第１のルール比較部１２は、振り分けられた検索キーと、分割されたルール管理部１２１−１〜１２１−Ｎで保持されるルールとの比較処理を行う。
【０１０２】
（６）ステップＡ６
また、パケット分類器１は、入力１０として入力された検索キーを、第２のルール比較部１３へ送る。
【０１０３】
ステップＡ２以降（ステップＡ２〜Ａ５）と、ステップＡ６以降（ステップＡ６〜Ａ７）は、並列に処理を行うことが可能であるので、この例では並列に実行しているが、特に並列処理を限定するものではない。
【０１０４】
（７）ステップＡ７
第２のルール比較部１３は、振り分けられた検索キーと、第２のルール比較部１３で保持されているルールとの比較処理を行う。
【０１０５】
（８）ステップＡ８
パケット分類器１は、第１のルール比較部１２と第２のルール比較部１３での比較処理の結果を、パケット分類器１からの出力１４として出力する。
【０１０６】
なお、本実施形態の図４のフローチャートでは、同期を取って出力がなされているが、必ずしも同期を取る必要はない。
【０１０７】
［検索キーの振り分け処理］
図５は、検索キーの振り分け処理（ステップＡ３からステップＡ４）の様子を表したものである。
【０１０８】
振り分け処理部１１は、検索キーの振り分け処理の結果に従って、第１の比較部１２の該当する部分の全てに対して、検索キーを複製して送る。
【０１０９】
第１のルール比較部１２は、図５に示されるように、内部が複数に分割されている構造になっている。このとき、第１のルール比較部１２へ入力される検索キーは、振り分け処理部１１を経由して送られてきても、振り分け処理部１１を経由せずに別の手段で入力されても構わない。
【０１１０】
［ルール配置の具体例］
図６Ａ、図６Ｂを参照して、第１実施形態における振り分けポリシーによるルール配置の具体例について説明する。
【０１１１】
パケット振り分け処理部１１は、閾値を５とした大小関係でパケットを振り分ける、振り分けポリシーを保持している。図６Ａでは、例として振り分け処理を５未満の値を持つ検索キーと５以上の値を持つ検索キーで振り分け処理を行う様子を示している。このとき、振り分け処理部１１は、振り分けの軸６１より左側にある５未満の値を持つ検索キーと、軸６１上及び軸６１より右側の５以上の値を持つ検索キーとに振り分ける。振り分け処理部１１は、図６Ａに示されるように、入力された検索キーの値を用いて検索キーを分類し、分類した結果を第１のルール比較部１２に送る。ここでは、ルール比較部１２の内部は、図６Ｂに示されるように、ルール管理部１２１−Ａとルール管理部１２１−Ｂの２つに分割されているものとする。振り分け処理部１１は、検索キーの振り分け処理を行い、５未満の値を持つ検索キーをルール管理部１２１−Ａに送り、５以上の値を持つ検索キーをルール管理部１２１−Ｂに送ることによって、分類結果を第１のルール比較部１２へ伝える。
【０１１２】
一方で、第２のルール比較部１３は、検索キーの振り分け処理を行うことがないため、内部も分割されずに、パケット分類器の入力１０として入力された全ての値の検索キーを、そのまま入力する。
【０１１３】
これらの詳細については、後述する第１の実施例において説明する。
【０１１４】
［本実施形態の効果］
本発明の第１実施形態によれば、振り分け処理部は、検索キーの振り分けの際に参照するビット位置と、それに対してルールを配置するルール配置の基準を振り分けポリシーとして保持している。この振り分けポリシーの設定によっては、第１のルール比較部だけでは、複製を生じざるを得ないルールが、第２のルール比較部に配置され、ルールの複製が発生しなくなる。また、複数のルールがパケット分類器内で管理される場合、ルールの複製が発生するルール数を抑制することができる。また、ルールの複製が発生するルールは、全て第２のルール比較部に配置することにすると、ルールの複製は発生しなくなる。
【０１１５】
＜第２実施形態＞
次に、本発明の第２実施形態について図面を参照して説明する。
【０１１６】
本発明の第２実施形態は、本発明の第１実施形態における振り分け処理部１１が決定木で実現されている点で異なる。
【０１１７】
［パケット分類器の構成例］
図７を参照して、本発明の第２実施形態におけるパケット分類器１の構成例について説明する。
【０１１８】
入力１０、振り分け処理部１１、第１のルール比較部１２については、図１、図２に示される第１のルール比較部１２と同じである。
【０１１９】
振り分け処理部１１は、内部において決定木を有する。決定木は、根ノード７１と、葉ノード７２を有する。ここでは、振り分け処理部１１内において、振り分け処理装置１１１は、振り分けポリシー記憶装置１１２と関連付けられている。振り分けポリシー記憶装置１１２は、決定木を構成するための情報が記憶されている。振り分け処理装置１１１は、決定木を構成するための情報に基づき、決定木を構成する。すなわち、振り分け処理装置１１１は、決定木の根ノード７１と、決定木の葉ノード７２を有する。
【０１２０】
振り分け処理部１１は、パケット分類器１への入力１０として入力された検索キーが到達した時には、検索キーを、決定木の根ノード７１に入力する。
【０１２１】
決定木における各ノードは、子ノードを決定するための手段を有し、入力された検索キーの情報と各ノードが保持する送り先子のノードを決定するための情報を用いて、次に検索キーを渡す子ノードを決定する。子ノードの決定には、検索キーの特定の位置にあるビットを参照する手段や、検索キー中のビット列が表す数値と、ノードが保持する閾値との大小比較によって、検索キーを分類する手段等が考えられる。特定のビットを参照する手段では、ノードは、参照するビット位置を保持する。また、特定の値を用いて検索キーを分類する手段では、ノードは、閾値を保持する。
【０１２２】
振り分けポリシー記憶装置１１２は、決定木における各ノードにおいて、以上のような子ノードを計算するための情報を保持する。
【０１２３】
［ノードと記憶装置の構成例］
図８を参照して、本発明の第２実施形態におけるノードと記憶装置の構成例について説明する。
【０１２４】
振り分け処理装置１１１は、決定木のノード８１と、記憶部８２を備えている。
【０１２５】
決定木のノード８１は、図７に示す決定木における各ノードである。記憶部８２は、送り先の子ノードを計算するための情報を保持する。決定木のノード８１は、記憶部８２と関連付けられる。このように、各ノードは、それぞれが固有の送り先の子ノードを計算するための情報を保持する手段を有する。各ノードは、保持された情報に従って、決定木を構成する。検索キーは、順次決定木の各ノードを辿り、葉ノードまで到達する。すなわち、各ノードは、葉ノードに到達するまで、検索キーを、順次決定木における次段のノードに送る。
【０１２６】
［葉ノードと第１のルール比較部の構成例］
図９を参照して、本発明の第２実施形態における葉ノードと第１のルール比較部の構成例について説明する。
【０１２７】
第１のルール比較部１２については、図３、図５に示される第１のルール比較部１２と同じである。決定木の根ノード７１、葉ノード７２については、図７に示される根ノード７１、葉ノード７２と同じである。葉ノード７２は、第１のルール比較部１２内のルール管理部１２１−１と関連付けられる。このように、各葉ノードは、それぞれルールを管理する手段を有し、自ノードに到達可能な検索キーについてのみ、ルールとの一致比較処理を行う手段を有する。そのため、葉ノード７２は、自ノードに到達可能な検索キーと一致比較処理を行う必要のあるルールのみを管理する。
【０１２８】
決定木による振り分け処理では、検索キーは、各ノードによる送り先の子ノードを決定する手段により、単一の葉ノードに到達する。このように、決定木による振り分け処理では、検索キーが到達する葉ノードは一意に決定される。但し、異なる検索キーが、それぞれ異なる葉ノードに到達する場合でも、両方の検索キーが同じルールと一致する場合がある。そのような場合には、ルールを２つに複製して、それぞれの葉ノードで管理するようにする。
【０１２９】
この場合、例えば、ルールは第１のルール比較部１２のルール管理部１２１−１〜ルール管理部１２１−Ｎに複製される。第１のルール比較部１２のルール管理部１２１−１〜ルール管理部１２１−Ｎは、複製されたルールをそれぞれ管理する。
【０１３０】
或いは、第２のルール比較部１３でルールを管理する。この場合、第２のルール比較部１３では、内部が複数の部分に分割されていないので、ルールの複製が発生することなくルールが管理される。
【０１３１】
［本実施形態における動作］
図１０のフローチャートを用いて、本発明の第２実施形態の動作について説明する。
【０１３２】
本発明の第２実施形態では、図４のステップＡ３における検索キーの振り分け処理が決定木を用いて実現される。具体的には、以下の通りである。
【０１３３】
（１）ステップＡ３−１
振り分け処理部１１は、自身に到達した検索キーを、決定木の根ノードに入力する。
【０１３４】
（２）ステップＡ３−２
振り分け処理部１１は、決定木の根ノードに関連付けられた送り先の子ノードを計算する情報を用いて、検索キーを送る子ノードを計算する。
【０１３５】
（３）ステップＡ３−３
振り分け処理部１１は、検索キーを、根ノードから送り先の子ノードへ送る。
【０１３６】
（４）ステップＡ３−４
振り分け処理部１１は、検索キーが葉ノードに到達したか確認するため、この送り先の子ノードが葉ノードであるか確認する。振り分け処理部１１は、この送り先の子ノードが葉ノードでなければ、再度、検索キーを送る子ノードを計算する。この場合、振り分け処理部１１は、葉ノードに到達するまで、子ノードの計算と子ノードへの検索キーの送信を繰り返す。
【０１３７】
（５）ステップＡ３−５
振り分け処理部１１は、この送り先の子ノードが葉ノードであれば、振り分け処理部での振り分け処理が終了しているので、振り分け結果を第１のルール比較部１２に送信する。
【０１３８】
このように、振り分け処理部１１は、検索キーを、第１のルール比較部１２の内部で分割された部分のうち、決定木の葉ノードに関連付けられた部分に送ることで、第１のルール比較部１２に振り分け処理の結果を伝えている。
【０１３９】
その他の動作については、第１実施形態の図４のフローチャートと同様であるため、説明は省略する。
【０１４０】
［本実施形態の効果］
本発明の第２実施形態によれば、振り分け処理は、決定木によって実現されることによって、決定木を用いた振り分け処理を行う振り分け処理部と、第２のルール比較部を備えたパケット分類器が実現される。
【０１４１】
振り分け処理部は、決定木の各ノードにおいて、検索キーの特定のビット位置を参照することで検索キーを送る子ノードを決定し、順次ノードを辿ることで、振り分け処理を実現する。決定木による振り分け処理では、ルールの複製が発生するルールを第２のルール比較部で管理することで、ルールの複製が抑制される。
【０１４２】
＜第３実施形態＞
次に、本発明の第３実施形態について図面を参照して説明する。
【０１４３】
本発明の第３実施形態は、本発明の第２実施形態に対して、振り分け処理部１１と第１のルール比較部１２とが、それぞれパイプライン構造で実現されているという点で異なる。
【０１４４】
［パケット分類器の構成例］
図１１を参照して、本発明の第３実施形態におけるパケット分類器２の構成例について説明する。
【０１４５】
パケット分類器２は、振り分け処理部２１と、第１のルール比較部２２と、複数のノードモジュール２３と、複数のルール比較器２４と、第２のルール比較部２５を備えている。
【０１４６】
振り分け処理部２１は、内部に複数のノードモジュール２３が直列に接続されており、パイプライン的に検索キーの振り分け処理を行う。
【０１４７】
第１のルール比較部２２は、内部に複数のルール比較器２４が直列に接続されており、パイプライン処理で検索キーとルールの比較を行う。ルール比較器２４は、図３、図５に示すルール管理部１２１−１からルール管理部１２１−Ｎのいずれかに相当する。
【０１４８】
第２のルール比較部２５は、第１実施形態における第２のルール比較部１３と同じである。
【０１４９】
本実施形態では、１つのノードモジュールが、木構造における同じ高さに位置するノード全てに対応している。
【０１５０】
［ノードモジュールの構成］
図１２を参照して、ノードモジュール２３の構成例について説明する。
【０１５１】
ノードモジュール２３は、子ノード情報記憶部２３１と、子ノード決定計算処理部２３２とを備えている。
【０１５２】
子ノード情報記憶部２３１は、当該ノードから検索キーを送る子ノードを計算するための情報を格納する。
【０１５３】
子ノード決定計算処理部２３２は、当該情報と検索キーを基に、次に、探索する子ノードを決定する。
【０１５４】
まず、決定木のノードモジュール２３は、入力２３３として検索キーを入力する。子ノード決定計算処理部２３２は、記憶部２３１に格納されている送り先の子ノードを計算するための情報と検索キーから、次に検索キーを送る子ノードを計算し、計算された子ノードに対して検索キーを出力する。送り先の子ノードも、同様のノードモジュール２３で構成され、同様の処理がなされることにより、検索キーが決定木を辿る処理を行う。なお、子ノード情報記憶部２３１は、メモリやレジスタ群で実現される。また、例えば、第３実施形態がプログラムで実現される場合は、ハードディスクで実現されていても良い。
【０１５５】
［子ノード情報記憶部の形態］
図１３を参照して、メモリで実現されている子ノード情報記憶部２３１の形態について説明する。
【０１５６】
ノードモジュール２３の子ノード情報記憶部２３１内の各アドレスには、子ノードを計算するための情報が格納されている。当該ノードモジュール２３の子ノード決定計算処理部２３２は、複数の子ノードのうち、検索キーの送り先の子ノードを計算して決定し、該当する子ノードのメモリアドレスを出力する。図１３では、子ノードが４つ存在しているため、０から３までの４つのアドレス領域が保持され、送り先の子ノードに対応するアドレスを出力する。
【０１５７】
子ノードモジュール２３の子ノード決定計算処理部２３２は、親ノードから出力されたメモリアドレスを、当該子ノードモジュール２３のアドレス線２３３１を通してメモリ２３１に入力し、指定されたアドレスに対応するノード情報を読み出す。
【０１５８】
同時に、親ノードは、検索キーを、ノードモジュール２３へ入力２３３２として入力し、子ノード決定計算処理部２３２に渡す。
【０１５９】
子ノード決定計算処理部２３２は、メモリから読み出されたノード情報と、検索キーを用いて、次の送り先の子ノードを計算し、同様に、アドレス線２３４１から次の子ノードの情報が格納されているメモリアドレスを出力し、検索キーも出力２３４２を通して次の子ノードへ送る。
【０１６０】
決定木の各ノード情報を保持するメモリアドレスの割り振りと、子ノード決定計算処理の仕方（手法）によって、振り分け処理部２１は、内部に、図１２のノードモジュールを１個乃至複数用いた決定木を構築する。
【０１６１】
ここでは、振り分け処理部２１は、ノードモジュール２３を複数個、直列に連結された構成をしている。
【０１６２】
［ノードモジュールの割り当て］
図１４を参照して、決定木の各レベルにノードモジュール２３が割り当てられている事例について説明する。
【０１６３】
ここでは、振り分け処理装置１１１の振り分け処理部２１は、ノードモジュール２３として、ノードモジュール２３−１と、ノードモジュールノードモジュール２３−２と、ノードモジュールノードモジュール２３−３とを有する。
【０１６４】
また、振り分け処理装置１１１は、決定木を構成する。決定木は、根ノード７１と、葉ノード７２とを有する。決定木の根ノード７１、葉ノード７２については、図７に示される根ノード７１、葉ノード７２と同じである。ここでは、葉ノード７２として、葉ノード７２−１、葉ノード７２−２、葉ノード７２−３、葉ノード７２−４を示す。
【０１６５】
根ノードモジュール２３−１は、根ノード７１に入力された検索キーに対して、根ノードモジュール２３−１に付随するメモリからのノード情報に基づいて子ノード決定計算処理を行い、転送先の子ノードを決定する。転送先の子ノードのノード情報は、子ノードのレベルのノードモジュールに関連付けられたメモリに格納されている。例えば、深さ２のノードのノード情報は、２段目のノードモジュール２３−２の子ノード情報記憶部２３１に格納されている。根ノード７１からの転送先ノードは、深さ２のノードのうちのいずれかであるので、ノードモジュール２３−１で計算された子ノード情報が格納されているメモリアドレスは、ノードモジュール２３−２に関連付けられたメモリに入力される。これによって、２段目のノードモジュール２３−２の子ノード決定計算処理部２３２には、決定木の根ノードから検索キーを転送する子ノードの情報が入力されることになる。
【０１６６】
以降、この処理を決定木の各深さに対応するノードモジュールで繰り返すことにより検索キーは、決定木を辿るのと同様の結果が得られる。
【０１６７】
第１のルール比較部２２もパイプライン的に処理することにより、パケット分類器全体がパイプライン的に処理されることになる。これにより、第１のルール比較部２２内の分割数と決定木の葉ノードの数は等しくなる。よって、図１４において、決定木の同じ深さのノード情報を１つのノードモジュールのメモリアドレスで区別して、メモリで保持していていたのと同様の方法を用いれば、第１のルール比較部も、メモリを用いて複数のルールを管理できる。
【０１６８】
［ルール比較器の構成］
図１５を参照して、第１のルール比較部２２内のルール比較器２４の構成例について説明する。
【０１６９】
ルール比較器２４は、ルール管理部２４１と、比較処理部２４２を備えている。
【０１７０】
ルール管理部２４１は、ルールを保持している。
【０１７１】
比較処理部２４２は、検索キーとルールの比較処理を行う。
【０１７２】
なお、ルール管理部２４１がメモリで構成される場合は、第１のルール比較部２２の内部の分割された部分は、ルール管理部２４１のメモリのアドレス空間に割り当てられる。ルール管理部２４１のアドレスと決定木の葉ノードは、１対１に対応する。ここでは、第１のルール比較部２２は、決定木の各葉ノードと関連付けられているため、検索キーが葉ノードに到達した時には、ルール比較器２４のメモリに対して、その葉ノードに対応するアドレスを入力する。
【０１７３】
決定木による振り分け処理では、検索キーが複数の葉ノードに到達することがなく、１つのルール管理部２４１から複数のルールを読み出さなくても良いため、図１６のように、このようなルール管理部２４１を備えたルール比較器２４を複数直列に接続することで、内部が複数に分割されている第１のルール比較部２２が実現される。このルール比較器２４による処理を１段ずつパイプライン的に処理することにより、第１のルール比較部２２での比較処理がパイプライン構造で実現される。
【０１７４】
各ルール比較器２４内のルール管理部２４１がメモリで実現される場合、分割された部分であるルール管理部２４１は、同じ部分に格納されるルールを、各ルール比較器２４で同じメモリアドレスに格納することにすると、順次同じアドレスを次段のルール比較器に入力することで、順次同じ内部部分に格納されているルールが各段のルール比較器で読み出される。
【０１７５】
図１５のルール比較器２４では、ルール比較処理部２４２に対して、単一のルール管理部２４１が関連付けられている。ルール比較処理部２４２は、ルール管理部２４１から単一のルールを読み出す。ルール比較処理部２４２は、１つのルール管理部２４１から、図１１の第１のルール比較部２２内の１つの分割された部分で管理されている全てのルール、或いは、複数のルールを読み出しても良い。
【０１７６】
第２のルール比較部２５は、内部が分割されていないので、どのように定義されているルールでも管理できる。パケット分類器１がハードウェアで実現される場合、第２のルール比較部２５は、ワイルドカードも含めて一致比較が可能なＴＣＡＭ等のデバイスで実現される。また、この第２のルール比較部は、検索キーとルールの一致比較処理をパイプライン処理で行うパイプライン比較器で実現されても良い。このとき、図１６と同様に、第２のルール比較部２５の内部に、ルール比較器１５に類似したルール比較器を直列に並べたパイプライン構造のルール比較器が配置され、パイプライン処理でルールと検索キーの一致比較を行う。
【０１７７】
［本実施形態における動作］
図１７のフローチャートを用いて、本発明の第３実施形態の動作について説明する。
【０１７８】
本発明の第３実施形態では、図４のステップＡ３における検索キーの振り分け処理がパイプライン処理で実現される。具体的には、以下の通りである。
【０１７９】
（１）ステップＡ３−６
振り分け処理部１１は、自身に到達した検索キーを、決定木の根ノードモジュール２３−１に入力する。
【０１８０】
（２）ステップＡ３−７
振り分け処理部２１は、根ノードモジュール２３−１に入力された検索キーに対して、根ノードモジュールのノード情報を基に、送り先の子ノードを計算する。このとき、振り分け処理部２１は、子ノードモジュール２３−２内に保持されている子ノード情報記憶部２３１に対するメモリアドレスを計算する。
【０１８１】
（３）ステップＡ３−８
振り分け処理部２１は、検索キーと、計算された子ノード情報記憶部２３１のメモリアドレスを、根ノードモジュール２３−１から、その子ノードモジュール２３−２へ送る。
【０１８２】
（４）ステップＡ３−９
振り分け処理部１１は、検索キーが葉ノードに到着したか確認するため、この送り先の子ノードモジュールが葉ノードであるか確認する。振り分け処理部１１は、この送り先の子ノードモジュールが葉ノードでなければ、再度、検索キーを送る子ノードモジュールを計算する。この場合、振り分け処理部１１は、葉ノードに到達するまで、子ノードモジュールの計算と子ノードモジュールへの検索キーの送信を繰り返す。
【０１８３】
（５）ステップＡ３−１０
振り分け処理部１１は、この送り先の子ノードモジュールが葉ノードであれば、葉ノードと第１のルール比較部の分割部分が１対１に対応するため、葉ノードモジュールから、第１のルール比較部に対して、当該葉ノードモジュールと関連付けられているメモリアドレス及び検索キーを送る。
【０１８４】
このメモリアドレスは、図１５におけるルール比較器２４のルール管理部２４１に入力される。ルール比較器２４のルール管理部２４１には、ルールが格納されている。ルール比較器２４のルール比較処理部２４２は、葉ノードから出力される検索キーと、ルール比較器２４のルール管理部２４１で管理されているルールとに対する一致比較処理を行う。
【０１８５】
第１のルール比較部２２も、図１６に示されるように、内部で直列に接続されたルール比較器２４がパイプライン処理を行うので、各ルール比較器２４において、順次検索キーとメモリアドレスを次のルール比較器２４に送り、一致比較処理を行う。
【０１８６】
振り分け処理部１１は、子ノードが葉ノードでなければ、そのノードで、次の子ノードアドレスを計算して、次の子ノードにメモリアドレスと検索キーを順次送り、検索キーが葉ノードに到達するまで、この処理を繰り返す。
【０１８７】
［本実施形態の効果］
本発明の第３実施形態によれば、振り分け処理部の決定木をハードウェアで実現することにより、ソフトウェアによって、実現する場合と比較して、低消費電力で、かつ処理性能の向上が期待できるため、遅延時間の短いパケット分類器が実現される。
【０１８８】
また、パイプライン構造を取ることにより、連続してパケットを処理することが可能になる。
【０１８９】
＜第４実施形態＞
次に、本発明の第４実施形態について図面を参照して説明する。
【０１９０】
本発明の第４実施形態は、本発明の第３実施形態に対して、振り分け処理部と第１のルール比較部を複数備えている点で異なる。
【０１９１】
［パケット分類器の構成例］
図１８を参照して、本発明の第４実施形態におけるパケット分類器３の構成例について説明する。
【０１９２】
パケット分類器３は、振り分け処理部３１（３１−ｉ、ｉ＝１〜Ｎ）と、第１のルール比較部３２（３２−ｉ、ｉ＝１〜Ｎ）と、第２のルール比較部３３を備えている。
【０１９３】
パケット分類器１は、入力３０を受け取る。入力１０は、外部からパケット分類器３への入力である。入力３０は、図１に示されるパケット分類器１における入力１０に相当する。ここでは、パケット分類器１は、入力３０として、パケット分類器１において検索を行うための検索キーを、振り分け処理部３１（３１−ｉ、ｉ＝１〜Ｎ）と、第２のルール比較部３３へ入力する。
【０１９４】
振り分け処理部３１（３１−ｉ、ｉ＝１〜Ｎ）の各々は、図１に示されるパケット分類器１における振り分け処理部１１に相当する。
【０１９５】
第１のルール比較部３２（３２−ｉ、ｉ＝１〜Ｎ）の各々は、図１に示されるパケット分類器１における第１のルール比較部１２に相当する。
【０１９６】
第２のルール比較部３３は、図１に示されるパケット分類器１における第２のルール比較部１３に相当する。
【０１９７】
振り分け処理部３１（３１−ｉ、ｉ＝１〜Ｎ）と第１のルール比較部３２（３２−ｉ、ｉ＝１〜Ｎ）は、それぞれ１対１で接続されている。
【０１９８】
パケット分類器１は、第１のルール比較部３２での検索結果と、第２のルール比較部３３での検索結果を、それぞれ結果として出力する。この出力を出力３４とする。
【０１９９】
［本実施形態における動作］
図１９のフローチャートを参照して、本発明の第４実施形態におけるパケット分類器３の動作について説明する。
【０２００】
本発明の第４実施形態では、複数の振り分け処理部と複数の第１のルール比較部を備えており、それぞれが並列に実行される。
【０２０１】
本実施形態では、複数の振り分け処理部と複数の第１のルール比較部の各々において、図４のステップＡ２〜ステップＡ５が実施される。
【０２０２】
（１）ステップＢ１
パケット分類器３は、パケット分類器への入力１０から検索キーを受け取る。
【０２０３】
（２）ステップＢ２
パケット分類器３は、入力１０として入力された検索キーを、振り分け処理部３１（３１−ｉ、ｉ＝１〜Ｎ）の各々へ送る。
【０２０４】
（３）ステップＢ３
振り分け処理部３１（３１−ｉ、ｉ＝１〜Ｎ）の各々は、振り分けポリシーに従って、検索キーの振り分け処理を実行する。
【０２０５】
（４）ステップＢ４
振り分け処理部３１（３１−ｉ、ｉ＝１〜Ｎ）の各々は、振り分け処理の結果に従って、検索キーを第１のルール比較部３２（３２−ｉ、ｉ＝１〜Ｎ）の各々へ入力する。
【０２０６】
（５）ステップＢ５
第１のルール比較部３２（３２−ｉ、ｉ＝１〜Ｎ）の各々は、振り分けられた検索キーと、分割されたルール管理部１２１−１〜１２１−Ｎで保持されるルールとの比較処理を行う。
【０２０７】
（６）ステップＢ６
また、パケット分類器３は、入力１０として入力された検索キーを、第２のルール比較部３３へ送る。
【０２０８】
ステップＢ２以降（ステップＢ２〜Ａ５）と、ステップＢ６以降（ステップＢ６〜Ａ７）は、並列に処理を行うことが可能であるので、この例では並列に実行しているが、特に並列処理を限定するものではない。
【０２０９】
（７）ステップＢ７
第２のルール比較部３３は、振り分けられた検索キーと、第２のルール比較部３３で保持されているルールとの比較処理を行う。
【０２１０】
（８）ステップＢ８
パケット分類器３は、第１のルール比較部３２（３２−ｉ、ｉ＝１〜Ｎ）の各々と第２のルール比較部３３での比較処理の結果を、パケット分類器３からの出力１４として出力する。
【０２１１】
なお、本実施形態の図１９のフローチャートでは、同期を取って出力がなされているが、必ずしも同期を取る必要はない。
【０２１２】
［本実施形態の効果］
上記のように、本発明の第４実施形態は、複数の振り分け処理部と、それに接続する複数の第１のルール比較部とを備えている。
【０２１３】
本発明の第４実施形態によれば、振り分け処理部で一意に振り分けることができなかったルールは、複製が発生するか、第２のルール比較部で管理されるが、複数の振り分け処理部を用いることにより、ある振り分け処理部では振り分けられないが、他の振り分け処理部では振り分けが可能なルールも、第１のルール比較部で管理が可能になる。これにより、第２の振り分け処理部を用いずとも、ルールの複製が抑制される。該ルールは、いずれの決定木でも複製が発生する場合にのみ第２のルール比較部に配置される。
【０２１４】
第２のルール比較部をハードウェアで実現した場合、第２のルール比較部は、内部に保持している全てのルールとの一致比較処理が行われるため、第１のルール比較部と比較して高価で消費電力も大きくなるが、第４実施形態により、決定木を複数用いることで第２のルール比較部の容量を小さくでき、結果としてコストを抑制することができる。
【０２１５】
＜第５実施形態＞
次に、本発明の第５実施形態について図面を参照して説明する。
【０２１６】
本発明の第５実施形態では、本発明の第１乃至第４実施形態における、振り分け処理部、第１のルール比較部、及び第２のルール比較部の構成を決定する。
【０２１７】
［パケット分類器の構成例］
図２０を参照して、本発明に係るパケット分類器を設計する計算機（パケット分類器設計装置）の構成例について説明する。
【０２１８】
当該計算機は、処理装置４０と、記憶装置４１とを備えている。
【０２１９】
［記憶装置］
記憶装置４１は、第１のルールのプロファイル４１０を予め記憶している。第１のルールのプロファイル４１０は、ワイルドカード含有率４１１と、ルール数４１２とを含む。更に、記憶装置４１は、第１の目標性能４１３を予め記憶している。
【０２２０】
第１のルールのプロファイル４１０は、ルールセットの第１のプロファイルである。
【０２２１】
ワイルドカード含有率４１１は、ビット位置毎のワイルドカード含有率である。ワイルドカード含有率４１１は、次のような割合で与えられる。例えば、ビット毎にワイルドカードが指定できるビットのワイルドカード含有率は、ビット位置毎に、ワイルドカードが出現するルールの割合で与えられる。また、例えば、フィールド毎にワイルドカードが指定できるフィールドのワイルドカード含有率は、フィールドにワイルドカードが含まれる割合で与えられる。また、例えば、「Ｒａｎｇｅ  Ｍａｔｃｈ」と「Ｅｘａｃｔ  Ｍａｔｃｈ」の両方が指定できるフィールドのワイルドカードの含有率は、当該フィールドのレンジマッチの含有率で与えられる。また、例えば、「Ｐｒｅｆｉｘ  Ｍａｔｃｈ」と「Ｅｘａｃｔ  Ｍａｔｃｈ」の両方が指定できるフィールドのワイルドカードの含有率は、当該フィールドの「Ｐｒｅｆｉｘ  Ｍａｔｃｈ」の含有率で与えられる。
【０２２２】
ルール数４１２は、パケット分類器に格納するルールの総数である。
【０２２３】
第１の目標性能４１３の例として、メモリの容量、消費電力、半導体回路で実現した時の回路面積、ソフトウェアで実現した時のプログラムサイズ、単位時間あたりの検索回数、動作周波数、検索キーを入力してから検索結果を得るまでの時間、等が考えられる。
【０２２４】
［処理装置］
処理装置４０は、構成の決定部４００と、性能の評価部４０３とを備えている。
【０２２５】
構成の決定部４００は、振り分け処理部構成の決定部４０１と、ルール比較部構成の決定部４０２とを備えている。
【０２２６】
振り分け処理部構成の決定部４０１は、ワイルドカード含有率４１１と、パケット分類器内で保持するルール数４１２から、振り分け処理部の構成を決定する。振り分け処理部の構成の例として、振り分けポリシー、振り分けポリシーを保持する記憶領域の容量、振り分け処理部の決定木の高さ、振り分け処理部の決定木のノードあたりの分岐数、同時に振り分け処理が可能な検索キーの数、等が考えられる。また、振り分け処理部構成の決定部４０１は、ワイルドカード含有率４１１と、パケット分類器内で保持するルール数４１２から、ルールを、第１のルール比較部と第２のルール比較部に分割して配置するためのルールの分割配置の基準も決定する。
【０２２７】
ルール比較部構成の決定部４０２は、振り分け処理部の構成とルール数から、第１のルール比較部の構成、並びに、第２のルール比較部の構成を決定する。第１のルール比較部の構成の例として、保持するルール数、内部を分割したブロックの数、同時比較数、パイプラインで構成した時のパイプライン段数、パイプライン１段あたりの比較数、等が考えられる。第２のルール管理部の構成の例として、保持するルール数、パイプラインで構成した時のパイプライン段数、パイプラインの数、同時比較数、等が考えられる。
【０２２８】
性能の評価部４０３は、振り分け処理部構成の決定部４０１及びルール比較部構成の決定部４０２によって決定された構成から、パケット分類器の評価を行う。性能の評価部４０３の例として、性能見積もり手段、メモリ容量見積もり手段、消費電力見積もり手段、半導体回路で実現した時の回路面積見積もり手段、ソフトウェアで実現した時のプログラムサイズ見積もり手段、処理時間見積もり手段、動作周波数見積もり手段、単位時間あたりの検索回数の見積もり手段、等が考えられる。
【０２２９】
記憶装置４１で保持されている第１のルールのプロファイル４１０は、構成の決定部４０１及びルール比較部構成の決定部４０２においても、性能の評価部４０３においても使用されることがある。
【０２３０】
処理装置４０は、性能の評価部４０３において評価が終了すると、パケット分類器設計データ４１４を記憶装置４１に記憶する。
【０２３１】
パケット分類器は、このパケット分類器設計データ４１４を基に構成される。すなわち、パケット分類器を動作させる計算機は、このパケット分類器設計データ４１４を入力し、このパケット分類器設計データ４１４を基にパケット分類器を構成する。なお、パケット分類器を設計する計算機と、パケット分類器を動作させる計算機は、同一の計算機でも良い。
【０２３２】
［本実施形態における動作］
図２１のフローチャートを参照して、本発明の第５実施形態におけるパケット分類器の構成の決定方法について説明する。
【０２３３】
（１）ステップＣ１
処理装置４０は、記憶装置４１から、第１のルールのプロファイル４１０を読み出し、入力として振り分け処理部構成の決定部４０１に与える。
【０２３４】
（２）ステップＣ２
振り分け処理部構成の決定部４０１は、振り分け処理部での振り分けポリシーを決定し、ルール比較部構成の決定部４０２に渡す。振り分けポリシーの例として、分割に使用するビット位置や、ルール配置の基準（分割に使用する閾値、振り分けに使用するフィールド、振り分け分岐数）等が考えられる。例えば、振り分け処理部構成の決定部４０１は、全ての場合を探索する全探索や、ランダムに参照ビット位置、ルール配置の基準を生成することを繰り返すモンテカルロ手法等で、ビット位置や、ルール配置の基準を決定する。
【０２３５】
（３）ステップＣ３
ルール比較部構成の決定部４０２は、決定した振り分けポリシーと、ビット位置毎のワイルドカード含有率４１１と、ルール数４１２から、第１のルール比較部、及び、第２のルール比較部に格納するルール数を決定する。
【０２３６】
例えば、ルール比較部構成の決定部４０２は、振り分けポリシー、ワイルドカード含有率、及び、ルールの総数から、仮に全てのルールを第１のルール比較部に格納した場合に複製されるルールの数を求める。また、ルール比較部構成の決定部４０２は、振り分け処理部で参照するビット位置とワイルドカードのビット位置毎の出現率を参照した場合、第１のルール比較部で管理すると複製が発生するルールの割合を求める。ルール比較部構成の決定部４０２は、この複製が発生するルールの割合と、ルール数と第１のルール比較部２２の分割数を参照することによって、複製発生後のルール数を求める。また、ルール比較部構成の決定部４０２は、ルールの複製を行わないようにルールを配置すると決めると、振り分け処理部で参照するビット位置にワイルドカードが存在するルールを、全て第２のルール比較部で管理することになるため、ビット位置毎のワイルドカード含有率を参照することによって、複製が発生するルールの割合を求める。求められたルールの割合は、第２のルール比較部で管理されるルールの割合でもある。
【０２３７】
ルール比較部構成の決定部４０２は、第２のルール比較部で管理されるルールの割合と、ルール数４１２を参照することにより、第２のルール比較部に格納するルール数を決定する。ルール比較部構成の決定部４０２は、全体のルール数から第２のルール比較部で管理されるルール数を引くことにより、第１のルール比較部で管理されるルール数を決定する。また、ルール比較部構成の決定部４０２は、ルールの複製をある閾値以下とするようにルールを配置すると決めて、第１のルール比較部に格納するルール数を決定しても良い。
【０２３８】
このように、ルール比較部構成の決定部４０２は、決定された分割に使用するビット位置とルール配置の基準、及び入力されたビット位置毎のワイルドカードの含有率から、第１のルール比較部に配置されるルール、及び第２のルール比較部に配置されるルール、及び第１のルール比較部における複製の発生率を、それぞれ決定する。ルール比較部構成の決定部４０２は、入力されたルール数を用いて、第１のルール比較部、又は、第２のルール比較部における管理ルール数（配置されるルール数）を決定する。また、ルール比較部構成の決定部４０２は、ステップＣ２で振り分け処理部の振り分けポリシーを決定しているので、第１のルール比較部の内部分割数を併せて決定する。
【０２３９】
（４）ステップＣ４
ルール比較部構成の決定部４０２は、第１のルール比較部と第２のルール比較部の容量（サイズ）を、それぞれ決定する。ルール比較部構成の決定部４０２は、ステップＣ３で決定された管理ルール数から、直ちに、ルール比較部に求められる容量を決定する。ステップＣ２において決定した参照するビット位置やルールを配置する基準では、大きな容量の第２のルール比較部が必要になる場合がある。また、複製が発生して大きな容量の第１のルール比較部が必要になる場合もある。
【０２４０】
（５）ステップＣ５
性能の評価部４０３は、他の構成でも評価処理を行うか確認する。他の構成でも評価処理を行う場合、再度、振り分け処理部での振り分けポリシーを決定する。他の構成では評価処理を行わない場合、処理を終了する。すなわち、性能の評価部４０３は、ルール比較部構成の決定部４０２で求められたルール比較部の容量や電力を目的関数として、目的関数を最小化するために、ステップＣ４で評価処理を行った後に、ステップＣ２の構成決定処理に戻る。目的関数が最小となれば、処理を終了する。
【０２４１】
［本実施形態の効果］
第５実施形態では、予め定められたルールを解析することにより、構成を決定するのではなく、ルールに含まれるビット位置毎のワイルドカードの含有率とルール数を基に、パケット分類器の構成を決定する。
【０２４２】
ビット位置毎のワイルドカードの含有率が入力されることにより、具体的なデータセットが存在しなくても入力されたルール数を管理するための、本発明の第１、第２、第３、第４実施形態における振り分け処理部、第１のルール比較部、及び第２のルール比較部の構成、及び容量を決定することが可能となる。
【０２４３】
これにより、どのようなルールが入力されるかわからない状況でも、ビット位置毎のワイルドカード含有率と、ルール数というルールのプロファイルを入力することによって、パケット分類器を設計することができる。
【０２４４】
＜第６実施形態＞
次に、本発明の第６実施形態について図面を参照して説明する。
【０２４５】
［パケット分類器の構成例］
図２２を参照して、本発明に係るパケット分類器を設計する計算機の構成例について説明する。
【０２４６】
当該計算機は、処理装置５０と、記憶装置５１とを備えている。
【０２４７】
処理装置５０は、図２０に示される処理装置４０と共通の処理装置でも良い。また、記憶装置５１は、図２０に示される記憶装置４１と共通の記憶装置でも良い。
【０２４８】
［記憶装置］
記憶装置５１は、第２のルールのプロファイル５１０を予め記憶している。第２のルールのプロファイル５１０は、ワイルドカード含有率５１１と、ルール数５１２と、バラつき（分布、分散）具合５１３を有する。更に、記憶装置５１は、制約条件５１４を予め記憶している。
【０２４９】
第２のルールのプロファイル５１０は、ルールセットの第２のプロファイルである。
【０２５０】
ワイルドカード含有率５１１は、基本的に、図２０に示されるワイルドカード含有率４１１と同じである。
【０２５１】
ルール数５１２は、基本的に、図２０に示されるルール数４１２と同じである。
【０２５２】
バラつき具合５１３は、ワイルドカード含有率５１１のバラつき具合である。
【０２５３】
制約条件５１４は、性能を評価する際の制約条件である。
【０２５４】
［処理装置］
処理装置５０は、構成の決定部５０１と、性能の評価部５０２とを備えている。
【０２５５】
構成の決定部５０１は、ビット位置毎のワイルドカード含有率５１１とパケット分類器内で保持するルール数５１２から、振り分け処理部１１、第１のルール比較部２２、及び第２のルール管理部の構成、容量を決定する。構成の決定部５０１は、図２０に示される構成の決定部４００に相当する。すなわち、構成の決定部５０１は、図２０に示される振り分け処理部構成の決定部４０１とルール比較部構成の決定部４０２を含んでいても良い。
【０２５６】
性能の評価部５０２は、構成の決定部５０１によって決定された各種ハードウェアパラメータから、パケット分類器の容量や、容量から見積もられる電力を計算し、評価を行う。性能の評価部５０２は、図２０に示される性能の評価部４０３に相当する。性能の評価部５０２は、評価の際、記憶装置５１で保持されている、ワイルドカード含有率のバラつき具合５１３や制約条件５１４も使用する。
【０２５７】
また、構成の決定部５０１も、これら記憶装置５１で保持されているルールのデータを使用することがある。構成の決定部５０１と性能の評価部５０２は、制約条件５１４を満たしながら、目的関数の最適化を行い、所望の性能を達成する構成が決定された場合、パケット分類器設計データ５１５を出力する。
【０２５８】
処理装置５０は、性能の評価部５０２において評価が終了すると、パケット分類器設計データ５１５を記憶装置５１に記憶する。
【０２５９】
パケット分類器は、このパケット分類器設計データ５１５を基に構成される。すなわち、パケット分類器を動作させる計算機は、このパケット分類器設計データ５１５を入力し、この設計データを基にパケット分類器を構成する。なお、パケット分類器を設計する計算機と、パケット分類器を動作させる計算機は、同一の計算機でも良い。
【０２６０】
［本実施形態における動作］
図２３のフローチャートを参照して、本発明の第６実施形態におけるパケット分類器の構成の決定方法について説明する。
【０２６１】
（１）ステップＤ１
処理装置５０は、記憶部５１から、ビット位置毎のワイルドカードの含有率５１１と管理ルール数５１２に加えて、更にワイルドカードのバラつき具合５１３と制約条件５１４を読み出し、入力として構成の決定部５０１に与える。
【０２６２】
（２）ステップＤ２
構成の決定部５０１は、振り分けポリシーとして、分割に使用するビット位置と、ルール配置の基準を決定する。
【０２６３】
（３）ステップＤ３
構成の決定部５０１は、それを基に、バラつきを持ったワイルドカードの含有率を考慮して、管理ルール数を確率的に決定する（確率で表す）。「バラつきを持ったワイルドカードの含有率」の詳細については後述する。
【０２６４】
（４）ステップＤ４
構成の決定部５０１は、入力された制約条件５１４を基にして構成を決定し、性能の評価部５０２に渡す。このとき、構成の決定部５０１は、制約条件を容量とすれば、その容量の制限を満たしながら、最良のルール管理成功率を達成する構成を決定する。一方で、制約条件にルール管理成功率を設定することによって、所望のルール管理成功率を達成するルール比較部の容量を決定する。容量の制約条件として、第２のルール比較部の容量だけではなく、第１のルール比較部の容量も制約条件として、設定することも可能である。
【０２６５】
（５）ステップＤ５
性能の評価部５０２は、このサンプリングされたバラつきを持ったワイルドカード含有率を用いて、パケット分類器の性能を評価する。「パケット分類器の性能評価」の詳細については後述する。また、性能の評価部５０２は、他の構成でも評価処理を行うか確認する。他の構成でも評価処理を行う場合、再度、振り分け処理部で振り分けポリシー（分割に使用するビット位置、及びルール配置の基準）を決定する。他の構成では評価処理を行わない場合、処理を終了する。すなわち、性能の評価部５０２は、構成の決定部５０１で求められたルール比較部の容量や電力を目的関数として、目的関数を最小化するために、ステップＤ４で評価処理を行った後に、ステップＤ２の構成決定処理に戻る。目的関数が最小となれば、処理を終了する。構成の決定部５０１は、ステップＤ２で、異なるワイルドカードのバラつき具合や、制約条件を入力することで、異なる構成のパケット分類器の構成を得る。
【０２６６】
［バラつきを持ったワイルドカードの含有率］
図２４Ａ、図２４Ｂを参照して、バラつきを持ったワイルドカードの含有率について説明する。
【０２６７】
図２４Ａ、図２４Ｂにおいて、グラフの横軸は、ｎビット目のワイルドカードの含有率を表している。また、グラフの縦軸は、横軸の値（ｎビット目のワイルドカードの含有率）の度数である。
【０２６８】
（１）ビット毎
図２４Ａは、ビット毎のワイルドカードの含有率の確率密度関数である。本実施形態では、ｎビット目のワイルドカードの含有率のみを入力として与えるので、ｎビット目のワイルドカードの含有率を５０％として入力すると、５０％以外にはならない。よって、図２４Ａでは、ｎビット目のワイルドカードの含有率が５０％である確率が１００％となっている。
【０２６９】
（２）バラつきを与えた場合
図２４Ｂでは、ｎビット目のワイルドカードの含有率にバラつきを与えた場合のワイルドカードの含有率の確率密度関数である。ｎビット目のワイルドカードの含有率を５０％とし、バラつきを与えた場合、５０％をピークとして、その左右に広がりを持った分布となる。例として、分布が正規分布である場合、正規分布を決定するパラメータは、一般的に平均値μと標準偏差σである。標準偏差を大きく取れば、その分バラつき具合も大きくなる。ビット位置毎のワイルドカード含有率を平均μとし、ワイルドカード含有率のバラつき具合として標準偏差、或いは、分散の値が入力され、ワイルドカード含有率のバラつき具合が決定される。但し、分布は正規分布に限定されない。
【０２７０】
［ワイルドカード含有率の決定方法］
図２５を参照して、ワイルドカード含有率の決定方法について説明する。
【０２７１】
（１）ステップＥ１
構成の決定部５０１は、ビット位置毎のワイルドカード含有率５１１（平均μ）を入力する。
【０２７２】
（２）ステップＥ２
構成の決定部５０１は、ワイルドカード含有率のバラつき具合５１３（分散σ）を入力する。
【０２７３】
（３）ステップＥ３
構成の決定部５０１は、入力されたビット位置毎のワイルドカード含有率５１１（平均μ）と、ワイルドカード含有率のバラつき具合５１３（分散σ）を用いて、正規分布に従ったバラつきを持つビット位置毎のワイルドカード含有率を得る。
【０２７４】
構成の決定部５０１は、この正規分布に従い、複数回サンプリングを行うことによって、ビット位置毎のワイルドカード含有率を得る。
【０２７５】
構成の決定部５０１は、サンプリングの回数が多ければ、大数の法則に従って、設定した正規分布に忠実に沿ったバラつきを再現する。
【０２７６】
（４）ステップＥ４
構成の決定部５０１は、バラつきを考慮したワイルドカード含有率のルールセットを、性能の評価部５０２に渡す。
【０２７７】
［パケット分類器の性能評価］
図２６Ａ、図２６Ｂに示されるように、バラつきを持たせたワイルドカード含有率を用いることにより、管理可能なルール数が確率で表される。
【０２７８】
図２６Ａに示されるように、図２６Ａのようなバラつきを持たないワイルドカード含有率と、ルール配置の基準を用いて管理可能なルール数を評価すると、管理可能なルール数は、ある値で決定する。しかしながら、図２６Ｂのようなバラつきを持ったワイルドカード率を用いることにより第１のルール比較部の管理可能なルール数が確率で表される。
【０２７９】
第１のルール比較部で管理しないルールは、第２のルール比較部で管理されるため、第２のルール比較部の容量を大きくすると、第１のルール比較部で管理できるルール数が少ない時でも、第２のルール比較部で残りのルールを管理できる確率が高くなる。逆に、第２のルール比較部の容量を小さくすると、第２のルール比較部でも管理できないルールの数が発生するため、入力したルール数が管理できる成功率が低くなる。
【０２８０】
図２７に示されるように、第２のルール比較部の容量とルール管理の成功率は、相反する関係にある。
【０２８１】
［本実施形態の効果］
前述した本発明の第５実施形態では、入力としてビット位置毎のワイルドカード含有率のみを入力するため、構成されたパケット分類器に異なるワイルドカード含有率のルールセットが入力された場合、当初の性能が発揮されるかどうかは不明となる。一方、本発明の第６実施形態によれば、入力としてビット位置毎のワイルドカードの含有率と、ワイルドカード含有率のバラつきの度合を入力することにより、バラつきを持ったワイルドカード含有率を用いて管理可能なルール数と容量を評価する。本実施形態によって、構成されたパケット分類器に、当初設定したワイルドカード含有率とは、異なるルールセットが入力された場合にも、確率的に性能を決定することができる。
【０２８２】
＜第７実施形態＞
次に、本発明の第７実施形態について図面を参照して説明する。
【０２８３】
［パケット分類器の構成例］
本実施形態では、本発明の第６実施形態と同様に、図２２に示されるような、パケット分類器を設計する計算機の構成例について説明する。
【０２８４】
当該計算機は、処理装置５０と、記憶装置５１とを備えている。
【０２８５】
［記憶装置］
記憶装置５１については、基本的に、第６実施形態と同様である。
【０２８６】
［処理装置］
処理装置５０は、構成の決定部５０１と、性能の評価部５０２を有する。
【０２８７】
構成の決定部５０１については、基本的に、第６実施形態と同様である。
【０２８８】
性能の評価部５０２は、構成の決定部５０１とルール比較部構成の決定部５０２によって決定された各種ハードウェアパラメータから、パケット分類器のバラつき耐性（ロバスト性）の評価を行う。また、併せてパケット分類器の容量や消費電力の評価を行っても良い。
【０２８９】
構成の決定部５０１及び性能の評価部５０２は、それぞれ、記憶装置５１で保持されている第２のルールのプロファイル５１０を使用することがある。構成の決定部５０１及び性能の評価部５０２は、制約条件５１４として、ロバスト性能や、消費電力やパケット分類器の記憶容量等の条件を満たしながら、目的関数の最適化を行い、所望の性能を達成する構成が決定された場合、パケット分類器設計データ５１５を出力する。
【０２９０】
処理装置５０は、性能の評価部５０２において評価が終了すると、パケット分類器設計データ５１５を記憶装置５１に記憶する。
【０２９１】
パケット分類器は、このパケット分類器設計データ５１５を基に構成される。すなわち、パケット分類器を動作させる計算機は、このパケット分類器設計データ５１５を入力し、この設計データを基にパケット分類器を構成する。なお、パケット分類器を設計する計算機と、パケット分類器を動作させる計算機は、同一の計算機でも良い。
【０２９２】
［本実施形態における動作］
図２８のフローチャートを参照して、本発明の第７実施形態におけるパケット分類器の構成の決定方法について説明する。
【０２９３】
（１）ステップＦ１
処理装置５０は、記憶部５１から、ビット位置毎のワイルドカードの含有率５１１と管理ルール数５１２に加えて、更にワイルドカードのバラつき具合５１３と制約条件５１４を読み出し、入力として与える。
【０２９４】
（２）ステップＦ２
構成の決定部５０１は、振り分けポリシーとして、分割の際に参照するビット位置と、ルール配置の基準を決定する。
【０２９５】
（３）ステップＦ３
構成の決定部５０１は、バラつきを持ったワイルドカード含有率５１１を基に、ステップＦ２で決定した分割に使用するビット位置とルール配置の基準に従って、第１のルール比較部２２と第２のルール管理部に配置されるルール数を計算する。
【０２９６】
（４）ステップＦ４
構成の決定部５０１は、第１のルール比較部２２と第２のルール管理部に配置されるルールの数を基に、第１のルール比較部２２と第２のルール管理部の容量を決定し、決定された容量で、全てのルールが管理することができる割合を計算し、性能の評価部５０２に渡す。このとき、決定された容量で、全てのルールが管理することができる割合を計算することにより、ステップＦ２で決定した振り分けポリシー、及びステップＦ３で決定した構成について、入力されたワイルドカード率のバラつきに対する耐性を評価することができる。
【０２９７】
（５）ステップＦ５
性能の評価部５０２は、算出された割合を基に、決定された構成の性能の評価を行う。ここでは、入力されたワイルドカード率のバラつきに対する耐性を評価する。また、性能の評価部５０２は、他の構成でも評価処理を行うか確認する。他の構成でも評価処理を行う場合、再度、振り分け処理部で振り分けポリシー（分割の際に参照するビット位置、及びルール配置の基準）を決定する。他の構成では評価処理を行わない場合、処理を終了する。
【０２９８】
［本実施形態の効果］
本発明の第７実施形態によれば、本発明の第６実施形態に示された、ルールのプロファイルを用いて設計されたパケット分類器に、バラつきを持たせたワイルドカードを複数入力した場合、どれくらいのルールがパケット分類器の記憶装置に格納することができずにあふれるかを評価することができる。そのため、設計時に入力したルールのプロファイルと、実際には、入力されたルールセットのワイルドカード含有率が異なった場合でも、パケット分類器にルール数が格納できるかどうかを評価することができる。これにより、ロバスト性の高いパケット分類器の設計手法が提供される。
【０２９９】
以上が、本発明の各実施形態についての説明である。
【０３００】
＜各実施形態の関係＞
なお、上記の各実施形態は、組み合わせて実施することも可能である。
【０３０１】
＜第１の実施例＞
以下、本発明の第１の実施例について説明する。
【０３０２】
本実施例は、本発明の第１実施形態に対応するものである。
【０３０３】
［パケット分類器が保持するルール］
図２９を参照して、第１の実施例におけるパケット分類器１が保持するルールについて説明する。
【０３０４】
図２９に示されるように、振り分け処理部１１における振り分けのルールＲ１、ルールＲ２、ルールＲ３の３つのルールが存在するものとする。ルールＲ１は、１から４までの値を持つ検索キーに対して一致が起こるルールであるとする。同様に、ルールＲ２は、３から７の値を持つルールに対して一致が起こり、ルールＲ３は、６から９の値を持つ検索キーに対して一致が起こるルールである。図２９に示されているルールは、第１のルール比較部１２、及び第２のルール比較部１３に配置されており、それぞれ入力された検索キーと内部で保持しているルールと比較される。
【０３０５】
［ルールの配置方法］
次に、第１のルール比較部１２と第２のルール比較部１３へのルールの配置方法について説明する。
【０３０６】
ルールの配置は、振り分け処理部の振り分け処理のポリシーによって決定される。ここでは、振り分け処理部１１は、「５」を閾値として、５未満の検索キーと５以上の検索キーで振り分け処理を行う。
【０３０７】
［ルールがカバーする範囲と振り分けポリシーが重なる例］
図３０Ａを参照して、ルールＲ１、Ｒ２、及びＲ３がカバーする範囲と、振り分け処理部での振り分けポリシーが重なる例について説明する。
【０３０８】
振り分け処理部１１では、振り分けの軸は「５」である。図３０Ａでは、点線でこの振り分けの軸６１が示されている。ここでは、図３０Ｂに示されるように、ルール比較部１２の内部は、ルール管理部１２１−Ａとルール管理部１２１−Ｂの２つの部分に分割されている。
【０３０９】
振り分け処理部１１は、５未満の値を持つ検索キーを第１のルール比較部のルール管理部１２１−Ａに振り分け、５以上の値を持つ検索キーをルール管理部１２１−Ｂに振り分ける。
【０３１０】
ルールＲ１は、１から４までの値を持つ検索キーに対して一致が起こるので、１から４までの値を持つ検索キーとは一致比較の処理が行われる必要がある。そのため、第１のルール比較部１２内においては、ルールＲ１は、５未満の検索キーが入力されるルール管理部１２１−Ａにおいて保持される。また、同様に、ルールＲ３は、６から９までの値を持つ検索キーと一致比較の処理が行われる必要があるため、５以上の値を持つ検索キーが入力されるルール管理部１２１−Ｂにおいて保持される。
【０３１１】
一方で、ルールＲ２は、３から７の値を持つ検索キーとの一致比較が行われる必要がある。しかしながら、振り分け処理部１１は、５未満の値を持つ検索キーをルール管理部１２１−Ａに、５以上の値を持つ検索キーをルール管理部１２１−Ｂに振り分ける。したがって、ルールＲ２に対する一致比較処理が行われるためには、部分３１１に振り分けられる３から５未満の値を持つ検索キーと、部分３１２に振り分けられる５以上から７までの値を持つ検索キーの両方の部分において一致比較処理が行われる必要がある。
【０３１２】
このときのルールＲ２の管理方法として、以下の（１）乃至（３）の３つの方法がある。
【０３１３】
（１）ルールＲ１を２つのルールに分割する、すなわち、３から５までの値を持つ検索キーと一致比較を行うルールＲ２Ａと５から７までの値を持つ検索キーと一致比較を行うルールＲ２Ｂの２つに分割し、それぞれの部分で保持する方法
【０３１４】
（２）ルールＲ２を複製する、すなわち、３から７までの値を持つ検索キーと一致比較を行うＲ２のまま、ルール管理部１２１−Ａとルール管理部１２１−Ｂの両方の部分にそれぞれ複製して保持する方法
【０３１５】
（３）第２のルール比較部に保持する方法
【０３１６】
図３０Ｂでは、ルールＲ２を分割せずに第１のルール比較部に保持している様子（方法（２））を示す。
【０３１７】
図３０Ｂでは、元々３つであったルールが４つに増えている。これを「ルールの複製」と呼ぶ。ルールの複製が起こると、ルールの管理に必要なメモリ量が増えるため、必要メモリ量を圧迫することになる。
【０３１８】
これに対して、方法（３）では、第２のルール比較部における振り分け処理を行わずにルールの比較を行うため、方法（１）や方法（２）のようなルールの複製は必要ない。そこで、本発明による第１の実施例では、ルールＲ３のような複製が発生するルールは、第２のルール比較部１３で保持を行う。
【０３１９】
図３０Ｃでは、ルールＲ２をルール比較部１３で管理している様子が示されている。
【０３２０】
［動作の説明］
パケット検索器１は、入力１０として検索キーが入力された時に、振り分け処理部１１に検索キーを入力すると共に、第２のルール比較部１３にも検索キーを入力する。
【０３２１】
［２の値を持つ検索キーが入力された場合］
例えば、ここで、２の値を持つ検索キーが入力された場合の動作を示す。
【０３２２】
検索キーは、振り分け処理部１１と第２のルール比較部１３にそれぞれ入力される。振り分け処理部１１は、振り分けポリシーに従い、検索キーを振り分ける。キーの値が５未満であるため、検索キーは、ルール管理部１２１−Ａに振り分けられる。第１のルール比較部のルール管理部１２１−Ａは、検索キーとルールを比較する。ルール管理部１２１−Ａに保持されているルールＲ２は、検索キーの値２と一致する。そのため、ルール管理部１２１−Ａに入力された検索キーについては、ルールＲ１と一致したという結果が出力される。また、第２のルール比較部１３に入力された検索キーについては、ルールＲ２と一致比較処理が行われるが、ルールＲ２は、３から７までの検索キーとしか一致しないので、２の値を持つ検索キーとは一致しない。
【０３２３】
［５の値を持つ検索キーが入力された場合］
次に、５の値を持つ検索キーが入力された場合の動作を示す。
【０３２４】
振り分け処理部１１は、５以上の値を持つ検索キーを、ルール管理部１２１−Ｂに振り分けるので、当該検索キーについては、ルールＲ３と一致比較処理が行われる。また、当該検索キーについては、第２のルール比較部１３にも入力されるので、ルールＲ２との一致比較処理も行われる。この場合、ルール管理部１２１−ＢのルールＲ３とは一致しないので、不一致が出力される。また、第２のルール比較部のルールＲ２とは一致するので、一致したという結果が出力される。
【０３２５】
最後に、７の値を持つ検索キーが入力された場合の動作を示す。
【０３２６】
振り分け処理部１１では、５以上の値を持つ検索キーは、ルール管理部１２１−Ｂに入力されるので、ルールＲ３と一致比較処理が行われる。また、第２のルール比較部に入力されてルールＲ２との一致比較処理が行われる。この場合、ルール管理部１２１−ＢのルールＲ３とは、一致するので、一致が出力され、また、第２のルール比較部のルールＲ２とも一致するので一致したという結果が出力される。
【０３２７】
＜第２の実施例＞
以下、本発明の第２の実施例について説明する。
【０３２８】
本実施例は、本発明の第４実施形態に対応するものである。
【０３２９】
以下、本発明の第２実施形態は、振り分け処理部と第１のルール比較部を複数備えているパケット分類器である。
【０３３０】
図１８によれば、パケット分類器３は、入力３０として入力された検索キーを、第２のルール比較部３３と、振り分け処理部３１−１から振り分け処理部３１−Ｎのそれぞれに入力する。各振り分け処理部（振り分け処理部３１−１から振り分け処理部３１−Ｎの各々）は、振り分けポリシーに従って、検索キーの振り分け処理を行う。各振り分け処理部は、この振り分けポリシーに従って、検索キーと一致比較を行うルールの配置を決定する。各振り分け処理部の保持する振り分けポリシーによっては、第１のルール比較部３２−１から２２−Ｎでは管理されずに、第２のルール比較部３３で管理されるルールも存在する。このとき、各振り分け処理部は、異なる振り分けポリシーによって、検索キーの振り分け処理を行う。
【０３３１】
例えば、図３１に示されるルールが存在するとする。図３１では、振り分けの軸６２は、「４」である。振り分けの軸６３は、「７」である。
【０３３２】
ルールＲ１は、１から３の値を持つ検索キーと一致比較を行う必要のあるルールである。
【０３３３】
ルールＲ２は、２から５の値を持つ検索キーと一致比較を行う必要のあるルールである。
【０３３４】
ルールＲ３は、６から８の値を持つ検索キーと一致比較を行う必要のあるルールである。
【０３３５】
ルールＲ４は、９から１１の値を持つ検索キーと一致比較を行う必要のあるルールである。
【０３３６】
ルールＲ５は、２から１０の値を持つ検索キーと一致比較を行う必要のあるルールである。
【０３３７】
図３２に示されるように、本実施例では、パケット分類器は、振り分け処理部３１−１と振り分け処理部３１−２の２つの振り分け処理部を持ち、第１のルール比較部３２−１と第１のルール比較部３２−２の２つの第１のルール比較部を持ち、第２のルール比較部３３を持つものとする。
【０３３８】
第１のルール比較部３２−１は、内部がルール管理部３２−１Ａとルール管理部３２−１Ｂに分割されている。また、振り分け処理部３１−１は、４未満の値を持つ検索キーと４以上の値を持つ検索キーで振り分け処理を行う振り分けポリシーを保持している。また、振り分け処理部３１−１は、４未満の値を持つ検索キーをルール管理部３２−１Ａに振り分け、４以上の値を持つ検索キーをルール管理部３２−１Ｂに振り分ける。
【０３３９】
第２のルール比較部３２−２は、内部がルール管理部３２−２Ａとルール管理部３２−２Ｂに分割されている。また、振り分け処理部３１−２は、７未満の値を持つ検索キーと７以上の値を持つ検索キーで振り分け処理を行う振り分けポリシーを保持している。また、振り分け処理部３１−２は、７未満の値を持つ検索キーをルール管理部３２−２Ａに振り分け、７以上の値を持つ検索キーをルール管理部３２−２Ｂに振り分ける。
【０３４０】
このとき、仮に、振り分け処理部３１−１だけを用いると、ルールＲ２とルールＲ５が複製されるか、又は、第２のルール比較部３３に格納される。また、仮に、振り分け処理部３１−２だけを用いると、ルールＲ３とルールＲ５が複製されるか、又は、第２のルール比較部３３に格納される。しかし、上記の２つの振り分け処理部を用いると、図３２のように、ルールＲ１とルールＲ３を第１のルール比較部３２−１に格納し、ルールＲ２とルールＲ４を第１のルール比較部３２−２に格納することができる。
【０３４１】
ルールＲ５は、複製されるか、或いは、第２のルール比較部３３に格納される。図３２においては、ルールＲ５は、第２のルール比較部３３で管理されている。このように、異なる振り分けポリシーを持つ振り分け処理部を併用することになり、複製されるルール数、又は、第２のルール比較部３３に格納するルール数が削減される。
【０３４２】
［動作の説明］
パケット検索器は、入力３０として検索キーが入力された時に、振り分け処理部３１−１と振り分け処理部３１−２の２つの振り分け処理部のそれぞれに検索キーを入力すると共に、第２のルール比較部３３にも検索キーを入力する。
【０３４３】
［２の値を持つ検索キーが入力された場合］
例えば、ここで、２の値を持つ検索キーが入力された場合の動作を示す。
【０３４４】
このとき、２の値を持つ検索キーは、図３２に示されるように、第１のルール比較部３２−１と、第１のルール比較部３２−２と、第２のルール比較部３３に入力される。第１のルール比較部３２−１は、振り分けポリシーに従い、２の値を持つ検索キーを、ルール管理部３２−１Ａに振り分け、当該検索キーとルールＲ１との一致比較処理を行う。第１のルール比較部３２−１は、２の値を持つ検索キーとルールＲ１とが一致するため、一致する旨を出力する。また、第１のルール比較部３２−２は、振り分けポリシーに従い、２の値を持つ検索キーを、ルール管理部３２−２Ａに振り分け、当該検索キーとルールＲ２との一致比較処理を行う。第１のルール比較部３２−２は、２の値を持つ検索キーとルールＲ２とが一致するため、一致する旨を出力する。第２のルール比較部３３も、２の値を持つ検索キーを入力し、当該検索キーとルールＲ５との一致比較処理を行う。第２のルール比較部３３は、２の値を持つ検索キーとルールＲ５とが一致するため、一致する旨を出力する。
【０３４５】
＜第３の実施例＞
以下、本発明の第３の実施例について説明する。
【０３４６】
本実施例は、本発明の第１、第２、第３実施形態に準ずるものである。
【０３４７】
図３３を参照して、第２のルール比較部がパイプライン構造で実現された様子について説明する。
【０３４８】
パケット分類器２は、振り分け処理部２１と、第１のルール比較部２２と、第２のルール比較部２５を有している。
【０３４９】
振り分け処理部２１は、第３実施形態に従って、内部にノードモジュール２３が直列に接続されたパイプライン構造をしており、パイプライン処理を行う。第１のルール比較部２１も、第３実施形態に従って、内部にルール比較器２４が直列に接続されたパイプライン構造をしており、パイプライン処理を行う。本実施例では、第２のルール比較部２５も、第１のルール比較部２１と同様に、内部にルール比較器２６が直列に接続されたパイプライン構造をしており、パイプライン処理を行う。第２のルール比較部２５の内部に配置されるルール比較器２６は、それぞれ、ルールを１つだけ保持する。第２のルール比較部２５は、振り分け処理部２１と接続されていないので、第２のルール比較部２５に検索キーが入力された時には、入力された検索キーと、ルール比較器２６で管理されている全てのルールとの一致比較を行う。このとき、直列に接続された各ルール比較器は、検索キーが入力された場合、当該ルール比較器内で唯一保持してルールと検索キーの一致比較処理を行う。
【０３５０】
また、第１のルール比較部２１と同様に、第２のルール比較部２５の内部にもパイプライン構造のルール比較器を配置し、複数本のルール比較器を用いてルールの管理を行うことにより、個々のルール比較部のパイプライン段数が削減される。この場合は、直列に並べられた複数本のルール比較器のそれぞれに、検索キーが入力される。
【０３５１】
第１のルール比較部２２と第２のルール比較部２５は、入力された検索キーに対して一致比較処理を行うルールを格納している。第１のルール比較部２２のルール比較器２４は、最大で決定木の葉ノード数分のルールを保持している。第２のルール比較部２５のルール比較器２６は、それぞれ１つのルールを保持している。
【０３５２】
また、振り分け処理部２１は、ハードウェアによる決定木で振り分け処理を行う。振り分け処理部２１のノードモジュール２３は、振り分けポリシー、振り分け処理の結果を送る子ノード、及び第１のルール比較部の分割された部分の情報を格納する。
【０３５３】
［動作の説明］
パケット分類器２は、入力２０から検索キーが入力されると、入力された検索キーを、振り分け処理部２１と、第２のルール比較部２５にそれぞれ入力する。振り分け処理部２１は、入力された検索キーを、根ノードモジュールに入力し、振り分けポリシーに従って、次段のノードモジュールに送る。振り分け処理部２１は、決定木の葉ノードモジュールに到達したら、振り分け処理の最終的な結果に従って、第１のルール比較部２２に送る。第１のルール比較部２２の内部のルール比較器２４は、順次、振り分け結果に従って、記憶装置からルールを読み出し、入力された検索キーと、読み出されたルールとの一致比較処理を行う。
【０３５４】
このとき、第１のルール比較部２２の内部で直列に並べられたルール比較器２４のそれぞれにおいて、比較処理部２４２は、ルール管理部２４１からルールを読み出し、検索キーと当該ルールとの一致比較処理を行った後、次段のルール比較器２４に検索結果を渡す。検索結果の例として、検索キーと一致したルール、該ルールを一意に識別できるルールＩＤ、複数のルールに一致した場合に選択すべきルールの順番を示す優先度等が考えられる。最終段のルール比較器２４は、検索結果を出力する。
【０３５５】
一方で、第２のルール比較部２５の内部のルール比較器２６は、順次、入力された検索キーと、読み出されたルールとの一致比較処理を行う。第２のルール比較部２５の内部のルール比較器２６は、高々１つのルールしか保持されていないため、毎回、保持されている１つのルールを記憶装置から読み出し、到着した検索キーとの一致比較処理を行い、次段のルール比較器２６に検索結果を渡す。最終段のルール比較器２６は、検索結果を出力する。
【０３５６】
パケット分類器２は、第１のルール比較部２２での検索結果と、第２のルール比較部２５での検索結果を、結果として出力する。
【０３５７】
＜第４の実施例＞
以下、本発明の第４の実施例について説明する。
【０３５８】
本実施例は、本発明の第５実施形態に対応するものである。
【０３５９】
［第１のルールのプロファイルの例］
図３４を参照して、第１のルールのプロファイル３４１について説明する。
【０３６０】
第１のルールのプロファイル３４１は、ワイルドカードの含有率３４２と、ルール数３４３とを含む。
【０３６１】
ワイルドカードの含有率３４２の値は、フィールド１のワイルドカードの含有率が「３０％」であり、フィールド２のワイルドカードの含有率が「７０％」であることを示している。
【０３６２】
ルール数３４３の値は、ルール総数が「１００」個であることを示している。
【０３６３】
［パケット分類器の構成例］
図３５を参照して、本実施例において設計されるパケット分類器の構成例について説明する。
【０３６４】
パケット分類器は、振り分け処理部３５１と、第１のルール比較部３５２と、第２のルール比較部３５３を備えている。
【０３６５】
振り分け処理部３５１は、振り分け処理装置３５４と、振り分けポリシー記憶装置３５５を備えている。
【０３６６】
［振り分けポリシー］
振り分け処理部３５１の振り分けポリシー記憶装置３５５に保持されている振り分けポリシーの値は、分割に使用するフィールドが「フィールド１」であり、分割数が「４」であることを示している。
【０３６７】
［振り分け処理部構成の決定方法］
まず、図２０に示される振り分け処理部構成の決定部４０１は、振り分け処理部の構成、すなわち、分割フィールド、分割数を決定する（図２１のステップＣ２）。
【０３６８】
［ルール比較部構成の決定方法］
次に、ルール比較部構成の決定部４０２は、第１のルール比較部３５２の構成、すなわち、第１のルールの記憶部に記憶するルール総数、ブロック数、ブロック毎のルール数を決定する（図２１のステップＣ３）。
【０３６９】
第１のルール比較部３５２は、総数６０個のルールを記憶し、４つのブロックに分かれ、ブロック毎に１５個のルールを記憶する。ルールの複製を許さないものとすると、全第１のルール比較部３５２は、ルールのうち、フィールド１にワイルドカードが出現する「３０％」については、記憶することができない。そこで、第１のルール比較部３５２に記憶するルールの最大数は、「７０」個となる。
【０３７０】
ルール比較部構成の決定部４０２は、実際の第１のルール比較部３５２のルール総数として、該最大数以下の適当な値を採用する。第１のルール比較部３５２における分割数と、第１のルール比較部のブロックの数は一致する。そのため、ルール比較部構成の決定部４０２は、第１のルール比較部３５２を、４つのブロックに分割している。また、ルール比較部構成の決定部４０２は、ブロック毎のルール数を、総数「６０」個を４つのブロックに均等に割り振った「１５」個としている。ここで、必ずしも、各ブロックの大きさを均等にする必要はない。
【０３７１】
次に、ルール比較部構成の決定部４０２は、第２のルール比較部３５３の構成、すなわち、第２のルール比較部３５３に記憶するルール総数を決定する（図２１のステップＣ３）。
【０３７２】
第２のルール比較部３５３は、総数「４０」個のルールを記憶する。第２のルール比較部３５３のルール数の最小数は、ルール総数より第１のルール比較部３５２のルール総数を減ずることより求められる。したがって、第２のルール比較部３５３のルール数は、これより大きい適当な値が選ばれる。
【０３７３】
［性能の評価方法］
次に、性能の評価部４０３は、パケット分類器の評価を行う（図２１のステップＣ４）。
【０３７４】
［パケット分類器の評価結果］
図３６を参照して、パケット分類器の評価結果として、振り分け処理部３５１、第１のルール比較部３５２、及び第２のルール比較部３５３の各々に必要なメモリ量について説明する。
【０３７５】
振り分け処理部３５１に必要なメモリ量は、「５ＫＢ」である。第１のルール比較部３５２に必要なメモリ量は、「１０MＢ」である。第２のルール比較部３５３に必要なメモリ量は、「４MＢ」である。
【０３７６】
［評価結果の判定］
次に、性能の評価部４０３は、この評価結果について、要求を満たすかどうかを判定する（図２１のステップＣ５）。
【０３７７】
もしも、要求を満たしていれば、性能の評価部４０３は、パケット分類器の各部の決定する設計パラメータとして出力する。反対に、要求を満たしていない時は、性能の評価部４０３は、ステップＣ２に戻り、他の構成を試す。
【０３７８】
＜第５の実施例＞
以下、本発明の第５の実施例について説明する。
【０３７９】
本実施例は、本発明の第６実施形態に対応するものである。
【０３８０】
［第２のルールのプロファイルの例］
図３７を参照して、第２のルールのプロファイル３７１について説明する。
【０３８１】
第２のルールのプロファイル３７１は、ワイルドカードの含有率３７２と、ルールのワイルドカードのバラつきの指標３７３と、ルール数３７４とを含む。
【０３８２】
ワイルドカードの含有率３７２の値は、フィールド１のワイルドカードの含有率が「３０％」であり、フィールド２のワイルドカードの含有率が「７０％」であることを示している。
【０３８３】
ルールのワイルドカードのバラつきの指標３７３の値は、フィールド１に平均が「３０」で標準偏差が「１０」のバラつきがあり、フィールド２に平均が「７０」で標準偏差が「１０」のバラつきがあることを示している。
【０３８４】
ルール数３７４の値は、ルール総数が「１００」個であることを示している。
【０３８５】
［振り分け処理部構成の決定方法］
まず、図２２に示される構成の決定部５０１は、振り分け処理部の構成、第１のルール比較部の構成、第２のルール比較部の構成を決定する（ステップＤ２）。このステップは、第４の実施例におけるステップＣ２と同じである。
【０３８６】
構成の決定部５０１は、該最小数を、ステップＤ４の手順で決定する。また、構成の決定部５０１は、記憶できずにあふれるルール数を、該最小数から、各記憶部で管理可能なルール総数を減じて決定する。
【０３８７】
［最小数と管理可能なルール総数の関係］
図３８を参照して、該最小数から、各記憶部で管理可能なルール総数を減じた様子について説明する。
【０３８８】
図３８では、第２のルールのプロファイル３７１が与えられた場合でも、ルールが管理可能な確率が１００％である第１のルール比較部及び第２のルール比較部の各々の該最小数は、それぞれ「８０」個と「４０」個である。このときに第１のルール比較部で管理可能ルール数を「７５」個、第２のルール比較部で管理可能ルール数を「４０」個とすると、第２のルールのプロファイル３７１が与えられた場合に、第１のルール比較部では「５」個のルールが記憶できずにあふれるため、「５」個のルールが記憶できずにあふれることを示されている。この場合はルールを管理可能な確率は１００％ではなくなる。このように管理可能なルール数が確率によって表される。
【０３８９】
第７実施形態に対応する実施例では、構成の決定部５０１は、図２８のステップＦ２で決定された構成に対して、図２５のフローチャートに示される処理によって得られたワイルドカード含有率のセットとルール配置の基準を用いた場合の管理可能なルール数を決定する。
【０３９０】
構成の決定部５０１は、バラつき具合を反映したワイルドカードの含有率を求める。ここでは、図３９に示されるように、バラつき具合を反映した結果、フィールド１と２のワイルドカードの含有率が、それぞれ、「３３％」と「６４％」であるものとする。次に、構成の決定部５０１は、バラつき具合を反映したワイルドカードの含有率より、第１のルール比較部、及び、第２のルール比較部に記憶するルール数の最小数、及び記憶できずにあふれるルール数を決定する（ステップＤ３）。
【０３９１】
構成の決定部５０１は、当該処理を、バラつき具合を反映したワイルドカードの含有率毎に繰り返し、記憶できずにあふれるルール数の最大値を決定する。
【０３９２】
性能の評価部５０２は、入力されたビット位置毎のワイルドカード含有率と、ルール配置の基準から決定された構成に対して、サンプリングによって、得られた複数のバラつきを持ったワイルドカード含有率で計算した場合に、全サンプル数のうち管理可能なサンプル数の割合を用いて、バラつき耐性（ロバスト性）を評価する。性能の評価部５０２は、ステップＦ１における入力として、このときは、制約条件として、求めるロバスト性能を入力し、所望のバラつきに対する耐性を備える構成を決定する。例えば、第２のルール比較部で管理可能なルール数を大きい構成を採用して、ワイルドカード含有率のバラつきに対する耐性が高い（ワイルドカード含有率のバラつきに影響を受けにくい）構成を決定する。
【０３９３】
＜まとめ＞
以上のように、本発明は、到着パケットから抽出した検索キーがどのルールに一致するかを判定するパケット分類器（Ｐａｃｋｅｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ）に関するものである。具体的には、決定木を用いてルールを管理し、予備的なルール管理部を併用したパケット分類器、及びパケット分類器の構成手法に関する。
【０３９４】
本発明のパケット分類器は、単体の装置に限らず、複数の装置を用いてシステム構成で実現しても良い。この場合、本発明のパケット分類器は、パケット分類システムと読み替えることができる。
【０３９５】
本発明のパケット分類システムは、振り分け手段と、第１のルール比較手段と、第２のルール比較手段を備える。振り分け手段は、振り分けポリシーを記憶する。第１のルール比較手段は、ルール集合を２つ以上の部分集合に分類して記憶する。第２のルール比較手段は、ルール集合を分類せずに記憶する。振り分け手段は、検索キーを該部分集合に振り分け、第１のルール比較手段は、該振り分け結果に基づいて対応する部分集合内のルールと検索キーを比較して一致するルールを出力する。第２のルール比較手段は、該振り分け結果に関係なく記憶している全てのルールと検索キーを比較して一致するルールを出力するように動作する。このような構成を採用し、第１のルール比較部又は、第２のルール比較部にルールを配置する際に、複製されるルール数が予め与えられた閾値以下になるようにすることにより本発明の目的を達成することができる。
【０３９６】
本発明のパケット分類器設計装置は、ルールのプロファイル記憶手段と、振り分けポリシー決定手段と、第１のルール比較部の構成決定手段と、第２のルール比較部の構成決定手段と、パケット分類器の評価手段を備え、振り分けポリシー決定手段がルールのプロファイルに基づき振り分けポリシーを決定し、第１のルール比較部の構成決定手段及び第２のルール比較部の構成決定手段が、それぞれルールのプロファイルと振り分けポリシーを基に、第１のルール比較部及び第２のルール比較部の構成を決定し、パケット分類器の評価手段が決定した構成を評価するように動作する。このような構成を採用し、予め与えられた目標性能を満たすまで、構成の決定と評価を繰り返すことにより本発明の目的を達成することができる。
【０３９７】
本発明では、第１のルール比較部で管理しようとするとルールの複製が発生するルールを第２のルール比較部に配置することで、ルールの複製が発生しなくなるため、ルールの複製を抑制することができる。また、第２のルール比較部を備えたパケット分類器の振り分け処理を決定木で実現できる。また、振り分け処理部と第１のルール比較部をそれぞれハードウェアで実現することにより、処理速度の向上と省電力化が実現できる。更に、それらをパイプライン構造で動作させることにより、連続的に検索キーを処理することができる。これにより、第２のルール比較部を備え、遅延時間の小さく、連続でパケットが処理でき、省電力なパケット分類器を実現できる。
【０３９８】
本発明では、複数の決定木と複数の第１のルール比較部を用いて、複製を発生させることなく第１のルール比較部に配置されるルールの数を増やすことで、第２のルール比較部に配置されるルールの数を抑制できるため、第２のルール比較部の容量を少なくできる。
【０３９９】
本発明では、パケット分類器の設計の際に、ルールのプロファイルとして、ビット位置毎のワイルドカードの出現率とルール数を記憶する手段と、そのプロファイルを用いて振り分け処理での振り分けポリシーの決定手段と、第１のルール比較部構成の決定手段と、第２のルール比較部構成の決定手段を備えるため、パケット分類器の設計手法を提供できる。
【０４００】
本発明では、ルールのプロファイルとして、ビット位置毎のワイルドカードが出現する確率と、その確率のバラつき具合と、ルール数を記憶する手段と、そのプロファイルを用いて振り分けポリシーの決定手段と、第１のルール比較部構成の決定手段と、第２のルール比較部構成の決定手段を確率的に決定する手段と、制約条件を基に構成を決定する手段を備えるため、確率的なパケット分類器の設計手法を提供できる。
【０４０１】
本発明では、その理由はルールのプロファイルとして、ビット位置毎のワイルドカードが出現する確率とルール数を記憶する手段と、そのプロファイルを用いて振り分け処理での振り分けポリシーの決定手段と、第１のルール比較部構成の決定手段と、第２のルール比較部構成の決定手段を備える。更に、ビット位置毎のワイルドカードが出現する確率のバラつきを基にして、バラつきが生じた場合に管理可能なルール数を評価する手段を備えるため、ロバスト性を考慮したパケット分類器の設計手法を提供できる。
【０４０２】
本発明によれば、パケットのヘッダ情報から特定のフィールドの組み合わせによって、パケットが属するフローを識別し、ＱｏＳ処理や負荷分散等、フロー毎に特定の処理を行わせるスイッチやルータ等のネットワーク装置、及びロードバランサー等のアプライアンス装置といった用途に適用できる。
【０４０３】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０４０４】
（付記１）
振り分け手段と、
ルールを２つ以上に分類して記憶する第一のルール記憶手段と、
ルールを分類せずに記憶する第２のルール記憶手段と
を備えたことを特徴とする
パケット分類システム。
【０４０５】
（付記２）
前記振り分け手段は、１つ又は２つ以上の木構造で実現されていることを特徴とする。
【０４０６】
（付記３）
前記振り分け手段は、パイプイラン構造で実現されていることを特徴とする。
【０４０７】
（付記４）
一部のルールを２つ以上に分類して第１の記憶手段に予め記憶し、
残りのルールを分類せずに第２の記憶手段に予め記憶し、
入力された検索キーを分類し、
分類結果に基づき第１の記憶手段中のルールと比較し、
分類結果に関係なく第２の記憶手段中のルールと比較する
ことを特徴とする
パケット分類方法。
【０４０８】
（付記５）
一部のルールを２つ以上に分類して第１の記憶手段に記憶するステップと、
残りのルールを分類せずに第２の記憶手段に記憶するステップと、
入力された検索キーを分類するステップと、
分類結果に基づき第１の記憶手段中のルールと比較するステップと、
分類結果に関係なく第２の記憶手段中のルールと比較するステップと
をコンピュータに実行させるための
パケット分類用プログラム。
【０４０９】
（付記６）
ルールのプロファイルを記憶する記憶手段と、
振り分け処理部の構成を決定する手段と、
ルール比較部の構成を決定する手段と、
パケット分類システムの評価を行う評価手段と
を備えたことを特徴とする
パケット分類システム設計装置。
【０４１０】
（付記７）
前記ルールのプロファイルには、ルール中のワイルドカード発生確率を含み、
ルール比較部の構成を決定する際に、前記ワイルドカード発生確率を基に第１及び第２のルール比較部に格納するルール数を決定する
ことを特徴とする。
【０４１１】
（付記８）
前記ルールのプロファイルには、ルール中のワイルドカード発生確率のバラつきに関する指標を含み、
ルール比較部の構成を決定する際に、前記ワイルドカード発生確率がバラついたとしても、ルールのあふれがないように、第１及び第２のルール記憶手段に格納するルール数を決定する
ことを特徴とする。
【０４１２】
（付記９）
前記ワイルドカード発生確率のバラつきに関する指標が、正規分布で与えられる
ことを特徴とする。
【０４１３】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【０４１４】
１…  パケット分類器
１１…  振り分け処理部
１１１…  振り分け処理装置
１１２…  振り分けポリシー記憶装置
１２…  第１のルール比較部
１２１（−ｉ、ｉ＝１〜Ｎ）…  ルール管理部
１３…  第２のルール比較部
１１１…  振り分け処理部
１１２…  振り分けポリシー記憶部
２…  パケット分類器
２１…  振り分け処理部
２２…  第１のルール比較部
２３…  ノードモジュール
２３１…  子ノード情報記憶部
２３２…  子ノード決定計算処理部
２４…  ルール比較器
２４１…  ルール管理部
２４２…  比較処理部
２５…  第２のルール比較部
２６…  ルール比較器
３…  パケット分類器
３１（−ｉ、ｉ＝１〜Ｎ）…  振り分け処理部
３２（−ｉ、ｉ＝１〜Ｎ）…  第１のルール比較部
３３…  第２のルール比較部
４０…  処理装置
４００…  構成の決定部
４０１…  振り分け処理部構成の決定部
４０２…  ルール比較部構成の決定部
４０３…  性能の評価部
４１…  記憶装置
４１０…  第１のルールのプロファイル
４１１…  ビット位置毎のワイルドカードの含有率
４１２…  ルール数
４１３…  目標の性能
４１４…  パケット分類器設計データ
５０…  処理装置
５０１…  構成の決定部
５０２…  性能の評価部
５１…  記憶装置
５１０…  第２のルールのプロファイル
５１１…  ビット位置毎のワイルドカードの含有率
５１２…  ルール数
５１３…  ワイルドカード含有率のバラつき具合
５１４…  制約条件
５１５…  パケット分類器設計データ
６１…  振り分けの軸
６２…  振り分けの軸
６３…  振り分けの軸
【図１】
2012159873.tif 000003
【図２】
2012159873.tif 000004
【図３】
2012159873.tif 000005
【図４】
2012159873.tif 000006
【図５】
2012159873.tif 000007
【図６Ａ】
2012159873.tif 000008
【図６Ｂ】
2012159873.tif 000009
【図７】
2012159873.tif 000010
【図８】
2012159873.tif 000011
【図９】
2012159873.tif 000012
【図１０】
2012159873.tif 000013
【図１１】
2012159873.tif 000014
【図１２】
2012159873.tif 000015
【図１３】
2012159873.tif 000016
【図１４】
2012159873.tif 000017
【図１５】
2012159873.tif 000018
【図１６】
2012159873.tif 000019
【図１７】
2012159873.tif 000020
【図１８】
2012159873.tif 000021
【図１９】
2012159873.tif 000022
【図２０】
2012159873.tif 000023
【図２１】
2012159873.tif 000024
【図２２】
2012159873.tif 000025
【図２３】
2012159873.tif 000026
【図２４Ａ】
2012159873.tif 000027
【図２４Ｂ】
2012159873.tif 000028
【図２５】
2012159873.tif 000029
【図２６Ａ】
2012159873.tif 000030
【図２６Ｂ】
2012159873.tif 000031
【図２７】
2012159873.tif 000032
【図２８】
2012159873.tif 000033
【図２９】
2012159873.tif 000034
【図３０Ａ】
2012159873.tif 000035
【図３０Ｂ】
2012159873.tif 000036
【図３０Ｃ】
2012159873.tif 000037
【図３１】
2012159873.tif 000038
【図３２】
2012159873.tif 000039
【図３３】
2012159873.tif 000040
【図３４】
2012159873.tif 000041
【図３５】
2012159873.tif 000042
【図３６】
2012159873.tif 000043
【図３７】
2012159873.tif 000044
【図３８】
2012159873.tif 000045
【図３９】
2012159873.tif 000046
【図４０】
2012159873.tif 000047
【図４１】
2012159873.tif 000048
【図４２】
2012159873.tif 000049