(57)【要約】      （修正有）【課題】パケットのフィルタリングを高速かつ高度に行う通信制御装置及びパケットフィルタリング方法を提供する。【解決手段】ルータは、パケットのフィルタリングを行う。該ルータが備える入力フィルタ２は、パケットタイプ判定部２２とＪＡＶＡ（登録商標）プロセッサ２３とを有する。パケットタイプ判定部２２は、パケットに適用可能なプロトコルの種別であるパケットタイプを判定する。ＪＡＶＡプロセッサ２３は、パケットタイプ判定部２２により判定されたパケットタイプに対応するバイトコードを選択し、このバイトコードを使用して前記パケットの通過可否を判定する。【選択図】  図４
2004180159.tif 000002
【特許請求の範囲】
【請求項１】
パケットのフィルタリングを行う通信制御装置において、
前記パケットに適用可能なバイトコードを使用して、当該パケットの通過可否を判定する通過判定手段を備えることを特徴とする通信制御装置。
【請求項２】
前記パケットに適用可能な複数種のバイトコードを格納する格納手段を更に備え、
前記通過判定手段は、前記格納手段に格納されている複数種のバイトコードの中から選択されたバイトコードを使用して前記パケットの通過可否を判定することを特徴とする請求項１に記載の通信制御装置。
【請求項３】
通信制御装置が、パケットのフィルタリングを行うパケットフィルタリング方法において、
通過判定手段が、前記パケットに適用可能なバイトコードを使用して、当該パケットの通過可否を判定する通過判定ステップを含むことを特徴とするパケットフィルタリング方法。
【請求項４】
前記通過判定ステップでは、前記通過判定手段は、格納手段に格納されている、前記パケットに適用可能な複数種のバイトコードの中から選択されたバイトコードを使用して前記パケットの通過可否を判定することを特徴とする請求項３に記載のパケットフィルタリング方法。
【請求項５】
パケットのフィルタリングを行う通信制御装置に、
前記パケットに適用可能なバイトコードを使用して、当該パケットの通過可否を判定する通過判定機能を実現させることを特徴とするプログラム。
【請求項６】
前記通過判定機能は、格納手段に格納されている、前記パケットに適用可能な複数種のバイトコードの中から選択されたバイトコードを使用して前記パケットの通過可否を判定することを特徴とする請求項５に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信制御装置、パケットフィルタリング方法、及びプログラムに関する。
【０００２】
【従来の技術】
従来、ルータがファイアウォールを実現するセキュリティ技術の１つとして、パケットフィルタリングがある。パケットフィルタリングは、ルータに入力されたパケットの内、所定の条件（以下、「フィルタ条件」と記す。）に合致するパケットや制限に抵触しないパケットを選別して出力する機能である。当該機能を有するルータは、パケットのヘッダに含まれているプロトコル、アドレス、ポート番号などの情報を参照して通過させるか否かを決定する。通過が拒否されたパケットは、破棄されたり、その旨が送信元に通知されたりする（例えば、特許文献１参照。）。
【０００３】
【特許文献１】
特開平１０−１３３９７７号公報
【０００４】
一般的に、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットのフィルタリングを具現化する手法として、アクセス制御リストが使用される。すなわち、ルータは、アクセス制御リストを入出力インタフェースに保持し、このアクセス制御リストに記載されている情報と入力されたパケットのヘッダ情報とを照合した上で、該照合結果に基づいてＩＰパケット通過の可否を判定する。アクセス制御リストは、実装によって記載方法が異なるが、その一例を図１に示す。
【０００５】
図１に示す様に、アクセス制御リストには、フィルタリングパターンが行毎に記載されている。具体的には、各行の先頭の項目から順に、ＩＰパケットの通過の可否を示す“ｄｅｎｙ”又は“ｐｅｒｍｉｔ”、ＩＰパケットの上位層プロトコル、ＩＰパケットの送信元アドレス及び送信元ポート番号、ＩＰパケットの宛先アドレス及び宛先ポート番号が記載されている。なお、“ｉｐ”、“ａｎｙ”は、対応する項目のプロトコルやアドレスが任意であることを示す。また、ポート番号は省略可能である。
【０００６】
ルータは、アクセス制御リストの使用に際して、最も上の行に記載されている情報から参照し、最初に一致した情報が記載されている行の指定内容（ｄｅｎｙ又はｐｅｒｍｉｔ）に応じて、ＩＰパケットの破棄又は通過を決定する。したがって、多数のＩＰパケットが有する情報をアクセス制御リストの上部に記載することにより、パケットフィルタリングの高速化を図ることができる。このため、アクセス制御リストにおける情報の記載順序は、短時間で適切なパケットフィルタリングを行う上で重要である。
【０００７】
【発明が解決しようとする課題】
しかしながら、アクセス制御リストを使用する従来のパケットフィルタリングでは、以下に示す様な問題点があった。例えば、ルータは、ＩＰパケットのヘッダ情報の内容に関わらず、アクセス制御リストの先頭から順に参照していくので、アクセス制御リストの記載順位が下位の情報に該当するＩＰパケットの通過可否を判定するのに時間がかかる。
【０００８】
また、例えば、送信元アドレス、宛先アドレス、サービス種別等の様に、ＩＰパケットの通過可否の判定に使用される情報が多数存在する場合に、アクセス制御リストの長さが膨大になり、必要な情報の検索に時間がかかる。その結果、ルータは、パケットフィルタリングを高速に行うことができない。
【０００９】
以下、送信元アドレスが３種類、宛先アドレスとサービス種別とがそれぞれ２種類ずつ存在する場合を例にとり、上記アクセス制御リストについて、より具体的に説明する。図２（ａ）は、アドレス等の情報に応じた通過可否を“○”又は“×”により表現した対応表１０のデータ格納例を示す図である。図２（ａ）に示す様に、対応表１０は、サービス種別及び宛先アドレスの各情報項目を行方向に有し、送信元アドレスの情報項目を列方向に有して構成される。
【００１０】
すなわち、情報項目１０ａには、ＩＰパケットにより提供されるサービスを識別するための“Ｗｅｂ閲覧”、“電子メール”がサービス種別として格納されており、情報項目１０ｂには、ＩＰパケットの送信先であるサーバ装置を識別するための“サイトＡ”、“サイトＢ”が宛先アドレスとして格納されている。更に、情報項目１０ｃには、ＩＰパケットの送信元であるＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）を識別するための“ＰＣ−Ａ”、“ＰＣ−Ｂ”、“ＰＣ−Ｃ”が送信元アドレスとして格納されている。
【００１１】
ルータが、かかる対応表を参照して通過可否を判定する場合には、判定の対象となるＩＰパケットが該当する行方向と列方向との交点を検索すれば足りる。したがって、判定回数は、最大でも行数と列数との和である７（＝４＋３）回となる。また、判定回数の平均値は、この半分である（行数＋列数）／２回、つまり３．５回となる。
【００１２】
これに対して、ルータが、アクセス制御リストを参照して通過可否を判定する場合には、判定の対象となるＩＰパケットが該当する行を検知するまで全ての行に関して検索を行う必要がある。例えば、上記対応表１０の内容が記載されたアクセス制御リストＬ２（図２（ｂ））を使用して通過可否の判定を行うとすると、判定回数は、最大で行数と列数との積である１２（＝４×３）回となる。したがって、判定回数の平均値は、この半分である（行数×列数）／２回、つまり６．０回となる。
【００１３】
上述した例では、判定回数の平均値の差は２．５回であるが、ＩＰパケットのヘッダ情報の種類とその組合せ数の増加に伴って、この差は幾何級数的に増大する。その結果、アクセス制御リストを使用するパケットフィルタリングは、高速化が困難であり、ルータの動作速度に悪影響を与える要因となっている。
【００１４】
また、従来のアクセス制御リストは、単純なパターンマッチングにしか対応していないので、複雑な可否判定を行うには不向きである。例えば、ＩＰを用いたネットワークでは、通常とは異なる宛先にＩＰパケットを送信したい場合や不正アクセスに備えてパケットの署名を行いたい場合などに、トンネリング技術が使用されることがある。
【００１５】
トンネリングに際しては、図３に示すように、内側のパケットＡ１が外側のＩＰパケットＡ２によってカプセル化されるので、１つのＩＰパケット内に、複数の送信元アドレスや宛先アドレスが保持される場合がある。ところが、アクセス制御リストを参照すると、ルータは、これらのアドレスの内、外側のアドレスに関してしか通過の可否判定を行うことができない。その結果、本来通過を許可すべきでないＩＰパケットを通過させてしまう可能性がある。
【００１６】
そこで、本発明の課題は、上記問題点に鑑みて為されたものであり、ＩＰパケットのフィルタリングを高速かつ高度に行うことである。
【００１７】
【課題を解決するための手段】
上記課題を解決するために、本発明に係る通信制御装置は、パケットのフィルタリングを行う通信制御装置において、前記パケットに適用可能なバイトコードを使用して、当該パケットの通過可否を判定する通過判定手段を備える。
【００１８】
本発明に係るパケットフィルタリング方法は、通信制御装置が、パケットのフィルタリングを行うパケットフィルタリング方法において、通過判定手段が、前記パケットに適用可能なバイトコードを使用して、当該パケットの通過可否を判定する通過判定ステップを含む。
【００１９】
本発明に係るプログラムは、パケットのフィルタリングを行う通信制御装置に、前記パケットに適用可能なバイトコードを使用して、当該パケットの通過可否を判定する通過判定機能を実現させる。
【００２０】
これらの発明においては、フィルタ条件の設定に際してアクセス制御リストを使用せず、柔軟性の高い高級言語を用いてフィルタ条件を記述する。そして、当該記述内容がコンパイルされたバイトコードをルータに設定する。例えばＪＡＶＡ（登録商標）やＳＭＡＬＬＴＡＬＫ（登録商標）等の高級プログラム言語により作成されたバイトコードは、特定のソフトウェアやハードウェアに依存しない様に定義された命令の集合によって構成されている。このため、かかるプログラムを有するルータは、柔軟性が高く、図２（ａ）に示した対応表に記載されたデータの直接的な検索やトンネリング技術によりカプセル化されたパケットの上位層プロトコルの検索が可能である。したがって、フィルタリング速度を向上すると共に、高度なフィルタリングを行うことが可能となる。
【００２１】
本発明に係る通信制御装置においては、前記パケットに適用可能な複数種のバイトコードを格納する格納手段を更に備え、前記通過判定手段は、前記格納手段に格納されている複数種のバイトコードの中から選択されたバイトコードを使用して前記パケットの通過可否を判定することもできる。
【００２２】
本発明に係るパケットフィルタリング方法においては、前記通過判定ステップでは、前記通過判定手段は、格納手段に格納されている、前記パケットに適用可能な複数種のバイトコードの中から選択されたバイトコードを使用して前記パケットの通過可否を判定することもできる。
【００２３】
本発明に係るプログラムにおいては、前記通過判定機能は、格納手段に格納されている、前記パケットに適用可能な複数種のバイトコードの中から選択されたバイトコードを使用して前記パケットの通過可否を判定することもできる。
【００２４】
これらの発明によれば、格納手段に格納されている複数種のバイトコードの中から、通信制御装置に入力されたパケットに適用可能なバイトコードが選択され、このバイトコードを使用してパケットの通過可否が判定される。したがって、通信制御装置は、相互に異なるバイトコードが適用される複数のパケットを受信した場合であっても、各パケットに対して高速かつ高度なフィルタリングを行うことが可能となる。
【００２５】
【発明の実施の形態】
以下、図面を参照して、本発明の一実施の形態について詳細に説明する。
図４（ａ）は、本発明に係るルータの全体構成を示す図である。ルータ１（通信制御装置に対応）は、複数のプロトコルに対応したマルチプロトコルルータであり、図４（ａ）に示す様に、入力フィルタ２，５とパケットスイッチ３と出力フィルタ４，６とを備えて構成される。図中の実線矢印は、パケットの入出力方向を示す。
【００２６】
入力フィルタ２は、外部装置から入力されたパケットのヘッダ部分に記載されている内容に基づいて、当該パケットの通過可否を判定する。入力フィルタ２は、本発明を実現する上で主要な構成要素であるので、以下、図４（ｂ）を参照して、入力フィルタ２の機能的構成を詳細に説明する。
【００２７】
図４（ｂ）に示す様に、入力フィルタ２は、入力バッファ２１とパケットタイプ判定部２２とＪＡＶＡプロセッサ２３（格納手段及び通過判定手段に対応）とを有する。
入力バッファ２１は、外部装置から入力されたパケットを一時的に保持する。このパケットは、ＪＡＶＡプロセッサ２３からの指示内容に応じて、パケットスイッチ３に出力又は削除（破棄）される。入力バッファ２１は、ＩＰパケットの出力後にクリア（消去）される。
【００２８】
パケットタイプ判定部２２は、入力バッファ２１に保持されているパケットのプロトコルの種別（以下、「パケットタイプ」と記す。）を判定する。パケットタイプは、ＩＰパケットのヘッダ情報やフォーマットを参照して判定される。
【００２９】
ＪＡＶＡプロセッサ２３は、パケットタイプ判定部２２により判定されたパケットタイプに対応するＪＡＶＡバイトコードを起動し、このバイトコードを解釈してパケットの通過可否を判定する。通過可否の判定は、パケットのヘッダ部分に格納されている送信元アドレス、宛先アドレス、サービス種別などの情報を参照して行われる。また、ＪＡＶＡプロセッサ２３は、当該判定結果に応じてパケットを出力又は削除する。
【００３０】
ＪＡＶＡプロセッサ２３には、特定のハードウェア資源やソフトウェアに依存しない様に定義された命令の集合によって記述及びコンパイルされた実行形式のプログラムであるバイトコードが予め設定されている。本実施の形態では、ルータ１の管理者により、パケットのパケットタイプに応じて三種類のバイトコードが設定されている。
【００３１】
すなわち、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ４）パケットにはＩＰｖ４用ＪＡＶＡバイトコード２３１が設定され、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ６）パケットにはＩＰｖ６用ＪＡＶＡバイトコード２３２が設定され、ＩＰＸ（Ｉｎｔｅｒｎｅｔｗｏｒｋ  Ｐａｃｋｅｔ  ｅＸｃｈａｎｇｅ）パケットにはＩＰＸ用ＪＡＶＡバイトコード２３３がそれぞれ設定されている。
【００３２】
これらのバイトコードは、ルータ１の管理者が直接記述するものとしてもよいし、アクセス制御リストを、その分析結果が反映されたバイトコードに変換するプログラムにより作成するものとしてもよい。これにより、ＪＡＶＡ等の高級プログラム言語に関する知識や経験が少ないユーザであっても、バイトコードを簡易迅速に作成することができる。
また、バイトコードは、命令が全て１バイトで表現されているので、プログラムのデータ容量は、通常数キロバイト程度と小さい。このため、記憶データ容量に制限のあるルータへの設定も容易である。
【００３３】
パケットスイッチ３は、入力フィルタ２から入力されたパケットのパケットタイプからプロトコルを識別し、このプロトコルを解析してパケットの転送経路を決定する。
出力フィルタ４は、パケットスイッチ３から入力されたパケットを次の転送先ノードに送信する。
【００３４】
入力フィルタ５は、入力フィルタ２と、パケットの入力方向が異なるものの、その基本構成及び機能は同一であるので、その詳細な説明は省略する。
出力フィルタ６は、出力フィルタ４と、パケットの出力方向が異なるものの、その基本構成及び機能は同一であるので、その詳細な説明は省略する。
【００３５】
次に、動作を説明する。図５を参照して、ルータ１の入力フィルタ２により実行制御されるパケットフィルタリング処理を説明する。併せて、本発明に係るパケットフィルタリング方法の各ステップについて説明する。
まず、ルータ１と回線接続されている隣接ルータやサーバ装置から入力フィルタ２にパケットが入力されると（Ｓ１）、このパケットは入力バッファ２１に一時的に保持される（Ｓ２）。
【００３６】
Ｓ３では、パケットタイプ判定部２２により、入力バッファ２１内のパケットのヘッダ情報が参照されパケットタイプが判定される。当該判定結果は、ＪＡＶＡプロセッサ２３に通知される。例えば、代表的な通信規格の１つであるイーサネット（登録商標、ＩＥＥＥ８０２．３）では、通常、フレームの１３〜１４番目のオクテットが「イーサネットタイプ」フィールドになり、この値により上位層プロトコルの判定が可能である。例えば、この値が、１６進数で“０８００”であれば上位層プロトコルはＩＰｖ４であり、“８６ＤＤ”であれば上位層プロトコルはＩＰｖ６であり、“８０３７”であれば上位層プロトコルはＩＰｖ６となる。また、ＰＰＰ（Ｐｏｉｎｔ  ｔｏ  Ｐｏｉｎｔ  Ｐｒｏｔｏｃｏｌ、ＲＦＣ１６６１）では、通常、フレームの１〜２番目のオクテットがプロトコルフィールドであり、この値により上位層プロトコルの判定が可能である。
【００３７】
Ｓ４では、ＪＡＶＡプロセッサ２３により、パケットタイプ判定部２２から通知されたパケットタイプに対応するバイトコードが起動される。すなわち、入力バッファ２１内のパケットがＩＰｖ４プロトコルパケット（例えばＩＰｖ４データグラム）である場合には、ＩＰｖ４用ＪＡＶＡバイトコード２３ａが起動される。また、パケットがＩＰｖ６プロトコルパケット（例えばＩＰｖ６データグラム）である場合には、ＩＰｖ６用ＪＡＶＡバイトコード２３ｂが起動される。同様に、パケットがＩＰＸプロトコルパケットである場合には、ＩＰＸ用ＪＡＶＡバイトコード２３ｃが起動される。
【００３８】
Ｓ５では、ＪＡＶＡプロセッサ２３により、Ｓ５で起動されたＪＡＶＡバイトコードを用いて、パケットのヘッダ情報が検査され通過の可否が判定される。ＪＡＶＡバイトコードは、特定のソフトウェアやハードウェアに依存しない様に定義された柔軟性の高い命令体系を有しいるので、アクセス制御リストを介さずに上記対応表を参照して、データ（例えば、通過可否を示す“○”、“×”）を直接的に探索可能である。したがって、アクセス制御リストを使用する場合と比較して、パケットに対する通過可否を判定する回数が少なくて済む。これにより、パケットフィルタリングの高速化が実現される。
【００３９】
また、ＪＡＶＡバイトコードは、同様の理由により、トンネリングしたパケットの内部のヘッダ（宛先アドレス及び送信元アドレスやサービス種別を有する）や更に上位層プロトコルの探索が可能である。したがって、アクセス制御リストを使用する場合には困難であった、トンネリング技術によりカプセル化されたパケットに対する通過可否の判定を精確に行うことができる。これにより、パケットフィルタリングの高度化が実現される。
【００４０】
Ｓ５における判定の結果、ＪＡＶＡバイトコードがｐｅｒｍｉｔの値を返すと、つまり通過が許可されると（Ｓ６；Ｙｅｓ）、ＪＡＶＡプロセッサ２３により、パケットが入力バッファ２１からパケットスイッチ３に出力される（Ｓ７）。そして、入力バッファ２１に保持されていたパケットはクリアされる（Ｓ８）。
【００４１】
一方、Ｓ５における判定の結果、ＪＡＶＡバイトコードがｄｅｎｙの値を返すと、つまり通過が拒否されると（Ｓ６；Ｎｏ）、ＪＡＶＡプロセッサ２３により、入力バッファ２１に保持されていたパケットは削除される（Ｓ９）。このとき、パケットが削除された旨が、その送信元であるノードに通知されるものとしてもよい。
【００４２】
Ｓ８又はＳ９の処理終了後、入力フィルタ２は、更なるパケットの入力を待機すべく、Ｓ１に戻り、Ｓ１以降の処理が再実行される。これにより、ルータ１が受信する全てのパケットに関して、高速かつ高度なパケットフィルタリングが可能となる。
以上、入力フィルタ２がパケットフィルタリング処理を実行する場合について説明したが、入力フィルタ５に関しても、同様のパケットフィルタリング処理を実行することが可能である。
【００４３】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において、適宜変形態様を採ることも可能である。例えば、本実施の形態では、パケットの入力時にフィルタリングが行われる場合を想定し、パケットフィルタリング処理の実行主体を入力フィルタ２，５として説明したが、出力フィルタ４，６がパケットの出力時にフィルタリングを行うものとして勿論もよい。更に、入力時と出力時の両方でフィルタリングを行ってもよい。
【００４４】
また、本実施の形態では、パケットの通過可否の判定に使用されるプログラムとして、ルータ１のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の種類によらず実行可能なプログラムであるバイトコードを使用するものとしたが、ルータ１のＣＰＵに対応したマシン語を使用してもよい。
【００４５】
更に、本実施の形態では、通過可否の判定主体として、ＪＡＶＡバイトコードを直接解釈及び実行可能なＪＡＶＡプロセッサ２３を使用するものとした。しかし、ルータ１のＣＰＵがＪＡＶＡバイトコードを翻訳しながら判定処理を実行してもよいし、ＪＡＶＡバイトコードがルータ１に設定された時点で、ルータ１が、ＪＡＶＡバイトコードをＣＰＵに対応したマシン語に再コンパイルするものとしてもよい。
【００４６】
更に、本実施の形態では、通信制御装置の代表例であるルータについて説明したが、例えば、ブリッジやブルータ等、フィルタリング機能を有する装置であればよい。
【００４７】
【発明の効果】
本発明によれば、パケットのフィルタリングを高速かつ高度に行うことが可能となる。
【図面の簡単な説明】
【図１】アクセス制御リストの一例を示す図である。
【図２】図２（ａ）は、ＩＰパケットのヘッダに含まれる情報と当該ＩＰパケットの通過可否との対応関係を示す図である。図２（ｂ）は、かかる対応関係が記載されたアクセス制御リストを示す図である。
【図３】カプセル化されたパケットの一例を示す図である。
【図４】図４（ａ）はルータの全体構成を示す図である。図４（ｂ）は入力フィルタの機能的構成を示す図である。
【図５】ＩＰパケットフィルタリング処理を説明するためのフローチャートである。
【符号の説明】
１…ルータ、２，５…入力フィルタ、３…パケットスイッチ、４，６…出力フィルタ、２１…入力バッファ、２２…パケットタイプ判定部、２３…ＪＡＶＡプロセッサ、２３ａ…ＩＰｖ４用ＪＡＶＡバイトコード、２３ｂ…ＩＰｖ６用ＪＡＶＡバイトコード、２３ｃ…ＩＰＸ用ＪＡＶＡバイトコード
【図１】
2004180159.tif 000003
【図２】
2004180159.tif 000004
【図３】
2004180159.tif 000005
【図４】
2004180159.tif 000006
【図５】
2004180159.tif 000007