10 通信制御装置、20 パケット処理回路、30 検索回路、32 位置検出回路、33 比較回路、34 インデックス回路、35 比較回路、36 バイナリサーチ回路、36A,36B,36C 比較回路、36Z 制御回路、40 処理実行回路、50 第1データベース、60 第2データベース、100 通信制御システム、110 運用監視装置、120 接続管理装置、130 メッセージ出力装置、140 ログ管理装置、150 データベースサーバ、200 通信経路制御装置、300 パケット処理回路、310 検索回路、320 入力データ生成回路、330 第1比較回路、340 第2比較回路、350 第1データベース、360 セグメントテーブル、370 変換テーブル、380 マッチングテーブル、322 通信データ、324 入力データ。
まず、前提技術として、CPU及びOSを有さず、専用のハードウェア回路によりパケットフィルタリング機能を実現する通信制御システムについて説明する。つづいて、実施の形態として、前提技術の通信制御システムに含まれる通信制御装置の改良発明であり、より高速な通信制御を実現する通信制御装置について説明する。
(前提技術)
図1は、前提技術に係る通信制御システムの構成を示す。通信制御システム100は、通信制御装置10と、通信制御装置10の動作を支援するために設けられた各種の周辺装置を含む。前提技術の通信制御装置10は、インターネットサービスプロバイダなどにより提供されるパケットフィルタリング機能を実現する。ネットワークの経路に設けられた通信制御装置10は、ネットワークを介して送受信されるパケットを取得して、その内容を解析し、通信の許否を判断する。通信が許可される場合は、通信制御装置10は、そのパケットをネットワークへ送出する。通信が禁止される場合は、通信制御装置10は、そのパケットを破棄し、必要であれば送信元に対して警告メッセージなどを返信する。
前提技術の通信制御システム100では、複数の通信制御装置10a、10b、10c、・・・、が設けられており、それらを協働させて、1台の通信制御装置10として機能させているが、以下、個々の通信制御装置10a、10b、10c、・・・も、それらの総称も区別せずに通信制御装置10と呼ぶ。
本前提技術の通信制御システム100では、それぞれの通信制御装置10は、パケットの処理に必要なデータベースの少なくとも一部を分割して保持しているが、分割して保持するのに必要な台数よりも少なくとも1台以上余分に設けられる。例えば、1台あたり10万件のデータを保持できるとすると、データ数が30万件以上40万件未満である場合、運用に必要な通信制御装置の台数は4台であるが、いずれかの通信制御装置10が故障したときに代わって運用させるための待機用として、また、通信制御装置10に含まれるデータベースを更新するときの待機用として、1台以上の通信制御装置10を設け、合計で最低5台の通信制御装置10を設ける。従来は、フォールトトレラントのために、システム全体を二重化させる必要があったが、本前提技術の技術によれば、分割された単位の通信制御装置10を余分に設けておけばよいので、コストを低減することができる。これら複数の通信制御装置10a、10b、10c、・・・、の運用状況は、運用監視装置110により管理される。本前提技術の運用監視装置110は、通信制御装置の運用状況を管理するための管理テーブルを有する。
周辺装置は、運用監視装置110、接続管理装置120、メッセージ出力装置130、ログ管理装置140、及びデータベースサーバ150を含む。接続管理装置120は、通信制御装置10に対する接続を管理する。接続管理装置120は、例えば、携帯電話端末から送出されたパケットを通信制御装置10で処理する際に、パケットに含まれる携帯電話端末を一意に識別する情報を用いて、通信制御システム100のサービスを享受可能なユーザであることを認証する。いったん認証されると、その携帯電話端末に一時的に付されたIPアドレスから送出されたパケットは、一定の期間は接続管理装置120で認証せずに通信制御装置10へ送られて処理される。メッセージ出力装置130は、通信制御装置10により判定された通信の許否の結果に応じて、パケットの送信先又は送信元に対するメッセージを出力する。ログ管理装置140は、通信制御装置10の運用履歴を管理する。データベースサーバ150は、外部から最新のデータベースを取得し、通信制御装置10に入力する。通信制御装置10の運用を止めずにデータベースを更新するために、通信制御装置10はバックアップ用のデータベースを有してもよい。運用監視装置110は、通信制御装置10と、接続管理装置120、メッセージ出力装置130、ログ管理装置140、データベースサーバ150などの周辺装置の運用状況を監視する。運用監視装置110は、通信制御システム100の中で最も優先度が高く、通信制御装置10及び全ての周辺装置の監視制御を行う。通信制御装置10は、後述するように、専用のハードウェア回路により構成されるが、運用監視装置110は、本出願人による特許第3041340号などの技術を利用して、バウンダリスキャン回路を利用して監視のためのデータを通信制御装置10などとの間で入出力することにより、通信制御装置10の運用中にも運用状況を監視することができる。
前提技術の通信制御システム100は、以下に説明するように、高速化のために専用のハードウェア回路により構成された通信制御装置10を、周辺に接続された各種の機能を有する装置群により制御する構成とすることにより、装置群のソフトウェアを適当に入れ替えることで、同様の構成により各種の機能を実現することができる。前提技術によれば、このような柔軟性の高い通信制御システムを提供することができる。
図2は、従来の通信制御装置1の構成を示す。従来の通信制御装置1は、受信側の通信制御部2と、パケット処理部3と、送出側の通信制御部4とを備える。通信制御部2及び4は、それぞれ、パケットの物理層の処理を行うPHY処理部5a及び5bと、パケットのMAC層の処理を行うMAC処理部6a及び6bとを備える。パケット処理部3は、IP(Internet Protocol)のプロトコル処理を行うIP処理部7、TCP(Transport Control Protocol)のプロトコル処理を行うTCP処理部8など、プロトコルに応じた処理を行うプロトコル処理部と、アプリケーション層の処理を行うAP処理部9とを備える。AP処理部9は、パケットに含まれるデータに応じて、フィルタリングなどの処理を実行する。
従来の通信制御装置1では、パケット処理部3は、汎用プロセッサであるCPUと、CPU上で動作するOSとを利用して、ソフトウェアにより実現されていた。しかしながら、このような構成では、通信制御装置1の性能はCPUの性能に依存することになり、高速に大容量のパケットを処理可能な通信制御装置を実現しようとしても、自ずと限界がある。例えば、64ビットのCPUであれば、一度に同時に処理可能なデータ量は最大で64ビットであり、それ以上の性能を有する通信制御装置は存在しなかった。また、汎用的な機能を有するOSの存在を前提としていたので、セキュリティホールなどが存在する可能性が絶無ではなく、OSのバージョンアップなどのメンテナンス作業を必要としていた。
図3は、前提技術に係る通信制御装置の構成を示す。本前提技術の通信制御装置10は、従来の通信制御装置においてはCPU及びOSを含むソフトウェアにより実現されていたパケット処理部に代えて、ワイヤードロジック回路による専用のハードウェアにより構成されたパケット処理回路20を備える。汎用処理回路であるCPUにおいて動作するOSとソフトウェアにより通信データを処理するのではなく、通信データを処理するための専用のハードウェア回路を設けることにより、CPUやOSなどに起因する性能の限界を克服し、処理能力の高い通信制御装置を実現することが可能となる。
例えば、パケットフィルタリングなどを実行するために、パケットに含まれるデータに、フィルタリングの判断基準となる基準データが含まれるか否かを検索する場合に、CPUを用いて通信データと基準データを比較すると、一度に高々64ビットしか比較することができず、処理速度を向上させようとしてもCPUの性能で頭打ちになるという問題があった。CPUでは、通信データから64ビットをメモリへ読み上げ、基準データとの比較を行い、つづいて、次の64ビットをメモリへ読み上げる、という処理を何度も繰り返し行う必要があるので、メモリへの読み上げ時間が律速となり、処理速度に限界がある。
それに対し、本前提技術では、通信データと基準データとを比較するために、ワイヤードロジック回路により構成された専用のハードウェア回路を設ける。この回路は、64ビットよりも長いデータ長、例えば、1024ビットのデータ長の比較を可能とするために、並列に設けられた複数の比較器を含む。このように、専用のハードウェアを設けることにより、同時に並列して多数のビットマッチングを実行することができる。従来のCPUを用いた通信制御装置1では一度に64ビットしか処理できなかったところを、一度に1024ビットの処理を可能にすることで、飛躍的に処理速度を向上させることができる。比較器の数を多くすれば処理能力も向上するが、コストやサイズも増大するので、所望の処理性能と、コスト、サイズ、などを考慮して、最適なハードウェア回路を設計すればよい。専用のハードウェア回路は、FPGA(Field Programmable Gate Array)などを用いて実現されてもよい。
また、本前提技術の通信制御装置10は、ワイヤードロジック回路による専用のハードウェアにより構成されるので、OS(Operating System)を必要としない。このため、OSのインストール、バグ対応、バージョンアップなどの作業が必要なく、管理やメンテナンスのためのコストや工数を低減させることができる。また、汎用的な機能が求められるCPUとは異なり、不必要な機能を包含していないので、余計なリソースを用いることがなく、低コスト化、回路面積の低減、処理速度の向上などが望める。さらに、OSを利用していた従来の通信制御装置とは異なり、余分な機能を有しないので、セキュリティホールなどが発生する可能性が低く、ネットワークを介した悪意ある第三者からの攻撃に対する耐性に優れている。さらに、本前提技術の通信制御装置10は、IPアドレスを有しない完全透過型の通信装置として実装されてもよい。この場合、通信経路の任意の位置に通信制御装置10を間挿し、送受信されるパケットを取り込んで処理することができる。また、IPアドレスを有しないため、悪意ある第三者からの攻撃を未然に防ぐことができる。
従来の通信制御装置1は、CPUとOSを前提としたソフトウェアによりパケットを処理しており、パケットの全てのデータを受信してからプロトコル処理を行い、データがアプリケーションに渡される。それに対して、本前提技術の通信制御装置10では、専用のハードウェア回路により処理を行うので、パケットの全てのデータを受信してから処理を開始する必要はなく、処理に必要なデータを受信すれば、後続のデータの受信を待たずに、任意の時点で処理を開始することができる。例えば、後述する位置検出回路における位置検出処理は、比較対象データの位置を特定するための位置特定データを受信した時点で開始することができる。このように、全てのデータの受信を待たずに様々な処理をフローティングで実行することができるので、パケットのデータを処理するのに要する時間を短縮することができる。
図4は、パケット処理回路の内部構成を示す。パケット処理回路20は、通信データに対して実行する処理の内容を決定するための基準となる基準データを記憶する第1データベース50A、50B、及び50C(これらを総称して「第1データベース50」という)と、受信された通信データの中に基準データが含まれているか否かを、通信データと基準データとを比較することにより検索する検索回路30と、検索回路30による検索結果と通信データに対して実行する処理の内容とを対応づけて記憶する第2データベース60と、検索回路30による検索結果と第2データベース60に記憶された条件とに基づいて通信データを処理する処理実行回路40とを含む。
検索回路30は、通信データの中から基準データと比較すべき比較対象データの位置を検出する位置検出回路32と、第1データベース50に記憶された基準データを3以上の範囲に分割したとき、比較対象データがそれらの範囲のうちいずれに属するかを判定する判定回路の一例であるインデックス回路34と、判定された範囲の中で比較対象データと合致する基準データを検索するバイナリサーチ回路36とを含む。比較対象データを基準データの中から検索する方法としては、任意の検索技術を利用可能であるが、本前提技術ではバイナリサーチ法を用いる。本前提技術では、後述するように、改良されたバイナリサーチ法を用いるので、そのために第1データベース50を3つ設けている。第1データベース50A、50B、及び50Cには、同じ基準データが格納されている。
図5は、位置検出回路の内部構成を示す。位置検出回路32は、比較対象データの位置を特定するための位置特定データと通信データとを比較するための複数の比較回路33a〜33fを含む。ここでは、6個の比較回路33a〜33fが設けられているが、後述するように、比較回路の個数は任意でよい。それぞれの比較回路33a〜33fには、通信データが、所定のデータ長、例えば、1バイトずつずらして入力される。そして、これら複数の比較回路33a〜33fにおいて、同時に並列して、検出すべき位置特定データと通信データとの比較がなされる。
本前提技術においては、通信制御装置10の動作を説明するための例として、通信データ中に含まれる「No. ###」という文字列を検出し、その文字列中に含まれる数字「###」を基準データと比較して、基準データに合致した場合はパケットの通過を許可し、合致しなかった場合はパケットを破棄する処理を行う場合について説明する。
図5の例では、通信データの中から、数字「###」の位置を特定するための位置特定データ「No.」を検出するために、通信データ「01No. 361・・・」を、1文字ずつずらして比較回路33a〜33fに入力している。すなわち、比較回路33aには「01N」が、比較回路33bには「1No」が、比較回路33cには「No.」が、比較回路33dには「o. 」が、比較回路33eには「. 3」が、比較回路33fには「 36」が、それぞれ入力される。ここで、比較回路33a〜33fが同時に位置特定データ「No.」との比較を実行する。これにより、比較回路33cがマッチし、通信データの先頭から3文字目に「No.」という文字列が存在することが検出される。こうして、位置検出回路32により検出された位置特定データ「No.」の次に、比較対象データである数字のデータが存在することが検出される。
CPUにより同様の処理を行うならば、まず、文字列「01N」を「No.」と比較し、続いて、文字列「1No」を「No.」と比較する、というように、先頭から順に1つずつ比較処理を実行する必要があるため、検出速度の向上は望めない。これに対し、本前提技術の通信制御装置10では、複数の比較回路33a〜33fを並列に設けることにより、CPUではなしえなかった同時並列的な比較処理が可能となり、処理速度を格段に向上させることができる。比較回路は多ければ多いほど同時に比較可能な位置が多くなるので、検出速度も向上するが、コスト、サイズ、などを考慮の上、所望の検出速度を得られるのに十分な数の比較回路を設ければよい。
位置検出回路32は、位置特定データを検出するためだけでなく、汎用的に文字列を検出する回路として利用されてもよい。また、文字列だけでなく、ビット単位で位置特定データを検出するように構成されてもよい。
図6は、位置検出回路の別の例を示す。図6に示した例では、位置検出回路32に設けられたそれぞれの比較回路33a〜33fのデータ長よりも位置特定データの方が短い場合は、位置特定データの後に所定のデータ、例えば、「00H」又は「01H」などをパディングする。また、位置特定データと比較する通信データについても、位置特定データと同じデータ長のみを抜き出して、その後に、位置特定データにパディングしたデータと同じデータをパディングする。このとき、通信データ自身を改変しないために、通信データをワークとしてコピーし、コピーしたデータを加工して比較回路33a〜33fに入力してもよい。これにより、位置特定データのデータ長によらず、位置検出回路32を汎用的に用いることができる。
図7は、位置検出回路の更に別の例を示す。図7に示した例では、図6に示した例と同様に、位置特定データの後に所定のデータをパディングするが、このデータをワイルドカードとして扱う。すなわち、比較回路33a〜33fは、ワイルドカードであるデータが入力されると、比較対象のデータが何であっても無条件に合致したと判定する。これにより、位置特定データのデータ長によらず、位置検出回路32を汎用的に用いることができる。
図8は、第1データベースの内部データの例を示す。第1データベース50には、パケットのフィルタリング、ルーティング、スイッチング、置換などの処理の内容を決定するための基準となる基準データが、何らかのソート条件にしたがって昇順又は降順にソートされて格納されている。図8の例では、1000個の基準データが記憶されている。
インデックス回路34は、第1データベース50に格納されている基準データを3以上の範囲52a〜52dに分割したとき、比較対象データがそれらの範囲のうちいずれに属するかを判定する。図8の例では、1000個の基準データは、250個ずつ4つの範囲52a〜52dに分割されている。インデックス回路34は、範囲の境界の基準データと比較対象データとを比較する複数の比較回路35a〜35cを含む。比較回路35a〜35cにより比較対象データと境界の基準データとを同時に並列して比較することにより、比較対象データがいずれの範囲に属するかを1度の比較処理で判定することができる。
インデックス回路34の比較回路35a〜35cに入力される境界の基準データは、通信制御装置10の外部に設けられた装置により設定されてもよいし、予め第1データベース50の所定位置の基準データが自動的に入力されるようにしてもよい。後者の場合、第1データベース50を更新しても、自動的に第1データベース50の所定位置の基準データが比較回路35a〜35cに入力されるので、初期設定などを必要とせず、直ちに通信制御処理を実行させることができる。
前述したように、CPUによりバイナリサーチを実行する場合は、同時に複数の比較を実行することができないが、本前提技術の通信制御装置10では、複数の比較回路35a〜35cを並列に設けることにより、同時並列的な比較処理を可能とし、検索速度を格段に向上させることができる。
インデックス回路34により範囲が判定されると、バイナリサーチ回路36がバイナリサーチ法により検索を実行する。バイナリサーチ回路36は、インデックス回路34により判定された範囲をさらに2n個に分割し、その境界位置にある基準データと比較対象データとを比較することにより、いずれの範囲に属するかを判定する。バイナリサーチ回路36は、基準データと比較対象データとをビット単位で比較する比較器を複数個、例えば本前提技術では1024個含んでおり、1024ビットのビットマッチングを同時に実行する。2n分割された範囲のいずれに属するかが判定されると、さらに、その範囲を2n分割して境界位置にある基準データを読み出し、比較対象データと比較する。以降、この処理を繰り返すことにより範囲をさらに限定し、最終的に比較対象データと合致する基準データを検索する。
前述した例を用いてさらに詳細に動作を説明する。インデックス回路34の比較回路35a〜35cには、比較対象データとして「361」が入力され、基準データとして、比較回路35aには、範囲52aと52bの境界にある基準データ「378」が、比較回路35bには、範囲52bと52cの境界にある基準データ「704」が、比較回路35cには、範囲52cと52dの境界にある基準データ「937」が、それぞれ入力される。比較回路35a〜35cにより同時に比較が行われ、比較対象データ「361」が範囲52aに属することが判定される。以降、バイナリサーチ回路36が基準データの中に比較対象データ「361」が存在するか否かを検索する。
図9は、第1データベースの内部データの別の例を示す。図9に示した例では、基準データのデータ数が、第1データベース50に保持可能なデータ数、ここでは1000個よりも少ない。このとき、第1データベース50には、最終データ位置から降順に基準データが格納される。そして、残りのデータには0が格納される。データベースのローディング方法として、先頭からデータを配置せずにローディングエリアの後方から配置し、ローディングエリア先頭に空きが生じた場合は全ての空きをゼロサプレスすることで、データーベースは常にフルの状態になり、バイナリー検索する場合の検索時間を一定にすることができる。また、バイナリサーチ回路36は、検索中に基準データとして「0」を読み込んだときには、比較結果が自明であるから、比較を行わずに範囲を特定して、次の比較にうつることができる。これにより、検索速度を向上させることができる。
CPUによるソフトウェア処理においては、第1データベース50に基準データを格納する際に、最初のデータ位置から昇順に基準データが格納される。残りのデータには、例えば最大値が格納されることになるが、この場合、バイナリサーチにおいて、上述したような比較処理の省略はできない。上述した比較技術は、専用のハードウェア回路により検索回路30を構成したことにより実現される。
図10は、第1データベースの内部データのさらに別の例を示す。図10に示した例では、基準データを均等に3以上の範囲に分割するのではなく、範囲52aは500個、範囲52bは100個というように、範囲に属する基準データの数が不均一になっている。これらの範囲は、通信データ中における基準データの出現頻度の分布に応じて設定されてもよい。すなわち、それぞれの範囲に属する基準データの出現頻度の和がほぼ同じになるように範囲が設定されてもよい。これにより、検索効率を向上させることができる。インデックス回路34の比較回路35a〜35cに入力される基準データは、外部から変更可能になっていてもよい。これにより、範囲を動的に設定することができ、検索効率を最適化することができる。
図11は、インデックス回路の別の例を示す。図8〜10に示した例では、インデックス回路34は、3つの比較回路35a〜35cを用いて、比較対象データが第1データベース50の4つの範囲52a〜52dのいずれに属するかを判定したが、図11の例では、インデックス回路34には、比較対象データが、4つの範囲52a〜52dのそれぞれに含まれるか否かを判定するための4つの比較回路35d〜35gが設けられている。例えば、比較回路35dには、第1データベース50の0件目の基準データと、250件目の基準データと、比較対象データとが入力され、それぞれの基準データと比較対象データとを比較することにより、基準データが範囲52aに含まれるか否かを判定する。それぞれの比較回路35d〜35gの比較結果は判定回路35zに入力され、判定回路35zから、基準データがいずれの範囲に含まれているかが出力される。比較回路35d〜35gは、基準データが入力された2つの基準データの間に含まれるか否かを出力してもよいし、範囲よりも大きい、範囲に含まれる、範囲よりも小さい、のいずれかを出力してもよい。比較対象データが、範囲52a〜52dのいずれにも含まれないと判定された場合は、比較対象データが第1データベース50中に存在しないことが分かるので、以降のバイナリサーチを行うまでもなく、検索を終了することができる。
図12は、バイナリサーチ回路に含まれる比較回路の構成を示す。前述したように、バイナリサーチ回路36に含まれる比較回路は、1024個の比較器36a、36b、・・・、を含む。それぞれの比較器36a、36b、・・・、には、基準データ54と比較対象データ56が1ビットずつ入力され、それらの大小が比較される。インデックス回路34の各比較回路35a〜35cの内部構成も同様である。このように、専用のハードウェア回路で比較処理を実行することにより、多数の比較回路を並列して動作させ、多数のビットを同時に比較することができるので、比較処理を高速化することができる。
図13は、バイナリサーチ回路の構成を示す。バイナリサーチ回路36は、図12に示した1024個の比較器36a、36b、・・・を含む比較回路36A、36B、及び36Cと、それらの比較回路を制御する制御回路36Zを含む。
従来のバイナリサーチ法では、まず1回目は、データが昇順又は降順に整列されたデータベースの探索対象範囲の1/2の位置にあるデータを読み出して比較対象データと比較する。データが昇順に並べられている場合、比較対象データの方が小さければ、比較対象データは探索対象範囲の前半に存在するので、2回目は前半を探索対象範囲としてその1/2、すなわち最初の探索対象範囲の1/4の位置にあるデータを読み出して比較対象データと比較する。逆に、比較対象データの方が大きければ、比較対象データは探索対象範囲の後半に存在するので、2回目は後半を探索対象範囲としてその1/2、すなわち最初の探索対象範囲の3/4の位置にあるデータを読み出して比較対象データと比較する。このように、探索対象範囲を半分ずつ絞っていき、最終的に対象データに到達する。
本前提技術では、バイナリサーチのための比較回路を3つ設けているので、1回目の探索のために探索対象範囲の1/2の位置にあるデータと比較対象データとを比較させるときに、同時に並行して、2回目の探索のために探索対象範囲の1/4及び3/4の位置にあるデータと比較対象データとを比較させる。これにより、2回分の探索を一度に行うことができるので、データベースからデータを読み上げる時間を短縮することができる。また、3つの比較回路を同時に並列して動作させることにより、比較の回数を半分に抑え、探索に要する時間を短縮することができる。
図13の例では、2回分の探索を同時に行うために、3つの比較回路を設けたが、一般に、n回分の探索を同時に並行して行うためには、2n−1個の比較回路を設ければよい。制御回路36Zは、探索対象範囲の1/2n、2/2n、・・・、(2n−1)/2nの位置のデータを、2n−1個の比較回路のそれぞれに入力させ、それらを同時に並列して動作させて比較対象データと比較させる。制御回路36Zは、それぞれの比較回路の比較結果を取得して、比較対象データが探索されたか否かを判定する。制御回路36Zは、いずれかの比較回路が、データが一致した旨の信号を出力した場合、比較対象データが探索されたと判定して、バイナリサーチを終了する。一致した旨の信号が出力されなかった場合、次回の探索に移る。比較対象データがデータベースに存在するならば、2n−1個の比較回路の比較結果が反転する範囲に存在するはずである。例えば、15個の比較回路が設けられているときに、5/16の位置のデータが比較対象データより小さく、6/16の位置のデータが比較対象データより大きければ、5/16から6/16の間の範囲に比較対象データがある。したがって、制御回路36Zは、各比較回路の比較結果を取得して、比較結果が反転した範囲を次回の探索対象範囲と決定し、決定された次回の探索対象範囲の1/2n、2/2n、・・・、(2n−1)/2nの位置のデータをそれぞれの比較回路へ入力させる。
本前提技術では、第1データベース50を3つ設けており、第1データベース50Aは比較回路36Aに接続されて探索対象範囲の1/4の位置にあるデータを比較回路36Aに供給し、第1データベース50Bは比較回路36Bに接続されて探索対象範囲の2/4の位置にあるデータを比較回路36Bに供給し、第1データベース50Cは比較回路36Cに接続されて探索対象範囲の3/4の位置にあるデータを比較回路36Cに供給する。これにより、それぞれの比較回路にデータを同時に並行して読み上げることができるので、データの読み上げに要する時間を更に短縮し、バイナリサーチを高速化することができる。
比較回路は多ければ多いほど探索速度も向上するが、コスト、サイズなどを考慮の上、所望の探索速度を得られるのに十分な数の比較回路を設ければよい。また、比較回路の数と同じだけ第1データベースを設けるのが好ましいが、コスト、サイズなどを考慮の上、いくつかの比較回路でデータベースを共用してもよい。
図14は、第1データベースの内部データの更に別の例を示す。図14に示した第1データベース50は、フィルタリングの対象となるコンテンツのURLを格納している。第1データベース50に格納されるデータは、ワイルドカードとして認識される所定のデータ、例えば、「00H」又は「01H」などを含んでもよい。図14に示した例において、「http://www.xx.xx/*********」は、「*********」がワイルドカードとして認識され、比較器36a、36b、・・・において、比較対象データが何であっても合致すると判定される。したがって、「http://www.xx.xx/」で始まる文字列は全てバイナリサーチ回路36により検出される。これにより、例えば、ドメイン「http://www.xx.xx/」の配下にあるコンテンツの全てにフィルタリングをかける処理などを容易に行うことができる。
図15は、第2データベースの内部データの例を示す。第2データベース60は、検索回路30による検索結果を格納する検索結果欄62と、通信データに対して実行する処理の内容を格納する処理内容欄64とを含み、検索結果と処理内容とを対応づけて保持する。図15の例では、通信データに基準データが含まれている場合は、そのパケットの通過を許可し、含まれていない場合は、そのパケットを破棄するという条件が設定されている。処理実行回路40は、検索結果に基づいて第2データベース60から処理内容を検索し、通信データに対して処理を実行する。処理実行回路40も、ワイヤードロジック回路により実現されてもよい。
図16は、第2データベースの内部データの別の例を示す。図16の例では、基準データごとに、処理内容が設定されている。パケットの置換を行う場合、置換先のデータを第2データベース60に格納しておいてもよい。パケットのルーティングやスイッチングを行う場合、経路に関する情報を第2データベース60に格納しておいてもよい。処理実行回路40は、検索回路30による検索結果に応じて、第2データベース60に格納された、フィルタリング、ルーティング、スイッチング、置換などの処理を実行する。図16のように、基準データごとに処理内容を設定する場合、第1データベース50と第2データベース60とを統合してもよい。
第1のデータベース及び第2のデータベースは、外部から書き換え可能に設けられる。これらのデータベースを入れ替えることにより、同じ通信制御装置10を用いて、さまざまなデータ処理や通信制御を実現することができる。また、検索対象となる基準データを格納したデータベースを2以上設けて、多段階の検索処理を行ってもよい。このとき、検索結果と処理内容とを対応づけて格納したデータベースを2以上設けて、より複雑な条件分岐を実現してもよい。このように、データベースを複数設けて多段階の検索を行う場合に、位置検出回路32、インデックス回路34、バイナリサーチ回路36などを複数設けてもよい。
上述した比較に用いられるデータは、同じ圧縮ロジックにより圧縮されてもよい。比較に際して、比較元のデータと比較先のデータが同じ方式で圧縮されていれば、通常と同様の比較が可能である。これにより、比較の際にローディングするデータ量を低減することができる。ローディングするデータ量が少なくなれば、メモリからデータを読み出すのに要する時間が短縮されるので、全体の処理時間も短縮することができる。また、比較器の量を削減することができるので、装置の小型化、軽量化、低コスト化に寄与することができる。比較に用いられるデータは、圧縮された形式で格納されていてもよいし、メモリから読み出した後、比較の前に圧縮されてもよい。
図17は、前提技術の通信制御装置の別の構成例を示す。本図に示した通信制御装置10は、図4に示した通信制御装置10と同様の構成を備える通信制御ユニット12を2つ有している。また、それぞれの通信制御ユニット12の動作を制御する切替制御部14が設けられている。それぞれの通信制御ユニット12は、2つの入出力インタフェース16を有しており、それぞれの入出力インタフェース16を介して、上流側、下流側の2つのネットワークに接続されている。通信制御ユニット12は、いずれか一方のネットワークから通信データを入力し、処理したデータを他方のネットワークに出力する。切替制御部14は、それぞれの通信制御ユニット12に設けられた入出力インタフェース16の入出力を切り替えることにより、通信制御ユニット12における通信データの流れの方向を切り替える。これにより、一方向だけではなく、双方向の通信制御が可能となる。
切替制御部14は、通信制御ユニット12の一方がインバウンド、他方がアウトバウンドのパケットを処理するように制御してもよいし、双方がインバウンドのパケットを処理するように制御してもよいし、双方がアウトバウンドのパケットを処理するように制御してもよい。これにより、例えばトラフィックの状況や目的などに応じて、制御する通信の方向を可変とすることができる。
切替制御部14は、各通信制御ユニット12の動作状況を取得し、その動作状況に応じて通信制御の方向を切り替えてもよい。例えば、一方の通信制御ユニット12を待機状態として、他方の通信制御ユニット12を動作させている場合に、その通信制御ユニット12が故障などにより停止したことを検知したときに、代替として待機中の通信制御ユニット12を動作させてもよい。これにより、通信制御装置10のフォールトトレランスを向上させることができる。また、一方の通信制御ユニット12に対して、データベースの更新などのメンテナンスを行うときに、他方の通信制御ユニット12を代替として動作させてもよい。これにより、通信制御装置10の運用を停止させずに、適切にメンテナンスを行うことができる。
通信制御装置10に3以上の通信制御ユニット12が設けられてもよい。切替制御部14は、例えば、トラフィックの状況を取得して、通信量の多い方向の通信制御処理に、より多くの通信制御ユニット12を割り当てるように、各通信制御ユニット12の通信の方向を制御してもよい。これにより、ある方向の通信量が増加しても、通信速度の低下を最小限に抑えることができる。
なお、複数の通信制御ユニット12の間で、通信制御部2又は4の一部が共用されてもよい。また、パケット処理回路20の一部が共用されてもよい。
図18は、複数の通信制御装置10a、10b、10c、・・・、を含む通信制御装置10の構成を示す。第1データベース50は、データ数に比例して大きな容量を必要とするので、分割して通信制御装置10a、10b、10c、・・・、に保持させる。後述するように、本前提技術の通信制御システム100では、処理すべき通信パケットを、運用中の全ての通信制御装置10a、10b、10c、・・・、に供給し、それぞれの通信制御装置10が受け取ったパケットを処理する。例えば、通信制御装置10aは、データIDが「000001」から「100000」まで、通信制御装置10bは、データIDが「100001」から「200000」まで、通信制御装置10cは、データIDが「200001」から「300000」までのデータを保持しており、それぞれが保持するデータを参照してパケットを処理する。
図19は、運用監視装置110に設けられた管理テーブル111の内部データの例を示す。管理テーブル111には、装置ID欄112、運用状況欄113、データID欄114が設けられている。装置ID欄112には、通信制御装置10a、10b、・・・、の装置IDが格納され、運用状況欄113には、その通信制御装置の運用状況が格納され、データID欄114には、その通信制御装置が担当すべきデータIDの範囲が格納される。運用状況には、例えば、「運用中」、「スタンバイ」、「故障中」、「データ更新中」などがある。運用状況欄113は、通信制御装置10a、10b、・・・、の運用状況が変更されるたびに、運用監視装置110により更新される。図19に示した例では、「465183」件のデータが第1データベース50に格納されるので、装置ID「1」〜「5」の5台の通信制御装置10が運用されており、装置ID「6」の通信制御装置10はスタンバイ状態となっている。
運用監視装置110は、複数の通信制御装置10の運用状況を監視し、いずれかの通信制御装置10においてトラブルが発生して運用不可能な状態になったことを検知したときには、スタンバイ状態となっている通信制御装置10に、運用が停止した通信制御装置10と同じデータを格納し、その通信制御装置10に運用を切り替える。例えば、図20に示すように、装置ID「2」の通信制御装置10が故障により運用停止した場合、スタンバイ状態であった装置ID「6」の通信制御装置10に、データID「100001〜200000」のデータを格納して運用を開始させる。これにより、何らかのトラブルで通信制御装置10が停止されるような状況になっても、適切に運用を継続することができる。スタンバイ中の通信制御装置10には、予めいずれかのデータを格納しておき、ホットスタンバイ状態にしておいてもよいし、コールドスタンバイ状態にしておいてもよい。
次に、通信制御装置10に含まれるデータベースを更新する手順について説明する。データベースサーバ150は、所定のタイミングで外部のデータベースから最新のデータベースを取得して保持する。運用監視装置110は、所定のタイミングで、データベースサーバ150に保持された最新のデータベースを通信制御装置10に反映させるために、データベースサーバ150から通信制御装置10にデータを転送して格納させる。
図21(a)(b)(c)は、データベースを更新する様子を説明するための図である。図21(a)は、図19と同様に、装置ID「1」〜「5」の通信制御装置10が運用中であり、装置ID「6」の通信制御装置10がスタンバイ中である状況を示す。運用監視装置110は、データベースを更新するタイミングが到来すると、現在スタンバイ状態である通信制御装置10を特定し、その通信制御装置10に対してデータを格納するようデータベースサーバ150に指示する。図21(a)の例では、装置ID「6」の通信制御装置10がスタンバイ中であるから、この通信制御装置10にデータベースサーバ150からデータが格納される。このとき、運用監視装置110は、装置ID「6」の運用状況欄113を「データ更新中」に変更する。
図21(b)は、通信制御装置10のデータベースが更新中である状況を示す。データベースサーバ150は、運用中の通信制御装置10のいずれかが担当するデータを、スタンバイ中であった装置ID「6」の通信制御装置10の第1データベース50に格納する。図21(b)の例では、装置ID「1」の通信制御装置10が担当していた、データID「000001〜100000」のデータを、装置ID「6」の通信制御装置10に格納している。
図21(c)は、装置ID「6」の通信制御装置10のデータベースが更新されて運用が開始され、代わって装置ID「1」の通信制御装置10がスタンバイ状態となった状況を示す。運用監視装置110は、装置ID「6」の通信制御装置10に対するデータの格納が終了すると、更新後のデータベースを保持する装置ID「6」の通信制御装置10の運用を開始すると同時に、更新前のデータベースを保持する装置ID「1」の通信制御装置10の運用を停止してスタンバイ状態にする。これにより、データベースが更新された通信制御装置10に運用が切り替えられる。つづいて、装置ID「1」の通信制御装置10に、データID「100001〜200000」のデータを格納した後、装置ID「1」の通信制御装置10を運用開始し、装置ID「2」の通信制御装置10の運用を停止する。以降、同様に、巡回的にデータベースを更新していくことで、通信制御システム100の運用を停止することなく、全ての通信制御装置10のデータベースを背後で更新することができる。
このように、本前提技術の通信制御装置10では、各通信制御装置10に格納されているデータは固定的ではなく、あるデータがいずれの通信制御装置10に格納されているかは、時間によって移り変わる。各通信制御装置10にパケットを送る前に、いずれの通信制御装置10にそのユーザのデータが存在するかを判定する処理を行うと、その処理に要する時間が余分にかかる。そのため、本実施の形態では、受信したパケットを全ての通信制御装置10へ供給し、各通信制御装置10がパケットを処理する。以下、このような仕組みを実現するための技術について説明する。
図22は、複数の通信制御装置10によりパケットを処理するために設けられた通信経路制御装置の構成を示す。通信経路制御装置200は、スイッチ210、データ供給ユニットの一例である光スプリッタ220、及びスイッチ230を備える。スイッチ210は、受信したパケットを通信制御装置10へ送信する。ここで、スイッチ210と通信制御装置10の間には、複数の通信制御装置10a、10b、10cにパケットを並行して供給するための光スプリッタ220が設けられており、スイッチ210は、実際には光スプリッタ220へパケットを送信し、光スプリッタ220が各通信制御装置へパケットを並行して送信する。
複数の通信制御装置10a、10b、10cへパケットを送信するために、パケットをブロードキャストに変換すると、例えばヘッダにタイムスタンプを追加するなどの余分な処理が発生し、処理速度が低下してしまう。そのため、パケットに変更を加えずに、光スプリッタ220により分割して、ユニキャストのまま複数の通信制御装置10a、10b、10cへパケットを送信する。この方式を、本明細書では「パラレルキャスト」と呼ぶ。
各通信制御装置は、自装置のMACアドレス宛のパケットのみを受信するモードではなく、宛先のMACアドレスに関係なく全てのパケットを受信するプロミスキャスモードに設定される。各通信制御装置は、光スプリッタ220からパラレルキャストされたパケットを受信すると、MACアドレスのマッチング処理を省き、全てのパケットを取得して処理する。
通信制御装置10cは、通信が禁止された場合など、送信元宛にパケットを返信する場合には、光スプリッタ220を介さずにスイッチ210へ応答パケットを送信する。通信制御装置10cは、パケットを処理した結果、通信が許可された場合は、そのパケットをネットワークへ送出する。ここで、通信制御装置10と上流の通信回線の間には、複数の通信制御装置10a、10b、10cから送出されるパケットを集約するためのスイッチ230が設けられており、通信制御装置10cは、実際にはスイッチ230へパケットを送信し、スイッチ230が上流の通信回線へパケットを送出する。
パケットの送信先から返信されたパケットをスイッチ230が受信したときに、返信されたパケットが通信制御装置10による処理を必要としない場合は、スイッチ230のポート232からスイッチ210のポート212へ送信され、スイッチ210から送信元に向けて送出される。通常、インターネットでは、パケットに対する応答パケットが確実に送信元に返信されるよう、返信経路を確保するために、送信時の経路がパケットに記録される。しかし、本実施の形態では、通信経路制御装置200内における返信経路が予め用意されているので、経路を記録せずに、すなわち、パケットを加工せずに装置間の通信を行う。これにより、無駄な処理を省き、処理速度を向上させることができる。
図22の例では、送信元から発信されたパケットを送信先へ送出する場合にのみパケットを処理し、送信先から送信元へ送出された応答パケットは処理せずに通過させる場合の構成を示しているが、通信制御装置10が両方向のパケットを処理するように構成してもよい。この場合、通信制御装置10の両側に光スプリッタ220を設ければよい。また、スイッチ230からスイッチ210へのバイパス経路は設けなくてもよい。
このように、複数の通信制御装置のうち、パケットを処理すべき通信制御装置を予め特定しなくても、全ての通信制御装置に同じパケットをパラレルキャストすることにより、処理すべき通信制御装置に適切にパケットを処理させることができる。
これらの通信制御装置は、上述したように、通信経路制御装置200からパラレルキャストされる全てのパケットを受信して処理又は破棄するので、インターネット上で装置を一意に識別するためのIPアドレスを付与しておく必要がない。サーバ装置などにより、上述したようなパケット処理を実行する場合は、サーバ装置に対する攻撃を考慮する必要があるが、本実施の形態の通信制御装置は、インターネットを介して悪意ある第三者から直接攻撃を受けることがないので、安全に通信制御を行うことができる。
(実施の形態)
高速な通信制御を実現するために、本発明者は、前提技術で説明したように、ワイヤードロジック回路により実装された通信制御装置を開発している。本発明者は、更なる性能の向上を目指した開発を続ける中で、基準データを保持する記憶領域からデータを読み上げるのに要する時間を短縮することにより、通信制御の性能を更に向上させることができることを知見した。
一般に、記憶装置へのアクセス速度と、その記憶装置の記憶容量とはトレードオフの関係にある。例えば、SRAM(Static Random Access Memory)は、アクセス速度は高速であるが、記憶容量は小さい。他方、DRAM(Dynamic Random Access Memory)は、アクセス速度はSRAMに劣るものの、大容量の記憶が可能である。
セキュリティ上の脅威が多数存在する現在、基準データは数百〜数千件のレベルとなっている。したがって、基準データ全体を保持できるメモリの容量も、例えば数十メガバイトが必要とされ、現実的にはワイヤードロジック回路の外部のDRAMメモリ等(以下、「外部メモリ」と呼ぶ。)に保持せざるを得ない。その結果、基準データへのアクセス速度は低速となり、性能のボトルネックとなる可能性がある。
本発明者は、通信データと、それと比較する基準データとの比較処理を多段構成とすることで、このような課題を解決することができることに想到した。すなわち、基準データは従来通り外部メモリに保持しておくとともに、それぞれの基準データの一部を部分基準データとして予め抽出しておき、それをワイヤードロジック回路内部に設けられた、外部メモリよりも高速な記憶装置(以下、「回路内部バッファ」と呼ぶ。)に記憶させておく。部分基準データのデータ量は小さいため、回路内部バッファに保持可能である。第1段階の比較として、通信データと回路内部バッファ内の部分基準データとを比較することにより、この時点で合致しない通信データをふるい落とすことができる。そして、第1段階の比較に適合した通信データだけを、第2段階の比較として、外部メモリ内の基準データと比較する。結果として、外部メモリからの読み出しが減り、比較処理の時間が削減される。以下、実施の形態として、この多段構成の比較処理を実現する通信制御装置について説明する。
図23は、本実施の形態に係る通信制御装置に含まれるパケット処理回路300の構成を示す。同図は、前提技術の図4に示したパケット処理回路20の構成図と対応する。なお、本実施の形態の通信制御装置の全体構成は、図3に示した前提技術の通信制御装置の全体構成と同様である。以下、前提技術と同じ機能ブロックについては、前提技術の説明で用いた符号と同一のものを使用し、詳細な説明は省略する。
パケット処理回路300は、前提技術のパケット処理回路20と同様に、ワイヤードロジック回路により、専用のハードウェア回路として構成されている。したがって、ソフトウェアにより実現されるパケット処理回路とは異なり、CPUの性能限界やOSのセキュリティホール等の影響を受けないことは、前提技術のパケット処理回路20と同様である。パケット処理回路300は、検索回路310、第1データベース350、処理実行回路40、及び第2データベース60を備える。
第1データベース350は、通信データに対して実行する処理の内容を決定するための基準となる基準データを格納する。本図では、第1データベースが1つのみ設けられているが、前提技術のように複数設けられてもよい。検索回路310は、受信された通信データの中に基準データが含まれているか否かを、通信データと基準データとを比較することにより検索する。処理実行回路40と、第2データベース60の機能は、前提技術と同様である。第2データベース60は、検索回路310による検索結果と通信データに対して実行する処理の内容とを対応付けて記憶する。処理実行回路40は、検索回路310による検索結果と第2データベース60に記憶された条件とに基づいて通信データを処理する。
第1データベース350は、セグメントテーブル360、変換テーブル370、マッチングテーブル380を有する。
セグメントテーブル360は、基準データの所定のデータ長の部分文字列を部分基準データとして保持する。なお、セグメントテーブル360は、昇順もしくは降順に整列されているものとする。図24は、セグメントテーブル360のテーブル構造を例示する図である。同図では、「Ta」で始まりデータ長が3バイトの部分基準データを例示している。例えば、基準データ「Takai」・「Takahasi」等に対応する部分基準データとして「Tak」が格納されており、基準データ「Tamura」・「Tamaki」等に対応する部分基準データとして「Tam」が格納されている。
マッチングテーブル380は、基準データを保持する。図25は、マッチングテーブル380のテーブル構造を例示する図である。本実施の形態に係るマッチングテーブル380には、末尾が0番地のアドレスに、基準データが格納されている。また、基準データは8バイトの固定長とし、8バイトに満たないものは「*」でパディングされている。また、末尾が1番地のアドレスには、マスクデータが格納されている。これは、基準データの有効・無効の領域をビット単位で指定するものである。また本例では、マスクデータが1が基準データの有効を示し、0が基準データの無効を示すものであるとする。
図25を使用してさらなる具体例を示す。基準データ「Takai***」の場合には、マスクデータが8進数表記で「77777000」として与えられている。したがって、基準データの有効な文字列は「Takai」となり、通信データが「Takai」を有する場合、通信データと基準データは合致したと判定される。このように、基準データのパディングにより、基準データのデータ長にかかわらず、検索回路310における汎用的な比較処理が可能となる。また、マスクデータの設定により、基準データ毎に有効なデータ範囲を指定でき、通信データと基準データとの比較処理をより柔軟に行うことができる。
セグメントテーブル360の部分基準データと、マッチングテーブル380の基準データとを対応付ける方法については特に制限はない。例えば、部分基準データは、基準データの一部であるので、部分基準データに対応する基準データとして、部分基準データを含む基準データが抽出されてもよい。また、セグメントテーブル360に、マッチングテーブルの各レコードへのポインタが保持されてもよい。本実施の形態では、この対応付けのために変換テーブル370を使用する。
図26は、部分基準データと、マッチングテーブル380の基準データとを対応付ける変換テーブル370のテーブル構造を例示する図である。同図では、図24で例示した部分基準データと、それに対応する基準データを保持したマッチングテーブル380のメモリ上のアドレスを保持することを示している。例えば、部分基準データ「Tak」に対応する基準データのメモリ上のアドレスは2進数表記で「0110011010」番地であり、同様に部分基準データ「Tam」に対応するアドレスは「0110011100」番地である。なお、本実施の形態では、これらの基準データのアドレスに1を加えたものを、マスクデータを保持するアドレスとしている。
ここで、セグメントテーブル360、変換テーブル370、マッチングテーブル380のデータ量について考察する。マッチングテーブル380には基準データおよびマスクデータ(ここではそれぞれ8バイト)と各レコードあたりの基準データ数(8個)が512件分格納されているとすると、(8バイト×8個×2(マスクデータ分)×512)バイト≒64メガバイトのデータ量となる。一方でセグメントテーブル360は、部分基準データ(基準データの先頭3バイト)が512件分格納されているため、(3バイト×512)バイト≒1.5メガバイトのデータ量となる。さらに、変換テーブル370は、部分基準データおよびマッチングテーブル380の各レコードの先頭アドレス(10ビット)が512件分格納されているため、((3バイト×8ビット+10ビット)×512)ビット≒2.1メガバイトのデータ量となる。したがって、セグメントテーブル360は回路内部バッファに保持し、マッチングテーブル380は外部メモリに保持することで最適なデータ配置を実現できる。変換テーブル370は、セグメントテーブル360と同様に、回路内部バッファに保持されてもよく、また、アクセス速度と記憶容量の特性において、回路内部バッファと外部メモリの中間の特性を持つ記憶装置に保持されてもよい。言い換えれば、アクセス速度と記憶容量、さらには費用との関係から最適な選択がされればよい。
検索回路310は、入力データ生成回路320、第1比較回路330、第2比較回路340、を有する。
入力データ生成回路320は、通信データを所定のデータ長ずつ位置をずらした複数のデータ(以下、「入力データ」と呼ぶ。)に変換する。図27は、入力データ生成回路320による通信データをもとにした複数の入力データの生成イメージを示す図である。同図では、通信データ322「Taro.Takakura」を複数の入力データ324に変換している。本実施の形態では、それぞれの入力データは8バイトの固定長であることとし、入力データ324aは通信データ322の先頭から8バイトの「Taro.Tak」であり、入力データ324bは入力データ324aから1バイトずらした次の8バイトである「aro.Taka」である。入力データ324c以降も同様である。なお、比較するデータには特に制限はなくどのようなデータ列、例えば文字列・バイト列・ビット列、であってもよい。本実施の形態の説明では説明の簡明化のため文字列としているが、実際の検索回路では単にビット列の異同が問われるため、通信データの形式に制限がないことは当業者には理解されるところである。
第1比較回路330は、セグメントテーブル360を参照して、入力データの先頭から所定の長さのデータ(以下、「部分入力データ」)と、部分基準データとを比較する。第1比較回路330は、複数存在してよい。複数の第1比較回路を備えることで、部分入力データと複数の部分基準データとを同時に並列して比較することができる。CPUによるスレッドアーキテクチャがCPU処理の時分割による擬似的な並列動作であるのに対し、完全な並列動作となり比較処理のスループットが向上する。また、この比較でバイナリサーチを応用することでさらに効率的な比較計算を実現する。第1比較回路330が8個あり、セグメントテーブル360のレコード数が512である場合を例にとって説明する。
まず1回目の比較では、セグメントテーブル360を8つに分けたデータ(64データ毎)と比較してどの領域(領域Aとする)に部分入力データが存在するかを調べる。第2回目の比較では、領域A内でテーブルを8つに分けたデータ(8データ毎)と比較してどの領域(領域Bとする)に部分入力データが存在するかを調べる。第3回目の比較では、領域B内でテーブルを8つに分けたデータ(1データ毎)と比較して、部分入力データが存在するかを調べる。このように、バイナリサーチを応用した比較を行うことで、セグメントテーブル360のレコード数をNとすると、log8Nの計算量で部分入力データの存否を確認でき、効率のよい比較計算を実現する。
第2比較回路340は、マッチングテーブル380を参照して、入力データと基準データとを比較する。第1比較回路330と同様に、第2比較回路340も複数存在してよい。複数の第2比較回路を備えることで、入力データと複数の基準データとを同時に並列して比較することができる。例えば、図25で示したように、一つの部分基準データに対し基準データが8つある場合、第2比較回路340が8つあれば、入力データと基準データとの比較を一度に完了することができる。
なお、第1比較回路330と第2比較回路340は同じ比較回路であってもよい。どちらも、記憶装置に格納されたテーブルを参照して、入力データ又は部分入力データと比較するものであるため同じ回路として実現可能である。または、第1比較回路と第2比較回路は別個独立に動作するものであってもよい。この場合、第2の比較回路が、ある入力データと基準データとを比較する間に、第1の比較回路は、次の部分入力データと部分基準データとを比較しておくこともできる。
また、変換テーブル370からマッチングテーブル380における基準データのアドレスを取得するのは第1比較回路330であってもよく、第2比較回路340であってもよい。前者の場合、第2比較回路340には第1比較回路330から基準データのアドレスが通知される。後者の場合、第2比較回路340には第1比較回路330から部分基準データそのものが通知される。
図28は、検索回路310における各回路の処理の流れを説明するフローチャートである。まず、入力データ生成回路320は、通信データから固定長の入力データを抽出する(S2)。次に、第1比較回路は、部分入力データと、セグメントテーブル360の部分基準データとを比較する(S4)。部分入力データが部分基準データと一致しない場合(S6のN)、入力データが基準データと一致することはないため処理を終了する。一致する場合(S6のY)、第1比較回路330は、変換テーブル370からその部分基準データに対応する基準データのマッチングテーブル380におけるアドレスを取得し、第2比較回路340に通知する(S8)。第2比較回路340は、そのアドレスをもとに複数の基準データを取得し、入力データと基準データとを比較する(S10)。以降の処理実行回路40での処理は、前提技術で説明したとおりである。
本実施の形態の通信制御装置は、IPアドレスを有しない完全透過型の通信機であり、通信データを物理的に着信せずに上記の機能を実行する。つまり、通信制御装置は、ネットワークを通過中の通信データを取り込み、プロトコル処理など物理的な着信に要する処理を省略して、上述した処理を行い、所定の条件にしたがって通信データをネットワークへ再送出する。従来の通信機は、自装置宛の通信データを受信して制御していたが、本実施の形態の通信制御装置は、自装置宛に送信されたのではない通過中の通信データを取り込んで制御する。したがって、送信元及び送信先の装置や、通信経路に設けられた他の通信装置は、通信制御装置が設けられることによる設定等の変更を何ら必要とすることなく、通信制御装置の存在を全く意識せずに通信を行うことができる。したがって、本実施の形態の技術によれば、通信システムに大きな改変を行うことなく、上記のような通信制御を行うことができる。また、本実施の形態の通信制御装置はIPアドレスを有しないので、悪意あるハッカーなどから攻撃を受けることがなく、セキュリティ性に優れている。
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。