JP3609358B2 - フロー識別検索装置および方法 - Google Patents
フロー識別検索装置および方法 Download PDFInfo
- Publication number
- JP3609358B2 JP3609358B2 JP2001246561A JP2001246561A JP3609358B2 JP 3609358 B2 JP3609358 B2 JP 3609358B2 JP 2001246561 A JP2001246561 A JP 2001246561A JP 2001246561 A JP2001246561 A JP 2001246561A JP 3609358 B2 JP3609358 B2 JP 3609358B2
- Authority
- JP
- Japan
- Prior art keywords
- search
- rule
- grouped
- associative memory
- related information
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
本発明は、IP(Internet Protocol)ルータ等のパケット転送装置においてパケット転送処理を行うに当たり、IPパケット等のパケットに含まれるヘッダ情報などの情報によりそのパケットをどのように処理するかを識別するフロー識別検索装置および方法に関し、特に、パケットに対する処理を決定する際に検索するテーブル等の検索方法に関するものである。
【0002】
【従来の技術】
従来、IPルータ等のパケット転送装置においては、パケットのヘッダ(Packet header)に搭載された宛先アドレスを基に経路表を検索し、次の方路を決定していた。経路表には宛先アドレスと次の方路の関係が保持されている。このように従来のインターネット等のネットワークでは宛先アドレスのみを用いた単純な転送処理を行うだけであった。以下、この点について具体的な構成を例に挙げて説明する。
【0003】
図19はデータを運ぶIPパケットがどのように転送されるかを示すもので、図中、1はルータ、2−1,2−2,2−3はルータ1に接続されているネットワーク、3−1,3−2,3−3はルータ1とネットワーク2−1,2−2,2−3とを接続する信号線、4はIPパケットである。また、5−1,5−2,……5−Aはネットワーク2−1に存在する端末、6−1,6−2,……6−Bはネットワーク2−2に存在する端末、7−1,7−2,……7−Cはネットワーク2−3に存在する端末である(なお、A,B,Cは2以上の任意の整数である。)。
【0004】
また、図19におけるネットワークアドレスは慣例に従って8ビットずつ「.」で区切ってそれぞれを10進数で記述しており、「/」の後の数値はIPアドレスのうち上位から何ビット分をネットワークアドレスとするかを表している。
【0005】
IPパケット4は宛先となる端末のIPアドレスとデータを有する。従来、ルータ1は入力されたIPパケット4のIPヘッダに記述された宛先IPアドレスのみ検索し、どの信号線からIPパケットを送出するか決定していた。
【0006】
しかしながら、近年、インターネットの広がりに伴い、宛先IPアドレスのみを用いた従来の単純な転送処理だけは十分でなくなってきており、より高度な転送制御が必要となっている。例えば、データネットワークにおけるサービスの多様化やセキュリティーの問題に対応するため、パケットのIPヘッダに搭載された宛先IPアドレスだけでなく送信元IPアドレスやその他の情報(TCP〔Transmission Control Protocol〕/UDP〔User Datagram Protocol〕ポート番号等)を検索し、また、IPヘッダだけでなくパケット中の他のヘッダ情報を検索し、より詳細にパケットを識別してQoS(Quality of Service)制御やポリシー制御のための様々な処理を行うフロー識別に注目が集まっている。このように、フロー識別とはQoS,VPN(Virtual Private Network),ファイヤーウォール等のIP付加価値サービスを実現するために、IPパケットのフロー毎に異なる処理を行うことを意味する。
【0007】
ルータはフロー識別によりパケットを詳細に識別し、契約に応じた優先度を付けてパケットを送出するといった付加価値サービスを実現したり、悪意のユーザからのパケットを廃棄するといったことを実現する。より具体的には、特定のユーザからの特定のアプリケーションのパケット転送のQoSを上げるためには、そのユーザの送信元アドレスとTCP/UDPポート番号を基にパケットの優先制御を行うことでQoS制御ができる。また、特定のアプリケーションの通信を禁止してパケットを廃棄する場合は、そのアプリケーションに割り当てられたTCP/UDPポート番号のパケットが転送されないようにフィルタリングすることでポリシー制御ができる。これらの処理に必要なのが次に述べるルールを格納したルール表(ポリシーテーブル(Policy table)とも呼ぶ)検索である。
【0008】
パケットを識別するための複数の検索項目(パケットヘッダのフィールド情報)としては、宛先アドレス(DA)、送信元アドレス(SA)、Protocol(プロトコル識別子〔PID〕)、宛先ポート番号(DP)、送信元ポート番号(SP)、サービス差別化符号(DSCP;Differentiated Service Code Point)の6つが代表的である。そして、これら検索項目に対応する情報とパケットに対する処理(Action)(最優先で送出、中優先で送出、低優先で送出、廃棄等)との組み合わせを以下、ルール(あるいはポリシー)と呼ぶが、ルールは主にネットワーク管理者によって決定され、ルータに設定される。
【0009】
図20は図19のネットワーク構成を元にしたフロー識別におけるルールの一例を示すもので、図中、10はルール表、11,12,13,14はルールである。ルール表10は、パケットヘッダの複数のフィールド情報をキーとして検索し、そのパケットに対する処理を決めるために用いられる。本ルール11〜14を図19のルータ1に設定した場合、例えばネットワーク2−1の端末5−1から、ネットワーク2−3の端末7−1へProtocolがUDPで宛先ポート番号が100のパケットを送出する場合、そのパケットの宛先アドレス、送信元アドレス、Protocol、宛先ポート番号がルール11の全検索項目と一致する(但し、ルール11の宛先ポート番号は如何なる値にも一致するDon’tcare)ので、ルータ1はルール11の「処理」に記述された動作をそのパケットに行う。即ち、ルータ1はそのパケットを最優先で送出する。
【0010】
図21はIPパケットの構造と主なヘッダ情報の一例を示すものである。IPパケットは、主としてローカルネットワークヘッダ21、IPヘッダ22、上位ヘッダ(図ではTCPヘッダ23)、ユーザデータ(図ではTCPデータ24)、ローカルネットワークトレイラ25からなるが、各ヘッダにはフロー識別に使用される可能性のある項目が複数存在する。
【0011】
【発明が解決しようとする課題】
フロー識別の注目度が上がるに従って、より詳細にパケットを識別する必要が高まり、検索すべきヘッダの項目数も増えてきている。また、近年、導入が始まったIPv6では宛先IPアドレス、送信元IPアドレスはそれぞれ128ビット長を有し、従来のIPv4の32ビットに比べてビット数が大幅に拡大した。検索項目の拡大とIPv6の導入によりフロー識別のための検索ビット数が増加し、現状400ビット程度の検索が必要となってきている。
【0012】
ルール表の検索においては、これらの全てのフィールド情報よりなるルール(エントリとも言う)の中から目的とするパケットのヘッダ情報に最も類似しあるいは一致するものを検索する必要が有る。このような検索を行う一つの方法としてルール表を上から下まで全検索する方法が考えられる。しかしながら、この方法ではルール表のルールが長くなる(ルールのビット数が多くなる)と、検索に多大の時間を要するという問題がある。
【0013】
こうしたことから、従来、フロー識別検索方式としては、二分探索木のようなツリー構造を用いた方式や近年実用化されてきている連想メモリ(CAM〔Content Addressable Memory〕)を用いた方式が採用されている。
【0014】
図22はツリー構造の一例を示すもので、ツリー構造を用いてIPアドレスを検索する場合の問題点について説明する。図中、31はIPv4の場合のツリー構造、32はIPv6の場合のツリー構造を示しており、ツリーを用いた場合、IPv6のように検索ビット幅が長くなると、それだけツリーが長大化し、検索する回数が増え、メモリを参照する回数が増加し、検索速度が遅くなるという問題があった。特に、フロー識別を実現する場合、IPアドレスだけではなく、その他の検索項目が必要で、検索項目が増えれば増える程、一様にツリーが長大化し、検索速度が遅くなるという問題もあった。
【0015】
図23は連想メモリを用いたフロー識別のようすを示すもので、図中、41は連想メモリ、42は連想メモリ41に格納されているルール、43はルールに従った処理を格納する検索結果格納メモリ、44は検索結果格納メモリ43に格納されている検索結果としての処理である。
【0016】
ルール42は連想メモリ41上に格納し、ルール42に従った処理44を検索結果格納メモリ43に格納する。検索は、検索すべき項目を連想メモリ41へ入力して検索を行い、検索後、入力された検索項目がいずれかのルールに一致した場合には一致したルールの処理が格納されている検索結果格納メモリ43を調べ、パケットに対して必要な処理を行っていた。
【0017】
ところで、連想メモリは、アドレスをキーとしてアクセスするのではなく、各番地に記録された値をキーとしてアクセスすることができる記憶素子であって、入力された検索対象となるデータと連想メモリ内に格納している全てのデータを1度に比較する特徴を持っている。連想メモリの中には、各番地に‘0’と‘1’のバイナリ(Binary)の値だけでなく、‘0’および‘1’のいずれにも一致する‘Don’t Care’も使えるターナリー(Ternary)のものもある。このようなターナリーの連想メモリ(TCAM)を用いることで非常に高速なルール表の検索が可能となる。しかしながら、連想メモリは検索できるビット幅に制限があり、上述した現在必要となっている400ビット程度の検索を行うことができる連想メモリは存在せず、IPv6を含んだフロー識別を行うことが出来ないという問題があった。
【0018】
また、TCAMやCAMはSRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)と異なり、横方向の容量拡張に適していない記憶素子である。これはTCAM、CAMとSRAM、DRAMとのアクセス方法の違いに起因している。SRAMやDRAMは番地でアクセスするので、横方向を拡張する際には、複数のバンクに分けて、同じアドレス信号を各メモリバンクに引き込むことで横方向の拡張が容易に実現できる。
【0019】
これに対してTCAMやCAMはメモリに記憶された内容でアクセスするので、内容を横方向に分割して複数のTCAMやCAMのバンクに記憶しても、各TCAM間やCAM間の連携がとれないので、期待した結果が得られない。
【0020】
近年、ルール表の横幅は増加の一途をたどっており、このような問題はますます顕在化する。例えば、フロー識別のルールの高度化により、より高いレイヤのヘッダ情報を必要とすることやIPv6等の長いアドレス(128ビット)を使うこと等により、ルール表の横幅は増加している。IPv6の場合、上で述べた6つのフィールド情報だけでもSA(128bit)、DA(128bit)、SP(16bit)、DP(16bit)、PID(8bit)、DSCP(8bit)であり、合計304ビットとなる。また、これら以外のフィールド情報も加えると上述したようにルール表の横幅は容易に400ビット程度になる。
【0021】
本発明の目的は、上記課題を解決し、非常に長い検索ビット幅を有するフロー識別のルールを検索可能なフロー識別検索装置および方法を実現することにある。
【0022】
【課題を解決するための手段】
上記課題を解決するために、請求項1記載のフロー識別検索装置は、パケットに含まれ該パケットのフローの識別に使用される検索項目をもとに、前記検索項目と該検索項目により識別されるフローのパケットに対して行う処理とを組み合わせたルールを複数備えるルール表を検索し、前記パケットに対して行う処理を次定するフロー識別検索装置であって、前記各ルールに含まれる検索項目を予め定めた複数のグループにグループ化したグルーブ化検索項目と、該グループ化検索項目が属するグループ及びルールをそれぞれ表す検索回数情報及び検索関連情報とを組み合わせて保持する連想メモリと、前記連想メモリに入力したグループ化検索項目,検索回数情報及び検索関連情報の組み合わせが該連想メモリで検索された際に行う処理と、前記連想メモリを次に検索する際に検索するルールを表す照合関連情報とを、前記連想メモリが保持する前記組み合わせに対応して保持する検索結果記憶装置と、前記ルール表上の各ルールに含まれる前記検索項目をグループ化して前記グループ化検索項目を生成し、生成された各グループ化検索項目が属しているルール及びグループをもとに前記検索回数情報、前記検索関連情報及び前記照合関連情報を生成して、生成された前記検索回数情報、検索関連情報及びグループ化検索項目を組み合わせて前記連想メモリに格納するとともに、生成された前記照合関連情報と該照合関連情報が示すルールに含まれる前記処理とを組み合わせて前記検索結果記憶装置に格納し、入力されたパケットから前記検索項目を取り出して前記グループ化検索項目を生成し、検索すべきグループ及びルールを表す検索回数情報及び検索関連情報と該グループに対応する前記グループ化検索項目とを前記連想メモリヘ入力して検索を行い、検索された前記連想メモリ上の組み合わせに対応して前記検索結果記憶装置が保持する前記処理及び前記照合関連情報を取得し、該処理として前記パケットに対して行う処理内容が得られるまで、次に検索すべきグループを表す検索回数情報と該グループに対応する前記グループ化検索項目と取得した前記照合関連情報とを前記連想メモリに入力して再び前記検索を行う処理装置とを有することを特徴としている。
【0024】
請求項2記載のフロー識別検索装置は、請求項1記載のフロー識別検索装置において、前記処理装置は、前記各グループを識別するためのグループ番号を前記検索回数情報として前もって前記各グループに付与し、前記グループ化検索項目と該グループ化検索項目が属するグループに付与された前記グループ番号とを組み合わせて前記連想メモリに格納することを特徴としている。
【0025】
請求項3記載のフロー識別検索装置は、請求項1記載のフロー識別検索装置において、前記処理装置は、前記各ルールを識別するためのルール番号を前記検索関連情報及び前記照合関連情報としてルール毎に決定して、入力されたパケットに関して最初に検索の対象となるグループに関しては、前記グループ化検索項目と、任意のルール番号に一致するデータが設定された前記検索関連情報とを組み合わせて前記連想メモリに格納し、前記最初に検索の対象となるグループ以外の各グループに関しては、前記グループ化検索項目と、該グループ化検索項目が属するルールに付与された前記ルール番号とを組み合わせて前記連想メモリに格納することを特徴としている。
【0026】
請求項4記載のフロー識別検索装置は、請求項3記載のフロー識別検索装置において、前記処理装置は、前記連想メモリが保持する前記各組み合わせに関して前記連想メモリの検索を必要とする次のグループが存在する場合には、次に前記連想メモリを検索する際に検索すべきルールに付与されたルール番号と前記連想メモリの再検索を指示する処理とを組み合わせて前記検索結果記憶装置に格納し、前記各組み合わせに関して前記連想メモリの検索を必要とする次のグループが存在しない場合には、入力されたパケットに対して行うべき処理を前記検索結果記憶装置に格納することを特徴としている。
【0027】
請求項5記載のフロー識別検索装置は、請求項1記載のフロー識別検索装置において、前記処理装置は、前記各ルールに含まれる前記検索項目をグループ化する際、同一のグループに属する複数のグループ化検索項目が特定のデータに一致する可能性があるかどうかを調べ、一致する可能性がある場合には、該複数のグループ化検索項目のうち最も範囲が狭いグループ化検索項目を除く各グループ化検索項目について、該一致する可能性のあるグループ化検索項目の内容として前記最も範囲が狭いグループ化検索項目と同じ内容を持ち且つ該一致する可能性のあるグループ化検索項目以外のグループ化検索項目及び処理として各グループ化検索項目が属するルールと同じ内容を持つ新たなルールを生成して前記ルール表に追加し、該新たなルールが追加されたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納することを特徴としている。
【0028】
請求項6記載のフロー識別検索装置は、請求項5記載のフロー識別検索装置において、前記処理装置は、前記新たなルールに含まれる検索項目をグループ化する際、前記検索結果記憶装置に格納する前記照合関連情報を、前記最も範囲が狭いグループ化検索項目に対応して前記検索結果記憶装置に格納する照合関連情報と同じ内容に設定することを特徴としている。
【0029】
請求項7記載のフロー識別検索装置は、請求項5記載のフロー識別検索装置において、前記連想メモリは、入力された前記グループ化検索項目,前記検索回数情報及び前記検索関連情報の組み合わせが前記連想メモリに保持されている複数の組み合わせに一致する場合に、該複数の組み合わせが格納されている物理アドレスのうちの何れかを所定の基準に従い選択して検索結果として出力し、前記処理装置は、前記新たなルールが追加されたルール表を前記連想メモリ及び前記検索結果記憶装置に展開した後の検索時において、前記連想メモリに入力された前記グループ化検索項目,前記検索回数情報及び前記検索関連情報の組み合わせが前記連想メモリに保持されている複数の組み合わせに一致したときに、前記連想メモリが、該複数の組み合わせに含まれるグループ化検索項目のうち最も範囲の狭いグループ化検索項目を含む物理アドレスを検索結果として出力するように、前記新たなルールを前記ルール表上に挿入することを特徴としている。
【0030】
請求項8記載のフロー識別検索装置は、請求項1記載のフロー識別検索装置において、前記処理装置は、前記ルール表上におけるルールの中に、各ルールに含まれる検索項目の範囲が互いに重なり合う複数のルールが存在するかどうか調べ、該複数のルールが存在する場合には、該複数のルールのうち予め決められたルール以外の各ルールについて、該各ルールに含まれる検索項目の範囲から重なり合う範囲を除いて重なり合いのない範囲を求め、該重なり合いのない範囲に対応する新たなルールを生成して該各ルールを置き換え、該ルールの置き換えがなされたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納することを特徴としている。
【0031】
請求項9記載のフロー識別検索装置は、請求項1記載のフロー識別検索装置において、前記連想メモリの各物理アドレスに格納する前記検索回数情報,前記検索関連情報及び前記グループ化検索項目のビット幅の総和が前記連想メモリのビット幅に一致するように、前記検索項目がグループ化されていることを特徴としている。
【0032】
請求項10記載のフロー識別検索方法は、パケットに含まれ該パケットのフローの識別に使用される検索項目をもとに、前記検索項目と該検索項目により識別されるフローのパケットに対して行う処理とを組み合わせたルールを複数備えるルール表を検索し、前記パケットに対して行う処理を決定するフロー識別検索方法であって、前記各ルールに含まれる検索項目を予め定めた複数のグループにグループ化したグループ化検索項目と、該グループ化検索項目が属するグループ及びルールをそれぞれ表す検索回数情報及び検索関連情報とを組み合わせて保持する連想メモリと、前記連想メモリに入力したグループ化検索項目,検索回数情報及び検索関連情報の組み合わせが前記連想メモリで検索されたときに行う処理と、前記連想メモリを次に検索する際に検索するルールを表す照合関連情報とを、前記連想メモリが保持する前記組み合わせに対応して保持する検索結果記憶装置とを用意するステップと、前記ルール表上の各ルールに含まれる前記検索項目をグループ化して前記グループ化検索項目を生成し、生成された各グループ化検索項目が属しているルール及びグループをもとに前記検索回数情報、前記検索関連情報及び前記照合関連情報を生成して、生成された前記検索回数情報、検索関連情報及びグループ化検索項目を組み合わせて前記連想メモリに格納するとともに、生成された前記照合関連情報と該照合関連情報が示すルールに含まれる前記処理とを組み合わせて前記検索結果記憶装置に格納するステップと、入力されたパケットから前記検索項目を取り出してグループ化を行い前記グループ化検索項目を生成するステップと、最初に検索すべきグループに対応する前記グループ化検索項目と該グループを表す検索回数情報とを前記連想メモリヘ入力して検索を行わせるステップと、前記連想メモリから出力される検索結果に対応して前記検索結果記憶装置に保持されている前記処理及び前記照合関連情報を取得するステップと、取得した処理が前記連想メモリの再検索を示している場合には、次に検索すべきグループを表す検索回数情報,該グループに対応する前記グループ化検索項目及び取得した前記照合関連情報と同じ内容を持つ検索関連情報を前記連想メモリに入力して再度検索を行わせるステップと、前記処理が入力されたパケットに対して行うべき処理内容を示している場合に、前記連想メモリに対する検索を終了させて該処理内容を出力するステップとを有することを特徴としている。
【0033】
請求項11記載のフロー識別検索方法は、請求項10記載のフロー識別方法において、前記各ルールに含まれる前記検索項目をグループ化する際、同一のグループに属する複数のグループ化検索項目が特定のデータに一致する可能性があるかどうかを調べ、一致する可能性がある場合には、該複数のグループ化検索項目のうち最も範囲が狭いグループ化検索項目を除く各グループ化検索項目について、該一致する可能性のあるグループ化検索項目の内容として前記最も範囲が狭いグループ化検索項目と同じ内容を持ち且つ該一致する可能性のあるグループ化検索項目以外のグループ化検索項目及び処理として各グループ化検索項目が属するルールと同じ内容を持つ新たなルールを生成して前記ルール表に追加するステップと、該新たなルールが追加されたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納するステップとを有することを特徴としている。
【0034】
請求項12記載のフロー識別検索方法は、請求項10記載のフロー識別方法において、前記ルール表上におけるルールの中に、各ルールに含まれる検索項目の範囲が互いに重なり合う複数のルールが存在するかどうか調べ、該複数のルールが存在する場合には、該複数のルールのうち予め決められたルール以外の各ルールについて、該各ルールに含まれる検索項目の範囲から重なり合う範囲を除いて重なり合いのない範囲を求め、該重なり合いのない範囲に対応する新たなルールを生成して該各ルールを置き換えるステップと、該ルールの置き換えがなされたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納するステップとを有することを特徴としている。
【0035】
【発明の実施の形態】
〔第1実施形態〕
発明者らは、ルール表を横方向にグループ化することで上述した課題を回避することが可能になることを見出した。
【0036】
図1は本発明の第1実施形態によるフロー識別検索装置が組み込まれる装置の一例であるルータ100を示すもので、図中、200はスイッチ、300−1,……300−nはラインカード、400−1,……400−nはスイッチ200とラインカード300−1,……300−nとを結ぶ信号線である。
【0037】
各ラインカード300−1,……300−nは、パケット格納部500−1,……500−nと、ヘッダ検索部600−1,……600−nと、パケット処理部700−1,……700−nと、パケット格納部500−1,……500−nとヘッダ検索部600−1,……600−nとを結ぶ信号線801−1,……801−nと、パケット格納部500−1,……500−nとパケット処理部700−1,……700−nとを結ぶ信号線802−1,……802−nと、ヘッダ検索部600−1,……600−nとパケット処理部700−1,……700−nと結ぶ信号線803−1,……803−nとを備えている。
【0038】
本実施形態のフロー識別検索装置はヘッダ検索部600−1〜600−n内に組み込む。以下、入力されたパケットに対するルータ100の処理概要を簡単に説明する。
【0039】
あるパケットが信号線3−1から入力されたとすると、まず入力されたパケットのヘッダをヘッダ検索部600−1で検索し、またパケット自身を信号線801−1を通してパケット格納部500−1へ送出する。
【0040】
ヘッダ検索部600−1で行うヘッダ検索により、パケットに対して必要な処理や宛先となる信号線3−m(1≦m≦n)を決定し、パケット処理部700−1へ検索結果を信号線803−1を通して送出し、同時に検索が終了したことをパケット格納部500−1へ信号線801−1を通して伝える。パケット自身を格納しているパケット格納部500−1はヘッダ検索部600−1におけるヘッダ検索が終了したことが通知されたら、パケットをパケット処理部700−1へ信号線802−1を通して送出する。
【0041】
パケット処理部700−1では該当パケットの検索結果とパケット自身を受けとったら、パケットに対して必要な処理を行うとともに、宛先となる信号線3−m(1≦m≦n)を識別する値等のヘッダ検索部600−1の結果をパケットに対して付与し、スイッチ200へ信号線400−1を通して送出する。スイッチ200は、送られてきたパケットに含まれる上記値をもとに信号線400−mを通して当該パケットをラインカード300−mに送出し、ラインカード300−mがこのパケットを信号線3−mに送出する。
【0042】
図2は本実施形態によるフロー識別検索装置の構成を示したブロック図であって、ここではフロー識別検索装置がヘッダ検索部600に組み込まれた例を示す。図中、610はヘッダ抽出装置、620はフロー識別検索装置である。フロー識別検索装置620は、連想メモリ621と、フロー識別検索処理装置622と、DRAM,SRAM,SSRAM(同期SRAM)等で構成された検索結果記憶装置623とからなっている。また、624は連想メモリ621とフロー識別検索処理装置622とを結ぶ信号線、625はフロー識別検索処理装置622と検索結果記憶装置623とを結ぶ信号線、630はヘッダ抽出装置610とフロー識別検索処理装置622を結ぶ信号線である。
【0043】
図2を参照しながらヘッダ検索部の処理概要を示す。
【0044】
ヘッダ抽出装置610は信号線3から入力されたパケットよりヘッダを抽出し、信号線630を通してフロー識別検索処理装置622へ入力する。同時にヘッダ抽出装置610はパケットを信号線801を通してパケット格納部500(図1参照)へ送出する。フロー識別検索処理装置622は検索に必要なグループ化されている検索項目をヘッダから抜き出し、信号線624を通して連想メモリ621へ入力し検索を行い、検索結果としてパケットに対する処理が格納されている検索結果記憶装置623のメモリ上のアドレスを連想メモリ621から信号線624を通して受け取る。
【0045】
フロー識別検索処理装置622は受け取った検索結果記憶装置623のメモリ上のアドレスを信号線625を通して送出し、検索結果記憶装置623に格納されている処理を信号線625を通して読みとる。再度検索が必要な場合には、検索に必要なグループ化されている検索項目をヘッダからさらに抜き出し、連想メモリ621へ入力し、検索結果記憶装置623のメモリ上のアドレスを連想メモリ621から受け取り、検索結果記憶装置623に格納されている処理を読みとる。
【0046】
これを1つのヘッダの検索が終了するまで再帰的に行う。1つのヘッダの検索が終わったら、信号線803を通してパケット処理部700(図1参照)へ最終的なフロー識別の検索結果(処理)を送出し、信号線801を通してパケット格納部500へ1つのヘッダの検索が終わったことを通知する。
【0047】
図20で説明したルールに基づくルールのグループ化の様子および及びグループ化されたルールの検索のために各ルールに付与されるルール番号の付与例を図3に示す。
【0048】
図中、11a,12a,13a,14aは各ルール11,12,13,14(図20を参照)にルール番号を付与したもの、15,16はフロー識別に必要な検索項目を2つのグループに分け、それぞれのグループに番号(ここでは0と1)を付与したものを表している。ルール番号は0から昇順に1ずつ付与する。全てのグループのビット幅は連想メモリが1回で検索できる検索ビット幅以下である必要があるため、グループの分け方はこの条件を満足するように決める。なお、グループの分け方は前もって設計者が決める。
【0049】
図4は図3のルール及びルール番号を展開して、検索回数情報Flag、検索関連情報Srch.Tag(Search Tag,図3のルール番号に相当)、グループ化された検索項目、次回の検索における検索回数情報である次Flag、照合関連情報Assoc.Tag(Association Tag)、処理を、連想メモリ621と検索結果記憶装置623に格納する例を示す。
【0050】
11a−1,12a−1,13a−1,14a−1はグループ番号0に対応しており、グループ番号と同じ値0を持つ検索回数情報Flagとルール番号0〜3に対応した検索項目とを連想メモリに格納したもの、11a−2,12a−2,13a−2はグループ番号1のルール番号0〜2に対応しており、グループ番号と同じ値1を持つ検索回数情報Flagと、ルール番号と同じ値0〜2を持つ検索関連情報Srch.Tagと、ルール番号0〜2に対応した検索項目とを連想メモリに格納したもの、11a−3,12a−3,13a−3,14a−3はグループ番号0に対応しており、次Flagと、ルール番号と同じ値を持つ照合関連情報Assoc.Tagと、ルール番号0〜3に対応する処理とを格納したもの、11a−4,12a−4,13a−4はグループ番号1のルール番号0〜2に対応する処理を格納したものである。なお、図中でxはどの値を入れても問題はないことを示す。また上述した説明から明らかなように、ある一つのルールに付与される検索関連情報Srch.Tagと照合関連情報Assoc.Tagには同じルール番号(図3参照)の値が設定されるが、本実施形態ではこれらデータがどこに格納されるかによって名称を変えている。すなわち、連想メモリ621に格納されるルール番号を検索関連情報Srch.Tagとし、検索結果記憶装置623に格納されるルール番号を照合関連情報Assoc.Tagとしている。
【0051】
ここで、図3に基づいて図4に示した通りに連想メモリ621及び検索結果記憶装置623へ各種データを格納する際の手順について説明する。まず、図3に示したルールをグループ番号0,1の2つのグループにグループ化する。次に、ルール番号0のルールのうちグループ番号0について、検索項目である宛先アドレス及びProtocolをグループ番号と同じ値0を持つ検索回数情報Flagとともに連想メモリ621へ格納する。その際、検索関連情報Srch.TagとしてはDon’t Careを示す*を設定する。これは、最初に連想メモリ621を検索する場合に、検索回数情報Flagの値として0を持つすべてのルールを検索対象とするためである。以上によって図4に示すデータ11a−1が連想メモリ621に格納される。
【0052】
次に、検索結果記憶装置623については、連想メモリ621に設定した検索回数情報Flagの値0に1を加算した値1を次Flagに設定する。また、ルール番号0と同じ値0を照合関連情報Assoc.Tagに設定する。さらに、この場合の検索回数情報Flagの値は最後のグループに対応する値ではないことから、さらに連想メモリ621の検索を行うことを指示する「再検索」を処理に設定する。そして、これら次Flag,照合関連情報Assoc.Tag,処理を組にしたデータ11a−3を図4に示すように検索結果記憶装置623に格納する。
【0053】
ルール番号1〜3のうちのグループ番号0についてもいま述べたルール番号0と同様のことを行って、連想メモリ621にデータ12a−1,13a−1,14a−1を順次格納するとともに、検索結果記憶装置623にデータ12a−3,13a−3,14a−3を順次格納する。ただし、ルール番号3に関してはグループ番号1の検索項目が図3に示すように全てDon’t Careであるため、ルール番号3かつグループ番号1のルールに関してはさらに検索を行う必要がない。したがってこの場合は、処理に「再検索」を設定する代わりに、図3のルール表に設定されている処理「廃棄」そのものを検索結果記憶装置623の「処理」に格納するとともに、次Flagには任意の値(図4ではどの値でもかまわないことを示す×)を設定する。
【0054】
グループ番号1についてもグループ0の場合に準じて同様の処理を行う。ただし、この場合は上述したようにルール番号3については検索項目が全てDon’t Careであるため、ルール番号0〜2について処理を行い、連想メモリ621に対してデータ11a−2,12a−2,13a−2を順次追加するとともに、検索結果記憶装置623に対してデータ11a−4,12a−4,13a−4を順次追加する。連想メモリ621については、検索回数情報Flagとしてグループ番号と同じ1を設定するとともに、グループ番号1が最初のグループでないことから図3のルール表に設定されているルール番号をそのまま検索関連情報Srch.Tagとして設定する。一方、検索結果記憶装置623については、グループ番号1が最後のグループであることから、図3のルール表に記述されている処理をそのまま検索結果記憶装置623に設定するとともに、グループ番号1についてはそれ以上検索を行わないので次Flag及び照合関連情報Assoc.Tagには任意の値を設定する。
【0055】
図4を利用して具体的に宛先アドレスが59.48.1.1、ProtocolがTCP、送信元アドレスが122.58.33.1、宛先ポート番号が10のヘッダのフロー識別検索方法を示す。
【0056】
手順1:フロー識別検索処理装置622がIPパケットのヘッダの中でグループ番号0に属する検索項目とグループ番号1に属する検索項目を取り出す。
【0057】
手順2:フロー識別検索処理装置622がIPパケットのヘッダ中のグループ番号0の検索項目である宛先アドレスの59.48.1.1とProtocolのTCPとグループ番号0と同じ値0を持つ検索回数情報Flagと適当な値の検索関連情報Srch.Tagとを連想メモリ621に検索データとして入力する。
【0058】
手順3:検索により連想メモリ621内に格納されているデータ12a−1と入力データが一致するので、結果としてデータ12a−1に関連づけられた検索結果を格納している検索結果記憶装置623のメモリのアドレスをフロー識別検索処理装置622は受け取る。
【0059】
手順4:フロー識別検索処理装置622は受け取った検索結果記憶装置623のメモリのアドレスから、検索結果記憶億装置623に格納されているデータ12a−3を読み取る。読みとったデータ12a−3に含まれる処理の内容が「再検索」なので、フロー識別検索処理装置622は次Flagと照合関連情報Assoc.Tagを読みとり、再度検索を行う。再検索にあたって読みとったデータ12a−3から次Flagが1で照合関連情報Assoc.Tagが1であることがわかったので、フロー識別検索処理装置622は、ヘッダの中のグループ番号1に属する検索項目である送信元アドレスの122.58.33.1、宛先ポート番号10とグループ番号1と同じ値1を持つ検索回数情報Flagと検索関連情報Srch.Tagの値1を連想メモリ621に検索データとして入力する。
【0060】
手順5:検索により連想メモリ621内に格納されているデータ12a−2と入力データが一致するので、結果としてデータ12a−2に関連づけられた検索結果を格納している検索結果記億装置623のメモリのアドレスをフロー識別検索処理装置622は受け取る。
【0061】
手順6:フロー識別検索処理装置622は受け取った検索結果記憶装置623のメモリのアドレスから、検索結果記憶装置623に格納されているデータ12a−4を読みとる。読みとったデータ12a−4に含まれる処理の内容が「中優先で送出」であって「再検索」ではないので再度検索する必要がなく、ここで検索を終了する。
【0062】
次に、上述したものとは若干異なる実現形態について説明する。図5に示すように、検索可能なビット幅が制限された連想メモリに入れるために、オリジナルのルール表(Original rule table)のルールを複数のブロックにグループ化し、各ブロックを連想メモリに格納して新たなルール表(Proposed rule table)を作成する。その際、各ブロックがオリジナルのルールのどの位置にあるかを示すため、検索回数情報Flag(相対位置識別フラグ)を一緒に格納する。さらにそれらの各ブロックが同じオリジナルのルールに属していることを示すため、検索関連情報Srch.Tag及び照合関連情報Assoc.Tagも一緒に格納する。ルールがDAとSAの2つからなるルール表の場合の例を図6に示す。なお、上述したようにDA,SAはいずれも128ビットで構成されるが、128ビットの値すべてを図示することは困難であるため、ここではDA,SAがいずれも4ビットで構成されているものとして説明する。また、図6では図4に示した次Flagを設けていないが、次Flagの値は連想メモリに入力した検索回数情報Flagに1を加算すれば求められるので、かかる計算をフロー識別検索処理装置が行えば良い。
【0063】
図6のルール表に関して、DA=0100、SA=0101なるヘッダ情報のパケットが到着した場合は、図7に示すように、1回目の検索(1st round search)で、DA=0100を検索キーとして、これに次の2つの検索キーを併せて検索する。その2つの検索キーとは、何回目かの検索回数を表す検索回数情報Flag=1st及び前回の検索結果との関連付けのための検索関連情報Srch.Tag=Anyの2つである。なお、検索関連情報Srch.Tagとして格納されている値のうち、Anyは任意のものと一致するDon’t careを意味している。また、検索キーとして入力される検索関連情報Srch.TagのAnyは任意の値を入力すれば良いことを意味している。他の実現形態として、検索キーとして入力される検索関連情報Srch.TagのAnyの値および連想メモリ上における検索関連情報Srch.TagのAnyの値をすべて同じ値に設定することが考えられる。具体的には、連想メモリ上における検索関連情報Srch.Tagの値Anyとして例えば0を設定するとともに、1回目の検索で連想メモリへ与える検索関連情報Srch.Tagの値を同じく0とすれば良い。
【0064】
1回目の検索キーでマッチするルールが見つかると、それに対する処理(Action)、ここでは再検索(Continue)を決定することができるとともに、それに関連することを表す照合関連情報Assoc.Tag=2が得られる。引き続き2回目(2nd round search)の検索を行う。その際には検索キーSA=0101と一緒に、1回目の検索により得られた照合関連情報Assoc.Tag=2の値を検索関連情報Srch.Tagに代入して検索を行う。また、何回目かの検索回数を表す検索回数情報Flag=2ndとして検索する。2回目の検索ではそれらにマッチするルールが見つかり、それに対する処理(Action)、ここでは最優先で転送(High Priority)を決定することができる。
【0065】
以上説明したように、本実施形態の構成要素は、
(1)ルール表のルールをグループ化し、該グループ化したルールの各部分をテーブル(連想メモリ)に格納する手段と、
(2)グループ化したルールの各部分のグループ化前のルール内における相対位置を示す検索回数情報Flagを付与する手段と、
(3)グループ化したルールの各部分間の関連を示す検索関連情報Srch.Tag及び照合関連情報Assoc.Tagを付与する手段と、
(4)ルールに対応するヘッダ情報と検索回数情報と検索関連情報とを検索キーとして連想メモリを検索する手段とからなる。
【0066】
なお、上述した説明では理解を容易にするために、宛先アドレスDA,送信元アドレスSA等のように論理的にまとまりのあるものを単位としてグループ化を行う例を示したが、本発明がこうした形態に限定されるわけではない。ルール表上の各ルールは単なるビットの羅列と見なせるため各ルールをどのようにグループ化しても良いのであって、例えば宛先アドレスを2以上のグループに分割して100ビットはグループ番号0に格納し残りの28ビットはグループ番号1に格納するなどしても良い。もっとも、例えば連想メモリ621のビット幅を256ビットであるとすれば、図4に示す検索回数情報Flag,検索関連情報Srch.Tag及び2つの検索項目をすべて合わせたビット数が256ビットとなるように各ルールをグループ化してゆくことで、連想メモリ621を最も効率的に使用でき、各パケットに関して連想メモリ621を検索する回数も最小になる。
【0067】
〔第2実施形態〕
第1実施形態では以下のような場合に曖昧なルールが生成されてしまい、正しい検索動作を行えない場合が有る。本実施形態はかかる場合においても正しい検索動作を保証するものである。図8に曖昧なルールが生成される場合の例を示す。
【0068】
図8の例のルール表では、DA=1100、SA=1100なるパケットが到着した場合、ルールB(DA=1*,SA=11*)(ここで、*は上述したようにDon’t careであって、それ以降のビットが「0」,「1」のいずれでも良いことを示す。)がマッチするべきところである。
【0069】
しかしながら、図9に示すように第1実施形態では1回目の検索でDA=1100で検索する際に、ルールA(DA=11*,SA=01*)の前半部(DA=11*)がよりふさわしいものと判定して候補をルールAに絞り込んでしまう。これは、一般的な商用の連想メモリでは、連想メモリに入力されたデータが複数のルールに一致した場合、一致したルールのうち連想メモリ上で一番上(すなわち、最も小さいアドレス)に格納されているルールの物理アドレスを出力するためである。こうしたことから、2回目の検索でSA=1100で検索を行う際に本来マッチすべきルールBを見逃してしまうこととなる。
【0070】
この状況を概念的に示したものが図10である。図10は横軸をDA、縦軸をSAとして、それぞれのルールAとBが占める領域を示したものである。1回目の検索でルールAに候補を絞り込んでしまうのは、図10では1stround searchと示している両端矢印の箇所に相当する。
【0071】
1回目の検索ではDAで検索を行うので図10の横軸に沿って検索を行う。その際、ルールAのほうがより狭い範囲でパケットのヘッダ情報(DA=1100)を含むので、ルールAを候補に絞り込んでしまう。
【0072】
パケットのヘッダ情報(DA=1100,SA=1100)はルールBにマッチすべきものであるにもかかわらず、1回目の検索でルールAに候補を絞り込んでいるので、2回目の検索で縦軸に沿って検索する際にはルールAの縦軸の範囲に入っていないので、マッチするルールがないと判断してしまうことになる。
【0073】
本実施形態は、上記のような第1実施形態におけるルール表をグループ化する際に生じる曖昧性を除去することができる。
【0074】
本実施形態は第1実施形態を適用する際に生じる曖昧性を除去するために、オリジナルのルール表に新たに保護ルール(Guard rule)(保護ポリシーとも呼ぶ)と名づけるルールを挿入することがポイントである。
【0075】
図11は本実施形態にかかるルール表の一例を示すものである。図11は図8のルール表に対し、第1実施形態を適用する際に生じる曖昧性を除去するために、ルールB’を挿入している。ルールB’はルールAと同じDAを持ち、それ以外の部分のSAと処理(Action)に関してはルールBと同じ内容を持つ。ルールB’を挿入することにより、ルール表をグループ化することにより生じる曖昧性を除去することができる。
【0076】
図12は図11に示したオリジナルのルール表をグループ化したものを示す。ここでのポイントはルールB’をグループ化する際にルールB’の1回目の検索に用いる前半部の照合関連情報Assoc.TagをルールAのものと同じ値(照合関連情報Assoc.Tag=1)とする点である。ルールBの値(照合関連情報Assoc.Tag=2)でない点に注意されたい。ルールB’の前半部の照合関連情報Assoc.Tag=1とすることにより、1回目の検索ではルールAへの候補の絞り込みが行われることなく、2回目の検索でルールAにマッチするのか、ルールBにマッチするのかを判定することができる。
【0077】
なお、上述したように、連想メモリに入力されたデータが複数のルールに一致した場合は最も小さい物理アドレスが出力される。また、保護ルールの追加にあたっては一致した複数のルールのうちより範囲の狭いルールと同じ内容の保護ルールを入れている。さらに、複数のルールに一致した場合にはより狭い範囲のルールを選択しなければならない。このため、より狭い範囲のルールは当該ルールよりも広い範囲のルールよりも連想メモリ上でより上位(より小さな物理アドレス側)に格納する必要がある。したがって図11に示したように、ルールA及びルールB’を連想メモリ上でルールBよりも上位に格納するようにしている。
【0078】
図13にその時の検索の様子を示す。図13では本実施形態によりグループ化したルール表を2回検索する様子を示している。1回目の検索では、DA=1100を検索キーとして、その検索キーと併せて検索関連情報Srch.Tag=Anyと検索回数情報Flag=1stをキーとして検索する。その結果、マッチするルールとして一行目のA,B’(1st)の前半部が見つかる。それに関連することを表す照合関連情報Assoc.Tag=1が得られる。
【0079】
引き続き、2回目の検索を行う。その際には検索キーSA=1100と一緒に、1回目の検索により得られた照合関連情報Assoc.Tag=1の値を検索関連情報Srch.Tagに代入して検索を行う。2回目の検索では検索関連情報Srch.Tag=1の2つのルールが候補となる。この候補はルールAとB’である。このうち、検索キーSA=1100にマッチするのはルールB’である。このようにして本来の正解であるルールBと同じ処理(Action)を導くことができる。
【0080】
図14は本実施形態による保護ルールの挿入の概念をグラフを用いて表したものである。図10の例で示したルールAとルールBがある状況において、ルールBと同じ内容を持つルールB’を保護ルールとして挿入している。図10では、横軸方向であるDAについてみた場合、ルールBはルールAよりも広い範囲をカバーしていた。本実施形態の場合、DAについては、より範囲の狭いルールAと同じ内容を持つルールB’を挿入し、DA以外の項目については、そのルールB’は元のルールBと同じ内容を持つものとする。さらにルールB’をグループ化する際に、その前半部には、1回目の検索時の結果から分かる検索関連情報の値をルールAと同じものとする(Srch.Tag=1)。
【0081】
ここで、図15のフローチャートを参照して連想メモリ及び検索結果記憶装置へデータを格納するための手順について述べる。なお、後述する第3実施形態で説明するように、あるルールの範囲と別のルールの範囲が重なり合う場合があり得るが、こうしたルールが存在してもこれらを重なり合いのないルールに変換可能であるため、ここでは全てのルールの間に重なり合いがないものとして説明を行う。
【0082】
図15では手順をある程度一般化して示してあるため、最初に同図で使用している表記について説明しておく。図中、Rはオリジナルのルール表に含まれるルールの集合であって、R1からRMまでM個のルールから成るものとする。このルールの集合Rは先に仮定した通り互いに一致部分がないルールの集合である。また、Rj[1]はルールRjの1つ目の検索項目(例えばDA)を示しており、同様にRj[2]はルールRjの2つ目の検索項目(例えばSA)を示している。また、Rj[Tag]はルールRjの検索関連情報である。上述したように、検索関連情報Srch.Tagと照合関連情報Assoc.Tagはある1つのルールに関しては基本的に同じ値となるため、これらを総称してタグと呼ぶ。Fは連想メモリに書き込むべきルールの集合であってF1からFPまでP個のルールから成る。なお、Fj[1],Fj[2],Fj[Tag]等の定義はルールの集合Rについてのものと同じである。
【0083】
ルールの集合Rを連想メモリに追加する前に3つのことをしなければならない。第1にはタグを付与することであり、第2には保護ルールが必要ならばこれを追加することである。第3には、上述したように連想メモリは複数のルールに一致した場合に最も上位の物理アドレスを出力するという特質を考慮に入れて、連想メモリにルールを格納する際の順番を決めることである。これら3つのことを実施するために、ルールの集合Rにタグ及び保護ルールを追加し、かつ、連想メモリに格納する順番を決定したルールの集合Fを定義し、ルールの集合Rをもとにルールの集合Fを作製してこれを連想メモリに格納する。
【0084】
次に、図8に示したOriginal rule tableをもとに図12に示すProposed rule tableを作成する場合を例に挙げて、図15のフローチャートに沿って処理の詳細を説明する。まず、全てのルールR1〜RMについてRm[Tag]=m(m=1〜M)となるタグを割り振る(ステップS1)。これによりルールAに関する検索関連情報Srch.Tagおよび照合関連情報Assoc.Tagがそれぞれ1に設定され、ルールBに関する検索関連情報Srch.Tagおよび照合関連情報Assoc.Tagがそれぞれ2に設定される。次に、ルールR1を連想メモリに格納する表であるルールの集合Fに追加する。これによりルールAがルールF1に設定される。またループ変数i及びjをそれぞれ1,2に初期化する(ステップS2)。
【0085】
次に、以下の手順に従ってルールの集合Fに対し必要に応じて保護ルールを追加する。そのために、まずRj[1]の示す範囲がFi[1]の示す範囲を含んでいるか、あるいは、Rj[1]とFi[1]が同じ範囲であるかどうかを判定する(ステップS3)。なお、前者の判定を行うにあたっては、Rj[1]の最小値<Fi[1]の最小値及び最大値<Rj[1]の最大値を満足するかどうかを判定すれば良い。具体的には、最初の検索項目であるDAについてルールBがルールAを含んでいるか或いは両者が一致しているかどうかを判定する。この場合は、ルールBのDAが1*でありルールAのDAが11*であるため前者の包含関係が成立する。そこで、保護ルールF=(Fi[1],Rj[2],Fi[Tag])をルールFiの隣へ追加する(ステップS4)。具体的には、ルールAのDA(=11*),ルールBのSA(=11*),ルールAのタグ(=1)からなるルールB’をルールAの隣に追加する。次に、Rj[1]を全てのF[1]と比較したかどうか判定する(ステップS5)。この場合はルールの集合FがルールF1(およびステップS4で隣に追加した保護ルール)のみであるため同ステップの判定結果はYESとなることから、処理をステップS6に進める。なお以上述べた通り、保護ルールをルール表へ追加するにあたっては、複数のルールに一致した場合により狭い範囲を持つルールが連想メモリにより選択されるようにしている。
【0086】
なお、ステップS3の判定結果がNOとなった場合には、ステップS3の場合とは逆にFi[1]の示す範囲がRj[1]の示す範囲を含んでいるどうかを判定(ステップS7)し、もしそうであれば、ステップS4で追加される保護ルールのRとFを互いに入れ替えた保護ルールF=(Rj[1],Fi[2],Ri[Tag])をFiの上に追加する(ステップS8)。またステップS7の判定結果がNOであって、Fi[1]の示す範囲とRj[1]の示す範囲の間に包含関係がない場合には、保護ルールの追加を行うことなく処理をステップS5に進める。また、ステップS5の判定を行ったときにルールF1以外のルールがルールの集合Fに存在する場合(ステップS5の判定結果がNO)は、ループ変数iに1を加算(ステップS9)して処理をステップS3に戻し、上記同様にステップS3〜S8による処理を行って、ルールの集合Fに存在する全てのルールを対象に保護ルールの追加が必要かどうか調べる。
【0087】
次に、以下の手順に従ってルールRj自体をルールの集合Fに追加する。まず、ループ変数iを1に初期化(ステップS6)してから、Fi[1]の示す範囲がRj[1]の示す範囲を含んでいるかあるいはこれらが一致しているかの判定を行う(ステップS10)。この場合にはルールF1[1]の範囲(=11*)がR2[1]の範囲(=1*)を含んでいないのでステップS10の判定結果がNOとなるため、処理をステップS12に進めてRj[1]をすべてのF[1]と比較したかどうかを判定する(ステップS12)。この場合もルールの集合FがルールF1およびその隣の保護ルールのみであるため、処理をステップS13に進めてルールRj(すなわちルールB)をルールの集合Fの最後に追加する。
【0088】
なお、ステップS10の判定結果がYESであった場合には、ルールRjをルールFiの上に追加(ステップS11)したのちにステップS15に処理を進める。また、ステップS12の判定結果がNOであった場合には、ルールの集合F上における次のルールとの比較を行うために、ループ変数iに1加算(ステップS14)して処理をステップS10に戻し、同様にステップS10〜S13の処理を行う。
【0089】
次に、上記のようにステップS13を行ったのち、全てのRjをルールの集合Fに追加したかどうか判定する(ステップS15)。この場合はステップS13で追加したルールBがオリジナルの表上で最後のものであるため、処理をステップS17に進めてルールの集合Fを第1実施形態で説明した手順に従ってグループ化して連想メモリに格納する。以上述べた通り、ルールRjをルール表へ追加する場合においても、保護ルールを追加する場合と同様に、複数のルールに一致した場合により狭い範囲を持つルールが連想メモリにより選択されるようにしている。なお、ステップS15の判定の結果、まだ追加されていないルールが残っている場合には、ループ変数jに1加算して次のルールを選択するとともに、ステップS2と同様にループ変数iを1に初期化する(ステップS16)そして、処理をステップS3に戻し上述したのと同様の処理をルールR3以降について行ってゆく。
【0090】
以上の説明から分かるようにルールをグループ化した際に、異なるルール間の対応するブロックで包含関係にある場合は、より範囲の狭いルールのブロックと同じ内容を持つ保護ルールを挿入することで、第1実施形態の問題点であるルールのグループ化時の曖昧性の問題を解決することができる。
【0091】
以上の実施の形態では、説明を容易とするため、ルールがDAとSAの2つの要素からなるルール表に限定して説明したが、3つ以上の要素からなるルール表についても同様の考えが適用できる。
【0092】
また、以上の実施の形態では、説明を容易とするため、包含関係にあるルールが2つの場合に限定して説明したが、3つ以上のルール間で包含関係があるテーブルについても同様の考えが適用できる。ルールが3つ以上存在する場合には3つ以上のルールに一致する可能性があり、候補となり得るルールが3つ以上存在することになるが、この場合も候補となり得る分だけ保護ルールを追加すれば良い。
【0093】
さらにまた、以上の実施の形態では、説明を容易とするため、DA、SAといった、内容の異なる要素単位でルールをグループ化する場合について説明したが、1つの要素をグループ化するような場合にも本発明は適用可能である。
【0094】
〔第3実施形態〕
本実施形態では、第2実施形態で触れたようにルール間に重なり合いのある場合に必要となる処理を行うものである。オリジナルのルール表上における2つのルール間の関係は図16に示すように3つの状態に分類される。なお、同図では説明を容易にするためにDA及びSAからなる2次元のルールの場合を想定して説明するが、そうしても一般性を失うことはない。第1の状態はルールE及びFの間における関係のように「一致部分がない」場合である。また第2の状態はルールG及びHの間における関係のように「一部分が一致」する場合である。さらに第3の状態はルールI及びJの間の関係のように一方のルールIが他方のルールJを「内包」する場合、すなわち一方のルールの範囲が他方のルールの範囲に完全に含まれる場合である。
【0095】
一部分が一致する2つのルールの間では一致部分の処理でいずれの処理を行って良いかどうかが曖昧であるため、必ずいずれか一方のルールに従った処理を選ぶ必要がある。そのために、保守者はフロー識別検索装置に対して一致部分に関する処理を明示的に設定する。いま図17に示したように、処理として「廃棄」を有するルールG=(*,01*)、および、処理として「通過」(すなわち、最優先で送出、中優先で送出、あるいは、低優先で送出などの「廃棄」以外の処理)を有するルールH=(10*,*)の2つのルールが存在することを想定する。この場合、これらルール間の一致部分であるルール(10*,01*)については、処理が「廃棄」,「通過」の何れであるのかを保守者が決めてフロー識別検索装置に設定する。
【0096】
一部分が一致するルールの集合において、例えば2つのルールの一部分が一致している場合は、一方のルールを幾つかのルールに分割することによって一致部分の無いルールの集合と等価にすることができる。これにより、上述した曖昧性の問題を解決することができる。図18は、図17に示すルールHを2つに分割した例を示している。図18では、一致部分の処理がルールGの処理に従うものと仮定しており、ルールHをルールH1とルールH2へ分割することにより、3つのルールG,H1,H2間では一致部分が無くなる。なお、2つのルール間に「内包」の関係がある場合(図16の(3)の場合)にも、いま説明した一部分一致のときと同様に分割を行うことで、一致部分がないルールの集合に変換することができる。
【0097】
【発明の効果】
以上説明したように本発明では、検索可能なビット幅の制限された連想メモリに入れるために、オリジナルのルール表の各ルールに含まれる検索項目を複数のグループにグループ化して連想メモリに格納している。その際、各グループがオリジナルのルールのどの位置にあるかを示すため、検索回数情報を一緒に格納する。さらにそれらの各グループが同じオリジナルのルールに属していることを示すため、検索関連情報も一緒に格納する。
【0098】
グループ化したルール表を格納した連想メモリを検索する際には、複数回連想メモリを検索する。連想メモリを検索する回数の最大はオリジナルのルール表に含まれるルールの検索項目をグループ化した数である。連想メモリの各回の検索においては、該当するパケットのヘッダ等に含まれる情報と検索回数情報と検索関連情報をキーとして連想メモリを検索する。ここで、検索回数情報は何回目の検索かを表すこととなる。検索関連情報は前回の検索時に得られた検索結果記憶装置上の照合関連情報を検索関連情報として今回の検索に用いる。初回の検索においてはこの検索関連情報が、連想メモリ上で最初に検索対象となる検索関連情報のいずれとも一致するようにする。具体的には、最初に検索対象となる連想メモリ上の検索関連情報にDon’t Careを設定するとともに、初回の検索時に連想メモリへ入力する検索関連情報として任意の値を与えれば良い。あるいは、最初に検索対象となる連想メモリ上の検索関連情報および初回の検索時に連想メモリへ入力する検索関連情報を全て同じ値に設定しても良い。
【0099】
本発明では、検索の際、グループ番号等の検索回数情報をグループ化された検索項目と一緒に連想メモリへ入力するので、異なるグループであるが、格納されている値が偶然一致するものが連想メモリに格納されていても区別することが出来る。また検索の際、ルール番号等の検索関連情報をグループ化された検索項目と一緒に連想メモリへ入力するので、異なるルールであるが、グループ化された検索項目の値が偶然一致するものが連想メモリに格納されていても区別することが出来る。
【0100】
また本発明では、最初のグループを検索した後に検索結果記憶装置の結果を読んだ際、次のグループの検索が必要な場合、そのルール番号等の照合関連情報が格納されているので、グループ番号等の検索関連情報をさらに生成することで、次のグループの検索の際、これらの番号を次のグループの検索対象と一緒に連想メモリへ入力し、検索することが出来る。また、次のグループの検索が不要な場合、必要な処理のみが検索結果格納装置に格納されているので、必ずしも全てのグループを検索することなく検索を終了できる。
【0101】
以上のように本発明では、オリジナルのルール表に含まれるルールの検索項目をグループ化したものを連想メモリに格納しており、1つのルールを複数のグループにグループ化して連想メモリに格納することになるので、連想メモリが格納できるビット幅よりもビット幅が長いルールを格納することが出来る。
【0102】
したがって、従来、検索可能なビット幅が短い連想メモリの制限で検索が行えなかった非常に長いビット幅を有する幅の広いルールでもフロー識別検索を行うことが出来る。しかも、連想メモリのアクセス速度は10ナノ秒程度であり、10Gb/sの回線上で40バイトのパケットを転送するのに必要な時間32ナノ秒よりも短く、超高速のルール表検索が可能となる。
【0103】
本発明において、前記各ルールに含まれる前記検索項目をグループ化する際、同一のグループに属する複数のグループ化検索項目が特定のデータに一致する可能性があるかどうかを調べ、一致する可能性がある場合には、該複数のグループ化検索項目のうち最も範囲が狭いグループ化検索項目を除く各グループ化検索項目について、該一致する可能性のあるグループ化検索項目の内容として前記最も範囲が狭いグループ化検索項目と同じ内容を有し、かつ、該一致する可能性のあるグループ化検索項目以外のグループ化検索項目及び処理として各グループ化検索項目が属するルールと同じ内容を持つ新たなルールを生成して前記ルール表に追加し、該新たなルールが追加されたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納するようにしても良い。
【0104】
これにより、ルール表をグループ化して連想メモリに格納する際には、グループ化することによって生じたルール間の曖昧性を防ぐことができる。
【図面の簡単な説明】
【図1】本発明の各実施形態によるフロー識別検索装置が組み込まれるルータの構成例を示すブロック図である。
【図2】本発明の各実施形態によるフロー識別検索装置を搭載したヘッダ検索部の構成例を示すブロック図である。
【図3】本発明の第1実施形態におけるルール番号及び検索項目のグループ化の例を示す説明図である。
【図4】同実施形態における連想メモリと検索結果記憶装置へのデータの格納例を示す説明図である。
【図5】同実施形態におけるルール表のグループ化の基本概念を示す説明図である。
【図6】同実施形態におけるルール表のグループ化の一例を示す説明図である。
【図7】図6のルール表に対する検索動作の一例を示す説明図である。
【図8】本発明の第1実施形態で問題が生じるルール表の一例を示す説明図である。
【図9】図8のルール表に対する検索動作の一例を示す説明図である。
【図10】図9の検索動作における不具合が発生する概念を示すグラフである。
【図11】本発明の第2実施形態にかかるルール表の一例を示す説明図である。
【図12】図11のルール表をグループ化した場合の説明図である。
【図13】図12のルール表に対する検索動作の一例を示す説明図である。
【図14】同実施形態において保護ルール挿入により不具合が改善される概念を示すグラフである。
【図15】同実施形態において、オリジナルのルール表上のルールを連想メモリへ格納する際の手順を示したフローチャートである。
【図16】本発明の第3実施形態において2つのルールが取りうる3通りの関係を示した説明図である。
【図17】同実施形態において2つのルールの一部分が一致している様子を示した説明図である。
【図18】同実施形態において、図17に示した一部分が一致する2つのルールについて一方のルールを分割する様子を示した説明図である。
【図19】IPパケットの転送のようすを示す説明図である。
【図20】フロー識別におけるルールの一例を示す説明図である。
【図21】IPパケットの構造と主なヘッダ情報の一例を示す説明図である。
【図22】ツリー構造の一例を示す説明図である。
【図23】連想メモリを用いたフロー識別検索のようすを示す説明図である。
【符号の説明】
1,100 ルータ
2−1〜2−3 ネットワーク
4 IPパケット
5−1,5−2,5−A 端末
6−1,6−2,6−B 端末
7−1,7−2,7−C 端末
10 ルール表
11〜14 ルール
200 スイッチ
300−1,300−n ラインカード
500−1,500−n パケット格納部
600,600−1,600−n ヘッダ検索部
610 ヘッダ抽出装置
620 フロー識別検索装置
621 連想メモリ
622 フロー識別検索処理装置
623 検索結果記憶装置
700−1,700−n パケット処理部
Claims (12)
- パケットに含まれ該パケットのフローの識別に使用される検索項目(DA,SA)をもとに、前記検索項目と該検索項目により識別されるフローのパケットに対して行う処理とを組み合わせたルール(11〜14)を複数備えるルール表(10)を検索し、前記パケットに対して行う処理を次定するフロー識別検索装置であって、
前記各ルールに含まれる検索項目を予め定めた複数のグループ(15,16)にグループ化したグルーブ化検索項目と、該グループ化検索項目が属するグループ及びルールをそれぞれ表す検索回数情報及び検索関連情報(Flag,Srch.Tag)とを組み合わせて保持する連想メモリ(621)と、
前記連想メモリに入力したグループ化検索項目,検索回数情報及び検索関連情報の組み合わせが該連想メモリで検索された際に行う処理と、前記連想メモリを次に検索する際に検索するルールを表す照合関連情報(Assoc.Tag)とを、前記連想メモリが保持する前記組み合わせに対応して保持する検索結果記憶装置(623)と、
前記ルール表上の各ルールに含まれる前記検索項目をグループ化して前記グループ化検索項目を生成し、生成された各グループ化検索項目が属しているルール及びグループをもとに前記検索回数情報、前記検索関連情報及び前記照合関連情報を生成して、生成された前記検索回数情報、検索関連情報及びグループ化検索項目を組み合わせて前記連想メモリに格納するとともに、生成された前記照合関連情報と該照合関連情報が示すルールに含まれる前記処理とを組み合わせて前記検索結果記憶装置に格納し、入力されたパケットから前記検索項目を取り出して前記グループ化検索項目を生成し、検索すべきグループ及びルールを表す検索回数情報及び検索関連情報と該グループに対応する前記グループ化検索項目とを前記連想メモリヘ入力して検索を行い、検索された前記連想メモリ上の組み合わせに対応して前記検索結果記憶装置が保持する前記処理及び前記照合関連情報を取得し、該処理として前記パケットに対して行う処理内容が得られるまで、次に検索すべきグループを表す検索回数情報と該グループに対応する前記グループ化検索項目と取得した前記照合関連情報とを前記連想メモリに入力して再び前記検索を行う処理装置(622)と
を有することを特徴とするフロー識別検索装置。 - 請求項1記載のフロー識別検索装置において、前記処理装置は、前記各グループを識別するためのグループ番号を前記検索回数情報として前もって前記各グループに付与し、前記グループ化検索項目と該グループ化検索項目が属するグループに付与された前記グループ番号とを組み合わせて前記連想メモリに格納することを特徴とするフロー識別検索装置。
- 請求項1記載のフロー識別検索装置において、
前記処理装置は、前記各ルールを識別するためのルール番号を前記検索関連情報及び前記照合関連情報としてルール毎に決定して、入力されたパケットに関して最初に検索の対象となるグループに関しては、前記グループ化検索項目と、任意のルール番号に一致するデータが設定された前記検索関連情報とを組み合わせて前記連想メモリに格納し、前記最初に検索の対象となるグループ以外の各グループに関しては、前記グループ化検索項目と、該グループ化検索項目が属するルールに付与された前記ルール番号とを組み合わせて前記連想メモリに格納することを特徴とするフロー識別検索装置。 - 請求項3記載のフロー識別検索装置において、
前記処理装置は、前記連想メモリが保持する前記各組み合わせに関して前記連想メモリの検索を必要とする次のグループが存在する場合には、次に前記連想メモリを検索する際に検索すべきルールに付与されたルール番号と前記連想メモリの再検索を指示する処理とを組み合わせて前記検索結果記憶装置に格納し、前記各組み合わせに関して前記連想メモリの検索を必要とする次のグループが存在しない場合には、入力されたパケットに対して行うべき処理を前記検索結果記憶装置に格納することを特徴とするフロー識別検索装置。 - 請求項1記載のフロー識別検索装置において、
前記処理装置は、前記各ルールに含まれる前記検索項目をグループ化する際、同一のグループに属する複数のグループ化検索項目が特定のデータに一致する可能性があるかどうかを調べ、一致する可能性がある場合には、該複数のグループ化検索項目のうち最も範囲が狭いグループ化検索項目を除く各グループ化検索項目について、該一致する可能性のあるグループ化検索項目の内容として前記最も範囲が狭いグループ化検索項目と同じ内容を持ち且つ該一致する可能性のあるグループ化検索項目以外のグループ化検索項目及び処理として各グループ化検索項目が属するルールと同じ内容を持つ新たなルールを生成して前記ルール表に追加し、該新たなルールが追加されたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納することを特徴とするフロー識別検索装置。 - 請求項5記載のフロー識別検索装置において、
前記処理装置は、前記新たなルールに含まれる検索項目をグループ化する際、前記検索結果記憶装置に格納する前記照合関連情報を、前記最も範囲が狭いグループ化検索項目に対応して前記検索結果記憶装置に格納する照合関連情報と同じ内容に設定することを特徴とするフロー識別検索装置。 - 請求項5記載のフロー識別検索装置において、
前記連想メモリは、入力された前記グループ化検索項目,前記検索回数情報及び前記検索関連情報の組み合わせが前記連想メモリに保持されている複数の組み合わせに一致する場合に、該複数の組み合わせが格納されている物理アドレスのうちの何れかを所定の基準に従い選択して検索結果として出力し、前記処理装置は、前記新たなルールが追加されたルール表を前記連想メモリ及び前記検索結果記憶装置に展開した後の検索時において、前記連想メモリに入力された前記グループ化検索項目,前記検索回数情報及び前記検索関連情報の組み合わせが前記連想メモリに保持されている複数の組み合わせに一致したときに、前記連想メモリが、該複数の組み合わせに含まれるグループ化検索項目のうち最も範囲の狭いグループ化検索項目を含む物理アドレスを検索結果として出力するように、前記新たなルールを前記ルール表上に挿入することを特徴とするフロー識別検索装置。 - 請求項1記載のフロー識別検索装置において、
前記処理装置は、前記ルール表上におけるルールの中に、各ルールに含まれる検索項目の範囲が互いに重なり合う複数のルールが存在するかどうか調べ、該複数のルールが存在する場合には、該複数のルールのうち予め決められたルール以外の各ルールについて、該各ルールに含まれる検索項目の範囲から重なり合う範囲を除いて重なり合いのない範囲を求め、該重なり合いのない範囲に対応する新たなルールを生成して該各ルールを置き換え、該ルールの置き換えがなされたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納することを特徴とするフロー識別検索装置。 - 請求項1記載のフロー識別検索装置において、
前記連想メモリの各物理アドレスに格納する前記検索回数情報,前記検索関連情報及び前記グループ化検索項目のビット幅の総和が前記連想メモリのビット幅に一致するように、前記検索項目がグループ化されていることを特徴とするフロー識別検索装置。 - パケットに含まれ該パケットのフローの識別に使用される検索項目をもとに、前記検索項目と該検索項目により識別されるフローのパケットに対して行う処理とを組み合わせたルールを複数備えるルール表を検索し、前記パケットに対して行う処理を決定するフロー識別検索方法であって、
前記各ルールに含まれる検索項目を予め定めた複数のグループにグループ化したグループ化検索項目と、該グループ化検索項目が属するグループ及びルールをそれぞれ表す検索回数情報及び検索関連情報とを組み合わせて保持する連想メモリと、前記連想メモリに入力したグループ化検索項目,検索回数情報及び検索関連情報の組み合わせが前記連想メモリで検索されたときに行う処理と、前記連想メモリを次に検索する際に検索するルールを表す照合関連情報とを、前記連想メモリが保持する前記組み合わせに対応して保持する検索結果記憶装置とを用意するステップと、
前記ルール表上の各ルールに含まれる前記検索項目をグループ化して前記グループ化検索項目を生成し、生成された各グループ化検索項目が属しているルール及びグループをもとに前記検索回数情報、前記検索関連情報及び前記照合関連情報を生成して、生成された前記検索回数情報、検索関連情報及びグループ化検索項目を組み合わせて前記連想メモリに格納するとともに、生成された前記照合関連情報と該照合関連情報が示すルールに含まれる前記処理とを組み合わせて前記検索結果記憶装置に格納するステップと、
入力されたパケットから前記検索項目を取り出してグループ化を行い前記グループ化検索項目を生成するステップと、
最初に検索すべきグループに対応する前記グループ化検索項目と該グループを表す検索回数情報とを前記連想メモリヘ入力して検索を行わせるステップと、
前記連想メモリから出力される検索結果に対応して前記検索結果記憶装置に保持されている前記処理及び前記照合関連情報を取得するステップと、
取得した処理が前記連想メモリの再検索を示している場合には、次に検索すべきグループを表す検索回数情報,該グループに対応する前記グループ化検索項目及び取得した前記照合関連情報と同じ内容を持つ検索関連情報を前記連想メモリに入力して再度検索を行わせるステップと、
前記処理が入力されたパケットに対して行うべき処理内容を示している場合に、前記連想メモリに対する検索を終了させて該処理内容を出力するステップと
を有することを特徴とするフロー識別検索方法。 - 請求項10記載のフロー識別方法において、
前記各ルールに含まれる前記検索項目をグループ化する際、同一のグループに属する複数のグループ化検索項目が特定のデータに一致する可能性があるかどうかを調べ、一致する可能性がある場合には、該複数のグループ化検索項目のうち最も範囲が狭いグループ化検索項目を除く各グループ化検索項目について、該一致する可能性のあるグループ化検索項目の内容として前記最も範囲が狭いグループ化検索項目と同じ内容を持ち且つ該一致する可能性のあるグループ化検索項目以外のグループ化検索項目及び処理として各グループ化検索項目が属するルールと同じ内容を持つ新たなルールを生成して前記ルール表に追加するステップと、該新たなルールが追加されたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納するステップとを有することを特徴とするフロー識別検索方法。 - 請求項10記載のフロー識別方法において、
前記ルール表上におけるルールの中に、各ルールに含まれる検索項目の範囲が互いに重なり合う複数のルールが存在するかどうか調べ、該複数のルールが存在する場合には、該複数のルールのうち予め決められたルール以外の各ルールについて、該各ルールに含まれる検索項目の範囲から重なり合う範囲を除いて重なり合いのない範囲を求め、該重なり合いのない範囲に対応する新たなルールを生成して該各ルールを置き換えるステップと、該ルールの置き換えがなされたルール表をもとに前記連想メモリ及び前記検索結果記憶装置に情報を格納するステップとを有することを特徴とするフロー識別検索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001246561A JP3609358B2 (ja) | 2000-08-17 | 2001-08-15 | フロー識別検索装置および方法 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000-247741 | 2000-08-17 | ||
JP2000247741 | 2000-08-17 | ||
JP2001050581 | 2001-02-26 | ||
JP2001-50581 | 2001-02-26 | ||
JP2001246561A JP3609358B2 (ja) | 2000-08-17 | 2001-08-15 | フロー識別検索装置および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002325091A JP2002325091A (ja) | 2002-11-08 |
JP3609358B2 true JP3609358B2 (ja) | 2005-01-12 |
Family
ID=27344369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001246561A Expired - Fee Related JP3609358B2 (ja) | 2000-08-17 | 2001-08-15 | フロー識別検索装置および方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3609358B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7784094B2 (en) * | 2005-06-30 | 2010-08-24 | Intel Corporation | Stateful packet content matching mechanisms |
JP4747724B2 (ja) * | 2005-08-05 | 2011-08-17 | 日本電気株式会社 | 多次元ルール可視化システム、方法、プログラム、可視化データ生成システム、方法およびプログラム |
CN102369703B (zh) * | 2009-03-30 | 2014-10-29 | 日本电气株式会社 | 通信流控制系统、通信流控制方法和通信流处理程序 |
CN102577273B (zh) * | 2009-11-16 | 2015-06-03 | 马维尔国际贸易有限公司 | 反复解析和分类 |
JP2012050052A (ja) * | 2010-07-28 | 2012-03-08 | Oki Networks Co Ltd | パケット処理装置及び方法、並びに通信装置 |
CN104579968B (zh) | 2013-10-26 | 2018-03-09 | 华为技术有限公司 | Sdn交换机获取精确流表项方法及sdn交换机、控制器、系统 |
WO2016125501A1 (ja) * | 2015-02-06 | 2016-08-11 | 日本電気株式会社 | データ処理装置、情報エントリ管理方法及び情報エントリ管理プログラムが記録された記録媒体 |
-
2001
- 2001-08-15 JP JP2001246561A patent/JP3609358B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002325091A (ja) | 2002-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2355022C (en) | Packet classification search device and method | |
US10491521B2 (en) | Field checking based caching of ACL lookups to ease ACL lookup search | |
EP1358739B1 (en) | Method and apparatus for routing table management | |
US6546391B1 (en) | High-speed lookup method and high-speed lookup apparatus | |
US7668160B2 (en) | Methods for performing packet classification | |
US9111013B2 (en) | Hierarchical associative memory-based classification system | |
US6970462B1 (en) | Method for high speed packet classification | |
US7349382B2 (en) | Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base | |
US7646771B2 (en) | Compilation of access control lists | |
US8165125B2 (en) | Apparatus and method of classifying packets | |
US20040236720A1 (en) | Longest prefix match lookup using hash function | |
EP3276501B1 (en) | Traffic classification method and device, and storage medium | |
US11327974B2 (en) | Field variability based TCAM splitting | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
TWI638554B (zh) | 用於網路交換機中的可擴展且靈活的表格搜索的裝置和方法 | |
US20180316613A1 (en) | Scaling of switching tables with high bandwidth | |
US10681007B2 (en) | String search and matching for gate functionality | |
JP3609358B2 (ja) | フロー識別検索装置および方法 | |
US20050237939A1 (en) | Method and system for managing multi-field classification rules relating to ingress contexts and egress contexts | |
KR20050066903A (ko) | 고속 라우팅 시스템에서의 패킷 포워딩 처리장치 및 그를이용한 라우팅 룩업 방법 | |
US11929837B2 (en) | Rule compilation schemes for fast packet classification | |
US11924102B2 (en) | Minimizing deviation from average latency of table lookups | |
ES2296752T3 (es) | Metodo y dispostivo para almacenar y hacer coincidir (emparejar) expresiones anchas (de gran tamaño) arbitrarias con memorias direccionables por contenido (cam). | |
JP2005051650A (ja) | テーブル検索装置 | |
Uga et al. | A high-speed packet classification using TCAM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040130 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040316 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040507 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040601 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040624 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041005 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041013 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071022 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081022 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091022 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101022 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101022 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111022 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |