(57)【特許請求の範囲】
【請求項１】
入力された照合データが予め登録されている登録データ群中の登録データと一致するか否かを判定するデータ判定装置において、
前記登録データが格納される登録データ格納手段と、
前記登録データ格納手段における前記登録データが格納されていないアドレスを含むアドレス情報を記憶するアドレス情報記憶手段と、
前記登録データ格納手段に格納されている登録データと前記照合データとを比較し一致／不一致の判定結果を得る比較手段と、
前記登録データ格納手段に格納されている登録データを更新する際に、前記登録データ格納手段に登録すべき登録候補のデータの入力を受けて、その登録候補のデータと前記登録データ格納手段に格納されている登録データとの比較を前記比較手段によって行わせ、不一致の判定結果が得られた場合、前記アドレス記憶手段に記憶されているアドレス情報に基づいて、前記入力された登録候補のデータを登録データとして前記登録データ格納手段に書き込む手段と、
前記登録データ格納手段に格納されている登録データを更新する際に、前記登録データ格納手段から削除すべき削除候補のデータの入力を受けて、その削除候補のデータと前記登録データ格納手段に格納されている登録データとの比較を前記比較手段によって行わせ、一致の判定結果が得られた場合、前記アドレス記憶手段に記憶されているアドレス情報に基づいて、前記入力された削除候補のデータと一致する登録データを前記登録データ格納手段から削除する手段と
を備えることを特徴とするデータ判定装置。
【請求項２】
請求項１に記載されたデータ判定装置において、
前記照合データの一部の情報をアドレスとして該アドレスの値を一部の情報として含んでいる登録データが前記登録データ格納手段に格納されているか否かを示す情報を格納した登録データ有無情報格納手段と、
前記登録データ有無情報格納手段に格納されている情報に基づいて前記照合データが前記登録データ格納手段に格納されている登録データと一致していないことを判定する不一致判定手段と、
前記登録データ有無情報格納手段に格納されている情報を更新する際に、前記登録データ有無情報格納手段に格納されている情報を全て削除した後、前記登録データ格納手段に格納されている登録データを読み出し、この読み出した登録データの一部の情報をアドレスとして前記登録データ有無情報格納手段にアクセスし、このアクセスした登録データ有無情報格納手段のアドレスに、当該アドレスの値を一部の情報として含んでいる登録データが前記登録データ格納手段に格納されていることを示す情報を書き込む手段と
を備えることを特徴とするデータ判定装置。
【請求項３】
請求項１又は２に記載されたデータ判定装置の各手段での処理をコンピュータで実行させるためのデータ判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力された照合データが予め登録されている登録データ群中の登録データと一致するか否かを判定するデータ判定装置およびデータ判定プログラムに関するものである。
【背景技術】
【０００２】
ネットワークに接続された通信端末には、受信したパケットのフィルタリングを行うため、パケットフィルタ回路を搭載する端末がある。このパケットフィルタ回路は、受信したパケットに含まれるＩＰアドレスなどの照合データと、一致条件として事前に登録されている登録データ群中の登録データとを比較し、照合データと登録データとの一致／不一致を判定し、この判定結果に基づいてパケットの廃棄や透過等の処理を行う。ネットワークの大容量化に伴い、通信端末が送受信するパケット数が増加し、パケットフィルタ回路には、多量のパケットに対して判定を行うこと、すなわち高スループット化が求められている。
【０００３】
パケットフィルタ回路において、照合データと登録データとの一致／不一致を判定する方式の１つに線形探索方式（例えば、非特許文献１参照）がある。この線形探索方式は、照合データと登録データとを１つずつ照合し、照合データと登録データとが一致した場合は一致と判定し、照合データが何れの登録データとも一致しない場合は不一致と判定する。すなわち、線形探索方式は、照合データと全ての登録データとを照合した後で、不一致が判定される方式である。
【０００４】
〔従来例１〕
線形探索方式を実装したパケットフィルタ回路の代表的な構成を図２２に示す。このパケットフィルタ回路２００は、バッファ回路２０１と一致判定回路２０２とから成る。
【０００５】
バッファ回路２０１は、入力される判定要求信号とパケットをもとに、判定開始信号と照合データ（パケットの一部または全部からなるデータ）を、一致判定回路２０２に送る。一致判定回路２０２は、バッファ回路２０１からの照合データと一致条件として事前に登録されている登録データ群中の登録データとを比較して、一致の判定を行う。
【０００６】
一致判定回路２０２は、照合データと一致する登録データを検出した場合に、その時点でバッファ回路２０１に一致判定信号を出力する。全ての登録データとの照合を行っても、一致する登録データを検出できなかった場合には、バッファ回路２０１に不一致判定信号を出力する。
【０００７】
一致判定回路２０２からの一致判定信号／不一致判定信号はバッファ回路２０１に送られる。バッファ回路２０１は、一致判定信号が送られてくると、受信したパケットを透過し、不一致判定信号が送られてくると、受信したパケットを破棄する。
【０００８】
このような動作から分かるように、線形探索方式を実装したパケットフィルタ回路は、照合データと全ての登録データとを照合した後でなければ不一致と判定することができないため、一致判定に比べて不一致判定には時間を要する。通信端末におけるフィルタリング処理では、受信したパケットが不一致と判定される場合も多く、不一致判定に時間を要することがスループットを低下させる原因となっている。
【０００９】
パケットフィルタ回路において、照合データと登録データとの一致／不一致を判定する他の方式に、２分探索方式（例えば、非特許文献２参照）がある。この２分探索方式は、照合対象となる登録データを半分に絞り込んで行く方式である。この方式は、照合対象となる登録データを半分に絞り込んで行く方式であるため、照合対象となる登録データが線形探索方式に比べて減少し、一致を判定するまでの時間が短縮される。
【００１０】
しかしながら、この方式も、照合対象となる全ての登録データとの照合が完了した後でなければ不一致を判定することができず、不一致判定に時間を要することになる。他にも、ハッシュ関数を用いた方式（例えば、非特許文献３参照）などもあるが、何れの方式もすべて、照合対象となる全ての登録データとの照合を完了した後で、不一致が判定される方式であるため、不一致の判定に時間を要することになる。
【００１１】
そこで、例えば特許文献１や非特許文献４に、照合データと全ての登録データとの照合を完了する前に不一致を判定するようにしたパケットフィルタ回路が提案されている。このパケットフィルタ回路では、一致判定回路に加えて、不一致判定回路を用いる。
【００１２】
〔従来例２〕
図２３に非特許文献４に示されたパケットフィルタ回路を示す。このパケットフィルタ回路３００は、バッファ回路２０１と、一致判定回路２０２と、不一致判定回路２０３と、ＯＲゲート２０４とから成る。
【００１３】
バッファ回路２０１は、入力される判定要求信号とパケットをもとに、判定開始信号と照合データ（パケットの一部または全部からなるデータ）を、一致判定回路２０２および不一致判定回路２０３に送る。一致判定回路２０２は、バッファ回路２０１からの照合データと一致条件として事前に登録されている登録データ群中の登録データとを比較して、一致の判定を行う。一方、不一致判定回路２０３は、入力された照合データと予め登録されている登録データの有無情報（後述）とを比較して、不一致の判定を行う。
【００１４】
一致判定回路２０２は、照合データと一致する登録データを検出した場合に、その時点で一致判定信号を出力する。全ての登録データとの照合を行っても、一致する登録データを検出できなかった場合には、不一致判定信号を出力する。不一致判定回路２０３は、照合データと登録データの有無情報とを比較し、その照合データと一致する登録データがないと判定すると、不一致判定信号を出力する。一致判定回路２０２からの一致判定信号はバッファ回路２０１へ送られる。一致判定回路２０２からの不一致判定信号および不一致判定回路２０３からの不一致判定信号はＯＲゲート２０４を介してバッファ回路２０１へ送られる。
【００１５】
バッファ回路２０１は、一致判定信号が送られてくると、受信したパケットを透過し、不一致判定信号が送られてくると、受信したパケットを破棄する。そして、このパケットの処理後、バッファ回路２０１は、次のパケットの照合データと判定開始信号を出力し、一致判定回路２０２と不一致判定回路２０３は、そのパケットの判定処理に移行する。
【００１６】
このパケットフィルタ回路３００の動作を図２４を用いて説明する。図２４は、不一致と判定される「パケット１」と一致と判定される「パケット２」が連続して入力される場合のタイミングチャートを示している。
【００１７】
先ず、バッファ回路２０１が「パケット１」の照合データと判定開始信号を、一致判定回路２０２と不一致判定回路２０３に出力する。一致判定回路２０２と不一致判定回路２０３は、判定開始信号を受けて、「パケット１」の判定処理を同時に開始する。不一致判定回路２０３は、「パケット１」の照合データと一致する登録データがないと判定すると、その時点で不一致判定信号を出力する。この不一致判定信号は、ＯＲゲート２０４を介して、バッファ回路２０１へ与えられる。不一致判定回路２０３での一致する登録データがない旨の判定は短時間で行われる。
【００１８】
バッファ回路２０１は、不一致判定信号が送られてくると、一致判定回路２０２が判定途中であっても、受信した「パケット１」を廃棄する。「パケット１」の処理が終了すると、バッファ回路２０１は、「パケット２」の照合データと判定開始信号を出力する。これにより、一致判定回路２０２と不一致判定回路２０３で、「パケット２」の判定処理が同時に開始される。一致判定回路２０２は、「パケット２」の照合データと一致する登録データを検出すると、その時点で一致信号を出力する。この一致信号はバッファ回路２０１へ与えられる。バッファ回路２０１は、一致信号が送られてくると、受信した「パケット２」を透過させる。
【００１９】
以上の動作から分かるように、このパケットフィルタ回路３００では、不一致判定回路２０３が一致判定回路２０２よりも先に不一致を判定することで、判定処理時間が短縮され、実効スループットが向上する。
【００２０】
〔不一致判定回路〕
パケットフィルタ回路３００において、不一致判定回路２０３は、短時間で不一致を判定するために、メモリを用いて照合データと予め登録されている登録データの有無情報とを一度に比較して、不一致の判定を行う。
【００２１】
不一致判定回路２０３に用いられるメモリの構成を図２５に示す。このメモリＭは、登録データの値をアドレスとして「一致（登録データ有り）」の判定を記憶し、それ以外のアドレスには「不一致（登録データ無し）」の判定を記憶する。図２５では、登録データが「１」，「６」，「１０」，「１４」，「１８」という５つの値である場合が示されている。この場合、メモリＭのアドレスの「１」，「６」，「１０」，「１４」，「１８」には「一致」の判定を格納し、それ以外のアドレスには「不一致」の判定を格納する。
【００２２】
このようなメモリＭを用いることにより、照合時には、入力される照合データの値が読み出しアドレスとしてメモリＭにアクセスされ、メモリＭからは「一致」または「不一致」の判定が出力される。不一致判定回路２０３は、このメモリＭからの出力をもとに、不一致を判定する。
【００２３】
図２５に示したメモリＭは、照合データが取り得る値の最大値と等しい容量が必要になる。つまり、照合データと登録データのビット長がｎビットである場合、メモリＭは２n個の判定を記憶することが必要になる。そこで、メモリの容量を削減するために、前述した非特許文献４には、ｎビットの照合データと登録データをｍビットずつ、複数のメモリに分割して、並列に照合処理を行うことでメモリの容量を削減する手法が開示されている。
【００２４】
図２６はｎ＝１６、ｍ＝４の場合の例である。図２６では、各登録データの上位４ビットをメモリＭ１に割り当て、次の４ビットをメモリＭ２に、更に次の４ビットをメモリＭ３に、下位４ビットをメモリＭ４に割り当てている。例えば、１６ビットの「０ｘ１２３４」と「０ｘ４５６７」という２つの登録データを４つのメモリに分割して記憶する場合、４ビットずつに分割された各登録データを、図２５と同様にして、各メモリに記憶する。ここで、「０ｘ」は１６進数表示であることを意味する。
【００２５】
「０ｘ１２３４」という登録データの場合、メモリＭ１には上位４ビットの値である「０ｘ１」をアドレスとして「一致」の判定を記憶する。メモリＭ２には次の４ビットの値である「０ｘ２」のアドレスに、メモリＭ３には更に次の４ビットの値である「０ｘ３」のアドレスに、そしてメモリＭ４には下位４ビットの値である「０ｘ４」のアドレスに、「一致」の判定を記憶する。
【００２６】
「０ｘ４５６７」という登録データの場合も同様に、メモリＭ１には「０ｘ４」のアドレスに、メモリＭ２には「０ｘ５」のアドレスに、メモリＭ３には「０ｘ６」のアドレスに、メモリＭ４には「０ｘ７」のアドレスに、「一致」の判定を記憶する。これら以外の全てのアドレスには「不一致」の判定を記憶する。
【００２７】
このように、ｎビットの登録データをｍビットずつ、複数のメモリに分割して、「一致」／「不一致」の判定を記憶させることにより、メモリの容量を（ｎ／ｍ）２mに削減できる。
【００２８】
不一致判定回路２０３のメモリを分割した構成とした場合、不一致判定時には、複数のメモリで並列に独立して照合を行い、どれか一つのメモリから不一致が出力されると照合データは不一致と判定される。例えば、図２７に示すように、「０ｘ１２３５」という照合データが入力された場合、メモリＭ１、メモリＭ２、メモリＭ３からは「一致」の判定が、メモリＭ４からは「不一致」の判定が出力され、照合データは不一致と判定される。
【００２９】
しかし、照合データが不一致にもかかわらず不一致と判定できない場合がある。例えば、図２８に示すように、「０ｘ１２３７」という照合データが入力された場合、このデータは登録データではないので、不一致と判定されるべきであるが、全てのメモリＭ１〜Ｍ４（以下、このメモリを不一致テーブルと呼ぶ）は「一致」の判定を出力するため、一致と判定される。この場合、一致判定回路２０２が全ての登録データとの照合を行い、最終的に不一致と判定するため、誤った判定を行うことはない。
【００３０】
〔一致判定回路〕
一致判定回路２０２には、前述したように、照合データと登録データとを順次照合していく線形探索方式や順次半分に絞り込んでゆく２分探索方式、ハッシュ探索方式法などを実装して用いることができる。いずれの方式を用いるにせよ、一致判定回路２０２には、登録データを記憶させておくメモリ（以下、このメモリを条件テーブルと呼ぶ）が必要であり、この条件テーブルから登録データを効率よく読み出すことにより照合データの一致／不一致を判定する。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開２０１０−１６５１０２号公報
【非特許文献】
【００３２】
【非特許文献１】David E.Taylor "Survey and Taxonomy of Packet Classification Techniques" ACM Computing Surveys,Vo1.37,No.3,September 2005,pp.238-275.
【非特許文献２】弓場、星 "木構造を用いた見出し探索の技法"情報処理、Vol.21,No1,January 1980,pp.28-49.
【非特許文献３】Yeim-Kuan Chang and Wen-Hsin Cheng "A Small IP Forwarding Table Using Hashing "Proceeding of The l8th International Conference on AINA,2004.
【非特許文献４】三浦直樹他、「不一致判定回路を用いた高速パケットフィルタ回路」、電子情報通信学会技術報告VLD2008-143, pp. 101-106, 2009年３月。
【発明の概要】
【発明が解決しようとする課題】
【００３３】
しかしながら、上述した従来のパケットフィルタ回路２００（図２２）や３００（図２３）において、一致判定回路２０２における条件テーブルの作成には、予め各アドレスに対して書き込むべき登録データの一覧表を作成して、メモリに書き込むのが一般的である。通常、このデータ作成は、ソフトウェアで別途実行され、データが作成された後、メモリに書き込まれる。
【００３４】
特に、一致判定回路２０２に加えて不一致判定回路２０３を設けたパケットフィルタ回路３００では、不一致判定回路２０３における不一致テーブルの作成についても、一致判定回路２０２と同様にして、予め各アドレスに対して書き込むべきデータの一覧表を作成してメモリに書き込む必要があり、更には、登録データを変更した場合、改めて不一致テーブルへの「一致」／「不一致」の判定データや条件テーブルへの登録データを全て作成し直し、再度メモリに書き込む必要がある。
【００３５】
このように、従来のパケットフィルタ回路では、別途テーブルを作成する必要があり、テーブルを作成するためのソフトウェアや事前にテーブルを作成する手間が必要であるという問題点があった。
【００３６】
本発明は、このような課題を解決するためになされたもので、その目的とするところは、照合データと登録データとの一致／不一致の判定機能を利用することにより、一致／不一致を判定するためのテーブルを作成するためのソフトウェアや事前にテーブル作成する手間を不要とすることが可能なデータ判定装置およびデータ判定プログラムを提供することにある。
【課題を解決するための手段】
【００３７】
このような目的を達成するために、本願の請求項１に係る発明は、入力された照合データが予め登録されている登録データ群中の登録データと一致するか否かを判定するデータ判定装置において、登録データが格納される登録データ格納手段と、登録データ格納手段における登録データが格納されていないアドレスを含むアドレス情報を記憶するアドレス情報記憶手段と、登録データ格納手段に格納されている登録データと照合データとを比較し一致／不一致の判定結果を得る比較手段と、登録データ格納手段に格納されている登録データを更新する際に、登録データ格納手段に登録すべき登録候補のデータの入力を受けて、その登録候補のデータと登録データ格納手段に格納されている登録データとの比較を比較手段によって行わせ、不一致の判定結果が得られた場合、アドレス記憶手段に記憶されているアドレス情報に基づいて、入力された登録候補のデータを登録データとして登録データ格納手段に書き込む手段と、登録データ格納手段に格納されている登録データを更新する際に、登録データ格納手段から削除すべき削除候補のデータの入力を受けて、その削除候補のデータと登録データ格納手段に格納されている登録データとの比較を比較手段によって行わせ、一致の判定結果が得られた場合、アドレス記憶手段に記憶されているアドレス情報に基づいて、入力された削除候補のデータと一致する登録データを登録データ格納手段から削除する手段とを備えることを特徴とする。
【００３８】
この発明によれば、登録データ格納手段（条件テーブル）に格納されている登録データを更新する際に、登録データ格納手段に登録すべき登録候補のデータが入力されると、その登録候補のデータと登録データ格納手段に格納されている登録データとが比較手段（比較器）によって比較され、不一致の判定結果が得られると、アドレス記憶手段（レジスタ）に記憶されているアドレス情報（この場合、登録データが格納されていない空きアドレス）に基づいて、入力された登録候補のデータが登録データとして登録データ格納手段に書き込まれる。このようにして、本発明では、登録候補のデータが入力される毎に、その登録候補のデータが登録データ格納手段に格納されていなければ、次々に登録データとして登録データ格納手段の空きアドレスに書き込まれて行く。
【００４０】
また、この発明によれば、登録データ格納手段（条件テーブル）に格納されている登録データを更新する際に、登録データ格納手段から削除すべき削除候補のデータが入力されると、その登録候補のデータと登録データ格納手段に格納されている登録データとが比較手段（比較器）によって比較され、一致の判定結果が得られると、アドレス記憶手段（レジスタ）に記憶されているアドレス情報（この場合、一致する登録データが格納されているアドレス）に基づいて、入力された削除候補のデータと一致する登録データが登録データ格納手段から削除される。このようにして、本発明では、削除候補のデータが入力される毎に、その削除候補のデータが登録データ格納手段に格納されていれば、次々にその削除候補のデータと一致する登録データが登録データ格納手段から削除されて行く。
【００４１】
本願の請求項２に係る発明は、請求項１に係る発明において、照合データの一部の情報をアドレスとして該アドレスの値を一部の情報として含んでいる登録データが登録データ格納手段に格納されているか否かを示す情報を格納した登録データ有無情報格納手段と、登録データ有無情報格納手段に格納されている情報に基づいて照合データが登録データ格納手段に格納されている登録データと一致していないことを判定する不一致判定手段と、登録データ有無情報格納手段に格納されている情報を更新する際に、登録データ有無情報格納手段に格納されている情報を全て削除した後、登録データ格納手段に格納されている登録データを読み出し、この読み出した登録データの一部の情報をアドレスとして登録データ有無情報格納手段にアクセスし、このアクセスした登録データ有無情報格納手段のアドレスに、当該アドレスの値を一部の情報として含んでいる登録データが登録データ格納手段に格納されていることを示す情報を書き込む手段とを備えることを特徴とする。
【００４２】
この発明によれば、登録データ有無情報格納手段（不一致テーブル）に格納されている情報の更新に際しては、登録データ有無情報格納手段に格納されている情報が全て削除された後、登録データ格納手段（条件テーブル）に格納されている登録データが読み出される。そして、この読み出された登録データの一部の情報をアドレスとして登録データ有無情報格納手段がアクセスされ、このアクセスした登録データ有無情報格納手段のアドレスに、当該アドレスの値を一部の情報として含んでいる登録データが登録データ格納手段に格納されていることを示す情報（「一致（登録データ有り）」）が書き込まれる。アクセスされなかったアドレスには登録データが登録データ格納手段に格納されていないことを示す情報（「不一致（登録データ無し）」）が残される。このようにして、本発明では、自動的に、登録データ有無情報格納手段のアドレスに、そのアドレスの値を一部の情報として含んでいる登録データが登録データ格納手段に格納されているか否かを示す情報が書き込まれて行く。
【００４３】
本発明に係るデータ判定装置は、コンピュータによって実行されるプログラムとしても実現でき、プログラムを記録媒体に記憶することも、ネットワークを通して提供することも可能である。
【発明の効果】
【００４４】
本発明によれば、登録データ格納手段に格納されている登録データを更新する際に、登録データ格納手段に登録すべき登録候補のデータの入力を受けて、その登録候補のデータと登録データ格納手段に格納されている登録データとの比較を比較手段によって行わせ、不一致の判定結果が得られた場合、アドレス記憶手段に記憶されているアドレス情報に基づいて、入力された登録候補のデータを登録データとして登録データ格納手段に書き込むようにしたので、また、登録データ格納手段に格納されている登録データを更新する際に、登録データ格納手段から削除すべき削除候補のデータの入力を受けて、その削除候補のデータと登録データ格納手段に格納されている登録データとの比較を比較手段によって行わせ、一致の判定結果が得られた場合、アドレス記憶手段に記憶されているアドレス情報に基づいて、入力された削除候補のデータと一致する登録データを登録データ格納手段から削除するようにしたので、登録候補のデータが入力される毎に、照合データと登録データとの一致／不一致の判定機能を利用して、次々に登録データ格納手段の空きアドレスに登録データとして書き込まれて行くものとなり、また、削除候補のデータが入力される毎に、照合データと登録データとの一致／不一致の判定機能を利用して、次々に削除候補のデータと一致する登録データが登録データ格納手段から削除されて行くものとなり、一致／不一致を判定するためのテーブルを作成するためのソフトウェアや事前にテーブル作成する手間を不要とすることが可能となる。
【図面の簡単な説明】
【００４５】
【図１】本発明に係るデータ判定装置を含むパケットフィルタ回路の一実施の形態を示す図である。
【図２】このパケットフィルタ回路における不一致判定回路の構成を示す図である。
【図３】この不一致判定回路における不一致テーブルの構成を示す図である。
【図４】このパケットフィルタ回路における一致判定回路の構成を示す図である。
【図５】この一致判定回路における条件テーブルの構成を示す図である。
【図６】この一致判定回路における索引テーブルの構成を示す図である。
【図７】この一致判定回路におけるレジスタ群の構成を示す図である。
【図８】初期化された不一致テーブルの状態を示す図である。
【図９】初期化された索引テーブル、条件テーブル、レジスタ群の状態を示す図である。
【図１０】「条件ａ０」を登録する場合の各テーブルの更新手順を説明する図である。
【図１１】「条件ｂ０」を登録する場合の各テーブルの更新手順を説明する図である。
【図１２】「条件ａ１」を登録する場合の各テーブルの更新手順を説明する図である。
【図１３】「条件ａ０」、「条件ｂ０」、「条件ａ１」の登録が完了した時点の索引テーブル、条件テーブル、レジスタ群の状態を示す図である。
【図１４】「条件ａ１」を削除する場合の各テーブルの更新手順を説明する図である。
【図１５】「条件ａ０」を削除する場合の各テーブルの更新手順を説明する図である。
【図１６】登録要求時の処理手順の流れを示すフローチャートである。
【図１７】登録要求時の処理手順における分岐（Ｉ）での処理の流れを示すフローチャートである。
【図１８】登録要求時の処理手順における分岐（II）での処理の流れを示すフローチャートである。
【図１９】削除要求時の処理手順の流れを示すフローチャートである。
【図２０】削除要求時の処理手順における分岐（III）での処理の流れを示すフローチャートである。
【図２１】削除要求時の処理手順における分岐（IV）での処理の流れを示すフローチャートである。
【図２２】線形探索方式を実装した従来のパケットフィルタ回路（従来例１）の代表的な構成を示す図である。
【図２３】非特許文献４に示された従来のパケットフィルタ回路（従来例２）を示す図である。
【図２４】従来例２のパケットフィルタ回路の動作を説明するためのタイムチャートである。
【図２５】従来例２のパケットフィルタ回路における不一致判定回路に用いられるメモリの構成を示す図である。
【図２６】従来例２のパケットフィルタ回路における不一致判定回路において登録データを４つのメモリに分割して記憶させるようにした例を示す図である。
【図２７】「０ｘ１２３５」という照合データが入力された場合の４つのメモリからの一致／不一致の判定結果の出力状況を示す図である。
【図２８】「０ｘ１２３７」という照合データが入力された場合の４つのメモリからの一致／不一致の判定結果の出力状況を示す図である。
【発明を実施するための形態】
【００４６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。図１はこの発明に係るデータ判定装置を含むパケットフィルタ回路の一実施の形態を示す図である。
【００４７】
このパケットフィルタ回路１００は、バッファ回路１０１と、一致判定回路１０２と、不一致判定回路１０３と、ＯＲゲート１０４とから成る。バッファ回路１０１には、判定要求信号とパケットが入力される。一致判定回路１０２と不一致判定回路１０３には、バッファ回路１０１からの判定開始信号と照合データに加えて、モード選択信号が入力される。
【００４８】
なお、本実施の形態の形態において、モード選択信号の設定によっては、入力される照合データは条件〔登録条件（登録候補のデータ）／削除条件（削除候補のデータ）〕と判断される。この点は後で詳述する。このパケットフィルタ回路１００において、一致判定回路１０２と不一致判定回路１０３とが、本発明に係るデータ判定装置の主要な構成要素を成す。
【００４９】
このパケットフィルタ回路１００において、バッファ回路１０１は、入力される判定要求信号とパケットをもとに、判定開始信号と照合データ（パケットの一部または全部からなるデータ）を、一致判定回路１０２および不一致判定回路１０３に送る。一致判定回路１０２は、バッファ回路１０１からの照合データと一致条件として事前に登録されている登録データ群中の登録データと比較して、一致の判定を行う。一方、不一致判定回路１０３は、入力された照合データと予め登録されている登録データの有無情報とを比較して、不一致の判定を行う。
【００５０】
一致判定回路１０２は、照合データと一致する登録データを検出した場合に、その時点で一致判定信号を出力する。全ての登録データとの照合を行っても、一致する登録データを検出できなかった場合には、不一致判定信号を出力する。不一致判定回路１０３は、照合データと登録データの有無情報とを比較し、その照合データと一致する登録データがないと判定すると、不一致判定信号を出力する。一致判定回路１０２からの一致判定信号はバッファ回路１０１へ送られる。一致判定回路１０２からの不一致判定信号および不一致判定回路１０３からの不一致判定信号はＯＲゲート１０４を介してバッファ回路１０１へ送られる。
【００５１】
バッファ回路１０１は、一致判定信号が送られてくると、受信したパケットを透過し、不一致判定信号が送られてくると、受信したパケットを破棄する。そして、このパケットの処理後、バッファ回路１０１は、次のパケットの照合データと判定開始信号を出力し、一致判定回路１０２と不一致判定回路１０３は、そのパケットの判定処理に移行する。
【００５２】
〔不一致判定回路の構成〕
不一致判定回路１０３の構成を図２に示す。不一致判定回路１０３は、ビット分割／選択回路１０３Ａ、不一致テーブル１０３Ｂ１〜１０３Ｂ４、ＡＮＤゲート１０３Ｃ、処理部１０３Ｄ、及びインバータ１０３Ｅから成る。図２は、照合データの長さを３２ビット長とし、８ビットずつ４分割にした例である。
【００５３】
この実施の形態では、不一致テーブル１０３Ｂ（１０３Ｂ１〜１０３Ｂ４）はメモリで構成される。各登録データの上位８ビットを不一致テーブル１０３Ｂ１に割り当て、次の８ビットを不一致テーブル１０３Ｂ２に、更に次の８ビットを不一致テーブル１０３Ｂ３に、下位８ビットを不一致テーブル１０３Ｂ４に割り当てている。この例では、８ビットに分割しているので、不一致テーブル１０３Ｂは２５６ワード×１ビットの構成をとる。
【００５４】
不一致テーブル１０３Ｂ１のアドレスは登録データの上位８ビットの値に対応し、そのアドレスの値が登録データの対応する８ビットの値として含まれている場合、不一致テーブル１０３Ｂ１の対応するアドレスに「一致」の判定を書き込む。この例では「１」を割り当てる。登録データに含まれていなければ、「不一致」の判定を書き込む。この例では「０」を割り当てる。不一致テーブル１０３Ｂ２〜１０３Ｂ４についても同様である。
【００５５】
不一致テーブル１０３Ｂ１の構成例を図３に示す。図３では、「登録条件１（登録データ１）」の上位８ビットの値は「１」であるので、不一致テーブル１０３Ｂ１のアドレス「１」に「１」（一致）が格納される。「登録条件２（登録データ２）」では、上位８ビットの値が「１０」なので、不一致テーブル１０３Ｂ１のアドレス「１０」に「１」（一致）が格納される。なお、「登録条件１（登録データ１）」および「登録条件２（登録データ２）」中の数字は、８ビット列の値を１０進数で表したものである。
【００５６】
〔不一致判定回路の基本動作〕
次に、不一致回路１０３の基本動作を説明する。バッファ回路１０１からの照合データは、ビット分割／選択回路１０３Ａに送られる。バッファ回路１０１からの判定開始信号は処理部１０３Ｄに送られる。
【００５７】
照合データが入力されると、ビット分割／選択回路１０３Ａは、入力された照合データから各８ビットを選択して、上位８ビットを不一致テーブル１０３Ｂ１に、次の８ビットを不一致テーブル１０３Ｂ２へというように、各不一致テーブル１０３Ｂへ出力する。
【００５８】
各不一致テーブル１０３Ｂでは、ビット分割／選択回路１０３Ａから送られた各８ビットの値がアドレスとして入力され、そのアドレスに格納されているデータが読み出される。この各不一致テーブル１０３Ｂからの読出しは、判定開始信号を受けた処理部１０３Ｄの指示に従って行われる。
【００５９】
この時、４つの不一致テーブル１０３Ｂから読み出されたデータに、一つでも「０」即ち「不一致」の判定があれば、ＡＮＤゲート１０３Ｃは不一致の判定である「０」を出力する。読み出されたデータが全て「１」、つまり全てが「一致」の判定であった場合には、ＡＮＤゲート１０３Ｃは一致の判定である「１」を出力する。このＡＮＤゲート１０３Ｃからの一致／不一致の判定は、インバータ１０３Ｅによって反転されて、ＯＲゲート１０４（図１）を通過し、バッファ回路１０１へ送られる。
【００６０】
この例では、上位８ビット、次の８ビットと言うように順次分割選択しているが、ビットの順序や各ビットの選択はこれに限るものではない。必要に応じて、任意の８ビットを選択的に抽出して各不一致テーブル１０３Ｂに出力するように構成することは容易である。また８ビットである必要も無い。
【００６１】
〔一致判定回路の構成〕
次に、一致判定回路１０２の構成を図４に示す。一致判定回路１０２は、索引テーブル１０２Ａ、条件テーブル１０２Ｂ、レジスタ群１０２Ｃ、比較器１０２Ｄ、セレクタ１０２Ｅ１〜１０２Ｅ３、及び処理部１０２Ｆ等から成る。索引テーブル１０２Ａ、条件テーブル１０２Ｂは、本実施の形態ではメモリで構成される。また、この例において、照合データは３２ビット長で、条件テーブル１０２Ｂには登録データを最大５１２個まで登録できるものとしている。
【００６２】
条件テーブル１０２Ｂの構成を図５に示す。条件テーブル１０２Ｂは判定するための一致条件を登録データ（登録条件）として格納しておくテーブルである、この実施の形態では、登録データを最大５１２個登録できるものとしている。従って、条件テーブル１０２Ｂのワード数は５１２であり、このワードを指定するメモリのアドレスは９ビット長になる。
【００６３】
まず、５１２個の登録データを全３２ビットの内の上位８ビットの値で分類する。上位８ビットの値が共通である登録データを１つのグループとみなす。例えば、上位８ビットの値が「ａ」の登録データが２つあるとすると、これを「条件ａ０」，「条件ａ１」で表す。以下では、これらを、簡単に「ａ０」，「ａ１」と表すこともある。「条件ｂ０」，「条件ｃ０」等も同様である。
【００６４】
条件テーブル１０２Ｂのデータは、４つのフィールドに分割される。第１のフィールドは１ビット幅で、そのワードが登録データを格納しているかどうかを表すビットである。これをＶＢ（Valid Bit）と呼び、登録データが格納されているとき「１」、格納されていないとき「０」を割り当てる。
【００６５】
第２のフィールドをＦＬＴ（条件）フィールドと呼び、登録データを格納する。この実施の形態では、照合データを３２ビットとしているので、３２ビットがこのフィールドに割り当てられる。第３のフィールドには１ビットを割り当て、同じグループに属する登録データが、以降のアドレスに格納されているかどうかを表す。このビットをＮＦ（Next Flag）フィールドと呼び、格納されていればＮＦフィールドに「１」を格納し、第４のフィールドであるＮＡ（Next Address）フィールドに、次の登録データが格納されているアドレスを格納する。他のアドレスに同じグループに属する登録データが格納されていなければ、ＮＦフィールドには「０」を格納し、ＮＡフィールドには「０」を格納する。従って、ＮＡフィールドは１ビット幅、ＮＡフィールドは９ビット幅である。
【００６６】
図５に示した条件テーブル１０２Ｂの内容について具体的に説明する。まず、第１行（条件テーブル１０２Ｂの０番地）はＶＢ＝１となっており、このアドレスには登録データが格納されていることを表す。この場合、その登録データはＦＬＴフィールドに格納されており、「条件ａ０」であることが分かる。次のＮＦフィールドは「１」なので、上位８ビットが「ａ」である登録データが、まだこの条件テーブル１０２Ｂに格納されていることを示している。ＮＡフィールドが「２」となっているので、次の登録データは条件テーブル１０２Ｂの２番地のところに格納されていることになる。そこで、２番地を見ると、ＶＢ＝１となっており、ＦＬＴフィールドには「条件ａ１」が格納されていることが分かる。第３のフィールドである、ＮＦフィールドは「０」となっており、このグループに属する登録データはこれ以上存在しないことが分かる。この場合、ＮＡフィールドには「０」を割り当てる。「条件ｂ」、「条件ｃ」についても同様である。
【００６７】
次に、アドレスの５１０番地について説明する。ＶＢ＝０であるので、このアドレスには登録データは格納されていないことを表す。この場合、ＮＦフィールドには「１」を設定し、ＮＡフィールドには、以降のワードで登録データが格納されていない最初の空きアドレスが格納される。ここでは、「５１１」が格納されているので、次の空きアドレスは５１１番地であることを示す。ＦＬＴフィールドの値は任意である。
【００６８】
次に、索引テーブル１０２Ａの構成を説明する。図６にその構成を示す。索引テーブル１０２Ａは、照合データの上位８ビットの値をアドレスとするメモリである。従って２５６ワードからなる。各ワードは、１ビット幅のＭＦ（Match Flag）フィールドと９ビット幅のＩＡ（Index Address）フィールドからなる。索引テーブル１０２Ａにおいて、例えばそのアドレス「ａ」には、上位８ビットの値が「ａ」である登録データが、条件テーブル１０２Ｂに格納されているかどうかの情報、およびそれに付随する情報が格納される。
【００６９】
索引テーブル１０２Ａにおいて、アドレス「ａ」のフィールドＭＦの値は、上位８ビットの値が「ａ」である登録データが、条件テーブル１０２Ｂに存在しているか否かを示している。すなわち、アドレス「ａ」のフィールドＭＦの値が「１」であれば、上位８ビットの値が「ａ」である登録データが、条件テーブル１０２Ｂに存在していることを意味している。アドレス「ａ」のＩＡフィールドには、上位８ビットの値が「ａ」である登録データのうち、最初に比較される登録データが格納されている条件テーブル１０２Ｂのアドレスが格納される。上位８ビットの値が「ａ」である登録データが条件テーブル１０２Ｂに存在していなければ、索引テーブル１０２Ａの「ａ」番地には、ＭＦ＝０，ＩＡ＝０を設定する。
【００７０】
例えば、索引テーブル１０２Ａのアドレス「０」をみるとＭＦ＝１になっているので、上位８ビットの値が「０」である登録データが条件テーブル１０２Ｂに存在していることを示している。ＩＡフィールドの値は「１」となっているので、最初に比較される登録データは、条件テーブル１０２Ｂの１番地に格納されていることになる。
【００７１】
尚、索引テーブル１０２ＡのＭＦフィールドは不一致判定回路１０３の不一致テーブル１０３Ｂ１と同じである。従って、不一致判定回路１０３の不一致テーブル１０３Ｂ１は省略することもできる。或は、逆に索引テーブル１０２ＡのＭＦフィールドは削除し、不一致判定回路１０３の不一致テーブル１０３Ｂ１で代用することも可能である。
【００７２】
〔一致判定回路の基本動作〕
次に、一致判定回路１０２の基本動作を説明する。バッファ回路１０１からの照合データは、その全ビットが比較器１０２Ｄに、上位８ビットが索引テーブル１０２Ａに送られる。バッファ回路１０１からの判定開始信号は処理部１０２Ｆに送られる。以下の処理動作は、判定開始信号を受けた処理部１０２Ｆの指示に従って行われる。
【００７３】
今、照合データの上位８ビットの値が「ａ」であったとする。この場合、まず、図６に示す索引テーブル１０２Ａの「ａ」番地がアクセスされ、データが読み出される。この例において、読み出されたデータのうちＭＦフィールドの値は「１」であるので、上位８ビットの値が「ａ」である登録データが条件テーブル１０２Ｂに存在していることが分かり、読み出されたデータのうちＩＡフィールドの値「０」が条件テーブル１０２Ｂに出力される。
【００７４】
図５の条件テーブル１０２Ｂでは、索引テーブル１０２Ａから出力されたＩＡフィールドの値「０」が、今度は条件テーブル１０２Ａのアドレス「０」として使用され、０番地のデータが読み出される。このとき、ＶＢ＝１であるから、この登録データは有効であり、ＦＬＴフィールドのデータ、つまり登録データとして格納されている「条件ａ０」が比較器１０２Ｄに送られる。これにより、比較器１０２Ｄは、バッファ回路１０１からの照合データと「条件ａ０」とを比較し、一致／不一致を判定する。一致と判定すれば、判定処理は終了する。
【００７５】
不一致と判定された場合は、条件テーブル１０２Ｂで読み出された０番地のＮＦフィールドの値を参照する。図５では、ＮＦ＝１であるので、上位８ビットの値が「ａ」である登録データがまだ存在することが分かり、その登録データが格納されている条件テーブル１０２Ｂのアドレス「２（＝ＮＡ）」を、自分自身である条件テーブル１０２Ｂのアドレスとして出力させる。これにより、条件テーブル１０２Ｂの２番地のＦＬＴフィールドから「条件ａ１」が読み出され、比較器１０２Ｄに送られる。比較器１０２Ｄは、バッファ回路１０１からの照合データと「条件ａ１」とを比較し、一致／不一致を判定する。一致と判定すれば、判定処理は終了する。
【００７６】
不一致と判定された場合は、条件テーブル１０２Ｂの２番地のＮＦフィールドのデータを参照する。図５ではＮＦ＝０となっており、上位８ビットの値が「ａ」である登録データは他に存在しないと判定され、判定処理が終了する。判定処理が終了すると、次のパケットの処理に移行する。
【００７７】
〔各種テーブルの自動更新〕
次に、この一致判定回路１０２、不一致判定回路１０３を有したパケットフィルタ回路１００で、本実施の形態の特徴的な機能である不一致テーブル１０３Ｂ、索引テーブル１０２Ａ、条件テーブル１０２Ｂの自動更新機能について説明する。
【００７８】
この自動更新機能は、パケットフィルタ回路１００の照合データと登録データとの一致／不一致の判定機能を利用して、不一致テーブル１０３Ｂ、索引テーブル１０２Ａ、条件テーブル１０２Ｂを自動的に生成或は削除をする機能である。図１におけるモード選択信号、図４におけるレジスタ群１０２Ｃは、この自動更新機能を実現するために設けられたものである。
【００７９】
レジスタ群１０２Ｃの構成を図７に示す。レジスタ群１０２Ｃは、ＷＡＤＲレジスタ１０２Ｃ１、ｔｍｐレジスタ１０２Ｃ２、ＭＣＤレジスタ１０２Ｃ３、ＣＡＤＲレジスタ１０２Ｃ４、ＢＡＤＲレジスタ１０２Ｃ５から成る。ＷＡＤＲレジスタ１０２Ｃ１、ｔｍｐレジスタ１０２Ｃ２、ＭＣＤレジスタ１０２Ｃ３は１ビット幅のＮＦフィールド、９ビット幅のＮＡフィールドから成る。ＣＡＤＲレジスタ１０２Ｃ４、ＢＡＤＲレジスタ１０２Ｃ５は９ビット幅のＮＡフィールドのみから成る。
【００８０】
〔初期化モード〕
まず、初期化モードについて説明する。このモードは、不一致テーブル１０３Ｂ、索引テーブル１０２Ａ、条件テーブル１０２Ｂ、レジスタ群１０２Ｃを初期化するものである。モード選択信号を初期化モードに設定し、クロックを入力するだけで自動的に初期化が行われる。この初期化はカウンタ等の小規模ハードウエアで実現できる。
【００８１】
図２に示した不一致判定回路１０３では、モード選択信号に従う処理動作を行わせるハードウェア構成を、処理部１０３Ｄに設けている。また、図４に示した一致判定回路１０２では、モード選択信号に従う処理動作を行わせるハードウェア構成を、処理部１０２Ｆに設けている。
【００８２】
図８に初期化された不一致テーブル１０３Ｂ１〜１０３Ｂ４の状態を示す。処理部１０３Ｄは、モード選択信号が初期化モードとして入力されると、不一致テーブル１０３Ｂ１〜１０３Ｂ４の全てのアドレスに対して格納データを「０」すなわち「不一致」に設定する。
【００８３】
図９（ａ），（ｂ），（ｃ）に初期化された索引テーブル１０２Ａ、条件テーブル１０２Ｂ、レジスタ群１０２Ｃの状態を示す。処理部１０２Ｆは、モード選択信号が初期化モモードとして入力されると、索引テーブル１０２Ａ、条件テーブル１０２Ｂ、レジスタ群１０２Ｃを初期化する。
【００８４】
この初期化によって、索引テーブル１０２Ａでは、全てのアドレスに対して「０」が格納される。条件テーブル１０２Ｂでは、全てのアドレスに対して、ＶＢフィールドとＦＬＴフィールドには「０」が設定される。ＮＦフィールドはアドレス「５１１」に対してのみ「０」が設定され、それ以外のアドレスでは「１」が設定される。ＮＡフィールドはアドレス「５１１」に対してのみ「０」が設定され、それ以外のアドレスにはそのアドレスより１大きい値が設定される。レジスタ群１０２Ｃでは、ＷＡＤＲレジスタ１０２Ｃ１のＮＦフィールドに「１」が設定され、それ以外には全て「０」が設定される。
【００８５】
〔登録モード〕
次に、条件を登録する動作モードである登録モードについて説明する。モード選択信号を登録モードに設定し、順次、登録させたい条件（登録候補のデータ）を含むパケットをパケットフィルタ回路１００に入力する。これにより、既に述べた一致判定回路１０２での一致／不一致の判定処理の動作に従って、入力された登録候補のデータが順次条件テーブル１０２Ｂに自動的に格納され、同時に付随するアドレス等が必要に応じて各テーブルに格納される。不一致判定回路１０３でも、入力された登録候補のデータについて、登録データの有無を示す情報が不一致テーブル１０３Ｂ１〜１０３Ｂ４に格納される。以下、この登録モードとした場合の具体的な動作について説明する。
【００８６】
先ず、各テーブルが図８、図９のように初期化された状態で、最初の「条件ａ０」を登録する場合を説明する。登録候補のデータである「条件ａ０」を含むパケットがパケットフィルタ回路１００に入力されると、バッファ回路１０１を経由して、「条件ａ０」が不一致判定回路１０３、一致判定回路１０２に入力される。最初の登録候補のデータであるから、不一致判定回路１０３、一致判定回路１０２は判定動作に従って、ともに不一致と判定する。一致判定回路１０２が不一致と判定した時点で、すなわち比較器１０２Ｄが不一致と判定した時点で、各種テーブルの更新が開始される。この登録モードでは不一致判定回路１０３の判定結果は無視される。
【００８７】
以下、図１０を参照して、一致判定回路１０２の動作および各テーブルの更新手順を詳細に説明する。以下の(１)、(２)等の順序は図１０中のそれに対応する。また、この動作はモード選択信号（登録モード）を受けた処理部１０２Ｆの指示に従って行われる。
【００８８】
(１)「条件ａ０」は上位８ビットの値が「ａ」であるから、索引テーブル１０２Ａの「ａ」番地がアクセスされる（図１６：ステップＳ１０１）。この場合、「ａ」番地のＭＦフィールドは「０」なので、不一致と判定される（ステップＳ１０２のＹＥＳ）。これにより、分岐（Ｉ）へ処理が移る（ステップＳ１０３）。分岐（Ｉ）のフローチャートを図１７に示す。分岐（Ｉ）の処理では、レジスタ群１０２ＣのＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドの値「０」が条件テーブル１０２Ｂに送られ、条件テーブル１０２Ｂの０番地のデータが読み出される（ステップＳ１０１）。
【００８９】
(２)条件テーブル１０２Ｂから読み出されたデータのうち、ＮＦ，ＮＡフィールドの値をレジスタ群１０２Ｃのｔｍｐレジスタ１０２Ｃ２に保存する（ステップＳ１０２）。従って、ｔｍｐレジスタ１０２Ｃ２の値（ＮＦ，ＮＡ）は（０，０）から（１，１）に更新される。
【００９０】
(３)次に、レジスタ群１０２ＣのＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドの値を、それぞれ索引テーブル１０２Ａの「ａ」番地のＭＦフィールド、ＩＡフィールドにコピーする（ステップＳ２０３）。これにより、索引テーブル１０２Ａの「ａ」番地の値（ＭＦ，ＩＡ）は（０，０）⇒（１、０）と更新される。
【００９１】
(４)レジスタ群１０２ＣのＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドには「０」即ち０番地が記憶されているので、この値をもとに条件テーブル１０２Ｂの０番地をアクセスし、各フィールド（ＶＢ，ＦＬＴ，ＮＦ，ＮＡ）の値を（０，０，１，１）から（１、条件ａ０，０，０）と更新する（ステップＳ２０４）。これは、条件テーブル１０２Ｂの０番地は有効であり、登録データとして「条件ａ０」が格納されていることを表している。上位８ビットの値が「ａ」である条件は、まだ存在していないので、ＮＦ＝０、ＮＡ＝０と設定される。
【００９２】
(５)最後に、ｔｍｐレジスタ１０２Ｃ２のＮＦ，ＮＡフィールドの値をＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドにコピーする（ステップＳ２０５）。これにより、ＷＡＤＲレジスタ１０２Ｃ１の値は（ＮＦ，ＮＡ）＝（１，１）となり、次の登録に備えられる。この場合、次の登録時には、ＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドの値をアドレスとし、このアドレスで示される条件テーブル１０２Ｂの１番地に登録データが書き込まれることになる。
【００９３】
以上の手順から、ＷＡＤＲレジスタ１０２Ｃ１のデータは、条件テーブル１０２Ｂにおいて、まだ登録データが書き込まれていない最小のアドレス、つまり空きアドレスの内最も小さいアドレスを意味していることが分かる。登録候補のデータを登録するときにはこのアドレスに書き込むことになる。初期化により、ＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドは「０」としているので、最初の登録データは０番地に格納されるように設定されていたことになる。従って、この例では、最初の「条件ａ０」が条件テーブル１０２Ｂの０番地に格納された訳である。また、ＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドの値を、索引テーブル１０２Ａの「ａ」番地のＩＡフィールドにコピーすればよいことになる。
【００９４】
一方、不一致判定回路１０３では、ビット分割／選択回路１０３Ａによって「条件ａ０」の各８ビットの値をアドレスとして、不一致テーブル１０３Ｂ１〜１０３Ｂ４のアドレスにデータ「１」が書き込まれる。これで、不一致テーブル１０３Ｂ１〜１０３Ｂ４の更新は完了する。この動作はモード選択信号（登録モード）を受けた処理部１０３Ｄの指示に従って行われる。新たな条件を登録するときにも、同じ動作をさせる。既に「１」が書かれていても、「１」を書き込むことになるが、なんら問題がないことは当然である。従って、以下では不一致テーブル１０３Ｂの更新については説明を省略する。
【００９５】
次に、図１１を参照して、「条件ｂ０」を登録する場合を説明する。この例では、説明の都合上、ｂ＝１とする。これは「条件ａ０」の登録と基本的には同じである。従って、図１６に示したステップＳ１０２のＹＥＳに応じて、分岐（Ｉ）へ移り（ステップＳ１０３）、図１７に示した分岐（Ｉ）の処理が行われることになる。
【００９６】
(１)「条件ｂ０」は上位８ビットの値が「１」であるから、索引テーブル１０２Ａの１番地がアクセスされる（図１６：ステップＳ１０１）。この場合、１番地のＭＦフィールドはＭＦ＝０なので、不一致と判定される（ステップＳ１０２のＹＥＳ）。これにより、分岐（Ｉ）へ処理が移る（ステップＳ１０３）。分岐（Ｉ）の処理（図１７）では、レジスタ群１０２ＣのＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドの値「１」が条件テーブル１０２Ｂに送られ、条件テーブル１０２Ｂの１番地のデータが読み出される（ステップＳ１０１）。
【００９７】
(２)条件テーブル１０２Ｂから読み出されたデータのうち、ＮＦ，ＮＡフィールドの値をレジスタ群１０２Ｃのｔｍｐレジスタ１０２Ｃ２に保存する。従って、ｔｍｐレジスタ１０２Ｃ２の値（ＮＦ，ＮＡ）は（１，１）から（１，２）に更新される。
【００９８】
(３)次に、ＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドの値を、それぞれ索引テーブル１０２Ａの１番地のＭＦ，ＩＡフィールドにコピーする（ステップＳ２０３）。これにより、索引テーブル１０２Ａの１番地の値（ＭＦ，ＩＡ）は（０，０）⇒（１、１）と更新される。
【００９９】
(４)ＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドには「１」即ち１番地が記憶されているので、この値をもとに条件テーブル１０２Ｂの１番地をアクセスし、各フィールド（ＶＢ，ＦＬＴ，ＮＦ，ＮＡ）の値を（０，０，１，２）から（１、条件ｂ０，０，０）と更新する（ステップＳ２０４）。
【０１００】
(５)最後に、ｔｍｐレジスタ１０２Ｃ２のＮＦ，ＮＡフィールドの値をＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドにコピーする（ステップＳ２０５）。これにより、ＷＡＤＲレジスタ１０２Ｃ１の値は（ＮＦ，ＮＡ）＝（１，２）となり、次の登録に備えられる。この場合、次の登録時には、ＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドの値をアドレスとし、このアドレスで示される条件テーブル１０２Ｂの２番地に登録データが書き込まれることになる。
【０１０１】
次に、登録モードの最後として、上位８ビットの値が「ａ」で、他のビットが異なる「条件ａ１」を登録する場合について説明する。
【０１０２】
この場合、上位８ビットの値が「ａ」なので、索引テーブル１０２Ａの「ａ」番地をアクセスする。索引テーブル１０２Ａの「ａ」番地のＭＦフィールドの値は「１」なので、一致と判定される。これにより、索引テーブル１０２ＡのＩＡフィールドの値「０」をもとに、条件テーブル１０２Ｂの０番地がアクセスされ、０番地から読み出された「条件ａ０」が比較器１０２Ｄに送られる。
【０１０３】
比較器１０２Ｄには「条件ａ１」が入力されている。「条件ａ０」と「条件ａ１」は異なっているとしているので、比較器１０２Ｄは不一致と判定する。この場合、ＮＦ＝０なので、上位８ビットの値が「ａ」である登録データは、これが最後であることを示している。この時点で、「条件ａ１」は登録されるべきデータと判断され、各テーブルの更新が開始される。もし、「条件ａ１」が「条件ａ０」が同じであれば、比較器１０２Ｄで一致と判定され、この時点で処理は終了する。
【０１０４】
以下、この「条件ａ１」を登録する手順を、「条件ａ０」と「条件ｂ０」が登録された時点のテーブルを出発点として、図１２を参照して詳細に説明する。
【０１０５】
(１)「条件ａ１」は上位８ビットの値が「ａ」であるから、索引テーブル１０２Ａの「ａ」番地がアクセスされる（図１６：ステップＳ１０１）。この場合、「ａ」番地のＭＦフィールドはＭＦ＝１なので（ステップＳ１０３のＮＯ）、一致と判定される。これにより、「ａ」番地のＩＡフィールドの値「０」をアドレスとして（ステップＳ１０４）、条件テーブル１０２Ｂの０番地のデータがリードされる（ステップＳ１０５）。そして、リードされたデータの内、ＦＬＴフィールドのデータである「条件ａ０」が比較器１０２Ｄに送られ、入力されている「条件ａ１」と比較される（ステップＳ１０６）。この場合、比較器１０２Ｄは、不一致と判定する（ステップＳ１０６のＮＯ）。
【０１０６】
(２)この時、読み出された条件テーブル１０２Ｂの「ａ」番地のＮＦフィールドの値は「０」なので（ステップＳ１０７のＹＥＳ）、上位８ビットの値が「ａ」である登録データはこれが最後であることが分かる。この時点で、判定が終了し、「条件ａ１」が登録すべきデータであると判断される。これにより、分岐（II）へ処理が移る（ステップＳ１０８）。分岐（II）のフローチャートを図１８に示す。分岐（II）の処理では、不一致と判定された最後の登録データ、この場合「条件ａ０」が格納されていた条件テーブル１０２Ｂのアドレス「０」をＣＡＤＲレジスタ１０２Ｃ４に保存する（ステップＳ３０１）。
【０１０７】
(３)「条件ａ１」を格納すべき空きアドレスは、ＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドに格納されているので、この値「２」をもとに、条件テーブル１０２Ｂの２番地のデータを読み出し（ステップＳ３０２）、そのデータのうちＮＦ，ＮＡフィールドの値をｔｍｐレジスタ１０２Ｃ２に保存する（ステップＳ３０３）。
【０１０８】
(４)同じくＷＡＤＲレジスタ１０２Ｃ１のＮＡフィールドの値をもとに、条件テーブル１０２Ｂの２番地にアクセスし、各フィールド（ＶＢ，ＦＬＴ，ＮＦ，ＮＡ）の値を（０，０，１，３）から（１、条件ａ１，０，０）と更新する（ステップＳ３０４）。この場合、索引テーブル１０２Ａの書き換えは必要ない。
【０１０９】
(５)続いて、条件テーブル１０２Ｂで「条件ａ０」が格納されているところのＮＡフィールドの値を、「条件ａ１」が格納されているアドレスに変更する。この場合、「条件ａ０」を格納しているアドレスは、ＣＡＤＲレジスタ１０２Ｃ４に保存されているので、この値「０」を基に、条件テーブル１０２Ｂの０番地をアクセスし、ＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドの値を、条件テーブル１０２ＢのＮＦフィールド，ＮＡフィールドにコピーする（ステップＳ３０５）。
【０１１０】
(６)最後に、ｔｍｐレジスタ１０２Ｃ２のＮＦフィールド，ＮＡフィールドの値をＷＡＤＲレジスタ１０２Ｃ１のＮＦフィールド，ＮＡフィールドにコピーし、次の空きアドレスとする（ステップＳ３０６）。これで、「条件ａ１」の登録が完了する。
【０１１１】
図１３（ａ），（ｂ），（ｃ）に「条件ａ０」、「条件ｂ０」、「条件ａ１」の登録が完了した時点の索引テーブル１０２Ａ、条件テーブル１０２Ｂ、レジスタ群１０２Ｃの状態を示す。
【０１１２】
〔削除モード〕
次に、登録された条件を削除する動作モードである削除モードについて説明する。モード選択信号を削除モードに設定するとともに、削除したい条件（削除候補のデータ）を含むパケットをパケットフィルタ回路１００に入力する。入力された削除候補のデータは既に登録されているはずなので、パケットフィルタ回路１００は一致と判定する。この判定結果をもとに、各種テーブルを更新する。
【０１１３】
例えば、図１３の状態において、「条件ａ１」を削除するものとする。「条件ａ１」はバッファ回路１０１を経由して不一致判定回路１０３、一致判定回路１０２へ送られる。このモードにおいても不一致判定回路１０３の判定結果は考慮しない。この場合、一致判定回路１０２の索引テーブル１０２Ａの「ａ」番地がアクセスされる。索引テーブル１０２Ａの「ａ」番地のＭＦフィールドの値は「１」なので、一致と判定され、ＩＡフィールドの値「０」を用いて、条件テーブル１０２Ｂの０番地がアクセスされる。０番地に格納されている「条件ａ０」が読み出され、入力されている「条件ａ１」と比較器１０２Ｄにおいて比較され、不一致と判定される。
【０１１４】
このとき、０番地のＮＦフィールドの値は「１」であるので、上位８ビットの値が「ａ」である登録データがまだ存在する。条件テーブル１０２Ｂの０番地のＮＡフィールドの値を参照すると、ＮＡ＝２なので、次に条件テーブル１０２Ｂの２番地がアクセスされる。これにより、２番地に格納されている「条件ａ１」が読み出され、入力されている「条件ａ１」と比較され、一致と判定される。一致と判定された時点で、この条件を削除することが決定される。この一致判定結果をもとに、索引テーブル１０２Ａ、条件テーブル１０２Ｂを更新する。
【０１１５】
この場合は、上位８ビットの値が「ａ」である「条件ａ０」が残っているので、索引テーブル１０２Ａは書き換える必要はない。条件テーブル１０２Ｂでは、「条件ａ１」が格納されていたアドレスを空きアドレスとして、最終的にＷＡＤＲレジスタ１０２Ｃ１に格納し、「条件ａ１」が格納されていたアドレスのＮＦ，ＮＡフィールドの値を、「条件ａ０」が格納されている番地のＮＦ，ＮＡフィールドにコピーすれば良い。付随して、適宜、他のフィールドのデータも書き換える。以下、この削除モードとした場合の具体的な動作について説明する。
【０１１６】
〔条件ａ１の削除〕
以下、「条件ａ１」を削除する場合の手順を、図１３の状態を出発点とした図１４を参照して詳細に説明する。ここでも、不一致判定回路１０３の判定結果は無視する。また、この実施の形態では、不一致判定回路１０３の不一致テーブル１０３Ｂは更新されないので、不一致判定回路１０３の動作については説明を省略し、一致判定回路１０２の動作および各テーブルの更新手順を説明する。この動作はモード選択信号（削除モード）を受けた処理部１０２Ｆの指示に従って行われる。
【０１１７】
(１)「条件ａ１」はバッファ回路１０１を経由して一致判定回路１０２へ送られる。一致判定回路１０２の索引テーブル１０２Ａの「ａ」番地のデータがリードされる（図１９：ステップＳ４０１）。この場合、「ａ」番地のＭＦフィールドの値は「１」なので、一致と判定される（ステップＳ４０２のＮＯ）。これにより、「ａ」番地のＩＡフィールドの値をアドレスとして（ステップＳ４０３）、条件テーブル１０２Ｂの０番地のデータがリードされる（ステップＳ４０４）。このときのアドレス「０」はＣＡＤＲレジスタ１０２Ｃ４に保存される（ステップＳ４０３）。そして、リードされたデータの内、ＦＬＴフィールドのデータである「条件ａ０」が比較器１０２Ｄに送られ、入力されている「条件ａ１」と比較される（ステップＳ４０５）。この場合、比較器１０２Ｄは、不一致と判定する（ステップＳ４０５のＮＯ）。
【０１１８】
(２)この時、条件テーブル１０２Ｂの０番地のＮＦフィールドの値は「１」なので（ステップＳ４０６のＮＯ）、上位８ビットの値が「ａ」である登録データがまだ他に存在する。このため、０番地のＮＡフィールドの値「２」を参照して、次に条件テーブル１０２Ｂの２番地のデータがリードされる（ステップＳ４０７）。そして、リードされたデータの内、ＦＬＴフィールドのデータである「条件ａ１」が比較器１０２Ｄに送られ、入力されている「条件ａ１」と比較される（ステップＳ４０８）。この場合、比較器１０２Ｄは、一致と判定する（ステップＳ４０８のＹＥＳ）。
【０１１９】
(３)一致と判定されたアドレスである「２」はＣＡＤＲレジスタ１０２Ｃ４のＮＡフィールドに保存される（ステップＳ４１２）。同時に、ＣＡＤＲレジスタ１０２Ｃ４のＮＡフィールドの直前の値、即ち、一つ前に判定された登録データが格納されていた条件テーブル１０２Ｂのアドレス「０」は、ＢＡＤＲレジスタ１０２Ｃ５に移される（ステップＳ４１３）。
【０１２０】
(４)また、一致と判定された「条件ａ１」が格納されていた条件テーブル１０２Ｂの２番地のＮＦ，ＮＡフィールドの値をＭＣＤレジスタ１０２Ｃ３に保存する（ステップＳ４１４）。そして、分岐（IV）の処理へ移る（ステップＳ４１５）。分岐（IV）の処理のフローチャートを図２１に示す。
【０１２１】
(５)分岐（IV）の処理では、次に、ＣＡＤＲレジスタ１０２Ｃ４に保存されている一致と判定された「条件ａ１」が格納されていたアドレス「２」を用いて、条件テーブル１０２Ｂの２番地をアクセスし、この２番地のＮＦ，ＮＡフィールドに、ＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドの値をコピーする。同時にＶＢフィールドの値を「１」→「０」，ＦＬＴフィールドの値を「条件ａ１」→「０」と書き換える（ステップＳ６０１）。これで、条件テーブル１０２Ｂの２番地は空きアドレスとなり、２番地の次の空きアドレスである３番地が設定されたことになる。
【０１２２】
(６)続いて、ＢＡＤＲレジスタ１０２Ｃ５に蓄えられているデータ「０」、即ち一つ前に判定を行った条件テーブル１０２Ｂのアドレスをもとに、条件テーブル１０２Ｂの０番地をアクセスし、０番地のＮＦ，ＮＡフィールドにＭＣＤレジスタ１０２Ｃ３に保存されているＮＦ，ＮＡフィールドの値をコピーする（ステップＳ６０２）。
【０１２３】
続いて、ｔｍｐレジスタ１０２Ｃ２のＮＦフィールドの値を「１」に更新し、ＮＡフィールドにＣＡＤＲレジスタ１０２Ｃ４のＮＡフィールドの値をコピーする（ステップＳ６０３）。これにより、削除された「条件ａ１」が格納されていた番地のＮＦ，ＮＡフィールドの値を、「条件ａ０」が格納されている番地のＮＦ，ＮＡフィールドに移したことになる。
【０１２４】
(７)最後に、ｔｍｐレジスタ１０２Ｃ２のＮＦ，ＮＡフィールドの値をＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドにコピーして（ステップＳ６０４）、削除が完了する。ＷＡＤＲレジスタ１０２Ｃ１には、削除された登録データが格納されていた条件テーブル１０２Ｂのアドレスが保存され、次の空きアドレスとして使用される。
【０１２５】
〔条件ａ０の削除〕
「条件ａ１」を削除する場合には、索引テーブル１０２Ａを変更する必要は無かった。しかし、図１３の状態で、最初に比較される「条件ａ０」を削除する場合は、索引テーブル１０２Ａも変更しなければならない。この場合も、一致判定回路１０２の判定結果をもとに、各テーブルを更新することができる。
【０１２６】
「条件ａ０」を削除する場合は、「条件ａ０」が格納されている条件テーブル１０２ＢのアドレスのＮＦ，ＮＡフィールドの値を索引テーブル１０２ＡのＭＦ，ＩＡフィールドに設定し、「条件ａ０」が格納されている条件テーブル１０２ＢのアドレスのＮＦ，ＮＡフィールドに現在の空きアドレス（ＷＡＤＲレジスタ１０２Ｃ１に格納されているアドレス）を移し、「条件ａ０」が格納されているアドレスをＷＡＤＲレジスタ１０２Ｃ１に格納すればよい。
【０１２７】
以下、図１５を参照して、「条件ａ０」の削除の具体的な手順を説明する。ここでも、「条件ａ０」、「条件ａ１」、「条件ｂ０」が登録されている状態（図１３）を出発点とする。
【０１２８】
(１)「条件ａ０」はバッファ回路１０１を経由して一致判定回路１０２へ送られる。一致判定回路１０２の索引テーブル１０２Ａの「ａ」番地のデータがリードされる（図１９：ステップＳ４０１）。この場合、「ａ」番地のＭＦフィールドの値は「１」なので、一致と判定される（ステップＳ４０２のＮＯ）。これにより、「ａ」番地のＩＡフィールドの値をアドレスとして（ステップＳ４０３）、条件テーブル１０２Ｂの０番地のデータがリードされる（ステップＳ４０４）。このときのアドレス「０」はＣＡＤＲレジスタ１０２Ｃ４に保存される（ステップＳ４０３）。
【０１２９】
そして、リードされたデータの内、ＦＬＴフィールドのデータである「条件ａ０」が比較器１０２Ｄに送られ、入力されている「条件ａ０」と比較される（ステップＳ４０５）。この場合、比較器１０２Ｄは、一致と判定する（ステップＳ４０５のＹＥＳ）。そして、一致と判定された条件テーブル１０２Ｂの０番地のＮＦ，ＮＡフィールドの値をＭＣＤレジスタ１０２Ｃ３のＮＦ，ＮＡフィールドに保存し（ステップＳ４１０）、分岐（III）の処理へ移行する（ステップＳ４１１）。分岐（III）の処理のフローチャートを図２０に示す。
【０１３０】
(２)分岐（III）の処理では、ＣＡＤＲレジスタ１０２Ｃ４のＮＡフィールドに保存されている一致と判定された条件のアドレス「０」を用いて、条件テーブル１０２Ｂの０番地をアクセスし、ＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドの値（現在の空きアドレス）を、０番地のＮＦ，ＮＡフィールドにコピーする。また、ＶＢフィールドの値を「１」→「０」，ＦＬＴフィールドの値を「条件ａ０」→「０」と書き換える（ステップＳ５０１）。この動作により、条件テーブル１０２Ｂの０番地は空きアドレス、０番地の次の空きアドレスは３番地と設定されたことになる。
【０１３１】
(３)同時に、ＣＡＤＲレジスタ１０２Ｃ４のＮＡフィールドに保存されている、一致と判定された登録データが格納されていた条件テーブル１０２Ｂのアドレス「０」を、ｔｍｐレジスタ１０２Ｃ２のＮＡフィールドにコピーする。同時に、ｔｍｐレジスタ１０２Ｃ２のＮＦフィールドの値を１に設定する（ステップＳ５０２）。
【０１３２】
(４)ついで、入力された登録データの上位８ビットの値である「ａ」を用いて、索引テーブル１０２Ａの「ａ」番地をアクセスし、ＭＣＤレジスタ１０２Ｃ３のＮＦ，ＮＡフィールドに保存されているデータ、つまり削除された「条件ａ０」の次の「条件ａ１」が格納されている条件テーブル１０２Ｂのアドレスを、索引テーブル１０２ＡのＭＦ，ＩＡフィールドにコピーする（ステップＳ５０３）。
【０１３３】
(５)最後に、ｔｍｐレジスタ１０２Ｃ２のＮＦ，ＮＡフィールド値をＷＡＤＲレジスタ１０２Ｃ１のＮＦ，ＮＡフィールドにコピーして（ステップＳ５０４）、「条件ａ０」の削除が完了する。ＷＡＤＲレジスタ１０２Ｃ１には、今削除された「条件ａ０」が格納されていた、条件テーブル１０２Ｂのアドレスである０番地が、格納されたことになる。次に、登録候補のデータを登録する場合は、条件テーブル１０２Ｂの０番地にそのデータが登録データとして格納されることになる。
【０１３４】
〔リフレッシュモード〕
次に、リフレッシュモードについて説明する。上述した削除モードでは、不一致判定回路１０３の不一致テーブル１０３Ｂは更新されない。そのため、本来不一致であるはずのアドレスに、「一致」が設定されたまま残っている可能性がある。この状態の不一致テーブル１０３Ｂで通常の動作をさせると、本来不一致のパケットを一致と判定してしまうことになる。不一致判定回路１０３で一致と判定した場合には、最終的に一致判定回路１０２で判定されるため、判定結果に誤りは生じない。しかし、登録データの削除が積み重なると、一致判定回路１０２で最終判定されるパケットが増え、スループットが低下する可能性がある。それを防ぐため、条件テーブル１０２Ｂのデータをもとに不一致テーブル１０３Ｂの更新を行う。
【０１３５】
この動作は、モード選択信号をリフレッシュモードに設定することにより、このモード選択信号（リフレッシュモード）を受けた処理部１０２Ｆや１０３Ｄの指示に従って行われる。リフレッシュモードに設定されると、不一致テーブル１０３Ｂが図８のように初期化される。他のテーブルは変更されない。ついで、条件テーブル１０２Ｂの各番地のデータが順次読み出され、ＦＬＴフィールドのデータがビット分割選択回路１０３Ａによって不一致テーブル１０３Ｂに送られる。
【０１３６】
この番地のＶＢフィールドの値を参照して、ＶＢ＝１であれば、即ち登録された条件であると判断されると、各不一致テーブル１０３Ｂの対応するアドレスに、データ「１」を格納する。この動作が条件テーブル１０２Ｂの全てのアドレスに対して実行され、条件テーブル１０２Ｂに正しく対応した不一致テーブル１０３Ｂが構成される。このアドレスは８ビットのリングカウンタ等を用意することにより自動的に生成できる。
【０１３７】
これまで、モード選択信号の生成については、本発明においては本質的ではないので、詳細は触れなったが、モードの数に応じて適宜複数ビットを備えればよい。例えば、２ビットを用意し、（００）を通常のモード、（０１）を登録モード、（１０）を削除モード、（１１）をリフレッシュモード、というように割り当てればよい。
【０１３８】
以上の説明から分かるように、本実施の形態によれば、パケットフィルタ回路１００の照合データと登録データとの一致／不一致の判定動作およびそれを実現するハードウエアを利用して、パケットフィルタ回路１００に含まれる各種のテーブルを自動的に作成、更新ができるようにしたため、テーブルを作成するためのソフトウェアや事前にテーブルを作成する手間が不要になった。
【０１３９】
なお、上述した実施の形態において、パケットフィルタ回路の各機能部は、ＣＰＵ（中央演算装置）やメモリなどの記憶装置、インターフェースからなるコンピュータ（ハードウェア）にコンピュータプログラム（ソフトウェア）をインストールすることによって実現され、上述した各機能部は、上記のコンピュータの各種ハードウェア資源と上記コンピュータプログラムとが協働することによって実現される。
【０１４０】
また、上記のコンピュータプログラムは、コンピュータが読み取り可能な記録媒体や記憶装置に格納された状態で提供されても良く、電気通信回線を介して提供されても良い。
【０１４１】
〔実施の形態の拡張〕
本発明の実施の形態として一致判定回路１０２、不一致判定回路１０３を有するパケットフィルタ回路１００について、各種テーブルの自動更新（登録・削除等）を説明したが、本発明はこの構成に限定されないことは言うまでも無い。
【０１４２】
本発明の主旨は、パケットフィルタ回路１００において、通常のパケットの判定動作およびそれを実現する回路を利用して、各種テーブルを自動的に更新する機能を実現することである。
【０１４３】
例えば、図２２に示した不一致判定回路を有さないパケットフィルタ回路２００についても、図４に示したような構成を採用して、一致判定回路２０２における条件テーブルへの一致条件の登録や削除を行わせることが可能である。
【符号の説明】
【０１４４】
１００…パケットフィルタ回路、１０１…バッファ回路、１０２…不一致判定回路、１０２Ａ…索引テーブル、１０２Ｂ…条件テーブル、１０２Ｃ…レジスタ群、１０２Ｃ１…ＷＡＤＲレジスタ、１０２Ｃ２…ｔｍＰレジスタ、１０２Ｃ３…ＭＣＤレジスタ、１０２Ｃ４…ＣＡＤＲレジスタ、１０２Ｃ５…ＢＡＤＲレジスタ、１０２Ｄ…比較器、１０２Ｅ１〜１０２Ｅ３…セレクタ、１０２Ｆ…処理部、１０３…不一致判定回路、１０３Ａ…ビット分割／選択回路、１０３（１０３Ｂ１〜１０３Ｂ４）…不一致テーブル、１０３Ｃ…ＡＮＤゲート、１０３Ｄ…処理部、１０３Ｅ…インバータ。
【図１】
0005920698.tif 000002
【図２】
0005920698.tif 000003
【図３】
0005920698.tif 000004
【図４】
0005920698.tif 000005
【図５】
0005920698.tif 000006
【図６】
0005920698.tif 000007
【図７】
0005920698.tif 000008
【図８】
0005920698.tif 000009
【図９】
0005920698.tif 000010
【図１０】
0005920698.tif 000011
【図１１】
0005920698.tif 000012
【図１２】
0005920698.tif 000013
【図１３】
0005920698.tif 000014
【図１４】
0005920698.tif 000015
【図１５】
0005920698.tif 000016
【図１６】
0005920698.tif 000017
【図１７】
0005920698.tif 000018
【図１８】
0005920698.tif 000019
【図１９】
0005920698.tif 000020
【図２０】
0005920698.tif 000021
【図２１】
0005920698.tif 000022
【図２２】
0005920698.tif 000023
【図２３】
0005920698.tif 000024
【図２４】
0005920698.tif 000025
【図２５】
0005920698.tif 000026
【図２６】
0005920698.tif 000027
【図２７】
0005920698.tif 000028
【図２８】
0005920698.tif 000029