10 通信制御装置、20 パケット処理回路、30 検索回路、32 位置検出回路、33 比較回路、34 インデックス回路、35 比較回路、36 バイナリサーチ回路、36A,36B,36C 比較回路、36Z 制御回路、40 処理実行回路、50 第1データベース、60 第2データベース、100 通信制御システム、110 運用監視サーバ、120 接続管理サーバ、130 メッセージ出力サーバ、140 ログ管理サーバ、150 データベースサーバ、180 切替部、181 URLフィルタリング用データベース、182 スパムメールフィルタリング用データベース、183 P2P帯域制御用データベース、200 通信経路制御装置、300 通信管理システム、310 ユーザ端末、320 P2Pノード、322 P2Pネットワーク、330 ISP、340 ノード検出装置、350 P2Pノード、352 P2Pノード検出用ネットワーク、360 P2Pノードデータベース、390 インターネット。
まず、前提技術として、CPU及びOSを有さず、専用のハードウェア回路によりパケットフィルタリング機能を実現する通信制御システムについて説明する。つづいて、実施の形態として、前提技術の通信制御システムを異なる複数の通信制御に利用する技術について説明する。
(前提技術)
図1は、前提技術に係る通信制御システムの構成を示す。通信制御システム100は、通信制御装置10と、通信制御装置10の動作を支援するために設けられた各種の周辺装置を含む。前提技術の通信制御装置10は、インターネットサービスプロバイダなどにより提供されるパケットフィルタリング機能を実現する。ネットワークの経路に設けられた通信制御装置10は、ネットワークを介して送受信されるパケットを取得して、その内容を解析し、通信の許否を判断する。通信が許可される場合は、通信制御装置10は、そのパケットをネットワークへ送出する。通信が禁止される場合は、通信制御装置10は、そのパケットを破棄し、必要であれば送信元に対して警告メッセージなどを返信する。
前提技術の通信制御システム100では、複数の通信制御装置10a、10b、10c、・・・、が設けられており、それらを協働させて、1台の通信制御装置10として機能させているが、以下、個々の通信制御装置10a、10b、10c、・・・も、それらの総称も区別せずに通信制御装置10と呼ぶ。
本前提技術の通信制御システム100では、それぞれの通信制御装置10は、パケットの処理に必要なデータベースの少なくとも一部を分割して保持しているが、分割して保持するのに必要な台数よりも少なくとも1台以上余分に設けられる。例えば、データ数が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ビットの処理を可能にすることで、飛躍的に処理速度を向上させることができる。比較器の数を多くすれば処理能力も向上するが、コストやサイズも増大するので、所望の処理性能と、コスト、サイズ、などを考慮して、最適なハードウェア回路を設計すればよい。
また、本前提技術の通信制御装置10は、ワイヤードロジック回路による専用のハードウェアにより構成されるので、OS(Operating System)を必要としない。このため、OSのインストール、バグ対応、バージョンアップなどの作業が必要なく、管理やメンテナンスのためのコストや工数を低減させることができる。また、汎用的な機能が求められるCPUとは異なり、不必要な機能を包含していないので、余計なリソースを用いることがなく、低コスト化、回路面積の低減、処理速度の向上などが望める。さらに、OSを利用していた従来の通信制御装置とは異なり、余分な機能を有しないので、セキュリティホールなどが発生する可能性が低く、ネットワークを介した悪意ある第三者からの攻撃に対する耐性に優れている。
従来の通信制御装置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に供給し、第2データベース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の通信の方向を制御してもよい。これにより、ある方向の通信量が増加しても、通信速度の低下を最小限に抑えることができる。
図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アドレスを付与しておく必要がない。サーバ装置などにより、上述したようなパケット処理を実行する場合は、サーバ装置に対する攻撃を考慮する必要があるが、本実施の形態の通信制御装置は、インターネットを介して悪意ある第三者から直接攻撃を受けることがないので、安全に通信制御を行うことができる。
図23は、実施の形態に係る通信管理システムの構成を示す。通信管理システム300は、パケットフィルタリングなどの機能を有する通信制御システム100を用いて、P2Pノード320間の不適切な通信を遮断又は劣後させるなど、P2P通信を管理する。
パーソナルコンピュータなどのユーザ端末310は、通常、公衆電話網、携帯電話網、LAN、WANなど(図示せず)を介してインターネットサービスプロバイダ(Internet Service Provider:以下、「ISP」と表記する)330に接続し、ISP330を介してインターネット390に接続している。ファイル共有ソフトなどのP2Pアプリケーションを実行しているP2Pノード320は、互いにP2P接続し、P2Pネットワーク322を形成している。ファイル共有アプリケーションにおいて、ファイル検索機能などを提供するサーバ又はホストの役割を果たす装置なども「P2Pノード320」に含む。
サーバ・クライアントモデルにおいては、サーバに情報が蓄積され、クライアントはインターネットを介してサーバに接続して情報を入手するので、違法なコンテンツの流通が検出された場合は、そのコンテンツを提供しているサーバを摘発して停止させればよい。しかし、P2Pネットワーク322では、P2Pノード320間で直接通信が行われるので、違法なコンテンツの流通を検出するのが難しく、また、検出できたとしても、いずれのP2Pノード320が発信源となっているのかを特定することが難しい。
また、P2Pネットワーク322に、ファイル共有のためのファイル検索サーバが設けられる形態ではなく、P2Pノード320間で直接ファイルの有無を問い合わせて検索する形態の場合は、P2Pノード320が増加すると加速度的に通信が増加してネットワークが混雑し、ISP330を利用する他のユーザ端末310に影響を与える可能性がある。
さらに、P2Pネットワーク322では、P2Pノード320は他のP2Pノード320との間で直接通信を行うので、悪意あるP2Pノード320による攻撃に対して脆弱であり、ウイルス蔓延の温床となっている。コンピュータセキュリティに無知又は無関心なユーザがファイル共有アプリケーションを利用してウイルスに感染し、重要な情報が流出するなど、社会的な問題となっている。
このような状況下、P2P通信を適切に管理する技術が切に求められているが、従来は、P2Pノード320間のデータの送受信を規制することが困難であった。本実施の形態では、P2Pノード320を検出して、検出したP2Pノード320との間の通信を適切にフィルタリングする技術を提案する。この技術により、上記のような問題が解決されることが期待されるため、本発明の社会的な貢献度は非常に高いと言える。
本実施の形態では、図23に示すように、ユーザ端末310とP2Pネットワーク322のP2Pノード320との間に、前提技術で説明した通信制御システム100を設ける。また、P2Pノード320のIPアドレスなどを検出するためのP2Pノード検出用ネットワーク352を設け、ノード検出装置340が検出したP2Pノード320のIPアドレスなどの識別情報を通信制御システム100へ通知し、P2Pノード320との間の通信を検出するために用いる。通信制御システム100は、ネットワーク上の任意の位置に設けられてもよいが、図23では、ISP330が通信制御システム100を設ける例を示している。ほとんどのP2Pノード320は、いずれかのISP330を介してインターネット390に接続しているので、各ISP330が通信制御システム100を導入すれば、より適切にP2P通信を管理することができる。
P2Pノード350は、レイヤ2スイッチ344及びルータ342を介してインターネット390に接続されており、P2Pアプリケーションを実行して、P2Pノード320との間でP2P接続して通信を行う。ノード検出装置340は、P2Pノード350とP2Pネットワーク322の間に設けられ、P2Pノード350とP2Pネットワーク322のP2Pノード320との間の通信パケットを取得して解析し、P2Pノード320のIPアドレスとTCP又はUDPのポート番号などの識別情報を検出する。ノード検出装置340は、DNSへの問い合わせなど、P2Pノード350のP2Pアプリケーション以外のアプリケーションによる通信相手は記録せず、P2Pアプリケーションによる通信の相手を検出して記録する。ノード検出装置340は、P2Pノード350が送受信するパケットを解析するが、レイヤ2透過型であり、パケットをフィルタリングせずに透過させる。また、図23に示したノード検出装置340は、レイヤ2透過型としての構成のほかに、ルータ型の装置として実装することも可能である。この場合、ノード検出装置340は、あたかも通常のルータ型装置のようにルーティングを行うが、P2Pアプリケーションによる通信の相手を検出して記録する動作を行う。ノード検出装置340により検出されたP2Pノード320のIPアドレス及びTCP/UDPポート番号は、P2Pノードデータベース360に登録される。P2Pノードデータベース360に登録されたデータは、前提技術で説明したように、所定のタイミングで、通信制御システム100のデータベースサーバ150により、通信制御装置10の第1データベース50に反映される。
通信制御装置10は、インデックス回路34及びバイナリサーチ回路36により、ISP330を通過するパケットの送信元又は送信先のIPアドレス及びTCP/UDPポート番号が第1データベース50に登録されているか否かを検索する。第1データベース50に登録されていれば、P2Pノード320によるP2P通信のパケットであるから、処理実行回路40によりパケットを破棄してP2P通信を遮断するか、又は、パケットの送信を遅延させて他の通信に比して劣後させる。第1データベース50に登録されていなければ、P2P通信ではないので、処理実行回路40はパケットを破棄せずにネットワークへ送出する。これにより、P2P通信を検出して規制することができる。
上記の例では、ノード検出装置340がP2Pノード320のIPアドレスとTCP/UDPポート番号を検出して収集したが、P2P通信が別のプロトコルを利用している場合は、そのプロトコルに合わせて、P2P通信を検出することが可能なP2Pノード320の識別情報を収集すればよい。
ユーザ端末310が新たにP2Pアプリケーションを起動してP2Pノード350と通信を行うと、ノード検出装置340によりIPアドレスとTCP/UDPポート番号が検出され、P2Pノードデータベース360に登録される。したがって、P2Pノードデータベース360を通信制御システム100に反映させる間隔を短くすることにより、P2Pノード320が新たに出現してから短時間でP2Pノード320のP2P通信を規制することができる。
いったんP2P通信を行ってP2Pノードデータベース360に登録されたP2Pノード320であっても、長期間P2P通信を行っていない場合は、P2Pノードデータベース360から削除してもよい。例えば、P2Pアプリケーションを利用していたユーザが、P2Pアプリケーションをユーザ端末310からアンインストールし、P2Pアプリケーションが通信に利用していたポート番号を別の通信に利用する場合、P2Pノードデータベース360にIPアドレスとポート番号が登録されているので、P2P通信でないにもかかわらず通信が規制されることになる。したがって、P2Pノードデータベース360に最終検出日時を記録しておき、最終検出日時から所定の期間が経過したP2Pノード320の情報はP2Pノードデータベース360から削除してもよい。このユーザ端末310が再びP2P通信を開始した場合は、ノード検出装置340により検出され、再びP2Pノードデータベース360に登録されて、そのノードとの間のP2P通信が遮断又は劣後される。
図24は、通信管理システムの別の構成例を示す。図24に示した通信管理システム300では、図23に示した通信管理システム300に比べ、P2Pノード検出用ネットワーク352の構成が異なる。具体的には、ノード検出装置340が、ルータ342とレイヤ2スイッチ344の間ではなく、レイヤ2スイッチ344の後段に接続されている。この例では、レイヤ2スイッチ344のポートミラーリング機能を利用して、レイヤ2スイッチ344を通過する全てのパケットを複製してノード検出装置340に送る。ノード検出装置340は、取得したパケットを解析してP2Pノード320の識別情報を収集し、パケットを破棄する。その他の構成及び動作は、図23に示した通信管理システム300と同様である。
図25は、本実施の形態のパケット処理回路20の構成を示す。パケット処理回路20は、図4に示した前提技術のパケット処理回路20の構成に加えて、デコーダ回路70及び復号鍵72を更に備える。
P2Pアプリケーションが利用するプロトコルには、特徴的な文字列が含まれる場合が多い。例えば、TCPパケットのヘッダにP2Pアプリケーションの名称などの識別情報がセットされている場合、その文字列を検出することにより、パケットがP2P通信のパケットであるか否かを判定することができる。したがって、本実施の形態では、前提技術で説明した位置検出回路32を利用して、パケットに含まれるP2P通信に特有の文字列を検出し、P2P通信であるか否かを判定する。P2P通信に特有の文字列を含むパケットは、インデックス回路34及びバイナリサーチ回路36により第1データベース50と照合するまでもなく、処理実行回路40によりパケットを破棄又は劣後させる。これにより、効率よくP2P通信を検知してフィルタリングすることができる。
P2Pアプリケーションによっては、通信データを暗号化して送受信する場合がある。デコーダ回路70は、P2Pアプリケーションにより暗号化された通信データを復号するための復号鍵72で、取得したパケットの通信データを復号する。例えば、P2Pアプリケーションが共通鍵暗号方式で通信データを暗号化している場合は、その共通鍵を復号鍵72として用い、暗号化された通信データを復号する。デコーダ回路70は、前提技術で説明したように、CPU及びOSを用いず、ワイヤードロジック回路により形成された専用のハードウェア回路として実現されるが、復号鍵72は外部から書き換え可能に設けられてもよい。これにより、P2Pアプリケーションの復号鍵が変わった場合であっても、柔軟に対応させることができる。また、異なるP2Pアプリケーションが出現した場合にも汎用的に利用することができる。
この場合も、位置検出回路32が、復号された通信データからP2P通信に特有の文字列を検出するが、P2P通信でないパケットの場合は、デコーダ回路70での復号処理により意味のないデータ列になっているので、P2P通信に特有の文字列は検出されない。したがって、P2P通信に特有の文字列の有無により、P2P通信のパケットであるか否かを判定することができる。
(実施の形態)
実施の形態では、異なる複数の種別の通信制御のための複数のデータベースを設け、それらを切り替えて適用させることにより、1つの通信制御装置に複数の種別の通信制御を実行させる技術について説明する。
図26は、実施の形態に係るパケット処理回路20の構成を示す。図26に示したパケット処理回路26は、図4に示した前提技術のパケット処理回路20の構成に加えて、切替部180を更に備える。また、第1データベース50及び第2データベース60として、複数の種別の通信制御用に設けられた複数のデータベースを備える。図26の例では、ネットワークを介したコンテンツに対するアクセスを制御するためのURLフィルタリング用データベース181と、スパムメールをフィルタリングするためのスパムメールフィルタリング用データベース182と、P2P通信の帯域制御を行うためのP2P帯域制御用データベース183が設けられている。
切替部180は、第1データベース50及び第2データベース60を、異なる複数の通信制御用のデータベースの間で切り替えることにより、通信制御装置10を異なる複数の通信制御に利用可能とする。切替部180は、チップセレクト信号などを用いて、使用するデータベースが格納されたROM又はRAMなどのメモリ装置を切り替えてもよい。
切替部180は、第1データベース50及び第2データベース60を切り替える際に、位置検出回路32が検出すべき位置特定データを、切り替えた後のデータベースに格納された基準データの格納位置を特定するための位置特定データに切り替えてもよい。例えば、通信制御装置10にURLフィルタリングの機能を持たせる際には、第1データベース50及び第2データベース60をURLフィルタリング用データベース181に切り替えるとともに、位置検出回路32の位置特定データとして「http::/」という文字列を設定し、アクセス先のコンテンツのURLの格納位置を検出させる。また、通信制御装置10にスパムメールフィルタリングの機能を持たせる際には、第1データベース50及び第2データベース60をスパムメールフィルタリング用データベース182に切り替えるとともに、位置検出回路32の位置特定データとして「DATA」という文字列を設定し、電子メールの本文の格納位置を検出させる。
切替部180は、通信データの種別に応じて動的に適用すべきデータベースを切り替えてもよい。例えば、検索回路30を、パケットの種別を判定するための判定回路として用い、検索回路30によりパケットのポート番号を検出して切替部180へ通知させる。切替部180は、通知されたポート番号、すなわちパケットの種別に応じて、第1データベース50及び第2データベース60を切り替える。例えば、ポート番号が「80」であればHTTPパケットであるから、URLフィルタリング用データベース181に切り替え、ポート番号が「25」であればSMTPパケットであるから、スパムメールフィルタリング用データベース182に切り替えてもよい。これにより、1つの通信制御装置10の機能を動的に切り替え、パケットの種別に応じて異なる複数の通信制御を行うことができる。この場合、切替部180は、検索回路30から出力されるポート番号の信号から、それぞれの第1データベース50及び第2データベース60に対するチップセレクト信号を生成して供給するための回路であってもよい。
本実施の形態の通信制御装置10は、IPアドレスを有しない完全透過型の通信機であり、通信データを物理的に着信せずに上記の機能を実行する。つまり、通信制御装置10は、ネットワークを通過中の通信データを取り込み、プロトコル処理など物理的な着信に要する処理を省略して、上述した処理を行い、所定の条件にしたがって通信データをネットワークへ再送出する。従来の通信機は、自装置宛の通信データを受信して制御していたが、本実施の形態の通信制御装置10は、自装置宛に送信されたのではない通過中の通信データを取り込んで制御する。したがって、送信元及び送信先の装置や、通信経路に設けられた他の通信装置は、通信制御装置10が設けられることによる設定等の変更を何ら必要とすることなく、通信制御装置10の存在を全く意識せずに通信を行うことができる。したがって、本実施の形態の技術によれば、通信システムに大きな改変を行うことなく、上記のような通信制御を行うことができる。また、本実施の形態の通信制御装置10はIPアドレスを有しないので、悪意あるハッカーなどから攻撃を受けることがなく、セキュリティ性に優れている。
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。