JPWO2005013566A1 - データ検索方法及び装置 - Google Patents
データ検索方法及び装置 Download PDFInfo
- Publication number
- JPWO2005013566A1 JPWO2005013566A1 JP2005507390A JP2005507390A JPWO2005013566A1 JP WO2005013566 A1 JPWO2005013566 A1 JP WO2005013566A1 JP 2005507390 A JP2005507390 A JP 2005507390A JP 2005507390 A JP2005507390 A JP 2005507390A JP WO2005013566 A1 JPWO2005013566 A1 JP WO2005013566A1
- Authority
- JP
- Japan
- Prior art keywords
- search
- field
- entry
- data
- priority
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/604—Address structures or formats
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/668—Internet protocol [IP] address subnets
Abstract
データベースにおいて複数フィールドに分割して格納されたエントリの中から、全ての検索対象フィールドにおいて全ての非マスクビットと、これらに対応する検索キーのビットデータとが一致するエントリを中間検索結果とし、該中間検索結果の各検索対象フィールドのプリフィクス長の中から検索対象フィールド毎の最長プリフィクス長を求め、該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とする。
Description
本発明はデータ検索方法及び装置に関し、特にデータベースの中から検索キーに一致するデータを検索するデータ検索方法及び装置に関するものである。
ネットワークの中継点となるルータ又はスイッチにおいては、ネットワーク内を流れるパケット(例えばIPデータグラム)の宛先に応じた経路選択処理、すなわちルーティング処理を行なう必要がある。
例えば、図6に示したルータ101はネットワークの中継点となっており、このルータ101にはネットワーク回線102〜105が接続されている。また、ネットワーク回線103〜105の先にはサーバ130、140、及び150がそれぞれ接続されている。
図示の如く、ルータ101がネットワーク回線102を介して受信するパケット110のヘッダには、レイヤー3に属する宛先IPアドレス111及び送信元IPアドレス112や、レイヤー4に属する宛先ポート番号113及び送信元ポート番号114の各情報が含まれている。
宛先IPアドレス111からはパケット110を送信すべき宛先のネットワークを識別することが出来る。また、送信元IPアドレス112からはパケット110の送信者を識別することが出来るため、識別された送信者との間で締結されているネットワークの利用に関する契約の内容(回線容量等)を把握することも出来る。さらに、宛先ポート番号113及び送信元ポート番号114からはアプリケーションの種類などを判別することが出来る。
従って、ルータ101はこれらの情報に基づき、パケット110を適切なネットワーク回線103,104,105に出力するように、レイヤー3又はレイヤー4のルーティング処理を行なう。
例えば、ネットワーク回線103及び104の回線容量(帯域)について、それぞれの実線の太さで表される如く、ネットワーク回線103が大容量であり、ネットワーク回線104が小容量であるような場合、パケット110の送信者との回線容量に関する契約内容に応じてルーティング処理を行うことが可能となる。
また、アプリケーション毎にサーバ130、140、及び150をそれぞれ対応させておくことにより、レイヤー3のルーティング処理で負荷分散を行うこともできる。
ルータ101においてルーティング処理を適切に行えば、柔軟なネットワークが構築可能となる。
一般に、上記のルーティング処理はソフトウェア及びハードウェアによる宛先のデータ検索処理によって実現されている。特に、高速・大容量のルーティング処理を行なうためのデータ検索装置としては、従来より連想メモリ(Content Addressable/Associative Memory:CAM)デバイスが主として用いられている。
なお、CAMデバイスは、上記のルータ101の様にレイヤー3又はレイヤー4でのルーティング処理を行うルータだけでなく、レイヤー2スイッチ(図示せず)の様にMACアドレスによるスイッチングにも用いられている。
CAMデバイスを用いたルーティング処理の一例として、IPアドレスの検索処理について図7を参照して以下に説明する。
図7は、例えば図6のルータ101内において、ルーティング処理に関連した部分の構成例を示したものである。
CAMデバイス200は、検索対象のエントリ群を格納したデータベース203を有するものであり、ネットワークプロセッサ210は、ネットワークの処理に特化したプロセッサである。また、コンテキストRAM(Context−RAM又はAssociated−RAM)220は、CAMデバイス200の各エントリに対応した処理内容等を格納したメモリであり、通常SRAM、DRAMなどのメモリデバイスで構成されるものである。
CAMデバイス200、ネットワークプロセッサ210、及びコンテキストRAM220は、入力インタフェース211、出力バス201及び221でそれぞれ相互に接続されている。
動作において、ネットワークプロセッサ210は受信したパケット110からヘッダ情報を抽出して、検索したいIPアドレスまたはポート番号等を検索キー212として入力インタフェース211を介してCAMデバイス200に入力する。CAMデバイス200内部のデータベース203には、予めネットワーク管理者によって入力されたIPアドレス情報がエントリ群として収容されており、CAMデバイス200は、検索キー212とデータベース203の各エントリとを比較する。
ここで、CAMデバイス200による比較動作は各エントリの各ビットに対して同時に行われる。検索した結果、適切なエントリが有った(ヒットした)場合、その中で“最も”適切なエントリの物理アドレス(同図の例ではアドレス[2])をヒットアドレス202として出力バス201を介してコンテキストRAM220に与える。
コンテキストRAM220は、例えば、同図のヒットアドレス202として得られたアドレス[2]に対応して、対処すべき処理内容や出力ポート(配布先)のデータを出力バス221を介してネットワークプロセッサ210に検索結果222として与える。
ネットワークプロセッサ210は、検索結果222に応じてパケット110を処理したり、再度検索を行なったりする。
上記のCAMデバイス200内における従来のIPアドレス検索処理について、図8を参照してより詳細に説明する。
図8は、図7のCAMデバイス200においてIPアドレス検索処理に関連した部分をより詳細に示したものである。従って、図7のデータベース203に予めネットワーク管理者によって入力されたエントリ群の内、説明の便宜上、上位4つのエントリ#1〜#4のみが示されている。また、各エントリ#1〜#4毎に一致線321〜324が設けられており、それぞれプライオリティ・エンコーダ330に接続されている。
各エントリ#1〜#4は、IPアドレスとサブネットマスクが一対となってデータベース203に収容されたものである。同図の各エントリ#1〜#4の上段にはそれぞれ、IPアドレスとして“A1”、“A2”、“A3″、及び“A4”が示されており、下段にはそれぞれのサブネットマスクが連続したビット“1”及び“0”で示されている。この場合、連続したビット“1”はプリフィクス部分を示しており、連続したビット“0”はマスク部分を示している。
エントリ#1〜#4は、図示の如くサブネットマスクのプリフィクス部分(ビット“1”)の長さ、すなわちプリフィクス長(prefix length)が長い順に並べられている。また、各エントリ#1〜#4の右側に示された[1]〜[4]は、それぞれの物理アドレスを示している。
IPアドレスは右側の下位ビットほどネットワークの末端を現し、地図上の住所と同様に、より詳細な内容である下位ビットまで一致している検索結果ほど適切であるということができる。すなわち、IPアドレスの検索結果としては、プリフィクス長が最も長いアドレスが最も適切であり、このような検索結果はロンゲスト・プリフィクス・マッチ(Longest Prefix Match)と呼ばれるものである。エントリをプリフィクス長に従って並べて収容するのはこのためである。
運用中のCAMデバイス200の動作においては、ネットワークプロセッサ210などから検索キー212として例えばIPアドレス“A−KEY”が入力される。CAMデバイス200は全エントリに対して同時に各ビットについて比較を行なう。但し、サブネットマスクが“0”のビットに関しては比較を行なわない(ドントケア条件)。
比較したビットが1つでも「不一致」である場合、一致線321〜324に不一致をあらわす信号が出力されて、不一致エントリとして識別される。同図の例では、不一致信号331及び333がそれぞれ一致線321及び323に出力されているため、エントリ#1及び#3が不一致エントリとして識別されている。
比較したビットが全て「一致」している場合は、エントリ#2及び#4の様に一致エントリとして識別される。
このように複数ヒットした場合は、従来よりプライオリティエンコーダ330は、プリフィクス長の長い方、すなわちエントリ#2の物理アドレス[2]をヒットアドレス202として出力する。
このように、検索キー212のデータビットと、エントリ#1〜#4のデータビットとを比較する場合、マスクビットによるマスク処理を行うCAMデバイスは3値のデータを扱うことからターナリCAMデバイスと呼ばれ、一方、検索キー212のデータビットとエントリ#1〜#4のデータビットとの比較のみを行ない、マスク処理を行なわないCAMデバイスは2値のデータを扱うことからバイナリCAMデバイスと呼ばれている。
図9は、ターナリCAMデバイスにおける1ビット分に相当するターナリCAMセル600の機能及び検索結果の真理値表610を示したものである。
同図(1)において、ターナリCAMセル600は、データビット601及びマスクビット602を保持しており、さらに、入力された検索キー607とデータビット601とを比較する比較処理部603と、この比較処理部603が出力する比較結果に対しマスクビット602に応じてマスク処理を施すマスク処理部604を有している。
データベースの1つのエントリは共通の一致線606に接続された複数のターナリCAMセル600によって構成されている。
動作において、ターナリCAMセル600は、比較処理部603によって検索キー607とデータビット601とが比較された結果に対して、マスク処理部604によってマスク処理を施した結果を、最終的な検索結果605として一致線606に出力する。
すなわち、比較処理部603は、検索キー607とデータビット601の値が異なれば“0”、等しければ“1”を出力し、マスク処理部604は、マスクビット602の値が“1”のときは比較処理部603の出力をそのまま検索結果605として出力し、マスクビット602の値が“0”のときは比較処理部603の出力に関わらず“1”を検索結果605として強制的に出力する。同図(2)は、このような検索結果を真理値表の形で示したものである。
なお、ここで動作が相等しければ論理反転させても良い。
データビット601及びマスクビット602を保持する機能としては、例えばフリップフロップ、キャパシタ、ヒステリシスを有する高誘電膜あるいは磁性膜を用いられる。
上記の図7及び図8に示したCAMデバイス200がターナリCAMデバイスである場合、各エントリ#1〜#4は、エントリのビット数に応じたターナリCAMセル600によって構成されることになる。この場合、各一致線321〜324は一致線606に対応している。
上記の図8においては、特定の項目、すなわち、IPアドレスのみを検索する場合を例にとって説明したため、各エントリ#1〜#4にはIPアドレスのみが収容されているように示したが、実際のCAMデバイス200内のデータベース203には、図10(1)に示す如く、エントリ#1〜#4には例えばフィールドF1〜F5のように複数フィールドに分割されたデータが格納されている。
すなわち、エントリ#1〜#4のフィールドF1には、それぞれ送信元IPアドレスとして“SA1”〜“SA4”が格納されており、同様に、フィールドF2には宛先IPアドレスとして“DA1”〜“DA4”が格納されている。さらに、フィールドF3には、それぞれ送信元ポート番号として“SP1”〜“SP4”が格納されており、フィールドF4には宛先ポート番号として“DP1”〜“DP4”が格納されている。
また、フィールドF5には、その他の情報として、例えば、エントリの有効/無効を示すタグのように、外部から通知される管理用の情報が格納されている。
なお、フィールドF1及びF2は各エントリ#1〜#4について上下2段で示されているが、これは、フィールドF1及びF2には通常サブネットマスクが適用されるため、それぞれのプリフィクス部分431,432及びマスク部分441,442を下段に示したものである。フィールドF3〜F5については、通常はサブネットマスクを適用しないため1段で示されている。
同図(2)は、同図(1)のフィールドF1〜F5の内、特定のフィールドのみを検索対象に指定したい場合に用いられるグローバルマスクパターン450を示したものである。
このようなグローバルマスクパターン450を用いれば、同図の例では、マスク部分451及び453が検索対象外となり、検索対象部分452に対応して、宛先IPアドレスを示すフィールドF2のみが検索対象になる。
従来より提案されているCAMデバイスとしては、連想メモリアレイを複数のフィールドから構成し、検索対象となるフィールドを指示することにより、指示されたフィールドには検索対象データを、その他のフィールドにマスク信号を与えて検索を行なうものがある(例えば、特許文献1参照)。
また、IPアドレスとプリフィクス長との組み合せにより表現された経路情報とともに別途当該プリフィクス長の情報を格納したもの(例えば、特許文献2参照)や、データ選択の優先順序を外部から任意に設定可能としたものもある(例えば、特許文献3参照)。
さらには、低消費電力によるデータ検索を可能とし、より集積度の高いメモリ幅拡張機能を有するもの(例えば、特許文献4参照)や、可変幅のデータを検索するための可変幅のCAMデバイスもある(例えば、特許文献5参照)。
特開昭58−200494号公報(特許請求の範囲、図1) 特開2002−305539号公報(要約、図1) 特開平11−102589号公報(要約、図1) 特開平5−189978号公報(要約、図1) 特開2001−160292号公報(要約、図2A)
例えば、図6に示したルータ101はネットワークの中継点となっており、このルータ101にはネットワーク回線102〜105が接続されている。また、ネットワーク回線103〜105の先にはサーバ130、140、及び150がそれぞれ接続されている。
図示の如く、ルータ101がネットワーク回線102を介して受信するパケット110のヘッダには、レイヤー3に属する宛先IPアドレス111及び送信元IPアドレス112や、レイヤー4に属する宛先ポート番号113及び送信元ポート番号114の各情報が含まれている。
宛先IPアドレス111からはパケット110を送信すべき宛先のネットワークを識別することが出来る。また、送信元IPアドレス112からはパケット110の送信者を識別することが出来るため、識別された送信者との間で締結されているネットワークの利用に関する契約の内容(回線容量等)を把握することも出来る。さらに、宛先ポート番号113及び送信元ポート番号114からはアプリケーションの種類などを判別することが出来る。
従って、ルータ101はこれらの情報に基づき、パケット110を適切なネットワーク回線103,104,105に出力するように、レイヤー3又はレイヤー4のルーティング処理を行なう。
例えば、ネットワーク回線103及び104の回線容量(帯域)について、それぞれの実線の太さで表される如く、ネットワーク回線103が大容量であり、ネットワーク回線104が小容量であるような場合、パケット110の送信者との回線容量に関する契約内容に応じてルーティング処理を行うことが可能となる。
また、アプリケーション毎にサーバ130、140、及び150をそれぞれ対応させておくことにより、レイヤー3のルーティング処理で負荷分散を行うこともできる。
ルータ101においてルーティング処理を適切に行えば、柔軟なネットワークが構築可能となる。
一般に、上記のルーティング処理はソフトウェア及びハードウェアによる宛先のデータ検索処理によって実現されている。特に、高速・大容量のルーティング処理を行なうためのデータ検索装置としては、従来より連想メモリ(Content Addressable/Associative Memory:CAM)デバイスが主として用いられている。
なお、CAMデバイスは、上記のルータ101の様にレイヤー3又はレイヤー4でのルーティング処理を行うルータだけでなく、レイヤー2スイッチ(図示せず)の様にMACアドレスによるスイッチングにも用いられている。
CAMデバイスを用いたルーティング処理の一例として、IPアドレスの検索処理について図7を参照して以下に説明する。
図7は、例えば図6のルータ101内において、ルーティング処理に関連した部分の構成例を示したものである。
CAMデバイス200は、検索対象のエントリ群を格納したデータベース203を有するものであり、ネットワークプロセッサ210は、ネットワークの処理に特化したプロセッサである。また、コンテキストRAM(Context−RAM又はAssociated−RAM)220は、CAMデバイス200の各エントリに対応した処理内容等を格納したメモリであり、通常SRAM、DRAMなどのメモリデバイスで構成されるものである。
CAMデバイス200、ネットワークプロセッサ210、及びコンテキストRAM220は、入力インタフェース211、出力バス201及び221でそれぞれ相互に接続されている。
動作において、ネットワークプロセッサ210は受信したパケット110からヘッダ情報を抽出して、検索したいIPアドレスまたはポート番号等を検索キー212として入力インタフェース211を介してCAMデバイス200に入力する。CAMデバイス200内部のデータベース203には、予めネットワーク管理者によって入力されたIPアドレス情報がエントリ群として収容されており、CAMデバイス200は、検索キー212とデータベース203の各エントリとを比較する。
ここで、CAMデバイス200による比較動作は各エントリの各ビットに対して同時に行われる。検索した結果、適切なエントリが有った(ヒットした)場合、その中で“最も”適切なエントリの物理アドレス(同図の例ではアドレス[2])をヒットアドレス202として出力バス201を介してコンテキストRAM220に与える。
コンテキストRAM220は、例えば、同図のヒットアドレス202として得られたアドレス[2]に対応して、対処すべき処理内容や出力ポート(配布先)のデータを出力バス221を介してネットワークプロセッサ210に検索結果222として与える。
ネットワークプロセッサ210は、検索結果222に応じてパケット110を処理したり、再度検索を行なったりする。
上記のCAMデバイス200内における従来のIPアドレス検索処理について、図8を参照してより詳細に説明する。
図8は、図7のCAMデバイス200においてIPアドレス検索処理に関連した部分をより詳細に示したものである。従って、図7のデータベース203に予めネットワーク管理者によって入力されたエントリ群の内、説明の便宜上、上位4つのエントリ#1〜#4のみが示されている。また、各エントリ#1〜#4毎に一致線321〜324が設けられており、それぞれプライオリティ・エンコーダ330に接続されている。
各エントリ#1〜#4は、IPアドレスとサブネットマスクが一対となってデータベース203に収容されたものである。同図の各エントリ#1〜#4の上段にはそれぞれ、IPアドレスとして“A1”、“A2”、“A3″、及び“A4”が示されており、下段にはそれぞれのサブネットマスクが連続したビット“1”及び“0”で示されている。この場合、連続したビット“1”はプリフィクス部分を示しており、連続したビット“0”はマスク部分を示している。
エントリ#1〜#4は、図示の如くサブネットマスクのプリフィクス部分(ビット“1”)の長さ、すなわちプリフィクス長(prefix length)が長い順に並べられている。また、各エントリ#1〜#4の右側に示された[1]〜[4]は、それぞれの物理アドレスを示している。
IPアドレスは右側の下位ビットほどネットワークの末端を現し、地図上の住所と同様に、より詳細な内容である下位ビットまで一致している検索結果ほど適切であるということができる。すなわち、IPアドレスの検索結果としては、プリフィクス長が最も長いアドレスが最も適切であり、このような検索結果はロンゲスト・プリフィクス・マッチ(Longest Prefix Match)と呼ばれるものである。エントリをプリフィクス長に従って並べて収容するのはこのためである。
運用中のCAMデバイス200の動作においては、ネットワークプロセッサ210などから検索キー212として例えばIPアドレス“A−KEY”が入力される。CAMデバイス200は全エントリに対して同時に各ビットについて比較を行なう。但し、サブネットマスクが“0”のビットに関しては比較を行なわない(ドントケア条件)。
比較したビットが1つでも「不一致」である場合、一致線321〜324に不一致をあらわす信号が出力されて、不一致エントリとして識別される。同図の例では、不一致信号331及び333がそれぞれ一致線321及び323に出力されているため、エントリ#1及び#3が不一致エントリとして識別されている。
比較したビットが全て「一致」している場合は、エントリ#2及び#4の様に一致エントリとして識別される。
このように複数ヒットした場合は、従来よりプライオリティエンコーダ330は、プリフィクス長の長い方、すなわちエントリ#2の物理アドレス[2]をヒットアドレス202として出力する。
このように、検索キー212のデータビットと、エントリ#1〜#4のデータビットとを比較する場合、マスクビットによるマスク処理を行うCAMデバイスは3値のデータを扱うことからターナリCAMデバイスと呼ばれ、一方、検索キー212のデータビットとエントリ#1〜#4のデータビットとの比較のみを行ない、マスク処理を行なわないCAMデバイスは2値のデータを扱うことからバイナリCAMデバイスと呼ばれている。
図9は、ターナリCAMデバイスにおける1ビット分に相当するターナリCAMセル600の機能及び検索結果の真理値表610を示したものである。
同図(1)において、ターナリCAMセル600は、データビット601及びマスクビット602を保持しており、さらに、入力された検索キー607とデータビット601とを比較する比較処理部603と、この比較処理部603が出力する比較結果に対しマスクビット602に応じてマスク処理を施すマスク処理部604を有している。
データベースの1つのエントリは共通の一致線606に接続された複数のターナリCAMセル600によって構成されている。
動作において、ターナリCAMセル600は、比較処理部603によって検索キー607とデータビット601とが比較された結果に対して、マスク処理部604によってマスク処理を施した結果を、最終的な検索結果605として一致線606に出力する。
すなわち、比較処理部603は、検索キー607とデータビット601の値が異なれば“0”、等しければ“1”を出力し、マスク処理部604は、マスクビット602の値が“1”のときは比較処理部603の出力をそのまま検索結果605として出力し、マスクビット602の値が“0”のときは比較処理部603の出力に関わらず“1”を検索結果605として強制的に出力する。同図(2)は、このような検索結果を真理値表の形で示したものである。
なお、ここで動作が相等しければ論理反転させても良い。
データビット601及びマスクビット602を保持する機能としては、例えばフリップフロップ、キャパシタ、ヒステリシスを有する高誘電膜あるいは磁性膜を用いられる。
上記の図7及び図8に示したCAMデバイス200がターナリCAMデバイスである場合、各エントリ#1〜#4は、エントリのビット数に応じたターナリCAMセル600によって構成されることになる。この場合、各一致線321〜324は一致線606に対応している。
上記の図8においては、特定の項目、すなわち、IPアドレスのみを検索する場合を例にとって説明したため、各エントリ#1〜#4にはIPアドレスのみが収容されているように示したが、実際のCAMデバイス200内のデータベース203には、図10(1)に示す如く、エントリ#1〜#4には例えばフィールドF1〜F5のように複数フィールドに分割されたデータが格納されている。
すなわち、エントリ#1〜#4のフィールドF1には、それぞれ送信元IPアドレスとして“SA1”〜“SA4”が格納されており、同様に、フィールドF2には宛先IPアドレスとして“DA1”〜“DA4”が格納されている。さらに、フィールドF3には、それぞれ送信元ポート番号として“SP1”〜“SP4”が格納されており、フィールドF4には宛先ポート番号として“DP1”〜“DP4”が格納されている。
また、フィールドF5には、その他の情報として、例えば、エントリの有効/無効を示すタグのように、外部から通知される管理用の情報が格納されている。
なお、フィールドF1及びF2は各エントリ#1〜#4について上下2段で示されているが、これは、フィールドF1及びF2には通常サブネットマスクが適用されるため、それぞれのプリフィクス部分431,432及びマスク部分441,442を下段に示したものである。フィールドF3〜F5については、通常はサブネットマスクを適用しないため1段で示されている。
同図(2)は、同図(1)のフィールドF1〜F5の内、特定のフィールドのみを検索対象に指定したい場合に用いられるグローバルマスクパターン450を示したものである。
このようなグローバルマスクパターン450を用いれば、同図の例では、マスク部分451及び453が検索対象外となり、検索対象部分452に対応して、宛先IPアドレスを示すフィールドF2のみが検索対象になる。
従来より提案されているCAMデバイスとしては、連想メモリアレイを複数のフィールドから構成し、検索対象となるフィールドを指示することにより、指示されたフィールドには検索対象データを、その他のフィールドにマスク信号を与えて検索を行なうものがある(例えば、特許文献1参照)。
また、IPアドレスとプリフィクス長との組み合せにより表現された経路情報とともに別途当該プリフィクス長の情報を格納したもの(例えば、特許文献2参照)や、データ選択の優先順序を外部から任意に設定可能としたものもある(例えば、特許文献3参照)。
さらには、低消費電力によるデータ検索を可能とし、より集積度の高いメモリ幅拡張機能を有するもの(例えば、特許文献4参照)や、可変幅のデータを検索するための可変幅のCAMデバイスもある(例えば、特許文献5参照)。
CAMデバイスを用いた検索を数十ビットの幅でしか行えない状況では、例えば、フロー識別などの処理を行なうために複数回CAM検索を繰り返す必要があったが、近年では、多くのCAMデバイスが数百ビットを超える多ビット幅検索に対応しており、例えば、IPv4によるフロー識別を例にとると、宛先IPアドレス(32ビット)、送信元IPアドレス(32ビット)、宛先ポート番号(16ビット)、及び送信元ポート番号(16ビット)を1つのエントリとして合計96ビット以上を一度に検索することが可能になっている。
しかしながら、従来の技術においては、上述の如く、複数のエントリがヒットした場合にプライオリティエンコーダ330が出力する最終検索結果は、エントリの格納順によって決まってしまう。
別の最終検索結果を得るためには、エントリの格納順を変更する必要があるが、これには、データベース203の書き換えが必要になる。このようなデータベース203のメンテナンスを行なうためには、ルータ101のルーティング処理を停止する必要があり、ネットワークのダウン時間を増大させることになる。
従って、ネットワークの常時運用を実現するためには、エントリの格納順は容易に変更することが出来ない。
一方、近年における仮想閉域網(Virtual Private Network:VPN)の利用の拡大に伴い、顧客毎の柔軟な対応がネットワークの運用において重要になって来ている。例えば、ネットワークの障害時において、特定の顧客の回線を優先させる必要がある場合、当初の格納順が低位のエントリを優先させることが望まれる。
また、運用中のサーバ等の負荷が集中しないように、適切な負荷分散を行なう場合にも、当初の格納順が低位のエントリを優先させることが望まれる。
従って、本発明は、データベースの中から検索キーに一致するデータを検索するデータ検索方法及び装置に関し、エントリの格納順に拘束されることなく、所望の優先度に基づく検索結果を得ることを目的とする。
しかしながら、従来の技術においては、上述の如く、複数のエントリがヒットした場合にプライオリティエンコーダ330が出力する最終検索結果は、エントリの格納順によって決まってしまう。
別の最終検索結果を得るためには、エントリの格納順を変更する必要があるが、これには、データベース203の書き換えが必要になる。このようなデータベース203のメンテナンスを行なうためには、ルータ101のルーティング処理を停止する必要があり、ネットワークのダウン時間を増大させることになる。
従って、ネットワークの常時運用を実現するためには、エントリの格納順は容易に変更することが出来ない。
一方、近年における仮想閉域網(Virtual Private Network:VPN)の利用の拡大に伴い、顧客毎の柔軟な対応がネットワークの運用において重要になって来ている。例えば、ネットワークの障害時において、特定の顧客の回線を優先させる必要がある場合、当初の格納順が低位のエントリを優先させることが望まれる。
また、運用中のサーバ等の負荷が集中しないように、適切な負荷分散を行なう場合にも、当初の格納順が低位のエントリを優先させることが望まれる。
従って、本発明は、データベースの中から検索キーに一致するデータを検索するデータ検索方法及び装置に関し、エントリの格納順に拘束されることなく、所望の優先度に基づく検索結果を得ることを目的とする。
上記の目的を達成するため、本発明に係るデータ検索方法は、データベースにおいて複数フィールドに分割して格納されたエントリの中から、全ての検索対象フィールドにおいて全ての非マスクビットと、これらに対応する検索キーのデータビットとが一致するエントリを中間検索結果とする第1ステップと、該中間検索結果の各検索対象フィールドのプリフィクス長の中から該検索対象フィールド毎の最長プリフィクス長を求める第2ステップと、該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とする第3ステップと、を有することを特徴としている。
本発明の原理を図1を用いて以下に説明する。同図は、データベースに格納されたエントリ#1〜#5の各々について、例えば複数のフィールドF1及びF2を検索対象とする検索キー(図示せず)が入力された際の一致/不一致の状態を模式的に示したものである。
各エントリ#1〜#5の点線又は実線で囲まれた各フィールドF1及びF2内の白地部分において、例えば“/24”のように示された数値は、プリフィクス長(サブネットマスクされていないプリフィクス部分の長さ)を示すビット数である。また、白地部分に隣接した網掛部分は、マスク部分(サブネットマスクされた部分)を示したものである。
すなわち、同図のエントリ#1のフィールドF1のプリフィクス長は24ビットであり、フィールドF2のプリフィクス長は22ビットであることを示している。同様に、エントリ#2〜#5のフィールドF1のプリフィクス長はそれぞれ、24ビット、20ビット、17ビット、12ビットであり、フィールドF2のプリフィクス長はそれぞれ、17ビット、17ビット、22ビット、16ビットである。
また、点線で示したエントリ#1,#2,及び#5は、プリフィクス部分の少なくとも1ビットが対応する検索キーのデータビットに一致しないために、「不一致」であると判定されている。
他方、実線で示したエントリ503及び504は、プリフィクス部分の全ビット(非マスクビット)が対応する検索キーのビットデータに「一致」しており、中間検索結果になっている。
ここで、従来の連想メモリの検索方法では、エントリ#1〜#5の格納順を優先順位として検索結果を出力するため、上記の如く抽出されたエントリ#3及び#4の内、より上位に格納されたエントリ#3が検索結果として出力されることになる。
このような従来例とは異なり、本発明においては、上記の如く抽出されたエントリ#3及び#4についてプリフィクス長レジスタに保持された各検索対象フィールドF1及びF2のプリフィクス長から、フィールドF1及びF2における最長プリフィクス長を求める。
すなわち、同図において、フィールドF1における最長プリフィクス長は、エントリ#3で求めた20ビットであり、フィールドF2の最長プリフィクス長は、エントリ#4で求めた22ビットである。本発明ではさらに、優先度が最も高い検索対象フィールドにおいて最長プリフィクス長を有するエントリを最終検索結果とする。
従って、優先度が最も高い検索対象フィールドがフィールドF2であれば、上記の如く抽出されたエントリ#3及び#4の内、より下位に格納されたエントリ#4を最終検索結果とすることが可能になる。
このように、優先度を適切に設定することにより、従来のようにエントリ#1〜#5の格納順に拘束されることなく、所望の優先度に基づく検索結果が得られるようになる。
上記の優先度が最も高い検索対象フィールドは、該第3ステップにおいて求められた該最長プリフィクス長同士の内、最長の検索対象フィールドであってもよい。
すなわち、上記の優先度の指標として最長プリフィクス長を用いれば、該優先度が最も高い検索対象フィールドは、該第3ステップにおいて求められた該最長プリフィクス長同士の内、最長になった検索対象フィールドである。
図1の場合に、フィールドF1の最長プリフィクス長である20ビットよりも、フィールドF2の最長プリフィクス長である22ビットの方が長いため、優先度が最も高い検索対象フィールドはフィールドF2となり、このフィールドF2において最長プリフィクス長(22ビット)を有するエントリ#4が検索結果として出力される。
このように、エントリの格納順に拘らず、より適切な検索結果を得ることが可能になる。
また、検索開始前に各フィールドに該優先度を設定してもよい。
すなわち、上記の優先度を検索開始前に各フィールドに設定する場合、例えば図1におけるフィールドF2の優先度をフィールドF1よりも高く設定しておけば、優先度が最も高い検索対象フィールドはフィールドF2となり、このフィールドF2において最長プリフィクス長(22ビット)を有するエントリ#4が検索結果として出力される。
このように、エントリの格納順に拘らず、検索開始前に各フィールドに設定した優先度に基づいた検索結果を得ることが可能になる。
この場合の優先度は、検索を行う度に変更可能であればよい。
すなわち、上記の優先度を固定的に設定するのではなく、検索を行う度に変更できるようにすれば、より柔軟に所望の優先度に基づいた検索結果を得ることが可能になる。
また、上記の優先度として所定の値が設定されたフィールドを検索対象外にしてもよい。
すなわち、フィールドを検索対象外とする所定の値を定めておくことにより、該優先度として所定の値が設定されたフィールドを検索対象外にすることができる。これにより、最終検索結果を判定するためだけでなく、フィールドを検索対象とするか否かの判断材料としても上記の優先度を流用することが出来る。
また、上記の目的を達成するため、本発明に係るデータ検索方法を実現する本発明に係るデータ検索装置は、エントリを複数フィールドに分割して格納したデータベースと、各エントリのフィールド毎のプリフィクス長を保持するプリフィクス長保持部と、全ての検索対象フィールドにおいてエントリの全ての非マスクビットと対応する検索キーのビットデータとが一致するエントリを中間検索結果とし、該プリフィクス長保持部に保持された該中間検索結果の各検索対象フィールドのプリフィクス長から検索対象フィールド毎の最長プリフィクス長を求め、該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とする演算部と、を備えたことを特徴としている。
上記の優先度が最も高い検索対象フィールドは、該演算部によって求められた該最長プリフィクス長同士の内、最長の検索対象フィールドであってもよい。
また、検索開始前に各フィールドに該優先度を設定してもよく、この場合の優先度は、検索を行う度に変更可能であればよい。
さらに、上記の優先度として所定の値が設定されたフィールドを検索対象外にしてもよい。
本発明の原理を図1を用いて以下に説明する。同図は、データベースに格納されたエントリ#1〜#5の各々について、例えば複数のフィールドF1及びF2を検索対象とする検索キー(図示せず)が入力された際の一致/不一致の状態を模式的に示したものである。
各エントリ#1〜#5の点線又は実線で囲まれた各フィールドF1及びF2内の白地部分において、例えば“/24”のように示された数値は、プリフィクス長(サブネットマスクされていないプリフィクス部分の長さ)を示すビット数である。また、白地部分に隣接した網掛部分は、マスク部分(サブネットマスクされた部分)を示したものである。
すなわち、同図のエントリ#1のフィールドF1のプリフィクス長は24ビットであり、フィールドF2のプリフィクス長は22ビットであることを示している。同様に、エントリ#2〜#5のフィールドF1のプリフィクス長はそれぞれ、24ビット、20ビット、17ビット、12ビットであり、フィールドF2のプリフィクス長はそれぞれ、17ビット、17ビット、22ビット、16ビットである。
また、点線で示したエントリ#1,#2,及び#5は、プリフィクス部分の少なくとも1ビットが対応する検索キーのデータビットに一致しないために、「不一致」であると判定されている。
他方、実線で示したエントリ503及び504は、プリフィクス部分の全ビット(非マスクビット)が対応する検索キーのビットデータに「一致」しており、中間検索結果になっている。
ここで、従来の連想メモリの検索方法では、エントリ#1〜#5の格納順を優先順位として検索結果を出力するため、上記の如く抽出されたエントリ#3及び#4の内、より上位に格納されたエントリ#3が検索結果として出力されることになる。
このような従来例とは異なり、本発明においては、上記の如く抽出されたエントリ#3及び#4についてプリフィクス長レジスタに保持された各検索対象フィールドF1及びF2のプリフィクス長から、フィールドF1及びF2における最長プリフィクス長を求める。
すなわち、同図において、フィールドF1における最長プリフィクス長は、エントリ#3で求めた20ビットであり、フィールドF2の最長プリフィクス長は、エントリ#4で求めた22ビットである。本発明ではさらに、優先度が最も高い検索対象フィールドにおいて最長プリフィクス長を有するエントリを最終検索結果とする。
従って、優先度が最も高い検索対象フィールドがフィールドF2であれば、上記の如く抽出されたエントリ#3及び#4の内、より下位に格納されたエントリ#4を最終検索結果とすることが可能になる。
このように、優先度を適切に設定することにより、従来のようにエントリ#1〜#5の格納順に拘束されることなく、所望の優先度に基づく検索結果が得られるようになる。
上記の優先度が最も高い検索対象フィールドは、該第3ステップにおいて求められた該最長プリフィクス長同士の内、最長の検索対象フィールドであってもよい。
すなわち、上記の優先度の指標として最長プリフィクス長を用いれば、該優先度が最も高い検索対象フィールドは、該第3ステップにおいて求められた該最長プリフィクス長同士の内、最長になった検索対象フィールドである。
図1の場合に、フィールドF1の最長プリフィクス長である20ビットよりも、フィールドF2の最長プリフィクス長である22ビットの方が長いため、優先度が最も高い検索対象フィールドはフィールドF2となり、このフィールドF2において最長プリフィクス長(22ビット)を有するエントリ#4が検索結果として出力される。
このように、エントリの格納順に拘らず、より適切な検索結果を得ることが可能になる。
また、検索開始前に各フィールドに該優先度を設定してもよい。
すなわち、上記の優先度を検索開始前に各フィールドに設定する場合、例えば図1におけるフィールドF2の優先度をフィールドF1よりも高く設定しておけば、優先度が最も高い検索対象フィールドはフィールドF2となり、このフィールドF2において最長プリフィクス長(22ビット)を有するエントリ#4が検索結果として出力される。
このように、エントリの格納順に拘らず、検索開始前に各フィールドに設定した優先度に基づいた検索結果を得ることが可能になる。
この場合の優先度は、検索を行う度に変更可能であればよい。
すなわち、上記の優先度を固定的に設定するのではなく、検索を行う度に変更できるようにすれば、より柔軟に所望の優先度に基づいた検索結果を得ることが可能になる。
また、上記の優先度として所定の値が設定されたフィールドを検索対象外にしてもよい。
すなわち、フィールドを検索対象外とする所定の値を定めておくことにより、該優先度として所定の値が設定されたフィールドを検索対象外にすることができる。これにより、最終検索結果を判定するためだけでなく、フィールドを検索対象とするか否かの判断材料としても上記の優先度を流用することが出来る。
また、上記の目的を達成するため、本発明に係るデータ検索方法を実現する本発明に係るデータ検索装置は、エントリを複数フィールドに分割して格納したデータベースと、各エントリのフィールド毎のプリフィクス長を保持するプリフィクス長保持部と、全ての検索対象フィールドにおいてエントリの全ての非マスクビットと対応する検索キーのビットデータとが一致するエントリを中間検索結果とし、該プリフィクス長保持部に保持された該中間検索結果の各検索対象フィールドのプリフィクス長から検索対象フィールド毎の最長プリフィクス長を求め、該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とする演算部と、を備えたことを特徴としている。
上記の優先度が最も高い検索対象フィールドは、該演算部によって求められた該最長プリフィクス長同士の内、最長の検索対象フィールドであってもよい。
また、検索開始前に各フィールドに該優先度を設定してもよく、この場合の優先度は、検索を行う度に変更可能であればよい。
さらに、上記の優先度として所定の値が設定されたフィールドを検索対象外にしてもよい。
図1は、本発明に係るデータ検索方法及び装置の原理を示したブロック図である。
図2は、本発明に係るデータ検索方法及び装置の実施例(1)及び(2)に共通したエントリの状態例を示したブロック図である。
図3は、本発明に係るデータ検索方法及び装置の実施例(1)を示したブロック図である。
図4は、本発明に係るデータ検索方法及び装置の実施例(2)を示したブロック図である。
図5は、本発明に係るデータ検索方法及び装置の実施例(2)の変形例を示したブロック図である。
図6は、一般的なルーティング処理の概要を説明するためのブロック図である。
図7は、図6におけるルータ101内のルーティング処理に関連した部分の構成例を示したブロック図である。
図8は、図7におけるCAMデバイス200の詳細な構成を示したブロック図である。
図9は、一般的なCAMデバイスに用いられるターナリCAMセルの構成例及び検索結果の真理値表を示した図である。
図10は、一般的なCAMデバイス内部のエントリ構成例及びグローバルマスクパターンを示したブロック図である。
図2は、本発明に係るデータ検索方法及び装置の実施例(1)及び(2)に共通したエントリの状態例を示したブロック図である。
図3は、本発明に係るデータ検索方法及び装置の実施例(1)を示したブロック図である。
図4は、本発明に係るデータ検索方法及び装置の実施例(2)を示したブロック図である。
図5は、本発明に係るデータ検索方法及び装置の実施例(2)の変形例を示したブロック図である。
図6は、一般的なルーティング処理の概要を説明するためのブロック図である。
図7は、図6におけるルータ101内のルーティング処理に関連した部分の構成例を示したブロック図である。
図8は、図7におけるCAMデバイス200の詳細な構成を示したブロック図である。
図9は、一般的なCAMデバイスに用いられるターナリCAMセルの構成例及び検索結果の真理値表を示した図である。
図10は、一般的なCAMデバイス内部のエントリ構成例及びグローバルマスクパターンを示したブロック図である。
本発明の実施例として、フィールド毎の最長プリフィクス長同士を比較する場合の実施例(1)と、予めフィールド毎の優先度を設定しておく場合の実施例(2)の2種類について以下に説明する。
まず、上記の実施例(1)及び(2)に共通したエントリ#1〜#5の状態を図2に示す。同図は、図1と同様に、データベースに格納されたエントリ#1〜#5の各々について、例えば複数のフィールドF1及びF2を検索対象とする検索キー(図示せず)が入力された際の一致/不一致の状態を模式的に示したものである。
図2には、図1に加え、一致線711〜715がそれぞれエントリ#1〜#5に対応して示されており、エントリ#1、#2、及び#5については、それぞれ一致線711、712、及び715に対して、下向きの矢印で不一致信号が出力されている(例えば、エントリ#5における不一致信号716)。
このように、不一致信号が出力されたエントリ#1、#2、及び#5は、「不一致」であるが、不一致信号が出力されていないエントリ#3及び#4は「一致」であるとして中間検索結果が得られる。
実施例(1)
図2の状態において、エントリ#1〜#5の格納順に拘らず、検索対象フィールド毎の最長プリフィクス長同士を比較することによって、最終検索結果を得る方法について図3を用いて説明する。
同図に示す如く、エントリ#1〜#5の各フィールドF1及びF2のプリフィクス長を保持するレジスタ801及び802を設けておく。すなわち、レジスタ801には、エントリ#1〜#5のフィールドF1のプリフィクス長である“24”、“24”、“20”、“17”、及び“12”がそれぞれ保持されている。同様に、レジスタ802には、エントリ#1〜#5のフィールドF2のプリフィクス長である“22”、“17”、“17”、“22”、及び“16”がそれぞれ保持されている。
なお、上記のレジスタ801及び802に対する各エントリ#1〜#5のプリフィクス長の値は検索運用時前に予め設定されておく必要があるが、ネットワーク管理者がエントリ作成時にプリフィクス長を入力しておけばよい。或いは、マスクビットに設定された値をCAMデバイス自身がカウントしてレジスタ801及び802に自動的に入力するようにしてもよい。
同図において、中間検索結果として得られているエントリ#3及び#4について、点線矢印811〜814に示す如く、それぞれレジスタ801及び802を参照し、フィールドF1については、エントリ#3のプリフィクス長“20”及びエントリ#4のプリフィクス長“17”が得られ、フィールドF2については、エントリ#3のプリフィクス長“17”及びエントリ#4のプリフィクス長“22”が得られる。
これらのプリフィクス長について、点線矢印815及び816に示す如く各フィールドF1及びF2において最大値821及び822を求めると、フィールドF1における最大値821は、エントリ#3のプリフィクス長“20”であり、フィールドF2における最大値822は、エントリ#4のプリフィクス長“22”である。
次に、点線矢印817に示す如く各最大値821及び822同士を比較し、最大の値を求めると、最大値822の“22”であることから、フィールドF2を優先し、CAM検索結果としては、フィールドF2のプリフィクス長が最長となるエントリ#4が最終検索結果になる。
実施例(2)
図2の状態において、エントリ#1〜#5の格納順に拘らず、予めフィールド毎の優先度を設定しておくことによって、最終検索結果を得る方法について図4を用いて説明する。
図4に示したレジスタ901及び902は、図3に示したレジスタ801及び802に相当するものであり、実施例(1)の場合と同様に、エントリ#1〜#5の各フィールドF1及びF2のプリフィクス長を保持している。
また、レジスタ901及び902における最大値921及び922も、図3に示したレジスタ801及び802における最大値821及び822と同様にして求めたものである。
図4は、図3と異なり、フィールドF1及びF2に対し、それぞれ優先度レジスタ931及び932が設けられている。なお、優先度レジスタ931及び932に設定する値は、検索を行なう度に変更可能にしておく。
図示の例では、最高の優先度を示す“1”がフィールドF1の優先度レジスタ931に設定され、フィールドF2の優先度レジスタ932には“2”が設定された状態が示されている。
この場合、点線矢印933に示すフィールド間の優先度の比較は、優先度レジスタ931及び932に基づいて行なわれ、より優先度が高いフィールドF1において、プリフィクス長が最長となるエントリ#3が最終検索結果になる。
図5は、実施例(2)の変形例として、優先度レジスタをグローバルマスクパターンとして使用する場合を示したものである。例えば、n<255として、各フィールドF1〜Fnに対する優先度レジスタR1〜Rnが設けられているものとする。
この場合、非選択を示す優先度である“255”が優先度レジスタRnに設定されたフィールドFnを検索対象から外すことが可能になる。なお、フィールド数がnとなっているため非選択を表す値はnより大きくとる必要がある。
以上説明したように、本発明に係るデータ検索方法及び装置によれば、データベースにおいて複数フィールドに分割して格納されたエントリの中から、全ての検索対象フィールドにおいて全ての非マスクビットと、これらに対応する検索キーのビットデータとが一致するエントリを中間検索結果とし、該中間検索結果の各検索対象フィールドのプリフィクス長の中から検索対象フィールド毎の最長プリフィクス長を求め、該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とするように構成したので、エントリの格納順に拘束されることなく、より適切な検索結果を得ることが可能になる。
まず、上記の実施例(1)及び(2)に共通したエントリ#1〜#5の状態を図2に示す。同図は、図1と同様に、データベースに格納されたエントリ#1〜#5の各々について、例えば複数のフィールドF1及びF2を検索対象とする検索キー(図示せず)が入力された際の一致/不一致の状態を模式的に示したものである。
図2には、図1に加え、一致線711〜715がそれぞれエントリ#1〜#5に対応して示されており、エントリ#1、#2、及び#5については、それぞれ一致線711、712、及び715に対して、下向きの矢印で不一致信号が出力されている(例えば、エントリ#5における不一致信号716)。
このように、不一致信号が出力されたエントリ#1、#2、及び#5は、「不一致」であるが、不一致信号が出力されていないエントリ#3及び#4は「一致」であるとして中間検索結果が得られる。
実施例(1)
図2の状態において、エントリ#1〜#5の格納順に拘らず、検索対象フィールド毎の最長プリフィクス長同士を比較することによって、最終検索結果を得る方法について図3を用いて説明する。
同図に示す如く、エントリ#1〜#5の各フィールドF1及びF2のプリフィクス長を保持するレジスタ801及び802を設けておく。すなわち、レジスタ801には、エントリ#1〜#5のフィールドF1のプリフィクス長である“24”、“24”、“20”、“17”、及び“12”がそれぞれ保持されている。同様に、レジスタ802には、エントリ#1〜#5のフィールドF2のプリフィクス長である“22”、“17”、“17”、“22”、及び“16”がそれぞれ保持されている。
なお、上記のレジスタ801及び802に対する各エントリ#1〜#5のプリフィクス長の値は検索運用時前に予め設定されておく必要があるが、ネットワーク管理者がエントリ作成時にプリフィクス長を入力しておけばよい。或いは、マスクビットに設定された値をCAMデバイス自身がカウントしてレジスタ801及び802に自動的に入力するようにしてもよい。
同図において、中間検索結果として得られているエントリ#3及び#4について、点線矢印811〜814に示す如く、それぞれレジスタ801及び802を参照し、フィールドF1については、エントリ#3のプリフィクス長“20”及びエントリ#4のプリフィクス長“17”が得られ、フィールドF2については、エントリ#3のプリフィクス長“17”及びエントリ#4のプリフィクス長“22”が得られる。
これらのプリフィクス長について、点線矢印815及び816に示す如く各フィールドF1及びF2において最大値821及び822を求めると、フィールドF1における最大値821は、エントリ#3のプリフィクス長“20”であり、フィールドF2における最大値822は、エントリ#4のプリフィクス長“22”である。
次に、点線矢印817に示す如く各最大値821及び822同士を比較し、最大の値を求めると、最大値822の“22”であることから、フィールドF2を優先し、CAM検索結果としては、フィールドF2のプリフィクス長が最長となるエントリ#4が最終検索結果になる。
実施例(2)
図2の状態において、エントリ#1〜#5の格納順に拘らず、予めフィールド毎の優先度を設定しておくことによって、最終検索結果を得る方法について図4を用いて説明する。
図4に示したレジスタ901及び902は、図3に示したレジスタ801及び802に相当するものであり、実施例(1)の場合と同様に、エントリ#1〜#5の各フィールドF1及びF2のプリフィクス長を保持している。
また、レジスタ901及び902における最大値921及び922も、図3に示したレジスタ801及び802における最大値821及び822と同様にして求めたものである。
図4は、図3と異なり、フィールドF1及びF2に対し、それぞれ優先度レジスタ931及び932が設けられている。なお、優先度レジスタ931及び932に設定する値は、検索を行なう度に変更可能にしておく。
図示の例では、最高の優先度を示す“1”がフィールドF1の優先度レジスタ931に設定され、フィールドF2の優先度レジスタ932には“2”が設定された状態が示されている。
この場合、点線矢印933に示すフィールド間の優先度の比較は、優先度レジスタ931及び932に基づいて行なわれ、より優先度が高いフィールドF1において、プリフィクス長が最長となるエントリ#3が最終検索結果になる。
図5は、実施例(2)の変形例として、優先度レジスタをグローバルマスクパターンとして使用する場合を示したものである。例えば、n<255として、各フィールドF1〜Fnに対する優先度レジスタR1〜Rnが設けられているものとする。
この場合、非選択を示す優先度である“255”が優先度レジスタRnに設定されたフィールドFnを検索対象から外すことが可能になる。なお、フィールド数がnとなっているため非選択を表す値はnより大きくとる必要がある。
以上説明したように、本発明に係るデータ検索方法及び装置によれば、データベースにおいて複数フィールドに分割して格納されたエントリの中から、全ての検索対象フィールドにおいて全ての非マスクビットと、これらに対応する検索キーのビットデータとが一致するエントリを中間検索結果とし、該中間検索結果の各検索対象フィールドのプリフィクス長の中から検索対象フィールド毎の最長プリフィクス長を求め、該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とするように構成したので、エントリの格納順に拘束されることなく、より適切な検索結果を得ることが可能になる。
Claims (10)
- データベースにおいて複数フィールドに分割して格納されたエントリの中から、全ての検索対象フィールドにおいて全ての非マスクビットと、これらに対応する検索キーのデータビットとが一致するエントリを中間検索結果とする第1ステップと、
該中間検索結果の各検索対象フィールドのプリフィクス長の中から該検索対象フィールド毎の最長プリフィクス長を求める第2ステップと、
該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とする第3ステップと、
を有することを特徴とするデータ検索方法。 - 請求の範囲1において、
該優先度が最も高い検索対象フィールドが、該第3ステップにおいて求められた該最長プリフィクス長同士の内、最長の検索対象フィールドであることを特徴とするデータ検索方法。 - 請求の範囲1において、
検索開始前に各フィールドに該優先度を設定することを特徴とするデータ検索方法。 - 請求の範囲3において、
該優先度は、検索を行う度に変更可能であることを特徴とするデータ検索方法。 - 請求の範囲3において、
該優先度として所定の値が設定されたフィールドを検索対象外にすることを特徴とするデータ検索方法。 - エントリを複数フィールドに分割して格納したデータベースと、
各エントリのフィールド毎のプリフィクス長を保持するプリフィクス長保持部と、
全ての検索対象フィールドにおいてエントリの全ての非マスクビットと対応する検索キーのビットデータとが一致するエントリを中間検索結果とし、該プリフィクス長保持部に保持された該中間検索結果の各検索対象フィールドのプリフィクス長から検索対象フィールド毎の最長プリフィクス長を求め、該中間検索結果の内、優先度が最も高い検索対象フィールドにおいて該最長プリフィクス長を有するエントリを検索結果とする演算部と、
を備えたことを特徴とするデータ検索装置。 - 請求の範囲6において、
該優先度が最も高い検索対象フィールドが、該演算部によって求められた該最長プリフィクス長同士の内、最長の検索対象フィールドであることを特徴とするデータ検索装置。 - 請求の範囲6において、
検索開始前に各フィールドに該優先度を設定したことを特徴とするデータ検索装置。 - 請求の範囲8において、
該優先度は、検索を行う度に変更可能であることを特徴とするデータ検索装置。 - 請求の範囲8において、
該優先度として所定の値が設定されたフィールドを検索対象外にすることを特徴とするデータ検索装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/009740 WO2005013566A1 (ja) | 2003-07-31 | 2003-07-31 | データ検索方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2005013566A1 true JPWO2005013566A1 (ja) | 2006-09-28 |
Family
ID=34113473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005507390A Pending JPWO2005013566A1 (ja) | 2003-07-31 | 2003-07-31 | データ検索方法及び装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20060064413A1 (ja) |
JP (1) | JPWO2005013566A1 (ja) |
WO (1) | WO2005013566A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0524126D0 (en) * | 2005-11-26 | 2006-01-04 | Cogniscience Ltd | Data transmission method |
JP4783751B2 (ja) * | 2007-03-20 | 2011-09-28 | 富士通株式会社 | 中継装置、中継方法および中継プログラム |
CN117033735B (zh) * | 2023-10-08 | 2024-01-16 | 之江实验室 | 基因数据检索方法、装置、计算机设备以及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3166700B2 (ja) * | 1998-03-12 | 2001-05-14 | 日本電気株式会社 | ルータ及び最長一致検索装置 |
JP3845512B2 (ja) * | 1998-03-30 | 2006-11-15 | 川崎マイクロエレクトロニクス株式会社 | 最長一致検索装置 |
JP3216630B2 (ja) * | 1999-06-09 | 2001-10-09 | 日本電気株式会社 | 通信制御装置 |
CN1505819A (zh) * | 2001-04-25 | 2004-06-16 | �ʺ�˿Ƽ�����˾ | 相联存储器及其检索方法、网络设备及网络系统 |
US7013367B2 (en) * | 2002-07-18 | 2006-03-14 | Intel Corporation | Caching associative memory using non-overlapping data |
-
2003
- 2003-07-31 WO PCT/JP2003/009740 patent/WO2005013566A1/ja active Application Filing
- 2003-07-31 JP JP2005507390A patent/JPWO2005013566A1/ja active Pending
-
2005
- 2005-11-03 US US11/266,551 patent/US20060064413A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20060064413A1 (en) | 2006-03-23 |
WO2005013566A1 (ja) | 2005-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7237058B2 (en) | Input data selection for content addressable memory | |
US9627063B2 (en) | Ternary content addressable memory utilizing common masks and hash lookups | |
JP4742167B2 (ja) | Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 | |
US7234019B1 (en) | Method and apparatus for implementing a search engine using an SRAM | |
US5920886A (en) | Accelerated hierarchical address filtering and translation using binary and ternary CAMs | |
US7707217B2 (en) | Trie search engines and ternary CAM used as pre-classifier | |
US7313667B1 (en) | Methods and apparatus for mapping fields of entries into new values and combining these mapped values into mapped entries for use in lookup operations such as for packet processing | |
US20070192303A1 (en) | Method and Apparatus for Longest Prefix Matching in Processing a Forwarding Information Database | |
EP3276501B1 (en) | Traffic classification method and device, and storage medium | |
US20040233692A1 (en) | Magnitude comparator based content addressable memory for search and sorting | |
US7624226B1 (en) | Network search engine (NSE) and method for performing interval location using prefix matching | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
US10623316B2 (en) | Scaling of switching tables with high bandwidth | |
US7480300B2 (en) | Content addressable memory organized to share entries between different entities such as ports of a network unit | |
CN105760411B (zh) | 混合通配符匹配表 | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
US6570866B1 (en) | High-speed flexible longest match retrieval | |
US20140358886A1 (en) | Internal search engines architecture | |
US9485179B2 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件系统查找的方法 | |
JP2006246488A (ja) | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム | |
US20080281789A1 (en) | Method and apparatus for implementing a search engine using an SRAM | |
US20060064413A1 (en) | Data retrieval method and device | |
US7114026B1 (en) | CAM device having multiple index generators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080311 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080512 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080708 |