JP2012507930A - データパケットを分類するための方法およびシステム - Google Patents

データパケットを分類するための方法およびシステム Download PDF

Info

Publication number
JP2012507930A
JP2012507930A JP2011534490A JP2011534490A JP2012507930A JP 2012507930 A JP2012507930 A JP 2012507930A JP 2011534490 A JP2011534490 A JP 2011534490A JP 2011534490 A JP2011534490 A JP 2011534490A JP 2012507930 A JP2012507930 A JP 2012507930A
Authority
JP
Japan
Prior art keywords
node
level
value
nodes
classification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011534490A
Other languages
English (en)
Inventor
ベイリー,ケビン・アール
ラオ,プラシヤント・アール
マグレ,バンサン
イエ,チヤン
Original Assignee
アルカテル−ルーセント
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アルカテル−ルーセント filed Critical アルカテル−ルーセント
Publication of JP2012507930A publication Critical patent/JP2012507930A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/46Cluster building
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本発明の実施形態が、複数のルールに基づいて、分類木を構築するための方法を提供する。各ルールは、異なる優先順位レベルを有する複数のフィールドを含む。複数のルールに従って、受信されたパケットの単一パス分類を提供するように、分類木が構築される。分類木は、レベルごとに構築され、ここで、各レベルは優先順位レベルのうちの1つを表す。分類木の単一のレベルを構築するステップは、以下の:次に高い優先順位レベルから受信された論理的決定経路のそれぞれについて、それぞれの部分木を作成するステップ、を含む。部分木は、それぞれ次に高い優先順位レベルのノードに関連付けられたルールを満足するのに必要なノードおよび関連した論理的決定経路のみを含む。単一のレベルを構築するステップは、さらに以下の:最低位以外の各優先順位レベルについて、現在の優先順位レベル内のノードから次に低い優先順位レベルへの論理的決定経路を作成するステップ、を含む。

Description

