(57)【要約】【課題】処理を安定して高速化すること。【解決手段】ネットワーク処理装置１００は、ＣＰＵ選択部１３０ａが制御データを受信した場合に、演算器群１４０ａのいずれかのＣＰＵに第１段階の処理を振り分ける。そして、第１段階の処理を振り分けられたＣＰＵは、第１段階の処理を実行すると共に、ＣＰＵ選択部１３０ｂの利用する付加情報を生成し、生成した付加情報を制御データに格納してＣＰＵ選択部１３０ｂに出力し、ＣＰＵ選択部１３０ｂが付加情報に基づいて演算器群１４０ｂのいずれかのＣＰＵに第２段階の処理を振り分ける。【選択図】        図２
2009199433.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置であって、
前記ネットワーク処理装置は、前記パケットに対して第１段階の処理を行う演算器を複数備えた第１段階演算器群と、前記第１段階の処理に続いて行われる第２段階の処理を行う演算器を複数備えた第２段階演算器群とを有し、
前記第１段階演算器群のいずれかの演算器に前記パケットに対する第１段階の処理を振り分ける第１振分手段と、
前記第１段階演算器群のいずれかの演算器が前記第１段階の処理を実行した場合に、前記第２段階の処理を前記第２段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手段と、
前記制御情報に基づいて、前記第２段階演算器群のいずれの演算器に前記パケットに対する第２段階の処理を振り分けるのかを判定する第２振分手段と、
を備えたことを特徴とするネットワーク処理装置。
【請求項２】
前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする請求項１に記載のネットワーク処理装置。
【請求項３】
前記演算器は、当該演算器の機能によって前記第１段階演算器群あるいは前記第２段階演算器群に割り当てられていることを特徴とする請求項１または２に記載のネットワーク処理装置。
【請求項４】
受信したパケットに対して第１段階の処理を行う演算器を複数備えた第１段階演算器群と、前記第１段階の処理に続いて行われる第２段階の処理を行う演算器を複数備えた第２段階演算器群とを備えたコンピュータに、
前記第１段階演算器群のいずれかの演算器に前記パケットに対する第１段階の処理を振り分ける第１振分手順と、
前記第１段階演算器群のいずれかの演算器が前記第１段階の処理を実行した場合に、前記第２段階の処理を前記第２段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手順と、
前記制御情報に基づいて、前記第２段階演算器群のいずれの演算器に前記パケットに対する第２段階の処理を振り分けるのかを判定する第２振分手順と、
を実行させることを特徴とするネットワーク処理プログラム。
【請求項５】
前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする請求項４に記載のネットワーク処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置等に関するものである。
【背景技術】
【０００２】
ＩＴ（Information  Technology）システムの多様化に伴い、昨今のネットワーク処理装置（ルータ、スイッチ等）に求められる機能もますます高性能化、多機能化を要求されている。それに伴い、ネットワーク処理装置は、処理を高速化すると共に、複数種類の処理を同時に実行する場合であっても処理性能を一定水準に維持する必要がある。
【０００３】
上述した課題に対応するために、ネットワーク処理装置での処理はＣＰＵ（Central  Processing  Unit）でのソフトウェア処理に依存する部分が多くなりつつある。また、近年のＣＰＵのトレンドとして、ＣＰＵのクロックアップによる性能向上は望めないため、マルチコアＣＰＵや複数のＣＰＵを利用した並列処理を実行し、ネットワーク処理装置の高速化を実現させている。
【０００４】
従来の並列処理での高速化実現方式として、例えば、同一機能を全ＣＰＵにマッピングして並列処理を行う第１の方式、機能単位に異なるＣＰＵにマッピングして機能間をパイプライン処理する第２の方式がある。
【０００５】
図１２は、第１の方式を説明するための図である。同図に示すように、この第１の方式では、ＣＰＵ選択部１０がパケットを受信した場合に、ＣＰＵ１１〜１３の処理負荷が均等になるように、パケットの処理をＣＰＵ１１〜１３に割り振る。なお、ＣＰＵ１１〜１３の機能は同一である（ここでは一例として、ＣＰＵ１１〜１３のみを示すが、その他にもＣＰＵが存在しているものとする）。
【０００６】
図１３は、第２の方式を説明するための図である。同図に示すように、この第２の方式では、異なる機能をＣＰＵ２１〜２３に割り振り、各ＣＰＵが、割り振られた機能に対応する処理を実行することで、パイプライン処理を実現させている。
【０００７】
例えば、パケットを受信した場合には、ＣＰＵ２１が、パケットに対して機能ａに対応する処理を実行し、ＣＰＵ２２が、パケットに対して機能ｂに対応する処理を実行し、ＣＰＵ２３が、パケットに対して機能ｃに対応する処理を実行する（ここでは一例として、ＣＰＵ２１〜２３のみを示すが、その他にもＣＰＵが存在しているものとする）。
【０００８】
なお、特許文献１には、前段のプロセッサで行ったデータを後段のプロセッサに送信して処理をさせるのに代えて、メモリを接続することで、処理のオーバーヘッドを軽減するという技術が公開されている。
【０００９】
【特許文献１】特開平０４−１８１３６２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来の技術では、必ずしもネットワーク処理装置の高速化を実現することが出来ないという問題があった。例えば、第１の方式では、共有資源に対するＣＰＵ間の排他制御処理による性能劣化が発生する場合があり、第２の方式では、機能単位に処理負荷・処理時間が異なるために、ＣＰＵ間での均等な負荷分配が行えず、またパイプライン処理による性能向上の効果が薄いという問題があった。
【００１１】
具体的に、第１の方式では、並列処理するＣＰＵ間で共有し、各ＣＰＵが参照・更新する資源（テーブル等）があった場合に、ＣＰＵ間で排他制御を行って各エンジンが処理を行うことになってしまうために、ＣＰＵの並列度を増やすたびに排他制御の発生する確率が増加し、結果として処理向上の効果が望めない。
【００１２】
一方、第２の方式では、ネットワーク機能が高度化するにつれて、各機能の処理負荷、処理時間が、処理するパケットに応じて全く変ってしまう。従って、外部から入力されるパケットに応じて、各ＣＰＵの処理負荷・処理時間が大幅に変化し、単純なパイプライン処理では、ネットワーク処理装置の性能を向上させることが出来ない。
【００１３】
例えば、第２の方式において、ネットワーク処理装置の性能を向上させるためには、パケットを受信するたびに、パケットごとに変化するＣＰＵの処理時間・処理負荷に応じて、各ＣＰＵの処理順序を最適化する必要があるが、かかる処理は、ネットワーク処理装置にかかる負荷が重く、現実的ではない。
【００１４】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、処理を安定して高速化することが出来るネットワーク処理装置およびネットワーク処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、このネットワーク処理装置は、ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置であって、前記ネットワーク処理装置は、前記パケットに対して第１段階の処理を行う演算器を複数備えた第１段階演算器群と、前記第１段階の処理に続いて行われる第２段階の処理を行う演算器を複数備えた第２段階演算器群とを有し、前記第１段階演算器群のいずれかの演算器に前記パケットに対する第１段階の処理を振り分ける第１振分手段と、前記第１段階演算器群のいずれかの演算器が前記第１段階の処理を実行した場合に、前記第２段階の処理を前記第２段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手段と、前記制御情報に基づいて、前記第２段階演算器群のいずれの演算器に前記パケットに対する第２段階の処理を振り分けるのかを判定する第２振分手段と、を備えたことを要件とする。
【００１６】
また、このネットワーク処理装置は、上記のネットワーク処理装置において、前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを要件とする。
【００１７】
また、このネットワーク処理装置は、上記のネットワーク処理装置において、前記演算器は、当該演算器の機能によって前記第１段階演算器群あるいは前記第２段階演算器群に割り当てられていることを要件とする。
【００１８】
また、このネットワーク処理プログラムは、受信したパケットに対して第１段階の処理を行う演算器を複数備えた第１段階演算器群と、前記第１段階の処理に続いて行われる第２段階の処理を行う演算器を複数備えた第２段階演算器群とを備えたコンピュータに、前記第１段階演算器群のいずれかの演算器に前記パケットに対する第１段階の処理を振り分ける第１振分手順と、前記第１段階演算器群のいずれかの演算器が前記第１段階の処理を実行した場合に、前記第２段階の処理を前記第２段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手順と、前記制御情報に基づいて、前記第２段階演算器群のいずれの演算器に前記パケットに対する第２段階の処理を振り分けるのかを判定する第２振分手順と、を実行させることを要件とする。
【００１９】
また、このネットワーク処理プログラムは、上記のネットワーク処理プログラムにおいて、前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを要件とする。
【発明の効果】
【００２０】
このネットワーク処理装置によれば、第１段階演算器群のいずれかの演算器にパケットに対する第１段階の処理を振り分け、第１段階演算器群のいずれかの演算器が第１段階の処理を実行した場合に、第２段階の処理を第２段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成し、制御情報に基づいて、第２段階演算器群のいずれの演算器に前記パケットに対する第２段階の処理を振り分けるのかを判定するので、第２段階演算器群に処理を割り振る装置が、再度、パケットを参照する必要がなくなるので、処理を高速化することが出来る。
【００２１】
また、このネットワーク処理装置によれば、パケットの各レイヤに対応したヘッダの情報を制御データとして抽出するので、容易に制御データを生成することが出来る。
【００２２】
また、このネットワーク処理装置によれば、演算器の機能によって第１段階演算器群あるいは第２段階演算器群を割り当てるので、処理の振り分けを容易に実行することができる。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この発明に係るネットワーク処理装置およびネットワーク処理プログラムの好適な実施の形態を詳細に説明する。
【実施例】
【００２４】
まず、本実施例にかかるネットワーク処理装置の概要および特徴について説明する。図１は、本実施例にかかるネットワーク処理装置の概要および特徴を説明するための図である。同図に示すように、このネットワーク処理装置は、第１段階の処理を行うＣＰＵ（Central  Processing  Unit）４１，４２からなる第１段階演算器群４０と、第１段階の処理に続いて行われる第２段階の処理を行うＣＰＵ５１〜５３からなる第２段階演算器群５０と、第１段階演算器群４０のいずれかのＣＰＵに第１段階の処理を振り分けるＣＰＵ選択部６０ａと、第２段階演算器群５０のいずれかのＣＰＵに第２段階の処理を振り分けるＣＰＵ選択部６０ｂとを有する。
【００２５】
なお、ここでは一例として、第１段階演算器群４０がＣＰＵ４１，４２を有し、第２段階演算器群５０がＣＰＵ５１，５２，５３を有しているが、第１，２段階演算器群４０，５０は、その他にもＣＰＵを有しているものとする。
【００２６】
ネットワーク処理装置は、パケットを受信した場合に、パケットに対する第１段階の処理を第１段階演算器群４０のいずれかのＣＰＵに振り分ける。そして、第１段階の処理を振り分けられたＣＰＵは、第１段階の処理を実行すると共に、制御情報を生成してＣＰＵ選択部６０ｂに出力する。ＣＰＵ選択部６０ｂは、第１段階演算器群４０から出力される制御情報を参照して、第２段階演算器群５０のいずれかのＣＰＵに第２段階の処理を振り分ける。
【００２７】
ここで、制御情報は、ＣＰＵ選択部６０ｂが第２段階の処理を第２段階演算器群５０のＣＰＵに振り分ける際に参照するデータである。なお、この制御情報は、パケットに含まれる各レイヤのヘッダの情報を含む。
【００２８】
このように、本実施例にかかるネットワーク処理装置は、第１段階の処理を実行するＣＰＵが、ＣＰＵ選択部６０ｂの参照する制御情報を前もって生成し、ＣＰＵ選択部６０ｂに出力するので、ＣＰＵ選択部６０ｂが第２段階の処理をＣＰＵ５１〜５３に振り分ける際に、再度、単体で、パケットから必要な情報を抽出する処理を省くことができ、ＣＰＵ選択部６０ｂの処理負荷を軽減することで、ネットワーク処理装置の処理を高速化することが出来る。
【００２９】
なお、ここでは、説明の便宜上、第１段階演算器群４０、第２段階演算器群５０および各段階の演算器群に対応したＣＰＵ選択部６０ａ、６０ｂのみを示したが、上記のネットワーク処理装置は、その他にも第３〜ｎ（ｎ＞３）段階演算器群および、各段階の演算器群に対応したＣＰＵ選択部を備えているものとする。
【００３０】
次に、本実施例にかかるネットワーク処理装置について具体的に説明する。図２は、本実施例にかかるネットワーク処理装置の構成を示す機能ブロック図である。同図に示すように、このネットワーク処理装置１００は、パケット格納部１１０と、通信制御ＩＦ部１２０と、ＣＰＵ選択部１３０ａ、１３０ｂ、１３０ｃ、第１振分管理テーブル１３５ａと、第２振分管理テーブル格納部１３５ｂと、第３振分管理テーブル格納部１３５ｃと、演算器群１４０ａ，１４０ｂ，１４０ｃとを備える。なお、その他の構成は、周知のスイッチ、ルータ等と同一であるため、ここでは説明を省略する。
【００３１】
このうち、パケット格納部１１０は、通信制御ＩＦ部１２０から出力されるパケットを格納する記憶手段である。図３は、パケットのデータ構造の一例を示す図である。同図に示すように、このパケットは、Ｌ（layer）２／Ｌ３ヘッダ情報と、Ｌ４ヘッダ情報と、Ｌ５〜Ｌ７ヘッダ情報と、コンテンツ情報等を備える。
【００３２】
ここで、Ｌ２／Ｌ３ヘッダ情報は、データリンク層あるいはネットワーク層で用いられる送信先のアドレス（ＤＡ＜destination  address＞）および送信元のアドレス（ＳＡ＜source  address＞）等を有する情報である。Ｌ４ヘッダ情報は、トランスポート層でも用いられるポート番号（ネットワーク処理装置１００がパケットを受信したポートの番号）の情報等を有する情報である。
【００３３】
Ｌ５〜Ｌ７ヘッダ情報は、セッション層、プレゼンテーション層、アプリケーション層で用いられる情報であり、例えば、Cookie等の情報を含む。なお、コンテンツ情報は、各種のコンテンツ（例えば、文書、音声、画像等）の情報である。
【００３４】
通信制御ＩＦ部１２０は、ネットワークを介して、外部の通信装置との間におけるデータ通信を制御する手段である。通信制御ＩＦ部１２０は、パケットを受信した場合に、受信したパケットをパケット格納部１１０に格納すると共に、パケットから制御データを生成して、生成した制御データをＣＰＵ選択部１３０ａに出力する。
【００３５】
図４は、制御データのデータ構造の一例を示す図である。同図に示すように、この制御データは、付加情報、Ｌ２／Ｌ３ヘッダ情報、Ｌ４ヘッダ情報、Ｌ５〜Ｌ７ヘッダ情報、コンテンツ情報を備える。
【００３６】
ここで、付加情報は、後述する演算器群１４０ａ〜１４０ｃのＣＰＵが生成する情報を記憶するものである。従って、通信制御ＩＦ部１２０が、制御データを生成した時点では、付加情報は情報を保持していない。なお、制御データに含まれるＬ２／Ｌ３ヘッダ情報、Ｌ４ヘッダ情報、Ｌ５〜Ｌ７ヘッダ情報、コンテンツ情報の説明は、パケットのＬ２／Ｌ３ヘッダ情報、Ｌ４ヘッダ情報、Ｌ５〜Ｌ７ヘッダ情報、コンテンツ情報と同様であるため説明を省略する。
【００３７】
ＣＰＵ選択部１３０ａは、通信制御ＩＦ部１２０から制御データを取得した場合に、制御データに含まれるＬ３／Ｌ４ヘッダ情報（Ｌ３ヘッダの情報と、Ｌ４ヘッダの情報）を基にして、第１振分管理テーブルを生成し、第１振分管理テーブル格納部１３５ａに第１振分管理テーブルを格納すると共に、第１振分管理テーブルに基づいて、第１段階の処理をＣＰＵ１４１ａ，１４２ａのいずれかに振り分ける（振り分けたＣＰＵに制御データを出力する）手段である。
【００３８】
本実施例では、第１段階の処理をコネクション単位の処理とする。ここで、コネクション単位の処理とは、ＦＷ（Firewall）等に対応する処理（パケットの通過を許可する処理、パケットの破棄指示を行う処理等）とする。
【００３９】
図５は、第１振分管理テーブルのデータ構造の一例を示す図である。同図に示すように、この第１振分管理テーブルは、Ｌ３／Ｌ４ヘッダ情報と、ＣＰＵ識別番号とを備える。Ｌ３／Ｌ４ヘッダ情報は、ネットワーク層あるいはトランスポート層で用いられる情報（ＤＡ／ＳＡ、ポート番号等）であり、ＣＰＵ識別番号は、ＣＰＵを識別する情報である。例えば、ＣＰＵ識別番号「Ｃ１０００１」はＣＰＵ１４１ａに対応し、ＣＰＵ識別番号「Ｃ１０００２」はＣＰＵ１４２ａに対応する。
【００４０】
図５によれば、ＣＰＵ選択部１３０ａは、制御データにＤＡ＝「アドレス１」、ＳＡ＝「アドレス２」の情報が含まれていれば、第１段階の処理をＣＰＵ１４１ａに振り分け、制御データにポート番号＝「ポート番号１」の情報が含まれていれば、第１段階の処理をＣＰＵ１４２ａに振り分ける。
【００４１】
なお、第１振分管理テーブルによって振り分けられる第１段階の処理は、演算器群１４０ａのＣＰＵ１４１ａ、１４２ａ間で排他制御が行われないように、設定されているものとする。例えば、ＣＰＵ選択部１３０ａは、Ｌ３／Ｌ４ヘッダ情報と、かかるＬ３／Ｌ４ヘッダ情報によってＣＰＵが利用する共有資源の情報との組み合わせの情報を予め保持しており、かかる組み合わせの情報を基にして、各ＣＰＵ間で排他制御が行われないように、第１振分管理テーブルを生成する。
【００４２】
すなわち、図５において、Ｌ３／Ｌ４ヘッダ情報（ＤＡ＝「アドレス１」、ＳＡ＝「アドレス２」）によって処理を実行するＣＰＵが利用する共有資源と、Ｌ３／Ｌ４ヘッダ情報（ポート番号＝「ポート番号１」）によって処理を実行するＣＰＵが利用する共有資源はそれぞれ異なる。
【００４３】
演算器群１４０ａは、ＣＰＵ１４１ａ，１４２ａと、コネクションポリシー管理テーブル格納部１４３ａとを備え、第１段階の処理（コネクション単位の処理）を実行する。このうち、コネクションポリシー管理テーブル格納部１４３ａは、コネクションポリシー管理テーブルを格納する記憶手段である。
【００４４】
コネクションポリシー管理テーブルは、Ｌ３／Ｌ４ヘッダ情報とポリシー（処理内容）とを対応付けて記憶するテーブルである。図６は、コネクションポリシー管理テーブルのデータ構造の一例を示す図である。例えば、図６に示す例では、ＤＡ＝「アドレス１」ＳＡ＝「アドレス２」を有する制御データを取得したＣＰＵは、ポリシー「ポリシーＡ１」に従って処理を実行する。
【００４５】
ＣＰＵ１４１ａ、１４２ａは、ＣＰＵ選択部１３０ａから制御データを取得した場合に、取得した制御データに含まれるＬ３／Ｌ４ヘッダ情報と、コネクションポリシー管理テーブル（図６参照）とを比較してポリシーを判定し、判定したポリシーにしたがって、処理を実行する手段である。
【００４６】
また、ＣＰＵ１４１ａ、１４２ａは、処理結果を付加情報（図４参照）に格納すると共に、Ｌ５〜Ｌ７ヘッダ情報に含まれる情報（Cookie等）をＣＰＵ選択部１３０ｂの代わりに抽出し、抽出した情報を付加情報に格納する。そして、ＣＰＵ１４１ａ、１４２ａは、付加情報に処理結果、Cookie等を格納した制御データをＣＰＵ選択部１３０ｂに出力する。
【００４７】
ＣＰＵ選択部１３０ｂは、演算器群１４０ａ（ＣＰＵ１４１ａまたはＣＰＵ１４２ａ）から制御データを取得した場合に、制御データの付加情報に含まれるCookieを基にして、第２振分管理テーブルを生成し、第２振分管理テーブル格納部１３５ｂに第２振分管理テーブルを格納すると共に、第２振分管理テーブルに基づいて、第２段階の処理をＣＰＵ１４１ｂ〜１４５ｂのいずれかに振り分ける（振り分けたＣＰＵに制御データを出力する）手段である。
【００４８】
本実施例では、第２段階の処理をコンテンツ単位の処理とする。ここで、コンテンツ単位の処理とは、例えば、ＳＬＢ（Server  Load  Balancing；負荷分散）等に対応する処理とする。
【００４９】
図７は、第２振分管理テーブルのデータ構造の一例を示す図である。同図に示すように、この第２振分管理テーブルは、Ｌ５〜Ｌ７ヘッダ情報と、ＣＰＵ識別情報とを備える。Ｌ５〜Ｌ７ヘッダ情報は、セッション層、プレゼンテーション層、アプリケーション層で用いられる情報（例えば、Cookie等）であり、ＣＰＵ識別番号は、ＣＰＵを識別する情報である。例えば、ＣＰＵ識別番号「Ｃ２０００１」は、ＣＰＵ１４１ｂに対応し、ＣＰＵ識別番号「Ｃ２０００２」は、ＣＰＵ１４２ｂに対応し、ＣＰＵ識別番号「Ｃ２０００３」は、ＣＰＵ１４３ｂに対応する。
【００５０】
図７によれば、ＣＰＵ選択部１３０ｂは、制御データの付加情報にCookie＝「Cookie1」の情報が含まれていれば、第２段階の処理をＣＰＵ１４１ｂに振り分け、制御データの付加情報にCookie＝「Cookie2」の情報が含まれていれば、第２段階の処理をＣＰＵ１４２ｂに振り分け、制御データの付加情報にCookie＝「Cookie3」の情報が含まれていれば、第２段階の処理をＣＰＵ１４３ｂに振り分ける。
【００５１】
このように、ＣＰＵ選択部１３０ｂは、制御データの付加情報のみを参照することによって、第２段階の処理をどのＣＰＵに振り分けるのかを判定することが出来るので、再度制御データの各ヘッダ情報から必要な情報を抽出する必要がなくなり、振分処理にかかる負荷が大幅に低減される。
【００５２】
なお、第２振分管理テーブルによって振り分けられる第２段階の処理は、演算器群１４０ｂのＣＰＵ１４１ｂ〜１４５ｂ間で排他制御が行われないように、設定されているものとする。例えば、ＣＰＵ選択部１３０ｂは、Ｌ５〜Ｌ７ヘッダ情報と、かかるＬ５〜Ｌ７ヘッダ情報によってＣＰＵが利用する共有資源の情報との組み合わせの情報を予め保持しており、かかる組み合わせの情報を基にして、各ＣＰＵ間で排他制御が行われないように、第２振分管理テーブルを生成する。
【００５３】
すなわち、図７において、Ｌ５〜Ｌ７ヘッダ情報（Cookie＝「Cookie1」）によって処理を実行するＣＰＵが利用する共有資源と、Ｌ５〜Ｌ７ヘッダ情報（Cookie＝「Cookie2」）によって処理を実行するＣＰＵが利用する共有資源と、Ｌ５〜Ｌ７ヘッダ情報（Cookie＝「Cookie3」）によって処理を実行するＣＰＵが利用する共有資源はそれぞれ異なる。
【００５４】
演算器群１４０ｂは、ＣＰＵ１４１ｂ〜１４５ｂと、コンテンツポリシー管理テーブル格納部１４６ｂとを備え、第２段階の処理（コンテンツ単位の処理）を実行する。このうち、コンテンツポリシー管理テーブル格納部１４６ｂは、コンテンツポリシー管理テーブルを格納する記憶手段である。
【００５５】
コンテンツポリシー管理テーブルは、Ｌ５〜Ｌ７ヘッダ情報とポリシーとを対応付けて記憶するテーブルである。図８は、コンテンツポリシー管理テーブルのデータ構造の一例を示す図である。例えば、図８に示す例では、Cookie＝「Cookie1」を付加情報に有する制御データを受信したＣＰＵは、ポリシー「ポリシーＢ１」にしたがって処理を実行する。
【００５６】
ＣＰＵ１４１ｂ〜１４５ｂは、ＣＰＵ選択部１３０ｂから制御データを取得した場合に、取得した制御データに含まれるＬ５〜Ｌ７ヘッダ情報と、コンテンツポリシー管理テーブル（図８参照）とを比較してポリシーを判定し、判定したポリシーにしたがって、処理を実行する手段である。
【００５７】
また、ＣＰＵ１４１ｂ〜１４５ｂは、処理結果を付加情報（図４参照）に格納すると共に、Ｌ５〜Ｌ７ヘッダ情報に含まれる情報（Cookie等）をＣＰＵ選択部１３０ｃの代わりに抽出し、抽出した情報を付加情報に格納する。そして、ＣＰＵ１４１ｂ〜１４５ｂは、付加情報に処理結果、Ｌ５〜Ｌ７ヘッダ情報を格納した制御データをＣＰＵ選択部１３０ｃに出力する。
【００５８】
ＣＰＵ選択部１３０ｃは、演算器群１４０ｂ（１４１ｂ〜１４５ｂのいずれか）から制御データを取得した場合に、制御データの付加情報に含まれる処理結果（演算器群１４０ａのＣＰＵ１４１ａ，１４２ａのいずれかの処理結果、演算器群１４０ｂのＣＰＵ１４１ｂ〜１４５ｂのいずれかの処理結果）、Ｌ５〜Ｌ７ヘッダ情報を基にして、第３振分管理テーブルを生成し、第３振分管理テーブル格納部１３５ｃに第３振分管理テーブルを格納すると共に、第３振分管理テーブルに基づいて、第３段階の処理をＣＰＵ１４１ｃ〜１４３ｃのいずれかに振り分ける（振り分けたＣＰＵに制御データを出力する）手段である。
【００５９】
本実施例では、第３段階の処理をキュー単位の処理とする。ここで、キュー単位の処理とは、例えば、ＱｏＳ（Quality  of  Service）等に対応する処理とする。
【００６０】
図９は、第３振分管理テーブルのデータ構造の一例を示す図である。同図に示すように、この第３振分管理テーブルは、振分参照情報と、ＣＰＵを識別するＣＰＵ識別番号とを備える。ここで、振分参照情報は、Ｌ５〜Ｌ７ヘッダ情報（Cookie等）と、演算器群１４０ａのＣＰＵ１４１ａ〜１４２ａのいずれかの処理結果あるいは演算器群１４０ｂのＣＰＵ１４１ｂ〜１４５ｂのいずれかの処理結果とを含んだ情報である。
【００６１】
なお、ＣＰＵ識別番号「Ｃ３０００１」は、ＣＰＵ１４１ｃに対応し、ＣＰＵ識別番号「Ｃ３０００２」は、ＣＰＵ１４２ｃに対応し、ＣＰＵ識別番号「Ｃ３０００３」は、ＣＰＵ１４３ｃに対応する。
【００６２】
図９によれば、ＣＰＵ選択部１３０ｃは、制御データの付加情報にCookie＝「Cookie1」、処理結果＝「処理結果Ａ」の情報が含まれていれば、第３段階の処理をＣＰＵ１４１ｃに振り分け、制御データの付加情報にCookie＝「Cookie2」、処理結果＝「処理結果Ｂ」の情報が含まれていれば、第３段階の処理をＣＰＵ１４２ｃに振り分け、制御データの付加情報にCookie＝「Cookie3」、処理結果＝「処理結果Ｃ」の情報が含まれていれば、第３段階の処理をＣＰＵ１４３ｃに振り分ける。
【００６３】
このように、ＣＰＵ選択部１３０ｃは、制御データの付加情報のみを参照することによって、第３段階の処理をどのＣＰＵに振り分けるのかを判定することが出来るので、再度制御データの各ヘッダ情報から必要な情報を抽出する（または、演算器群１４０ａ、１４０ｂから処理結果を取得する処理を実行する）必要がなくなり、振分処理にかかる負荷が大幅に低減される。
【００６４】
なお、第３振分管理テーブルによって振り分けられる第３段階の処理は、演算器群１４０ｃのＣＰＵ１４１ｃ〜１４３ｃ間で排他制御が行われないように、設定されているものとする。例えば、ＣＰＵ選択部１３０ｃは、Ｌ５〜Ｌ７ヘッダ情報および処理結果と、かかるＬ５〜Ｌ７ヘッダ情報および処理結果によってＣＰＵが利用する共有資源の情報との組み合わせの情報を予め保持しており、かかる組み合わせの情報を基にして、各ＣＰＵ間で排他制御が行われないように、第３振分管理テーブルを生成する。
【００６５】
すなわち、図９において、振分参照情報（Cookie＝「Cookie1」、処理結果＝「処理結果Ａ」）によって処理を実行するＣＰＵが利用する共有資源と、振分参照情報（Cookie＝「Cookie2」、処理結果＝「処理結果Ｂ」）によって処理を実行するＣＰＵが利用する共有資源と、振分参照情報（Cookie＝「Cookie3」、処理結果＝「処理結果Ｃ」）によって処理を実行するＣＰＵが利用する共有資源はそれぞれ異なる。
【００６６】
演算器群１４０ｃは、ＣＰＵ１４１ｃ〜１４３ｃと、キューポリシー管理テーブル格納部１４４ｃとを備え、第３段階の処理（キュー単位の処理）を実行する。このうち、キューポリシー管理テーブル格納部１４４ｃは、キューポリシー管理テーブルを格納する記憶手段である。
【００６７】
キューポリシー管理テーブルは、振分参照情報とポリシーとを対応付けて記憶するテーブルである。図１０は、キューポリシー管理テーブルのデータ構造の一例を示す図である。例えば、図１０に示す例では、Cookie＝「Cookie1」、処理結果＝「処理結果Ａ」を付加情報に有する制御データを受信したＣＰＵは、ポリシー「ポリシーＣ１」にしたがって処理を実行する。
【００６８】
ＣＰＵ１４１ｃ〜１４３ｃは、ＣＰＵ選択部１３０ｃから制御データを取得した場合に、取得した制御データに含まれるＬ５〜Ｌ７ヘッダ情報および処理結果と、キューポリシー管理テーブルとを比較してポリシーを判定し、判定したポリシーにしたがって、処理を実行する手段である。
【００６９】
なお、ＣＰＵ１４１ｃ〜１４３ｃは、演算器群１４０ｃの後段に、ＣＰＵ選択部（図示略）が接続されている場合には、後段のＣＰＵ選択部がＣＰＵ選択に必要となる情報を制御データから抽出し、抽出したデータを付加情報に格納した後に、ＣＰＵ選択部に出力する。
【００７０】
上述してきたように、本実施例にかかるネットワーク処理装置１００は、ＣＰＵ選択部１３０ａが制御データを受信した場合に、演算器群１４０ａのいずれかのＣＰＵに第１段階の処理を振り分ける。そして、第１段階の処理を振り分けられたＣＰＵは、第１段階の処理を実行すると共に、ＣＰＵ選択部１３０ｂの利用する付加情報を生成し、生成した付加情報を制御データに格納してＣＰＵ選択部１３０ｂに出力し、ＣＰＵ選択部１３０ｂが付加情報に基づいて演算器群１４０ｂのいずれかのＣＰＵに第２段階の処理を振り分けるので、ＣＰＵ選択部１３０ｂは、再度、単体で、パケットの各ヘッダ情報から必要な情報を抽出する必要がなくなり、振分処理にかかる負荷が大幅に低減されるので、ネットワーク処理装置１００の性能を向上させることができる。
【００７１】
ますます多機能化、高機能化するネットワーク処理装置において、処理性能向上を実現するためには、マルチコアＣＰＵや複数のＣＰＵを使用して並列処理を行うことが現実的な解決策ではあるが、単純に並列処理を行うだけでは性能向上を望めない。それに対して、本アーキテクチャを使用したネットワーク処理装置１００においては、各機能を機能ベース単位に機能群として分類し、機能群毎に多段に振り分け、必要性能にあわせて並列処理を実行することで、ＣＰＵ間の排他制御の問題を解決し、かつ並列処理において性能ネックとなる振り分け処理の問題も、前段の並列処理段階で分散して識別処理を行うことで、性能ネックを解決可能である。
【００７２】
さらに、新たな機能拡張に対しても、機能ベース（ポリシー）を意識して該当するＣＰＵにマッピングし、かつ必要性能に合わせてＣＰＵの並列度を上げれば性能拡張まで可能であり、従って今後の高機能・高性能化に対しても問題なく対応できるアーキテクチャとなっている。
【００７３】
ところで、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部あるいは一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７４】
また、図２に示したネットワーク処理装置１００の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部がＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７５】
図１１は、本実施例にかかるネットワーク処理装置１００を構成するコンピュータ２００のハードウェア構成を示す図（一例）である。図１１に示すように、このコンピュータ（Ｌ２スイッチ）２００は、入力装置２０１、モニタ２０２、ＲＡＭ（Random  Access  Memory）２０３、ＲＯＭ（Read  Only  Memory）２０４、記憶媒体からデータを読み取る媒体読取装置２０５、他の装置との間でデータの送受信を行う通信装置２０６、ＣＰＵ（Central  Processing  Unit）２０７，２０８、ＣＰＵ選択装置（ＣＰＵ）２０９、ＨＤＤ（Hard  Disk  Drive）２１０をバス２１１で接続して構成される。なお、ここでは、一例として、ＣＰＵ２０７，２０８のみを示すが、コンピュータ２００は、その他のＣＰＵも保持しているものとする。
【００７６】
そして、ＨＤＤ２１０には、上記したネットワーク処理装置１００の機能と同様の機能を発揮する選択プログラム２１０ｂ、制御データ生成プログラム２１０ｃが記憶されている。ＣＰＵ選択装置２０９が、選択プログラム２１０ｂを読み出して実行することにより、選択プロセス２０９ａが起動される。ここで、選択プロセス２０９ａは、図２に示した、ＣＰＵ選択部１３０ａ，１３０ｂ，１３０ｃに対応する。
【００７７】
また、ＣＰＵ２０７が、制御データ生成プログラム２１０ｃを読み出して実行することにより、制御データ生成プロセス２０７ａが起動される。ここで、制御データ生成プロセス２０７ａは、演算器群１４０ａ，１４０ｂ，１４０ｃのＣＰＵが実行する処理に対応する。同様に、ＣＰＵ２０８が、制御データ生成プログラム２１０ｃを読み出して実行することにより、制御データ生成プロセス２０８ａが起動される。ここで、制御データ生成プロセス２０８ａは、演算器群１４０ａ，１４０ｂ，１４０ｃのＣＰＵが実行する処理に対応する。
【００７８】
また、ＨＤＤ２１０は、第１振分管理テーブル、第２振分管理テーブル、第３振分管理テーブル、コネクションポリシー管理テーブル、コンテンツポリシー管理テーブル、キューポリシー管理テーブルに対応する各種データ２１０ａを記憶する。ＣＰＵ２０７，２０８、ＣＰＵ選択装置２０９は、ＨＤＤ２１０に格納された各種データ２１０ａを読み出して、ＲＡＭ２０３に格納し、ＲＡＭ２０３に格納された各種データ２０３ａを利用して、ＣＰＵ選択装置２０９は、ＣＰＵ２０７，２０８に処理を振り分け、ＣＰＵ２０７，２０８は、付加情報を生成して、各種データ２０３ａに格納する。
【００７９】
ところで、図１１に示した選択プログラム２１０ｂ、制御データ生成プログラム２１０ｃは、必ずしも最初からＨＤＤ２１０に記憶させておく必要はない。たとえば、コンピュータに挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、または、コンピュータの内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータに接続される「他のコンピュータ（またはサーバ）」などに選択プログラム２１０ｂ、制御データ生成プログラム２１０ｃを記憶しておき、コンピュータがこれらから選択プログラム２１０ｂ、制御データ生成プログラム２１０ｃを読み出して実行するようにしてもよい。
【００８０】
上記の実施例を含む実施形態に関し、以下の付記を開示する。
【００８１】
（付記１）ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置であって、
前記ネットワーク処理装置は、前記パケットに対して第１段階の処理を行う演算器を複数備えた第１段階演算器群と、前記第１段階の処理に続いて行われる第２段階の処理を行う演算器を複数備えた第２段階演算器群とを有し、
前記第１段階演算器群のいずれかの演算器に前記パケットに対する第１段階の処理を振り分ける第１振分手段と、
前記第１段階演算器群のいずれかの演算器が前記第１段階の処理を実行した場合に、前記第２段階の処理を前記第２段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手段と、
前記制御情報に基づいて、前記第２段階演算器群のいずれの演算器に前記パケットに対する第２段階の処理を振り分けるのかを判定する第２振分手段と、
を備えたことを特徴とするネットワーク処理装置。
【００８２】
（付記２）前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする付記１に記載のネットワーク処理装置。
【００８３】
（付記３）前記演算器は、当該演算器の機能によって前記第１段階演算器群あるいは前記第２段階演算器群に割り当てられていることを特徴とする付記１または２に記載のネットワーク処理装置。
【００８４】
（付記４）受信したパケットに対して第１段階の処理を行う演算器を複数備えた第１段階演算器群と、前記第１段階の処理に続いて行われる第２段階の処理を行う演算器を複数備えた第２段階演算器群とを備えたコンピュータに、
前記第１段階演算器群のいずれかの演算器に前記パケットに対する第１段階の処理を振り分ける第１振分手順と、
前記第１段階演算器群のいずれかの演算器が前記第１段階の処理を実行した場合に、前記第２段階の処理を前記第２段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手順と、
前記制御情報に基づいて、前記第２段階演算器群のいずれの演算器に前記パケットに対する第２段階の処理を振り分けるのかを判定する第２振分手順と、
を実行させることを特徴とするネットワーク処理プログラム。
【００８５】
（付記５）前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする付記４に記載のネットワーク処理プログラム。
【００８６】
（付記６）前記演算器は、当該演算器の機能によって前記第１段階演算器群あるいは前記第２段階演算器群に割り当てられていることを特徴とする付記４または５に記載のネットワーク処理プログラム。
【産業上の利用可能性】
【００８７】
以上のように、本発明にかかるネットワーク処理装置およびネットワーク処理プログラムは、ネットワーク上でデータを伝送するネットワーク処理装置等に有用であり、特に、処理を安定して高速化する必要がある場合に適している。
【図面の簡単な説明】
【００８８】
【図１】本実施例にかかるネットワーク処理装置の概要および特徴を説明するための図である。
【図２】本実施例にかかるネットワーク処理装置の構成を示す機能ブロック図である。
【図３】パケットのデータ構造の一例を示す図である。
【図４】制御データのデータ構造の一例を示す図である。
【図５】第１振分管理テーブルのデータ構造の一例を示す図である。
【図６】コネクションポリシー管理テーブルのデータ構造の一例を示す図である。
【図７】第２振分管理テーブルのデータ構造の一例を示す図である。
【図８】コンテンツポリシー管理テーブルのデータ構造の一例を示す図である。
【図９】第３振分管理テーブルのデータ構造の一例を示す図である。
【図１０】キューポリシー管理テーブルのデータ構造の一例を示す図である。
【図１１】本実施例にかかるネットワーク処理装置を構成するコンピュータのハードウェア構成を示す図である。
【図１２】第１の方式を説明するための図である。
【図１３】第２の方式を説明するための図である。
【符号の説明】
【００８９】
４１，４２，５１，５２，５３，１４１ａ，１４２ａ，１４１ｂ，１４２ｂ，１４３ｂ，１４４ｂ，１４５ｂ，１４１ｃ，１４２ｃ，１４３ｃ，２０７，２０８  ＣＰＵ
４０    第１段階演算器群
５０    第２段階演算器群
６０ａ，６０ｂ，１３０ａ，１３０ｂ，１３０ｃ  ＣＰＵ選択部
１００    ネットワーク処理装置
１１０    パケット格納部
１２０    通信制御ＩＦ部
１３５ａ  第１振分管理テーブル格納部
１３５ｂ  第２振分管理テーブル格納部
１３５ｃ  第３振分管理テーブル格納部
１４０ａ，１４０ｂ，１４０ｃ  演算器群
１４３ａ  コネクションポリシー管理テーブル格納部
１４６ｂ  コンテンツポリシー管理テーブル格納部
１４４ｃ  キューポリシー管理テーブル格納部
２００    コンピュータ
２０１    入力装置
２０２    モニタ
２０３    ＲＯＭ
２０３ａ，２１０ａ  各種データ
２０４    ＲＡＭ
２０５    媒体読取装置
２０６    通信装置
２０７ａ，２０８ａ  制御データ生成プロセス
２０９    ＣＰＵ選択装置
２０９ａ  選択プロセス
２１０    ＨＤＤ
２１０ｂ  選択プログラム
２１０ｃ  制御データ生成プログラム
２１１    バス
【図１】
2009199433.tif 000003
【図２】
2009199433.tif 000004
【図３】
2009199433.tif 000005
【図４】
2009199433.tif 000006
【図５】
2009199433.tif 000007
【図６】
2009199433.tif 000008
【図７】
2009199433.tif 000009
【図８】
2009199433.tif 000010
【図９】
2009199433.tif 000011
【図１０】
2009199433.tif 000012
【図１１】
2009199433.tif 000013
【図１２】
2009199433.tif 000014
【図１３】
2009199433.tif 000015