(57)【要約】【課題】  パケット転送と高度な分析とを両立させることが可能なパケット処理システムを提供する。【解決手段】  パケット識別部は受信したパケットを解析して識別し、適切なパケット処理手段へパケットを渡す。パケット処理部２は受取ったパケットをコピーして高速性を要求される処理と、柔軟性を要求される処理とに同時に振り分け、処理連携を調停するとともに、ネットワークの計測結果をパケット処理方法に動的に反映させる。計測情報記憶手段３は高速パケット処理手段２５−１〜２５−Ｎあるいは柔軟パケット処理手段２６−１〜２６−Ｎによって計測されたネットワークに関する計測情報を記憶し、必要に応じて記憶した計測結果を参照可能とする。【選択図】      図２
2006279625.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアを用いて複数のアドレス空間を実現し、それらアドレス空間の間でデータの受け渡しを行い、複数のアドレス空間内で同時にパケットの処理が可能なパケット処理装置であって、
前記複数のアドレス空間のいずれか一つを用いて前記パケットの処理を行う第１のパケット処理手段と、他のアドレス空間を用いて前記第１のパケット処理手段よりも詳細なパケットの処理を行う第２のパケット処理手段と、前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理が必要と認められたパケットに対して当該パケットをコピーして前記第１のパケット処理手段と前記第２のパケット処理手段とに渡して前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理を並列に実行させる処理系選択手段とを有し、
前記第１のパケット処理手段が前記第２のパケット処理手段よりも高速に処理を行うことを特徴とするパケット処理装置。
【請求項２】
ハードウェアを用いて実現されるアドレス空間であるカーネル空間及びユーザ空間の間でデータの受け渡しを行い、前記カーネル空間及び前記ユーザ空間内で同時にパケットの処理が可能なパケット処理装置であって、
前記カーネル空間内で前記パケットの処理を行う第１のパケット処理手段と、前記ユーザ空間内で前記パケットの処理を行う第２のパケット処理手段と、前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理が必要と認められたパケットに対して当該パケットを前記カーネル空間から前記ユーザ空間へとコピーして前記第１のパケット処理手段と前記第２のパケット処理手段とに渡して前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理を並列に実行させる処理系選択手段とを有し、
前記第１のパケット処理手段が前記第２のパケット処理手段よりも高速に処理を行うことを特徴とするパケット処理装置。
【請求項３】
受信したパケットが予め登録された情報に一致するかを識別しかつその識別結果に基づいて当該パケットの処理を前記第１のパケット処理手段及び前記第２のパケット処理手段のうちの少なくともいずれで行うかを決定するパケット識別手段を含むことを特徴とする請求項１または請求項２記載のパケット処理装置。
【請求項４】
前記パケット識別手段は、受信したパケットから予め設定された特定のパケットの判別に必要な情報を抽出するパターンマッチ用データ抽出手段と、前記特定のパケットを判別するために事前登録された情報を管理するパターンマッチ情報記憶手段と、前記パターンマッチ用データ抽出手段で抽出した情報と前記パターンマッチ情報記憶手段に登録されている情報とが一致するかを判定するパケット判別手段と、事前登録されたパケットに対する処理内容を管理するパケット処理情報記憶手段と、前記パケット判別手段で一致すると判定されたパケットに対して前記第１のパケット処理手段及び前記第２のパケット処理手段のうちの少なくともいずれで処理するかを示す処理内容を前記パケット処理情報管理手段の情報を基に決定するパケット処理選択手段とを含むことを特徴とする請求項３記載のパケット処理装置。
【請求項５】
前記第１のパケット処理手段及び前記第２のパケット処理手段各々は、受信したパケットからパケット処理に必要なデータのみを受取ってパケット処理を行いかつそのパケット処理の結果に基づいて前記パターンマッチ情報記憶手段の記憶内容と前記パケット処理情報記憶手段の記憶内容とを動的に変更することを特徴とする請求項４記載のパケット処理装置。
【請求項６】
受信したパケットを前記パケット処理選択手段によって選択された前記第１のパケット処理手段に対して振り分けかつ選択された前記第１のパケット処理手段毎に処理状態を管理する第１のパケット処理ハンドル手段と、
受信したパケットを前記パケット処理選択手段によって選択された前記第２のパケット処理手段に対して振り分けかつ選択された前記第２のパケット処理手段毎に処理状態を管理する第２のパケット処理ハンドル手段とを含み、
前記カーネル空間と前記ユーザ空間との間において前記パケットのデータ受け渡しを行うことなく、前記第１のパケット処理手段が前記第１のパケット処理ハンドル手段の管理の下で前記カーネル空間内のパケットを用いて動作し、前記第２のパケット処理手段が前記第２のパケット処理ハンドル手段の管理の下で前記ユーザ空間内の前記パケットのコピーを用いて動作することを特徴とする請求項４または請求項５記載のパケット処理装置。
【請求項７】
前記第１のパケット処理ハンドル手段は、前記第１パケット処理手段の振り分けに際して前記受信したパケットから必要なデータのみを前記第１のパケット処理手段に渡して処理を行わせ、
前記第２のパケット処理ハンドル手段は、前記第２のパケット処理手段の振り分けに際して前記受信したパケットから必要なデータのみを前記第２のパケット処理手段に渡して処理を行わせることを特徴とする請求項６記載のパケット処理装置。
【請求項８】
前記処理系選択手段は、受信したパケットから必要なデータのみを前記第１のパケット処理ハンドル手段及び前記第２のパケット処理ハンドル手段各々を通して前記第１のパケット処理手段及び前記第２のパケット処理手段に渡し、前記第１のパケット処理ハンドル手段及び前記第２のパケット処理ハンドル手段各々が処理順序を制御して前記第１のパケット処理手段及び前記第２のパケット処理手段に前記パケット処理を行わせることを特徴とする請求項６または請求項７記載のパケット処理装置。
【請求項９】
前記第１のパケット処理ハンドル手段及び前記第２のパケット処理ハンドル手段各々は、受信したパケットの全ての処理の完了及び受信したパケットの転送を待機しなければならない処理の全ての完了の少なくともいずれかに応じて当該パケットの処理の完了を前記処理系選択手段に報告することを特徴とする請求項６から請求項８のいずれか記載のパケット処理装置。
【請求項１０】
受信したパケットに対する前記第１のパケット処理手段の処理の進捗状態及び前記第２のパケット処理手段の処理の進捗状態を管理する処理進捗管理手段を含み、
前記処理系選択手段は、前記第１のパケット処理ハンドル手段及び前記第２のパケット処理ハンドル手段各々からの報告を基に前記処理進捗管理手段の前記進捗状態の更新を行うことを特徴とする請求項９記載のパケット処理装置。
【請求項１１】
前記処理系選択手段は、前記パケットの処理の完了が報告された時に前記処理進捗管理手段の前記進捗状態を転送可能とすることを特徴とする請求項１０記載のパケット処理装置。
【請求項１２】
前記第１のパケット処理手段及び前記第２パケット処理手段のうちの少なくともいずれか一方によって計測したネットワークに関する計測情報を記憶しかつ記憶した計測結果を前記第１のパケット処理手段及び前記第２パケット処理手段と外部とに対して参照可能とする計測情報記憶手段を含むことを特徴とする請求項１から請求項１１のいずれか記載のパケット処理装置。
【請求項１３】
前記第１のパケット処理手段及び前記第２のパケット処理手段のうちの少なくともいずれか一つに対する追加と変更と削除とを管理しかつ前記パケット処理に必要な情報を管理するとともに、少なくとも前記第１のパケット処理手段と前記第２のパケット処理手段との連携が成立可能な設定を行う処理モジュール管理手段を含むことを特徴とする請求項１から請求項１２のいずれか記載のパケット処理装置。
【請求項１４】
前記処理モジュール管理手段によって新規に自装置へ導入される前記第１のパケット処理手段及び前記第２のパケット処理手段のうちの少なくともいずれかを格納しておく処理モジュール格納手段を含むことを特徴とする請求項１３記載のパケット処理装置。
【請求項１５】
受信したパケットからパケット生成に必要なデータのみを受取って任意のパケットを生成して送信するパケット生成処理手段と、
前記受信したパケットを前記パケット処理選択手段によって選択された前記パケット生成処理手段に対して振り分けて処理を行うパケット生成処理ハンドル手段とを含むことを特徴とする請求項４から請求項１４のいずれか記載のパケット処理装置。
【請求項１６】
前記パケット生成処理手段は、受信したパケットから前記パケット生成に必要なデータのみを受取って前記任意のパケットを生成しかつそのパケット生成の結果に基づいて前記パターンマッチ情報記憶手段の記憶内容と前記パケット処理情報記憶手段の記憶内容とを動的に変更することを特徴とする請求項１５記載のパケット処理装置。
【請求項１７】
前記パケット生成処理ハンドル手段は、前記選択されたパケット生成処理手段毎に処理状態を管理しかつ前記受信したパケットの転送を待機させなければならない処理が全て完了した時に前記パケット生成の完了を前記処理系選択手段に報告することを特徴とする請求項１５または請求項１６記載のパケット処理装置。
【請求項１８】
ハードウェアを用いて複数のアドレス空間を実現し、それらアドレス空間の間でデータの受け渡しを行い、複数のアドレス空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法であって、
前記パケット処理装置が、前記複数のアドレス空間のいずれか一つを用いて前記パケットの処理を行う第１のパケット処理と、他のアドレス空間を用いて前記第１のパケット処理よりも詳細なパケットの処理を行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットをコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行し、
前記第１のパケット処理が前記第２のパケット処理よりも高速に処理されることを特徴とするパケット処理方法。
【請求項１９】
ハードウェアを用いて実現されるアドレス空間であるカーネル空間及びユーザ空間の間でデータの受け渡しを行い、前記カーネル空間及び前記ユーザ空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法であって、
前記パケット処理装置が、前記カーネル空間内で前記パケットの処理を行う第１のパケット処理と、前記ユーザ空間内で前記パケットの処理を行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットを前記カーネル空間から前記ユーザ空間へとコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行し、
前記第１のパケット処理が前記第２のパケット処理よりも高速に処理されることを特徴とするパケット処理方法。
【請求項２０】
前記パケット処理装置が、受信したパケットが予め登録された情報に一致するかを識別しかつその識別結果に基づいて当該パケットの処理を前記第１のパケット処理及び前記第２のパケット処理のうちの少なくともいずれで行うかを決定するパケット識別処理を実行することを特徴とする請求項１８または請求項１９記載のパケット処理方法。
【請求項２１】
前記パケット識別処理は、受信したパケットから予め設定された特定のパケットの判別に必要な情報を抽出するパターンマッチ用データ抽出処理と、前記特定のパケットを判別するために事前登録された情報をパターンマッチ情報記憶手段に記憶して管理する処理と、前記パターンマッチ用データ抽出処理で抽出した情報と前記パターンマッチ情報記憶手段に登録されている情報とが一致するかを判定するパケット判別処理と、事前登録されたパケットに対する処理内容をパケット処理情報記憶手段に記憶して管理する処理と、前記パケット判別処理で一致すると判定されたパケットに対して前記第１のパケット処理及び前記第２のパケット処理のうちの少なくともいずれで処理するかを示す処理内容を前記パケット処理情報管理手段の情報を基に決定するパケット処理選択処理とを含むことを特徴とする請求項２０記載のパケット処理方法。
【請求項２２】
前記第１のパケット処理及び前記第２のパケット処理各々は、受信したパケットからパケット処理に必要なデータのみを受取ってパケット処理を行いかつそのパケット処理の結果に基づいて前記パターンマッチ情報記憶手段の記憶内容と前記パケット処理情報記憶手段の記憶内容とを動的に変更することを特徴とする請求項２１記載のパケット処理方法。
【請求項２３】
前記パケット処理装置が、受信したパケットを前記パケット処理選択処理によって選択された前記第１のパケット処理に対して振り分けかつ選択された前記第１のパケット処理毎に処理状態を管理する第１のパケット処理ハンドル処理と、受信したパケットを前記パケット処理選択処理によって選択された前記第２のパケット処理に対して振り分けかつ選択された前記第２のパケット処理毎に処理状態を管理する第２のパケット処理ハンドル処理とを実行し、
前記カーネル空間と前記ユーザ空間との間において前記パケットのデータ受け渡しを行うことなく、前記第１のパケット処理が前記第１のパケット処理ハンドル処理の管理の下で前記カーネル空間内のパケットを用いて動作し、前記第２のパケット処理が前記第２のパケット処理ハンドル処理の管理の下で前記ユーザ空間内の前記パケットのコピーを用いて動作することを特徴とする請求項２１または請求項２２記載のパケット処理方法。
【請求項２４】
前記第１のパケット処理ハンドル処理は、前記第１パケット処理段の振り分けに際して前記受信したパケットから必要なデータのみを前記第１のパケット処理に渡して処理を行わせ、
前記第２のパケット処理ハンドル処理は、前記第２のパケット処理の振り分けに際して前記受信したパケットから必要なデータのみを前記第２のパケット処理に渡して処理を行わせることを特徴とする請求項２３記載のパケット処理方法。
【請求項２５】
前記処理系選択処理は、受信したパケットから必要なデータのみを前記第１のパケット処理ハンドル処理及び前記第２のパケット処理ハンドル処理各々を通して前記第１のパケット処理及び前記第２のパケット処理に渡し、前記第１のパケット処理ハンドル処理及び前記第２のパケット処理ハンドル処理各々が処理順序を制御して前記第１のパケット処理及び前記第２のパケット処理に前記パケット処理を行わせることを特徴とする請求項２３または請求項２４記載のパケット処理方法。
【請求項２６】
前記第１のパケット処理ハンドル処理及び前記第２のパケット処理ハンドル処理各々は、受信したパケットの全ての処理の完了及び受信したパケットの転送を待機しなければならない処理の全ての完了の少なくともいずれかに応じて当該パケットの処理の完了を前記処理系選択処理に報告することを特徴とする請求項２３から請求項２５のいずれか記載のパケット処理方法。
【請求項２７】
前記パケット処理装置が、受信したパケットに対する前記第１のパケット処理の進捗状態及び前記第２のパケット処理の進捗状態を処理進捗管理手段に記憶して管理する処理を実行し、
前記処理系選択処理にて、前記第１のパケット処理ハンドル処理及び前記第２のパケット処理ハンドル処理各々からの報告を基に前記処理進捗管理手段の前記進捗状態の更新を行うことを特徴とする請求項２６記載のパケット処理方法。
【請求項２８】
前記処理系選択処理は、前記パケットの処理の完了が報告された時に前記処理進捗管理手段の前記進捗状態を転送可能とすることを特徴とする請求項２７記載のパケット処理方法。
【請求項２９】
前記第１のパケット処理及び前記第２パケット処理手段のうちの少なくともいずれか一方によって計測したネットワークに関する計測情報を計測情報記憶手段に記憶し、前記計測情報記憶手段に記憶した計測結果を前記第１のパケット処理及び前記第２パケット処理と外部とに対して参照可能とすることを特徴とする請求項１８から請求項２８のいずれか記載のパケット処理方法。
【請求項３０】
前記パケット処理装置が、前記第１のパケット処理のモジュール及び前記第２のパケット処理のモジュールのうちの少なくともいずれか一つのモジュールに対する追加と変更と削除とを管理しかつ前記パケット処理に必要な情報を管理するとともに、少なくとも前記第１のパケット処理と前記第２のパケット処理との連携が成立可能な設定を行う処理モジュール管理処理を実行することを特徴とする請求項１８から請求項２９のいずれか記載のパケット処理方法。
【請求項３１】
前記処理モジュール管理処理によって新規に自装置へ導入される前記第１のパケット処理のモジュール及び前記第２のパケット処理のモジュールのうちの少なくともいずれかを処理モジュール格納手段に格納しておくことを特徴とする請求項３０記載のパケット処理方法。
【請求項３２】
前記パケット処理装置が、受信したパケットからパケット生成に必要なデータのみを受取って任意のパケットを生成して送信するパケット生成処理と、前記受信したパケットを前記パケット処理選択処理によって選択された前記パケット生成処理に対して振り分けて処理を行うパケット生成処理ハンドル処理とを実行することを特徴とする請求項２１から請求項３１のいずれか記載のパケット処理方法。
【請求項３３】
前記パケット生成処理は、受信したパケットから前記パケット生成に必要なデータのみを受取って前記任意のパケットを生成しかつそのパケット生成の結果に基づいて前記パターンマッチ情報記憶手段の記憶内容と前記パケット処理情報記憶手段の記憶内容とを動的に変更することを特徴とする請求項３２記載のパケット処理方法。
【請求項３４】
前記パケット生成処理ハンドル処理は、前記選択されたパケット生成処理毎に処理状態を管理しかつ前記受信したパケットの転送を待機させなければならない処理が全て完了した時に前記パケット生成の完了を前記処理系選択処理に報告することを特徴とする請求項３２または請求項３３記載のパケット処理方法。
【請求項３５】
ハードウェアを用いて複数のアドレス空間を実現し、それらアドレス空間の間でデータの受け渡しを行い、複数のアドレス空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法のプログラムであって、コンピュータに、前記複数のアドレス空間のいずれか一つを用いて前記パケットの処理を行う第１のパケット処理と、他のアドレス空間を用いて前記第１のパケット処理よりも詳細なパケットの処理を前記第１のパケット処理よりも低速に行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットをコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行させるためのプログラム。
【請求項３６】
ハードウェアを用いて実現されるアドレス空間であるカーネル空間及びユーザ空間の間でデータの受け渡しを行い、前記カーネル空間及び前記ユーザ空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法のプログラムであって、コンピュータに、前記カーネル空間内で前記パケットの処理を行う第１のパケット処理と、前記ユーザ空間内で前記パケットの処理を前記第１のパケット処理よりも低速に行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットを前記カーネル空間から前記ユーザ空間へとコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパケット処理装置及びそれらに用いるパケット処理方法並びにそのプログラムに関し、特に受信したパケットを複数のパケット処理モジュールに振り分けて並列に処理し、特定の経路に振り分けることができるパケット処理装置に関する。
【背景技術】
【０００２】
ルータに代表されるパケット処理装置においては、到着したパケットの内容、特にヘッダの内容を解析し、その解析結果に応じた処理を行い、そのパケットを必要ならば次の機器へと転送している。
【０００３】
このようなパケット内容の解析自体としては様々な処理について行われているが、複雑な解析を行う機器の一つに、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）を実現するためのトラフィックエンジニアリング機能を搭載した機器群、例えばフローベースルータがある。これはパケットの解析結果に応じて、通過するパケットの優先度クラス分け、遮蔽、帯域制限、方路の変更等を行う装置である（例えば、非特許文献１参照）。
【０００４】
このような装置においては、近年、重要となりつつある要求の一つとして、特定のアプリケーションのためのパケット処理への対応がある。こうした処理では、アプリケーションは流行に応じて変化し、しかもＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）とウェブ等、同時に複数のアプリケーションへの対応が求められることが多い。したがって、要求に応じて処理を追加削除し、またその時点で必要とされる複数の処理を同時に行う機構が必要となる。
【０００５】
パケットの処理は、従来、転送等の汎用性のある処理のみを行う場合にＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のカーネル空間内で処理し、また特定アプリケーション向けの処理が要求される場合にユーザ空間内で処理するのが一般的である。例えば、ＢＳＤ（Ｂｅｒｋｅｌｅｙ  Ｓｏｆｔｗａｒｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ）系のＯＳでは、カーネル空間内でＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコルスタックを全て処理している（例えば、非特許文献２参照）。パーソナルコンピュータ上で動作する他の市販のＯＳ［例えば、Ｗｉｎｄｏｗｓ（登録商標）］やフリーのＯＳ［例えば、Ｌｉｎｕｘ（登録商標）］も、このＢＳＤ系のＯＳと同様である。
【０００６】
また、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を処理するｓｑｕｉｄ（キャッシュ機能付きプロキシサーバソフト）はユーザ空間で動作する。
【０００７】
ここで、カーネル空間とは、実メモリに対応したアドレスを持つ空間である。また、ユーザ空間とは、ＣＰＵ（中央処理装置）内のＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）を利用して実メモリのアドレスと対応付けられた仮想的なメモリアドレスを持つ空間（メモリの実アドレスと、プログラムが認識するアドレスとが一致する、ＯＳの階層を形成する空間）である。このように、ＭＭＵを用いてアドレス空間を複数構築することで、仮想アドレス内のプログラムの実行結果が他のプログラムのメモリ空間に書込まれることをハードウェア的に防止し、あるプログラムが他のプログラムに影響を及ぼさないようにする、というセキュリティ上の要請を実現している。
【０００８】
カーネル空間とユーザ空間との間でのデータの受け渡しは、一般に、多大なオーバヘッドが発生する。ＭＭＵによって分離されているメモリ間で、セキュリティを保つために必要十分なデータのみをコピーによって受け渡すためである。
【０００９】
そこで、従来のパケット処理では、カーネル空間内の処理とユーザ空間内での処理とを順次実行することで、受け渡しのオーバヘッドを最低限にしてきている。例えば、カーネル空間でのＴＣＰ／ＩＰの処理が終わったら、ユーザ空間でのｓｑｕｉｄの処理を行い、ｓｑｕｉｄの処理が終わったら、ＴＣＰ／ＩＰの処理を行って次のノードへと転送している。
【００１０】
【特許文献１】特開２００１−６９１６６号公報
【特許文献２】特開２００３−１８８９３６号公報
【非特許文献１】Ｃａｓｐｉａｎ  Ｎｅｔｗｏｒｋｓ社著、“Ｆｌｏｗ−Ｓｔａｔｅ  Ｒｏｕｔｉｎｇ：Ｒａｔｉｏｎａｌｅ  ａｎｄ  Ｂｅｎｅｆｉｔｓ”＜ＵＲＬ  ｈｔｔｐ：／／ｗｗｗ．ｃａｓｐｉａｎｎｅｔｗｏｒｋｓ．ｃｏｍ／ｆｉｌｅｓ／Ａｐｅｉｒｏ＿Ｆｌｏｗ＿Ｓｔａｔｅ．ｐｄｆ＞
【非特許文献２】マーシャル・カーク  マキュージック，マイケル  カレルズ，キース  ボスティック，ジョン  クォーターマン著，砂原  秀樹，七丈  直弘翻訳、“４．４ＢＳＤの設計と実装  第１３章ネットワークプロトコル”（ｐｐ．４８７〜５４１）（アスキー刊、２００３年１０月）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
アプリケーションを意識したパケットの分析及び転送を行うためには、従来の逐次処理では必ずしも十分な性能を得ることができない。カーネル空間内で行うべき処理、ユーザ空間内で行うべき処理がアプリケーションの増加に伴って各々多数必要となることが多く、またそれらの処理は必ずしも全てが終了しないと次のノードへとパケットを転送できないわけではないためである。例えば、パケットの統計処理を行うモジュールの場合、処理完了前に次のノードへとパケットを転送してしまっても、処理を正しく行うことは可能である。これを従来のように逐次処理していると、低速な統計処理が処理全体をブロックしてしまい、パケットの転送性能を低下させるため、パケットの転送性能が低下しない方法を必要とする。
【００１２】
ここでは最も有名な例として、カーネル空間とユーザ空間という用語を用いて従来技術の問題点を説明しているが、この問題は、一般に、ハードウェアの機能を使って複数のアドレス空間を実現しており、それら空間の間でのデータの受け渡しに多大なオーバヘッドが生じるアーキテクチャを持つ装置において、複数の空間内で同時にパケットを処理する場合に常に発生する。
【００１３】
以上述べたのは、アプリケーションに対応したパケット処理を行う上での、異なるアドレス空間の間で逐次的に処理することの問題であるが、こうしたアプリケーション対応処理では、処理機能の変更を柔軟に行えるようにすることもまた、従来にも増して重要となる。なぜならば、アプリケーションが今後、さらに増加すると見込まれる。これに対応したパケットの識別や処理を迅速に実現する必要があるためである。
【００１４】
また、従来のパケット処理装置では、ネットワーク計測処理にネットワークの変化を検知するための閾値情報と、その値を超えた時のパケット処理制御とが、外部から予め静的に設定されているため、ネットワークの状況に適応したパケット処理制御に柔軟性がないという問題がある。
【００１５】
さらに、従来のパケット処理装置では、新規に追加したパケット処理機能と、装置の既存機能との動作が容易に協調することができる構造になっていないため、パケット処理機能の動的な変更を行うことができないという問題がある。
【００１６】
そこで、本発明の目的は上記の問題点を解消し、パケット転送と高度な分析とを両立させることができるパケット処理装置及びそれらに用いるパケット処理方法並びにそのプログラムを提供することにある。
【００１７】
本発明の他の目的は、ネットワークの状況に適応して、柔軟にパケット処理を実行することができるパケット処理装置及びそれらに用いるパケット処理方法並びにそのプログラムを提供することにある。
【００１８】
本発明の別の目的は、パケット処理機能の追加を動的かつ迅速に行うことができるパケット処理装置及びそれらに用いるパケット処理方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本発明によるパケット処理装置は、ハードウェアを用いて複数のアドレス空間を実現し、それらアドレス空間の間でデータの受け渡しを行い、複数のアドレス空間内で同時にパケットの処理が可能なパケット処理装置であって、
前記複数のアドレス空間のいずれか一つを用いて前記パケットの処理を行う第１のパケット処理手段と、他のアドレス空間を用いて前記第１のパケット処理手段よりも詳細なパケットの処理を行う第２のパケット処理手段と、前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理が必要と認められたパケットに対して当該パケットをコピーして前記第１のパケット処理手段と前記第２のパケット処理手段とに渡して前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理を並列に実行させる処理系選択手段とを備え、
前記第１のパケット処理手段が前記第２のパケット処理手段よりも高速に処理を行っている。
【００２０】
本発明による他のパケット処理装置は、ハードウェアを用いて実現されるアドレス空間であるカーネル空間及びユーザ空間の間でデータの受け渡しを行い、前記カーネル空間及び前記ユーザ空間内で同時にパケットの処理が可能なパケット処理装置であって、
前記カーネル空間内で前記パケットの処理を行う第１のパケット処理手段と、前記ユーザ空間内で前記パケットの処理を行う第２のパケット処理手段と、前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理が必要と認められたパケットに対して当該パケットを前記カーネル空間から前記ユーザ空間へとコピーして前記第１のパケット処理手段と前記第２のパケット処理手段とに渡して前記第１のパケット処理手段及び前記第２のパケット処理手段各々の処理を並列に実行させる処理系選択手段とを備え、
前記第１のパケット処理手段が前記第２のパケット処理手段よりも高速に処理を行っている。
【００２１】
本発明による別のパケット処理装置は、上記の構成において、前記第１のパケット処理手段及び前記第２のパケット処理手段各々が、受信したパケットからパケット処理に必要なデータのみを受取ってパケット処理を行いかつそのパケット処理の結果に基づいて前記パターンマッチ情報記憶手段の記憶内容と前記パケット処理情報記憶手段の記憶内容とを動的に変更している。
【００２２】
本発明によるパケット処理方法は、ハードウェアを用いて複数のアドレス空間を実現し、それらアドレス空間の間でデータの受け渡しを行い、複数のアドレス空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法であって、
前記パケット処理装置が、前記複数のアドレス空間のいずれか一つを用いて前記パケットの処理を行う第１のパケット処理と、他のアドレス空間を用いて前記第１のパケット処理よりも詳細なパケットの処理を行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットをコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行し、
前記第１のパケット処理が前記第２のパケット処理よりも高速に処理されている。
【００２３】
本発明による他のパケット処理方法は、ハードウェアを用いて実現されるアドレス空間であるカーネル空間及びユーザ空間の間でデータの受け渡しを行い、前記カーネル空間及び前記ユーザ空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法であって、
前記パケット処理装置が、前記カーネル空間内で前記パケットの処理を行う第１のパケット処理と、前記ユーザ空間内で前記パケットの処理を行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットを前記カーネル空間から前記ユーザ空間へとコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行し、
前記第１のパケット処理が前記第２のパケット処理よりも高速に処理されている。
【００２４】
本発明による別のパケット処理方法は、上記の動作のほかに、前記第１のパケット処理及び前記第２のパケット処理各々が、受信したパケットからパケット処理に必要なデータのみを受取ってパケット処理を行いかつそのパケット処理の結果に基づいて前記パターンマッチ情報記憶手段の記憶内容と前記パケット処理情報記憶手段の記憶内容とを動的に変更している。
【００２５】
本発明によるパケット処理方法のプログラムは、ハードウェアを用いて複数のアドレス空間を実現し、それらアドレス空間の間でデータの受け渡しを行い、複数のアドレス空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法のプログラムであって、コンピュータに、前記複数のアドレス空間のいずれか一つを用いて前記パケットの処理を行う第１のパケット処理と、他のアドレス空間を用いて前記第１のパケット処理よりも詳細なパケットの処理を前記第１のパケット処理よりも低速に行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットをコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行させている。
【００２６】
本発明による他のパケット処理方法のプログラムは、ハードウェアを用いて実現されるアドレス空間であるカーネル空間及びユーザ空間の間でデータの受け渡しを行い、前記カーネル空間及び前記ユーザ空間内で同時にパケットの処理が可能なパケット処理装置に用いられるパケット処理方法のプログラムであって、コンピュータに、前記カーネル空間内で前記パケットの処理を行う第１のパケット処理と、前記ユーザ空間内で前記パケットの処理を前記第１のパケット処理よりも低速に行う第２のパケット処理と、前記第１のパケット処理及び前記第２のパケット処理各々の処理が必要と認められたパケットに対して当該パケットを前記カーネル空間から前記ユーザ空間へとコピーして前記第１のパケット処理と前記第２のパケット処理とに渡して前記第１のパケット処理及び前記第２のパケット処理各々の処理を並列に実行させる処理系選択処理とを実行させている。
【００２７】
すなわち、本発明のパケット処理装置は、各パケットに対して多角的な分析を行い、処理の高速性と柔軟性とを両立させるために、パケットをコピーして高速な処理（カーネル空間内の処理）と柔軟な処理（ユーザ空間内の処理）とにそれぞれ同時に渡し、それらの処理を並列に行うことによって、低速な柔軟処理が転送の性能を低下させることなく、次のノードへと転送することが可能となる。
【００２８】
本発明の第１のパケット処理装置は、パケット識別部と、パケット処理部と、計測情報記憶手段とを備えている。パケット識別部は、受信したパケットからパケットの判別に必要な情報を抽出するパターンマッチ用データ抽出手段と、特定のパケットを判別するために事前登録された情報を管理するパターンマッチ情報記憶手段と、パターンマッチ用データ抽出手段で抽出した情報とパターンマッチ情報記憶手段に登録されている情報とが一致するかを判定するパケット判別手段と、特定のパケットに対してどのようなパケット処理を施すかを事前登録した情報を管理するパケット処理情報記憶手段と、パターンマッチ用データ抽出手段で抽出した情報とパターンマッチ情報記憶手段に登録されている情報とが一致するとパケット判別手段で判定されたパケットに対してどのようなパケット処理を施すかをパケット処理情報管理手段を参照して決定するパケット処理選択手段とを有している。
【００２９】
パケット処理部は、カーネル空間に配備されて互いに独立あるいは従属、または同等の複数の機能ブロックからなり、受信したパケットからパケット処理に必要なデータのみを受取ってパケット処理を行いかつそのパケット処理の結果を踏まえて必要に応じてパターンマッチ情報記憶手段とパケット処理情報記憶手段とを動的に変更するパケット処理手段（以下、高速パケット処理手段とする）と、
ユーザ空間に配備されて互いに独立あるいは従属、または同等の複数の機能ブロックからなり、受信したパケットからパケット処理に必要なデータのみを受取って要求されるパケット処理を行いかつそのパケット処理の結果を踏まえて必要に応じてパターンマッチ情報記憶手段とパケット処理情報記憶手段とを動的に変更するパケット処理手段（以下、柔軟パケット処理手段とする）と、
受信したパケットについて高速パケット処理手段に渡したパケット及び柔軟パケット処理手段に渡したパケットの処理の進捗を管理する処理進捗管理手段と、受信したパケットに対してパケット処理選択手段によって選択された一つあるいは複数の高速パケット処理手段に対して振り分け、受信したパケットから必要なデータのみ高速パケット処理手段に渡して処理を行うことと、選択された一つあるいは複数の高速パケット処理手段毎に処理状態を管理し、受信したパケットの転送を待機させなければならない処理が全て完了したら処理系選択手段に報告するパケット処理ハンドル手段（以下、高速パケット処理ハンドル手段とする）と、
受信したパケットに対してパケット処理選択手段によって選択された一つあるいは複数の柔軟パケット処理手段に対して順番を考慮して振り分け、受信したパケットから必要なデータのみ柔軟パケット処理手段に渡して処理を行うことと、選択された一つあるいは複数の柔軟パケット処理手段毎に処理状態を管理し、受信したパケットの転送を待機させなければならない処理が全て完了したら処理系選択手段に報告するパケット処理ハンドル手段（以下、柔軟パケット処理ハンドル手段とする）と、
パケット処理選択手段によって高速パケット処理手段が選択されていたら、カーネル空間で処理する高速パケット処理ハンドル手段に受信したパケットを渡し、パケット処理選択手段によって柔軟パケット処理手段が選択されていたら、ユーザ空間で処理する柔軟パケット処理ハンドル手段に受信したパケットをコピーして渡し、パケット処理選択手段によって高速パケット処理手段と柔軟パケット処理手段とが選択されていたら、カーネル空間で処理する高速パケット処理ハンドル手段に受信したパケットを渡すとともに、ユーザ空間で処理する柔軟パケット処理ハンドル手段に受信したパケットをコピーして渡すことと、受信したパケットの処理進捗管理手段によって管理されている処理の進捗状況を確認し、受信したパケットが転送できる状態であった場合にパケットを転送する処理系選択手段とを有している。
【００３０】
計測情報記憶手段は、高速パケット処理手段あるいは柔軟パケット処理手段によって計測したネットワークに関する計測情報を記憶し、必要に応じて記憶した計測結果を参照可能としている。
【００３１】
本発明の第１のパケット処理装置では、上記のような構成を採用し、受信したパケットをコピーしてカーネル空間及びユーザ空間の処理を並列して処理すること、またパケット処理結果を踏まえて動的に処理を変更することによって、パケット転送と高度な分析とが両立可能となり、ネットワークの状況に適応して、柔軟にパケット処理が実行可能となる。
【００３２】
また、本発明の第２のパケット処理装置は、上記の本発明の第１のパケット処理装置の構成に加え、パケット処理手段管理部を備えている。このパケット処理手段管理部は、高速パケット処理手段及び柔軟パケット処理手段の追加、変更、及び削除や、処理手段毎に必要な情報を管理し、高速パケット処理ハンドル手段と、柔軟パケット処理ハンドル手段と、処理系選択手段と、パターンマッチ情報記憶手段と、パケット処理情報記憶手段に対して操作した処理手段との協調動作が成立するように自動的に設定を行う処理モジュール管理手段と、処理モジュール管理手段によって新規に装置へ導入される高速パケット処理手段及び柔軟パケット処理手段を格納しておく処理モジュール格納手段とを有している。
【００３３】
本発明の第２のパケット処理装置では、上記のような構成を採用し、新規パケット処理機能の情報を、装置の既存機能に対して自動的に設定を行い、協調動作を成立させることによって、パケット処理機能の新規追加を動的かつ迅速に行うことが可能となる。
【００３４】
さらに、本発明の第３のパケット処理装置は、上記の本発明の第１のパケット処理装置の構成に加え、互いに独立あるいは従属、または同等の複数の機能ブロックからなり、受信したパケットからパケット生成に必要なデータのみを受取って任意のパケットを生成して送信し、パケット生成処理の結果を踏まえて必要に応じてパターンマッチ情報記憶手段とパケット処理情報記憶手段とを動的に変更するパケット生成処理手段と、受信したパケットに対してパケット処理選択手段によって選択された一つあるいは複数のパケット生成処理手段に対して振り分け、受信したパケットから必要なデータのみをパケット生成処理手段に渡して処理を行うことと、選択された一つあるいは複数のパケット生成処理手段毎に処理状態を管理し、受信したパケットの転送を待機させなければならない処理が全て完了したら処理系選択手段に報告するパケット生成処理ハンドル手段とを備えている。
【００３５】
本発明の第３のパケット処理装置では、上記のような構成を採用し、装置から能動的なパケットを送出可能とすることで、ネットワークの状況を詳細な計測や他装置との連携を行うことによって、ネットワークの状況に適応した柔軟なパケット処理が実行可能となる。
【００３６】
上記のように、本発明では、１つのパケットに対してカーネル空間内での高速な処理とユーザ空間内での柔軟な処理との両方を行う場合、カーネル空間で速度が要求される単純な処理を行うと同時に、ユーザ空間に受信したパケットのコピーを渡して時間をかけてでも詳細な解析が要求される柔軟な処理を並列に行うことによって、転送速度の低下を回避し、異なる特徴のパケット処理を連携させて、様々なパケット処理機能が実現可能となるため、多数パケットが該当するパケット処理の転送速度を低下させることなく、かつ少数パケットについて高度なパケット処理を行うことが可能となる。
【００３７】
また、本発明では、ネットワーク計測処理に設定されている閾値情報を超えた場合の処理を、他のネットワーク計測処理の結果や、パケット処理の結果を考慮して、動的にパケット処理の制御を行うため、ネットワークの状況に適応した柔軟なパケット処理が実行可能となる。
【００３８】
さらに、本発明では、新規パケット処理機能の情報を、装置の既存機能との協調動作を自動的に設定し、一連のパケット処理動作を停止させることなく追加することが可能な構造になっているため、パケット処理機能の新規追加を動的かつ迅速に行うことが可能となる。
【発明の効果】
【００３９】
本発明のパケット処理装置は、以下に述べるような構成及び動作とすることで、多数パケットが該当するパケット処理の転送速度を低下させることなく、かつ少数パケットについて高度なパケット処理を行うことができるという効果が得られる。
【００４０】
また、本発明の他のパケット処理装置は、以下に述べるような構成及び動作とすることで、ネットワークの状況に適応した柔軟なパケット処理を実行することができるという効果が得られる。
【００４１】
さらに、本発明の別のパケット処理装置は、以下に述べるような構成及び動作とすることで、パケット処理機能の新規追加を動的かつ迅速に行うことができるという効果が得られる。
【発明を実施するための最良の形態】
【００４２】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例によるパケット処理装置の構成を示すブロック図である。図１において、パケット処理装置１は、パケット識別部３と、パケット処理部２と、計測情報記憶手段１１と、パケット入力インタフェース１２と、パケット出力インタフェース１３とから構成されている。
【００４３】
パケット処理部２は受取ったパケットをコピーし、カーネル空間内で高速に処理されるパケット処理（以下、高速パケット処理とする）と、ユーザ空間内で柔軟かつ詳細に処理される（以下、柔軟パケット処理とする）とに同時に振り分け、処理連携を調停する機能と、ネットワークの計測結果をパケット処理方法に動的に反映させる機能とを有している。
【００４４】
パケット識別部３は受信したパケットを解析して識別し、パケット処理部２内の適切なパケット処理手段へパケットを渡す機能を有している。計測情報記憶手段３は高速パケット処理あるいは柔軟パケット処理によって計測されたネットワークに関する計測情報を記憶し、必要に応じて記憶した計測結果を参照することができる。
【００４５】
尚、以下の説明では、背景技術と同様に、カーネル空間とユーザ空間という用語を用いて説明するが、一般に、ハードウェアの機能を使って複数のアドレス空間を実現し、それらアドレス空間の間でデータの受け渡しを行う装置において、複数のアドレス空間内で同時にパケットを処理する場合にも本発明は適用可能である。
【００４６】
図２は図１のパケット処理部２の構成を示すブロック図である。図２において、パケット処理部２は処理進捗管理手段２１と、処理系選択手段２２と、高速パケット処理ハンドル手段２３と、柔軟パケット処理ハンドル手段２４と、高速パケット処理手段２５−１〜２５−Ｎと、柔軟パケット処理手段２６−１〜２６−Ｎとから構成されている。
【００４７】
処理進捗管理手段２１は各パケットについて、高速パケット処理系、柔軟パケット処理系、各々の処理状態を管理する。処理系選択手段２２はパケット識別部３によって指定されたパケット処理が、高速パケット処理系と柔軟パケット処理系とのどちらで処理が必要であるかを判別し、適切な処理系へ振り分ける。また、処理系選択手段２２は各処理系からパケット処理進捗報告を受取り、処理進捗管理手段２１が管理する進捗状態を更新する。
【００４８】
高速パケット処理ハンドル手段２３は振り分けられたパケットに対して、適切な高速パケット処理手段２５−１〜２５−Ｎに、処理に必要な情報のみを渡して処理を行わせる。また、高速パケット処理ハンドル手段２３は各パケットについて高速パケット処理系の処理状態を管理し、パケットの転送を待機しなければならない処理が完了したら処理系選択手段２２にその旨を報告する。
【００４９】
柔軟パケット処理ハンドル手段２４は振り分けられたパケットに対して、適切な柔軟パケット処理手段２６−１〜２６−Ｎに、処理に必要な情報のみを渡して処理を行わせる。また、柔軟パケット処理ハンドル手段２４は各パケットについて柔軟パケット処理系の処理状態を管理し、パケットの転送を待機しなければならない処理が完了したら処理系選択手段２２にその旨を報告する。
【００５０】
高速パケット処理手段２５−１〜２５−Ｎは、カーネル空間に配備される互いに独立あるいは従属、または同等の機能を持つ単純なパケット処理を行う手段であり、処理に必要なデータのみを受取って適切な処理を行う。柔軟パケット処理手段２６−１〜２６−Ｎは、ユーザ空間に配備される互いに独立あるいは従属、または同等の機能を持つ柔軟なパケット処理を行う手段であり、処理に必要なデータのみを受取って適切な処理を行う。
【００５１】
図３は図１のパケット識別部３の構成を示すブロック図である。図３において、パケット識別部３はパターンマッチ用データ抽出手段３１と、パケット判別手段３２と、パターンマッチ情報記憶手段３３と、パケット処理選択手段３４と、パケット処理情報記憶手段３５とから構成されている。
【００５２】
パターンマッチ用データ抽出手段３１は受信したパケットからパケットの判別に必要な情報を抽出する。パケット判別手段３２は受信したパケットが、パターンマッチ情報記憶手段３３で管理している情報にマッチするかどうかを判別する。パターンマッチ情報記憶手段３３は特定のパケットを判別するための情報を管理する。
【００５３】
パケット処理選択手段３４はパケット処理情報記憶手段３５で管理している情報を参照し、パケット判別手段３２でマッチしたパケットに対して施すパケット処理を選択する。パケット処理情報記憶手段３５はパケット判別手段３２でマッチしたパケットに対して、どのようなパケット処理を施すかを管理する。
【００５４】
ここで、計測情報記憶手段１１は高速パケット処理手段２５−１〜２５−Ｎあるいは柔軟パケット処理手段２６−１〜２６−Ｎによって計測されたネットワークに関する計測情報を記憶し、必要に応じて記憶した計測結果を参照することができる。
【００５５】
図４は図１のパケット識別部３の動作を示すフローチャートであり、図５は図１の処理進捗管理手段２１の動作を示すフローチャートであり、図６は図１の処理系選択手段２２の動作を示すフローチャートであり、図７は図１の処理進捗管理手段２１で管理する処理状態の遷移を示す図である。図８及び図９は図１の高速パケット処理ハンドル手段２３の動作を示すフローチャートであり、図１０及び図１１は図１の柔軟パケット処理ハンドル手段２４の動作を示すフローチャートであり、図１２及び図１３は図１の高速パケット処理手段２５−１〜２５−Ｎ及び柔軟パケット処理手段２６−１〜２６−Ｎの動作を示すフローチャートである。
【００５６】
図１４は図１のパターンマッチ情報記憶手段３３が管理するパターンマッチ情報テーブルを示す図であり、図１５は図１のパケット処理情報記憶手段３５が管理するパケット処理情報テーブルを示す図である。図１６は図１の処理進捗管理手段２１が管理する処理系進捗管理テーブルを示す図であり、図１７は図１の処理系選択手段２２が管理する処理系振り分け情報テーブルを示す図である。図１８は図１の高速パケット処理ハンドル手段２３及び柔軟パケット処理２４が管理する処理進捗管理テーブルを示す図であり、図１９は図１の高速パケット処理ハンドル手段２３及び柔軟パケット処理２４が管理する処理モジュール情報テーブルを示す図である。
【００５７】
これら図１〜図１７を参照して本発明の一実施例によるパケット処理装置１の動作について説明する。尚、本発明の一実施例によるパケット処理装置１の各手段の処理は、図示せぬＣＰＵ（中央処理装置）がメモリに格納されたプログラムを実行することでも実現可能である。
【００５８】
まず、パケット識別部３の動作について説明する。パケット識別部３はパケットを受信すると（図４ステップＳ１）、パターンマッチ用データ抽出手段３１で受信したパケットからパケットを判別するためのパケット識別情報を抽出する（図４ステップＳ２）。ここで、パケット識別情報とは、例えば、送信元／宛先ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスや送信元／宛先ポート番号等のパケットヘッダ情報やペイロードに含まれているパケット識別情報等を想定している。
【００５９】
パケット識別部３はパケット識別情報を抽出されると、パケット判別手段３２にて、受信したパケットから抽出したパケット識別情報と、パターンマッチ情報記憶手段３３に登録されているパケット識別情報とがマッチする条件があるかを検索する（図４ステップＳ３，Ｓ４）。
【００６０】
パターンマッチ情報記憶手段３３が管理するパターンマッチ情報テーブルの一例を図１４に示す。図１４において、パターンマッチ情報テーブルは送信元／宛先ＩＰアドレス、送信元／宛先ポート番号、プロトコル情報が指定された複数のルールを管理している。管理されているルールには、ルールを識別するためのルール識別子が割り当てられており、図１５に示すパケット処理情報テーブルのルール識別子と対応関係にある。パケット判別手段３２は受信パケットに含まれる上記のパラメータの値と、図１４に示すパターンマッチ情報テーブルで管理するルールに指定されているパラメータの値とを比較し、受信パケットがルールにマッチするか否かを判定する。
【００６１】
上記のステップＳ３，Ｓ４の処理において、マッチする条件があるならば、パケット処理選択手段３４はパケット処理情報記憶手段３５に登録されているパケット処理情報を参照し、そのパケット識別情報を基に適当なパケット処理手段を選択する（図４ステップＳ５）。
【００６２】
パケット処理情報記憶手段３５が管理するパケット処理情報テーブルの一例を図１５に示す。図１５において、パケット処理情報テーブルは、図１４に示すパターンマッチ情報テーブルで管理されているルール識別子毎に、ルールにマッチしたパケットが行うパケット処理の情報を管理する。また、パケット処理情報テーブルでは、実施するパケット処理の優先度も同時に管理する。このパケット処理の優先度は、本発明の一実施例によるパケット処理装置１の負荷が高くなり、転送速度に影響を及ぼすような状況の場合に参照される値である。
【００６３】
本発明の一実施例によるパケット処理装置１はその値を参照し、実施する予定であった、あるいは実施中であったパケット処理を低優先のものから順に中止してパケット転送を優先させることによって、処理負荷を低減する。図１５において、特定のパケット処理が指定されているが、そのパケット処理の優先度が指定されていない場合は、必ずそのパケット処理を行うことを示す。
【００６４】
パケット処理選択手段３４はパケット判別手段３２の判定によってマッチしたルールに指定されているパケット処理情報を取得して適切な処理へ割り当て、選択されたパケット処理手段でパケット処理を行うために、パケット処理部２の処理系選択手段２２にパケットを渡す（図４ステップＳ６）。
【００６５】
パケット判別手段３２は上記のステップＳ３，Ｓ４の処理において、マッチする条件がなければ、予め定められたネットワークインタフェースからパケットを送信する（図４ステップＳ７）。
【００６６】
次に、パケット処理部２の動作について説明する。まず、処理進捗管理手段２１及び処理系選択手段２２の動作について説明する。パケット処理部２では上記のステップＳ６の処理によってパケット処理が指定されたパケットをパケット識別部３から受取ると（図５ステップＳ１１）、処理系選択手段２２にて、処理進捗管理手段２１で受取った各パケットについて、高速パケット処理系、柔軟パケット処理系、各々の処理進捗状態を管理する。
【００６７】
ここで、処理進捗状態とは、図７に示すように、「初期状態」（図７のａ１）、「転送待機」（図７のａ２）、「転送可能」（図７のａ４）、「処理なし」（図７のａ３）の４つとする。「初期状態」は処理を行うパケットを受取る前の状態を表す。「転送待機」はパケットを受取り、各パケット処理系に渡して処理を開始し、転送を待機している状態を表す。「転送可能」は各パケット処理系から転送を待機しなければならない処理が完了し、転送が可能であることの通知を受取った状態を表す。「処理なし」は処理を行うパケットを受取ったが、特定の処理系で処理を行う必要がない状態を表す。
【００６８】
処理進捗管理手段２１が管理する処理系進捗管理テーブルの一例を図１６に示す。図１６において、処理系進捗管理テーブルはパケット識別部３から受取った各パケットの処理について、高速パケット処理系、柔軟パケット処理系、各々の処理進捗状態を管理している。処理系進捗管理テーブルは受取ったパケット毎にエントリ番号を割り当て、受取ったパケットと処理進捗状況を対応付けて管理する。この処理系進捗管理テーブルでは「転送可能」、「処理なし」を「１」、「転送待機」、「初期状態」を「０」で表しており、両者の処理系において「１」になった時にはパケット処理が終了したと見なし、パケットが転送される。
【００６９】
また、処理系選択手段２２が管理する処理系振分け情報テーブルの一例を図１７に示す。図１７において、処理系振分け情報テーブルは特定のパケット処理がどちらの処理系に含まれているかを示している。この情報を用いて、処理系選択手段２２は指定されたパケット処理を適切な処理系へと振分けする。
【００７０】
処理系選択手段２２は処理を行うパケットがカーネル空間の高速パケット処理系のパケット処理手段が選択されているかを確認する（図５ステップＳ１２）。このステップＳ１２の処理において、高速パケット処理系のパケット処理手段が選択されている場合、処理系選択手段２２は高速パケット処理ハンドル手段２３にパケットを渡し、処理進捗管理手段２１で管理している処理進捗状態を「初期状態」から「転送待機」に変更する（図５ステップＳ１３，Ｓ１４）。
【００７１】
また、上記のステップＳ１２の処理において、高速パケット処理系のパケット処理手段が選択されていない場合、処理系選択手段２２は処理進捗状態を「初期状態」から「処理なし」に変更する（図５ステップＳ１５）。
【００７２】
続いて、処理系選択手段２２は処理を行うパケットがユーザ空間の柔軟パケット処理系のパケット処理手段が選択されているかを確認する（図５ステップＳ１６）。このステップＳ１６の処理において、柔軟パケット処理系のパケット処理手段が選択されている場合、処理系選択手段２２はカーネル空間からユーザ空間にパケットをコピーして柔軟パケット処理ハンドル手段２４に渡し、処理進捗管理手段２１で管理している処理進捗状態を「初期状態」から「転送待機」に変更する（図５ステップＳ１７，Ｓ１８）。
【００７３】
また、上記のステップＳ１２の処理において、柔軟パケット処理系のパケット処理手段が選択されていない場合、処理系選択手段２２は処理進捗状態を「初期状態」から「処理なし」に変更する（図５ステップＳ１９）。
【００７４】
さらに、処理系選択手段２２は処理進捗状態に変更があるまで待機し（図６ステップＳ２１）、各パケット処理系において、転送を待機しなければならない処理が完了し、完了通知を受信した時に処理進捗状態を「転送待機」から「転送可能」に変更する（図６ステップＳ２２）。
【００７５】
ここで、高速パケット処理系及び柔軟パケット処理系各々の処理進捗状態が両者とも「転送可能」あるいは「処理なし」であれば、パケットを特定のネットワークインタフェースから送信し、それ以外であれば、ステップＳ２１に戻る（図６ステップＳ２３，Ｓ２４）。
【００７６】
尚、ここでは、カーネル空間とユーザ空間とを明記しているため、ユーザ空間に配備する柔軟パケット処理系の一方のみを選択している場合でもパケットのコピーを行うが、これらの空間に拘らなければ、どちらか一方の処理系を選択している場合にはパケットのコピーを行わない。つまり、高速パケット処理系と柔軟パケット処理系との両方を選択している場合にのみ、パケットのコピーを行うこととする。
【００７７】
また、処理系選択手段２２では高速パケット処理手段２５−１〜２５−Ｎ及び柔軟パケット処理手段２６−１〜２６−Ｎへ直接振り分けて処理の進捗を管理する構成ではなく、各処理系の処理ハンドラにパケット処理を委任してから適切なパケット処理手段へ振り分け、進捗の管理を行う構成としている。このような２階層のスケジューリングを適用した理由は、カーネル空間とユーザ空間とを行き来する回数を減らし、処理のオーバヘッドを軽減させるためである。
【００７８】
もし、処理系選択手段２２が柔軟パケット処理手段２６−１〜２６−Ｎへ直接振り分けを行った場合、カーネル空間の処理系選択手段２２はユーザ空間の柔軟パケット処理手段２６−１〜２６−Ｎの進捗管理をしなければならないので、カーネル空間からユーザ空間へとメモリのコピーをする回数が多くなってしまう。
【００７９】
そこで、本実施例では、ユーザ空間の柔軟パケット処理手段２６−１〜２６−Ｎの進捗を、ユーザ空間に配備した柔軟パケット処理ハンドル部２４で管理し、ユーザ空間での処理を取りまとめてカーネル空間の処理系選択手段２２とやり取りすることによって、カーネル空間からユーザ空間へとメモリのコピーをする回数を最小限にすることができ、それによる処理のオーバヘッドを軽減することができる。
【００８０】
次に、高速パケット処理ハンドル手段２３の動作について説明する。まず、高速パケット処理ハンドル手段２３は処理系選択手段２２で振り分けられたパケットを受取ると（図８ステップＳ３１）、受取った各パケットについて、各々のパケット処理の進捗状態を管理する。ここで処理進捗状態とは、「処理完了」、「処理未完了」の２つとする。「処理完了」はパケットの転送を待機しなければならない処理が完了した状態を表す。パケットの転送を待機しなくてもよい処理、及び処理が指定されていない処理についても、処理完了と見なせる。「処理未完了」はパケットの転送を待機しなければならない処理が未完了である状態を表す。
【００８１】
ここで、高速パケット処理ハンドル手段２３が管理する処理進捗管理テーブルの一例を図１８に示す。図１８において、高速パケット処理ハンドル手段２３は処理系選択手段２２から受取った各パケットの処理について、処理進捗管理テーブルにて指定された各々のパケット処理の進捗状態を管理している。この処理進捗管理テーブルでは「処理完了」を「１」、「処理未完了」を「０」で表しており、全ての処理において「１」になった時にパケット処理が終了したと見なし、処理系選択手段２２に高速パケット処理が全て完了したことを通知し、処理進捗管理手段２１で管理している高速パケット処理系の進捗状態を「転送待機」から「転送可能」に変更させる。
【００８２】
また、処理進捗管理テーブルでは、受取ったパケットのエントリ毎に、エントリが登録されてから、または処理を開始してから経過した期間を示すカウンタを同時に管理する。これは、本実施例によるパケット処理装置の負荷が高くなり、転送速度に影響を及ぼすような状況の場合に参照される値である。
【００８３】
本実施例によるパケット処理装置では、この値を参照して、ある一定の処理期間が経過したエントリに関して、該当するパケットの破棄や全パケット処理、あるいは特定のパケット処理のみを中止して転送する等の対処を施すことによって、処理負荷を低減している。このカウンタの値に関しては、例えば、経過した時間や、後続に追加されたエントリの数等を想定しているが、期間の経過を表す値、及びカウンタの役割に代替する手段であれば特に限定されない。
【００８４】
高速パケット処理ハンドル手段２３は上記の処理進捗管理テーブルを参照して、まだ処理を開始していないが、処理が選択されている高速パケット処理手段２５−１〜２５−Ｎがあるかを検出する（図８ステップＳ３２）。その後、高速パケット処理ハンドル手段２３はその高速パケット処理手段２５−１〜２５−Ｎのいずれかに対して処理に必要なデータのみ渡す（図８ステップＳ３３）。
【００８５】
ここで、高速パケット処理ハンドル手段２３が管理する処理モジュール情報テーブルの一例を図１９に示す。図１９において、処理モジュール情報テーブルはパケット処理モジュール毎に、処理に必要なパラメータが何か、パケット転送に対して同期処理であるか、非同期処理であるかを示している。
【００８６】
処理モジュール情報テーブルでは、パケット処理モジュールに必要なパラメータとして、送信元／宛先ＩＰアドレス、送信元／宛先ポート番号、プロトコル情報、ＴｏＳ（Ｔｙｐｅ  ｏｆ  Ｓｅｒｖｉｃｅ）があり、処理を実施するのに必要なパラメータを「１」で表し、またパケットの転送を待機させなければならない同期処理を「１」、パケットの転送を待機させなくてもよい非同期処理を「０」でそれぞれ表している。
【００８７】
高速パケット処理ハンドル手段２３は受取ったパケットに指定された全ての高速パケット処理が処理を開始したかを確認し、指定された全ての高速パケット処理を開始していたならば、パケット処理完了を待ち、指定された全ての高速パケット処理をまだ開始し終えていなければ、ステップＳ３２に戻る（図８ステップＳ３４）。
【００８８】
また、高速パケット処理ハンドル手段２３はパケットの転送を待機させなければならない同期高速パケット処理手段２５−１〜２５−Ｎが選択されているかどうかを確認し（図９ステップＳ４１）、パケットの転送を待機させなければならない同期高速パケット処理手段２５−１〜２５−Ｎが選択されている場合、高速パケット処理手段２５−１〜２５−Ｎから処理完了の通知を受信するまで待機する（図９ステップＳ４２）。
【００８９】
高速パケット処理ハンドル手段２３はパケットの転送を待機させなければならない同期高速パケット処理手段２５−１〜２５−Ｎが選択されていない場合、処理系選択手段２２にパケットの転送が可能であることを通知する（図９ステップＳ４５）。
【００９０】
高速パケット処理ハンドル手段２３は待機している状態で、高速パケット処理手段２５−１〜２５−Ｎから処理完了の通知を受信すると、受信したパケットに指定されていた高速パケット処理が全て完了したかを確認する（図９ステップＳ４３，Ｓ４４）。
【００９１】
高速パケット処理ハンドル手段２３は指定されていた同期高速パケット処理が全て完了していた場合、処理系選択手段２２に高速パケット処理が全て完了したことを通知する（図９ステップＳ４５）。また、高速パケット処理ハンドル手段２３は指定されていた同期高速パケット処理が未完了であれば、ステップＳ４２に戻る。ここで、パケットの転送を待機させなくてもよい非同期に処理を行えるパケット処理に関しては、処理の完了を待たずに次のステップへ進むことができる。
【００９２】
また、本実施例では、高速パケット処理手段２５−１〜２５−Ｎが処理を行う順序を固定にして単純に高速処理を行うが、後述する柔軟パケット処理２６−１〜２６−Ｎのように処理を行う順番を制御することも可能である。
【００９３】
次に、柔軟パケット処理ハンドル手段２４の動作について説明する。まず、柔軟パケット処理ハンドル手段２４は処理系選択手段２２で振り分けられたパケットを受取ると（図１０ステップＳ５１）、受取った各パケットについて、各々のパケット処理の進捗状態を管理する。処理進捗状態の管理方法及び処理進捗管理テーブルについては、上述した高速パケット処理ハンド手段２３で説明した処理進捗状態の管理方法及び処理進捗管理テーブル（図１８参照）と同様であるので、それらの説明については省略する。
【００９４】
柔軟パケット処理ハンドル手段２４は特定のパケットの処理について、全ての処理が終了したら、処理系選択手段２２に柔軟パケット処理が全て完了したことを通知し、処理進捗管理手段２１で管理している柔軟パケット処理系の進捗状態を「転送待機」から「転送可能」に変更させる。
【００９５】
柔軟パケット処理ハンドル手段２４はこの処理進捗管理テーブルを参照して、次のパケット処理が実行可能であるかを確認して、柔軟パケット処理手段２６−１〜２６−Ｎの処理順序の制御を行う（図１０ステップＳ５２）。柔軟パケット処理ハンドル手段２４は次の処理が実行可能である場合、まだ処理を開始していないその柔軟パケット処理手段２６−１〜２６−Ｎを検出する（図１０ステップＳ５４）。柔軟パケット処理ハンドル手段２４は次の処理が実行可能でない場合、次の処理が実行可能であることの通知を受取るまで待機する（図１０ステップＳ５３）。
【００９６】
処理を開始することができるパケット手段を検出した後、柔軟パケット処理ハンドル手段２４は検出した柔軟パケット処理手段２６−１〜２６−Ｎのいずれかに対して処理に必要なデータのみ渡す（図１０ステップＳ５５）。ここで、柔軟パケット処理ハンドル手段２４が管理する処理モジュール情報テーブルは、上述した高速パケット処理ハンドル手段２３が管理する処理モジュール情報テーブル（図１９参照）と同様であるので、その説明については省略する。
【００９７】
柔軟パケット処理ハンドル手段２４は受取ったパケットに指定された全ての柔軟パケット処理が処理を開始したかを確認し、指定された全ての柔軟パケット処理を開始していたならば、パケット処理完了を待ち、指定された全ての柔軟パケット処理をまだ開始し終えていなければ、ステップＳ５２に戻る（図１０ステップＳ５６）。
【００９８】
また、柔軟パケット処理ハンドル手段２４はパケットの転送を待機させなければならない同期柔軟パケット処理手段２６−１〜２６−Ｎが選択されているかどうかを確認する（図１１ステップＳ６１）。柔軟パケット処理ハンドル手段２４はパケットの転送を待機させなければならない同期柔軟パケット処理手段２６−１〜２６−Ｎが選択されている場合、柔軟パケット処理手段２６−１〜２６−Ｎから処理完了の通知を受信するまで待機する（図１１ステップＳ６２）。
【００９９】
柔軟パケット処理ハンドル手段２４はパケットの転送を待機させなければならない同期柔軟パケット処理手段２６−１〜２６−Ｎが選択されていない場合、処理系選択手段２２にパケットの転送が可能であることを通知する（図１１ステップＳ６５）。
【０１００】
柔軟パケット処理ハンドル手段２４は待機している状態で、柔軟パケット処理手段２６−１〜２６−Ｎのいずれかから処理完了の通知を受信すると（図１１ステップＳ６３）、受信したパケットに指定されていた柔軟パケット処理が全て完了したかを確認する（図１１ステップＳ６４）。
【０１０１】
柔軟パケット処理ハンドル手段２４は指定されていた同期柔軟パケット処理が全て完了していた場合、処理系選択手段２２に柔軟パケット処理が全て完了したことを通知する（図１１ステップＳ６５）。柔軟パケット処理ハンドル手段２４は指定されていた同期柔軟パケット処理が未完了であれば、次のパケット処理が実行可能かどうかを確認する（図１１ステップＳ６６）。
【０１０２】
柔軟パケット処理ハンドル手段２４は次のパケット処理を実行可能であれば、次の処理が実行可能であることを通知し（図１１ステップＳ６７）、ステップＳ６２に戻る。柔軟パケット処理ハンドル手段２４は次のパケット処理を実行可能でなければ、ステップＳ６２に戻る。
【０１０３】
ここで、パケットの転送を待機させなくてもよい非同期に処理を行えるパケット処理に関しては、処理の完了を待たずに次のステップへ進むことができる。また、本実施例では、柔軟パケット処理手段２６−１〜２６−Ｎが処理を行う順序を制御して詳細を解析できる柔軟処理を行うが、上述した高速パケット処理２５−１〜２５−Ｎのように処理を行う順番を固定にすることも可能である。
【０１０４】
次に、高速パケット処理手段２５−１〜２５−Ｎ及び柔軟パケット処理手段２６−１〜２６−Ｎの動作について説明する。本実施例では、高速パケット処理手段２５−１〜２５−Ｎ及び柔軟パケット処理手段２６−１〜２６−Ｎを、受信したパケットに関わる情報を加工して転送する処理手段と、加工せずにパケットの計測を行う処理手段との２つに大別する。
【０１０５】
情報を加工して転送する処理手段は、例えば、送信元／宛先ＩＰアドレスや送信元／宛先ポート番号などのパケットヘッダ情報変更や、ペイロード情報の変更等を想定しており、パケット転送と同期して処理が行われる。パケットの計測を行う処理手段は、例えば、一定時間に通過する特定のパケット数をカウントする等、ネットワークの状況を把握するために必要なパラメータを、受動的に計測することを想定しており、パケット転送と非同期で処理が行われる。また、それらの処理手段は両者の処理をそれぞれ組合わせて行うことも可能である。
【０１０６】
まず、情報を加工して転送する処理手段によるパケット処理について説明する。情報を加工して転送する処理手段は、処理に必要なデータを受信すると（図１２ステップＳ７１）、受信したデータに対して事前に設定していた適当な加工処理を施す（図１２ステップＳ７２）。最後に、情報を加工して転送する処理手段は、処理が完了したことをパケット処理ハンドル手段に報告する（図１２ステップＳ７３）。
【０１０７】
続いて、パケットの計測を行う処理手段による受動的な計測を行うパケット処理について説明する。パケットの計測を行う処理手段は、処理に必要なデータを受信すると（図１３ステップＳ８１）、受信したデータからパケット処理手段の計測機能に適した情報を記録しておく（図１３ステップＳ８２）。
【０１０８】
パケットの計測を行う処理手段は記録した情報が事前に設定していた閾値を超えている場合（図１３ステップＳ８３）、事前に設定されている閾値超過時対応処理情報をパケット識別部３のパターンマッチ情報記憶手段３３とパケット処理情報記憶手段３５とに登録する（図１３ステップＳ８４）。最後に、パケットの計測を行う処理手段は処理が完了したことをパケット処理ハンドル手段に報告する（図１３ステップＳ８５）。
【０１０９】
次に、計測情報記憶手段１１の動作について説明する。計測情報記憶手段１１は高速パケット処理手段２５−１〜２５−Ｎあるいは柔軟パケット処理手段２６−１〜２６−Ｎのうち、ネットワーク計測機能を有したパケット処理手段によって収集されたネットワークに関する計測情報を記憶する。
【０１１０】
ここで、ネットワークに関する計測情報とは、帯域幅、遅延、アクティブフロー数等のネットワークの状況を示す様々な値を想定している。記憶された計測情報は必要に応じてネットワーク管理端末や高速パケット処理手段２５−１〜２５−Ｎあるいは柔軟パケット処理手段２６−１〜２６−Ｎにて参照可能となっている。
【０１１１】
また、計測情報記憶手段１１はパケット処理装置１の内部に設置し、各パケット処理装置で分散管理することも可能であるが、パケット処理装置１の外部に設置し、複数のパケット処理装置からの計測情報を集中管理することも可能である。
【０１１２】
ここで、以下に示すような情報を保持するパケットを例に挙げ、一連の動作について図１４〜図１９を参照して説明する。例えば、受信パケットは送信元ＩＰアドレス「ａ」、宛先ＩＰアドレス「ｂ」、送信元ポート番号「１１１」、宛先ポート番号「２２２」、プロトコル情報「ＴＣＰ」のような情報を保持しているものとする。
【０１１３】
まず、パケット判別手段３２は受信パケットに含まれている上記のパラメータの値と、パターンマッチ情報記憶手段３３が管理するパターンマッチ情報テーブル（図１４参照）に指定されているパラメータとを比較し、受信パケットがルールにマッチする否かを判定する。
【０１１４】
上記の情報を保持する受信パケットの場合には、パケット判別手段３２は図１４に示すパターンマッチ情報テーブルで管理しているルール識別子「１」に指定されているパラメータである、送信元ＩＰアドレス「ａ」、宛先ＩＰアドレス「ｂ」、送信元ポート番号「１１１」、宛先ポート番号「２２２」、プロトコル情報「ＴＣＰ」のルールにマッチすると判定する。そして、パケット判別手段３２はマッチしたルール識別子とともに受信パケットをパケット処理選択手段４４へ渡す。
【０１１５】
パケット処理選択手段３４はパケット処理情報記憶手段３５が管理するパケット処理情報テーブル（図１５参照）を参照し、パケット判別手段３２から受取った受信パケットに指定されたルール識別子にしたがって、実行するパケット処理の情報と、実行するパケット処理の優先度の情報とを取得する。
【０１１６】
上記のように、ルール識別子「１」が指定されていた場合には、パケット処理選択手段３４は図１５に示すパケット処理情報テーブルで管理しているルール識別子「１」に指定されているパケット処理「Ａ」、パケット処理「Ｂ」、パケット処理「Ｃ」と、パケット処理優先度「Ａ＞Ｂ＞Ｃ」の情報とを取得する。そして、パケット処理選択手段３４はこれらの情報とともに受信パケットをパケット処理部２の処理系選択手段２２へ渡す。
【０１１７】
次に、パケット処理部２の処理系進捗管理手段２１は実行するパケット処理の情報と実行するパケット処理の優先度の情報が指定されたパケットをパケット識別部３のパケット処理選択手段３４から受取ると、処理系選択手段２２にて、処理進捗管理手段２１で管理する処理系進捗管理手段テーブル（図１６参照）に、受取った各パケットについて、高速パケット処理系、柔軟パケット処理系、各々の処理進捗状態を管理する。
【０１１８】
指定されたパケット処理を実行するためにいずれの処理系に振り分ければよいかを判定するには、処理選択手段２２が管理する処理振分け情報テーブル（図１７参照）を参照して、適切なパケット処理系へ振り分ける。上記のように、パケット処理「Ａ」、パケット処理「Ｂ」、パケット処理「Ｃ」が指定されていた場合、処理系選択手段２２は処理振分け情報テーブル（図１７参照）を参照し、パケット処理「Ａ」を実行するためには高速パケット処理系へ、パケット処理「Ｂ」及びパケット処理「Ｃ」を実行するためには柔軟パケット処理系へ振り分けることを認識する。
【０１１９】
例えば、処理系選択手段２２は処理進捗管理手段２１が管理する処理系進捗管理テーブル（図１６参照）において、受取ったパケットにエントリ番号「５番」を割り当て、高速パケット処理系の処理進捗状態を「転送待機」、柔軟パケット処理系の処理進捗状態を「転送待機」としてエントリする。
【０１２０】
その後、処理系選択手段２２は受信パケットをコピーしてパケット処理「Ａ」を実行する要求とパケット処理優先度の情報とともに、受信パケットを高速パケット処理ハンドル手段２３へ、パケット処理「Ｂ」及びパケット処理「Ｃ」を実行する要求とパケット処理優先度の情報とともに、受信パケットを柔軟パケット処理手段２４へ渡して並行に実行させる。
【０１２１】
処理系選択手段２２はパケット処理「Ａ」、パケット処理「Ｂ」、パケット処理「Ｃ」を実行している間、高速パケット処理ハンドル手段２３と、柔軟パケット処理手段２４からの転送可能通知を待機する。
【０１２２】
次に、高速パケット処理系の動作について説明する。高速パケット処理ハンドル手段２３は処理系選択手段２２で振り分けられたパケットを受取ると、自身が管理する処理進捗管理テーブル（図１８参照）に、受取った各パケットについて、各々のパケット処理の処理進捗状態を管理する。
【０１２３】
例えば、上記のようにパケット処理「Ａ」が指定されていた場合、図１８に示す処理進捗管理テーブルにおいて、受取ったパケットにエントリ番号「５番」を割り当て、パケット処理「Ａ」が「処理未完了」、それ以外のパケット処理は「処理なし」としてエントリする。その後、パケット処理「Ａ」を実行するための高速パケット処理手段２５−１〜２５〜Ｎのうちのいずれかに振り分ける。
【０１２４】
この時、高速パケット処理ハンドル手段２３は自身が管理する処理モジュール情報テーブル（図１９参照）を参照し、処理に必要なパラメータが何か、パケット転送に対して同期処理であるか、非同期処理であるかを認識する。パケット処理「Ａ」を実行する場合、図１９に示す処理モジュール情報テーブルを参照し、処理に必要なパラメータが送信元ＩＰアドレスと、宛先ＩＰアドレスであり、パケット転送に対して同期処理であることを認識する。
【０１２５】
高速パケット処理ハンドル手段２３は受信したパケットに指定された高速パケット処理を開始し、パケットの転送を待機させなければならない同期高速パケット処理であったならば処理完了の通知を受取るまで待機する。パケットの処理に対して非同期に実行することができる処理であれば、処理が完了したと見なし、パケットの転送を待機しない。
【０１２６】
受信したパケットに指定された高速パケット処理が完了したならば、処理系選択手段２２にパケットの転送が可能であることを通知する。パケット処理「Ａ」の処理を開始した場合、パケット処理「Ａ」が同期処理であるので、パケット処理「Ａ」の処理完了の通知を受取るまで待機する。パケット処理「Ａ」の処理が完了したならば、図１８に示す処理進捗管理テーブルの値を「同期処理完了」に変更する。
【０１２７】
これによって、図１８に示す処理進捗管理テーブルにおいて、全ての処理が完了したことを検知し、処理系選択手段２２にパケットの転送が可能であることを通知する。
【０１２８】
次に、柔軟パケット処理系の動作について説明する。以下では、例として、高速パケット処理系の動作を説明した際に用いた図１８及び図１９を再度用いて説明しているが、本来は各々の処理系で管理している。
【０１２９】
パケット処理「Ｂ」及びパケット処理「Ｃ」が指定されていた場合、柔軟パケット処理ハンドル手段２４は図１８に示す処理進捗管理テーブルにおいて、受取ったパケットにエントリ番号「４番」を割り当て、パケット処理「Ｂ」が「処理未完了」、パケット処理「Ｃ」が「処理未完了」、それ以外のパケット処理は「処理なし」としてエントリする。
【０１３０】
その後に、柔軟パケット処理ハンドル手段２４はパケット処理「Ｂ」及びパケット処理「Ｃ」を実行するための柔軟パケット処理手段２６−１〜２６〜Ｎのうちのいずれかに振り分ける。
【０１３１】
パケット処理「Ｂ」及びパケット処理「Ｃ」を実行する場合、柔軟パケット処理ハンドル手段２４は図１９に示す処理モジュール情報テーブルを参照し、パケット処理「Ｂ」の実行に必要なパラメータが送信元ポート番号と、宛先ポート番号であり、パケット転送に対して同期処理、パケット処理「Ｃ」の実行に必要なパラメータが送信元ＩＰアドレスと、宛先ＩＰアドレスであり、パケット転送に対して非同期処理であることを認識する。
【０１３２】
そして、パケット処理「Ｂ」及びパケット処理「Ｃ」の実行を開始した場合、柔軟パケット処理ハンドル手段２４はパケット処理「Ｂ」が同期処理であるので、パケット処理「Ｂ」の処理完了の通知を受取るまで待機する。パケット処理「Ｃ」は非同期処理であるので、処理が完了したと見なし、パケットの転送を待機しなくてよいので、図１８に示す処理進捗管理テーブルの値を「非同期処理」に変更する。パケット処理「Ｂ」の処理が完了したならば、図１８に示す処理進捗管理テーブルの値を「同期処理完了」に変更する。
【０１３３】
これによって、柔軟パケット処理ハンドル手段２４は図１８に示す処理進捗管理テーブルにおいて、全ての処理が完了したことを検知し、処理系選択手段２２にパケットの転送が可能であることを通知する。
【０１３４】
処理系選択手段２２は高速パケット処理ハンドル手段２３と、柔軟パケット処理手段２４からの転送可能通知を受取り、処理進捗管理手段２１が管理する処理系進捗管理テーブル（図１６）において、エントリ番号「５番」の高速パケット処理系の処理進捗状態を「転送可能」、柔軟パケット処理系の処理進捗状態を「転送可能」に変更し、各々の処理系の進捗状態が全て転送可能となった時にパケットを転送する。
【０１３５】
このように、本実施例では、多数パケットが該当する高速性が要求されるカーネル空間の処理を行うと同時に、受信したパケットをコピーして少数パケットが該当する柔軟性が要求されるユーザ空間の処理に振り分け、処理を並行させているため、処理待ち時間の遅延による転送速度の低下を回避することができ、かつ異なる特徴のパケット処理を連携させて、様々なパケット処理機能を実現することができる。
【０１３６】
また、本実施例では、各パケット処理の結果を考慮してパケット識別部３の設定を変更しているため、ネットワークの状況に適応したパケット処理を動的に行うことができる。
【０１３７】
図２０は本発明の他の実施例によるパケット処理装置の構成を示すブロック図である。図２０において、本発明の他の実施例によるパケット処理装置４は、パケット処理手段管理部５を設け、パケット処理部２との間で制御情報を授受するようにした以外は図１に示す本発明の一実施例によるパケット処理装置１と同様の構成となっており、同一構成要素には同一符号を付してある。
【０１３８】
パケット処理手段管理部５はパケット処理装置４が搭載するパケット処理部２のパケット処理手段を管理し、パケット処理手段の拡張を行うためのインタフェース機能を有している。
【０１３９】
図２１は図２０のパケット処理部２の構成を示すブロック図である。図２１において、本発明の他の実施例によるパケット処理部２は、処理系選択手段２２と高速パケット処理ハンドル手段２３と柔軟パケット処理ハンドル手段２４とをパケット処理手段管理部５に接続するようにした以外は図２に示す本発明の一実施例によるパケット処理部２と同様の構成となっており、同一構成要素には同一符号を付してある。
【０１４０】
図２２は図２０のパケット処理手段管理部５の構成を示すブロック図である。図２２において、パケット処理手段管理部５は処理モジュール管理手段５１と、処理モジュール格納手段５２とを含んで構成されている。
【０１４１】
処理モジュール管理手段５１は各パケット処理手段の追加・変更・削除や、処理手段毎にパケット処理に必要な情報を管理し、他の手段との連携が成立するように設定を行う。処理モジュール格納手段５２はパケット処理装置４に導入されていないパケット処理手段を格納しておく場所である。
【０１４２】
図２３は本発明の他の実施例によるパケット処理装置４の動作を示すフローチャートである。これら図２０〜図２３を参照して本発明の他の実施例によるパケット処理装置４の動作について説明する。尚、図２０に示すパケット識別部３及びパケット処理部２の主要な動作については、図１に示す本発明の一実施例と同様であるので、その説明については省略する。以下、新たなパケット処理手段を追加する時の動作について説明するが、他の管理動作、例えば変更や削除についても、追加する時の動作と同様の順序で実現可能であるため、それらの説明についても省略する。
【０１４３】
まず、パケット処理手段管理部５は新たなパケット処理手段を追加する要求を受信する（図２３ステップＳ９１）。ここで、パケット処理手段を追加する要求は装置管理者が発信する場合と、装置が特定のパケット処理を行う際に、適切なパケット処理手段を備えていないことを検知し、能動的に発信する場合等を想定している。
【０１４４】
次に、パケット処理手段管理部５は新たなパケット処理手段が、高速パケット処理系と柔軟パケット処理系とのどちらに所属するモジュールなのかを処理系選択手段２２に登録する（図２３ステップＳ９２）。パケット処理手段管理部５は追加したパケット処理手段が高速パケット処理系に所属する場合（図２３ステップＳ９３）、高速パケット処理ハンドル手段２３に対して追加したパケット処理手段が処理に必要なパラメータの情報と、パケットの中継処理に対して同期して処理しなければならないのか、非同期に処理できるのかを登録する（図２３ステップＳ９４）。
【０１４５】
パケット処理手段管理部６は追加したパケット処理手段が柔軟パケット処理系に所属する場合（図２３ステップＳ９３）、上記の高速パケット処理系の時と同様に、柔軟パケット処理ハンドル手段２４に対して追加したパケット処理手段が処理に必要なパラメータの情報と、パケットの中継処理に対して同期して処理しなければならないのか、非同期に処理できるのかを登録する（図２３ステップＳ９５）。
【０１４６】
パケット処理手段管理部５はパケット処理部２の設定が完了した後に、パケット識別部３のパターンマッチ情報記憶手段３３に追加したパケット処理手段へ誘導したいパケットのパターンマッチ情報を登録する（図２３ステップＳ９６）。パケット処理手段管理部５は登録したパターンマッチ情報によって判別されたパケットを、追加したパケット処理手段に誘導するようにパケット処理情報記憶手段３５に登録する（図２３ステップＳ９７）。
【０１４７】
処理モジュール格納手段５２はパケット処理装置４に導入されていないパケット処理手段を格納しておく場所である。処理モジュール管理手段５１は必要に応じて、パケット処理手段のデータをここから読出す。ここで、処理モジュール格納手段５２へパケット処理手段のデータを格納する方法は任意であるが、例えば、装置管理者が任意の記憶媒体からデータを格納する、あるいは装置が必要に応じて他の装置からダウンロードしてきて格納する方法等を想定している。
【０１４８】
このように、本実施例では、新規パケット処理手段の追加時に、各手段に対して自動設定を行うように構成しているため、装置管理者の手動設定による手間を省き、また内部構造の詳細を把握していなくても容易に機能拡張を行うことができる。
【０１４９】
図２４は本発明の別の実施例によるパケット処理装置の構成を示すブロック図である。図２４において、本発明の別の実施例によるパケット処理装置６は、パケット生成処理ハンドル手段と、パケット生成処理手段とを含むパケット処理部７をパケット処理部２の代わりに設けた以外は図１に示す本発明の一実施例によるパケット処理装置１と同様の構成となっており、同一構成要素には同一符号を付してある。
【０１５０】
図２５は図２４のパケット処理部７の構成を示すブロック図である。図２５において、本発明の別の実施例によるパケット処理部７は、パケット生成処理ハンドル手段７１と、パケット生成処理手段７２−１〜７２−Ｎとを設けた以外は図２に示す本発明の一実施例によるパケット処理部２と同様の構成となっており、同一構成要素には同一符号を付してある。
【０１５１】
パケット生成処理ハンドル手段７１は振り分けられたパケットに対して、適切なパケット生成処理手段７２−１〜７２−Ｎに、処理に必要な情報のみを渡して処理を行う。また、パケット生成処理ハンドル手段７１は各パケットについてパケット生成処理系の処理状態を管理し、処理が完了したら処理系選択手段２２に報告する。パケット生成処理手段７２−１〜７２−Ｎは、互いに独立あるいは従属、または同等の機能を持つパケット生成処理を行う手段であり、パケット生成処理に必要なデータのみを受取ってパケットの生成、送信を行う。
【０１５２】
図２６は図２４の処理進捗管理手段２１の動作を示すフローチャートであり、図２７は図２４の処理系選択手段２２の動作を示すフローチャートであり、図２８及び図２９は図２５のパケット生成処理ハンドル手段７１の動作を示すフローチャートである。これら図２４〜図２９を参照して本発明の別の実施例によるパケット処理装置６の動作について説明する。尚、本発明の別の実施例によるパケット処理装置６のパケット識別部３、パケット処理部７を構成する高速パケット処理ハンドル手段２３、柔軟パケット処理ハンドル手段２４、高速パケット処理手段２５−１〜２５−Ｎ、柔軟パケット処理手段２６−１〜２６−Ｎの動作については、図１に示す本発明の一実施例によるパケット処理装置１と同様の動作となるので、その説明については省略する。
【０１５３】
まず、処理進捗管理手段２１及び処理系選択手段２２の動作について説明する。尚、図２６のステップＳ１０１〜Ｓ１０９の処理は図３のステップＳ１１〜Ｓ１９の処理と同様であり、図２７のステップＳ１２１，Ｓ１２２，Ｓ１２４の処理は図４のＳ２１，Ｓ２２，Ｓ２４の処理と同様であるので、それらの説明については省略する。
【０１５４】
本発明の一実施例では高速パケット処理系と柔軟パケット処理系との進捗状況について管理しているが、本発明の別の実施例ではそれらの処理系に加えて、パケット生成処理系の進捗状況についても管理している。
【０１５５】
まず、処理系選択手段２２は処理進捗管理手段２１に、受取った各パケットについて、高速パケット処理系、柔軟パケット処理系のほかに、パケット生成処理系の処理進捗状態を管理する。処理系選択手段２２は処理を行うパケットがパケット生成処理系のパケット処理手段が選択されているかを確認する（図２６ステップＳ１１０）。
【０１５６】
処理系選択手段２２はパケット生成処理系のパケット処理手段が選択されている場合、パケット生成処理ハンドル手段７１にパケットを渡し（図２６ステップＳ１１１）、処理進捗管理手段２１で管理している処理進捗状態を「初期状態」から「転送待機」に変更する（図２６ステップＳ１１２）。処理系選択手段２２はパケット生成処理系のパケット処理手段が選択されていない場合、処理進捗状態を「初期状態」から「処理なし」に変更する（図２６ステップＳ１１３）。
【０１５７】
また、処理系選択手段２２は高速パケット処理系と柔軟パケット処理系とパケット生成処理系との処理進捗状態がいずれも「転送可能」あるいは「処理なし」となったら（図２７ステップＳ１２３）、パケットを特定のネットワークインタフェースから送信し（図２７ステップＳ１２４）、それ以外である場合、ステップＳ１２１に戻る。
【０１５８】
次に、パケット生成処理ハンドル手段７１の動作について説明する。まず、パケット生成処理ハンドル手段７１は処理系選択手段２２で振り分けられたパケットを受取ると（図２８ステップＳ１３１）、まだ処理を開始していないが、処理が選択されているパケット生成処理手段７２−１〜７２−Ｎがあるかを検出する（図２８ステップＳ１３２）。パケット生成処理ハンドル手段７１はそのパケット生成処理手段７２−１〜７２−Ｎのいずれかに対して処理に必要なデータのみを渡す（図２８ステップＳ１３３）。
【０１５９】
パケット生成処理ハンドル手段７１は受取ったパケットに指定された全てのパケット生成処理が処理を開始したかを確認し（図２８ステップＳ１３４）、指定された全てのパケット生成処理を開始していたならば、パケット処理完了を待ち、指定された全てのパケット生成処理をまだ開始し終えていなければ、ステップＳ１３２に戻る。
【０１６０】
また、パケット生成処理ハンドル手段７１はパケットの転送を待機させなければならない同期パケット生成処理手段７２−１〜７２−Ｎが選択されているかどうかを確認する（図２９ステップＳ１４１）。パケット生成処理ハンドル手段７１はパケットの転送を待機させなければならないパケット生成処理手段７２−１〜７２−Ｎが選択されている場合、パケット生成処理手段７２−１〜７２−Ｎから処理完了の通知を受信するまで待機する（図２９ステップＳ１４２）。
【０１６１】
パケット生成処理ハンドル手段７１はパケットの転送を待機させなければならないパケット生成処理手段７２−１〜７２−Ｎが選択されていない場合、処理系選択手段２２にパケットの転送が可能であることを通知する（図２９ステップＳ１４５）。
【０１６２】
パケット生成処理ハンドル手段７１は待機している状態で、パケット生成処理手段７２−１〜７２−Ｎから処理完了の通知を受信すると（図２９ステップＳ１４３）、受信したパケットに指定されていたパケット生成処理が全て完了したかを確認する（図２９ステップＳ１４４）。
【０１６３】
パケット生成処理ハンドル手段７１は指定されていた同期パケット生成処理が全て完了していた場合、処理系選択手段２２にパケット生成処理が全て完了したことを通知する（図２９ステップＳ１４５）。パケット生成処理ハンドル手段７１は指定されていた同期パケット生成処理が未完了であれば、ステップＳ１４２に戻る。ここで、パケットの中継処理と非同期に処理を行えるパケット生成処理に関しては、処理の完了を待たずに次のステップへ進むことができる。
【０１６４】
このように、本実施例では、ネットワークの計測結果を考慮してパケットの生成、送信するというように構成しているため、受動的ネットワーク計測だけでは不十分な計測情報を、能動的ネットワーク計測によって補完することができる。
【０１６５】
また、本実施例では、特定のパケットに注目してパケットの生成、送信するというように構成しているため、パケット通信に係るサービスにおいて、他機器との連携等によるサービスの付加価値を生み出すことができる。
【産業上の利用可能性】
【０１６６】
本発明は、ネットワーク上を流れるトラフィック量の傾向を分析し、動的に帯域制限や経路選択等の対処をするパケット処理装置といった用途に適用することができる。また、本発明は、インタネットのさらなる普及によって、多様なアプリケーションによる新たな種類のトラフィックが登場してきても、拡張モジュールによって容易に対策が可能であるパケット処理装置といった用途にも適用可能である。
【図面の簡単な説明】
【０１６７】
【図１】本発明の一実施例によるパケット処理装置の構成を示すブロック図である。
【図２】図１のパケット処理部の構成を示すブロック図である。
【図３】図１のパケット識別部の構成を示すブロック図である。
【図４】図１のパケット識別部の動作を示すフローチャートである。
【図５】図１の処理進捗管理手段の動作を示すフローチャートである。
【図６】図１の処理系選択手段の動作を示すフローチャートである。
【図７】図１の処理進捗管理手段で管理する処理状態の遷移を示す図である。
【図８】図１の高速パケット処理ハンドル手段の動作を示すフローチャートである。
【図９】図１の高速パケット処理ハンドル手段の動作を示すフローチャートである。
【図１０】図１の柔軟パケット処理ハンドル手段の動作を示すフローチャートである。
【図１１】図１の柔軟パケット処理ハンドル手段の動作を示すフローチャートである。
【図１２】図１の高速パケット処理手段及び柔軟パケット処理手段の動作を示すフローチャートである。
【図１３】図１の高速パケット処理手段及び柔軟パケット処理手段の動作を示すフローチャートである。
【図１４】図１のパターンマッチ情報記憶手段が管理するパターンマッチ情報テーブルを示す図である。
【図１５】図１のパケット処理情報記憶手段が管理するパケット処理情報テーブルを示す図である。
【図１６】図１の処理進捗管理手段が管理する処理系進捗管理テーブルを示す図である。
【図１７】図１の処理系選択手段が管理する処理系振り分け情報テーブルを示す図である。
【図１８】図１の高速パケット処理ハンドル手段及び柔軟パケット処理が管理する処理進捗管理テーブルを示す図である。
【図１９】図１の高速パケット処理ハンドル手段及び柔軟パケット処理が管理する処理モジュール情報テーブルを示す図である。
【図２０】本発明の他の実施例によるパケット処理装置の構成を示すブロック図である。
【図２１】図２０のパケット処理部の構成を示すブロック図である。
【図２２】図２０のパケット処理手段管理部の構成を示すブロック図である。
【図２３】本発明の他の実施例によるパケット処理装置の動作を示すフローチャートである。
【図２４】本発明の別の実施例によるパケット処理装置の構成を示すブロック図である。
【図２５】図２４のパケット処理部の構成を示すブロック図である。
【図２６】図２４の処理進捗管理手段の動作を示すフローチャートである。
【図２７】図２４の処理系選択手段の動作を示すフローチャートである。
【図２８】図２５のパケット生成処理ハンドル手段の動作を示すフローチャートである。
【図２９】図２５のパケット生成処理ハンドル手段の動作を示すフローチャートである。
【符号の説明】
【０１６８】
１，４，６  パケット処理装置
２，７  パケット処理部
３  パケット識別部
５  パケット処理手段管理部
１１  計測情報記憶手段
１２  パケット入力インタフェース
１３  パケット出力インタフェース
２１  処理進捗管理手段
２２  処理系選択手段
２３  高速パケット処理ハンドル手段
２４  柔軟パケット処理ハンドル手段
２５−１〜２５−Ｎ  高速パケット処理手段
２６−１〜２６−Ｎ  柔軟パケット処理手段
３１  パターンマッチ用データ抽出手段
３２  パケット判別手段
３３  パターンマッチ情報記憶手段
３４  パケット処理選択手段
３５  パケット処理情報記憶手段
５１  処理モジュール管理手段
５２  処理モジュール格納手段
７１  パケット生成処理ハンドル手段
７２−１〜７２−Ｎ  パケット生成処理手段
【図１】
2006279625.tif 000003
【図２】
2006279625.tif 000004
【図３】
2006279625.tif 000005
【図４】
2006279625.tif 000006
【図５】
2006279625.tif 000007
【図６】
2006279625.tif 000008
【図７】
2006279625.tif 000009
【図８】
2006279625.tif 000010
【図９】
2006279625.tif 000011
【図１０】
2006279625.tif 000012
【図１１】
2006279625.tif 000013
【図１２】
2006279625.tif 000014
【図１３】
2006279625.tif 000015
【図１４】
2006279625.tif 000016
【図１５】
2006279625.tif 000017
【図１６】
2006279625.tif 000018
【図１７】
2006279625.tif 000019
【図１８】
2006279625.tif 000020
【図１９】
2006279625.tif 000021
【図２０】
2006279625.tif 000022
【図２１】
2006279625.tif 000023
【図２２】
2006279625.tif 000024
【図２３】
2006279625.tif 000025
【図２４】
2006279625.tif 000026
【図２５】
2006279625.tif 000027
【図２６】
2006279625.tif 000028
【図２７】
2006279625.tif 000029
【図２８】
2006279625.tif 000030
【図２９】
2006279625.tif 000031