本発明は、通信の分野に関し、より詳細には、通信システムで使用するためのデータパケットの分類に関する。
ネットワーク通信は、さまざまなネットワークデバイス(たとえば、ルータ、スイッチ、端末など)の間でトランスポートされる、パケットなどの情報ユニットを分類することをしばしば必要とする。たとえば、パケットは、ネットワークパーティションニング、グループモビリティトラッキング、セキュリティの制御および実施、サービス品質サポート、その他などのさまざまな用途をサポートするために、検査され、分類されてもよい。特に、ネットワークコンポーネントは、パケットが、ドロップされるべきか、その宛先に送信されるべきか、再ルーティングされるべきか、修正されるべきか、遮断されるべきかどうか、その他などの、パケットに適用されるべき措置を決定するために、分類ルールを使用して、着信パケットを検査し、分類することができる。そのようなルールの複雑性およびカスタマイズのしやすさのために、分類プロセスは、通常、ソフトウエアアプリケーションとして実装される。しかしながら、そのようなアプリケーションのパフォーマンスは、アプリケーションを実行する中央処理装置(CPU)の限定された処理力により、および分類ルールの柔軟な性質によってもたらされるアプリケーションの拡大された複雑性により、しばしば遅くなる。
遅いパフォーマンスを改善するために、ルールの複雑性にしばしば制約が実施される。たとえば、ルールは、2分探索木に容易に編成され得る集合に限定されてもよい。しかしながら、完全一致制約のために、十分な複雑度のルールは、単一の木ではなく、複数の木において編成されなければならない。複数の木を探索することは、単一の木を探索することよりも著しく遅いことから、2分探索木を使用する利点を最大利用することが妥協策とされる。
別のよくあるアプローチが、ハッシュテーブルを利用することであり、それは、分類ルールのルックアップキーを、実際のルールの位置に関連付けられた統計的に好都合なハッシュインデックスに変換することを含む。ハッシュテーブルは実装が容易であるものの、所望の分類能力を実装するには、完全一致制約のために、異なるテーブルにまたがる複数のパス(pass)が必要とされる。さらに、うまくいく一致は、それが存在したとしても保証はされない。
複数の分類ルールを使用して、データパケットを分類し、分類構造を構築するための方法およびシステムの実施形態により、先行技術におけるさまざまな不完全性が取り組まれる。一実施形態は、分類木構造を構築するための方法を提供する。分類木構造は、複数のルールに従って、受信されたパケットの単一パス分類を可能にするように構成されている。各ルールは、複数のフィールドに関連付けられており、ここで、各フィールドは優先順位レベルを有する。分類木構造を構築するための方法は、トップ優先順位レベルを構築するステップを含む。トップ優先順位レベルを構築するために、トップ優先順位レベルフィールドのフィールドの値に対応するノードが作成され、ここで、いくつかのフィールドの値が同じである場合は、1つのノードのみが作成される。作成されたノードのそれぞれについて、ノードの値に一致するルールのそれぞれの集合が識別される。トップ優先順位レベルを構築するステップのプロセスは、さらに、以下の:作成されたノードの中からヘッドノードを選択するステップ、トップ優先順位レベル内でヘッドノードから他のノードまでの論理的決定経路(path)を作成するステップ、およびトップ優先順位レベルのノードから次に低い優先順位レベルまでの論理的決定経路を作成するステップを含む。
分類木構造を構築するための方法は、レベルごとに、分類木構造の残りの優先順位レベルを構築するステップをさらに含む。残りの優先順位レベルのそれぞれは、以下のやり方で構築される。次に高い優先順位レベルから受信された論理的決定経路のそれぞれについて、それぞれの部分木が作成され、ここで、部分木は、それぞれ次に高い優先順位レベルのノードに関連付けられたルールを満足するのに必要なノードおよび関連した論理的決定経路のみを含む。さらに、残りの優先順位レベルが最も低い優先順位レベルでないとき、現在の優先順位レベル内のノードから次に低い優先順位レベルまでの論理的決定経路が作成される。
別の実施形態は、着信データパケットを分類するための方法を提供する。方法は、異なる優先順位レベルに関連付けられた複数のパケットフィールドを含むデータパケットを受信するステップを含む。方法は、分類構造の単一パスを介して、データパケットに一致する分類ルールを決定するステップをさらに含む。分類構造は複数のレベルを含み、ここで、各レベルはパケットフィールドに関連付けられた優先順位レベルの1つに対応する。分類構造内のレベルは、分類構造のトップからボトムまで、降順優先順位に従って並べられている。
方法は、分類構造の各レベルについて、トップレベルより開始してボトムレベルに向かって移動しながら、レベルごとに、対応する優先順位レベルを有するパケットフィールドの値が、分類構造のレベル内でのパケットに対する論理的決定経路のノードと比較されて、一致するノードを見つけることをさらに含む。一致するノードは、パケットフィールドと同じ値を有するノードである。最低位以外の各優先順位レベルについて、一致するノードが見つかった場合、そのような一致するノードが、分類構造の次のレベルへの論理的決定経路を定義する。最も低い優先順位レベルでは、一致するノードを見つけることにより分類プロセスが完了し、ここで、最も低い優先順位レベルの一致するノードは、パケットに一致する分類ルールを識別する。
さらに本発明の別の実施形態は、パケットプロセッサを提供する。パケットプロセッサは、分類構造を記憶するためのメモリと、メモリに記憶された分類構造を使用して、着信データパケットに一致する分類ルールを決定するように構成されたプロセッサとを含む。分類構造は、複数の分類ルールを表し、ここで、各ルールは複数のフィールドを有する。各フィールドは、異なる優先順位レベルに関連付けられている。分類構造は、複数のレベルを含み、ここで、トップレベルは最も高い優先順位レベルを有し、各次のレベルが次に低い優先順位レベルを有する。データパケットは、複数のパケットフィールドを含み、ここで、フィールドは分類構造の優先順位レベルに対応する優先順位レベルを有する。
パケットプロセッサは、分類構造の単一パスを介して、一致する分類ルールを決定するように構成されている。特に、パケットプロセッサは、分類構造の各レベルについて、トップレベルより開始してボトムレベルに向かって移動しながら、レベルごとに、対応する優先順位レベルを有するパケットフィールドの値を、分類構造のレベル内でのパケットに対する論理的決定経路のノードと比較して、一致するノードを見つけるように構成されている。一致するノードは、パケットフィールドと同じ値を有するノードである。最低位以外の各優先順位レベルについて、一致するノードが見つかった場合、そのような一致するノードが、分類構造の次のレベルへの論理的決定経路を定義する。最も低い優先順位レベルでは、一致するノードを見つけることにより分類プロセスが完了し、ここで、パケットプロセッサは最も低い優先順位レベルの一致するノードを使用して、パケットに一致する分類ルールを識別する。
さまざまな実施形態の教示は、添付の図面を併用して、以下の詳細な説明を検討することによって、容易に理解され得る。
本発明の一実施形態に従った、データパケットを分類するためのシステムのハイレベル図である。 本発明の一実施形態に従った、分類ルールを含むテーブルを示す図である。 本発明の一実施形態に従った、分類構造とそのレベルの図である。 本発明の一実施形態に従った、分類構造とそのレベルの図である。 本発明の一実施形態に従った、分類構造とそのレベルの図である。 本発明の一実施形態に従った、分類構造とそのレベルの図である。 本発明の一実施形態に従って、分類構造を構成するための方法の流れ図である。 本発明の一実施形態に従って、分類構造を構成するための方法の流れ図である。 本発明の一実施形態に従って、分類構造を構成するための方法の流れ図である。 本発明の一実施形態に従って、分類構造を構成するための方法の流れ図である。 本発明の一実施形態に従って、分類構造を構成するための方法の流れ図である。 本発明の一実施形態に従って、分類構造を構成するための方法の流れ図である。 本発明の一実施形態に従って、分類構造を構成するための方法の流れ図である。 本発明の一実施形態に従って、データパケットを分類するための方法を示す図である。 本発明の一実施形態に従って、データパケットを分類するための方法を示す図である。
理解を容易にするために、可能であれば、図面に共通である同一の要素を表すのに同一の参照番号が使用されている。
ルータ、スイッチ、ファイヤーウォール、端末などのネットワークコンポーネントは、データを用いて実行されるのに必要であるさらなる措置を決定するために、着信データトラフィックを検査することがしばしば必要とされる。本発明のさまざまな実施形態のコンテキストでは、インターネットプロトコル(IP)パケットなどのデータパケットが、特殊な分類構造に編成されるあらかじめ定義された分類ルールに従って、分類される。各ルールは、受信されたパケットと比較されるクライテリアを定義し、一方で、ルールがパケットに適用可能(すなわち、一致する)であるとき、ルールに関連付けられた措置が、取られるべき1つまたは複数の措置を定義する。ルールのクライテリア(すなわち、ルールのフィールドの値)と、パケットの対応する値とが一致するときに、ルールは、パケットに適用可能である。
以下では、本発明の実施形態への参照がなされる。しかしながら、本発明は、いかなる詳細に説明される実施形態にも限定されないことに留意されたい。代わりに、以下の特徴および要素のあらゆる組合せが、それぞれに異なる実施形態に関連していてもいなくても、本発明を実装し、実践することを想到させる。さらに、さまざまな実施形態において、本発明は、先行技術に勝る多数の効果を提供する。本発明の実施形態は、他の考え得るソリューションに勝る、および/または先行技術に勝る利点を達成することができるが、所与の実施形態によって特定の利点が達成されるか否かということは、本発明を限定することではない。したがって、以下の態様、特徴、実施形態、および効果は、例示に過ぎず、各請求項において明示的に列挙されている場合を除いて、添付の特許請求の範囲の要素または限定とはみなされない。同様に、「本発明」への参照は、本明細書において開示されるいかなる発明的な主題の一般化としても解釈されず、各請求項において明示的に列挙されている場合を除いて、添付の特許請求の範囲の要素または限定とはみなされない。
本発明の一実施形態は、コンピュータシステムで使用されるためのプログラム製品として実装される。プログラム製品のプログラムは、(本明細書で説明される方法を含む)実施形態の機能を定義し、さまざまなコンピュータ可読記憶媒体に含まれてもよい。例示的なコンピュータ可読記憶媒体は、以下の:(i)そこに情報が永続的に記憶される、書き込み不可能な記憶媒体(たとえば、CD−ROMドライブによって読み出し可能なCD−ROMディスクなどの、コンピュータ内で読み出し専用のメモリデバイス)、(ii)そこに変更可能な情報が記憶される、書き込み可能な記憶媒体(たとえば、ディスケットドライブまたはハードディスクドライブ内のフロッピーディスク)、を含むがそれらに限定されない。そのようなコンピュータ可読記憶媒体は、本発明の機能を指示するコンピュータ可読命令を保持するときに、本発明の実施形態である。他の媒体には、ワイヤレス通信ネットワークを含むコンピュータネットワークまたは電話ネットワークを介してなど、それを介して情報がコンピュータに伝達される、通信媒体が含まれる。後者の実施形態は、とりわけ、インターネットおよび他のネットワークへ、かつインターネットおよび他のネットワークから、情報を伝送することを含む。そのような通信媒体は、本発明の機能を指示するコンピュータ可読命令を保持するときに、本発明の実施形態である。大まかには、コンピュータ可読記憶媒体および通信媒体が、本明細書においてコンピュータ可読媒体と呼ばれてよい。
一般的に、本発明の実施形態を実装するために実行されるルーチンは、オペレーティングシステム、または特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、もしくは一連の命令の一部であってよい。本発明のコンピュータプログラムは、ネイティブコンピュータによって、マシン可読フォーマットに、ひいては実行可能な命令に変換されることになる、多数の命令から典型的に構成される。また、プログラムは、プログラムにローカルに常駐する、またはメモリ中もしくは記憶デバイス上に見られる、変数およびデータ構造から構成される。加えて、本明細書で説明されるさまざまなプログラムは、本発明の特定の実施形態においてそれらのプログラムが実装されるアプリケーションに基づいて、識別され得る。しかしながら、以下に続くあらゆる特定のプログラム用語は、単に便宜的に使用されており、したがって、本発明は、そのような用語によって特定される、かつ/または含意されるいかなる特定のアプリケーションにおいてのみの使用に限定されるべきではないことが理解されるべきである。
図1は、本発明の一実施形態に従った、データパケットを分類するためのシステム100のハイレベル図を図示する。詳細には、システム100は、複数の送信元デバイス(送信元110と総称される、送信元110、送信元110、および送信元110など)と、ルータ120と、パケットプロセッサ130と、ネットワーク140と、複数の宛先デバイス(宛先150と総称される、宛先150、宛先150、および宛先150など)とを含む。パケットが、ネットワーク140を介して、送信元110と宛先150との間で送信されるとき、ルータ120は、そのようなパケットをインターセプトし、分類し、さらに処理するために、パケットをパケットプロセッサ130に提供することができる。一実施形態では、パケットプロセッサ130は、ネットワークルータ120またはネットワーク140のどちらかによってパケットプロセッサ130に宛先変更されたパケットについての統計を収集し、次いでネットワーク管理システム(図示せず)に対して、結果を要約する。ネットワーク管理システムは、そのような情報を使用して、パケット分類ルールを構成し、管理することができる。
示されるように、パケットプロセッサ130は、入力/出力デバイス132(たとえば、モニタ、キーボード、マウス、モデム、プリンタなど)と、中央処理装置(CPU)134と、メモリ136とを含む。パケット分類装置138および分類構造139が、メモリ136中に配置される。一般的に、3分探索木などの分類構造139は、パケット分類装置138によって使用されるパケット分類ルールを編成して、着信パケットを解析し、措置があれば、どの措置(たとえば、パケットをドロップする、再ルーティングする、その他)か、かつ、どの種類のデータパケット(たとえば、ある宛先アドレスを有するパケット)が適用されるべきかを決定する。各ルールは、さまざまなパケットフィールドに対応する複数のクライテリア/フィールドを含み、一致するパケットに適用可能な措置に関連付けられていてもよい(より詳細には以下で説明される)。パケットは、ルールのクライテリア/フィールドが、パケットの対応するフィールドの値に一致するときに、ルールに一致する。パケット分類装置138が、ルールと着信パケットとの間でうまくいく一致を判定した場合、ルールに関連付けられた措置がパケットに適用される(たとえば、パケットは遮断されてよい)。しかしながら、パケット分類装置138がうまくいく一致は存在しないと判定したときは、代わりに、デフォルトの措置が適用される(たとえば、パケットはドロップされる)。
図1では、パケットプロセッサ130、パケット分類装置138、および分類構造139は、ルータ120またはネットワーク140から切り離されて示されているが、一実施形態では、パケットプロセッサ130、パケット分類装置138、および分類構造139は、すべてまたは任意の組合せで、ルータ120内で、または代替的にはネットワーク140内で実装される。別の実施形態では、パケット分類装置138および/または分類構造139は、ネットワークデータを受信し、伝達するネットワークコンポーネント(たとえば、スイッチングエンジン、ルータなど)内で、またはそのようなネットワークコンポーネントと通信するデバイス内で実装される。ネットワークコンポーネントは、特定のネットワーク内のデータ経路に、またはさまざまなネットワークに接続するデータ経路に配置されてもよい。さらに、パケット分類装置138および分類構造139は、必ずしも一緒に配置されず、2つ以上の分類構造139および/またはパケット分類装置138が使用されてもよい。
図2は、本発明の一実施形態に従った、分類ルールを含むテーブル200を図示する。一実施形態では、ルールは、ルールが特定のパケットに適用されるべきかどうかを決定するための一致部と、そのパケットに実行されることになる措置を定義するための措置部との、2つの部分を含む。一致部は、通常、データパケットの対応するフィールドと比較される複数のフィールド(クライテリア)を含み、ここで、ルールのフィールドと対応するパケットフィールドとの完全な一致は、ルールの措置部分が、パケットに適用されるべきであることを示す。措置部は、一般的に、パケットに実行されてよい1つまたは複数の措置を定義し、たとえば措置は、パケットをドロップすること、パケットを再ルーティングすること、パケットを遮断すること、パケットを再定義または修正すること、パケットをその宛先に送信することなどである。
テーブル200は、ルール1−4の一致部を図示し、ここで、そのような各部は3つのフィールド、すなわち、フィールド1、2、および3を含む。一実施形態では、ルール内のフィールドの順序が、そのようなフィールドの優先順位を定義する。たとえば、テーブル200の各ルールについて、フィールド1列のフィールドは、フィールド2列のフィールドよりも高い優先順位を有し、フィールド2列のフィールドは、フィールド3列のフィールドよりも高い優先順位を有する。言い換えれば、フィールド2列のフィールドがデータパケットの対応するフィールドと比較される前に、フィールド1列のフィールドがデータパケットの対応するフィールドと比較される。しかしながら、上記で説明したやり方において、テーブル中でルールを編成すること、およびフィールドの優先順位を定義することは、便宜上のことに過ぎないことに留意されたい。たとえば、フィールド1列のフィールドが、フィールド3列のフィールドよりも高い優先順位を有してもよく、しかしフィールド2列のフィールドよりも低い優先順位を有してもよい。さらに、ルールまたはそれらの部分をテーブルとして編成することは、便利ではあるが、必須ではない。たとえば、ルールはリストとして編成されてもよい。
各図示された文字、すなわち、テーブル200に含まれる「A」、「B」、「C」、および「*」は、フィールドの値を表す。一般的に言えば、ルールにおける各フィールドは、パケットのフィールドまたはサブパートを表し、ここで、そのような各フィールド/サブパートは、ネットワークプロトコル層(たとえば、オープンシステムインターコネクション(OSI)ネットワークプロトコルの層、トランスミッションコントロールプロトコル/インターネットプロトコル(TCP/IP)ネットワークの層など)のうちの1つを表すパケットデータを含む。一実施形態では、ルールのフィールドは、送信元および/または宛先メディアアクセスコントロール(MAC)アドレス、送信元および/または宛先イーサネットハードウェアアドレス(EHA)、送信元および/または宛先IPアドレス、送信元および/または宛先ポート、プロトコルID、ユーザデータプロトコル(UDP)ポート、TCPポート、仮想ローカルエリアネットワーク(VLAN)タグ、ペイロードタイプ、および他のデータのタイプのうちの1つまたは複数を表す。典型的に、そのようなデータは、異なるネットワークプロトコル層に対応するパケットのヘッダ/フッタにおいて見出されてよい。
ルールのフィールドは、あるMACアドレスなどの特定の値、またはワイルドカードなどの特殊な値を含むことができる。各ルールは、さまざまな特定の値および/または特殊な値を含む複数のフィールドを含むことができる。図2では、特定の値は、「A」などの文字によって示され、一方で、特殊な値は、「*」(ワイルドカードの値)などの記号によって示される。ルールが、ワイルドカードの値を有する1つまたは複数のフィールドを含むとき、着信パケットの各対応するフィールドは、任意の値を含むことができ、ルールのすべての他のフィールドとパケットとが一致する場合、ルールは、やはりパケットに一致することになる。言い換えれば、ルールが1つまたは複数のワイルドカードのフィールドを含むとき、特定のルールがパケットに適用されるべきであるかどうかは、ルールのワイルドカードのフィールドに対応するパケットフィールドの値に左右されない。
図2に示されるように、分類ルールは衝突することがあり、または言い換えれば、いくつかのパケットは2つ以上のルールに一致することがある。たとえば、テーブル200では、ルール1、2、および4が衝突する可能性がある。より詳細には、着信パケットがその対応するフィールドにおいて[A、B、C]の値を有する場合、そのようなパケットは、ルール1、2、および4のそれぞれに一致する。しかしながら、その対応するフィールドにおいて[A、B、D]の値を有する着信パケットは、ルール2にしか一致せず、一方、[C、B、C]の値を有するパケットは、ルール4にしか一致しない。同様に、ルール3および4は衝突する可能性がある(たとえば、[B、C、C]パケット)。一方で、ルール2および3は、相互に排他的であり、それらのルール両方に同時に一致することができるパケットは存在しないことを意味する。
以下に説明するように、1つの一致を見つけることは、分類プロセスを完了するために、通常は十分である。よって、上記で説明した例を使用すると、[A、B、C]の値を有するパケットが分類されてルール1に一致する場合、分類プロセスは、そのパケットがルール2および4にもまた一致することができたとしても、停止する。一実施形態では、衝突するルールが優先され、分類構造139は、最も高い優先順位を有する一致するルールが最初に発見されるようなやり方において編成される。たとえば、一実施形態では、ルールが特定的であるほど、そのようなルールが高い優先順位を有する。したがって、テーブル200では、ワイルドカードの値を有さないルール1が、1つのワイルドカードの値を有するルール2よりも、高い優先順位を有することになる。同時に、1つのワイルドカードの値を有するルール2は、2つのワイルドカードの値を有するルール4よりも、高い優先順位を有することになる。
図3A−図3Cは、本発明の一実施形態に従った、分類構造300とそのレベルを図示する。示されるように、分類構造300は、図2のテーブル200に含まれる分類ルールを編成する(分類構造を構成するための方法は、図4A−図4Gに関してより詳細に以下で説明される)。典型的に、分類構造300はレベルごとに構成され、ここで、分類構造300のレベルが高いほど、それが表すフィールドの優先順位は高くなる。一実施形態では、分類構造300は、着信パケットを分類するために、パケットプロセッサ130によって使用される。図5Aおよび図5Bに関して以下でより詳細に説明される分類プロセスは、着信パケットの対応するフィールドについて一致または不一致を各レベルで決定する分類構造300の1つのレベルから進む。言い換えれば、パケットの分類プロセスは、一致する分類ルールが見つかるまで、または、パケットに一致する分類ルールはないと判定されるまで、そのパケットに対応する分類木内の論理的決定経路に沿って進む。
図3A−3Cの例示的な実施形態では、分類構造300は、テーブル200の列を表すレベルによる3分探索木である。一般的に、3分探索木は、各ノードが3つまでの枝、すなわち、現在のノードの値よりも大きな値のための右枝、現在のノードの値に等しい値のための中枝、および現在のノードの値よりも小さな値のための左枝を有することができる探索木である。本発明の一実施形態では、分類構造の中枝は、木の現在のレベルにおいて、うまくいく一致が見つかった(すなわち、着信パケットフィールドに適用可能なルールが識別された)こと、および、分類プロセスが木の次のレベルにおいて(すなわち、次のパケットフィールドに)続いてもよいことを示す。
一実施形態では、2つの追加的なタイプのノードが導入される。第1のタイプは、一致しないノード、すなわち、末端のうまくいかない一致を示すノード(以下、「X」ノードと称される)である。一実施形態では、そのようなノードが分類プロセスの間に到達されると、分類プロセスは停止され、着信パケットがいかなる利用可能なルールにも完全に一致しないことを示す情報が提供される。
もう1つのタイプは、ワイルドカードノード、すなわち、木の現在のレベルにおいてうまくいく一致を常に示すノード(以下、「*」ノードと称される)である。言い換えれば、ワイルドカードノードの値は、それが比較されるあらゆる値と等しくてよい。ワイルドカードノードの値はまた、任意の他のノードの値よりも大きくても、小さくてもよい。一実施形態では、そのようなノードが分類プロセスの間に到達されるとき、分類プロセスは、分類木300の次のレベルを続ける。ワイルドカードノードが、分類木300の最も低いレベルに到達されると、着信パケットと対応するルールとの間のうまくいく一致を示す情報が提供される。
図3Aは、分類木300の最も高いレベル、すなわちトップレベル310を図示する。トップレベル310は、テーブル200のフィールド1列を表す。フィールド1列は、それらのそれぞれの分類ルールにおいて最も高い優先順位フィールドを有するフィールドを含む。図2に図示されるように、分類ルールのフィールド1は、以下の値:「A」(ルール1および2)、「B」(ルール3)、および「*」(ルール4)、を含むことができる。分類木300のトップレベル310は、これらの値のそれぞれについての1つまたは複数のノード、すなわち、値「*」を有するノード312および318、値「A」を有するノード314、および値「B」を有するノード316を含む。
示されるように、ノード314は、分類木300のルートノードである。典型的には、分類木300のルートノードは、分類木300のトップレベルにおいて利用可能な値の中で、およそ中央(中間)値を有する。ルートノードの値に中央値を選択することにより、よりバランスのとれた木を構成することが可能になる。というのは、ノードのうちのおよそ半分が、ルートノードの値よりも小さな値を有することになり、ノードのうちのおよそ半分がルートノードの値よりも大きな値を有することになるからである。しかしながら、他の選択もまた可能である。たとえば、一実施形態では、ルートノードは、ランダムに選択される。別の実施形態では、ルートノードは、メジアン値を有するノードである。
図示されるように、ノード314の左ポインタが、ノード314の値(すなわち「A」)よりも小さな値(すなわち「*」)を有するノード312を指し示す。ノード314の右ポインタが、その値(すなわち「B」)がノード314の値(すなわち「A」)よりも大きな値であるノード316を指し示す。ワイルドカードの値は、任意の値よりも大きくても小さくてもよいことから、ノード316の右ポインタおよび左ポインタの両方が、ワイルドカードの値を有するノード318を指し示す。しかしながら、ノード316の右ポインタおよび左ポインタは、単一のノード318を指し示しているが、一実施形態では、ノードの右ポインタおよび左ポインタは、それぞれワイルドカードの値を有する2つの異なるノードを指し示すことに留意されたい。
各ノードはまた、そのノードに関連付けられた1つまたは複数のルール(すなわち一致するルール)を有し、ここで、ノードの値は関連付けられた分類ルールのそれぞれの対応するフィールドの値に一致する。したがって、ルール1および2が、それらのフィールド1において値「A」を有し、ルール4が、そのフィールド1においてワイルドカードの値を有するので、ノード314は、テーブル200の3つのルール、すなわち、ルール1、2、および4に関連付けられている。同様に、ルール3が、そのフィールド1において値「B」を有し、一方、ルール4がそのフィールド1においてワイルドカードの値を有するので、ノード312および318は、ルール4に関連付けられ、ノード316は、ルール3および4に関連付けられている。しかしながら、図3Aには、2つのワイルドカードノード、すなわち、ノード312および318が示されているが、一実施形態では、分類構造は1つのワイルドカードノードのみを含むことに留意されたい。そのような一実施形態では、ワイルドカードノードに先行するノード(たとえばノード314および316)は、単に同じワイルドカードノードを指し示す。たとえば、2つの独立したノードとしてノード312および318を有する代わりに、ノード312が削除されてもよく、ノード314が、ノード316の左ポインタと同様に、ノード318を指し示すその左ポインタを有してもよい。
図3Bは、分類木300の最初の2つのレベル、すなわち、トップレベル310およびミドルレベル320を図示する。ミドルレベル320は、テーブル200のフィールド2列を表す。フィールド2列は、それらのそれぞれの分類ルールにおいて、優先順位の第2のレベルを有するフィールドを含む。図2に示されるように、分類ルールのフィールド2は、以下の値:「B」(ルール1および2)、「C」(ルール3)、および「*」(ルール4)、を含むことができる。よって、分類木300のミドルレベル320は、これらの値のそれぞれについての1つまたは複数のノード、すなわち、値「*」を有するノード321、322、324、325、327、および328、値「B」を有するノード323、ならびに値「C」を有するノード326を含む。
上記で触れたように、分類プロセスは、ノード312とノード321との間の枝などの中枝(2本矢印によって示されている)のうちの1つを介して、1つのレベルから別のレベルへと進む。ノードの中枝は、ノードの値が着信パケットの対応するフィールドに一致する場合に、分類プロセスが取る論理的決定経路の一部を表す。たとえば、着信パケットがそのフィールド1において値「A」を有する場合、分類プロセスは、ノード314と323との間の枝を介して、トップレベル310からミドルレベル320へと移動する。
通常、分類ルールのうちの少なくともいくつかが、同じフィールドにおいて異なる値を有する(たとえば、ルール1のフィールド1が値「A」を有し、ルール3のフィールド1が値「B」を有する)。結果として、1つのレベルにおいて着信パケットに関連して検討されてよいルールの集合が、先行するレベルにおいて着信パケットに関連して検討されてよいルールの部分集合を表す。より詳細には、トップレベルにおいて、着信パケットは、すべての利用可能な分類ルールのうちのいずれかに、場合によって一致することがある。しかしながら、トップレベルにおいて、着信パケットの最も高い優先順位のフィールドがトップレベルのノードのうちの1つの値に一致されていることから、ミドルレベルにおいて、着信パケットは、着信パケットの最も高い優先順位のフィールドと同じ値を有するルールのみに、すなわち、一致されたトップレベルのノードに関連付けられたルールに、潜在的に一致することができる。たとえば、着信パケットがフィールド1において値「B」を有する場合、分類プロセスは、ノード316と326との間の中枝を介して、ミドルレベル320へと移動する。パケットのフィールド1が値「B」を有するので、それらのフィールド1において値「A」を有するルール1および2は、場合によって着信パケットに一致することができない。よって、着信パケットは、ノード316に関連付けられたルール、すなわち、ルール3および4のみと比較される。
一般的に、ミドルレベル320は、複数の部分木、または部分木のトップレベルとして見られてよく、ここで、ミドルレベルノードは部分木のトップレベルを形成する。図3Cに示されるように、一実施形態に従って、ミドルレベルおよびボトムレベルのノードによって形成される探索部分木は、以下である:第1の部分木が、ノード321、331、345を含み、第2の部分木がノード322、323、324、332、333、334、335、336、および345を含み、第3の部分木がノード325、325、327、337、338、339、および345を含み、第4の部分木がノード328、340、および345を含む。たとえば、ノード322、323、および324は、第2の部分木のトップレベルを形成する。各部分木のトップレベルは、すべての分類ルール(すなわち、テーブル200)の代わりに、対応する親ノードに関連付けられたルールを使用して、トップレベル310と同様に構成される。たとえば、第2の部分木のトップレベルを構成するために、ノード314に関連付けられたルール(すなわち、ルール1、2、および4)が使用される。
図3Cは、分類木300のすべての3つのレベル、すなわち、トップレベル310、ミドルレベル320、およびボトムレベル330を図示する。ボトムレベル330は、テーブル200のフィールド3列を表す。フィールド3列は、それらのそれぞれの分類ルールにおいて、優先順位の第3のレベルを有するフィールドを含む。図2に図示されるように、分類ルールのフィールド3は、以下の値:「C」(ルール1、3、および4)ならびに「*」(ルール2)、を含むことができる。よって、分類木300のボトムレベル330は、これらの値のそれぞれについての1つまたは複数のノード、すなわち、値「C」を有するノード331、332、334、336、337、338、339、および340、ならびに値「*」を有するノード333および335を含む。
一実施形態では、分類木300はまた、「X」ノード345(一致しないノード)、すなわち、着信パケットが分類ルールのうちのいずれにも一致しないことを示すノードを含むことができる。図示された分類木300では、「X」ノードはボトムレベル330においてのみ存在するが、分類ルールの初期集合に応じて、「X」ノードは、分類木300のいずれのレベルにも存在することができる。たとえば、そのフィールド1においてワイルドカードの値を持ったテーブル200の分類ルールがない場合、分類木300は、トップレベル310において「X」ノードを有していたことになる。さらに、一実施形態では、1つのみの「X」ノード(たとえば、分類構造300につき1つの「X」ノード)が実装される。そのような実施形態では、「X」ノードに先行するノード(たとえば、ノード331、336、340、その他)が、同じ「X」ノードを指し示す(または同じ「X」ノードに関連付けられる)。代替的には、分類構造の各レベルは、1つの「X」ノードしか有さなくてよい。ワイルドカードノードはいずれのパケットフィールドの値にも一致するので、ワイルドカードノードは、「X」ノードを指し示すことができないことに留意されたい。
ボトムレベル330は、ミドルレベル320と同様に構築される。より詳細には、ミドルレベル320と同様に、ボトムレベル330は、複数の部分木のトップレベルとして見られてよい。ボトムレベル330は、分類木300の最後のレベルであることから、そのような各部分木はトップレベルのみを含み、ここで、分類木300のボトムレベルのノードは、そのようなトップレベルを形成する。図3Cに示されるように、探索部分木は以下である:第1の部分木はノード331および345を含み、第2の部分木はノード332および345を含み、第3の部分木はノード333、334、および335を含み、第4の部分木はノード336および345を含み、第5の部分木はノード337および345を含み、第6の部分木はノード338および345を含み、第7の部分木はノード339および345を含み、第8の部分木はノード340および345を含む。たとえば、ノード333、334、および335は、第3の部分木のトップレベルおよび部分木そのものを形成する。ミドルレベル320と同様に、部分木の各トップレベルは、すべての分類ルール(すなわち、テーブル200)の代わりに、対応する親ノードに関連付けられたルールを使用して、トップレベル310のように構成される。たとえば、第3の部分木のトップレベルを構成するために、ノード323に関連付けられたルール(すなわち、ルール1、2、および4)が使用される。
上記で説明したやり方で、分類木300は、テーブル200のすべてのルールを組み入れる。たとえば、ルール1は、ノード314、323、および334によって表され、ルール2は、ノード314、323、322および324によって表される、などである。図5Aおよび図5Bに関してより詳細に以下で説明されるように、そのような分類木は着信パケットを分類するために使用され、ここで、分類木の1つのレベルから別のレベルへと移動しながら、パケットフィールドが1つずつ解析される。一実施形態では、パケット分類プロセスを完了するノードを導く分類木内の経路が、論理的決定経路とみなされ、ここで、その経路内のノードは論理的決定点である。よって、説明されるように、分類木300は、複数の論理的決定経路を表し、ここで、分類木300に含まれる各論理的決定経路は、分類木300によって表される分類ルールに基づいて、着信パケットの単一パス分類を提供するために必要である。
図4Aから図4Gは、本発明の一実施形態に従って、分類木300などの分類構造を構成するための方法400の流れ図を図示する。一般的に、図示された方法400は、分類ルールの集合を使用して分類木を作成するステップを提供し、ここで、作成された分類木は、集合の各分類ルールを組み入れて、着信パケットに単一パス分類を提供する。方法400の説明を容易にするために、図2および図3に図示されるテーブル200の分類ルールおよび対応する分類木300が使用され、以下では実施例1と称される。
方法は、複数の分類ルールが受信されるステップ402より開始される。上記で説明されたように、そのようなルールは、図2のテーブル200のようなテーブル内で編成されてもよい。典型的に、分類ルールは、たとえばテーブル内で、フィールドごとに照合され、ここで、各フィールドは優先順位レベルを有する。このやり方で、行が分類ルールを表しているテーブルにおいて分類ルールが編成されるとき、そのようなテーブルの各列は、同じ優先順位レベルを有するフィールドを含むことになる。
ステップ403で、最も高い優先順位レベルを有する受信された分類ルールのフィールドが選択されて、現在のレベルに関連付けられる。たとえば、テーブル200の分類ルールの中から、フィールド1列において見出されるルール1−4のフィールドが、ステップ403で選択されることになる。一般的に、現在のレベルは、分類木の1つのレベルに対応する分類ルールのフィールドを表す。たとえば、分類木のトップレベルが構築される間に、現在のレベルは、トップレベルによって表されるフィールドに関連付けられる。ステップ404で、選択されたフィールドの値の中で識別された各一意の値について、分類木のノードが作成される。言い換えれば、フィールドが一意の値を有する場合、対応するノードが作成され、一方で、いくつかのフィールドが同じ値を有する場合は、1つのみの対応するノードが作成される。したがって、実施例1では、ステップ404で、「A」、「B」、および「*」の値をそれぞれ有する3つのノードが作成されることになる。作成されたノードは、分類木のトップレベルを形成する。
しかしながら、図3A−3Cにおいて、2つのワイルドカードノード、すなわち、ノード312および318が、トップレベル310に含まれるように示されていることに留意されたい。代替的には、かつ図4A−図4Gの実施形態に定義されるように、ノード312およびノード318のうちの1つのみが作成される。図3Cで見られるように、ノード312またはノード318は、同一の対応する部分木を:312→321→331→345、および318→328→340→345、を有する。よって、図4A−図4Gの実施形態に従って構築されている実施例1の分類木のトップレベルは、ノード318が除去され、ノード316の左ポインタおよび右ポインタがノード312を指し示している状態で、図3Aのトップレベル310として想像されてもよい。
ステップ405で、作成されたノードの中で中央値を有するノードが決定され、ヘッドノードに関連付けられる。一実施形態では、ノードのうちのおよそ半分がそのノードの値よりも小さな値を有し、ノードのうちのおよそ半分がそのノードの値よりも大きな値を有する場合に、ノードは中央値を有する。したがって、実施例1では、そのような値は「A」である。「A」は、「*」よりも大きく、「B」よりも小さく、したがって、値「A」を有するノード314がヘッドノードである。しかしながら、別の実施形態では、値「A」ではなく、値「B」が中央値として決定されることになるやり方で(「B」はAよりも大きく、「*」よりも小さい)、中央値が定義される。さらに別の実施形態では、ステップ405で、ランダムなノードが選択される。
ステップ406で、ヘッドノードに関連付けられた、1つまたは複数の一致するルールが識別される。一致するルールとは、その現在のレベルのフィールドにおいて、ヘッドノードの値(すなわち中央値)またはワイルドカードの値(すなわち「*」)を有する分類ルールである。実施例1では、ルール1および2が、現在のレベルのフィールド、フィールド1おいて「A」値を有し、ルール4が、現在のレベルのフィールド、フィールド1おいて「*」値を有するので、ヘッドノード314に関連付けられた一致するルールは、ルール1、2、および4である。
ヘッドノードの左枝および右枝を作成するために、ステップ407で、左ノードおよび右ノードの集合が作成される。左ノードの集合は、その値が中央値よりも小さいノードを含む(たとえば、実施例1では、左ノードの集合は、中央値「A」よりも小さい「*」値を有するノード312を含むことになる)。右ノードの集合は、中央値よりも大きな値を有するノードを含む(たとえば、実施例1では、右ノードの集合は、中央値「A」よりも大きい「B」値を有するノード316、およびオプションで、別の「*」ノード、ノード318を含むことになる)。ステップ408で、ヘッドノードは、現在のノードに関連付けられる。一般的には、現在のノードとは、その左枝および/または右枝が現在決定されているところのノードである。言い換えれば、現在のノードにより、方法400は、分類木のノードをあちこちに移動して、ノード間の関係を定義することが可能になる。
ステップ409から417は、左ノードの集合のノードに基づいて、ヘッドノードの左枝を識別するステップを提供する。一般的に言えば、図4A−図4Gの例示的な実施形態では、左ノードの集合のノードの中で最も大きな値を有するノードより開始して、ノードの値が減少する順序で、左ノードの集合のノードが、ヘッドノードの左枝を形成する。ステップ409で、現在のノードに関連付けられたノードが、左ノードの集合の値の中で最も小さな値を有するかどうかが判定される。最も小さな値を有する場合、左ノードの集合のすべての作成されたノードは解析されており、左枝のノード間の関係は定義されており、したがって、方法400は、ステップ416へと進む。
現在のノードの値が、左ノードの集合のノードの中で最も小さな値ではないとき(ステップ409)、左枝のノード間のすべての関係が定義されているわけではない。よって、ステップ410で、現在のノードの値と比較して次に小さな値を有するノードが、左ノードの集合のノードの中から選択される。たとえば、左ノードの集合が、ノード[A、B、C]を含み、現在のノードの値がCである場合、ステップ410で、値Bを有するノードが選択されることになる。しかしながら、現在のノードの値がBである場合、選択されるノードの値はAである。
ステップ411で、現在のノードがヘッドノードではないと判定された場合、ステップ413で、現在のノードの左ポインタおよび右ポインタが、選択されたノードに関連付けられる。しかしながら、現在のノードがヘッドノードである場合、ステップ412で、現在のノードの左ポインタのみが、選択されたノードに関連付けられる。ステップ414で、選択されたノードのための一致するルールが識別される。より詳細には、現在のレベルのフィールドにおいて、選択されたノードと同じ値、またはワイルドカードの値を有する分類ルールが、一致するルールとして、識別され、選択されたノードに関連付けられる。ステップ415で、選択されたノードは、現在のノードに関連付けられ、方法は、ステップ409に戻る。このやり方で、方法400は、左枝のすべてのノード間の関係が定義されるまで、ノードの値が減少する順序で、左枝のノードに沿って移動する。
ステップ416で、現在のノードの値がワイルドカードの値(すなわち「*」)であるかどうかが判定される。ワイルドカードの値でない場合、現在のレベルにおいてワイルドカードのフィールドはなく、したがって、いずれのトップレベルのノードの値にも一致しない、現在のレベルの値を有する着信パケットが存在してもよい。よって、ステップ417で、図3Cのノード345などの、特殊な「X」ノードが左枝に追加される。より詳細には、現在のノードの右ポインタおよび左ポインタが、「X」ノードに関連付けられる(「X」ノードを指し示す)。上記で説明したように、一実施形態では、そのような「X」ノードは、着信パケットについて一致するルールが見つけられなかったこと、および分類プロセスが停止されるべきことを示す。
しかしながら、現在のノードの値が、ワイルドカードの値であるとき、「X」ノードは左枝に追加されない。というのは、いずれの着信パケットも現在のノードに一致することになり、分類プロセスは、単純に次の木のレベルへと進むことになるからである。通常、ワイルドカードノードを含む分類木のレベルは、「X」ノードを有することはなく、逆も同様である。さらに、ワイルドカードノードは、普通、左枝または右枝を有さない。
ステップ418で、ヘッドノードは現在のノードに関連付けられて、ヘッドノードの右枝を構築するのを可能にする。ステップ418からステップ428は、ステップ409からステップ417に類似したやり方で、右ノードの集合のノードに基づいて、ヘッドノードの右枝を識別するステップを提供する。一般的に言えば、図4A−図4Gの例示的な実施形態では、右ノードの集合のノードの中で最も小さな値を有するノードより開始して、ノードの値が増加する順序で、右ノードの集合のノードが、ヘッドノードの右枝を形成する。ステップ419で、現在のノードに関連付けられたノードが、右ノードの集合の値の中で最も大きな値を有するかどうかが判定される。最も大きな値を有する場合、右ノードの集合のすべての作成されたノードは解析されており、右枝のノード間の関係は定義されており、したがって、方法400は、ステップ416へと進む。
現在のノードの値が、右ノードの集合のノードの中で最も大きな値ではないとき(ステップ419)、右枝のノード間のすべての関係が定義されているわけではない。よって、ステップ420で、現在のノードの値と比較して次に大きな値を有するノードが、右ノードの集合のノードの中から選択される。たとえば、右ノードの集合が、ノード[A、B、C]を含み、現在のノードの値がAである場合、ステップ420で、値Bを有するノードが選択されることになる。しかしながら、現在のノードの値がBである場合、選択されるノードの値はCである。
ステップ421で、現在のノードがヘッドノードではないと判定された場合、ステップ423で、現在のノードの左ポインタおよび右ポインタが、選択されたノードに関連付けられる。しかしながら、現在のノードがヘッドノードである場合、ステップ422で、現在のノードの右ポインタのみが、選択されたノードに関連付けられる。ステップ424で、選択されたノードのための一致するルールが識別される。より詳細には、現在のレベルのフィールドにおいて、ワイルドカードの値、または選択されたノードと同じ値を有する分類ルールが、一致するルールとして、識別され、選択されたノードに関連付けられる。ステップ425で、選択されたノードは、現在のノードに関連付けられ、方法は、ステップ419に戻る。このやり方で、方法400は、右枝のすべてのノード間の関係が定義されるまで、ノードの値が増加する順序で、右枝のノードに沿って移動する。
ステップ426で、左ノードの集合がワイルドカードノードを含むかどうかが判定される。ワイルドカードノードを含まない場合、現在のレベルにおいてワイルドカードのフィールドはなく、したがって、いずれのトップレベルのノードの値にも一致しない、現在のレベルの値を有する着信パケットが存在してもよい。よって、ステップ427で、現在のノードの右ポインタおよび左ポインタが「X」ノードに関連付けられる。しかしながら、左ノードの集合がワイルドカードノードを含むとき、いずれの着信パケットもそのようなノードに一致される可能性があるので、「X」ノードは、左枝に追加されない。分類プロセスが、左枝に沿って、または右枝に沿って論理的決定経路を取るにせよ、少なくとも1つの分類ルールが現在のレベルのフィールドにおいてワイルドカードの値を有する場合、特定の値の一致が既に見つかっていない限り、着信パケットの対応するフィールドは、ワイルドカードのフィールドに一致されるべきである。よって、ステップ428で、現在のノードの左ポインタおよび右ポインタが、左ノードの集合のワイルドカードノードに関連付けられる。
一般的に、上記で説明した方法400のステップ403からステップ428は、分類木のトップレベルを構築するステップを提供する。ステップ429からステップ462は、分類木の残りのレベルを構築するステップ、および分類木のレベル間の関係を定義するステップを提供して、分類木の構成を完成する。ステップ429で、現在のレベルが最も低い優先順位レベルのフィールドに関連付けられているかどうかが判定される。言い換えれば、ステップ429は、分類木のすべてのレベルが構築されているかどうかを判定する。分類木のすべてのレベルが構築されていない場合、ステップ431で、分類木の次のレベルを表すフィールドが選択される。より詳細には、分類木にまだ表されていないフィールドの中で最も高い優先順位レベルを有する分類ルールのフィールドが、選択されて、次のレベルに関連付けられる。実施例1では、そのようなフィールドは、テーブル200のフィールド2列において見出される。一般的に、次のレベルは、分類木の単一レベルによって、すなわち、現在のレベルのノードの子によって表される分類ルールのフィールドを表す。
一般的に、反復されるステップ432−434を通して、現在のレベルのノードと次のレベルのノードとの関係が定義される。より詳細には、ステップ432で、いずれのノードにもまだ関連付けられていない、次のレベルのポインタ(すなわち、ノードの中枝を示すポインタ)を有する現在のレベルのノードが選択される。一実施形態では、そのような選択はランダムであり、一方で、別の実施形態では、現在のレベルのノードは、それらの値の順に1つずつ選択される。
ステップ433で、次のレベルのノードのプールが作成され、ここで、プールの中のノードは、選択された現在のレベルのノードが一致された後にのみ、分類プロセスの間に到達されてよい。一般的に、作成されたプールは、ノードの中枝を介して、選択された現在のレベルのノードに関連付けられた、分類部分木のトップレベルのノードを含む。より詳細には、選択されたノードの一致するルールの次のレベルのフィールドの中で一意の値ごとに、そのような値を有するノードが作成される。言い換えれば、ノードの作成されたプールは、分類ルールの次のレベルのフィールドの部分集合を表し、ここで、選択された現在のレベルのノードは制約条件として働く。ステップ434で、作成されたノードの中でヘッドノードが決定される。図示された実施形態では、ヘッドノードは、作成されたノードの値の中で中央値を有するノードである。決定されたヘッドノードは、選択された現在のレベルのノードの次のレベルのポインタに関連付けられる。
ステップ435からステップ460は、上記で説明したステップ406から428に類似しているが、わずかな変更がある。一般的には、これらのステップは、分類部分木のトップレベルを構築するステップを提供し、ここで、決定されたヘッドノードは、そのような部分木のそれぞれのルートノードである。よって、ステップ435で、決定されたヘッドノードに関連付けられた1つまたは複数の一致するルールが識別され、ここで、一致するルールは、その現在のレベルのフィールドにおいて、中央値またはワイルドカードの値(すなわち「*」)を有する分類ルールである。しかしながら、一致するルールがすべての利用可能な分類ルールから選択されるステップ406とは異なり、ステップ435では、次のレベルのヘッドノードのための一致するルールは、ヘッドノードの親ノード(たとえば、選択された現在のレベルのノード)の一致するルールのみを含む分類ルールの集合を使用して、決定される。
次のレベルのヘッドノードの左枝および右枝を作成するために、ステップ436で、左ノードおよび右ノードの集合が作成され、ここで、左ノードの集合は、その値が中央値よりも小さいノードを含み、右ノードの集合は、中央値よりも大きな値を有するノードを含む。ステップ437で、次のレベルのヘッドノードが、現在のノードに関連付けられる。
ステップ409からステップ417と同様に、ステップ438からステップ444は、左ノードの集合のノードに基づいて、次のレベルのヘッドノードの左枝を識別するステップを提供する。ステップ438で、現在のノードに関連付けられたノードが、左ノードの集合の値の中で最も小さな値を有するかどうかが判定される。最も小さな値を有する場合、左ノードの集合のすべての作成されたノードは解析されており、左枝のノード間の関係は定義されており、したがって、方法400は、ステップ457へと進む。
現在のノードの値が、左ノードの集合のノードの中で最も小さな値ではないとき(ステップ438)、左枝のノード間のすべての関係が定義されているわけではない。よって、ステップ439で、現在のノードの値と比較して次に小さな値を有するノードが、左ノードの集合のノードの中から選択される。ステップ440で、現在のノードがヘッドノードではないと判定された場合、ステップ442で、現在のノードの左ポインタおよび右ポインタが、選択されたノードに関連付けられる。しかしながら、現在のノードがヘッドノードである場合は、ステップ441で、現在のノードの左ポインタのみが、選択されたノードに関連付けられる。ステップ443で、選択されたノードのための一致するルールが識別される。より詳細には、次のレベルのフィールドにおいて、選択されたノードと同じ値、またはワイルドカードの値を有する選択された現在のレベルのノードの一致するルールの中の分類ルールが、一致するルールとして、識別され、選択されたノードに関連付けられる。ステップ444で、選択されたノードは現在のノードに関連付けられ、方法はステップ439に戻る。
左枝の最後のノードが到達されるとき、現在のノードは、左枝の最後のノードであり、その値は、左ノードの集合の最も小さな値である。ステップ445で、現在のノードの値がワイルドカードの値(すなわち「*」)であるかどうかが判定される。ワイルドカードの値でない場合、分類部分木を構築するのに使用される分類ルールの中の次のレベルにおいて、ワイルドカードのフィールドはなく、したがって、いずれの部分木のトップレベルのノードの値にも一致しない、次のレベルの値を有する着信パケットが存在してもよい。しかしながら、これは、次のレベルのフィールドにおいて、ワイルドカードの値を有する分類ルールの初期集合の中での、分類ルールの存在を妨げないことに留意されたい。
左ノードの集合における唯一のノードがヘッドノードであるとき、現在のノードはまた、左ノードの集合の最も小さな値を有してよい。典型的に、分類木が構築されているとき、分類部分木を構築するために使用されるいくつかの分類ルールは、分類木のそれぞれ次のレベルにおいて減少する。結果として、それぞれのレベルにおける異なるフィールドの値の数もまた減少する。したがって、最終的に、左ノードの集合および/または右ノードの集合は、1つのノード、すなわちヘッドノードのみを含むことになる。よって、ステップ446で、現在のノードがヘッドノードであるかどうかが判定される。ヘッドノードである場合、ヘッドノードは、左ノードの集合の中で唯一のノードであり、したがって、ステップ448で、その左ポインタが、特殊な「X」ノードに関連付けられる。ヘッドノードでない場合、ステップ447で、現在のノードの左ポインタおよび右ポインタの両方が、「X」ノードに関連付けられる。
ステップ449で、ヘッドノードが現在のノードに関連付けられて、ヘッドノードの右枝の作成を可能にする。ステップ418から428と同様に、ステップ450からステップ460は、右ノードの集合のノードに基づいて、次のレベルのヘッドノードの右枝を識別するステップを提供する。より詳細には、ステップ450で、現在のノードに関連付けられたノードが、右ノードの集合の値の中で最も大きな値を有するかどうかが判定される。最も大きな値を有する場合、右ノードの集合のすべての作成されたノードは、解析されており、右枝のノード間の関係は定義されており、したがって、方法400は、ステップ457へと進む。
現在のノードの値が、右ノードの集合のノードの中で最も大きな値ではないとき(ステップ450)、右枝のノード間のすべての関係が定義されているわけではない。よって、ステップ451で、現在のノードの値と比較して次に大きな値を有するノードが、右ノードの集合のノードの中から選択される。ステップ452で、現在のノードがヘッドノードではないと判定された場合、ステップ454で、現在のノードの左ポインタおよび右ポインタが、選択されたノードに関連付けられる。しかしながら、現在のノードがヘッドノードである場合、ステップ453で、現在のノードの右ポインタのみが、選択されたノードに関連付けられる。ステップ455で、選択されたノードのための一致するルールが識別される。より詳細には、次のレベルのフィールドにおいて、選択されたノードと同じ値、またはワイルドカードの値を有する分類ルールが、一致するノードとして、識別され、選択されたノードに関連付けられる。
ステップ456で、選択されたノードが現在のノードに関連付けられ、方法はステップ450に戻る。このやり方で、方法400は、右枝のすべてのノード間の関係が定義されるまで、ノードの値が増加する順序で、右枝のノードに沿って移動する。現在のノードの値が、右ノードの集合のノードの中で最も大きな値である場合、方法はステップ457へと進む。これは、右ノードの枝の最後のノードが到達されたとき、または右ノードの集合の唯一のノードがヘッドノードであるときのいずれかで発生してよい。右ノードの集合および左ノードの集合の唯一のノードがヘッドノードであり、その値がワイルドカードの値であるとき、ヘッドノードの右ポインタおよび左ポインタを、いずれのノードにも関連付ける必要はない。というのは、着信パケットの対応するフィールドと比較するために1つの値のみが存在し、この値はいずれの値にも一致するからである。よって、一実施形態では、ステップ457で、現在のノードの値がワイルドカードの値であるかどうかが判定され、ワイルドカードの値である場合、方法は、現在のレベルのノードと次のレベルのノードとの関係を定義するステップを単純に続行する。
現在のノードの値が、ワイルドカードの値ではないとき、ステップ457で、左ノードの集合がワイルドカードノードを含むかどうかが判定される。左ノードの集合がワイルドカードノードを含むとき、「X」ノードは右枝に追加されず、しかしその代わりに、ステップ460で、現在のノードの左ポインタおよび右ポインタが、左ノードの集合のワイルドカードノードに関連付けられる。左ノードの集合が、ワイルドカードノードを含まないとき、ステップ459で、現在のノードの右ポインタおよび左ポインタが、それ以前に関連付けられていない場合(たとえば、左ノードの集合がヘッドノードのみを含むとき、ポインタでなくヘッドが、左枝の処理の間に「X」ノードに既に関連付けられていることがある)、「X」ノードに関連付けられる。
ステップ461で、現在のレベルの各ノードと、次のレベルのノードとの関係が定義されているかどうかが判定される。現在のレベルのうちの少なくとも1つのノードが、次のレベルのノードに関連付けられていない次のレベルのポインタを有するとき、方法400は、ステップ432に戻る。このやり方で、ステップ432からステップ461は、現在のレベルの各ノードが次のレベルのノードに関連付けられるまで、反復する。次いで、ステップ462で、次のレベルのフィールドが現在のレベルに関連付けられ、方法400はステップ429に戻って、分類木の次のレベルを処理する。言い換えれば、ステップ462で、次のレベルが現在のレベルとなる。
ステップ429で、現在のレベルが、最も低い優先順位レベルのフィールドに関連付けられていると判定された場合、分類ルールのすべてのフィールドは、解析されており、対応するレベルによって分類木に表されている。よって、方法400はステップ430で終了する。このやり方で、複数の決定経路を有する分類木が構成される。上記で説明されたように、一実施形態では、構成された分類木は、着信パケットの単一パス分類を提供するために必要な論理的決定経路のみを含む。
しかしながら、分類ルールの同じ集合について、分類木が構成される方法の複数の変形が可能であることに留意されたい。たとえば、上記で説明したように、ヘッドノードの左枝および右枝は、順序付けられたノードの集合を使用して構築され、したがって、各ノードの現在のレベルにおいて、左ポインタおよび右ポインタが同じノードに関連付けられた枝を、効果的に作成する。別の実施形態では、たとえば、ステップ410および420で説明されたように、次に小さい/大きいノードを選択する代わりに、未解析なまま残されたノードの中で中央値を有するノードが選択される。このやり方で、いくつかのノードの左ポインタおよび右ポインタが、異なるノードに関連付けられることになる。さらに、各レベルで分類プロセスが取ることになる経路(論理的決定経路)は、典型的に、上記で説明された分類木においてよりも短いものになる。しかしながら、たとえば、ワイルドカードノードおよび/または「X」ノードへのいくつかのポインタは、著しく増加することがある。さらに、上記の説明においては、ノード間の関係はポインタを使用して定義されるが、他の手段、たとえば、親または子(たとえば、左の子、中央の子、右の子)としてノードを識別するステップ、および特定のノード間の関連付けが使用されてもよいことに留意されたい。
図5Aおよび5Bは、本発明の一実施形態に従って、パケットを分類するための方法500を図示する。図示された方法500は、図3A−図3Cに関して上記で説明された分類木300などの、分類構造を使用する。方法500は、ステップ505にて開始される。ステップ510で、パケットが受信される。ステップ515で、2つの変数、すなわち、現在のレベルおよび現在のノードに、初期値が割り当てられる。たとえば、一実施形態では、そのような値は、分類木の、トップレベル(たとえば、図3A−図3Cのトップレベル310)およびヘッドノード(たとえばノード314)それぞれである。一般的に、現在のレベルは、方法500に従って現在解析されている分類木のレベル(たとえば、トップレベル310、ミドルレベル320、またはボトムレベル330)を表す。現在のノードは、方法500に従って現在解析されている分類木のノード(たとえば、ノード312、326、336、その他)を表す。
ステップ520で、現在のフィールドが、現在のレベルに対応するパケットフィールドに関連付けられる。上記で説明したように、分類木300のレベルは、分類ルールのフィールドの優先順位レベルに対応する。現在のフィールドは、現在解析されている木のレベルに対応する優先順位レベルを有するパケットフィールドの値を表す。たとえば、パケットのフィールドが[B、C、A]の値を有し、ここで、Bは最も高い優先順位を有するフィールドの値であり、Aは最も低い優先順位を有するフィールドの値であり(実施例2)、方法500が分類木の第2のレベル(たとえば、ミドルレベル320)を解析している段階である場合、現在のフィールドは、値「B」を有することになる。
ステップ525および555で、現在のフィールドの値が現在のノードの値と比較されて、現在のノードのどの枝(左、中、または右)が、または言い換えれば、どの論理的決定経路が取られて、分類プロセスを続行するべきかを決定する。現在のフィールドの値が、現在のノードの値と等しくない限り、方法500はステップ555へと進む。ステップ555は、現在のフィールドの値が、現在のノードの値よりも大きいかまたは小さいかを判定するステップを提供する。この実施形態の分類木の基本的な構造により、現在のフィールドの値が現在のノードの値よりも小さい場合に、一致するノードが、それが存在する場合には、現在のノードの左枝に沿ったどこかに位置される。よって、方法500は、ステップ580へと進み、ここで、現在のノードの左ポインタに関連付けられたノードが識別される(すなわち左の子)。反対に、現在のフィールドの値が現在のノードの値よりも大きい場合に、一致するノードが、それが存在する場合には、現在のノードの右枝に沿ったどこかに位置される。よって、方法500は、ステップ560へと進み、ここで、現在のノードの右ポインタに関連付けられたノードが識別される(すなわち右の子)。
上記で説明された実施例2を検討する。トップレベル310、および、とりわけ受信されたパケット[B、C、A]に関連して、ノード314を解析するために、ノード314の値、すなわち「A」が、現在のフィールドの値、すなわち「B」と比較される。「B」は、「A」よりも大きいので、以下でより詳細に説明されるとおり、分類プロセスは、ノード316へのノード314の右枝に沿って移動することになり、次いでノード316の値が現在のフィールドの値と比較されることになる。
一実施形態では、すべての着信パケットが、一致する分類ルールを有することになるわけではない。そのような実施形態では、分類木は、特殊な「X」ノードを含むことができ、「X」ノードは、特定のパケットの分類プロセスの間に到達された場合に、その着信パケットが、分類木に表されているいずれの分類ルールにも一致しないことを示すことになり、したがって、分類プロセスは停止されてよい。よって、図5の方法500はステップ565を含み、ここで、ステップ560またはステップ580において識別されたノードが、「X」ノードであるかどうかが判定される。「X」ノードである場合、ステップ570で、ルールを適用するのに関与するコンポーネントに不一致データが提供され、方法500はステップ550で終了する。
一実施形態では、不一致データは、着信パケットが分類木に表されている分類ルールのいずれにも一致しないことを単純に示す。別の実施形態では、追加的な情報が提供される。たとえば、そのような情報は、部分的に一致するルールのリスト、一致されている受信されたパケットのフィールドのリスト、「X」ノードが到達されている分類木のレベルなどを含むことができる。
以下の例、実施例3を検討する。着信パケットのフィールドが[D、C、A]の値を有し、ここで、Dは最も高い優先順位を有するフィールドの値であり、Aは最も低い優先順位を有するフィールドの値であると仮定されたい。方法500を適用すると、パケットの最初の2つのフィールドは、うまく一致される、すなわち「D」はノード318に、「C」はノード328に一致される。しかしながら、パケットの最後のフィールド、すなわち「A」については、一致が首尾良く見出されないことがある。この特定な例において、ボトムレベル330で解析のために利用可能な唯一のノードであるノード340は、値「C」を有する。「A」は、「C」よりも小さいので(ステップ555)、ステップ580で、ノード340の左ポインタに関連付けられたノードが決定され、すなわちノード345である。ノード345は、「X」ノードであり(ステップ565)、したがって、不一致データが提供される(ステップ570)。そのようなデータは、最初の2つのパケットフィールドの値「D」および「C」が、ルール4(たとえば、最後に一致したノード、ノード328に関連付けられたルール)に一致すること、分類木300のボトムレベル330で不一致が判定されたことなどの情報を含むことができる。
ステップ565に戻って、このステップで、ステップ560またはステップ580で識別されたノードが、「X」ノードではないと判定された場合、ステップ590で、識別されたノードは現在のノードとなり、方法500は、ステップ525に戻る。このやり方で、方法500の分類プロセスは、ステップ525で現在のレベルの一致するノードが見つかるまで、または「X」ノード565が到達されるまで、1つのノードから別のノードへと進み、ここで、ノードは同じレベル(または言い換えれば、分類木の1つのレベル内で形成された論理的決定経路に沿った)のノードである。したがって、上記で説明された実施例1において、トップレベル320および第1のパケットフィールドが解析されるとき、最初、現在のノードの変数は、ヘッドノード314に等しい。第1のパケットフィールドの値「B」は、ノード314の値よりも大きいので、現在のノードの変数には、新たな値、すなわち、ノード314の右の子であるノード316が割り当てられる。この割り当てにより、パケットの第1のフィールドの値とノード316の値との比較が可能になり、したがって、第1のパケットフィールドをノード316に一致させる。
ステップ525で、現在のフィールドの値が現在のノードの値に等しい(すなわち、一致する)ことが判定された場合、方法500は、ステップ530へと進む。これは、パケットフィールドのうちの1つが、分類ルールのうちの少なくとも1つに一致されていることを意味する。よって、分類プロセスは、現在のノードの中枝によって形成された論理的決定経路に沿って、分類木の次のレベルに続く。したがって、上の実施例2では、そのような一致が、第1のパケットのフィールドの値「B」とノード316との間、および第2のパケットのフィールドの値「C」とノード326との間に見出されることになる。
ステップ530で、現在のノードが、ボトムレベル(たとえば、ボトルレベル330)のノードであるかどうかが判定される。現在のレベルがボトムレベルである場合、分類木の各レベルは検討されている。言い換えれば、ボトムレベルのノードは、受信されたパケットの最も低い優先順位のフィールドに一致するので、パケットは分類されており、一致するルールは見出されている。一致するルールは、現在のノードに関連付けられたルールである。ステップ545で、そのようなルールが、ルールを適用するのに関与するコンポーネントに提供され、方法500は、ステップ550で終了する。
たとえば、Aが最も高い優先順位を有するフィールドの値であり、Bが最も低い優先順位を有するフィールドの値である、[A、B、C]のフィールドの値を有するパケットを考える(実施例3)。さらに、方法500が、現在ボトムレベル330およびノード334を解析している段階であることを考える。よって、現在のレベルはボトムレベル330を表し、現在のノードはノード334を表す。したがって、現在のノードの値(すなわち「C」)は、現在のフィールドの値(すなわち「C」)に等しい。というのは、パケットの第3のフィールドが、ボトムレベルに対応するフィールドであるからである。さらに、現在のレベルはボトムレベルであるので、パケットのすべてのフィールドは一致されており、すなわち、「A」とノード314とが、「B」とノード323とが、および「C」とノード334とが一致されている。したがって、一致する分類ルールは、ボトムレベルの一致するノード(すなわち、ノード314)に関連付けられたルールであり、テーブル200のルール1である。
よって、本発明の実施形態は、常に具体的な結果を提供する単一パス分類を可能にするようなやり方で、複数の分類ルールに基づいて、単一の分類構造を構成するための方法を提供する。本明細書において、さまざまな実施形態が示され、詳細に説明されてきたが、当業者であれば、説明された教示をなおも組み込む、多くの他の変更された実施形態を容易に工夫することができる。

Claims (10)

  1. 複数のルールに従って、受信されたパケットの単一パス分類を可能にするように構成された分類木構造を構築するための方法であって、各ルールが、それに関連付けられた複数のフィールドを有し、各フィールドが、それに関連付けられた優先順位レベルを有し、
    方法が、トップ優先順位レベルについて、
    トップ優先順位レベルのフィールド内で、各一意の値についてノードを作成するステップと、
    トップ優先順位レベル内のノードのそれぞれについて、対応するノードの値に一致する1つまたは複数のルールのそれぞれの集合を識別するステップと、
    作成されたノードからヘッドノードを選択するステップと、
    トップ優先順位レベル内でヘッドノードから他のノードへの論理的決定経路を作成するステップと、
    トップ優先順位レベル内のノードから次に低い優先順位レベルへの論理的決定経路を作成するステップと
    を実行するステップを含み、いずれの残りの優先順位レベルのそれぞれについて、
    次に高い優先順位レベルから受信された論理的決定経路のそれぞれについて、それぞれ次に高い優先順位レベルのノードに関連付けられたルールを満足するのに必要なノードおよび関連した論理的決定経路のみを含む、それぞれの部分木を作成するステップと、
    最低位以外の各優先順位レベルについて、現在の優先順位レベル内のノードから次に低い優先順位レベルへの論理的決定経路を作成するステップと
    を実行するステップを含む、方法。
  2. 少なくとも1つの論理的決定経路がワイルドカードノードを含む、請求項1に記載の方法。
  3. 少なくとも1つの論理的決定経路が一致しないノードを含む、請求項1に記載の方法。
  4. それぞれの部分木を作成するステップが、部分木のトップレベルを構築するステップを含み、
    部分木のトップレベルを構築するステップが、
    複数のルールの部分集合のトップレベルのフィールド内で、各一意の値についてノードを作成するステップと、
    トップレベル内のノードのそれぞれについて、対応するノードの値に一致する1つまたは複数のルールのそれぞれの集合を、複数のルールの部分集合を使用して識別するステップと、
    作成されたノードからヘッドノードを選択するステップと、
    トップレベル内でヘッドノードから他のノードへの論理的決定経路を作成するステップと、
    トップ優先順位レベル内のノードから次に低い優先順位レベルへの論理的決定経路を作成するステップとを含み、
    複数のルールの部分集合が、トップレベルの次に高い優先順位レベルを有するノードの一致するルールを含み、部分木に関連付けられている、
    請求項1に記載の方法。
  5. トップ優先順位レベル内でヘッドノードから他のノードへの論理的決定経路を作成するステップが、
    ヘッドノードの値よりも大きな値を有する、トップ優先順位レベルのノードを含む第1のノードグループを形成するステップと、
    ヘッドノードの値よりも小さな値を有する、トップ優先順位レベルのノードを含む第2のノードグループを形成するステップと、
    第1のノードグループからヘッドノードの第1の子を選択するステップと、
    第2のノードグループからヘッドノードの第2の子を選択するステップと
    を含む、請求項1に記載の方法。
  6. 第1の子が、ヘッドノードの値と比較して次に大きな値を有するノードであり、第2の子が、ヘッドノードの値と比較して次に小さな値を有するノードであり、トップ優先順位レベル内でヘッドノードから他のノードへの論理的決定経路を作成するステップが、
    第1のノードグループの各ノードについて、最も大きな値を有するノードを除いて、そのノードの値と比較したときに、値が次に大きな値である子ノードを選択するステップと、
    第2のノードグループの各ノードについて、最も小さな値を有するノードを除いて、そのノードの値と比較したときに、値が次に小さな値である子ノードを選択するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 各フィールドがそれに関連付けられた異なる優先順位レベルを有する、複数のパケットフィールドを含むデータパケットを受信するステップと、
    複数の分類ルールを表す分類木構造の単一パスを介して、データパケットに一致する分類ルールを決定するステップであって、分類木構造は複数のレベルを含み、分類木のトップレベルが最も高い優先順位レベルに対応し、分類木構造のそれぞれ次のレベルが次に低い優先順位レベルに対応する、決定するステップと
    を含む、着信データパケットを分類するための方法であって、
    決定するステップが、
    パケットフィールドを選択するステップであって、選択されたパケットフィールドが最も高い優先順位レベルに関連付けられる、選択するステップと、
    トップレベルにおけるルートノードより開始して、ボトムレベルに向かって移動しながら、レベルごとに、分類木構造内でデータパケットに対応する論理的決定経路に沿って進むステップであって、分類木構造の各レベルについて、
    選択されたパケットフィールドの値を、分類構造の現在のレベル内を通る論理的決定経路のノードと比較して、選択されたパケットフィールドとしての値と同じ値を有する一致するノードを見つけ、一致するノードが、分類木構造の次に低いレベルへの論理的決定経路を定義し、
    最低位以外の各レベルについて、一致するノードを見つけ次第、次に低い優先順位レベルを有するパケットフィールドを選択する、進むステップと、
    ボトムレベルの一致するノードを見つけ次第、見つかった一致するノードに関連付けられた分類ルールを、データパケットに一致する分類ルールとして提供するステップと
    を含む、
    方法。
  8. データパケットの論理的決定経路が、複数のレベルのうちの1つにおいて一致しないノードに到達した場合に、データパケットが一致する分類ルールを有さないという情報を提供するステップをさらに含む、請求項7に記載の方法。
  9. 現在のレベル内で論理的決定経路を決定するステップが、
    論理的決定経路の次のノードを決定するために、現在のレベルのヘッドノードの値を、対応するパケットフィールドの値と比較するステップであって、現在のレベルがトップレベルであるときに、ヘッドノードがルートノードであり、現在のレベルがトップレベルではないときに、ヘッドノードは前のレベルにおける論理的決定経路によって定義される、比較するステップと、
    ヘッドノードの値がパケットフィールドの値よりも小さいことを判定次第、ルートノードの値よりも大きな値を有する、ヘッドノードの第1の子を、次のノードとして選択するステップと、
    ヘッドノードの値がパケットフィールドの値よりも大きいことを判定次第、ルートノードの値よりも小さな値を有する、ヘッドノードの第2の子を、次のノードとして選択するステップと
    を含む、請求項7に記載の方法。
  10. 現在のレベル内で論理的決定経路を決定するステップが、
    論理的決定経路が、現在のレベル内で、一致するノードまたは一致しないノードに到達するまで、現在のレベル内で論理的決定経路の次のノードを選択するステップをさらに含み、
    先行するノードの値がパケットフィールドの値よりも小さい場合に、次のノードが先行するノードの第1の子であり、
    先行するノードの値がパケットフィールドの値よりも大きい場合に、次のノードが先行するノードの第2の子である、
    請求項7に記載の方法。
JP2011534490A 2008-10-30 2009-10-20 データパケットを分類するための方法およびシステム Pending JP2012507930A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/261,396 2008-10-30
US12/261,396 US7872993B2 (en) 2008-10-30 2008-10-30 Method and system for classifying data packets
PCT/US2009/005708 WO2010056267A1 (en) 2008-10-30 2009-10-20 Method and system for classifying date packets

Publications (1)

Publication Number Publication Date
JP2012507930A true JP2012507930A (ja) 2012-03-29

Family

ID=41566274

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011534490A Pending JP2012507930A (ja) 2008-10-30 2009-10-20 データパケットを分類するための方法およびシステム

Country Status (6)

Country Link
US (1) US7872993B2 (ja)
EP (1) EP2342871A1 (ja)
JP (1) JP2012507930A (ja)
KR (1) KR101244604B1 (ja)
CN (1) CN102204180B (ja)
WO (1) WO2010056267A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102213368B1 (ko) * 2019-10-10 2021-02-08 엔시큐어 주식회사 멀티 키워드 고속 검색 시스템 및 방법

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8503428B2 (en) * 2010-03-18 2013-08-06 Juniper Networks, Inc. Customized classification of host bound traffic
US9183244B2 (en) 2011-08-02 2015-11-10 Cavium, Inc. Rule modification in decision trees
US9065860B2 (en) * 2011-08-02 2015-06-23 Cavium, Inc. Method and apparatus for multiple access of plural memory banks
US9208438B2 (en) 2011-08-02 2015-12-08 Cavium, Inc. Duplication in decision trees
KR101331018B1 (ko) 2011-10-11 2014-01-15 주식회사 시큐아이 패킷 분류 방법 및 그 장치
CN103209126B (zh) * 2012-01-11 2015-10-28 深圳市东进软件开发有限公司 一种具有模糊识别功能的号码分析方法和系统
US9613165B2 (en) 2012-11-13 2017-04-04 Oracle International Corporation Autocomplete searching with security filtering and ranking
US10083200B2 (en) * 2013-03-14 2018-09-25 Cavium, Inc. Batch incremental update
US9195939B1 (en) 2013-03-15 2015-11-24 Cavium, Inc. Scope in decision trees
US9595003B1 (en) 2013-03-15 2017-03-14 Cavium, Inc. Compiler with mask nodes
US9430511B2 (en) 2013-03-15 2016-08-30 Cavium, Inc. Merging independent writes, separating dependent and independent writes, and error roll back
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9275336B2 (en) 2013-12-31 2016-03-01 Cavium, Inc. Method and system for skipping over group(s) of rules based on skip group rule
US9544402B2 (en) 2013-12-31 2017-01-10 Cavium, Inc. Multi-rule approach to encoding a group of rules
US9667446B2 (en) 2014-01-08 2017-05-30 Cavium, Inc. Condition code approach for comparing rule and packet data that are provided in portions
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9531849B2 (en) * 2014-06-19 2016-12-27 Cavium, Inc. Method of splitting a packet into individual layers for modification and intelligently stitching layers back together after modification and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
WO2016023232A1 (en) * 2014-08-15 2016-02-18 Hewlett-Packard Development Company, L.P. Memory efficient packet classification method
CN105701199B (zh) * 2016-01-08 2019-04-26 广东电网有限责任公司信息中心 一种数据依赖的数据质量检测方法及装置
WO2018138062A1 (en) 2017-01-24 2018-08-02 Rockley Photonics Limited Multi-field classifier
CN108574679B (zh) * 2017-03-13 2021-03-30 华为技术有限公司 处理分组的方法和网络设备
US10440631B1 (en) * 2017-11-06 2019-10-08 Amazon Technologies, Inc. Payload type aware routing in wireless mesh networks
GB2580285B (en) * 2018-08-13 2021-01-06 Metaswitch Networks Ltd Packet processing graphs
US11269836B2 (en) * 2019-12-17 2022-03-08 Cerner Innovation, Inc. System and method for generating multi-category searchable ternary tree data structure
KR102339945B1 (ko) * 2020-05-26 2021-12-15 울산대학교 산학협력단 무선 센서 네트워크에서 노드의 패킷양 예측 기법을 이용한 링크 스케줄링 방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266837A (ja) * 2003-02-28 2004-09-24 Samsung Electronics Co Ltd フィールドレベルツリーを用いたパケット分類装置及び方法
EP1515501A1 (en) * 2003-08-27 2005-03-16 Alcatel Data structure for range-specified algorithms
JP2008527798A (ja) * 2004-12-31 2008-07-24 ネクストポイント ネットワークス,インコーポレイテッド Voipネットワーク基盤構成要素および方法
JP2008530829A (ja) * 2004-12-22 2008-08-07 株式会社エヌ・ティ・ティ・ドコモ 係数の位置をコード化する方法及び装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134599A (en) * 1998-04-18 2000-10-17 Sun Microsystems, Inc. System and method for organizing devices in a network into a tree using suitability values
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
US7200684B1 (en) * 2000-04-13 2007-04-03 International Business Machines Corporation Network data packet classification and demultiplexing
US6717950B2 (en) * 2002-01-20 2004-04-06 General Instrument Corporation Method and apparatus for priority-based load balancing for use in an extended local area network
US7706291B2 (en) * 2007-08-01 2010-04-27 Zeugma Systems Inc. Monitoring quality of experience on a per subscriber, per session basis

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266837A (ja) * 2003-02-28 2004-09-24 Samsung Electronics Co Ltd フィールドレベルツリーを用いたパケット分類装置及び方法
EP1515501A1 (en) * 2003-08-27 2005-03-16 Alcatel Data structure for range-specified algorithms
JP2008530829A (ja) * 2004-12-22 2008-08-07 株式会社エヌ・ティ・ティ・ドコモ 係数の位置をコード化する方法及び装置
JP2008527798A (ja) * 2004-12-31 2008-07-24 ネクストポイント ネットワークス,インコーポレイテッド Voipネットワーク基盤構成要素および方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSND200700101001; 広井 誠: 'トライと三分木を使った高速化技法 LZ78符号によるファイルの圧縮と改良 前編' Interface 第32巻、第11号, 20061101, pp.151-160 *
CSNJ200710039112; 豊島 鑑: '三分岐検索方式のテーブル更新方法の一改良案' 電子情報通信学会2002年電子情報通信学会通信ソサイエティ大会講演論文集2 B-6-100 , 20020820 *
JPN6013049625; 広井 誠: 'トライと三分木を使った高速化技法 LZ78符号によるファイルの圧縮と改良 前編' Interface 第32巻、第11号, 20061101, pp.151-160 *
JPN6013049626; 豊島 鑑: '三分岐検索方式のテーブル更新方法の一改良案' 電子情報通信学会2002年電子情報通信学会通信ソサイエティ大会講演論文集2 B-6-100 , 20020820 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102213368B1 (ko) * 2019-10-10 2021-02-08 엔시큐어 주식회사 멀티 키워드 고속 검색 시스템 및 방법

