(57)【要約】  本発明の実施の形態に係る通信制御装置は、第１データベース３５０と、検索回路３１０と、を備える。第１データベース３５０は、取得したデータに対して実行する処理の内容を決定するための基準となる基準データの一部を部分基準データとして保持するセグメントテーブル３６０と、基準データを保持するマッチングテーブル３８０と、を有する。検索回路３１０は、取得したデータをもとにセグメントテーブル３６０を検索し、取得したデータに対応する部分基準データが存在した場合、取得したデータと、部分基準データに対応する基準データとをさらに比較する。
2009066338.tif 000002
【特許請求の範囲】
【請求項１】
取得したデータに対して実行する処理の内容を決定するための基準となる基準データを記憶するマッチングテーブルと、
前記基準データの一部を部分基準データとして保持するセグメントテーブルと、
前記取得したデータの中に前記基準データが含まれているか否かを、前記取得したデータと前記基準データとを比較することにより検索する検索部と、
前記検索部による検索結果と前記処理の内容とを対応づけて記憶する記憶部と、
前記検索結果に基づいて、前記検索結果に対応づけられた処理を前記取得したデータに対して実行する処理部と、を含み、
前記検索部は、まず、前記取得したデータの中に、前記セグメントテーブルに保持された部分基準データが含まれているか否かを検索し、前記部分基準データが含まれている場合、さらに、前記マッチングテーブルを参照して、前記取得したデータの中に、前記部分基準データに対応する基準データが含まれているか否かを検索することを特徴とする通信制御装置。
【請求項２】
複数の部分基準データと、各部分基準データに対応する基準データの前記マッチングテーブルでの位置との対応関係を保持する変換テーブルを更に備え、
前記検索部は、前記取得したデータの中に、前記セグメントテーブルに保持された部分基準データが含まれている場合、前記変換テーブルを参照して、その部分基準データに対応する基準データの前記マッチングテーブルでの位置を特定し、特定された位置に存在する基準データと前記取得したデータとを比較することを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記検索部は、前記取得したデータと前記部分基準データとを比較する第１の比較回路を複数含むことを特徴とする請求項１又は２に記載の通信制御装置。
【請求項４】
前記検索部は、前記取得したデータから、前記基準データと同じデータ長を有し、所定のデータ長ずつ位置をずらした複数の入力データを生成するとともに、それぞれの前記入力データから、前記部分基準データと同じデータ長を有する部分入力データを生成する入力データ生成部を更に含み、
複数の前記第１の比較回路は、前記部分入力データと複数の前記部分基準データとを、同時に並列して比較することを特徴とする請求項３に記載の通信制御装置。
【請求項５】
前記セグメントテーブルは、昇順又は降順に整列された前記部分基準データを保持し、
前記第１の比較回路は、バイナリサーチにより、前記部分入力データと一致する前記部分基準データを前記セグメントテーブルから検索することを特徴とする請求項４に記載の通信制御装置。
【請求項６】
前記検索部は、前記入力データと前記基準データとを比較する第２の比較回路を複数含み、
前記第２の比較回路は、前記部分入力データに一致する前記部分基準データが探索された場合に、前記部分入力データに対応する前記入力データと、前記部分基準データに対応する複数の基準データとを、同時に並列して比較することを特徴とする請求項４又は５に記載の通信制御装置。
【請求項７】
前記マッチングテーブルには、基準データの一部を無効とするマスクデータが含まれることを特徴とする請求項１から６のいずれかに記載の通信制御装置。
【請求項８】
前記セグメントテーブルは、前記マッチングテーブルが格納された記憶装置よりもアクセス速度の速い記憶装置に格納されることを特徴とする請求項１から７のいずれかに記載の通信制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術に関し、特に、通信データを処理する通信制御装置に関する。
【背景技術】
【０００２】
インターネットのインフラが整備され、携帯電話端末、パーソナルコンピュータ、ＶｏＩＰ（Voice over Internet Protocol）電話端末などの通信端末が広く普及した現在、インターネットの利用者は爆発的に増加している。このような状況下、コンピュータウイルス、ハッキング、スパムメールなど、セキュリティに関する問題が顕在化しており、通信を適切に制御する技術が求められている。（例えば、特許文献１）。【０００３】
特許文献１に開示された従来の通信制御装置では、パケット処理部は、汎用プロセッサであるＣＰＵと、ＣＰＵ上で動作するＯＳとを利用して、ソフトウェアにより実現されていた。しかし、このような構成では性能等の面で課題があったため、本発明者は、特許文献２に係るデータ処理装置を発明し、開示している。
【特許文献１】特開平４−１８０４２５号公報
【特許文献２】国際公開第０６／０８７８３２号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００４】
通信環境の向上に伴って通信量も増大を続けており、大容量のデータを高速に処理する技術の必要性が増している。そのため、通信制御装置にも、更なる高い性能が要求されるようになってきている。【０００５】
本発明はこうした状況に鑑みてなされたものであり、その目的は、高速な通信制御を実現する技術の提供にある。
【課題を解決するための手段】
【０００６】
本発明のある態様は、通信制御装置に関する。この通信制御装置は、取得したデータに対して実行する処理の内容を決定するための基準となる基準データを記憶するマッチングテーブルと、前記基準データの一部を部分基準データとして保持するセグメントテーブルと、前記取得したデータの中に前記基準データが含まれているか否かを、前記取得したデータと前記基準データとを比較することにより検索する検索部と、前記検索部による検索結果と前記処理の内容とを対応づけて記憶する記憶部と、前記検索結果に基づいて、前記検索結果に対応づけられた処理を前記取得したデータに対して実行する処理部と、を含み、前記検索部は、まず、前記取得したデータの中に、前記セグメントテーブルに保持された部分基準データが含まれているか否かを検索し、前記部分基準データが含まれている場合、さらに、前記マッチングテーブルを参照して、前記取得したデータの中に、前記部分基準データに対応する基準データが含まれているか否かを検索することを特徴とする。【０００７】
検索部又は処理部は、ＦＰＧＡ（Field Programmable Gate Array）などを用いて実現されてもよい。専用のハードウェア回路により検索部を構成することにより、ＣＰＵの性能の制約にとらわれず、所望の性能を有する通信制御装置を実現することができる。【０００８】
通信制御装置は、複数の部分基準データと、各部分基準データに対応する基準データの前記マッチングテーブルでの位置との対応関係を保持する変換テーブルを更に備えてもよく、前記検索部は、前記取得したデータの中に、前記セグメントテーブルに保持された部分基準データが含まれている場合、前記変換テーブルを参照して、その部分基準データに対応する基準データの前記マッチングテーブルでの位置を特定し、特定された位置に存在する基準データと前記取得したデータとを比較してもよい。【０００９】
前記検索部は、前記取得したデータと前記部分基準データとを比較する第１の比較回路を複数含んでもよい。前記検索部は、前記取得したデータから、前記基準データと同じデータ長を有し、所定のデータ長ずつ位置をずらした複数の入力データを生成するとともに、それぞれの前記入力データから、前記部分基準データと同じデータ長を有する部分入力データを生成する入力データ生成部を更に含んでもよく、複数の前記第１の比較回路は、前記部分入力データと複数の前記部分基準データとを、同時に並列して比較してもよい。前記セグメントテーブルは、昇順又は降順に整列された前記部分基準データを保持してもよく、前記第１の比較回路は、バイナリサーチにより、前記部分入力データと一致する前記部分基準データを前記セグメントテーブルから検索してもよい。【００１０】
前記検索部は、前記入力データと前記基準データとを比較する第２の比較回路を複数含んでもよく、前記第２の比較回路は、前記部分入力データに一致する前記部分基準データが探索された場合に、前記部分入力データに対応する前記入力データと、前記部分基準データに対応する複数の基準データとを、同時に並列して比較してもよい。【００１１】
前記マッチングテーブルには、基準データの一部を無効とするマスクデータが含まれてもよい。【００１２】
前記セグメントテーブルは、前記マッチングテーブルが格納された記憶装置よりもアクセス速度の速い記憶装置に格納されてもよい。【００１３】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１４】
本発明によれば、高速な通信制御を実現する技術を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】前提技術に係る通信制御システムの構成を示す図である。
【図２】従来の通信制御装置の構成を示す図である。
【図３】前提技術に係る通信制御装置の構成を示す図である。
【図４】パケット処理回路の構成を示す図である。
【図５】位置検出回路の構成を示す図である。
【図６】位置検出回路の別の例を示す図である。
【図７】位置検出回路の別の例を示す図である。
【図８】第１データベースの内部データの例を示す図である。
【図９】第１データベースの内部データの別の例を示す図である。
【図１０】第１データベースの内部データの更に別の例を示す図である。
【図１１】インデックス回路の別の例を示す図である。
【図１２】バイナリサーチ回路に含まれる比較回路の構成を示す図である。
【図１３】バイナリサーチ回路の構成を示す図である。
【図１４】第１のデータベースの内部データの更に別の例を示す図である。
【図１５】第２データベースの内部データの例を示す図である。
【図１６】第２データベースの内部データの別の例を示す図である。
【図１７】前提技術に係る通信制御装置の別の構成例を示す図である。
【図１８】複数の通信制御装置を含む通信制御装置の構成を示す図である。
【図１９】運用監視装置に設けられた管理テーブルの内部データの例を示す図である。
【図２０】通信制御装置が故障したときの運用方法を説明するための図である。
【図２１】図２１（ａ）（ｂ）（ｃ）は、通信制御装置のデータベースを更新する方法を説明するための図である。
【図２２】複数の通信制御装置によりパケットを処理するために設けられた通信経路制御装置の構成を示す図である。
【図２３】本発明の実施の形態に係る通信制御装置に含まれるパケット処理回路の構成を示す機能ブロック図である。
【図２４】セグメントテーブルのテーブル構造を例示する図である。
【図２５】マッチングテーブルのテーブル構造を例示する図である。
【図２６】変換テーブルのテーブル構造を例示する図である。
【図２７】入力データ生成回路による通信データをもとにした複数のデータの作成イメージを示す図である。
【図２８】検索回路における各回路の処理の流れを説明するフローチャートである。
【符号の説明】
【００１６】
１０  通信制御装置、２０  パケット処理回路、３０  検索回路、３２  位置検出回路、３３  比較回路、３４  インデックス回路、３５  比較回路、３６  バイナリサーチ回路、３６Ａ，３６Ｂ，３６Ｃ  比較回路、３６Ｚ  制御回路、４０  処理実行回路、５０  第１データベース、６０  第２データベース、１００  通信制御システム、１１０  運用監視装置、１２０  接続管理装置、１３０  メッセージ出力装置、１４０  ログ管理装置、１５０  データベースサーバ、２００  通信経路制御装置、３００  パケット処理回路、３１０  検索回路、３２０  入力データ生成回路、３３０  第１比較回路、３４０  第２比較回路、３５０  第１データベース、３６０  セグメントテーブル、３７０  変換テーブル、３８０  マッチングテーブル、３２２  通信データ、３２４  入力データ。
【発明を実施するための最良の形態】
【００１７】
まず、前提技術として、ＣＰＵ及びＯＳを有さず、専用のハードウェア回路によりパケットフィルタリング機能を実現する通信制御システムについて説明する。つづいて、実施の形態として、前提技術の通信制御システムに含まれる通信制御装置の改良発明であり、より高速な通信制御を実現する通信制御装置について説明する。【００１８】
（前提技術）
図１は、前提技術に係る通信制御システムの構成を示す。通信制御システム１００は、通信制御装置１０と、通信制御装置１０の動作を支援するために設けられた各種の周辺装置を含む。前提技術の通信制御装置１０は、インターネットサービスプロバイダなどにより提供されるパケットフィルタリング機能を実現する。ネットワークの経路に設けられた通信制御装置１０は、ネットワークを介して送受信されるパケットを取得して、その内容を解析し、通信の許否を判断する。通信が許可される場合は、通信制御装置１０は、そのパケットをネットワークへ送出する。通信が禁止される場合は、通信制御装置１０は、そのパケットを破棄し、必要であれば送信元に対して警告メッセージなどを返信する。【００１９】
前提技術の通信制御システム１００では、複数の通信制御装置１０ａ、１０ｂ、１０ｃ、・・・、が設けられており、それらを協働させて、１台の通信制御装置１０として機能させているが、以下、個々の通信制御装置１０ａ、１０ｂ、１０ｃ、・・・も、それらの総称も区別せずに通信制御装置１０と呼ぶ。【００２０】
本前提技術の通信制御システム１００では、それぞれの通信制御装置１０は、パケットの処理に必要なデータベースの少なくとも一部を分割して保持しているが、分割して保持するのに必要な台数よりも少なくとも１台以上余分に設けられる。例えば、１台あたり１０万件のデータを保持できるとすると、データ数が３０万件以上４０万件未満である場合、運用に必要な通信制御装置の台数は４台であるが、いずれかの通信制御装置１０が故障したときに代わって運用させるための待機用として、また、通信制御装置１０に含まれるデータベースを更新するときの待機用として、１台以上の通信制御装置１０を設け、合計で最低５台の通信制御装置１０を設ける。従来は、フォールトトレラントのために、システム全体を二重化させる必要があったが、本前提技術の技術によれば、分割された単位の通信制御装置１０を余分に設けておけばよいので、コストを低減することができる。これら複数の通信制御装置１０ａ、１０ｂ、１０ｃ、・・・、の運用状況は、運用監視装置１１０により管理される。本前提技術の運用監視装置１１０は、通信制御装置の運用状況を管理するための管理テーブルを有する。【００２１】
周辺装置は、運用監視装置１１０、接続管理装置１２０、メッセージ出力装置１３０、ログ管理装置１４０、及びデータベースサーバ１５０を含む。接続管理装置１２０は、通信制御装置１０に対する接続を管理する。接続管理装置１２０は、例えば、携帯電話端末から送出されたパケットを通信制御装置１０で処理する際に、パケットに含まれる携帯電話端末を一意に識別する情報を用いて、通信制御システム１００のサービスを享受可能なユーザであることを認証する。いったん認証されると、その携帯電話端末に一時的に付されたＩＰアドレスから送出されたパケットは、一定の期間は接続管理装置１２０で認証せずに通信制御装置１０へ送られて処理される。メッセージ出力装置１３０は、通信制御装置１０により判定された通信の許否の結果に応じて、パケットの送信先又は送信元に対するメッセージを出力する。ログ管理装置１４０は、通信制御装置１０の運用履歴を管理する。データベースサーバ１５０は、外部から最新のデータベースを取得し、通信制御装置１０に入力する。通信制御装置１０の運用を止めずにデータベースを更新するために、通信制御装置１０はバックアップ用のデータベースを有してもよい。運用監視装置１１０は、通信制御装置１０と、接続管理装置１２０、メッセージ出力装置１３０、ログ管理装置１４０、データベースサーバ１５０などの周辺装置の運用状況を監視する。運用監視装置１１０は、通信制御システム１００の中で最も優先度が高く、通信制御装置１０及び全ての周辺装置の監視制御を行う。通信制御装置１０は、後述するように、専用のハードウェア回路により構成されるが、運用監視装置１１０は、本出願人による特許第３０４１３４０号などの技術を利用して、バウンダリスキャン回路を利用して監視のためのデータを通信制御装置１０などとの間で入出力することにより、通信制御装置１０の運用中にも運用状況を監視することができる。【００２２】
前提技術の通信制御システム１００は、以下に説明するように、高速化のために専用のハードウェア回路により構成された通信制御装置１０を、周辺に接続された各種の機能を有する装置群により制御する構成とすることにより、装置群のソフトウェアを適当に入れ替えることで、同様の構成により各種の機能を実現することができる。前提技術によれば、このような柔軟性の高い通信制御システムを提供することができる。【００２３】
図２は、従来の通信制御装置１の構成を示す。従来の通信制御装置１は、受信側の通信制御部２と、パケット処理部３と、送出側の通信制御部４とを備える。通信制御部２及び４は、それぞれ、パケットの物理層の処理を行うＰＨＹ処理部５ａ及び５ｂと、パケットのＭＡＣ層の処理を行うＭＡＣ処理部６ａ及び６ｂとを備える。パケット処理部３は、ＩＰ（Internet Protocol）のプロトコル処理を行うＩＰ処理部７、ＴＣＰ（Transport Control Protocol）のプロトコル処理を行うＴＣＰ処理部８など、プロトコルに応じた処理を行うプロトコル処理部と、アプリケーション層の処理を行うＡＰ処理部９とを備える。ＡＰ処理部９は、パケットに含まれるデータに応じて、フィルタリングなどの処理を実行する。【００２４】
従来の通信制御装置１では、パケット処理部３は、汎用プロセッサであるＣＰＵと、ＣＰＵ上で動作するＯＳとを利用して、ソフトウェアにより実現されていた。しかしながら、このような構成では、通信制御装置１の性能はＣＰＵの性能に依存することになり、高速に大容量のパケットを処理可能な通信制御装置を実現しようとしても、自ずと限界がある。例えば、６４ビットのＣＰＵであれば、一度に同時に処理可能なデータ量は最大で６４ビットであり、それ以上の性能を有する通信制御装置は存在しなかった。また、汎用的な機能を有するＯＳの存在を前提としていたので、セキュリティホールなどが存在する可能性が絶無ではなく、ＯＳのバージョンアップなどのメンテナンス作業を必要としていた。【００２５】
図３は、前提技術に係る通信制御装置の構成を示す。本前提技術の通信制御装置１０は、従来の通信制御装置においてはＣＰＵ及びＯＳを含むソフトウェアにより実現されていたパケット処理部に代えて、ワイヤードロジック回路による専用のハードウェアにより構成されたパケット処理回路２０を備える。汎用処理回路であるＣＰＵにおいて動作するＯＳとソフトウェアにより通信データを処理するのではなく、通信データを処理するための専用のハードウェア回路を設けることにより、ＣＰＵやＯＳなどに起因する性能の限界を克服し、処理能力の高い通信制御装置を実現することが可能となる。【００２６】
例えば、パケットフィルタリングなどを実行するために、パケットに含まれるデータに、フィルタリングの判断基準となる基準データが含まれるか否かを検索する場合に、ＣＰＵを用いて通信データと基準データを比較すると、一度に高々６４ビットしか比較することができず、処理速度を向上させようとしてもＣＰＵの性能で頭打ちになるという問題があった。ＣＰＵでは、通信データから６４ビットをメモリへ読み上げ、基準データとの比較を行い、つづいて、次の６４ビットをメモリへ読み上げる、という処理を何度も繰り返し行う必要があるので、メモリへの読み上げ時間が律速となり、処理速度に限界がある。【００２７】
それに対し、本前提技術では、通信データと基準データとを比較するために、ワイヤードロジック回路により構成された専用のハードウェア回路を設ける。この回路は、６４ビットよりも長いデータ長、例えば、１０２４ビットのデータ長の比較を可能とするために、並列に設けられた複数の比較器を含む。このように、専用のハードウェアを設けることにより、同時に並列して多数のビットマッチングを実行することができる。従来のＣＰＵを用いた通信制御装置１では一度に６４ビットしか処理できなかったところを、一度に１０２４ビットの処理を可能にすることで、飛躍的に処理速度を向上させることができる。比較器の数を多くすれば処理能力も向上するが、コストやサイズも増大するので、所望の処理性能と、コスト、サイズ、などを考慮して、最適なハードウェア回路を設計すればよい。専用のハードウェア回路は、ＦＰＧＡ（Field Programmable Gate Array）などを用いて実現されてもよい。【００２８】
また、本前提技術の通信制御装置１０は、ワイヤードロジック回路による専用のハードウェアにより構成されるので、ＯＳ（Operating System）を必要としない。このため、ＯＳのインストール、バグ対応、バージョンアップなどの作業が必要なく、管理やメンテナンスのためのコストや工数を低減させることができる。また、汎用的な機能が求められるＣＰＵとは異なり、不必要な機能を包含していないので、余計なリソースを用いることがなく、低コスト化、回路面積の低減、処理速度の向上などが望める。さらに、ＯＳを利用していた従来の通信制御装置とは異なり、余分な機能を有しないので、セキュリティホールなどが発生する可能性が低く、ネットワークを介した悪意ある第三者からの攻撃に対する耐性に優れている。さらに、本前提技術の通信制御装置１０は、ＩＰアドレスを有しない完全透過型の通信装置として実装されてもよい。この場合、通信経路の任意の位置に通信制御装置１０を間挿し、送受信されるパケットを取り込んで処理することができる。また、ＩＰアドレスを有しないため、悪意ある第三者からの攻撃を未然に防ぐことができる。【００２９】
従来の通信制御装置１は、ＣＰＵとＯＳを前提としたソフトウェアによりパケットを処理しており、パケットの全てのデータを受信してからプロトコル処理を行い、データがアプリケーションに渡される。それに対して、本前提技術の通信制御装置１０では、専用のハードウェア回路により処理を行うので、パケットの全てのデータを受信してから処理を開始する必要はなく、処理に必要なデータを受信すれば、後続のデータの受信を待たずに、任意の時点で処理を開始することができる。例えば、後述する位置検出回路における位置検出処理は、比較対象データの位置を特定するための位置特定データを受信した時点で開始することができる。このように、全てのデータの受信を待たずに様々な処理をフローティングで実行することができるので、パケットのデータを処理するのに要する時間を短縮することができる。【００３０】
図４は、パケット処理回路の内部構成を示す。パケット処理回路２０は、通信データに対して実行する処理の内容を決定するための基準となる基準データを記憶する第１データベース５０Ａ、５０Ｂ、及び５０Ｃ（これらを総称して「第１データベース５０」という）と、受信された通信データの中に基準データが含まれているか否かを、通信データと基準データとを比較することにより検索する検索回路３０と、検索回路３０による検索結果と通信データに対して実行する処理の内容とを対応づけて記憶する第２データベース６０と、検索回路３０による検索結果と第２データベース６０に記憶された条件とに基づいて通信データを処理する処理実行回路４０とを含む。【００３１】
検索回路３０は、通信データの中から基準データと比較すべき比較対象データの位置を検出する位置検出回路３２と、第１データベース５０に記憶された基準データを３以上の範囲に分割したとき、比較対象データがそれらの範囲のうちいずれに属するかを判定する判定回路の一例であるインデックス回路３４と、判定された範囲の中で比較対象データと合致する基準データを検索するバイナリサーチ回路３６とを含む。比較対象データを基準データの中から検索する方法としては、任意の検索技術を利用可能であるが、本前提技術ではバイナリサーチ法を用いる。本前提技術では、後述するように、改良されたバイナリサーチ法を用いるので、そのために第１データベース５０を３つ設けている。第１データベース５０Ａ、５０Ｂ、及び５０Ｃには、同じ基準データが格納されている。【００３２】
図５は、位置検出回路の内部構成を示す。位置検出回路３２は、比較対象データの位置を特定するための位置特定データと通信データとを比較するための複数の比較回路３３ａ〜３３ｆを含む。ここでは、６個の比較回路３３ａ〜３３ｆが設けられているが、後述するように、比較回路の個数は任意でよい。それぞれの比較回路３３ａ〜３３ｆには、通信データが、所定のデータ長、例えば、１バイトずつずらして入力される。そして、これら複数の比較回路３３ａ〜３３ｆにおいて、同時に並列して、検出すべき位置特定データと通信データとの比較がなされる。【００３３】
本前提技術においては、通信制御装置１０の動作を説明するための例として、通信データ中に含まれる「Ｎｏ．  ＃＃＃」という文字列を検出し、その文字列中に含まれる数字「＃＃＃」を基準データと比較して、基準データに合致した場合はパケットの通過を許可し、合致しなかった場合はパケットを破棄する処理を行う場合について説明する。【００３４】
図５の例では、通信データの中から、数字「＃＃＃」の位置を特定するための位置特定データ「Ｎｏ．」を検出するために、通信データ「０１Ｎｏ．  ３６１・・・」を、１文字ずつずらして比較回路３３ａ〜３３ｆに入力している。すなわち、比較回路３３ａには「０１Ｎ」が、比較回路３３ｂには「１Ｎｏ」が、比較回路３３ｃには「Ｎｏ．」が、比較回路３３ｄには「ｏ．  」が、比較回路３３ｅには「．  ３」が、比較回路３３ｆには「  ３６」が、それぞれ入力される。ここで、比較回路３３ａ〜３３ｆが同時に位置特定データ「Ｎｏ．」との比較を実行する。これにより、比較回路３３ｃがマッチし、通信データの先頭から３文字目に「Ｎｏ．」という文字列が存在することが検出される。こうして、位置検出回路３２により検出された位置特定データ「Ｎｏ．」の次に、比較対象データである数字のデータが存在することが検出される。【００３５】
ＣＰＵにより同様の処理を行うならば、まず、文字列「０１Ｎ」を「Ｎｏ．」と比較し、続いて、文字列「１Ｎｏ」を「Ｎｏ．」と比較する、というように、先頭から順に１つずつ比較処理を実行する必要があるため、検出速度の向上は望めない。これに対し、本前提技術の通信制御装置１０では、複数の比較回路３３ａ〜３３ｆを並列に設けることにより、ＣＰＵではなしえなかった同時並列的な比較処理が可能となり、処理速度を格段に向上させることができる。比較回路は多ければ多いほど同時に比較可能な位置が多くなるので、検出速度も向上するが、コスト、サイズ、などを考慮の上、所望の検出速度を得られるのに十分な数の比較回路を設ければよい。【００３６】
位置検出回路３２は、位置特定データを検出するためだけでなく、汎用的に文字列を検出する回路として利用されてもよい。また、文字列だけでなく、ビット単位で位置特定データを検出するように構成されてもよい。【００３７】
図６は、位置検出回路の別の例を示す。図６に示した例では、位置検出回路３２に設けられたそれぞれの比較回路３３ａ〜３３ｆのデータ長よりも位置特定データの方が短い場合は、位置特定データの後に所定のデータ、例えば、「００Ｈ」又は「０１Ｈ」などをパディングする。また、位置特定データと比較する通信データについても、位置特定データと同じデータ長のみを抜き出して、その後に、位置特定データにパディングしたデータと同じデータをパディングする。このとき、通信データ自身を改変しないために、通信データをワークとしてコピーし、コピーしたデータを加工して比較回路３３ａ〜３３ｆに入力してもよい。これにより、位置特定データのデータ長によらず、位置検出回路３２を汎用的に用いることができる。【００３８】
図７は、位置検出回路の更に別の例を示す。図７に示した例では、図６に示した例と同様に、位置特定データの後に所定のデータをパディングするが、このデータをワイルドカードとして扱う。すなわち、比較回路３３ａ〜３３ｆは、ワイルドカードであるデータが入力されると、比較対象のデータが何であっても無条件に合致したと判定する。これにより、位置特定データのデータ長によらず、位置検出回路３２を汎用的に用いることができる。【００３９】
図８は、第１データベースの内部データの例を示す。第１データベース５０には、パケットのフィルタリング、ルーティング、スイッチング、置換などの処理の内容を決定するための基準となる基準データが、何らかのソート条件にしたがって昇順又は降順にソートされて格納されている。図８の例では、１０００個の基準データが記憶されている。【００４０】
インデックス回路３４は、第１データベース５０に格納されている基準データを３以上の範囲５２ａ〜５２ｄに分割したとき、比較対象データがそれらの範囲のうちいずれに属するかを判定する。図８の例では、１０００個の基準データは、２５０個ずつ４つの範囲５２ａ〜５２ｄに分割されている。インデックス回路３４は、範囲の境界の基準データと比較対象データとを比較する複数の比較回路３５ａ〜３５ｃを含む。比較回路３５ａ〜３５ｃにより比較対象データと境界の基準データとを同時に並列して比較することにより、比較対象データがいずれの範囲に属するかを１度の比較処理で判定することができる。【００４１】
インデックス回路３４の比較回路３５ａ〜３５ｃに入力される境界の基準データは、通信制御装置１０の外部に設けられた装置により設定されてもよいし、予め第１データベース５０の所定位置の基準データが自動的に入力されるようにしてもよい。後者の場合、第１データベース５０を更新しても、自動的に第１データベース５０の所定位置の基準データが比較回路３５ａ〜３５ｃに入力されるので、初期設定などを必要とせず、直ちに通信制御処理を実行させることができる。【００４２】
前述したように、ＣＰＵによりバイナリサーチを実行する場合は、同時に複数の比較を実行することができないが、本前提技術の通信制御装置１０では、複数の比較回路３５ａ〜３５ｃを並列に設けることにより、同時並列的な比較処理を可能とし、検索速度を格段に向上させることができる。【００４３】
インデックス回路３４により範囲が判定されると、バイナリサーチ回路３６がバイナリサーチ法により検索を実行する。バイナリサーチ回路３６は、インデックス回路３４により判定された範囲をさらに２ｎ個に分割し、その境界位置にある基準データと比較対象データとを比較することにより、いずれの範囲に属するかを判定する。バイナリサーチ回路３６は、基準データと比較対象データとをビット単位で比較する比較器を複数個、例えば本前提技術では１０２４個含んでおり、１０２４ビットのビットマッチングを同時に実行する。２ｎ分割された範囲のいずれに属するかが判定されると、さらに、その範囲を２ｎ分割して境界位置にある基準データを読み出し、比較対象データと比較する。以降、この処理を繰り返すことにより範囲をさらに限定し、最終的に比較対象データと合致する基準データを検索する。【００４４】
前述した例を用いてさらに詳細に動作を説明する。インデックス回路３４の比較回路３５ａ〜３５ｃには、比較対象データとして「３６１」が入力され、基準データとして、比較回路３５ａには、範囲５２ａと５２ｂの境界にある基準データ「３７８」が、比較回路３５ｂには、範囲５２ｂと５２ｃの境界にある基準データ「７０４」が、比較回路３５ｃには、範囲５２ｃと５２ｄの境界にある基準データ「９３７」が、それぞれ入力される。比較回路３５ａ〜３５ｃにより同時に比較が行われ、比較対象データ「３６１」が範囲５２ａに属することが判定される。以降、バイナリサーチ回路３６が基準データの中に比較対象データ「３６１」が存在するか否かを検索する。【００４５】
図９は、第１データベースの内部データの別の例を示す。図９に示した例では、基準データのデータ数が、第１データベース５０に保持可能なデータ数、ここでは１０００個よりも少ない。このとき、第１データベース５０には、最終データ位置から降順に基準データが格納される。そして、残りのデータには０が格納される。データベースのローディング方法として、先頭からデータを配置せずにローディングエリアの後方から配置し、ローディングエリア先頭に空きが生じた場合は全ての空きをゼロサプレスすることで、データーベースは常にフルの状態になり、バイナリー検索する場合の検索時間を一定にすることができる。また、バイナリサーチ回路３６は、検索中に基準データとして「０」を読み込んだときには、比較結果が自明であるから、比較を行わずに範囲を特定して、次の比較にうつることができる。これにより、検索速度を向上させることができる。【００４６】
ＣＰＵによるソフトウェア処理においては、第１データベース５０に基準データを格納する際に、最初のデータ位置から昇順に基準データが格納される。残りのデータには、例えば最大値が格納されることになるが、この場合、バイナリサーチにおいて、上述したような比較処理の省略はできない。上述した比較技術は、専用のハードウェア回路により検索回路３０を構成したことにより実現される。【００４７】
図１０は、第１データベースの内部データのさらに別の例を示す。図１０に示した例では、基準データを均等に３以上の範囲に分割するのではなく、範囲５２ａは５００個、範囲５２ｂは１００個というように、範囲に属する基準データの数が不均一になっている。これらの範囲は、通信データ中における基準データの出現頻度の分布に応じて設定されてもよい。すなわち、それぞれの範囲に属する基準データの出現頻度の和がほぼ同じになるように範囲が設定されてもよい。これにより、検索効率を向上させることができる。インデックス回路３４の比較回路３５ａ〜３５ｃに入力される基準データは、外部から変更可能になっていてもよい。これにより、範囲を動的に設定することができ、検索効率を最適化することができる。【００４８】
図１１は、インデックス回路の別の例を示す。図８〜１０に示した例では、インデックス回路３４は、３つの比較回路３５ａ〜３５ｃを用いて、比較対象データが第１データベース５０の４つの範囲５２ａ〜５２ｄのいずれに属するかを判定したが、図１１の例では、インデックス回路３４には、比較対象データが、４つの範囲５２ａ〜５２ｄのそれぞれに含まれるか否かを判定するための４つの比較回路３５ｄ〜３５ｇが設けられている。例えば、比較回路３５ｄには、第１データベース５０の０件目の基準データと、２５０件目の基準データと、比較対象データとが入力され、それぞれの基準データと比較対象データとを比較することにより、基準データが範囲５２ａに含まれるか否かを判定する。それぞれの比較回路３５ｄ〜３５ｇの比較結果は判定回路３５ｚに入力され、判定回路３５ｚから、基準データがいずれの範囲に含まれているかが出力される。比較回路３５ｄ〜３５ｇは、基準データが入力された２つの基準データの間に含まれるか否かを出力してもよいし、範囲よりも大きい、範囲に含まれる、範囲よりも小さい、のいずれかを出力してもよい。比較対象データが、範囲５２ａ〜５２ｄのいずれにも含まれないと判定された場合は、比較対象データが第１データベース５０中に存在しないことが分かるので、以降のバイナリサーチを行うまでもなく、検索を終了することができる。【００４９】
図１２は、バイナリサーチ回路に含まれる比較回路の構成を示す。前述したように、バイナリサーチ回路３６に含まれる比較回路は、１０２４個の比較器３６ａ、３６ｂ、・・・、を含む。それぞれの比較器３６ａ、３６ｂ、・・・、には、基準データ５４と比較対象データ５６が１ビットずつ入力され、それらの大小が比較される。インデックス回路３４の各比較回路３５ａ〜３５ｃの内部構成も同様である。このように、専用のハードウェア回路で比較処理を実行することにより、多数の比較回路を並列して動作させ、多数のビットを同時に比較することができるので、比較処理を高速化することができる。【００５０】
図１３は、バイナリサーチ回路の構成を示す。バイナリサーチ回路３６は、図１２に示した１０２４個の比較器３６ａ、３６ｂ、・・・を含む比較回路３６Ａ、３６Ｂ、及び３６Ｃと、それらの比較回路を制御する制御回路３６Ｚを含む。【００５１】
従来のバイナリサーチ法では、まず１回目は、データが昇順又は降順に整列されたデータベースの探索対象範囲の１／２の位置にあるデータを読み出して比較対象データと比較する。データが昇順に並べられている場合、比較対象データの方が小さければ、比較対象データは探索対象範囲の前半に存在するので、２回目は前半を探索対象範囲としてその１／２、すなわち最初の探索対象範囲の１／４の位置にあるデータを読み出して比較対象データと比較する。逆に、比較対象データの方が大きければ、比較対象データは探索対象範囲の後半に存在するので、２回目は後半を探索対象範囲としてその１／２、すなわち最初の探索対象範囲の３／４の位置にあるデータを読み出して比較対象データと比較する。このように、探索対象範囲を半分ずつ絞っていき、最終的に対象データに到達する。【００５２】
本前提技術では、バイナリサーチのための比較回路を３つ設けているので、１回目の探索のために探索対象範囲の１／２の位置にあるデータと比較対象データとを比較させるときに、同時に並行して、２回目の探索のために探索対象範囲の１／４及び３／４の位置にあるデータと比較対象データとを比較させる。これにより、２回分の探索を一度に行うことができるので、データベースからデータを読み上げる時間を短縮することができる。また、３つの比較回路を同時に並列して動作させることにより、比較の回数を半分に抑え、探索に要する時間を短縮することができる。【００５３】
図１３の例では、２回分の探索を同時に行うために、３つの比較回路を設けたが、一般に、ｎ回分の探索を同時に並行して行うためには、２ｎ−１個の比較回路を設ければよい。制御回路３６Ｚは、探索対象範囲の１／２ｎ、２／２ｎ、・・・、（２ｎ−１）／２ｎの位置のデータを、２ｎ−１個の比較回路のそれぞれに入力させ、それらを同時に並列して動作させて比較対象データと比較させる。制御回路３６Ｚは、それぞれの比較回路の比較結果を取得して、比較対象データが探索されたか否かを判定する。制御回路３６Ｚは、いずれかの比較回路が、データが一致した旨の信号を出力した場合、比較対象データが探索されたと判定して、バイナリサーチを終了する。一致した旨の信号が出力されなかった場合、次回の探索に移る。比較対象データがデータベースに存在するならば、２ｎ−１個の比較回路の比較結果が反転する範囲に存在するはずである。例えば、１５個の比較回路が設けられているときに、５／１６の位置のデータが比較対象データより小さく、６／１６の位置のデータが比較対象データより大きければ、５／１６から６／１６の間の範囲に比較対象データがある。したがって、制御回路３６Ｚは、各比較回路の比較結果を取得して、比較結果が反転した範囲を次回の探索対象範囲と決定し、決定された次回の探索対象範囲の１／２ｎ、２／２ｎ、・・・、（２ｎ−１）／２ｎの位置のデータをそれぞれの比較回路へ入力させる。【００５４】
本前提技術では、第１データベース５０を３つ設けており、第１データベース５０Ａは比較回路３６Ａに接続されて探索対象範囲の１／４の位置にあるデータを比較回路３６Ａに供給し、第１データベース５０Ｂは比較回路３６Ｂに接続されて探索対象範囲の２／４の位置にあるデータを比較回路３６Ｂに供給し、第１データベース５０Ｃは比較回路３６Ｃに接続されて探索対象範囲の３／４の位置にあるデータを比較回路３６Ｃに供給する。これにより、それぞれの比較回路にデータを同時に並行して読み上げることができるので、データの読み上げに要する時間を更に短縮し、バイナリサーチを高速化することができる。【００５５】
比較回路は多ければ多いほど探索速度も向上するが、コスト、サイズなどを考慮の上、所望の探索速度を得られるのに十分な数の比較回路を設ければよい。また、比較回路の数と同じだけ第１データベースを設けるのが好ましいが、コスト、サイズなどを考慮の上、いくつかの比較回路でデータベースを共用してもよい。【００５６】
図１４は、第１データベースの内部データの更に別の例を示す。図１４に示した第１データベース５０は、フィルタリングの対象となるコンテンツのＵＲＬを格納している。第１データベース５０に格納されるデータは、ワイルドカードとして認識される所定のデータ、例えば、「００Ｈ」又は「０１Ｈ」などを含んでもよい。図１４に示した例において、「http://www.xx.xx/*********」は、「*********」がワイルドカードとして認識され、比較器３６ａ、３６ｂ、・・・において、比較対象データが何であっても合致すると判定される。したがって、「http://www.xx.xx/」で始まる文字列は全てバイナリサーチ回路３６により検出される。これにより、例えば、ドメイン「http://www.xx.xx/」の配下にあるコンテンツの全てにフィルタリングをかける処理などを容易に行うことができる。【００５７】
図１５は、第２データベースの内部データの例を示す。第２データベース６０は、検索回路３０による検索結果を格納する検索結果欄６２と、通信データに対して実行する処理の内容を格納する処理内容欄６４とを含み、検索結果と処理内容とを対応づけて保持する。図１５の例では、通信データに基準データが含まれている場合は、そのパケットの通過を許可し、含まれていない場合は、そのパケットを破棄するという条件が設定されている。処理実行回路４０は、検索結果に基づいて第２データベース６０から処理内容を検索し、通信データに対して処理を実行する。処理実行回路４０も、ワイヤードロジック回路により実現されてもよい。【００５８】
図１６は、第２データベースの内部データの別の例を示す。図１６の例では、基準データごとに、処理内容が設定されている。パケットの置換を行う場合、置換先のデータを第２データベース６０に格納しておいてもよい。パケットのルーティングやスイッチングを行う場合、経路に関する情報を第２データベース６０に格納しておいてもよい。処理実行回路４０は、検索回路３０による検索結果に応じて、第２データベース６０に格納された、フィルタリング、ルーティング、スイッチング、置換などの処理を実行する。図１６のように、基準データごとに処理内容を設定する場合、第１データベース５０と第２データベース６０とを統合してもよい。【００５９】
第１のデータベース及び第２のデータベースは、外部から書き換え可能に設けられる。これらのデータベースを入れ替えることにより、同じ通信制御装置１０を用いて、さまざまなデータ処理や通信制御を実現することができる。また、検索対象となる基準データを格納したデータベースを２以上設けて、多段階の検索処理を行ってもよい。このとき、検索結果と処理内容とを対応づけて格納したデータベースを２以上設けて、より複雑な条件分岐を実現してもよい。このように、データベースを複数設けて多段階の検索を行う場合に、位置検出回路３２、インデックス回路３４、バイナリサーチ回路３６などを複数設けてもよい。【００６０】
上述した比較に用いられるデータは、同じ圧縮ロジックにより圧縮されてもよい。比較に際して、比較元のデータと比較先のデータが同じ方式で圧縮されていれば、通常と同様の比較が可能である。これにより、比較の際にローディングするデータ量を低減することができる。ローディングするデータ量が少なくなれば、メモリからデータを読み出すのに要する時間が短縮されるので、全体の処理時間も短縮することができる。また、比較器の量を削減することができるので、装置の小型化、軽量化、低コスト化に寄与することができる。比較に用いられるデータは、圧縮された形式で格納されていてもよいし、メモリから読み出した後、比較の前に圧縮されてもよい。【００６１】
図１７は、前提技術の通信制御装置の別の構成例を示す。本図に示した通信制御装置１０は、図４に示した通信制御装置１０と同様の構成を備える通信制御ユニット１２を２つ有している。また、それぞれの通信制御ユニット１２の動作を制御する切替制御部１４が設けられている。それぞれの通信制御ユニット１２は、２つの入出力インタフェース１６を有しており、それぞれの入出力インタフェース１６を介して、上流側、下流側の２つのネットワークに接続されている。通信制御ユニット１２は、いずれか一方のネットワークから通信データを入力し、処理したデータを他方のネットワークに出力する。切替制御部１４は、それぞれの通信制御ユニット１２に設けられた入出力インタフェース１６の入出力を切り替えることにより、通信制御ユニット１２における通信データの流れの方向を切り替える。これにより、一方向だけではなく、双方向の通信制御が可能となる。【００６２】
切替制御部１４は、通信制御ユニット１２の一方がインバウンド、他方がアウトバウンドのパケットを処理するように制御してもよいし、双方がインバウンドのパケットを処理するように制御してもよいし、双方がアウトバウンドのパケットを処理するように制御してもよい。これにより、例えばトラフィックの状況や目的などに応じて、制御する通信の方向を可変とすることができる。【００６３】
切替制御部１４は、各通信制御ユニット１２の動作状況を取得し、その動作状況に応じて通信制御の方向を切り替えてもよい。例えば、一方の通信制御ユニット１２を待機状態として、他方の通信制御ユニット１２を動作させている場合に、その通信制御ユニット１２が故障などにより停止したことを検知したときに、代替として待機中の通信制御ユニット１２を動作させてもよい。これにより、通信制御装置１０のフォールトトレランスを向上させることができる。また、一方の通信制御ユニット１２に対して、データベースの更新などのメンテナンスを行うときに、他方の通信制御ユニット１２を代替として動作させてもよい。これにより、通信制御装置１０の運用を停止させずに、適切にメンテナンスを行うことができる。【００６４】
通信制御装置１０に３以上の通信制御ユニット１２が設けられてもよい。切替制御部１４は、例えば、トラフィックの状況を取得して、通信量の多い方向の通信制御処理に、より多くの通信制御ユニット１２を割り当てるように、各通信制御ユニット１２の通信の方向を制御してもよい。これにより、ある方向の通信量が増加しても、通信速度の低下を最小限に抑えることができる。【００６５】
なお、複数の通信制御ユニット１２の間で、通信制御部２又は４の一部が共用されてもよい。また、パケット処理回路２０の一部が共用されてもよい。【００６６】
図１８は、複数の通信制御装置１０ａ、１０ｂ、１０ｃ、・・・、を含む通信制御装置１０の構成を示す。第１データベース５０は、データ数に比例して大きな容量を必要とするので、分割して通信制御装置１０ａ、１０ｂ、１０ｃ、・・・、に保持させる。後述するように、本前提技術の通信制御システム１００では、処理すべき通信パケットを、運用中の全ての通信制御装置１０ａ、１０ｂ、１０ｃ、・・・、に供給し、それぞれの通信制御装置１０が受け取ったパケットを処理する。例えば、通信制御装置１０ａは、データＩＤが「０００００１」から「１０００００」まで、通信制御装置１０ｂは、データＩＤが「１００００１」から「２０００００」まで、通信制御装置１０ｃは、データＩＤが「２００００１」から「３０００００」までのデータを保持しており、それぞれが保持するデータを参照してパケットを処理する。【００６７】
図１９は、運用監視装置１１０に設けられた管理テーブル１１１の内部データの例を示す。管理テーブル１１１には、装置ＩＤ欄１１２、運用状況欄１１３、データＩＤ欄１１４が設けられている。装置ＩＤ欄１１２には、通信制御装置１０ａ、１０ｂ、・・・、の装置ＩＤが格納され、運用状況欄１１３には、その通信制御装置の運用状況が格納され、データＩＤ欄１１４には、その通信制御装置が担当すべきデータＩＤの範囲が格納される。運用状況には、例えば、「運用中」、「スタンバイ」、「故障中」、「データ更新中」などがある。運用状況欄１１３は、通信制御装置１０ａ、１０ｂ、・・・、の運用状況が変更されるたびに、運用監視装置１１０により更新される。図１９に示した例では、「４６５１８３」件のデータが第１データベース５０に格納されるので、装置ＩＤ「１」〜「５」の５台の通信制御装置１０が運用されており、装置ＩＤ「６」の通信制御装置１０はスタンバイ状態となっている。【００６８】
運用監視装置１１０は、複数の通信制御装置１０の運用状況を監視し、いずれかの通信制御装置１０においてトラブルが発生して運用不可能な状態になったことを検知したときには、スタンバイ状態となっている通信制御装置１０に、運用が停止した通信制御装置１０と同じデータを格納し、その通信制御装置１０に運用を切り替える。例えば、図２０に示すように、装置ＩＤ「２」の通信制御装置１０が故障により運用停止した場合、スタンバイ状態であった装置ＩＤ「６」の通信制御装置１０に、データＩＤ「１００００１〜２０００００」のデータを格納して運用を開始させる。これにより、何らかのトラブルで通信制御装置１０が停止されるような状況になっても、適切に運用を継続することができる。スタンバイ中の通信制御装置１０には、予めいずれかのデータを格納しておき、ホットスタンバイ状態にしておいてもよいし、コールドスタンバイ状態にしておいてもよい。【００６９】
次に、通信制御装置１０に含まれるデータベースを更新する手順について説明する。データベースサーバ１５０は、所定のタイミングで外部のデータベースから最新のデータベースを取得して保持する。運用監視装置１１０は、所定のタイミングで、データベースサーバ１５０に保持された最新のデータベースを通信制御装置１０に反映させるために、データベースサーバ１５０から通信制御装置１０にデータを転送して格納させる。【００７０】
図２１（ａ）（ｂ）（ｃ）は、データベースを更新する様子を説明するための図である。図２１（ａ）は、図１９と同様に、装置ＩＤ「１」〜「５」の通信制御装置１０が運用中であり、装置ＩＤ「６」の通信制御装置１０がスタンバイ中である状況を示す。運用監視装置１１０は、データベースを更新するタイミングが到来すると、現在スタンバイ状態である通信制御装置１０を特定し、その通信制御装置１０に対してデータを格納するようデータベースサーバ１５０に指示する。図２１（ａ）の例では、装置ＩＤ「６」の通信制御装置１０がスタンバイ中であるから、この通信制御装置１０にデータベースサーバ１５０からデータが格納される。このとき、運用監視装置１１０は、装置ＩＤ「６」の運用状況欄１１３を「データ更新中」に変更する。【００７１】
図２１（ｂ）は、通信制御装置１０のデータベースが更新中である状況を示す。データベースサーバ１５０は、運用中の通信制御装置１０のいずれかが担当するデータを、スタンバイ中であった装置ＩＤ「６」の通信制御装置１０の第１データベース５０に格納する。図２１（ｂ）の例では、装置ＩＤ「１」の通信制御装置１０が担当していた、データＩＤ「０００００１〜１０００００」のデータを、装置ＩＤ「６」の通信制御装置１０に格納している。【００７２】
図２１（ｃ）は、装置ＩＤ「６」の通信制御装置１０のデータベースが更新されて運用が開始され、代わって装置ＩＤ「１」の通信制御装置１０がスタンバイ状態となった状況を示す。運用監視装置１１０は、装置ＩＤ「６」の通信制御装置１０に対するデータの格納が終了すると、更新後のデータベースを保持する装置ＩＤ「６」の通信制御装置１０の運用を開始すると同時に、更新前のデータベースを保持する装置ＩＤ「１」の通信制御装置１０の運用を停止してスタンバイ状態にする。これにより、データベースが更新された通信制御装置１０に運用が切り替えられる。つづいて、装置ＩＤ「１」の通信制御装置１０に、データＩＤ「１００００１〜２０００００」のデータを格納した後、装置ＩＤ「１」の通信制御装置１０を運用開始し、装置ＩＤ「２」の通信制御装置１０の運用を停止する。以降、同様に、巡回的にデータベースを更新していくことで、通信制御システム１００の運用を停止することなく、全ての通信制御装置１０のデータベースを背後で更新することができる。【００７３】
このように、本前提技術の通信制御装置１０では、各通信制御装置１０に格納されているデータは固定的ではなく、あるデータがいずれの通信制御装置１０に格納されているかは、時間によって移り変わる。各通信制御装置１０にパケットを送る前に、いずれの通信制御装置１０にそのユーザのデータが存在するかを判定する処理を行うと、その処理に要する時間が余分にかかる。そのため、本実施の形態では、受信したパケットを全ての通信制御装置１０へ供給し、各通信制御装置１０がパケットを処理する。以下、このような仕組みを実現するための技術について説明する。【００７４】
図２２は、複数の通信制御装置１０によりパケットを処理するために設けられた通信経路制御装置の構成を示す。通信経路制御装置２００は、スイッチ２１０、データ供給ユニットの一例である光スプリッタ２２０、及びスイッチ２３０を備える。スイッチ２１０は、受信したパケットを通信制御装置１０へ送信する。ここで、スイッチ２１０と通信制御装置１０の間には、複数の通信制御装置１０ａ、１０ｂ、１０ｃにパケットを並行して供給するための光スプリッタ２２０が設けられており、スイッチ２１０は、実際には光スプリッタ２２０へパケットを送信し、光スプリッタ２２０が各通信制御装置へパケットを並行して送信する。【００７５】
複数の通信制御装置１０ａ、１０ｂ、１０ｃへパケットを送信するために、パケットをブロードキャストに変換すると、例えばヘッダにタイムスタンプを追加するなどの余分な処理が発生し、処理速度が低下してしまう。そのため、パケットに変更を加えずに、光スプリッタ２２０により分割して、ユニキャストのまま複数の通信制御装置１０ａ、１０ｂ、１０ｃへパケットを送信する。この方式を、本明細書では「パラレルキャスト」と呼ぶ。【００７６】
各通信制御装置は、自装置のＭＡＣアドレス宛のパケットのみを受信するモードではなく、宛先のＭＡＣアドレスに関係なく全てのパケットを受信するプロミスキャスモードに設定される。各通信制御装置は、光スプリッタ２２０からパラレルキャストされたパケットを受信すると、ＭＡＣアドレスのマッチング処理を省き、全てのパケットを取得して処理する。【００７７】
通信制御装置１０ｃは、通信が禁止された場合など、送信元宛にパケットを返信する場合には、光スプリッタ２２０を介さずにスイッチ２１０へ応答パケットを送信する。通信制御装置１０ｃは、パケットを処理した結果、通信が許可された場合は、そのパケットをネットワークへ送出する。ここで、通信制御装置１０と上流の通信回線の間には、複数の通信制御装置１０ａ、１０ｂ、１０ｃから送出されるパケットを集約するためのスイッチ２３０が設けられており、通信制御装置１０ｃは、実際にはスイッチ２３０へパケットを送信し、スイッチ２３０が上流の通信回線へパケットを送出する。【００７８】
パケットの送信先から返信されたパケットをスイッチ２３０が受信したときに、返信されたパケットが通信制御装置１０による処理を必要としない場合は、スイッチ２３０のポート２３２からスイッチ２１０のポート２１２へ送信され、スイッチ２１０から送信元に向けて送出される。通常、インターネットでは、パケットに対する応答パケットが確実に送信元に返信されるよう、返信経路を確保するために、送信時の経路がパケットに記録される。しかし、本実施の形態では、通信経路制御装置２００内における返信経路が予め用意されているので、経路を記録せずに、すなわち、パケットを加工せずに装置間の通信を行う。これにより、無駄な処理を省き、処理速度を向上させることができる。【００７９】
図２２の例では、送信元から発信されたパケットを送信先へ送出する場合にのみパケットを処理し、送信先から送信元へ送出された応答パケットは処理せずに通過させる場合の構成を示しているが、通信制御装置１０が両方向のパケットを処理するように構成してもよい。この場合、通信制御装置１０の両側に光スプリッタ２２０を設ければよい。また、スイッチ２３０からスイッチ２１０へのバイパス経路は設けなくてもよい。【００８０】
このように、複数の通信制御装置のうち、パケットを処理すべき通信制御装置を予め特定しなくても、全ての通信制御装置に同じパケットをパラレルキャストすることにより、処理すべき通信制御装置に適切にパケットを処理させることができる。【００８１】
これらの通信制御装置は、上述したように、通信経路制御装置２００からパラレルキャストされる全てのパケットを受信して処理又は破棄するので、インターネット上で装置を一意に識別するためのＩＰアドレスを付与しておく必要がない。サーバ装置などにより、上述したようなパケット処理を実行する場合は、サーバ装置に対する攻撃を考慮する必要があるが、本実施の形態の通信制御装置は、インターネットを介して悪意ある第三者から直接攻撃を受けることがないので、安全に通信制御を行うことができる。【００８２】
（実施の形態）
高速な通信制御を実現するために、本発明者は、前提技術で説明したように、ワイヤードロジック回路により実装された通信制御装置を開発している。本発明者は、更なる性能の向上を目指した開発を続ける中で、基準データを保持する記憶領域からデータを読み上げるのに要する時間を短縮することにより、通信制御の性能を更に向上させることができることを知見した。【００８３】
一般に、記憶装置へのアクセス速度と、その記憶装置の記憶容量とはトレードオフの関係にある。例えば、ＳＲＡＭ（Static Random Access Memory）は、アクセス速度は高速であるが、記憶容量は小さい。他方、ＤＲＡＭ（Dynamic Random Access Memory）は、アクセス速度はＳＲＡＭに劣るものの、大容量の記憶が可能である。【００８４】
セキュリティ上の脅威が多数存在する現在、基準データは数百〜数千件のレベルとなっている。したがって、基準データ全体を保持できるメモリの容量も、例えば数十メガバイトが必要とされ、現実的にはワイヤードロジック回路の外部のＤＲＡＭメモリ等（以下、「外部メモリ」と呼ぶ。）に保持せざるを得ない。その結果、基準データへのアクセス速度は低速となり、性能のボトルネックとなる可能性がある。【００８５】
本発明者は、通信データと、それと比較する基準データとの比較処理を多段構成とすることで、このような課題を解決することができることに想到した。すなわち、基準データは従来通り外部メモリに保持しておくとともに、それぞれの基準データの一部を部分基準データとして予め抽出しておき、それをワイヤードロジック回路内部に設けられた、外部メモリよりも高速な記憶装置（以下、「回路内部バッファ」と呼ぶ。）に記憶させておく。部分基準データのデータ量は小さいため、回路内部バッファに保持可能である。第１段階の比較として、通信データと回路内部バッファ内の部分基準データとを比較することにより、この時点で合致しない通信データをふるい落とすことができる。そして、第１段階の比較に適合した通信データだけを、第２段階の比較として、外部メモリ内の基準データと比較する。結果として、外部メモリからの読み出しが減り、比較処理の時間が削減される。以下、実施の形態として、この多段構成の比較処理を実現する通信制御装置について説明する。【００８６】
図２３は、本実施の形態に係る通信制御装置に含まれるパケット処理回路３００の構成を示す。同図は、前提技術の図４に示したパケット処理回路２０の構成図と対応する。なお、本実施の形態の通信制御装置の全体構成は、図３に示した前提技術の通信制御装置の全体構成と同様である。以下、前提技術と同じ機能ブロックについては、前提技術の説明で用いた符号と同一のものを使用し、詳細な説明は省略する。【００８７】
パケット処理回路３００は、前提技術のパケット処理回路２０と同様に、ワイヤードロジック回路により、専用のハードウェア回路として構成されている。したがって、ソフトウェアにより実現されるパケット処理回路とは異なり、ＣＰＵの性能限界やＯＳのセキュリティホール等の影響を受けないことは、前提技術のパケット処理回路２０と同様である。パケット処理回路３００は、検索回路３１０、第１データベース３５０、処理実行回路４０、及び第２データベース６０を備える。【００８８】
第１データベース３５０は、通信データに対して実行する処理の内容を決定するための基準となる基準データを格納する。本図では、第１データベースが１つのみ設けられているが、前提技術のように複数設けられてもよい。検索回路３１０は、受信された通信データの中に基準データが含まれているか否かを、通信データと基準データとを比較することにより検索する。処理実行回路４０と、第２データベース６０の機能は、前提技術と同様である。第２データベース６０は、検索回路３１０による検索結果と通信データに対して実行する処理の内容とを対応付けて記憶する。処理実行回路４０は、検索回路３１０による検索結果と第２データベース６０に記憶された条件とに基づいて通信データを処理する。【００８９】
第１データベース３５０は、セグメントテーブル３６０、変換テーブル３７０、マッチングテーブル３８０を有する。
セグメントテーブル３６０は、基準データの所定のデータ長の部分文字列を部分基準データとして保持する。なお、セグメントテーブル３６０は、昇順もしくは降順に整列されているものとする。図２４は、セグメントテーブル３６０のテーブル構造を例示する図である。同図では、「Ｔａ」で始まりデータ長が３バイトの部分基準データを例示している。例えば、基準データ「Ｔａｋａｉ」・「Ｔａｋａｈａｓｉ」等に対応する部分基準データとして「Ｔａｋ」が格納されており、基準データ「Ｔａｍｕｒａ」・「Ｔａｍａｋｉ」等に対応する部分基準データとして「Ｔａｍ」が格納されている。【００９０】
マッチングテーブル３８０は、基準データを保持する。図２５は、マッチングテーブル３８０のテーブル構造を例示する図である。本実施の形態に係るマッチングテーブル３８０には、末尾が０番地のアドレスに、基準データが格納されている。また、基準データは８バイトの固定長とし、８バイトに満たないものは「＊」でパディングされている。また、末尾が１番地のアドレスには、マスクデータが格納されている。これは、基準データの有効・無効の領域をビット単位で指定するものである。また本例では、マスクデータが１が基準データの有効を示し、０が基準データの無効を示すものであるとする。【００９１】
図２５を使用してさらなる具体例を示す。基準データ「Ｔａｋａｉ＊＊＊」の場合には、マスクデータが８進数表記で「７７７７７０００」として与えられている。したがって、基準データの有効な文字列は「Ｔａｋａｉ」となり、通信データが「Ｔａｋａｉ」を有する場合、通信データと基準データは合致したと判定される。このように、基準データのパディングにより、基準データのデータ長にかかわらず、検索回路３１０における汎用的な比較処理が可能となる。また、マスクデータの設定により、基準データ毎に有効なデータ範囲を指定でき、通信データと基準データとの比較処理をより柔軟に行うことができる。【００９２】
セグメントテーブル３６０の部分基準データと、マッチングテーブル３８０の基準データとを対応付ける方法については特に制限はない。例えば、部分基準データは、基準データの一部であるので、部分基準データに対応する基準データとして、部分基準データを含む基準データが抽出されてもよい。また、セグメントテーブル３６０に、マッチングテーブルの各レコードへのポインタが保持されてもよい。本実施の形態では、この対応付けのために変換テーブル３７０を使用する。【００９３】
図２６は、部分基準データと、マッチングテーブル３８０の基準データとを対応付ける変換テーブル３７０のテーブル構造を例示する図である。同図では、図２４で例示した部分基準データと、それに対応する基準データを保持したマッチングテーブル３８０のメモリ上のアドレスを保持することを示している。例えば、部分基準データ「Ｔａｋ」に対応する基準データのメモリ上のアドレスは２進数表記で「０１１００１１０１０」番地であり、同様に部分基準データ「Ｔａｍ」に対応するアドレスは「０１１００１１１００」番地である。なお、本実施の形態では、これらの基準データのアドレスに１を加えたものを、マスクデータを保持するアドレスとしている。【００９４】
ここで、セグメントテーブル３６０、変換テーブル３７０、マッチングテーブル３８０のデータ量について考察する。マッチングテーブル３８０には基準データおよびマスクデータ（ここではそれぞれ８バイト）と各レコードあたりの基準データ数（８個）が５１２件分格納されているとすると、（８バイト×８個×２（マスクデータ分）×５１２）バイト≒６４メガバイトのデータ量となる。一方でセグメントテーブル３６０は、部分基準データ（基準データの先頭３バイト）が５１２件分格納されているため、（３バイト×５１２）バイト≒１．５メガバイトのデータ量となる。さらに、変換テーブル３７０は、部分基準データおよびマッチングテーブル３８０の各レコードの先頭アドレス（１０ビット）が５１２件分格納されているため、（（３バイト×８ビット＋１０ビット）×５１２）ビット≒２．１メガバイトのデータ量となる。したがって、セグメントテーブル３６０は回路内部バッファに保持し、マッチングテーブル３８０は外部メモリに保持することで最適なデータ配置を実現できる。変換テーブル３７０は、セグメントテーブル３６０と同様に、回路内部バッファに保持されてもよく、また、アクセス速度と記憶容量の特性において、回路内部バッファと外部メモリの中間の特性を持つ記憶装置に保持されてもよい。言い換えれば、アクセス速度と記憶容量、さらには費用との関係から最適な選択がされればよい。【００９５】
検索回路３１０は、入力データ生成回路３２０、第１比較回路３３０、第２比較回路３４０、を有する。
入力データ生成回路３２０は、通信データを所定のデータ長ずつ位置をずらした複数のデータ（以下、「入力データ」と呼ぶ。）に変換する。図２７は、入力データ生成回路３２０による通信データをもとにした複数の入力データの生成イメージを示す図である。同図では、通信データ３２２「Ｔａｒｏ．Ｔａｋａｋｕｒａ」を複数の入力データ３２４に変換している。本実施の形態では、それぞれの入力データは８バイトの固定長であることとし、入力データ３２４ａは通信データ３２２の先頭から８バイトの「Ｔａｒｏ．Ｔａｋ」であり、入力データ３２４ｂは入力データ３２４ａから１バイトずらした次の８バイトである「ａｒｏ．Ｔａｋａ」である。入力データ３２４ｃ以降も同様である。なお、比較するデータには特に制限はなくどのようなデータ列、例えば文字列・バイト列・ビット列、であってもよい。本実施の形態の説明では説明の簡明化のため文字列としているが、実際の検索回路では単にビット列の異同が問われるため、通信データの形式に制限がないことは当業者には理解されるところである。【００９６】
第１比較回路３３０は、セグメントテーブル３６０を参照して、入力データの先頭から所定の長さのデータ（以下、「部分入力データ」）と、部分基準データとを比較する。第１比較回路３３０は、複数存在してよい。複数の第１比較回路を備えることで、部分入力データと複数の部分基準データとを同時に並列して比較することができる。ＣＰＵによるスレッドアーキテクチャがＣＰＵ処理の時分割による擬似的な並列動作であるのに対し、完全な並列動作となり比較処理のスループットが向上する。また、この比較でバイナリサーチを応用することでさらに効率的な比較計算を実現する。第１比較回路３３０が８個あり、セグメントテーブル３６０のレコード数が５１２である場合を例にとって説明する。【００９７】
まず１回目の比較では、セグメントテーブル３６０を８つに分けたデータ（６４データ毎）と比較してどの領域（領域Ａとする）に部分入力データが存在するかを調べる。第２回目の比較では、領域Ａ内でテーブルを８つに分けたデータ（８データ毎）と比較してどの領域（領域Ｂとする）に部分入力データが存在するかを調べる。第３回目の比較では、領域Ｂ内でテーブルを８つに分けたデータ（１データ毎）と比較して、部分入力データが存在するかを調べる。このように、バイナリサーチを応用した比較を行うことで、セグメントテーブル３６０のレコード数をＮとすると、ｌｏｇ８Ｎの計算量で部分入力データの存否を確認でき、効率のよい比較計算を実現する。【００９８】
第２比較回路３４０は、マッチングテーブル３８０を参照して、入力データと基準データとを比較する。第１比較回路３３０と同様に、第２比較回路３４０も複数存在してよい。複数の第２比較回路を備えることで、入力データと複数の基準データとを同時に並列して比較することができる。例えば、図２５で示したように、一つの部分基準データに対し基準データが８つある場合、第２比較回路３４０が８つあれば、入力データと基準データとの比較を一度に完了することができる。【００９９】
なお、第１比較回路３３０と第２比較回路３４０は同じ比較回路であってもよい。どちらも、記憶装置に格納されたテーブルを参照して、入力データ又は部分入力データと比較するものであるため同じ回路として実現可能である。または、第１比較回路と第２比較回路は別個独立に動作するものであってもよい。この場合、第２の比較回路が、ある入力データと基準データとを比較する間に、第１の比較回路は、次の部分入力データと部分基準データとを比較しておくこともできる。
また、変換テーブル３７０からマッチングテーブル３８０における基準データのアドレスを取得するのは第１比較回路３３０であってもよく、第２比較回路３４０であってもよい。前者の場合、第２比較回路３４０には第１比較回路３３０から基準データのアドレスが通知される。後者の場合、第２比較回路３４０には第１比較回路３３０から部分基準データそのものが通知される。【０１００】
図２８は、検索回路３１０における各回路の処理の流れを説明するフローチャートである。まず、入力データ生成回路３２０は、通信データから固定長の入力データを抽出する（Ｓ２）。次に、第１比較回路は、部分入力データと、セグメントテーブル３６０の部分基準データとを比較する（Ｓ４）。部分入力データが部分基準データと一致しない場合（Ｓ６のＮ）、入力データが基準データと一致することはないため処理を終了する。一致する場合（Ｓ６のＹ）、第１比較回路３３０は、変換テーブル３７０からその部分基準データに対応する基準データのマッチングテーブル３８０におけるアドレスを取得し、第２比較回路３４０に通知する（Ｓ８）。第２比較回路３４０は、そのアドレスをもとに複数の基準データを取得し、入力データと基準データとを比較する（Ｓ１０）。以降の処理実行回路４０での処理は、前提技術で説明したとおりである。【０１０１】
本実施の形態の通信制御装置は、ＩＰアドレスを有しない完全透過型の通信機であり、通信データを物理的に着信せずに上記の機能を実行する。つまり、通信制御装置は、ネットワークを通過中の通信データを取り込み、プロトコル処理など物理的な着信に要する処理を省略して、上述した処理を行い、所定の条件にしたがって通信データをネットワークへ再送出する。従来の通信機は、自装置宛の通信データを受信して制御していたが、本実施の形態の通信制御装置は、自装置宛に送信されたのではない通過中の通信データを取り込んで制御する。したがって、送信元及び送信先の装置や、通信経路に設けられた他の通信装置は、通信制御装置が設けられることによる設定等の変更を何ら必要とすることなく、通信制御装置の存在を全く意識せずに通信を行うことができる。したがって、本実施の形態の技術によれば、通信システムに大きな改変を行うことなく、上記のような通信制御を行うことができる。また、本実施の形態の通信制御装置はＩＰアドレスを有しないので、悪意あるハッカーなどから攻撃を受けることがなく、セキュリティ性に優れている。【０１０２】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【産業上の利用可能性】
【０１０３】
本発明は、通信制御装置に利用することができる。
【図１】
2009066338.tif 000003
【図２】
2009066338.tif 000004
【図３】
2009066338.tif 000005
【図４】
2009066338.tif 000006
【図５】
2009066338.tif 000007
【図６】
2009066338.tif 000008
【図７】
2009066338.tif 000009
【図８】
2009066338.tif 000010
【図９】
2009066338.tif 000011
【図１０】
2009066338.tif 000012
【図１１】
2009066338.tif 000013
【図１２】
2009066338.tif 000014
【図１３】
2009066338.tif 000015
【図１４】
2009066338.tif 000016
【図１５】
2009066338.tif 000017
【図１６】
2009066338.tif 000018
【図１７】
2009066338.tif 000019
【図１８】
2009066338.tif 000020
【図１９】
2009066338.tif 000021
【図２０】
2009066338.tif 000022
【図２１】
2009066338.tif 000023
【図２２】
2009066338.tif 000024
【図２３】
2009066338.tif 000025
【図２４】
2009066338.tif 000026
【図２５】
2009066338.tif 000027
【図２６】
2009066338.tif 000028
【図２７】
2009066338.tif 000029
【図２８】
2009066338.tif 000030
【手続補正書】
【提出日】平成20年7月14日(2008.7.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
取得したデータに対して実行する処理の内容を決定するための基準となる基準データを記憶するマッチングテーブルと、
前記基準データの一部を部分基準データとして保持するセグメントテーブルと、
前記取得したデータの中に前記基準データが含まれているか否かを、前記取得したデータと前記基準データとを比較することにより検索する検索部と、
前記検索部による検索結果と前記処理の内容とを対応づけて記憶する記憶部と、
前記検索結果に基づいて、前記検索結果に対応づけられた処理を前記取得したデータに対して実行する処理部と、
複数の部分基準データと、各部分基準データに対応する基準データの前記マッチングテーブルでの位置との対応関係を保持する変換テーブルと、を含み、
前記検索部は、まず、前記取得したデータの中に、前記セグメントテーブルに保持された部分基準データが含まれているか否かを検索し、前記部分基準データが含まれている場合、前記変換テーブルを参照して、その部分基準データに対応する基準データの前記マッチングテーブルでの位置を特定し、さらに、前記マッチングテーブルを参照して、特定された位置に存在する基準データと前記取得したデータとを比較することにより、前記取得したデータの中に、前記部分基準データに対応する基準データが含まれているか否かを検索することを特徴とする通信制御装置。
【請求項２】
前記検索部は、前記取得したデータと前記部分基準データとを比較する第１の比較回路を複数含むことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記検索部は、前記取得したデータから、前記基準データと同じデータ長を有し、所定のデータ長ずつ位置をずらした複数の入力データを生成するとともに、それぞれの前記入力データから、前記部分基準データと同じデータ長を有する部分入力データを生成する入力データ生成部を更に含み、
複数の前記第１の比較回路は、前記部分入力データと複数の前記部分基準データとを、同時に並列して比較することを特徴とする請求項２に記載の通信制御装置。
【請求項４】
前記セグメントテーブルは、昇順又は降順に整列された前記部分基準データを保持し、
前記第１の比較回路は、バイナリサーチにより、前記部分入力データと一致する前記部分基準データを前記セグメントテーブルから検索することを特徴とする請求項３に記載の通信制御装置。
【請求項５】
前記検索部は、前記入力データと前記基準データとを比較する第２の比較回路を複数含み、
前記第２の比較回路は、前記部分入力データに一致する前記部分基準データが探索された場合に、前記部分入力データに対応する前記入力データと、前記部分基準データに対応する複数の基準データとを、同時に並列して比較することを特徴とする請求項３又は４に記載の通信制御装置。
【請求項６】
前記マッチングテーブルには、基準データの一部を無効とするマスクデータが含まれることを特徴とする請求項１から５のいずれかに記載の通信制御装置。
【請求項７】
前記セグメントテーブルは、前記マッチングテーブルが格納された記憶装置よりもアクセス速度の速い記憶装置に格納されることを特徴とする請求項１から６のいずれかに記載の通信制御装置。
【手続補正書】
【提出日】平成20年11月11日(2008.11.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
取得したデータに対して実行する処理の内容を決定するための基準となる基準データを記憶するマッチングテーブルと、
前記マッチングテーブルが格納された記憶装置よりもアクセス速度の速い記憶装置に格納され、前記基準データの一部を部分基準データとして保持するセグメントテーブルと、
前記取得したデータの中に前記基準データが含まれているか否かを、前記取得したデータと前記基準データとを比較することにより検索する検索部と、
前記検索部による検索結果と前記処理の内容とを対応づけて記憶する記憶部と、
前記検索結果に基づいて、前記検索結果に対応づけられた処理を前記取得したデータに対して実行する処理部と、
複数の部分基準データと、各部分基準データに対応する基準データの前記マッチングテーブルでの位置との対応関係を保持する変換テーブルと、を含み、
前記検索部は、まず、前記取得したデータの中に、前記セグメントテーブルに保持された部分基準データが含まれているか否かを検索し、前記部分基準データが含まれている場合、前記変換テーブルを参照して、その部分基準データに対応する基準データの前記マッチングテーブルでの位置を特定し、さらに、前記マッチングテーブルを参照して、特定された位置に存在する基準データと前記取得したデータとを比較することにより、前記取得したデータの中に、前記部分基準データに対応する基準データが含まれているか否かを検索することを特徴とする通信制御装置。
【請求項２】
前記検索部は、前記取得したデータと前記部分基準データとを比較する第１の比較回路を複数含むことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記検索部は、前記取得したデータから、前記基準データと同じデータ長を有し、所定のデータ長ずつ位置をずらした複数の入力データを生成するとともに、それぞれの前記入力データから、前記部分基準データと同じデータ長を有する部分入力データを生成する入力データ生成部を更に含み、
複数の前記第１の比較回路は、前記部分入力データと複数の前記部分基準データとを、同時に並列して比較することを特徴とする請求項２に記載の通信制御装置。
【請求項４】
前記セグメントテーブルは、昇順又は降順に整列された前記部分基準データを保持し、
前記第１の比較回路は、バイナリサーチにより、前記部分入力データと一致する前記部分基準データを前記セグメントテーブルから検索することを特徴とする請求項３に記載の通信制御装置。
【請求項５】
前記検索部は、前記入力データと前記基準データとを比較する第２の比較回路を複数含み、
前記第２の比較回路は、前記部分入力データに一致する前記部分基準データが探索された場合に、前記部分入力データに対応する前記入力データと、前記部分基準データに対応する複数の基準データとを、同時に並列して比較することを特徴とする請求項３又は４に記載の通信制御装置。
【請求項６】
前記マッチングテーブルには、基準データの一部を無効とするマスクデータが含まれることを特徴とする請求項１から５のいずれかに記載の通信制御装置。
【国際調査報告】
2009066338.tif 000031
2009066338.tif 000032
2009066338.tif 000033
2009066338.tif 000034