JP2002325091A - フロー識別検索装置および方法 - Google Patents

フロー識別検索装置および方法

Info

Publication number
JP2002325091A
JP2002325091A JP2001246561A JP2001246561A JP2002325091A JP 2002325091 A JP2002325091 A JP 2002325091A JP 2001246561 A JP2001246561 A JP 2001246561A JP 2001246561 A JP2001246561 A JP 2001246561A JP 2002325091 A JP2002325091 A JP 2002325091A
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.)
Granted
Application number
JP2001246561A
Other languages
English (en)
Other versions
JP3609358B2 (ja
Inventor
Masanori Uga
雅則 宇賀
Kohei Shiomoto
公平 塩本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2001246561A priority Critical patent/JP3609358B2/ja
Publication of JP2002325091A publication Critical patent/JP2002325091A/ja
Application granted granted Critical
Publication of JP3609358B2 publication Critical patent/JP3609358B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

(57)【要約】 【課題】非常に長い検索ビット幅を有するフロー識別の
ルールを検索ビット幅に制限のある連想メモリを用いな
がら高速に検索可能なフロー識別検索装置及び方法を実
現する。 【解決手段】 フロー識別のルール11a〜14aの検
索項目を複数のグループ15,16にグループ化し、グ
ループ化された各ルールの検索項目を検索関連情報Sr
ch.Tag(最初のグループを除く各グループ)及び
検索回数情報Flagとともに連想メモリ621へ格納
する。また、次検索回数情報(各ルールにおいて検索の
必要な次のグループがある場合),照合関連情報Ass
oc.Tag,パケットに対する処理(検索が必要な次
のグループがある場合には再検索の指示,検索が必要な
次のグループがない場合はフロー識別の処理)を検索結
果記憶装置623に格納する。これにより、グループ単
位のビット幅による検索を可能とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、IP(Internet P
rotocol)ルータ等のパケット転送装置においてパケッ
ト転送処理を行うに当たり、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ヘッダだけでなくパケット中の他の
ヘッダ情報を検索し、より詳細にパケットを識別してQ
oS(Quality of Service)制御やポリシー制御のための
様々な処理を行うフロー識別に注目が集まっている。こ
のように、フロー識別とはQoS,VPN(Virtual Pr
ivate Network),ファイヤーウォール等のIP付加価
値サービスを実現するために、IPパケットのフロー毎
に異なる処理を行うことを意味する。
【0007】ルータはフロー識別によりパケットを詳細
に識別し、契約に応じた優先度を付けてパケットを送出
するといった付加価値サービスを実現したり、悪意のユ
ーザからのパケットを廃棄するといったことを実現す
る。より具体的には、特定のユーザからの特定のアプリ
ケーションのパケット転送のQoSを上げるためには、
そのユーザの送信元アドレスとTCP/UDPポート番
号を基にパケットの優先制御を行うことでQoS制御が
できる。また、特定のアプリケーションの通信を禁止し
てパケットを廃棄する場合は、そのアプリケーションに
割り当てられたTCP/UDPポート番号のパケットが
転送されないようにフィルタリングすることでポリシー
制御ができる。これらの処理に必要なのが次に述べるル
ールを格納したルール表(ポリシーテーブル(Policy t
able)とも呼ぶ)検索である。
【0008】パケットを識別するための複数の検索項目
(パケットヘッダのフィールド情報)としては、宛先ア
ドレス(DA)、送信元アドレス(SA)、Proto
col(プロトコル識別子〔PID〕)、宛先ポート番
号(DP)、送信元ポート番号(SP)、サービス差別
化符号(DSCP;Differentiated Service Code Poin
t)の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で宛先ポート番号が1
00のパケットを送出する場合、そのパケットの宛先ア
ドレス、送信元アドレス、Protocol、宛先ポー
ト番号がルール11の全検索項目と一致する(但し、ル
ール11の宛先ポート番号は如何なる値にも一致するD
on’tcare)ので、ルータ1はルール11の「処
理」に記述された動作をそのパケットに行う。即ち、ル
ータ1はそのパケットを最優先で送出する。
【0010】図21はIPパケットの構造と主なヘッダ
情報の一例を示すものである。IPパケットは、主とし
てローカルネットワークヘッダ21、IPヘッダ22、
上位ヘッダ(図ではTCPヘッダ23)、ユーザデータ
(図ではTCPデータ24)、ローカルネットワークト
レイラ25からなるが、各ヘッダにはフロー識別に使用
される可能性のある項目が複数存在する。
【0011】
【発明が解決しようとする課題】フロー識別の注目度が
上がるに従って、より詳細にパケットを識別する必要が
高まり、検索すべきヘッダの項目数も増えてきている。
また、近年、導入が始まったIPv6では宛先IPアド
レス、送信元IPアドレスはそれぞれ128ビット長を
有し、従来のIPv4の32ビットに比べてビット数が
大幅に拡大した。検索項目の拡大とIPv6の導入によ
りフロー識別のための検索ビット数が増加し、現状40
0ビット程度の検索が必要となってきている。
【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(Stat
ic Random Access Memory)やDRAM(Dynamic Rando
m Access Memory)と異なり、横方向の容量拡張に適し
ていない記憶素子である。これはTCAM、CAMとS
RAM、DRAMとのアクセス方法の違いに起因してい
る。SRAMやDRAMは番地でアクセスするので、横
方向を拡張する際には、複数のバンクに分けて、同じア
ドレス信号を各メモリバンクに引き込むことで横方向の
拡張が容易に実現できる。
【0019】これに対してTCAMやCAMはメモリに
記憶された内容でアクセスするので、内容を横方向に分
割して複数のTCAMやCAMのバンクに記憶しても、
各TCAM間やCAM間の連携がとれないので、期待し
た結果が得られない。
【0020】近年、ルール表の横幅は増加の一途をたど
っており、このような問題はますます顕在化する。例え
ば、フロー識別のルールの高度化により、より高いレイ
ヤのヘッダ情報を必要とすることやIPv6等の長いア
ドレス(128ビット)を使うこと等により、ルール表
の横幅は増加している。IPv6の場合、上で述べた6
つのフィールド情報だけでもSA(128bit)、D
A(128bit)、SP(16bit)、DP(16
bit)、PID(8bit)、DSCP(8bit)
であり、合計304ビットとなる。また、これら以外の
フィールド情報も加えると上述したようにルール表の横
幅は容易に400ビット程度になる。
【0021】本発明の目的は、上記課題を解決し、非常
に長い検索ビット幅を有するフロー識別のルールを検索
可能なフロー識別検索装置および方法を実現することに
ある。
【0022】
【課題を解決するための手段】上記課題を解決するため
に、請求項1記載のフロー識別検索装置は、パケットに
含まれ該パケットのフローの識別に使用される検索項目
をもとに、前記検索項目と該検索項目により識別される
フローのパケットに対して行う処理とを組み合わせたル
ールを複数備えるルール表を検索し、前記パケットに対
して行う処理を決定するフロー識別検索装置であって、
前記各ルールに含まれる検索項目を予め定めた複数のグ
ループにグループ化したグループ化検索項目と、該グル
ープ化検索項目が属するグループ及びルールをそれぞれ
表す検索回数情報及び検索関連情報とを組み合わせて保
持する連想メモリと、前記連想メモリに入力したグルー
プ化検索項目,検索回数情報及び検索関連情報の組み合
わせが該連想メモリで検索された際に行う処理と、前記
連想メモリを次に検索する際に検索するルールを表す照
合関連情報とを、前記連想メモリが保持する前記組み合
わせに対応して保持する検索結果記憶装置と、入力され
たパケットから前記検索項目を取り出して前記グループ
化検索項目を生成し、検索すべきグループ及びルールを
表す検索回数情報及び検索関連情報と該グループに対応
する前記グループ化検索項目とを前記連想メモリへ入力
して検索を行い、検索された前記連想メモリ上の組み合
わせに対応して前記検索結果記憶装置が保持する前記処
理及び前記照合関連情報を取得し、該処理として前記パ
ケットに対して行う処理内容が得られるまで、次に検索
すべきグループを表す検索回数情報と該グループに対応
する前記グループ化検索項目と取得した前記照合関連情
報とを前記連想メモリに入力して再び前記検索を行う処
理装置とを有することを特徴としている。
【0023】請求項2記載のフロー識別検索装置は、請
求項1記載のフロー識別検索装置において、前記処理装
置は、前記ルール表上の各ルールに含まれる前記検索項
目をグループ化して前記グループ化検索項目を生成し、
生成された各グループ化検索項目が属しているルール及
びグループをもとに前記検索回数情報,前記検索関連情
報及び前記照合関連情報を生成して、生成された前記検
索回数情報,検索関連情報及びグループ化検索項目を組
み合わせて前記連想メモリに格納するとともに、生成さ
れた前記照合関連情報と該照合関連情報が示すルールに
含まれる前記処理とを組み合わせて前記検索結果記憶装
置に格納することを特徴としている。
【0024】請求項3記載のフロー識別検索装置は、請
求項2記載のフロー識別検索装置において、前記処理装
置は、前記各グループを識別するためのグループ番号を
前記検索回数情報として前もって前記各グループに付与
し、前記グループ化検索項目と該グループ化検索項目が
属するグループに付与された前記グループ番号とを組み
合わせて前記連想メモリに格納することを特徴としてい
る。
【0025】請求項4記載のフロー識別検索装置は、請
求項2記載のフロー識別検索装置において、前記処理装
置は、前記各ルールを識別するためのルール番号を前記
検索関連情報及び前記照合関連情報としてルール毎に決
定して、入力されたパケットに関して最初に検索の対象
となるグループに関しては、前記グループ化検索項目
と、任意のルール番号に一致するデータが設定された前
記検索関連情報とを組み合わせて前記連想メモリに格納
し、前記最初に検索の対象となるグループ以外の各グル
ープに関しては、前記グループ化検索項目と、該グルー
プ化検索項目が属するルールに付与された前記ルール番
号とを組み合わせて前記連想メモリに格納することを特
徴としている。
【0026】請求項5記載のフロー識別検索装置は、請
求項4記載のフロー識別検索装置において、前記処理装
置は、前記連想メモリが保持する前記各組み合わせに関
して前記連想メモリの検索を必要とする次のグループが
存在する場合には、次に前記連想メモリを検索する際に
検索すべきルールに付与されたルール番号と前記連想メ
モリの再検索を指示する処理とを組み合わせて前記検索
結果記憶装置に格納し、前記各組み合わせに関して前記
連想メモリの検索を必要とする次のグループが存在しな
い場合には、入力されたパケットに対して行うべき処理
を前記検索結果記憶装置に格納することを特徴としてい
る。
【0027】請求項6記載のフロー識別検索装置は、請
求項2記載のフロー識別検索装置において、前記処理装
置は、前記各ルールに含まれる前記検索項目をグループ
化する際、同一のグループに属する複数のグループ化検
索項目が特定のデータに一致する可能性があるかどうか
を調べ、一致する可能性がある場合には、該複数のグル
ープ化検索項目のうち最も範囲が狭いグループ化検索項
目を除く各グループ化検索項目について、該一致する可
能性のあるグループ化検索項目の内容として前記最も範
囲が狭いグループ化検索項目と同じ内容を持ち且つ該一
致する可能性のあるグループ化検索項目以外のグループ
化検索項目及び処理として各グループ化検索項目が属す
るルールと同じ内容を持つ新たなルールを生成して前記
ルール表に追加し、該新たなルールが追加されたルール
表をもとに前記連想メモリ及び前記検索結果記憶装置に
情報を格納することを特徴としている。
【0028】請求項7記載のフロー識別検索装置は、請
求項6記載のフロー識別検索装置において、前記処理装
置は、前記新たなルールに含まれる検索項目をグループ
化する際、前記検索結果記憶装置に格納する前記照合関
連情報を、前記最も範囲が狭いグループ化検索項目に対
応して前記検索結果記憶装置に格納する照合関連情報と
同じ内容に設定することを特徴としている。
【0029】請求項8記載のフロー識別検索装置は、請
求項6記載のフロー識別検索装置において、前記連想メ
モリは、入力された前記グループ化検索項目,前記検索
回数情報及び前記検索関連情報の組み合わせが前記連想
メモリに保持されている複数の組み合わせに一致する場
合に、該複数の組み合わせが格納されている物理アドレ
スのうちの何れかを所定の基準に従い選択して検索結果
として出力し、前記処理装置は、前記新たなルールが追
加されたルール表を前記連想メモリ及び前記検索結果記
憶装置に展開した後の検索時において、前記連想メモリ
に入力された前記グループ化検索項目,前記検索回数情
報及び前記検索関連情報の組み合わせが前記連想メモリ
に保持されている複数の組み合わせに一致したときに、
前記連想メモリが、該複数の組み合わせに含まれるグル
ープ化検索項目のうち最も範囲の狭いグループ化検索項
目を含む物理アドレスを検索結果として出力するよう
に、前記新たなルールを前記ルール表上に挿入すること
を特徴としている。
【0030】請求項9記載のフロー識別検索装置は、請
求項2記載のフロー識別検索装置において、前記処理装
置は、前記ルール表上におけるルールの中に、各ルール
に含まれる検索項目の範囲が互いに重なり合う複数のル
ールが存在するかどうか調べ、該複数のルールが存在す
る場合には、該複数のルールのうち予め決められたルー
ル以外の各ルールについて、該各ルールに含まれる検索
項目の範囲から重なり合う範囲を除いて重なり合いのな
い範囲を求め、該重なり合いのない範囲に対応する新た
なルールを生成して該各ルールを置き換え、該ルールの
置き換えがなされたルール表をもとに前記連想メモリ及
び前記検索結果記憶装置に情報を格納することを特徴と
している。
【0031】請求項10記載のフロー識別検索装置は、
請求項1記載のフロー識別検索装置において、前記連想
メモリの各物理アドレスに格納する前記検索回数情報,
前記検索関連情報及び前記グループ化検索項目のビット
幅の総和が前記連想メモリのビット幅に一致するよう
に、前記検索項目がグループ化されていることを特徴と
している。
【0032】請求項11記載のフロー識別検索方法は、
パケットに含まれ該パケットのフローの識別に使用され
る検索項目をもとに、前記検索項目と該検索項目により
識別されるフローのパケットに対して行う処理とを組み
合わせたルールを複数備えるルール表を検索し、前記パ
ケットに対して行う処理を決定するフロー識別検索方法
であって、前記各ルールに含まれる検索項目を予め定め
た複数のグループにグループ化したグループ化検索項目
と、該グループ化検索項目が属するグループ及びルール
をそれぞれ表す検索回数情報及び検索関連情報とを組み
合わせて保持する連想メモリと、前記連想メモリに入力
したグループ化検索項目,検索回数情報及び検索関連情
報の組み合わせが前記連想メモリで検索されたときに行
う処理と、前記連想メモリを次に検索する際に検索する
ルールを表す照合関連情報とを、前記連想メモリが保持
する前記組み合わせに対応して保持する検索結果記憶装
置とを用意するステップと、入力されたパケットから前
記検索項目を取り出してグループ化を行い前記グループ
化検索項目を生成するステップと、最初に検索すべきグ
ループに対応する前記グループ化検索項目と該グループ
を表す検索回数情報とを前記連想メモリへ入力して検索
を行わせるステップと、前記連想メモリから出力される
検索結果に対応して前記検索結果記憶装置に保持されて
いる前記処理及び前記照合関連情報を取得するステップ
と、取得した処理が前記連想メモリの再検索を示してい
る場合には、次に検索すべきグループを表す検索回数情
報,該グループに対応する前記グループ化検索項目及び
取得した前記照合関連情報と同じ内容を持つ検索関連情
報を前記連想メモリに入力して再度検索を行わせるステ
ップと、前記処理が入力されたパケットに対して行うべ
き処理内容を示している場合に、前記連想メモリに対す
る検索を終了させて該処理内容を出力するステップとを
有することを特徴としている。
【0033】請求項12記載のフロー識別検索方法は、
請求項11記載のフロー識別方法において、前記各ルー
ルに含まれる前記検索項目をグループ化する際、同一の
グループに属する複数のグループ化検索項目が特定のデ
ータに一致する可能性があるかどうかを調べ、一致する
可能性がある場合には、該複数のグループ化検索項目の
うち最も範囲が狭いグループ化検索項目を除く各グルー
プ化検索項目について、該一致する可能性のあるグルー
プ化検索項目の内容として前記最も範囲が狭いグループ
化検索項目と同じ内容を持ち且つ該一致する可能性のあ
るグループ化検索項目以外のグループ化検索項目及び処
理として各グループ化検索項目が属するルールと同じ内
容を持つ新たなルールを生成して前記ルール表に追加す
るステップと、該新たなルールが追加されたルール表を
もとに前記連想メモリ及び前記検索結果記憶装置に情報
を格納するステップとを有することを特徴としている。
【0034】請求項13記載のフロー識別検索方法は、
請求項11記載のフロー識別方法において、前記ルール
表上におけるルールの中に、各ルールに含まれる検索項
目の範囲が互いに重なり合う複数のルールが存在するか
どうか調べ、該複数のルールが存在する場合には、該複
数のルールのうち予め決められたルール以外の各ルール
について、該各ルールに含まれる検索項目の範囲から重
なり合う範囲を除いて重なり合いのない範囲を求め、該
重なり合いのない範囲に対応する新たなルールを生成し
て該各ルールを置き換えるステップと、該ルールの置き
換えがなされたルール表をもとに前記連想メモリ及び前
記検索結果記憶装置に情報を格納するステップとを有す
ることを特徴としている。
【0035】
【発明の実施の形態】〔第1実施形態〕発明者らは、ル
ール表を横方向にグループ化することで上述した課題を
回避することが可能になることを見出した。
【0036】図1は本発明の第1実施形態によるフロー
識別検索装置が組み込まれる装置の一例であるルータ1
00を示すもので、図中、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,……8
01−nと、パケット格納部500−1,……500−
nとパケット処理部700−1,……700−nとを結
ぶ信号線802−1,……802−nと、ヘッダ検索部
600−1,……600−nとパケット処理部700−
1,……700−nと結ぶ信号線803−1,……80
3−nとを備えている。
【0038】本実施形態のフロー識別検索装置はヘッダ
検索部600−1〜600−n内に組み込む。以下、入
力されたパケットに対するルータ100の処理概要を簡
単に説明する。
【0039】あるパケットが信号線3−1から入力され
たとすると、まず入力されたパケットのヘッダをヘッダ
検索部600−1で検索し、またパケット自身を信号線
801−1を通してパケット格納部500−1へ送出す
る。
【0040】ヘッダ検索部600−1で行うヘッダ検索
により、パケットに対して必要な処理や宛先となる信号
線3−m(1≦m≦n)を決定し、パケット処理部70
0−1へ検索結果を信号線803−1を通して送出し、
同時に検索が終了したことをパケット格納部500−1
へ信号線801−1を通して伝える。パケット自身を格
納しているパケット格納部500−1はヘッダ検索部6
00−1におけるヘッダ検索が終了したことが通知され
たら、パケットをパケット処理部700−1へ信号線8
02−1を通して送出する。
【0041】パケット処理部700−1では該当パケッ
トの検索結果とパケット自身を受けとったら、パケット
に対して必要な処理を行うとともに、宛先となる信号線
3−m(1≦m≦n)を識別する値等のヘッダ検索部6
00−1の結果をパケットに対して付与し、スイッチ2
00へ信号線400−1を通して送出する。スイッチ2
00は、送られてきたパケットに含まれる上記値をもと
に信号線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のメモリ上のアドレスを連想メモリ6
21から信号線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,1
4a−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に対応しており、次F
lagと、ルール番号と同じ値を持つ照合関連情報As
soc.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に示すデータ1
1a−1が連想メモリ621に格納される。
【0052】次に、検索結果記憶装置623について
は、連想メモリ621に設定した検索回数情報Flag
の値0に1を加算した値1を次Flagに設定する。ま
た、ルール番号0と同じ値0を照合関連情報Asso
c.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に示すように全てDo
n’t Careであるため、ルール番号3かつグルー
プ番号1のルールに関してはさらに検索を行う必要がな
い。したがってこの場合は、処理に「再検索」を設定す
る代わりに、図3のルール表に設定されている処理「廃
棄」そのものを検索結果記憶装置623の「処理」に格
納するとともに、次Flagには任意の値(図4ではど
の値でもかまわないことを示す×)を設定する。
【0054】グループ番号1についてもグループ0の場
合に準じて同様の処理を行う。ただし、この場合は上述
したようにルール番号3については検索項目が全てDo
n’t Careであるため、ルール番号0〜2につい
て処理を行い、連想メモリ621に対してデータ11a
−2,12a−2,13a−2を順次追加するととも
に、検索結果記憶装置623に対してデータ11a−
4,12a−4,13a−4を順次追加する。連想メモ
リ621については、検索回数情報Flagとしてグル
ープ番号と同じ1を設定するとともに、グループ番号1
が最初のグループでないことから図3のルール表に設定
されているルール番号をそのまま検索関連情報Src
h.Tagとして設定する。一方、検索結果記憶装置6
23については、グループ番号1が最後のグループであ
ることから、図3のルール表に記述されている処理をそ
のまま検索結果記憶装置623に設定するとともに、グ
ループ番号1についてはそれ以上検索を行わないので次
Flag及び照合関連情報Assoc.Tagには任意
の値を設定する。
【0055】図4を利用して具体的に宛先アドレスが5
9.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とProtoc
olのTCPとグループ番号0と同じ値0を持つ検索回
数情報Flagと適当な値の検索関連情報Srch.T
agとを連想メモリ621に検索データとして入力す
る。
【0058】手順3:検索により連想メモリ621内に
格納されているデータ12a−1と入力データが一致す
るので、結果としてデータ12a−1に関連づけられた
検索結果を格納している検索結果記憶装置623のメモ
リのアドレスをフロー識別検索処理装置622は受け取
る。
【0059】手順4:フロー識別検索処理装置622は
受け取った検索結果記憶装置623のメモリのアドレス
から、検索結果記憶億装置623に格納されているデー
タ12a−3を読み取る。読みとったデータ12a−3
に含まれる処理の内容が「再検索」なので、フロー識別
検索処理装置622は次Flagと照合関連情報Ass
oc.Tagを読みとり、再度検索を行う。再検索にあ
たって読みとったデータ12a−3から次Flagが1
で照合関連情報Assoc.Tagが1であることがわ
かったので、フロー識別検索処理装置622は、ヘッダ
の中のグループ番号1に属する検索項目である送信元ア
ドレスの122.58.33.1、宛先ポート番号10
とグループ番号1と同じ値1を持つ検索回数情報Fla
gと検索関連情報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=010
0、SA=0101なるヘッダ情報のパケットが到着し
た場合は、図7に示すように、1回目の検索(1st rou
nd search)で、DA=0100を検索キーとして、こ
れに次の2つの検索キーを併せて検索する。その2つの
検索キーとは、何回目かの検索回数を表す検索回数情報
Flag=1st及び前回の検索結果との関連付けのため
の検索関連情報Srch.Tag=Anyの2つであ
る。なお、検索関連情報Srch.Tagとして格納さ
れている値のうち、Anyは任意のものと一致するDo
n’t careを意味している。また、検索キーとし
て入力される検索関連情報Srch.TagのAnyは
任意の値を入力すれば良いことを意味している。他の実
現形態として、検索キーとして入力される検索関連情報
Srch.TagのAnyの値および連想メモリ上にお
ける検索関連情報Srch.TagのAnyの値をすべ
て同じ値に設定することが考えられる。具体的には、連
想メモリ上における検索関連情報Srch.Tagの値
Anyとして例えば0を設定するとともに、1回目の検
索で連想メモリへ与える検索関連情報Srch.Tag
の値を同じく0とすれば良い。
【0064】1回目の検索キーでマッチするルールが見
つかると、それに対する処理(Action)、ここで
は再検索(Continue)を決定することができるととも
に、それに関連することを表す照合関連情報Asso
c.Tag=2が得られる。引き続き2回目(2nd rou
nd search)の検索を行う。その際には検索キーSA=
0101と一緒に、1回目の検索により得られた照合関
連情報Assoc.Tag=2の値を検索関連情報Sr
ch.Tagに代入して検索を行う。また、何回目かの
検索回数を表す検索回数情報Flag=2ndとして検索
する。2回目の検索ではそれらにマッチするルールが見
つかり、それに対する処理(Action)、ここでは
最優先で転送(High Priority)を決定することができ
る。
【0065】以上説明したように、本実施形態の構成要
素は、(1)ルール表のルールをグループ化し、該グル
ープ化したルールの各部分をテーブル(連想メモリ)に
格納する手段と、(2)グループ化したルールの各部分
のグループ化前のルール内における相対位置を示す検索
回数情報Flagを付与する手段と、(3)グループ化
したルールの各部分間の関連を示す検索関連情報Src
h.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=110
0、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=110
0で検索を行う際に本来マッチすべきルールBを見逃し
てしまうこととなる。
【0070】この状況を概念的に示したものが図10で
ある。図10は横軸をDA、縦軸をSAとして、それぞ
れのルールAとBが占める領域を示したものである。1
回目の検索でルールAに候補を絞り込んでしまうのは、
図10では1stround searchと示している両端矢印の箇
所に相当する。
【0071】1回目の検索ではDAで検索を行うので図
10の横軸に沿って検索を行う。その際、ルールAのほ
うがより狭い範囲でパケットのヘッダ情報(DA=11
00)を含むので、ルール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と処理(A
ction)に関してはルールBと同じ内容を持つ。ル
ールB’を挿入することにより、ルール表をグループ化
することにより生じる曖昧性を除去することができる。
【0076】図12は図11に示したオリジナルのルー
ル表をグループ化したものを示す。ここでのポイントは
ルールB’をグループ化する際にルールB’の1回目の
検索に用いる前半部の照合関連情報Assoc.Tag
をルールAのものと同じ値(照合関連情報Assoc.
Tag=1)とする点である。ルールBの値(照合関連
情報Assoc.Tag=2)でない点に注意された
い。ルールB’の前半部の照合関連情報Assoc.T
ag=1とすることにより、1回目の検索ではルールA
への候補の絞り込みが行われることなく、2回目の検索
でルールAにマッチするのか、ルールBにマッチするの
かを判定することができる。
【0077】なお、上述したように、連想メモリに入力
されたデータが複数のルールに一致した場合は最も小さ
い物理アドレスが出力される。また、保護ルールの追加
にあたっては一致した複数のルールのうちより範囲の狭
いルールと同じ内容の保護ルールを入れている。さら
に、複数のルールに一致した場合にはより狭い範囲のル
ールを選択しなければならない。このため、より狭い範
囲のルールは当該ルールよりも広い範囲のルールよりも
連想メモリ上でより上位(より小さな物理アドレス側)
に格納する必要がある。したがって図11に示したよう
に、ルールA及びルールB’を連想メモリ上でルールB
よりも上位に格納するようにしている。
【0078】図13にその時の検索の様子を示す。図1
3では本実施形態によりグループ化したルール表を2回
検索する様子を示している。1回目の検索では、DA=
1100を検索キーとして、その検索キーと併せて検索
関連情報Srch.Tag=Anyと検索回数情報Fl
ag=1stをキーとして検索する。その結果、マッチす
るルールとして一行目のA,B’(1st)の前半部が見
つかる。それに関連することを表す照合関連情報Ass
oc.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)を示している。また、
j[Tag]はルールRjの検索関連情報である。上述
したように、検索関連情報Srch.Tagと照合関連
情報Assoc.Tagはある1つのルールに関しては
基本的に同じ値となるため、これらを総称してタグと呼
ぶ。Fは連想メモリに書き込むべきルールの集合であっ
てF1からFPまでP個のルールから成る。なお、F
j[1],Fj[2],Fj[Tag]等の定義はルール
の集合Rについてのものと同じである。
【0083】ルールの集合Rを連想メモリに追加する前
に3つのことをしなければならない。第1にはタグを付
与することであり、第2には保護ルールが必要ならばこ
れを追加することである。第3には、上述したように連
想メモリは複数のルールに一致した場合に最も上位の物
理アドレスを出力するという特質を考慮に入れて、連想
メモリにルールを格納する際の順番を決めることであ
る。これら3つのことを実施するために、ルールの集合
Rにタグ及び保護ルールを追加し、かつ、連想メモリに
格納する順番を決定したルールの集合Fを定義し、ルー
ルの集合Rをもとにルールの集合Fを作製してこれを連
想メモリに格納する。
【0084】次に、図8に示したOriginal rule table
をもとに図12に示すProposed ruletableを作成する場
合を例に挙げて、図15のフローチャートに沿って処理
の詳細を説明する。まず、全てのルールR1〜RMについ
てRm[Tag]=m(m=1〜M)となるタグを割り
振る(ステップS1)。これによりルールAに関する検
索関連情報Srch.Tagおよび照合関連情報Ass
oc.Tagがそれぞれ1に設定され、ルールBに関す
る検索関連情報Srch.Tagおよび照合関連情報A
ssoc.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],
i[Tag])をルールFiの隣へ追加する(ステップ
S4)。具体的には、ルールAのDA(=11*),ル
ールBのSA(=11*),ルールAのタグ(=1)か
らなるルールB’をルールAの隣に追加する。次に、R
j[1]を全てのF[1]と比較したかどうか判定する
(ステップS5)。この場合はルールの集合Fがルール
1(およびステップS4で隣に追加した保護ルール)
のみであるため同ステップの判定結果はYESとなるこ
とから、処理をステップS6に進める。なお以上述べた
通り、保護ルールをルール表へ追加するにあたっては、
複数のルールに一致した場合により狭い範囲を持つルー
ルが連想メモリにより選択されるようにしている。
【0086】なお、ステップS3の判定結果がNOとな
った場合には、ステップS3の場合とは逆にFi[1]
の示す範囲がRj[1]の示す範囲を含んでいるどうか
を判定(ステップS7)し、もしそうであれば、ステッ
プS4で追加される保護ルールのRとFを互いに入れ替
えた保護ルールF=(Rj[1],Fi[2],Ri[T
ag])を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]の示す範囲を含んでいるかあるいはこ
れらが一致しているかの判定を行う(ステップS1
0)。この場合にはルールF1[1]の範囲(=11*
がR2[1]の範囲(=1*)を含んでいないのでステッ
プS10の判定結果がNOとなるため、処理をステップ
S12に進めてRj[1]をすべてのF[1]と比較し
たかどうかを判定する(ステップS12)。この場合も
ルールの集合FがルールF1およびその隣の保護ルール
のみであるため、処理をステップS13に進めてルール
j(すなわちルールB)をルールの集合Fの最後に追
加する。
【0088】なお、ステップS10の判定結果がYES
であった場合には、ルールRjをルールFiの上に追加
(ステップS11)したのちにステップS15に処理を
進める。また、ステップS12の判定結果がNOであっ
た場合には、ルールの集合F上における次のルールとの
比較を行うために、ループ変数iに1加算(ステップS
14)して処理をステップS10に戻し、同様にステッ
プS10〜S13の処理を行う。
【0089】次に、上記のようにステップS13を行っ
たのち、全てのRjをルールの集合Fに追加したかどう
か判定する(ステップS15)。この場合はステップS
13で追加したルールBがオリジナルの表上で最後のも
のであるため、処理をステップS17に進めてルールの
集合Fを第1実施形態で説明した手順に従ってグループ
化して連想メモリに格納する。以上述べた通り、ルール
jをルール表へ追加する場合においても、保護ルール
を追加する場合と同様に、複数のルールに一致した場合
により狭い範囲を持つルールが連想メモリにより選択さ
れるようにしている。なお、ステップ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 Car
eを設定するとともに、初回の検索時に連想メモリへ入
力する検索関連情報として任意の値を与えれば良い。あ
るいは、最初に検索対象となる連想メモリ上の検索関連
情報および初回の検索時に連想メモリへ入力する検索関
連情報を全て同じ値に設定しても良い。
【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 (13)

    【特許請求の範囲】
  1. 【請求項1】 パケットに含まれ該パケットのフロー
    の識別に使用される検索項目(DA,SA)をもとに、前記検
    索項目と該検索項目により識別されるフローのパケット
    に対して行う処理とを組み合わせたルール(11〜14)を複
    数備えるルール表(10)を検索し、前記パケットに対して
    行う処理を決定するフロー識別検索装置であって、 前記各ルールに含まれる検索項目を予め定めた複数のグ
    ループ(15,16)にグループ化したグループ化検索項目
    と、該グループ化検索項目が属するグループ及びルール
    をそれぞれ表す検索回数情報及び検索関連情報(Flag, S
    rch.Tag)とを組み合わせて保持する連想メモリ(621)
    と、 前記連想メモリに入力したグループ化検索項目,検索回
    数情報及び検索関連情報の組み合わせが該連想メモリで
    検索された際に行う処理と、前記連想メモリを次に検索
    する際に検索するルールを表す照合関連情報(Assoc.Ta
    g)とを、前記連想メモリが保持する前記組み合わせに対
    応して保持する検索結果記憶装置(623)と、 入力されたパケットから前記検索項目を取り出して前記
    グループ化検索項目を生成し、検索すべきグループ及び
    ルールを表す検索回数情報及び検索関連情報と該グルー
    プに対応する前記グループ化検索項目とを前記連想メモ
    リへ入力して検索を行い、検索された前記連想メモリ上
    の組み合わせに対応して前記検索結果記憶装置が保持す
    る前記処理及び前記照合関連情報を取得し、該処理とし
    て前記パケットに対して行う処理内容が得られるまで、
    次に検索すべきグループを表す検索回数情報と該グルー
    プに対応する前記グループ化検索項目と取得した前記照
    合関連情報とを前記連想メモリに入力して再び前記検索
    を行う処理装置(622)とを有することを特徴とするフロ
    ー識別検索装置。
  2. 【請求項2】 請求項1記載のフロー識別検索装置に
    おいて、 前記処理装置は、前記ルール表上の各ルールに含まれる
    前記検索項目をグループ化して前記グループ化検索項目
    を生成し、生成された各グループ化検索項目が属してい
    るルール及びグループをもとに前記検索回数情報,前記
    検索関連情報及び前記照合関連情報を生成して、生成さ
    れた前記検索回数情報,検索関連情報及びグループ化検
    索項目を組み合わせて前記連想メモリに格納するととも
    に、生成された前記照合関連情報と該照合関連情報が示
    すルールに含まれる前記処理とを組み合わせて前記検索
    結果記憶装置に格納することを特徴とするフロー識別検
    索装置。
  3. 【請求項3】 請求項2記載のフロー識別検索装置に
    おいて、 前記処理装置は、前記各グループを識別するためのグル
    ープ番号を前記検索回数情報として前もって前記各グル
    ープに付与し、前記グループ化検索項目と該グループ化
    検索項目が属するグループに付与された前記グループ番
    号とを組み合わせて前記連想メモリに格納することを特
    徴とするフロー識別検索装置。
  4. 【請求項4】 請求項2記載のフロー識別検索装置に
    おいて、 前記処理装置は、前記各ルールを識別するためのルール
    番号を前記検索関連情報及び前記照合関連情報としてル
    ール毎に決定して、入力されたパケットに関して最初に
    検索の対象となるグループに関しては、前記グループ化
    検索項目と、任意のルール番号に一致するデータが設定
    された前記検索関連情報とを組み合わせて前記連想メモ
    リに格納し、前記最初に検索の対象となるグループ以外
    の各グループに関しては、前記グループ化検索項目と、
    該グループ化検索項目が属するルールに付与された前記
    ルール番号とを組み合わせて前記連想メモリに格納する
    ことを特徴とするフロー識別検索装置。
  5. 【請求項5】 請求項4記載のフロー識別検索装置に
    おいて、 前記処理装置は、前記連想メモリが保持する前記各組み
    合わせに関して前記連想メモリの検索を必要とする次の
    グループが存在する場合には、次に前記連想メモリを検
    索する際に検索すべきルールに付与されたルール番号と
    前記連想メモリの再検索を指示する処理とを組み合わせ
    て前記検索結果記憶装置に格納し、前記各組み合わせに
    関して前記連想メモリの検索を必要とする次のグループ
    が存在しない場合には、入力されたパケットに対して行
    うべき処理を前記検索結果記憶装置に格納することを特
    徴とするフロー識別検索装置。
  6. 【請求項6】 請求項2記載のフロー識別検索装置に
    おいて、 前記処理装置は、前記各ルールに含まれる前記検索項目
    をグループ化する際、同一のグループに属する複数のグ
    ループ化検索項目が特定のデータに一致する可能性があ
    るかどうかを調べ、一致する可能性がある場合には、 該複数のグループ化検索項目のうち最も範囲が狭いグル
    ープ化検索項目を除く各グループ化検索項目について、
    該一致する可能性のあるグループ化検索項目の内容とし
    て前記最も範囲が狭いグループ化検索項目と同じ内容を
    持ち且つ該一致する可能性のあるグループ化検索項目以
    外のグループ化検索項目及び処理として各グループ化検
    索項目が属するルールと同じ内容を持つ新たなルールを
    生成して前記ルール表に追加し、該新たなルールが追加
    されたルール表をもとに前記連想メモリ及び前記検索結
    果記憶装置に情報を格納することを特徴とするフロー識
    別検索装置。
  7. 【請求項7】 請求項6記載のフロー識別検索装置に
    おいて、 前記処理装置は、前記新たなルールに含まれる検索項目
    をグループ化する際、前記検索結果記憶装置に格納する
    前記照合関連情報を、前記最も範囲が狭いグループ化検
    索項目に対応して前記検索結果記憶装置に格納する照合
    関連情報と同じ内容に設定することを特徴とするフロー
    識別検索装置。
  8. 【請求項8】 請求項6記載のフロー識別検索装置に
    おいて、 前記連想メモリは、入力された前記グループ化検索項
    目,前記検索回数情報及び前記検索関連情報の組み合わ
    せが前記連想メモリに保持されている複数の組み合わせ
    に一致する場合に、該複数の組み合わせが格納されてい
    る物理アドレスのうちの何れかを所定の基準に従い選択
    して検索結果として出力し、 前記処理装置は、前記新たなルールが追加されたルール
    表を前記連想メモリ及び前記検索結果記憶装置に展開し
    た後の検索時において、前記連想メモリに入力された前
    記グループ化検索項目,前記検索回数情報及び前記検索
    関連情報の組み合わせが前記連想メモリに保持されてい
    る複数の組み合わせに一致したときに、前記連想メモリ
    が、該複数の組み合わせに含まれるグループ化検索項目
    のうち最も範囲の狭いグループ化検索項目を含む物理ア
    ドレスを検索結果として出力するように、前記新たなル
    ールを前記ルール表上に挿入することを特徴とするフロ
    ー識別検索装置。
  9. 【請求項9】 請求項2記載のフロー識別検索装置に
    おいて、 前記処理装置は、前記ルール表上におけるルールの中
    に、各ルールに含まれる検索項目の範囲が互いに重なり
    合う複数のルールが存在するかどうか調べ、該複数のル
    ールが存在する場合には、該複数のルールのうち予め決
    められたルール以外の各ルールについて、該各ルールに
    含まれる検索項目の範囲から重なり合う範囲を除いて重
    なり合いのない範囲を求め、該重なり合いのない範囲に
    対応する新たなルールを生成して該各ルールを置き換
    え、該ルールの置き換えがなされたルール表をもとに前
    記連想メモリ及び前記検索結果記憶装置に情報を格納す
    ることを特徴とするフロー識別検索装置。
  10. 【請求項10】 請求項1記載のフロー識別検索装置
    において、 前記連想メモリの各物理アドレスに格納する前記検索回
    数情報,前記検索関連情報及び前記グループ化検索項目
    のビット幅の総和が前記連想メモリのビット幅に一致す
    るように、前記検索項目がグループ化されていることを
    特徴とするフロー識別検索装置。
  11. 【請求項11】 パケットに含まれ該パケットのフロ
    ーの識別に使用される検索項目をもとに、前記検索項目
    と該検索項目により識別されるフローのパケットに対し
    て行う処理とを組み合わせたルールを複数備えるルール
    表を検索し、前記パケットに対して行う処理を決定する
    フロー識別検索方法であって、 前記各ルールに含まれる検索項目を予め定めた複数のグ
    ループにグループ化したグループ化検索項目と、該グル
    ープ化検索項目が属するグループ及びルールをそれぞれ
    表す検索回数情報及び検索関連情報とを組み合わせて保
    持する連想メモリと、前記連想メモリに入力したグルー
    プ化検索項目,検索回数情報及び検索関連情報の組み合
    わせが前記連想メモリで検索されたときに行う処理と、
    前記連想メモリを次に検索する際に検索するルールを表
    す照合関連情報とを、前記連想メモリが保持する前記組
    み合わせに対応して保持する検索結果記憶装置とを用意
    するステップと、 入力されたパケットから前記検索項目を取り出してグル
    ープ化を行い前記グループ化検索項目を生成するステッ
    プと、 最初に検索すべきグループに対応する前記グループ化検
    索項目と該グループを表す検索回数情報とを前記連想メ
    モリへ入力して検索を行わせるステップと、 前記連想メモリから出力される検索結果に対応して前記
    検索結果記憶装置に保持されている前記処理及び前記照
    合関連情報を取得するステップと、 取得した処理が前記連想メモリの再検索を示している場
    合には、次に検索すべきグループを表す検索回数情報,
    該グループに対応する前記グループ化検索項目及び取得
    した前記照合関連情報と同じ内容を持つ検索関連情報を
    前記連想メモリに入力して再度検索を行わせるステップ
    と、 前記処理が入力されたパケットに対して行うべき処理内
    容を示している場合に、前記連想メモリに対する検索を
    終了させて該処理内容を出力するステップとを有するこ
    とを特徴とするフロー識別検索方法。
  12. 【請求項12】 請求項11記載のフロー識別方法に
    おいて、 前記各ルールに含まれる前記検索項目をグループ化する
    際、同一のグループに属する複数のグループ化検索項目
    が特定のデータに一致する可能性があるかどうかを調
    べ、一致する可能性がある場合には、該複数のグループ
    化検索項目のうち最も範囲が狭いグループ化検索項目を
    除く各グループ化検索項目について、該一致する可能性
    のあるグループ化検索項目の内容として前記最も範囲が
    狭いグループ化検索項目と同じ内容を持ち且つ該一致す
    る可能性のあるグループ化検索項目以外のグループ化検
    索項目及び処理として各グループ化検索項目が属するル
    ールと同じ内容を持つ新たなルールを生成して前記ルー
    ル表に追加するステップと、 該新たなルールが追加されたルール表をもとに前記連想
    メモリ及び前記検索結果記憶装置に情報を格納するステ
    ップとを有することを特徴とするフロー識別検索方法。
  13. 【請求項13】 請求項11記載のフロー識別方法に
    おいて、 前記ルール表上におけるルールの中に、各ルールに含ま
    れる検索項目の範囲が互いに重なり合う複数のルールが
    存在するかどうか調べ、該複数のルールが存在する場合
    には、該複数のルールのうち予め決められたルール以外
    の各ルールについて、該各ルールに含まれる検索項目の
    範囲から重なり合う範囲を除いて重なり合いのない範囲
    を求め、該重なり合いのない範囲に対応する新たなルー
    ルを生成して該各ルールを置き換えるステップと、 該ルールの置き換えがなされたルール表をもとに前記連
    想メモリ及び前記検索結果記憶装置に情報を格納するス
    テップとを有することを特徴とするフロー識別検索方
    法。
JP2001246561A 2000-08-17 2001-08-15 フロー識別検索装置および方法 Expired - Fee Related JP3609358B2 (ja)

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 true JP2002325091A (ja) 2002-11-08
JP3609358B2 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)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007042016A (ja) * 2005-08-05 2007-02-15 Nec Corp 多次元ルール可視化システム、方法、プログラム、可視化データ生成システム、方法およびプログラム
JP2008544728A (ja) * 2005-06-30 2008-12-04 インテル コーポレイション ステートフルなパケット内容マッチング機構
JP2012050052A (ja) * 2010-07-28 2012-03-08 Oki Networks Co Ltd パケット処理装置及び方法、並びに通信装置
JP2013511223A (ja) * 2009-11-16 2013-03-28 マーベル ワールド トレード リミテッド 反復解析及び分類
JP5477378B2 (ja) * 2009-03-30 2014-04-23 日本電気株式会社 通信フロー制御システム、通信フロー制御方法及び通信フロー処理プログラム
WO2016125501A1 (ja) * 2015-02-06 2016-08-11 日本電気株式会社 データ処理装置、情報エントリ管理方法及び情報エントリ管理プログラムが記録された記録媒体
JP2017163591A (ja) * 2013-10-26 2017-09-14 華為技術有限公司Huawei Technologies Co.,Ltd. Sdnスイッチにより正確なフロー・エントリを獲得するための方法、およびsdnスイッチ、コントローラ、およびシステム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544728A (ja) * 2005-06-30 2008-12-04 インテル コーポレイション ステートフルなパケット内容マッチング機構
JP2007042016A (ja) * 2005-08-05 2007-02-15 Nec Corp 多次元ルール可視化システム、方法、プログラム、可視化データ生成システム、方法およびプログラム
JP4747724B2 (ja) * 2005-08-05 2011-08-17 日本電気株式会社 多次元ルール可視化システム、方法、プログラム、可視化データ生成システム、方法およびプログラム
JP5477378B2 (ja) * 2009-03-30 2014-04-23 日本電気株式会社 通信フロー制御システム、通信フロー制御方法及び通信フロー処理プログラム
JP2013511223A (ja) * 2009-11-16 2013-03-28 マーベル ワールド トレード リミテッド 反復解析及び分類
JP2016001897A (ja) * 2009-11-16 2016-01-07 マーベル ワールド トレード リミテッド 反復解析及び分類
JP2012050052A (ja) * 2010-07-28 2012-03-08 Oki Networks Co Ltd パケット処理装置及び方法、並びに通信装置
JP2017163591A (ja) * 2013-10-26 2017-09-14 華為技術有限公司Huawei Technologies Co.,Ltd. Sdnスイッチにより正確なフロー・エントリを獲得するための方法、およびsdnスイッチ、コントローラ、およびシステム
US10367718B2 (en) 2013-10-26 2019-07-30 Huawei Technologies Co., Ltd. Method for acquiring, by SDN switch, exact flow entry, and SDN switch, controller, and system
WO2016125501A1 (ja) * 2015-02-06 2016-08-11 日本電気株式会社 データ処理装置、情報エントリ管理方法及び情報エントリ管理プログラムが記録された記録媒体