Also Published As

Publication number Publication date
US20100110936A1 (en) 2010-05-06
KR20110082026A (ko) 2011-07-15
WO2010056267A1 (en) 2010-05-20
EP2342871A1 (en) 2011-07-13
US7872993B2 (en) 2011-01-18
CN102204180A (zh) 2011-09-28
CN102204180B (zh) 2013-12-25
KR101244604B1 (ko) 2013-03-25

Similar Documents

Publication Publication Date Title
US7872993B2 (en) Method and system for classifying data packets
US9191321B2 (en) Packet classification
US6772223B1 (en) Configurable classification interface for networking devices supporting multiple action packet handling rules
US8345688B2 (en) System and method for managing flow of packets
CN104243315B (zh) 用于唯一枚举解析树中的路径的装置和方法
US8521905B2 (en) System for flexible and extensible flow processing in software-defined networks
US9077668B2 (en) Flexible and extensible flow processing in software-defined networks
US8151339B2 (en) Method and apparatus for implementing filter rules in a network element
US9686137B2 (en) Method and system for identifying an outgoing interface using openflow protocol
US7545809B2 (en) Packet classification
US20030123456A1 (en) Methods and system for data packet filtering using tree-like hierarchy
CN108234318B (zh) 报文转发隧道的选取方法及装置
US20100175124A1 (en) Methods and apparatus for implementing a search tree
US9667440B2 (en) Method and system for identifying an incoming interface using openflow protocol
EP2795874A1 (en) Controller for flexible and extensible flow processing in software-defined networks
US7251651B2 (en) Packet classification
US9647947B2 (en) Block mask register key processing by compiling data structures to traverse rules and creating a new rule set
US7546281B2 (en) Reduction of ternary rules with common priority and actions
KR101796529B1 (ko) 오토마타 기반 패킷 필터 시스템 및 그 방법
US10205658B1 (en) Reducing size of policy databases using bidirectional rules
US11184282B1 (en) Packet forwarding in a network device
KR100657107B1 (ko) 패킷 분류 방법과 장치

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130312

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130610

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130909

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140206

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140214

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20140314