5a PHY処理部、5b PHY処理部、10 通信制御装置、12 通信制御ユニット、14 切替制御部、20 パケット処理回路、30 検索回路、32 位置検出回路、33 比較回路、34 インデックス回路、35 比較回路、36 バイナリサーチ回路、40 処理実行回路、50 第1データベース、60 第2データベース、100 通信制御システム、110 運用監視サーバ、120 接続管理サーバ、130 メッセージ出力サーバ、140 ログ管理サーバ、150 データベースサーバ、160 URLデータベース、502 通信装置、504 通信装置、510 判定部、520 仮想通信装置。
(前提技術)
まず、前提技術として、通信制御装置と、その周辺装置の構成及び動作の概要について説明する。
図1は、前提技術に係る通信制御システムの構成を示す。通信制御システム100は、通信制御装置10と、通信制御装置10の動作を支援するために設けられた各種の周辺装置を含む。前提技術の通信制御装置10は、インターネットサービスプロバイダなどにより提供されるURLフィルタリング機能を実現する。ネットワークの経路に設けられた通信制御装置10は、コンテンツに対するアクセス要求を取得して、その内容を解析し、コンテンツに対するアクセスの許否を判断する。コンテンツに対するアクセスが許可される場合は、通信制御装置10は、そのアクセス要求を、コンテンツを保持するサーバへ送出する。コンテンツに対するアクセスが禁止される場合は、通信制御装置10は、そのアクセス要求を破棄し、要求元に対して警告メッセージなどを返信する。前提技術では、通信制御装置10は、HTTP(HyperText Transfer Protocol)の「GET」リクエストメッセージ等のアクセス要求を受信し、アクセス先のコンテンツのURLが、アクセスの許否を判断するための基準データのリストに合致するか否かを検索して、コンテンツに対するアクセスの許否を判断する。
周辺装置は、運用監視サーバ110、接続管理サーバ120、メッセージ出力サーバ130、ログ管理サーバ140、及びデータベースサーバ150を含む。接続管理サーバ120は、通信制御装置10に対する接続を管理する。接続管理サーバ120は、例えば、携帯電話端末から送出されたパケットを通信制御装置10で処理する際に、パケットに含まれる携帯電話端末を一意に識別する情報を用いて、通信制御装置10のユーザであることを認証する。いったん認証されると、その携帯電話端末に一時的に付されたIPアドレスから送出されたパケットは、一定の期間は接続管理サーバ120で認証せずに通信制御装置10へ送られて処理される。メッセージ出力サーバ130は、通信制御装置10により判定されたアクセスの許否の結果に応じて、アクセスの要求先又は要求元に対するメッセージを出力する。ログ管理サーバ140は、通信制御装置10の運用履歴を管理する。データベースサーバ150は、URLデータベース160から最新のデータベースを取得し、通信制御装置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は、図2に示した従来の通信制御装置1においてはCPU及びOSを含むソフトウェアにより実現されていたパケット処理部3に代えて、ワイヤードロジック回路による専用のハードウェアにより構成されたパケット処理回路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を利用していた従来の通信制御装置とは異なり、余分な機能を有しないので、セキュリティホールなどが発生する可能性が低く、ネットワークを介した悪意ある第三者からの攻撃に対する耐性に優れている。
従来の通信制御装置1は、CPUとOSを前提としたソフトウェアによりパケットを処理しており、パケットの全てのデータを受信してからプロトコル処理を行い、データがアプリケーションに渡される。それに対して、本前提技術の通信制御装置10では、専用のハードウェア回路により処理を行うので、パケットの全てのデータを受信してから処理を開始する必要はなく、処理に必要なデータを受信すれば、後続のデータの受信を待たずに、任意の時点で処理を開始することができる。例えば、後述する位置検出回路における位置検出処理は、比較対象データの位置を特定するための位置特定データを受信した時点で開始することができる。このように、全てのデータの受信を待たずに様々な処理をフローティングで実行することができるので、パケットのデータを処理するのに要する時間を短縮することができる。
図4は、パケット処理回路の内部構成を示す。パケット処理回路20は、通信データに対して実行する処理の内容を決定するための基準となる基準データを記憶する第1データベース50と、受信された通信データの中に基準データが含まれているか否かを、通信データと基準データとを比較することにより検索する検索回路30と、検索回路30による検索結果と通信データに対して実行する処理の内容とを対応づけて記憶する第2データベース60と、検索回路30による検索結果と第2データベース60に記憶された条件とに基づいて通信データを処理する処理実行回路40とを含む。
検索回路30は、通信データの中から基準データと比較すべき比較対象データの位置を検出する位置検出回路32と、第1データベース50に記憶された基準データを3以上の範囲に分割したとき、比較対象データがそれらの範囲のうちいずれに属するかを判定する判定回路の一例であるインデックス回路34と、判定された範囲の中で比較対象データと合致する基準データを検索するバイナリサーチ回路36とを含む。比較対象データを基準データの中から検索する方法としては、任意の検索技術を利用可能であるが、前提技術ではバイナリサーチ法を用いる。
図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は、第1データベースの内部データの例を示す。第1データベース50には、パケットのフィルタリング、ルーティング、スイッチング、置換などの処理の内容を決定するための基準となる基準データが、何らかのソート条件にしたがってソートされて格納されている。図6の例では、1000個の基準データが記憶されている。
第1データベース50の先頭のレコードには、通信データ中の比較対象データの位置を示すオフセット51が格納されている。例えば、TCPパケットにおいては、パケット内のデータ構成がビット単位で定められているため、パケットの処理内容を決定するためのフラグ情報などの位置をオフセット51として設定しておけば、必要なビットのみを比較して処理内容を決定することができるので、処理効率を向上させることができる。また、パケットのデータ構成が変更された場合であっても、オフセット51を変更することで対応することができる。第1データベース50には、比較対象データのデータ長を格納しておいてもよい。これにより、必要な比較器のみを動作させて比較を行うことができるので、検索効率を向上させることができる。
インデックス回路34は、第1データベース50に格納されている基準データを3以上の範囲52a〜52dに分割したとき、比較対象データがそれらの範囲のうちいずれに属するかを判定する。図6の例では、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により判定された範囲をさらに2分割し、その境界位置にある基準データと比較対象データとを比較することにより、いずれの範囲に属するかを判定する。バイナリサーチ回路36は、基準データと比較対象データとをビット単位で比較する比較回路を複数個、例えば前提技術では1024個含んでおり、1024ビットのビットマッチングを同時に実行する。2分割された範囲のいずれに属するかが判定されると、さらに、その範囲を2分割して境界位置にある基準データを読み出し、比較対象データと比較する。以降、この処理を繰り返すことにより範囲をさらに限定し、最終的に比較対象データと合致する基準データを検索する。
前述した例を用いてさらに詳細に動作を説明する。図5に示した通信データにおいて、位置特定データ「No.」につづく比較対象データは「361」という数字である。位置特定データ「No.」と比較対象データ「361」との間には1文字分のスペースが存在しているので、このスペースを比較対象データから除くために、オフセット51が「8」ビットに設定されている。バイナリサーチ回路36は、位置特定データ「No.」につづく通信データから、「8」ビット、すなわち1バイト分をスキップし、さらにつづく「361」を比較対象データとして読み込む。
インデックス回路34の比較回路35a〜35cには、比較対象データとして「361」が入力され、基準データとして、比較回路35aには、範囲52aと52bの境界にある基準データ「378」が、比較回路35bには、範囲52bと52cの境界にある基準データ「704」が、比較回路35cには、範囲52cと52dの境界にある基準データ「937」が、それぞれ入力される。比較回路35a〜35cにより同時に比較が行われ、比較対象データ「361」が範囲52aに属することが判定される。以降、バイナリサーチ回路36が基準データの中に比較対象データ「361」が存在するか否かを検索する。
図7は、第1データベースの内部データの別の例を示す。図7に示した例では、基準データのデータ数が、第1データベース50に保持可能なデータ数、ここでは1000個よりも少ない。このとき、第1データベース50には、最終データ位置から降順に基準データが格納される。そして、残りのデータには0が格納される。データベースのローディング方法として、先頭からデータを配置せずにローディングエリアの後方から配置し、ローディングエリア先頭に空きが生じた場合は全ての空きをゼロサプレスすることで、データーベースは常にフルの状態になり、バイナリー検索する場合の最大時間を一定にすることができる。また、バイナリサーチ回路36は、検索中に基準データとして「0」を読み込んだときには、比較結果が自明であるから、比較を行わずに範囲を特定して、次の比較にうつることができる。これにより、検索速度を向上させることができる。
CPUによるソフトウェア処理においては、第1データベース50に基準データを格納する際に、最初のデータ位置から昇順に基準データが格納される。残りのデータには、例えば最大値が格納されることになるが、この場合、バイナリサーチにおいて、上述したような比較処理の省略はできない。上述した比較技術は、専用のハードウェア回路により検索回路30を構成したことにより実現される。
図8は、第1データベースの内部データのさらに別の例を示す。図8に示した例では、基準データを均等に3以上の範囲に分割するのではなく、範囲52aは500個、範囲52bは100個というように、範囲に属する基準データの数が不均一になっている。これらの範囲は、通信データ中における基準データの出現頻度の分布に応じて設定されてもよい。すなわち、それぞれの範囲に属する基準データの出現頻度の和がほぼ同じになるように範囲が設定されてもよい。これにより、検索効率を向上させることができる。インデックス回路34の比較回路35a〜35cに入力される基準データは、外部から変更可能になっていてもよい。これにより、範囲を動的に設定することができ、検索効率を最適化することができる。
図9は、バイナリサーチ回路に含まれる比較回路の構成を示す。前述したように、バイナリサーチ回路36は、1024個の比較回路36a、36b、・・・、を含む。それぞれの比較回路36a、36b、・・・、には、基準データ54と比較対象データ56が1ビットずつ入力され、それらの大小が比較される。インデックス回路34の各比較回路35a〜35cの内部構成も同様である。このように、専用のハードウェア回路で比較処理を実行することにより、多数の比較回路を並列して動作させ、多数のビットを同時に比較することができるので、比較処理を高速化することができる。
図10は、第2データベースの内部データの例を示す。第2データベース60は、検索回路30による検索結果を格納する検索結果欄62と、通信データに対して実行する処理の内容を格納する処理内容欄64とを含み、検索結果と処理内容とを対応づけて保持する。図10の例では、通信データに基準データが含まれている場合は、そのパケットの通過を許可し、含まれていない場合は、そのパケットを破棄するという条件が設定されている。処理実行回路40は、検索結果に基づいて第2データベース60から処理内容を検索し、通信データに対して処理を実行する。処理実行回路40も、ワイヤードロジック回路により実現されてもよい。
図11は、第2データベースの内部データの別の例を示す。図11の例では、基準データごとに、処理内容が設定されている。パケットの置換を行う場合、置換先のデータを第2データベース60に格納しておいてもよい。パケットのルーティングやスイッチングを行う場合、経路に関する情報を第2データベース60に格納しておいてもよい。処理実行回路40は、検索回路30による検索結果に応じて、第2データベース60に格納された、フィルタリング、ルーティング、スイッチング、置換などの処理を実行する。図11のように、基準データごとに処理内容を設定する場合、第1データベース50と第2データベース60とを統合してもよい。
第1のデータベース及び第2のデータベースは、外部から書き換え可能に設けられる。これらのデータベースを入れ替えることにより、同じ通信制御装置10を用いて、さまざまなデータ処理や通信制御を実現することができる。また、検索対象となる基準データを格納したデータベースを2以上設けて、多段階の検索処理を行ってもよい。このとき、検索結果と処理内容とを対応づけて格納したデータベースを2以上設けて、より複雑な条件分岐を実現してもよい。このように、データベースを複数設けて多段階の検索を行う場合に、位置検出回路32、インデックス回路34、バイナリサーチ回路36などを複数設けてもよい。
上述した比較に用いられるデータは、同じ圧縮ロジックにより圧縮されてもよい。比較に際して、比較元のデータと比較先のデータが同じ方式で圧縮されていれば、通常と同様の比較が可能である。これにより、比較の際にローディングするデータ量を低減することができる。ローディングするデータ量が少なくなれば、メモリからデータを読み出すのに要する時間が短縮されるので、全体の処理時間も短縮することができる。また、比較器の量を削減することができるので、装置の小型化、軽量化、低コスト化に寄与することができる。比較に用いられるデータは、圧縮された形式で格納されていてもよいし、メモリから読み出した後、比較の前に圧縮されてもよい。
図12は、前提技術の通信制御装置の別の構成例を示す。本図に示した通信制御装置10は、図3に示した通信制御装置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の一部が共用されてもよい。
(実施の形態)
つづいて、上述した通信制御装置10を利用した新しい通信制御技術について説明する。
図13は、実施の形態に係る通信制御装置の構成を示す。本実施の形態の通信制御装置10においては、図3に示した前提技術の通信制御装置10の構成から、MAC処理部6a及び6bが省略されている。その他の構成及び動作は、前提技術と同様である。
通信制御装置10は、OSI参照モデルの第1層である物理層のプロトコルを実装したPHY処理部5aにより、ケーブルなどのネットワーク媒体から受信した電気信号をデータ列に変換すると、上位のプロトコル、すなわち、第2層のデータリンク層、第3層のネットワーク層、第4層のトランスポート層、第5層のセッション層、第6層のプレゼンテーション層、及び第7層のアプリケーション層に関する処理を省略して、データ列をパケット処理回路20の検索回路30へ直接供給する。つまり、受信した通信データの宛先のMACアドレスやIPアドレスの確認など、通信データの着信に必要な処理を省略し、全ての通信データを取り込んで検索回路30へ供給する。
検索回路30は、PHY処理部5aが受信したフレーム内の任意のデータにアクセスして、ビットマッチングにより検索を実行する。パケット処理回路20は、通信データに対して、複製、転送、追加、削除、変更、圧縮、暗号化、復号化など、任意の編集処理を行って、通信データを出力する。パケット処理回路20から出力された通信データは、宛先のMACアドレスを変更せずに、PHY処理部5bからネットワークへ再送出される。
図14は、実施の形態に係る通信制御技術を説明するための概念図である。通信制御装置10は、通信装置502と通信装置504との間で送受信されている通信データを抜き出して、各種の通信制御を行う。通信装置502が通信装置504へ送信した通信データには、データリンク層における宛先のMACアドレスとして通信装置504のMACアドレスが設定されているが、通信制御装置10は、宛先のMACアドレスを確認せずに通信データを取り込むので、通信装置504に宛てた通信データも取り込んで制御することができる。また、通信制御装置10は、宛先のMACアドレスを変更せずにネットワークへ再送出するので、通信制御装置10により処理された通信データは、そのまま元の宛先である通信装置504へ送信される。したがって、通信装置502及び504は、通信制御装置10の存在を全く意識することなく、通常のプロトコルを用いて通信を行うことができる。図14において、実際には、実線で示した経路により通信データが送受信されるが、通信装置502及び504からは、点線で示したように、お互いの間で直接通信を行っているように見えている。通信装置504から通信装置502へ送信される通信データについても同様である。
このように、本実施の形態の通信制御装置10は、MACアドレスやIPアドレスを確認せずに、ネットワークを流れる通信データを抜き出して制御し、通信制御装置10にMACアドレスやIPアドレスを割り当てる必要がない。また、宛先のMACアドレスを書き換えずに、元の宛先のMACアドレスへ通信データを再送出するので、ネットワークの設定を複雑に変更することなく通信制御装置10をネットワークへ導入することができる。
本実施の形態の通信制御装置10では、ネットワークにおける通信速度と同等の速度で通信制御処理を完了できるように、検索回路30の比較器の個数やメモリの容量などを設計している。したがって、受信したデータ列を受信バッファにいったん蓄積し、読み出しながら処理を行うのではなく、受信したデータ列を受信バッファに蓄積させず、そのまま即座に検索回路へ供給し、処理を行うことができる。
従来の通信制御装置は、例えば、プロトコル番号を参照してプロトコルの種別を判断し、プロトコルに応じた処理を行うが、本実施の形態の通信制御装置10は、プロトコル処理を行わずに、フレーム内のデータに直接アクセスして通信制御を行うので、プロトコルに依存しない汎用的な通信制御を行うことができる。したがって、少量多品種の通信制御装置として利用可能である。
特定の通信装置に対して、その通信装置の機械的限界まで通信データを送りつけることにより、通信装置を動作停止に追い込む攻撃があるが、本実施の形態の通信制御装置10は、アドレスを有しないので、攻撃者は通信制御装置10に対して明示的に通信データを送りつけることができない。また、通信制御装置10以外の通信装置に対して攻撃がなされた場合であっても、通信制御装置10は通過中の通信データを抜き出して制御することができるので、その通信装置へ到達する前に、攻撃を意図した通信データを検知して削除することができる。また、通信経路の途中のルータのメモリの故障や、プログラムのバグなどにより通信データが破壊された場合であっても、通信制御装置10により検知して削除することができるので、ネットワークや通信装置の負荷を低減させることができる。
通信制御に必要な情報を収集するなどの目的で、他の通信装置との間で通信を行う必要がある場合には、仮想的なIPアドレスを用いて通信を行ってもよい。例えば、通信装置との間で通信を行う際に、通信制御装置10よりも下流のネットワークに接続されている通信装置のIPアドレスを仮想的に通信制御装置10に割り当てて通信を行う。
図15は、実施の形態に係る通信制御装置の別の構成例を示す。図15に示した通信制御装置10は、図13に示した通信制御装置10の構成に加えて、判定部510及び仮想通信装置520を更に備える。その他の構成及び動作は、図13に示した通信制御装置10と同様である。
仮想通信装置520は、通信制御装置10における通信制御に必要な情報を、他の通信装置との間で送受信する。例えば、通信制御装置10をルータ装置として機能させる場合、仮想通信装置520は、BGP4(Border Gateway Protocol 4)などのプロトコルにしたがって、他のルータ装置との間で経路情報をやり取りする。このとき、仮想通信装置520は、BGP4による通信を行う相手のルータ装置の方向を上流とすると、自装置よりも下流のネットワークに接続された他の通信装置に割り当てられたIPアドレスを取得し、そのIPアドレスを仮想通信装置520の仮想IPアドレスとして判定部510へ通知する。また、仮想通信装置520は、仮想IPアドレスを用いて他の装置との間で通信を行うプロトコルのプロトコル番号を判定部510へ通知する。このように、仮想通信装置520は、下流の通信装置から取得したIPアドレスを仮想的に自装置のIPアドレスに設定して、他の装置との間で通信を行う。
判定部510は、PHY処理部5aが受信した通信データのうち、送信先のIPアドレスが、仮想通信装置520から通知された仮想IPアドレスに一致し、かつ、プロトコル番号が、仮想通信装置520から通知されたプロトコル番号に一致する通信データを、パケット処理回路20へ供給せずに、仮想通信装置520へ送る。仮想通信装置520は、判定部510から送られた通信データを処理する。例えば、他のルータ装置から送信された経路情報を取得してルーティングテーブルを再計算し、パケット処理回路20へ投入する。仮想通信装置520は、他の通信装置へ通信データを送信する場合は、送信元のIPアドレスに仮想IPアドレスを設定し、PHY処理部5bを介してネットワークへ送出する。
図16は、実施の形態に係る通信制御技術を説明するための概念図である。通信制御装置10は、通信装置502が通信装置504へ送信した通信データのうち、実際には仮想通信装置520が受信すべき通信データを抜き出して、仮想通信装置520へ送る。また、仮想通信装置520は、通信装置502に通信データを送信するときに、送信元のIPアドレスとして、通信装置504のIPアドレスを設定する。図16において、実際には、実線で示した経路により通信データが送受信されるが、通信装置502は、点線で示したように、通信装置504との間で通信を行っているように見えている。これにより、実際にはIPアドレスを有しない仮想通信装置520が、他の通信装置502との間で通信を行うことが可能となる。
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。