Also Published As

Publication number Publication date
JP3609358B2 (ja) 2005-01-12

Similar Documents

Publication Publication Date Title
CA2355022C (en) Packet classification search device and method
US9111013B2 (en) Hierarchical associative memory-based classification system
US7237058B2 (en) Input data selection for content addressable memory
Van Lunteren et al. Fast and scalable packet classification
US7089240B2 (en) Longest prefix match lookup using hash function
US6957272B2 (en) Stackable lookup engines
US10491521B2 (en) Field checking based caching of ACL lookups to ease ACL lookup search
US6792423B1 (en) Hybrid longest prefix match and fixed match searches
EP1358739B1 (en) Method and apparatus for routing table management
US7668160B2 (en) Methods for performing packet classification
US7394809B2 (en) Method and apparatus for packet classification using a forest of hash tables data structure
US6721800B1 (en) System using weighted next hop option in routing table to include probability of routing a packet for providing equal cost multipath forwarding packets
US7079542B2 (en) Internet protocol address look-up method
US7706375B2 (en) System and method of fast adaptive TCAM sorting for IP longest prefix matching
US7317723B1 (en) Action based termination of multidimensional lookup
US7624226B1 (en) Network search engine (NSE) and method for performing interval location using prefix matching
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
JP3609358B2 (ja) フロー識別検索装置および方法
KR20020006464A (ko) 경로 검색 시스템 및 그 방법과 그것에 사용되는 라우터장치
US7512122B1 (en) Identifying QoS flows using indices
US10205658B1 (en) Reducing size of policy databases using bidirectional rules
KR100467746B1 (ko) 주소 분할에 의한 다중필드 분류시스템
Reviriego et al. Algorithmic tcams: Implementing packet classification algorithms in hardware
Mikawa et al. Run-based trie involving the structure of arbitrary bitmask rules

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