(57)【要約】回路大型化を抑えながら、パケットの識別処理の高速化を実現する。参照テーブル（１１）は、属性毎の単位データに分割された複数の参照データ（１１ａ），（１１ｂ），・・・，（１１ｎ）が、属性毎に定められたアドレスの記憶領域に単位データ毎に分散格納されており、読み出しアドレスが入力されると、読み出しアドレスに対応する属性の複数の単位データを出力する。解析回路（１２）は、入力されたパケット内の比較対象データの属性を解析する。アドレス制御回路（１３）は、解析回路で解析された比較対象データの属性に対応するアドレスを読み出しアドレスとして参照テーブル（１１）に対して出力する。複数の単位比較回路（１４ａ），（１４ｂ），・・・，（１４ｎ）は、複数の参照データ（１１ａ），（１１ｂ），・・・，（１１ｎ）のそれぞれに対応付けて設けられており、参照テーブル（１１）から出力される複数の単位データと、解析回路（１２）で解析された比較対象データとを比較する。
2004068804.tif 000002
【特許請求の範囲】
【請求項１】
入力されたパケットの内容を識別するパケット識別装置において、
属性毎の単位データに分割された複数の参照データが、属性毎に定められたアドレスの記憶領域に前記単位データ毎に分散格納されており、読み出しアドレスが入力されると、前記読み出しアドレスに対応する属性の複数の単位データを出力する参照テーブルと、
入力された前記パケット内の比較対象データの属性を解析する解析回路と、
前記解析回路で解析された前記比較対象データの属性に対応するアドレスを、前記読み出しアドレスとして前記参照テーブルに対して出力するアドレス制御回路と、
複数の前記参照データのそれぞれに対応付けて設けられており、前記参照テーブルから出力される複数の前記単位データと、前記解析回路で解析された前記比較対象データとを比較する複数の単位比較回路と、
を有することを特徴とするパケット識別装置。
【請求項２】
前記単位比較回路は、前記パケットから抽出された全ての前記比較対象データが、前記参照データ内の同じ属性の単位データと一致したとき、対応付けられた前記参照データと前記パケットとが一致したものと判断することを特徴とする請求の範囲第１項記載のパケット識別装置。
【請求項３】
前記参照テーブルには、比較結果データを含む前記参照データが格納されており、
前記アドレス制御回路は、前記パケット内の全ての前記比較対象データの比較終了後、前記比較結果データが格納された記憶領域のアドレスを前記参照テーブルに出力し、
前記単位比較回路は、対応付けられた前記参照データと前記パケットとが一致した場合、前記参照テーブルから出力された前記比較結果データを比較結果として出力することを特徴とする請求の範囲第２項記載のパケット識別装置。
【請求項４】
前記参照テーブルは、前記比較結果データとして、暗号化／復号処理に用いる鍵データを一意に特定する識別情報が格納されていることを特徴とする請求の範囲第３項記載のパケット識別装置。
【請求項５】
前記参照テーブルには、比較条件を示す比較条件データを含む前記参照データが格納されており、
前記解析回路は、所定の属性の前記比較対象データが入力された際には、前記所定の属性に対応する比較条件設定信号を出力し、その後、前記比較対象データの比較実行信号を出力し、
前記アドレス制御回路は、前記比較条件設定信号に応答して、前記比較条件データに対応する前記読み出しアドレスを出力し、前記比較実行信号に応答して、前記所定の属性に対応する前記読み出しアドレスを出力し、
前記単位比較回路は、前記参照テーブルから出力される前記比較条件データに応じて、以後の前記比較対象データと前記単位データとの比較を行うことを特徴とする請求の範囲第１項記載のパケット識別装置。
【請求項６】
前記単位比較回路は、前記比較条件データに応じて、前記比較対象データと前記単位データとの比較の要否を判断することを特徴とする請求の範囲第５項記載のパケット識別装置。
【請求項７】
前記解析回路は、前記比較条件設定信号を出力すると、以降の前記比較対象データの前記単位比較回路への供給を遅延させることを特徴とする請求の範囲第５項記載のパケット識別装置。
【請求項８】
前記解析回路は、前記比較対象データが連続した入力された場合にのみ、前記比較対象データの遅延処理を行うことを特徴とする請求の範囲第７項記載のパケット識別装置。
【請求項９】
前記解析回路は、前記パケットのヘッダ情報に基づいて、前記パケット内の各データの属性を判断することを特徴とする請求の範囲第１項記載のパケット識別装置。
【請求項１０】
前記単位比較回路は、設定されたマスク情報に応じて、前記比較対象データの一部を比較対象外とすることを特徴とする請求の範囲第１項記載のパケット識別装置。
【請求項１１】
入力されたパケットの内容を識別するパケット識別装置において、
属性毎の単位データに分割された複数の参照データが、属性毎に定められたアドレスの記憶領域に前記単位データ毎に分散格納されており、読み出しアドレスが入力されると、前記読み出しアドレスに対応する属性の複数の単位データを出力する参照テーブルと、
入力された前記パケット内の比較対象データの属性を解析する解析回路と、前記解析回路で解析された前記比較対象データの属性に対応するアドレスを、前記読み出しアドレスとして前記参照テーブルに対して出力するアドレス制御回路と、
複数の前記参照データのそれぞれに対応付けて設けられており、前記参照テーブルから出力される複数の前記単位データと、
前記解析回路で解析された前記比較対象データとの一致の有無を比較する複数の単位比較回路と、
を具備し、互いに並列に接続された複数のパケット識別ユニット、
を有することを特徴とするパケット識別装置。
【請求項１２】
入力されたパケットの内容を識別するパケット識別方法において、
属性毎の単位データに分割された複数の参照データを、参照テーブルの属性毎に定められたアドレスの記憶領域に、前記単位データ毎に予め分散格納し、
入力された前記パケット内の比較対象データの属性を解析し、
解析された前記比較対象データの属性に対応するアドレスで示される前記参照テーブルの記憶領域から、複数の前記単位データを取り出し、
取り出した前記複数の単位データと、前記比較対象データとの一致の有無を、複数の単位比較回路を用いて並列に比較する、
ことを特徴とするパケット識別方法。
【発明の詳細な説明】
【技術分野】  本発明はパケットの内容を識別するためのパケット識別装置およびパケット識別方法に関し、特に予め登録されたデータとの比較照合によりパケットを識別するパケット識別装置およびパケット識別方法に関する。
【背景技術】  ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークのパケットを処理するための基本的な機能として、ＩＰアドレスやＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ポート番号等からパケットを識別する機能がある。たとえば、ルータにおいてパケットをルーティングする際には、宛先ＩＰアドレスから次の転送先のインタフェースを決定する。また、ルータは、ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）の際には、宛先および送信元ＩＰアドレスと宛先および送信元ＴＣＰポート番号から、ＩＰアドレスやポート番号の変換を行う。
また、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）装置において暗号化されたパケットを復号化する際には、予め登録されている情報（以下、参照テーブルと呼ぶ）と、現在処理中のパケットの内容とが、ＶＰＮ装置内のパケット識別装置において比較される。
図２０は、従来の参照テーブルのデータ構造例を示す図である。参照テーブル９１０には、ＳＡＩＤ、ＳｒｃＩＰアドレス、ＤｓｔＩＰアドレス、ＳＰＩ（Ｓｅｃｕｒｉｔｙ  Ｐａｒａｍｅｔｅｒ  Ｉｎｄｅｘ）が登録されている。なお、ＳＡＩＤはＳＡ（Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ）の識別子であり、ＳｒｃＩＰアドレスは送信元ＩＰアドレスであり、ＤｓｔＩＰアドレスは宛先ＩＰアドレスである。
パケット識別装置は、このような参照テーブル９１０のレコードと、パケット内の比較対象の情報（宛先ＩＰアドレス、送信元ＩＰアドレス、ＳＰＩ）の組とを比較し、合致するレコードのＳＡＩＤに基づいて、ＳＡを識別する。ＶＰＮ装置は、そのＳＡにより、適切な秘密鍵を選択して復号処理を行う。
図２１は、従来のパケット識別処理を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
［ステップＳ９１］パケット識別装置は、変数ｉに０を設定する。
［ステップＳ９２］パケット識別装置は、参照テーブル９１０のｉ番目のレコードが有効か否かを判断する。有効であれば処理がステップＳ９３に進められる。有効でなければ処理がステップＳ９６に進められる。
［ステップＳ９３］パケット識別装置は、参照テーブル９１０のｉ番目のレコードとパケットとにおける送信元ＩＰアドレス、宛先ＩＰアドレス、ＥＳＰヘッダ内のＳＰＩを、それぞれ比較する。
［ステップＳ９４］パケット識別装置は、ステップＳ９３における比較の結果、全てのデータが一致したか否かを判断する。全てのデータが一致した場合、処理がステップＳ９５に進められる。不一致のデータがあれば、処理がステップＳ９６に進められる。
［ステップＳ９５］パケット識別装置は、ｉ番目のレコードが一致したことを示す情報を出力し、処理を終了する。
［ステップＳ９６］パケット識別装置は、ｉの値に１を加算する。
［ステップＳ９７］パケット識別装置は、ｉが、参照テーブル９１０のレコードの登録件数より大きいか否かを判断する。ｉが登録件数より大きければ、処理がステップＳ９８に進められる。ｉが登録件数以下であれば、処理がステップＳ９２に進められる。
［ステップＳ９８］パケット識別装置は、不一致通知を出力し、処理を終了する。
このように、従来の技術では、参照テーブルの全エントリと、受信されたパケットの宛先ＩＰアドレス、送信元ＩＰアドレス、ＥＳＰヘッダ中のＳＰＩの組を順次プログラムにより比較してＳＡを識別していた。
また、ルーティングの際には宛先ＩＰアドレスとして３２ビットの値の比較が行われる。また、ＮＡＴの際には、宛先および送信元のＩＰアドレスとポート番号で合計９６ビットのデータの比較が行われる。
なお、図２１では、参照テーブルの検索方法として、ＳＡの番号順に検索するという最も単純な方法を採用している。このほかにも、検索を効率よく行うための様々なアルゴリズムが存在するが、１回の比較において１件の登録データを比較することには変わりなく、登録件数が増えれば、その分、検索時間が増えることは避けられなかった。
通常、このような比較はソフトウェアで処理されるが、その負荷は重く、今後のネットワークの高速化においてボトルネックとなるケースが増えてくると予想される。また、ＩＰｖ６が普及した場合には、宛先ＩＰアドレス一つで１２８ビットと、飛躍的にデータ量が増えることによりソフトウェア処理の負荷がさらに重くなる。
また、データの比較をソフトウェアではなくハードウェアで実行することも可能である。たとえば、特開平４−１０９３３７号公報参照。ハードウェアで比較を行うものとしてＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）が挙げられる。ＣＡＭを用いれば、パケットの識別を高速に行うことが可能となる。ここで、比較対象として保持するべきデータ量が多い場合、ＣＡＭの大容量化が必要となる。ところが、ＣＡＭは使用方法が複雑であると共に、一度に大量のデータを比較する場合にはピン数が多くなる。そのため、大容量のＣＡＭを実装するのは、設計上非常に困難である。しかも、ＣＡＭは非常に高価であるため、経済的な理由でＣＡＭの大容量化が困難な場合が多い。これらの理由により、ＣＡＭの大容量化は非現実的である。
大容量の比較対象データが必要な場合としては、パケットの高度のフィルタリング処理を行う場合、パケットの暗号化／復号処理を行う場合等がある。なお、ルータにおける高度なパケットのフィルタリング処理を、ＣＡＭを大容量化させずに実現する技術も考えられている。
たとえば、マスク機能付き比較回路を含む判定回路を複数用いることで、パケットの内の複数の情報（たとえば、ＭＡＣアドレスとＩＰアドレス）の比較を高速に行うことができるＣＡＭが考えられている。たとえば、特開平７−１４３１５６号公報（第１図）参照。この技術では、比較すべきデータが入力されると、データベースレジスタの内容に対して、マスクデータに応じたマスク処理を施す。そして、マスクされていないビットと、入力されたデータの対応するビットとを比較する。
これにより、１つのＣＡＭを用いて、ＩＰアドレスやＭＡＣアドレスの比較処理を伴うデータ伝送を行うことができる。たとえば、ＩＰアドレス内の所定のビットによりフィルタリングを行い、フィルタリング対象外の場合には、ＭＡＣアドレスの比較により出力先のインタフェースを選択する。
しかし、特開平４−１０９３３７号公報に示すようなＣＡＭでは、ＣＡＭの大容量化を避けるため、データベースレジスタには、ＩＰアドレスやＭＡＣアドレス等の比較対象データの何れかが格納される。そのため、比較対象データを切り替える場合（たとえば、ＩＰアドレスからＭＡＣアドレスへ）、データベースレジスタとデータベースマスクレジスタとの書き換えが発生し、処理速度の低下を招いてしまう。
しかも、上記公報に記載された発明では、データベースレジスタに格納可能な１エントリ分のデータ長単位で、マスク処理や比較処理が行われる。そのため、１エントリ分のデータ幅の各ビットを比較可能な比較回路等が必要となる。ここで、比較対象とすべき全てのデータ（たとえば、ＩＰアドレス、ＭＡＣアドレス等）を格納できるだけのデータベースレジスタを用意すると、比較回路の大型化を招き、ＣＡＭの製造コストを上昇させてしまう。
【発明の開示】
本発明はこのような点に鑑みてなされたものであり、回路大型化を抑えながら、パケットの識別処理の高速化を実現することができるパケット識別装置およびパケット識別方法を提供することを目的とする。
第１の発明では上記課題を解決するために、図１に示すようなパケット識別装置１０が提供される。本発明に係るパケット識別装置１０は、入力されたパケットの内容を識別するためのものである。パケット識別装置１０は、以下の要素で構成される。
参照テーブル１１は、属性毎の単位データに分割された複数の参照データ１１ａ，１１ｂ，・・・，１１ｎが、属性毎に定められたアドレスの記憶領域に単位データ毎に分散格納されており、読み出しアドレスが入力されると、読み出しアドレスに対応する属性の複数の単位データを出力する。解析回路１２は、入力されたパケット内の比較対象データの属性を解析する。アドレス制御回路１３は、解析回路で解析された比較対象データの属性に対応するアドレスを読み出しアドレスとして参照テーブル１１に対して出力する。複数の単位比較回路１４ａ，１４ｂ，・・・，１４ｎは、複数の参照データ１１ａ，１１ｂ，・・・，１１ｎのそれぞれに対応付けて設けられており、参照テーブル１１から出力される複数の単位データと、解析回路１２で解析された比較対象データとを比較する。
このようなパケット識別装置１０によれば、パケットが入力されると、解析回路１２により比較対象データの属性が解析される。すると、アドレス制御回路１３により、比較対象データの属性に対応するアドレスが、読み出しアドレスとして参照テーブル１１に出力される。参照テーブル１１からは、読み出しアドレスに対応する属性の複数の単位データが出力される。そして、単位比較回路１４ａ，１４ｂ，・・・，１４ｎにより、複数の単位データと比較対象データとが比較される。
第２の発明では上記課題を解決するために、入力されたパケットの内容を識別するパケット識別装置において、属性毎の単位データに分割された複数の参照データが、属性毎に定められたアドレスの記憶領域に前記単位データ毎に分散格納されており、読み出しアドレスが入力されると、前記読み出しアドレスに対応する属性の複数の単位データを出力する参照テーブルと、入力された前記パケット内の比較対象データの属性を解析する解析回路と、前記解析回路で解析された前記比較対象データの属性に対応するアドレスを前記参照テーブルに対して出力するアドレス制御回路と、複数の前記参照データのそれぞれに対応付けて設けられており、前記参照テーブルから出力される複数の前記単位データと、前記解析回路で解析された前記比較対象データとの一致の有無を比較する複数の単位比較回路と、を具備し、互いに並列に接続された複数のパケット識別ユニット、を有することを特徴とするパケット識別装置が提供される。
このようなパケット識別装置によれば、上記第１の発明に係るパケット識別装置で実行される処理が、複数のパケット識別ユニットにより並列に実行される。
第３の発明では上記課題を解決するために、入力されたパケットの内容を識別するパケット識別方法において、属性毎の単位データに分割された複数の参照データを、参照テーブルの属性毎に定められたアドレスの記憶領域に、前記単位データ毎に予め分散格納し、入力された前記パケット内の比較対象データの属性を解析し、解析された前記比較対象データの属性に対応するアドレスで示される前記参照テーブルの記憶領域から、複数の単位データを取り出し、取り出した前記複数の単位データと、前記比較対象データとの一致の有無を、複数の単位比較回路を用いて並列に比較する、ことを特徴とするパケット識別方法が提供される。
このようなパケット識別方法によれば、パケットが入力されると、比較対象データの属性が解析される。すると、比較対象データの属性に対応するアドレスで示される記憶領域から複数の単位データが取り出される。そして、複数の単位比較回路により、取り出された複数の単位データと比較対象データとが比較される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】  図１は、本発明の概念図である。
図２は、並列接続したパケット識別ユニットを示す図である。
図３は、本発明の実施の形態に係るシステム構成例を示す図である。
図４は、ＶＰＮ装置の内部構成例を示す図である。
図５は、参照テーブルのデータ構造例を示す図である。
図６は、ＳＡテーブルのデータ構造例を示す図である。
図７は、パケット識別装置の内部構成を示すブロック図である。
図８は、参照テーブルに格納されるデータの格納領域を示す図である。
図９は、参照データの分割登録例を示す図である。
図１０は、単位比較回路の内部構成を示す図である。
図１１は、プロトコル解析回路の内部構成を示すブロック図である。
図１２は、プロトコル解析回路の動作例を示すタイミングチャートの前半である。
図１３は、プロトコル解析回路の動作例を示すタイミングチャートの後半である。
図１４は、一致判断レジスタ回路の処理内容を示すフローチャートである。
図１５は、比較実行レジスタ回路の処理内容を示すフローチャートである。
図１６は、サブネットマスク長レジスタ回路の内部処理を示すフローチャートである。
図１７は、アドレス制御回路の内部処理を示す第１のフローチャートである。
図１８は、アドレス制御回路の内部処理を示す第２のフローチャートである。
図１９は、アドレス制御回路の内部処理を示す第３のフローチャートである。
図２０は、従来の参照テーブルのデータ構造例を示す図である。
図２１は、従来のパケット識別処理を示すフローチャートである。
【発明を実施するための最良の形態】  以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、本発明の概念図である。本発明に係るパケット識別装置１０は、比較データ出力回路２０に接続されている。比較データ出力回路２０は、処理中のパケットのデータを単位データ毎にパケット識別装置１０に入力する回路である。たとえば、比較データ出力回路２０は、ルータやＶＰＮ装置で転送すべきパケットを１バイト毎にパケット識別装置１０に入力する。
パケット識別装置１０は、比較データ出力回路２０から入力されたデータのうちの比較対象データと、予め登録された複数の参照データとを、参照データの登録件数分だけ並列に並べた回路によって同時に並列比較する。そのために、パケット識別装置１０には、参照テーブル１１、解析回路１２、アドレス制御回路１３、および単位比較回路１４ａ，１４ｂ，・・・１４ｎが設けられている。
参照テーブル１１は、複数の参照データ１１ａ，１１ｂ，・・・，１１ｎが単位データに分割して格納されている。参照テーブル１１は、アドレス制御回路１３から読み出しアドレスが入力されると、そのアドレスに対応する記憶領域内の各単位データを、単位比較回路１４ａ，１４ｂ，・・・，１４ｎに対して出力する。
１つの参照データを構成する各単位データは、データの属性に対応するアドレスで示される記憶領域に分散格納される。参照データ１１ａを構成する単位データは、異なるアドレスの記憶領域の最上位部分（図１中では、参照テーブル１１内の左側を上位、右側を下位とする）に格納されている。参照データ１１ｂを構成する単位データは、異なるアドレスの記憶領域に、参照データ１１ａを構成する単位データに続けて格納されている。参照データ１１ｎを構成する単位データは、異なるアドレスの記憶領域の最下位部分に格納されている。
解析回路１２は、入力された比較データにしたがって識別対象のデータの属性（たとえば、データが準拠しているプロトコル）を認識する。解析回路１２は、認識した属性の識別情報をアドレス制御回路１３に通知する。また、解析回路１２は、入力された比較対象データを、各単位比較回路１４ａ，１４ｂ，・・・，１４ｎに入力する。
アドレス制御回路１３は、参照テーブル１１のアドレスを制御する。具体的には、アドレス制御回路１３は、各種属性毎の単位データが格納された参照テーブル１１内の記憶領域のアドレスを予め認識している。そして、アドレス制御回路１３は、解析回路１２から属性の識別情報を受け取ると、その属性に対応するアドレスを、読み出しアドレスとして参照テーブル１１に入力する。
単位比較回路１４ａ，１４ｂ，・・・，１４ｎは、比較対象データと参照テーブル１１に登録されている単位データとを比較する。比較内容は、たとえば、値の一致、不一致の比較である。また、値の大小を比較することもできる。
なお、解析回路１２またはアドレス制御回路１３を比較データ出力回路２０側に設けることもできる。この場合、識別対象の比較対象データと、読み出しアドレスとを比較データ出力回路２０から出力し、パケット識別装置１０では比較対象データと参照データとの比較のみを行う。
このようなパケット識別装置１０によれば、パケットを構成するデータが比較データ出力回路２０から入力されると、解析回路１２で入力されたデータの属性が解析される。入力されたデータが比較対象データである場合、比較対象データの属性の識別情報が、解析回路１２からアドレス制御回路１３に通知される。また、解析回路１２から各単位比較回路１４ａ，１４ｂ，・・・，１４ｎに、比較データが渡される。
属性の識別情報を受け取ったアドレス制御回路１３から、その属性に対応するアドレスが、読み出しアドレスとして参照テーブル１１に入力される。すると、参照テーブル１１から、参照データのうち、比較対象データと同じ属性の単位データが各単位比較回路１４ａ，１４ｂ，・・・，１４ｎに入力される。単位比較回路１４ａ，１４ｂ，・・・，１４ｎにおいて、比較対象データと単位データとのビット単位の比較が並列に行われ、比較結果が出力される。
たとえば、ＩＰ  ＳＥＣにおけるＳＡ（Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ）の識別を図１に示すパケット識別装置１０で実行する場合、保護対象となる端末装置のＩＰアドレス等が参照データとして参照テーブル１１に格納される。そして、転送されるパケットのＩＰアドレスが比較対象データとして入力され、比較結果として、一致した参照データに登録されているＳＡＩＤが出力される。
このようなパケット識別装置１０により、パケットの識別をハードウェアで高速に行うことが可能となる。しかも、単位データ毎の比較処理を行うため、回路の肥大化を防ぐことができる。
なお、本発明に係るパケット識別装置１０は、並列に接続することができる。この場合、図１に示したようなパケット識別装置１０と同等の回路を有する複数のパケット識別ユニットを並列接続し、１つのパケット識別装置を構成することができる。
図２は、並列接続したパケット識別ユニットを示す図である。図２に示すように、複数のパケット識別ユニット１０ａ，１０ｂ，・・・，１０ｍが並列に接続されている。各パケット識別ユニット１０ａ，１０ｂ，・・・，１０ｍには、比較データ出力回路２０から共通のデータが入力される。各パケット識別ユニット１０ａ，１０ｂ，・・・，１０ｍにはそれぞれ異なる参照データが格納されており、パケットに含まれる比較対象データと参照データとの比較が行われる。そして、比較対象データと一致する参照データを検出したパケット識別ユニットから、比較結果が出力される。比較対象データと一致する参照データを検出しなかったパケット識別ユニットは、０を出力するか、またはハイインピーダンスの状態になるようにする。これにより、すべてのパケット識別ユニットの結果を一つのデータバスに容易にまとめることができる。
このようにパケット識別ユニット１０ａ，１０ｂ，・・・，１０ｍは並列に使用することが可能である。パケット識別ユニット１０ａ，１０ｂ，・・・，１０ｍの並列接続のための配線は、非常に簡単であるため、多数の情報を比較する必要がある場合にも、複数のパケット識別ユニットの並列使用が容易である。しかも、すべての比較を並列に行うため、パケット識別ユニットを単独で動作させる場合と比較して、処理速度に変化はない。
なお、上記説明では、ＩＰ  ＳＥＣのＳＡの識別を例に採ったが、本発明の適用はこれに限られないことは言うまでもない。たとえば、比較対象のデータを宛先ＩＰアドレスとし、一致した後に出力するデータを宛先インタフェースにすることにより、パケットのルーティングに使用できる。また、ＮＡＴのコネクションを識別して変換用のＩＰアドレス及びポート番号を出力することに使用するほか、パケットフィルタリングなど、パケット識別に関わる幅広い用途に適用できる。
また、パケット識別ユニットに一度に送るデータは、単位データという少ないデータ量なので、データバス幅を小さくすることができ、回路構成の簡略化が図れる。その結果、パケット識別ユニットの小型化が可能となり、実装上有利となる。
次に、本発明をインターネット上のＶＰＮ装置に適用した場合の具体的な実施の形態について説明する。
図３は、本発明の実施の形態に係るシステム構成例を示す図である。本発明の実施の形態では、ＶＰＮ装置１００に、復号用のパケット識別装置１１０と暗号化用のパケット識別装置１２０とが組み込まれている。同様に、ＶＰＮ装置２００に、復号用のパケット識別装置２１０と暗号化用のパケット識別装置２２０とが組み込まれている。各ＶＰＮ装置１００，２００は、ＬＡＮ側インタフェースとインターネット３０側インタフェースとを有している。
ＶＰＮ装置１００，２００は、インターネット３０を介して接続されている。ＶＰＮ装置１００には、ルータ３１経由で端末装置３３が接続されている。ＶＰＮ装置２００には、ルータ３２経由で端末装置３４が接続されている。ＶＰＮ装置１００，２００は、ＬＡＮからインターネット３０側へのパケットを暗号化し、インターネット３０側から受信した暗号化されたパケットを復号してＬＡＮに送信する。
なお、図３の例では、ＶＰＮ装置１００，２００とルータ３１，３２とを個別の装置としているが、一体の装置で構成することもできる。
以下、ＶＰＮ装置１００の復号用のパケット識別装置１１０の詳細を代表的に説明する。なお、暗号化用のパケット識別装置１２０は、識別に使用するパラメータが異なるだけで、基本的に同一の仕組みである。また、ＶＰＮ装置２００の復号用のパケット識別装置２１０や暗号化用のパケット識別装置２２０は、それぞれＶＰＮ装置１００のパケット識別装置１１０、パケット識別装置１２０と同様の構成および機能である。なお、説明を単純化するために、パケットの認証は行わないものとするが、認証用の機能を追加することは容易である。
図４は、ＶＰＮ装置の内部構成例を示す図である。ＶＰＮ装置１００は、復号用のパケット識別装置１１０、暗号化用のパケット識別装置１２０に加え、以下の構成要素を有している。
復号用のパケット識別装置１１０は、参照テーブル１１１を有しており、参照テーブル１１１内の参照データと識別用のパケットとを比較し、ＳＡを識別する。そして、パケット識別装置１１０は、識別結果としてＳＡＩＤを返す。
同様に、暗号化用のパケット識別装置１２０は、参照テーブル１２１を有しており、参照テーブル１２１内の参照データと識別用のパケットとを比較し、ＳＡを識別する。そして、暗号化用のパケット識別装置１２０は、識別結果としてＳＡＩＤを返す。
インターネット３０からＬＡＮへのデータ転送用の構成要素として、インターネット側ネットワーク受信ポート１３１、パケット受信回路１３２、パケット復号回路１３３、パケット送信回路１３４、ルータ側ネットワーク送信ポート１３５が設けられている。
インターネット側ネットワーク受信ポート１３１は、インターネット３０に接続されており、インターネット３０経由で受信したパケットをパケット受信回路１３２に対して出力する。
パケット受信回路１３２は、インターネット側ネットワーク受信ポート１３１から入力されたパケットを受け取る。そして、パケット受信回路１３２は、受け取ったパケットのデータを、順次パケット識別装置１１０に対して出力する。パケット受信回路１３２は、パケット識別装置１１０から識別結果としてＳＡＩＤを受け取ると、このＳＡＩＤを付加したパケットをパケット復号回路１３３に送る。
パケット復号回路１３３はＳＡテーブル１３３ａを有している。ＳＡテーブル１３３ａには、ＳＡＩＤに対応付けて、ＳＡが設定されている。パケット復号回路１３３は、パケット受信回路１３２から渡されたＳＡＩＤに基づいて、パケット復号用のＳＡを選択し、そのＳＡを用いてパケットを復号する。パケット復号回路１３３は、復号したパケットをパケット送信回路１３４に渡す。
パケット送信回路１３４は、ルータ側ネットワーク送信ポート１３５に接続されており、復号されたパケットをルータ側ネットワーク送信ポート１３５を介して、ＬＡＮに送出する。
ルータ側ネットワーク送信ポート１３５は、ＬＡＮ経由でルータ３１に接続された通信ポートである。
ＬＡＮからインターネット３０へのデータ転送用の構成要素として、ルータ側ネットワーク受信ポート１４１、パケット受信回路１４２、パケット暗号化回路１４３、パケット送信回路１４４、インターネット側ネットワーク送信ポート１４５が設けられている。
ルータ側ネットワーク受信ポート１４１は、ＬＡＮ経由でルータ３１に接続されており、ＬＡＮ経由で受信したパケットをパケット受信回路１４２に対して出力する。
パケット受信回路１４２は、ルータ側ネットワーク受信ポート１４１から入力されたパケットを受け取る。そして、パケット受信回路１４２は、受け取ったパケットを、順次パケット識別装置１２０に対して出力する。パケット受信回路１４２は、パケット識別装置１２０から識別結果としてＳＡＩＤを受け取ると、このＳＡＩＤを付加したパケットをパケット暗号化回路１４３に送る。
パケット暗号化回路１４３はＳＡテーブル１４３ａを有している。ＳＡテーブル１４３ａには、ＳＡＩＤに対応付けて、ＳＡが設定されている。パケット暗号化回路１４３は、パケット受信回路１４２から渡されたＳＡＩＤに基づいて、パケット暗号化用のＳＡを選択し、そのＳＡを用いてパケットを暗号化する。パケット暗号化回路１４３は、暗号化したパケットをパケット送信回路１４４に渡す。
パケット送信回路１４４は、インターネット側ネットワーク送信ポート１４５に接続されており、復号されたパケットをインターネット側ネットワーク送信ポート１４５を介して、インターネット３０に送出する。
インターネット側ネットワーク送信ポート１４５は、インターネット３０に接続された通信ポートである。
なお、パケット識別装置１１０，１２０は、暗号化や復号を行うために必要な情報が予め登録されている。
図５は、参照テーブルのデータ構造例を示す図である。参照テーブル１１１には、ＳＡＩＤ、Ｖａｌｉｄ、Ｓｒｃ−ＩＰ、Ｄｓｔ−ＩＰ、ＳＰＩ（Ｓｅｃｕｒｉｔｙ  Ｐａｒａｍｅｔｅｒ  Ｉｎｄｅｘ）、およびＣｏｎｔｒｏｌの欄が設けられている。各欄の横方向に並べられた情報同士が互いに関連づけられており、関連する複数の情報により１つのエントリが構成されている。
ＳＡＩＤは、登録されているエントリを識別するための識別情報である。
Ｖａｌｉｄは、このＳＡＩＤに対応する登録データが有効（１）か無効（０）かを示すフラグである。
Ｓｒｃ−ＩＰは、送信元ＩＰアドレスである。パケット識別装置１１０は、パケットを処理する際に、パケット内の送信元ＩＰアドレスとＳｒｃ−ＩＰのフィールド内の情報とを比較する。なお、図５に示すＩＰ．Ｒｏｕｔｅｒ−Ｂは、ルータ３２のＩＰアドレスである。
Ｄｓｔ−ＩＰは、宛先ＩＰアドレスである。パケット識別装置１１０は、パケットを処理する際に、宛先ＩＰアドレスとＤｓｔ−ＩＰのフィールド内の情報とを比較する。Ｄｓｔ−ＩＰのフィールド内で「Ｄｏｎ’ｔ  Ｃａｒｅ」となっている欄は、後述するＣｏｎｔｒｏｌフィールドによって、宛先ＩＰアドレスの比較は行わない設定になっていることを示す。なお、図５に示すＩＰ．Ｒｏｕｔｅｒ−Ａは、ルータ３１のＩＰアドレスである。
ＳＰＩは、ＳＡを識別するための情報である。パケット識別装置１１０は、パケットを処理する際に、ＥＳＰヘッダ中のＳＰＩパラメータと、ＳＰＩのフィールド内の情報との比較を行う。
Ｃｏｎｔｒｏｌは、比較の要否を示す２ビットのフラグである。比較の際に、Ｃｏｎｔｒｏｌのフィールドのｂｉｔ［０］が１にセットされている場合には、Ｓｒｃ−ＩＰアドレスとの比較を行わず、０がセットされている場合には、Ｓｒｃ−ＩＰアドレスとの比較を行う。また、ｂｉｔ［１］が１にセットされている場合には、Ｄｓｔ−ＩＰアドレスとの比較を行わず、０にセットされている場合には、Ｄｓｔ−ＩＰアドレスとの比較を行う。
なお、暗号化用のパケット識別装置１２０が有する参照テーブル１２１のデータ構造も、図５に示したデータ構造とほぼ同様である。ただし、参照テーブル１２１には、比較対象項目として、Ｓｒｃ−ＩＰとＤｓｔ−ＩＰとに加え、Ｓｒｃ−ｐｏｒｔ（送信元ポート番号）とＤｓｃ−ｐｏｒｔ（宛先ポート番号）とが設けられている。パケット識別装置１２０は、Ｓｒｃ−ＩＰ、Ｄｓｔ−ＩＰ、Ｓｒｃ−ｐｏｒｔ、Ｄｓｃ−ｐｏｒｔの比較を行う。
図６は、ＳＡテーブルのデータ構造例を示す図である。ＳＡテーブル１３３ａには、ＳＡＩＤ、Ｖａｌｉｄ、ＤＥＣＯＤＥ＿ＫＥＹ、ＤＥＳ／３ＤＥＳの欄が設けられている。各欄の横方向に並べられた情報同士が互いに関連づけられており、関連する複数の情報により１つのエントリが構成されている。
ＳＡＩＤは、登録されたエントリを識別するとともに、参照テーブル１１１内の関連するレコードを示す識別情報である。
ＤＥＣＯＤＥ＿ＫＥＹは、復号用の秘密鍵である。図６では、復号鍵をＫＥＹ１，ＫＥＹ２で示している。
ＤＥＳ／３ＤＥＳは、暗号化／復号方式を示す情報である。このフィールドが０の場合、復号化プロトコルとしてＤＥＳを用い、１の場合、復号化プロトコルとして３ＤＥＳを用いる。
ＳＡテーブル１３３ａに格納された情報は、参照テーブル１１１に含めてもよい。その場合、識別結果として、ＤＥＣＯＤＥ＿ＫＥＹとＤＥＳ／３ＤＥＳとに登録された情報が出力される。
なお、パケット暗号化回路１４３が有するＳＡテーブル１４３ａも、図６に示すデータ構造と同様である。
以上のような構成のＶＰＮ装置１００を用いて、インターネット３０を介して通信するパケットの暗号化や復号を行うことができる。なお、図４〜図６には、ＶＰＮ装置１００の構成を示しているが、ＶＰＮ装置２００も同様の構成である。
次に、ＶＰＮ装置１００においてインターネット３０側から暗号化されたパケットを受信した場合に、パケットを復号する過程について詳細に説明する。
まず、インターネット側ネットワーク受信ポート１３１に入力されたパケットが、パケット受信回路１３２で受信される。すると、パケット受信回路１３２において、パケットを構成するデータが復号用のパケット識別装置１１０に渡される。
パケット識別装置１１０は、受け取ったデータに基づいてパケットを識別し、識別結果（ＳＡＩＤ）をパケット受信回路１３２に渡す。識別結果は、パケット受信回路１３２からパケット復号回路１３３に渡される。
パケット復号回路１３３は、受け取ったＳＡＩＤに基づいて、ＳＡテーブル１３３ａから復号化プロトコルと復号用秘密鍵を取り出し、パケットの復号化を行う。これはソフトウェアで処理することもできる。
以上のようにして、本パケット識別装置を用いることにより、ＶＰＮ装置１００におけるＳＡＩＤの識別を、高速に行うことが可能となる。
なお、ここでは、ＶＰＮ装置１００の復号処理を例にとったが、比較対象とするデータ（フィールド）を変更することにより、ＮＡＴのコネクションの識別や、ルーティング、フィルタリングなどにも簡単に変更することができる。様々なフィールドに対応するデータをあらかじめ参照テーブルに登録しておくことで、同一の識別装置で様々な用途に対応することも可能である。また、ＩＰアドレスに関するフィールドは、サブネットマスクを使用することも可能である。
次に、パケット識別装置の内部構成を説明する。
図７は、パケット識別装置の内部構成を示すブロック図である。パケット識別装置１１０は、参照テーブル１１１、プロトコル解析回路１１２、アドレス制御回路１１３、および複数の単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎが設けられている。
参照テーブル１１１には、複数の参照データ１１１ａ，１１１ｂ，・・・，１１１ｎが格納されている。各参照データ１１１ａ，１１１ｂ，・・・，１１１ｎは、単位データに分割されており、単位データのプロトコル毎のアドレスに格納されている。なお、各プロトコルのアドレスは、パケット内の比較対象データの配列に沿った順番で定義されている。すなわち、先に入力される比較対象データのプロトコルに対応するアドレスほど、小さい値となる。
プロトコル解析回路１１２は、識別すべきパケットデータが単位データ毎に入力される。そして、プロトコル解析回路１１２は、入力されたデータの属性（データが準拠しているプロトコル）を解析し、比較対象データかどうかを判断する。たとえば、ＩＰヘッダ中のＩＰアドレスやＴＣＰヘッダ中のポート番号等が比較対象データとなる。なお、各データのプロトコルは、予め決められたＩＰパケットのデータ構造（データフォーマット）の定義に従って判断することができる。
プロトコル解析回路１１２は、比較対象データが入力されたことを検出すると、各単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎに対して比較実行信号を出力する。その際、プロトコル解析回路１１２は、比較対象データのプロトコルを示す情報（プロトコル情報）をアドレス制御回路１１３に渡す。
このプロトコル解析回路１１２は、具体的には、カウンタと、ＩＰヘッダ等の各フィールドを認識するステートマシンによって実現することができる。ここで、プロトコル解析回路１１２は、ＩＰアドレスや、ＴＣＰポート番号等の各比較項目の直前に比較条件を設定する制御信号（比較条件設定信号）を出力し、その後に、比較対象データを必要に応じてバッファから出力する。この方法についての詳細は後述する。
アドレス制御回路１１３は、プロトコル解析回路１１２から出力される比較実行信号とプロトコル情報とに応じて、データ読み出し用のアドレスを参照テーブル１１１に供給する。具体的には、参照テーブル１１１内の参照データが、比較対象データが入力される順に沿って配置されている。そのため、アドレス制御回路１１３は、比較実行信号を受信する毎に「ｗｏｒｄ１」から順に単位データを読み出すようにアドレスを制御する。
なお、本実施の形態では説明を簡単にするために「ｗｏｒｄ１」から順に読み出すこととしたが、アドレスの制御方法は参照データの登録に依存するもので、これに限定されるものではない。また、アドレス制御回路１１３は、ＩＰアドレスやＴＣＰポート番号等の各比較項目の直前に比較条件を設定する場合には、プロトコル情報に基づいて比較項目の入力タイミングを検出し、そのタイミングで各項目の比較条件が参照テーブル１１１から読み出されるようにアドレスを制御する。
単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎは、比較データ出力回路から受け取ったデータと、参照テーブル１１１から読み出される各参照データ１１１ａ，１１１ｂ，・・・，１１１ｎの単位データ毎に、ビット単位の比較を行う。また、単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎは、参照データ１１１ａ，１１１ｂ，・・・，１１１ｎの登録可能件数分だけ並列に配置されている。
各単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎは、最初の単位データから現在の単位データにいたるまで、比較対象データと参照データの単位データと一致状態が続いているか否かの情報を、比較が終わるまで保持する。そのため、単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎの内部には、最低限、一致が続いているかを判断するためのレジスタが１ビット分必要である。また、それ以外にも、各比較項目の比較条件、例えば「ＴＣＰポート番号は比較対象としない」や「ＩＰアドレスの比較の際には設定されたサブネットマスクを使用する」や「使用するサブネットマスク」等の情報を格納するレジスタが必要である。これらの比較条件格納用のレジスタを比較項目毎に用意すると回路規模が増大してしまうが、本実施の形態では、比較項目の直前に比較条件を設定する構成にすることで、回路の小型化を図っている。
図８は、参照テーブルに格納されるデータの格納領域を示す図である。図８に示すように参照テーブル１１１の「ｗｏｒｄ１」には、参照データ＃１の先頭から単位データ長分のデータ、参照データ＃２の先頭から単位データ長分のデータ、・・・・・・、参照データ＃ｎの先頭から単位データ長分のデータが並列に登録されている。以下「ｗｏｒｄ２」、「ｗｏｒｄ３」についても同様である。
なお、図８に示す参照データの登録方法では、参照テーブルのアドレス（ｗｏｒｄ番号）が一番小さいものが参照データの先頭になるように記載されているが、このような配列に限定されるものではなく、どのような順番で登録するかはアドレスの制御方法との関係で適当な順番とすることも可能である。また、参照テーブル１１１で使用するメモリの種類もＳＲＡＭやＤＲＡＭに限定されるものでなく、例えばＦＩＦＯであってもよい。
以下、パケット識別装置１１０の詳細な機能を説明する。なお、ここでは単位比較データ長は８ビットとし、簡単のために、送信元および宛先ＩＰアドレスを比較するものとするが、単位比較データ長や比較対象データがこの例に限られないことは言うまでもない。
図９は、参照データの分割登録例を示す図である。図９に示すように、参照データ１１１ａが１バイト単位の単位データに分割され、個別のアドレスに格納される。
アドレス「０」には、参照データ１１１ａの有効性を示すフラグが設定される。参照データ１１１ａが有効であれば、Ｂｉｔ０に「１」が設定され、参照データ１１１ａが無効であれば、Ｂｉｔ０に「０」が設定される。
アドレス「１」には、送信元ＩＰアドレスの比較の要否を示すフラグが設定される。送信元ＩＰアドレスの比較が有効であれば、Ｂｉｔ０に「１」が設定され、送信元ＩＰアドレスの比較が無効であれば、Ｂｉｔ０に「０」が設定される。また、Ｂｉｔ［５：１］には、サブネットマスク長−１の値が設定される。
アドレス「２」には、送信元ＩＰアドレスの先頭１バイトが格納される。アドレス「３」には、送信元ＩＰアドレスの先頭から２バイト目が格納される。アドレス「４」には、送信元ＩＰアドレスの先頭から３バイト目が格納される。アドレス「５」には、送信元ＩＰアドレスの最後の１バイトが格納される。
アドレス「６」には、宛先ＩＰアドレスの比較の要否を示すフラグが設定される。宛先ＩＰアドレスの比較が有効であれば、Ｂｉｔ０に「１」が設定され、宛先ＩＰアドレスの比較が無効であれば、Ｂｉｔ０に「０」が設定される。また、Ｂｉｔ［５：１］には、サブネットマスク長−１の値が設定される。
アドレス「７」には、宛先ＩＰアドレスの先頭１バイトが格納される。アドレス「８」には、宛先ＩＰアドレスの先頭から２バイト目が格納される。アドレス「９」には、宛先ＩＰアドレスの先頭から３バイト目が格納される。アドレス「１０」には、宛先ＩＰアドレスの最後の１バイトが格納される。
アドレス「１１」には、ＳＰＩの比較の要否を示す情報が設定される。Ｂｉｔ０が比較の要否を示しており、本実施の形態では常に比較要を示す値「１」が設定される。また、Ｂｉｔ［５：１］は、３１の値に固定される。
アドレス「１２」には、ＳＰＩの先頭１バイトが格納される。アドレス「１３」には、ＳＰＩの先頭から２バイト目が格納される。アドレス「１４」には、ＳＰＩの先頭から３バイト目が格納される。アドレス「１５」には、ＳＰＩの最後の１バイトが格納される。
アドレス「１６」には、ＳＡＩＤが登録される。
なお、図９の例では、参照データのみではなく、参照項目毎の比較条件（この例では、比較実行の有無とサブネットマスク長−１）および出力データとしてＳＡＩＤが登録されている。なお、サブネットマスク長そのものではなく、サブネットマスク長−１の値を登録することにしているのは、レジスタのビット幅を節約するためである。サブネットを使用せずに、全ビットを比較する場合には、サブネットマスク長−１の値を３１にすればよい。
図１０は、単位比較回路の内部構成を示す図である。単位比較回路１１４ａには、レジスタとして、一致判断レジスタ回路１１５ａ、比較実行レジスタ回路１１５ｂ、サブネットマスク長レジスタ回路１１５ｃを有している。さらに、単位比較回路１１４ａには、サブネットマスク生成回路１１５ｄと比較器１１５ｅとが設けられている。
レジスタは、一致判断レジスタ回路１１５ａが１ビット、比較実行レジスタ回路１１５ｂが１ビット、サブネットマスク長レジスタ回路１１５ｃが５ビットの計７ビットで構成される。
なお、本実施の形態では、参照項目毎に比較条件を設定するため、レジスタの合計が７ビットで済んでいる。仮に、参照項目毎の比較条件を一度に設定する場合には、比較実行レジスタ回路とサブネットマスク長レジスタが送信元ＩＰアドレス、宛先ＩＰアドレス毎に必要となる。そのため、一致判断レジスタ回路１１５ａと合わせて計１３ビットとなり、回路規模がほぼ倍となってしまうことがわかる。
各レジスタには、参照データ（単位データ）の対応するビットが入力される。また、一致判断レジスタ回路１１５ａには、プロトコル解析回路１１２から参照データ有効設定信号と比較実行信号とが入力されるとともに、比較器１１５ｅから一致信号が入力される。比較実行レジスタ回路１１５ｂには、プロトコル解析回路１１２から比較条件設定信号が入力される。サブネットマスク長レジスタ回路１１５ｃには、プロトコル解析回路１１２から比較条件設定信号と比較実行信号とが入力される。
サブネットマスク生成回路１１５ｄは、サブネットマスク長レジスタ回路１１５ｃの値に応じて比較対象データに対するマスクを生成する回路である。サブネットマスク生成回路１１５ｄは、生成したマスクデータを、比較器１１５ｅに入力する。
比較器１１５ｅは、比較対象データにサブネットマスクをかけた後で、参照データとの比較を行う。比較の結果、一致した場合、比較器１１５ｅは一致信号を出力する。
なお、図１０には、単位比較回路１１４ａの内部構成を代表的に示したが、他の単位比較回路１１４ｂ，・・・，１１４ｎも同様の内部構成である。
また、プロトコル解析回路１１２は、後述するように、もともとの比較対象データを必要に応じて蓄積し、単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎへの出力タイミングを遅らせる機能を持つ。
図１１は、プロトコル解析回路の内部構成を示すブロック図である。プロトコル解析回路１１２は、プロトコル解析ステートマシン１１２ａ、宛先ＩＰアドレス用バッファ１１２ｂ、ＳＰＩ用バッファ１１２ｃ、およびセレクタ１１２ｄから構成される。
プロトコル解析ステートマシン１１２ａには、オリジナルの比較対象データが入力される。プロトコル解析ステートマシン１１２ａは、入力されるパケットのヘッダを解析し、入力される各データがパケットのどのパラメータに当たるのかを認識する。そして、プロトコル解析ステートマシン１１２ａは、参照データと比較すべきデータが入力されたとき、制御信号を出力する。
プロトコル解析ステートマシン１１２ａが出力する制御信号には、アドレス制御回路１１３と単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎとに対して出力する比較条件設定信号、参照データ有効設定信号、比較実行信号がある。また、プロトコル解析ステートマシン１１２ａが出力する制御信号として、宛先ＩＰアドレス用バッファ１１２ｂに対して出力する宛先ＩＰアドレス用バッファリング信号、ＳＰＩ用バッファ１１２ｃに対して出力するＳＰＩ用バッファリング信号、およびセレクタ１１２ｄに対して出力するデータセレクト信号がある。
宛先ＩＰアドレス用バッファ１１２ｂは、宛先ＩＰアドレスをバッファリングするための記憶領域である。宛先ＩＰアドレス用バッファ１１２ｂは、プロトコル解析ステートマシン１１２ａから宛先ＩＰアドレス用バッファリング信号が入力されたときに、そのとき入力されている比較対象データ（宛先ＩＰアドレス）を記憶する。
ＳＰＩ用バッファ１１２ｃは、ＳＰＩのデータをバッファリングするための記憶領域である。ＳＰＩ用バッファ１１２ｃは、プロトコル解析ステートマシン１１２ａからＳＰＩ用バッファリング信号が入力されたときに、そのとき入力されている比較対象データ（ＳＰＩ）を記憶する。
セレクタ１１２ｄは、プロトコル解析ステートマシンからのデータセレクト信号に応じて、出力データを、比較対象データ、宛先ＩＰアドレス用バッファ１１２ｂ、ＳＰＩ用バッファ１１２ｃの中から選択する。
なお、図１１では、宛先ＩＰアドレス用バッファ１１２ｂには、宛先ＩＰアドレスバッファリング信号がプロトコル解析ステートマシン１１２ａから出力されたときにデータをバッファに取り込む構成にしているが、宛先ＩＰアドレスバッファリング信号を削除し、宛先ＩＰアドレス用バッファ１１２ｂを単に比較対象データの第１段バッファとしてもよい。同様に、ＳＰＩ用バッファリング信号を削除し、ＳＰＩ用バッファ１１２ｃを単に比較対象データの第２段バッファとしてもよい。
次に、上記の回路の動作を、図１２，図１３を参照して説明する。ここでは、参照テーブル１１１として使用するメモリとして、アドレス確定後、次のサイクルでデータが出力される同期式のメモリを想定している。
図１２は、プロトコル解析回路の動作例を示すタイミングチャートの前半である。図１３は、プロトコル解析回路の動作例を示すタイミングチャートの後半である。
図１２、図１３には、上から順に、プロトコル解析回路の同期用クロック信号（クロック）、参照データ有効設定信号、比較条件設定信号、比較実行信号、サブネットマスク使用信号、参照テーブルアドレス、参照／出力データ、比較対象データ（オリジナル）、比較対象データ（バッファ後）、および結果出力信号が示されている。
ＩＰパケット（オリジナルの比較対象データ）が入力される前は、アドレス制御回路１１３からは、参照テーブルアドレス「０」が出力されている。これにより、参照テーブル１１１から参照データの有効／無効設定データが出力される。
時刻ｔ１にＩＰパケット（オリジナルの比較対象データ）が入力される。
次のクロックの立ち上がり時刻ｔ２に、アドレス制御回路１１３から出力される参照テーブルのアドレスが「１」に切り替えられる。また、プロトコル解析ステートマシン１１２ａにより参照データ有効設定信号がハイレベルにアサートされる。これにより、単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎの一致判断レジスタ回路に参照データの有効ビットの値が格納される。参照データの有効ビットが有効「１」であれば、対応する単位比較回路において、パケットの比較が実行される。
時刻ｔ３において、参照テーブル１１１から送信元ＩＰアドレスの比較条件設定データが出力される。
送信元ＩＰアドレスのデータが入力される前の時刻ｔ４に、比較条件設定信号がハイレベルにアサートされる。これにより、単位比較回路１１４ａ，１１４ｂ，・・・，１１４ｎの比較実行レジスタ回路に送信元アドレスの比較条件設定データが格納され、サブネットマスク長レジスタに「サブネットマスク長マスク−１」の値が格納される。送信元アドレスの比較条件設定データが比較「１」を示していれば、対応する単位比較回路において、送信元ＩＰアドレスの比較が実行される。このとき、アドレス制御回路１１３から出力される参照テーブルのアドレスが「２」に切り替えられる。
時刻ｔ５に、比較対象データとして送信元ＩＰアドレスが入力されると共に、参照テーブル１１１から参照データとして送信元ＩＰアドレスが出力される。このとき、プロトコル解析ステートマシン１１２ａにより比較実行信号とサブネットマスク使用信号とがハイレベルにアサートされる。これにより、参照データが有効である単位比較回路において、比較条件にしたがって比較が実行される。このとき、アドレス制御回路１１３から出力される参照テーブルのアドレスが「３」に切り替えられる。
その後、クロック信号に合わせてアドレス制御回路１１３から出力される参照テーブルのアドレスが、「４」、「５」、「６」に切り替えられる。その間、送信元ＩＰアドレスの比較が継続して行われる。
比較対象データとしては、送信元ＩＰアドレスの次には宛先ＩＰアドレスが続くが、その前に、時刻ｔ６で比較条件設定信号がハイレベルにアサートされ、宛先ＩＰアドレスの比較条件設定デーが比較実行レジスタ回路に格納される。この時点で、オリジナルの比較対象データとして宛先ＩＰアドレスが入力されているが、参照データとバッファ後の比較対象データとに関しては、データ出力が行われていない。すなわち、比較条件の設定を行ったため、比較対象データが連続している場合には、参照データが１サイクル遅れることになる。
１サイクル後の時刻ｔ７に、比較実行信号とサブネットマスク使用信号とがハイレベルにアサートされる。同時に、参照テーブル１１１から参照データとして宛先ＩＰアドレスが出力され、プロトコル解析回路１１２からは、１サイクル分バッファ後の比較対象データとして、宛先ＩＰアドレスが出力される。これにより宛先ＩＰアドレスの比較が行われる。
宛先ＩＰアドレスの比較終了後、ＥＳＰヘッダ中のＳＰＩの比較条件の設定が行われ、続けて、ＥＳＰヘッダ中のＳＰＩ値の比較が行われる。
ここで、参照データが連続している場合には、宛先ＩＰアドレスの比較実行中の時刻ｔ８に、ＥＳＰヘッダ中のＳＰＩがプロトコル解析回路１１２に入力されている。宛先ＩＰアドレスの比較が終了した後の時刻ｔ９に、比較条件設定信号がハイレベルにアサートされ、ＳＰＩの比較条件が格納される。この作業のために、比較対象データが連続している場合には、参照データが２サイクル遅れることになるので、プロトコル解析回路１１２は、ＥＳＰヘッダ中のＳＰＩの比較の際には、２サイクル分バッファした後の時刻ｔ１０にデータを出力する。
以上で、すべての項目の比較は終了である。その後、時刻ｔ１１にプロトコル解析回路１１２から比較結果出力信号が出力され、すべての項目の比較が一致していた場合には、識別結果としてＳＡＩＤが出力される。
このようにして、比較対象データと参照データとが比較される。
以下、各回路毎の処理内容をフローチャートを参照して説明する。
図１４は、一致判断レジスタ回路の処理内容を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］一致判断レジスタ回路１１５ａは、参照データ有効設定信号がハイレベルにアサートされているか否かを判断する。ハイレベルにアサートされていれば、処理がステップＳ１２に進められる。ハイレベルにアサートされていなければ処理がステップＳ１３に進められる。
［ステップＳ１２］一致判断レジスタ回路１１５ａは、参照データ有効設定信号がハイレベルにアサートされた場合、参照データの有効ビット（Ｂｉｔ０）の値を格納する。参照データが有効であれば１が設定され、無効であれば０が設定される。その後、処理がステップＳ１１に進められる。
［ステップＳ１３］一致判断レジスタ回路１１５ａは、比較実行信号がハイレベルにアサートされているか否かを判断する。アサートされている場合、処理がステップＳ１４に進められる。アサートされていない場合、処理がステップＳ１１に進められる。
［ステップＳ１４］一致判断レジスタ回路１１５ａは、比較実行レジスタ回路１１５ｂの値がハイレベルか否かを判断する。ハイレベルに設定されている場合、処理がステップＳ１５に進められる。ローレベルの場合、処理がステップＳ１１に進められる。
［ステップＳ１５］一致判断レジスタ回路１１５ａは、比較器１１５ｅからハイレベルの一致信号（比較の結果、一致したことを示す）が出力されているか否かを判断する。ハイレベルの一致信号が出力されていれば、レジスタに保持している値を維持し、処理がステップＳ１１に進められる。ハイレベルの一致信号が出力されていなければ、処理がステップＳ１６に進められる。
［ステップＳ１６］一致判断レジスタ回路１１５ａは、レジスタに保持している値を０にクリアする。その後、処理がステップＳ１１に進められる。
このようにして、一致判断レジスタ回路１１５ａには、参照データ有効設定信号がハイレベルになったときに、１の値が格納される。そして、比較実行信号がハイレベルとなり、比較実行レジスタがハイレベルにセットされているときの比較器１１５ｅの比較結果が一致していれば、一致判断レジスタ回路１１５ａにおいて１の値が維持され、不一致であれば一致判断レジスタ回路１１５ａで保持した値が０にクリアされる。
図１５は、比較実行レジスタ回路の処理内容を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ２１］比較実行レジスタ回路１１５ｂは、比較条件設定信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ２１の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ２２に進められる。
［ステップＳ２２］比較実行レジスタ回路１１５ｂは、参照データのＢｉｔ０を格納する。比較を有効とする場合には、１（出力がハイレベルとなる）が格納され、比較が無効の場合、０（出力がローレベルとなる）が格納される。その後、処理がステップＳ２１に進められる。
図１６は、サブネットマスク長レジスタ回路の内部処理を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］サブネットマスク長レジスタ回路１１５ｃは、比較条件設定信号がハイレベルか否かを判断する。ローレベルであれば、処理がステップＳ３３に進められる。ハイレベルであれば、処理がステップＳ３２に進められる。
［ステップＳ３２］サブネットマスク長レジスタ回路１１５ｃは、参照データのＢｉｔ［５：１］を格納する。参照データのＢｉｔ［５：１］は、サブネットマスク長−１の値である。その後、処理がステップＳ３１に進められる。
［ステップＳ３３］サブネットマスク長レジスタ回路１１５ｃは、比較実行信号がハイレベルか否かを判断する。ローレベルであればステップＳ３３を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ３４に進められる。
［ステップＳ３４］サブネットマスク長レジスタ回路１１５ｃは、サブネットマスク長レジスタの値が７より大きいか否かを判断する。７より大きい場合、処理がステップＳ３６に進められる。７以下の場合、処理がステップＳ３５に進められる。
［ステップＳ３５］サブネットマスク長レジスタ回路１１５ｃは、サブネットマスク長レジスタに０を設定する。その後、処理がステップＳ３１に進められる。
［ステップＳ３６］サブネットマスク長レジスタ回路１１５ｃは、サブネットマスク長レジスタの現在の値から８を減算する。その後、処理がステップＳ３１に進められる。
このように、サブネットマスク長レジスタ回路１１５ｃでは、比較条件設定信号がハイレベルにアサートされると、参照データの該当ビットの値が格納され、比較実行信号がハイレベルにアサートされると０になるまでその値が８ずつ減算される。
次に、アドレス制御回路の内部処理について、図１７〜図１９を参照して説明する。
図１７は、アドレス制御回路の内部処理を示す第１のフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
［ステップＳ４１］アドレス制御回路１１３は、参照データの有効／無効設定用アドレスを、参照テーブル１１１のアドレスとして出力する。
［ステップＳ４２］アドレス制御回路１１３は、参照データ有効設定信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ４２の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ４３に進められる。
［ステップＳ４３］アドレス制御回路１１３は、送信元ＩＰアドレス比較条件設定アドレスを、参照テーブル１１１のアドレスとして出力する。
［ステップＳ４４］アドレス制御回路１１３は、比較条件設定信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ４４の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ４５に進められる。
［ステップＳ４５］アドレス制御回路１１３は、送信元ＩＰアドレスの最初の１バイト用のアドレスを、参照テーブル１１１のアドレスとして出力する。
［ステップＳ４６］アドレス制御回路１１３は、比較実行信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ４６の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ４７に進められる。
［ステップＳ４７］アドレス制御回路１１３は、現在出力しているアドレスが、送信元ＩＰアドレスの最後の１バイト用のアドレスか否かを判断する。最後の１バイト用のアドレスであれば、図１８のステップＳ５１に進められる。最後の１バイト用のアドレスでなければ、処理がステップＳ４８に進められる。
［ステップＳ４８］アドレス制御回路１１３は、現在出力中のアドレスに１を加算したアドレスを、参照テーブル１１１のアドレスとして出力する。その後、処理がステップＳ４６に進められる。
図１８は、アドレス制御回路の内部処理を示す第２のフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
［ステップＳ５１］アドレス制御回路１１３は、宛先ＩＰアドレス比較条件設定用のアドレスを、参照テーブル１１１のアドレスとして出力する。
［ステップＳ５２］アドレス制御回路１１３は、比較条件設定信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ５２の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ５３に進められる。
［ステップＳ５３］アドレス制御回路１１３は、宛先ＩＰアドレスの最初の１バイト用のアドレスを、参照テーブル１１１のアドレスとして出力する。
［ステップＳ５４］アドレス制御回路１１３は、比較実行信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ５４の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ５５に進められる。
［ステップＳ５５］アドレス制御回路１１３は、現在出力しているアドレスが、宛先ＩＰアドレスの最後の１バイト用のアドレスか否かを判断する。最後の１バイト用のアドレスであれば、処理がステップＳ５７に進められる。最後の１バイト用のアドレスでなければ、処理がステップＳ５６に進められる。
［ステップＳ５６］アドレス制御回路１１３は、現在出力中のアドレスに１を加算したアドレスを、参照テーブル１１１のアドレスとして出力する。その後、処理がステップＳ５４に進められる。
［ステップＳ５７］アドレス制御回路１１３は、ＳＰＩ比較条件設定用のアドレスを、参照テーブル１１１のアドレスとして出力する。
［ステップＳ５８］アドレス制御回路１１３は、比較条件設定信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ５８の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ５９に進められる。
［ステップＳ５９］アドレス制御回路１１３は、ＳＰＩの最初の１バイト用のアドレスを、参照テーブル１１１のアドレスとして出力する。その後、処理が図１９のステップＳ６１に進められる。
図１９は、アドレス制御回路の内部処理を示す第３のフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］アドレス制御回路１１３は、比較実行信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ６１の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ６２に進められる。
［ステップＳ６２］アドレス制御回路１１３は、現在出力しているアドレスが、ＳＰＩの最後の１バイト用のアドレスか否かを判断する。最後の１バイト用のアドレスであれば、処理がステップＳ６４に進められる。最後の１バイト用のアドレスでなければ、処理がステップＳ６３に進められる。
［ステップＳ６３］アドレス制御回路１１３は、現在出力中のアドレスに１を加算したアドレスを、参照テーブル１１１のアドレスとして出力する。その後、処理がステップＳ６１に進められる。
［ステップＳ６４］アドレス制御回路１１３は、ＳＡＩＤ用のアドレスを、参照テーブル１１１のアドレスとして出力する。
［ステップＳ６５］アドレス制御回路１１３は、比較結果出力信号がハイレベルか否かを判断する。ローレベルであれば、ステップＳ６５の処理を繰り返し、ハイレベルにアサートされるのを待つ。ハイレベルであれば、処理がステップＳ６６に進められる。
［ステップＳ６６］アドレス制御回路１１３は、参照データの有効／無効設定用アドレスを、参照テーブル１１１のアドレスとして出力する。
以上のようにして、入力されたパケットの識別が可能となる。このとき、単位データ毎に参照テーブルから出力して、単位データと比較対象データとの比較を行うため、単位比較回路は、単位データのデータ長（たとえば８ビット）のビット数を同時に比較できればよい。その結果、回路の大型化を抑えることができる。
しかも、本実施の形態で使用する参照テーブルは、アドレスの入力に応じてデータを出力するものであり、一般的なＲＡＭ等の構成と同じである。すなわち、ＣＡＭを用いる必要がない。その結果、単価を安くすることができる。
また、本実施の形態に係るパケット識別装置は、並列接続が容易である。そのため、参照データの量に応じて並列接続するパケット識別装置の数を決定すればよい。そのため、運用内容に応じたパケット識別装置の構築を容易に行うことができる。しかも、このように参照データの増加に伴い並列処理を行うパケット識別装置の数を増やすことで、パケットの比較時間を増加させずに、大量の参照データの比較が可能となる。
ところで、上記の例では一度に比較するデータ長を８ビットとしたが、データ長を８ビットに制限するものではない。４ビットや１６ビット等単位の比較を行う単位比較回路を用いてもよい。
なお、一度に比較するデータ長の単位を変更した場合には、取得信号の発生のタイミングや参照データの登録方法をそれに応じて適宜変更する。
また、ＩＰアドレスやポート番号等で、データとの一致だけでなく、上限値と下限値を指定して範囲を指定したい場合には、単位データ長の比較を繰り返すだけでなく、次のような方法も考えられる。例えば、単位データ長が４ビットであり、ポート番号（ビット幅：１６ビット）を上限値と下限値で範囲指定したい場合を考える。この場合には、ポート番号部分に相当する比較対象データ（４ビット）４個分と上限値、下限値に相当する参照データそれぞれ４個分を単位比較回路内または別の部分に蓄える。そして、単位比較回路において、４ビットずつの比較を行う。
また、単位比較回路において、前述のように例えばサブネットマスクを使用することにより、ＩＰアドレスの一部を比較対象外としているが、同様の手法により、各種比較対象データの一部を比較対象外とすることも可能である。
また、出力信号として一致信号だけではなく、どの参照データに対して一致したか、またそれに付随する様々な情報を出力させるように拡張することも可能であり、本発明の範囲に属する。
また、複数の登録データに一致した場合に、登録番号順などの条件によっていずれか一つのデータを優先させることも可能であり、本発明の範囲に属する。
さらに、この例では、参照テーブル中の複数の参照データが同時に一致することはないことを想定していたが、複数一致することが想定される場合（例えばパケットフィルタ等）、仮に、登録番号の小さい方を優先する仕組みをつくることも可能であり、本発明の範囲に属する。
参照テーブルにデータを登録するときには、必要なデータを一度に書き込むのではなく、例えば、１２８ビットのデータを登録する場合に、単位データ長を仮に４ビットとして、４ビットのデータを３２サイクルに分けて参照テーブルに書き込む仕組みにすることもできる。これにより、パケット識別装置のピン数を少なくすることができ、実装上有益である。
以上説明したように本発明では、参照データを複数の単位データに分割格納し、比較対象データの属性に応じた複数の単位データと比較対象データとを比較するようにした。そのため、比較するための回路は、単位データのデータ長に応じたデータの比較ができればよくなる。その結果、高速にパケット識別を行う回路の小型化が可能となる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【図１】
2004068804.tif 000003
【図２】
2004068804.tif 000004
【図３】
2004068804.tif 000005
【図４】
2004068804.tif 000006
【図５】
2004068804.tif 000007
【図６】
2004068804.tif 000008
【図７】
2004068804.tif 000009
【図８】
2004068804.tif 000010
【図９】
2004068804.tif 000011
【図１０】
2004068804.tif 000012
【図１１】
2004068804.tif 000013
【図１２】
2004068804.tif 000014
【図１３】
2004068804.tif 000015
【図１４】
2004068804.tif 000016
【図１５】
2004068804.tif 000017
【図１６】
2004068804.tif 000018
【図１７】
2004068804.tif 000019
【図１８】
2004068804.tif 000020
【図１９】
2004068804.tif 000021
【図２０】
2004068804.tif 000022
【図２１】
2004068804.tif 000023
【国際調査報告】
2004068804.tif 000024
2004068804.tif 000025